mirror of
https://github.com/zulip/zulip-desktop.git
synced 2025-10-28 10:33:39 +00:00
Using `import * as` import syntax causes some problem if the module exports a class or function. Because the whole point of star import is to import every property the module exports. It turns out we have been using it incorrectly in many places which this commit fixes. Then we fix a linting error by adding a eslint disable rule to solve it along with a TODO because the way we currently do it is wrong. Finally, to conclude this cleanup, we merge all the .gitignore paths into once now that we can.
77 lines
1.7 KiB
TypeScript
77 lines
1.7 KiB
TypeScript
'use strict';
|
|
import JsonDB from 'node-json-db';
|
|
|
|
import fs = require('fs');
|
|
import path = require('path');
|
|
import electron = require('electron');
|
|
import Logger = require('./logger-util');
|
|
|
|
const remote =
|
|
process.type === 'renderer' ? electron.remote : electron;
|
|
|
|
const logger = new Logger({
|
|
file: 'linux-update-util.log',
|
|
timestamp: true
|
|
});
|
|
|
|
/* To make the util runnable in both main and renderer process */
|
|
const { dialog, app } = remote;
|
|
let instance: null | LinuxUpdateUtil = null;
|
|
|
|
class LinuxUpdateUtil {
|
|
db: JsonDB;
|
|
|
|
constructor() {
|
|
if (instance) {
|
|
return instance;
|
|
} else {
|
|
instance = this;
|
|
}
|
|
|
|
this.reloadDB();
|
|
return instance;
|
|
}
|
|
|
|
getUpdateItem(key: string, defaultValue: any = null): any {
|
|
this.reloadDB();
|
|
const value = this.db.getData('/')[key];
|
|
if (value === undefined) {
|
|
this.setUpdateItem(key, defaultValue);
|
|
return defaultValue;
|
|
} else {
|
|
return value;
|
|
}
|
|
}
|
|
|
|
setUpdateItem(key: string, value: any): void {
|
|
this.db.push(`/${key}`, value, true);
|
|
this.reloadDB();
|
|
}
|
|
|
|
removeUpdateItem(key: string): void {
|
|
this.db.delete(`/${key}`);
|
|
this.reloadDB();
|
|
}
|
|
|
|
reloadDB(): void {
|
|
const linuxUpdateJsonPath = path.join(app.getPath('userData'), '/config/updates.json');
|
|
try {
|
|
const file = fs.readFileSync(linuxUpdateJsonPath, 'utf8');
|
|
JSON.parse(file);
|
|
} catch (err) {
|
|
if (fs.existsSync(linuxUpdateJsonPath)) {
|
|
fs.unlinkSync(linuxUpdateJsonPath);
|
|
dialog.showErrorBox(
|
|
'Error saving update notifications.',
|
|
'We encountered an error while saving the update notifications.'
|
|
);
|
|
logger.error('Error while JSON parsing updates.json: ');
|
|
logger.error(err);
|
|
}
|
|
}
|
|
this.db = new JsonDB(linuxUpdateJsonPath, true, true);
|
|
}
|
|
}
|
|
|
|
export = new LinuxUpdateUtil();
|