75 lines
1.4 KiB
TypeScript
75 lines
1.4 KiB
TypeScript
export interface User {
|
|
id: string;
|
|
username: string;
|
|
displayName: string;
|
|
avatarColor: string;
|
|
bio?: string;
|
|
phone?: string;
|
|
isAdmin: boolean;
|
|
lastSeen?: string;
|
|
online?: boolean;
|
|
}
|
|
|
|
export interface ChatMember {
|
|
id: string;
|
|
username: string;
|
|
displayName: string;
|
|
avatarColor: string;
|
|
role: 'owner' | 'admin' | 'member';
|
|
online: boolean;
|
|
lastSeen: string;
|
|
canSendMessages: boolean;
|
|
}
|
|
|
|
export interface Chat {
|
|
id: string;
|
|
type: 'private' | 'group' | 'channel';
|
|
title: string;
|
|
description?: string;
|
|
avatarColor: string;
|
|
isPublic?: boolean;
|
|
role: 'owner' | 'admin' | 'member';
|
|
lastMessage?: string;
|
|
lastMessageAt?: string;
|
|
unreadCount: number;
|
|
memberCount: number;
|
|
privateUserId?: string;
|
|
createdAt: string;
|
|
members?: ChatMember[];
|
|
myRole?: string;
|
|
canSendMessages?: boolean;
|
|
canAddMembers?: boolean;
|
|
}
|
|
|
|
export interface Attachment {
|
|
id: string;
|
|
filename: string;
|
|
originalName: string;
|
|
mimeType: string;
|
|
size: number;
|
|
url: string;
|
|
}
|
|
|
|
export interface Message {
|
|
id: string;
|
|
chatId: string;
|
|
content: string;
|
|
type: 'text' | 'image' | 'file' | 'system';
|
|
isDeleted: boolean;
|
|
isEdited: boolean;
|
|
editedAt?: string;
|
|
createdAt: string;
|
|
replyTo?: {
|
|
id: string;
|
|
content: string;
|
|
senderName: string;
|
|
} | null;
|
|
attachments: Attachment[];
|
|
sender: {
|
|
id: string;
|
|
username: string;
|
|
displayName: string;
|
|
avatarColor: string;
|
|
} | null;
|
|
}
|