gui/modules/desktop/electron/libs/auth.ts
Neil b43a64566d
implement push notification using pushy (#299)
* #245 implement push notification using pushy

* #298 subscribe to installed package

---------

Co-authored-by: neil <neil@neils-MacBook-Pro.local>
2023-03-15 11:53:37 +08:00

43 lines
1.1 KiB
TypeScript

import { mkdirp } from "mkdirp";
import path from "path";
import fs from "fs";
import { getTeaPath } from "./tea-dir";
import * as v1Client from "./v1-client";
import { app } from "electron";
const sessionFilePath = path.join(getTeaPath(), "tea.xyz/gui/tmp.dat");
const sessionFolder = path.join(getTeaPath(), "tea.xyz/gui");
interface Session {
device_id?: string;
key?: string;
user?: any;
locale?: string;
}
export async function readSessionData(): Promise<Session> {
const locale = app.getLocale();
try {
const sessionBuffer = await fs.readFileSync(sessionFilePath);
const session = JSON.parse(sessionBuffer.toString()) as Session;
session.locale = locale;
return session;
} catch (error) {
console.error(error);
const req = await v1Client.get<{ deviceId: string }>("/auth/registerDevice");
const data = { device_id: req.deviceId, locale };
await writeSessionData(data);
return data;
}
}
export async function writeSessionData(data: Session) {
try {
await mkdirp(sessionFolder);
await fs.writeFileSync(sessionFilePath, JSON.stringify(data), {
encoding: "utf-8"
});
} catch (error) {
console.error(error);
}
}