/* * https://github.com/morethanwords/tweb * Copyright (C) 2019-2021 Eduard Kuzmenko * https://github.com/morethanwords/tweb/blob/master/LICENSE */ import {Middleware} from '../../helpers/middleware'; import {MyDocument} from '../../lib/appManagers/appDocsManager'; import {AppManagers} from '../../lib/appManagers/managers'; import lottieLoader, {LottieAssetName} from '../../lib/rlottie/lottieLoader'; import RLottiePlayer from '../../lib/rlottie/rlottiePlayer'; import rootScope from '../../lib/rootScope'; import wrapSticker from './sticker'; export default async function wrapLocalSticker({ emoji, width, height, assetName, middleware, managers = rootScope.managers, loop = false, autoplay = true }: { doc?: MyDocument, // url?: string, emoji?: string, assetName?: LottieAssetName, width: number, height: number, managers?: AppManagers, middleware?: Middleware, autoplay?: boolean, loop?: false }) { const container = document.createElement('div'); container.classList.add('media-sticker-wrapper'); let playerPromise: Promise; if(assetName) { playerPromise = lottieLoader.loadAnimationAsAsset({ container, loop, autoplay, width, height, noCache: true, middleware }, assetName).then((animation) => { return lottieLoader.waitForFirstFrame(animation); }); } else if(emoji) { const doc = await managers.appStickersManager.getAnimatedEmojiSticker(emoji); if(doc) playerPromise = wrapSticker({ doc, div: container, loop, play: autoplay, width, height, emoji, managers, middleware }).then((result) => { return result.render as Promise; }); } return {container, promise: playerPromise}; }