From 6bb932a371168ece8f0196b0a5ffca8964f2b214 Mon Sep 17 00:00:00 2001 From: morethanwords Date: Tue, 23 Mar 2021 14:17:04 +0400 Subject: [PATCH] T --- .../sidebarLeft/tabs/chatFolders.ts | 11 ++----- .../sidebarLeft/tabs/includedChats.ts | 30 ++++++++++++++++--- src/lib/langPack.ts | 12 ++++++++ 3 files changed, 40 insertions(+), 13 deletions(-) diff --git a/src/components/sidebarLeft/tabs/chatFolders.ts b/src/components/sidebarLeft/tabs/chatFolders.ts index 005da4c4..d6c5ea2e 100644 --- a/src/components/sidebarLeft/tabs/chatFolders.ts +++ b/src/components/sidebarLeft/tabs/chatFolders.ts @@ -15,7 +15,7 @@ import rootScope from "../../../lib/rootScope"; import AppEditFolderTab from "./editFolder"; import Row from "../../row"; import { SettingSection } from ".."; -import { i18n, i18n_, LangPackKey } from "../../../lib/langPack"; +import { i18n, i18n_, LangPackKey, join } from "../../../lib/langPack"; export default class AppChatFoldersTab extends SliderSuperTab { private createFolderBtn: HTMLElement; @@ -76,14 +76,7 @@ export default class AppChatFoldersTab extends SliderSuperTab { }); if(d.length) { - let arr: HTMLElement[] = d.slice(0, 1); - for(let i = 1; i < d.length; ++i) { - const isLast = (d.length - 1) === i; - const delimiterKey: LangPackKey = isLast ? 'WordDelimiterLast' : 'WordDelimiter'; - arr.push(i18n(delimiterKey)); - arr.push(d[i]); - } - + const arr = join(d); arr.forEach(el => { row.subtitle.append(el); }); diff --git a/src/components/sidebarLeft/tabs/includedChats.ts b/src/components/sidebarLeft/tabs/includedChats.ts index 7b9d5706..588c68eb 100644 --- a/src/components/sidebarLeft/tabs/includedChats.ts +++ b/src/components/sidebarLeft/tabs/includedChats.ts @@ -1,16 +1,16 @@ import { SliderSuperTab } from "../../slider"; import AppSelectPeers from "../../appSelectPeers"; import appDialogsManager from "../../../lib/appManagers/appDialogsManager"; -import appPeersManager from "../../../lib/appManagers/appPeersManager"; import appUsersManager from "../../../lib/appManagers/appUsersManager"; import { MyDialogFilter as DialogFilter } from "../../../lib/storages/filters"; -import rootScope from "../../../lib/rootScope"; import { copy } from "../../../helpers/object"; import ButtonIcon from "../../buttonIcon"; import CheckboxField from "../../checkboxField"; import Button from "../../button"; import AppEditFolderTab from "./editFolder"; -import { i18n, LangPackKey, _i18n } from "../../../lib/langPack"; +import { i18n, LangPackKey, _i18n, join } from "../../../lib/langPack"; +import appMessagesManager from "../../../lib/appManagers/appMessagesManager"; +import RichTextProcessor from "../../../lib/richtextprocessor"; export default class AppIncludedChatsTab extends SliderSuperTab { private editFolderTab: AppEditFolderTab; @@ -21,7 +21,9 @@ export default class AppIncludedChatsTab extends SliderSuperTab { private filter: DialogFilter; private originalFilter: DialogFilter; - init() { + private dialogsByFilters: Map>; + + protected init() { this.content.remove(); this.container.classList.add('included-chatlist-container'); this.confirmBtn = ButtonIcon('check btn-confirm blue', {noRipple: true}); @@ -92,6 +94,13 @@ export default class AppIncludedChatsTab extends SliderSuperTab { this.editFolderTab.setFilter(this.filter, false); this.close(); }); + + this.dialogsByFilters = new Map(); + appMessagesManager.filtersStorage.getDialogFilters().then(filters => { + for(const filter of filters) { + this.dialogsByFilters.set(filter, new Set(appMessagesManager.dialogsStorage.getFolder(filter.id).map(d => d.peerId))); + } + }); } checkbox(selected?: boolean) { @@ -124,6 +133,19 @@ export default class AppIncludedChatsTab extends SliderSuperTab { dom.containerEl.append(this.checkbox(selected)); if(selected) dom.listEl.classList.add('active'); + const foundInFilters: HTMLElement[] = []; + this.dialogsByFilters.forEach((dialogs, filter) => { + if(dialogs.has(peerId)) { + const span = document.createElement('span'); + span.innerHTML = RichTextProcessor.wrapEmojiText(filter.title); + foundInFilters.push(span); + } + }); + + const joined = join(foundInFilters, false); + joined.forEach(el => { + dom.lastMessageSpan.append(el); + }); /* let subtitle: LangPackKey; if(peerId > 0) { diff --git a/src/lib/langPack.ts b/src/lib/langPack.ts index d6422756..37400c45 100644 --- a/src/lib/langPack.ts +++ b/src/lib/langPack.ts @@ -230,4 +230,16 @@ export {i18n_}; const _i18n = I18n._i18n; export {_i18n}; +export function join(elements: HTMLElement[], useLast = true) { + const arr: HTMLElement[] = elements.slice(0, 1); + for(let i = 1; i < elements.length; ++i) { + const isLast = (elements.length - 1) === i; + const delimiterKey: LangPackKey = isLast && useLast ? 'WordDelimiterLast' : 'WordDelimiter'; + arr.push(i18n(delimiterKey)); + arr.push(elements[i]); + } + + return arr; +} + MOUNT_CLASS_TO && (MOUNT_CLASS_TO.I18n = I18n);