Files
contracts/gen/chat/chat.ts
2026-05-08 12:36:58 +00:00

347 lines
9.2 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// 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";