diff --git a/frontend/src/components/server/ServerSettingsDialog.vue b/frontend/src/components/server/ServerSettingsDialog.vue
index c77943b..02ec58e 100644
--- a/frontend/src/components/server/ServerSettingsDialog.vue
+++ b/frontend/src/components/server/ServerSettingsDialog.vue
@@ -35,7 +35,7 @@ const selectedUser = computed(() => userStore.users.find(user => user.id === sel
watch(() => props.modelValue, async open => {
if (open) await load()
-})
+}, {immediate: true})
watch(selectedRoleId, async roleId => {
if (!roleId) return
roleForm.value = selectedRole.value?.name || ''
@@ -59,13 +59,18 @@ async function load() {
error.value = null
name.value = props.serverName
try {
- const [, , permissions] = await Promise.all([
+ const [server, , , permissions] = await Promise.all([
+ serverStore.fetchServer(props.serverId),
roleStore.fetchRoles(props.serverId),
userStore.fetchUsers(props.serverId),
permissionsApi.listServerUserPermissions(props.serverId),
])
+ name.value = server.name
userPermissions.value = Object.fromEntries(permissions.map(permission => [permission.user_id, permission]))
- } catch (e) { error.value = e instanceof Error ? e.message : 'Erreur de chargement' }
+ } catch (e) {
+ name.value = ''
+ error.value = e instanceof Error ? e.message : 'Erreur de chargement'
+ }
finally { loading.value = false }
}
async function saveServer() {
@@ -141,8 +146,8 @@ async function resetMemberPermissions() {
Général
-
- Enregistrer
+
+ Enregistrer
Rôles
diff --git a/frontend/src/stores/server.ts b/frontend/src/stores/server.ts
index b59c078..e2b895e 100644
--- a/frontend/src/stores/server.ts
+++ b/frontend/src/stores/server.ts
@@ -24,6 +24,19 @@ export const useServerStore = defineStore("server", {
const response = await api.get("/servers");
this.servers = await response.json();
},
+ async fetchServer(serverId: string) {
+ const response = await useApi().get(`/servers/${serverId}`);
+ if (!response.ok) {
+ const error = await response.json().catch(() => null);
+ throw new Error(error?.message || 'Failed to load server');
+ }
+
+ const server: Server = await response.json();
+ const index = this.servers.findIndex(item => item.id === server.id);
+ if (index >= 0) this.servers[index] = server;
+ else this.servers.push(server);
+ return server;
+ },
async createServer(payload: { name: string; password?: string | null; is_default?: boolean }) {
this.loading = true;
this.error = null;