Browse Source

Fix playing emoji animation sound in Safari

master
Eduard Kuzmenko 3 years ago
parent
commit
1f7e1203fa
  1. 8
      src/components/wrappers.ts
  2. 10
      src/lib/appManagers/appStickersManager.ts

8
src/components/wrappers.ts

@ -1341,12 +1341,15 @@ export function wrapSticker({doc, div, middleware, lazyLoadQueue, group, play, o @@ -1341,12 +1341,15 @@ export function wrapSticker({doc, div, middleware, lazyLoadQueue, group, play, o
appStickersManager.preloadAnimatedEmojiStickerAnimation(emoji);
attachClickEvent(div, async(e) => {
cancelEvent(e);
const animation = LottieLoader.getAnimation(div);
if(animation.paused) {
const doc = appStickersManager.getAnimatedEmojiSoundDocument(emoji);
if(doc) {
const audio = document.createElement('audio');
audio.style.display = 'none';
div.parentElement.append(audio);
try {
await appDocsManager.downloadDoc(doc);
@ -1355,9 +1358,10 @@ export function wrapSticker({doc, div, middleware, lazyLoadQueue, group, play, o @@ -1355,9 +1358,10 @@ export function wrapSticker({doc, div, middleware, lazyLoadQueue, group, play, o
audio.src = cacheContext.url;
audio.play();
await onMediaLoad(audio, undefined, true);
audio.addEventListener('ended', () => {
audio.src = '';
audio.remove();
}, {once: true});
} catch(err) {
@ -1368,8 +1372,6 @@ export function wrapSticker({doc, div, middleware, lazyLoadQueue, group, play, o @@ -1368,8 +1372,6 @@ export function wrapSticker({doc, div, middleware, lazyLoadQueue, group, play, o
animation.restart();
}
cancelEvent(e);
const doc = appStickersManager.getAnimatedEmojiSticker(emoji, true);
if(!doc) {
return;

10
src/lib/appManagers/appStickersManager.ts

@ -182,15 +182,17 @@ export class AppStickersManager { @@ -182,15 +182,17 @@ export class AppStickersManager {
flags: 0,
id: sound.id,
access_hash: sound.access_hash,
attributes: [/* {
attributes: [{
_: 'documentAttributeAudio',
duration: 1,
pFlags: {}
} */],
pFlags: {
voice: true
}
}],
date: 0,
dc_id: rootScope.config.this_dc,
file_reference: bytes,
mime_type: 'audio/mp3',
mime_type: 'audio/ogg',
size: 1
// size: 101010 // test loading everytime
}, {

Loading…
Cancel
Save