From 69ea9b5308fa207c17e1cc9dc3fd6cf493f94fc3 Mon Sep 17 00:00:00 2001 From: jmlee337 Date: Wed, 14 Aug 2024 17:13:16 +0900 Subject: [PATCH] transition start.gg set mutate to event --- src/main/ipc.ts | 42 +++++++++++++++++++++++++++++++++++++----- src/main/preload.ts | 4 ++-- src/main/startgg.ts | 5 +++-- src/renderer/App.tsx | 21 +++++---------------- 4 files changed, 47 insertions(+), 25 deletions(-) diff --git a/src/main/ipc.ts b/src/main/ipc.ts index 30c0681c..41725799 100644 --- a/src/main/ipc.ts +++ b/src/main/ipc.ts @@ -332,24 +332,45 @@ export default function setupIPCs(mainWindow: BrowserWindow): void { ipcMain.removeHandler('startSet'); ipcMain.handle( 'startSet', - async (event: IpcMainInvokeEvent, setId: number): Promise => { + async (event: IpcMainInvokeEvent, setId: number) => { if (!sggApiKey) { throw new Error('Please set start.gg API key'); } - return startSet(sggApiKey, setId); + const updatedSet = await startSet(sggApiKey, setId); + await getPhaseGroup( + sggApiKey, + getSelectedSetChain().phaseGroup!.id, + new Map([[updatedSet.id, updatedSet]]), + ); + mainWindow.webContents.send( + 'startggTournament', + getSelectedSet(), + getCurrentTournament(), + ); }, ); ipcMain.removeHandler('reportSet'); ipcMain.handle( 'reportSet', - async (event: IpcMainInvokeEvent, set: StartggSet): Promise => { + async (event: IpcMainInvokeEvent, set: StartggSet): Promise => { if (!sggApiKey) { throw new Error('Please set start.gg API key'); } - return reportSet(sggApiKey, set); + const updatedSets = await reportSet(sggApiKey, set); + await getPhaseGroup( + sggApiKey, + getSelectedSetChain().phaseGroup!.id, + updatedSets, + ); + mainWindow.webContents.send( + 'startggTournament', + getSelectedSet(), + getCurrentTournament(), + ); + return updatedSets.get(set.setId)!; }, ); @@ -361,7 +382,18 @@ export default function setupIPCs(mainWindow: BrowserWindow): void { throw new Error('Please set start.gg API key'); } - return updateSet(sggApiKey, set); + const updatedSet = await updateSet(sggApiKey, set); + await getPhaseGroup( + sggApiKey, + getSelectedSetChain().phaseGroup!.id, + new Map([[updatedSet.id, updatedSet]]), + ); + mainWindow.webContents.send( + 'startggTournament', + getSelectedSet(), + getCurrentTournament(), + ); + return updatedSet; }, ); diff --git a/src/main/preload.ts b/src/main/preload.ts index c7a2d40d..8039d7c1 100644 --- a/src/main/preload.ts +++ b/src/main/preload.ts @@ -76,8 +76,8 @@ const electronHandler = { ipcRenderer.invoke('getPhase', id, recursive), getPhaseGroup: (id: number, updatedSets?: Map): Promise => ipcRenderer.invoke('getPhaseGroup', id, updatedSets), - startSet: (id: number): Promise => ipcRenderer.invoke('startSet', id), - reportSet: (set: StartggSet): Promise => + startSet: (id: number): Promise => ipcRenderer.invoke('startSet', id), + reportSet: (set: StartggSet): Promise => ipcRenderer.invoke('reportSet', set), updateSet: (set: StartggSet): Promise => ipcRenderer.invoke('updateSet', set), diff --git a/src/main/startgg.ts b/src/main/startgg.ts index 87ab2fa1..163972a8 100644 --- a/src/main/startgg.ts +++ b/src/main/startgg.ts @@ -714,15 +714,16 @@ const REPORT_BRACKET_SET_MUTATION = ` reportBracketSet(setId: $setId, isDQ: $isDQ, winnerId: $winnerId, gameData: $gameData) {${GQL_SET_INNER}} } `; -export async function reportSet(key: string, set: StartggSet): Promise { +export async function reportSet(key: string, set: StartggSet) { const data = await fetchGql(key, REPORT_BRACKET_SET_MUTATION, set); reportedSetIds.set(set.setId, true); - return data.reportBracketSet + const updatedSets = (data.reportBracketSet as any[]) .filter( (bracketSet: any) => bracketSet.slots[0].entrant && bracketSet.slots[1].entrant, ) .map(gqlSetToSet); + return new Map(updatedSets.map((updatedSet) => [updatedSet.id, updatedSet])); } const UPDATE_BRACKET_SET_MUTATION = ` diff --git a/src/renderer/App.tsx b/src/renderer/App.tsx index 500e7350..7944596c 100644 --- a/src/renderer/App.tsx +++ b/src/renderer/App.tsx @@ -945,11 +945,7 @@ function Hello() { setStartingSet(true); try { if (mode === Mode.STARTGG) { - const updatedSet = await window.electron.startSet(setId); - await getPhaseGroup( - selectedSetChain.phaseGroupId, - new Map([[updatedSet.id, updatedSet]]), - ); + await window.electron.startSet(setId); } else if (mode === Mode.CHALLONGE) { const updatedSet = await window.electron.startChallongeSet( selectedChallongeTournament.slug, @@ -968,18 +964,11 @@ function Hello() { }; const reportStartggSet = async (set: StartggSet, update: boolean) => { - const updatedSets = new Map(); - if (update) { - const updatedSet = await window.electron.updateSet(set); - updatedSets.set(updatedSet.id, updatedSet); - } else { - (await window.electron.reportSet(set)).forEach((updatedSet) => { - updatedSets.set(updatedSet.id, updatedSet); - }); - } - await getPhaseGroup(selectedSetChain.phaseGroupId, updatedSets); + const updatedSet = update + ? await window.electron.updateSet(set) + : await window.electron.reportSet(set); resetDq(); - return updatedSets.get(set.setId); + return updatedSet; }; const reportChallongeSet = async ( matchId: number,