MCPcopy Create free account
hub / github.com/FlashpointProject/launcher / loadPrefs

Function loadPrefs

src/back/index.ts:344–386  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

342 }
343
344 const loadPrefs = async (): Promise<void> => {
345 // @TODO Figure out why async loading isn't always working?
346 const prefsFilePath = path.join(state.config.flashpointPath, PREFERENCES_FILENAME);
347 try {
348 state.preferences = await PreferencesFile.readOrCreateFile(prefsFilePath, state, state.config.flashpointPath);
349 } catch (e) {
350 console.log('Failed to load preferences, prompting for defaults');
351 const res = await new Promise<number>((resolve) => {
352 process.once('message', (msg) => {
353 resolve(Number(msg));
354 });
355 send({ preferencesRefresh: true });
356 });
357 console.log('Response - ' + res);
358
359 if (res === 1) {
360 throw 'User cancelled.';
361 }
362
363 // Check for custom default file
364 const overridePath = path.join(state.config.flashpointPath, '.preferences.defaults.json');
365 console.log('Checking for prefs override at ' + overridePath);
366 try {
367 await fs.promises.copyFile(overridePath, prefsFilePath);
368 console.log('Copied default preferences (override)');
369 // File copied, try loading again
370 return loadPrefs();
371 } catch (err) {
372 console.log(err);
373 // Failed to copy overrides, use defaults
374 const defaultPrefs = deepCopy(defaultPreferencesData);
375 state.preferences = defaultPrefs;
376 try {
377 await PreferencesFile.saveFile(prefsFilePath, state.preferences, state);
378 console.log('Copied default preferences');
379 return loadPrefs();
380 } catch (err) {
381 send({ quit: true, errorMessage: 'Failed to save default preferences file? Quitting...' });
382 return;
383 }
384 }
385 }
386 };
387
388 try {
389 await loadPrefs();

Callers 1

prepForInitFunction · 0.85

Calls 2

deepCopyFunction · 0.90
onceMethod · 0.65

Tested by

no test coverage detected