This repository has been archived on 2023-11-14. You can view files and clone it, but cannot push or open issues/pull-requests.
viscord/packages/preload/src/settings.ts

62 lines
1.4 KiB
TypeScript

import { resolve } from 'path';
import {
writeFileSync,
readFileSync,
mkdirSync,
existsSync,
} from 'fs';
import { URL } from 'url';
const appdataPath = process.env.APPDATA || // windows
(process.platform == 'darwin' ?
process.env.HOME + '/Library/Preferences' : //macos
process.env.HOME + '/.local/share'); // linux
const cornerDataPath = resolve(appdataPath, 'corner');
const clientIdPath = resolve(cornerDataPath, 'clientId');
const homeServerPath = resolve(cornerDataPath, 'homeServer');
// --- setup ---
if(!existsSync(cornerDataPath))
mkdirSync(cornerDataPath);
if(!existsSync(clientIdPath))
writeFileSync(clientIdPath, '');
// --- helpers ---
function validUuid(uuid: string) {
return uuid.length === 36;
}
// --- export ---
export function getClientId() {
const fileContents = readFileSync(clientIdPath).toString();
if(!validUuid(fileContents)) return null;
return fileContents;
}
export function setClientId(id: string) {
if(!validUuid(id)) return false;
writeFileSync(clientIdPath, id);
return true;
}
export function getHomeServer() {
const url = readFileSync(homeServerPath).toString()
try {
new URL(url);
return url;
} catch(e) {
return null;
}
}
export function setHomeServer(url: string) {
if(url === null) {
writeFileSync(homeServerPath, '');
return null
}
writeFileSync(homeServerPath, url);
}