@@ -64,7 +64,7 @@ export function useRealtimeStore(supabase: SupabaseClient<Database>) {
6464 const getAllServerRoles = useGetAllServerRoles ( ) ;
6565 const getRolesForServer = useGetRolesForServer ( ) ;
6666
67- const getAllServerProfiles = useGetAllServerUserProfiles ( ) ;
67+ const getAllServerProfilesForServer = useGetAllServerUserProfiles ( ) ;
6868 const updateServerUserProfile = useUpateServerUserProfile ( ) ;
6969 const updateServerUserProfileByServerUserId = useUpdateServerUserProfileByServerUserId ( ) ;
7070 const stripServerUserAndRoles = useStripServerUserAndRoles ( ) ;
@@ -92,7 +92,20 @@ export function useRealtimeStore(supabase: SupabaseClient<Database>) {
9292
9393 addServer ( supabase , ( payload . new as ServerUser ) . id ) ;
9494 getRolesForServer ( supabase , payload . new . server_id ) ;
95- updateServerUserProfileByServerUserId ( supabase , payload . new . server_id ) ;
95+ updateServerUserProfileByServerUserId ( supabase , payload . new . id ) ;
96+ }
97+ )
98+ . on < ServerUser > (
99+ 'postgres_changes' ,
100+ {
101+ event : 'UPDATE' ,
102+ schema : 'public' ,
103+ table : 'server_users' ,
104+ filter : `profile_id=neq.${ user ?. id } ` ,
105+ } ,
106+ async ( payload ) => {
107+ console . log ( 'Another user joined server' ) ;
108+ getAllServerProfilesForServer ( supabase , payload . new . server_id ) ;
96109 }
97110 )
98111 . on < ServerUser > (
@@ -104,8 +117,8 @@ export function useRealtimeStore(supabase: SupabaseClient<Database>) {
104117 filter : `profile_id=eq.${ user ?. id } ` ,
105118 } ,
106119 async ( payload ) => {
107- console . log ( 'update ' ) ;
108- updateServerUserProfileByServerUserId ( supabase , payload . new . server_id ) ;
120+ console . log ( 'This user joined server ' ) ;
121+ updateServerUserProfileByServerUserId ( supabase , payload . new . id ) ;
109122 }
110123 )
111124 . on < ServerUser > (
@@ -203,7 +216,7 @@ export function useRealtimeStore(supabase: SupabaseClient<Database>) {
203216 addDMChannel ( supabase , payload . new . id ) ;
204217
205218 // Fetch the profiles for the server
206- getAllServerProfiles ( supabase , payload . new . id ) ;
219+ getAllServerProfilesForServer ( supabase , payload . new . id ) ;
207220 }
208221 )
209222 . on < Role > (
@@ -215,7 +228,7 @@ export function useRealtimeStore(supabase: SupabaseClient<Database>) {
215228 } ,
216229 async ( payload ) => {
217230 console . log ( 'Server role insert event' ) ;
218- getAllServerProfiles ( supabase , payload . new . server_id ) ;
231+ getAllServerProfilesForServer ( supabase , payload . new . server_id ) ;
219232 addRole ( payload . new ) ;
220233 }
221234 )
@@ -228,7 +241,7 @@ export function useRealtimeStore(supabase: SupabaseClient<Database>) {
228241 } ,
229242 async ( payload ) => {
230243 console . log ( 'Server role update event' ) ;
231- getAllServerProfiles ( supabase , payload . new . server_id ) ;
244+ getAllServerProfilesForServer ( supabase , payload . new . server_id ) ;
232245 updateRole ( payload . new ) ;
233246 }
234247 )
@@ -252,7 +265,7 @@ export function useRealtimeStore(supabase: SupabaseClient<Database>) {
252265 for ( const role of profile . roles ) {
253266 // As soon as we find the role that was deleted, we trigger a server-wide profile update
254267 if ( role . id === payload . old . id ) {
255- getAllServerProfiles ( supabase , server_id ) ;
268+ getAllServerProfilesForServer ( supabase , server_id ) ;
256269 return ;
257270 }
258271 }
@@ -337,7 +350,7 @@ export function useRealtimeStore(supabase: SupabaseClient<Database>) {
337350 deleteRole ,
338351 getRolesForServer ,
339352 updateServerUserProfileByServerUserId ,
340- getAllServerProfiles ,
353+ getAllServerProfilesForServer ,
341354 allServerProfiles ,
342355 updateServerUserProfile ,
343356 stripServerUserAndRoles ,
0 commit comments