1
0
mirror of https://github.com/laurent22/joplin.git synced 2025-07-13 00:10:37 +02:00

Desktop, Mobile: Resolves #9263: Do not allow switching the sync target if not all resources are downloaded

This commit is contained in:
Laurent Cozic
2024-01-27 18:20:51 +00:00
parent 8abd9b401b
commit 07b4117aa1
6 changed files with 85 additions and 11 deletions

View File

@ -7,6 +7,7 @@ import Logger from '@joplin/utils/Logger';
import { type ReactNode } from 'react';
import { type Registry } from '../../../registry';
import settingValidations from '../../../models/settings/settingValidations';
const logger = Logger.create('config-shared');
@ -78,7 +79,7 @@ export const checkSyncConfig = async (comp: ConfigScreenComponent, settings: any
if (result.ok) {
// Users often expect config to be auto-saved at this point, if the config check was successful
saveSettings(comp);
await saveSettings(comp);
}
return result;
};
@ -132,15 +133,21 @@ let scheduleSaveSettingsIID: ReturnType<typeof setTimeout>|null = null;
export const scheduleSaveSettings = (comp: ConfigScreenComponent) => {
if (scheduleSaveSettingsIID) clearTimeout(scheduleSaveSettingsIID);
scheduleSaveSettingsIID = setTimeout(() => {
scheduleSaveSettingsIID = setTimeout(async () => {
scheduleSaveSettingsIID = null;
saveSettings(comp);
await saveSettings(comp);
}, 100);
};
export const saveSettings = (comp: ConfigScreenComponent) => {
export const saveSettings = async (comp: ConfigScreenComponent) => {
const savedSettingKeys = comp.state.changedSettingKeys.slice();
const validationMessage = await settingValidations(savedSettingKeys, comp.state.settings);
if (validationMessage) {
alert(validationMessage);
return false;
}
for (const key in comp.state.settings) {
if (!comp.state.settings.hasOwnProperty(key)) continue;
if (comp.state.changedSettingKeys.indexOf(key) < 0) continue;
@ -150,6 +157,8 @@ export const saveSettings = (comp: ConfigScreenComponent) => {
comp.setState({ changedSettingKeys: [] });
onSettingsSaved({ savedSettingKeys });
return true;
};
export const settingsToComponents = (comp: ConfigScreenComponent, device: AppType, settings: any) => {