UNPKG

analytica-frontend-lib

Version:

Repositório público dos componentes utilizados nas plataformas da Analytica Ensino

1 lines 4 kB
{"version":3,"sources":["../src/types/chat.ts"],"sourcesContent":["/**\n * Chat types for real-time messaging functionality\n */\n\n/**\n * User profile role enumerations\n * Defines all available user roles in the system with hierarchy levels\n * Matches backend PROFILE_ROLES enum\n */\nexport enum PROFILE_ROLES {\n SUPER_ADMIN = 'SUPER_ADMIN',\n GENERAL_MANAGER = 'GENERAL_MANAGER',\n REGIONAL_MANAGER = 'REGIONAL_MANAGER',\n UNIT_MANAGER = 'UNIT_MANAGER',\n TEACHER = 'TEACHER',\n STUDENT = 'STUDENT',\n}\n\n/**\n * Message types enum\n */\nexport const CHAT_MESSAGE_TYPES = {\n TEXT: 'text',\n SYSTEM: 'system',\n} as const;\n\nexport type ChatMessageType =\n (typeof CHAT_MESSAGE_TYPES)[keyof typeof CHAT_MESSAGE_TYPES];\n\n/**\n * User available for chat selection\n */\nexport interface ChatUser {\n userInstitutionId: string;\n name: string;\n photo: string | null;\n profileName: string;\n}\n\n/**\n * Available users grouped by role\n */\nexport interface AvailableUsers {\n users: ChatUser[];\n}\n\n/**\n * Chat room basic info\n */\nexport interface ChatRoom {\n id: string;\n name: string;\n classId: string;\n createdById: string;\n active: boolean;\n createdAt: Date | string;\n updatedAt: Date | string;\n}\n\n/**\n * Chat room with last message and participant count\n */\nexport interface ChatRoomWithDetails extends ChatRoom {\n lastMessage: ChatMessage | null;\n participantCount: number;\n}\n\n/**\n * Chat message\n */\nexport interface ChatMessage {\n id: string;\n senderId: string;\n senderName: string;\n senderPhoto: string | null;\n senderRole: string;\n content: string;\n messageType: ChatMessageType;\n createdAt: Date | string;\n}\n\n/**\n * Chat participant\n */\nexport interface ChatParticipant {\n userInstitutionId: string;\n name: string;\n photo: string | null;\n role: string;\n isOnline: boolean;\n}\n\n/**\n * WebSocket user info\n */\nexport interface WSUserInfo {\n userInstitutionId: string;\n name: string;\n photo: string | null;\n role: string;\n}\n\n/**\n * WebSocket message types - Client to Server\n */\nexport type WSClientMessageType = 'message' | 'leave';\n\n/**\n * WebSocket message types - Server to Client\n */\nexport type WSServerMessageType =\n | 'user_joined'\n | 'user_left'\n | 'new_message'\n | 'participants'\n | 'history'\n | 'error';\n\n/**\n * WebSocket client message\n */\nexport interface WSClientMessage {\n type: WSClientMessageType;\n payload?: {\n content?: string;\n };\n}\n\n/**\n * WebSocket server message\n */\nexport interface WSServerMessage {\n type: WSServerMessageType;\n payload: {\n user?: WSUserInfo;\n message?: ChatMessage;\n messages?: ChatMessage[];\n participants?: ChatParticipant[];\n message_text?: string;\n };\n}\n\n/**\n * Chat API client interface\n */\nexport interface ChatApiClient {\n get: <T>(url: string) => Promise<{ data: T }>;\n post: <T>(url: string, data?: unknown) => Promise<{ data: T }>;\n}\n\n/**\n * API response types\n */\nexport interface AvailableUsersResponse {\n users: ChatUser[];\n}\n\nexport interface CreateRoomResponse {\n room: ChatRoom;\n participants: Array<{\n id: string;\n roomId: string;\n userInstitutionId: string;\n isOnline: boolean;\n lastSeenAt: Date | string | null;\n joinedAt: Date | string;\n }>;\n}\n\nexport interface GetRoomsResponse {\n rooms: ChatRoomWithDetails[];\n}\n\nexport interface GetRoomDetailsResponse {\n room: ChatRoom;\n participants: Array<{\n userInstitutionId: string;\n userName: string;\n userPhoto: string | null;\n userRole: string;\n isOnline: boolean;\n lastSeenAt: Date | string | null;\n }>;\n messages: ChatMessage[];\n}\n"],"mappings":";AASO,IAAK,gBAAL,kBAAKA,mBAAL;AACL,EAAAA,eAAA,iBAAc;AACd,EAAAA,eAAA,qBAAkB;AAClB,EAAAA,eAAA,sBAAmB;AACnB,EAAAA,eAAA,kBAAe;AACf,EAAAA,eAAA,aAAU;AACV,EAAAA,eAAA,aAAU;AANA,SAAAA;AAAA,GAAA;AAYL,IAAM,qBAAqB;AAAA,EAChC,MAAM;AAAA,EACN,QAAQ;AACV;","names":["PROFILE_ROLES"]}