2019-09-15 14:16:32 +02:00
|
|
|
import { Launcher } from 'comp/launcher';
|
|
|
|
import { StringFormat } from 'util/formatting/string-format';
|
|
|
|
import { Logger } from 'util/logger';
|
2015-12-12 09:53:50 +01:00
|
|
|
|
2017-01-31 07:50:28 +01:00
|
|
|
const logger = new Logger('settings');
|
2015-12-05 14:57:43 +01:00
|
|
|
|
2017-01-31 07:50:28 +01:00
|
|
|
const SettingsStore = {
|
2019-08-18 10:17:09 +02:00
|
|
|
fileName(key) {
|
2017-02-04 14:17:34 +01:00
|
|
|
return `${key}.json`;
|
2015-12-05 14:57:43 +01:00
|
|
|
},
|
|
|
|
|
2019-08-18 10:17:09 +02:00
|
|
|
load(key) {
|
2017-02-20 23:39:13 +01:00
|
|
|
return new Promise(resolve => {
|
2017-02-04 14:17:34 +01:00
|
|
|
if (Launcher) {
|
2017-01-31 07:50:28 +01:00
|
|
|
const settingsFile = Launcher.getUserDataPath(this.fileName(key));
|
2017-02-04 14:17:34 +01:00
|
|
|
Launcher.fileExists(settingsFile, exists => {
|
|
|
|
if (exists) {
|
2017-02-20 23:39:13 +01:00
|
|
|
Launcher.readFile(settingsFile, 'utf8', data => {
|
|
|
|
return this.parseData(key, data, resolve);
|
2017-02-04 19:31:26 +01:00
|
|
|
});
|
2017-02-05 11:08:26 +01:00
|
|
|
} else {
|
2017-02-20 23:39:13 +01:00
|
|
|
resolve();
|
2017-02-04 14:17:34 +01:00
|
|
|
}
|
|
|
|
});
|
2015-12-05 14:57:43 +01:00
|
|
|
} else {
|
2019-09-15 08:11:11 +02:00
|
|
|
const data = localStorage[StringFormat.camelCase(key)];
|
2017-02-20 23:39:13 +01:00
|
|
|
return this.parseData(key, data, resolve);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
},
|
|
|
|
|
2019-08-18 10:17:09 +02:00
|
|
|
parseData(key, data, resolve) {
|
2017-02-20 23:39:13 +01:00
|
|
|
try {
|
|
|
|
if (data) {
|
|
|
|
return resolve(JSON.parse(data));
|
|
|
|
} else {
|
|
|
|
resolve();
|
2015-12-05 14:57:43 +01:00
|
|
|
}
|
|
|
|
} catch (e) {
|
2017-02-20 23:39:13 +01:00
|
|
|
logger.error('Error loading ' + key, e);
|
|
|
|
resolve();
|
2015-12-05 14:57:43 +01:00
|
|
|
}
|
|
|
|
},
|
|
|
|
|
2019-08-18 10:17:09 +02:00
|
|
|
save(key, data) {
|
2017-02-20 23:39:13 +01:00
|
|
|
return new Promise(resolve => {
|
2017-02-04 14:17:34 +01:00
|
|
|
if (Launcher) {
|
|
|
|
const settingsFile = Launcher.getUserDataPath(this.fileName(key));
|
2017-06-06 20:40:27 +02:00
|
|
|
data = JSON.stringify(data);
|
2017-06-05 11:48:03 +02:00
|
|
|
Launcher.writeFile(settingsFile, data, err => {
|
2017-02-05 11:08:26 +01:00
|
|
|
if (err) {
|
|
|
|
logger.error(`Error saving ${key}`, err);
|
|
|
|
}
|
2017-02-20 23:39:13 +01:00
|
|
|
resolve();
|
2017-02-05 11:08:26 +01:00
|
|
|
});
|
2015-12-05 14:57:43 +01:00
|
|
|
} else if (typeof localStorage !== 'undefined') {
|
2019-09-15 08:11:11 +02:00
|
|
|
localStorage[StringFormat.camelCase(key)] = JSON.stringify(data);
|
2017-02-20 23:39:13 +01:00
|
|
|
resolve();
|
2015-12-05 14:57:43 +01:00
|
|
|
}
|
2017-02-20 23:39:13 +01:00
|
|
|
});
|
2015-12-05 14:57:43 +01:00
|
|
|
}
|
|
|
|
};
|
|
|
|
|
2019-09-15 14:16:32 +02:00
|
|
|
export { SettingsStore };
|