mirror of
https://github.com/laurent22/joplin.git
synced 2024-12-24 10:27:10 +02:00
Desktop: Fixes #8143: Fixes crash when using multiple profiles along with certain plugins
This commit is contained in:
parent
edc5e33559
commit
f390eca4de
@ -9,6 +9,7 @@ import FileHandler, { SettingValues } from './settings/FileHandler';
|
||||
import Logger from '../Logger';
|
||||
import mergeGlobalAndLocalSettings from '../services/profileConfig/mergeGlobalAndLocalSettings';
|
||||
import splitGlobalAndLocalSettings from '../services/profileConfig/splitGlobalAndLocalSettings';
|
||||
import JoplinError from '../JoplinError';
|
||||
const { sprintf } = require('sprintf-js');
|
||||
const ObjectUtils = require('../ObjectUtils');
|
||||
const { toTitleCase } = require('../string-utils.js');
|
||||
@ -1810,7 +1811,7 @@ class Setting extends BaseModel {
|
||||
|
||||
public static settingMetadata(key: string): SettingItem {
|
||||
const metadata = this.metadata();
|
||||
if (!(key in metadata)) throw new Error(`Unknown key: ${key}`);
|
||||
if (!(key in metadata)) throw new JoplinError(`Unknown key: ${key}`, 'unknown_key');
|
||||
const output = Object.assign({}, metadata[key]);
|
||||
output.key = key;
|
||||
return output;
|
||||
|
@ -1,5 +1,8 @@
|
||||
import Logger from '../../Logger';
|
||||
import Setting from '../../models/Setting';
|
||||
|
||||
const logger = Logger.create('mergeGlobalAndLocalSettings');
|
||||
|
||||
export default (rootSettings: Record<string, any>, subProfileSettings: Record<string, any>) => {
|
||||
const output: Record<string, any> = { ...subProfileSettings };
|
||||
|
||||
@ -12,9 +15,20 @@ export default (rootSettings: Record<string, any>, subProfileSettings: Record<st
|
||||
}
|
||||
|
||||
for (const k of Object.keys(rootSettings)) {
|
||||
const md = Setting.settingMetadata(k);
|
||||
if (md.isGlobal) {
|
||||
output[k] = rootSettings[k];
|
||||
try {
|
||||
const md = Setting.settingMetadata(k);
|
||||
if (md.isGlobal) {
|
||||
output[k] = rootSettings[k];
|
||||
}
|
||||
} catch (error) {
|
||||
if (error.code === 'unknown_key') {
|
||||
// The root settings may contain plugin parameters, but the
|
||||
// sub-profile won't necessarily have these plugins. In that
|
||||
// case, the app will throw an error, but we can ignore it since
|
||||
// we don't need this particular setting.
|
||||
// https://github.com/laurent22/joplin/issues/8143
|
||||
logger.info(`Ignoring unknown key in root settings: ${k}`);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user