35 lines
1.1 KiB
TypeScript
35 lines
1.1 KiB
TypeScript
import { Api as GramJs } from '../../lib/gramjs';
|
|
import localDb from './localDb';
|
|
import { getApiChatIdFromMtpPeer } from './apiBuilders/chats';
|
|
|
|
export function resolveMessageApiChatId(mtpMessage: GramJs.TypeMessage) {
|
|
if (!(mtpMessage instanceof GramJs.Message || mtpMessage instanceof GramJs.MessageService)) {
|
|
return undefined;
|
|
}
|
|
|
|
return getApiChatIdFromMtpPeer(mtpMessage.peerId);
|
|
}
|
|
|
|
export function addMessageToLocalDb(message: GramJs.Message | GramJs.MessageService) {
|
|
const messageFullId = `${resolveMessageApiChatId(message)}-${message.id}`;
|
|
localDb.messages[messageFullId] = message;
|
|
|
|
if (
|
|
message instanceof GramJs.Message
|
|
&& message.media instanceof GramJs.MessageMediaDocument
|
|
&& message.media.document instanceof GramJs.Document
|
|
) {
|
|
localDb.documents[String(message.media.document.id)] = message.media.document;
|
|
}
|
|
|
|
if (message instanceof GramJs.MessageService && 'photo' in message.action) {
|
|
addPhotoToLocalDb(message.action.photo);
|
|
}
|
|
}
|
|
|
|
export function addPhotoToLocalDb(photo: GramJs.TypePhoto) {
|
|
if (photo instanceof GramJs.Photo) {
|
|
localDb.photos[String(photo.id)] = photo;
|
|
}
|
|
}
|