coai/app/src/admin/api/info.ts

66 lines
1.3 KiB
TypeScript

import axios from "axios";
import {
setAnnouncement,
setAppLogo,
setAppName,
setBlobEndpoint,
setBuyLink,
setDocsUrl,
} from "@/conf/env.ts";
import { infoEvent, InfoForm } from "@/events/info.ts";
export type SiteInfo = {
title: string;
logo: string;
docs: string;
file: string;
announcement: string;
buy_link: string;
mail: boolean;
contact: string;
footer: string;
auth_footer: boolean;
article: string[];
generation: string[];
relay_plan: boolean;
};
export async function getSiteInfo(): Promise<SiteInfo> {
try {
const response = await axios.get("/info");
return response.data as SiteInfo;
} catch (e) {
console.warn(e);
return {
title: "",
logo: "",
docs: "",
file: "",
announcement: "",
buy_link: "",
contact: "",
footer: "",
auth_footer: false,
mail: false,
article: [],
generation: [],
relay_plan: false,
};
}
}
export function syncSiteInfo() {
setTimeout(async () => {
const info = await getSiteInfo();
setAppName(info.title);
setAppLogo(info.logo);
setDocsUrl(info.docs);
setBlobEndpoint(info.file);
setAnnouncement(info.announcement);
setBuyLink(info.buy_link);
infoEvent.emit(info as InfoForm);
}, 25);
}