coai/app/src/conf/env.ts
2024-01-23 11:32:35 +08:00

131 lines
3.5 KiB
TypeScript

import { updateDocumentTitle, updateFavicon } from "@/utils/dom.ts";
import { getMemory, setMemory } from "@/utils/memory.ts";
import { announcementEvent } from "@/events/announcement.ts";
export let appName =
localStorage.getItem("app_name") ||
import.meta.env.VITE_APP_NAME ||
"Chat Nio";
export let appLogo =
localStorage.getItem("app_logo") ||
import.meta.env.VITE_APP_LOGO ||
"/favicon.ico";
export let blobEndpoint =
localStorage.getItem("blob_endpoint") ||
import.meta.env.VITE_BLOB_ENDPOINT ||
"https://blob.chatnio.net";
export let docsEndpoint =
localStorage.getItem("docs_url") ||
import.meta.env.VITE_DOCS_ENDPOINT ||
"https://docs.chatnio.net";
export let buyLink =
localStorage.getItem("buy_link") || import.meta.env.VITE_BUY_LINK || "";
export const useDeeptrain = !!import.meta.env.VITE_USE_DEEPTRAIN;
export const backendEndpoint = import.meta.env.VITE_BACKEND_ENDPOINT || "/api";
export const deeptrainEndpoint =
import.meta.env.VITE_DEEPTRAIN_ENDPOINT || "https://deeptrain.net";
export const deeptrainAppName = import.meta.env.VITE_DEEPTRAIN_APP || "chatnio";
export const deeptrainApiEndpoint =
import.meta.env.VITE_DEEPTRAIN_API_ENDPOINT || "https://api.deeptrain.net";
updateDocumentTitle(appName);
updateFavicon(appLogo);
export function getDev(): boolean {
/**
* return if the current environment is development
*/
return window.location.hostname === "localhost";
}
export function getRestApi(deploy: boolean): string {
/**
* return the REST API address
*/
return !deploy ? "http://localhost:8094" : backendEndpoint;
}
export function getWebsocketApi(deploy: boolean): string {
/**
* return the WebSocket API address
*/
if (!deploy) return "ws://localhost:8094";
if (backendEndpoint.startsWith("http://"))
return `ws://${backendEndpoint.slice(7)}`;
if (backendEndpoint.startsWith("https://"))
return `wss://${backendEndpoint.slice(8)}`;
if (backendEndpoint.startsWith("/"))
return location.protocol === "https:"
? `wss://${location.host}${backendEndpoint}`
: `ws://${location.host}${backendEndpoint}`;
return backendEndpoint;
}
export function getTokenField(deploy: boolean): string {
/**
* return the token field name in localStorage
*/
return deploy ? "token" : "token-dev";
}
export function setAppName(name: string): void {
/**
* set the app name in localStorage
*/
name = name.trim() || "Chat Nio";
setMemory("app_name", name);
appName = name;
updateDocumentTitle(name);
}
export function setAppLogo(logo: string): void {
/**
* set the app logo in localStorage
*/
logo = logo.trim() || "/favicon.ico";
setMemory("app_logo", logo);
appLogo = logo;
updateFavicon(logo);
}
export function setDocsUrl(url: string): void {
/**
* set the docs url in localStorage
*/
url = url.trim() || "https://docs.chatnio.net";
setMemory("docs_url", url);
docsEndpoint = url;
}
export function setBlobEndpoint(endpoint: string): void {
/**
* set the blob endpoint in localStorage
*/
endpoint = endpoint.trim() || "https://blob.chatnio.net";
setMemory("blob_endpoint", endpoint);
blobEndpoint = endpoint;
}
export function setAnnouncement(announcement: string): void {
/**
* set the announcement in localStorage
*/
if (getMemory("announcement") === announcement) return;
setMemory("announcement", announcement);
announcementEvent.emit(announcement);
}
export function setBuyLink(link: string): void {
/**
* set the buy link in localStorage
*/
link = link.trim() || "";
setMemory("buy_link", link);
buyLink = link;
}