feat(frontend): add option Settings->Preferences->Other->When losing connection to the server->Disable

This commit is contained in:
miraikumiko 2025-04-18 11:25:42 +02:00
parent 7a29aed17c
commit 6087f92c91
4 changed files with 17 additions and 14 deletions

View File

@ -83,19 +83,21 @@ export async function mainBoot() {
let reloadDialogShowing = false;
stream.on('_disconnected_', async () => {
if (prefer.s.serverDisconnectedBehavior === 'reload') {
window.location.reload();
} else if (prefer.s.serverDisconnectedBehavior === 'dialog') {
if (reloadDialogShowing) return;
reloadDialogShowing = true;
const { canceled } = await confirm({
type: 'warning',
title: i18n.ts.disconnectedFromServer,
text: i18n.ts.reloadConfirm,
});
reloadDialogShowing = false;
if (!canceled) {
if (prefer.s.serverDisconnectedBehavior !== 'disabled') {
if (prefer.s.serverDisconnectedBehavior === 'reload') {
window.location.reload();
} else if (prefer.s.serverDisconnectedBehavior === 'dialog') {
if (reloadDialogShowing) return;
reloadDialogShowing = true;
const { canceled } = await confirm({
type: 'warning',
title: i18n.ts.disconnectedFromServer,
text: i18n.ts.reloadConfirm,
});
reloadDialogShowing = false;
if (!canceled) {
window.location.reload();
}
}
}
});

View File

@ -647,6 +647,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<option value="reload">{{ i18n.ts._serverDisconnectedBehavior.reload }}</option>
<option value="dialog">{{ i18n.ts._serverDisconnectedBehavior.dialog }}</option>
<option value="quiet">{{ i18n.ts._serverDisconnectedBehavior.quiet }}</option>
<option value="disabled">{{ i18n.ts.disabled }}</option>
</MkSelect>
</MkPreferenceContainer>
</SearchMarker>

View File

@ -155,7 +155,7 @@ export const PREF_DEF = {
}[],
},
serverDisconnectedBehavior: {
default: 'quiet' as 'quiet' | 'reload' | 'dialog',
default: 'quiet' as 'quiet' | 'reload' | 'dialog' | 'disabled',
},
nsfw: {
default: 'respect' as 'respect' | 'force' | 'ignore',

View File

@ -212,7 +212,7 @@ export const store = markRaw(new Pizzax('base', {
},
serverDisconnectedBehavior: {
where: 'device',
default: 'quiet' as 'quiet' | 'reload' | 'dialog',
default: 'quiet' as 'quiet' | 'reload' | 'dialog' | 'disabled',
},
nsfw: {
where: 'device',