Fix refreshing sensitive content option
This commit is contained in:
parent
4cb27308eb
commit
198793bc09
|
@ -287,8 +287,8 @@ export default class AppPrivacyAndSecurityTab extends SliderSuperTabEventable {
|
|||
let enabled: boolean, destroyed: boolean;
|
||||
this.eventListener.addEventListener('destroy', () => {
|
||||
destroyed = true;
|
||||
if(enabled === undefined) return;
|
||||
this.managers.appPrivacyManager.setGlobalPrivacySettings({
|
||||
if(enabled === undefined || enabled === checkboxField.checked) return;
|
||||
return this.managers.appPrivacyManager.setGlobalPrivacySettings({
|
||||
_: 'globalPrivacySettings',
|
||||
archive_and_mute_new_noncontact_peers: checkboxField.checked
|
||||
});
|
||||
|
@ -309,7 +309,7 @@ export default class AppPrivacyAndSecurityTab extends SliderSuperTabEventable {
|
|||
this.listenerSetter.add(rootScope)('premium_toggle', onPremiumToggle);
|
||||
onPremiumToggle(rootScope.premium);
|
||||
|
||||
enabled = settings.archive_and_mute_new_noncontact_peers;
|
||||
enabled = !!settings.archive_and_mute_new_noncontact_peers;
|
||||
|
||||
checkboxField.setValueSilently(enabled);
|
||||
});
|
||||
|
@ -339,7 +339,7 @@ export default class AppPrivacyAndSecurityTab extends SliderSuperTabEventable {
|
|||
return;
|
||||
}
|
||||
|
||||
this.managers.apiManager.invokeApi('account.setContentSettings', {
|
||||
return this.managers.apiManager.invokeApi('account.setContentSettings', {
|
||||
sensitive_enabled: _enabled
|
||||
});
|
||||
}, {once: true});
|
||||
|
|
|
@ -23,7 +23,7 @@ import {SettingSection} from '..';
|
|||
import Row from '../../row';
|
||||
import AppActiveSessionsTab from './activeSessions';
|
||||
import {i18n, LangPackKey} from '../../../lib/langPack';
|
||||
import {SliderSuperTabConstructable} from '../../sliderTab';
|
||||
import {SliderSuperTabConstructable, SliderSuperTabEventable} from '../../sliderTab';
|
||||
import PopupAvatar from '../../popups/avatar';
|
||||
import {AccountAuthorizations, Authorization} from '../../../layer';
|
||||
import PopupElement from '../../popups';
|
||||
|
@ -154,26 +154,59 @@ export default class AppSettingsTab extends SliderSuperTab {
|
|||
icon: string,
|
||||
text: LangPackKey,
|
||||
c: T,
|
||||
args?: Parameters<ConstructorP<T>['init']>
|
||||
): [string, LangPackKey, T, any[]?] => {
|
||||
return [icon, text, c, args] as any;
|
||||
getInitArgs?: () => Promise<Parameters<ConstructorP<T>['init']>>
|
||||
): {
|
||||
icon: string,
|
||||
text: LangPackKey,
|
||||
tabConstructor: T,
|
||||
getInitArgs?: typeof getInitArgs,
|
||||
// args?: ReturnType<typeof getInitArgs>
|
||||
args?: any
|
||||
} => {
|
||||
if(!getInitArgs) {
|
||||
const g = (c as any as typeof SliderSuperTab).getInitArgs;
|
||||
if(g) {
|
||||
// @ts-ignore
|
||||
getInitArgs = () => [g(this)];
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
icon,
|
||||
text,
|
||||
tabConstructor: c,
|
||||
getInitArgs,
|
||||
args: getInitArgs?.()
|
||||
};
|
||||
};
|
||||
|
||||
// const k = <T extends SliderSuperTabConstructable>(c: T): () => [ReturnType<ConstructorP<T>['getInitArgs']>] => {
|
||||
// return () => (c as any).getInitArgs(this);
|
||||
// };
|
||||
|
||||
const b = [
|
||||
m('unmute', 'AccountSettings.Notifications', AppNotificationsTab),
|
||||
m('data', 'DataSettings', AppDataAndStorageTab),
|
||||
m('lock', 'AccountSettings.PrivacyAndSecurity', AppPrivacyAndSecurityTab, [AppPrivacyAndSecurityTab.getInitArgs(this)]),
|
||||
m('lock', 'AccountSettings.PrivacyAndSecurity', AppPrivacyAndSecurityTab),
|
||||
m('settings', 'Telegram.GeneralSettingsViewController', AppGeneralSettingsTab),
|
||||
m('folder', 'AccountSettings.Filters', AppChatFoldersTab, [AppChatFoldersTab.getInitArgs()])
|
||||
m('folder', 'AccountSettings.Filters', AppChatFoldersTab)
|
||||
];
|
||||
|
||||
const rows = b.map(([icon, langPackKey, tabConstructor, args]) => {
|
||||
const rows = b.map((item) => {
|
||||
const {icon, text: langPackKey, tabConstructor, getInitArgs} = item;
|
||||
return new Row({
|
||||
titleLangKey: langPackKey,
|
||||
icon,
|
||||
clickable: () => {
|
||||
this.slider.createTab(tabConstructor as any).open(...(args || []));
|
||||
// new tabConstructor(this.slider, true).open();
|
||||
clickable: async() => {
|
||||
const args = item.args ? await item.args : [];
|
||||
const tab = this.slider.createTab(tabConstructor as any);
|
||||
tab.open(...args);
|
||||
|
||||
if(tab instanceof SliderSuperTabEventable && getInitArgs) {
|
||||
tab.eventListener.addEventListener('destroyAfter', (promise) => {
|
||||
item.args = promise.then(() => getInitArgs() as any);
|
||||
});
|
||||
}
|
||||
},
|
||||
listenerSetter: this.listenerSetter
|
||||
});
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
|
||||
import EventListenerBase from '../helpers/eventListenerBase';
|
||||
import ListenerSetter from '../helpers/listenerSetter';
|
||||
import noop from '../helpers/noop';
|
||||
import {AppManagers} from '../lib/appManagers/managers';
|
||||
import {i18n, LangPackKey} from '../lib/langPack';
|
||||
import ButtonIcon from './buttonIcon';
|
||||
|
@ -118,7 +119,9 @@ export default class SliderSuperTab {
|
|||
|
||||
export class SliderSuperTabEventable extends SliderSuperTab {
|
||||
public eventListener: EventListenerBase<{
|
||||
destroy: () => void
|
||||
destroy: () => void | Promise<any>,
|
||||
destroyAfter: (promise: Promise<void>) => void,
|
||||
close: () => void
|
||||
}>;
|
||||
|
||||
constructor(slider: SidebarSlider) {
|
||||
|
@ -126,8 +129,13 @@ export class SliderSuperTabEventable extends SliderSuperTab {
|
|||
this.eventListener = new EventListenerBase();
|
||||
}
|
||||
|
||||
onClose() {
|
||||
this.eventListener.dispatchEvent('close');
|
||||
}
|
||||
|
||||
onCloseAfterTimeout() {
|
||||
this.eventListener.dispatchEvent('destroy');
|
||||
const results = this.eventListener.dispatchResultableEvent('destroy');
|
||||
this.eventListener.dispatchEvent('destroyAfter', Promise.all(results).then(noop, noop));
|
||||
this.eventListener.cleanup();
|
||||
return super.onCloseAfterTimeout();
|
||||
}
|
||||
|
|
|
@ -1794,6 +1794,7 @@ export default class MTPNetworker {
|
|||
}
|
||||
|
||||
case 'msgs_ack': {
|
||||
this.debug && this.log('got acks', message.msg_ids);
|
||||
for(const msgId of message.msg_ids) {
|
||||
this.processMessageAck(msgId);
|
||||
}
|
||||
|
@ -1849,9 +1850,9 @@ export default class MTPNetworker {
|
|||
const sentMessageId = message.req_msg_id;
|
||||
const sentMessage = this.sentMessages[sentMessageId];
|
||||
|
||||
// if(this.debug) {
|
||||
// this.log.debug('Rpc response', message.result, sentMessage);
|
||||
// }
|
||||
if(this.debug) {
|
||||
this.log('Rpc response', message.result, sentMessage);
|
||||
}
|
||||
|
||||
this.processMessageAck(sentMessageId);
|
||||
if(sentMessage) {
|
||||
|
|
Loading…
Reference in New Issue