From 5055f70f773f537911a58cce19b643884c85241e Mon Sep 17 00:00:00 2001 From: Alexander Zinchuk Date: Tue, 28 Feb 2023 18:43:21 +0100 Subject: [PATCH] Chat List: Introduce Archive item (#2566) --- src/assets/fonts/icomoon.woff | Bin 54732 -> 56468 bytes src/assets/fonts/icomoon.woff2 | Bin 25496 -> 26296 bytes src/components/common/ChatOrUserPicker.tsx | 2 +- src/components/left/ArchivedChats.scss | 4 + src/components/left/ArchivedChats.tsx | 44 +- src/components/left/LeftColumn.tsx | 23 +- src/components/left/main/Archive.module.scss | 90 +++ src/components/left/main/Archive.tsx | 166 ++++++ src/components/left/main/ChatFolders.tsx | 28 +- src/components/left/main/ChatList.tsx | 79 ++- src/components/left/main/EmptyFolder.tsx | 14 +- src/components/left/main/LeftMain.tsx | 12 +- src/components/left/main/LeftMainHeader.tsx | 34 +- .../left/main/hooks/useTopicContextActions.ts | 2 +- .../middle/composer/MentionTooltip.scss | 2 + src/components/right/Profile.scss | 3 +- src/components/ui/DropdownMenu.tsx | 27 +- src/components/ui/ListItem.scss | 1 + src/config.ts | 3 +- src/global/actions/ui/misc.ts | 13 + src/global/cache.ts | 9 +- src/global/initialState.ts | 5 + src/global/types.ts | 10 + src/lib/teact/teactn.tsx | 1 + src/styles/Telegram T.json | 511 ++++++++++++------ src/styles/_common.scss | 12 +- src/styles/_variables.scss | 3 + src/styles/icons.scss | 15 + 28 files changed, 859 insertions(+), 254 deletions(-) create mode 100644 src/components/left/main/Archive.module.scss create mode 100644 src/components/left/main/Archive.tsx diff --git a/src/assets/fonts/icomoon.woff b/src/assets/fonts/icomoon.woff index 257f0970f1c617004952aae6602588d304cb869b..478f2d1366d636de20287892fb3fc799017cf522 100644 GIT binary patch delta 1911 zcmbtUO>7%Q6rMNh-A&^CvE5zU3n4$=)JAGZ*3NnzB_Xw1r{Sj%4sEVg(v+mo&`OP< z9Kc3GfCQH)1*FF;1>zNJaA*;B8-2-yZ>n`uEKpDHiRotT+WY6GT5fzj*5OaoCOiTtU$H1S#f_Ha~R^2j9E~$F7hz>Fz62^Cuv?1DkgQ zU3jMT{+ZKf7m&}w;)4mgv~-xBrAwt1(tzASo$z+0Wl9)jHC@TpU)_5! zRaSI!W}LI}8LIytsYSc=NKMnUE-f-Wtyf(=%G-|BnU>aiBU&aw?hojz-_ zrM-*ybWFBdo>Sj9J~J~;H=_3ugttjGJ@l2Pr$scK#w2M-HcZ0dLy`pGwi0V+Pp~q( z%)VjYu}yZ9-DbZrQJn5VvUBNaJy*>k1(PEKNK!fEPvi%~l*FSwG&Vvyj4;aZ+;DHwT6aUrRCii*9L z$*Tt8`2FN&vc+!Chm$>mlLarfQ!(VKAHdHBGJc>If|5a0rdqa=R?B9bXlA^QN}IY; zP94a$(bsk6778v8dAVLoWVA?F-LT-%u7p~Dc{rW8SBY{%G1S($TBCn`oT{3u89Cs!RSCi!y^&=SZo$;iGpgA?QykYmD!J{~9 z!a*S6s0hwg4r9srE0ipB==TuhN5b~q73HM^dfzVa?y;18lu9b7H%i?v;LV`gSwK|m zqaxOj_?f)#LS*P7gl>T~soJmq#o266yNnL*Y$06M9cn zmemm6CVrTjKucUKnw!RAdvhL56z$O`(tx*NB8!Qu1TQJwj3p!u-~lnOvT3|f7p0@D zn;m3qZxb`zA7Gbz5?8e}OsJ@(r~*_=6>pKav_(I_oO+Bb#SE{MAMB@r9NsVKq7rLq zHPtmI5li!=DX%1)WK6ECYuba2ovP}#PFGY_Svwf+m*Z(3dar9enl!8`in>;bJ0e!h zAqrKrrn`8)dH517ZzX_7G;F#?0{!AQcO;PdM*`K|GN4Zsv$Z9rG%_Ik{7T%h!xZ$Z zJ2Ti$fa?mr^-3sMLF!H%Y2YvQtN)$AUObh+0rU$+>|^H0T^5Z%z}W5h@Ecq6(vj;W ry0ZGg^*^`;?a{x{v{?JLXd1bY2^D_Mj2}dem delta 322 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 = ({ diff --git a/src/components/left/ArchivedChats.scss b/src/components/left/ArchivedChats.scss index 9a7f77b97..70d811ed7 100644 --- a/src/components/left/ArchivedChats.scss +++ b/src/components/left/ArchivedChats.scss @@ -28,4 +28,8 @@ transition: none; } } + + .archived-chats-more-menu { + margin-left: auto !important; + } } diff --git a/src/components/left/ArchivedChats.tsx b/src/components/left/ArchivedChats.tsx index 098b867d5..086d761b1 100644 --- a/src/components/left/ArchivedChats.tsx +++ b/src/components/left/ArchivedChats.tsx @@ -1,6 +1,10 @@ -import React, { memo } from '../../lib/teact/teact'; +import React, { memo, useCallback } from '../../lib/teact/teact'; +import { getActions } from '../../global'; import type { FC } from '../../lib/teact/teact'; +import type { LeftColumnContent, SettingsScreens } from '../../types'; +import type { FolderEditDispatch } from '../../hooks/reducers/useFoldersReducer'; +import type { GlobalState } from '../../global/types'; import buildClassName from '../../util/buildClassName'; import useLang from '../../hooks/useLang'; @@ -12,22 +16,33 @@ import useForumPanelRender from '../../hooks/useForumPanelRender'; import Button from '../ui/Button'; import ChatList from './main/ChatList'; import ForumPanel from './main/ForumPanel'; +import DropdownMenu from '../ui/DropdownMenu'; +import MenuItem from '../ui/MenuItem'; import './ArchivedChats.scss'; export type OwnProps = { isActive: boolean; + isForumPanelOpen?: boolean; + archiveSettings: GlobalState['archiveSettings']; onReset: () => void; onTopicSearch: NoneToVoidFunction; - isForumPanelOpen?: boolean; + onSettingsScreenSelect: (screen: SettingsScreens) => void; + foldersDispatch: FolderEditDispatch; + onLeftColumnContentChange: (content: LeftColumnContent) => void; }; const ArchivedChats: FC = ({ isActive, isForumPanelOpen, + archiveSettings, onReset, onTopicSearch, + onSettingsScreenSelect, + onLeftColumnContentChange, + foldersDispatch, }) => { + const { updateArchiveSettings } = getActions(); const lang = useLang(); useHistoryBack({ @@ -35,6 +50,10 @@ const ArchivedChats: FC = ({ onBack: onReset, }); + const handleDisplayArchiveInChats = useCallback(() => { + updateArchiveSettings({ isHidden: false }); + }, [updateArchiveSettings]); + const { shouldDisableDropdownMenuTransitionRef, handleDropdownMenuTransitionEnd, @@ -67,8 +86,27 @@ const ArchivedChats: FC = ({ {shouldRenderTitle &&

{lang('ArchivedChats')}

} + {archiveSettings.isHidden && ( + + + {lang('lng_context_archive_to_list')} + + + )} - + {shouldRenderForumPanel && ( = ({ isForumPanelOpen, forumPanelChatId, isClosingSearch, + archiveSettings, }) => { const { setGlobalSearchQuery, @@ -352,6 +355,11 @@ const LeftColumn: FC = ({ openChat({ id: currentUserId, shouldReplaceHistory: true }); }, [currentUserId, openChat]); + const handleArchivedChats = useCallback((e: KeyboardEvent) => { + e.preventDefault(); + setContent(LeftColumnContent.Archived); + }, []); + const handleHotkeySettings = useCallback((e: KeyboardEvent) => { e.preventDefault(); setContent(LeftColumnContent.Settings); @@ -360,7 +368,10 @@ const LeftColumn: FC = ({ useHotkeys({ 'Mod+Shift+F': handleHotkeySearch, 'Mod+Shift+S': handleHotkeySavedMessages, - 'Mod+0': handleHotkeySavedMessages, + ...(IS_PWA && { + 'Mod+0': handleHotkeySavedMessages, + 'Mod+9': handleArchivedChats, + }), ...(IS_MAC_OS && IS_PWA && { 'Mod+,': handleHotkeySettings }), }); @@ -411,7 +422,11 @@ const LeftColumn: FC = ({ isActive={isActive} onReset={handleReset} onTopicSearch={handleTopicSearch} + foldersDispatch={foldersDispatch} + onSettingsScreenSelect={handleSettingsScreenSelect} + onLeftColumnContentChange={setContent} isForumPanelOpen={isForumPanelOpen} + archiveSettings={archiveSettings} /> ); case ContentType.Settings: @@ -458,7 +473,7 @@ const LeftColumn: FC = ({ foldersDispatch={foldersDispatch} onContentChange={setContent} onSearchQuery={handleSearchQuery} - onScreenSelect={handleSettingsScreenSelect} + onSettingsScreenSelect={handleSettingsScreenSelect} onReset={handleReset} shouldSkipTransition={shouldSkipHistoryAnimations} isUpdateAvailable={isUpdateAvailable} @@ -498,6 +513,7 @@ export default memo(withGlobal( hasPasscode, }, isUpdateAvailable, + archiveSettings, } = global; const currentChat = selectCurrentChat(global); @@ -519,6 +535,7 @@ export default memo(withGlobal( isForumPanelOpen, forumPanelChatId, isClosingSearch: tabState.globalSearch.isClosing, + archiveSettings, }; }, )(LeftColumn)); diff --git a/src/components/left/main/Archive.module.scss b/src/components/left/main/Archive.module.scss new file mode 100644 index 000000000..c4c1fc432 --- /dev/null +++ b/src/components/left/main/Archive.module.scss @@ -0,0 +1,90 @@ +.root { + --background-color: var(--color-background); +} + +.minimized { + background-color: var(--color-background-secondary); + margin: -0.5rem -0.5rem 0 -0.5rem !important; + + &:hover { + opacity: 0.85; + } + + .button { + border-radius: 0; + padding: 0.375rem !important; + background-color: transparent; + } + + :global(body.is-ios) &, + :global(body.is-android) & { + .button { + padding-bottom: 0.3125rem !important; + } + } + + .title { + justify-content: center !important; + color: var(--color-text-secondary); + } + + .unread-count { + position: absolute; + right: 0.75rem; + background-color: transparent; + color: var(--color-text-secondary); + font-size: 0.8125rem; + } + + .info { + transform: none !important; + } + + .name { + line-height: 1.25rem !important; + font-size: 0.8125rem !important; + } + + &::after { + opacity: 0; + } +} + +.info { + transition: opacity 0.3s ease, transform var(--layer-transition); +} + +.icon { + margin-inline-end: 0.5rem; +} + +.name { + display: flex; + align-items: center; +} + +.avatarWrapper { + flex-shrink: 0; + background-color: var(--background-color); + z-index: 1; +} + +.avatar { + font-size: 1.625rem; + background: linear-gradient(var(--color-white) -125%, var(--color-archive)) !important; +} + +.title { + flex-grow: 1; +} + +.chatsPreview { + color: var(--color-text-secondary); + flex-grow: 1; + overflow: hidden; + text-overflow: ellipsis; +} + +.unread { + color: var(--color-text); +} diff --git a/src/components/left/main/Archive.tsx b/src/components/left/main/Archive.tsx new file mode 100644 index 000000000..6673c0e4e --- /dev/null +++ b/src/components/left/main/Archive.tsx @@ -0,0 +1,166 @@ +import React, { memo, useCallback, useMemo } from '../../../lib/teact/teact'; +import { getActions, getGlobal } from '../../../global'; + +import type { FC } from '../../../lib/teact/teact'; +import type { GlobalState } from '../../../global/types'; + +import { ARCHIVED_FOLDER_ID } from '../../../config'; +import buildClassName from '../../../util/buildClassName'; +import { compact } from '../../../util/iteratees'; +import { formatIntegerCompact } from '../../../util/textFormat'; +import renderText from '../../common/helpers/renderText'; + +import useLang from '../../../hooks/useLang'; +import { useFolderManagerForOrderedIds, useFolderManagerForUnreadCounters } from '../../../hooks/useFolderManager'; + +import ListItem from '../../ui/ListItem'; +import AnimatedCounter from '../../common/AnimatedCounter'; + +import styles from './Archive.module.scss'; + +type OwnProps = { + archiveSettings: GlobalState['archiveSettings']; + onDragEnter?: NoneToVoidFunction; + onClick?: NoneToVoidFunction; +}; + +const PREVIEW_SLICE = 5; + +const Archive: FC = ({ + archiveSettings, + onDragEnter, + onClick, +}) => { + const { updateArchiveSettings } = getActions(); + const lang = useLang(); + + const orderedChatIds = useFolderManagerForOrderedIds(ARCHIVED_FOLDER_ID); + const unreadCounters = useFolderManagerForUnreadCounters(); + const archiveUnreadCount = unreadCounters[ARCHIVED_FOLDER_ID]?.chatsCount; + + const previewItems = useMemo(() => { + if (!orderedChatIds?.length) return lang('Loading'); + + const chatsById = getGlobal().chats.byId; + + return orderedChatIds.slice(0, PREVIEW_SLICE).map((chatId, i, arr) => { + const isLast = i === arr.length - 1; + const chat = chatsById[chatId]; + if (!chat) { + return undefined; + } + + return ( + <> + + {renderText(chat.title)} + + {isLast ? '' : ', '} + + ); + }); + }, [orderedChatIds, lang, archiveUnreadCount]); + + const contextActions = useMemo(() => { + const actionMinimize = !archiveSettings.isMinimized && { + title: lang('lng_context_archive_collapse'), + icon: 'collapse', + handler: () => { + updateArchiveSettings({ isMinimized: true }); + }, + }; + + const actionExpand = archiveSettings.isMinimized && { + title: lang('lng_context_archive_expand'), + icon: 'expand', + handler: () => { + updateArchiveSettings({ isMinimized: false }); + }, + }; + + const actionHide = { + title: lang('lng_context_archive_to_menu'), + icon: 'archive-to-main', + handler: () => { + updateArchiveSettings({ isHidden: true }); + }, + }; + + return compact([actionMinimize, actionExpand, actionHide]); + }, [archiveSettings.isMinimized, lang, updateArchiveSettings]); + + const handleDragEnter = useCallback((e) => { + e.preventDefault(); + onDragEnter?.(); + }, [onDragEnter]); + + function renderCollapsed() { + return ( +
+
+
+

+ + {lang('ArchivedChats')} +

+
+ {Boolean(archiveUnreadCount) && ( +
+ +
+ )} +
+
+ ); + } + + function renderRegular() { + return ( + <> +
+
+ +
+
+
+
+
+

{lang('ArchivedChats')}

+
+
+
+
+ {previewItems} +
+ {Boolean(archiveUnreadCount) && ( +
+ +
+ )} +
+
+ + ); + } + + return ( + + {archiveSettings.isMinimized ? renderCollapsed() : renderRegular()} + + ); +}; + +export default memo(Archive); diff --git a/src/components/left/main/ChatFolders.tsx b/src/components/left/main/ChatFolders.tsx index 4a2c97cfb..acdd7ed2f 100644 --- a/src/components/left/main/ChatFolders.tsx +++ b/src/components/left/main/ChatFolders.tsx @@ -5,8 +5,9 @@ import React, { import { getActions, withGlobal } from '../../../global'; import type { ApiChatFolder } from '../../../api/types'; -import type { SettingsScreens } from '../../../types'; +import type { LeftColumnContent, SettingsScreens } from '../../../types'; import type { FolderEditDispatch } from '../../../hooks/reducers/useFoldersReducer'; +import type { GlobalState } from '../../../global/types'; import { ALL_FOLDER_ID } from '../../../config'; import { IS_TOUCH_ENV } from '../../../util/environment'; @@ -25,8 +26,9 @@ import TabList from '../../ui/TabList'; import ChatList from './ChatList'; type OwnProps = { - onScreenSelect: (screen: SettingsScreens) => void; + onSettingsScreenSelect: (screen: SettingsScreens) => void; foldersDispatch: FolderEditDispatch; + onLeftColumnContentChange: (content: LeftColumnContent) => void; shouldHideFolderTabs?: boolean; }; @@ -39,6 +41,8 @@ type StateProps = { lastSyncTime?: number; shouldSkipHistoryAnimations?: boolean; maxFolders: number; + hasArchivedChats?: boolean; + archiveSettings: GlobalState['archiveSettings']; }; const SAVED_MESSAGES_HOTKEY = '0'; @@ -46,7 +50,8 @@ const FIRST_FOLDER_INDEX = 0; const ChatFolders: FC = ({ foldersDispatch, - onScreenSelect, + onSettingsScreenSelect, + onLeftColumnContentChange, chatFoldersById, orderedFolderIds, activeChatFolder, @@ -56,6 +61,8 @@ const ChatFolders: FC = ({ shouldSkipHistoryAnimations, maxFolders, shouldHideFolderTabs, + hasArchivedChats, + archiveSettings, }) => { const { loadChatFolders, @@ -122,7 +129,7 @@ const ChatFolders: FC = ({ // Prevent `activeTab` pointing at non-existing folder after update useEffect(() => { - if (!folderTabs || !folderTabs.length) { + if (!folderTabs?.length) { return; } @@ -211,7 +218,10 @@ const ChatFolders: FC = ({ isForumPanelOpen={isForumPanelOpen} lastSyncTime={lastSyncTime} foldersDispatch={foldersDispatch} - onScreenSelect={onScreenSelect} + onSettingsScreenSelect={onSettingsScreenSelect} + onLeftColumnContentChange={onLeftColumnContentChange} + canDisplayArchive={hasArchivedChats && !archiveSettings.isHidden} + archiveSettings={archiveSettings} /> ); } @@ -249,8 +259,14 @@ export default memo(withGlobal( byId: chatFoldersById, orderedIds: orderedFolderIds, }, + chats: { + listIds: { + archived, + }, + }, currentUserId, lastSyncTime, + archiveSettings, } = global; const { shouldSkipHistoryAnimations, activeChatFolder } = selectTabState(global); @@ -262,7 +278,9 @@ export default memo(withGlobal( isForumPanelOpen: selectIsForumPanelOpen(global), lastSyncTime, shouldSkipHistoryAnimations, + hasArchivedChats: Boolean(archived?.length), maxFolders: selectCurrentLimit(global, 'dialogFilters'), + archiveSettings, }; }, )(ChatFolders)); diff --git a/src/components/left/main/ChatList.tsx b/src/components/left/main/ChatList.tsx index d3a52955b..b1b2604b4 100644 --- a/src/components/left/main/ChatList.tsx +++ b/src/components/left/main/ChatList.tsx @@ -4,12 +4,14 @@ import React, { import { getActions, getGlobal } from '../../../global'; import type { FC } from '../../../lib/teact/teact'; -import type { SettingsScreens } from '../../../types'; import type { FolderEditDispatch } from '../../../hooks/reducers/useFoldersReducer'; +import { LeftColumnContent } from '../../../types'; +import type { SettingsScreens } from '../../../types'; +import type { GlobalState } from '../../../global/types'; import { ALL_FOLDER_ID, - ARCHIVED_FOLDER_ID, CHAT_HEIGHT_FORUM_PX, + ARCHIVED_FOLDER_ID, ARCHIVE_MINIMIZED_HEIGHT, CHAT_HEIGHT_FORUM_PX, CHAT_HEIGHT_PX, CHAT_LIST_SLICE, } from '../../../config'; @@ -24,35 +26,43 @@ import { useIntersectionObserver } from '../../../hooks/useIntersectionObserver' import { useHotkeys } from '../../../hooks/useHotkeys'; import useDebouncedCallback from '../../../hooks/useDebouncedCallback'; import useChatOrderDiff from './hooks/useChatOrderDiff'; +import useCollapseWithForumPanel from './hooks/useCollapseWithForumPanel'; import InfiniteScroll from '../../ui/InfiniteScroll'; import Loading from '../../ui/Loading'; import Chat from './Chat'; import EmptyFolder from './EmptyFolder'; -import useCollapseWithForumPanel from './hooks/useCollapseWithForumPanel'; +import Archive from './Archive'; type OwnProps = { folderType: 'all' | 'archived' | 'folder'; folderId?: number; isActive: boolean; + canDisplayArchive?: boolean; + archiveSettings: GlobalState['archiveSettings']; isForumPanelOpen?: boolean; lastSyncTime?: number; - foldersDispatch?: FolderEditDispatch; - onScreenSelect?: (screen: SettingsScreens) => void; + foldersDispatch: FolderEditDispatch; + onSettingsScreenSelect: (screen: SettingsScreens) => void; + onLeftColumnContentChange: (content: LeftColumnContent) => void; }; const INTERSECTION_THROTTLE = 200; const DRAG_ENTER_DEBOUNCE = 500; +const RESERVED_HOTKEYS = new Set(['9', '0']); const ChatList: FC = ({ folderType, folderId, isActive, isForumPanelOpen, + canDisplayArchive, + archiveSettings, foldersDispatch, - onScreenSelect, + onSettingsScreenSelect, + onLeftColumnContentChange, }) => { - const { openChat, openNextChat } = getActions(); + const { openChat, openNextChat, closeForumPanel } = getActions(); // eslint-disable-next-line no-null/no-null const containerRef = useRef(null); const shouldIgnoreDragRef = useRef(false); @@ -61,8 +71,14 @@ const ChatList: FC = ({ folderType === 'all' ? ALL_FOLDER_ID : folderType === 'archived' ? ARCHIVED_FOLDER_ID : folderId! ); + const shouldDisplayArchive = folderType === 'all' && canDisplayArchive; + const orderedIds = useFolderManagerForOrderedIds(resolvedFolderId); + const chatsHeight = (orderedIds?.length || 0) * CHAT_HEIGHT_PX; + const archiveHeight = shouldDisplayArchive + ? archiveSettings.isMinimized ? ARCHIVE_MINIMIZED_HEIGHT : CHAT_HEIGHT_PX : 0; + const { orderDiffById, getAnimationType } = useChatOrderDiff(orderedIds); const [viewportIds, getMore] = useInfiniteScroll(undefined, orderedIds, undefined, CHAT_LIST_SLICE); @@ -88,10 +104,19 @@ const ChatList: FC = ({ function handleKeyDown(e: KeyboardEvent) { if (((IS_MAC_OS && e.metaKey) || (!IS_MAC_OS && e.ctrlKey)) && e.code.startsWith('Digit')) { const [, digit] = e.code.match(/Digit(\d)/) || []; - if (!digit) return; + if (!digit || RESERVED_HOTKEYS.has(digit)) return; - const position = Number(digit) - 1; - if (position > orderedIds!.length - 1 || position < 0) return; + const isArchiveInList = shouldDisplayArchive && !archiveSettings.isMinimized; + + const shift = isArchiveInList ? -1 : 0; + const position = Number(digit) + shift - 1; + + if (isArchiveInList && position === -1) { + onLeftColumnContentChange(LeftColumnContent.Archived); + return; + } + + if (position > orderedIds!.length - 1) return; openChat({ id: orderedIds![position], shouldReplaceHistory: true }); } @@ -102,7 +127,7 @@ const ChatList: FC = ({ return () => { document.removeEventListener('keydown', handleKeyDown); }; - }, [isActive, openChat, openNextChat, orderedIds]); + }, [archiveSettings, isActive, onLeftColumnContentChange, openChat, openNextChat, orderedIds, shouldDisplayArchive]); const { observe } = useIntersectionObserver({ rootRef: containerRef, @@ -111,6 +136,19 @@ const ChatList: FC = ({ useCollapseWithForumPanel(containerRef, isForumPanelOpen); + const handleArchivedClick = useCallback(() => { + onLeftColumnContentChange(LeftColumnContent.Archived); + closeForumPanel(); + }, [closeForumPanel, onLeftColumnContentChange]); + + const handleArchivedDragEnter = useCallback(() => { + if (shouldIgnoreDragRef.current) { + shouldIgnoreDragRef.current = false; + return; + } + handleArchivedClick(); + }, [handleArchivedClick]); + const handleDragEnter = useDebouncedCallback((chatId: string) => { if (shouldIgnoreDragRef.current) { shouldIgnoreDragRef.current = false; @@ -131,13 +169,13 @@ const ChatList: FC = ({ if (!viewportIds?.length) return 0; const global = getGlobal(); const viewportOffset = orderedIds!.indexOf(viewportIds![0]); - return orderedIds!.reduce((acc, id, i) => { + return archiveHeight + orderedIds!.reduce((acc, id, i) => { if (i >= viewportOffset) { return acc; } return acc + (selectChat(global, id)!.isForum ? CHAT_HEIGHT_FORUM_PX : CHAT_HEIGHT_PX); }, 0); - }, [orderedIds, viewportIds]); + }, [archiveHeight, orderedIds, viewportIds]); function renderChats() { const viewportOffset = orderedIds!.indexOf(viewportIds![0]); @@ -150,7 +188,7 @@ const ChatList: FC = ({ return viewportIds!.map((id, i) => { const isPinned = viewportOffset + i < pinnedCount; const expendedOffsetTop = currentChatListHeight; - const collapsedOffsetTop = (viewportOffset + i) * CHAT_HEIGHT_PX; + const collapsedOffsetTop = archiveHeight + (viewportOffset + i) * CHAT_HEIGHT_PX; currentChatListHeight += (selectChat(global, id)?.isForum ? CHAT_HEIGHT_FORUM_PX : CHAT_HEIGHT_PX); @@ -177,12 +215,21 @@ const ChatList: FC = ({ className={buildClassName('chat-list custom-scroll', isForumPanelOpen && 'forum-panel-open')} ref={containerRef} items={viewportIds} + itemSelector=".ListItem:not(.chat-item-archive)" preloadBackwards={CHAT_LIST_SLICE} withAbsolutePositioning - maxHeight={(orderedIds?.length || 0) * CHAT_HEIGHT_PX} + maxHeight={chatsHeight + archiveHeight} onLoadMore={getMore} onDragLeave={handleDragLeave} > + {shouldDisplayArchive && ( + + )} {viewportIds?.length ? ( renderChats() ) : viewportIds && !viewportIds.length ? ( @@ -191,7 +238,7 @@ const ChatList: FC = ({ folderId={folderId} folderType={folderType} foldersDispatch={foldersDispatch} - onScreenSelect={onScreenSelect} + onSettingsScreenSelect={onSettingsScreenSelect} /> ) ) : ( diff --git a/src/components/left/main/EmptyFolder.tsx b/src/components/left/main/EmptyFolder.tsx index 4d4cefbb9..d13d07766 100644 --- a/src/components/left/main/EmptyFolder.tsx +++ b/src/components/left/main/EmptyFolder.tsx @@ -18,8 +18,8 @@ import styles from './EmptyFolder.module.scss'; type OwnProps = { folderId?: number; folderType: 'all' | 'archived' | 'folder'; - foldersDispatch?: FolderEditDispatch; - onScreenSelect?: (screen: SettingsScreens) => void; + foldersDispatch: FolderEditDispatch; + onSettingsScreenSelect: (screen: SettingsScreens) => void; }; type StateProps = { @@ -30,15 +30,15 @@ type StateProps = { const ICON_SIZE = 96; const EmptyFolder: FC = ({ - chatFolder, animatedEmoji, foldersDispatch, onScreenSelect, + chatFolder, animatedEmoji, foldersDispatch, onSettingsScreenSelect, }) => { const lang = useLang(); const { isMobile } = useAppLayout(); const handleEditFolder = useCallback(() => { - foldersDispatch!({ type: 'editFolder', payload: chatFolder }); - onScreenSelect!(SettingsScreens.FoldersEditFolderFromChatList); - }, [chatFolder, foldersDispatch, onScreenSelect]); + foldersDispatch({ type: 'editFolder', payload: chatFolder }); + onSettingsScreenSelect(SettingsScreens.FoldersEditFolderFromChatList); + }, [chatFolder, foldersDispatch, onSettingsScreenSelect]); return (
@@ -49,7 +49,7 @@ const EmptyFolder: FC = ({

{lang(chatFolder ? 'ChatList.EmptyChatListFilterText' : 'Chat.EmptyChat')}

- {chatFolder && foldersDispatch && onScreenSelect && ( + {chatFolder && ( + ); + }, [trigger]); + return (
= ({ onKeyDown={handleKeyDown} onTransitionEnd={onTransitionEnd} > - {trigger({ onTrigger: toggleIsOpen, isOpen })} + {triggerComponent({ onTrigger: toggleIsOpen, isOpen })} { + const { archiveSettings } = global; + const { isHidden = archiveSettings.isHidden, isMinimized = archiveSettings.isMinimized } = payload; + + return { + ...global, + archiveSettings: { + isHidden, + isMinimized, + }, + }; +}); + addActionHandler('checkAppVersion', (global): ActionReturnType => { const APP_VERSION_REGEX = /^\d+\.\d+(\.\d+)?$/; diff --git a/src/global/cache.ts b/src/global/cache.ts index db29b384c..c365d0da5 100644 --- a/src/global/cache.ts +++ b/src/global/cache.ts @@ -195,10 +195,6 @@ function unsafeMigrateCache(cached: GlobalState, initialState: GlobalState) { cached.serviceNotifications = []; } - if (!cached.groupCalls) { - cached.groupCalls = initialState.groupCalls; - } - if (!cached.users.statusesById) { cached.users.statusesById = {}; } @@ -336,10 +332,6 @@ function unsafeMigrateCache(cached: GlobalState, initialState: GlobalState) { cached.availableReactions = cached.availableReactions .map((r) => ({ ...r, reaction: { emoticon: r.reaction as unknown as string } })); } - - if (!cached.attachmentSettings) { - cached.attachmentSettings = initialState.attachmentSettings; - } } function updateCache() { @@ -390,6 +382,7 @@ export function serializeGlobal(global: T) { 'attachmentSettings', 'leftColumnWidth', 'lastIsChatInfoShown', + 'archiveSettings', 'mediaViewer', 'audioPlayer', ]), diff --git a/src/global/initialState.ts b/src/global/initialState.ts index ceb84672f..45e2560df 100644 --- a/src/global/initialState.ts +++ b/src/global/initialState.ts @@ -186,6 +186,11 @@ export const INITIAL_GLOBAL_STATE: GlobalState = { transcriptions: {}, byTabId: {}, + + archiveSettings: { + isMinimized: false, + isHidden: false, + }, }; export const INITIAL_TAB_STATE: TabState = { diff --git a/src/global/types.ts b/src/global/types.ts index ee1eae386..26d5f7d8f 100644 --- a/src/global/types.ts +++ b/src/global/types.ts @@ -781,6 +781,11 @@ export type GlobalState = { serviceNotifications: ServiceNotification[]; byTabId: Record; + + archiveSettings: { + isMinimized: boolean; + isHidden: boolean; + }; }; export type CallSound = ( @@ -2088,6 +2093,11 @@ export interface ActionPayloads { shouldSendGrouped?: boolean; }; + updateArchiveSettings: { + isMinimized?: boolean; + isHidden?: boolean; + }; + openUrl: { url: string; shouldSkipModal?: boolean; diff --git a/src/lib/teact/teactn.tsx b/src/lib/teact/teactn.tsx index 9da55ccd2..a02798f25 100644 --- a/src/lib/teact/teactn.tsx +++ b/src/lib/teact/teactn.tsx @@ -332,6 +332,7 @@ export function typify< if (DEBUG) { (window as any).getGlobal = getGlobal; + (window as any).setGlobal = setGlobal; document.addEventListener('dblclick', () => { // eslint-disable-next-line no-console diff --git a/src/styles/Telegram T.json b/src/styles/Telegram T.json index 96bd27303..fcf3798a3 100644 --- a/src/styles/Telegram T.json +++ b/src/styles/Telegram T.json @@ -157,13 +157,53 @@ }, { "selection": [ + { + "order": 759, + "id": 90, + "name": "archive-filled", + "prevSize": 32, + "code": 59834, + "tempChar": "" + }, + { + "order": 758, + "id": 89, + "name": "archive-from-main", + "prevSize": 32, + "code": 59835, + "tempChar": "" + }, + { + "order": 757, + "id": 88, + "name": "archive-to-main", + "prevSize": 32, + "code": 59836, + "tempChar": "" + }, + { + "order": 756, + "id": 87, + "name": "collapse", + "prevSize": 32, + "code": 59837, + "tempChar": "" + }, + { + "order": 755, + "id": 86, + "name": "expand", + "prevSize": 32, + "code": 59838, + "tempChar": "" + }, { "order": 754, "id": 85, "name": "replies", "prevSize": 32, "code": 59833, - "tempChar": "" + "tempChar": "" }, { "order": 746, @@ -171,7 +211,7 @@ "name": "forums", "prevSize": 32, "code": 59828, - "tempChar": "" + "tempChar": "" }, { "order": 743, @@ -179,7 +219,7 @@ "name": "hashtag", "prevSize": 32, "code": 59825, - "tempChar": "" + "tempChar": "" }, { "order": 744, @@ -187,7 +227,7 @@ "name": "reopen-topic", "prevSize": 32, "code": 59826, - "tempChar": "" + "tempChar": "" }, { "order": 745, @@ -195,7 +235,7 @@ "name": "close-topic", "prevSize": 32, "code": 59827, - "tempChar": "" + "tempChar": "" }, { "order": 739, @@ -203,7 +243,7 @@ "name": "open-in-new-tab", "prevSize": 32, "code": 59823, - "tempChar": "" + "tempChar": "" }, { "order": 738, @@ -211,7 +251,7 @@ "name": "pip", "prevSize": 32, "code": 59822, - "tempChar": "" + "tempChar": "" }, { "order": 737, @@ -219,7 +259,7 @@ "name": "gift", "prevSize": 32, "code": 59821, - "tempChar": "" + "tempChar": "" }, { "order": 734, @@ -227,7 +267,7 @@ "name": "sort", "prevSize": 32, "code": 59820, - "tempChar": "" + "tempChar": "" }, { "order": 732, @@ -235,7 +275,7 @@ "name": "web", "prevSize": 32, "code": 59819, - "tempChar": "" + "tempChar": "" }, { "order": 731, @@ -243,7 +283,7 @@ "name": "transcribe", "prevSize": 32, "code": 59818, - "tempChar": "" + "tempChar": "" }, { "order": 719, @@ -251,7 +291,7 @@ "name": "add-one-badge", "prevSize": 32, "code": 59803, - "tempChar": "" + "tempChar": "" }, { "order": 720, @@ -259,7 +299,7 @@ "name": "chat-badge", "prevSize": 32, "code": 59808, - "tempChar": "" + "tempChar": "" }, { "order": 721, @@ -267,7 +307,7 @@ "name": "chats-badge", "prevSize": 32, "code": 59809, - "tempChar": "" + "tempChar": "" }, { "order": 722, @@ -275,7 +315,7 @@ "name": "double-badge", "prevSize": 32, "code": 59810, - "tempChar": "" + "tempChar": "" }, { "order": 723, @@ -283,7 +323,7 @@ "name": "file-badge", "prevSize": 32, "code": 59811, - "tempChar": "" + "tempChar": "" }, { "order": 724, @@ -291,7 +331,7 @@ "name": "folder-badge", "prevSize": 32, "code": 59812, - "tempChar": "" + "tempChar": "" }, { "order": 726, @@ -299,7 +339,7 @@ "name": "link-badge", "prevSize": 32, "code": 59813, - "tempChar": "" + "tempChar": "" }, { "order": 725, @@ -307,7 +347,7 @@ "name": "pin-badge", "prevSize": 32, "code": 59814, - "tempChar": "" + "tempChar": "" }, { "order": 727, @@ -315,7 +355,7 @@ "name": "premium", "prevSize": 32, "code": 59815, - "tempChar": "" + "tempChar": "" }, { "order": 728, @@ -323,7 +363,7 @@ "name": "unlock-badge", "prevSize": 32, "code": 59816, - "tempChar": "" + "tempChar": "" }, { "order": 729, @@ -331,7 +371,7 @@ "name": "lock-badge", "prevSize": 32, "code": 59817, - "tempChar": "" + "tempChar": "" }, { "order": 715, @@ -339,7 +379,7 @@ "name": "key", "prevSize": 32, "code": 59802, - "tempChar": "" + "tempChar": "" }, { "order": 714, @@ -347,7 +387,7 @@ "name": "heart-outline", "prevSize": 32, "code": 59806, - "tempChar": "" + "tempChar": "" }, { "order": 713, @@ -355,7 +395,7 @@ "name": "heart", "prevSize": 32, "code": 59807, - "tempChar": "" + "tempChar": "" }, { "order": 712, @@ -363,7 +403,7 @@ "name": "word-wrap", "prevSize": 32, "code": 59805, - "tempChar": "" + "tempChar": "" }, { "order": 708, @@ -371,7 +411,7 @@ "name": "webapp", "prevSize": 32, "code": 59795, - "tempChar": "" + "tempChar": "" }, { "order": 707, @@ -379,7 +419,7 @@ "name": "reload", "prevSize": 32, "code": 59796, - "tempChar": "" + "tempChar": "" }, { "order": 706, @@ -387,7 +427,7 @@ "name": "install", "prevSize": 32, "code": 59801, - "tempChar": "" + "tempChar": "" }, { "order": 705, @@ -395,7 +435,7 @@ "name": "favorite-filled", "prevSize": 32, "code": 59800, - "tempChar": "" + "tempChar": "" }, { "order": 702, @@ -403,7 +443,7 @@ "name": "share-screen", "prevSize": 32, "code": 59770, - "tempChar": "" + "tempChar": "" }, { "order": 701, @@ -411,7 +451,7 @@ "name": "video-outlined", "prevSize": 32, "code": 59799, - "tempChar": "" + "tempChar": "" }, { "order": 700, @@ -419,7 +459,7 @@ "name": "stats", "prevSize": 32, "code": 59798, - "tempChar": "" + "tempChar": "" }, { "order": 699, @@ -427,7 +467,7 @@ "name": "copy-media", "prevSize": 32, "code": 59797, - "tempChar": "" + "tempChar": "" }, { "order": 704, @@ -435,7 +475,7 @@ "name": "sidebar", "prevSize": 32, "code": 59794, - "tempChar": "" + "tempChar": "" }, { "order": 690, @@ -443,7 +483,7 @@ "name": "video-stop", "prevSize": 32, "code": 59787, - "tempChar": "" + "tempChar": "" }, { "order": 678, @@ -451,7 +491,7 @@ "name": "speaker", "prevSize": 32, "code": 59777, - "tempChar": "" + "tempChar": "" }, { "order": 679, @@ -459,7 +499,7 @@ "name": "speaker-outline", "prevSize": 32, "code": 59778, - "tempChar": "" + "tempChar": "" }, { "order": 680, @@ -467,7 +507,7 @@ "name": "phone-discard-outline", "prevSize": 32, "code": 59779, - "tempChar": "" + "tempChar": "" }, { "order": 681, @@ -475,7 +515,7 @@ "name": "allow-speak", "prevSize": 32, "code": 59780, - "tempChar": "" + "tempChar": "" }, { "order": 682, @@ -483,7 +523,7 @@ "name": "stop-raising-hand", "prevSize": 32, "code": 59781, - "tempChar": "" + "tempChar": "" }, { "order": 683, @@ -491,7 +531,7 @@ "name": "share-screen-outlined", "prevSize": 32, "code": 59782, - "tempChar": "" + "tempChar": "" }, { "order": 684, @@ -499,7 +539,7 @@ "name": "voice-chat", "prevSize": 32, "code": 59783, - "tempChar": "" + "tempChar": "" }, { "order": 689, @@ -507,7 +547,7 @@ "name": "video", "prevSize": 32, "code": 59784, - "tempChar": "" + "tempChar": "" }, { "order": 686, @@ -515,7 +555,7 @@ "name": "noise-suppression", "prevSize": 32, "code": 59785, - "tempChar": "" + "tempChar": "" }, { "order": 703, @@ -523,7 +563,7 @@ "name": "phone-discard", "prevSize": 32, "code": 59786, - "tempChar": "" + "tempChar": "" }, { "order": 667, @@ -531,7 +571,7 @@ "name": "bot-commands-filled", "prevSize": 32, "code": 59775, - "tempChar": "" + "tempChar": "" }, { "order": 664, @@ -539,7 +579,7 @@ "name": "reply-filled", "prevSize": 32, "code": 59776, - "tempChar": "" + "tempChar": "" }, { "order": 656, @@ -547,7 +587,7 @@ "name": "bug", "prevSize": 32, "code": 59774, - "tempChar": "" + "tempChar": "" }, { "order": 619, @@ -555,7 +595,7 @@ "name": "data", "prevSize": 32, "code": 59773, - "tempChar": "" + "tempChar": "" }, { "order": 622, @@ -563,7 +603,7 @@ "name": "darkmode", "prevSize": 32, "code": 59769, - "tempChar": "" + "tempChar": "" }, { "order": 711, @@ -571,7 +611,7 @@ "name": "animations", "prevSize": 32, "code": 59804, - "tempChar": "" + "tempChar": "" }, { "order": 626, @@ -579,7 +619,7 @@ "name": "enter", "prevSize": 32, "code": 59771, - "tempChar": "" + "tempChar": "" }, { "order": 627, @@ -587,7 +627,7 @@ "name": "fontsize", "prevSize": 32, "code": 59772, - "tempChar": "" + "tempChar": "" }, { "order": 630, @@ -595,7 +635,7 @@ "name": "permissions", "prevSize": 32, "code": 59766, - "tempChar": "" + "tempChar": "" }, { "order": 631, @@ -603,7 +643,7 @@ "name": "card", "prevSize": 32, "code": 59767, - "tempChar": "" + "tempChar": "" }, { "order": 634, @@ -611,7 +651,7 @@ "name": "truck", "prevSize": 32, "code": 59768, - "tempChar": "" + "tempChar": "" }, { "order": 663, @@ -619,7 +659,7 @@ "name": "share-filled", "prevSize": 32, "code": 59738, - "tempChar": "" + "tempChar": "" }, { "order": 638, @@ -627,7 +667,7 @@ "name": "bold", "prevSize": 32, "code": 59745, - "tempChar": "" + "tempChar": "" }, { "order": 639, @@ -635,7 +675,7 @@ "name": "bot-command", "prevSize": 32, "code": 59746, - "tempChar": "" + "tempChar": "" }, { "order": 642, @@ -643,7 +683,7 @@ "name": "calendar-filter", "prevSize": 32, "code": 59747, - "tempChar": "" + "tempChar": "" }, { "order": 643, @@ -651,7 +691,7 @@ "name": "comments", "prevSize": 32, "code": 59748, - "tempChar": "" + "tempChar": "" }, { "order": 645, @@ -659,7 +699,7 @@ "name": "comments-sticker", "prevSize": 32, "code": 59749, - "tempChar": "" + "tempChar": "" }, { "order": 646, @@ -667,7 +707,7 @@ "name": "arrow-down", "prevSize": 32, "code": 59750, - "tempChar": "" + "tempChar": "" }, { "order": 668, @@ -675,7 +715,7 @@ "name": "email", "prevSize": 32, "code": 59751, - "tempChar": "" + "tempChar": "" }, { "order": 648, @@ -683,7 +723,7 @@ "name": "italic", "prevSize": 32, "code": 59752, - "tempChar": "" + "tempChar": "" }, { "order": 620, @@ -691,7 +731,7 @@ "name": "link", "prevSize": 32, "code": 59753, - "tempChar": "" + "tempChar": "" }, { "order": 742, @@ -699,7 +739,7 @@ "name": "link-broken", "prevSize": 32, "code": 59824, - "tempChar": "" + "tempChar": "" }, { "order": 621, @@ -707,7 +747,7 @@ "name": "mention", "prevSize": 32, "code": 59754, - "tempChar": "" + "tempChar": "" }, { "order": 624, @@ -715,7 +755,7 @@ "name": "monospace", "prevSize": 32, "code": 59755, - "tempChar": "" + "tempChar": "" }, { "order": 625, @@ -723,7 +763,7 @@ "name": "next", "prevSize": 32, "code": 59756, - "tempChar": "" + "tempChar": "" }, { "order": 628, @@ -731,7 +771,7 @@ "name": "password-off", "prevSize": 32, "code": 59757, - "tempChar": "" + "tempChar": "" }, { "order": 629, @@ -739,7 +779,7 @@ "name": "pin-list", "prevSize": 32, "code": 59758, - "tempChar": "" + "tempChar": "" }, { "order": 632, @@ -747,7 +787,7 @@ "name": "previous", "prevSize": 32, "code": 59759, - "tempChar": "" + "tempChar": "" }, { "order": 633, @@ -755,7 +795,7 @@ "name": "replace", "prevSize": 32, "code": 59760, - "tempChar": "" + "tempChar": "" }, { "order": 636, @@ -763,7 +803,7 @@ "name": "schedule", "prevSize": 32, "code": 59761, - "tempChar": "" + "tempChar": "" }, { "order": 691, @@ -771,7 +811,7 @@ "name": "strikethrough", "prevSize": 32, "code": 59762, - "tempChar": "" + "tempChar": "" }, { "order": 692, @@ -779,7 +819,7 @@ "name": "underlined", "prevSize": 32, "code": 59763, - "tempChar": "" + "tempChar": "" }, { "order": 641, @@ -787,7 +827,7 @@ "name": "zoom-in", "prevSize": 32, "code": 59764, - "tempChar": "" + "tempChar": "" }, { "order": 649, @@ -795,7 +835,7 @@ "name": "zoom-out", "prevSize": 32, "code": 59765, - "tempChar": "" + "tempChar": "" } ], "id": 2, @@ -809,6 +849,117 @@ "height": 1024, "prevSize": 32, "icons": [ + { + "id": 90, + "paths": [ + "M938.267 287.6c-2.133-33.067-13.867-64.8-33.733-91.333l-64-85.333-6.267-7.867c-32.267-38.133-79.867-60.4-130.267-60.4l-394 0.267c-50 2.933-96.267 27.733-126.533 68l-64 85.333-6.4 9.067c-18 27.733-27.733 60.133-27.733 93.333v469.333c0 94.267 76.4 170.667 170.667 170.667h512c94.267 0 170.667-76.4 170.667-170.667v-469.333l-0.4-11.067zM673.067 538.267l-3.6 4-128 128c-15.333 15.333-39.6 16.533-56.267 3.6l-4-3.6-128-128c-16.667-16.667-16.667-43.733 0-60.4v0c15.333-15.333 39.6-16.533 56.267-3.6l4 3.6 97.867 97.867 97.867-97.867c16.667-16.667 43.733-16.667 60.4 0 15.2 15.467 16.4 39.733 3.467 56.4zM768 213.333h-512c-16.533 0-32.667 2.4-47.733 6.8l43.467-58 4.667-5.6c16-18.133 39.2-28.533 63.6-28.533l391.333 0.267c24.133 2.133 46.4 14.267 60.933 33.867l43.467 58c-15.2-4.4-31.2-6.8-47.733-6.8z" + ], + "attrs": [ + {} + ], + "isMulticolor": false, + "isMulticolor2": false, + "grid": 24, + "tags": [ + "archive-filled" + ] + }, + { + "id": 89, + "paths": [ + "M320 42.667h384c50.4 0 98 22.267 130.267 60.4l6.267 7.867 64 85.333c20 26.533 31.6 58.4 33.733 91.333l0.4 11.067v469.333c0 94.267-76.4 170.667-170.667 170.667h-512c-94.267 0-170.667-76.4-170.667-170.667v-469.333c0-33.2 9.733-65.6 27.733-93.333l6.4-9.067 64-85.333c30.267-40.267 76.533-65.067 126.533-68l10-0.267zM768 298.667h-512c-47.067 0-85.333 38.267-85.333 85.333v384c0 47.067 38.267 85.333 85.333 85.333h512c47.067 0 85.333-38.267 85.333-85.333v-384c0-47.067-38.267-85.333-85.333-85.333zM704 128h-384c-24.4 0-47.6 10.4-63.6 28.533l-4.667 5.6-43.467 58c15.2-4.4 31.2-6.8 47.733-6.8h512c16.533 0 32.533 2.4 47.733 6.8l-43.467-58c-14.667-19.6-36.933-31.733-60.933-33.867l-7.333-0.267z", + "M298.533 576.133c0-23.6 19.067-42.667 42.667-42.667h248.667l-67.867-79.2c-15.333-17.867-13.333-44.8 4.533-60.133 8-6.933 17.867-10.267 27.733-10.267 12 0 24 5.067 32.4 14.933l128.4 149.6c0 0 0.133 0.133 0.133 0.133 0.4 0.4 0.667 0.8 1.067 1.2 0.133 0.133 0.133 0.133 0.267 0.267 0.267 0.4 0.533 0.667 0.8 1.067 0.8 1.067 1.467 2 2 3.067 0.267 0.4 0.4 0.8 0.667 1.067 0.133 0.133 0.133 0.267 0.267 0.533 0.133 0.4 0.4 0.667 0.533 1.067 0.267 0.533 0.4 0.933 0.667 1.333 0.133 0.4 0.267 0.667 0.533 1.067 0.133 0.4 0.267 0.667 0.4 1.067s0.267 0.667 0.4 1.067 0.533 1.467 0.667 2.133c0.267 0.933 0.533 1.733 0.667 2.667 0 0.267 0.133 0.4 0.133 0.667 0 0.133 0 0.133 0 0.267 0.133 0.4 0.133 0.933 0.267 1.333 0.267 1.867 0.533 3.733 0.533 5.467 0 0.933 0 2 0 2.933 0 0.4 0 0.8 0 1.067-0.133 1.467-0.267 2.933-0.533 4.533 0 0.4-0.133 0.8-0.133 1.067-0.133 0.4-0.133 0.8-0.267 1.067 0 0.267-0.133 0.533-0.133 0.667-0.133 0.4-0.133 0.667-0.267 1.067 0 0.267-0.133 0.533-0.267 0.8-0.133 0.4-0.267 0.8-0.4 1.2-0.4 1.2-0.8 2.533-1.333 3.733-0.267 0.533-0.533 1.2-0.8 1.733-0.533 1.2-1.067 2.267-1.733 3.333 0 0 0 0 0 0.133-0.667 1.067-1.333 2.133-2 3.2-0.8 1.067-1.6 2-2.4 3.067-0.133 0.133-0.267 0.4-0.533 0.533l-127.6 148.8c-15.333 17.867-42.267 20-60.133 4.667s-20-42.267-4.667-60.133l67.733-78.933h-248.4c-23.467 0.4-42.667-18.667-42.667-42.267z", + "M725.467 575.733c0-0.533 0-0.933 0-1.467 0 0.533 0 0.933 0 1.467z", + "M725.467 577.2c0-0.533 0-0.933 0-1.467 0 0.533 0 1.067 0 1.467z", + "M724.933 582.8c0.267-1.467 0.4-2.933 0.533-4.533-0.133 1.6-0.267 3.067-0.533 4.533z", + "M725.333 574.267c-0.133-1.867-0.267-3.733-0.533-5.467 0.267 1.733 0.533 3.6 0.533 5.467z", + "M719.6 597.6c0.667-1.067 1.2-2.267 1.733-3.333-0.533 1.2-1.067 2.267-1.733 3.333z", + "M719.6 597.733c-0.667 1.067-1.333 2.133-2 3.2 0.667-1.067 1.333-2.133 2-3.2z", + "M715.2 603.867c0.8-0.933 1.6-2 2.4-3.067-0.8 1.067-1.6 2.133-2.4 3.067z" + ], + "attrs": [ + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {} + ], + "isMulticolor": false, + "isMulticolor2": false, + "grid": 24, + "tags": [ + "archive-from-main" + ] + }, + { + "id": 88, + "paths": [ + "M320 42.667h384c50.4 0 98 22.267 130.267 60.4l6.267 7.867 64 85.333c20 26.533 31.6 58.4 33.733 91.333l0.4 11.067v469.333c0 94.267-76.4 170.667-170.667 170.667h-512c-94.267 0-170.667-76.4-170.667-170.667v-469.333c0-33.2 9.733-65.6 27.733-93.333l6.4-9.067 64-85.333c30.267-40.267 76.533-65.067 126.533-68l10-0.267zM768 298.667h-512c-47.067 0-85.333 38.267-85.333 85.333v384c0 47.067 38.267 85.333 85.333 85.333h512c47.067 0 85.333-38.267 85.333-85.333v-384c0-47.067-38.267-85.333-85.333-85.333zM704 128h-384c-24.4 0-47.6 10.4-63.6 28.533l-4.667 5.6-43.467 58c15.2-4.4 31.2-6.8 47.733-6.8h512c16.533 0 32.533 2.4 47.733 6.8l-43.467-58c-14.667-19.6-36.933-31.733-60.933-33.867l-7.333-0.267z", + "M725.467 575.867c0 23.6-19.067 42.667-42.667 42.667h-248.8l67.867 79.2c15.333 17.867 13.333 44.8-4.533 60.133-8 6.933-17.867 10.267-27.733 10.267-12 0-24-5.067-32.4-14.933l-128.4-149.6c0 0-0.133-0.133-0.133-0.133-0.4-0.4-0.667-0.8-1.067-1.2-0.133-0.133-0.133-0.133-0.267-0.267-0.267-0.4-0.533-0.667-0.8-1.067-0.8-1.067-1.467-2-2-3.067-0.267-0.4-0.4-0.8-0.667-1.067-0.133-0.133-0.133-0.267-0.267-0.533-0.133-0.4-0.4-0.667-0.533-1.067-0.267-0.533-0.4-0.933-0.667-1.333-0.133-0.4-0.267-0.667-0.533-1.067-0.133-0.4-0.267-0.667-0.4-1.067s-0.267-0.667-0.4-1.067-0.533-1.467-0.667-2.133c-0.267-0.933-0.533-1.733-0.667-2.667 0-0.267-0.133-0.4-0.133-0.667 0-0.133 0-0.133 0-0.267-0.133-0.4-0.133-0.933-0.267-1.333-0.267-1.867-0.533-3.733-0.533-5.467 0-0.933 0-2 0-2.933 0-0.4 0-0.8 0-1.067 0.133-1.467 0.267-2.933 0.533-4.533 0-0.4 0.133-0.8 0.133-1.067 0.133-0.4 0.133-0.8 0.267-1.067 0-0.267 0.133-0.533 0.133-0.667 0.133-0.4 0.133-0.667 0.267-1.067 0-0.267 0.133-0.533 0.267-0.8 0.133-0.4 0.267-0.8 0.4-1.2 0.4-1.2 0.8-2.533 1.333-3.733 0.267-0.533 0.533-1.2 0.8-1.733 0.533-1.2 1.067-2.267 1.733-3.333 0 0 0 0 0-0.133 0.667-1.067 1.333-2.133 2-3.2 0.8-1.067 1.6-2 2.4-3.067 0.133-0.133 0.267-0.4 0.533-0.533l127.6-148.8c15.333-17.867 42.267-20 60.133-4.667s20 42.267 4.667 60.133l-67.733 78.933h248.8c23.333-0.4 42.4 18.667 42.4 42.267z", + "M298.533 576.267c0 0.533 0 0.933 0 1.467 0-0.533 0-0.933 0-1.467z", + "M298.533 574.8c0 0.533 0 0.933 0 1.467 0-0.533 0-1.067 0-1.467z", + "M299.067 569.2c-0.267 1.467-0.4 2.933-0.533 4.533 0.133-1.6 0.267-3.067 0.533-4.533z", + "M298.667 577.733c0.133 1.867 0.267 3.733 0.533 5.467-0.267-1.733-0.533-3.6-0.533-5.467z", + "M304.4 554.4c-0.667 1.067-1.2 2.267-1.733 3.333 0.533-1.2 1.067-2.267 1.733-3.333z", + "M304.4 554.267c0.667-1.067 1.333-2.133 2-3.2-0.667 1.067-1.333 2.133-2 3.2z", + "M308.8 548.133c-0.8 0.933-1.6 2-2.4 3.067 0.8-1.067 1.6-2.133 2.4-3.067z" + ], + "attrs": [ + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {} + ], + "isMulticolor": false, + "isMulticolor2": false, + "grid": 24, + "tags": [ + "archive-to-main" + ] + }, + { + "id": 87, + "paths": [ + "M925.733 925.733c-8.267 8.267-19.2 12.533-30.133 12.533s-21.867-4.133-30.133-12.533l-182.4-182.267v67.6c0 23.6-19.067 42.667-42.667 42.667-21.867 0-39.867-16.533-42.4-37.733l-0.267-4.933v-170.667c0-21.867 16.533-39.867 37.733-42.4l4.933-0.267h170.667c23.6 0 42.667 19.067 42.667 42.667 0 21.867-16.4 39.867-37.733 42.4l-4.933 0.267h-67.6l182.4 182.4c16.533 16.667 16.533 43.6-0.133 60.267z", + "M98.267 98.267c8.267-8.267 19.2-12.533 30.133-12.533s21.867 4.133 30.133 12.533l182.4 182.4v-67.6c0-23.6 19.067-42.667 42.667-42.667 21.867 0 39.867 16.533 42.4 37.733l0.267 4.933v170.667c0 21.867-16.533 39.867-37.733 42.4l-4.933 0.267h-170.667c-23.6 0-42.667-19.067-42.667-42.667 0-21.867 16.533-39.867 37.733-42.4l4.933-0.267h67.6l-182.267-182.533c-16.667-16.667-16.667-43.6 0-60.267z" + ], + "attrs": [ + {}, + {} + ], + "isMulticolor": false, + "isMulticolor2": false, + "grid": 24, + "tags": [ + "collapse" + ] + }, + { + "id": 86, + "paths": [ + "M413.467 413.467c-8.267 8.267-19.2 12.533-30.133 12.533s-21.867-4.133-30.133-12.533l-182.4-182.4v67.6c0 23.6-19.067 42.667-42.667 42.667-21.867 0-39.867-16.533-42.4-37.733l-0.267-4.933v-170.667c0-21.867 16.533-39.867 37.733-42.4l4.933-0.267h170.667c23.6 0 42.667 19.067 42.667 42.667 0 21.867-16.533 39.867-37.733 42.4l-4.933 0.267h-67.6l182.4 182.4c16.533 16.667 16.533 43.733-0.133 60.4z", + "M610.267 610.267c8.267-8.267 19.2-12.533 30.133-12.533s21.867 4.133 30.133 12.533l182.4 182.4v-67.6c0-23.6 19.067-42.667 42.667-42.667 21.867 0 39.867 16.533 42.4 37.733l0.267 4.933v170.667c0 21.867-16.533 39.867-37.733 42.4l-4.933 0.267h-170.667c-23.6 0-42.667-19.067-42.667-42.667 0-21.867 16.533-39.867 37.733-42.4l4.933-0.267h67.6l-182.267-182.533c-16.667-16.667-16.667-43.6 0-60.267z" + ], + "attrs": [ + {}, + {} + ], + "isMulticolor": false, + "isMulticolor2": false, + "grid": 24, + "tags": [ + "expand" + ] + }, { "id": 85, "paths": [ @@ -3705,7 +3856,7 @@ "name": "spoiler-disable", "prevSize": 32, "code": 59829, - "tempChar": "" + "tempChar": "" }, { "order": 752, @@ -3713,7 +3864,7 @@ "name": "grouped", "prevSize": 32, "code": 59830, - "tempChar": "" + "tempChar": "" }, { "order": 751, @@ -3721,7 +3872,7 @@ "name": "grouped-disable", "prevSize": 32, "code": 59831, - "tempChar": "" + "tempChar": "" }, { "order": 749, @@ -3729,7 +3880,7 @@ "name": "spoiler", "prevSize": 32, "code": 59832, - "tempChar": "" + "tempChar": "" }, { "order": 576, @@ -3737,7 +3888,7 @@ "name": "select", "prevSize": 32, "code": 59744, - "tempChar": "" + "tempChar": "" }, { "order": 480, @@ -3745,7 +3896,7 @@ "name": "folder", "prevSize": 32, "code": 59667, - "tempChar": "" + "tempChar": "" }, { "order": 481, @@ -3753,7 +3904,7 @@ "name": "bots", "prevSize": 32, "code": 59669, - "tempChar": "" + "tempChar": "" }, { "order": 482, @@ -3761,7 +3912,7 @@ "name": "calendar", "prevSize": 32, "code": 59670, - "tempChar": "" + "tempChar": "" }, { "order": 483, @@ -3769,7 +3920,7 @@ "name": "cloud-download", "prevSize": 32, "code": 59671, - "tempChar": "" + "tempChar": "" }, { "order": 484, @@ -3777,7 +3928,7 @@ "name": "colorize", "prevSize": 32, "code": 59672, - "tempChar": "" + "tempChar": "" }, { "order": 651, @@ -3785,7 +3936,7 @@ "name": "forward", "prevSize": 32, "code": 59687, - "tempChar": "" + "tempChar": "" }, { "order": 650, @@ -3793,7 +3944,7 @@ "name": "reply", "prevSize": 32, "code": 59719, - "tempChar": "" + "tempChar": "" }, { "order": 487, @@ -3801,7 +3952,7 @@ "name": "help", "prevSize": 32, "code": 59690, - "tempChar": "" + "tempChar": "" }, { "order": 488, @@ -3809,7 +3960,7 @@ "name": "info", "prevSize": 32, "code": 59691, - "tempChar": "" + "tempChar": "" }, { "order": 489, @@ -3817,7 +3968,7 @@ "name": "info-filled", "prevSize": 32, "code": 59675, - "tempChar": "" + "tempChar": "" }, { "order": 490, @@ -3825,7 +3976,7 @@ "name": "delete-filled", "prevSize": 32, "code": 59676, - "tempChar": "" + "tempChar": "" }, { "order": 491, @@ -3833,7 +3984,7 @@ "name": "delete", "prevSize": 32, "code": 59677, - "tempChar": "" + "tempChar": "" }, { "order": 492, @@ -3841,7 +3992,7 @@ "name": "edit", "prevSize": 32, "code": 59683, - "tempChar": "" + "tempChar": "" }, { "order": 493, @@ -3849,7 +4000,7 @@ "name": "new-chat-filled", "prevSize": 32, "code": 59705, - "tempChar": "" + "tempChar": "" }, { "order": 494, @@ -3857,7 +4008,7 @@ "name": "send", "prevSize": 32, "code": 59722, - "tempChar": "" + "tempChar": "" }, { "order": 495, @@ -3865,7 +4016,7 @@ "name": "send-outline", "prevSize": 32, "code": 59723, - "tempChar": "" + "tempChar": "" }, { "order": 496, @@ -3873,7 +4024,7 @@ "name": "add-user-filled", "prevSize": 32, "code": 59652, - "tempChar": "" + "tempChar": "" }, { "order": 497, @@ -3881,7 +4032,7 @@ "name": "add-user", "prevSize": 32, "code": 59653, - "tempChar": "" + "tempChar": "" }, { "order": 498, @@ -3889,7 +4040,7 @@ "name": "delete-user", "prevSize": 32, "code": 59678, - "tempChar": "" + "tempChar": "" }, { "order": 499, @@ -3897,7 +4048,7 @@ "name": "microphone", "prevSize": 32, "code": 59701, - "tempChar": "" + "tempChar": "" }, { "order": 500, @@ -3905,7 +4056,7 @@ "name": "microphone-alt", "prevSize": 32, "code": 59707, - "tempChar": "" + "tempChar": "" }, { "order": 501, @@ -3913,7 +4064,7 @@ "name": "poll", "prevSize": 32, "code": 59704, - "tempChar": "" + "tempChar": "" }, { "order": 502, @@ -3921,7 +4072,7 @@ "name": "revote", "prevSize": 32, "code": 59706, - "tempChar": "" + "tempChar": "" }, { "order": 503, @@ -3929,7 +4080,7 @@ "name": "photo", "prevSize": 32, "code": 59712, - "tempChar": "" + "tempChar": "" }, { "order": 748, @@ -3937,7 +4088,7 @@ "name": "document", "prevSize": 32, "code": 59679, - "tempChar": "" + "tempChar": "" }, { "order": 505, @@ -3945,7 +4096,7 @@ "name": "camera", "prevSize": 32, "code": 59662, - "tempChar": "" + "tempChar": "" }, { "order": 506, @@ -3953,7 +4104,7 @@ "name": "camera-add", "prevSize": 32, "code": 59663, - "tempChar": "" + "tempChar": "" }, { "order": 507, @@ -3961,7 +4112,7 @@ "name": "logout", "prevSize": 32, "code": 59698, - "tempChar": "" + "tempChar": "" }, { "order": 508, @@ -3969,7 +4120,7 @@ "name": "saved-messages", "prevSize": 32, "code": 59720, - "tempChar": "" + "tempChar": "" }, { "order": 509, @@ -3977,7 +4128,7 @@ "name": "settings", "prevSize": 32, "code": 59726, - "tempChar": "" + "tempChar": "" }, { "order": 652, @@ -3985,7 +4136,7 @@ "name": "phone", "prevSize": 32, "code": 59711, - "tempChar": "" + "tempChar": "" }, { "order": 653, @@ -3993,7 +4144,7 @@ "name": "attach", "prevSize": 32, "code": 59657, - "tempChar": "" + "tempChar": "" }, { "order": 512, @@ -4001,7 +4152,7 @@ "name": "copy", "prevSize": 32, "code": 59674, - "tempChar": "" + "tempChar": "" }, { "order": 513, @@ -4009,7 +4160,7 @@ "name": "channel", "prevSize": 32, "code": 59665, - "tempChar": "" + "tempChar": "" }, { "order": 514, @@ -4017,7 +4168,7 @@ "name": "group", "prevSize": 32, "code": 59689, - "tempChar": "" + "tempChar": "" }, { "order": 515, @@ -4025,7 +4176,7 @@ "name": "user", "prevSize": 32, "code": 59737, - "tempChar": "" + "tempChar": "" }, { "order": 516, @@ -4033,7 +4184,7 @@ "name": "non-contacts", "prevSize": 32, "code": 59688, - "tempChar": "" + "tempChar": "" }, { "order": 517, @@ -4041,7 +4192,7 @@ "name": "active-sessions", "prevSize": 32, "code": 59650, - "tempChar": "" + "tempChar": "" }, { "order": 518, @@ -4049,7 +4200,7 @@ "name": "admin", "prevSize": 32, "code": 59654, - "tempChar": "" + "tempChar": "" }, { "order": 519, @@ -4057,7 +4208,7 @@ "name": "download", "prevSize": 32, "code": 59681, - "tempChar": "" + "tempChar": "" }, { "order": 520, @@ -4065,7 +4216,7 @@ "name": "location", "prevSize": 32, "code": 59696, - "tempChar": "" + "tempChar": "" }, { "order": 521, @@ -4073,7 +4224,7 @@ "name": "stop", "prevSize": 32, "code": 59730, - "tempChar": "" + "tempChar": "" }, { "order": 523, @@ -4081,7 +4232,7 @@ "name": "archive", "prevSize": 32, "code": 59656, - "tempChar": "" + "tempChar": "" }, { "order": 524, @@ -4089,7 +4240,7 @@ "name": "unarchive", "prevSize": 32, "code": 59731, - "tempChar": "" + "tempChar": "" }, { "order": 525, @@ -4097,7 +4248,7 @@ "name": "readchats", "prevSize": 32, "code": 59699, - "tempChar": "" + "tempChar": "" }, { "order": 526, @@ -4105,7 +4256,7 @@ "name": "unread", "prevSize": 32, "code": 59735, - "tempChar": "" + "tempChar": "" }, { "order": 654, @@ -4113,7 +4264,7 @@ "name": "message", "prevSize": 32, "code": 59700, - "tempChar": "" + "tempChar": "" }, { "order": 659, @@ -4121,7 +4272,7 @@ "name": "lock", "prevSize": 32, "code": 59697, - "tempChar": "" + "tempChar": "" }, { "order": 529, @@ -4129,7 +4280,7 @@ "name": "unlock", "prevSize": 32, "code": 59732, - "tempChar": "" + "tempChar": "" }, { "order": 530, @@ -4137,7 +4288,7 @@ "name": "mute", "prevSize": 32, "code": 59703, - "tempChar": "" + "tempChar": "" }, { "order": 531, @@ -4145,7 +4296,7 @@ "name": "unmute", "prevSize": 32, "code": 59733, - "tempChar": "" + "tempChar": "" }, { "order": 532, @@ -4153,7 +4304,7 @@ "name": "pin", "prevSize": 32, "code": 59713, - "tempChar": "" + "tempChar": "" }, { "order": 533, @@ -4161,7 +4312,7 @@ "name": "unpin", "prevSize": 32, "code": 59734, - "tempChar": "" + "tempChar": "" }, { "order": 534, @@ -4169,7 +4320,7 @@ "name": "smallscreen", "prevSize": 32, "code": 59742, - "tempChar": "" + "tempChar": "" }, { "order": 535, @@ -4177,7 +4328,7 @@ "name": "fullscreen", "prevSize": 32, "code": 59743, - "tempChar": "" + "tempChar": "" }, { "order": 536, @@ -4185,7 +4336,7 @@ "name": "large-pause", "prevSize": 32, "code": 59694, - "tempChar": "" + "tempChar": "" }, { "order": 537, @@ -4193,7 +4344,7 @@ "name": "large-play", "prevSize": 32, "code": 59695, - "tempChar": "" + "tempChar": "" }, { "order": 538, @@ -4201,7 +4352,7 @@ "name": "pause", "prevSize": 32, "code": 59709, - "tempChar": "" + "tempChar": "" }, { "order": 539, @@ -4209,7 +4360,7 @@ "name": "play", "prevSize": 32, "code": 59715, - "tempChar": "" + "tempChar": "" }, { "order": 540, @@ -4217,7 +4368,7 @@ "name": "channelviews", "prevSize": 32, "code": 59666, - "tempChar": "" + "tempChar": "" }, { "order": 541, @@ -4225,7 +4376,7 @@ "name": "message-succeeded", "prevSize": 32, "code": 59648, - "tempChar": "" + "tempChar": "" }, { "order": 657, @@ -4233,7 +4384,7 @@ "name": "message-read", "prevSize": 32, "code": 59649, - "tempChar": "" + "tempChar": "" }, { "order": 543, @@ -4241,7 +4392,7 @@ "name": "message-pending", "prevSize": 32, "code": 59724, - "tempChar": "" + "tempChar": "" }, { "order": 544, @@ -4249,7 +4400,7 @@ "name": "message-failed", "prevSize": 32, "code": 59725, - "tempChar": "" + "tempChar": "" }, { "order": 545, @@ -4257,7 +4408,7 @@ "name": "favorite", "prevSize": 32, "code": 59710, - "tempChar": "" + "tempChar": "" }, { "order": 546, @@ -4265,7 +4416,7 @@ "name": "keyboard", "prevSize": 32, "code": 59716, - "tempChar": "" + "tempChar": "" }, { "order": 547, @@ -4273,7 +4424,7 @@ "name": "delete-left", "prevSize": 32, "code": 59717, - "tempChar": "" + "tempChar": "" }, { "order": 548, @@ -4281,7 +4432,7 @@ "name": "recent", "prevSize": 32, "code": 59718, - "tempChar": "" + "tempChar": "" }, { "order": 549, @@ -4289,7 +4440,7 @@ "name": "gifs", "prevSize": 32, "code": 59727, - "tempChar": "" + "tempChar": "" }, { "order": 550, @@ -4297,7 +4448,7 @@ "name": "stickers", "prevSize": 32, "code": 59739, - "tempChar": "" + "tempChar": "" }, { "order": 551, @@ -4305,7 +4456,7 @@ "name": "smile", "prevSize": 32, "code": 59728, - "tempChar": "" + "tempChar": "" }, { "order": 552, @@ -4313,7 +4464,7 @@ "name": "animals", "prevSize": 32, "code": 59655, - "tempChar": "" + "tempChar": "" }, { "order": 553, @@ -4321,7 +4472,7 @@ "name": "eats", "prevSize": 32, "code": 59682, - "tempChar": "" + "tempChar": "" }, { "order": 554, @@ -4329,7 +4480,7 @@ "name": "sport", "prevSize": 32, "code": 59729, - "tempChar": "" + "tempChar": "" }, { "order": 555, @@ -4337,7 +4488,7 @@ "name": "car", "prevSize": 32, "code": 59664, - "tempChar": "" + "tempChar": "" }, { "order": 556, @@ -4345,7 +4496,7 @@ "name": "lamp", "prevSize": 32, "code": 59692, - "tempChar": "" + "tempChar": "" }, { "order": 557, @@ -4353,7 +4504,7 @@ "name": "language", "prevSize": 32, "code": 59693, - "tempChar": "" + "tempChar": "" }, { "order": 558, @@ -4361,7 +4512,7 @@ "name": "flag", "prevSize": 32, "code": 59686, - "tempChar": "" + "tempChar": "" }, { "order": 559, @@ -4369,7 +4520,7 @@ "name": "more", "prevSize": 32, "code": 59702, - "tempChar": "" + "tempChar": "" }, { "order": 560, @@ -4377,7 +4528,7 @@ "name": "search", "prevSize": 32, "code": 59721, - "tempChar": "" + "tempChar": "" }, { "order": 561, @@ -4385,7 +4536,7 @@ "name": "remove", "prevSize": 32, "code": 59740, - "tempChar": "" + "tempChar": "" }, { "order": 562, @@ -4393,7 +4544,7 @@ "name": "add", "prevSize": 32, "code": 59651, - "tempChar": "" + "tempChar": "" }, { "order": 563, @@ -4401,7 +4552,7 @@ "name": "check", "prevSize": 32, "code": 59668, - "tempChar": "" + "tempChar": "" }, { "order": 564, @@ -4409,7 +4560,7 @@ "name": "close", "prevSize": 32, "code": 59673, - "tempChar": "" + "tempChar": "" }, { "order": 610, @@ -4417,7 +4568,7 @@ "name": "arrow-left", "prevSize": 32, "code": 59661, - "tempChar": "" + "tempChar": "" }, { "order": 566, @@ -4425,7 +4576,7 @@ "name": "arrow-right", "prevSize": 32, "code": 59708, - "tempChar": "" + "tempChar": "" }, { "order": 730, @@ -4433,7 +4584,7 @@ "name": "down", "prevSize": 32, "code": 59680, - "tempChar": "" + "tempChar": "" }, { "order": 568, @@ -4441,7 +4592,7 @@ "name": "up", "prevSize": 32, "code": 59736, - "tempChar": "" + "tempChar": "" }, { "order": 569, @@ -4449,7 +4600,7 @@ "name": "eye-closed", "prevSize": 32, "code": 59685, - "tempChar": "" + "tempChar": "" }, { "order": 570, @@ -4457,7 +4608,7 @@ "name": "eye", "prevSize": 32, "code": 59684, - "tempChar": "" + "tempChar": "" }, { "order": 571, @@ -4465,7 +4616,7 @@ "name": "muted", "prevSize": 32, "code": 59741, - "tempChar": "" + "tempChar": "" }, { "order": 572, @@ -4473,7 +4624,7 @@ "name": "avatar-archived-chats", "prevSize": 32, "code": 59658, - "tempChar": "" + "tempChar": "" }, { "order": 573, @@ -4481,7 +4632,7 @@ "name": "avatar-deleted-account", "prevSize": 32, "code": 59659, - "tempChar": "" + "tempChar": "" }, { "order": 747, @@ -4489,7 +4640,7 @@ "name": "avatar-saved-messages", "prevSize": 32, "code": 59660, - "tempChar": "" + "tempChar": "" }, { "order": 575, @@ -4497,7 +4648,7 @@ "name": "pinned-chat", "prevSize": 32, "code": 59714, - "tempChar": "" + "tempChar": "" } ], "prevSize": 32, diff --git a/src/styles/_common.scss b/src/styles/_common.scss index 06041b66a..d591901a8 100644 --- a/src/styles/_common.scss +++ b/src/styles/_common.scss @@ -81,24 +81,22 @@ .chat-list { background: var(--color-background); height: 100%; - padding: 0.5rem 0.125rem 0.5rem 0.4375rem; + padding: 0.5rem 0.4375rem 0.5rem 0.4375rem; overflow-y: auto; - body.is-android & { - @include overflow-y-overlay(); - } + @include overflow-y-overlay(); &.forum-panel-open { .info { - transform: translateX(-25%); opacity: 0; + transform: translateX(-25%); } .Chat[dir="rtl"] .info { transform: translateX(25%); } - .ListItem-button { + .group .ListItem-button { height: 4.5rem; } } @@ -159,6 +157,6 @@ } &.deleted-account { - --color-user: #9eaab5; + --color-user: var(--color-deleted-account); } } diff --git a/src/styles/_variables.scss b/src/styles/_variables.scss index b43f1b2e1..c5aeac64f 100644 --- a/src/styles/_variables.scss +++ b/src/styles/_variables.scss @@ -180,6 +180,9 @@ $color-message-reaction-own-hover: #b5e0a4; --color-forum-hover-unread-topic: #e9e9e9; --color-forum-hover-unread-topic-hover: #dcdcdc; + --color-deleted-account: #9eaab5; + --color-archive: #9eaab5; + --vh: 1vh; --border-radius-default: 0.75rem; diff --git a/src/styles/icons.scss b/src/styles/icons.scss index f9560f509..5003cd962 100644 --- a/src/styles/icons.scss +++ b/src/styles/icons.scss @@ -51,6 +51,21 @@ .icon-volume-3:before { content: "\e991"; } +.icon-archive-filled:before { + content: "\e9ba"; +} +.icon-archive-from-main:before { + content: "\e9bb"; +} +.icon-archive-to-main:before { + content: "\e9bc"; +} +.icon-collapse:before { + content: "\e9bd"; +} +.icon-expand:before { + content: "\e9be"; +} .icon-replies:before { content: "\e9b9"; }