Skip to content

Commit

Permalink
save report settings #21
Browse files Browse the repository at this point in the history
  • Loading branch information
jmlee337 committed Apr 2, 2024
1 parent fd97e44 commit 1307c3b
Show file tree
Hide file tree
Showing 5 changed files with 75 additions and 14 deletions.
5 changes: 5 additions & 0 deletions src/common/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -165,3 +165,8 @@ export type CopySettings = {
writeFileNames: boolean;
writeStartTimes: boolean;
};

export type ReportSettings = {
alsoCopy: boolean;
alsoDelete: boolean;
};
22 changes: 22 additions & 0 deletions src/main/ipc.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import {
CopySettings,
Output,
Replay,
ReportSettings,
Set,
StartggSet,
} from '../common/types';
Expand Down Expand Up @@ -305,6 +306,27 @@ export default function setupIPCs(mainWindow: BrowserWindow): void {
},
);

ipcMain.removeHandler('getReportSettings');
ipcMain.handle('getReportSettings', () => {
if (store.has('reportSettings')) {
return store.get('reportSettings') as ReportSettings;
}
const newReportSettings: ReportSettings = {
alsoCopy: false,
alsoDelete: false,
};
store.set('reportSettings', newReportSettings);
return newReportSettings;
});

ipcMain.removeHandler('setReportSettings');
ipcMain.handle(
'setReportSettings',
(event: IpcMainInvokeEvent, newReportSettings: ReportSettings) => {
store.set('reportSettings', newReportSettings);
},
);

