-
{/if}
@@ -65,7 +76,7 @@
.profile-header {
display: flex;
- justify-content: center;
+ justify-content: left;
align-items: center;
margin-bottom: 20px;
}
diff --git a/src/lib/components/ui/ProfileInfo.svelte b/src/lib/components/ui/ProfileInfo.svelte
index f6ee3a9..e466024 100644
--- a/src/lib/components/ui/ProfileInfo.svelte
+++ b/src/lib/components/ui/ProfileInfo.svelte
@@ -5,10 +5,10 @@
{#if show}
-
-
{user.pseudo}
-
{user.name} {user.surname}
-
{user.description}
+
+
{user.username}
+
{user.email}
+
{user.name} {user.surname}
{/if}
@@ -18,12 +18,13 @@
top: 0; /* Aligner en haut */
left: auto;
right: auto;
- width: 200px; /* Largeur appropriée */
+ width: 200px; /* Largeur par défaut */
background: rgba(255, 255, 255, 0.95); /* Fond semi-transparent */
padding: 15px;
border-radius: 8px;
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
z-index: 10; /* Gérer les priorités d'affichage */
+ transition: all 0.3s ease-in-out; /* Animation fluide pour les changements */
}
.user-info.left {
@@ -33,5 +34,32 @@
.user-info.right {
left: 110%; /* Position à droite avec un espace */
}
+
+ /* Media Queries pour adapter le style */
+ @media (max-width: 768px) {
+ .user-info {
+ width: 150px; /* Réduire la largeur sur les écrans plus petits */
+ padding: 10px; /* Réduire le padding */
+ font-size: 0.9rem; /* Réduire la taille de la police */
+ }
+ }
+
+ @media (max-width: 480px) {
+ .user-info {
+ position: fixed; /* Position fixe pour éviter les débordements */
+ left: 10px; /* Centrer avec un padding interne */
+ right: 10px;
+ width: auto; /* Utiliser toute la largeur disponible */
+ max-width: 90%; /* Limiter la largeur pour éviter les débordements */
+ padding: 8px; /* Réduire le padding davantage */
+ font-size: 0.8rem; /* Police encore plus petite */
+ }
+
+ .user-info.left,
+ .user-info.right {
+ left: 10px; /* Ignorer les positionnements relatifs */
+ right: 10px;
+ }
+ }
diff --git a/src/routes/chats/[id]/+page.svelte b/src/routes/chats/[id]/+page.svelte
index d703795..5afda66 100644
--- a/src/routes/chats/[id]/+page.svelte
+++ b/src/routes/chats/[id]/+page.svelte
@@ -15,6 +15,12 @@
let scrollContainer: HTMLElement;
let messageText = '';
+ let activeProfileId = null;
+
+ function setActiveProfile(id) {
+ activeProfileId = id;
+ }
+
let socket = initSocket(); // Initialiser le socket
async function sendMessage() {
@@ -144,7 +150,12 @@
{#if messages !== undefined && messages.length > 0}
{#each messages as message}
-
+
{/each}
{:else}
Sélectionnez un message le chat est vide.
diff --git a/src/routes/user/edit/+page.server.ts b/src/routes/user/edit/+page.server.ts
new file mode 100644
index 0000000..ad378bc
--- /dev/null
+++ b/src/routes/user/edit/+page.server.ts
@@ -0,0 +1,23 @@
+export async function load({ fetch, locals }) {
+
+ try {
+ // Appel API ou récupération de données
+ const res = await fetch(`/api/users/${locals.userId}`, {
+ method: 'GET',
+ headers: {
+ 'Content-Type': 'application/json'
+ }
+ });
+ const user = await res.json();
+
+ // Retourner les données à la page sous forme de props
+ return {
+ user
+ };
+ } catch (error) {
+ console.error('Erreur lors du chargement des canaux:', error);
+ return {
+ user : null
+ };
+ }
+}
\ No newline at end of file
diff --git a/src/routes/user/edit/+page.svelte b/src/routes/user/edit/+page.svelte
index ce54044..b77c46e 100644
--- a/src/routes/user/edit/+page.svelte
+++ b/src/routes/user/edit/+page.svelte
@@ -2,11 +2,16 @@
import { onMount } from 'svelte';
import ChoosePicture from "$lib/components/ui/ChoosePicture.svelte"; // Import du composant
- let pseudo = '';
- let firstName = '';
- let lastName = '';
- let email = '';
- let profilePicture: File | null = null;
+ export let data;
+ const user = data.user;
+ console.log(user);
+
+ let pseudo = user.username;
+ let firstName = user.name;
+ let lastName = user.surname;
+ let email = user.email;
+
+ let profilePicture = user.profilePicture; // Chemin initial ou valeur null
let message = '';
let showMessage = false;
@@ -26,28 +31,31 @@
message = 'L\'email est invalide.';
showMessage = true;
} else {
- // Vous pouvez ici envoyer les données à un serveur via une API
+ updateUser();
message = 'Informations mises à jour avec succès!';
showMessage = true;
}
};
- // Fonction pour gérer le téléchargement de l'image de profil
- const handleFileChange = (event: Event) => {
- const input = event.target as HTMLInputElement;
- if (input.files?.length) {
- profilePicture = input.files[0];
- }
- };
+ async function updateUser() {
+ const formData = new FormData();
+ formData.append('username', pseudo);
+ formData.append('name', firstName);
+ formData.append('surname', lastName);
+ formData.append('email', email);
+
+ if (profilePicture) {
+ formData.append('profilePicture', profilePicture);
+ }
+
+ const res = await fetch(`/api/users/${user.id}`, {
+ method: 'PUT',
+ body: formData, // Transmet les données comme multipart/form-data
+ });
+ const result = await res.json();
+ console.log(result);
+ }
- // Simulation de données au chargement
- onMount(() => {
- pseudo = '';
- firstName = '';
- lastName = '';
- email = '';
- profilePicture = null; // ou une valeur par défaut si vous en avez une
- });
@@ -109,10 +117,7 @@
-
- {#if profilePicture}
-
Image sélectionnée : {profilePicture.name}
- {/if}
+
@@ -128,12 +133,6 @@