signal-desktop/app/user_config.ts

45 lines
1.2 KiB
TypeScript

// Copyright 2017-2022 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
import { join } from 'path';
import { mkdirSync } from 'fs';
import { app } from 'electron';
import { start } from './base_config';
import config from './config';
let userData: string | undefined;
// Use separate data directory for benchmarks & development
if (config.has('storagePath')) {
userData = String(config.get('storagePath'));
} else if (config.has('storageProfile')) {
userData = join(
app.getPath('appData'),
`Signal-${config.get('storageProfile')}`
);
}
if (userData !== undefined) {
try {
mkdirSync(userData, { recursive: true });
} catch (error) {
console.error('Failed to create userData', error?.stack || String(error));
}
app.setPath('userData', userData);
}
console.log(`userData: ${app.getPath('userData')}`);
const userDataPath = app.getPath('userData');
const targetPath = join(userDataPath, 'config.json');
export const userConfig = start({
name: 'user',
targetPath,
throwOnFilesystemErrors: true,
});
export const get = userConfig.get.bind(userConfig);
export const remove = userConfig.remove.bind(userConfig);
export const set = userConfig.set.bind(userConfig);