From 8b8ba4b6181316d21dad1ce89d5cd8833a969144 Mon Sep 17 00:00:00 2001 From: ReaperOfVeriod Date: Sun, 25 Oct 2026 05:24:56 +0100 Subject: [PATCH] load collaboration favorites --- src/App.svelte | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/App.svelte b/src/App.svelte index 9308aad..3e93aa0 100644 --- a/src/App.svelte +++ b/src/App.svelte @@ -59,6 +59,7 @@ let collaborationError = ''; let showCollaboration = false; let collaborationGuestId = ''; + let collaborators: Array<{ twitch_user_id: string; display_name: string; favorite: boolean; last_invited_at: string | null }> = []; let sharedChatSession: { session_id: string; host_broadcaster_id: string; participants: Array<{ broadcaster_id: string }> } | null = null; let oauthLink = ''; let oauthIdentity: 'streamer' | 'bot' = 'streamer'; @@ -134,6 +135,7 @@ await loadDiagnostics(); await loadOAuthStatus(); await loadCollaboration(); + await loadCollaborators(); await loadBotCommands(); await loadBotSecrets(); await loadOverlays(); @@ -311,6 +313,22 @@ } } + async function loadCollaborators() { + try { + const response = await fetch(`${serverAddress}/api/v1/twitch/collaboration/collaborators`, { headers: { authorization: `Bearer ${sessionToken}` } }); + if (response.ok) collaborators = await response.json(); + } catch { + collaborators = []; + } + } + + async function toggleCollaboratorFavorite(collaborator: (typeof collaborators)[number]) { + const method = collaborator.favorite ? 'DELETE' : 'POST'; + const url = collaborator.favorite ? `${serverAddress}/api/v1/twitch/collaboration/favorites?twitch_user_id=${encodeURIComponent(collaborator.twitch_user_id)}` : `${serverAddress}/api/v1/twitch/collaboration/favorites`; + const response = await fetch(url, { method, headers: { authorization: `Bearer ${sessionToken}`, ...(method === 'POST' ? { 'content-type': 'application/json' } : {}) }, ...(method === 'POST' ? { body: JSON.stringify({ twitch_user_id: collaborator.twitch_user_id, display_name: collaborator.display_name }) } : {}) }); + if (response.ok) await loadCollaborators(); + } + async function createCollaboration() { collaborationBusy = true; collaborationError = '';