Telegram Web K with changes to work inside I2P
https://web.telegram.i2p/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
70 lines
1.8 KiB
70 lines
1.8 KiB
/* |
|
* 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<RLottiePlayer>; |
|
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<RLottiePlayer>; |
|
}); |
|
} |
|
|
|
return {container, promise: playerPromise}; |
|
}
|
|
|