51 lines
1.4 KiB
JavaScript
51 lines
1.4 KiB
JavaScript
/* Localstorage fix */
|
|
export default function() {
|
|
|
|
const fs = window.require("fs");
|
|
const platform = process.platform;
|
|
const dataPath = (platform === "win32" ? process.env.APPDATA : platform === "darwin" ? process.env.HOME + "/Library/Preferences" : process.env.HOME + "/.config") + "/BetterDiscord/";
|
|
const localStorageFile = "localStorage.json";
|
|
|
|
let data = {};
|
|
if (fs.existsSync(`${dataPath}${localStorageFile}`)) {
|
|
try {
|
|
data = JSON.parse(fs.readFileSync(`${dataPath}${localStorageFile}`));
|
|
}
|
|
catch (err) {
|
|
console.log(err);
|
|
}
|
|
}
|
|
else if (fs.existsSync(localStorageFile)) {
|
|
try {
|
|
data = JSON.parse(fs.readFileSync(localStorageFile));
|
|
}
|
|
catch (err) {
|
|
console.log(err);
|
|
}
|
|
}
|
|
|
|
const storage = data;
|
|
storage.setItem = function(i, v) {
|
|
storage[i] = v;
|
|
this.save();
|
|
};
|
|
storage.getItem = function(i) {
|
|
return storage[i] || null;
|
|
};
|
|
storage.save = function() {
|
|
fs.writeFileSync(`${dataPath}${localStorageFile}`, JSON.stringify(this), null, 4);
|
|
};
|
|
|
|
const lsProxy = new Proxy(storage, {
|
|
set: function(target, name, val) {
|
|
storage[name] = val;
|
|
storage.save();
|
|
},
|
|
get: function(target, name) {
|
|
return storage[name] || null;
|
|
}
|
|
});
|
|
|
|
window.localStorage = lsProxy;
|
|
|
|
} |