You've already forked joplin
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:
@ -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) => {
|
||||
|
Reference in New Issue
Block a user