@@ -10,6 +10,7 @@ import { Database } from '@/types/database.supabase';
1010import { SupabaseClient } from '@supabase/supabase-js' ;
1111import {
1212 getCurrentUserServerPermissions ,
13+ getServer ,
1314 getServerForUser ,
1415 getServersForUser ,
1516} from '@/services/server.service' ;
@@ -26,6 +27,7 @@ export interface ServerState {
2627 addServer : ( supabase : SupabaseClient < Database > , serverUserId : number ) => void ;
2728 removeServer : ( serverId : number ) => void ;
2829 getServers : ( supabase : SupabaseClient < Database > , userId : string ) => void ;
30+ updateServer : ( supabase : SupabaseClient < Database > , serverId : number ) => void ;
2931}
3032
3133const useServerStore = create < ServerState > ( ) ( ( set ) => ( {
@@ -65,6 +67,28 @@ const useServerStore = create<ServerState>()((set) => ({
6567 set ( { servers : data as ServersForUser [ ] } , true ) ;
6668 }
6769 } ,
70+ updateServer : async ( supabase , serverId ) => {
71+ const { data, error } = await getServer ( supabase , serverId ) ;
72+
73+ if ( error ) {
74+ console . error ( error ) ;
75+ return ;
76+ }
77+
78+ if ( data ) {
79+ set ( ( state ) => ( {
80+ servers : state . servers . map ( ( server ) => {
81+ // Once we hit a message that matches the id, we can return the updated message instead of the old one
82+ if ( server . server_id === data [ 0 ] . id ) {
83+ return data as MessageWithServerProfile ;
84+ }
85+
86+ // Otherwise fallback to the old one
87+ return message ;
88+ } ) ,
89+ } ) ) ;
90+ }
91+ } ,
6892} ) ) ;
6993export interface MessagesState {
7094 messages : MessageWithServerProfile [ ] ;
@@ -187,7 +211,7 @@ const useUserPermsStore = create<UserPermsState>()((set) => ({
187211 if ( error ) {
188212 console . log ( error ) ;
189213 }
190- // console.log('data', data);
214+
191215 if ( data ) {
192216 set ( { userServerPerms : data } ) ;
193217 }
0 commit comments