From 47df8c69e96df74d8c70044ddc0a195c2d1cf17b Mon Sep 17 00:00:00 2001 From: Eduard Kuzmenko Date: Fri, 11 Jun 2021 15:52:53 +0300 Subject: [PATCH] Delete rootScope .on alias --- src/components/animationIntersector.ts | 4 +- src/components/appMediaPlaybackController.ts | 4 +- src/components/audio.ts | 2 +- src/components/avatar.ts | 4 +- src/components/chat/chat.ts | 6 +- src/components/chat/replies.ts | 2 +- src/components/connectionStatus.ts | 6 +- src/components/emoticonsDropdown/index.ts | 2 +- .../emoticonsDropdown/tabs/stickers.ts | 4 +- src/components/peerTitle.ts | 2 +- src/components/poll.ts | 4 +- src/components/sidebarLeft/index.ts | 4 +- src/components/sidebarLeft/tabs/background.ts | 2 +- .../sidebarLeft/tabs/privacyAndSecurity.ts | 2 +- .../sidebarRight/tabs/sharedMedia.ts | 8 +- src/helpers/eventListenerBase.ts | 6 +- src/hooks/useHeavyAnimationCheck.ts | 4 +- src/index.ts | 4 +- src/lib/appManagers/apiUpdatesManager.ts | 13 ++- src/lib/appManagers/appChatsManager.ts | 18 +-- src/lib/appManagers/appDialogsManager.ts | 26 ++--- src/lib/appManagers/appDownloadManager.ts | 2 +- src/lib/appManagers/appDraftsManager.ts | 2 +- src/lib/appManagers/appImManager.ts | 24 ++-- src/lib/appManagers/appMessagesManager.ts | 106 +++++++++--------- .../appManagers/appNotificationsManager.ts | 8 +- src/lib/appManagers/appPeersManager.ts | 2 +- src/lib/appManagers/appPollsManager.ts | 2 +- src/lib/appManagers/appPrivacyManager.ts | 2 +- src/lib/appManagers/appProfileManager.ts | 18 +-- src/lib/appManagers/appStateManager.ts | 4 +- src/lib/appManagers/appStickersManager.ts | 6 +- src/lib/appManagers/appUsersManager.ts | 22 ++-- src/lib/appManagers/appWebPagesManager.ts | 2 +- src/lib/langPack.ts | 2 +- src/lib/mtproto/apiManager.ts | 2 +- src/lib/mtproto/mtprotoworker.ts | 6 +- src/lib/rootScope.ts | 37 ++---- src/lib/storages/dialogs.ts | 6 +- src/lib/storages/filters.ts | 6 +- src/pages/pageIm.ts | 2 +- 41 files changed, 185 insertions(+), 203 deletions(-) diff --git a/src/components/animationIntersector.ts b/src/components/animationIntersector.ts index 5405d76a..d3f5fedb 100644 --- a/src/components/animationIntersector.ts +++ b/src/components/animationIntersector.ts @@ -60,14 +60,14 @@ export class AnimationIntersector { } }); - rootScope.on('audio_play', ({doc}) => { + rootScope.addEventListener('audio_play', ({doc}) => { if(doc.type === 'round') { this.videosLocked = true; this.checkAnimations(); } }); - rootScope.on('audio_pause', () => { + rootScope.addEventListener('audio_pause', () => { if(this.videosLocked) { this.videosLocked = false; this.checkAnimations(); diff --git a/src/components/appMediaPlaybackController.ts b/src/components/appMediaPlaybackController.ts index 5563b23c..66a93943 100644 --- a/src/components/appMediaPlaybackController.ts +++ b/src/components/appMediaPlaybackController.ts @@ -88,7 +88,7 @@ class AppMediaPlaybackController { // audio_pause не успеет сработать без таймаута setTimeout(() => { - rootScope.broadcast('audio_play', {peerId, doc, mid}); + rootScope.dispatchEvent('audio_play', {peerId, doc, mid}); }, 0); }); @@ -192,7 +192,7 @@ class AppMediaPlaybackController { return; } */ - rootScope.broadcast('audio_pause'); + rootScope.dispatchEvent('audio_pause'); }; onEnded = (e?: Event) => { diff --git a/src/components/audio.ts b/src/components/audio.ts index 33efe143..f3c041c8 100644 --- a/src/components/audio.ts +++ b/src/components/audio.ts @@ -21,7 +21,7 @@ import { formatDateAccordingToToday } from "../helpers/date"; import { cancelEvent } from "../helpers/dom/cancelEvent"; import { attachClickEvent, detachClickEvent } from "../helpers/dom/clickEvent"; -rootScope.on('messages_media_read', e => { +rootScope.addEventListener('messages_media_read', e => { const {mids, peerId} = e; mids.forEach(mid => { diff --git a/src/components/avatar.ts b/src/components/avatar.ts index dba60847..642ee807 100644 --- a/src/components/avatar.ts +++ b/src/components/avatar.ts @@ -23,8 +23,8 @@ const onAvatarUpdate = (peerId: number) => { }); }; -rootScope.on('avatar_update', onAvatarUpdate); -rootScope.on('peer_title_edit', onAvatarUpdate); +rootScope.addEventListener('avatar_update', onAvatarUpdate); +rootScope.addEventListener('peer_title_edit', onAvatarUpdate); export async function openAvatarViewer(target: HTMLElement, peerId: number, middleware: () => boolean, message?: any, prevTargets?: {element: HTMLElement, item: string | Message.messageService}[], nextTargets?: typeof prevTargets) { let photo = await appProfileManager.getFullPhoto(peerId); diff --git a/src/components/chat/chat.ts b/src/components/chat/chat.ts index a8f98c12..a1eb98fd 100644 --- a/src/components/chat/chat.ts +++ b/src/components/chat/chat.ts @@ -253,7 +253,7 @@ export default class Chat extends EventListenerBase<{ const samePeer = this.peerId === peerId; if(!samePeer) { - rootScope.broadcast('peer_changing', this); + rootScope.dispatchEvent('peer_changing', this); this.peerId = peerId; } else if(this.setPeerPromise) { return; @@ -267,7 +267,7 @@ export default class Chat extends EventListenerBase<{ this.cleanup(true); this.topbar.setPeer(peerId); this.bubbles.setPeer(peerId); - rootScope.broadcast('peer_changed', peerId); + rootScope.dispatchEvent('peer_changed', peerId); return; } @@ -353,7 +353,7 @@ export default class Chat extends EventListenerBase<{ this.log.setPrefix('CHAT-' + peerId + '-' + this.type); - rootScope.broadcast('peer_changed', peerId); + rootScope.dispatchEvent('peer_changed', peerId); this.wasAlreadyUsed = true; } diff --git a/src/components/chat/replies.ts b/src/components/chat/replies.ts index 250c31cf..46f04ab6 100644 --- a/src/components/chat/replies.ts +++ b/src/components/chat/replies.ts @@ -15,7 +15,7 @@ import AvatarElement from "../avatar"; const TAG_NAME = 'replies-element'; -rootScope.on('replies_updated', (e) => { +rootScope.addEventListener('replies_updated', (e) => { const message = e; (Array.from(document.querySelectorAll(TAG_NAME + `[data-post-key="${message.peerId}_${message.mid}"]`)) as RepliesElement[]).forEach(element => { element.message = message; diff --git a/src/components/connectionStatus.ts b/src/components/connectionStatus.ts index 3d381623..f7fae52c 100644 --- a/src/components/connectionStatus.ts +++ b/src/components/connectionStatus.ts @@ -47,14 +47,14 @@ export default class ConnectionStatusComponent { chatsContainer.prepend(this.statusContainer); - rootScope.on('connection_status_change', (e) => { + rootScope.addEventListener('connection_status_change', (e) => { const status = e; console.log(status); this.setConnectionStatus(); }); - rootScope.on('state_synchronizing', (e) => { + rootScope.addEventListener('state_synchronizing', (e) => { const channelId = e; if(!channelId) { this.updating = true; @@ -63,7 +63,7 @@ export default class ConnectionStatusComponent { } }); - rootScope.on('state_synchronized', (e) => { + rootScope.addEventListener('state_synchronized', (e) => { const channelId = e; DEBUG && this.log('state_synchronized', channelId); if(!channelId) { diff --git a/src/components/emoticonsDropdown/index.ts b/src/components/emoticonsDropdown/index.ts index 63dc6b75..d6ab7acf 100644 --- a/src/components/emoticonsDropdown/index.ts +++ b/src/components/emoticonsDropdown/index.ts @@ -183,7 +183,7 @@ export class EmoticonsDropdown { this.tabs[0].init(); // onTransitionEnd не вызовется, т.к. это первая открытая вкладка } - rootScope.on('peer_changed', this.checkRights); + rootScope.addEventListener('peer_changed', this.checkRights); this.checkRights(); if(!isTouchSupported) { diff --git a/src/components/emoticonsDropdown/tabs/stickers.ts b/src/components/emoticonsDropdown/tabs/stickers.ts index 142dfd56..a7cd7b69 100644 --- a/src/components/emoticonsDropdown/tabs/stickers.ts +++ b/src/components/emoticonsDropdown/tabs/stickers.ts @@ -290,7 +290,7 @@ export default class StickersTab implements EmoticonsTab { } }); */ - rootScope.on('stickers_installed', (e) => { + rootScope.addEventListener('stickers_installed', (e) => { const set: StickerSet.stickerSet = e; if(!this.stickerSets[set.id] && this.mounted) { @@ -298,7 +298,7 @@ export default class StickersTab implements EmoticonsTab { } }); - rootScope.on('stickers_deleted', (e) => { + rootScope.addEventListener('stickers_deleted', (e) => { const set: StickerSet.stickerSet = e; if(this.stickerSets[set.id] && this.mounted) { diff --git a/src/components/peerTitle.ts b/src/components/peerTitle.ts index 8a94bcad..5af60872 100644 --- a/src/components/peerTitle.ts +++ b/src/components/peerTitle.ts @@ -22,7 +22,7 @@ const weakMap: WeakMap = new WeakMap(); MOUNT_CLASS_TO.peerTitleWeakMap = weakMap; -rootScope.on('peer_title_edit', (peerId) => { +rootScope.addEventListener('peer_title_edit', (peerId) => { const elements = Array.from(document.querySelectorAll(`.peer-title[data-peer-id="${peerId}"]`)) as HTMLElement[]; elements.forEach(element => { const peerTitle = weakMap.get(element); diff --git a/src/components/poll.ts b/src/components/poll.ts index c6d281ec..5c6173e2 100644 --- a/src/components/poll.ts +++ b/src/components/poll.ts @@ -91,7 +91,7 @@ rootScope.on('poll_update', (e) => { } }); */ -rootScope.on('poll_update', (e) => { +rootScope.addEventListener('poll_update', (e) => { const {poll, results} = e as {poll: Poll, results: PollResults}; const pollElements = Array.from(document.querySelectorAll(`poll-element[poll-id="${poll.id}"]`)) as PollElement[]; @@ -102,7 +102,7 @@ rootScope.on('poll_update', (e) => { }); }); -rootScope.on('peer_changed', () => { +rootScope.addEventListener('peer_changed', () => { if(prevQuizHint) { hideQuizHint(prevQuizHint, prevQuizHintOnHide, prevQuizHintTimeout); } diff --git a/src/components/sidebarLeft/index.ts b/src/components/sidebarLeft/index.ts index 315d8a0f..60968da8 100644 --- a/src/components/sidebarLeft/index.ts +++ b/src/components/sidebarLeft/index.ts @@ -108,7 +108,7 @@ export class AppSidebarLeft extends SidebarSlider { appImManager.applyCurrentTheme(); }); - rootScope.on('theme_change', () => { + rootScope.addEventListener('theme_change', () => { themeCheckboxField.setValueSilently(rootScope.getTheme().name === 'night'); }); @@ -238,7 +238,7 @@ export class AppSidebarLeft extends SidebarSlider { btnArchive.element.append(this.archivedCount); - rootScope.on('dialogs_archived_unread', (e) => { + rootScope.addEventListener('dialogs_archived_unread', (e) => { this.archivedCount.innerText = '' + formatNumber(e.count, 1); this.archivedCount.classList.toggle('hide', !e.count); }); diff --git a/src/components/sidebarLeft/tabs/background.ts b/src/components/sidebarLeft/tabs/background.ts index 3be8f696..9fff8ad9 100644 --- a/src/components/sidebarLeft/tabs/background.ts +++ b/src/components/sidebarLeft/tabs/background.ts @@ -82,7 +82,7 @@ export default class AppBackgroundTab extends SliderSuperTab { container.append(uploadButton, colorButton, resetButton, blurCheckboxField.label); } - rootScope.on('background_change', this.setActive); + rootScope.addEventListener('background_change', this.setActive); apiManager.invokeApiHashable('account.getWallPapers').then((accountWallpapers) => { const wallpapers = (accountWallpapers as AccountWallPapers.accountWallPapers).wallpapers as WallPaper.wallPaper[]; diff --git a/src/components/sidebarLeft/tabs/privacyAndSecurity.ts b/src/components/sidebarLeft/tabs/privacyAndSecurity.ts index 70bed3b3..5a387bd4 100644 --- a/src/components/sidebarLeft/tabs/privacyAndSecurity.ts +++ b/src/components/sidebarLeft/tabs/privacyAndSecurity.ts @@ -220,7 +220,7 @@ export default class AppPrivacyAndSecurityTab extends SliderSuperTab { updatePrivacyRow(key as keyof typeof rowsByKeys); } - rootScope.on('privacy_update', (update) => { + rootScope.addEventListener('privacy_update', (update) => { updatePrivacyRow(convertKeyToInputKey(update.key._) as any); }); } diff --git a/src/components/sidebarRight/tabs/sharedMedia.ts b/src/components/sidebarRight/tabs/sharedMedia.ts index 9511f864..0adf3e3e 100644 --- a/src/components/sidebarRight/tabs/sharedMedia.ts +++ b/src/components/sidebarRight/tabs/sharedMedia.ts @@ -556,14 +556,14 @@ class PeerProfile { appMessagesManager.mutePeer(this.peerId); }); - rootScope.on('dialog_notify_settings', (dialog) => { + rootScope.addEventListener('dialog_notify_settings', (dialog) => { if(this.peerId === dialog.peerId) { const muted = appNotificationsManager.isPeerLocalMuted(this.peerId, false); this.notifications.checkboxField.checked = !muted; } }); - rootScope.on('peer_typings', (e) => { + rootScope.addEventListener('peer_typings', (e) => { const {peerId} = e; if(this.peerId === peerId) { @@ -571,13 +571,13 @@ class PeerProfile { } }); - rootScope.on('peer_bio_edit', (peerId) => { + rootScope.addEventListener('peer_bio_edit', (peerId) => { if(peerId === this.peerId) { this.setBio(true); } }); - rootScope.on('user_update', (e) => { + rootScope.addEventListener('user_update', (e) => { const userId = e; if(this.peerId === userId) { diff --git a/src/helpers/eventListenerBase.ts b/src/helpers/eventListenerBase.ts index cb3f82ae..b09f770e 100644 --- a/src/helpers/eventListenerBase.ts +++ b/src/helpers/eventListenerBase.ts @@ -73,7 +73,7 @@ export default class EventListenerBase(name: T, callback: Listeners[T], once?: boolean) { if(this.listenerResults.hasOwnProperty(name)) { callback(...this.listenerResults[name]); @@ -94,7 +94,7 @@ export default class EventListenerBase(name: T, callback: Listeners[T]) { if(this.listeners[name]) { this.listeners[name].findAndSplice(l => l.callback === callback); } @@ -102,7 +102,7 @@ export default class EventListenerBase) { + public dispatchEvent(name: T, ...args: ArgumentTypes) { if(this.reuseResults) { this.listenerResults[name] = args; } diff --git a/src/hooks/useHeavyAnimationCheck.ts b/src/hooks/useHeavyAnimationCheck.ts index bc25bf4f..9a595b6b 100644 --- a/src/hooks/useHeavyAnimationCheck.ts +++ b/src/hooks/useHeavyAnimationCheck.ts @@ -27,7 +27,7 @@ const log = console.log.bind(console.log, '[HEAVY-ANIMATION]:'); export function dispatchHeavyAnimationEvent(promise: Promise, timeout?: number) { if(!isAnimating) { heavyAnimationPromise = deferredPromise(); - rootScope.broadcast(ANIMATION_START_EVENT); + rootScope.dispatchEvent(ANIMATION_START_EVENT); isAnimating = true; DEBUG && log('start'); } @@ -64,7 +64,7 @@ function onHeavyAnimationEnd() { isAnimating = false; promisesInQueue = 0; - rootScope.broadcast(ANIMATION_END_EVENT); + rootScope.dispatchEvent(ANIMATION_END_EVENT); heavyAnimationPromise.resolve(); DEBUG && log('end'); diff --git a/src/index.ts b/src/index.ts index 7c89eaef..8fb2f1a0 100644 --- a/src/index.ts +++ b/src/index.ts @@ -128,7 +128,7 @@ console.timeEnd('get storage1'); */ }; let tabId: number; - rootScope.default.on('im_tab_change', (id) => { + rootScope.default.addEventListener('im_tab_change', (id) => { const wasTabId = tabId !== undefined; tabId = id; @@ -137,7 +137,7 @@ console.timeEnd('get storage1'); */ } }); - rootScope.default.on('overlay_toggle', () => { + rootScope.default.addEventListener('overlay_toggle', () => { toggleResizeMode(); }); diff --git a/src/lib/appManagers/apiUpdatesManager.ts b/src/lib/appManagers/apiUpdatesManager.ts index bd19ce77..13b57796 100644 --- a/src/lib/appManagers/apiUpdatesManager.ts +++ b/src/lib/appManagers/apiUpdatesManager.ts @@ -247,6 +247,7 @@ export class ApiUpdatesManager { const promise = apiManager.invokeApi('updates.getDifference', { pts: updatesState.pts, + // pts_total_limit: 1200, date: updatesState.date, qts: -1 }, { @@ -263,7 +264,7 @@ export class ApiUpdatesManager { // ! SORRY I'M SORRY I'M SORRY if(first) { - rootScope.broadcast('state_synchronizing'); + rootScope.dispatchEvent('state_synchronizing'); } if(differenceResult._ !== 'updates.differenceTooLong') { @@ -303,6 +304,8 @@ export class ApiUpdatesManager { updatesState.pts = differenceResult.pts; delete updatesState.seq; delete updatesState.date; + + rootScope.dispatchEvent('state_cleared'); } // this.log('apply diff', updatesState.seq, updatesState.pts) @@ -395,11 +398,11 @@ export class ApiUpdatesManager { private justAName(state: UpdatesState, promise: UpdatesState['syncLoading'], channelId?: number) { state.syncLoading = promise; - rootScope.broadcast('state_synchronizing', channelId); + rootScope.dispatchEvent('state_synchronizing', channelId); promise.then(() => { state.syncLoading = null; - rootScope.broadcast('state_synchronized', channelId); + rootScope.dispatchEvent('state_synchronized', channelId); }, () => { state.syncLoading = null; }); @@ -654,9 +657,9 @@ export class ApiUpdatesManager { apiManager.setUpdatesProcessor(this.processUpdateMessage); - this.updatesState.syncLoading.then(() => { + // this.updatesState.syncLoading.then(() => { this.setProxy(); - }); + // }); }); } } diff --git a/src/lib/appManagers/appChatsManager.ts b/src/lib/appManagers/appChatsManager.ts index e1a8a76f..7fb50841 100644 --- a/src/lib/appManagers/appChatsManager.ts +++ b/src/lib/appManagers/appChatsManager.ts @@ -61,7 +61,7 @@ export class AppChatsManager { const chat: Chat.chat = this.chats[chatId]; if(chat) { chat.default_banned_rights = update.default_banned_rights; - rootScope.broadcast('chat_update', chatId); + rootScope.dispatchEvent('chat_update', chatId); } }, @@ -122,7 +122,7 @@ export class AppChatsManager { typings.splice(idx, 1); } - rootScope.broadcast('peer_typings', {peerId, typings}); + rootScope.dispatchEvent('peer_typings', {peerId, typings}); if(!typings.length) { delete this.typingsInPeer[peerId]; @@ -166,7 +166,7 @@ export class AppChatsManager { appUsersManager.forceUserOnline(fromId); typing.timeout = window.setTimeout(cancelAction, 6000); - rootScope.broadcast('peer_typings', {peerId, typings}); + rootScope.dispatchEvent('peer_typings', {peerId, typings}); } }; @@ -230,15 +230,15 @@ export class AppChatsManager { } safeReplaceObject(oldChat, chat); - rootScope.broadcast('chat_update', chat.id); + rootScope.dispatchEvent('chat_update', chat.id); } if(changedPhoto) { - rootScope.broadcast('avatar_update', -chat.id); + rootScope.dispatchEvent('avatar_update', -chat.id); } if(changedTitle) { - rootScope.broadcast('peer_title_edit', -chat.id); + rootScope.dispatchEvent('peer_title_edit', -chat.id); } if(appStateManager.isPeerNeeded(-chat.id)) { @@ -546,7 +546,7 @@ export class AppChatsManager { apiUpdatesManager.processUpdateMessage(updates); const channelId = updates.chats[0].id; - rootScope.broadcast('history_focus', {peerId: -channelId}); + rootScope.dispatchEvent('history_focus', {peerId: -channelId}); return channelId; }); @@ -572,7 +572,7 @@ export class AppChatsManager { apiUpdatesManager.processUpdateMessage(updates); const chatId = (updates as any as Updates.updates).chats[0].id; - rootScope.broadcast('history_focus', {peerId: -chatId}); + rootScope.dispatchEvent('history_focus', {peerId: -chatId}); return chatId; }); @@ -758,7 +758,7 @@ export class AppChatsManager { about }).then(bool => { //apiUpdatesManager.processUpdateMessage(updates); - rootScope.broadcast('peer_bio_edit', -id); + rootScope.dispatchEvent('peer_bio_edit', -id); }); } diff --git a/src/lib/appManagers/appDialogsManager.ts b/src/lib/appManagers/appDialogsManager.ts index d0c2e090..72ee5629 100644 --- a/src/lib/appManagers/appDialogsManager.ts +++ b/src/lib/appManagers/appDialogsManager.ts @@ -162,7 +162,7 @@ export class AppDialogsManager { (window as any).addElement = add; } */ - rootScope.on('user_update', (userId) => { + rootScope.addEventListener('user_update', (userId) => { //console.log('updating user:', user, dialog); const dom = this.getDialogDom(userId); @@ -182,7 +182,7 @@ export class AppDialogsManager { this.setFiltersUnreadCount(); }); */ - rootScope.on('dialog_flush', (e) => { + rootScope.addEventListener('dialog_flush', (e) => { const peerId: number = e.peerId; const dialog = appMessagesManager.getDialogOnly(peerId); if(dialog) { @@ -192,7 +192,7 @@ export class AppDialogsManager { } }); - rootScope.on('dialogs_multiupdate', (e) => { + rootScope.addEventListener('dialogs_multiupdate', (e) => { const dialogs = e; for(const id in dialogs) { @@ -204,14 +204,14 @@ export class AppDialogsManager { this.setFiltersUnreadCount(); }); - rootScope.on('dialog_drop', (e) => { + rootScope.addEventListener('dialog_drop', (e) => { const {peerId} = e; this.deleteDialog(peerId); this.setFiltersUnreadCount(); }); - rootScope.on('dialog_unread', (e) => { + rootScope.addEventListener('dialog_unread', (e) => { const info = e; const dialog = appMessagesManager.getDialogOnly(info.peerId); @@ -222,18 +222,18 @@ export class AppDialogsManager { } }); - rootScope.on('dialog_notify_settings', (dialog) => { + rootScope.addEventListener('dialog_notify_settings', (dialog) => { this.setUnreadMessages(dialog); // возможно это не нужно, но нужно менять is-muted }); - rootScope.on('dialog_draft', (e) => { + rootScope.addEventListener('dialog_draft', (e) => { const dialog = appMessagesManager.getDialogOnly(e.peerId); if(dialog) { this.updateDialog(dialog); } }); - rootScope.on('peer_changed', (e) => { + rootScope.addEventListener('peer_changed', (e) => { const peerId = e; //const perf = performance.now(); @@ -252,7 +252,7 @@ export class AppDialogsManager { //this.log('peer_changed total time:', performance.now() - perf); }); - rootScope.on('filter_update', (e) => { + rootScope.addEventListener('filter_update', (e) => { const filter: DialogFilter = e; if(!this.filtersRendered[filter.id]) { this.addFilter(filter); @@ -272,7 +272,7 @@ export class AppDialogsManager { elements.title.innerHTML = RichTextProcessor.wrapEmojiText(filter.title); }); - rootScope.on('filter_delete', (e) => { + rootScope.addEventListener('filter_delete', (e) => { const filter: DialogFilter = e; const elements = this.filtersRendered[filter.id]; if(!elements) return; @@ -293,7 +293,7 @@ export class AppDialogsManager { } }); - rootScope.on('filter_order', (e) => { + rootScope.addEventListener('filter_order', (e) => { const order = e; const containerToAppend = this.folders.menu as HTMLElement; @@ -311,7 +311,7 @@ export class AppDialogsManager { } */ }); - rootScope.on('peer_typings', (e) => { + rootScope.addEventListener('peer_typings', (e) => { const {peerId, typings} = e; const dialog = appMessagesManager.getDialogOnly(peerId); @@ -1128,7 +1128,7 @@ export class AppDialogsManager { this.accumulateArchivedTimeout = 0; const dialogs = appMessagesManager.dialogsStorage.getFolder(1); const sum = dialogs.reduce((acc, dialog) => acc + dialog.unread_count, 0); - rootScope.broadcast('dialogs_archived_unread', {count: sum}); + rootScope.dispatchEvent('dialogs_archived_unread', {count: sum}); }, 0); } diff --git a/src/lib/appManagers/appDownloadManager.ts b/src/lib/appManagers/appDownloadManager.ts index 38afeff2..69648226 100644 --- a/src/lib/appManagers/appDownloadManager.ts +++ b/src/lib/appManagers/appDownloadManager.ts @@ -59,7 +59,7 @@ export class AppDownloadManager { }; constructor() { - rootScope.on('download_progress', (e) => { + rootScope.addEventListener('download_progress', (e) => { const details = e as {done: number, fileName: string, total: number, offset: number}; this.progress[details.fileName] = details; diff --git a/src/lib/appManagers/appDraftsManager.ts b/src/lib/appManagers/appDraftsManager.ts index 8aa07d74..759f844c 100644 --- a/src/lib/appManagers/appDraftsManager.ts +++ b/src/lib/appManagers/appDraftsManager.ts @@ -102,7 +102,7 @@ export class AppDraftsManager { if(options.notify) { // console.warn(dT(), 'save draft', peerId, apiDraft, options) - rootScope.broadcast('draft_updated', { + rootScope.dispatchEvent('draft_updated', { peerId, threadId, draft diff --git a/src/lib/appManagers/appImManager.ts b/src/lib/appManagers/appImManager.ts index 24c2267c..095db992 100644 --- a/src/lib/appManagers/appImManager.ts +++ b/src/lib/appManagers/appImManager.ts @@ -114,7 +114,7 @@ export class AppImManager { this.offline = rootScope.idle.isIDLE = true; this.updateStatus(); clearInterval(this.updateStatusInterval); - rootScope.broadcast('idle', rootScope.idle.isIDLE); + rootScope.dispatchEvent('idle', rootScope.idle.isIDLE); window.addEventListener('focus', () => { this.offline = rootScope.idle.isIDLE = false; @@ -124,7 +124,7 @@ export class AppImManager { // в обратном порядке animationIntersector.checkAnimations(false); - rootScope.broadcast('idle', rootScope.idle.isIDLE); + rootScope.dispatchEvent('idle', rootScope.idle.isIDLE); }, {once: true}); }); @@ -134,7 +134,7 @@ export class AppImManager { this.updateStatus(); this.offline = rootScope.idle.isIDLE = false; - rootScope.broadcast('idle', rootScope.idle.isIDLE); + rootScope.dispatchEvent('idle', rootScope.idle.isIDLE); }, {once: true, passive: true}); this.chatsContainer = document.createElement('div'); @@ -150,7 +150,7 @@ export class AppImManager { //window.addEventListener('hashchange', this.onHashChange); this.setSettings(); - rootScope.on('settings_updated', this.setSettings); + rootScope.addEventListener('settings_updated', this.setSettings); useHeavyAnimationCheck(() => { animationIntersector.setOnlyOnePlayableGroup('lock'); @@ -170,20 +170,20 @@ export class AppImManager { } }); - rootScope.on('history_focus', (e) => { + rootScope.addEventListener('history_focus', (e) => { const {peerId, mid} = e; this.setInnerPeer(peerId, mid); }); - rootScope.on('peer_changing', (chat) => { + rootScope.addEventListener('peer_changing', (chat) => { this.saveChatPosition(chat); }); - rootScope.on('theme_change', () => { + rootScope.addEventListener('theme_change', () => { this.applyCurrentTheme(); }); - rootScope.on('instance_deactivated', () => { + rootScope.addEventListener('instance_deactivated', () => { const popup = new PopupElement('popup-instance-deactivated', undefined, {overlayClosable: true}); const c = document.createElement('div'); c.classList.add('instance-deactivated-container'); @@ -368,7 +368,7 @@ export class AppImManager { const promises = this.chats.map(chat => chat.setBackground(url)); return promises[promises.length - 1].then(() => { if(broadcastEvent) { - rootScope.broadcast('background_change'); + rootScope.dispatchEvent('background_change'); } }); } @@ -789,7 +789,7 @@ export class AppImManager { } } - rootScope.broadcast('im_tab_change', id); + rootScope.dispatchEvent('im_tab_change', id); //this._selectTab(id, mediaSizes.isMobile); //document.body.classList.toggle(RIGHT_COLUMN_ACTIVE_CLASSNAME, id === 2); @@ -836,7 +836,7 @@ export class AppImManager { if(fromIndex >= this.chats.length) return; if(this.chats.length > 1 && justReturn) { - rootScope.broadcast('peer_changing', this.chat); + rootScope.dispatchEvent('peer_changing', this.chat); } if(!spliced) { @@ -858,7 +858,7 @@ export class AppImManager { this.chatsSelectTab(this.chat.container, animate); if(justReturn) { - rootScope.broadcast('peer_changed', this.chat.peerId); + rootScope.dispatchEvent('peer_changed', this.chat.peerId); const searchTab = appSidebarRight.getTab(AppPrivateSearchTab); if(searchTab) { diff --git a/src/lib/appManagers/appMessagesManager.ts b/src/lib/appManagers/appMessagesManager.ts index 40be0b33..98c24c35 100644 --- a/src/lib/appManagers/appMessagesManager.ts +++ b/src/lib/appManagers/appMessagesManager.ts @@ -242,7 +242,7 @@ export class AppMessagesManager { }); // ! Invalidate notify settings, can optimize though - rootScope.on('notify_peer_type_settings', ({key, settings}) => { + rootScope.addEventListener('notify_peer_type_settings', ({key, settings}) => { this.getConversationsAll().then(dialogs => { let filterFunc: (dialog: Dialog) => boolean; if(key === 'notifyUsers') filterFunc = (dialog) => dialog.peerId > 0; @@ -252,12 +252,12 @@ export class AppMessagesManager { dialogs .filter(filterFunc) .forEach(dialog => { - rootScope.broadcast('dialog_notify_settings', dialog); + rootScope.dispatchEvent('dialog_notify_settings', dialog); }); }); }); - rootScope.on('webpage_updated', (e) => { + rootScope.addEventListener('webpage_updated', (e) => { const eventData = e; eventData.msgs.forEach((mid) => { const message = this.getMessageById(mid) as Message.message; @@ -269,7 +269,7 @@ export class AppMessagesManager { const peerId = this.getMessagePeer(message); const storage = this.getMessagesStorage(peerId); - rootScope.broadcast('message_edit', { + rootScope.dispatchEvent('message_edit', { storage, peerId, mid @@ -277,7 +277,7 @@ export class AppMessagesManager { }); }); - rootScope.on('draft_updated', (e) => { + rootScope.addEventListener('draft_updated', (e) => { const {peerId, threadId, draft} = e; if(threadId) return; @@ -288,7 +288,7 @@ export class AppMessagesManager { this.dialogsStorage.generateIndexForDialog(dialog); this.dialogsStorage.pushDialog(dialog); - rootScope.broadcast('dialog_draft', { + rootScope.dispatchEvent('dialog_draft', { peerId, draft, index: dialog.index @@ -454,7 +454,7 @@ export class AppMessagesManager { } else { delete message.error; } - rootScope.broadcast('messages_pending'); + rootScope.dispatchEvent('messages_pending'); }; message.send = () => { @@ -808,7 +808,7 @@ export class AppMessagesManager { delete message.error; } - rootScope.broadcast('messages_pending'); + rootScope.dispatchEvent('messages_pending'); }; let uploaded = false, @@ -1041,7 +1041,7 @@ export class AppMessagesManager { delete message.error; } - rootScope.broadcast('messages_pending'); + rootScope.dispatchEvent('messages_pending'); }; const inputPeer = appPeersManager.getInputPeerById(peerId); @@ -1227,7 +1227,7 @@ export class AppMessagesManager { delete historyMessage.error } } */ - rootScope.broadcast('messages_pending'); + rootScope.dispatchEvent('messages_pending'); }; message.send = () => { @@ -1311,7 +1311,7 @@ export class AppMessagesManager { //if(!options.isGroupedItem) { this.saveMessages([message], {storage, isScheduled: true, isOutgoing: true}); setTimeout(() => { - rootScope.broadcast('scheduled_new', {peerId, mid: messageId}); + rootScope.dispatchEvent('scheduled_new', {peerId, mid: messageId}); }, 0); } else { /* if(options.threadId && this.threadsStorage[peerId]) { @@ -1332,7 +1332,7 @@ export class AppMessagesManager { this.saveMessages([message], {storage, isOutgoing: true}); setTimeout(() => { this.setDialogTopMessage(message); - rootScope.broadcast('history_append', {storage, peerId, mid: messageId}); + rootScope.dispatchEvent('history_append', {storage, peerId, mid: messageId}); }, 0); } @@ -1583,7 +1583,7 @@ export class AppMessagesManager { outDialogs.forEach(dialog => { obj[dialog.peerId] = dialog; }); - rootScope.broadcast('dialogs_multiupdate', obj); + rootScope.dispatchEvent('dialogs_multiupdate', obj); return outDialogs; } @@ -1716,10 +1716,10 @@ export class AppMessagesManager { if(Object.keys(noIdsDialogs).length) { //setTimeout(() => { // test bad situation this.reloadConversation(Object.keys(noIdsDialogs).map(id => +id)).then(() => { - rootScope.broadcast('dialogs_multiupdate', noIdsDialogs); + rootScope.dispatchEvent('dialogs_multiupdate', noIdsDialogs); for(let peerId in noIdsDialogs) { - rootScope.broadcast('dialog_unread', {peerId: +peerId}); + rootScope.dispatchEvent('dialog_unread', {peerId: +peerId}); } }); //}, 10e3); @@ -1736,7 +1736,7 @@ export class AppMessagesManager { if(hasPrepend) { this.scheduleHandleNewDialogs(); } else { - rootScope.broadcast('dialogs_multiupdate', {}); + rootScope.dispatchEvent('dialogs_multiupdate', {}); } return dialogsResult; @@ -1975,11 +1975,11 @@ export class AppMessagesManager { delete this.messagesStorageByPeerId[peerId]; if(justClear) { - rootScope.broadcast('dialog_flush', {peerId}); + rootScope.dispatchEvent('dialog_flush', {peerId}); } else { this.dialogsStorage.dropDialog(peerId); - rootScope.broadcast('dialog_drop', {peerId}); + rootScope.dispatchEvent('dialog_drop', {peerId}); } }); } @@ -1991,7 +1991,7 @@ export class AppMessagesManager { ]) .then(([state, pinned]) => { state.hiddenPinnedMessages[peerId] = pinned.maxId; - rootScope.broadcast('peer_pinned_hidden', {peerId, maxId: pinned.maxId}); + rootScope.dispatchEvent('peer_pinned_hidden', {peerId, maxId: pinned.maxId}); }); } @@ -2049,7 +2049,7 @@ export class AppMessagesManager { } } - rootScope.broadcast('peer_pinned_messages', {peerId, unpinAll: true}); + rootScope.dispatchEvent('peer_pinned_messages', {peerId, unpinAll: true}); delete this.pinnedMessages[peerId]; return true; @@ -2825,11 +2825,11 @@ export class AppMessagesManager { this.migratedToFrom[migrateTo] = migrateFrom; //setTimeout(() => { - rootScope.broadcast('dialog_migrate', {migrateFrom, migrateTo}); + rootScope.dispatchEvent('dialog_migrate', {migrateFrom, migrateTo}); const dropped = this.dialogsStorage.dropDialog(migrateFrom); if(dropped.length) { - rootScope.broadcast('dialog_drop', {peerId: migrateFrom, dialog: dropped[0]}); + rootScope.dispatchEvent('dialog_drop', {peerId: migrateFrom, dialog: dropped[0]}); } //}, 100); } @@ -3338,7 +3338,7 @@ export class AppMessagesManager { clearTimeout(this.newMessagesHandleTimeout); this.newMessagesHandleTimeout = 0; - rootScope.broadcast('history_multiappend', this.newMessagesToHandle); + rootScope.dispatchEvent('history_multiappend', this.newMessagesToHandle); this.newMessagesToHandle = {}; }; @@ -3364,7 +3364,7 @@ export class AppMessagesManager { this.incrementMaxSeenId(newMaxSeenId); } - rootScope.broadcast('dialogs_multiupdate', obj); + rootScope.dispatchEvent('dialogs_multiupdate', obj); this.newDialogsToHandle = {}; }; @@ -3743,7 +3743,7 @@ export class AppMessagesManager { } if(this.mergeReplyKeyboard(historyStorage, message)) { - rootScope.broadcast('history_reply_markup', {peerId}); + rootScope.dispatchEvent('history_reply_markup', {peerId}); } if(message.fromId > 0 && !message.pFlags.out && message.from_id) { @@ -3807,7 +3807,7 @@ export class AppMessagesManager { dialog.pFlags.unread_mark = true; } - rootScope.broadcast('dialogs_multiupdate', {[peerId]: dialog}); + rootScope.dispatchEvent('dialogs_multiupdate', {[peerId]: dialog}); this.dialogsStorage.setDialogToState(dialog); } }; @@ -3834,10 +3834,10 @@ export class AppMessagesManager { // @ts-ignore if(message.clear_history) { // that's will never happen if(isTopMessage) { - rootScope.broadcast('dialog_flush', {peerId}); + rootScope.dispatchEvent('dialog_flush', {peerId}); } } else { - rootScope.broadcast('message_edit', { + rootScope.dispatchEvent('message_edit', { storage, peerId, mid @@ -3846,7 +3846,7 @@ export class AppMessagesManager { if(isTopMessage || (message as Message.message).grouped_id) { const updatedDialogs: {[peerId: number]: Dialog} = {}; updatedDialogs[peerId] = dialog; - rootScope.broadcast('dialogs_multiupdate', updatedDialogs); + rootScope.dispatchEvent('dialogs_multiupdate', updatedDialogs); this.dialogsStorage.setDialogToState(dialog); } } @@ -3938,12 +3938,12 @@ export class AppMessagesManager { } } - rootScope.broadcast('dialog_unread', {peerId}); + rootScope.dispatchEvent('dialog_unread', {peerId}); this.dialogsStorage.setDialogToState(foundDialog); } if(foundAffected) { - rootScope.broadcast('messages_read'); + rootScope.dispatchEvent('messages_read'); } if(!threadId && channelId) { @@ -3951,7 +3951,7 @@ export class AppMessagesManager { for(const threadKey in this.threadsToReplies) { if(threadKey.indexOf(threadKeyPart) === 0) { const [peerId, mid] = this.threadsToReplies[threadKey].split('_').map(n => +n); - rootScope.broadcast('replies_updated', this.getMessageByPeer(peerId, mid)); + rootScope.dispatchEvent('replies_updated', this.getMessageByPeer(peerId, mid)); } } } @@ -3969,7 +3969,7 @@ export class AppMessagesManager { } } - rootScope.broadcast('messages_media_read', {peerId, mids}); + rootScope.dispatchEvent('messages_media_read', {peerId, mids}); }; private onUpdateChannelAvailableMessages = (update: Update.updateChannelAvailableMessages) => { @@ -4033,14 +4033,14 @@ export class AppMessagesManager { } }); - rootScope.broadcast('history_delete', {peerId, msgs: historyUpdated.msgs}); + rootScope.dispatchEvent('history_delete', {peerId, msgs: historyUpdated.msgs}); const foundDialog = this.getDialogOnly(peerId); if(foundDialog) { if(historyUpdated.unread) { foundDialog.unread_count -= historyUpdated.unread; - rootScope.broadcast('dialog_unread', {peerId}); + rootScope.dispatchEvent('dialog_unread', {peerId}); } if(historyUpdated.msgs[foundDialog.top_message]) { @@ -4061,7 +4061,7 @@ export class AppMessagesManager { if(canViewHistory !== hasHistory) { delete this.historiesStorage[peerId]; - rootScope.broadcast('history_forbidden', peerId); + rootScope.dispatchEvent('history_forbidden', peerId); } const dialog = this.getDialogOnly(peerId); @@ -4071,7 +4071,7 @@ export class AppMessagesManager { } else { if(dialog) { this.dialogsStorage.dropDialog(peerId); - rootScope.broadcast('dialog_drop', {peerId, dialog}); + rootScope.dispatchEvent('dialog_drop', {peerId, dialog}); } } } @@ -4086,7 +4086,7 @@ export class AppMessagesManager { delete this.historiesStorage[peerId]; this.reloadConversation(-channelId).then(() => { - rootScope.broadcast('history_reload', peerId); + rootScope.dispatchEvent('history_reload', peerId); }); }; @@ -4097,7 +4097,7 @@ export class AppMessagesManager { const message = this.getMessageByPeer(-update.channel_id, mid); if(!message.deleted && message.views && message.views < views) { message.views = views; - rootScope.broadcast('message_views', {mid, views}); + rootScope.dispatchEvent('message_views', {mid, views}); } }; @@ -4188,7 +4188,7 @@ export class AppMessagesManager { delete this.pinnedMessages[peerId]; appStateManager.getState().then(state => { delete state.hiddenPinnedMessages[peerId]; - rootScope.broadcast('peer_pinned_messages', {peerId, mids: messages, pinned: werePinned}); + rootScope.dispatchEvent('peer_pinned_messages', {peerId, mids: messages, pinned: werePinned}); }); }); }; @@ -4201,7 +4201,7 @@ export class AppMessagesManager { const dialog = this.getDialogOnly(peerId); if(dialog) { dialog.notify_settings = notify_settings; - rootScope.broadcast('dialog_notify_settings', dialog); + rootScope.dispatchEvent('dialog_notify_settings', dialog); this.dialogsStorage.setDialogToState(dialog); } } @@ -4221,11 +4221,11 @@ export class AppMessagesManager { if(!oldMessage.deleted) { this.handleEditedMessage(oldMessage, newMessage); - rootScope.broadcast('message_edit', {storage, peerId, mid: message.mid}); + rootScope.dispatchEvent('message_edit', {storage, peerId, mid: message.mid}); } else { const pendingMessage = this.checkPendingMessage(message); if(!pendingMessage) { - rootScope.broadcast('scheduled_new', {peerId, mid: message.mid}); + rootScope.dispatchEvent('scheduled_new', {peerId, mid: message.mid}); } } } @@ -4239,7 +4239,7 @@ export class AppMessagesManager { const mids = update.messages.map(id => this.generateMessageId(id)); this.handleDeletedMessages(peerId, storage, mids); - rootScope.broadcast('scheduled_delete', {peerId, mids}); + rootScope.dispatchEvent('scheduled_delete', {peerId, mids}); } }; @@ -4281,7 +4281,7 @@ export class AppMessagesManager { const message = this.getMessageByPeer(peerId, mid); if(broadcastEventName) { - rootScope.broadcast(broadcastEventName, message); + rootScope.dispatchEvent(broadcastEventName, message); } return message; @@ -4296,7 +4296,7 @@ export class AppMessagesManager { if(randomId) { const pendingData = this.pendingByRandomId[randomId]; if(pendingMessage = this.finalizePendingMessage(randomId, message)) { - rootScope.broadcast('history_update', {storage: pendingData.storage, peerId: message.peerId, mid: message.mid}); + rootScope.dispatchEvent('history_update', {storage: pendingData.storage, peerId: message.peerId, mid: message.mid}); } delete this.pendingByMessageId[message.mid]; @@ -4355,7 +4355,7 @@ export class AppMessagesManager { delete message.random_id; delete message.send; - rootScope.broadcast('messages_pending'); + rootScope.dispatchEvent('messages_pending'); } delete this.pendingByRandomId[randomId]; @@ -4421,7 +4421,7 @@ export class AppMessagesManager { const tempMessage = this.getMessageFromStorage(storage, tempId); delete storage[tempId]; - rootScope.broadcast('message_sent', {storage, tempId, tempMessage, mid}); + rootScope.dispatchEvent('message_sent', {storage, tempId, tempMessage, mid}); } public incrementMaxSeenId(maxId: number) { @@ -4466,7 +4466,7 @@ export class AppMessagesManager { notification.title = RichTextProcessor.wrapPlainText(notification.title); notification.onclick = () => { - rootScope.broadcast('history_focus', {peerId, mid: message.mid}); + rootScope.dispatchEvent('history_focus', {peerId, mid: message.mid}); }; notification.message = notificationMessage; @@ -4675,7 +4675,7 @@ export class AppMessagesManager { const mids = messages.map((message) => { if(this.mergeReplyKeyboard(historyStorage, message)) { - rootScope.broadcast('history_reply_markup', {peerId}); + rootScope.dispatchEvent('history_reply_markup', {peerId}); } return (message as MyMessage).mid; @@ -4860,7 +4860,7 @@ export class AppMessagesManager { this.saveMessages(getMessagesResult.messages); } - rootScope.broadcast('messages_downloaded', {peerId: +peerId, mids}); + rootScope.dispatchEvent('messages_downloaded', {peerId: +peerId, mids}); })); } @@ -4875,7 +4875,7 @@ export class AppMessagesManager { public wrapSingleMessage(peerId: number, msgId: number, overwrite = false): Promise { if(!this.getMessageByPeer(peerId, msgId).deleted && !overwrite) { - rootScope.broadcast('messages_downloaded', {peerId, mids: [msgId]}); + rootScope.dispatchEvent('messages_downloaded', {peerId, mids: [msgId]}); return Promise.resolve(); } else if(!this.needSingleMessages[peerId] || this.needSingleMessages[peerId].indexOf(msgId) === -1) { (this.needSingleMessages[peerId] ?? (this.needSingleMessages[peerId] = [])).push(msgId); @@ -4980,7 +4980,7 @@ export class AppMessagesManager { if(history.albums) { for(const groupId in history.albums) { - rootScope.broadcast('album_edit', {peerId, groupId, deletedMids: [...history.albums[groupId]]}); + rootScope.dispatchEvent('album_edit', {peerId, groupId, deletedMids: [...history.albums[groupId]]}); /* const mids = this.getMidsByAlbum(groupId); if(mids.length) { const mid = Math.max(...mids); diff --git a/src/lib/appManagers/appNotificationsManager.ts b/src/lib/appManagers/appNotificationsManager.ts index a3a0eb30..113f9a4a 100644 --- a/src/lib/appManagers/appNotificationsManager.ts +++ b/src/lib/appManagers/appNotificationsManager.ts @@ -102,7 +102,7 @@ export class AppNotificationsManager { } });*/ - rootScope.on('idle', (newVal) => { + rootScope.addEventListener('idle', (newVal) => { if(this.stopped) { return; } @@ -117,7 +117,7 @@ export class AppNotificationsManager { rootScope.addMultipleEventsListeners({ updateNotifySettings: (update) => { this.savePeerSettings(update.peer._ === 'notifyPeer' ? appPeersManager.getPeerId(update.peer.peer) : update.peer._, update.notify_settings); - rootScope.broadcast('notify_settings', update); + rootScope.dispatchEvent('notify_settings', update); } }); @@ -401,7 +401,7 @@ export class AppNotificationsManager { (obj || this.peerSettings)[key] = settings; if(typeof(key) !== 'number') { - rootScope.broadcast('notify_peer_type_settings', {key, settings}); + rootScope.dispatchEvent('notify_peer_type_settings', {key, settings}); } //rootScope.broadcast('notify_settings', {peerId: peerId}); @@ -456,7 +456,7 @@ export class AppNotificationsManager { public start() { this.updateLocalSettings(); - rootScope.on('settings_updated', this.updateLocalSettings); + rootScope.addEventListener('settings_updated', this.updateLocalSettings); //WebPushApiManager.start(); if(!this.notificationsUiSupport) { diff --git a/src/lib/appManagers/appPeersManager.ts b/src/lib/appManagers/appPeersManager.ts index fa194f49..4b3edca0 100644 --- a/src/lib/appManagers/appPeersManager.ts +++ b/src/lib/appManagers/appPeersManager.ts @@ -40,7 +40,7 @@ export class AppPeersManager { constructor() { rootScope.addMultipleEventsListeners({ updatePeerBlocked: (update) => { - rootScope.broadcast('peer_block', {peerId: this.getPeerId(update.peer_id), blocked: update.blocked}); + rootScope.dispatchEvent('peer_block', {peerId: this.getPeerId(update.peer_id), blocked: update.blocked}); } }); } diff --git a/src/lib/appManagers/appPollsManager.ts b/src/lib/appManagers/appPollsManager.ts index 3c70e2a3..e06584ca 100644 --- a/src/lib/appManagers/appPollsManager.ts +++ b/src/lib/appManagers/appPollsManager.ts @@ -93,7 +93,7 @@ export class AppPollsManager { } poll = this.savePoll(poll, update.results as any); - rootScope.broadcast('poll_update', {poll, results: update.results as any}); + rootScope.dispatchEvent('poll_update', {poll, results: update.results as any}); } }); } diff --git a/src/lib/appManagers/appPrivacyManager.ts b/src/lib/appManagers/appPrivacyManager.ts index ebad25b6..55134fa5 100644 --- a/src/lib/appManagers/appPrivacyManager.ts +++ b/src/lib/appManagers/appPrivacyManager.ts @@ -29,7 +29,7 @@ export class AppPrivacyManager { updatePrivacy: (update) => { const key = update.key._; this.privacy[key] = update.rules; - rootScope.broadcast('privacy_update', update); + rootScope.dispatchEvent('privacy_update', update); } }); } diff --git a/src/lib/appManagers/appProfileManager.ts b/src/lib/appManagers/appProfileManager.ts index 6069d3b2..901e7fd7 100644 --- a/src/lib/appManagers/appProfileManager.ts +++ b/src/lib/appManagers/appProfileManager.ts @@ -51,7 +51,7 @@ export class AppProfileManager { const chatFull = this.chatsFull[chatId] as ChatFull.chatFull; if(chatFull !== undefined) { chatFull.participants = participants; - rootScope.broadcast('chat_full_update', chatId); + rootScope.dispatchEvent('chat_full_update', chatId); } } }, @@ -75,7 +75,7 @@ export class AppProfileManager { }); _participants.version = update.version; - rootScope.broadcast('chat_full_update', update.chat_id); + rootScope.dispatchEvent('chat_full_update', update.chat_id); } }, @@ -88,7 +88,7 @@ export class AppProfileManager { if(participants[i].user_id === update.user_id) { participants.splice(i, 1); _participants.version = update.version; - rootScope.broadcast('chat_full_update', update.chat_id); + rootScope.dispatchEvent('chat_full_update', update.chat_id); return; } } @@ -96,7 +96,7 @@ export class AppProfileManager { } }); - rootScope.on('chat_update', (chatId) => { + rootScope.addEventListener('chat_update', (chatId) => { const fullChat = this.chatsFull[chatId]; const chat: Chat.chat = appChatsManager.getChat(chatId); if(!chat.photo || !fullChat) { @@ -107,7 +107,7 @@ export class AppProfileManager { //////console.log('chat_update:', fullChat); if(fullChat.chat_photo && emptyPhoto !== (fullChat.chat_photo._ === 'photoEmpty')) { delete this.chatsFull[chatId]; - rootScope.broadcast('chat_full_update', chatId); + rootScope.dispatchEvent('chat_full_update', chatId); return; } if(emptyPhoto) { @@ -118,7 +118,7 @@ export class AppProfileManager { const chatFullPhotoId = fullChat.chat_photo?.id; if(chatFullPhotoId !== photoId) { delete this.chatsFull[chatId]; - rootScope.broadcast('chat_full_update', chatId); + rootScope.dispatchEvent('chat_full_update', chatId); } }); } @@ -255,7 +255,7 @@ export class AppProfileManager { appNotificationsManager.savePeerSettings(peerId, fullChat.notify_settings); delete this.fullPromises[peerId]; this.chatsFull[id] = fullChat; - rootScope.broadcast('chat_full_update', id); + rootScope.dispatchEvent('chat_full_update', id); return fullChat; }) as any; @@ -364,7 +364,7 @@ export class AppProfileManager { delete this.fullPromises[peerId]; this.chatsFull[id] = fullChannel; - rootScope.broadcast('chat_full_update', id); + rootScope.dispatchEvent('chat_full_update', id); return fullChannel; }, (error) => { @@ -417,7 +417,7 @@ export class AppProfileManager { delete this.chatsFull[id]; delete this.fullPromises[-id]; apiManager.clearCache('channels.getParticipants', (params) => (params.channel as InputChannel.inputChannel).channel_id === id); - rootScope.broadcast('chat_full_update', id); + rootScope.dispatchEvent('chat_full_update', id); } public updateProfile(first_name: string, last_name: string, about: string) { diff --git a/src/lib/appManagers/appStateManager.ts b/src/lib/appManagers/appStateManager.ts index 05a39dc0..3f4f5be6 100644 --- a/src/lib/appManagers/appStateManager.ts +++ b/src/lib/appManagers/appStateManager.ts @@ -300,7 +300,7 @@ export class AppStateManager extends EventListenerBase<{ if(auth) { // ! Warning ! DON'T delete this state.authState = {_: 'authStateSignedIn'}; - rootScope.broadcast('user_auth', typeof(auth) === 'number' ? {dcID: 0, id: auth} : auth); // * support old version + rootScope.dispatchEvent('user_auth', typeof(auth) === 'number' ? {dcID: 0, id: auth} : auth); // * support old version } // * Read storages @@ -389,7 +389,7 @@ export class AppStateManager extends EventListenerBase<{ public setByKey(key: string, value: any) { setDeepProperty(this.state, key, value); - rootScope.broadcast('settings_updated', {key, value}); + rootScope.dispatchEvent('settings_updated', {key, value}); const first = key.split('.')[0]; // @ts-ignore diff --git a/src/lib/appManagers/appStickersManager.ts b/src/lib/appManagers/appStickersManager.ts index 4de1a58c..a2bcf81b 100644 --- a/src/lib/appManagers/appStickersManager.ts +++ b/src/lib/appManagers/appStickersManager.ts @@ -28,7 +28,7 @@ export class AppStickersManager { rootScope.addMultipleEventsListeners({ updateNewStickerSet: (update) => { this.saveStickerSet(update.stickerset, update.stickerset.set.id); - rootScope.broadcast('stickers_installed', update.stickerset.set); + rootScope.dispatchEvent('stickers_installed', update.stickerset.set); } }); } @@ -185,7 +185,7 @@ export class AppStickersManager { if(res) { delete set.installed_date; - rootScope.broadcast('stickers_deleted', set); + rootScope.dispatchEvent('stickers_deleted', set); this.storage.delete(set.id, true); return true; } @@ -197,7 +197,7 @@ export class AppStickersManager { if(res) { set.installed_date = Date.now() / 1000 | 0; - rootScope.broadcast('stickers_installed', set); + rootScope.dispatchEvent('stickers_installed', set); return true; } } diff --git a/src/lib/appManagers/appUsersManager.ts b/src/lib/appManagers/appUsersManager.ts index bb51510b..f1de04ef 100644 --- a/src/lib/appManagers/appUsersManager.ts +++ b/src/lib/appManagers/appUsersManager.ts @@ -48,7 +48,7 @@ export class AppUsersManager { constructor() { setInterval(this.updateUsersStatuses, 60000); - rootScope.on('state_synchronized', this.updateUsersStatuses); + rootScope.addEventListener('state_synchronized', this.updateUsersStatuses); rootScope.addMultipleEventsListeners({ updateUserStatus: (update) => { @@ -67,7 +67,7 @@ export class AppUsersManager { } //user.sortStatus = this.getUserStatusForSort(user.status); - rootScope.broadcast('user_update', userId); + rootScope.dispatchEvent('user_update', userId); this.setUserToStateIfNeeded(user); } //////else console.warn('No user by id:', userId); }, @@ -86,8 +86,8 @@ export class AppUsersManager { this.setUserToStateIfNeeded(user); - rootScope.broadcast('user_update', userId); - rootScope.broadcast('avatar_update', userId); + rootScope.dispatchEvent('user_update', userId); + rootScope.dispatchEvent('avatar_update', userId); } else console.warn('No user by id:', userId); }, @@ -110,7 +110,7 @@ export class AppUsersManager { this.onContactUpdated(update.user_id, update.my_link._ === 'contactLinkContact'); break; */ - rootScope.on('language_change', (e) => { + rootScope.addEventListener('language_change', (e) => { const userId = this.getSelf().id; this.contactsIndex.indexObject(userId, this.getUserSearchText(userId)); }); @@ -357,11 +357,11 @@ export class AppUsersManager { } */ safeReplaceObject(oldUser, user); - rootScope.broadcast('user_update', userId); + rootScope.dispatchEvent('user_update', userId); } if(changedTitle) { - rootScope.broadcast('peer_title_edit', user.id); + rootScope.dispatchEvent('peer_title_edit', user.id); } this.setUserToStateIfNeeded(user); @@ -573,7 +573,7 @@ export class AppUsersManager { user.status.expires < timestampNow) { user.status = {_: 'userStatusOffline', was_online: user.status.expires}; - rootScope.broadcast('user_update', user.id); + rootScope.dispatchEvent('user_update', user.id); this.setUserToStateIfNeeded(user); } @@ -609,7 +609,7 @@ export class AppUsersManager { }; //user.sortStatus = this.getUserStatusForSort(user.status); - rootScope.broadcast('user_update', id); + rootScope.dispatchEvent('user_update', id); this.setUserToStateIfNeeded(user); } @@ -785,7 +785,7 @@ export class AppUsersManager { this.onContactsModified(); - rootScope.broadcast('contacts_update', userId); + rootScope.dispatchEvent('contacts_update', userId); } } @@ -814,7 +814,7 @@ export class AppUsersManager { user.status = status; //user.sortStatus = this.getUserStatusForSort(user.status); - rootScope.broadcast('user_update', userId); + rootScope.dispatchEvent('user_update', userId); } } diff --git a/src/lib/appManagers/appWebPagesManager.ts b/src/lib/appManagers/appWebPagesManager.ts index d3f018a6..0e627a33 100644 --- a/src/lib/appManagers/appWebPagesManager.ts +++ b/src/lib/appManagers/appWebPagesManager.ts @@ -104,7 +104,7 @@ export class AppWebPagesManager { msgs.push(+msgId); } - rootScope.broadcast('webpage_updated', { + rootScope.dispatchEvent('webpage_updated', { id: apiWebPage.id, msgs }); diff --git a/src/lib/langPack.ts b/src/lib/langPack.ts index 5eb5a1e7..7cd4d304 100644 --- a/src/lib/langPack.ts +++ b/src/lib/langPack.ts @@ -206,7 +206,7 @@ namespace I18n { strings.set(string.key as LangPackKey, string); } - rootScope.broadcast('language_change'); + rootScope.dispatchEvent('language_change'); const elements = Array.from(document.querySelectorAll(`.i18n`)) as HTMLElement[]; elements.forEach(element => { diff --git a/src/lib/mtproto/apiManager.ts b/src/lib/mtproto/apiManager.ts index 8be23d7e..1272d1f8 100644 --- a/src/lib/mtproto/apiManager.ts +++ b/src/lib/mtproto/apiManager.ts @@ -136,7 +136,7 @@ export class ApiManager { //this.telegramMeNotify(true); /// #if !MTPROTO_WORKER - rootScope.broadcast('user_auth', userAuth); + rootScope.dispatchEvent('user_auth', userAuth); /// #endif } diff --git a/src/lib/mtproto/mtprotoworker.ts b/src/lib/mtproto/mtprotoworker.ts index 028e9861..3f94c08f 100644 --- a/src/lib/mtproto/mtprotoworker.ts +++ b/src/lib/mtproto/mtprotoworker.ts @@ -101,7 +101,7 @@ export class ApiManagerProxy extends CryptoWorkerMethods { }); this.addTaskListener('connectionStatusChange', (task: any) => { - rootScope.broadcast('connection_status_change', task.payload); + rootScope.dispatchEvent('connection_status_change', task.payload); }); this.addTaskListener('convertWebp', (task) => { @@ -280,7 +280,7 @@ export class ApiManagerProxy extends CryptoWorkerMethods { this.updatesProcessor(task.update); } } else if(task.progress) { - rootScope.broadcast('download_progress', task.progress); + rootScope.dispatchEvent('download_progress', task.progress); } else if(task.hasOwnProperty('result') || task.hasOwnProperty('error')) { this.finalizeTask(task.taskId, task.result, task.error); } @@ -479,7 +479,7 @@ export class ApiManagerProxy extends CryptoWorkerMethods { userAuth = {dcID: 0, id: userAuth}; } - rootScope.broadcast('user_auth', userAuth); + rootScope.dispatchEvent('user_auth', userAuth); return this.performTaskWorker('setUserAuth', userAuth); } diff --git a/src/lib/rootScope.ts b/src/lib/rootScope.ts index 7992566e..4f330fde 100644 --- a/src/lib/rootScope.ts +++ b/src/lib/rootScope.ts @@ -75,8 +75,9 @@ export type BroadcastEvents = { 'audio_play': {doc: MyDocument, mid: number, peerId: number}, 'audio_pause': void, + 'state_cleared': void, 'state_synchronized': number, - 'state_synchronizing': number, + 'state_synchronizing': number | void, 'contacts_update': number, 'avatar_update': number, @@ -136,20 +137,20 @@ export class RootScope extends EventListenerBase<{ constructor() { super(); - this.on('peer_changed', (peerId) => { + this.addEventListener('peer_changed', (peerId) => { this.peerId = peerId; }); - this.on('user_auth', (e) => { + this.addEventListener('user_auth', (e) => { this.myId = e.id; }); - this.on('connection_status_change', (e) => { + this.addEventListener('connection_status_change', (e) => { const status = e; this.connectionStatus[e.name] = status; }); - this.on('idle', (isIDLE) => { + this.addEventListener('idle', (isIDLE) => { if(isIDLE) { this.idle.focusPromise = new Promise((resolve) => { this.idle.focusResolve = resolve; @@ -169,7 +170,7 @@ export class RootScope extends EventListenerBase<{ //const newTheme = this.getTheme(); if(this.myId) { - this.broadcast('theme_change'); + this.dispatchEvent('theme_change'); } else { this.setTheme(); } @@ -203,34 +204,12 @@ export class RootScope extends EventListenerBase<{ set overlayIsActive(value: boolean) { this._overlayIsActive = value; - this.broadcast('overlay_toggle', value); + this.dispatchEvent('overlay_toggle', value); } public getTheme(name: Theme['name'] = this.settings.theme === 'system' ? this.systemTheme : this.settings.theme) { return this.settings.themes.find(t => t.name === name); } - - public broadcast = (name: T, detail?: BroadcastEvents[T]) => { - /* //if(DEBUG) { - if(name !== 'user_update') { - console.debug('Broadcasting ' + name + ' event, with args:', detail); - } - //} */ - - this.dispatchEvent(name, detail); - }; - - public on = (name: T, callback: (e: BroadcastEvents[T]) => any, once?: true) => { - super.addEventListener(name, callback, once); - }; - - public addEventListener = this.on; - - public off = (name: T, callback: (e: BroadcastEvents[T]) => any) => { - super.removeEventListener(name, callback); - }; - - public removeEventListener = this.off; } const rootScope = new RootScope(); diff --git a/src/lib/storages/dialogs.ts b/src/lib/storages/dialogs.ts index 5bf48a61..554b1e6f 100644 --- a/src/lib/storages/dialogs.ts +++ b/src/lib/storages/dialogs.ts @@ -66,7 +66,7 @@ export default class DialogsStorage { this.reset(); - rootScope.on('language_change', (e) => { + rootScope.addEventListener('language_change', (e) => { const peerId = appUsersManager.getSelf().id; const dialog = this.getDialogOnly(peerId); if(dialog) { @@ -396,7 +396,7 @@ export default class DialogsStorage { } else { const dropped = this.dropDialog(peerId); if(dropped.length) { - rootScope.broadcast('dialog_drop', {peerId, dialog: dropped[0]}); + rootScope.dispatchEvent('dialog_drop', {peerId, dialog: dropped[0]}); } } @@ -411,7 +411,7 @@ export default class DialogsStorage { }); if(Object.keys(updatedDialogs).length) { - rootScope.broadcast('dialogs_multiupdate', updatedDialogs); + rootScope.dispatchEvent('dialogs_multiupdate', updatedDialogs); } } diff --git a/src/lib/storages/filters.ts b/src/lib/storages/filters.ts index e05c20fc..6da8c70c 100644 --- a/src/lib/storages/filters.ts +++ b/src/lib/storages/filters.ts @@ -81,7 +81,7 @@ export default class FiltersStorage { this.saveDialogFilter(update.filter as any); } else if(this.filters[update.id]) { // Папка удалена //this.getDialogFilters(true); - this.rootScope.broadcast('filter_delete', this.filters[update.id]); + this.rootScope.dispatchEvent('filter_delete', this.filters[update.id]); delete this.filters[update.id]; } @@ -98,7 +98,7 @@ export default class FiltersStorage { this.setOrderIndex(filter); }); - this.rootScope.broadcast('filter_order', update.order); + this.rootScope.dispatchEvent('filter_order', update.order); this.appStateManager.pushToState('filters', this.filters); }; @@ -269,7 +269,7 @@ export default class FiltersStorage { this.setOrderIndex(filter); if(update) { - this.rootScope.broadcast('filter_update', filter); + this.rootScope.dispatchEvent('filter_update', filter); } } diff --git a/src/pages/pageIm.ts b/src/pages/pageIm.ts index 155c5dae..ff5c2ac3 100644 --- a/src/pages/pageIm.ts +++ b/src/pages/pageIm.ts @@ -18,7 +18,7 @@ let onFirstMount = () => { /* appStateManager.saveState(); */ import('../lib/rootScope').then(m => { - m.default.broadcast('im_mount'); + m.default.dispatchEvent('im_mount'); }); if(!I18n.requestedServerLanguage) {