refactor: more TS code
This commit is contained in:
@@ -6,6 +6,9 @@ export interface AuthToken {
|
||||
refresh_token: string;
|
||||
expired_in: number;
|
||||
}
|
||||
export interface RenewTokenDTO extends Pick<AuthToken, "token" | "refresh_token"> {}
|
||||
export interface RenewTokenResponse
|
||||
extends Pick<AuthToken, "token" | "refresh_token" | "expired_in"> {}
|
||||
|
||||
export interface AuthData extends AuthToken {
|
||||
initialized?: boolean;
|
||||
@@ -57,3 +60,15 @@ export type LoginCredential =
|
||||
| GoogleCredential
|
||||
| ThirdPartyCredential
|
||||
| MagicLinkCredential;
|
||||
|
||||
export type CredentialResponse = {
|
||||
password: boolean;
|
||||
google: string;
|
||||
metamask: string;
|
||||
oidc: string[];
|
||||
};
|
||||
export interface OIDCConfig {
|
||||
enable: boolean;
|
||||
favicon: string;
|
||||
domain: string;
|
||||
}
|
||||
|
||||
@@ -34,8 +34,12 @@ export interface CreateChannelDTO {
|
||||
is_public: boolean;
|
||||
}
|
||||
|
||||
export interface ChannelDTO extends Pick<Channel, "owner" | "description" | "name"> {
|
||||
id: number;
|
||||
}
|
||||
|
||||
export interface UpdateChannelDTO {
|
||||
operation: "add_member" | "remove_member";
|
||||
operation?: "add_member" | "remove_member";
|
||||
members?: number[];
|
||||
gid: number; // todo check
|
||||
name?: string;
|
||||
@@ -43,8 +47,6 @@ export interface UpdateChannelDTO {
|
||||
owner?: number;
|
||||
avatar_updated_at?: number;
|
||||
type?: string;
|
||||
// type = 'user_joined_group' | 'user_leaved_group'
|
||||
// gid
|
||||
uid?: number[];
|
||||
icon?: string;
|
||||
}
|
||||
|
||||
Vendored
+26
@@ -1,3 +1,26 @@
|
||||
interface BeforeInstallPromptEvent extends Event {
|
||||
/**
|
||||
* Returns an array of DOMString items containing the platforms on which the event was dispatched.
|
||||
* This is provided for user agents that want to present a choice of versions to the user such as,
|
||||
* for example, "web" or "play" which would allow the user to chose between a web version or
|
||||
* an Android version.
|
||||
*/
|
||||
readonly platforms: Array<string>;
|
||||
|
||||
/**
|
||||
* Returns a Promise that resolves to a DOMString containing either "accepted" or "dismissed".
|
||||
*/
|
||||
readonly userChoice: Promise<{
|
||||
outcome: "accepted" | "dismissed";
|
||||
platform: string;
|
||||
}>;
|
||||
|
||||
/**
|
||||
* Allows a developer to show the install prompt at a time of their own choosing.
|
||||
* This method returns a Promise.
|
||||
*/
|
||||
prompt(): Promise<void>;
|
||||
}
|
||||
export declare global {
|
||||
import { PrecacheEntry } from "workbox-precaching/src/_types";
|
||||
import localforage from "localforage";
|
||||
@@ -7,4 +30,7 @@ export declare global {
|
||||
skipWaiting: () => void;
|
||||
CACHE: { [key: string]: typeof localforage | undefined };
|
||||
}
|
||||
interface WindowEventMap {
|
||||
beforeinstallprompt: BeforeInstallPromptEvent;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
import { ChatEvent } from "./sse";
|
||||
|
||||
export type ContentType = "text/plain" | "text/markdown" | "vocechat/file" | "vocechat/archive";
|
||||
export type ContentTypeKey = "text" | "markdown" | "file" | "archive";
|
||||
|
||||
@@ -13,3 +15,13 @@ export interface MuteDTO {
|
||||
remove_users?: number[];
|
||||
remove_groups?: number[];
|
||||
}
|
||||
export interface UploadFileResponse {
|
||||
path: string;
|
||||
size: number;
|
||||
hash: string;
|
||||
image_properties: {
|
||||
width: number;
|
||||
height: number;
|
||||
};
|
||||
}
|
||||
export interface ChatMessage extends Omit<ChatEvent, "type"> {}
|
||||
|
||||
@@ -1,3 +1,8 @@
|
||||
export interface Archive {
|
||||
users: ArchiveUser[];
|
||||
messages: ArchiveMessage[];
|
||||
num_attachments: number;
|
||||
}
|
||||
export interface ArchiveUser {
|
||||
name: string;
|
||||
avatar?: number;
|
||||
@@ -13,10 +18,9 @@ export interface ArchiveMessage {
|
||||
file_id?: number;
|
||||
thumbnail_id?: number;
|
||||
}
|
||||
export interface Archive {
|
||||
users: ArchiveUser[];
|
||||
messages: ArchiveMessage[];
|
||||
num_attachments: number;
|
||||
export interface FavoriteArchive {
|
||||
id: string;
|
||||
created_at: number;
|
||||
}
|
||||
// 上传文件API响应
|
||||
export interface UploadResponse {
|
||||
|
||||
+8
-3
@@ -1,4 +1,4 @@
|
||||
import { User } from "./auth";
|
||||
import { User } from "./user";
|
||||
import { Channel } from "./channel";
|
||||
import { ContentType } from "./message";
|
||||
|
||||
@@ -110,13 +110,18 @@ export interface ReplyMessage {
|
||||
content_type: ContentType;
|
||||
content: string;
|
||||
}
|
||||
|
||||
type MessageTargetUser = {
|
||||
uid: number;
|
||||
};
|
||||
type MessageTargetChannel = {
|
||||
gid: number;
|
||||
};
|
||||
export interface ChatEvent {
|
||||
type: "chat";
|
||||
mid: number;
|
||||
from_uid: number;
|
||||
created_at: number;
|
||||
target: { uid: number };
|
||||
target: MessageTargetChannel | MessageTargetUser;
|
||||
detail: NormalMessage | ReactionMessage | ReplyMessage;
|
||||
}
|
||||
|
||||
|
||||
+4
-6
@@ -2,7 +2,7 @@ export type Gender = 0 | 1;
|
||||
|
||||
export interface User {
|
||||
uid: number;
|
||||
email: string;
|
||||
email?: string;
|
||||
name: string;
|
||||
gender: Gender;
|
||||
language: string;
|
||||
@@ -25,9 +25,7 @@ export interface UserForAdmin extends User {
|
||||
status: UserStatus;
|
||||
online_devices: UserDevice[];
|
||||
}
|
||||
export interface UserForAdminDTO
|
||||
extends Pick<
|
||||
UserForAdmin,
|
||||
"email" | "password" | "name" | "gender" | "is_admin" | "language" | "status"
|
||||
> {}
|
||||
export interface UserForAdminDTO extends Partial<UserForAdmin> {
|
||||
id?: number;
|
||||
}
|
||||
export interface UserDTO extends Pick<User, "name" | "gender" | "language"> {}
|
||||
|
||||
Reference in New Issue
Block a user