refactor: more TS code

This commit is contained in:
Tristan Yang
2022-07-08 19:13:49 +08:00
parent 678b8515ca
commit 9f1b115c73
55 changed files with 421 additions and 338 deletions
+15
View File
@@ -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;
}
+5 -3
View File
@@ -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;
}
+26
View File
@@ -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;
}
}
+12
View File
@@ -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"> {}
+8 -4
View File
@@ -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
View File
@@ -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
View File
@@ -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"> {}