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 18e20bdbe..e3c35824c 100644 Binary files a/src/assets/fonts/icomoon.woff and b/src/assets/fonts/icomoon.woff differ diff --git a/src/assets/fonts/icomoon.woff2 b/src/assets/fonts/icomoon.woff2 index a1df7a845..16cbbc484 100644 Binary files a/src/assets/fonts/icomoon.woff2 and b/src/assets/fonts/icomoon.woff2 differ 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) {