init
This commit is contained in:
+2
-1
@@ -17,7 +17,8 @@ export enum Theme {
|
||||
}
|
||||
|
||||
export const DEFAULT_CONFIG = {
|
||||
submitKey: SubmitKey.CtrlEnter as SubmitKey,
|
||||
// submitKey: SubmitKey.CtrlEnter as SubmitKey,
|
||||
submitKey: SubmitKey.Enter as SubmitKey,
|
||||
avatar: "1f603",
|
||||
fontSize: 14,
|
||||
theme: Theme.Auto as Theme,
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
export * from "./chat";
|
||||
export * from "./update";
|
||||
// export * from "./update";
|
||||
export * from "./access";
|
||||
export * from "./config";
|
||||
|
||||
+80
-79
@@ -1,96 +1,97 @@
|
||||
import { create } from "zustand";
|
||||
import { persist } from "zustand/middleware";
|
||||
import { FETCH_COMMIT_URL, StoreKey } from "../constant";
|
||||
import { api } from "../client/api";
|
||||
import { showToast } from "../components/ui-lib";
|
||||
export {};
|
||||
// import { create } from "zustand";
|
||||
// import { persist } from "zustand/middleware";
|
||||
// import { FETCH_COMMIT_URL, StoreKey } from "../constant";
|
||||
// import { api } from "../client/api";
|
||||
// import { showToast } from "../components/ui-lib";
|
||||
|
||||
export interface UpdateStore {
|
||||
lastUpdate: number;
|
||||
remoteVersion: string;
|
||||
// export interface UpdateStore {
|
||||
// lastUpdate: number;
|
||||
// remoteVersion: string;
|
||||
|
||||
used?: number;
|
||||
subscription?: number;
|
||||
lastUpdateUsage: number;
|
||||
// used?: number;
|
||||
// subscription?: number;
|
||||
// lastUpdateUsage: number;
|
||||
|
||||
version: string;
|
||||
getLatestVersion: (force?: boolean) => Promise<void>;
|
||||
updateUsage: (force?: boolean) => Promise<void>;
|
||||
}
|
||||
// version: string;
|
||||
// getLatestVersion: (force?: boolean) => Promise<void>;
|
||||
// updateUsage: (force?: boolean) => Promise<void>;
|
||||
// }
|
||||
|
||||
function queryMeta(key: string, defaultValue?: string): string {
|
||||
let ret: string;
|
||||
if (document) {
|
||||
const meta = document.head.querySelector(
|
||||
`meta[name='${key}']`,
|
||||
) as HTMLMetaElement;
|
||||
ret = meta?.content ?? "";
|
||||
} else {
|
||||
ret = defaultValue ?? "";
|
||||
}
|
||||
// function queryMeta(key: string, defaultValue?: string): string {
|
||||
// let ret: string;
|
||||
// if (document) {
|
||||
// const meta = document.head.querySelector(
|
||||
// `meta[name='${key}']`,
|
||||
// ) as HTMLMetaElement;
|
||||
// ret = meta?.content ?? "";
|
||||
// } else {
|
||||
// ret = defaultValue ?? "";
|
||||
// }
|
||||
|
||||
return ret;
|
||||
}
|
||||
// return ret;
|
||||
// }
|
||||
|
||||
const ONE_MINUTE = 60 * 1000;
|
||||
// const ONE_MINUTE = 60 * 1000;
|
||||
|
||||
export const useUpdateStore = create<UpdateStore>()(
|
||||
persist(
|
||||
(set, get) => ({
|
||||
lastUpdate: 0,
|
||||
remoteVersion: "",
|
||||
// export const useUpdateStore = create<UpdateStore>()(
|
||||
// persist(
|
||||
// (set, get) => ({
|
||||
// lastUpdate: 0,
|
||||
// remoteVersion: "",
|
||||
|
||||
lastUpdateUsage: 0,
|
||||
// lastUpdateUsage: 0,
|
||||
|
||||
version: "unknown",
|
||||
// version: "unknown",
|
||||
|
||||
async getLatestVersion(force = false) {
|
||||
set(() => ({ version: queryMeta("version") ?? "unknown" }));
|
||||
// async getLatestVersion(force = false) {
|
||||
// set(() => ({ version: queryMeta("version") ?? "unknown" }));
|
||||
|
||||
const overTenMins = Date.now() - get().lastUpdate > 10 * ONE_MINUTE;
|
||||
if (!force && !overTenMins) return;
|
||||
// const overTenMins = Date.now() - get().lastUpdate > 10 * ONE_MINUTE;
|
||||
// if (!force && !overTenMins) return;
|
||||
|
||||
set(() => ({
|
||||
lastUpdate: Date.now(),
|
||||
}));
|
||||
// set(() => ({
|
||||
// lastUpdate: Date.now(),
|
||||
// }));
|
||||
|
||||
try {
|
||||
const data = await (await fetch(FETCH_COMMIT_URL)).json();
|
||||
const remoteCommitTime = data[0].commit.committer.date;
|
||||
const remoteId = new Date(remoteCommitTime).getTime().toString();
|
||||
set(() => ({
|
||||
remoteVersion: remoteId,
|
||||
}));
|
||||
console.log("[Got Upstream] ", remoteId);
|
||||
} catch (error) {
|
||||
console.error("[Fetch Upstream Commit Id]", error);
|
||||
}
|
||||
},
|
||||
// try {
|
||||
// const data = await (await fetch(FETCH_COMMIT_URL)).json();
|
||||
// const remoteCommitTime = data[0].commit.committer.date;
|
||||
// const remoteId = new Date(remoteCommitTime).getTime().toString();
|
||||
// set(() => ({
|
||||
// remoteVersion: remoteId,
|
||||
// }));
|
||||
// console.log("[Got Upstream] ", remoteId);
|
||||
// } catch (error) {
|
||||
// console.error("[Fetch Upstream Commit Id]", error);
|
||||
// }
|
||||
// },
|
||||
|
||||
async updateUsage(force = false) {
|
||||
const overOneMinute = Date.now() - get().lastUpdateUsage >= ONE_MINUTE;
|
||||
if (!overOneMinute && !force) return;
|
||||
// async updateUsage(force = false) {
|
||||
// const overOneMinute = Date.now() - get().lastUpdateUsage >= ONE_MINUTE;
|
||||
// if (!overOneMinute && !force) return;
|
||||
|
||||
set(() => ({
|
||||
lastUpdateUsage: Date.now(),
|
||||
}));
|
||||
// set(() => ({
|
||||
// lastUpdateUsage: Date.now(),
|
||||
// }));
|
||||
|
||||
try {
|
||||
const usage = await api.llm.usage();
|
||||
// try {
|
||||
// const usage = await api.llm.usage();
|
||||
|
||||
if (usage) {
|
||||
set(() => ({
|
||||
used: usage.used,
|
||||
subscription: usage.total,
|
||||
}));
|
||||
}
|
||||
} catch (e) {
|
||||
console.error((e as Error).message);
|
||||
}
|
||||
},
|
||||
}),
|
||||
{
|
||||
name: StoreKey.Update,
|
||||
version: 1,
|
||||
},
|
||||
),
|
||||
);
|
||||
// if (usage) {
|
||||
// set(() => ({
|
||||
// used: usage.used,
|
||||
// subscription: usage.total,
|
||||
// }));
|
||||
// }
|
||||
// } catch (e) {
|
||||
// console.error((e as Error).message);
|
||||
// }
|
||||
// },
|
||||
// }),
|
||||
// {
|
||||
// name: StoreKey.Update,
|
||||
// version: 1,
|
||||
// },
|
||||
// ),
|
||||
// );
|
||||
|
||||
Reference in New Issue
Block a user