171 lines
6.0 KiB
TypeScript
171 lines
6.0 KiB
TypeScript
/*
|
|
* https://github.com/morethanwords/tweb
|
|
* Copyright (C) 2019-2021 Eduard Kuzmenko
|
|
* https://github.com/morethanwords/tweb/blob/master/LICENSE
|
|
*/
|
|
|
|
import { SliderSuperTab } from "../../slider";
|
|
import AvatarElement from "../../avatar";
|
|
import apiManager from "../../../lib/mtproto/mtprotoworker";
|
|
import appUsersManager from "../../../lib/appManagers/appUsersManager";
|
|
import ButtonMenuToggle from "../../buttonMenuToggle";
|
|
import Button from "../../button";
|
|
import AppPrivacyAndSecurityTab from "./privacyAndSecurity";
|
|
import AppGeneralSettingsTab from "./generalSettings";
|
|
import AppEditProfileTab from "./editProfile";
|
|
import AppChatFoldersTab from "./chatFolders";
|
|
import AppNotificationsTab from "./notifications";
|
|
import PeerTitle from "../../peerTitle";
|
|
import AppLanguageTab from "./language";
|
|
import lottieLoader from "../../../lib/lottieLoader";
|
|
import PopupPeer from "../../popups/peer";
|
|
//import AppMediaViewer from "../../appMediaViewerNew";
|
|
|
|
export default class AppSettingsTab extends SliderSuperTab {
|
|
private avatarElem: AvatarElement;
|
|
private nameDiv: HTMLElement;
|
|
private phoneDiv: HTMLElement;
|
|
|
|
private buttons: {
|
|
edit: HTMLButtonElement,
|
|
folders: HTMLButtonElement,
|
|
general: HTMLButtonElement,
|
|
notifications: HTMLButtonElement,
|
|
privacy: HTMLButtonElement,
|
|
language: HTMLButtonElement
|
|
} = {} as any;
|
|
|
|
protected init() {
|
|
this.container.classList.add('settings-container');
|
|
this.setTitle('Settings');
|
|
|
|
const btnMenu = ButtonMenuToggle({}, 'bottom-left', [{
|
|
icon: 'logout',
|
|
text: 'EditAccount.Logout',
|
|
onClick: () => {
|
|
new PopupPeer('logout', {
|
|
titleLangKey: 'LogOut',
|
|
descriptionLangKey: 'LogOut.Description',
|
|
buttons: [{
|
|
langKey: 'LogOut',
|
|
callback: () => {
|
|
apiManager.logOut();
|
|
},
|
|
isDanger: true
|
|
}]
|
|
}).show();
|
|
}
|
|
}]);
|
|
|
|
this.header.append(btnMenu);
|
|
|
|
this.avatarElem = new AvatarElement();
|
|
this.avatarElem.setAttribute('clickable', '');
|
|
this.avatarElem.classList.add('profile-avatar', 'avatar-120');
|
|
|
|
/* const div = document.createElement('div');
|
|
//div.style.cssText = 'border-radius: 8px; overflow: hidden; width: 396px; height: 264px; flex: 0 0 auto; position: relative; margin: 10rem 0 10rem auto;';
|
|
//div.style.width = '135px';
|
|
//div.style.height = '100px';
|
|
div.style.cssText = 'border-radius: 8px; overflow: hidden; width: 396px; height: 264px; flex: 0 0 auto; position: relative; margin: 10rem auto 10rem 0;';
|
|
div.style.width = '135px';
|
|
div.style.height = '100px';
|
|
|
|
const img = document.createElement('img');
|
|
img.src = 'assets/img/pepe.jpg';
|
|
img.classList.add('media-photo');
|
|
img.style.cssText = 'max-width: 100%;max-height: 100%;';
|
|
|
|
div.append(img);
|
|
|
|
div.addEventListener('click', () => {
|
|
new AppMediaViewer().setSearchContext({peerId: 61004386, inputFilter: 'inputMessagesFilterPhotos'}).openMedia({
|
|
_: 'message',
|
|
mid: 1,
|
|
peerId: 61004386,
|
|
fromId: 61004386,
|
|
message: '',
|
|
media: {
|
|
_: 'messageMediaPhoto',
|
|
photo: {
|
|
_: 'photo',
|
|
url: img.src,
|
|
downloaded: 111,
|
|
sizes: [{
|
|
_: 'photoSize',
|
|
type: 'x',
|
|
w: 618,
|
|
h: 412
|
|
}]
|
|
}
|
|
},
|
|
date: Date.now() / 1000 | 0
|
|
}, img);
|
|
});
|
|
|
|
this.scrollable.append(div); */
|
|
|
|
this.nameDiv = document.createElement('div');
|
|
this.nameDiv.classList.add('profile-name');
|
|
|
|
this.phoneDiv = document.createElement('div');
|
|
this.phoneDiv.classList.add('profile-subtitle');
|
|
|
|
const buttonsDiv = document.createElement('div');
|
|
buttonsDiv.classList.add('profile-buttons');
|
|
|
|
const className = 'profile-button btn-primary btn-transparent';
|
|
buttonsDiv.append(this.buttons.edit = Button(className, {icon: 'edit', text: 'EditAccount.Title'}));
|
|
buttonsDiv.append(this.buttons.folders = Button(className, {icon: 'folder', text: 'AccountSettings.Filters'}));
|
|
buttonsDiv.append(this.buttons.general = Button(className, {icon: 'settings', text: 'Telegram.GeneralSettingsViewController'}));
|
|
buttonsDiv.append(this.buttons.notifications = Button(className, {icon: 'unmute', text: 'AccountSettings.Notifications'}));
|
|
buttonsDiv.append(this.buttons.privacy = Button(className, {icon: 'lock', text: 'AccountSettings.PrivacyAndSecurity'}));
|
|
buttonsDiv.append(this.buttons.language = Button(className, {icon: 'language', text: 'AccountSettings.Language'}));
|
|
|
|
this.scrollable.append(this.avatarElem, this.nameDiv, this.phoneDiv, buttonsDiv);
|
|
this.scrollable.container.classList.add('profile-content-wrapper');
|
|
|
|
/* rootScope.$on('user_auth', (e) => {
|
|
this.fillElements();
|
|
}); */
|
|
|
|
this.buttons.edit.addEventListener('click', () => {
|
|
const tab = new AppEditProfileTab(this.slider);
|
|
tab.open();
|
|
});
|
|
|
|
this.buttons.folders.addEventListener('click', () => {
|
|
new AppChatFoldersTab(this.slider).open();
|
|
});
|
|
|
|
this.buttons.general.addEventListener('click', () => {
|
|
new AppGeneralSettingsTab(this.slider).open();
|
|
});
|
|
|
|
this.buttons.notifications.addEventListener('click', () => {
|
|
new AppNotificationsTab(this.slider).open();
|
|
});
|
|
|
|
this.buttons.privacy.addEventListener('click', () => {
|
|
new AppPrivacyAndSecurityTab(this.slider).open();
|
|
});
|
|
|
|
this.buttons.language.addEventListener('click', () => {
|
|
new AppLanguageTab(this.slider).open();
|
|
});
|
|
|
|
lottieLoader.loadLottieWorkers();
|
|
|
|
this.fillElements();
|
|
}
|
|
|
|
public fillElements() {
|
|
const user = appUsersManager.getSelf();
|
|
const peerId = user.id.toPeerId(false);
|
|
this.avatarElem.setAttribute('peer', '' + peerId);
|
|
|
|
this.nameDiv.append(new PeerTitle({peerId: peerId}).element);
|
|
this.phoneDiv.innerHTML = user.phone ? appUsersManager.formatUserPhone(user.phone) : '';
|
|
}
|
|
}
|