diff --git a/src/helpers/object.ts b/src/helpers/object.ts index 17cebeff..2fe3fb3d 100644 --- a/src/helpers/object.ts +++ b/src/helpers/object.ts @@ -51,7 +51,7 @@ export function defineNotNumerableProperties(obj: T, names: (keyo const props = {writable: true, configurable: true}; const out: {[name in keyof T]?: typeof props} = {}; names.forEach(name => { - if(obj[name] === undefined) { + if(!obj.hasOwnProperty(name)) { out[name] = props; } }); diff --git a/src/lib/appManagers/appStateManager.ts b/src/lib/appManagers/appStateManager.ts index 16ce9ab4..4e37d3f1 100644 --- a/src/lib/appManagers/appStateManager.ts +++ b/src/lib/appManagers/appStateManager.ts @@ -26,6 +26,7 @@ import { nextRandomUint } from '../../helpers/random'; import compareVersion from '../../helpers/compareVersion'; const REFRESH_EVERY = 24 * 60 * 60 * 1000; // 1 day +// const REFRESH_EVERY = 1e3; //const REFRESH_EVERY_WEEK = 24 * 60 * 60 * 1000 * 7; // 7 days const STATE_VERSION = App.versionFull; const BUILD = App.build; diff --git a/src/lib/rootScope.ts b/src/lib/rootScope.ts index 6d76ddbc..071d9037 100644 --- a/src/lib/rootScope.ts +++ b/src/lib/rootScope.ts @@ -34,6 +34,7 @@ export type BroadcastEvents = { 'filter_delete': MyDialogFilter, 'filter_update': MyDialogFilter, + 'filter_new': MyDialogFilter, 'filter_order': number[], 'folder_unread': Folder, diff --git a/src/lib/storages/dialogs.ts b/src/lib/storages/dialogs.ts index e7e6062f..ac6574e6 100644 --- a/src/lib/storages/dialogs.ts +++ b/src/lib/storages/dialogs.ts @@ -94,12 +94,15 @@ export default class DialogsStorage { } }); - rootScope.addEventListener('filter_update', (filter) => { + const onFilterUpdate = (filter: MyDialogFilter) => { const dialogs = this.getCachedDialogs(false); for(let i = 0; i < dialogs.length; ++i) { this.processDialogForFilter(dialogs[i], filter); } - }); + }; + + rootScope.addEventListener('filter_update', onFilterUpdate); + rootScope.addEventListener('filter_new', onFilterUpdate); rootScope.addEventListener('filter_delete', (filter) => { delete this.folders[filter.id]; diff --git a/src/lib/storages/filters.ts b/src/lib/storages/filters.ts index 55cd25e0..06438c0d 100644 --- a/src/lib/storages/filters.ts +++ b/src/lib/storages/filters.ts @@ -303,16 +303,19 @@ export default class FiltersStorage { filter.include_peers = filter.pinned_peers.concat(filter.include_peers); filter.includePeerIds = filter.pinnedPeerIds.concat(filter.includePeerIds); - if(this.filters[filter.id]) { - Object.assign(this.filters[filter.id], filter); + const oldFilter = this.filters[filter.id]; + if(oldFilter) { + Object.assign(oldFilter, filter); } else { this.filters[filter.id] = filter; } - + this.setOrderIndex(filter); - + if(update) { this.rootScope.dispatchEvent('filter_update', filter); + } else if(!oldFilter) { + this.rootScope.dispatchEvent('filter_new', filter); } }