Browse Source

Stickers: only one playable group for popup

master
morethanwords 4 years ago
parent
commit
03ce499565
  1. 9
      src/components/animationIntersector.ts
  2. 8
      src/components/popupStickers.ts
  3. 2
      src/lib/logger.ts

9
src/components/animationIntersector.ts

@ -14,6 +14,7 @@ export class AnimationIntersector {
private byGroups: {[group: string]: AnimationItem[]} = {}; private byGroups: {[group: string]: AnimationItem[]} = {};
private lockedGroups: {[group: string]: true} = {}; private lockedGroups: {[group: string]: true} = {};
private onlyOnePlayableGroup: string = '';
private intersectionLockedGroups: {[group: string]: true} = {}; private intersectionLockedGroups: {[group: string]: true} = {};
@ -101,7 +102,7 @@ export class AnimationIntersector {
if(group && !this.byGroups[group]) { if(group && !this.byGroups[group]) {
//console.warn('no animation group:', group); //console.warn('no animation group:', group);
this.byGroups[group] = []; this.byGroups[group] = [];
//return; return;
} }
for(const group of groups) { for(const group of groups) {
@ -126,12 +127,16 @@ export class AnimationIntersector {
//console.warn('pause animation:', animation); //console.warn('pause animation:', animation);
animation.pause(); animation.pause();
} }
} else if(animation.paused && this.visible.has(player) && animation.autoplay) { } else if(animation.paused && this.visible.has(player) && animation.autoplay && (!this.onlyOnePlayableGroup || this.onlyOnePlayableGroup == group)) {
//console.warn('play animation:', animation); //console.warn('play animation:', animation);
animation.play(); animation.play();
} }
} }
public setOnlyOnePlayableGroup(group: string) {
this.onlyOnePlayableGroup = group;
}
public lockGroup(group: string) { public lockGroup(group: string) {
this.lockedGroups[group] = true; this.lockedGroups[group] = true;
} }

8
src/components/popupStickers.ts

@ -10,6 +10,8 @@ import { findUpClassName } from "../lib/utils";
import appImManager from "../lib/appManagers/appImManager"; import appImManager from "../lib/appManagers/appImManager";
import { StickerSet } from "../layer"; import { StickerSet } from "../layer";
const ANIMATION_GROUP = 'STICKERS-POPUP';
export default class PopupStickers extends PopupElement { export default class PopupStickers extends PopupElement {
private stickersFooter: HTMLElement; private stickersFooter: HTMLElement;
private stickersDiv: HTMLElement; private stickersDiv: HTMLElement;
@ -30,6 +32,7 @@ export default class PopupStickers extends PopupElement {
this.header.append(this.h6); this.header.append(this.h6);
this.onClose = () => { this.onClose = () => {
animationIntersector.setOnlyOnePlayableGroup('');
animationIntersector.checkAnimations(false); animationIntersector.checkAnimations(false);
this.stickersFooter.removeEventListener('click', this.onFooterClick); this.stickersFooter.removeEventListener('click', this.onFooterClick);
this.stickersDiv.removeEventListener('click', this.onStickersClick); this.stickersDiv.removeEventListener('click', this.onStickersClick);
@ -37,7 +40,7 @@ export default class PopupStickers extends PopupElement {
}; };
this.onCloseAfterTimeout = () => { this.onCloseAfterTimeout = () => {
animationIntersector.checkAnimations(undefined, 'STICKERS-POPUP'); animationIntersector.checkAnimations(undefined, ANIMATION_GROUP);
}; };
const onOverlayClick = (e: MouseEvent) => { const onOverlayClick = (e: MouseEvent) => {
@ -104,6 +107,7 @@ export default class PopupStickers extends PopupElement {
this.set = set.set; this.set = set.set;
animationIntersector.checkAnimations(true); animationIntersector.checkAnimations(true);
animationIntersector.setOnlyOnePlayableGroup(ANIMATION_GROUP);
this.h6.innerHTML = RichTextProcessor.wrapEmojiText(set.set.title); this.h6.innerHTML = RichTextProcessor.wrapEmojiText(set.set.title);
!set.set.installed_date ? this.stickersFooter.classList.add('add') : this.stickersFooter.classList.remove('add'); !set.set.installed_date ? this.stickersFooter.classList.add('add') : this.stickersFooter.classList.remove('add');
@ -130,7 +134,7 @@ export default class PopupStickers extends PopupElement {
doc, doc,
div, div,
lazyLoadQueue, lazyLoadQueue,
group: 'STICKERS-POPUP', group: ANIMATION_GROUP,
play: true, play: true,
loop: true, loop: true,
width: 80, width: 80,

2
src/lib/logger.ts

@ -13,7 +13,7 @@ function dT() {
} }
export function logger(prefix: string, level = LogLevels.log | LogLevels.warn | LogLevels.error) { export function logger(prefix: string, level = LogLevels.log | LogLevels.warn | LogLevels.error) {
if(process.env.NODE_ENV == 'development'/* || true */) { if(process.env.NODE_ENV != 'development'/* || true */) {
level = LogLevels.error; level = LogLevels.error;
} }

Loading…
Cancel
Save