347 lines
9.2 KiB
TypeScript
347 lines
9.2 KiB
TypeScript
// Code generated by protoc-gen-ts_proto. DO NOT EDIT.
|
||
// versions:
|
||
// protoc-gen-ts_proto v2.11.8
|
||
// protoc v4.25.9
|
||
// source: chat/chat.proto
|
||
|
||
/* eslint-disable */
|
||
import type { Metadata } from "@grpc/grpc-js";
|
||
import { GrpcMethod, GrpcStreamMethod } from "@nestjs/microservices";
|
||
import { Observable } from "rxjs";
|
||
|
||
export const protobufPackage = "chat.v1";
|
||
|
||
export interface MessageDto {
|
||
id: string;
|
||
chatId: string;
|
||
senderId: string;
|
||
/** TEXT, VOICE, VIDEO_NOTE, STICKER, IMAGE */
|
||
type: string;
|
||
/** Для текста - сам текст. Для медиа - URL S3! */
|
||
content: string;
|
||
/** Ширина/высота картинки, длительность войса (JSON string) */
|
||
metadata: string;
|
||
replyToId: string;
|
||
isEdited: boolean;
|
||
createdAt: string;
|
||
}
|
||
|
||
export interface ChatMemberDto {
|
||
accountId: string;
|
||
/** OWNER, ADMIN, MEMBER */
|
||
role: string;
|
||
isMuted: boolean;
|
||
joinedAt: string;
|
||
}
|
||
|
||
export interface ChatDto {
|
||
id: string;
|
||
/** DIRECT, GROUP, CHANNEL */
|
||
type: string;
|
||
title: string;
|
||
avatarUrl: string;
|
||
unreadCount: number;
|
||
lastMessage:
|
||
| MessageDto
|
||
| undefined;
|
||
/** Полезно для рендера иконки перечеркнутого колокольчика */
|
||
isMuted: boolean;
|
||
}
|
||
|
||
export interface CreateChatRequest {
|
||
creatorId: string;
|
||
type: string;
|
||
title: string;
|
||
participantIds: string[];
|
||
}
|
||
|
||
export interface CreateChatResponse {
|
||
chat: ChatDto | undefined;
|
||
}
|
||
|
||
export interface GetUserChatsRequest {
|
||
userId: string;
|
||
offset: number;
|
||
limit: number;
|
||
}
|
||
|
||
export interface GetUserChatsResponse {
|
||
chats: ChatDto[];
|
||
}
|
||
|
||
/** Получаем профили всех участников и ссылку-приглашение (join_hash) */
|
||
export interface GetChatDetailsRequest {
|
||
userId: string;
|
||
chatId: string;
|
||
}
|
||
|
||
export interface GetChatDetailsResponse {
|
||
chat:
|
||
| ChatDto
|
||
| undefined;
|
||
/** Для ссылки-приглашения (t.me/join/...) */
|
||
joinHash: string;
|
||
members: ChatMemberDto[];
|
||
}
|
||
|
||
export interface JoinChatRequest {
|
||
userId: string;
|
||
/** Передаем либо chat_id, либо вытаскиваем его из join_hash */
|
||
chatId: string;
|
||
}
|
||
|
||
export interface JoinChatResponse {
|
||
success: boolean;
|
||
}
|
||
|
||
export interface LeaveChatRequest {
|
||
userId: string;
|
||
chatId: string;
|
||
}
|
||
|
||
export interface LeaveChatResponse {
|
||
success: boolean;
|
||
}
|
||
|
||
export interface RemoveMemberRequest {
|
||
/** Кто кикает (нужно проверить права) */
|
||
adminId: string;
|
||
/** Кого кикают */
|
||
targetUserId: string;
|
||
chatId: string;
|
||
}
|
||
|
||
export interface RemoveMemberResponse {
|
||
success: boolean;
|
||
}
|
||
|
||
export interface MuteChatRequest {
|
||
userId: string;
|
||
chatId: string;
|
||
/** true = выключить звук, false = включить */
|
||
isMuted: boolean;
|
||
}
|
||
|
||
export interface MuteChatResponse {
|
||
success: boolean;
|
||
}
|
||
|
||
export interface GetMessagesRequest {
|
||
userId: string;
|
||
chatId: string;
|
||
limit: number;
|
||
beforeMsgId: string;
|
||
}
|
||
|
||
export interface GetMessagesResponse {
|
||
messages: MessageDto[];
|
||
}
|
||
|
||
export interface SendMessageRequest {
|
||
chatId: string;
|
||
senderId: string;
|
||
type: string;
|
||
content: string;
|
||
replyToId: string;
|
||
}
|
||
|
||
export interface EditMessageRequest {
|
||
userId: string;
|
||
messageId: string;
|
||
newContent: string;
|
||
}
|
||
|
||
export interface DeleteMessageRequest {
|
||
userId: string;
|
||
messageId: string;
|
||
/** "Удалить только у себя" или "Удалить для всех" */
|
||
forEveryone: boolean;
|
||
}
|
||
|
||
export interface DeleteMessageResponse {
|
||
success: boolean;
|
||
}
|
||
|
||
export interface MarkAsReadRequest {
|
||
userId: string;
|
||
chatId: string;
|
||
/** ID последнего видимого сообщения */
|
||
messageId: string;
|
||
}
|
||
|
||
export interface MarkAsReadResponse {
|
||
success: boolean;
|
||
}
|
||
|
||
export interface CheckChatMembershipRequest {
|
||
userId: string;
|
||
chatId: string;
|
||
}
|
||
|
||
export interface CheckChatMembershipResponse {
|
||
isMember: boolean;
|
||
}
|
||
|
||
export const CHAT_V1_PACKAGE_NAME = "chat.v1";
|
||
|
||
export interface ChatServiceClient {
|
||
/** Управление чатами (левая панель) */
|
||
|
||
createChat(request: CreateChatRequest, metadata?: Metadata): Observable<CreateChatResponse>;
|
||
|
||
getUserChats(request: GetUserChatsRequest, metadata?: Metadata): Observable<GetUserChatsResponse>;
|
||
|
||
/** Открытие инфы о группе/собеседнике */
|
||
|
||
getChatDetails(request: GetChatDetailsRequest, metadata?: Metadata): Observable<GetChatDetailsResponse>;
|
||
|
||
/** Управление участниками группы */
|
||
|
||
joinChat(request: JoinChatRequest, metadata?: Metadata): Observable<JoinChatResponse>;
|
||
|
||
leaveChat(request: LeaveChatRequest, metadata?: Metadata): Observable<LeaveChatResponse>;
|
||
|
||
/** Админ кикает пользователя */
|
||
|
||
removeMember(request: RemoveMemberRequest, metadata?: Metadata): Observable<RemoveMemberResponse>;
|
||
|
||
/** Выключить/включить пуши для чата */
|
||
|
||
muteChat(request: MuteChatRequest, metadata?: Metadata): Observable<MuteChatResponse>;
|
||
|
||
/** Управление сообщениями (правое окно) */
|
||
|
||
getMessages(request: GetMessagesRequest, metadata?: Metadata): Observable<GetMessagesResponse>;
|
||
|
||
sendMessage(request: SendMessageRequest, metadata?: Metadata): Observable<MessageDto>;
|
||
|
||
/** Новое */
|
||
|
||
editMessage(request: EditMessageRequest, metadata?: Metadata): Observable<MessageDto>;
|
||
|
||
deleteMessage(request: DeleteMessageRequest, metadata?: Metadata): Observable<DeleteMessageResponse>;
|
||
|
||
/** Статусы */
|
||
|
||
markAsRead(request: MarkAsReadRequest, metadata?: Metadata): Observable<MarkAsReadResponse>;
|
||
|
||
checkChatMembership(
|
||
request: CheckChatMembershipRequest,
|
||
metadata?: Metadata,
|
||
): Observable<CheckChatMembershipResponse>;
|
||
}
|
||
|
||
export interface ChatServiceController {
|
||
/** Управление чатами (левая панель) */
|
||
|
||
createChat(
|
||
request: CreateChatRequest,
|
||
metadata?: Metadata,
|
||
): Promise<CreateChatResponse> | Observable<CreateChatResponse> | CreateChatResponse;
|
||
|
||
getUserChats(
|
||
request: GetUserChatsRequest,
|
||
metadata?: Metadata,
|
||
): Promise<GetUserChatsResponse> | Observable<GetUserChatsResponse> | GetUserChatsResponse;
|
||
|
||
/** Открытие инфы о группе/собеседнике */
|
||
|
||
getChatDetails(
|
||
request: GetChatDetailsRequest,
|
||
metadata?: Metadata,
|
||
): Promise<GetChatDetailsResponse> | Observable<GetChatDetailsResponse> | GetChatDetailsResponse;
|
||
|
||
/** Управление участниками группы */
|
||
|
||
joinChat(
|
||
request: JoinChatRequest,
|
||
metadata?: Metadata,
|
||
): Promise<JoinChatResponse> | Observable<JoinChatResponse> | JoinChatResponse;
|
||
|
||
leaveChat(
|
||
request: LeaveChatRequest,
|
||
metadata?: Metadata,
|
||
): Promise<LeaveChatResponse> | Observable<LeaveChatResponse> | LeaveChatResponse;
|
||
|
||
/** Админ кикает пользователя */
|
||
|
||
removeMember(
|
||
request: RemoveMemberRequest,
|
||
metadata?: Metadata,
|
||
): Promise<RemoveMemberResponse> | Observable<RemoveMemberResponse> | RemoveMemberResponse;
|
||
|
||
/** Выключить/включить пуши для чата */
|
||
|
||
muteChat(
|
||
request: MuteChatRequest,
|
||
metadata?: Metadata,
|
||
): Promise<MuteChatResponse> | Observable<MuteChatResponse> | MuteChatResponse;
|
||
|
||
/** Управление сообщениями (правое окно) */
|
||
|
||
getMessages(
|
||
request: GetMessagesRequest,
|
||
metadata?: Metadata,
|
||
): Promise<GetMessagesResponse> | Observable<GetMessagesResponse> | GetMessagesResponse;
|
||
|
||
sendMessage(
|
||
request: SendMessageRequest,
|
||
metadata?: Metadata,
|
||
): Promise<MessageDto> | Observable<MessageDto> | MessageDto;
|
||
|
||
/** Новое */
|
||
|
||
editMessage(
|
||
request: EditMessageRequest,
|
||
metadata?: Metadata,
|
||
): Promise<MessageDto> | Observable<MessageDto> | MessageDto;
|
||
|
||
deleteMessage(
|
||
request: DeleteMessageRequest,
|
||
metadata?: Metadata,
|
||
): Promise<DeleteMessageResponse> | Observable<DeleteMessageResponse> | DeleteMessageResponse;
|
||
|
||
/** Статусы */
|
||
|
||
markAsRead(
|
||
request: MarkAsReadRequest,
|
||
metadata?: Metadata,
|
||
): Promise<MarkAsReadResponse> | Observable<MarkAsReadResponse> | MarkAsReadResponse;
|
||
|
||
checkChatMembership(
|
||
request: CheckChatMembershipRequest,
|
||
metadata?: Metadata,
|
||
): Promise<CheckChatMembershipResponse> | Observable<CheckChatMembershipResponse> | CheckChatMembershipResponse;
|
||
}
|
||
|
||
export function ChatServiceControllerMethods() {
|
||
return function (constructor: Function) {
|
||
const grpcMethods: string[] = [
|
||
"createChat",
|
||
"getUserChats",
|
||
"getChatDetails",
|
||
"joinChat",
|
||
"leaveChat",
|
||
"removeMember",
|
||
"muteChat",
|
||
"getMessages",
|
||
"sendMessage",
|
||
"editMessage",
|
||
"deleteMessage",
|
||
"markAsRead",
|
||
"checkChatMembership",
|
||
];
|
||
for (const method of grpcMethods) {
|
||
const descriptor: any = Reflect.getOwnPropertyDescriptor(constructor.prototype, method);
|
||
GrpcMethod("ChatService", method)(constructor.prototype[method], method, descriptor);
|
||
}
|
||
const grpcStreamMethods: string[] = [];
|
||
for (const method of grpcStreamMethods) {
|
||
const descriptor: any = Reflect.getOwnPropertyDescriptor(constructor.prototype, method);
|
||
GrpcStreamMethod("ChatService", method)(constructor.prototype[method], method, descriptor);
|
||
}
|
||
};
|
||
}
|
||
|
||
export const CHAT_SERVICE_NAME = "ChatService";
|