Files
ColdBreeze-chat-web/src/types/server.ts
T
2023-05-15 08:53:12 +08:00

117 lines
2.4 KiB
TypeScript

// call `organization` in backend
import { PriceType } from "./common";
import { User } from "./user";
export interface Server extends SystemCommon {
name: string;
description: string;
}
export interface SystemCommon {
show_user_online_status: boolean,
webclient_auto_update: boolean,
}
export interface GithubAuthConfig {
client_id?: string;
client_secret?: string;
}
export interface FirebaseConfig {
use_official: boolean;
enabled: boolean;
token_url: string;
project_id: string;
private_key: string;
client_email: string;
}
export interface AgoraConfig {
enabled: boolean;
url: string;
project_id: string;
app_id: string;
app_certificate: string;
customer_id: string;
customer_secret: string;
}
export interface AgoraVoicingListResponse {
success: boolean,
data: {
channels: { channel_name: string, user_count: number }[],
total_size: number
}
}
export interface AgoraChannelUsersResponse {
success: boolean,
data: {
channel_exist: boolean,
mode?: number,
total?: number,
users?: number[]
}
}
export interface AgoraTokenResponse {
agora_token: string,
uid: number,
channel_name: string,
expired_in: number,
app_id: string;
}
export interface SMTPConfig {
enabled: boolean;
host: string;
port: number;
from: string;
username: string;
password: string;
}
export interface GoogleAuthConfig {
client_id: string;
}
export interface TestEmailDTO {
to: string;
content: string;
subject: string;
}
export type WhoCanSignUp = "EveryOne" | "InvitationOnly";
export type OIDCSetting = {
enable: boolean;
favicon: string;
domain: string;
};
export interface LoginConfig {
who_can_sign_up: WhoCanSignUp;
password: boolean;
magic_link: boolean;
guest: boolean;
google: boolean;
github: boolean;
oidc: OIDCSetting[];
metamask: boolean;
third_party: boolean;
}
export interface LicenseResponse {
domains: string[];
created_at: string;
expired_at: string;
sign: boolean;
base58: string;
user_limit: number;
}
export interface LicenseMetadata {
expire: string;
user_limit: number;
domain: string | string[];
}
export interface RenewLicense {
type: PriceType,
priceId: string;
metadata: LicenseMetadata;
cancel_url: string;
success_url: string;
}
export interface RenewLicenseResponse {
session_url: string;
}
export interface CreateAdminDTO extends Pick<User, "email" | "name" | "gender"> {
password: string;
}