mirror of
https://github.com/samuelthomas2774/nxapi.git
synced 2026-03-21 18:04:10 -05:00
Add error alert preferences and related IPC handlers
This commit is contained in:
parent
018b3b121f
commit
8e30643bc8
|
|
@ -30,6 +30,8 @@ function _Preferences(props: {
|
|||
|
||||
const [login_item, ,, forceRefreshLoginItem] = useAsync(useCallback(() => ipc.getLoginItemSettings(), [ipc]));
|
||||
|
||||
const [show_error_alerts, , show_error_alerts_state, forceRefreshErrorAlerts] = useAsync(useCallback(() => ipc.getShowErrorAlerts(), [ipc]));
|
||||
|
||||
const setOpenAtLogin = useCallback(async (open_at_login: boolean | 'mixed') => {
|
||||
await ipc.setLoginItemSettings({...login_item!, startup_enabled: !!open_at_login});
|
||||
forceRefreshLoginItem();
|
||||
|
|
@ -39,6 +41,11 @@ function _Preferences(props: {
|
|||
forceRefreshLoginItem();
|
||||
}, [ipc, login_item]);
|
||||
|
||||
const setShowErrorAlerts = useCallback(async (show_error_alerts: boolean | 'mixed') => {
|
||||
await ipc.setShowErrorAlerts(!!show_error_alerts);
|
||||
forceRefreshErrorAlerts();
|
||||
}, [ipc]);
|
||||
|
||||
const [discord_users, discord_users_error, discord_users_state, forceRefreshDiscordUsers] =
|
||||
useAsync(useCallback(() => ipc.getDiscordUsers(), [ipc]));
|
||||
|
||||
|
|
@ -97,7 +104,8 @@ function _Preferences(props: {
|
|||
|
||||
useEventListener(events, 'window:refresh', () => (
|
||||
forceRefreshAccounts(), forceRefreshLoginItem(),
|
||||
forceRefreshDiscordUsers(), forceRefreshDiscordOptions()
|
||||
forceRefreshDiscordUsers(), forceRefreshDiscordOptions(),
|
||||
forceRefreshErrorAlerts()
|
||||
), []);
|
||||
|
||||
if (!users ||
|
||||
|
|
@ -280,6 +288,26 @@ function _Preferences(props: {
|
|||
<Text style={[styles.help, theme.text]}>{t('splatnet3.discord_help_2')}</Text>
|
||||
</View>
|
||||
</View>
|
||||
|
||||
<View style={styles.section}>
|
||||
<View style={styles.sectionLeft}>
|
||||
<Text style={[styles.label, theme.text]}>{t('miscellaneous.heading')}</Text>
|
||||
</View>
|
||||
<View style={styles.sectionRight}>
|
||||
<View style={[styles.checkboxContainer]}>
|
||||
<CheckBox
|
||||
value={show_error_alerts ?? true}
|
||||
onValueChange={setShowErrorAlerts}
|
||||
color={'#' + (accent_colour ?? DEFAULT_ACCENT_COLOUR)}
|
||||
style={styles.checkbox}
|
||||
/>
|
||||
<TouchableOpacity style={styles.checkboxLabel} onPress={() => setShowErrorAlerts(!(show_error_alerts ?? true))}>
|
||||
<Text style={[styles.checkboxLabelText, theme.text]}>{t('miscellaneous.show_error_alerts')}</Text>
|
||||
</TouchableOpacity>
|
||||
</View>
|
||||
<Text style={[styles.help, theme.text]}>{t('miscellaneous.show_error_alerts_help')}</Text>
|
||||
</View>
|
||||
</View>
|
||||
</View>;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -290,6 +290,12 @@ export const preferences_window = {
|
|||
discord_help_1: 'Uses SplatNet 3 to retrieve additional presence information while playing Splatoon 3. You must be using a secondary Nintendo Account that is friends with your main account to fetch your presence, and the secondary account must be able to access SplatNet 3.',
|
||||
discord_help_2: 'When using a presence URL that returns Splatoon 3 data additional presence information will be shown regardless of this setting.',
|
||||
},
|
||||
|
||||
miscellaneous: {
|
||||
heading: 'Miscellaneous',
|
||||
show_error_alerts: 'Show error alerts',
|
||||
show_error_alerts_help: 'This will show a popup when an error occurs while loading data. This is useful for debugging, but can be annoying if you are not interested in the errors.',
|
||||
}
|
||||
};
|
||||
|
||||
export const friend_window = {
|
||||
|
|
|
|||
|
|
@ -484,6 +484,7 @@ export class Store extends EventEmitter {
|
|||
error: err,
|
||||
buttons: ['OK', 'Retry'],
|
||||
defaultId: 1,
|
||||
app: this.app,
|
||||
});
|
||||
|
||||
if (response === 1) {
|
||||
|
|
@ -513,6 +514,7 @@ export class Store extends EventEmitter {
|
|||
error: err,
|
||||
buttons: ['OK', 'Retry'],
|
||||
defaultId: 1,
|
||||
app: this.app,
|
||||
});
|
||||
|
||||
if (response === 1) {
|
||||
|
|
@ -520,4 +522,4 @@ export class Store extends EventEmitter {
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -64,6 +64,10 @@ export function setupIpc(appinstance: App, ipcMain: IpcMain) {
|
|||
handle('systemPreferences:getloginitem', () => appinstance.store.getLoginItem());
|
||||
handle('systemPreferences:setloginitem', (e, settings: LoginItemOptions) => appinstance.store.setLoginItem(settings));
|
||||
|
||||
handle('preferences:showerroralerts', () => storage.getItem('preferences.showerroralerts'));
|
||||
handle('preferences:setshowerroralerts', (e, enabled: boolean) =>
|
||||
storage.setItem('preferences.showerroralerts', enabled));
|
||||
|
||||
handle('update:get', () => appinstance.updater.cache ?? appinstance.updater.check());
|
||||
handle('update:check', () => appinstance.updater.check());
|
||||
|
||||
|
|
|
|||
|
|
@ -63,6 +63,7 @@ export class PresenceMonitorManager {
|
|||
error: err,
|
||||
buttons: ['OK', 'Retry', 'Stop'],
|
||||
defaultId: 0,
|
||||
app: this.app,
|
||||
});
|
||||
|
||||
if (response === 1) {
|
||||
|
|
@ -391,6 +392,7 @@ export class PresenceMonitorManager {
|
|||
error: err,
|
||||
buttons: ['OK', 'Retry'],
|
||||
defaultId: 0,
|
||||
app: this.app,
|
||||
});
|
||||
|
||||
if (response === 1) {
|
||||
|
|
@ -420,6 +422,7 @@ export class PresenceMonitorManager {
|
|||
await showErrorDialog({
|
||||
message: error.name + ' updating presence monitor',
|
||||
error,
|
||||
app: this.app,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -77,10 +77,17 @@ interface ErrorBoxOptions extends MessageBoxOptions {
|
|||
window?: BrowserWindow;
|
||||
}
|
||||
|
||||
export function showErrorDialog(options: ErrorBoxOptions) {
|
||||
export async function showErrorDialog(options: ErrorBoxOptions) {
|
||||
const {error, app, window, ...message_box_options} = options;
|
||||
const detail = ErrorDescription.getErrorDescription(error);
|
||||
|
||||
if (app) {
|
||||
const showErrorAlerts = await app.store.storage.getItem('preferences.showerroralerts') as boolean
|
||||
if (showErrorAlerts === false) {
|
||||
return Promise.resolve({ response: 0, checkboxChecked: false });
|
||||
}
|
||||
}
|
||||
|
||||
message_box_options.detail = message_box_options.detail ?
|
||||
detail + '\n\n' + message_box_options.detail :
|
||||
detail;
|
||||
|
|
|
|||
|
|
@ -47,6 +47,9 @@ const ipc = {
|
|||
getLoginItemSettings: () => inv<LoginItem>('systemPreferences:getloginitem'),
|
||||
setLoginItemSettings: (settings: LoginItemOptions) => inv('systemPreferences:setloginitem', settings),
|
||||
|
||||
getShowErrorAlerts: () => inv<boolean>('preferences:showerroralerts'),
|
||||
setShowErrorAlerts: (enabled: boolean) => inv('preferences:setshowerroralerts', enabled),
|
||||
|
||||
getUpdateData: () => inv<UpdateCacheData | null>('update:get'),
|
||||
checkUpdates: () => inv<UpdateCacheData | null>('update:check'),
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user