ipcMain.removeHandler('copyToClipboard');
ipcMain.handle(
'copyToClipboard',
Expand Down
5 changes: 5 additions & 0 deletions src/main/preload.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import {
Phase,
PhaseGroup,
Replay,
ReportSettings,
Set,
Sets,
StartggSet,
Expand Down Expand Up @@ -79,6 +80,10 @@ const electronHandler = {
ipcRenderer.invoke('getCopySettings'),
setCopySettings: (copySettings: CopySettings): Promise<void> =>
ipcRenderer.invoke('setCopySettings', copySettings),
getReportSettings: (): Promise<ReportSettings> =>
ipcRenderer.invoke('getReportSettings'),
setReportSettings: (reportSettings: ReportSettings): Promise<void> =>
ipcRenderer.invoke('setReportSettings', reportSettings),
copyToClipboard: (text: string): Promise<void> =>
ipcRenderer.invoke('copyToClipboard', text),
getVersion: (): Promise<string> => ipcRenderer.invoke('getVersion'),
Expand Down
17 changes: 16 additions & 1 deletion src/renderer/App.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ import {
PhaseGroup,
PlayerOverrides,
Replay,
ReportSettings,
Set,
StartggSet,
Tournament,
Expand Down Expand Up @@ -112,14 +113,19 @@ function Hello() {
const [useEnforcer, setUseEnforcer] = useState(false);
const [appVersion, setAppVersion] = useState('');
const [latestAppVersion, setLatestAppVersion] = useState('');
// copy settigns
// copy settings
const [copySettings, setCopySettings] = useState<CopySettings>({
output: Output.FILES,
writeContext: false,
writeDisplayNames: false,
writeFileNames: false,
writeStartTimes: false,
});
// report settings
const [reportSettings, setReportSettings] = useState<ReportSettings>({
alsoCopy: false,
alsoDelete: false,
});
useEffect(() => {
const inner = async () => {
const appVersionPromise = window.electron.getVersion();
Expand All @@ -129,13 +135,15 @@ function Hello() {
const scrollToBottomPromise = window.electron.getScrollToBottom();
const useEnforcerPromise = window.electron.getUseEnforcer();
const copySettingsPromise = window.electron.getCopySettings();
const reportSettingsPromise = window.electron.getReportSettings();
setAppVersion(await appVersionPromise);
setLatestAppVersion(await latestAppVersionPromise);
setStartggApiKey(await startggKeyPromise);
setAutoDetectUsb(await autoDetectUsbPromise);
setScrollToBottom(await scrollToBottomPromise);
setUseEnforcer(await useEnforcerPromise);
setCopySettings(await copySettingsPromise);
setReportSettings(await reportSettingsPromise);
setGotSettings(true);
};
inner();
Expand Down Expand Up @@ -1514,10 +1522,17 @@ function Hello() {
copyReplays={onCopy}
deleteReplays={deleteDir}
reportSet={reportSet}
setReportSettings={async (
newReportSettings: ReportSettings,
) => {
await window.electron.setReportSettings(newReportSettings);
setReportSettings(newReportSettings);
}}
copyDisabled={
isCopying || !copyDir || selectedReplays.length === 0
}
dqId={dq.entrantId}
reportSettings={reportSettings}
selectedReplays={selectedReplays}
set={selectedSet}
useEnforcer={useEnforcer}
Expand Down
40 changes: 27 additions & 13 deletions src/renderer/SetControls.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ import {
EnforceResult,
Player,
Replay,
ReportSettings,
Set,
StartggGame,
StartggGameSelection,
Expand Down Expand Up @@ -122,17 +123,21 @@ export default function SetControls({
copyReplays,
deleteReplays,
reportSet,
setReportSettings,
copyDisabled,
dqId,
reportSettings,
selectedReplays,
set,
useEnforcer,
}: {
copyReplays: () => Promise<void>;
deleteReplays: () => Promise<void>;
reportSet: (set: StartggSet, update: boolean) => Promise<void>;
setReportSettings: (newReportSettings: ReportSettings) => Promise<void>;
copyDisabled: boolean;
dqId: number;
reportSettings: ReportSettings;
selectedReplays: Replay[];
set: Set;
useEnforcer: boolean;
Expand All @@ -146,9 +151,6 @@ export default function SetControls({
gameData: [],
});

const [alsoCopy, setAlsoCopy] = useState(false);
const [alsoDelete, setAlsoDelete] = useState(false);

const [enforcing, setEnforcing] = useState(false);
const [enforcerErrors, setEnforcerErrors] = useState<EnforceResult[]>([]);
const [enforcerErrorOpen, setEnforcerErrorOpen] = useState(false);
Expand Down Expand Up @@ -335,23 +337,35 @@ export default function SetControls({
<Divider sx={{ marginTop: '8px' }} />
<Stack justifyContent="flex-end">
<LabeledCheckbox
checked={alsoCopy}
checked={reportSettings.alsoCopy}
label="Also Copy"
labelPlacement="start"
set={setAlsoCopy}
set={(checked: boolean) => {
const newReportSettings = { ...reportSettings };
newReportSettings.alsoCopy = checked;
setReportSettings(newReportSettings);
}}
/>
<LabeledCheckbox
checked={alsoDelete}
disabled={!alsoCopy}
checked={reportSettings.alsoDelete}
disabled={!reportSettings.alsoCopy}
label="Also Delete"
labelPlacement="start"
set={setAlsoDelete}
set={(checked: boolean) => {
const newReportSettings = { ...reportSettings };
newReportSettings.alsoDelete = checked;
setReportSettings(newReportSettings);
}}
/>
</Stack>
</DialogContent>
<DialogActions>
<Button
disabled={reporting || (alsoCopy && copyDisabled) || enforcing}
disabled={
reporting ||
(reportSettings.alsoCopy && copyDisabled) ||
enforcing
}
endIcon={
reporting || enforcing ? (
<CircularProgress size="24px" />
Expand All @@ -362,11 +376,11 @@ export default function SetControls({
onClick={async () => {
setReporting(true);
const promises = [reportSet(startggSet, set.state === 3)];
if (alsoCopy) {
if (reportSettings.alsoCopy) {
promises.push(copyReplays());
}
await Promise.all(promises);
if (alsoCopy && alsoDelete) {
if (reportSettings.alsoCopy && reportSettings.alsoDelete) {
await deleteReplays();
}
setOpen(false);
Expand All @@ -380,8 +394,8 @@ export default function SetControls({
}}
variant="contained"
>
Report{alsoCopy && ', Copy'}
{alsoCopy && alsoDelete && ', Delete'}
Report{reportSettings.alsoCopy && ', Copy'}
{reportSettings.alsoCopy && reportSettings.alsoDelete && ', Delete'}
</Button>
</DialogActions>
</Dialog>
Expand Down

0 comments on commit 1307c3b

Please sign in to comment.