diff --git a/.github/workflows/triage-incoming.yml b/.github/workflows/triage-incoming.yml deleted file mode 100644 index 11f3280cc..000000000 --- a/.github/workflows/triage-incoming.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Move new issues onto Issue triage board - -on: - issues: - types: [opened] - -jobs: - automate-project-columns: - runs-on: ubuntu-latest - steps: - - uses: alex-page/github-project-automation-plus@bb266ff4dde9242060e2d5418e120a133586d488 - with: - project: Issue triage - column: Incoming - repo-token: ${{ secrets.ELEMENT_BOT_TOKEN }} - - add_to_triage: - runs-on: ubuntu-latest - if: > - github.repository == 'element-hq/element-ios' - steps: - - uses: octokit/graphql-action@v2.x - with: - headers: '{"GraphQL-Features": "projects_next_graphql"}' - query: | - mutation add_to_project($projectid:ID!,$contentid:ID!) { - addProjectV2ItemById(input: {projectId: $projectid contentId: $contentid}) { - item { - id - } - } - } - projectid: ${{ env.PROJECT_ID }} - contentid: ${{ github.event.issue.node_id }} - env: - PROJECT_ID: "PVT_kwDOAM0swc4AMlHr" - GITHUB_TOKEN: ${{ secrets.ELEMENT_BOT_TOKEN }} diff --git a/.github/workflows/triage-move-labelled.yml b/.github/workflows/triage-move-labelled.yml index 428257142..b14355db8 100644 --- a/.github/workflows/triage-move-labelled.yml +++ b/.github/workflows/triage-move-labelled.yml @@ -30,17 +30,6 @@ jobs: labels: ['Z-Labs'] }) - move_needs_info_issues: - name: X-Needs-Info issues to Need info column on triage board - runs-on: ubuntu-latest - steps: - - uses: konradpabjan/move-labeled-or-milestoned-issue@219d384e03fa4b6460cd24f9f37d19eb033a4338 - with: - action-token: "${{ secrets.ELEMENT_BOT_TOKEN }}" - project-url: "https://github.com/element-hq/element-ios/projects/12" - column-name: "Need info" - label-name: "X-Needs-Info" - add_priority_design_issues_to_project: name: P1 X-Needs-Design to Design project board runs-on: ubuntu-latest @@ -68,64 +57,3 @@ jobs: with: project-url: https://github.com/orgs/element-hq/projects/28 github-token: ${{ secrets.ELEMENT_BOT_TOKEN }} - - ex_plorers: - name: Add labelled issues to X-Plorer project - runs-on: ubuntu-latest - if: > - contains(github.event.issue.labels.*.name, 'Team: Element X Feature') - steps: - - uses: actions/add-to-project@main - with: - project-url: https://github.com/orgs/element-hq/projects/73 - github-token: ${{ secrets.ELEMENT_BOT_TOKEN }} - - ps_features1: - name: Add labelled issues to PS features team 1 - runs-on: ubuntu-latest - if: > - contains(github.event.issue.labels.*.name, 'A-Polls') || - contains(github.event.issue.labels.*.name, 'A-Location-Sharing') || - (contains(github.event.issue.labels.*.name, 'A-Voice-Messages') && - !contains(github.event.issue.labels.*.name, 'A-Broadcast')) || - (contains(github.event.issue.labels.*.name, 'A-Session-Mgmt') && - contains(github.event.issue.labels.*.name, 'A-User-Settings')) - steps: - - uses: actions/add-to-project@main - with: - project-url: https://github.com/orgs/element-hq/projects/56 - github-token: ${{ secrets.ELEMENT_BOT_TOKEN }} - - ps_features2: - name: Add labelled issues to PS features team 2 - runs-on: ubuntu-latest - if: > - contains(github.event.issue.labels.*.name, 'A-DM-Start') || - contains(github.event.issue.labels.*.name, 'A-Broadcast') - steps: - - uses: actions/add-to-project@main - with: - project-url: https://github.com/orgs/element-hq/projects/58 - github-token: ${{ secrets.ELEMENT_BOT_TOKEN }} - - ps_features3: - name: Add labelled issues to PS features team 3 - runs-on: ubuntu-latest - if: > - contains(github.event.issue.labels.*.name, 'A-Rich-Text-Editor') - steps: - - uses: actions/add-to-project@main - with: - project-url: https://github.com/orgs/element-hq/projects/57 - github-token: ${{ secrets.ELEMENT_BOT_TOKEN }} - - voip: - name: Add labelled issues to VoIP project board - runs-on: ubuntu-latest - if: > - contains(github.event.issue.labels.*.name, 'Team: VoIP') - steps: - - uses: actions/add-to-project@main - with: - project-url: https://github.com/orgs/element-hq/projects/41 - github-token: ${{ secrets.ELEMENT_BOT_TOKEN }} diff --git a/.github/workflows/triage-move-unlabelled.yml b/.github/workflows/triage-move-unlabelled.yml deleted file mode 100644 index 453fafe54..000000000 --- a/.github/workflows/triage-move-unlabelled.yml +++ /dev/null @@ -1,61 +0,0 @@ -name: Move unlabelled from needs info columns to triaged - -on: - issues: - types: [unlabeled] - -jobs: - Move_Unabeled_Issue_On_Project_Board: - name: Move no longer X-Needs-Info issues to Triaged - runs-on: ubuntu-latest - if: > - ${{ - !contains(github.event.issue.labels.*.name, 'X-Needs-Info') }} - env: - BOARD_NAME: "Issue triage" - OWNER: ${{ github.repository_owner }} - REPO: ${{ github.event.repository.name }} - ISSUE: ${{ github.event.issue.number }} - steps: - - name: Check if issue is already in "${{ env.BOARD_NAME }}" - run: | - if curl -i -H 'Content-Type: application/json' -H "Authorization: bearer ${{ secrets.GITHUB_TOKEN }}" -X POST -d '{"query": "query($issue: Int!, $owner: String!, $repo: String!) { repository(owner: $owner, name: $repo) { issue(number: $issue) { projectCards { nodes { project { name } } } } } } ", "variables" : "{ \"issue\": '${ISSUE}', \"owner\": \"'${OWNER}'\", \"repo\": \"'${REPO}'\" }" }' https://api.github.com/graphql | grep "\b$BOARD_NAME\b"; then - echo "Issue is already in Project '$BOARD_NAME', proceeding"; - echo "ALREADY_IN_BOARD=true" >> $GITHUB_ENV - else - echo "Issue is not in project '$BOARD_NAME', cancelling this workflow" - echo "ALREADY_IN_BOARD=false" >> $GITHUB_ENV - fi - - name: Move issue - uses: alex-page/github-project-automation-plus@bb266ff4dde9242060e2d5418e120a133586d488 - if: ${{ env.ALREADY_IN_BOARD == 'true' }} - with: - project: Issue triage - column: Triaged - repo-token: ${{ secrets.ELEMENT_BOT_TOKEN }} - - remove_Z-Labs_label: - name: Remove Z-Labs label when features behind labs flags are removed - runs-on: ubuntu-latest - if: > - !(contains(github.event.issue.labels.*.name, 'A-Maths') || - contains(github.event.issue.labels.*.name, 'A-Message-Pinning') || - contains(github.event.issue.labels.*.name, 'A-Threads') || - contains(github.event.issue.labels.*.name, 'A-Polls') || - contains(github.event.issue.labels.*.name, 'A-Location-Sharing') || - contains(github.event.issue.labels.*.name, 'A-Message-Bubbles') || - contains(github.event.issue.labels.*.name, 'Z-IA') || - contains(github.event.issue.labels.*.name, 'A-Themes-Custom') || - contains(github.event.issue.labels.*.name, 'A-E2EE-Dehydration') || - contains(github.event.issue.labels.*.name, 'A-Tags')) && - contains(github.event.issue.labels.*.name, 'Z-Labs') - steps: - - uses: actions/github-script@v5 - with: - script: | - github.rest.issues.removeLabel({ - issue_number: context.issue.number, - owner: context.repo.owner, - repo: context.repo.repo, - name: ['Z-Labs'] - }) diff --git a/CHANGES.md b/CHANGES.md index b2a673e09..174be9ac8 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,3 +1,26 @@ +## Changes in 1.11.8 (2024-03-05) + +🙌 Improvements + +- Disable the mark as unread feature to avoid it clashing with the new MSC2876 based one ([#7758](https://github.com/element-hq/element-ios/pull/7758)) + +🐛 Bugfixes + +- Fix a bug where QR codes aren't detected if the camera is too close. ([#7762](https://github.com/element-hq/element-ios/pull/7762)) +- Fix dictation when using the Rich Text Editor ([#7752](https://github.com/element-hq/element-ios/issues/7752)) + + +## Changes in 1.11.7 (2024-02-07) + +🙌 Improvements + +- Upgrade MatrixSDK version ([v0.27.6](https://github.com/matrix-org/matrix-ios-sdk/releases/tag/v0.27.6)). + +🐛 Bugfixes + +- Fix swapped accessibility label between strikethrough and underline format buttons in RTE. ([#7743](https://github.com/element-hq/element-ios/pull/7743)) + + ## Changes in 1.11.6 (2024-01-09) 🙌 Improvements diff --git a/Podfile b/Podfile index 1d34da780..3d8aa0795 100644 --- a/Podfile +++ b/Podfile @@ -16,7 +16,7 @@ use_frameworks! # - `{ :specHash => {sdk spec hash}` to depend on specific pod options (:git => …, :podspec => …) for MatrixSDK repo. Used by Fastfile during CI # # Warning: our internal tooling depends on the name of this variable name, so be sure not to change it -$matrixSDKVersion = '= 0.27.5' +$matrixSDKVersion = '= 0.27.6' # $matrixSDKVersion = :local # $matrixSDKVersion = { :branch => 'develop'} # $matrixSDKVersion = { :specHash => { git: 'https://git.io/fork123', branch: 'fix' } } @@ -63,7 +63,7 @@ end def import_SwiftUI_pods pod 'Introspect', '~> 0.1' pod 'DSBottomSheet', '~> 0.3' - pod 'ZXingObjC', '~> 3.6.5' + pod 'ZXingObjC', '~> 3.6.9' end abstract_target 'RiotPods' do diff --git a/Podfile.lock b/Podfile.lock index 68fc740a5..abe637e53 100644 --- a/Podfile.lock +++ b/Podfile.lock @@ -39,9 +39,9 @@ PODS: - LoggerAPI (1.9.200): - Logging (~> 1.1) - Logging (1.4.0) - - MatrixSDK (0.27.5): - - MatrixSDK/Core (= 0.27.5) - - MatrixSDK/Core (0.27.5): + - MatrixSDK (0.27.6): + - MatrixSDK/Core (= 0.27.6) + - MatrixSDK/Core (0.27.6): - AFNetworking (~> 4.0.0) - GZIP (~> 1.3.0) - libbase58 (~> 0.1.4) @@ -49,7 +49,7 @@ PODS: - OLMKit (~> 3.2.5) - Realm (= 10.27.0) - SwiftyBeaver (= 1.9.5) - - MatrixSDK/JingleCallStack (0.27.5): + - MatrixSDK/JingleCallStack (0.27.6): - JitsiMeetSDKLite (= 8.1.2-lite) - MatrixSDK/Core - MatrixSDKCrypto (0.3.13) @@ -87,9 +87,9 @@ PODS: - UICollectionViewRightAlignedLayout (0.0.3) - WeakDictionary (2.0.2) - zxcvbn-ios (1.0.4) - - ZXingObjC (3.6.5): - - ZXingObjC/All (= 3.6.5) - - ZXingObjC/All (3.6.5) + - ZXingObjC (3.6.9): + - ZXingObjC/All (= 3.6.9) + - ZXingObjC/All (3.6.9) DEPENDENCIES: - Down (~> 0.11.0) @@ -102,8 +102,8 @@ DEPENDENCIES: - KeychainAccess (~> 4.2.2) - KTCenterFlowLayout (~> 1.3.1) - libPhoneNumber-iOS (~> 0.9.13) - - MatrixSDK (= 0.27.5) - - MatrixSDK/JingleCallStack (= 0.27.5) + - MatrixSDK (= 0.27.6) + - MatrixSDK/JingleCallStack (= 0.27.6) - OLMKit - PostHog (~> 2.0.0) - ReadMoreTextView (~> 3.0.1) @@ -119,7 +119,7 @@ DEPENDENCIES: - UICollectionViewRightAlignedLayout (~> 0.0.3) - WeakDictionary (~> 2.0) - zxcvbn-ios - - ZXingObjC (~> 3.6.5) + - ZXingObjC (~> 3.6.9) SPEC REPOS: trunk: @@ -187,7 +187,7 @@ SPEC CHECKSUMS: libPhoneNumber-iOS: 0a32a9525cf8744fe02c5206eb30d571e38f7d75 LoggerAPI: ad9c4a6f1e32f518fdb43a1347ac14d765ab5e3d Logging: beeb016c9c80cf77042d62e83495816847ef108b - MatrixSDK: f92ffead50eda83c99786afefed9be739987f338 + MatrixSDK: 4129ab9c0acda1d0aad50b1c9765bd795b8d70b9 MatrixSDKCrypto: bf08b72f2cd015d8749420a2b8b92fc0536bedf4 OLMKit: da115f16582e47626616874e20f7bb92222c7a51 PostHog: 660ec6c9d80cec17b685e148f17f6785a88b597d @@ -206,8 +206,8 @@ SPEC CHECKSUMS: UICollectionViewRightAlignedLayout: 823eef8c567eba4a44c21bc2ffcb0d0d5f361e2d WeakDictionary: 8cd038acd77e5d54ca4ebaec3d20853d732b45e0 zxcvbn-ios: fef98b7c80f1512ff0eec47ac1fa399fc00f7e3c - ZXingObjC: fdbb269f25dd2032da343e06f10224d62f537bdb + ZXingObjC: 8898711ab495761b2dbbdec76d90164a6d7e14c5 -PODFILE CHECKSUM: dd877be9e7d8dbc03dfcb3372d76e2eb0bdfbc34 +PODFILE CHECKSUM: c87b532985dd755b373732f841e3bcfe616f4e4f COCOAPODS: 1.14.3 diff --git a/Riot.xcworkspace/xcshareddata/swiftpm/Package.resolved b/Riot.xcworkspace/xcshareddata/swiftpm/Package.resolved index 4ca5ffc97..ade971dca 100644 --- a/Riot.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/Riot.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -59,8 +59,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/matrix-org/matrix-wysiwyg-composer-swift", "state" : { - "revision" : "0aa1308c43451fd077e332f72d6a32135f258834", - "version" : "2.19.0" + "revision" : "f788fe2482c0b89019f679a1f43dccf9c25a0782", + "version" : "2.29.0" } }, { @@ -93,7 +93,7 @@ { "identity" : "swift-ogg", "kind" : "remoteSourceControl", - "location" : "https://github.com/vector-im/swift-ogg", + "location" : "https://github.com/element-hq/swift-ogg", "state" : { "branch" : "0.0.1", "revision" : "e9a9e7601da662fd8b97d93781ff5c60b4becf88" diff --git a/Riot/Assets/de.lproj/Vector.strings b/Riot/Assets/de.lproj/Vector.strings index a9e1c5d51..dc737ec50 100644 --- a/Riot/Assets/de.lproj/Vector.strings +++ b/Riot/Assets/de.lproj/Vector.strings @@ -2616,8 +2616,8 @@ "manage_session_name_info" = "Sei dir bitte bewusst, dass Sitzungsnamen auch für Personen, mit denen du kommunizierst, sichtbar sind. %@"; "manage_session_name_hint" = "Individuelle Sitzungsnamen können dir helfen, deine Geräte einfacher zu erkennen."; "user_other_session_filter" = "Filtern"; -"wysiwyg_composer_format_action_strikethrough" = "Unterstrichen formatieren"; -"wysiwyg_composer_format_action_underline" = "Durchgestrichen formatieren"; +"wysiwyg_composer_format_action_strikethrough" = "Durchgestrichen formatieren"; +"wysiwyg_composer_format_action_underline" = "Unterstrichen formatieren"; "wysiwyg_composer_format_action_italic" = "Kursiv formatieren"; // Formatting Actions diff --git a/Riot/Assets/en.lproj/Vector.strings b/Riot/Assets/en.lproj/Vector.strings index 432f8ed23..64708f6bd 100644 --- a/Riot/Assets/en.lproj/Vector.strings +++ b/Riot/Assets/en.lproj/Vector.strings @@ -2617,8 +2617,8 @@ To enable access, tap Settings> Location and select Always"; // Formatting Actions "wysiwyg_composer_format_action_bold" = "Apply bold format"; "wysiwyg_composer_format_action_italic" = "Apply italic format"; -"wysiwyg_composer_format_action_underline" = "Apply strikethrough format"; -"wysiwyg_composer_format_action_strikethrough" = "Apply underline format"; +"wysiwyg_composer_format_action_underline" = "Apply underline format"; +"wysiwyg_composer_format_action_strikethrough" = "Apply strikethrough format"; "wysiwyg_composer_format_action_link" = "Apply link format"; "wysiwyg_composer_format_action_inline_code" = "Apply inline code format"; "wysiwyg_composer_format_action_unordered_list" = "Toggle bulleted list"; diff --git a/Riot/Assets/et.lproj/Vector.strings b/Riot/Assets/et.lproj/Vector.strings index 5080a7ea5..3df4d23b9 100644 --- a/Riot/Assets/et.lproj/Vector.strings +++ b/Riot/Assets/et.lproj/Vector.strings @@ -2499,8 +2499,8 @@ "authentication_qr_login_start_title" = "Loe QR-koodi"; "authentication_login_with_qr" = "Logi sisse QR-koodi abil"; "wysiwyg_composer_format_action_strikethrough" = "Kasuta allajoonitud kirja"; -"wysiwyg_composer_format_action_underline" = "Kasuta läbijoonitud kirja"; -"wysiwyg_composer_format_action_italic" = "Kasuta kaldkirja"; +"wysiwyg_composer_format_action_italic" = "Kasuta läbijoonitud kirja"; +"wysiwyg_composer_format_action_underline" = "Kasuta kaldkirja"; // Formatting Actions "wysiwyg_composer_format_action_bold" = "Kasuta paksu kirja"; diff --git a/Riot/Assets/fr.lproj/Vector.strings b/Riot/Assets/fr.lproj/Vector.strings index 5dfc717c9..ee1435894 100644 --- a/Riot/Assets/fr.lproj/Vector.strings +++ b/Riot/Assets/fr.lproj/Vector.strings @@ -2631,8 +2631,8 @@ "wysiwyg_composer_format_action_unordered_list" = "Liste à puces"; "wysiwyg_composer_format_action_inline_code" = "Formater comme code informatique"; "wysiwyg_composer_format_action_link" = "Formater comme lien"; -"wysiwyg_composer_format_action_strikethrough" = "Souligner"; -"wysiwyg_composer_format_action_underline" = "Barrer"; +"wysiwyg_composer_format_action_strikethrough" = "Barrer"; +"wysiwyg_composer_format_action_underline" = "Souligner"; "wysiwyg_composer_format_action_italic" = "Mettre en italique"; // Formatting Actions diff --git a/Riot/Assets/hu.lproj/Vector.strings b/Riot/Assets/hu.lproj/Vector.strings index a77322f08..274042639 100644 --- a/Riot/Assets/hu.lproj/Vector.strings +++ b/Riot/Assets/hu.lproj/Vector.strings @@ -2501,8 +2501,8 @@ "room_first_message_placeholder" = "Küld el az első üzenetedet…"; "authentication_qr_login_confirm_title" = "Biztonságos kapcsolat beállítva"; "room_event_encryption_info_key_authenticity_not_guaranteed" = "A titkosított üzenetek valódiságát ezen az eszközön nem lehet garantálni."; -"wysiwyg_composer_format_action_strikethrough" = "Aláhúzott"; -"wysiwyg_composer_format_action_underline" = "Áthúzott"; +"wysiwyg_composer_format_action_underline" = "Aláhúzott"; +"wysiwyg_composer_format_action_strikethrough" = "Áthúzott"; "wysiwyg_composer_format_action_italic" = "Dőlt"; // Formatting Actions diff --git a/Riot/Assets/id.lproj/Vector.strings b/Riot/Assets/id.lproj/Vector.strings index 0a43411c3..5e8e1c027 100644 --- a/Riot/Assets/id.lproj/Vector.strings +++ b/Riot/Assets/id.lproj/Vector.strings @@ -2782,8 +2782,8 @@ "authentication_qr_login_start_subtitle" = "Gunakan kamera pada perangkat ini untuk memindai kode QR yang ditampilkan di perangkat Anda yang lain:"; "authentication_qr_login_start_title" = "Pindai kode QR"; "authentication_login_with_qr" = "Masuk dengan kode QR"; -"wysiwyg_composer_format_action_strikethrough" = "Terapkan format garis bawah"; -"wysiwyg_composer_format_action_underline" = "Terapkan format coret"; +"wysiwyg_composer_format_action_underline" = "Terapkan format garis bawah"; +"wysiwyg_composer_format_action_strikethrough" = "Terapkan format coret"; "wysiwyg_composer_format_action_italic" = "Terapkan format miring"; // Formatting Actions diff --git a/Riot/Assets/it.lproj/Vector.strings b/Riot/Assets/it.lproj/Vector.strings index 5658e7478..0e893b97c 100644 --- a/Riot/Assets/it.lproj/Vector.strings +++ b/Riot/Assets/it.lproj/Vector.strings @@ -2555,8 +2555,8 @@ "authentication_qr_login_start_subtitle" = "Usa la fotocamera di questo dispositivo per scansionare il codice QR mostrato nell'altro dispositivo:"; "authentication_qr_login_start_title" = "Scansiona codice QR"; "authentication_login_with_qr" = "Accedi con codice QR"; -"wysiwyg_composer_format_action_strikethrough" = "Applica formato sottolineato"; -"wysiwyg_composer_format_action_underline" = "Applica formato sbarrato"; +"wysiwyg_composer_format_action_underline" = "Applica formato sottolineato"; +"wysiwyg_composer_format_action_strikethrough" = "Applica formato sbarrato"; "wysiwyg_composer_format_action_italic" = "Applica formato corsivo"; // Formatting Actions diff --git a/Riot/Assets/ja.lproj/Vector.strings b/Riot/Assets/ja.lproj/Vector.strings index c1d767830..0dfb2562b 100644 --- a/Riot/Assets/ja.lproj/Vector.strings +++ b/Riot/Assets/ja.lproj/Vector.strings @@ -2752,8 +2752,8 @@ "notice_error_unformattable_event" = "** メッセージを描画できません。不具合を報告してください"; "wysiwyg_composer_format_action_un_indent" = "インデントを減らす"; "wysiwyg_composer_format_action_indent" = "インデントを増やす"; -"wysiwyg_composer_format_action_strikethrough" = "下線で装飾"; -"wysiwyg_composer_format_action_underline" = "打ち消し線で装飾"; +"wysiwyg_composer_format_action_underline" = "下線で装飾"; +"wysiwyg_composer_format_action_strikethrough" = "打ち消し線で装飾"; // MARK: - WYSIWYG Composer diff --git a/Riot/Assets/nl.lproj/Vector.strings b/Riot/Assets/nl.lproj/Vector.strings index a814c281b..f0ddd9d10 100644 --- a/Riot/Assets/nl.lproj/Vector.strings +++ b/Riot/Assets/nl.lproj/Vector.strings @@ -2646,8 +2646,8 @@ "invite_to" = "Uitnodigen %@"; "room_event_encryption_info_key_authenticity_not_guaranteed" = "De authenticiteit van dit versleutelde bericht kan niet worden gegarandeerd op dit apparaat."; "deselect_all" = "Deselecteer alles"; -"wysiwyg_composer_format_action_strikethrough" = "Onderstrepen formaat toepassen"; -"wysiwyg_composer_format_action_underline" = "Doorstrepen formaat toepassen"; +"wysiwyg_composer_format_action_underline" = "Onderstrepen formaat toepassen"; +"wysiwyg_composer_format_action_strikethrough" = "Doorstrepen formaat toepassen"; "wysiwyg_composer_format_action_italic" = "Cursief formaat toepassen"; // Formatting Actions diff --git a/Riot/Assets/peo.lproj/InfoPlist.strings b/Riot/Assets/peo.lproj/InfoPlist.strings new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/Riot/Assets/peo.lproj/InfoPlist.strings @@ -0,0 +1 @@ + diff --git a/Riot/Assets/pl.lproj/Vector.strings b/Riot/Assets/pl.lproj/Vector.strings index 21be89f5d..ba5a2bc09 100644 --- a/Riot/Assets/pl.lproj/Vector.strings +++ b/Riot/Assets/pl.lproj/Vector.strings @@ -2694,8 +2694,8 @@ "wysiwyg_composer_format_action_unordered_list" = "Przełącz listę punktorów"; "wysiwyg_composer_format_action_inline_code" = "Zastosuj kod w tekście"; "wysiwyg_composer_format_action_link" = "Zastosuj link"; -"wysiwyg_composer_format_action_strikethrough" = "Zastosuj podkreślenie"; -"wysiwyg_composer_format_action_underline" = "Zastosuj przekreślenie"; +"wysiwyg_composer_format_action_underline" = "Zastosuj podkreślenie"; +"wysiwyg_composer_format_action_strikethrough" = "Zastosuj przekreślenie"; "wysiwyg_composer_format_action_italic" = "Zastosuj kursywę"; // Formatting Actions diff --git a/Riot/Assets/pt_BR.lproj/Vector.strings b/Riot/Assets/pt_BR.lproj/Vector.strings index d60ed99b6..991716cd9 100644 --- a/Riot/Assets/pt_BR.lproj/Vector.strings +++ b/Riot/Assets/pt_BR.lproj/Vector.strings @@ -2556,8 +2556,8 @@ "authentication_qr_login_start_subtitle" = "Use a câmera neste dispositivo para scannar o QR code mostrado em seu outro dispositivo:"; "authentication_qr_login_start_title" = "Scannar QR code"; "authentication_login_with_qr" = "Fazer signin com QR code"; -"wysiwyg_composer_format_action_strikethrough" = "Aplicar formato sublinhar"; -"wysiwyg_composer_format_action_underline" = "Aplicar formato tachar"; +"wysiwyg_composer_format_action_underline" = "Aplicar formato sublinhar"; +"wysiwyg_composer_format_action_strikethrough" = "Aplicar formato tachar"; "wysiwyg_composer_format_action_italic" = "Aplicar formato itálico"; // Formatting Actions diff --git a/Riot/Assets/sk.lproj/Vector.strings b/Riot/Assets/sk.lproj/Vector.strings index 6f4eda6a4..a18873e4d 100644 --- a/Riot/Assets/sk.lproj/Vector.strings +++ b/Riot/Assets/sk.lproj/Vector.strings @@ -2778,8 +2778,8 @@ "authentication_qr_login_start_subtitle" = "Pomocou fotoaparátu na tomto zariadení naskenujte QR kód zobrazený na vašom druhom zariadení:"; "authentication_qr_login_start_title" = "Skenovať QR kód"; "authentication_login_with_qr" = "Prihlásiť sa pomocou QR kódu"; -"wysiwyg_composer_format_action_strikethrough" = "Použiť formát podčiarknutia"; -"wysiwyg_composer_format_action_underline" = "Použiť formát prečiarknutia"; +"wysiwyg_composer_format_action_underline" = "Použiť formát podčiarknutia"; +"wysiwyg_composer_format_action_strikethrough" = "Použiť formát prečiarknutia"; "wysiwyg_composer_format_action_italic" = "Použiť formát kurzívou"; // Formatting Actions diff --git a/Riot/Assets/sq.lproj/InfoPlist.strings b/Riot/Assets/sq.lproj/InfoPlist.strings index a4d354d56..e2f9af626 100644 --- a/Riot/Assets/sq.lproj/InfoPlist.strings +++ b/Riot/Assets/sq.lproj/InfoPlist.strings @@ -5,5 +5,5 @@ "NSContactsUsageDescription" = "Do t’i jepen shërbyesit tuaj të identiteteve, për ta ndihmuar të gjejë kontakte tuajt në Matrix."; "NSCalendarsUsageDescription" = "Shihini te aplikacioni takimet tuaja të planifikuara."; "NSFaceIDUsageDescription" = "Face ID përdoret që të hyni në aplikacionin tuaj."; -"NSLocationWhenInUseUsageDescription" = "Kur ndani vendndodhjen tuaj me persona, Element-i ka nevojë për hyrje në të, që t’u trgojë atyre një hartë."; +"NSLocationWhenInUseUsageDescription" = "Kur u tregoni vendndodhjen tuaj të tjerëve, Element-i ka nevojë për hyrje në të, që t’u tregojë atyre një hartë."; "NSLocationAlwaysAndWhenInUseUsageDescription" = "Kur u tregoni vendndodhjen tuaj të tjerëve, Element-it i duhet hyrje për t’u shfaqur një hartë."; diff --git a/Riot/Assets/sq.lproj/Vector.strings b/Riot/Assets/sq.lproj/Vector.strings index 1dc4968b5..cd338d626 100644 --- a/Riot/Assets/sq.lproj/Vector.strings +++ b/Riot/Assets/sq.lproj/Vector.strings @@ -127,8 +127,8 @@ "contacts_user_directory_offline_section" = "DREJTORI PËRDORUESISH (jashtë linje)"; // Chat participants "room_participants_title" = "Pjesëmarrës"; -"room_participants_add_participant" = "Shtoni pjesmarrës"; -"room_participants_one_participant" = "1 pjesmarrës"; +"room_participants_add_participant" = "Shtoni pjesëmarrës"; +"room_participants_one_participant" = "1 pjesëmarrës"; "room_participants_multi_participants" = "%d pjesëmarrës"; "room_participants_leave_prompt_title" = "Dilni nga dhomë"; "room_participants_leave_prompt_msg" = "Jeni i sigurt se doni të ikni nga dhoma?"; @@ -317,7 +317,7 @@ "group_home_one_room_format" = "1 dhomë"; "group_invitation_format" = "%@ ju ftoi të bëheni pjesë e kësaj bashkësie"; // Group participants -"group_participants_add_participant" = "Shtoni pjesmarrës"; +"group_participants_add_participant" = "Shtoni pjesëmarrës"; "group_participants_leave_prompt_title" = "Braktiseni grupin"; "group_participants_leave_prompt_msg" = "Jeni i sigurt se doni ta braktisni grupin?"; "group_participants_remove_prompt_title" = "Ripohim"; @@ -398,7 +398,7 @@ "auth_add_email_and_phone_warning" = "Regjistrimi me email dhe me numër telefoni njëherazi nuk mbulohet ende, deri sa të ketë API. Do të merret parasysh vetëm numri i telefonit. Email-in tuaj mund ta shtoni te profili juaj, te rregullimet."; "room_creation_appearance_picture" = "Foto fjalosjeje (në daçi)"; "room_creation_invite_another_user" = "ID Përdoruesi, emër ose email"; -"room_recents_favourites_section" = "TË PARAPALQYERA"; +"room_recents_favourites_section" = "TË PARAPËLQYERA"; "room_recents_server_notice_section" = "SINJALIZIME SISTEMI"; "room_recents_join_room_title" = "Hyni në një dhomë"; "room_participants_invite_another_user" = "Kërkoni / ftoni sipas ID-je Përdoruesi, Emri ose email-i"; @@ -507,7 +507,7 @@ "room_details_history_section_members_only" = "Vetëm anëtarët (që nga çasti i përzgjedhjes së kësaj mundësie)"; "room_details_history_section_prompt_msg" = "Ndryshime se cilët mund të lexojnë historikun do të vlejnë vetëm për mesazhe të ardhshëm në këtë dhomë. Dukshmëria e historikut ekzistues nuk do të ndryshohet."; "room_details_addresses_disable_main_address_prompt_msg" = "S’do të keni adresë kryesore të specifikuar. Adresa kryesore parazgjedhje për këtë dhomë do të zgjidhet në tym"; -"room_details_advanced_enable_e2e_encryption" = "Aktivizo fshehtëzim (kujdes: s’mund të çaktizohet më!)"; +"room_details_advanced_enable_e2e_encryption" = "Aktivizo fshehtëzim (kujdes: s’mund të çaktivizohet më!)"; "room_details_advanced_e2e_encryption_prompt_message" = "Fshehtëzimi skaj-më-skaj është eksperimental dhe mund të mos jetë i qëndrueshëm.\n\nS’duhet t’i zini ende besë për sigurim të dhënash.\n\nPajisjet s’do të jenë ende në gjendje të shfshehtëzojnë historik nga periudha përpara se të merrnin pjesë te dhomë.\n\nPasi të jetë aktivizuar fshehtëzimi për një dhomë, s’mund të çaktivizohet më (hëpërhë).\n\nMesazhet e fshehtëzuar s’do të jenë të dukshëm në klientë që nuk sendërtojnë ende fshehtëzimin."; "room_details_fail_to_update_room_guest_access" = "S’arrihet të përditësohet mundësia e hyrjes në dhomë të vizitorëve"; "group_participants_invite_malformed_id" = "ID e keqformuar. Duhet të jetë një ID Matrix, si '@localpart:domain'"; @@ -619,7 +619,7 @@ "key_backup_setup_intro_setup_action_without_existing_backup" = "Fillo të përdorësh Kopjeruajtje Kyçesh"; "key_backup_setup_intro_setup_action_with_existing_backup" = "Përdor Kopjeruajtje Kyçesh"; "key_backup_setup_passphrase_title" = "Sigurojeni kopjeruajtjen tuaj me një Frazë Sigurie"; -"key_backup_setup_passphrase_setup_recovery_key_info" = "Ose, sigurojeni kopjeruajtjen tuaj me një Kyç Sigurie, duke e ruajtur këtë diku të parrezikuar."; +"key_backup_setup_passphrase_setup_recovery_key_info" = "Ose, sigurojeni kopjeruajtjen tuaj me një Kyç Sigurie, duke e ruajtur këtë diku të parrezik."; "key_backup_setup_passphrase_setup_recovery_key_action" = "(Të mëtejshme) Rregullojeni me një Kyç Sigurie"; "key_backup_setup_success_title" = "Sukses!"; // Success from passphrase @@ -627,7 +627,7 @@ "key_backup_setup_success_from_passphrase_save_recovery_key_action" = "Ruani Kyç Sigurie"; "key_backup_setup_success_from_passphrase_done_action" = "U krye"; // Success from recovery key -"key_backup_setup_success_from_recovery_key_info" = "Po bëhet kopjeruajtja për kyçet tuaj.\n\nBëni një kopje të këtij Kyçi Sigurie dhe mbajeni të parrezikuar."; +"key_backup_setup_success_from_recovery_key_info" = "Po bëhet kopjeruajtja për kyçet tuaj.\n\nBëni një kopje të këtij Kyçi Sigurie dhe mbajeni të parrezik."; "key_backup_setup_success_from_recovery_key_recovery_key_title" = "Kyç Sigurie"; "key_backup_setup_success_from_recovery_key_make_copy_action" = "Bëni një Kopje"; "key_backup_setup_success_from_recovery_key_made_copy_action" = "Kam bërë një kopje"; @@ -1129,7 +1129,7 @@ "secure_key_backup_setup_existing_backup_error_info" = "Shkyçeni, që ta ripërdorni te kopjeruajtja e sigurt ose për ta fshirë që të krijoni një kopjeruajtje të re mesazhesh te kopjeruajtja e sigurt."; "secure_key_backup_setup_existing_backup_error_unlock_it" = "Shkyçe"; "secure_key_backup_setup_existing_backup_error_delete_it" = "Fshije"; -"sign_out_non_existing_key_backup_alert_setup_secure_backup_action" = "Fillo të përdorësh Kojperuajtje të Sigurt"; +"sign_out_non_existing_key_backup_alert_setup_secure_backup_action" = "Fillo të përdorësh Kopjeruajtje të Sigurt"; "security_settings_crypto_sessions_description_2" = "Nëse nuk njihni një palë kredenciale, ndryshoni fjalëkalimin tuaj Matrix dhe riujdisni Kopjeruajtjen e Sigurt."; "cross_signing_setup_banner_title" = "Ujdisni fshehtëzim"; "cross_signing_setup_banner_subtitle" = "Verifikoni më me lehtësi pajisje të tjera"; @@ -1517,7 +1517,7 @@ "poll_timeline_vote_not_registered_action" = "OK"; "poll_timeline_vote_not_registered_subtitle" = "Na ndjeni, vota juaj s’u regjistrua, ju lutemi, riprovoni"; "poll_timeline_vote_not_registered_title" = "Votë e paregjistruar"; -"poll_timeline_total_final_results" = "Rezultati përfundimtar, bazua në %lu votë"; +"poll_timeline_total_final_results" = "Rezultati përfundimtar, bazua në %lu vota"; "poll_timeline_total_final_results_one_vote" = "Rezultati përfundimtar, bazua në 1 votë"; "poll_timeline_total_votes_not_voted" = "%lu vota të hedhura. Që të shihni përfundimet, votoni"; "poll_timeline_total_one_vote_not_voted" = "1 votë e hedhur. Që të shihni përfundimet, votoni"; @@ -1975,9 +1975,9 @@ // Room members "room_member_ignore_prompt" = "Doni të fshihen krejt mesazhet nga ky përdorues?"; "room_member_power_level_prompt" = "S’do të jeni në gjendje ta zhbëni këtë ndryshim, ngaqë po e promovoni përdoruesin të ketë të njëjtën shkallë pushteti si ju vetë.\nJeni i sigurt?"; -"attachment_e2e_keys_file_prompt" = "Kjo kartelë përmban kyçe fshehtëzimi të eksportur nga një klient Matrix.\nDoni të shihni lëndën e kartelës apo të importoni kyçet që ajo përmban?"; +"attachment_e2e_keys_file_prompt" = "Kjo kartelë përmban kyçe fshehtëzimi të eksportuar nga një klient Matrix.\nDoni të shihni lëndën e kartelës apo të importoni kyçet që ajo përmban?"; "e2e_import_prompt" = "Ky proces ju lejon të importoni kyçe fshehtëzimi që keni eksportuar më parë nga një tjetër klient Matrix. Mandej do të jeni në gjendje të shfshehtëzoni çfarëdo mesazhesh që mund të shfshehtëzojë ai klient tjetër.\nKartela e eksportit është e mbrojtur me një frazëkalim. Që të shfshehtëzoni kartelën, duhet ta jepni frazëkalimin këtu."; -"e2e_export_prompt" = "Ky proces ju lejon të eksportoni te një kartelë vendore kyçet për mesazhe që keni marrë në dhoma të fshehtëzuara. Mandej do të jeni në gjendje ta importoni kartelën te një tjetër klient Matrix në të ardhmen, që kështu ai klient të jetë në gjendje t’i fshehtëzojë këto mesazhe.\nKartela e eksportuar do t’i lejojë, cilitdo që mund ta lexojë, të shfshehtëzojë çfarëdo mesazhesh të fshehtëzuar që mund të shihni ju, ndaj duhet të bëni kujdes ta mbani të parrezikuar."; +"e2e_export_prompt" = "Ky proces ju lejon të eksportoni te një kartelë vendore kyçet për mesazhe që keni marrë në dhoma të fshehtëzuara. Mandej do të jeni në gjendje ta importoni kartelën te një tjetër klient Matrix në të ardhmen, që kështu ai klient të jetë në gjendje t’i fshehtëzojë këto mesazhe.\nKartela e eksportuar do t’i lejojë, cilitdo që mund ta lexojë, të shfshehtëzojë çfarëdo mesazhesh të fshehtëzuar që mund të shihni ju, ndaj duhet të bëni kujdes ta mbani të parrezik."; "error_common_message" = "Ndodhi një gabim. Ju lutemi, riprovoni më vonë."; // Permissions "camera_access_not_granted_for_call" = "Thirrjet video lypin përdorim të Kamerës, por %@ s’ka leje për ta përdorur"; @@ -1988,7 +1988,7 @@ "redact" = "Hiqe"; // contacts list screen "invitation_message" = "Do të doja të bisedoja me ju me Matrix. Për të pasur më tepër itë dhëna, ju lutem, vizitoni sajtin http://matrix.org."; -"notification_settings_global_info" = "Rregullimet mbi njoftimet ruhen te llogaria juaj e përdoruesit dhe ndahen me krejt klientët që i mbulojnë ato (përfshi njoftimet në desktop).\n\nRregullat zbatohen sipas një radhe; rregulli i parë që ka përputhje përcakton lëndën për mesazhin.\nKështu: njoftimet sipas fjalësh janë më të rëndësishme se njoftimet sipas dhomash të cilat janë më të rëndësishme se njoftimet sipas dërguesish.\nFor multiple rules of the same kind, the first one in the list that matches takes priority."; +"notification_settings_global_info" = "Rregullimet mbi njoftimet ruhen te llogaria juaj e përdoruesit dhe ndahen me krejt klientët që i mbulojnë ato (përfshi njoftimet në desktop).\n\nRregullat zbatohen sipas një radhe; rregulli i parë që ka përputhje përcakton lëndën për mesazhin.\nKështu: njoftimet sipas fjalësh janë më të rëndësishme se njoftimet sipas dhomash të cilat janë më të rëndësishme se njoftimet sipas dërguesish.\nPër rregulla të shumta të të njëjtit lloj, i pari në listë që ka përputhje ka përparësinë."; "notification_settings_per_word_notifications" = "Njoftime sipas fjale"; "notification_settings_per_word_info" = "Për fjalët përputhjet gjenden pa marrë parasysh shkrimin me të madhe apo të vogël, dhe mund të përfshijnë një shenjë të gjithëpushtetshme *. Kështu:\nkot përputhet me vargun kot të rrethuar nga përkufizues fjalësh (p.sh. shenja pikësimi apo hapësira, ose fillim/fund rreshti).\nkot* përputhet me çfarëdo fjale që fillon me kot.\n*kot* përputhet me çfarëdo fjale që përfshin 3 shkronjat kot."; "notification_settings_per_room_notifications" = "Njoftime sipas dhome"; @@ -2420,9 +2420,9 @@ "all_chats_edit_layout_add_section_message" = "Fiksoni ndarje te kreu, për hyrje të lehtë në ta"; "room_event_encryption_info_key_authenticity_not_guaranteed" = "S’mund të garantohet mirëfilltësia e këtij mesazhi të fshehtëzuar në këtë pajisje."; "deselect_all" = "Shpërzgjidhi Krejt"; -"wysiwyg_composer_format_action_strikethrough" = "Apliko format me të nënvizuara"; -"wysiwyg_composer_format_action_underline" = "Apliko format me të hequravije"; -"wysiwyg_composer_format_action_italic" = "Apliko format me të pjerrta"; +"wysiwyg_composer_format_action_underline" = "Apliko format me të nënvizuara"; +"wysiwyg_composer_format_action_strikethrough" = "Apliko format me të hequravije"; +"wysiwyg_composer_format_action_italic" = "Apliko format me të pjerrëta"; // Formatting Actions "wysiwyg_composer_format_action_bold" = "Apliko format me të trasha"; @@ -2448,7 +2448,7 @@ "user_session_details_device_os" = "Sistem Operativ"; "user_session_details_device_browser" = "Shfletues"; "user_session_details_device_model" = "Model"; -"user_session_details_device_ip_location" = "Venndodhje IP-je"; +"user_session_details_device_ip_location" = "Vendndodhje IP-je"; "user_session_details_device_ip_address" = "Adresë IP"; "user_session_details_last_activity" = "Veprimtaria e fundit"; "user_session_details_session_section_footer" = "Kopjoni çfarëdo të dhëne duke prekur mbi të dhe duke e mbajtur të shtypur."; @@ -2660,7 +2660,7 @@ "wysiwyg_composer_format_action_link" = "Apliko formatim lidhjeje"; "notice_voice_broadcast_ended_by_you" = "Përfunduar një transmetim zanor."; "notice_voice_broadcast_ended" = "%@ përfundoi një transmetim zanor."; -"notice_voice_broadcast_live" = "Transmetim i drejtëpërdrejtë"; +"notice_voice_broadcast_live" = "Transmetim i drejtpërdrejtë"; "user_other_session_security_recommendation_title" = "Sesione të tjerë"; "poll_timeline_ended_text" = "Përfundoi pyetësori"; "poll_timeline_decryption_error" = "Për shkak gabimesh shfshehtëzimi, mund të mos jenë numëruar disa vota"; diff --git a/Riot/Assets/sv.lproj/Vector.strings b/Riot/Assets/sv.lproj/Vector.strings index cb9918a3a..85662f029 100644 --- a/Riot/Assets/sv.lproj/Vector.strings +++ b/Riot/Assets/sv.lproj/Vector.strings @@ -2485,8 +2485,8 @@ "wysiwyg_composer_format_action_unordered_list" = "Växla punktlista"; "wysiwyg_composer_format_action_inline_code" = "Tillämpa inline-kodstil"; "wysiwyg_composer_format_action_link" = "Tillämpa länkformat"; -"wysiwyg_composer_format_action_strikethrough" = "Tillämpa understruken stil"; -"wysiwyg_composer_format_action_underline" = "Tillämpa genomstruken stil"; +"wysiwyg_composer_format_action_underline" = "Tillämpa understruken stil"; +"wysiwyg_composer_format_action_strikethrough" = "Tillämpa genomstruken stil"; "wysiwyg_composer_format_action_italic" = "Tillämpa kursiv stil"; // Formatting Actions diff --git a/Riot/Assets/uk.lproj/Vector.strings b/Riot/Assets/uk.lproj/Vector.strings index 04e9b75d5..7c18d9f8b 100644 --- a/Riot/Assets/uk.lproj/Vector.strings +++ b/Riot/Assets/uk.lproj/Vector.strings @@ -2780,8 +2780,8 @@ "authentication_qr_login_start_subtitle" = "Використовуйте камеру на цьому пристрої, щоб зісканувати QR-код, показаний на іншому пристрої:"; "authentication_qr_login_start_title" = "Сканувати QR-код"; "authentication_login_with_qr" = "Увійти використавши QR-код"; -"wysiwyg_composer_format_action_strikethrough" = "Застосувати форматування підкресленим"; -"wysiwyg_composer_format_action_underline" = "Застосувати форматування перекресленим"; +"wysiwyg_composer_format_action_underline" = "Застосувати форматування підкресленим"; +"wysiwyg_composer_format_action_strikethrough" = "Застосувати форматування перекресленим"; // Formatting Actions "wysiwyg_composer_format_action_bold" = "Застосувати форматування жирним"; diff --git a/Riot/Assets/zh_Hans.lproj/Vector.strings b/Riot/Assets/zh_Hans.lproj/Vector.strings index 79177b974..50d43aed9 100644 --- a/Riot/Assets/zh_Hans.lproj/Vector.strings +++ b/Riot/Assets/zh_Hans.lproj/Vector.strings @@ -928,7 +928,7 @@ // MARK: Emoji picker "emoji_picker_title" = "反应"; "emoji_picker_people_category" = "表情和人物"; -"emoji_picker_nature_category" = "动物和自热"; +"emoji_picker_nature_category" = "动物和自然"; "emoji_picker_foods_category" = "食物和饮料"; "emoji_picker_activity_category" = "活动"; "emoji_picker_places_category" = "旅游和景点"; @@ -952,7 +952,7 @@ "key_verification_tile_request_incoming_approval_decline" = "拒绝"; "key_verification_tile_conclusion_done_title" = "已验证"; "key_verification_tile_conclusion_warning_title" = "不被信任的登录"; -"key_verification_incoming_request_incoming_alert_message" = "%@想要验证"; +"key_verification_incoming_request_incoming_alert_message" = "%@ 想要进行验证"; "user_verification_start_verify_action" = "开始验证"; "user_verification_start_information_part1" = "为了额外的安全性,请验证: "; "user_verification_start_information_part2" = " 检查在你的两个设备上的一次性代码。"; @@ -2405,3 +2405,24 @@ "room_access_space_chooser_known_spaces_section" = "您知道的包含 %@ 的空间"; "room_access_space_chooser_other_spaces_section_info" = "这些很可能是 %@ 的管理员参与。"; "room_access_space_chooser_other_spaces_section" = "其他空间或房间"; +"event_formatter_message_deleted" = "消息已删除"; +"network_offline_title" = "您已离线"; + +// MARK: Sign out warning + +"sign_out" = "登出"; + +// Unverified sessions +"key_verification_alert_title" = "您有未验证的会话"; +"pill_message_in" = "在 %@ 里的消息"; + +// Legacy to Rust security upgrade + +"key_verification_self_verify_security_upgrade_alert_title" = "应用已更新"; +"sign_out_confirmation_message" = "您确定要登出吗?"; +"device_verification_self_verify_open_on_other_device_title" = "在您的另一台设备上打开 %@"; +"device_verification_self_verify_open_on_other_device_information" = "您需要先验证此会话才能读取加密信息。\n\n在您的其他设备上打开 Element 并按照说明进行操作。"; +"device_verification_self_verify_wait_recover_secrets_additional_help" = "已无法访问 %@ 会话?"; +"network_offline_message" = "您已离线,请检查您的网络链接。"; +"key_verification_alert_body" = "重新检查以确保您的账户安全。"; +"key_verification_scan_qr_code_title" = "扫描 QR Code"; diff --git a/Riot/Assets/zh_Hant.lproj/Vector.strings b/Riot/Assets/zh_Hant.lproj/Vector.strings index f92adb766..f7818a790 100644 --- a/Riot/Assets/zh_Hant.lproj/Vector.strings +++ b/Riot/Assets/zh_Hant.lproj/Vector.strings @@ -2026,8 +2026,8 @@ // Links "wysiwyg_composer_link_action_text" = "文字"; "wysiwyg_composer_format_action_link" = "套用連結格式"; -"wysiwyg_composer_format_action_strikethrough" = "套用底線格式"; -"wysiwyg_composer_format_action_underline" = "套用刪除線格式"; +"wysiwyg_composer_format_action_underline" = "套用底線格式"; +"wysiwyg_composer_format_action_strikethrough" = "套用刪除線格式"; "wysiwyg_composer_format_action_italic" = "套用義式斜體格式"; // Formatting Actions diff --git a/Riot/Generated/Strings.swift b/Riot/Generated/Strings.swift index b446b0823..e8e743159 100644 --- a/Riot/Generated/Strings.swift +++ b/Riot/Generated/Strings.swift @@ -9599,7 +9599,7 @@ public class VectorL10n: NSObject { public static var wysiwygComposerFormatActionQuote: String { return VectorL10n.tr("Vector", "wysiwyg_composer_format_action_quote") } - /// Apply underline format + /// Apply strikethrough format public static var wysiwygComposerFormatActionStrikethrough: String { return VectorL10n.tr("Vector", "wysiwyg_composer_format_action_strikethrough") } @@ -9607,7 +9607,7 @@ public class VectorL10n: NSObject { public static var wysiwygComposerFormatActionUnIndent: String { return VectorL10n.tr("Vector", "wysiwyg_composer_format_action_un_indent") } - /// Apply strikethrough format + /// Apply underline format public static var wysiwygComposerFormatActionUnderline: String { return VectorL10n.tr("Vector", "wysiwyg_composer_format_action_underline") } diff --git a/Riot/Modules/Common/Recents/Views/RecentTableViewCell.m b/Riot/Modules/Common/Recents/Views/RecentTableViewCell.m index a85d1e820..561dbf317 100644 --- a/Riot/Modules/Common/Recents/Views/RecentTableViewCell.m +++ b/Riot/Modules/Common/Recents/Views/RecentTableViewCell.m @@ -153,13 +153,7 @@ self.lastEventDecriptionLabelTrailingConstraint.constant = self.unsentImageView.hidden ? 10 : 30; // Notify unreads and bing - if (roomCellData.isRoomMarkedAsUnread) - { - self.missedNotifAndUnreadBadgeBgView.hidden = NO; - self.missedNotifAndUnreadBadgeBgView.backgroundColor = ThemeService.shared.theme.tintColor; - self.missedNotifAndUnreadBadgeBgViewWidthConstraint.constant = 20; - } - else if (roomCellData.hasUnread) + if (roomCellData.hasUnread) { self.missedNotifAndUnreadIndicator.hidden = NO; if (0 < roomCellData.notificationCount) diff --git a/Riot/Modules/ContextMenu/ActionProviders/RoomActionProvider.swift b/Riot/Modules/ContextMenu/ActionProviders/RoomActionProvider.swift index 2ef2da675..981f0f2e7 100644 --- a/Riot/Modules/ContextMenu/ActionProviders/RoomActionProvider.swift +++ b/Riot/Modules/ContextMenu/ActionProviders/RoomActionProvider.swift @@ -48,7 +48,7 @@ class RoomActionProvider: RoomActionProviderProtocol { ]) } } else { - var children = service.hasUnread ? [self.markAsReadAction] : [self.markAsUnreadAction] + var children = service.hasUnread ? [self.markAsReadAction] : [] children.append(contentsOf: [ self.directChatAction, self.notificationsAction, diff --git a/Riot/Modules/ContextMenu/Services/RoomContextActionService.swift b/Riot/Modules/ContextMenu/Services/RoomContextActionService.swift index 72a38e906..fefdc1605 100644 --- a/Riot/Modules/ContextMenu/Services/RoomContextActionService.swift +++ b/Riot/Modules/ContextMenu/Services/RoomContextActionService.swift @@ -38,7 +38,7 @@ class RoomContextActionService: NSObject, RoomContextActionServiceProtocol { self.room = room self.delegate = delegate self.isRoomJoined = room.summary?.isJoined ?? false - self.hasUnread = (room.summary?.hasAnyUnread ?? false) || room.isMarkedAsUnread + self.hasUnread = room.summary?.hasAnyUnread ?? false self.roomMembership = room.summary?.membership ?? .unknown self.session = room.mxSession self.unownedRoomService = UnownedRoomContextActionService(roomId: room.roomId, canonicalAlias: room.summary?.aliases?.first, session: self.session, delegate: delegate) diff --git a/Riot/Modules/QRCode/Reader/QRCodeReaderView.swift b/Riot/Modules/QRCode/Reader/QRCodeReaderView.swift index 21f1b8497..302cd6310 100644 --- a/Riot/Modules/QRCode/Reader/QRCodeReaderView.swift +++ b/Riot/Modules/QRCode/Reader/QRCodeReaderView.swift @@ -113,7 +113,6 @@ final class QRCodeReaderView: UIView { } private func applyOrientation() { - let orientation = UIApplication.shared.statusBarOrientation let captureRotation: Double let scanRectRotation: Double @@ -136,59 +135,13 @@ final class QRCodeReaderView: UIView { scanRectRotation = 90 } - applyRectOfInterest(orientation: orientation) - let angleRadius = captureRotation / 180.0 * Double.pi - let captureTranform = CGAffineTransform(rotationAngle: CGFloat(angleRadius)) + let captureTransform = CGAffineTransform(rotationAngle: CGFloat(angleRadius)) - zxCapture.transform = captureTranform + zxCapture.transform = captureTransform zxCapture.rotation = CGFloat(scanRectRotation) zxCapture.layer.frame = self.bounds } - - private func applyRectOfInterest(orientation: UIInterfaceOrientation) { - var transformedVideoRect = self.frame - let cameraSessionPreset = zxCapture.sessionPreset - - var scaleVideoX, scaleVideoY: CGFloat - var videoHeight, videoWidth: CGFloat - - // Currently support only for 1920x1080 || 1280x720 - if cameraSessionPreset == AVCaptureSession.Preset.hd1920x1080.rawValue { - videoHeight = 1080.0 - videoWidth = 1920.0 - } else { - videoHeight = 720.0 - videoWidth = 1280.0 - } - - if orientation == UIInterfaceOrientation.portrait { - scaleVideoX = self.frame.width / videoHeight - scaleVideoY = self.frame.height / videoWidth - - // Convert CGPoint under portrait mode to map with orientation of image - // because the image will be cropped before rotate - // reference: https://github.com/TheLevelUp/ZXingObjC/issues/222 - let realX = transformedVideoRect.origin.y - let realY = self.frame.size.width - transformedVideoRect.size.width - transformedVideoRect.origin.x - let realWidth = transformedVideoRect.size.height - let realHeight = transformedVideoRect.size.width - transformedVideoRect = CGRect(x: realX, y: realY, width: realWidth, height: realHeight) - - } else { - scaleVideoX = self.frame.width / videoWidth - scaleVideoY = self.frame.height / videoHeight - } - - captureSizeTransform = CGAffineTransform(scaleX: 1.0/scaleVideoX, y: 1.0/scaleVideoY) - - guard let _captureSizeTransform = captureSizeTransform else { - return - } - - let transformRect = transformedVideoRect.applying(_captureSizeTransform) - zxCapture.scanRect = transformRect - } } diff --git a/RiotSwiftUI/Modules/Room/Composer/View/Composer.swift b/RiotSwiftUI/Modules/Room/Composer/View/Composer.swift index 8da14fd03..c13321422 100644 --- a/RiotSwiftUI/Modules/Room/Composer/View/Composer.swift +++ b/RiotSwiftUI/Modules/Room/Composer/View/Composer.swift @@ -137,7 +137,7 @@ struct Composer: View { placeholder: viewModel.viewState.placeholder ?? "", viewModel: wysiwygViewModel, itemProviderHelper: nil, - keyCommandHandler: handleKeyCommand, + keyCommands: keyCommands, pasteHandler: nil ) .clipped() @@ -228,15 +228,13 @@ struct Composer: View { } } - func handleKeyCommand(_ keyCommand: WysiwygKeyCommand) -> Bool { - switch keyCommand { - case .enter: - sendMessageAction(wysiwygViewModel.content) - wysiwygViewModel.clearContent() - return true - case .shiftEnter: - return false - } + var keyCommands: [WysiwygKeyCommand] { + [ + .enter { + sendMessageAction(wysiwygViewModel.content) + wysiwygViewModel.clearContent() + } + ] } /// Computes the total height of the composer (excluding the RTE formatting bar). diff --git a/project.yml b/project.yml index ea8c86142..4236135ac 100644 --- a/project.yml +++ b/project.yml @@ -67,7 +67,7 @@ packages: maxVersion: 3.5.0 WysiwygComposer: url: https://github.com/matrix-org/matrix-wysiwyg-composer-swift - version: 2.19.0 + version: 2.29.0 DeviceKit: url: https://github.com/devicekit/DeviceKit majorVersion: 4.7.0