From e2ef55f91cd618e97800da2f40f84aa935a36547 Mon Sep 17 00:00:00 2001 From: Alexander Zinchuk Date: Fri, 1 Apr 2022 20:43:13 +0200 Subject: [PATCH] Settings, Management: Redesign (#1789) --- src/assets/devices/android.svg | 1 + src/assets/devices/apple.svg | 1 + src/assets/devices/brave.svg | 1 + src/assets/devices/chrome.svg | 1 + src/assets/devices/edge.svg | 1 + src/assets/devices/firefox.svg | 1 + src/assets/devices/linux.svg | 1 + src/assets/devices/opera.svg | 1 + src/assets/devices/safari.svg | 1 + src/assets/devices/samsung.svg | 1 + src/assets/devices/ubuntu.svg | 1 + src/assets/devices/unknown.svg | 1 + src/assets/devices/vivaldi.svg | 1 + src/assets/devices/windows.svg | 1 + src/assets/devices/xbox.svg | 1 + src/assets/fonts/icomoon.woff | Bin 42472 -> 42220 bytes src/assets/fonts/icomoon.woff2 | Bin 19972 -> 19880 bytes src/components/left/LeftColumn.tsx | 2 +- src/components/left/main/LeftMainHeader.tsx | 24 -- src/components/left/settings/Settings.scss | 35 ++- src/components/left/settings/Settings.tsx | 8 +- .../left/settings/SettingsActiveSessions.scss | 22 ++ ...essions.tsx => SettingsActiveSessions.tsx} | 37 ++- .../left/settings/SettingsEditProfile.tsx | 4 +- .../left/settings/SettingsGeneral.tsx | 47 +++- .../settings/SettingsGeneralBackground.scss | 5 +- .../SettingsGeneralBackgroundColor.scss | 5 +- .../left/settings/SettingsHeader.tsx | 2 +- .../left/settings/SettingsLanguage.tsx | 2 +- src/components/left/settings/SettingsMain.tsx | 34 ++- .../left/settings/SettingsPrivacy.tsx | 19 -- .../settings/SettingsPrivacyBlockedUsers.tsx | 2 +- .../settings/SettingsPrivacyVisibility.tsx | 2 +- ...SettingsPrivacyVisibilityExceptionList.tsx | 2 +- .../settings/folders/SettingsFoldersEdit.tsx | 4 +- .../settings/folders/SettingsFoldersMain.tsx | 2 +- .../left/settings/helpers/getSessionIcon.ts | 56 ++++ .../settings/{helper => helpers}/privacy.ts | 0 .../twoFa/SettingsTwoFaCongratulations.tsx | 4 +- .../settings/twoFa/SettingsTwoFaEmailCode.tsx | 4 +- .../settings/twoFa/SettingsTwoFaEnabled.tsx | 4 +- .../settings/twoFa/SettingsTwoFaPassword.tsx | 4 +- .../twoFa/SettingsTwoFaSkippableForm.tsx | 4 +- .../settings/twoFa/SettingsTwoFaStart.tsx | 4 +- .../right/management/Management.scss | 6 +- src/styles/Telegram T.json | 252 +++++++++--------- src/styles/icons.scss | 3 - src/types/index.ts | 2 +- src/util/langProvider.ts | 2 + 49 files changed, 381 insertions(+), 237 deletions(-) create mode 100644 src/assets/devices/android.svg create mode 100644 src/assets/devices/apple.svg create mode 100644 src/assets/devices/brave.svg create mode 100644 src/assets/devices/chrome.svg create mode 100644 src/assets/devices/edge.svg create mode 100644 src/assets/devices/firefox.svg create mode 100644 src/assets/devices/linux.svg create mode 100644 src/assets/devices/opera.svg create mode 100644 src/assets/devices/safari.svg create mode 100644 src/assets/devices/samsung.svg create mode 100644 src/assets/devices/ubuntu.svg create mode 100644 src/assets/devices/unknown.svg create mode 100644 src/assets/devices/vivaldi.svg create mode 100644 src/assets/devices/windows.svg create mode 100644 src/assets/devices/xbox.svg create mode 100644 src/components/left/settings/SettingsActiveSessions.scss rename src/components/left/settings/{SettingsPrivacyActiveSessions.tsx => SettingsActiveSessions.tsx} (80%) create mode 100644 src/components/left/settings/helpers/getSessionIcon.ts rename src/components/left/settings/{helper => helpers}/privacy.ts (100%) diff --git a/src/assets/devices/android.svg b/src/assets/devices/android.svg new file mode 100644 index 000000000..daf7c552e --- /dev/null +++ b/src/assets/devices/android.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/devices/apple.svg b/src/assets/devices/apple.svg new file mode 100644 index 000000000..6f3694210 --- /dev/null +++ b/src/assets/devices/apple.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/devices/brave.svg b/src/assets/devices/brave.svg new file mode 100644 index 000000000..7f37eca33 --- /dev/null +++ b/src/assets/devices/brave.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/devices/chrome.svg b/src/assets/devices/chrome.svg new file mode 100644 index 000000000..d04052dd6 --- /dev/null +++ b/src/assets/devices/chrome.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/devices/edge.svg b/src/assets/devices/edge.svg new file mode 100644 index 000000000..f46dfcc83 --- /dev/null +++ b/src/assets/devices/edge.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/devices/firefox.svg b/src/assets/devices/firefox.svg new file mode 100644 index 000000000..166172d17 --- /dev/null +++ b/src/assets/devices/firefox.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/devices/linux.svg b/src/assets/devices/linux.svg new file mode 100644 index 000000000..59149ade8 --- /dev/null +++ b/src/assets/devices/linux.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/devices/opera.svg b/src/assets/devices/opera.svg new file mode 100644 index 000000000..6ad93828a --- /dev/null +++ b/src/assets/devices/opera.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/devices/safari.svg b/src/assets/devices/safari.svg new file mode 100644 index 000000000..0d18899a6 --- /dev/null +++ b/src/assets/devices/safari.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/devices/samsung.svg b/src/assets/devices/samsung.svg new file mode 100644 index 000000000..74d392dab --- /dev/null +++ b/src/assets/devices/samsung.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/devices/ubuntu.svg b/src/assets/devices/ubuntu.svg new file mode 100644 index 000000000..22b89fed6 --- /dev/null +++ b/src/assets/devices/ubuntu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/devices/unknown.svg b/src/assets/devices/unknown.svg new file mode 100644 index 000000000..4abc0daa8 --- /dev/null +++ b/src/assets/devices/unknown.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/devices/vivaldi.svg b/src/assets/devices/vivaldi.svg new file mode 100644 index 000000000..8a93941fd --- /dev/null +++ b/src/assets/devices/vivaldi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/devices/windows.svg b/src/assets/devices/windows.svg new file mode 100644 index 000000000..93b6779fe --- /dev/null +++ b/src/assets/devices/windows.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/devices/xbox.svg b/src/assets/devices/xbox.svg new file mode 100644 index 000000000..266d403b2 --- /dev/null +++ b/src/assets/devices/xbox.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/fonts/icomoon.woff b/src/assets/fonts/icomoon.woff index 18e20bdbe823b9eca83f6b2021b991dc53090f7c..e3c35824cf385afd178b7c4f1aa85e9c993421de 100644 GIT binary patch delta 408 zcmaEHn(56+Cb4pVH#Y`G1|V4ShJhPQFJNGtd~vDRL>>A17@$DR%S*48q$d^^FfcG4 z0rEMZSRg&8G7TtphJj%&P~F@Zf9EaJGEx&$7#QYj0M(d*u>4CK!wjGxP%Ht+R{>%6 zBPS$04n4Gx|4~41?V+}mz6K4{r~&_KTs5C z$V-No)nFdu|HtAi;>--pKs5}TH!*Im-JIHRSYAeY?)Lrh{5D@1xLLqD?xj?}12I7K zWS0fzjI%b^Ecng1xq49!qo>A15THPac-Upx^u*!<1_s7G zKt2Z)3#8{%rUAu{Ffh!E0pX(Mu4gh*6H^!%7AOGKn1QhT+U~0vKtZ5b1dy)+!t6&_ zA~SMJDu7}&3=B*;Ae_YLWRjDg3{xrE5(S_}2wur}CoeHK z6)5HaRMZB-Grc%}7vvY00R3=c;-7A9pl${(pgWm>kdZ;*<+T5Q|NjSy0gZUc0A@4( ze=N?zz|6q7c^Bj6S^*}8BnBSltIQ1y(hR{s6DQk;OV_KjiHM4bi8Hc^h>IDSGs-a< z8<`oiLwRT1eLZ0vlD>=1?ajEoH;B5r#6rl$IOZX!T{V23cODgOJw z%gdv}!zieoZOzWh*2lxctIW%&&CJ52sV^lRYiH-~RHnT{En6$ZOVLqdM zfc+|mWsYS|Sx$GHRh;*^RJr_fJ>j;%-NOBv2cO3zk2{`ro=Kino_(I*yz0F5yyyA4 W_;L9i@Ye$dJ_Ez-&032OF#-S`N1UVp diff --git a/src/assets/fonts/icomoon.woff2 b/src/assets/fonts/icomoon.woff2 index a1df7a845bc7333b47fc5a8f25c79c661a2a615b..16cbbc484b12173322fa8ed2ff64920ed7fad613 100644 GIT binary patch literal 19880 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�S^pcf(D*Zi@3m}6r%N~F0SXTxS*c{L}fMrho)(3t51?r&dpJ+-5S zt<}<(up{;Qs_qgPF6oZ99EXZ|1H57Yo!Az%!Y3^ahJ&^ZL!f;v2%Oj~DM_{uFPc}1 zPNZ%a`Fo5vx>pSq_Qride>`8r^PWs+9IwbJ`F=5U9nRu3`9kn6U%Q%VQI2Iw$Rpff=(R%>e_W|(odgX?J z5?2E47fvKql1cOCk;zFF-(9GS+(@7mr#p_k8B9uw%)WCaGUCb|_nDX!arDhM4hQA6 zcZcNX^OqHe4~uSn9$pcvl9eqoKO~Zgw!^Gjy*~*1Eqeux+cwS)cFoGfxsf zeTsIoqEd}fX>IBv+Q?qR-Q^~En%rdSdxf0Mwg>L%InIs=l6UwVAJTY-a}E|J`h0KOy!S z+VDio_LXwl{|&eO@K`>=4?A;#kDQ^$dctnD$AV*E(LhH<~^guuY?7C~~jW{w~)4 zeg*l?lJDA&BpTV;x9Zr`**6}RJ4`(mk2hzhjwM9j{fx!o{QP(QSnmi~LeHbCSW_i> zjn&l;oO3DUmClkUH47Ee3o_e-+k-sXgW7`>-B|pTNIqcV2V0 z$nVGj5KreV;BC1{;km&pOlI>xkLv<5cyi5j3&jg~pDsd+U&>wD#qC-YLW3o`eF!Kt z-Q{%Y3H?q0+U@9ftsnv@0k_NUe#C$a9Sl*#0Jf&NVo>aiDv3196>`ZBD#4!aB|Cio z_T4cbdJJSx&w<;&x}QVux5mwUfUm*lYf+$0_fPTn*LHKel^TCPjS|)J`6j$9<7;&% z1MqU9r1A@-9NYn|*B&NtNDH>6ZC$df&ETmAn-gC7p9j+oYI4%@*a3GUT9cC_+U}66 zmc*~m&WiuE4Ou8A|Dbe39y=o?eYSrC5V*+-(SuDKIs{t4ywV`}WyG4*Ss`LbG7UVSrC~ z{nYl)XAllY;Ozg$_pFga-+T;>LPbx@+3fOJ!T-0>y*^+#{Z`xCWC4v9)JysAV7Es{=#e|F$wVeEv%yasyn7b zOmPu=tE>+hwo0CC;W|Q^J)`!z@YTyUdq2xiYB0jp!E^8yP3);UEUr=n^yTD$DOU? z#`u142_aC4APGWwh4L5-G00iQ5%I)QkJ{W1lp`w-;-eMi^Pl~W?(nrKKVrLc=|WLk zE1I==rIj~JAu~W=tyUC+2cd(=r2RHUU5zezTr@r*o>;d|`TZ$*6C>i`Q>T=N4;vGm zcl_{xs3dR|YXTk3YgLv|FEmV@{t36z=*4`@>bdiWSGrJMMMjo#&3Q z*|7IvZc?9pxIPWrG>Ybaqhu{Q$t1K6Lnr{e$kLorvhvnseYDX-N#F1Y5;8$c>O+Q- zam=#TKbd(~Q+3i1m7KiLPtAI!sT|j24E#>z{2do8a>)z0ZeG3|io z2Ln^cyW-c4j55aD6Ze-&0PnRu!9DA5C&2i_z=A+)llRBY+^}Snf6=Z!NP2d5qS_KJ zysvx>E|AenX^i@7*i2lZa7Y7bz(5c(5?dgIbIyRvj zAMT1K0jCpKiSFH^{{vKfGy6jk?B9ht~>=4q+o?8RACBN zgd!D%(HS_CMX)(s9!c>9LXlV^mB|%Km0F|K>CKt9V9}CgD^{&pw_($kZ98`D*#{6| zLKzoQX}V!rw&Qv}Isga)L!dA?0*OLnusA${NFr0HG&+OHVsp4WzCb7vOQbTnLa9<~ zv^u@PXfj)@HoL>=a&!0a^z!!c_4A+jAKw4%YyI)HYtz^+)PT_q(*m(5htuV@`^-1p zFf9;^ayVUXyU$}9000000FWd}k|aq=k|arzBq0L;000005D^g(5fKp)F*7qWGcz+Y Ti-?Gbh=_=YsMLaCS~vj!>C~P? diff --git a/src/components/left/LeftColumn.tsx b/src/components/left/LeftColumn.tsx index 696863ed6..a372d7e75 100644 --- a/src/components/left/LeftColumn.tsx +++ b/src/components/left/LeftColumn.tsx @@ -117,6 +117,7 @@ const LeftColumn: FC = ({ case SettingsScreens.Notifications: case SettingsScreens.DataStorage: case SettingsScreens.Privacy: + case SettingsScreens.ActiveSessions: case SettingsScreens.Language: setSettingsScreen(SettingsScreens.Main); return; @@ -134,7 +135,6 @@ const LeftColumn: FC = ({ case SettingsScreens.PrivacyProfilePhoto: case SettingsScreens.PrivacyForwarding: case SettingsScreens.PrivacyGroupChats: - case SettingsScreens.PrivacyActiveSessions: case SettingsScreens.PrivacyBlockedUsers: case SettingsScreens.TwoFaDisabled: case SettingsScreens.TwoFaEnabled: diff --git a/src/components/left/main/LeftMainHeader.tsx b/src/components/left/main/LeftMainHeader.tsx index 298087d24..440cd1009 100644 --- a/src/components/left/main/LeftMainHeader.tsx +++ b/src/components/left/main/LeftMainHeader.tsx @@ -60,8 +60,6 @@ type StateProps = } & Pick; -const ANIMATION_LEVEL_OPTIONS = [0, 1, 2]; - const PRODUCTION_HOSTNAME = 'web.telegram.org'; const LEGACY_VERSION_URL = 'https://web.telegram.org/?legacy=1'; const WEBK_VERSION_URL = 'https://web.telegram.org/k/'; @@ -171,17 +169,6 @@ const LeftMainHeader: FC = ({ switchTheme(newTheme, animationLevel === ANIMATION_LEVEL_MAX); }, [animationLevel, setSettingOption, theme]); - const handleAnimationLevelChange = useCallback((e: React.SyntheticEvent) => { - e.stopPropagation(); - - const newLevel = animationLevel === 0 ? 2 : 0; - ANIMATION_LEVEL_OPTIONS.forEach((_, i) => { - document.body.classList.toggle(`animation-level-${i}`, newLevel === i); - }); - - setSettingOption({ animationLevel: newLevel }); - }, [animationLevel, setSettingOption]); - const handleSwitchToWebK = useCallback(() => { setPermanentWebVersion('K'); clearWebsync(); @@ -248,17 +235,6 @@ const LeftMainHeader: FC = ({ noAnimation /> - - {lang('Appearance.Animations').toLowerCase()} - 0} - /> - .ChatExtra { padding: 0 0.5rem 0.3125rem; @@ -107,11 +121,14 @@ } .settings-item { - border-top: 1px solid var(--color-borders); + background-color: var(--color-background); padding: 1.5rem 1.5rem 1rem; + box-shadow: inset 0 -0.0625rem 0 0 var(--color-background-secondary-accent); + margin-bottom: 0.625rem; &.no-border { - border-top: none; + margin-bottom: 0; + box-shadow: none; } &-header { @@ -139,6 +156,11 @@ font-size: 1rem; } + .settings-edit-profile & { + margin-bottom: 0; + padding-bottom: 1.5rem; + } + &[dir="rtl"] { text-align: right; unicode-bidi: plaintext; @@ -282,6 +304,13 @@ .Checkbox + .Checkbox { margin-top: 2rem; } + + &__current-value { + margin-inline-start: auto; + padding-inline-start: 0.5rem; + font-size: 0.9375rem; + color: var(--color-text-secondary); + } } .settings-fab-wrapper { diff --git a/src/components/left/settings/Settings.tsx b/src/components/left/settings/Settings.tsx index afa8d42ad..1a7943aca 100644 --- a/src/components/left/settings/Settings.tsx +++ b/src/components/left/settings/Settings.tsx @@ -19,7 +19,7 @@ import SettingsNotifications from './SettingsNotifications'; import SettingsPrivacy from './SettingsPrivacy'; import SettingsLanguage from './SettingsLanguage'; import SettingsPrivacyVisibility from './SettingsPrivacyVisibility'; -import SettingsPrivacyActiveSessions from './SettingsPrivacyActiveSessions'; +import SettingsActiveSessions from './SettingsActiveSessions'; import SettingsPrivacyBlockedUsers from './SettingsPrivacyBlockedUsers'; import SettingsTwoFa from './twoFa/SettingsTwoFa'; import SettingsPrivacyVisibilityExceptionList from './SettingsPrivacyVisibilityExceptionList'; @@ -62,7 +62,7 @@ const FOLDERS_SCREENS = [ const PRIVACY_SCREENS = [ SettingsScreens.PrivacyBlockedUsers, - SettingsScreens.PrivacyActiveSessions, + SettingsScreens.ActiveSessions, ]; const PRIVACY_PHONE_NUMBER_SCREENS = [ @@ -226,9 +226,9 @@ const Settings: FC = ({ onReset={handleReset} /> ); - case SettingsScreens.PrivacyActiveSessions: + case SettingsScreens.ActiveSessions: return ( - void; @@ -24,22 +27,18 @@ type StateProps = { activeSessions: ApiSession[]; }; -const SettingsPrivacyActiveSessions: FC = ({ +const SettingsActiveSessions: FC = ({ isActive, onScreenSelect, onReset, activeSessions, }) => { const { - loadAuthorizations, terminateAuthorization, terminateAllAuthorizations, } = getActions(); const [isConfirmTerminateAllDialogOpen, openConfirmTerminateAllDialog, closeConfirmTerminateAllDialog] = useFlag(); - useEffect(() => { - loadAuthorizations(); - }, [loadAuthorizations]); const handleTerminateSessionClick = useCallback((hash: string) => { terminateAuthorization({ hash }); @@ -69,10 +68,12 @@ const SettingsPrivacyActiveSessions: FC = ({ {lang('AuthSessions.CurrentSession')} - +
- {session.appName} - {getDeviceEnvironment(session)} + {session.deviceModel} + + {session.appName} {session.appVersion}, {session.platform} {session.systemVersion} + {session.ip} - {getLocation(session)}
@@ -115,20 +116,22 @@ const SettingsPrivacyActiveSessions: FC = ({ handleTerminateSessionClick(session.hash); }, }]} - className="no-icon" + icon={`device-${getSessionIcon(session)} icon-device`} >
{formatPastTimeShort(lang, session.dateActive * 1000)} - {session.appName} - {getDeviceEnvironment(session)} - {session.ip} - {getLocation(session)} + {session.deviceModel} + + {session.appName} {session.appVersion}, {session.platform} {session.systemVersion} + + {session.ip} {getLocation(session)}
); } return ( -
+
{currentSession && renderCurrentSession(currentSession)} {otherSessions && renderOtherSessions(otherSessions)} {otherSessions && ( @@ -149,14 +152,10 @@ function getLocation(session: ApiSession) { return [session.region, session.country].filter(Boolean).join(', '); } -function getDeviceEnvironment(session: ApiSession) { - return `${session.deviceModel}${session.deviceModel ? ', ' : ''} ${session.platform} ${session.systemVersion}`; -} - export default memo(withGlobal( (global): StateProps => { return { activeSessions: global.activeSessions, }; }, -)(SettingsPrivacyActiveSessions)); +)(SettingsActiveSessions)); diff --git a/src/components/left/settings/SettingsEditProfile.tsx b/src/components/left/settings/SettingsEditProfile.tsx index 27b9a4189..fc4d0939b 100644 --- a/src/components/left/settings/SettingsEditProfile.tsx +++ b/src/components/left/settings/SettingsEditProfile.tsx @@ -178,8 +178,8 @@ const SettingsEditProfile: FC = ({ return (
-
-
+
+
; defaultReaction?: string; + theme: ISettings['theme']; + shouldUseSystemTheme: boolean; }; const ANIMATION_LEVEL_OPTIONS = [ @@ -69,6 +75,8 @@ const SettingsGeneral: FC = ({ shouldSuggestStickers, shouldLoopStickers, timeFormat, + theme, + shouldUseSystemTheme, }) => { const { setSettingOption, @@ -82,6 +90,17 @@ const SettingsGeneral: FC = ({ const lang = useLang(); + const APPEARANCE_THEME_OPTIONS: IRadioOption[] = [{ + label: lang('EmptyChat.Appearance.Light'), + value: 'light', + }, { + label: lang('EmptyChat.Appearance.Dark'), + value: 'dark', + }, { + label: lang('EmptyChat.Appearance.System'), + value: 'auto', + }]; + const KEYBOARD_SEND_OPTIONS = !IS_TOUCH_ENV ? [ { value: 'enter', label: lang('lng_settings_send_enter'), subLabel: 'New line by Shift + Enter' }, { @@ -110,6 +129,16 @@ const SettingsGeneral: FC = ({ setSettingOption({ messageTextSize: newSize }); }, [setSettingOption]); + const handleAppearanceThemeChange = useCallback((value: string) => { + const newTheme = value === 'auto' ? getSystemTheme() : value as ISettings['theme']; + + setSettingOption({ theme: newTheme }); + setSettingOption({ shouldUseSystemTheme: value === 'auto' }); + if (newTheme !== theme) { + switchTheme(newTheme, animationLevel === ANIMATION_LEVEL_MAX); + } + }, [animationLevel, setSettingOption, theme]); + const handleTimeFormatChange = useCallback((newTimeFormat: string) => { setSettingOption({ timeFormat: newTimeFormat }); setSettingOption({ wasTimeFormatSetManually: true }); @@ -162,6 +191,18 @@ const SettingsGeneral: FC = ({
+
+

+ {lang('Theme')} +

+ +
+

Time Format @@ -251,6 +292,8 @@ const SettingsGeneral: FC = ({ export default memo(withGlobal( (global): StateProps => { + const { theme, shouldUseSystemTheme } = global.settings.byKey; + return { ...pick(global.settings.byKey, [ 'messageTextSize', @@ -265,6 +308,8 @@ export default memo(withGlobal( stickerSetIds: global.stickers.added.setIds, stickerSetsById: global.stickers.setsById, defaultReaction: global.appConfig?.defaultReaction, + theme, + shouldUseSystemTheme, }; }, )(SettingsGeneral)); diff --git a/src/components/left/settings/SettingsGeneralBackground.scss b/src/components/left/settings/SettingsGeneralBackground.scss index 4fedca6cd..41e5ee9de 100644 --- a/src/components/left/settings/SettingsGeneralBackground.scss +++ b/src/components/left/settings/SettingsGeneralBackground.scss @@ -1,10 +1,11 @@ .SettingsGeneralBackground { .settings-wallpapers { display: grid; - padding: 0.5rem; grid-template-columns: repeat(3, 1fr); grid-auto-rows: 1fr; - grid-gap: 0.25rem; + grid-gap: 0.0625rem; + background-color: var(--color-background); + box-shadow: inset 0 -0.0625rem 0 0 var(--color-background-secondary-accent); } .Loading { diff --git a/src/components/left/settings/SettingsGeneralBackgroundColor.scss b/src/components/left/settings/SettingsGeneralBackgroundColor.scss index 29a5f129c..6921763d1 100644 --- a/src/components/left/settings/SettingsGeneralBackgroundColor.scss +++ b/src/components/left/settings/SettingsGeneralBackgroundColor.scss @@ -66,10 +66,11 @@ .predefined-colors { display: grid; - padding: 0.5rem; grid-template-columns: repeat(3, 1fr); grid-auto-rows: 1fr; - grid-gap: 0.25rem; + grid-gap: 0.0625rem; + background-color: var(--color-background); + box-shadow: inset 0 -0.0625rem 0 0 var(--color-background-secondary-accent); div { cursor: pointer; diff --git a/src/components/left/settings/SettingsHeader.tsx b/src/components/left/settings/SettingsHeader.tsx index 409491855..4daa195cd 100644 --- a/src/components/left/settings/SettingsHeader.tsx +++ b/src/components/left/settings/SettingsHeader.tsx @@ -126,7 +126,7 @@ const SettingsHeader: FC = ({ case SettingsScreens.PrivacyGroupChatsDeniedContacts: return

{lang('NeverShareWith')}

; - case SettingsScreens.PrivacyActiveSessions: + case SettingsScreens.ActiveSessions: return

{lang('SessionsTitle')}

; case SettingsScreens.PrivacyBlockedUsers: return

{lang('BlockedUsers')}

; diff --git a/src/components/left/settings/SettingsLanguage.tsx b/src/components/left/settings/SettingsLanguage.tsx index 0c5742fbc..e0f3714da 100644 --- a/src/components/left/settings/SettingsLanguage.tsx +++ b/src/components/left/settings/SettingsLanguage.tsx @@ -59,7 +59,7 @@ const SettingsLanguage: FC = ({ useHistoryBack(isActive, onReset, onScreenSelect, SettingsScreens.Language); return ( -
+
{options ? ( = ({ onScreenSelect, onReset, currentUser, + sessionCount, lastSyncTime, }) => { - const { loadProfilePhotos } = getActions(); + const { loadProfilePhotos, loadAuthorizations } = getActions(); const lang = useLang(); const profileId = currentUser?.id; @@ -42,6 +44,12 @@ const SettingsMain: FC = ({ }, [lastSyncTime, profileId, loadProfilePhotos]); useHistoryBack(isActive, onReset, onScreenSelect, SettingsScreens.Main); + + useEffect(() => { + if (lastSyncTime) { + loadAuthorizations(); + } + }, [lastSyncTime, loadAuthorizations]); return (
@@ -72,13 +80,6 @@ const SettingsMain: FC = ({ > {lang('Notifications')} - onScreenSelect(SettingsScreens.Privacy)} - > - {lang('PrivacySettings')} - = ({ > {lang('DataSettings')} + onScreenSelect(SettingsScreens.Privacy)} + > + {lang('PrivacySettings')} + = ({ > {lang('Filters')} + onScreenSelect(SettingsScreens.ActiveSessions)} + > + {lang('SessionsTitle')} + {sessionCount > 0 && ({sessionCount})} + onScreenSelect(SettingsScreens.Language)} > {lang('Language')} + {lang.langName}
@@ -110,6 +127,7 @@ export default memo(withGlobal( const { currentUserId, lastSyncTime } = global; return { + sessionCount: global.activeSessions.length, currentUser: currentUserId ? selectUser(global, currentUserId) : undefined, lastSyncTime, }; diff --git a/src/components/left/settings/SettingsPrivacy.tsx b/src/components/left/settings/SettingsPrivacy.tsx index 89a41a02c..b8142395a 100644 --- a/src/components/left/settings/SettingsPrivacy.tsx +++ b/src/components/left/settings/SettingsPrivacy.tsx @@ -18,7 +18,6 @@ type OwnProps = { type StateProps = { hasPassword?: boolean; blockedCount: number; - sessionsCount: number; isSensitiveEnabled?: boolean; canChangeSensitive?: boolean; visibilityPrivacyPhoneNumber?: PrivacyVisibility; @@ -34,7 +33,6 @@ const SettingsPrivacy: FC = ({ onReset, hasPassword, blockedCount, - sessionsCount, isSensitiveEnabled, canChangeSensitive, visibilityPrivacyPhoneNumber, @@ -111,21 +109,6 @@ const SettingsPrivacy: FC = ({
- onScreenSelect(SettingsScreens.PrivacyActiveSessions)} - > -
- {lang('SessionsTitle')} - {sessionsCount > 0 && ( - - {sessionsCount === 1 ? '1 session' : `${sessionsCount} sessions`} - - )} -
-

@@ -224,13 +207,11 @@ export default memo(withGlobal( privacy, }, blocked, - activeSessions, } = global; return { hasPassword, blockedCount: blocked.totalCount, - sessionsCount: activeSessions.length, isSensitiveEnabled, canChangeSensitive, visibilityPrivacyPhoneNumber: privacy.phoneNumber?.visibility, diff --git a/src/components/left/settings/SettingsPrivacyBlockedUsers.tsx b/src/components/left/settings/SettingsPrivacyBlockedUsers.tsx index 4f76974b4..b28d8e10b 100644 --- a/src/components/left/settings/SettingsPrivacyBlockedUsers.tsx +++ b/src/components/left/settings/SettingsPrivacyBlockedUsers.tsx @@ -97,7 +97,7 @@ const SettingsPrivacyBlockedUsers: FC = ({ return (
-
+

{lang('BlockedUsersInfo')}

diff --git a/src/components/left/settings/SettingsPrivacyVisibility.tsx b/src/components/left/settings/SettingsPrivacyVisibility.tsx index ce8167557..d75c5e3d4 100644 --- a/src/components/left/settings/SettingsPrivacyVisibility.tsx +++ b/src/components/left/settings/SettingsPrivacyVisibility.tsx @@ -11,7 +11,7 @@ import useHistoryBack from '../../../hooks/useHistoryBack'; import ListItem from '../../ui/ListItem'; import RadioGroup from '../../ui/RadioGroup'; -import { getPrivacyKey } from './helper/privacy'; +import { getPrivacyKey } from './helpers/privacy'; type OwnProps = { screen: SettingsScreens; diff --git a/src/components/left/settings/SettingsPrivacyVisibilityExceptionList.tsx b/src/components/left/settings/SettingsPrivacyVisibilityExceptionList.tsx index 154aaca5e..66016cd5e 100644 --- a/src/components/left/settings/SettingsPrivacyVisibilityExceptionList.tsx +++ b/src/components/left/settings/SettingsPrivacyVisibilityExceptionList.tsx @@ -12,7 +12,7 @@ import { filterChatsByName, isChatGroup, isUserId } from '../../../global/helper import useLang from '../../../hooks/useLang'; import useHistoryBack from '../../../hooks/useHistoryBack'; import { useFolderManagerForOrderedIds } from '../../../hooks/useFolderManager'; -import { getPrivacyKey } from './helper/privacy'; +import { getPrivacyKey } from './helpers/privacy'; import Picker from '../../common/Picker'; import FloatingActionButton from '../../ui/FloatingActionButton'; diff --git a/src/components/left/settings/folders/SettingsFoldersEdit.tsx b/src/components/left/settings/folders/SettingsFoldersEdit.tsx index 220efdeeb..837414af9 100644 --- a/src/components/left/settings/folders/SettingsFoldersEdit.tsx +++ b/src/components/left/settings/folders/SettingsFoldersEdit.tsx @@ -217,7 +217,7 @@ const SettingsFoldersEdit: FC = ({ return (
-
+
{animationData && ( @@ -267,7 +267,7 @@ const SettingsFoldersEdit: FC = ({ {renderChats('included')}
-
+

{lang('FilterExclude')}

= ({ }, [foldersById, addChatFolder, showDialog]); return ( -
+
{animationData && ( diff --git a/src/components/left/settings/helpers/getSessionIcon.ts b/src/components/left/settings/helpers/getSessionIcon.ts new file mode 100644 index 000000000..50d5fe314 --- /dev/null +++ b/src/components/left/settings/helpers/getSessionIcon.ts @@ -0,0 +1,56 @@ +import { ApiSession } from '../../../../api/types'; + +export default function getSessionIcon(session: ApiSession): string { + const platform = session.platform.toLowerCase(); + const device = session.deviceModel.toLowerCase(); + const systemVersion = session.systemVersion.toLowerCase(); + + if (device.includes('xbox')) { + return 'xbox'; + } + + if (device.includes('chrome') && !device.includes('chromebook')) { + return 'chrome'; + } + if (device.includes('brave')) { + return 'brave'; + } + if (device.includes('vivaldi')) { + return 'vivaldi'; + } + if (device.includes('safari')) { + return 'safari'; + } + if (device.includes('firefox')) { + return 'firefox'; + } + if (device.includes('opera')) { + return 'opera'; + } + if (device.includes('samsungbrowser')) { + return 'samsung'; + } + if (platform.includes('android')) { + return 'android'; + } + if ( + device.includes('iphone') + || device.includes('ipad') + || platform.includes('ios') + || platform.includes('macos') + || systemVersion.includes('macos') + ) { + return 'apple'; + } + if (platform.includes('ubuntu') || systemVersion.includes('ubuntu')) { + return 'ubuntu'; + } + if (platform.includes('linux') || systemVersion.includes('linux')) { + return 'linux'; + } + if (platform.includes('windows') || systemVersion.includes('windows')) { + return 'windows'; + } + + return 'unknown'; +} diff --git a/src/components/left/settings/helper/privacy.ts b/src/components/left/settings/helpers/privacy.ts similarity index 100% rename from src/components/left/settings/helper/privacy.ts rename to src/components/left/settings/helpers/privacy.ts diff --git a/src/components/left/settings/twoFa/SettingsTwoFaCongratulations.tsx b/src/components/left/settings/twoFa/SettingsTwoFaCongratulations.tsx index 6d31ee1f6..b62a52006 100644 --- a/src/components/left/settings/twoFa/SettingsTwoFaCongratulations.tsx +++ b/src/components/left/settings/twoFa/SettingsTwoFaCongratulations.tsx @@ -34,7 +34,7 @@ const SettingsTwoFaCongratulations: FC = ({ return (
-
+

@@ -42,7 +42,7 @@ const SettingsTwoFaCongratulations: FC = ({

-
+
diff --git a/src/components/left/settings/twoFa/SettingsTwoFaEmailCode.tsx b/src/components/left/settings/twoFa/SettingsTwoFaEmailCode.tsx index a00ac15b6..d8afc3195 100644 --- a/src/components/left/settings/twoFa/SettingsTwoFaEmailCode.tsx +++ b/src/components/left/settings/twoFa/SettingsTwoFaEmailCode.tsx @@ -79,11 +79,11 @@ const SettingsTwoFaEmailCode: FC = ({ return (
-
+
-
+
= ({ return (
-
+

@@ -39,7 +39,7 @@ const SettingsTwoFaEnabled: FC = ({

-
+
= ({ return (
-
+
-
+
= ({ return (
-
+
-
+
= ({ return (
-
+

@@ -39,7 +39,7 @@ const SettingsTwoFaStart: FC = ({

-
+
diff --git a/src/components/right/management/Management.scss b/src/components/right/management/Management.scss index 3d2961ebc..d1eaf0669 100644 --- a/src/components/right/management/Management.scss +++ b/src/components/right/management/Management.scss @@ -1,6 +1,7 @@ .Management { position: relative; height: 100%; + background-color: var(--color-background-secondary); & > .custom-scroll { height: 100%; @@ -10,14 +11,15 @@ .section { padding: 1rem 1.5rem; - border-top: 1px solid var(--color-borders); + background-color: var(--color-background); + box-shadow: inset 0 -0.0625rem 0 0 var(--color-background-secondary-accent); + margin-bottom: 0.625rem; &.wide { padding: 1.5rem; } &:first-of-type { - border-top: none; padding-top: 1rem; } diff --git a/src/styles/Telegram T.json b/src/styles/Telegram T.json index 4c08e7de6..f08d01098 100644 --- a/src/styles/Telegram T.json +++ b/src/styles/Telegram T.json @@ -2,7 +2,7 @@ "metadata": { "name": "Telegram T", "lastOpened": 0, - "created": 1646326576385 + "created": 1648282440794 }, "iconSets": [ { @@ -326,7 +326,7 @@ "tempChar": "" }, { - "order": 623, + "order": 0, "id": 29, "name": "animations", "prevSize": 32, @@ -339,7 +339,7 @@ "name": "enter", "prevSize": 32, "code": 59771, - "tempChar": "" + "tempChar": "" }, { "order": 627, @@ -347,7 +347,7 @@ "name": "fontsize", "prevSize": 32, "code": 59772, - "tempChar": "" + "tempChar": "" }, { "order": 630, @@ -355,7 +355,7 @@ "name": "permissions", "prevSize": 32, "code": 59766, - "tempChar": "" + "tempChar": "" }, { "order": 631, @@ -363,7 +363,7 @@ "name": "card", "prevSize": 32, "code": 59767, - "tempChar": "" + "tempChar": "" }, { "order": 634, @@ -371,7 +371,7 @@ "name": "truck", "prevSize": 32, "code": 59768, - "tempChar": "" + "tempChar": "" }, { "order": 663, @@ -379,7 +379,7 @@ "name": "share-filled", "prevSize": 32, "code": 59738, - "tempChar": "" + "tempChar": "" }, { "order": 638, @@ -387,7 +387,7 @@ "name": "bold", "prevSize": 32, "code": 59745, - "tempChar": "" + "tempChar": "" }, { "order": 639, @@ -395,7 +395,7 @@ "name": "bot-command", "prevSize": 32, "code": 59746, - "tempChar": "" + "tempChar": "" }, { "order": 642, @@ -403,7 +403,7 @@ "name": "calendar-filter", "prevSize": 32, "code": 59747, - "tempChar": "" + "tempChar": "" }, { "order": 643, @@ -411,7 +411,7 @@ "name": "comments", "prevSize": 32, "code": 59748, - "tempChar": "" + "tempChar": "" }, { "order": 645, @@ -419,7 +419,7 @@ "name": "comments-sticker", "prevSize": 32, "code": 59749, - "tempChar": "" + "tempChar": "" }, { "order": 646, @@ -427,7 +427,7 @@ "name": "arrow-down", "prevSize": 32, "code": 59750, - "tempChar": "" + "tempChar": "" }, { "order": 668, @@ -435,7 +435,7 @@ "name": "email", "prevSize": 32, "code": 59751, - "tempChar": "" + "tempChar": "" }, { "order": 648, @@ -443,7 +443,7 @@ "name": "italic", "prevSize": 32, "code": 59752, - "tempChar": "" + "tempChar": "" }, { "order": 620, @@ -451,7 +451,7 @@ "name": "link", "prevSize": 32, "code": 59753, - "tempChar": "" + "tempChar": "" }, { "order": 621, @@ -459,7 +459,7 @@ "name": "mention", "prevSize": 32, "code": 59754, - "tempChar": "" + "tempChar": "" }, { "order": 624, @@ -467,7 +467,7 @@ "name": "monospace", "prevSize": 32, "code": 59755, - "tempChar": "" + "tempChar": "" }, { "order": 625, @@ -475,7 +475,7 @@ "name": "next", "prevSize": 32, "code": 59756, - "tempChar": "" + "tempChar": "" }, { "order": 628, @@ -483,7 +483,7 @@ "name": "password-off", "prevSize": 32, "code": 59757, - "tempChar": "" + "tempChar": "" }, { "order": 629, @@ -491,7 +491,7 @@ "name": "pin-list", "prevSize": 32, "code": 59758, - "tempChar": "" + "tempChar": "" }, { "order": 632, @@ -499,7 +499,7 @@ "name": "previous", "prevSize": 32, "code": 59759, - "tempChar": "" + "tempChar": "" }, { "order": 633, @@ -507,7 +507,7 @@ "name": "replace", "prevSize": 32, "code": 59760, - "tempChar": "" + "tempChar": "" }, { "order": 636, @@ -515,7 +515,7 @@ "name": "schedule", "prevSize": 32, "code": 59761, - "tempChar": "" + "tempChar": "" }, { "order": 691, @@ -523,7 +523,7 @@ "name": "strikethrough", "prevSize": 32, "code": 59762, - "tempChar": "" + "tempChar": "" }, { "order": 692, @@ -531,7 +531,7 @@ "name": "underlined", "prevSize": 32, "code": 59763, - "tempChar": "" + "tempChar": "" }, { "order": 641, @@ -539,7 +539,7 @@ "name": "zoom-in", "prevSize": 32, "code": 59764, - "tempChar": "" + "tempChar": "" }, { "order": 649, @@ -547,7 +547,7 @@ "name": "zoom-out", "prevSize": 32, "code": 59765, - "tempChar": "" + "tempChar": "" } ], "id": 2, @@ -2919,7 +2919,7 @@ "name": "select", "prevSize": 32, "code": 59744, - "tempChar": "" + "tempChar": "" }, { "order": 480, @@ -2927,7 +2927,7 @@ "name": "folder", "prevSize": 32, "code": 59667, - "tempChar": "" + "tempChar": "" }, { "order": 481, @@ -2935,7 +2935,7 @@ "name": "bots", "prevSize": 32, "code": 59669, - "tempChar": "" + "tempChar": "" }, { "order": 482, @@ -2943,7 +2943,7 @@ "name": "calendar", "prevSize": 32, "code": 59670, - "tempChar": "" + "tempChar": "" }, { "order": 483, @@ -2951,7 +2951,7 @@ "name": "cloud-download", "prevSize": 32, "code": 59671, - "tempChar": "" + "tempChar": "" }, { "order": 484, @@ -2959,7 +2959,7 @@ "name": "colorize", "prevSize": 32, "code": 59672, - "tempChar": "" + "tempChar": "" }, { "order": 651, @@ -2967,7 +2967,7 @@ "name": "forward", "prevSize": 32, "code": 59687, - "tempChar": "" + "tempChar": "" }, { "order": 650, @@ -2975,7 +2975,7 @@ "name": "reply", "prevSize": 32, "code": 59719, - "tempChar": "" + "tempChar": "" }, { "order": 487, @@ -2983,7 +2983,7 @@ "name": "help", "prevSize": 32, "code": 59690, - "tempChar": "" + "tempChar": "" }, { "order": 488, @@ -2991,7 +2991,7 @@ "name": "info", "prevSize": 32, "code": 59691, - "tempChar": "" + "tempChar": "" }, { "order": 489, @@ -2999,7 +2999,7 @@ "name": "info-filled", "prevSize": 32, "code": 59675, - "tempChar": "" + "tempChar": "" }, { "order": 490, @@ -3007,7 +3007,7 @@ "name": "delete-filled", "prevSize": 32, "code": 59676, - "tempChar": "" + "tempChar": "" }, { "order": 491, @@ -3015,7 +3015,7 @@ "name": "delete", "prevSize": 32, "code": 59677, - "tempChar": "" + "tempChar": "" }, { "order": 492, @@ -3023,7 +3023,7 @@ "name": "edit", "prevSize": 32, "code": 59683, - "tempChar": "" + "tempChar": "" }, { "order": 493, @@ -3031,7 +3031,7 @@ "name": "new-chat-filled", "prevSize": 32, "code": 59705, - "tempChar": "" + "tempChar": "" }, { "order": 494, @@ -3039,7 +3039,7 @@ "name": "send", "prevSize": 32, "code": 59722, - "tempChar": "" + "tempChar": "" }, { "order": 495, @@ -3047,7 +3047,7 @@ "name": "send-outline", "prevSize": 32, "code": 59723, - "tempChar": "" + "tempChar": "" }, { "order": 496, @@ -3055,7 +3055,7 @@ "name": "add-user-filled", "prevSize": 32, "code": 59652, - "tempChar": "" + "tempChar": "" }, { "order": 497, @@ -3063,7 +3063,7 @@ "name": "add-user", "prevSize": 32, "code": 59653, - "tempChar": "" + "tempChar": "" }, { "order": 498, @@ -3071,7 +3071,7 @@ "name": "delete-user", "prevSize": 32, "code": 59678, - "tempChar": "" + "tempChar": "" }, { "order": 499, @@ -3079,7 +3079,7 @@ "name": "microphone", "prevSize": 32, "code": 59701, - "tempChar": "" + "tempChar": "" }, { "order": 500, @@ -3087,7 +3087,7 @@ "name": "microphone-alt", "prevSize": 32, "code": 59707, - "tempChar": "" + "tempChar": "" }, { "order": 501, @@ -3095,7 +3095,7 @@ "name": "poll", "prevSize": 32, "code": 59704, - "tempChar": "" + "tempChar": "" }, { "order": 502, @@ -3103,7 +3103,7 @@ "name": "revote", "prevSize": 32, "code": 59706, - "tempChar": "" + "tempChar": "" }, { "order": 503, @@ -3111,7 +3111,7 @@ "name": "photo", "prevSize": 32, "code": 59712, - "tempChar": "" + "tempChar": "" }, { "order": 504, @@ -3119,7 +3119,7 @@ "name": "document", "prevSize": 32, "code": 59679, - "tempChar": "" + "tempChar": "" }, { "order": 505, @@ -3127,7 +3127,7 @@ "name": "camera", "prevSize": 32, "code": 59662, - "tempChar": "" + "tempChar": "" }, { "order": 506, @@ -3135,7 +3135,7 @@ "name": "camera-add", "prevSize": 32, "code": 59663, - "tempChar": "" + "tempChar": "" }, { "order": 507, @@ -3143,7 +3143,7 @@ "name": "logout", "prevSize": 32, "code": 59698, - "tempChar": "" + "tempChar": "" }, { "order": 508, @@ -3151,7 +3151,7 @@ "name": "saved-messages", "prevSize": 32, "code": 59720, - "tempChar": "" + "tempChar": "" }, { "order": 509, @@ -3159,7 +3159,7 @@ "name": "settings", "prevSize": 32, "code": 59726, - "tempChar": "" + "tempChar": "" }, { "order": 652, @@ -3167,7 +3167,7 @@ "name": "phone", "prevSize": 32, "code": 59711, - "tempChar": "" + "tempChar": "" }, { "order": 653, @@ -3175,7 +3175,7 @@ "name": "attach", "prevSize": 32, "code": 59657, - "tempChar": "" + "tempChar": "" }, { "order": 512, @@ -3183,7 +3183,7 @@ "name": "copy", "prevSize": 32, "code": 59674, - "tempChar": "" + "tempChar": "" }, { "order": 513, @@ -3191,7 +3191,7 @@ "name": "channel", "prevSize": 32, "code": 59665, - "tempChar": "" + "tempChar": "" }, { "order": 514, @@ -3199,7 +3199,7 @@ "name": "group", "prevSize": 32, "code": 59689, - "tempChar": "" + "tempChar": "" }, { "order": 515, @@ -3207,7 +3207,7 @@ "name": "user", "prevSize": 32, "code": 59737, - "tempChar": "" + "tempChar": "" }, { "order": 516, @@ -3215,7 +3215,7 @@ "name": "non-contacts", "prevSize": 32, "code": 59688, - "tempChar": "" + "tempChar": "" }, { "order": 517, @@ -3223,7 +3223,7 @@ "name": "active-sessions", "prevSize": 32, "code": 59650, - "tempChar": "" + "tempChar": "" }, { "order": 518, @@ -3231,7 +3231,7 @@ "name": "admin", "prevSize": 32, "code": 59654, - "tempChar": "" + "tempChar": "" }, { "order": 519, @@ -3239,7 +3239,7 @@ "name": "download", "prevSize": 32, "code": 59681, - "tempChar": "" + "tempChar": "" }, { "order": 520, @@ -3247,7 +3247,7 @@ "name": "location", "prevSize": 32, "code": 59696, - "tempChar": "" + "tempChar": "" }, { "order": 521, @@ -3255,7 +3255,7 @@ "name": "stop", "prevSize": 32, "code": 59730, - "tempChar": "" + "tempChar": "" }, { "order": 523, @@ -3263,7 +3263,7 @@ "name": "archive", "prevSize": 32, "code": 59656, - "tempChar": "" + "tempChar": "" }, { "order": 524, @@ -3271,7 +3271,7 @@ "name": "unarchive", "prevSize": 32, "code": 59731, - "tempChar": "" + "tempChar": "" }, { "order": 525, @@ -3279,7 +3279,7 @@ "name": "readchats", "prevSize": 32, "code": 59699, - "tempChar": "" + "tempChar": "" }, { "order": 526, @@ -3287,7 +3287,7 @@ "name": "unread", "prevSize": 32, "code": 59735, - "tempChar": "" + "tempChar": "" }, { "order": 654, @@ -3295,7 +3295,7 @@ "name": "message", "prevSize": 32, "code": 59700, - "tempChar": "" + "tempChar": "" }, { "order": 659, @@ -3303,7 +3303,7 @@ "name": "lock", "prevSize": 32, "code": 59697, - "tempChar": "" + "tempChar": "" }, { "order": 529, @@ -3311,7 +3311,7 @@ "name": "unlock", "prevSize": 32, "code": 59732, - "tempChar": "" + "tempChar": "" }, { "order": 530, @@ -3319,7 +3319,7 @@ "name": "mute", "prevSize": 32, "code": 59703, - "tempChar": "" + "tempChar": "" }, { "order": 531, @@ -3327,7 +3327,7 @@ "name": "unmute", "prevSize": 32, "code": 59733, - "tempChar": "" + "tempChar": "" }, { "order": 532, @@ -3335,7 +3335,7 @@ "name": "pin", "prevSize": 32, "code": 59713, - "tempChar": "" + "tempChar": "" }, { "order": 533, @@ -3343,7 +3343,7 @@ "name": "unpin", "prevSize": 32, "code": 59734, - "tempChar": "" + "tempChar": "" }, { "order": 534, @@ -3351,7 +3351,7 @@ "name": "smallscreen", "prevSize": 32, "code": 59742, - "tempChar": "" + "tempChar": "" }, { "order": 535, @@ -3359,7 +3359,7 @@ "name": "fullscreen", "prevSize": 32, "code": 59743, - "tempChar": "" + "tempChar": "" }, { "order": 536, @@ -3367,7 +3367,7 @@ "name": "large-pause", "prevSize": 32, "code": 59694, - "tempChar": "" + "tempChar": "" }, { "order": 537, @@ -3375,7 +3375,7 @@ "name": "large-play", "prevSize": 32, "code": 59695, - "tempChar": "" + "tempChar": "" }, { "order": 538, @@ -3383,7 +3383,7 @@ "name": "pause", "prevSize": 32, "code": 59709, - "tempChar": "" + "tempChar": "" }, { "order": 539, @@ -3391,7 +3391,7 @@ "name": "play", "prevSize": 32, "code": 59715, - "tempChar": "" + "tempChar": "" }, { "order": 540, @@ -3399,7 +3399,7 @@ "name": "channelviews", "prevSize": 32, "code": 59666, - "tempChar": "" + "tempChar": "" }, { "order": 541, @@ -3407,7 +3407,7 @@ "name": "message-succeeded", "prevSize": 32, "code": 59648, - "tempChar": "" + "tempChar": "" }, { "order": 657, @@ -3415,7 +3415,7 @@ "name": "message-read", "prevSize": 32, "code": 59649, - "tempChar": "" + "tempChar": "" }, { "order": 543, @@ -3423,7 +3423,7 @@ "name": "message-pending", "prevSize": 32, "code": 59724, - "tempChar": "" + "tempChar": "" }, { "order": 544, @@ -3431,7 +3431,7 @@ "name": "message-failed", "prevSize": 32, "code": 59725, - "tempChar": "" + "tempChar": "" }, { "order": 545, @@ -3439,7 +3439,7 @@ "name": "favorite", "prevSize": 32, "code": 59710, - "tempChar": "" + "tempChar": "" }, { "order": 546, @@ -3447,7 +3447,7 @@ "name": "keyboard", "prevSize": 32, "code": 59716, - "tempChar": "" + "tempChar": "" }, { "order": 547, @@ -3455,7 +3455,7 @@ "name": "delete-left", "prevSize": 32, "code": 59717, - "tempChar": "" + "tempChar": "" }, { "order": 548, @@ -3463,7 +3463,7 @@ "name": "recent", "prevSize": 32, "code": 59718, - "tempChar": "" + "tempChar": "" }, { "order": 549, @@ -3471,7 +3471,7 @@ "name": "gifs", "prevSize": 32, "code": 59727, - "tempChar": "" + "tempChar": "" }, { "order": 550, @@ -3479,7 +3479,7 @@ "name": "stickers", "prevSize": 32, "code": 59739, - "tempChar": "" + "tempChar": "" }, { "order": 551, @@ -3487,7 +3487,7 @@ "name": "smile", "prevSize": 32, "code": 59728, - "tempChar": "" + "tempChar": "" }, { "order": 552, @@ -3495,7 +3495,7 @@ "name": "animals", "prevSize": 32, "code": 59655, - "tempChar": "" + "tempChar": "" }, { "order": 553, @@ -3503,7 +3503,7 @@ "name": "eats", "prevSize": 32, "code": 59682, - "tempChar": "" + "tempChar": "" }, { "order": 554, @@ -3511,7 +3511,7 @@ "name": "sport", "prevSize": 32, "code": 59729, - "tempChar": "" + "tempChar": "" }, { "order": 555, @@ -3519,7 +3519,7 @@ "name": "car", "prevSize": 32, "code": 59664, - "tempChar": "" + "tempChar": "" }, { "order": 556, @@ -3527,7 +3527,7 @@ "name": "lamp", "prevSize": 32, "code": 59692, - "tempChar": "" + "tempChar": "" }, { "order": 557, @@ -3535,7 +3535,7 @@ "name": "language", "prevSize": 32, "code": 59693, - "tempChar": "" + "tempChar": "" }, { "order": 558, @@ -3543,7 +3543,7 @@ "name": "flag", "prevSize": 32, "code": 59686, - "tempChar": "" + "tempChar": "" }, { "order": 559, @@ -3551,7 +3551,7 @@ "name": "more", "prevSize": 32, "code": 59702, - "tempChar": "" + "tempChar": "" }, { "order": 560, @@ -3559,7 +3559,7 @@ "name": "search", "prevSize": 32, "code": 59721, - "tempChar": "" + "tempChar": "" }, { "order": 561, @@ -3567,7 +3567,7 @@ "name": "remove", "prevSize": 32, "code": 59740, - "tempChar": "" + "tempChar": "" }, { "order": 562, @@ -3575,7 +3575,7 @@ "name": "add", "prevSize": 32, "code": 59651, - "tempChar": "" + "tempChar": "" }, { "order": 563, @@ -3583,7 +3583,7 @@ "name": "check", "prevSize": 32, "code": 59668, - "tempChar": "" + "tempChar": "" }, { "order": 564, @@ -3591,7 +3591,7 @@ "name": "close", "prevSize": 32, "code": 59673, - "tempChar": "" + "tempChar": "" }, { "order": 610, @@ -3599,7 +3599,7 @@ "name": "arrow-left", "prevSize": 32, "code": 59661, - "tempChar": "" + "tempChar": "" }, { "order": 566, @@ -3607,7 +3607,7 @@ "name": "arrow-right", "prevSize": 32, "code": 59708, - "tempChar": "" + "tempChar": "" }, { "order": 567, @@ -3615,7 +3615,7 @@ "name": "down", "prevSize": 32, "code": 59680, - "tempChar": "" + "tempChar": "" }, { "order": 568, @@ -3623,7 +3623,7 @@ "name": "up", "prevSize": 32, "code": 59736, - "tempChar": "" + "tempChar": "" }, { "order": 569, @@ -3631,7 +3631,7 @@ "name": "eye-closed", "prevSize": 32, "code": 59685, - "tempChar": "" + "tempChar": "" }, { "order": 570, @@ -3639,7 +3639,7 @@ "name": "eye", "prevSize": 32, "code": 59684, - "tempChar": "" + "tempChar": "" }, { "order": 571, @@ -3647,7 +3647,7 @@ "name": "muted", "prevSize": 32, "code": 59741, - "tempChar": "" + "tempChar": "" }, { "order": 572, @@ -3655,7 +3655,7 @@ "name": "avatar-archived-chats", "prevSize": 32, "code": 59658, - "tempChar": "" + "tempChar": "" }, { "order": 573, @@ -3663,7 +3663,7 @@ "name": "avatar-deleted-account", "prevSize": 32, "code": 59659, - "tempChar": "" + "tempChar": "" }, { "order": 574, @@ -3671,7 +3671,7 @@ "name": "avatar-saved-messages", "prevSize": 32, "code": 59660, - "tempChar": "" + "tempChar": "" }, { "order": 575, @@ -3679,7 +3679,7 @@ "name": "pinned-chat", "prevSize": 32, "code": 59714, - "tempChar": "" + "tempChar": "" } ], "prevSize": 32, @@ -3727,4 +3727,4 @@ "showLiga": false }, "uid": -1 -} \ No newline at end of file +} diff --git a/src/styles/icons.scss b/src/styles/icons.scss index 536d6a7c6..35124fce8 100644 --- a/src/styles/icons.scss +++ b/src/styles/icons.scss @@ -114,9 +114,6 @@ .icon-darkmode:before { content: "\e979"; } -.icon-animations:before { - content: "\e97a"; -} .icon-enter:before { content: "\e97b"; } diff --git a/src/types/index.ts b/src/types/index.ts index f291fa832..290c8f288 100644 --- a/src/types/index.ts +++ b/src/types/index.ts @@ -159,6 +159,7 @@ export enum SettingsScreens { Notifications, DataStorage, Language, + ActiveSessions, General, GeneralChatBackground, GeneralChatBackgroundColor, @@ -178,7 +179,6 @@ export enum SettingsScreens { PrivacyForwardingDeniedContacts, PrivacyGroupChatsAllowedContacts, PrivacyGroupChatsDeniedContacts, - PrivacyActiveSessions, PrivacyBlockedUsers, Folders, FoldersCreateFolder, diff --git a/src/util/langProvider.ts b/src/util/langProvider.ts index 5321194c2..3694d547f 100644 --- a/src/util/langProvider.ts +++ b/src/util/langProvider.ts @@ -16,6 +16,7 @@ interface LangFn { isRtl?: boolean; code?: LangCode; + langName?: string; timeFormat?: TimeFormat; } @@ -130,6 +131,7 @@ export async function setLanguage(langCode: LangCode, callback?: NoneToVoidFunct const langInfo = languages?.find((l) => l.langCode === langCode); getTranslation.isRtl = Boolean(langInfo?.rtl); getTranslation.code = langCode; + getTranslation.langName = langInfo?.nativeName; getTranslation.timeFormat = timeFormat; if (callback) {