tweb/src/components/wrappers/customEmoji.ts
Eduard Kuzmenko 866d1c05ef Forums
2023-01-06 23:27:29 +04:00

49 lines
1.1 KiB
TypeScript

/*
* https://github.com/morethanwords/tweb
* Copyright (C) 2019-2021 Eduard Kuzmenko
* https://github.com/morethanwords/tweb/blob/master/LICENSE
*/
import {MessageEntity} from '../../layer';
import wrapRichText from '../../lib/richTextProcessor/wrapRichText';
export default function wrapCustomEmoji({
docIds,
loadPromises,
middleware,
lazyLoadQueue,
customEmojiSize,
animationGroup
}: {
docIds: DocId[],
loadPromises?: Promise<any>[]
} & WrapSomethingOptions) {
const text = ' '.repeat(docIds.length);
const entities: MessageEntity[] = [];
docIds.forEach((docId, idx) => {
entities.push({
_: 'messageEntityCustomEmoji',
offset: idx,
length: 1,
document_id: docId
});
});
const wrapped = wrapRichText(text, {
entities,
loadPromises,
animationGroup,
customEmojiSize,
middleware,
lazyLoadQueue
});
return wrapped;
}
export function wrapCustomEmojiAwaited(options: Parameters<typeof wrapCustomEmoji>[0]) {
const loadPromises: Promise<any>[] = options.loadPromises ??= [];
const wrapped = wrapCustomEmoji(options);
return Promise.all(loadPromises).then(() => wrapped);
}