redesigned app settings and switch to rust crypto (#1988)
authorAjay Bura <32841439+ajbura@users.noreply.github.com>
Mon, 10 Feb 2025 05:49:47 +0000 (16:49 +1100)
committerGitHub <noreply@github.com>
Mon, 10 Feb 2025 05:49:47 +0000 (16:49 +1100)
commit56b754153acd37eaf532a054cc9dee6fc46bbc86
tree3b5ccfda3a19c7beaf15f0663ae9cce698f15770
parentf5d68fcc221f011c4c1870211bfedb475a9fb181
redesigned app settings and switch to rust crypto (#1988)

* rework general settings

* account settings - WIP

* add missing key prop

* add object url hook

* extract wide modal styles

* profile settings and image editor - WIP

* add outline style to upload card

* remove file param from bind upload atom hook

* add compact variant to upload card

* add  compact upload card renderer

* add option to update profile avatar

* add option to change profile displayname

* allow displayname change based on capabilities check

* rearrange settings components into folders

* add system notification settings

* add initial page param in settings

* convert account data hook to typescript

* add push rule hook

* add notification mode hook

* add notification mode switcher component

* add all messages notification settings options

* add special messages notification settings

* add keyword notifications

* add ignored users section

* improve ignore user list strings

* add about settings

* add access token option in about settings

* add developer tools settings

* add expand button to account data dev tool option

* update folds

* fix editable active element textarea check

* do not close dialog when editable element in focus

* add text area plugins

* add text area intent handler hook

* add newline intent mod in text area

* add next line hotkey in text area intent hook

* add syntax error position dom utility function

* add account data editor

* add button to send new account data in dev tools

* improve custom emoji plugin

* add more custom emojis hooks

* add text util css

* add word break in setting tile title and description

* emojis and sticker user settings - WIP

* view image packs from settings

* emoji pack editing - WIP

* add option to edit pack meta

* change saved changes message

* add image edit and delete controls

* add option to upload pack images and apply changes

* fix state event type when updating image pack

* lazy load pack image tile img

* hide upload image button when user can not edit pack

* add option to add or remove global image packs

* upgrade to rust crypto (#2168)

* update matrix js sdk

* remove dead code

* use rust crypto

* update setPowerLevel usage

* fix types

* fix deprecated isRoomEncrypted method uses

* fix deprecated room.currentState uses

* fix deprecated import/export room keys func

* fix merge issues in image pack file

* fix remaining issues in image pack file

* start indexedDBStore

* update package lock and vite-plugin-top-level-await

* user session settings - WIP

* add useAsync hook

* add password stage uia

* add uia flow matrix error hook

* add UIA action component

* add options to delete sessions

* add sso uia stage

* fix SSO stage complete error

* encryption - WIP

* update user settings encryption terminology

* add default variant to password input

* use password input in uia password stage

* add options for local backup in user settings

* remove typo in import local backup password input label

* online backup - WIP

* fix uia sso action

* move access token settings from about to developer tools

* merge encryption tab into sessions and rename it to devices

* add device placeholder tile

* add logout dialog

* add logout button for current device

* move other devices in component

* render unverified device verification tile

* add learn more section for current device verification

* add device verification status badge

* add info card component

* add index file for password input component

* add types for secret storage

* add component to access secret storage key

* manual verification - WIP

* update matrix-js-sdk to v35

* add manual verification

* use react query for device list

* show unverified tab on sidebar

* fix device list updates

* add session key details to current device

* render restore encryption backup

* fix loading state of restore backup

* fix unverified tab settings closes after verification

* key backup tile - WIP

* fix unverified tab badge

* rename session key to device key in device tile

* improve backup restore functionality

* fix restore button enabled after layout reload during restoring backup

* update backup info on status change

* add backup disconnection failures

* add device verification using sas

* restore backup after verification

* show option to logout on startup error screen

* fix key backup hook update on decryption key cached

* add option to enable device verification

* add device verification reset dialog

* add logout button in settings drawer

* add encrypted message lost on logout

* fix backup restore never finish with 0 keys

* fix setup dialog hides when enabling device verification

* show backup details in menu

* update setup device verification body copy

* replace deprecated method

* fix displayname appear as mxid in settings

* remove old refactored codes

* fix types
196 files changed:
package-lock.json
package.json
src/app/components/ActionUIA.tsx [new file with mode: 0644]
src/app/components/BackupRestore.tsx [new file with mode: 0644]
src/app/components/CapabilitiesAndMediaConfigLoader.tsx
src/app/components/CapabilitiesLoader.tsx
src/app/components/DeviceVerification.tsx [new file with mode: 0644]
src/app/components/DeviceVerificationSetup.tsx [new file with mode: 0644]
src/app/components/DeviceVerificationStatus.ts [new file with mode: 0644]
src/app/components/LogoutDialog.tsx [new file with mode: 0644]
src/app/components/ManualVerification.tsx [new file with mode: 0644]
src/app/components/Modal500.tsx [new file with mode: 0644]
src/app/components/SecretStorage.tsx [new file with mode: 0644]
src/app/components/UIAFlowOverlay.tsx
src/app/components/editor/autocomplete/EmoticonAutocomplete.tsx
src/app/components/emoji-board/EmojiBoard.tsx
src/app/components/image-editor/ImageEditor.css.ts [new file with mode: 0644]
src/app/components/image-editor/ImageEditor.tsx [new file with mode: 0644]
src/app/components/image-editor/index.ts [new file with mode: 0644]
src/app/components/image-pack-view/ImagePackContent.tsx [new file with mode: 0644]
src/app/components/image-pack-view/ImagePackView.tsx [new file with mode: 0644]
src/app/components/image-pack-view/ImageTile.tsx [new file with mode: 0644]
src/app/components/image-pack-view/PackMeta.tsx [new file with mode: 0644]
src/app/components/image-pack-view/RoomImagePack.tsx [new file with mode: 0644]
src/app/components/image-pack-view/UsageSwitcher.tsx [new file with mode: 0644]
src/app/components/image-pack-view/UserImagePack.tsx [new file with mode: 0644]
src/app/components/image-pack-view/index.ts [new file with mode: 0644]
src/app/components/image-pack-view/style.css.ts [new file with mode: 0644]
src/app/components/info-card/InfoCard.tsx [new file with mode: 0644]
src/app/components/info-card/index.ts [new file with mode: 0644]
src/app/components/info-card/styles.css.ts [new file with mode: 0644]
src/app/components/message/content/EventContent.tsx
src/app/components/message/content/FileContent.tsx
src/app/components/message/content/ImageContent.tsx
src/app/components/message/content/style.css.ts
src/app/components/page/Page.tsx
src/app/components/page/style.css.ts
src/app/components/password-input/PasswordInput.tsx
src/app/components/password-input/index.ts [new file with mode: 0644]
src/app/components/setting-tile/SettingTile.tsx [new file with mode: 0644]
src/app/components/setting-tile/index.ts [new file with mode: 0644]
src/app/components/uia-stages/PasswordStage.tsx [new file with mode: 0644]
src/app/components/uia-stages/SSOStage.tsx [new file with mode: 0644]
src/app/components/uia-stages/index.ts
src/app/components/upload-card/CompactUploadCardRenderer.tsx [new file with mode: 0644]
src/app/components/upload-card/UploadCard.css.ts
src/app/components/upload-card/UploadCard.tsx
src/app/components/upload-card/UploadCardRenderer.tsx
src/app/components/upload-card/index.ts
src/app/features/lobby/Lobby.tsx
src/app/features/room/RoomInput.tsx
src/app/features/room/RoomTimeline.tsx
src/app/features/room/message/Message.tsx
src/app/features/settings/Settings.tsx [new file with mode: 0644]
src/app/features/settings/about/About.tsx [new file with mode: 0644]
src/app/features/settings/about/index.ts [new file with mode: 0644]
src/app/features/settings/account/Account.tsx [new file with mode: 0644]
src/app/features/settings/account/index.ts [new file with mode: 0644]
src/app/features/settings/developer-tools/AccountDataEditor.tsx [new file with mode: 0644]
src/app/features/settings/developer-tools/DevelopTools.tsx [new file with mode: 0644]
src/app/features/settings/developer-tools/index.ts [new file with mode: 0644]
src/app/features/settings/developer-tools/styles.css.ts [new file with mode: 0644]
src/app/features/settings/devices/DeviceTile.tsx [new file with mode: 0644]
src/app/features/settings/devices/Devices.tsx [new file with mode: 0644]
src/app/features/settings/devices/LocalBackup.tsx [new file with mode: 0644]
src/app/features/settings/devices/OtherDevices.tsx [new file with mode: 0644]
src/app/features/settings/devices/Verification.tsx [new file with mode: 0644]
src/app/features/settings/devices/index.ts [new file with mode: 0644]
src/app/features/settings/emojis-stickers/EmojisStickers.tsx [new file with mode: 0644]
src/app/features/settings/emojis-stickers/GlobalPacks.tsx [new file with mode: 0644]
src/app/features/settings/emojis-stickers/UserPack.tsx [new file with mode: 0644]
src/app/features/settings/emojis-stickers/index.ts [new file with mode: 0644]
src/app/features/settings/general/General.tsx [new file with mode: 0644]
src/app/features/settings/general/index.ts [new file with mode: 0644]
src/app/features/settings/index.ts [new file with mode: 0644]
src/app/features/settings/notifications/AllMessages.tsx [new file with mode: 0644]
src/app/features/settings/notifications/IgnoredUserList.tsx [new file with mode: 0644]
src/app/features/settings/notifications/KeywordMessages.tsx [new file with mode: 0644]
src/app/features/settings/notifications/NotificationModeSwitcher.tsx [new file with mode: 0644]
src/app/features/settings/notifications/Notifications.tsx [new file with mode: 0644]
src/app/features/settings/notifications/SpecialMessages.tsx [new file with mode: 0644]
src/app/features/settings/notifications/index.ts [new file with mode: 0644]
src/app/features/settings/styles.css.ts [new file with mode: 0644]
src/app/hooks/useAccountData.js [deleted file]
src/app/hooks/useAccountData.ts [new file with mode: 0644]
src/app/hooks/useAsyncCallback.ts
src/app/hooks/useCrossSigning.ts [new file with mode: 0644]
src/app/hooks/useCrossSigningStatus.js [deleted file]
src/app/hooks/useDeviceList.ts
src/app/hooks/useDeviceVerificationStatus.ts [new file with mode: 0644]
src/app/hooks/useImagePacks.ts
src/app/hooks/useKeyBackup.ts [new file with mode: 0644]
src/app/hooks/useMessageLayout.ts [new file with mode: 0644]
src/app/hooks/useMessageSpacing.ts [new file with mode: 0644]
src/app/hooks/useNotificationMode.ts [new file with mode: 0644]
src/app/hooks/useObjectURL.ts [new file with mode: 0644]
src/app/hooks/usePushRule.ts [new file with mode: 0644]
src/app/hooks/useRestoreBackupOnVerification.ts [new file with mode: 0644]
src/app/hooks/useSecretStorage.ts [new file with mode: 0644]
src/app/hooks/useTextAreaIntent.ts [new file with mode: 0644]
src/app/hooks/useTheme.ts [new file with mode: 0644]
src/app/hooks/useUIAFlows.ts
src/app/hooks/useUserProfile.ts [new file with mode: 0644]
src/app/hooks/useUserTrustStatusChange.ts [new file with mode: 0644]
src/app/hooks/useVerificationRequest.ts [new file with mode: 0644]
src/app/molecules/global-notification/GlobalNotification.jsx [deleted file]
src/app/molecules/global-notification/IgnoreUserList.jsx [deleted file]
src/app/molecules/global-notification/IgnoreUserList.scss [deleted file]
src/app/molecules/global-notification/KeywordNotification.jsx [deleted file]
src/app/molecules/global-notification/KeywordNotification.scss [deleted file]
src/app/molecules/global-notification/NotificationSelector.jsx [deleted file]
src/app/molecules/image-pack/ImagePack.jsx
src/app/molecules/import-export-e2e-room-keys/ExportE2ERoomKeys.jsx [deleted file]
src/app/molecules/import-export-e2e-room-keys/ExportE2ERoomKeys.scss [deleted file]
src/app/molecules/import-export-e2e-room-keys/ImportE2ERoomKeys.jsx [deleted file]
src/app/molecules/import-export-e2e-room-keys/ImportE2ERoomKeys.scss [deleted file]
src/app/molecules/room-aliases/RoomAliases.jsx
src/app/molecules/room-emojis/RoomEmojis.jsx
src/app/molecules/room-encryption/RoomEncryption.jsx
src/app/molecules/room-permissions/RoomPermissions.jsx
src/app/molecules/room-visibility/RoomVisibility.jsx
src/app/organisms/emoji-verification/EmojiVerification.jsx [deleted file]
src/app/organisms/emoji-verification/EmojiVerification.scss [deleted file]
src/app/organisms/profile-editor/ProfileEditor.jsx [deleted file]
src/app/organisms/profile-editor/ProfileEditor.scss [deleted file]
src/app/organisms/profile-viewer/ProfileViewer.jsx
src/app/organisms/pw/Dialogs.jsx
src/app/organisms/pw/Windows.jsx
src/app/organisms/settings/AuthRequest.jsx [deleted file]
src/app/organisms/settings/AuthRequest.scss [deleted file]
src/app/organisms/settings/CrossSigning.jsx [deleted file]
src/app/organisms/settings/CrossSigning.scss [deleted file]
src/app/organisms/settings/DeviceManage.jsx [deleted file]
src/app/organisms/settings/DeviceManage.scss [deleted file]
src/app/organisms/settings/KeyBackup.jsx [deleted file]
src/app/organisms/settings/KeyBackup.scss [deleted file]
src/app/organisms/settings/SecretStorageAccess.jsx [deleted file]
src/app/organisms/settings/SecretStorageAccess.scss [deleted file]
src/app/organisms/settings/Settings.jsx [deleted file]
src/app/organisms/settings/Settings.scss [deleted file]
src/app/pages/Router.tsx
src/app/pages/ThemeManager.tsx [new file with mode: 0644]
src/app/pages/auth/login/PasswordLoginForm.tsx
src/app/pages/auth/register/PasswordRegisterForm.tsx
src/app/pages/auth/reset-password/PasswordResetForm.tsx
src/app/pages/client/ClientRoot.tsx
src/app/pages/client/SidebarNav.tsx
src/app/pages/client/sidebar/SettingsTab.tsx [new file with mode: 0644]
src/app/pages/client/sidebar/UnverifiedTab.css.ts
src/app/pages/client/sidebar/UnverifiedTab.tsx
src/app/pages/client/sidebar/UserTab.tsx [deleted file]
src/app/pages/client/sidebar/index.ts
src/app/pages/client/space/Space.tsx
src/app/pages/paths.ts
src/app/plugins/custom-emoji.ts [deleted file]
src/app/plugins/custom-emoji/ImagePack.ts [new file with mode: 0644]
src/app/plugins/custom-emoji/PackAddress.ts [new file with mode: 0644]
src/app/plugins/custom-emoji/PackImageReader.ts [new file with mode: 0644]
src/app/plugins/custom-emoji/PackImagesReader.ts [new file with mode: 0644]
src/app/plugins/custom-emoji/PackMetaReader.ts [new file with mode: 0644]
src/app/plugins/custom-emoji/index.ts [new file with mode: 0644]
src/app/plugins/custom-emoji/types.ts [new file with mode: 0644]
src/app/plugins/custom-emoji/utils.ts [new file with mode: 0644]
src/app/plugins/react-prism/ReactPrism.tsx
src/app/plugins/text-area/Cursor.ts [new file with mode: 0644]
src/app/plugins/text-area/Operations.ts [new file with mode: 0644]
src/app/plugins/text-area/TextArea.ts [new file with mode: 0644]
src/app/plugins/text-area/TextAreaOperations.ts [new file with mode: 0644]
src/app/plugins/text-area/TextUtils.ts [new file with mode: 0644]
src/app/plugins/text-area/index.ts [new file with mode: 0644]
src/app/plugins/text-area/mods/Intent.ts [new file with mode: 0644]
src/app/plugins/text-area/mods/index.ts [new file with mode: 0644]
src/app/plugins/text-area/type.ts [new file with mode: 0644]
src/app/state/backupRestore.ts [new file with mode: 0644]
src/app/state/settings.ts
src/app/state/upload.ts
src/app/styles/Modal.css.ts [new file with mode: 0644]
src/app/styles/Text.css.ts [new file with mode: 0644]
src/app/utils/common.ts
src/app/utils/dom.ts
src/app/utils/keyboard.ts
src/app/utils/matrix-crypto.ts [new file with mode: 0644]
src/app/utils/matrix.ts
src/app/utils/mimeTypes.ts
src/app/utils/room.ts
src/client/action/navigation.js
src/client/action/room.js
src/client/action/settings.js [deleted file]
src/client/initMatrix.ts
src/client/state/cons.js
src/client/state/navigation.js
src/client/state/settings.js [deleted file]
src/colors.css.ts
src/index.tsx
src/types/matrix/accountData.ts
src/util/matrixUtil.js