mirror of
https://gitlab.opencode.de/bwi/bundesmessenger/clients/bundesmessenger-ios.git
synced 2026-05-09 09:27:42 +02:00
Merge pull request #4973 from vector-im/release/1.6.2/release
Release 1.6.2
This commit is contained in:
@@ -1,8 +1,10 @@
|
||||
### Pull Request Checklist
|
||||
|
||||
* [ ] I read the [contributing guide](https://github.com/vector-im/element-ios/blob/develop/CONTRIBUTING.md)
|
||||
* [ ] UI change has been tested on both light and dark themes, in portrait and landscape orientations and on iPhone and iPad simulators
|
||||
- [ ] I read the [contributing guide](https://github.com/vector-im/element-ios/blob/develop/CONTRIBUTING.md)
|
||||
- [ ] UI change has been tested on both light and dark themes, in portrait and landscape orientations and on iPhone and iPad simulators
|
||||
- [ ] Accessibility has been taken into account.
|
||||
* [ ] Pull request is based on the develop branch
|
||||
* [ ] Pull request contains a [changelog file](https://github.com/matrix-org/matrix-ios-sdk/blob/develop/CONTRIBUTING.md#changelog) in ./changelog.d
|
||||
* [ ] Pull request includes screenshots or videos of UI changes
|
||||
* [ ] Pull request includes a [sign off](https://github.com/matrix-org/matrix-ios-sdk/blob/develop/CONTRIBUTING.md#sign-off)
|
||||
- [ ] Pull request contains a [changelog file](https://github.com/matrix-org/matrix-ios-sdk/blob/develop/CONTRIBUTING.md#changelog) in ./changelog.d
|
||||
- [ ] You've made a self review of your PR
|
||||
- [ ] Pull request includes screenshots or videos of UI changes
|
||||
- [ ] Pull request includes a [sign off](https://github.com/matrix-org/matrix-ios-sdk/blob/develop/CONTRIBUTING.md#sign-off)
|
||||
|
||||
@@ -15,7 +15,7 @@ env:
|
||||
jobs:
|
||||
build:
|
||||
name: Release
|
||||
runs-on: macos-latest
|
||||
runs-on: macos-11
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
|
||||
+28
@@ -1,3 +1,31 @@
|
||||
## Changes in 1.6.2 (2021-10-08)
|
||||
|
||||
🙌 Improvements
|
||||
|
||||
- Upgrade MatrixKit version ([v0.16.5](https://github.com/matrix-org/matrix-ios-kit/releases/tag/v0.16.5)).
|
||||
- URL Previews: Use attributed string whitespace for cell heights and stop breaking up the bubble data. ([#4896](https://github.com/vector-im/element-ios/issues/4896))
|
||||
- Replaced localizable strings with generated ones throughout the code. Fixed various translation issues. ([#4899](https://github.com/vector-im/element-ios/issues/4899))
|
||||
- Voice Message scrubbing should require a slightly longer press, to avoid accidental scrubbing when scrolling the timeline ([#4935](https://github.com/vector-im/element-ios/issues/4935))
|
||||
- Pods: Update ffmpeg-kit-ios-audio, FLEX, FlowCommoniOS, Reusable and SwiftLint. ([#4939](https://github.com/vector-im/element-ios/issues/4939))
|
||||
- Service Terms: Track an analytics value on accept/decline of an identity server. ([#4955](https://github.com/vector-im/element-ios/issues/4955))
|
||||
|
||||
🐛 Bugfixes
|
||||
|
||||
- RecentsDataSource: Memory leak in [RecentsDataSource dataSource:didStateChange:]. ([#4193](https://github.com/vector-im/element-ios/pull/4193))
|
||||
- i18n: Standardise casing of identity server and integration manager. ([#4559](https://github.com/vector-im/element-ios/issues/4559))
|
||||
- MasterTabBarController: Listen to `MXSpaceNotificationCounter` to update the notification badge ([#4898](https://github.com/vector-im/element-ios/issues/4898))
|
||||
- Fixed unintentional voice message drafts on automatically cancelled recordings (under 1 second) ([#4970](https://github.com/vector-im/element-ios/issues/4970))
|
||||
|
||||
🧱 Build
|
||||
|
||||
- Element Alpha: Build on macOS 11 to fix iOS 15 installation error. ([#4937](https://github.com/vector-im/element-ios/issues/4937))
|
||||
- Bundler: Update CocoaPods and fastlane and xcode-install. ([#4951](https://github.com/vector-im/element-ios/issues/4951))
|
||||
|
||||
📄 Documentation
|
||||
|
||||
- Update PR template with a checkbox for accessibility and self review. ([#4920](https://github.com/vector-im/element-ios/issues/4920))
|
||||
|
||||
|
||||
## Changes in 1.6.1 (2021-09-30)
|
||||
|
||||
🙌 Improvements
|
||||
|
||||
@@ -15,5 +15,5 @@
|
||||
//
|
||||
|
||||
// Version
|
||||
MARKETING_VERSION = 1.6.1
|
||||
CURRENT_PROJECT_VERSION = 1.6.1
|
||||
MARKETING_VERSION = 1.6.2
|
||||
CURRENT_PROJECT_VERSION = 1.6.2
|
||||
|
||||
@@ -2,7 +2,7 @@ source "https://rubygems.org"
|
||||
|
||||
gem "xcode-install"
|
||||
gem "fastlane"
|
||||
gem "cocoapods", '~>1.10.1'
|
||||
gem "cocoapods", '~>1.11.2'
|
||||
|
||||
plugins_path = File.join(File.dirname(__FILE__), 'fastlane', 'Pluginfile')
|
||||
eval_gemfile(plugins_path) if File.exist?(plugins_path)
|
||||
|
||||
+63
-59
@@ -1,12 +1,14 @@
|
||||
GEM
|
||||
remote: https://rubygems.org/
|
||||
specs:
|
||||
CFPropertyList (3.0.3)
|
||||
activesupport (5.2.4.5)
|
||||
CFPropertyList (3.0.4)
|
||||
rexml
|
||||
activesupport (6.1.4.1)
|
||||
concurrent-ruby (~> 1.0, >= 1.0.2)
|
||||
i18n (>= 0.7, < 2)
|
||||
minitest (~> 5.1)
|
||||
tzinfo (~> 1.1)
|
||||
i18n (>= 1.6, < 2)
|
||||
minitest (>= 5.1)
|
||||
tzinfo (~> 2.0)
|
||||
zeitwerk (~> 2.3)
|
||||
addressable (2.8.0)
|
||||
public_suffix (>= 2.0.2, < 5.0)
|
||||
algoliasearch (1.27.5)
|
||||
@@ -14,28 +16,28 @@ GEM
|
||||
json (>= 1.5.1)
|
||||
artifactory (3.0.15)
|
||||
atomos (0.1.3)
|
||||
aws-eventstream (1.1.1)
|
||||
aws-partitions (1.487.0)
|
||||
aws-sdk-core (3.119.0)
|
||||
aws-eventstream (1.2.0)
|
||||
aws-partitions (1.510.0)
|
||||
aws-sdk-core (3.121.1)
|
||||
aws-eventstream (~> 1, >= 1.0.2)
|
||||
aws-partitions (~> 1, >= 1.239.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
jmespath (~> 1.0)
|
||||
aws-sdk-kms (1.46.0)
|
||||
aws-sdk-core (~> 3, >= 3.119.0)
|
||||
aws-sdk-kms (1.48.0)
|
||||
aws-sdk-core (~> 3, >= 3.120.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
aws-sdk-s3 (1.98.0)
|
||||
aws-sdk-core (~> 3, >= 3.119.0)
|
||||
aws-sdk-s3 (1.103.0)
|
||||
aws-sdk-core (~> 3, >= 3.120.0)
|
||||
aws-sdk-kms (~> 1)
|
||||
aws-sigv4 (~> 1.1)
|
||||
aws-sigv4 (1.2.4)
|
||||
aws-sigv4 (~> 1.4)
|
||||
aws-sigv4 (1.4.0)
|
||||
aws-eventstream (~> 1, >= 1.0.2)
|
||||
babosa (1.0.4)
|
||||
claide (1.0.3)
|
||||
cocoapods (1.10.1)
|
||||
addressable (~> 2.6)
|
||||
cocoapods (1.11.2)
|
||||
addressable (~> 2.8)
|
||||
claide (>= 1.0.2, < 2.0)
|
||||
cocoapods-core (= 1.10.1)
|
||||
cocoapods-core (= 1.11.2)
|
||||
cocoapods-deintegrate (>= 1.0.3, < 2.0)
|
||||
cocoapods-downloader (>= 1.4.0, < 2.0)
|
||||
cocoapods-plugins (>= 1.0.0, < 2.0)
|
||||
@@ -46,26 +48,26 @@ GEM
|
||||
escape (~> 0.0.4)
|
||||
fourflusher (>= 2.3.0, < 3.0)
|
||||
gh_inspector (~> 1.0)
|
||||
molinillo (~> 0.6.6)
|
||||
molinillo (~> 0.8.0)
|
||||
nap (~> 1.0)
|
||||
ruby-macho (~> 1.4)
|
||||
xcodeproj (>= 1.19.0, < 2.0)
|
||||
cocoapods-core (1.10.1)
|
||||
activesupport (> 5.0, < 6)
|
||||
addressable (~> 2.6)
|
||||
ruby-macho (>= 1.0, < 3.0)
|
||||
xcodeproj (>= 1.21.0, < 2.0)
|
||||
cocoapods-core (1.11.2)
|
||||
activesupport (>= 5.0, < 7)
|
||||
addressable (~> 2.8)
|
||||
algoliasearch (~> 1.0)
|
||||
concurrent-ruby (~> 1.1)
|
||||
fuzzy_match (~> 2.0.4)
|
||||
nap (~> 1.0)
|
||||
netrc (~> 0.11)
|
||||
public_suffix
|
||||
public_suffix (~> 4.0)
|
||||
typhoeus (~> 1.0)
|
||||
cocoapods-deintegrate (1.0.4)
|
||||
cocoapods-downloader (1.4.0)
|
||||
cocoapods-deintegrate (1.0.5)
|
||||
cocoapods-downloader (1.5.1)
|
||||
cocoapods-plugins (1.0.0)
|
||||
nap
|
||||
cocoapods-search (1.0.0)
|
||||
cocoapods-trunk (1.5.0)
|
||||
cocoapods-search (1.0.1)
|
||||
cocoapods-trunk (1.6.0)
|
||||
nap (>= 0.8, < 2.0)
|
||||
netrc (~> 0.11)
|
||||
cocoapods-try (1.2.0)
|
||||
@@ -73,19 +75,19 @@ GEM
|
||||
colored2 (3.1.2)
|
||||
commander (4.6.0)
|
||||
highline (~> 2.0.0)
|
||||
concurrent-ruby (1.1.8)
|
||||
concurrent-ruby (1.1.9)
|
||||
declarative (0.0.20)
|
||||
digest-crc (0.6.4)
|
||||
rake (>= 12.0.0, < 14.0.0)
|
||||
domain_name (0.5.20190701)
|
||||
unf (>= 0.0.5, < 1.0.0)
|
||||
dotenv (2.7.6)
|
||||
emoji_regex (3.2.2)
|
||||
emoji_regex (3.2.3)
|
||||
escape (0.0.4)
|
||||
ethon (0.12.0)
|
||||
ffi (>= 1.3.0)
|
||||
excon (0.85.0)
|
||||
faraday (1.7.0)
|
||||
ethon (0.14.0)
|
||||
ffi (>= 1.15.0)
|
||||
excon (0.86.0)
|
||||
faraday (1.8.0)
|
||||
faraday-em_http (~> 1.0)
|
||||
faraday-em_synchrony (~> 1.0)
|
||||
faraday-excon (~> 1.1)
|
||||
@@ -110,7 +112,7 @@ GEM
|
||||
faraday_middleware (1.1.0)
|
||||
faraday (~> 1.0)
|
||||
fastimage (2.2.5)
|
||||
fastlane (2.191.0)
|
||||
fastlane (2.195.0)
|
||||
CFPropertyList (>= 2.3, < 4.0.0)
|
||||
addressable (>= 2.8, < 3.0.0)
|
||||
artifactory (~> 3.0)
|
||||
@@ -136,6 +138,7 @@ GEM
|
||||
mini_magick (>= 4.9.4, < 5.0.0)
|
||||
multipart-post (~> 2.0.0)
|
||||
naturally (~> 2.2)
|
||||
optparse (~> 0.1.1)
|
||||
plist (>= 3.1.0, < 4.0.0)
|
||||
rubyzip (>= 2.0.0, < 3.0.0)
|
||||
security (= 0.1.3)
|
||||
@@ -152,13 +155,13 @@ GEM
|
||||
fastlane-plugin-diawi (2.1.0)
|
||||
rest-client (>= 2.0.0)
|
||||
fastlane-plugin-versioning (0.5.0)
|
||||
fastlane-plugin-xcodegen (1.0.0)
|
||||
fastlane-plugin-xcodegen (1.1.0)
|
||||
fastlane-plugin-brew (~> 0.1.1)
|
||||
ffi (1.13.1)
|
||||
ffi (1.15.4)
|
||||
fourflusher (2.3.1)
|
||||
fuzzy_match (2.0.4)
|
||||
gh_inspector (1.1.3)
|
||||
google-apis-androidpublisher_v3 (0.10.0)
|
||||
google-apis-androidpublisher_v3 (0.11.0)
|
||||
google-apis-core (>= 0.4, < 2.a)
|
||||
google-apis-core (0.4.1)
|
||||
addressable (~> 2.5, >= 2.5.1)
|
||||
@@ -169,18 +172,18 @@ GEM
|
||||
retriable (>= 2.0, < 4.a)
|
||||
rexml
|
||||
webrick
|
||||
google-apis-iamcredentials_v1 (0.6.0)
|
||||
google-apis-iamcredentials_v1 (0.7.0)
|
||||
google-apis-core (>= 0.4, < 2.a)
|
||||
google-apis-playcustomapp_v1 (0.5.0)
|
||||
google-apis-core (>= 0.4, < 2.a)
|
||||
google-apis-storage_v1 (0.6.0)
|
||||
google-apis-storage_v1 (0.8.0)
|
||||
google-apis-core (>= 0.4, < 2.a)
|
||||
google-cloud-core (1.6.0)
|
||||
google-cloud-env (~> 1.0)
|
||||
google-cloud-errors (~> 1.0)
|
||||
google-cloud-env (1.5.0)
|
||||
faraday (>= 0.17.3, < 2.0)
|
||||
google-cloud-errors (1.1.0)
|
||||
google-cloud-errors (1.2.0)
|
||||
google-cloud-storage (1.34.1)
|
||||
addressable (~> 2.5)
|
||||
digest-crc (~> 0.4)
|
||||
@@ -189,37 +192,38 @@ GEM
|
||||
google-cloud-core (~> 1.6)
|
||||
googleauth (>= 0.16.2, < 2.a)
|
||||
mini_mime (~> 1.0)
|
||||
googleauth (0.17.0)
|
||||
googleauth (1.0.0)
|
||||
faraday (>= 0.17.3, < 2.0)
|
||||
jwt (>= 1.4, < 3.0)
|
||||
memoist (~> 0.16)
|
||||
multi_json (~> 1.11)
|
||||
os (>= 0.9, < 2.0)
|
||||
signet (~> 0.14)
|
||||
signet (>= 0.16, < 2.a)
|
||||
highline (2.0.3)
|
||||
http-accept (1.7.0)
|
||||
http-cookie (1.0.4)
|
||||
domain_name (~> 0.5)
|
||||
httpclient (2.8.3)
|
||||
i18n (1.8.9)
|
||||
i18n (1.8.10)
|
||||
concurrent-ruby (~> 1.0)
|
||||
jmespath (1.4.0)
|
||||
json (2.5.1)
|
||||
jwt (2.2.3)
|
||||
jwt (2.3.0)
|
||||
memoist (0.16.2)
|
||||
mime-types (3.3.1)
|
||||
mime-types-data (~> 3.2015)
|
||||
mime-types-data (3.2021.0704)
|
||||
mime-types-data (3.2021.0901)
|
||||
mini_magick (4.11.0)
|
||||
mini_mime (1.1.0)
|
||||
mini_mime (1.1.1)
|
||||
minitest (5.14.4)
|
||||
molinillo (0.6.6)
|
||||
molinillo (0.8.0)
|
||||
multi_json (1.15.0)
|
||||
multipart-post (2.0.0)
|
||||
nanaimo (0.3.0)
|
||||
nap (1.1.0)
|
||||
naturally (2.2.1)
|
||||
netrc (0.11.0)
|
||||
optparse (0.1.1)
|
||||
os (1.1.1)
|
||||
plist (3.6.0)
|
||||
public_suffix (4.0.6)
|
||||
@@ -236,12 +240,12 @@ GEM
|
||||
retriable (3.1.2)
|
||||
rexml (3.2.5)
|
||||
rouge (2.0.7)
|
||||
ruby-macho (1.4.0)
|
||||
ruby-macho (2.5.1)
|
||||
ruby2_keywords (0.0.5)
|
||||
rubyzip (2.3.2)
|
||||
security (0.1.3)
|
||||
signet (0.15.0)
|
||||
addressable (~> 2.3)
|
||||
signet (0.16.0)
|
||||
addressable (~> 2.8)
|
||||
faraday (>= 0.17.3, < 2.0)
|
||||
jwt (>= 1.5, < 3.0)
|
||||
multi_json (~> 1.10)
|
||||
@@ -251,7 +255,6 @@ GEM
|
||||
terminal-notifier (2.0.0)
|
||||
terminal-table (1.8.0)
|
||||
unicode-display_width (~> 1.1, >= 1.1.1)
|
||||
thread_safe (0.3.6)
|
||||
trailblazer-option (0.1.1)
|
||||
tty-cursor (0.7.1)
|
||||
tty-screen (0.8.1)
|
||||
@@ -259,16 +262,16 @@ GEM
|
||||
tty-cursor (~> 0.7)
|
||||
typhoeus (1.4.0)
|
||||
ethon (>= 0.9.0)
|
||||
tzinfo (1.2.9)
|
||||
thread_safe (~> 0.1)
|
||||
tzinfo (2.0.4)
|
||||
concurrent-ruby (~> 1.0)
|
||||
uber (0.1.0)
|
||||
unf (0.1.4)
|
||||
unf_ext
|
||||
unf_ext (0.0.7.7)
|
||||
unicode-display_width (1.7.0)
|
||||
unf_ext (0.0.8)
|
||||
unicode-display_width (1.8.0)
|
||||
webrick (1.7.0)
|
||||
word_wrap (1.0.0)
|
||||
xcode-install (2.6.7)
|
||||
xcode-install (2.8.0)
|
||||
claide (>= 0.9.1, < 1.1.0)
|
||||
fastlane (>= 2.1.0, < 3.0.0)
|
||||
xcodeproj (1.21.0)
|
||||
@@ -282,12 +285,13 @@ GEM
|
||||
rouge (~> 2.0.7)
|
||||
xcpretty-travis-formatter (1.0.1)
|
||||
xcpretty (~> 0.2, >= 0.0.7)
|
||||
zeitwerk (2.4.2)
|
||||
|
||||
PLATFORMS
|
||||
ruby
|
||||
|
||||
DEPENDENCIES
|
||||
cocoapods (~> 1.10.1)
|
||||
cocoapods (~> 1.11.2)
|
||||
fastlane
|
||||
fastlane-plugin-diawi
|
||||
fastlane-plugin-versioning
|
||||
@@ -295,4 +299,4 @@ DEPENDENCIES
|
||||
xcode-install
|
||||
|
||||
BUNDLED WITH
|
||||
2.2.24
|
||||
2.2.28
|
||||
|
||||
@@ -13,7 +13,7 @@ use_frameworks!
|
||||
# - `{ {kit spec hash} => {sdk spec hash}` to depend on specific pod options (:git => …, :podspec => …) for each 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
|
||||
$matrixKitVersion = '= 0.16.4'
|
||||
$matrixKitVersion = '= 0.16.5'
|
||||
# $matrixKitVersion = :local
|
||||
# $matrixKitVersion = {'develop' => 'develop'}
|
||||
|
||||
@@ -59,22 +59,22 @@ abstract_target 'RiotPods' do
|
||||
|
||||
# Tools
|
||||
pod 'SwiftGen', '~> 6.3'
|
||||
pod 'SwiftLint', '~> 0.43.0'
|
||||
pod 'SwiftLint', '~> 0.44.0'
|
||||
|
||||
target "Riot" do
|
||||
import_MatrixKit
|
||||
pod 'DGCollectionViewLeftAlignFlowLayout', '~> 1.0.4'
|
||||
pod 'KTCenterFlowLayout', '~> 1.3.1'
|
||||
pod 'ZXingObjC', '~> 3.6.5'
|
||||
pod 'FlowCommoniOS', '~> 1.10.0'
|
||||
pod 'FlowCommoniOS', '~> 1.12.0'
|
||||
pod 'ReadMoreTextView', '~> 3.0.1'
|
||||
pod 'SwiftBase32', '~> 0.9.0'
|
||||
pod 'SwiftJWT', '~> 3.6.200'
|
||||
pod 'SideMenu', '~> 6.5'
|
||||
pod 'DSWaveformImage', '~> 6.1.1'
|
||||
pod 'ffmpeg-kit-ios-audio', '~> 4.4'
|
||||
pod 'ffmpeg-kit-ios-audio', '~> 4.5'
|
||||
|
||||
pod 'FLEX', '~> 4.4.1', :configurations => ['Debug']
|
||||
pod 'FLEX', '~> 4.5.0', :configurations => ['Debug']
|
||||
|
||||
target 'RiotTests' do
|
||||
inherit! :search_paths
|
||||
|
||||
+19
-19
@@ -37,9 +37,9 @@ PODS:
|
||||
- DTFoundation/Core
|
||||
- DTFoundation/UIKit (1.7.18):
|
||||
- DTFoundation/Core
|
||||
- ffmpeg-kit-ios-audio (4.4)
|
||||
- FLEX (4.4.1)
|
||||
- FlowCommoniOS (1.10.0)
|
||||
- ffmpeg-kit-ios-audio (4.5)
|
||||
- FLEX (4.5.0)
|
||||
- FlowCommoniOS (1.12.0)
|
||||
- GBDeviceInfo (6.6.0):
|
||||
- GBDeviceInfo/Core (= 6.6.0)
|
||||
- GBDeviceInfo/Core (6.6.0)
|
||||
@@ -92,11 +92,11 @@ PODS:
|
||||
- Realm (10.7.6):
|
||||
- Realm/Headers (= 10.7.6)
|
||||
- Realm/Headers (10.7.6)
|
||||
- Reusable (4.1.1):
|
||||
- Reusable/Storyboard (= 4.1.1)
|
||||
- Reusable/View (= 4.1.1)
|
||||
- Reusable/Storyboard (4.1.1)
|
||||
- Reusable/View (4.1.1)
|
||||
- Reusable (4.1.2):
|
||||
- Reusable/Storyboard (= 4.1.2)
|
||||
- Reusable/View (= 4.1.2)
|
||||
- Reusable/Storyboard (4.1.2)
|
||||
- Reusable/View (4.1.2)
|
||||
- SideMenu (6.5.0)
|
||||
- SwiftBase32 (0.9.0)
|
||||
- SwiftGen (6.4.0)
|
||||
@@ -106,7 +106,7 @@ PODS:
|
||||
- BlueRSA (~> 1.0)
|
||||
- KituraContracts (~> 1.2)
|
||||
- LoggerAPI (~> 1.7)
|
||||
- SwiftLint (0.43.1)
|
||||
- SwiftLint (0.44.0)
|
||||
- SwiftyBeaver (1.9.5)
|
||||
- zxcvbn-ios (1.0.4)
|
||||
- ZXingObjC (3.6.5):
|
||||
@@ -116,9 +116,9 @@ PODS:
|
||||
DEPENDENCIES:
|
||||
- DGCollectionViewLeftAlignFlowLayout (~> 1.0.4)
|
||||
- DSWaveformImage (~> 6.1.1)
|
||||
- ffmpeg-kit-ios-audio (~> 4.4)
|
||||
- FLEX (~> 4.4.1)
|
||||
- FlowCommoniOS (~> 1.10.0)
|
||||
- ffmpeg-kit-ios-audio (~> 4.5)
|
||||
- FLEX (~> 4.5.0)
|
||||
- FlowCommoniOS (~> 1.12.0)
|
||||
- GBDeviceInfo (~> 6.6.0)
|
||||
- HPGrowingTextView
|
||||
- KeychainAccess (~> 4.2.2)
|
||||
@@ -134,7 +134,7 @@ DEPENDENCIES:
|
||||
- SwiftBase32 (~> 0.9.0)
|
||||
- SwiftGen (~> 6.3)
|
||||
- SwiftJWT (~> 3.6.200)
|
||||
- SwiftLint (~> 0.43.0)
|
||||
- SwiftLint (~> 0.44.0)
|
||||
- zxcvbn-ios
|
||||
- ZXingObjC (~> 3.6.5)
|
||||
|
||||
@@ -189,9 +189,9 @@ SPEC CHECKSUMS:
|
||||
DSWaveformImage: 3c718a0cf99291887ee70d1d0c18d80101d3d9ce
|
||||
DTCoreText: ec749e013f2e1f76de5e7c7634642e600a7467ce
|
||||
DTFoundation: a53f8cda2489208cbc71c648be177f902ee17536
|
||||
ffmpeg-kit-ios-audio: ddfc3dac6f574e83d53f8ae33586711162685d3e
|
||||
FLEX: 7ca2c8cd3a435ff501ff6d2f2141e9bdc934eaab
|
||||
FlowCommoniOS: bcdf81a5f30717e711af08a8c812eb045411ba94
|
||||
ffmpeg-kit-ios-audio: 8c44d93054e1a9743a7014ec3dd26cd1ad8f2a59
|
||||
FLEX: e51461dd6f0bfb00643c262acdfea5d5d12c596b
|
||||
FlowCommoniOS: e9ecbc97fb9ce5c593fb3da0e1073b65a3902026
|
||||
GBDeviceInfo: ed0db16230d2fa280e1cbb39a5a7f60f6946aaec
|
||||
GZIP: 416858efbe66b41b206895ac6dfd5493200d95b3
|
||||
HPGrowingTextView: 88a716d97fb853bcb08a4a08e4727da17efc9b19
|
||||
@@ -209,16 +209,16 @@ SPEC CHECKSUMS:
|
||||
OLMKit: 9fb4799c4a044dd2c06bda31ec31a12191ad30b5
|
||||
ReadMoreTextView: 19147adf93abce6d7271e14031a00303fe28720d
|
||||
Realm: ed860452717c8db8f4bf832b6807f7f2ce708839
|
||||
Reusable: 53a9acf5c536f229b31b5865782414b508252ddb
|
||||
Reusable: 6bae6a5e8aa793c9c441db0213c863a64bce9136
|
||||
SideMenu: f583187d21c5b1dd04c72002be544b555a2627a2
|
||||
SwiftBase32: 9399c25a80666dc66b51e10076bf591e3bbb8f17
|
||||
SwiftGen: 67860cc7c3cfc2ed25b9b74cfd55495fc89f9108
|
||||
SwiftJWT: 88c412708f58c169d431d344c87bc79a87c830ae
|
||||
SwiftLint: 99f82d07b837b942dd563c668de129a03fc3fb52
|
||||
SwiftLint: e96c0a8c770c7ebbc4d36c55baf9096bb65c4584
|
||||
SwiftyBeaver: 84069991dd5dca07d7069100985badaca7f0ce82
|
||||
zxcvbn-ios: fef98b7c80f1512ff0eec47ac1fa399fc00f7e3c
|
||||
ZXingObjC: fdbb269f25dd2032da343e06f10224d62f537bdb
|
||||
|
||||
PODFILE CHECKSUM: bdf413811d39894c938e52a7f4faf550040ab370
|
||||
PODFILE CHECKSUM: 367d7a514c7d8ea3cc4b0adb5878c8a192c7c2c8
|
||||
|
||||
COCOAPODS: 1.10.1
|
||||
|
||||
@@ -254,9 +254,9 @@
|
||||
"room_details_access_section_anyone" = "Alle, die den Raumlink kennen - auch Gäste";
|
||||
"room_details_history_section" = "Wer kann die Historie lesen?";
|
||||
"room_details_history_section_anyone" = "Alle";
|
||||
"room_details_history_section_members_only" = "Nur Mitglieder (seit diese Option ausgewählt ist)";
|
||||
"room_details_history_section_members_only" = "Nur Mitglieder (ab Auswahl dieser Option)";
|
||||
"room_details_history_section_members_only_since_invited" = "Nur Mitglieder (ab ihrer Einladung)";
|
||||
"room_details_history_section_members_only_since_joined" = "Nur Mitglieder (Ab ihrem Beitritt)";
|
||||
"room_details_history_section_members_only_since_joined" = "Nur Mitglieder (ab ihrem Beitritt)";
|
||||
"room_details_history_section_prompt_title" = "Datenschutzwarnung";
|
||||
"room_details_addresses_section" = "Adressen";
|
||||
"room_details_no_local_addresses" = "Dieser Raum hat keine lokalen Adressen";
|
||||
@@ -1438,7 +1438,7 @@
|
||||
"settings_direct_messages" = "Direktnachrichten";
|
||||
"settings_notify_me_for" = "Benachrichtige mich bei";
|
||||
"settings_mentions_and_keywords" = "Erwähnungen und Schlüsselwörter";
|
||||
"settings_confirm_media_size_description" = "Wenn dies aktiviert ist, wirst du beim Senden von Bildern und Videos gefragt, wie groß sie gesendet werden sollen.";
|
||||
"settings_confirm_media_size_description" = "Wenn dies aktiviert ist, wirst du beim Senden von Bildern und Videos gefragt, in welcher Größe sie gesendet werden sollen.";
|
||||
"settings_confirm_media_size" = "Größe beim Senden bestätigen";
|
||||
"settings_notifications" = "BENACHRICHTIGUNGEN";
|
||||
"settings_mentions_and_keywords_encryption_notice" = "Auf deinem Mobilgerät wirst du keine Benachrichtigungen für Erwähnungen und Schlüsselwörter in verschlüsselten Räumen erhalten.";
|
||||
@@ -1480,3 +1480,6 @@
|
||||
"spaces_left_panel_title" = "Spaces";
|
||||
"room_recents_suggested_rooms_section" = "VORGESCHLAGENE RÄUME";
|
||||
"spaces_home_space_title" = "Start";
|
||||
"space_tag" = "Space";
|
||||
"open" = "Öffnen";
|
||||
"settings_links" = "LINKS";
|
||||
|
||||
@@ -533,7 +533,7 @@ Tap the + to start adding people.";
|
||||
"settings_calls_stun_server_fallback_description" = "Allow fallback call assist server %@ when your homeserver does not offer one (your IP address would be shared during a call).";
|
||||
|
||||
"settings_integrations_allow_button" = "Manage integrations";
|
||||
"settings_integrations_allow_description" = "Use an Integration Manager (%@) to manage bots, bridges, widgets and sticker packs.\n\nIntegration Managers receive configuration data, and can modify widgets, send room invites and set power levels on your behalf.";
|
||||
"settings_integrations_allow_description" = "Use an integration manager (%@) to manage bots, bridges, widgets and sticker packs.\n\nIntegration managers receive configuration data, and can modify widgets, send room invites and set power levels on your behalf.";
|
||||
|
||||
"settings_ui_language" = "Language";
|
||||
"settings_ui_theme" = "Theme";
|
||||
@@ -618,7 +618,7 @@ Tap the + to start adding people.";
|
||||
"settings_devices_description" = "A session's public name is visible to people you communicate with";
|
||||
|
||||
"settings_discovery_no_identity_server" = "You are not currently using an identity server. To be discoverable by existing contacts you known, add one.";
|
||||
"settings_discovery_terms_not_signed" = "Agree to the Identity Server (%@) Terms of Service to allow yourself to be discoverable by email address or phone number.";
|
||||
"settings_discovery_terms_not_signed" = "Agree to the identity server (%@) Terms of Service to allow yourself to be discoverable by email address or phone number.";
|
||||
"settings_discovery_three_pids_management_information_part1" = "Manage which email addresses or phone numbers other users can use to discover you and use to invite you to rooms. Add or remove email addresses or phone numbers from this list in ";
|
||||
"settings_discovery_three_pids_management_information_part2" = "User Settings";
|
||||
"settings_discovery_three_pids_management_information_part3" = ".";
|
||||
@@ -691,7 +691,7 @@ Tap the + to start adding people.";
|
||||
"authenticated_session_flow_not_supported" = "This app does not support the authentication mechanism on your homeserver.";
|
||||
|
||||
// Identity server settings
|
||||
"identity_server_settings_title" = "Identity Server";
|
||||
"identity_server_settings_title" = "Identity server";
|
||||
|
||||
"identity_server_settings_description" = "You are currently using %@ to discover and be discoverable by existing contacts you know.";
|
||||
"identity_server_settings_no_is_description" = "You are not currently using an identity server. To discover and be discoverable by existing contacts, add one above.";
|
||||
@@ -982,7 +982,7 @@ Tap the + to start adding people.";
|
||||
"widget_integration_missing_room_id" = "Missing room_id in request.";
|
||||
"widget_integration_missing_user_id" = "Missing user_id in request.";
|
||||
"widget_integration_room_not_visible" = "Room %@ is not visible.";
|
||||
"widget_integration_manager_disabled" = "You need to enable Integration Manager in settings";
|
||||
"widget_integration_manager_disabled" = "You need to enable integration manager in settings";
|
||||
|
||||
// Widget Picker
|
||||
"widget_picker_title" = "Integrations";
|
||||
|
||||
@@ -1056,7 +1056,7 @@
|
||||
"security_settings_complete_security_alert_message" = "Vous devriez d’abord améliorer la sécurité de votre session actuelle.";
|
||||
"security_settings_coming_soon" = "Désolé, cette action n’est pas encore disponible dans %@ iOS. Utilisez un autre client Matrix pour le configurer. %@ iOS l’utilisera.";
|
||||
"device_verification_self_verify_wait_new_sign_in_title" = "Vérifier cette connexion";
|
||||
"device_verification_self_verify_wait_additional_information" = "ou un autre client Matrix qui prend en charge la signature croisée.";
|
||||
"device_verification_self_verify_wait_additional_information" = "Ceci fonctionne avec %@ ou un autre client Matrix prenant en charge la signature croisée.";
|
||||
// MARK: - Device Verification
|
||||
"key_verification_other_session_title" = "Vérifier la session";
|
||||
"key_verification_new_session_title" = "Vérifiez votre nouvelle session";
|
||||
@@ -1482,3 +1482,41 @@
|
||||
"settings_mentions_and_keywords" = "Mentions et mots-clés";
|
||||
"settings_default" = "Notifications par défaut";
|
||||
"settings_notifications" = "NOTIFICATIONS";
|
||||
"version_check_modal_subtitle_deprecated" = "Nous avons travailler à améliorer %@ pour plus de rapidité et de confort. Malheureusement, la version d’iOS que vous utilisez n’est pas compatible avec certaines de ces améliorations et n’est plus prise en charge.\nNous vous recommandons de mettre à jour votre système pour utiliser %@ à son plein potentiel.";
|
||||
"space_avatar_view_accessibility_hint" = "Changer l’avatar de l’espace";
|
||||
|
||||
// Mark: Avatar
|
||||
|
||||
"space_avatar_view_accessibility_label" = "avatar";
|
||||
"space_public_join_rule" = "Espace public";
|
||||
"space_private_join_rule" = "Espace privé";
|
||||
"space_participants_action_ban" = "Supprimer de cet espace";
|
||||
"space_participants_action_remove" = "Enlever de cet espace";
|
||||
"spaces_coming_soon_detail" = "Cette fonctionnalité n’a pas été implémentée ici, mais elle arrive. Pour effectuer cette action, vous pouvez utiliser Element sur votre ordinateur.";
|
||||
"spaces_invites_coming_soon_title" = "Les invitations arrivent prochainement";
|
||||
"spaces_add_rooms_coming_soon_title" = "L’ajout de salons arrive bientôt";
|
||||
"spaces_coming_soon_title" = "Prochainement";
|
||||
"spaces_no_member_found_detail" = "Vous cherchez quelqu’un qui n’est pas dans %@ ? Pour l’instant, vous pouvez l’inviter sur l’application web ou de bureau.";
|
||||
"spaces_no_room_found_detail" = "Certains résultat peuvent être cachés car ils sont privés et requièrent une invitation.";
|
||||
"spaces_no_result_found_title" = "Aucun résultat";
|
||||
"spaces_empty_space_detail" = "Certains salons peuvent être cachés car ils sont privés et requièrent une invitation.";
|
||||
"spaces_empty_space_title" = "Cet espace n’a pas (encore) de salon";
|
||||
"space_tag" = "espace";
|
||||
"spaces_suggested_room" = "Recommandé";
|
||||
"spaces_explore_rooms" = "Parcourir les salons";
|
||||
"leave_space_and_all_rooms_action" = "Quitter tous les salons et espaces";
|
||||
"leave_space_only_action" = "Ne quitter aucun salon";
|
||||
"leave_space_message_admin_warning" = "Vous êtes administrateur de cet espace. Assurez-vous d’avoir transmis les droits d’administration à un autre membre avant de partir.";
|
||||
"leave_space_message" = "Êtes vous sûr de vouloir quitter %@ ? Voulez-vous également quitter tous les salons et espaces faisant partie de cet espace ?";
|
||||
"leave_space_title" = "Quitter %@";
|
||||
"spaces_left_panel_title" = "Espaces";
|
||||
"spaces_home_space_title" = "Accueil";
|
||||
"settings_show_url_previews_description" = "Les aperçus ne seront affichés que dans les salons non-chiffrés.";
|
||||
"settings_show_url_previews" = "Afficher les aperçus des sites web";
|
||||
"settings_confirm_media_size_description" = "Si activé, il vous sera demandé de préciser en quelle taille les images et vidéos doivent être envoyées.";
|
||||
"settings_confirm_media_size" = "Préciser la taille lors de l’envoi";
|
||||
"settings_links" = "LIENS";
|
||||
"settings_sending_media" = "ENVOI D’IMAGES ET DE VIDÉOS";
|
||||
"room_recents_suggested_rooms_section" = "SALONS RECOMMANDÉS";
|
||||
"done" = "Terminé";
|
||||
"open" = "Ouvrir";
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
"auth_register" = "등록";
|
||||
"auth_submit" = "제출";
|
||||
"auth_skip" = "넘기기";
|
||||
"auth_login_single_sign_on" = "통합 인증(SSO)으로 로그인";
|
||||
"auth_login_single_sign_on" = "로그인";
|
||||
"auth_send_reset_email" = "초기화 이메일 보내기";
|
||||
"auth_return_to_login" = "로그인 화면으로 돌아가기";
|
||||
"auth_user_id_placeholder" = "이메일 혹은 사용자 이름";
|
||||
@@ -170,7 +170,7 @@
|
||||
"contacts_address_book_matrix_users_toggle" = "Matrix 사용자만";
|
||||
"contacts_address_book_no_contact" = "로컬 연락처 없음";
|
||||
"contacts_address_book_permission_required" = "로컬 연락처에 접근하는데 필요한 권한";
|
||||
"contacts_address_book_permission_denied" = "Riot이 로컬 연락처에 접근하도록 허용하지 않음";
|
||||
"contacts_address_book_permission_denied" = "%@이(가) 연락처에 접근하도록 허용하지 않음";
|
||||
"contacts_user_directory_section" = "사용자 목록";
|
||||
"contacts_user_directory_offline_section" = "사용자 목록 (오프라인)";
|
||||
// Chat participants
|
||||
@@ -199,8 +199,8 @@
|
||||
"room_participants_ago" = "전";
|
||||
"room_participants_action_section_admin_tools" = "관리자 도구";
|
||||
"room_participants_action_section_direct_chats" = "다이렉트 대화";
|
||||
"room_participants_action_section_devices" = "기기";
|
||||
"room_participants_action_section_other" = "기타";
|
||||
"room_participants_action_section_devices" = "세션";
|
||||
"room_participants_action_section_other" = "옵션";
|
||||
"room_participants_action_invite" = "초대";
|
||||
"room_participants_action_leave" = "이 방 떠나기";
|
||||
"room_participants_action_remove" = "이 방에서 제거";
|
||||
@@ -216,7 +216,7 @@
|
||||
"room_participants_action_start_video_call" = "영상 통화 시작";
|
||||
"room_participants_action_mention" = "언급";
|
||||
// Chat
|
||||
"room_jump_to_first_unread" = "처음으로 읽지 않은 메시지로 가기";
|
||||
"room_jump_to_first_unread" = "읽지 않은 메시지로 가기";
|
||||
"room_new_message_notification" = "%d개의 새 메시지";
|
||||
"room_new_messages_notification" = "%d개의 새 메시지";
|
||||
"room_one_user_is_typing" = "%@님이 입력하는 중…";
|
||||
@@ -231,8 +231,8 @@
|
||||
"room_message_short_placeholder" = "메시지를 보내세요…";
|
||||
"room_message_reply_to_short_placeholder" = "답장을 보내세요…";
|
||||
"room_offline_notification" = "서버와의 연결이 끊겼습니다.";
|
||||
"room_unsent_messages_notification" = "메시지가 보내지지 않았습니다. %1$s, %2$s, 둘 중 어느 것을 하겠습니까?";
|
||||
"room_unsent_messages_unknown_devices_notification" = "알 수 없는 기기가 있어 메시지가 보내지지 않았습니다. %1$s, %2$s, 둘 중 어느 것을 하겠습니까?";
|
||||
"room_unsent_messages_notification" = "메시지가 보내지지 않았습니다.";
|
||||
"room_unsent_messages_unknown_devices_notification" = "알 수 없는 기기가 있어 메시지 전송이 실패했습니다.";
|
||||
"room_ongoing_conference_call" = "회의 전화가 진행 중입니다. %1$s 또는 %2$s로 참가하세요.";
|
||||
"room_ongoing_conference_call_with_close" = "회의 전화가 진행 중입니다. %1$s 또는 %2$s로 참가하세요. %@.";
|
||||
"room_ongoing_conference_call_close" = "닫기";
|
||||
@@ -286,7 +286,7 @@
|
||||
"room_message_edits_history_title" = "메시지 편집";
|
||||
// Unknown devices
|
||||
"unknown_devices_alert_title" = "방에 알 수 없는 기기가 있음";
|
||||
"unknown_devices_alert" = "이 방에 확인되지 않은 알 수 없는 기기가 있습니다.이 기기가 확인한 사용자의 것이라는 보장이 없습니다.\n계속하기 전에 각 기기마다 확인 절차를 거치기를 권합니다, 하지만 원한다면 확인하지 않고 메시지를 다시 보낼 수 있습니다.";
|
||||
"unknown_devices_alert" = "이 방에 검증되지 않은 알 수 없는 기기가 있습니다.\n이 기기가 사용자의 것이라는 보장이 없습니다.\n계속하기 전에 각 기기마다 검증 절차를 거치기를 권합니다, 하지만 원한다면 검증하지 않고 메시지를 다시 보낼 수 있습니다.";
|
||||
"unknown_devices_send_anyway" = "무시하고 보내기";
|
||||
"unknown_devices_call_anyway" = "무시하고 전화";
|
||||
"unknown_devices_answer_anyway" = "무시하고 답하기";
|
||||
@@ -325,7 +325,7 @@
|
||||
"settings_other" = "기타";
|
||||
"settings_labs" = "연구실";
|
||||
"settings_flair" = "허용되는 곳에 재능 보이기";
|
||||
"settings_devices" = "기기";
|
||||
"settings_devices" = "세션";
|
||||
"settings_cryptography" = "암호화";
|
||||
"settings_key_backup" = "키 백업";
|
||||
"settings_deactivate_account" = "계정 비활성화";
|
||||
@@ -354,7 +354,7 @@
|
||||
"settings_pin_rooms_with_unread" = "읽지 않은 메시지가 있는 방을 고정";
|
||||
"settings_on_denied_notification" = "%@에 의해 알림이 거부됬습니다, 기기 설정에서 %@을(를) 허용해주세요";
|
||||
"settings_enable_callkit" = "통합 전화";
|
||||
"settings_callkit_info" = "잠금 화면에서 수신 전화를 받습니다. 시스템의 통화 내역에서 Riot 통화를 확인하세요. iCloud가 켜져있다면, 이 통화 기록은 Apple과 공유됩니다.";
|
||||
"settings_callkit_info" = "잠금 화면에서 수신 전화를 받습니다. 시스템의 통화 내역에서 %@ 통화를 확인하세요. iCloud가 켜져있다면, 이 통화 기록은 Apple과 공유됩니다.";
|
||||
"settings_ui_language" = "언어";
|
||||
"settings_ui_theme" = "테마";
|
||||
"settings_ui_theme_auto" = "자동";
|
||||
@@ -388,24 +388,24 @@
|
||||
"settings_confirm_password" = "비밀번호 확인";
|
||||
"settings_fail_to_update_password" = "비밀번호 업데이트에 실패함";
|
||||
"settings_password_updated" = "비밀번호가 업데이트되었습니다";
|
||||
"settings_crypto_device_name" = "기기 공개 이름: ";
|
||||
"settings_crypto_device_id" = "\n기기 ID: ";
|
||||
"settings_crypto_device_key" = "\n기기 키:\n";
|
||||
"settings_crypto_device_name" = "세션 이름: ";
|
||||
"settings_crypto_device_id" = "\n세션 ID: ";
|
||||
"settings_crypto_device_key" = "\n세션 키:\n";
|
||||
"settings_crypto_export" = "키 내보내기";
|
||||
"settings_crypto_blacklist_unverified_devices" = "확인된 기기만 암호화";
|
||||
"settings_crypto_blacklist_unverified_devices" = "검증된 세션만 암호화";
|
||||
"settings_deactivate_my_account" = "내 계정 비활성화";
|
||||
"settings_key_backup_info" = "암호화된 메시지는 종단간 암호화로 보호됩니다. 오직 당신과 참가자만 키를 갖고 있어서 이 메시지를 읽을 수 있습니다.";
|
||||
"settings_key_backup_info_checking" = "확인 중...";
|
||||
"settings_key_backup_info_none" = "키가 이 기기에서 백업되지 않았습니다.";
|
||||
"settings_key_backup_info_checking" = "확인 중…";
|
||||
"settings_key_backup_info_none" = "키가 이 세션에서 백업되지 않았습니다.";
|
||||
"settings_key_backup_info_signout_warning" = "이 기기에만 있을 수 있는 키를 잃지 않도록, 로그아웃하기 전에 이 기기를 키 백업에 연결하세요.";
|
||||
"settings_key_backup_info_version" = "키 백업 버전: %@";
|
||||
"settings_key_backup_info_algorithm" = "알고리즘: %@";
|
||||
"settings_key_backup_info_valid" = "이 기기는 키를 백업하고 있습니다.";
|
||||
"settings_key_backup_info_not_valid" = "이 기기는 키를 백업하고 있지 않습니다, 하지만 존재하는 백업이 있고 이것을 복구한 뒤 키를 추가할 수 있습니다.";
|
||||
"settings_key_backup_info_progress" = "%@ 키를 백업하는 중...";
|
||||
"settings_key_backup_info_valid" = "이 세션은 키를 백업하고 있습니다.";
|
||||
"settings_key_backup_info_not_valid" = "이 세션은 키를 백업하고 있지 않습니다, 하지만 존재하는 백업이 있고 이것을 복구한 뒤 키를 추가할 수 있습니다.";
|
||||
"settings_key_backup_info_progress" = "%@ 키를 백업하는 중…";
|
||||
"settings_key_backup_info_progress_done" = "모든 키가 백업됨";
|
||||
"settings_key_backup_info_trust_signature_unknown" = "백업은 기기로부터 ID로 된 서명을 갖습니다: %@";
|
||||
"settings_key_backup_info_trust_signature_valid" = "백업이 이 기기로부터 올바른 서명을 갖고 있음";
|
||||
"settings_key_backup_info_trust_signature_unknown" = "백업은 다음의 ID를 가진 세션으로부터 서명을 갖습니다: %@";
|
||||
"settings_key_backup_info_trust_signature_valid" = "백업이 이 세션부터 올바른 서명을 갖고 있음";
|
||||
"settings_key_backup_info_trust_signature_valid_device_verified" = "백업이 %@(으)로부터 올바른 서명을 갖고 있음";
|
||||
"settings_key_backup_info_trust_signature_valid_device_unverified" = "백업이 %@(으)로부터 서명을 갖고 있음";
|
||||
"settings_key_backup_info_trust_signature_invalid_device_verified" = "백업이 %@(으)로부터 올바르지 않은 서명을 갖고 있음";
|
||||
@@ -413,13 +413,13 @@
|
||||
"settings_key_backup_button_create" = "키 백업 시작";
|
||||
"settings_key_backup_button_restore" = "백업에서 복구";
|
||||
"settings_key_backup_button_delete" = "백업 삭제";
|
||||
"settings_key_backup_button_connect" = "이 기기를 키 백업에 연결";
|
||||
"settings_key_backup_button_connect" = "이 세션을 키 백업에 연결";
|
||||
"settings_key_backup_delete_confirmation_prompt_title" = "백업 삭제";
|
||||
"settings_key_backup_delete_confirmation_prompt_msg" = "확신합니까? 키가 정상적으로 백업되지 않으면 암호화된 메시지를 잃게 됩니다.";
|
||||
// Room Details
|
||||
"room_details_title" = "방 세부 사항";
|
||||
"room_details_people" = "구성원";
|
||||
"room_details_files" = "파일";
|
||||
"room_details_files" = "업로드";
|
||||
"room_details_settings" = "설정";
|
||||
"room_details_photo" = "방 사진";
|
||||
"room_details_room_name" = "방 이름";
|
||||
@@ -459,7 +459,7 @@
|
||||
"room_details_advanced_enable_e2e_encryption" = "암호화 켜짐 (경고: 다시 끌 수 없습니다!)";
|
||||
"room_details_advanced_e2e_encryption_enabled" = "이 방의 암호화가 켜졌습니다";
|
||||
"room_details_advanced_e2e_encryption_disabled" = "이 방의 암호화가 꺼졌습니다.";
|
||||
"room_details_advanced_e2e_encryption_blacklist_unverified_devices" = "확인된 기기만 암호화";
|
||||
"room_details_advanced_e2e_encryption_blacklist_unverified_devices" = "검증된 세션만 암호화";
|
||||
"room_details_fail_to_update_avatar" = "방 사진 업데이트에 실패함";
|
||||
"room_details_fail_to_update_room_name" = "방 이름 업데이트에 실패함";
|
||||
"room_details_fail_to_update_topic" = "주제 업데이트에 실패함";
|
||||
@@ -529,7 +529,7 @@
|
||||
"event_formatter_jitsi_widget_added" = "%@님이 VoIP 회의를 추가했습니다";
|
||||
"event_formatter_jitsi_widget_removed" = "%@님이 VoIP 회의를 제거했습니다";
|
||||
"event_formatter_rerequest_keys_part1_link" = "암호화 키 다시 요청";
|
||||
"event_formatter_rerequest_keys_part2" = " 다른 기기에서.";
|
||||
"event_formatter_rerequest_keys_part2" = " 다른 세션에서.";
|
||||
"event_formatter_message_edited_mention" = "(편집됨)";
|
||||
// Others
|
||||
"or" = "또는";
|
||||
@@ -539,7 +539,7 @@
|
||||
"network_offline_prompt" = "인터넷이 오프라인입니다.";
|
||||
"homeserver_connection_lost" = "홈 서버에 연결할 수 없습니다.";
|
||||
"public_room_section_title" = "공개 방 (%@에 있음):";
|
||||
"bug_report_prompt" = "애플리케이션이 방금 충돌했군요.\n충돌 보고서를 제출하겠습니까?";
|
||||
"bug_report_prompt" = "애플리케이션이 방금 충돌했군요. 충돌 보고서를 제출하겠습니까?";
|
||||
"rage_shake_prompt" = "좌절감에 휴대 전화를 흔들고 있군요. 버그 보고서를 제출하겠습니까?";
|
||||
"do_not_ask_again" = "다시 묻지 않기";
|
||||
"camera_access_not_granted" = "%@님은 카메라를 사용할 권한이 없습니다, 개인 정보 설정을 바꿔주세요";
|
||||
@@ -550,8 +550,8 @@
|
||||
// Call
|
||||
"call_incoming_voice_prompt" = "%@님으로부터 온 음성 통화";
|
||||
"call_incoming_video_prompt" = "%@님으로부터 온 영상 통화";
|
||||
"call_incoming_voice" = "전화 수신 중...";
|
||||
"call_incoming_video" = "영상 통화 수신 중...";
|
||||
"call_incoming_voice" = "전화 수신 중...…";
|
||||
"call_incoming_video" = "영상 통화 수신 중...…";
|
||||
"call_already_displayed" = "이미 전화가 진행 중입니다.";
|
||||
"call_jitsi_error" = "회의 전화 참가에 실패했습니다.";
|
||||
// No VoIP support
|
||||
@@ -560,8 +560,8 @@
|
||||
// Crash report
|
||||
"google_analytics_use_prompt" = "%@이(가) 개선하도록 자동으로 익명의 충돌 보고서와 사용 데이터를 제공하겠습니까?";
|
||||
// Crypto
|
||||
"e2e_enabling_on_app_update" = "Riot는 이제 종단간 암호화를 지원하지만 암호화를 켜려면 다시 로그인해야 합니다.\n\n지금 다시 로그인하거나 나중에 애플리케이션 설정에서 할 수 있습니다.";
|
||||
"e2e_need_log_in_again" = "이 기기에 종단간 암호화 키를 생성하고 공개 키를 홈서버에 제출하려면 다시 로그인해야 함니다.\n한 번만 하면 됩니다, 불편을 드려 죄송합니다.";
|
||||
"e2e_enabling_on_app_update" = "%@는 이제 종단간 암호화를 지원하지만 암호화를 켜려면 다시 로그인해야 합니다.\n\n지금 다시 로그인하거나 나중에 애플리케이션 설정에서 할 수 있습니다.";
|
||||
"e2e_need_log_in_again" = "이 세션에 종단간 암호화 키를 생성하고 공개 키를 홈서버에 제출하려면 다시 로그인해야 함니다.\n한 번만 하면 됩니다. 불편을 드려 죄송합니다.";
|
||||
// Key backup wrong version
|
||||
"e2e_key_backup_wrong_version_title" = "새 키 백업";
|
||||
"e2e_key_backup_wrong_version" = "새 보안 메시지 키 백업이 감지되었습니다.\n\n당신이 한 것이 아니라면 설정에서 새 암호를 설정하세요.";
|
||||
@@ -601,9 +601,9 @@
|
||||
"share_extension_failed_to_encrypt" = "보내기에 실패함. 기본 앱에서 이 방의 암호화 설정을 확인하세요";
|
||||
// Room key request dialog
|
||||
"e2e_room_key_request_title" = "암호화 키 요청";
|
||||
"e2e_room_key_request_message_new_device" = "암호화 키를 요청한 새 기기 '%@'을(를) 추가했습니다.";
|
||||
"e2e_room_key_request_message" = "확인하지 않은 기기 '%@'이(가) 암호화 키를 요청하고 있습니다.";
|
||||
"e2e_room_key_request_start_verification" = "확인 시작...";
|
||||
"e2e_room_key_request_message_new_device" = "암호화 키를 요청한 새 세션 '%@'을(를) 추가했습니다.";
|
||||
"e2e_room_key_request_message" = "확인하지 않은 세션 '%@'이(가) 암호화 키를 요청하고 있습니다.";
|
||||
"e2e_room_key_request_start_verification" = "확인 시작…";
|
||||
"e2e_room_key_request_share_without_verifying" = "확인없이 공유";
|
||||
"e2e_room_key_request_ignore_request" = "요청 무시";
|
||||
// GDPR
|
||||
@@ -629,7 +629,7 @@
|
||||
"deactivate_account_password_alert_message" = "계속하려면, 비밀번호를 입력해주세요";
|
||||
// Re-request confirmation dialog
|
||||
"rerequest_keys_alert_title" = "요청을 보냈습니다";
|
||||
"rerequest_keys_alert_message" = "메시지를 복호화해서 이 기기로 키를 보낼 수 있도록 Riot을 다른 기기에 설치해주세요.";
|
||||
"rerequest_keys_alert_message" = "메시지를 복호화해서 이 세션으로 키를 보낼 수 있도록 %@를 다른 기기에 설치해주세요.";
|
||||
"key_backup_setup_title" = "키 백업";
|
||||
"key_backup_setup_skip_alert_title" = "확신합니까?";
|
||||
"key_backup_setup_skip_alert_message" = "로그아웃하거나 기기를 잃어버리면 보안 메시지를 잃게 됩니다.";
|
||||
@@ -703,21 +703,21 @@
|
||||
"device_verification_security_advice" = "보안을 최대화하려면, 직접 또는 다른 신뢰할만한 통신 수단으로 확인하기를 추천합니다";
|
||||
"device_verification_cancelled" = "상대방이 확인을 취소했습니다.";
|
||||
"device_verification_cancelled_by_me" = "확인이 취소됬습니다. 이유: %@";
|
||||
"device_verification_error_cannot_load_device" = "기기 정보를 불러올 수 없습니다.";
|
||||
"device_verification_error_cannot_load_device" = "세션 정보를 불러올 수 없습니다.";
|
||||
// Mark: Incoming
|
||||
"device_verification_incoming_title" = "수신 확인 요청";
|
||||
"device_verification_incoming_description_1" = "이 기기를 신뢰하도록 확인합니다. 상대방의 신뢰하는 기기는 종단간 암호화된 메시지를 사용할 때 더 마음에 안심을 줍니다.";
|
||||
"device_verification_incoming_description_2" = "이 기기를 신뢰하도록 확인합니다, 그리고 상대방도 당신의 기기를 신뢰하도록 합니다.";
|
||||
"device_verification_incoming_description_1" = "이 세션을 신뢰하도록 확인합니다. 상대방의 신뢰하는 세션은 종단간 암호화된 메시지를 사용할 때 더 마음에 안심을 줍니다.";
|
||||
"device_verification_incoming_description_2" = "이 세션을 신뢰하도록 확인합니다, 그리고 상대방도 당신의 세션을 신뢰하도록 합니다.";
|
||||
// MARK: Start
|
||||
"device_verification_start_title" = "짧은 문장을 비교하여 확인";
|
||||
"device_verification_start_wait_partner" = "상대방이 수락하기를 기다리는 중...";
|
||||
"device_verification_start_wait_partner" = "상대방이 수락하기를 기다리는 중…";
|
||||
"device_verification_start_use_legacy" = "아무것도 안 나타나나요? 일부 클라이언트는 아직 상호작용 확인을 지원하지 않습니다. 예전 확인 방식을 사용하세요.";
|
||||
"device_verification_start_verify_button" = "확인 시작";
|
||||
"device_verification_start_use_legacy_action" = "예전 확인 방식 사용";
|
||||
// MARK: Verify
|
||||
"device_verification_verify_title_emoji" = "상대방의 화면에 나타나는 다음 이모지를 확인하는 것으로 이 기기를 확인합니다";
|
||||
"device_verification_verify_title_number" = "상대방의 화면에 나타나는 다음 숫자를 확인하는 것으로 이 기기를 확인합니다";
|
||||
"device_verification_verify_wait_partner" = "상대방이 확인하기를 기다리는 중...";
|
||||
"device_verification_verify_wait_partner" = "상대방이 확인하기를 기다리는 중…";
|
||||
// MARK: Verified
|
||||
"device_verification_verified_title" = "확인되었습니다!";
|
||||
"device_verification_verified_description_1" = "성공적으로 이 기기를 확인했습니다.";
|
||||
@@ -834,7 +834,7 @@
|
||||
"settings_three_pids_management_information_part3" = ".";
|
||||
"settings_calls_stun_server_fallback_button" = "대체 전화 지원 서버 허용";
|
||||
"settings_calls_stun_server_fallback_description" = "홈서버가 전화 서버를 지원하지 않는다면 대체 전화 지원 서버 %@를 허용합니다 (전화하는 동안 IP 주소가 공유됩니다).";
|
||||
"settings_devices_description" = "기기 공개 이름은 소통하는 사람들에게 보여집니다";
|
||||
"settings_devices_description" = "세션의 공개 명칭은 대화하는 사람들에게 보여집니다";
|
||||
"settings_discovery_no_identity_server" = "현재 ID 서버를 사용하고 있지 않습니다. 연락처에 알고 있는 사람들이 당신을 찾을 수 있도록 하려면 서버를 하나 추가하세요.";
|
||||
"settings_discovery_terms_not_signed" = "이메일이나 전화번호로 당신을 찾을 수 있도록 하려면 ID 서버 (%@)의 서비스 약관에 동의하세요.";
|
||||
"settings_discovery_three_pids_management_information_part1" = "무슨 이메일 주소나 전화번호로 다른 사용자가 당신을 찾고 방에 초대할 수 있는지 관리하세요. 이 목록에서 이메일 주소나 전화번호를 추가하거나 제거할 수 있습니다. ";
|
||||
@@ -886,8 +886,8 @@
|
||||
"service_terms_modal_message_identity_server" = "연락처를 탐색하려면 ID 서버 (%@)의 약관에 동의해야 합니다.";
|
||||
"settings_add_3pid_password_title_email" = "이메일 주소 추가";
|
||||
"settings_add_3pid_password_title_msidsn" = "전화번호 추가";
|
||||
"settings_add_3pid_password_message" = "계속하려면 비밀번호를 입력해주세요";
|
||||
"settings_add_3pid_invalid_password_message" = "잘못된 비밀번호";
|
||||
"settings_add_3pid_password_message" = "계속하려면, 비밀번호를 입력해주세요";
|
||||
"settings_add_3pid_invalid_password_message" = "유효하지 않은 인증정보";
|
||||
"error_not_supported_on_mobile" = "%@ 모바일에서 할 수 없습니다.";
|
||||
"settings_integrations" = "통합";
|
||||
"settings_integrations_allow_button" = "통합 관리";
|
||||
@@ -897,3 +897,37 @@
|
||||
"widget_menu_revoke_permission" = "액세스 취소";
|
||||
"widget_menu_remove" = "모두를 위해 제거";
|
||||
"widget_integration_manager_disabled" = "설정에서 통합 관리자를 켜야 합니다";
|
||||
"people_empty_view_information" = "누구든지 안전하게 대화하세요. 사람을 추가하려면 + 버튼을 누르세요.";
|
||||
"people_empty_view_title" = "사람들";
|
||||
"room_recents_unknown_room_error_message" = "이 방을 찾을 수 없습니다. 방이 존재하는지 확인하세요";
|
||||
"room_recents_suggested_rooms_section" = "추천 방";
|
||||
"room_creation_dm_error" = "DM을 보내지 못했습니다. 초대하고 싶은 사람을 다시 확인하고 다시 시도해주세요.";
|
||||
"social_login_button_title_sign_up" = "%@ (으)로 가입";
|
||||
"social_login_button_title_sign_in" = "%@ 으로 로그인하기";
|
||||
"social_login_button_title_continue" = "%@ 으로 계속하기";
|
||||
"social_login_list_title_sign_up" = "또는";
|
||||
"social_login_list_title_sign_in" = "또는";
|
||||
|
||||
// Social login
|
||||
|
||||
"social_login_list_title_continue" = "다음으로 계속하기";
|
||||
|
||||
// Accessibility
|
||||
"accessibility_checkbox_label" = "체크박스";
|
||||
"callbar_only_single_active_group" = "그룹 통화에 참여하기 (%@)";
|
||||
"callbar_return" = "돌아가기";
|
||||
"callbar_only_multiple_paused" = "%@ 일시정지된 통화";
|
||||
"callbar_only_single_paused" = "일시정지된 통화";
|
||||
"callbar_active_and_multiple_paused" = "1 활성화된 통화 (%@) · %@ 일시정지된 통화";
|
||||
"callbar_active_and_single_paused" = "1 활성화된 통화 (%@) · 1 일시정지된 통화";
|
||||
|
||||
// Call Bar
|
||||
"callbar_only_single_active" = "전화로 돌아가기 (%@)";
|
||||
"done" = "완료";
|
||||
"open" = "열기";
|
||||
"less" = "줄이기";
|
||||
"more" = "더 보기";
|
||||
"switch" = "변경";
|
||||
"joined" = "참여했습니다";
|
||||
"skip" = "넘기기";
|
||||
"store_promotional_text" = "개방된 네트워크에서 프라이버시를 보장받을 수 있는 대화와 협업 앱. 분산화된 네트워크를 통해 정보를 제어할 수 있습니다. 데이터마이닝도 백도어도 다른 곳에서의 접근도 존재하지 않습니다.";
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
"title_rooms" = "Kamers";
|
||||
"warning" = "Waarschuwing";
|
||||
// Actions
|
||||
"view" = "Weergeven";
|
||||
"view" = "Bekijken";
|
||||
"next" = "Volgende";
|
||||
"back" = "Terug";
|
||||
"continue" = "Verdergaan";
|
||||
@@ -1510,7 +1510,7 @@
|
||||
"room_notifs_settings_encrypted_room_notice" = "Let op dat vermeldingen & trefwoorden-meldingen niet beschikbaar zijn in versleutelde kamers op mobiel.";
|
||||
"room_notifs_settings_account_settings" = "Accountinstellingen";
|
||||
"room_notifs_settings_manage_notifications" = "U kunt uw meldingen beheren in %@";
|
||||
"room_notifs_settings_cancel_action" = "Annuleer";
|
||||
"room_notifs_settings_cancel_action" = "Annuleren";
|
||||
"room_notifs_settings_done_action" = "Klaar";
|
||||
"room_notifs_settings_none" = "Geen";
|
||||
"room_notifs_settings_mentions_and_keywords" = "Alleen vermeldingen en trefwoorden";
|
||||
|
||||
@@ -1406,7 +1406,14 @@
|
||||
"settings_default" = "Förvalda aviseringar";
|
||||
"settings_notifications" = "AVISERINGAR";
|
||||
"settings_show_url_previews_description" = "Förhandsgranskningar kommer bara att visas i okrypterade rum.";
|
||||
"settings_show_url_previews" = "Visa inbäddade URL-förhandsgranskningar";
|
||||
"settings_show_url_previews" = "Visa förhandsgranskningar av webbsidor";
|
||||
"settings_confirm_media_size_description" = "När detta är på så kommer du få bekräfta vilken storlek bilder och videor kommer att skickas som.";
|
||||
"settings_confirm_media_size" = "Bekräfta storlek vid sparning";
|
||||
"settings_sending_media" = "SÄNDNING AV BILDER OCH VIDEO";
|
||||
"leave_space_title" = "Lämna %@";
|
||||
"spaces_left_panel_title" = "Utrymmen";
|
||||
"spaces_home_space_title" = "Hem";
|
||||
"settings_links" = "LÄNKAR";
|
||||
"room_recents_suggested_rooms_section" = "FÖRESLAGNA RUM";
|
||||
"done" = "Klar";
|
||||
"open" = "Öppna";
|
||||
|
||||
@@ -76,8 +76,8 @@
|
||||
"auth_use_server_options" = "Власні налаштування сервера";
|
||||
"auth_email_validation_message" = "Перевірте свою пошту для продовження реєстрації";
|
||||
"auth_msisdn_validation_title" = "Очікування перевірки";
|
||||
"auth_msisdn_validation_message" = "Ми надіслали SMS з кодом активації. Введіть цей код внизу.";
|
||||
"auth_msisdn_validation_error" = "Неможливо перевірити номер телефону.";
|
||||
"auth_msisdn_validation_message" = "Ми надіслали СМС із кодом активації. Введіть цей код унизу.";
|
||||
"auth_msisdn_validation_error" = "Не вдалося перевірити номер телефону.";
|
||||
"auth_recaptcha_message" = "Цей домашній сервер бажає переконатися, що ви не робот";
|
||||
"auth_reset_password_message" = "Щоб відновити пароль, введіть адресу е-пошти, пов'язану з вашим обліковим записом:";
|
||||
"auth_reset_password_missing_email" = "Необхідно ввести адресу е-пошти, пов'язану з вашим обліковим записом.";
|
||||
@@ -139,7 +139,7 @@
|
||||
"client_web_name" = "Element Web";
|
||||
"client_ios_name" = "Element iOS";
|
||||
"auth_login_single_sign_on" = "Увійти";
|
||||
"room_creation_invite_another_user" = "Пошук / запрошення по ідентифікатору користувача, імені або адреси електронної пошти";
|
||||
"room_creation_invite_another_user" = "Пошук / запрошення за ID користувача, іменем або е-поштою";
|
||||
"room_creation_error_invite_user_by_email_without_identity_server" = "Сервер ідентифікації не налаштовано, тому ви не можете додати учасника з е-поштою.";
|
||||
// Room recents
|
||||
"room_recents_directory_section" = "КАТАЛОГ КІМНАТ";
|
||||
@@ -234,7 +234,7 @@
|
||||
"settings_change_password" = "Змінити пароль";
|
||||
"settings_add_phone_number" = "Додати номер телефону";
|
||||
"settings_phone_number" = "Телефон";
|
||||
"settings_add_email_address" = "Додати адресу електронної пошти";
|
||||
"settings_add_email_address" = "Додати адресу е-пошти";
|
||||
"settings_email_address_placeholder" = "Введіть вашу адресу електронної пошти";
|
||||
"room_title_one_active_member" = "%@/%@ активний учасник";
|
||||
|
||||
@@ -664,13 +664,13 @@
|
||||
|
||||
// MARK: QR code
|
||||
|
||||
"key_verification_verify_qr_code_title" = "Підтвердити скануванням";
|
||||
"key_verification_verify_qr_code_title" = "Звірити скануванням";
|
||||
|
||||
// Incoming key verification request
|
||||
|
||||
"key_verification_incoming_request_incoming_alert_message" = "%@ просить підтвердження";
|
||||
"key_verification_incoming_request_incoming_alert_message" = "%@ бажає звіритись";
|
||||
"key_verification_tile_conclusion_warning_title" = "Не довірений вхід";
|
||||
"key_verification_tile_conclusion_done_title" = "Підтверджений";
|
||||
"key_verification_tile_conclusion_done_title" = "Звірений";
|
||||
"key_verification_tile_request_incoming_approval_accept" = "Прийняти";
|
||||
"key_verification_tile_request_status_accepted" = "Ви прийняли";
|
||||
"key_verification_tile_request_status_cancelled" = "%@ скасовує";
|
||||
@@ -681,8 +681,217 @@
|
||||
|
||||
// Tiles
|
||||
|
||||
"key_verification_tile_request_incoming_title" = "Запит підтвердження";
|
||||
"key_verification_tile_request_incoming_title" = "Запит звірення";
|
||||
"space_beta_announce_badge" = "БЕТА";
|
||||
"space_beta_announce_title" = "Простори скоро з'являться";
|
||||
"space_beta_announce_subtitle" = "Нова версія спільнот";
|
||||
"space_beta_announce_information" = "Простори — це новий спосіб об'єднати кімнати та людей. Їх ще не додано на iOS, але ви вже можете користуватися ними у вебпереглядачі та на комп'ютері.";
|
||||
|
||||
// No VoIP support
|
||||
"no_voip_title" = "Вхідний виклик";
|
||||
"call_actions_unhold" = "Продовжити";
|
||||
|
||||
// MARK: - Call Transfer
|
||||
"call_transfer_title" = "Переведення";
|
||||
"space_avatar_view_accessibility_hint" = "Змінити аватар простору";
|
||||
|
||||
// Mark: Avatar
|
||||
|
||||
"space_avatar_view_accessibility_label" = "аватар";
|
||||
"invite_friends_share_text" = "Агов, побалакай зі мною в %@: %@";
|
||||
|
||||
// MARK: - Invite friends
|
||||
|
||||
"invite_friends_action" = "Запросити друзів до %@";
|
||||
|
||||
// MARK: - Dial Pad
|
||||
"dialpad_title" = "Номеронабирач";
|
||||
"call_transfer_contacts_all" = "Усі";
|
||||
"call_transfer_contacts_recent" = "Недавні";
|
||||
"call_transfer_dialpad" = "Номеронабирач";
|
||||
"room_open_dialpad" = "Номеронабирач";
|
||||
"room_accessibility_search" = "Пошук";
|
||||
"room_action_send_file" = "Надіслати файл";
|
||||
"room_action_send_sticker" = "Надіслати наліпку";
|
||||
"room_action_send_photo_or_video" = "Надіслати світлину або відео";
|
||||
"room_event_failed_to_send" = "Не вдалося надіслати";
|
||||
"room_event_action_edit" = "Редагувати";
|
||||
"room_event_action_view_encryption" = "Відомості про шифрування";
|
||||
"room_event_action_cancel_download" = "Скасувати завантаження";
|
||||
"room_event_action_cancel_send" = "Скасувати надсилання";
|
||||
"room_message_reply_to_short_placeholder" = "Надіслати відповідь…";
|
||||
"room_message_short_placeholder" = "Надіслати повідомлення…";
|
||||
"room_message_replying_to" = "У відповідь %@";
|
||||
"room_message_editing" = "Редагування";
|
||||
"room_message_unable_open_link_error_message" = "Неможливо відкрити посилання.";
|
||||
"room_message_reply_to_placeholder" = "Надіслати відповідь (не зашифровану)…";
|
||||
"room_message_placeholder" = "Надіслати повідомлення (не зашифроване)…";
|
||||
"room_many_users_are_typing" = "%@, %@ та інші друкують…";
|
||||
"room_two_users_are_typing" = "%@ і %@ друкують…";
|
||||
"room_one_user_is_typing" = "%@ друкує…";
|
||||
"room_new_messages_notification" = "%d нових повідомлень";
|
||||
"room_new_message_notification" = "%d нове повідомлення";
|
||||
"room_member_power_level_short_moderator" = "Модератор";
|
||||
"room_member_power_level_short_admin" = "Адміністратор";
|
||||
"room_member_power_level_moderator_in" = "Модератор у %@";
|
||||
"room_member_power_level_admin_in" = "Адміністратор у %@";
|
||||
"room_participants_security_loading" = "Завантаження…";
|
||||
"room_participants_action_security_status_loading" = "Завантаження…";
|
||||
"room_participants_action_security_status_warning" = "Попередження";
|
||||
"public_room_section_title" = "Загальнодоступні кімнати (на %@):";
|
||||
"do_not_ask_again" = "Не запитувати знову";
|
||||
"event_formatter_group_call_join" = "Приєднатися";
|
||||
"event_formatter_call_retry" = "Повторити";
|
||||
"event_formatter_message_edited_mention" = "(змінено)";
|
||||
"image_picker_action_library" = "Вибрати з бібліотеки";
|
||||
|
||||
// Image picker
|
||||
"image_picker_action_camera" = "Сфотографувати";
|
||||
"media_picker_select" = "Вибрати";
|
||||
"room_participants_action_start_video_call" = "Почати відеовиклик";
|
||||
"room_participants_action_start_voice_call" = "Почати голосовий виклик";
|
||||
"security_settings_crypto_sessions_loading" = "Завантаження сеансів…";
|
||||
"room_participants_action_start_new_chat" = "Почати нову бесіду";
|
||||
"room_participants_action_set_admin" = "Зробити адміністратором";
|
||||
"room_participants_action_set_moderator" = "Зробити модератором";
|
||||
"security_settings_crypto_sessions" = "МОЇ СЕАНСИ";
|
||||
"room_participants_action_section_security" = "Безпека";
|
||||
|
||||
// Security settings
|
||||
"security_settings_title" = "Безпека";
|
||||
"media_picker_library" = "Бібліотека";
|
||||
|
||||
// Media picker
|
||||
"media_picker_title" = "Медіабібліотека";
|
||||
"room_participants_action_section_other" = "Опції";
|
||||
"room_participants_action_section_devices" = "Сеанси";
|
||||
"room_participants_action_section_admin_tools" = "Засоби адміністратора";
|
||||
"room_participants_ago" = "тому";
|
||||
"room_participants_now" = "зараз";
|
||||
|
||||
// Group rooms
|
||||
"group_rooms_filter_rooms" = "Фільтр кімнат спільноти";
|
||||
"group_participants_invited_section" = "ЗАПРОШЕНІ";
|
||||
"room_participants_invited_section" = "ЗАПРОШЕНІ";
|
||||
"room_participants_invite_malformed_id" = "Хибний ID. Повинні бути адреса е-пошти або Matrix ID, наприклад, «@localpart:domain»";
|
||||
"room_participants_invite_another_user" = "Пошук / запрошення за ID користувача, іменем або е-поштою";
|
||||
"room_participants_filter_room_members_for_dm" = "Фільтр учасників";
|
||||
"room_participants_filter_room_members" = "Фільтр учасників кімнати";
|
||||
"room_participants_invite_prompt_msg" = "Ви впевнені, що хочете запросити %@ до цієї бесіди?";
|
||||
"room_participants_remove_third_party_invite_prompt_msg" = "Ви впевнені, що хочете відкликати запрошення?";
|
||||
"directory_search_results_title" = "Переглянути результати пошуку";
|
||||
|
||||
// Directory
|
||||
"directory_cell_title" = "Огляд каталогу";
|
||||
"rooms_empty_view_information" = "Кімнати чудові для будь-яких групових бесід, приватних чи загальнодоступних. Натисніть +, щоб знайти наявні кімнати або створити нові.";
|
||||
"room_recents_unknown_room_error_message" = "Не вдалося знайти цю кімнату. Переконайтеся, що вона існує";
|
||||
"room_recents_suggested_rooms_section" = "ПРОПОНОВАНІ КІМНАТИ";
|
||||
"room_creation_dm_error" = "Ми не можемо створити ваше особисте повідомлення. Перевірте користувачів, яких ви хочете запросити й повторіть спробу.";
|
||||
"done" = "Готово";
|
||||
"open" = "Відкрити";
|
||||
"settings_devices_description" = "Загальнодоступну назву сеансу бачать люди, з якими ви спілкуєтесь";
|
||||
"no_voip" = "%@ викликає вас, але %@ поки що не підтримує дзвінки.\nВи можете знехтувати це сповіщення та відповісти на виклик з іншого пристрою, а можете відхилити його.";
|
||||
"room_details_mute_notifs" = "Заглушити сповіщення";
|
||||
"settings_mentions_and_keywords_encryption_notice" = "Ви не отримуватимете сповіщення про згадки та ключові слова в зашифрованих кімнатах на мобільних пристроях.";
|
||||
"settings_default" = "Типові сповіщення";
|
||||
"settings_notifications_disabled_alert_message" = "Щоб увімкнути сповіщення, перейдіть до налаштувань свого пристрою.";
|
||||
"settings_notifications_disabled_alert_title" = "Сповіщення вимкнено";
|
||||
"room_offline_notification" = "Зв'язок з сервером втрачено.";
|
||||
"room_unsent_messages_unknown_devices_notification" = "Не вдалося надіслати повідомлення через наявність невідомих сеансів.";
|
||||
"room_unsent_messages_notification" = "Не вдалося надіслати повідомлення.";
|
||||
"directory_server_all_native_rooms" = "Усі кімнати сервера Matrix";
|
||||
"group_participants_invite_malformed_id_title" = "Помилка запрошення";
|
||||
"group_participants_remove_prompt_msg" = "Ви справді хочете вилучити %@ з цієї групи?";
|
||||
"room_notifs_settings_encrypted_room_notice" = "Зверніть увагу, що сповіщення про згадки та ключові слова недоступні в зашифрованих кімнатах на мобільних пристроях.";
|
||||
"room_notifs_settings_account_settings" = "Налаштування облікового запису";
|
||||
"room_notifs_settings_manage_notifications" = "Ви можете керувати сповіщеннями у %@";
|
||||
"room_notifs_settings_cancel_action" = "Скасувати";
|
||||
"key_backup_setup_success_from_passphrase_done_action" = "Готово";
|
||||
"room_notifs_settings_done_action" = "Готово";
|
||||
"room_notifs_settings_none" = "Нічого";
|
||||
"room_notifs_settings_mentions_and_keywords" = "Згадки та ключові слова";
|
||||
"room_notifs_settings_all_messages" = "Усі повідомлення";
|
||||
"settings_notify_me_for" = "Сповістити мене про";
|
||||
|
||||
// Room Notification Settings
|
||||
"room_notifs_settings_notify_me_for" = "Сповістити мене про";
|
||||
"room_details_copy_room_url" = "Копіювати URL-адресу кімнати";
|
||||
"room_details_copy_room_address" = "Копіювати адресу кімнати";
|
||||
"room_details_copy_room_id" = "Копіювати ID кімнати";
|
||||
"room_details_unset_main_address" = "Не використовувати основною адресою";
|
||||
"room_details_set_main_address" = "Установити основною адресою";
|
||||
"room_details_save_changes_prompt" = "Бажаєте зберегти зміни?";
|
||||
"room_details_fail_to_enable_encryption" = "Не вдалося увімкнути шифрування цієї кімнати";
|
||||
"room_details_fail_to_update_room_communities" = "Не вдалося оновити пов'язані спільноти";
|
||||
"room_details_new_address_placeholder" = "Додати нову адресу (напр., #foo%@)";
|
||||
"room_details_new_address" = "Додати нову адресу";
|
||||
|
||||
// Re-request confirmation dialog
|
||||
"rerequest_keys_alert_title" = "Запит надіслано";
|
||||
"settings_key_backup_info_algorithm" = "Алгоритм: %@";
|
||||
"settings_add_3pid_password_title_msidsn" = "Додати номер телефону";
|
||||
"settings_device_notifications" = "Сповіщення пристрою";
|
||||
"settings_add_3pid_password_title_email" = "Додати адресу е-пошти";
|
||||
"settings_password_updated" = "Пароль оновлено";
|
||||
"settings_fail_to_update_password" = "Не вдалося оновити пароль";
|
||||
"settings_confirm_password" = "підтвердити пароль";
|
||||
"settings_new_password" = "новий пароль";
|
||||
"settings_old_password" = "старий пароль";
|
||||
"room_details_advanced_e2e_encryption_disabled_for_dm" = "Шифрування не увімкнено тут.";
|
||||
"room_details_advanced_e2e_encryption_disabled" = "Шифрування не увімкнено в цій кімнаті.";
|
||||
"room_details_advanced_e2e_encryption_enabled_for_dm" = "Шифрування увімкнено тут";
|
||||
"room_details_advanced_e2e_encryption_enabled" = "Шифрування увімкнено в цій кімнаті";
|
||||
"room_details_advanced_enable_e2e_encryption" = "Увімкнути шифрування (попередження: вимкнути не можливо!)";
|
||||
"room_details_advanced_room_id_for_dm" = "ID:";
|
||||
"room_details_advanced_room_id" = "ID кімнати:";
|
||||
"room_details_advanced_section" = "Розширені";
|
||||
"room_details_fail_to_update_room_canonical_alias" = "Не вдалося оновити основну адресу";
|
||||
"room_details_fail_to_remove_room_aliases" = "Не вдалося вилучити адресу кімнати";
|
||||
"room_details_fail_to_add_room_aliases" = "Не вдалося додати нову адресу кімнати";
|
||||
"room_details_fail_to_update_history_visibility" = "Не вдалося оновити видимість історії";
|
||||
"room_details_fail_to_update_room_directory_visibility" = "Не вдалося оновити видимість каталогу кімнати";
|
||||
"room_details_fail_to_update_room_join_rule" = "Не вдалося оновити правила приєднання";
|
||||
"room_details_fail_to_update_room_guest_access" = "Не вдалося оновити гостьовий доступ до кімнати";
|
||||
"room_details_fail_to_update_topic" = "Не вдалося оновити тему";
|
||||
"room_details_fail_to_update_room_name" = "Не вдалося оновити назву кімнати";
|
||||
"room_details_fail_to_update_avatar" = "Не вдалося оновити світлину кімнати";
|
||||
"room_details_advanced_e2e_encryption_blacklist_unverified_devices" = "Шифрування лише для звірених сеансів";
|
||||
"settings_crypto_blacklist_unverified_devices" = "Шифрування лише для звірених сеансів";
|
||||
"settings_crypto_export" = "Експорт ключів";
|
||||
"settings_crypto_device_key" = "\nКлюч сеансу:\n";
|
||||
"settings_crypto_device_id" = "\nID сеансу: ";
|
||||
"settings_crypto_device_name" = "Назва сеансу: ";
|
||||
"settings_add_3pid_invalid_password_message" = "Хибні облікові дані";
|
||||
"settings_add_3pid_password_message" = "Щоб продовжити, введіть пароль";
|
||||
"deactivate_account_password_alert_message" = "Щоб продовжити, введіть пароль";
|
||||
|
||||
// Deactivate account
|
||||
|
||||
"deactivate_account_title" = "Деактивувати обліковий запис";
|
||||
"deactivate_account_password_alert_title" = "Деактивувати обліковий запис";
|
||||
"deactivate_account_validate_action" = "Деактивувати обліковий запис";
|
||||
"deactivate_account_forget_messages_information_part2_emphasize" = "Попередження";
|
||||
"key_verification_self_verify_unverified_sessions_alert_validate_action" = "Перевірити";
|
||||
"key_verification_self_verify_unverified_sessions_alert_message" = "Звірити всі свої сеанси, щоб переконатися, що ваш обліковий запис і повідомлення у безпеці.";
|
||||
|
||||
// Unverified sessions
|
||||
|
||||
"key_verification_self_verify_unverified_sessions_alert_title" = "Перевірте, де ви увійшли";
|
||||
"key_verification_self_verify_current_session_alert_validate_action" = "Звірити";
|
||||
"device_verification_self_verify_start_verify_action" = "Почати звірення";
|
||||
"device_verification_self_verify_alert_validate_action" = "Звірити";
|
||||
"key_verification_verified_new_session_title" = "Новий сеанс звірено!";
|
||||
"device_verification_verified_got_it_button" = "Зрозуміло";
|
||||
|
||||
// MARK: Verified
|
||||
|
||||
// Device
|
||||
|
||||
"device_verification_verified_title" = "Звірено!";
|
||||
|
||||
// Device
|
||||
|
||||
"device_verification_verify_wait_partner" = "Очікування підтвердження партнером…";
|
||||
"key_verification_manually_verify_device_validate_action" = "Звірити";
|
||||
"room_participants_action_security_status_verify" = "Звірити";
|
||||
"room_participants_action_security_status_verified" = "Звірений";
|
||||
|
||||
@@ -1595,7 +1595,7 @@ public class VectorL10n: NSObject {
|
||||
public static var identityServerSettingsPlaceHolder: String {
|
||||
return VectorL10n.tr("Vector", "identity_server_settings_place_holder")
|
||||
}
|
||||
/// Identity Server
|
||||
/// Identity server
|
||||
public static var identityServerSettingsTitle: String {
|
||||
return VectorL10n.tr("Vector", "identity_server_settings_title")
|
||||
}
|
||||
@@ -4207,7 +4207,7 @@ public class VectorL10n: NSObject {
|
||||
public static var settingsDiscoverySettings: String {
|
||||
return VectorL10n.tr("Vector", "settings_discovery_settings")
|
||||
}
|
||||
/// Agree to the Identity Server (%@) Terms of Service to allow yourself to be discoverable by email address or phone number.
|
||||
/// Agree to the identity server (%@) Terms of Service to allow yourself to be discoverable by email address or phone number.
|
||||
public static func settingsDiscoveryTermsNotSigned(_ p1: String) -> String {
|
||||
return VectorL10n.tr("Vector", "settings_discovery_terms_not_signed", p1)
|
||||
}
|
||||
@@ -4339,7 +4339,7 @@ public class VectorL10n: NSObject {
|
||||
public static var settingsIntegrationsAllowButton: String {
|
||||
return VectorL10n.tr("Vector", "settings_integrations_allow_button")
|
||||
}
|
||||
/// Use an Integration Manager (%@) to manage bots, bridges, widgets and sticker packs.\n\nIntegration Managers receive configuration data, and can modify widgets, send room invites and set power levels on your behalf.
|
||||
/// Use an integration manager (%@) to manage bots, bridges, widgets and sticker packs.\n\nIntegration managers receive configuration data, and can modify widgets, send room invites and set power levels on your behalf.
|
||||
public static func settingsIntegrationsAllowDescription(_ p1: String) -> String {
|
||||
return VectorL10n.tr("Vector", "settings_integrations_allow_description", p1)
|
||||
}
|
||||
@@ -5183,7 +5183,7 @@ public class VectorL10n: NSObject {
|
||||
public static var widgetIntegrationFailedToSendRequest: String {
|
||||
return VectorL10n.tr("Vector", "widget_integration_failed_to_send_request")
|
||||
}
|
||||
/// You need to enable Integration Manager in settings
|
||||
/// You need to enable integration manager in settings
|
||||
public static var widgetIntegrationManagerDisabled: String {
|
||||
return VectorL10n.tr("Vector", "widget_integration_manager_disabled")
|
||||
}
|
||||
|
||||
@@ -22,6 +22,10 @@
|
||||
// Metrics related to notifications
|
||||
FOUNDATION_EXPORT NSString *const AnalyticsNoficationsCategory;
|
||||
FOUNDATION_EXPORT NSString *const AnalyticsNoficationsTimeToDisplayContent;
|
||||
/**
|
||||
The analytics value for accept/decline of the identity server's terms.
|
||||
*/
|
||||
FOUNDATION_EXPORT NSString *const AnalyticsContactsIdentityServerAccepted;
|
||||
|
||||
|
||||
/**
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
|
||||
NSString *const AnalyticsNoficationsCategory = @"notifications";
|
||||
NSString *const AnalyticsNoficationsTimeToDisplayContent = @"timelineDisplay";
|
||||
NSString *const AnalyticsContactsIdentityServerAccepted = @"identityServerAccepted";
|
||||
|
||||
|
||||
// Duration data will be visible under the Piwik category called "Performance".
|
||||
|
||||
@@ -16,6 +16,8 @@
|
||||
|
||||
#import "BuildInfo.h"
|
||||
|
||||
#import "Riot-Swift.h"
|
||||
|
||||
#define MAKE_STRING(x) #x
|
||||
#define MAKE_NS_STRING(x) @MAKE_STRING(x)
|
||||
|
||||
@@ -80,7 +82,7 @@
|
||||
}
|
||||
else
|
||||
{
|
||||
_readableBuildVersion = NSLocalizedStringFromTable(@"settings_config_no_build_info", @"Vector", nil);
|
||||
_readableBuildVersion = [VectorL10n settingsConfigNoBuildInfo];
|
||||
}
|
||||
}
|
||||
return _readableBuildVersion;
|
||||
|
||||
@@ -67,10 +67,10 @@ static RageShakeManager* sharedInstance = nil;
|
||||
{
|
||||
if ([MXLogger crashLog])
|
||||
{
|
||||
confirmationAlert = [UIAlertController alertControllerWithTitle:NSLocalizedStringFromTable(@"bug_report_prompt", @"Vector", nil) message:nil preferredStyle:UIAlertControllerStyleAlert];
|
||||
confirmationAlert = [UIAlertController alertControllerWithTitle:[VectorL10n bugReportPrompt] message:nil preferredStyle:UIAlertControllerStyleAlert];
|
||||
|
||||
__weak typeof(self) weakSelf = self;
|
||||
[confirmationAlert addAction:[UIAlertAction actionWithTitle:[NSBundle mxk_localizedStringForKey:@"cancel"]
|
||||
[confirmationAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n cancel]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -85,7 +85,7 @@ static RageShakeManager* sharedInstance = nil;
|
||||
|
||||
}]];
|
||||
|
||||
[confirmationAlert addAction:[UIAlertAction actionWithTitle:[NSBundle mxk_localizedStringForKey:@"ok"]
|
||||
[confirmationAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n ok]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -131,10 +131,10 @@ static RageShakeManager* sharedInstance = nil;
|
||||
{
|
||||
if ([responder isKindOfClass:[UIViewController class]])
|
||||
{
|
||||
confirmationAlert = [UIAlertController alertControllerWithTitle:NSLocalizedStringFromTable(@"rage_shake_prompt", @"Vector", nil) message:nil preferredStyle:UIAlertControllerStyleAlert];
|
||||
confirmationAlert = [UIAlertController alertControllerWithTitle:[VectorL10n rageShakePrompt] message:nil preferredStyle:UIAlertControllerStyleAlert];
|
||||
|
||||
__weak typeof(self) weakSelf = self;
|
||||
[confirmationAlert addAction:[UIAlertAction actionWithTitle:[NSBundle mxk_localizedStringForKey:@"ok"]
|
||||
[confirmationAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n ok]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -154,7 +154,7 @@ static RageShakeManager* sharedInstance = nil;
|
||||
|
||||
}]];
|
||||
|
||||
[confirmationAlert addAction:[UIAlertAction actionWithTitle:[NSBundle mxk_localizedStringForKey:@"do_not_ask_again"]
|
||||
[confirmationAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n doNotAskAgain]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -169,7 +169,7 @@ static RageShakeManager* sharedInstance = nil;
|
||||
|
||||
}]];
|
||||
|
||||
[confirmationAlert addAction:[UIAlertAction actionWithTitle:[NSBundle mxk_localizedStringForKey:@"cancel"]
|
||||
[confirmationAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n cancel]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
|
||||
@@ -165,9 +165,10 @@ class CallPresenter: NSObject {
|
||||
} else {
|
||||
createJitsiBlock()
|
||||
}
|
||||
|
||||
#else
|
||||
AppDelegate.theDelegate().showAlert(withTitle: nil,
|
||||
message: Bundle.mxk_localizedString(forKey: "not_supported_yet"))
|
||||
message: MatrixKitL10n.notSupportedYet)
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
@@ -60,7 +60,7 @@ Matrix session observer used to detect new opened sessions.
|
||||
{
|
||||
UNTextInputNotificationAction *quickReply = [UNTextInputNotificationAction
|
||||
actionWithIdentifier:@"inline-reply"
|
||||
title:NSLocalizedStringFromTable(@"room_message_short_placeholder", @"Vector", nil)
|
||||
title:[VectorL10n roomMessageShortPlaceholder]
|
||||
options:UNNotificationActionOptionAuthenticationRequired
|
||||
];
|
||||
|
||||
@@ -370,7 +370,7 @@ Matrix session observer used to detect new opened sessions.
|
||||
|
||||
UNMutableNotificationContent *failureNotificationContent = [[UNMutableNotificationContent alloc] init];
|
||||
failureNotificationContent.userInfo = content.userInfo;
|
||||
failureNotificationContent.body = NSLocalizedStringFromTable(@"room_event_failed_to_send", @"Vector", nil);
|
||||
failureNotificationContent.body = [VectorL10n roomEventFailedToSend];
|
||||
failureNotificationContent.threadIdentifier = roomId;
|
||||
|
||||
NSString *uuid = [[NSUUID UUID] UUIDString];
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
import Foundation
|
||||
|
||||
@objcMembers
|
||||
class URLPreviewData: NSObject {
|
||||
class URLPreviewData: NSObject, MXKURLPreviewDataProtocol {
|
||||
/// The URL that's represented by the preview data. This may have been sanitized.
|
||||
/// Note: The original URL, can be found in the bubble components with `eventID` and `roomID`.
|
||||
let url: URL
|
||||
|
||||
@@ -92,9 +92,9 @@ class URLPreviewService: NSObject {
|
||||
store.closePreview(for: eventId, in: roomId)
|
||||
}
|
||||
|
||||
/// Whether a preview for the given event has been closed or not.
|
||||
func hasClosedPreview(from event: MXEvent) -> Bool {
|
||||
store.hasClosedPreview(for: event.eventId, in: event.roomId)
|
||||
/// Whether a preview for the given event should be shown or not.
|
||||
func shouldShowPreview(for event: MXEvent) -> Bool {
|
||||
!store.hasClosedPreview(for: event.eventId, in: event.roomId)
|
||||
}
|
||||
|
||||
// MARK: - Private
|
||||
|
||||
@@ -262,7 +262,7 @@ NSString *const WidgetManagerErrorDomain = @"WidgetManagerErrorDomain";
|
||||
WidgetManagerConfig *config = [self configForUser:userId];
|
||||
if (!config.hasUrls)
|
||||
{
|
||||
MXLogDebug(@"[WidgetManager] createJitsiWidgetInRoom: Error: no Integrations Manager API URL for user %@", userId);
|
||||
MXLogDebug(@"[WidgetManager] createJitsiWidgetInRoom: Error: no integration manager API URL for user %@", userId);
|
||||
failure(self.errorForNonConfiguredIntegrationManager);
|
||||
return nil;
|
||||
}
|
||||
@@ -358,7 +358,7 @@ NSString *const WidgetManagerErrorDomain = @"WidgetManagerErrorDomain";
|
||||
error = [NSError errorWithDomain:WidgetManagerErrorDomain
|
||||
code:WidgetManagerErrorCodeNotEnoughPower
|
||||
userInfo:@{
|
||||
NSLocalizedDescriptionKey: NSLocalizedStringFromTable(@"widget_no_power_to_manage", @"Vector", nil)
|
||||
NSLocalizedDescriptionKey: [VectorL10n widgetNoPowerToManage]
|
||||
}];
|
||||
}
|
||||
|
||||
@@ -419,7 +419,7 @@ NSString *const WidgetManagerErrorDomain = @"WidgetManagerErrorDomain";
|
||||
NSError *error = [NSError errorWithDomain:WidgetManagerErrorDomain
|
||||
code:WidgetManagerErrorCodeCreationFailed
|
||||
userInfo:@{
|
||||
NSLocalizedDescriptionKey: NSLocalizedStringFromTable(@"widget_creation_failure", @"Vector", nil)
|
||||
NSLocalizedDescriptionKey: [VectorL10n widgetCreationFailure]
|
||||
}];
|
||||
|
||||
self->failureBlockForWidgetCreation[hash][widgetId](error);
|
||||
@@ -574,7 +574,7 @@ NSString *const WidgetManagerErrorDomain = @"WidgetManagerErrorDomain";
|
||||
WidgetManagerConfig *config = [self configForUser:userId];
|
||||
if (!config.hasUrls)
|
||||
{
|
||||
MXLogDebug(@"[WidgetManager] registerForScalarToken: Error: no Integrations Manager API URL for user %@", mxSession.myUser.userId);
|
||||
MXLogDebug(@"[WidgetManager] registerForScalarToken: Error: no integration manager API URL for user %@", mxSession.myUser.userId);
|
||||
failure(self.errorForNonConfiguredIntegrationManager);
|
||||
return nil;
|
||||
}
|
||||
@@ -624,7 +624,7 @@ NSString *const WidgetManagerErrorDomain = @"WidgetManagerErrorDomain";
|
||||
NSError *error = [NSError errorWithDomain:WidgetManagerErrorDomain
|
||||
code:WidgetManagerErrorCodeFailedToConnectToIntegrationsServer
|
||||
userInfo:@{
|
||||
NSLocalizedDescriptionKey: NSLocalizedStringFromTable(@"widget_integrations_server_failed_to_connect", @"Vector", nil)
|
||||
NSLocalizedDescriptionKey: [VectorL10n widgetIntegrationsServerFailedToConnect]
|
||||
}];
|
||||
|
||||
failure(error);
|
||||
@@ -654,7 +654,7 @@ NSString *const WidgetManagerErrorDomain = @"WidgetManagerErrorDomain";
|
||||
WidgetManagerConfig *config = [self configForUser:userId];
|
||||
if (!config.hasUrls)
|
||||
{
|
||||
MXLogDebug(@"[WidgetManager] validateScalarToken: Error: no Integrations Manager API URL for user %@", mxSession.myUser.userId);
|
||||
MXLogDebug(@"[WidgetManager] validateScalarToken: Error: no integration manager API URL for user %@", mxSession.myUser.userId);
|
||||
failure(self.errorForNonConfiguredIntegrationManager);
|
||||
return nil;
|
||||
}
|
||||
@@ -797,14 +797,14 @@ NSString *const WidgetManagerErrorDomain = @"WidgetManagerErrorDomain";
|
||||
{
|
||||
return [NSError errorWithDomain:WidgetManagerErrorDomain
|
||||
code:WidgetManagerErrorCodeNoIntegrationsServerConfigured
|
||||
userInfo:@{NSLocalizedDescriptionKey: NSLocalizedStringFromTable(@"widget_no_integrations_server_configured", @"Vector", nil)}];
|
||||
userInfo:@{NSLocalizedDescriptionKey: [VectorL10n widgetNoIntegrationsServerConfigured]}];
|
||||
}
|
||||
|
||||
- (NSError*)errorForDisabledIntegrationManager
|
||||
{
|
||||
return [NSError errorWithDomain:WidgetManagerErrorDomain
|
||||
code:WidgetManagerErrorCodeDisabledIntegrationsServer
|
||||
userInfo:@{NSLocalizedDescriptionKey: NSLocalizedStringFromTable(@"widget_integration_manager_disabled", @"Vector", nil)}];
|
||||
userInfo:@{NSLocalizedDescriptionKey: [VectorL10n widgetIntegrationManagerDisabled]}];
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@@ -666,7 +666,7 @@ NSString *const AppDelegateUniversalLinkDidChangeNotification = @"AppDelegateUni
|
||||
// Inform the end user why the app appears blank
|
||||
NSError *error = [NSError errorWithDomain:NSURLErrorDomain
|
||||
code:NSURLErrorCannotConnectToHost
|
||||
userInfo:@{NSLocalizedDescriptionKey : NSLocalizedStringFromTable(@"homeserver_connection_lost", @"Vector", nil)}];
|
||||
userInfo:@{NSLocalizedDescriptionKey : [VectorL10n homeserverConnectionLost]}];
|
||||
|
||||
[self showErrorAsAlert:error];
|
||||
}
|
||||
@@ -686,7 +686,7 @@ NSString *const AppDelegateUniversalLinkDidChangeNotification = @"AppDelegateUni
|
||||
if (status == AFNetworkReachabilityStatusNotReachable)
|
||||
{
|
||||
// Prompt user
|
||||
[[AppDelegate theDelegate] showErrorAsAlert:[NSError errorWithDomain:NSURLErrorDomain code:NSURLErrorNotConnectedToInternet userInfo:@{NSLocalizedDescriptionKey : NSLocalizedStringFromTable(@"network_offline_prompt", @"Vector", nil)}]];
|
||||
[[AppDelegate theDelegate] showErrorAsAlert:[NSError errorWithDomain:NSURLErrorDomain code:NSURLErrorNotConnectedToInternet userInfo:@{NSLocalizedDescriptionKey : [VectorL10n networkOfflinePrompt]}]];
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -928,7 +928,7 @@ NSString *const AppDelegateUniversalLinkDidChangeNotification = @"AppDelegateUni
|
||||
}
|
||||
else
|
||||
{
|
||||
title = [NSBundle mxk_localizedStringForKey:@"error"];
|
||||
title = [MatrixKitL10n error];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -946,7 +946,7 @@ NSString *const AppDelegateUniversalLinkDidChangeNotification = @"AppDelegateUni
|
||||
[_errorNotification dismissViewControllerAnimated:NO completion:nil];
|
||||
|
||||
_errorNotification = [UIAlertController alertControllerWithTitle:title message:message preferredStyle:UIAlertControllerStyleAlert];
|
||||
[_errorNotification addAction:[UIAlertAction actionWithTitle:[NSBundle mxk_localizedStringForKey:@"ok"]
|
||||
[_errorNotification addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n ok]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -983,12 +983,12 @@ NSString *const AppDelegateUniversalLinkDidChangeNotification = @"AppDelegateUni
|
||||
}
|
||||
|
||||
cryptoDataCorruptedAlert = [UIAlertController alertControllerWithTitle:nil
|
||||
message:NSLocalizedStringFromTable(@"e2e_need_log_in_again", @"Vector", nil)
|
||||
message:[VectorL10n e2eNeedLogInAgain]
|
||||
preferredStyle:UIAlertControllerStyleAlert];
|
||||
|
||||
__weak typeof(self) weakSelf = self;
|
||||
|
||||
[cryptoDataCorruptedAlert addAction:[UIAlertAction actionWithTitle:[NSBundle mxk_localizedStringForKey:@"later"]
|
||||
[cryptoDataCorruptedAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n later]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -1000,7 +1000,7 @@ NSString *const AppDelegateUniversalLinkDidChangeNotification = @"AppDelegateUni
|
||||
|
||||
}]];
|
||||
|
||||
[cryptoDataCorruptedAlert addAction:[UIAlertAction actionWithTitle:[NSBundle mxk_localizedStringForKey:@"settings_sign_out"]
|
||||
[cryptoDataCorruptedAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n settingsSignOut]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -1029,15 +1029,12 @@ NSString *const AppDelegateUniversalLinkDidChangeNotification = @"AppDelegateUni
|
||||
[wrongBackupVersionAlert dismissViewControllerAnimated:NO completion:nil];
|
||||
}
|
||||
|
||||
wrongBackupVersionAlert = [UIAlertController
|
||||
alertControllerWithTitle:NSLocalizedStringFromTable(@"e2e_key_backup_wrong_version_title", @"Vector", nil)
|
||||
|
||||
message:NSLocalizedStringFromTable(@"e2e_key_backup_wrong_version", @"Vector", nil)
|
||||
|
||||
preferredStyle:UIAlertControllerStyleAlert];
|
||||
wrongBackupVersionAlert = [UIAlertController alertControllerWithTitle:[VectorL10n e2eKeyBackupWrongVersionTitle]
|
||||
message:[VectorL10n e2eKeyBackupWrongVersion]
|
||||
preferredStyle:UIAlertControllerStyleAlert];
|
||||
|
||||
MXWeakify(self);
|
||||
[wrongBackupVersionAlert addAction:[UIAlertAction actionWithTitle:[NSBundle mxk_localizedStringForKey:@"e2e_key_backup_wrong_version_button_settings"]
|
||||
[wrongBackupVersionAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n e2eKeyBackupWrongVersionButtonSettings]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action)
|
||||
{
|
||||
@@ -1047,7 +1044,7 @@ NSString *const AppDelegateUniversalLinkDidChangeNotification = @"AppDelegateUni
|
||||
// TODO: Open settings
|
||||
}]];
|
||||
|
||||
[wrongBackupVersionAlert addAction:[UIAlertAction actionWithTitle:[NSBundle mxk_localizedStringForKey:@"e2e_key_backup_wrong_version_button_wasme"]
|
||||
[wrongBackupVersionAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n e2eKeyBackupWrongVersionButtonWasme]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action)
|
||||
{
|
||||
@@ -1176,7 +1173,7 @@ NSString *const AppDelegateUniversalLinkDidChangeNotification = @"AppDelegateUni
|
||||
return YES;
|
||||
}
|
||||
|
||||
// Manage email validation link from Identity Server v1 or v2
|
||||
// Manage email validation link from identity server v1 or v2
|
||||
else if ([webURL.path isEqualToString:validateEmailSubmitTokenAPIPathV1]
|
||||
|| [webURL.path isEqualToString:validateEmailSubmitTokenAPIPathV2])
|
||||
{
|
||||
@@ -1419,7 +1416,7 @@ NSString *const AppDelegateUniversalLinkDidChangeNotification = @"AppDelegateUni
|
||||
|
||||
[homeViewController stopActivityIndicator];
|
||||
|
||||
NSString *errorMessage = [NSString stringWithFormat:NSLocalizedStringFromTable(@"room_does_not_exist", @"Vector", nil), roomIdOrAlias];
|
||||
NSString *errorMessage = [VectorL10n roomDoesNotExist:roomIdOrAlias];
|
||||
|
||||
[self showAlertWithTitle:nil message:errorMessage];
|
||||
}];
|
||||
@@ -1774,9 +1771,9 @@ NSString *const AppDelegateUniversalLinkDidChangeNotification = @"AppDelegateUni
|
||||
- (void)displayServerProvionningLinkBuyAlreadyLoggedInAlertWithCompletion:(void (^)(BOOL logout))completion
|
||||
{
|
||||
// Ask confirmation
|
||||
self.logoutConfirmation = [UIAlertController alertControllerWithTitle:NSLocalizedStringFromTable(@"error_user_already_logged_in", @"Vector", nil) message:nil preferredStyle:UIAlertControllerStyleAlert];
|
||||
self.logoutConfirmation = [UIAlertController alertControllerWithTitle:[VectorL10n errorUserAlreadyLoggedIn] message:nil preferredStyle:UIAlertControllerStyleAlert];
|
||||
|
||||
[self.logoutConfirmation addAction:[UIAlertAction actionWithTitle:NSLocalizedStringFromTable(@"settings_sign_out", @"Vector", nil)
|
||||
[self.logoutConfirmation addAction:[UIAlertAction actionWithTitle:[VectorL10n settingsSignOut]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action)
|
||||
{
|
||||
@@ -1784,7 +1781,7 @@ NSString *const AppDelegateUniversalLinkDidChangeNotification = @"AppDelegateUni
|
||||
completion(YES);
|
||||
}]];
|
||||
|
||||
[self.logoutConfirmation addAction:[UIAlertAction actionWithTitle:[NSBundle mxk_localizedStringForKey:@"cancel"]
|
||||
[self.logoutConfirmation addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n cancel]
|
||||
style:UIAlertActionStyleCancel
|
||||
handler:^(UIAlertAction * action)
|
||||
{
|
||||
@@ -2097,7 +2094,7 @@ NSString *const AppDelegateUniversalLinkDidChangeNotification = @"AppDelegateUni
|
||||
|
||||
__weak typeof(self) weakSelf = self;
|
||||
|
||||
NSString *message = NSLocalizedStringFromTable(@"settings_sign_out_confirmation", @"Vector", nil);
|
||||
NSString *message = [VectorL10n settingsSignOutConfirmation];
|
||||
|
||||
// If the user has encrypted rooms, warn he will lose his e2e keys
|
||||
MXSession *session = self.mxSessions.firstObject;
|
||||
@@ -2105,15 +2102,15 @@ NSString *const AppDelegateUniversalLinkDidChangeNotification = @"AppDelegateUni
|
||||
{
|
||||
if (room.summary.isEncrypted)
|
||||
{
|
||||
message = [message stringByAppendingString:[NSString stringWithFormat:@"\n\n%@", NSLocalizedStringFromTable(@"settings_sign_out_e2e_warn", @"Vector", nil)]];
|
||||
message = [message stringByAppendingString:[NSString stringWithFormat:@"\n\n%@", [VectorL10n settingsSignOutE2eWarn]]];
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// Ask confirmation
|
||||
self.logoutConfirmation = [UIAlertController alertControllerWithTitle:NSLocalizedStringFromTable(@"settings_sign_out", @"Vector", nil) message:message preferredStyle:UIAlertControllerStyleAlert];
|
||||
self.logoutConfirmation = [UIAlertController alertControllerWithTitle:[VectorL10n settingsSignOut] message:message preferredStyle:UIAlertControllerStyleAlert];
|
||||
|
||||
[self.logoutConfirmation addAction:[UIAlertAction actionWithTitle:NSLocalizedStringFromTable(@"settings_sign_out", @"Vector", nil)
|
||||
[self.logoutConfirmation addAction:[UIAlertAction actionWithTitle:[VectorL10n settingsSignOut]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -2131,7 +2128,7 @@ NSString *const AppDelegateUniversalLinkDidChangeNotification = @"AppDelegateUni
|
||||
|
||||
}]];
|
||||
|
||||
[self.logoutConfirmation addAction:[UIAlertAction actionWithTitle:[NSBundle mxk_localizedStringForKey:@"cancel"]
|
||||
[self.logoutConfirmation addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n cancel]
|
||||
style:UIAlertActionStyleCancel
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -2547,7 +2544,7 @@ NSString *const AppDelegateUniversalLinkDidChangeNotification = @"AppDelegateUni
|
||||
[_errorNotification dismissViewControllerAnimated:NO completion:nil];
|
||||
_errorNotification = [UIAlertController alertControllerWithTitle:nil message:msg preferredStyle:UIAlertControllerStyleAlert];
|
||||
|
||||
[_errorNotification addAction:[UIAlertAction actionWithTitle:[NSBundle mxk_localizedStringForKey:@"later"]
|
||||
[_errorNotification addAction:[UIAlertAction actionWithTitle:[VectorL10n later]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -2559,7 +2556,7 @@ NSString *const AppDelegateUniversalLinkDidChangeNotification = @"AppDelegateUni
|
||||
|
||||
}]];
|
||||
|
||||
[_errorNotification addAction:[UIAlertAction actionWithTitle:[NSBundle mxk_localizedStringForKey:@"ok"]
|
||||
[_errorNotification addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n ok]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -2640,7 +2637,7 @@ NSString *const AppDelegateUniversalLinkDidChangeNotification = @"AppDelegateUni
|
||||
message:messageText
|
||||
preferredStyle:UIAlertControllerStyleAlert];
|
||||
|
||||
[self.mxInAppNotification addAction:[UIAlertAction actionWithTitle:[NSBundle mxk_localizedStringForKey:@"cancel"]
|
||||
[self.mxInAppNotification addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n cancel]
|
||||
style:UIAlertActionStyleCancel
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -2653,7 +2650,7 @@ NSString *const AppDelegateUniversalLinkDidChangeNotification = @"AppDelegateUni
|
||||
|
||||
}]];
|
||||
|
||||
[self.mxInAppNotification addAction:[UIAlertAction actionWithTitle:NSLocalizedStringFromTable(@"view", @"Vector", nil)
|
||||
[self.mxInAppNotification addAction:[UIAlertAction actionWithTitle:[VectorL10n view]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -2700,7 +2697,7 @@ NSString *const AppDelegateUniversalLinkDidChangeNotification = @"AppDelegateUni
|
||||
{
|
||||
[accountPicker dismissViewControllerAnimated:NO completion:nil];
|
||||
|
||||
accountPicker = [UIAlertController alertControllerWithTitle:[NSBundle mxk_localizedStringForKey:@"select_account"] message:nil preferredStyle:UIAlertControllerStyleActionSheet];
|
||||
accountPicker = [UIAlertController alertControllerWithTitle:[MatrixKitL10n selectAccount] message:nil preferredStyle:UIAlertControllerStyleActionSheet];
|
||||
|
||||
__weak typeof(self) weakSelf = self;
|
||||
for(MXKAccount *account in mxAccounts)
|
||||
@@ -2723,7 +2720,7 @@ NSString *const AppDelegateUniversalLinkDidChangeNotification = @"AppDelegateUni
|
||||
}]];
|
||||
}
|
||||
|
||||
[accountPicker addAction:[UIAlertAction actionWithTitle:[NSBundle mxk_localizedStringForKey:@"cancel"]
|
||||
[accountPicker addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n cancel]
|
||||
style:UIAlertActionStyleCancel
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -2885,7 +2882,7 @@ NSString *const AppDelegateUniversalLinkDidChangeNotification = @"AppDelegateUni
|
||||
void (^onFailure)(NSError *) = ^(NSError *error){
|
||||
MXLogDebug(@"[AppDelegate] Create direct chat failed");
|
||||
//Alert user
|
||||
[self showAlertWithTitle:nil message:NSLocalizedStringFromTable(@"room_creation_dm_error", @"Vector", nil)];
|
||||
[self showAlertWithTitle:nil message:[VectorL10n roomCreationDmError]];
|
||||
|
||||
if (completion)
|
||||
{
|
||||
@@ -3000,24 +2997,24 @@ NSString *const AppDelegateUniversalLinkDidChangeNotification = @"AppDelegateUni
|
||||
NSString *homeServerName = mainSession.matrixRestClient.credentials.homeServerName;
|
||||
|
||||
NSString *message = [NSString stringWithFormat:@"%@\n\n%@",
|
||||
[NSString stringWithFormat:NSLocalizedStringFromTable(@"call_no_stun_server_error_message_1", @"Vector", nil), homeServerName],
|
||||
[NSString stringWithFormat: NSLocalizedStringFromTable(@"call_no_stun_server_error_message_2", @"Vector", nil), stunFallbackHost]];
|
||||
|
||||
_errorNotification = [UIAlertController alertControllerWithTitle:NSLocalizedStringFromTable(@"call_no_stun_server_error_title", @"Vector", nil)
|
||||
[VectorL10n callNoStunServerErrorMessage1:homeServerName],
|
||||
[VectorL10n callNoStunServerErrorMessage2:stunFallbackHost]];
|
||||
|
||||
_errorNotification = [UIAlertController alertControllerWithTitle:[VectorL10n callNoStunServerErrorTitle]
|
||||
message:message
|
||||
preferredStyle:UIAlertControllerStyleAlert];
|
||||
|
||||
[_errorNotification addAction:[UIAlertAction actionWithTitle:[NSString stringWithFormat: NSLocalizedStringFromTable(@"call_no_stun_server_error_use_fallback_button", @"Vector", nil), stunFallbackHost]
|
||||
|
||||
[_errorNotification addAction:[UIAlertAction actionWithTitle:[VectorL10n callNoStunServerErrorUseFallbackButton:stunFallbackHost]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
RiotSettings.shared.allowStunServerFallback = YES;
|
||||
|
||||
RiotSettings.shared.allowStunServerFallback = YES;
|
||||
mainSession.callManager.fallbackSTUNServer = BuildSettings.stunServerFallbackUrlString;
|
||||
|
||||
[AppDelegate theDelegate].errorNotification = nil;
|
||||
}]];
|
||||
|
||||
[_errorNotification addAction:[UIAlertAction actionWithTitle:[NSBundle mxk_localizedStringForKey:@"cancel"]
|
||||
[_errorNotification addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n cancel]
|
||||
style:UIAlertActionStyleCancel
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -3086,7 +3083,7 @@ NSString *const AppDelegateUniversalLinkDidChangeNotification = @"AppDelegateUni
|
||||
|
||||
[self.slidingModalPresenter dismissWithAnimated:NO completion:nil];
|
||||
|
||||
NSString *widgetCreatorUserId = widget.widgetEvent.sender ?: NSLocalizedStringFromTable(@"room_participants_unknown", @"Vector", nil);
|
||||
NSString *widgetCreatorUserId = widget.widgetEvent.sender ?: [VectorL10n roomParticipantsUnknown];
|
||||
|
||||
MXSession *session = widget.mxSession;
|
||||
MXRoom *room = [session roomWithRoomId:widget.widgetEvent.roomId];
|
||||
@@ -3109,8 +3106,8 @@ NSString *const AppDelegateUniversalLinkDidChangeNotification = @"AppDelegateUni
|
||||
NSString *widgetCreatorAvatarURL = widgetCreatorRoomMember.avatarUrl;
|
||||
|
||||
NSArray<NSString*> *permissionStrings = @[
|
||||
NSLocalizedStringFromTable(@"room_widget_permission_display_name_permission", @"Vector", nil),
|
||||
NSLocalizedStringFromTable(@"room_widget_permission_avatar_url_permission", @"Vector", nil)
|
||||
[VectorL10n roomWidgetPermissionDisplayNamePermission],
|
||||
[VectorL10n roomWidgetPermissionAvatarUrlPermission]
|
||||
];
|
||||
|
||||
WidgetPermissionViewModel *widgetPermissionViewModel = [[WidgetPermissionViewModel alloc] initWithCreatorUserId:widgetCreatorUserId
|
||||
@@ -3214,15 +3211,15 @@ NSString *const AppDelegateUniversalLinkDidChangeNotification = @"AppDelegateUni
|
||||
|
||||
NSString *appDisplayName = [[NSBundle mainBundle] infoDictionary][@"CFBundleDisplayName"];
|
||||
|
||||
NSString *message = [NSString stringWithFormat:NSLocalizedStringFromTable(@"no_voip", @"Vector", nil), callerDisplayname, appDisplayName];
|
||||
NSString *message = [VectorL10n noVoip:callerDisplayname :appDisplayName];
|
||||
|
||||
noCallSupportAlert = [UIAlertController alertControllerWithTitle:NSLocalizedStringFromTable(@"no_voip_title", @"Vector", nil)
|
||||
noCallSupportAlert = [UIAlertController alertControllerWithTitle:[VectorL10n noVoipTitle]
|
||||
message:message
|
||||
preferredStyle:UIAlertControllerStyleAlert];
|
||||
|
||||
__weak typeof(self) weakSelf = self;
|
||||
|
||||
[noCallSupportAlert addAction:[UIAlertAction actionWithTitle:[NSBundle mxk_localizedStringForKey:@"ignore"]
|
||||
[noCallSupportAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n ignore]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -3234,7 +3231,7 @@ NSString *const AppDelegateUniversalLinkDidChangeNotification = @"AppDelegateUni
|
||||
|
||||
}]];
|
||||
|
||||
[noCallSupportAlert addAction:[UIAlertAction actionWithTitle:[NSBundle mxk_localizedStringForKey:@"reject_call"]
|
||||
[noCallSupportAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n rejectCall]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -3815,7 +3812,7 @@ NSString *const AppDelegateUniversalLinkDidChangeNotification = @"AppDelegateUni
|
||||
{
|
||||
senderInfo = senderId;
|
||||
}
|
||||
|
||||
|
||||
|
||||
__block id observer;
|
||||
void (^removeObserver)(void) = ^() {
|
||||
@@ -3825,37 +3822,34 @@ NSString *const AppDelegateUniversalLinkDidChangeNotification = @"AppDelegateUni
|
||||
observer = nil;
|
||||
}
|
||||
};
|
||||
|
||||
UIAlertController *alertController = [UIAlertController alertControllerWithTitle:NSLocalizedStringFromTable(@"key_verification_tile_request_incoming_title", @"Vector", nil)
|
||||
message:senderInfo
|
||||
preferredStyle:UIAlertControllerStyleAlert];
|
||||
|
||||
[alertController addAction:[UIAlertAction actionWithTitle:NSLocalizedStringFromTable(@"key_verification_tile_request_incoming_approval_accept", @"Vector", nil)
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action)
|
||||
{
|
||||
removeObserver();
|
||||
[self presentIncomingKeyVerificationRequest:keyVerificationRequest inSession:session];
|
||||
}]];
|
||||
UIAlertController *alertController = [UIAlertController alertControllerWithTitle:[VectorL10n keyVerificationTileRequestIncomingTitle]
|
||||
message:senderInfo
|
||||
preferredStyle:UIAlertControllerStyleAlert];
|
||||
|
||||
[alertController addAction:[UIAlertAction actionWithTitle:NSLocalizedStringFromTable(@"key_verification_tile_request_incoming_approval_decline", @"Vector", nil)
|
||||
style:UIAlertActionStyleDestructive
|
||||
handler:^(UIAlertAction * action)
|
||||
{
|
||||
removeObserver();
|
||||
[keyVerificationRequest cancelWithCancelCode:MXTransactionCancelCode.user success:^{
|
||||
|
||||
} failure:^(NSError * _Nonnull error) {
|
||||
MXLogDebug(@"[AppDelegate][KeyVerification] Fail to cancel incoming key verification request with error: %@", error);
|
||||
}];
|
||||
}]];
|
||||
[alertController addAction:[UIAlertAction actionWithTitle:[VectorL10n keyVerificationTileRequestIncomingApprovalAccept]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
removeObserver();
|
||||
[self presentIncomingKeyVerificationRequest:keyVerificationRequest inSession:session];
|
||||
}]];
|
||||
|
||||
[alertController addAction:[UIAlertAction actionWithTitle:NSLocalizedStringFromTable(@"later", @"Vector", nil)
|
||||
style:UIAlertActionStyleCancel
|
||||
handler:^(UIAlertAction * action)
|
||||
{
|
||||
removeObserver();
|
||||
}]];
|
||||
[alertController addAction:[UIAlertAction actionWithTitle:[VectorL10n keyVerificationTileRequestIncomingApprovalDecline]
|
||||
style:UIAlertActionStyleDestructive
|
||||
handler:^(UIAlertAction * action) {
|
||||
removeObserver();
|
||||
[keyVerificationRequest cancelWithCancelCode:MXTransactionCancelCode.user success:^{
|
||||
|
||||
} failure:^(NSError * _Nonnull error) {
|
||||
MXLogDebug(@"[AppDelegate][KeyVerification] Fail to cancel incoming key verification request with error: %@", error);
|
||||
}];
|
||||
}]];
|
||||
|
||||
[alertController addAction:[UIAlertAction actionWithTitle:[VectorL10n later]
|
||||
style:UIAlertActionStyleCancel
|
||||
handler:^(UIAlertAction * action) {
|
||||
removeObserver();
|
||||
}]];
|
||||
|
||||
[self presentViewController:alertController animated:YES completion:nil];
|
||||
self.incomingKeyVerificationRequestAlertController = alertController;
|
||||
@@ -3863,17 +3857,16 @@ NSString *const AppDelegateUniversalLinkDidChangeNotification = @"AppDelegateUni
|
||||
observer = [[NSNotificationCenter defaultCenter] addObserverForName:MXKeyVerificationRequestDidChangeNotification
|
||||
object:keyVerificationRequest
|
||||
queue:[NSOperationQueue mainQueue]
|
||||
usingBlock:^(NSNotification * _Nonnull note)
|
||||
{
|
||||
if (keyVerificationRequest.state != MXKeyVerificationRequestStatePending)
|
||||
{
|
||||
if (self.incomingKeyVerificationRequestAlertController == alertController)
|
||||
{
|
||||
[self.incomingKeyVerificationRequestAlertController dismissViewControllerAnimated:NO completion:nil];
|
||||
removeObserver();
|
||||
}
|
||||
}
|
||||
}];
|
||||
usingBlock:^(NSNotification *note) {
|
||||
if (keyVerificationRequest.state != MXKeyVerificationRequestStatePending)
|
||||
{
|
||||
if (self.incomingKeyVerificationRequestAlertController == alertController)
|
||||
{
|
||||
[self.incomingKeyVerificationRequestAlertController dismissViewControllerAnimated:NO completion:nil];
|
||||
removeObserver();
|
||||
}
|
||||
}
|
||||
}];
|
||||
}
|
||||
|
||||
#pragma mark - New Sign In
|
||||
@@ -3942,25 +3935,25 @@ NSString *const AppDelegateUniversalLinkDidChangeNotification = @"AppDelegateUni
|
||||
deviceInfo = device.deviceId;
|
||||
}
|
||||
|
||||
NSString *alertMessage = [NSString stringWithFormat:NSLocalizedStringFromTable(@"device_verification_self_verify_alert_message", @"Vector", nil), deviceInfo];
|
||||
NSString *alertMessage = [VectorL10n deviceVerificationSelfVerifyAlertMessage:deviceInfo];
|
||||
|
||||
UIAlertController *alert = [UIAlertController alertControllerWithTitle:NSLocalizedStringFromTable(@"device_verification_self_verify_alert_title", @"Vector", nil)
|
||||
UIAlertController *alert = [UIAlertController alertControllerWithTitle:[VectorL10n deviceVerificationSelfVerifyAlertTitle]
|
||||
message:alertMessage
|
||||
preferredStyle:UIAlertControllerStyleAlert];
|
||||
|
||||
[alert addAction:[UIAlertAction actionWithTitle:NSLocalizedStringFromTable(@"device_verification_self_verify_alert_validate_action", @"Vector", nil)
|
||||
[alert addAction:[UIAlertAction actionWithTitle:[VectorL10n deviceVerificationSelfVerifyAlertValidateAction]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
self.userNewSignInAlertController = nil;
|
||||
[self presentSelfVerificationForOtherDeviceId:device.deviceId inSession:session];
|
||||
}]];
|
||||
|
||||
[alert addAction:[UIAlertAction actionWithTitle:NSLocalizedStringFromTable(@"later", @"Vector", nil)
|
||||
[alert addAction:[UIAlertAction actionWithTitle:[VectorL10n later]
|
||||
style:UIAlertActionStyleCancel
|
||||
handler:^(UIAlertAction * action) {
|
||||
self.userNewSignInAlertController = nil;
|
||||
}]];
|
||||
|
||||
|
||||
[self presentViewController:alert animated:YES completion:nil];
|
||||
|
||||
self.userNewSignInAlertController = alert;
|
||||
@@ -4053,13 +4046,13 @@ NSString *const AppDelegateUniversalLinkDidChangeNotification = @"AppDelegateUni
|
||||
MXSession *mainSession = self.mxSessions.firstObject;
|
||||
NSString *homeServerName = mainSession.matrixRestClient.credentials.homeServerName;
|
||||
|
||||
NSString *alertMessage = [NSString stringWithFormat:NSLocalizedStringFromTable(@"gdpr_consent_not_given_alert_message", @"Vector", nil), homeServerName];
|
||||
NSString *alertMessage = [VectorL10n gdprConsentNotGivenAlertMessage:homeServerName];
|
||||
|
||||
UIAlertController *alert = [UIAlertController alertControllerWithTitle:NSLocalizedStringFromTable(@"settings_term_conditions", @"Vector", nil)
|
||||
UIAlertController *alert = [UIAlertController alertControllerWithTitle:[VectorL10n settingsTermConditions]
|
||||
message:alertMessage
|
||||
preferredStyle:UIAlertControllerStyleAlert];
|
||||
|
||||
[alert addAction:[UIAlertAction actionWithTitle:NSLocalizedStringFromTable(@"gdpr_consent_not_given_alert_review_now_action", @"Vector", nil)
|
||||
[alert addAction:[UIAlertAction actionWithTitle:[VectorL10n gdprConsentNotGivenAlertReviewNowAction]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -4071,7 +4064,7 @@ NSString *const AppDelegateUniversalLinkDidChangeNotification = @"AppDelegateUni
|
||||
}
|
||||
}]];
|
||||
|
||||
[alert addAction:[UIAlertAction actionWithTitle:NSLocalizedStringFromTable(@"later", @"Vector", nil)
|
||||
[alert addAction:[UIAlertAction actionWithTitle:[VectorL10n later]
|
||||
style:UIAlertActionStyleCancel
|
||||
handler:nil]];
|
||||
|
||||
@@ -4086,7 +4079,7 @@ NSString *const AppDelegateUniversalLinkDidChangeNotification = @"AppDelegateUni
|
||||
{
|
||||
GDPRConsentViewController *gdprConsentViewController = [[GDPRConsentViewController alloc] initWithURL:consentURI];
|
||||
|
||||
UIBarButtonItem *closeBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:[NSBundle mxk_localizedStringForKey:@"close"]
|
||||
UIBarButtonItem *closeBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:[MatrixKitL10n close]
|
||||
style:UIBarButtonItemStylePlain
|
||||
target:self
|
||||
action:@selector(dismissGDPRConsent)];
|
||||
@@ -4286,7 +4279,7 @@ NSString *const AppDelegateUniversalLinkDidChangeNotification = @"AppDelegateUni
|
||||
[[UIApplication sharedApplication] vc_open:self.majorUpdateManager.learnMoreURL completionHandler:^(BOOL success) {
|
||||
if (!success)
|
||||
{
|
||||
[self showAlertWithTitle:[NSBundle mxk_localizedStringForKey:@"error"] message:NSLocalizedStringFromTable(@"room_message_unable_open_link_error_message", @"Vector", nil)];
|
||||
[self showAlertWithTitle:[MatrixKitL10n error] message:[VectorL10n roomMessageUnableOpenLinkErrorMessage]];
|
||||
}
|
||||
}];
|
||||
|
||||
@@ -4321,7 +4314,7 @@ NSString *const AppDelegateUniversalLinkDidChangeNotification = @"AppDelegateUni
|
||||
{
|
||||
if (dueToTooManyErrors)
|
||||
{
|
||||
[self showAlertWithTitle:nil message:NSLocalizedStringFromTable(@"pin_protection_kick_user_alert_message", @"Vector", nil)];
|
||||
[self showAlertWithTitle:nil message:[VectorL10n pinProtectionKickUserAlertMessage]];
|
||||
[self logoutWithConfirmation:NO completion:nil];
|
||||
}
|
||||
else
|
||||
|
||||
@@ -128,7 +128,7 @@ static const CGFloat kAuthInputContainerViewMinHeightConstraintConstant = 150.0;
|
||||
[super viewDidLoad];
|
||||
|
||||
self.mainNavigationItem.title = nil;
|
||||
self.rightBarButtonItem.title = NSLocalizedStringFromTable(@"auth_register", @"Vector", nil);
|
||||
self.rightBarButtonItem.title = [VectorL10n authRegister];
|
||||
|
||||
self.defaultHomeServerUrl = RiotSettings.shared.homeserverUrlString;
|
||||
|
||||
@@ -138,14 +138,14 @@ static const CGFloat kAuthInputContainerViewMinHeightConstraintConstant = 150.0;
|
||||
|
||||
[self.submitButton.layer setCornerRadius:5];
|
||||
self.submitButton.clipsToBounds = YES;
|
||||
[self.submitButton setTitle:NSLocalizedStringFromTable(@"auth_login", @"Vector", nil) forState:UIControlStateNormal];
|
||||
[self.submitButton setTitle:NSLocalizedStringFromTable(@"auth_login", @"Vector", nil) forState:UIControlStateHighlighted];
|
||||
[self.submitButton setTitle:[VectorL10n authLogin] forState:UIControlStateNormal];
|
||||
[self.submitButton setTitle:[VectorL10n authLogin] forState:UIControlStateHighlighted];
|
||||
self.submitButton.enabled = YES;
|
||||
|
||||
[self.skipButton.layer setCornerRadius:5];
|
||||
self.skipButton.clipsToBounds = YES;
|
||||
[self.skipButton setTitle:NSLocalizedStringFromTable(@"auth_skip", @"Vector", nil) forState:UIControlStateNormal];
|
||||
[self.skipButton setTitle:NSLocalizedStringFromTable(@"auth_skip", @"Vector", nil) forState:UIControlStateHighlighted];
|
||||
[self.skipButton setTitle:[VectorL10n authSkip] forState:UIControlStateNormal];
|
||||
[self.skipButton setTitle:[VectorL10n authSkip] forState:UIControlStateHighlighted];
|
||||
self.skipButton.enabled = YES;
|
||||
|
||||
[self.customServersTickButton setImage:[UIImage imageNamed:@"selection_untick"] forState:UIControlStateNormal];
|
||||
@@ -163,16 +163,16 @@ static const CGFloat kAuthInputContainerViewMinHeightConstraintConstant = 150.0;
|
||||
// Soft logout section
|
||||
self.softLogoutClearDataButton.layer.cornerRadius = 5;
|
||||
self.softLogoutClearDataButton.clipsToBounds = YES;
|
||||
[self.softLogoutClearDataButton setTitle:NSLocalizedStringFromTable(@"auth_softlogout_clear_data_button", @"Vector", nil) forState:UIControlStateNormal];
|
||||
[self.softLogoutClearDataButton setTitle:NSLocalizedStringFromTable(@"auth_softlogout_clear_data_button", @"Vector", nil) forState:UIControlStateHighlighted];
|
||||
[self.softLogoutClearDataButton setTitle:[VectorL10n authSoftlogoutClearDataButton] forState:UIControlStateNormal];
|
||||
[self.softLogoutClearDataButton setTitle:[VectorL10n authSoftlogoutClearDataButton] forState:UIControlStateHighlighted];
|
||||
self.softLogoutClearDataButton.enabled = YES;
|
||||
self.softLogoutClearDataContainer.hidden = YES;
|
||||
|
||||
// The view controller dismiss itself on successful login.
|
||||
self.delegate = self;
|
||||
|
||||
self.homeServerTextField.placeholder = NSLocalizedStringFromTable(@"auth_home_server_placeholder", @"Vector", nil);
|
||||
self.identityServerTextField.placeholder = NSLocalizedStringFromTable(@"auth_identity_server_placeholder", @"Vector", nil);
|
||||
self.homeServerTextField.placeholder = [VectorL10n authHomeServerPlaceholder];
|
||||
self.identityServerTextField.placeholder = [VectorL10n authIdentityServerPlaceholder];
|
||||
|
||||
self.authenticationActivityIndicatorContainerView.layer.cornerRadius = 5;
|
||||
[self.authenticationActivityIndicator addObserver:self
|
||||
@@ -252,7 +252,7 @@ static const CGFloat kAuthInputContainerViewMinHeightConstraintConstant = 150.0;
|
||||
self.authenticationActivityIndicatorContainerView.backgroundColor = ThemeService.shared.theme.baseColor;
|
||||
self.noFlowLabel.textColor = ThemeService.shared.theme.warningColor;
|
||||
|
||||
NSMutableAttributedString *forgotPasswordTitle = [[NSMutableAttributedString alloc] initWithString:NSLocalizedStringFromTable(@"auth_forgot_password", @"Vector", nil)];
|
||||
NSMutableAttributedString *forgotPasswordTitle = [[NSMutableAttributedString alloc] initWithString:[VectorL10n authForgotPassword]];
|
||||
[forgotPasswordTitle addAttribute:NSUnderlineStyleAttributeName value:@(NSUnderlineStyleSingle) range:NSMakeRange(0, forgotPasswordTitle.length)];
|
||||
[forgotPasswordTitle addAttribute:NSForegroundColorAttributeName value:ThemeService.shared.theme.tintColor range:NSMakeRange(0, forgotPasswordTitle.length)];
|
||||
[self.forgotPasswordButton setAttributedTitle:forgotPasswordTitle forState:UIControlStateNormal];
|
||||
@@ -264,7 +264,7 @@ static const CGFloat kAuthInputContainerViewMinHeightConstraintConstant = 150.0;
|
||||
|
||||
[self updateForgotPwdButtonVisibility];
|
||||
|
||||
NSAttributedString *serverOptionsTitle = [[NSAttributedString alloc] initWithString:NSLocalizedStringFromTable(@"auth_use_server_options", @"Vector", nil) attributes:@{NSForegroundColorAttributeName : ThemeService.shared.theme.textSecondaryColor, NSFontAttributeName: [UIFont systemFontOfSize:14]}];
|
||||
NSAttributedString *serverOptionsTitle = [[NSAttributedString alloc] initWithString:[VectorL10n authUseServerOptions] attributes:@{NSForegroundColorAttributeName : ThemeService.shared.theme.textSecondaryColor, NSFontAttributeName: [UIFont systemFontOfSize:14]}];
|
||||
[self.customServersTickButton setAttributedTitle:serverOptionsTitle forState:UIControlStateNormal];
|
||||
[self.customServersTickButton setAttributedTitle:serverOptionsTitle forState:UIControlStateHighlighted];
|
||||
|
||||
@@ -407,25 +407,25 @@ static const CGFloat kAuthInputContainerViewMinHeightConstraintConstant = 150.0;
|
||||
|
||||
if (authType == MXKAuthenticationTypeLogin)
|
||||
{
|
||||
[self.submitButton setTitle:NSLocalizedStringFromTable(@"auth_login", @"Vector", nil) forState:UIControlStateNormal];
|
||||
[self.submitButton setTitle:NSLocalizedStringFromTable(@"auth_login", @"Vector", nil) forState:UIControlStateHighlighted];
|
||||
[self.submitButton setTitle:[VectorL10n authLogin] forState:UIControlStateNormal];
|
||||
[self.submitButton setTitle:[VectorL10n authLogin] forState:UIControlStateHighlighted];
|
||||
}
|
||||
else if (authType == MXKAuthenticationTypeRegister)
|
||||
{
|
||||
[self.submitButton setTitle:NSLocalizedStringFromTable(@"auth_register", @"Vector", nil) forState:UIControlStateNormal];
|
||||
[self.submitButton setTitle:NSLocalizedStringFromTable(@"auth_register", @"Vector", nil) forState:UIControlStateHighlighted];
|
||||
[self.submitButton setTitle:[VectorL10n authRegister] forState:UIControlStateNormal];
|
||||
[self.submitButton setTitle:[VectorL10n authRegister] forState:UIControlStateHighlighted];
|
||||
}
|
||||
else if (authType == MXKAuthenticationTypeForgotPassword)
|
||||
{
|
||||
if (isPasswordReseted)
|
||||
{
|
||||
[self.submitButton setTitle:NSLocalizedStringFromTable(@"auth_return_to_login", @"Vector", nil) forState:UIControlStateNormal];
|
||||
[self.submitButton setTitle:NSLocalizedStringFromTable(@"auth_return_to_login", @"Vector", nil) forState:UIControlStateHighlighted];
|
||||
[self.submitButton setTitle:[VectorL10n authReturnToLogin] forState:UIControlStateNormal];
|
||||
[self.submitButton setTitle:[VectorL10n authReturnToLogin] forState:UIControlStateHighlighted];
|
||||
}
|
||||
else
|
||||
{
|
||||
[self.submitButton setTitle:NSLocalizedStringFromTable(@"auth_send_reset_email", @"Vector", nil) forState:UIControlStateNormal];
|
||||
[self.submitButton setTitle:NSLocalizedStringFromTable(@"auth_send_reset_email", @"Vector", nil) forState:UIControlStateHighlighted];
|
||||
[self.submitButton setTitle:[VectorL10n authSendResetEmail] forState:UIControlStateNormal];
|
||||
[self.submitButton setTitle:[VectorL10n authSendResetEmail] forState:UIControlStateHighlighted];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -513,7 +513,7 @@ static const CGFloat kAuthInputContainerViewMinHeightConstraintConstant = 150.0;
|
||||
if (!userInteractionEnabled)
|
||||
{
|
||||
// The right bar button is used to cancel the running request.
|
||||
self.rightBarButtonItem.title = NSLocalizedStringFromTable(@"cancel", @"Vector", nil);
|
||||
self.rightBarButtonItem.title = [VectorL10n cancel];
|
||||
|
||||
// Remove the potential back button.
|
||||
self.mainNavigationItem.leftBarButtonItem = nil;
|
||||
@@ -533,7 +533,7 @@ static const CGFloat kAuthInputContainerViewMinHeightConstraintConstant = 150.0;
|
||||
&& !self.softLogoutCredentials
|
||||
&& BuildSettings.authScreenShowRegister)
|
||||
{
|
||||
self.rightBarButtonItem.title = NSLocalizedStringFromTable(@"auth_register", @"Vector", nil);
|
||||
self.rightBarButtonItem.title = [VectorL10n authRegister];
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -544,7 +544,7 @@ static const CGFloat kAuthInputContainerViewMinHeightConstraintConstant = 150.0;
|
||||
}
|
||||
else if (self.authType == MXKAuthenticationTypeRegister)
|
||||
{
|
||||
self.rightBarButtonItem.title = NSLocalizedStringFromTable(@"auth_login", @"Vector", nil);
|
||||
self.rightBarButtonItem.title = [VectorL10n authLogin];
|
||||
|
||||
// Restore the back button
|
||||
if (authInputsview)
|
||||
@@ -555,7 +555,7 @@ static const CGFloat kAuthInputContainerViewMinHeightConstraintConstant = 150.0;
|
||||
else if (self.authType == MXKAuthenticationTypeForgotPassword)
|
||||
{
|
||||
// The right bar button is used to return to login.
|
||||
self.rightBarButtonItem.title = NSLocalizedStringFromTable(@"cancel", @"Vector", nil);
|
||||
self.rightBarButtonItem.title = [VectorL10n cancel];
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -689,23 +689,23 @@ static const CGFloat kAuthInputContainerViewMinHeightConstraintConstant = 150.0;
|
||||
// Customise the screen for soft logout
|
||||
self.customServersTickButton.hidden = YES;
|
||||
self.rightBarButtonItem.title = nil;
|
||||
self.mainNavigationItem.title = NSLocalizedStringFromTable(@"auth_softlogout_signed_out", @"Vector", nil);
|
||||
self.mainNavigationItem.title = [VectorL10n authSoftlogoutSignedOut];
|
||||
|
||||
[self showSoftLogoutClearDataContainer];
|
||||
}
|
||||
|
||||
- (void)showSoftLogoutClearDataContainer
|
||||
{
|
||||
NSMutableAttributedString *message = [[NSMutableAttributedString alloc] initWithString:NSLocalizedStringFromTable(@"auth_softlogout_clear_data", @"Vector", nil)
|
||||
NSMutableAttributedString *message = [[NSMutableAttributedString alloc] initWithString:[VectorL10n authSoftlogoutClearData]
|
||||
attributes:@{
|
||||
NSFontAttributeName: [UIFont boldSystemFontOfSize:14]
|
||||
}];
|
||||
|
||||
|
||||
[message appendAttributedString:[[NSAttributedString alloc] initWithString:@"\n\n"]];
|
||||
|
||||
|
||||
NSString *string = [NSString stringWithFormat:@"%@\n\n%@",
|
||||
NSLocalizedStringFromTable(@"auth_softlogout_clear_data_message_1", @"Vector", nil),
|
||||
NSLocalizedStringFromTable(@"auth_softlogout_clear_data_message_2", @"Vector", nil)];
|
||||
[VectorL10n authSoftlogoutClearDataMessage1],
|
||||
[VectorL10n authSoftlogoutClearDataMessage2]];
|
||||
|
||||
[message appendAttributedString:[[NSAttributedString alloc] initWithString:string
|
||||
attributes:@{
|
||||
@@ -738,19 +738,20 @@ static const CGFloat kAuthInputContainerViewMinHeightConstraintConstant = 150.0;
|
||||
[alert dismissViewControllerAnimated:NO completion:nil];
|
||||
}
|
||||
|
||||
alert = [UIAlertController alertControllerWithTitle:NSLocalizedStringFromTable(@"auth_softlogout_clear_data_sign_out_title", @"Vector", nil)
|
||||
message:NSLocalizedStringFromTable(@"auth_softlogout_clear_data_sign_out_msg", @"Vector", nil)
|
||||
alert = [UIAlertController alertControllerWithTitle:[VectorL10n authSoftlogoutClearDataSignOutTitle]
|
||||
message:[VectorL10n authSoftlogoutClearDataSignOutMsg]
|
||||
preferredStyle:UIAlertControllerStyleAlert];
|
||||
|
||||
|
||||
[alert addAction:[UIAlertAction actionWithTitle:NSLocalizedStringFromTable(@"auth_softlogout_clear_data_sign_out", @"Vector", nil) style:UIAlertActionStyleDestructive
|
||||
[alert addAction:[UIAlertAction actionWithTitle:[VectorL10n authSoftlogoutClearDataSignOut]
|
||||
style:UIAlertActionStyleDestructive
|
||||
handler:^(UIAlertAction * action)
|
||||
{
|
||||
[self clearDataAfterSoftLogout];
|
||||
}]];
|
||||
|
||||
MXWeakify(self);
|
||||
[alert addAction:[UIAlertAction actionWithTitle:[NSBundle mxk_localizedStringForKey:@"cancel"]
|
||||
[alert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n cancel]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action)
|
||||
{
|
||||
@@ -926,10 +927,10 @@ static const CGFloat kAuthInputContainerViewMinHeightConstraintConstant = 150.0;
|
||||
{
|
||||
if (!self.isIdentityServerConfigured)
|
||||
{
|
||||
UIAlertController *alert = [UIAlertController alertControllerWithTitle:[NSBundle mxk_localizedStringForKey:@"error"]
|
||||
message:NSLocalizedStringFromTable(@"auth_forgot_password_error_no_configured_identity_server", @"Vector", nil)
|
||||
UIAlertController *alert = [UIAlertController alertControllerWithTitle:[MatrixKitL10n error]
|
||||
message:[VectorL10n authForgotPasswordErrorNoConfiguredIdentityServer]
|
||||
preferredStyle:UIAlertControllerStyleAlert];
|
||||
[alert addAction:[UIAlertAction actionWithTitle:[NSBundle mxk_localizedStringForKey:@"ok"] style:UIAlertActionStyleDefault handler:nil]];
|
||||
[alert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n ok] style:UIAlertActionStyleDefault handler:nil]];
|
||||
[self presentViewController:alert animated:YES completion:nil];
|
||||
|
||||
return;
|
||||
@@ -951,12 +952,12 @@ static const CGFloat kAuthInputContainerViewMinHeightConstraintConstant = 150.0;
|
||||
else if (self.authType == MXKAuthenticationTypeLogin)
|
||||
{
|
||||
self.authType = MXKAuthenticationTypeRegister;
|
||||
self.rightBarButtonItem.title = NSLocalizedStringFromTable(@"auth_login", @"Vector", nil);
|
||||
self.rightBarButtonItem.title = [VectorL10n authLogin];
|
||||
}
|
||||
else
|
||||
{
|
||||
self.authType = MXKAuthenticationTypeLogin;
|
||||
self.rightBarButtonItem.title = NSLocalizedStringFromTable(@"auth_register", @"Vector", nil);
|
||||
self.rightBarButtonItem.title = [VectorL10n authRegister];
|
||||
}
|
||||
}
|
||||
else if (sender == self.mainNavigationItem.leftBarButtonItem)
|
||||
@@ -1003,7 +1004,7 @@ static const CGFloat kAuthInputContainerViewMinHeightConstraintConstant = 150.0;
|
||||
if ([mxError.errcode isEqualToString:kMXErrCodeStringUserInUse])
|
||||
{
|
||||
MXLogDebug(@"[AuthenticationVC] User name is already use");
|
||||
[self onFailureDuringAuthRequest:[NSError errorWithDomain:MXKAuthErrorDomain code:0 userInfo:@{NSLocalizedDescriptionKey:[NSBundle mxk_localizedStringForKey:@"auth_username_in_use"]}]];
|
||||
[self onFailureDuringAuthRequest:[NSError errorWithDomain:MXKAuthErrorDomain code:0 userInfo:@{NSLocalizedDescriptionKey:[VectorL10n authUsernameInUse]}]];
|
||||
}
|
||||
// - the server quota limits is not reached
|
||||
else if ([mxError.errcode isEqualToString:kMXErrCodeStringResourceLimitExceeded])
|
||||
@@ -1141,9 +1142,9 @@ static const CGFloat kAuthInputContainerViewMinHeightConstraintConstant = 150.0;
|
||||
[alert dismissViewControllerAnimated:NO completion:nil];
|
||||
}
|
||||
|
||||
alert = [UIAlertController alertControllerWithTitle:NSLocalizedStringFromTable(@"warning", @"Vector", nil) message:NSLocalizedStringFromTable(@"auth_add_email_and_phone_warning", @"Vector", nil) preferredStyle:UIAlertControllerStyleAlert];
|
||||
alert = [UIAlertController alertControllerWithTitle:[VectorL10n warning] message:[VectorL10n authAddEmailAndPhoneWarning] preferredStyle:UIAlertControllerStyleAlert];
|
||||
|
||||
[alert addAction:[UIAlertAction actionWithTitle:[NSBundle mxk_localizedStringForKey:@"ok"]
|
||||
[alert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n ok]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -1184,15 +1185,15 @@ static const CGFloat kAuthInputContainerViewMinHeightConstraintConstant = 150.0;
|
||||
|
||||
if (thirdPartyIdentifiersHidden)
|
||||
{
|
||||
[self.submitButton setTitle:NSLocalizedStringFromTable(@"auth_register", @"Vector", nil) forState:UIControlStateNormal];
|
||||
[self.submitButton setTitle:NSLocalizedStringFromTable(@"auth_register", @"Vector", nil) forState:UIControlStateHighlighted];
|
||||
[self.submitButton setTitle:[VectorL10n authRegister] forState:UIControlStateNormal];
|
||||
[self.submitButton setTitle:[VectorL10n authRegister] forState:UIControlStateHighlighted];
|
||||
|
||||
self.mainNavigationItem.leftBarButtonItem = nil;
|
||||
}
|
||||
else
|
||||
{
|
||||
[self.submitButton setTitle:NSLocalizedStringFromTable(@"auth_submit", @"Vector", nil) forState:UIControlStateNormal];
|
||||
[self.submitButton setTitle:NSLocalizedStringFromTable(@"auth_submit", @"Vector", nil) forState:UIControlStateHighlighted];
|
||||
[self.submitButton setTitle:[VectorL10n authSubmit] forState:UIControlStateNormal];
|
||||
[self.submitButton setTitle:[VectorL10n authSubmit] forState:UIControlStateHighlighted];
|
||||
|
||||
UIBarButtonItem *leftBarButtonItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"back_icon"] style:UIBarButtonItemStylePlain target:self action:@selector(onButtonPressed:)];
|
||||
self.mainNavigationItem.leftBarButtonItem = leftBarButtonItem;
|
||||
@@ -1566,11 +1567,11 @@ static const CGFloat kAuthInputContainerViewMinHeightConstraintConstant = 150.0;
|
||||
[self->alert dismissViewControllerAnimated:NO completion:nil];
|
||||
}
|
||||
|
||||
self->alert = [UIAlertController alertControllerWithTitle:NSLocalizedStringFromTable(@"auth_autodiscover_invalid_response", @"Vector", nil)
|
||||
self->alert = [UIAlertController alertControllerWithTitle:[VectorL10n authAutodiscoverInvalidResponse]
|
||||
message:nil
|
||||
preferredStyle:UIAlertControllerStyleAlert];
|
||||
|
||||
[self->alert addAction:[UIAlertAction actionWithTitle:[NSBundle mxk_localizedStringForKey:@"ok"]
|
||||
[self->alert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n ok]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
|
||||
@@ -294,7 +294,7 @@
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="kjJ-Tb-SIW">
|
||||
<rect key="frame" x="0.0" y="70" width="375" height="70"/>
|
||||
<subviews>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Identity Server:" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="5CT-Ht-Z3v">
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Identity server:" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="5CT-Ht-Z3v">
|
||||
<rect key="frame" x="18" y="8" width="339" height="20"/>
|
||||
<accessibility key="accessibilityConfiguration" identifier="AuthenticationVCISLabel"/>
|
||||
<constraints>
|
||||
|
||||
@@ -71,9 +71,9 @@
|
||||
_isThirdPartyIdentifierPending = NO;
|
||||
_isSingleSignOnRequired = NO;
|
||||
|
||||
self.userLoginTextField.placeholder = NSLocalizedStringFromTable(@"auth_user_id_placeholder", @"Vector", nil);
|
||||
self.repeatPasswordTextField.placeholder = NSLocalizedStringFromTable(@"auth_repeat_password_placeholder", @"Vector", nil);
|
||||
self.passWordTextField.placeholder = NSLocalizedStringFromTable(@"auth_password_placeholder", @"Vector", nil);
|
||||
self.userLoginTextField.placeholder = [VectorL10n authUserIdPlaceholder];
|
||||
self.repeatPasswordTextField.placeholder = [VectorL10n authRepeatPasswordPlaceholder];
|
||||
self.passWordTextField.placeholder = [VectorL10n authPasswordPlaceholder];
|
||||
|
||||
// Apply placeholder color
|
||||
[self customizeViewRendering];
|
||||
@@ -126,8 +126,8 @@
|
||||
|
||||
[self.ssoButton.layer setCornerRadius:5];
|
||||
self.ssoButton.clipsToBounds = YES;
|
||||
[self.ssoButton setTitle:NSLocalizedStringFromTable(@"auth_login_single_sign_on", @"Vector", nil) forState:UIControlStateNormal];
|
||||
[self.ssoButton setTitle:NSLocalizedStringFromTable(@"auth_login_single_sign_on", @"Vector", nil) forState:UIControlStateHighlighted];
|
||||
[self.ssoButton setTitle:[VectorL10n authLoginSingleSignOn] forState:UIControlStateNormal];
|
||||
[self.ssoButton setTitle:[VectorL10n authLoginSingleSignOn] forState:UIControlStateHighlighted];
|
||||
self.ssoButton.backgroundColor = ThemeService.shared.theme.tintColor;
|
||||
|
||||
if (self.userLoginTextField.placeholder)
|
||||
@@ -209,9 +209,9 @@
|
||||
self.passWordTextField.returnKeyType = UIReturnKeyDone;
|
||||
self.phoneTextField.returnKeyType = UIReturnKeyNext;
|
||||
|
||||
self.userLoginTextField.placeholder = NSLocalizedStringFromTable(@"auth_user_id_placeholder", @"Vector", nil);
|
||||
self.messageLabel.text = NSLocalizedStringFromTable(@"or", @"Vector", nil);
|
||||
self.phoneTextField.placeholder = NSLocalizedStringFromTable(@"auth_phone_placeholder", @"Vector", nil);
|
||||
self.userLoginTextField.placeholder = [VectorL10n authUserIdPlaceholder];
|
||||
self.messageLabel.text = [VectorL10n or];
|
||||
self.phoneTextField.placeholder = [VectorL10n authPhonePlaceholder];
|
||||
|
||||
self.userLoginTextField.attributedPlaceholder = [[NSAttributedString alloc]
|
||||
initWithString:self.userLoginTextField.placeholder
|
||||
@@ -291,12 +291,12 @@
|
||||
if ((!self.userLoginTextField.text.length && !nbPhoneNumber) || !self.passWordTextField.text.length)
|
||||
{
|
||||
MXLogDebug(@"[AuthInputsView] Invalid user/password");
|
||||
errorMsg = NSLocalizedStringFromTable(@"auth_invalid_login_param", @"Vector", nil);
|
||||
errorMsg = [VectorL10n authInvalidLoginParam];
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
errorMsg = [NSBundle mxk_localizedStringForKey:@"not_supported_yet"];
|
||||
errorMsg = [MatrixKitL10n notSupportedYet];
|
||||
}
|
||||
}
|
||||
else if (type == MXKAuthenticationTypeRegister)
|
||||
@@ -306,22 +306,22 @@
|
||||
if (!self.userLoginTextField.text.length)
|
||||
{
|
||||
MXLogDebug(@"[AuthInputsView] Invalid user name");
|
||||
errorMsg = NSLocalizedStringFromTable(@"auth_invalid_user_name", @"Vector", nil);
|
||||
errorMsg = [VectorL10n authInvalidUserName];
|
||||
}
|
||||
else if (!self.passWordTextField.text.length)
|
||||
{
|
||||
MXLogDebug(@"[AuthInputsView] Missing Passwords");
|
||||
errorMsg = NSLocalizedStringFromTable(@"auth_missing_password", @"Vector", nil);
|
||||
errorMsg = [VectorL10n authMissingPassword];
|
||||
}
|
||||
else if (self.passWordTextField.text.length < 6)
|
||||
{
|
||||
MXLogDebug(@"[AuthInputsView] Invalid Passwords");
|
||||
errorMsg = NSLocalizedStringFromTable(@"auth_invalid_password", @"Vector", nil);
|
||||
errorMsg = [VectorL10n authInvalidPassword];
|
||||
}
|
||||
else if ([self.repeatPasswordTextField.text isEqualToString:self.passWordTextField.text] == NO)
|
||||
{
|
||||
MXLogDebug(@"[AuthInputsView] Passwords don't match");
|
||||
errorMsg = NSLocalizedStringFromTable(@"auth_password_dont_match", @"Vector", nil);
|
||||
errorMsg = [VectorL10n authPasswordDontMatch];
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -332,7 +332,7 @@
|
||||
if ([regex firstMatchInString:user options:0 range:NSMakeRange(0, user.length)] == nil)
|
||||
{
|
||||
MXLogDebug(@"[AuthInputsView] Invalid user name");
|
||||
errorMsg = NSLocalizedStringFromTable(@"auth_invalid_user_name", @"Vector", nil);
|
||||
errorMsg = [VectorL10n authInvalidUserName];
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -344,12 +344,12 @@
|
||||
if (self.areAllThirdPartyIdentifiersRequired)
|
||||
{
|
||||
MXLogDebug(@"[AuthInputsView] Missing email");
|
||||
errorMsg = NSLocalizedStringFromTable(@"auth_missing_email", @"Vector", nil);
|
||||
errorMsg = [VectorL10n authMissingEmail];
|
||||
}
|
||||
else if ([self isFlowSupported:kMXLoginFlowTypeMSISDN] && !self.phoneTextField.text.length && self.isThirdPartyIdentifierRequired)
|
||||
{
|
||||
MXLogDebug(@"[AuthInputsView] Missing email or phone number");
|
||||
errorMsg = NSLocalizedStringFromTable(@"auth_missing_email_or_phone", @"Vector", nil);
|
||||
errorMsg = [VectorL10n authMissingEmailOrPhone];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -361,7 +361,7 @@
|
||||
if (self.areAllThirdPartyIdentifiersRequired)
|
||||
{
|
||||
MXLogDebug(@"[AuthInputsView] Missing phone");
|
||||
errorMsg = NSLocalizedStringFromTable(@"auth_missing_phone", @"Vector", nil);
|
||||
errorMsg = [VectorL10n authMissingPhone];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -374,7 +374,7 @@
|
||||
if (![MXTools isEmailAddress:self.emailTextField.text])
|
||||
{
|
||||
MXLogDebug(@"[AuthInputsView] Invalid email");
|
||||
errorMsg = NSLocalizedStringFromTable(@"auth_invalid_email", @"Vector", nil);
|
||||
errorMsg = [VectorL10n authInvalidEmail];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -384,7 +384,7 @@
|
||||
if (![[NBPhoneNumberUtil sharedInstance] isValidNumber:nbPhoneNumber])
|
||||
{
|
||||
MXLogDebug(@"[AuthInputsView] Invalid phone number");
|
||||
errorMsg = NSLocalizedStringFromTable(@"auth_invalid_phone", @"Vector", nil);
|
||||
errorMsg = [VectorL10n authInvalidPhone];
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -423,9 +423,9 @@
|
||||
[inputsAlert dismissViewControllerAnimated:NO completion:nil];
|
||||
}
|
||||
|
||||
inputsAlert = [UIAlertController alertControllerWithTitle:[NSBundle mxk_localizedStringForKey:@"error"] message:errorMsg preferredStyle:UIAlertControllerStyleAlert];
|
||||
inputsAlert = [UIAlertController alertControllerWithTitle:[MatrixKitL10n error] message:errorMsg preferredStyle:UIAlertControllerStyleAlert];
|
||||
|
||||
[inputsAlert addAction:[UIAlertAction actionWithTitle:[NSBundle mxk_localizedStringForKey:@"ok"]
|
||||
[inputsAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n ok]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -543,7 +543,7 @@
|
||||
callback(nil, [NSError errorWithDomain:MXKAuthErrorDomain
|
||||
code:0
|
||||
userInfo:@{
|
||||
NSLocalizedDescriptionKey:[NSBundle mxk_localizedStringForKey:@"auth_phone_is_required"]
|
||||
NSLocalizedDescriptionKey:[VectorL10n authPhoneIsRequired]
|
||||
}]);
|
||||
return;
|
||||
}
|
||||
@@ -602,13 +602,13 @@
|
||||
|
||||
if ([mxError.errcode isEqualToString:kMXErrCodeStringThreePIDInUse])
|
||||
{
|
||||
userInfo[NSLocalizedDescriptionKey] = NSLocalizedStringFromTable(@"auth_phone_in_use", @"Vector", nil);
|
||||
userInfo[@"error"] = NSLocalizedStringFromTable(@"auth_phone_in_use", @"Vector", nil);
|
||||
userInfo[NSLocalizedDescriptionKey] = [VectorL10n authPhoneInUse];
|
||||
userInfo[@"error"] = [VectorL10n authPhoneInUse];
|
||||
}
|
||||
else
|
||||
{
|
||||
userInfo[NSLocalizedDescriptionKey] = NSLocalizedStringFromTable(@"auth_untrusted_id_server", @"Vector", nil);
|
||||
userInfo[@"error"] = NSLocalizedStringFromTable(@"auth_untrusted_id_server", @"Vector", nil);
|
||||
userInfo[NSLocalizedDescriptionKey] = [VectorL10n authUntrustedIdServer];
|
||||
userInfo[@"error"] = [VectorL10n authUntrustedIdServer];
|
||||
}
|
||||
|
||||
error = [NSError errorWithDomain:error.domain code:error.code userInfo:userInfo];
|
||||
@@ -652,7 +652,7 @@
|
||||
callback(nil, [NSError errorWithDomain:MXKAuthErrorDomain
|
||||
code:0
|
||||
userInfo:@{
|
||||
NSLocalizedDescriptionKey:[NSBundle mxk_localizedStringForKey:@"auth_email_is_required"]
|
||||
NSLocalizedDescriptionKey:[VectorL10n authEmailIsRequired]
|
||||
}]);
|
||||
return;
|
||||
}
|
||||
@@ -693,7 +693,7 @@
|
||||
|
||||
[self hideInputsContainer];
|
||||
|
||||
self.messageLabel.text = NSLocalizedStringFromTable(@"auth_email_validation_message", @"Vector", nil);
|
||||
self.messageLabel.text = [VectorL10n authEmailValidationMessage];
|
||||
self.messageLabel.hidden = NO;
|
||||
|
||||
callback(parameters, nil);
|
||||
@@ -728,13 +728,13 @@
|
||||
|
||||
if ([mxError.errcode isEqualToString:kMXErrCodeStringThreePIDInUse])
|
||||
{
|
||||
userInfo[NSLocalizedDescriptionKey] = NSLocalizedStringFromTable(@"auth_email_in_use", @"Vector", nil);
|
||||
userInfo[@"error"] = NSLocalizedStringFromTable(@"auth_email_in_use", @"Vector", nil);
|
||||
userInfo[NSLocalizedDescriptionKey] = [VectorL10n authEmailInUse];
|
||||
userInfo[@"error"] = [VectorL10n authEmailInUse];
|
||||
}
|
||||
else
|
||||
{
|
||||
userInfo[NSLocalizedDescriptionKey] = NSLocalizedStringFromTable(@"auth_untrusted_id_server", @"Vector", nil);
|
||||
userInfo[@"error"] = NSLocalizedStringFromTable(@"auth_untrusted_id_server", @"Vector", nil);
|
||||
userInfo[NSLocalizedDescriptionKey] = [VectorL10n authUntrustedIdServer];
|
||||
userInfo[@"error"] = [VectorL10n authUntrustedIdServer];
|
||||
}
|
||||
|
||||
error = [NSError errorWithDomain:error.domain code:error.code userInfo:userInfo];
|
||||
@@ -774,7 +774,7 @@
|
||||
else
|
||||
{
|
||||
MXLogDebug(@"[AuthInputsView] reCaptcha stage failed");
|
||||
callback(nil, [NSError errorWithDomain:MXKAuthErrorDomain code:0 userInfo:@{NSLocalizedDescriptionKey:[NSBundle mxk_localizedStringForKey:@"not_supported_yet"]}]);
|
||||
callback(nil, [NSError errorWithDomain:MXKAuthErrorDomain code:0 userInfo:@{NSLocalizedDescriptionKey:[MatrixKitL10n notSupportedYet]}]);
|
||||
}
|
||||
|
||||
}];
|
||||
@@ -875,7 +875,7 @@
|
||||
else
|
||||
{
|
||||
MXLogDebug(@"[AuthInputsView] reCaptcha stage failed");
|
||||
callback (nil, [NSError errorWithDomain:MXKAuthErrorDomain code:0 userInfo:@{NSLocalizedDescriptionKey:[NSBundle mxk_localizedStringForKey:@"not_supported_yet"]}]);
|
||||
callback (nil, [NSError errorWithDomain:MXKAuthErrorDomain code:0 userInfo:@{NSLocalizedDescriptionKey:[MatrixKitL10n notSupportedYet]}]);
|
||||
}
|
||||
}];
|
||||
}
|
||||
@@ -913,7 +913,7 @@
|
||||
}
|
||||
|
||||
MXLogDebug(@"[AuthInputsView] updateAuthSessionWithCompletedStages failed");
|
||||
callback (nil, [NSError errorWithDomain:MXKAuthErrorDomain code:0 userInfo:@{NSLocalizedDescriptionKey:[NSBundle mxk_localizedStringForKey:@"not_supported_yet"]}]);
|
||||
callback (nil, [NSError errorWithDomain:MXKAuthErrorDomain code:0 userInfo:@{NSLocalizedDescriptionKey:[MatrixKitL10n notSupportedYet]}]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1064,15 +1064,14 @@
|
||||
self.messageLabel.textColor = ThemeService.shared.theme.textPrimaryColor;
|
||||
self.messageLabel.hidden = NO;
|
||||
|
||||
NSMutableAttributedString *message = [[NSMutableAttributedString alloc] initWithString:NSLocalizedStringFromTable(@"auth_softlogout_sign_in", @"Vector", nil)
|
||||
NSMutableAttributedString *message = [[NSMutableAttributedString alloc] initWithString:[VectorL10n authSoftlogoutSignIn]
|
||||
attributes:@{
|
||||
NSFontAttributeName: [UIFont boldSystemFontOfSize:14]
|
||||
}];
|
||||
|
||||
[message appendAttributedString:[[NSAttributedString alloc] initWithString:@"\n\n"]];
|
||||
|
||||
NSString *string = [NSString stringWithFormat:NSLocalizedStringFromTable(@"auth_softlogout_reason", @"Vector", nil),
|
||||
softLogoutCredentials.homeServerName, userDisplayname, softLogoutCredentials.userId];
|
||||
NSString *string = [VectorL10n authSoftlogoutReason:softLogoutCredentials.homeServerName :userDisplayname :softLogoutCredentials.userId];
|
||||
[message appendAttributedString:[[NSAttributedString alloc] initWithString:string
|
||||
attributes:@{
|
||||
NSFontAttributeName: [UIFont systemFontOfSize:14]
|
||||
@@ -1081,7 +1080,7 @@
|
||||
if (keyBackupNeeded)
|
||||
{
|
||||
[message appendAttributedString:[[NSAttributedString alloc] initWithString:@"\n\n"]];
|
||||
string = NSLocalizedStringFromTable(@"auth_softlogout_recover_encryption_keys", @"Vector", nil);
|
||||
string = [VectorL10n authSoftlogoutRecoverEncryptionKeys];
|
||||
[message appendAttributedString:[[NSAttributedString alloc] initWithString:string
|
||||
attributes:@{
|
||||
NSFontAttributeName: [UIFont systemFontOfSize:14]
|
||||
@@ -1215,7 +1214,7 @@
|
||||
self.passWordTextField.returnKeyType = UIReturnKeyNext;
|
||||
|
||||
self.userLoginTextField.attributedPlaceholder = [[NSAttributedString alloc]
|
||||
initWithString:NSLocalizedStringFromTable(@"auth_user_name_placeholder", @"Vector", nil)
|
||||
initWithString:[VectorL10n authUserNamePlaceholder]
|
||||
attributes:@{NSForegroundColorAttributeName: ThemeService.shared.theme.placeholderTextColor}];
|
||||
|
||||
self.userLoginContainer.hidden = NO;
|
||||
@@ -1232,11 +1231,11 @@
|
||||
{
|
||||
if (self.isThirdPartyIdentifierRequired)
|
||||
{
|
||||
self.emailTextField.placeholder = NSLocalizedStringFromTable(@"auth_email_placeholder", @"Vector", nil);
|
||||
self.emailTextField.placeholder = [VectorL10n authEmailPlaceholder];
|
||||
}
|
||||
else
|
||||
{
|
||||
self.emailTextField.placeholder = NSLocalizedStringFromTable(@"auth_optional_email_placeholder", @"Vector", nil);
|
||||
self.emailTextField.placeholder = [VectorL10n authOptionalEmailPlaceholder];
|
||||
}
|
||||
|
||||
self.emailTextField.attributedPlaceholder = [[NSAttributedString alloc]
|
||||
@@ -1246,7 +1245,7 @@
|
||||
self.emailContainer.hidden = NO;
|
||||
|
||||
self.messageLabel.hidden = NO;
|
||||
self.messageLabel.text = NSLocalizedStringFromTable(@"auth_add_email_message_2", @"Vector", nil);
|
||||
self.messageLabel.text = [VectorL10n authAddEmailMessage2];
|
||||
|
||||
lastViewContainer = self.emailContainer;
|
||||
}
|
||||
@@ -1257,11 +1256,11 @@
|
||||
|
||||
if (self.isThirdPartyIdentifierRequired)
|
||||
{
|
||||
self.phoneTextField.placeholder = NSLocalizedStringFromTable(@"auth_phone_placeholder", @"Vector", nil);
|
||||
self.phoneTextField.placeholder = [VectorL10n authPhonePlaceholder];
|
||||
}
|
||||
else
|
||||
{
|
||||
self.phoneTextField.placeholder = NSLocalizedStringFromTable(@"auth_optional_phone_placeholder", @"Vector", nil);
|
||||
self.phoneTextField.placeholder = [VectorL10n authOptionalPhonePlaceholder];
|
||||
}
|
||||
|
||||
self.phoneTextField.attributedPlaceholder = [[NSAttributedString alloc]
|
||||
@@ -1275,14 +1274,14 @@
|
||||
self.emailTextField.returnKeyType = UIReturnKeyNext;
|
||||
|
||||
self.phoneContainerTopConstraint.constant = 50;
|
||||
self.messageLabel.text = NSLocalizedStringFromTable(@"auth_add_email_phone_message_2", @"Vector", nil);
|
||||
self.messageLabel.text = [VectorL10n authAddEmailPhoneMessage2];
|
||||
}
|
||||
else
|
||||
{
|
||||
self.phoneContainerTopConstraint.constant = 0;
|
||||
|
||||
self.messageLabel.hidden = NO;
|
||||
self.messageLabel.text = NSLocalizedStringFromTable(@"auth_add_phone_message_2", @"Vector", nil);
|
||||
self.messageLabel.text = [VectorL10n authAddPhoneMessage2];
|
||||
}
|
||||
|
||||
lastViewContainer = self.phoneContainer;
|
||||
@@ -1486,7 +1485,7 @@
|
||||
[self hideInputsContainer];
|
||||
|
||||
self.messageLabel.hidden = NO;
|
||||
self.messageLabel.text = NSLocalizedStringFromTable(@"auth_recaptcha_message", @"Vector", nil);
|
||||
self.messageLabel.text = [VectorL10n authRecaptchaMessage];
|
||||
|
||||
self.recaptchaContainer.hidden = NO;
|
||||
self.currentLastContainer = self.recaptchaContainer;
|
||||
@@ -1670,9 +1669,9 @@
|
||||
[inputsAlert dismissViewControllerAnimated:NO completion:nil];
|
||||
}
|
||||
|
||||
inputsAlert = [UIAlertController alertControllerWithTitle:NSLocalizedStringFromTable(@"auth_msisdn_validation_title", @"Vector", nil) message:NSLocalizedStringFromTable(@"auth_msisdn_validation_message", @"Vector", nil) preferredStyle:UIAlertControllerStyleAlert];
|
||||
inputsAlert = [UIAlertController alertControllerWithTitle:[VectorL10n authMsisdnValidationTitle] message:[VectorL10n authMsisdnValidationMessage] preferredStyle:UIAlertControllerStyleAlert];
|
||||
|
||||
[inputsAlert addAction:[UIAlertAction actionWithTitle:[NSBundle mxk_localizedStringForKey:@"cancel"]
|
||||
[inputsAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n cancel]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -1697,7 +1696,7 @@
|
||||
|
||||
}];
|
||||
|
||||
[inputsAlert addAction:[UIAlertAction actionWithTitle:[NSBundle mxk_localizedStringForKey:@"submit"]
|
||||
[inputsAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n submit]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -1769,13 +1768,13 @@
|
||||
}
|
||||
else
|
||||
{
|
||||
title = [NSBundle mxk_localizedStringForKey:@"error"];
|
||||
title = [MatrixKitL10n error];
|
||||
}
|
||||
}
|
||||
|
||||
self->inputsAlert = [UIAlertController alertControllerWithTitle:title message:msg preferredStyle:UIAlertControllerStyleAlert];
|
||||
|
||||
[inputsAlert addAction:[UIAlertAction actionWithTitle:[NSBundle mxk_localizedStringForKey:@"ok"]
|
||||
[inputsAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n ok]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -1820,7 +1819,7 @@
|
||||
[self hideInputsContainer];
|
||||
|
||||
self.messageLabel.hidden = NO;
|
||||
self.messageLabel.text = NSLocalizedStringFromTable(@"auth_accept_policies", @"Vector", nil);
|
||||
self.messageLabel.text = [VectorL10n authAcceptPolicies];
|
||||
|
||||
self.termsView.hidden = NO;
|
||||
self.currentLastContainer = self.termsView;
|
||||
|
||||
@@ -52,13 +52,13 @@
|
||||
{
|
||||
[super awakeFromNib];
|
||||
|
||||
[self.nextStepButton setTitle:[NSBundle mxk_localizedStringForKey:@"auth_reset_password_next_step_button"] forState:UIControlStateNormal];
|
||||
[self.nextStepButton setTitle:[NSBundle mxk_localizedStringForKey:@"auth_reset_password_next_step_button"] forState:UIControlStateHighlighted];
|
||||
[self.nextStepButton setTitle:[VectorL10n authResetPasswordNextStepButton] forState:UIControlStateNormal];
|
||||
[self.nextStepButton setTitle:[VectorL10n authResetPasswordNextStepButton] forState:UIControlStateHighlighted];
|
||||
self.nextStepButton.enabled = YES;
|
||||
|
||||
self.emailTextField.placeholder = NSLocalizedStringFromTable(@"auth_email_placeholder", @"Vector", nil);
|
||||
self.passWordTextField.placeholder = NSLocalizedStringFromTable(@"auth_new_password_placeholder", @"Vector", nil);
|
||||
self.repeatPasswordTextField.placeholder = NSLocalizedStringFromTable(@"auth_repeat_new_password_placeholder", @"Vector", nil);
|
||||
self.emailTextField.placeholder = [VectorL10n authEmailPlaceholder];
|
||||
self.passWordTextField.placeholder = [VectorL10n authNewPasswordPlaceholder];
|
||||
self.repeatPasswordTextField.placeholder = [VectorL10n authRepeatNewPasswordPlaceholder];
|
||||
|
||||
// Apply placeholder color
|
||||
[self customizeViewRendering];
|
||||
@@ -166,22 +166,22 @@
|
||||
if (!self.emailTextField.text.length)
|
||||
{
|
||||
MXLogDebug(@"[ForgotPasswordInputsView] Missing email");
|
||||
errorMsg = NSLocalizedStringFromTable(@"auth_reset_password_missing_email", @"Vector", nil);
|
||||
errorMsg = [VectorL10n authResetPasswordMissingEmail];
|
||||
}
|
||||
else if (!self.passWordTextField.text.length)
|
||||
{
|
||||
MXLogDebug(@"[ForgotPasswordInputsView] Missing Passwords");
|
||||
errorMsg = NSLocalizedStringFromTable(@"auth_reset_password_missing_password", @"Vector", nil);
|
||||
errorMsg = [VectorL10n authResetPasswordMissingPassword];
|
||||
}
|
||||
else if (self.passWordTextField.text.length < 6)
|
||||
{
|
||||
MXLogDebug(@"[ForgotPasswordInputsView] Invalid Passwords");
|
||||
errorMsg = NSLocalizedStringFromTable(@"auth_invalid_password", @"Vector", nil);
|
||||
errorMsg = [VectorL10n authInvalidPassword];
|
||||
}
|
||||
else if ([self.repeatPasswordTextField.text isEqualToString:self.passWordTextField.text] == NO)
|
||||
{
|
||||
MXLogDebug(@"[ForgotPasswordInputsView] Passwords don't match");
|
||||
errorMsg = NSLocalizedStringFromTable(@"auth_password_dont_match", @"Vector", nil);
|
||||
errorMsg = [VectorL10n authPasswordDontMatch];
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -189,7 +189,7 @@
|
||||
if ([MXTools isEmailAddress:self.emailTextField.text] == NO)
|
||||
{
|
||||
MXLogDebug(@"[ForgotPasswordInputsView] Invalid email");
|
||||
errorMsg = NSLocalizedStringFromTable(@"auth_invalid_email", @"Vector", nil);
|
||||
errorMsg = [VectorL10n authInvalidEmail];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -213,9 +213,9 @@
|
||||
[inputsAlert dismissViewControllerAnimated:NO completion:nil];
|
||||
}
|
||||
|
||||
inputsAlert = [UIAlertController alertControllerWithTitle:[NSBundle mxk_localizedStringForKey:@"error"] message:errorMsg preferredStyle:UIAlertControllerStyleAlert];
|
||||
inputsAlert = [UIAlertController alertControllerWithTitle:[MatrixKitL10n error] message:errorMsg preferredStyle:UIAlertControllerStyleAlert];
|
||||
|
||||
[inputsAlert addAction:[UIAlertAction actionWithTitle:[NSBundle mxk_localizedStringForKey:@"ok"]
|
||||
[inputsAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n ok]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -272,7 +272,7 @@
|
||||
|
||||
[strongSelf hideInputsContainer];
|
||||
|
||||
strongSelf.messageLabel.text = [NSString stringWithFormat:NSLocalizedStringFromTable(@"auth_reset_password_email_validation_message", @"Vector", nil), strongSelf.emailTextField.text];
|
||||
strongSelf.messageLabel.text = [VectorL10n authResetPasswordEmailValidationMessage:strongSelf.emailTextField.text];
|
||||
|
||||
strongSelf.messageLabel.hidden = NO;
|
||||
|
||||
@@ -298,9 +298,9 @@
|
||||
// Translate the potential MX error.
|
||||
MXError *mxError = [[MXError alloc] initWithNSError:error];
|
||||
if (mxError && [mxError.errcode isEqualToString:kMXErrCodeStringThreePIDNotFound])
|
||||
errorMessage = NSLocalizedStringFromTable(@"auth_email_not_found", @"Vector", nil);
|
||||
errorMessage = [VectorL10n authEmailNotFound];
|
||||
else if (mxError && [mxError.errcode isEqualToString:kMXErrCodeStringServerNotTrusted])
|
||||
errorMessage = NSLocalizedStringFromTable(@"auth_untrusted_id_server", @"Vector", nil);
|
||||
errorMessage = [VectorL10n authUntrustedIdServer];
|
||||
else if (error.userInfo[@"error"])
|
||||
errorMessage = error.userInfo[@"error"];
|
||||
else
|
||||
@@ -315,9 +315,9 @@
|
||||
[self->inputsAlert dismissViewControllerAnimated:NO completion:nil];
|
||||
}
|
||||
|
||||
self->inputsAlert = [UIAlertController alertControllerWithTitle:[NSBundle mxk_localizedStringForKey:@"error"] message:errorMessage preferredStyle:UIAlertControllerStyleAlert];
|
||||
self->inputsAlert = [UIAlertController alertControllerWithTitle:[MatrixKitL10n error] message:errorMessage preferredStyle:UIAlertControllerStyleAlert];
|
||||
|
||||
[self->inputsAlert addAction:[UIAlertAction actionWithTitle:[NSBundle mxk_localizedStringForKey:@"ok"]
|
||||
[self->inputsAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n ok]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -349,7 +349,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
callback(nil, [NSError errorWithDomain:MXKAuthErrorDomain code:0 userInfo:@{NSLocalizedDescriptionKey:[NSBundle mxk_localizedStringForKey:@"not_supported_yet"]}]);
|
||||
callback(nil, [NSError errorWithDomain:MXKAuthErrorDomain code:0 userInfo:@{NSLocalizedDescriptionKey:[MatrixKitL10n notSupportedYet]}]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -381,7 +381,7 @@
|
||||
|
||||
[self hideInputsContainer];
|
||||
|
||||
self.messageLabel.text = [NSString stringWithFormat:NSLocalizedStringFromTable(@"auth_reset_password_success_message", @"Vector", nil), self.emailTextField.text];
|
||||
self.messageLabel.text = [VectorL10n authResetPasswordSuccessMessage];
|
||||
|
||||
self.messageLabel.hidden = NO;
|
||||
}
|
||||
@@ -400,7 +400,7 @@
|
||||
// Reset UI by hidding all items
|
||||
[self hideInputsContainer];
|
||||
|
||||
self.messageLabel.text = NSLocalizedStringFromTable(@"auth_reset_password_message", @"Vector", nil);
|
||||
self.messageLabel.text = [VectorL10n authResetPasswordMessage];
|
||||
self.messageLabel.hidden = NO;
|
||||
|
||||
self.emailContainer.hidden = NO;
|
||||
@@ -422,7 +422,7 @@
|
||||
failure([NSError errorWithDomain:MXKAuthErrorDomain
|
||||
code:0
|
||||
userInfo:@{
|
||||
NSLocalizedDescriptionKey:[NSBundle mxk_localizedStringForKey:@"auth_reset_password_error_is_required"]
|
||||
NSLocalizedDescriptionKey:[VectorL10n authResetPasswordErrorIsRequired]
|
||||
}]);
|
||||
}
|
||||
else
|
||||
|
||||
@@ -67,8 +67,8 @@ final class TermsView: UIView, NibOwnerLoadable, UITableViewDelegate, UITableVie
|
||||
tableView.register(TableViewCellWithCheckBoxAndLabel.nib(), forCellReuseIdentifier: TableViewCellWithCheckBoxAndLabel.defaultReuseIdentifier())
|
||||
|
||||
acceptButton.clipsToBounds = true
|
||||
acceptButton.setTitle(NSLocalizedString("accept", tableName: "Vector", comment: ""), for: .normal)
|
||||
acceptButton.setTitle(NSLocalizedString("accept", tableName: "Vector", comment: ""), for: .highlighted)
|
||||
acceptButton.setTitle(VectorL10n.accept, for: .normal)
|
||||
acceptButton.setTitle(VectorL10n.accept, for: .highlighted)
|
||||
|
||||
acceptButton.layer.masksToBounds = true
|
||||
acceptButton.layer.cornerRadius = 5
|
||||
|
||||
@@ -71,9 +71,9 @@
|
||||
{
|
||||
[super viewDidLoad];
|
||||
|
||||
_logsDescriptionLabel.text = NSLocalizedStringFromTable(@"bug_report_logs_description", @"Vector", nil);
|
||||
_sendLogsLabel.text = NSLocalizedStringFromTable(@"bug_report_send_logs", @"Vector", nil);
|
||||
_sendScreenshotLabel.text = NSLocalizedStringFromTable(@"bug_report_send_screenshot", @"Vector", nil);
|
||||
_logsDescriptionLabel.text = [VectorL10n bugReportLogsDescription];
|
||||
_sendLogsLabel.text = [VectorL10n bugReportSendLogs];
|
||||
_sendScreenshotLabel.text = [VectorL10n bugReportSendScreenshot];
|
||||
|
||||
_containerView.layer.cornerRadius = 20;
|
||||
|
||||
@@ -83,21 +83,21 @@
|
||||
|
||||
if (_reportCrash)
|
||||
{
|
||||
_titleLabel.text = NSLocalizedStringFromTable(@"bug_crash_report_title", @"Vector", nil);
|
||||
_descriptionLabel.text = NSLocalizedStringFromTable(@"bug_crash_report_description", @"Vector", nil);
|
||||
_titleLabel.text = [VectorL10n bugCrashReportTitle];
|
||||
_descriptionLabel.text = [VectorL10n bugCrashReportDescription];
|
||||
}
|
||||
else
|
||||
{
|
||||
_titleLabel.text = NSLocalizedStringFromTable(@"bug_report_title", @"Vector", nil);
|
||||
_descriptionLabel.text = NSLocalizedStringFromTable(@"bug_report_description", @"Vector", nil);
|
||||
_titleLabel.text = [VectorL10n bugReportTitle];
|
||||
_descriptionLabel.text = [VectorL10n bugReportDescription];
|
||||
}
|
||||
|
||||
[_cancelButton setTitle:[NSBundle mxk_localizedStringForKey:@"cancel"] forState:UIControlStateNormal];
|
||||
[_cancelButton setTitle:[NSBundle mxk_localizedStringForKey:@"cancel"] forState:UIControlStateHighlighted];
|
||||
[_sendButton setTitle:NSLocalizedStringFromTable(@"bug_report_send", @"Vector", nil) forState:UIControlStateNormal];
|
||||
[_sendButton setTitle:NSLocalizedStringFromTable(@"bug_report_send", @"Vector", nil) forState:UIControlStateHighlighted];
|
||||
[_backgroundButton setTitle:NSLocalizedStringFromTable(@"bug_report_background_mode", @"Vector", nil) forState:UIControlStateNormal];
|
||||
[_backgroundButton setTitle:NSLocalizedStringFromTable(@"bug_report_background_mode", @"Vector", nil) forState:UIControlStateHighlighted];
|
||||
[_cancelButton setTitle:[MatrixKitL10n cancel] forState:UIControlStateNormal];
|
||||
[_cancelButton setTitle:[MatrixKitL10n cancel] forState:UIControlStateHighlighted];
|
||||
[_sendButton setTitle:[VectorL10n bugReportSend] forState:UIControlStateNormal];
|
||||
[_sendButton setTitle:[VectorL10n bugReportSend] forState:UIControlStateHighlighted];
|
||||
[_backgroundButton setTitle:[VectorL10n bugReportBackgroundMode] forState:UIControlStateNormal];
|
||||
[_backgroundButton setTitle:[VectorL10n bugReportBackgroundMode] forState:UIControlStateHighlighted];
|
||||
|
||||
// Do not send empty report
|
||||
_sendButton.enabled = NO;;
|
||||
@@ -363,7 +363,7 @@
|
||||
NSString *versionLabel = bugReportRestClient.version;
|
||||
|
||||
// If this is not the app store version, be more accurate on the build origin
|
||||
if ([build isEqualToString:NSLocalizedStringFromTable(@"settings_config_no_build_info", @"Vector", nil)])
|
||||
if ([build isEqualToString:[VectorL10n settingsConfigNoBuildInfo]])
|
||||
{
|
||||
// This is a debug session from Xcode
|
||||
versionLabel = [versionLabel stringByAppendingString:@"-debug"];
|
||||
@@ -400,11 +400,11 @@
|
||||
switch (state)
|
||||
{
|
||||
case MXBugReportStateProgressZipping:
|
||||
self.sendingLabel.text = NSLocalizedStringFromTable(@"bug_report_progress_zipping", @"Vector", nil);
|
||||
self.sendingLabel.text = [VectorL10n bugReportProgressZipping];
|
||||
break;
|
||||
|
||||
case MXBugReportStateProgressUploading:
|
||||
self.sendingLabel.text = NSLocalizedStringFromTable(@"bug_report_progress_uploading", @"Vector", nil);
|
||||
self.sendingLabel.text = [VectorL10n bugReportProgressUploading];
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
@@ -205,9 +205,9 @@ CallAudioRouteMenuViewDelegate>
|
||||
|
||||
NSString *callInfo;
|
||||
if (self.mxCall.isVideoCall)
|
||||
callInfo = NSLocalizedStringFromTable(@"call_incoming_video", @"Vector", nil);
|
||||
callInfo = [VectorL10n callIncomingVideo];
|
||||
else
|
||||
callInfo = NSLocalizedStringFromTable(@"call_incoming_voice", @"Vector", nil);
|
||||
callInfo = [VectorL10n callIncomingVoice];
|
||||
|
||||
IncomingCallView *incomingCallView = [[IncomingCallView alloc] initWithCallerAvatar:self.peer.avatarUrl
|
||||
mediaManager:self.mainSession.mediaManager
|
||||
@@ -308,11 +308,11 @@ CallAudioRouteMenuViewDelegate>
|
||||
|
||||
[currentAlert dismissViewControllerAnimated:NO completion:nil];
|
||||
|
||||
currentAlert = [UIAlertController alertControllerWithTitle:[NSBundle mxk_localizedStringForKey:@"unknown_devices_alert_title"]
|
||||
message:[NSBundle mxk_localizedStringForKey:@"unknown_devices_alert"]
|
||||
currentAlert = [UIAlertController alertControllerWithTitle:[VectorL10n unknownDevicesAlertTitle]
|
||||
message:[VectorL10n unknownDevicesAlert]
|
||||
preferredStyle:UIAlertControllerStyleAlert];
|
||||
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[NSBundle mxk_localizedStringForKey:@"unknown_devices_verify"]
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n unknownDevicesVerify]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -362,7 +362,7 @@ CallAudioRouteMenuViewDelegate>
|
||||
}]];
|
||||
|
||||
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[NSBundle mxk_localizedStringForKey:(call.isIncoming ? @"unknown_devices_answer_anyway":@"unknown_devices_call_anyway")]
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:(call.isIncoming ? [VectorL10n unknownDevicesAnswerAnyway] : [VectorL10n unknownDevicesCallAnyway])
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -682,11 +682,11 @@ CallAudioRouteMenuViewDelegate>
|
||||
|
||||
MXWeakify(self);
|
||||
|
||||
self->currentAlert = [UIAlertController alertControllerWithTitle:[NSBundle mxk_localizedStringForKey:@"call_transfer_error_title"]
|
||||
message:[NSBundle mxk_localizedStringForKey:@"call_transfer_error_message"]
|
||||
self->currentAlert = [UIAlertController alertControllerWithTitle:[VectorL10n callTransferErrorTitle]
|
||||
message:[VectorL10n callTransferErrorMessage]
|
||||
preferredStyle:UIAlertControllerStyleAlert];
|
||||
|
||||
[self->currentAlert addAction:[UIAlertAction actionWithTitle:[NSBundle mxk_localizedStringForKey:@"ok"]
|
||||
[self->currentAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n ok]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
|
||||
@@ -55,7 +55,7 @@ class CallAudioRouteView: UIView {
|
||||
titleLabel.text = route.name
|
||||
case .loudSpeakers:
|
||||
iconImageView.image = Asset.Images.callAudioRouteSpeakers.image
|
||||
titleLabel.text = Bundle.mxk_localizedString(forKey: "call_more_actions_audio_use_device")
|
||||
titleLabel.text = MatrixKitL10n.callMoreActionsAudioUseDevice
|
||||
case .externalWired, .externalBluetooth, .externalCar:
|
||||
iconImageView.image = Asset.Images.callAudioRouteHeadphones.image
|
||||
titleLabel.text = route.name
|
||||
|
||||
@@ -99,7 +99,7 @@ static const CGFloat kButtonSize = 80.0;
|
||||
self.answerTitleLabel.backgroundColor = ThemeService.shared.theme.backgroundColor;
|
||||
self.answerTitleLabel.textColor = answerButtonBorderColor;
|
||||
self.answerTitleLabel.font = [UIFont systemFontOfSize:18.0 weight:UIFontWeightRegular];
|
||||
self.answerTitleLabel.text = NSLocalizedStringFromTable(@"accept", @"Vector", nil);
|
||||
self.answerTitleLabel.text = [VectorL10n accept];
|
||||
|
||||
UIColor *rejectButtonBorderColor = ThemeService.shared.theme.warningColor;
|
||||
|
||||
@@ -113,7 +113,7 @@ static const CGFloat kButtonSize = 80.0;
|
||||
self.rejectTitleLabel.backgroundColor = ThemeService.shared.theme.backgroundColor;
|
||||
self.rejectTitleLabel.textColor = rejectButtonBorderColor;
|
||||
self.rejectTitleLabel.font = [UIFont systemFontOfSize:18.0 weight:UIFontWeightRegular];
|
||||
self.rejectTitleLabel.text = NSLocalizedStringFromTable(@"decline", @"Vector", nil);
|
||||
self.rejectTitleLabel.text = [VectorL10n decline];
|
||||
|
||||
[self setupLayout];
|
||||
}
|
||||
|
||||
@@ -16,6 +16,8 @@
|
||||
|
||||
#import "MatrixContactsDataSource.h"
|
||||
|
||||
#import "Riot-Swift.h"
|
||||
|
||||
@implementation MatrixContactsDataSource
|
||||
|
||||
- (instancetype)init
|
||||
@@ -31,11 +33,11 @@
|
||||
{
|
||||
if (section == filteredLocalContactsSection)
|
||||
{
|
||||
return NSLocalizedStringFromTable(@"contacts_address_book_section", @"Vector", nil);
|
||||
return [VectorL10n contactsAddressBookSection];
|
||||
}
|
||||
else
|
||||
{
|
||||
return NSLocalizedStringFromTable(@"call_transfer_contacts_all", @"Vector", nil);
|
||||
return [VectorL10n callTransferContactsAll];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -29,10 +29,10 @@ final class CameraAccessAlertPresenter {
|
||||
|
||||
let alert = UIAlertController(title: VectorL10n.camera, message: VectorL10n.cameraAccessNotGranted(appDisplayName), preferredStyle: .alert)
|
||||
|
||||
let cancelActionTitle = Bundle.mxk_localizedString(forKey: "ok")
|
||||
let cancelActionTitle = MatrixKitL10n.ok
|
||||
let cancelAction = UIAlertAction(title: cancelActionTitle, style: .cancel)
|
||||
|
||||
let settingsActionTitle = Bundle.mxk_localizedString(forKey: "settings")
|
||||
let settingsActionTitle = MatrixKitL10n.settings
|
||||
let settingsAction = UIAlertAction(title: settingsActionTitle, style: .default, handler: { _ in
|
||||
UIApplication.shared.open(settingsURL, options: [:], completionHandler: { (succeed) in
|
||||
if !succeed {
|
||||
|
||||
@@ -20,6 +20,12 @@
|
||||
#import "MXRoom+Riot.h"
|
||||
#import "MatrixSDK-Swift.h"
|
||||
|
||||
#ifdef IS_SHARE_EXTENSION
|
||||
#import "RiotShareExtension-Swift.h"
|
||||
#else
|
||||
#import "Riot-Swift.h"
|
||||
#endif
|
||||
|
||||
@implementation RecentCellData
|
||||
// trick to hide the mother class property as it is readonly one.
|
||||
// self.roomDisplayname returns this value instead of the mother class.
|
||||
@@ -33,7 +39,7 @@
|
||||
if (notificationCount > 1000)
|
||||
{
|
||||
CGFloat value = notificationCount / 1000.0;
|
||||
stringValue = [NSString stringWithFormat:NSLocalizedStringFromTable(@"large_badge_value_k_format", @"Vector", nil), value];
|
||||
stringValue = [VectorL10n largeBadgeValueKFormat:value];
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -61,7 +67,7 @@
|
||||
roomDisplayname = self.spaceChildInfo ? self.spaceChildInfo.name: self.roomSummary.displayname;
|
||||
if (!roomDisplayname.length)
|
||||
{
|
||||
roomDisplayname = [NSBundle mxk_localizedStringForKey:@"room_displayname_empty_room"];
|
||||
roomDisplayname = [MatrixKitL10n roomDisplaynameEmptyRoom];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -421,9 +421,12 @@ NSString *const kRecentsDataSourceTapOnDirectoryServerChange = @"kRecentsDataSou
|
||||
if ((aState == MXKDataSourceStateReady) && dataSource.mxSession.myUser.userId)
|
||||
{
|
||||
// Register the room tags updates to refresh the favorites order
|
||||
MXWeakify(self);
|
||||
id roomTagsListener = [dataSource.mxSession listenToEventsOfTypes:@[kMXEventTypeStringRoomTag]
|
||||
onEvent:^(MXEvent *event, MXTimelineDirection direction, id customObject) {
|
||||
|
||||
MXStrongifyAndReturnIfNil(self);
|
||||
|
||||
// Consider only live event
|
||||
if (direction == MXTimelineDirectionForwards)
|
||||
{
|
||||
@@ -614,12 +617,12 @@ NSString *const kRecentsDataSourceTapOnDirectoryServerChange = @"kRecentsDataSou
|
||||
if (section == favoritesSection)
|
||||
{
|
||||
count = self.favoriteCellDataArray.count;
|
||||
title = NSLocalizedStringFromTable(@"room_recents_favourites_section", @"Vector", nil);
|
||||
title = [VectorL10n roomRecentsFavouritesSection];
|
||||
}
|
||||
else if (section == peopleSection)
|
||||
{
|
||||
count = self.peopleCellDataArray.count;
|
||||
title = NSLocalizedStringFromTable(@"room_recents_people_section", @"Vector", nil);
|
||||
title = [VectorL10n roomRecentsPeopleSection];
|
||||
}
|
||||
else if (section == conversationSection)
|
||||
{
|
||||
@@ -627,26 +630,26 @@ NSString *const kRecentsDataSourceTapOnDirectoryServerChange = @"kRecentsDataSou
|
||||
|
||||
if (_recentsDataSourceMode == RecentsDataSourceModePeople)
|
||||
{
|
||||
title = NSLocalizedStringFromTable(@"people_conversation_section", @"Vector", nil);
|
||||
title = [VectorL10n peopleConversationSection];
|
||||
}
|
||||
else
|
||||
{
|
||||
title = NSLocalizedStringFromTable(@"room_recents_conversations_section", @"Vector", nil);
|
||||
title = [VectorL10n roomRecentsConversationsSection];
|
||||
}
|
||||
}
|
||||
else if (section == directorySection)
|
||||
{
|
||||
title = NSLocalizedStringFromTable(@"room_recents_directory_section", @"Vector", nil);
|
||||
title = [VectorL10n roomRecentsDirectorySection];
|
||||
}
|
||||
else if (section == lowPrioritySection)
|
||||
{
|
||||
count = self.lowPriorityCellDataArray.count;
|
||||
title = NSLocalizedStringFromTable(@"room_recents_low_priority_section", @"Vector", nil);
|
||||
title = [VectorL10n roomRecentsLowPrioritySection];
|
||||
}
|
||||
else if (section == serverNoticeSection)
|
||||
{
|
||||
count = self.serverNoticeCellDataArray.count;
|
||||
title = NSLocalizedStringFromTable(@"room_recents_server_notice_section", @"Vector", nil);
|
||||
title = [VectorL10n roomRecentsServerNoticeSection];
|
||||
}
|
||||
else if (section == invitesSection)
|
||||
{
|
||||
@@ -654,17 +657,17 @@ NSString *const kRecentsDataSourceTapOnDirectoryServerChange = @"kRecentsDataSou
|
||||
|
||||
if (_recentsDataSourceMode == RecentsDataSourceModePeople)
|
||||
{
|
||||
title = NSLocalizedStringFromTable(@"people_invites_section", @"Vector", nil);
|
||||
title = [VectorL10n peopleInvitesSection];
|
||||
}
|
||||
else
|
||||
{
|
||||
title = NSLocalizedStringFromTable(@"room_recents_invites_section", @"Vector", nil);
|
||||
title = [VectorL10n roomRecentsInvitesSection];
|
||||
}
|
||||
}
|
||||
else if (section == suggestedRoomsSection)
|
||||
{
|
||||
count = self.suggestedRoomCellDataArray.count;
|
||||
title = NSLocalizedStringFromTable(@"room_recents_suggested_rooms_section", @"Vector", nil);
|
||||
title = [VectorL10n roomRecentsSuggestedRoomsSection];
|
||||
}
|
||||
|
||||
if (count)
|
||||
@@ -737,7 +740,7 @@ NSString *const kRecentsDataSourceTapOnDirectoryServerChange = @"kRecentsDataSou
|
||||
if (count > 1000)
|
||||
{
|
||||
CGFloat value = count / 1000.0;
|
||||
missedNotifAndUnreadBadgeLabel.text = [NSString stringWithFormat:NSLocalizedStringFromTable(@"large_badge_value_k_format", @"Vector", nil), value];
|
||||
missedNotifAndUnreadBadgeLabel.text = [VectorL10n largeBadgeValueKFormat:value];
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -932,15 +935,15 @@ NSString *const kRecentsDataSourceTapOnDirectoryServerChange = @"kRecentsDataSou
|
||||
// Check whether a search session is in progress
|
||||
if (self.searchPatternsList)
|
||||
{
|
||||
tableViewCell.textLabel.text = NSLocalizedStringFromTable(@"search_no_result", @"Vector", nil);
|
||||
tableViewCell.textLabel.text = [VectorL10n searchNoResult];
|
||||
}
|
||||
else if (_recentsDataSourceMode == RecentsDataSourceModePeople || indexPath.section == peopleSection)
|
||||
{
|
||||
tableViewCell.textLabel.text = NSLocalizedStringFromTable(@"people_no_conversation", @"Vector", nil);
|
||||
tableViewCell.textLabel.text = [VectorL10n peopleNoConversation];
|
||||
}
|
||||
else
|
||||
{
|
||||
tableViewCell.textLabel.text = NSLocalizedStringFromTable(@"room_recents_no_conversation", @"Vector", nil);
|
||||
tableViewCell.textLabel.text = [VectorL10n roomRecentsNoConversation];
|
||||
}
|
||||
|
||||
return tableViewCell;
|
||||
|
||||
@@ -124,7 +124,7 @@ NSString *const RecentsViewControllerDataReadyNotification = @"RecentsViewContro
|
||||
tableSearchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0, 0, 600, 44)];
|
||||
tableSearchBar.autoresizingMask = UIViewAutoresizingFlexibleWidth;
|
||||
tableSearchBar.showsCancelButton = NO;
|
||||
tableSearchBar.placeholder = NSLocalizedStringFromTable(@"search_default_placeholder", @"Vector", nil);
|
||||
tableSearchBar.placeholder = [VectorL10n searchDefaultPlaceholder];
|
||||
tableSearchBar.delegate = self;
|
||||
|
||||
displayedSectionHeaders = [NSMutableArray array];
|
||||
@@ -165,7 +165,7 @@ NSString *const RecentsViewControllerDataReadyNotification = @"RecentsViewContro
|
||||
}];
|
||||
|
||||
self.recentsSearchBar.autocapitalizationType = UITextAutocapitalizationTypeNone;
|
||||
self.recentsSearchBar.placeholder = NSLocalizedStringFromTable(@"search_default_placeholder", @"Vector", nil);
|
||||
self.recentsSearchBar.placeholder = [VectorL10n searchDefaultPlaceholder];
|
||||
|
||||
// Observe user interface theme change.
|
||||
kThemeServiceDidChangeThemeNotificationObserver = [[NSNotificationCenter defaultCenter] addObserverForName:kThemeServiceDidChangeThemeNotification object:nil queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification *notif) {
|
||||
@@ -522,14 +522,14 @@ NSString *const RecentsViewControllerDataReadyNotification = @"RecentsViewContro
|
||||
{
|
||||
// minging kludge until https://matrix.org/jira/browse/SYN-678 is fixed
|
||||
// 'Error when trying to join an empty room should be more explicit'
|
||||
msg = [NSBundle mxk_localizedStringForKey:@"room_error_join_failed_empty_room"];
|
||||
msg = [MatrixKitL10n roomErrorJoinFailedEmptyRoom];
|
||||
}
|
||||
|
||||
[self->currentAlert dismissViewControllerAnimated:NO completion:nil];
|
||||
|
||||
self->currentAlert = [UIAlertController alertControllerWithTitle:[NSBundle mxk_localizedStringForKey:@"room_error_join_failed_title"] message:msg preferredStyle:UIAlertControllerStyleAlert];
|
||||
self->currentAlert = [UIAlertController alertControllerWithTitle:[MatrixKitL10n roomErrorJoinFailedTitle] message:msg preferredStyle:UIAlertControllerStyleAlert];
|
||||
|
||||
[self->currentAlert addAction:[UIAlertAction actionWithTitle:[NSBundle mxk_localizedStringForKey:@"ok"]
|
||||
[self->currentAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n ok]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
MXStrongifyAndReturnIfNil(self);
|
||||
@@ -1162,13 +1162,13 @@ NSString *const RecentsViewControllerDataReadyNotification = @"RecentsViewContro
|
||||
NSString *title, *message;
|
||||
if ([self.mainSession roomWithRoomId:currentRoomId].isDirect)
|
||||
{
|
||||
title = NSLocalizedStringFromTable(@"room_participants_leave_prompt_title_for_dm", @"Vector", nil);
|
||||
message = NSLocalizedStringFromTable(@"room_participants_leave_prompt_msg_for_dm", @"Vector", nil);
|
||||
title = [VectorL10n roomParticipantsLeavePromptTitleForDm];
|
||||
message = [VectorL10n roomParticipantsLeavePromptMsgForDm];
|
||||
}
|
||||
else
|
||||
{
|
||||
title = NSLocalizedStringFromTable(@"room_participants_leave_prompt_title", @"Vector", nil);
|
||||
message = NSLocalizedStringFromTable(@"room_participants_leave_prompt_msg", @"Vector", nil);
|
||||
title = [VectorL10n roomParticipantsLeavePromptTitle];
|
||||
message = [VectorL10n roomParticipantsLeavePromptMsg];
|
||||
}
|
||||
|
||||
// confirm leave
|
||||
@@ -1176,7 +1176,7 @@ NSString *const RecentsViewControllerDataReadyNotification = @"RecentsViewContro
|
||||
message:message
|
||||
preferredStyle:UIAlertControllerStyleAlert];
|
||||
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[NSBundle mxk_localizedStringForKey:@"cancel"]
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n cancel]
|
||||
style:UIAlertActionStyleCancel
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -1188,7 +1188,7 @@ NSString *const RecentsViewControllerDataReadyNotification = @"RecentsViewContro
|
||||
|
||||
}]];
|
||||
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:NSLocalizedStringFromTable(@"leave", @"Vector", nil)
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n leave]
|
||||
style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) {
|
||||
|
||||
if (weakSelf)
|
||||
@@ -1809,7 +1809,7 @@ NSString *const RecentsViewControllerDataReadyNotification = @"RecentsViewContro
|
||||
|
||||
currentAlert = [UIAlertController alertControllerWithTitle:nil message:nil preferredStyle:UIAlertControllerStyleActionSheet];
|
||||
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:NSLocalizedStringFromTable(@"room_recents_start_chat_with", @"Vector", nil)
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n roomRecentsStartChatWith]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -1823,7 +1823,7 @@ NSString *const RecentsViewControllerDataReadyNotification = @"RecentsViewContro
|
||||
|
||||
}]];
|
||||
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:NSLocalizedStringFromTable(@"room_recents_create_empty_room", @"Vector", nil)
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n roomRecentsCreateEmptyRoom]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -1837,7 +1837,7 @@ NSString *const RecentsViewControllerDataReadyNotification = @"RecentsViewContro
|
||||
|
||||
}]];
|
||||
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:NSLocalizedStringFromTable(@"room_recents_join_room", @"Vector", nil)
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n roomRecentsJoinRoom]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -1854,7 +1854,7 @@ NSString *const RecentsViewControllerDataReadyNotification = @"RecentsViewContro
|
||||
if (self.mainSession.callManager.supportsPSTN)
|
||||
{
|
||||
[currentAlert addAction:[UIAlertAction
|
||||
actionWithTitle:NSLocalizedStringFromTable(@"room_open_dialpad", @"Vector", nil)
|
||||
actionWithTitle:[VectorL10n roomOpenDialpad]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -1869,7 +1869,7 @@ NSString *const RecentsViewControllerDataReadyNotification = @"RecentsViewContro
|
||||
}]];
|
||||
}
|
||||
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[NSBundle mxk_localizedStringForKey:@"cancel"]
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n cancel]
|
||||
style:UIAlertActionStyleCancel
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -2259,7 +2259,7 @@ NSString *const RecentsViewControllerDataReadyNotification = @"RecentsViewContro
|
||||
else if ([MXTools isMatrixRoomAlias:roomIdOrAlias])
|
||||
{
|
||||
// Room preview doesn't support room alias
|
||||
[[AppDelegate theDelegate] showAlertWithTitle:[NSBundle mxk_localizedStringForKey:@"error"] message:NSLocalizedStringFromTable(@"room_recents_unknown_room_error_message", @"Vector", nil)];
|
||||
[[AppDelegate theDelegate] showAlertWithTitle:[MatrixKitL10n error] message:[VectorL10n roomRecentsUnknownRoomErrorMessage]];
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -2284,7 +2284,7 @@ NSString *const RecentsViewControllerDataReadyNotification = @"RecentsViewContro
|
||||
}];
|
||||
self.roomsDirectoryCoordinatorBridgePresenter = nil;
|
||||
} else {
|
||||
[[AppDelegate theDelegate] showAlertWithTitle:[NSBundle mxk_localizedStringForKey:@"error"] message:NSLocalizedStringFromTable(@"room_recents_unknown_room_error_message", @"Vector", nil)];
|
||||
[[AppDelegate theDelegate] showAlertWithTitle:[MatrixKitL10n error] message:[VectorL10n roomRecentsUnknownRoomErrorMessage]];
|
||||
}
|
||||
}];
|
||||
}
|
||||
|
||||
@@ -97,11 +97,11 @@
|
||||
{
|
||||
if (section == self.groupInvitesSection)
|
||||
{
|
||||
sectionTitle = NSLocalizedStringFromTable(@"group_invite_section", @"Vector", nil);
|
||||
sectionTitle = [VectorL10n groupInviteSection];
|
||||
}
|
||||
else if (section == self.joinedGroupsSection)
|
||||
{
|
||||
sectionTitle = NSLocalizedStringFromTable(@"group_section", @"Vector", nil);
|
||||
sectionTitle = [VectorL10n groupSection];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -69,7 +69,7 @@
|
||||
tableSearchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0, 0, 600, 44)];
|
||||
tableSearchBar.autoresizingMask = UIViewAutoresizingFlexibleWidth;
|
||||
tableSearchBar.showsCancelButton = NO;
|
||||
tableSearchBar.placeholder = NSLocalizedStringFromTable(@"search_default_placeholder", @"Vector", nil);
|
||||
tableSearchBar.placeholder = [VectorL10n searchDefaultPlaceholder];
|
||||
tableSearchBar.delegate = self;
|
||||
|
||||
// Set itself as delegate by default.
|
||||
@@ -107,7 +107,7 @@
|
||||
}];
|
||||
|
||||
self.groupsSearchBar.autocapitalizationType = UITextAutocapitalizationTypeNone;
|
||||
self.groupsSearchBar.placeholder = NSLocalizedStringFromTable(@"search_default_placeholder", @"Vector", nil);
|
||||
self.groupsSearchBar.placeholder = [VectorL10n searchDefaultPlaceholder];
|
||||
|
||||
// @TODO: Add programmatically the (+) button.
|
||||
// plusButtonImageView = [self vc_addFABWithImage:[UIImage imageNamed:@"plus_floating_action"]
|
||||
@@ -214,7 +214,7 @@
|
||||
|
||||
}];
|
||||
|
||||
[AppDelegate theDelegate].masterTabBarController.navigationItem.title = NSLocalizedStringFromTable(@"title_groups", @"Vector", nil);
|
||||
[AppDelegate theDelegate].masterTabBarController.navigationItem.title = [VectorL10n titleGroups];
|
||||
[AppDelegate theDelegate].masterTabBarController.tabBar.tintColor = ThemeService.shared.theme.tintColor;
|
||||
}
|
||||
|
||||
@@ -567,7 +567,7 @@
|
||||
|
||||
currentAlert = [UIAlertController alertControllerWithTitle:nil message:nil preferredStyle:UIAlertControllerStyleActionSheet];
|
||||
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[NSBundle mxk_localizedStringForKey:@"cancel"]
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n cancel]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
|
||||
@@ -81,10 +81,10 @@
|
||||
{
|
||||
[super viewDidLoad];
|
||||
|
||||
[self.leftButton setTitle:NSLocalizedStringFromTable(@"decline", @"Vector", nil) forState:UIControlStateNormal];
|
||||
[self.leftButton setTitle:NSLocalizedStringFromTable(@"decline", @"Vector", nil) forState:UIControlStateHighlighted];
|
||||
[self.rightButton setTitle:NSLocalizedStringFromTable(@"join", @"Vector", nil) forState:UIControlStateNormal];
|
||||
[self.rightButton setTitle:NSLocalizedStringFromTable(@"join", @"Vector", nil) forState:UIControlStateHighlighted];
|
||||
[self.leftButton setTitle:[VectorL10n decline] forState:UIControlStateNormal];
|
||||
[self.leftButton setTitle:[VectorL10n decline] forState:UIControlStateHighlighted];
|
||||
[self.rightButton setTitle:[VectorL10n join] forState:UIControlStateNormal];
|
||||
[self.rightButton setTitle:[VectorL10n join] forState:UIControlStateHighlighted];
|
||||
|
||||
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTapGesture:)];
|
||||
[tap setNumberOfTouchesRequired:1];
|
||||
@@ -382,12 +382,12 @@
|
||||
|
||||
if (_group.users.totalUserCountEstimate == 1)
|
||||
{
|
||||
_membersCountLabel.text = NSLocalizedStringFromTable(@"group_home_one_member_format", @"Vector", nil);
|
||||
_membersCountLabel.text = [VectorL10n groupHomeOneMemberFormat];
|
||||
_membersCountContainer.hidden = NO;
|
||||
}
|
||||
else if (_group.users.totalUserCountEstimate > 1)
|
||||
{
|
||||
_membersCountLabel.text = [NSString stringWithFormat:NSLocalizedStringFromTable(@"group_home_multi_members_format", @"Vector", nil), _group.users.totalUserCountEstimate];
|
||||
_membersCountLabel.text = [VectorL10n groupHomeMultiMembersFormat:_group.users.totalUserCountEstimate];
|
||||
_membersCountContainer.hidden = NO;
|
||||
}
|
||||
else
|
||||
@@ -398,12 +398,12 @@
|
||||
|
||||
if (_group.rooms.totalRoomCountEstimate == 1)
|
||||
{
|
||||
_roomsCountLabel.text = NSLocalizedStringFromTable(@"group_home_one_room_format", @"Vector", nil);
|
||||
_roomsCountLabel.text = [VectorL10n groupHomeOneRoomFormat];
|
||||
_roomsCountContainer.hidden = NO;
|
||||
}
|
||||
else if (_group.rooms.totalRoomCountEstimate > 1)
|
||||
{
|
||||
_roomsCountLabel.text = [NSString stringWithFormat:NSLocalizedStringFromTable(@"group_home_multi_rooms_format", @"Vector", nil), _group.rooms.totalRoomCountEstimate];
|
||||
_roomsCountLabel.text = [VectorL10n groupHomeMultiRoomsFormat:_group.rooms.totalRoomCountEstimate];
|
||||
_roomsCountContainer.hidden = NO;
|
||||
}
|
||||
else
|
||||
@@ -432,7 +432,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
self.inviteLabel.text = [NSString stringWithFormat:NSLocalizedStringFromTable(@"group_invitation_format", @"Vector", nil), inviter];
|
||||
self.inviteLabel.text = [VectorL10n groupInvitationFormat:inviter];
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -744,7 +744,7 @@
|
||||
avatarFullScreenView.stretchable = YES;
|
||||
|
||||
MXWeakify(self);
|
||||
[avatarFullScreenView setRightButtonTitle:[NSBundle mxk_localizedStringForKey:@"ok"] handler:^(MXKImageView* imageView, NSString* buttonTitle) {
|
||||
[avatarFullScreenView setRightButtonTitle:[MatrixKitL10n ok] handler:^(MXKImageView* imageView, NSString* buttonTitle) {
|
||||
|
||||
MXStrongifyAndReturnIfNil(self);
|
||||
[avatarFullScreenView dismissSelection];
|
||||
|
||||
@@ -111,7 +111,7 @@
|
||||
|
||||
[NSLayoutConstraint activateConstraints:@[_searchBarTopConstraint, _tableViewBottomConstraint]];
|
||||
|
||||
_searchBarView.placeholder = NSLocalizedStringFromTable(@"group_participants_filter_members", @"Vector", nil);
|
||||
_searchBarView.placeholder = [VectorL10n groupParticipantsFilterMembers];
|
||||
_searchBarView.returnKeyType = UIReturnKeyDone;
|
||||
_searchBarView.autocapitalizationType = UITextAutocapitalizationTypeNone;
|
||||
|
||||
@@ -550,7 +550,7 @@
|
||||
}
|
||||
|
||||
[contactsPickerViewController showSearch:YES];
|
||||
contactsPickerViewController.searchBar.placeholder = NSLocalizedStringFromTable(@"group_participants_invite_another_user", @"Vector", nil);
|
||||
contactsPickerViewController.searchBar.placeholder = [VectorL10n groupParticipantsInviteAnotherUser];
|
||||
|
||||
// Apply the search pattern if any
|
||||
if (currentSearchText)
|
||||
@@ -832,7 +832,7 @@
|
||||
// Update power level label
|
||||
if (contact.mxGroupUser.isPrivileged)
|
||||
{
|
||||
powerLevelText = NSLocalizedStringFromTable(@"room_member_power_level_short_admin", @"Vector", nil);
|
||||
powerLevelText = [VectorL10n roomMemberPowerLevelShortAdmin];
|
||||
}
|
||||
|
||||
participantCell.powerLevelLabel.text = powerLevelText;
|
||||
@@ -923,7 +923,7 @@
|
||||
sectionHeader.mxkLabel.textColor = ThemeService.shared.theme.textPrimaryColor;
|
||||
sectionHeader.mxkLabel.font = [UIFont preferredFontForTextStyle:UIFontTextStyleHeadline];
|
||||
|
||||
sectionHeader.mxkLabel.text = NSLocalizedStringFromTable(@"group_participants_invited_section", @"Vector", nil);
|
||||
sectionHeader.mxkLabel.text = [VectorL10n groupParticipantsInvitedSection];
|
||||
}
|
||||
|
||||
return sectionHeader;
|
||||
@@ -1052,11 +1052,11 @@
|
||||
if (contact && [contact.mxGroupUser.userId isEqualToString:self.mxSession.myUser.userId])
|
||||
{
|
||||
// Leave this group?
|
||||
currentAlert = [UIAlertController alertControllerWithTitle:NSLocalizedStringFromTable(@"group_participants_leave_prompt_title", @"Vector", nil)
|
||||
message:NSLocalizedStringFromTable(@"group_participants_leave_prompt_msg", @"Vector", nil)
|
||||
currentAlert = [UIAlertController alertControllerWithTitle:[VectorL10n groupParticipantsLeavePromptTitle]
|
||||
message:[VectorL10n groupParticipantsLeavePromptMsg]
|
||||
preferredStyle:UIAlertControllerStyleAlert];
|
||||
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[NSBundle mxk_localizedStringForKey:@"cancel"]
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n cancel]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -1068,7 +1068,7 @@
|
||||
|
||||
}]];
|
||||
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:NSLocalizedStringFromTable(@"leave", @"Vector", nil)
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n leave]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -1102,12 +1102,12 @@
|
||||
NSString *memberUserId = contact.mxGroupUser.userId;
|
||||
|
||||
// Kick ?
|
||||
NSString *promptMsg = [NSString stringWithFormat:NSLocalizedStringFromTable(@"group_participants_remove_prompt_msg", @"Vector", nil), (contact.mxGroupUser.displayname.length ? contact.mxGroupUser.displayname : memberUserId)];
|
||||
currentAlert = [UIAlertController alertControllerWithTitle:NSLocalizedStringFromTable(@"group_participants_remove_prompt_title", @"Vector", nil)
|
||||
NSString *promptMsg = [VectorL10n groupParticipantsRemovePromptMsg:(contact.mxGroupUser.displayname.length ? contact.mxGroupUser.displayname : memberUserId)];
|
||||
currentAlert = [UIAlertController alertControllerWithTitle:[VectorL10n groupParticipantsRemovePromptTitle]
|
||||
message:promptMsg
|
||||
preferredStyle:UIAlertControllerStyleAlert];
|
||||
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[NSBundle mxk_localizedStringForKey:@"cancel"]
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n cancel]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -1119,7 +1119,7 @@
|
||||
|
||||
}]];
|
||||
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:NSLocalizedStringFromTable(@"remove", @"Vector", nil)
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n remove]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -1130,7 +1130,7 @@
|
||||
|
||||
MXLogDebug(@"[GroupParticipantsVC] Kick %@ failed", memberUserId);
|
||||
// Alert user
|
||||
[[AppDelegate theDelegate] showErrorAsAlert:[NSError errorWithDomain:@"GroupDomain" code:0 userInfo:@{NSLocalizedDescriptionKey:[NSBundle mxk_localizedStringForKey:@"not_supported_yet"]}]];
|
||||
[[AppDelegate theDelegate] showErrorAsAlert:[NSError errorWithDomain:@"GroupDomain" code:0 userInfo:@{NSLocalizedDescriptionKey:[MatrixKitL10n notSupportedYet]}]];
|
||||
}
|
||||
|
||||
}]];
|
||||
@@ -1154,12 +1154,12 @@
|
||||
}
|
||||
|
||||
// Invite ?
|
||||
NSString *promptMsg = [NSString stringWithFormat:NSLocalizedStringFromTable(@"group_participants_invite_prompt_msg", @"Vector", nil), contact.displayName];
|
||||
currentAlert = [UIAlertController alertControllerWithTitle:NSLocalizedStringFromTable(@"group_participants_invite_prompt_title", @"Vector", nil)
|
||||
NSString *promptMsg = [VectorL10n groupParticipantsInvitePromptMsg:contact.displayName];
|
||||
currentAlert = [UIAlertController alertControllerWithTitle:[VectorL10n groupParticipantsInvitePromptTitle]
|
||||
message:promptMsg
|
||||
preferredStyle:UIAlertControllerStyleAlert];
|
||||
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[NSBundle mxk_localizedStringForKey:@"cancel"]
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n cancel]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -1171,7 +1171,7 @@
|
||||
|
||||
}]];
|
||||
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:NSLocalizedStringFromTable(@"invite", @"Vector", nil)
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n invite]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -1188,7 +1188,7 @@
|
||||
participantId = identifiers.firstObject;
|
||||
|
||||
MXLogDebug(@"[GroupParticipantsVC] Invite %@ failed", participantId);
|
||||
[[AppDelegate theDelegate] showErrorAsAlert:[NSError errorWithDomain:@"GroupDomain" code:0 userInfo:@{NSLocalizedDescriptionKey:[NSBundle mxk_localizedStringForKey:@"not_supported_yet"]}]];
|
||||
[[AppDelegate theDelegate] showErrorAsAlert:[NSError errorWithDomain:@"GroupDomain" code:0 userInfo:@{NSLocalizedDescriptionKey:[MatrixKitL10n notSupportedYet]}]];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -97,7 +97,7 @@
|
||||
|
||||
[NSLayoutConstraint activateConstraints:@[_searchBarTopConstraint, _tableViewBottomConstraint]];
|
||||
|
||||
_searchBarView.placeholder = NSLocalizedStringFromTable(@"group_rooms_filter_rooms", @"Vector", nil);
|
||||
_searchBarView.placeholder = [VectorL10n groupRoomsFilterRooms];
|
||||
_searchBarView.returnKeyType = UIReturnKeyDone;
|
||||
_searchBarView.autocapitalizationType = UITextAutocapitalizationTypeNone;
|
||||
|
||||
|
||||
@@ -83,7 +83,7 @@
|
||||
NSMutableArray* titles = [[NSMutableArray alloc] init];
|
||||
|
||||
// home tab
|
||||
[titles addObject: NSLocalizedStringFromTable(@"group_details_home", @"Vector", nil)];
|
||||
[titles addObject:[VectorL10n groupDetailsHome]];
|
||||
groupHomeViewController = [GroupHomeViewController groupHomeViewController];
|
||||
if (_group)
|
||||
{
|
||||
@@ -92,7 +92,7 @@
|
||||
[viewControllers addObject:groupHomeViewController];
|
||||
|
||||
// People tab
|
||||
[titles addObject: NSLocalizedStringFromTable(@"group_details_people", @"Vector", nil)];
|
||||
[titles addObject:[VectorL10n groupDetailsPeople]];
|
||||
groupParticipantsViewController = [GroupParticipantsViewController groupParticipantsViewController];
|
||||
if (_group)
|
||||
{
|
||||
@@ -101,7 +101,7 @@
|
||||
[viewControllers addObject:groupParticipantsViewController];
|
||||
|
||||
// Rooms tab
|
||||
[titles addObject: NSLocalizedStringFromTable(@"group_details_rooms", @"Vector", nil)];
|
||||
[titles addObject:[VectorL10n groupDetailsRooms]];
|
||||
groupRoomsViewController = [GroupRoomsViewController groupRoomsViewController];
|
||||
if (_group)
|
||||
{
|
||||
@@ -111,7 +111,7 @@
|
||||
|
||||
if (!self.title.length)
|
||||
{
|
||||
self.title = NSLocalizedStringFromTable(@"group_details_title", @"Vector", nil);
|
||||
self.title = [VectorL10n groupDetailsTitle];
|
||||
}
|
||||
|
||||
[self initWithTitles:titles viewControllers:viewControllers defaultSelected:0];
|
||||
|
||||
@@ -36,14 +36,14 @@ NSString *const kGroupInviteTableViewCellRoomKey = @"kGroupInviteTableViewCellRo
|
||||
|
||||
[self.leftButton.layer setCornerRadius:5];
|
||||
self.leftButton.clipsToBounds = YES;
|
||||
[self.leftButton setTitle:NSLocalizedStringFromTable(@"decline", @"Vector", nil) forState:UIControlStateNormal];
|
||||
[self.leftButton setTitle:NSLocalizedStringFromTable(@"decline", @"Vector", nil) forState:UIControlStateHighlighted];
|
||||
[self.leftButton setTitle:[VectorL10n decline] forState:UIControlStateNormal];
|
||||
[self.leftButton setTitle:[VectorL10n decline] forState:UIControlStateHighlighted];
|
||||
[self.leftButton addTarget:self action:@selector(onDeclinePressed:) forControlEvents:UIControlEventTouchUpInside];
|
||||
|
||||
[self.rightButton.layer setCornerRadius:5];
|
||||
self.rightButton.clipsToBounds = YES;
|
||||
[self.rightButton setTitle:NSLocalizedStringFromTable(@"preview", @"Vector", nil) forState:UIControlStateNormal];
|
||||
[self.rightButton setTitle:NSLocalizedStringFromTable(@"preview", @"Vector", nil) forState:UIControlStateHighlighted];
|
||||
[self.rightButton setTitle:[VectorL10n preview] forState:UIControlStateNormal];
|
||||
[self.rightButton setTitle:[VectorL10n preview] forState:UIControlStateHighlighted];
|
||||
[self.rightButton addTarget:self action:@selector(onPreviewPressed:) forControlEvents:UIControlEventTouchUpInside];
|
||||
|
||||
[self.noticeBadgeView.layer setCornerRadius:10];
|
||||
|
||||
@@ -615,11 +615,11 @@
|
||||
if (indexPath.section == filteredMatrixContactsSection &&
|
||||
(_userDirectoryState == ContactsDataSourceUserDirectoryStateLoading || _userDirectoryState == ContactsDataSourceUserDirectoryStateOfflineLoading))
|
||||
{
|
||||
tableViewCell.textLabel.text = [NSBundle mxk_localizedStringForKey:@"search_searching"];
|
||||
tableViewCell.textLabel.text = [MatrixKitL10n searchSearching];
|
||||
}
|
||||
else
|
||||
{
|
||||
tableViewCell.textLabel.text = NSLocalizedStringFromTable(@"search_no_result", @"Vector", nil);
|
||||
tableViewCell.textLabel.text = [VectorL10n searchNoResult];
|
||||
}
|
||||
}
|
||||
else if (indexPath.section == filteredLocalContactsSection)
|
||||
@@ -633,19 +633,19 @@
|
||||
if (hideNonMatrixEnabledContacts && !self.mxSession.identityService)
|
||||
{
|
||||
// Because we cannot make lookups with no IS
|
||||
tableViewCell.textLabel.text = NSLocalizedStringFromTable(@"contacts_address_book_no_identity_server", @"Vector", nil);
|
||||
tableViewCell.textLabel.text = [VectorL10n contactsAddressBookNoIdentityServer];
|
||||
}
|
||||
else
|
||||
{
|
||||
// Because there is no contacts on the device
|
||||
tableViewCell.textLabel.text = NSLocalizedStringFromTable(@"contacts_address_book_no_contact", @"Vector", nil);
|
||||
tableViewCell.textLabel.text = [VectorL10n contactsAddressBookNoContact];
|
||||
}
|
||||
break;
|
||||
|
||||
case CNAuthorizationStatusNotDetermined:
|
||||
// Because the user have not granted the permission yet
|
||||
// (The permission request popup is displayed at the same time)
|
||||
tableViewCell.textLabel.text = NSLocalizedStringFromTable(@"contacts_address_book_permission_required", @"Vector", nil);
|
||||
tableViewCell.textLabel.text = [VectorL10n contactsAddressBookPermissionRequired];
|
||||
break;
|
||||
|
||||
default:
|
||||
@@ -735,7 +735,7 @@
|
||||
if (section == filteredLocalContactsSection)
|
||||
{
|
||||
count = filteredLocalContacts.count;
|
||||
title = NSLocalizedStringFromTable(@"contacts_address_book_section", @"Vector", nil);
|
||||
title = [VectorL10n contactsAddressBookSection];
|
||||
}
|
||||
else //if (section == filteredMatrixContactsSection)
|
||||
{
|
||||
@@ -743,11 +743,11 @@
|
||||
{
|
||||
case ContactsDataSourceUserDirectoryStateOfflineLoading:
|
||||
case ContactsDataSourceUserDirectoryStateOfflineLoaded:
|
||||
title = NSLocalizedStringFromTable(@"contacts_user_directory_offline_section", @"Vector", nil);
|
||||
title = [VectorL10n contactsUserDirectoryOfflineSection];
|
||||
break;
|
||||
|
||||
default:
|
||||
title = NSLocalizedStringFromTable(@"contacts_user_directory_section", @"Vector", nil);
|
||||
title = [VectorL10n contactsUserDirectorySection];
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -857,7 +857,7 @@
|
||||
|
||||
checkboxLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 0, 30)];
|
||||
checkboxLabel.font = [UIFont systemFontOfSize:16.0];
|
||||
checkboxLabel.text = NSLocalizedStringFromTable(@"contacts_address_book_matrix_users_toggle", @"Vector", nil);
|
||||
checkboxLabel.text = [VectorL10n contactsAddressBookMatrixUsersToggle];
|
||||
[localContactsCheckboxContainer addSubview:checkboxLabel];
|
||||
localContactsCheckboxContainer.checkboxLabel = checkboxLabel;
|
||||
|
||||
|
||||
@@ -650,7 +650,7 @@
|
||||
{
|
||||
if (section == directChatsIndex)
|
||||
{
|
||||
return NSLocalizedStringFromTable(@"room_participants_action_section_direct_chats", @"Vector", nil);
|
||||
return [VectorL10n roomParticipantsActionSectionDirectChats];
|
||||
}
|
||||
|
||||
return nil;
|
||||
@@ -663,19 +663,19 @@
|
||||
switch (action)
|
||||
{
|
||||
case ContactDetailsActionIgnore:
|
||||
title = NSLocalizedStringFromTable(@"room_participants_action_ignore", @"Vector", nil);
|
||||
title = [VectorL10n roomParticipantsActionIgnore];
|
||||
break;
|
||||
case ContactDetailsActionUnignore:
|
||||
title = NSLocalizedStringFromTable(@"room_participants_action_unignore", @"Vector", nil);
|
||||
title = [VectorL10n roomParticipantsActionUnignore];
|
||||
break;
|
||||
case ContactDetailsActionStartChat:
|
||||
title = NSLocalizedStringFromTable(@"room_participants_action_start_chat", @"Vector", nil);
|
||||
title = [VectorL10n roomParticipantsActionStartNewChat];
|
||||
break;
|
||||
case ContactDetailsActionStartVoiceCall:
|
||||
title = NSLocalizedStringFromTable(@"room_participants_action_start_voice_call", @"Vector", nil);
|
||||
title = [VectorL10n roomParticipantsActionStartVoiceCall];
|
||||
break;
|
||||
case ContactDetailsActionStartVideoCall:
|
||||
title = NSLocalizedStringFromTable(@"room_participants_action_start_video_call", @"Vector", nil);
|
||||
title = [VectorL10n roomParticipantsActionStartVideoCall];
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
@@ -727,7 +727,7 @@
|
||||
{
|
||||
roomCell.avatarImageView.image = [UIImage imageNamed:@"start_chat"];
|
||||
roomCell.avatarImageView.defaultBackgroundColor = [UIColor clearColor];
|
||||
roomCell.titleLabel.text = NSLocalizedStringFromTable(@"room_participants_action_start_new_chat", @"Vector", nil);
|
||||
roomCell.titleLabel.text = [VectorL10n roomParticipantsActionStartNewChat];
|
||||
}
|
||||
|
||||
cell = roomCell;
|
||||
@@ -869,9 +869,9 @@
|
||||
// Prompt user to ignore content from this user
|
||||
__weak __typeof(self) weakSelf = self;
|
||||
[currentAlert dismissViewControllerAnimated:NO completion:nil];
|
||||
currentAlert = [UIAlertController alertControllerWithTitle:[NSBundle mxk_localizedStringForKey:@"room_member_ignore_prompt"] message:nil preferredStyle:UIAlertControllerStyleAlert];
|
||||
currentAlert = [UIAlertController alertControllerWithTitle:[MatrixKitL10n roomMemberIgnorePrompt] message:nil preferredStyle:UIAlertControllerStyleAlert];
|
||||
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[NSBundle mxk_localizedStringForKey:@"yes"]
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n yes]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -900,7 +900,7 @@
|
||||
|
||||
}]];
|
||||
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[NSBundle mxk_localizedStringForKey:@"no"]
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n no]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -978,10 +978,10 @@
|
||||
{
|
||||
[self removePendingActionMask];
|
||||
|
||||
UIAlertController *alert = [UIAlertController alertControllerWithTitle:[NSBundle mxk_localizedStringForKey:@"error"]
|
||||
message:NSLocalizedStringFromTable(@"room_participants_start_new_chat_error_using_user_email_without_identity_server", @"Vector", nil)
|
||||
UIAlertController *alert = [UIAlertController alertControllerWithTitle:[MatrixKitL10n error]
|
||||
message:[VectorL10n roomParticipantsStartNewChatErrorUsingUserEmailWithoutIdentityServer]
|
||||
preferredStyle:UIAlertControllerStyleAlert];
|
||||
[alert addAction:[UIAlertAction actionWithTitle:[NSBundle mxk_localizedStringForKey:@"ok"] style:UIAlertActionStyleDefault handler:nil]];
|
||||
[alert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n ok] style:UIAlertActionStyleDefault handler:nil]];
|
||||
[self presentViewController:alert animated:YES completion:nil];
|
||||
|
||||
return;
|
||||
@@ -1132,7 +1132,7 @@
|
||||
avatarFullScreenView.stretchable = YES;
|
||||
|
||||
MXWeakify(self);
|
||||
[avatarFullScreenView setRightButtonTitle:[NSBundle mxk_localizedStringForKey:@"ok"] handler:^(MXKImageView* imageView, NSString* buttonTitle) {
|
||||
[avatarFullScreenView setRightButtonTitle:[MatrixKitL10n ok] handler:^(MXKImageView* imageView, NSString* buttonTitle) {
|
||||
|
||||
MXStrongifyAndReturnIfNil(self);
|
||||
[avatarFullScreenView dismissSelection];
|
||||
|
||||
@@ -336,7 +336,7 @@
|
||||
}
|
||||
else if (contact.isThirdPartyInvite)
|
||||
{
|
||||
presenceText = NSLocalizedStringFromTable(@"room_participants_offline", @"Vector", nil);
|
||||
presenceText = [VectorL10n roomParticipantsOffline];
|
||||
}
|
||||
|
||||
if (presenceText.length)
|
||||
|
||||
@@ -60,7 +60,7 @@
|
||||
{
|
||||
[super viewWillAppear:animated];
|
||||
|
||||
[AppDelegate theDelegate].masterTabBarController.navigationItem.title = NSLocalizedStringFromTable(@"title_favourites", @"Vector", nil);
|
||||
[AppDelegate theDelegate].masterTabBarController.navigationItem.title = [VectorL10n titleFavourites];
|
||||
[AppDelegate theDelegate].masterTabBarController.tabBar.tintColor = ThemeService.shared.theme.tintColor;
|
||||
|
||||
if (recentsDataSource)
|
||||
@@ -126,8 +126,8 @@
|
||||
- (void)updateEmptyView
|
||||
{
|
||||
[self.emptyView fillWith:[self emptyViewArtwork]
|
||||
title:NSLocalizedStringFromTable(@"favourites_empty_view_title", @"Vector", nil)
|
||||
informationText:NSLocalizedStringFromTable(@"favourites_empty_view_information", @"Vector", nil)];
|
||||
title:[VectorL10n favouritesEmptyViewTitle]
|
||||
informationText:[VectorL10n favouritesEmptyViewInformation]];
|
||||
}
|
||||
|
||||
- (UIImage*)emptyViewArtwork
|
||||
|
||||
@@ -36,7 +36,7 @@ final public class GDPRConsentViewController: WebViewViewController {
|
||||
public override func viewDidLoad() {
|
||||
super.viewDidLoad()
|
||||
|
||||
self.title = NSLocalizedString("settings_term_conditions", tableName: "Vector", comment: "")
|
||||
self.title = VectorL10n.settingsTermConditions
|
||||
}
|
||||
|
||||
// MARK: - Superclass Overrides
|
||||
|
||||
@@ -101,7 +101,7 @@
|
||||
roomDisplayName = room.summary.displayname;
|
||||
if (!roomDisplayName.length)
|
||||
{
|
||||
roomDisplayName = [NSBundle mxk_localizedStringForKey:@"room_displayname_empty_room"];
|
||||
roomDisplayName = [MatrixKitL10n roomDisplaynameEmptyRoom];
|
||||
}
|
||||
}
|
||||
else
|
||||
|
||||
@@ -46,7 +46,7 @@
|
||||
self.roomNameLabel.text = room.summary.displayname;
|
||||
if (!self.roomNameLabel.text.length)
|
||||
{
|
||||
self.roomNameLabel.text = [NSBundle mxk_localizedStringForKey:@"room_displayname_empty_room"];
|
||||
self.roomNameLabel.text = [MatrixKitL10n roomDisplaynameEmptyRoom];
|
||||
}
|
||||
}
|
||||
else
|
||||
|
||||
@@ -52,7 +52,7 @@
|
||||
{
|
||||
[super viewDidLoad];
|
||||
|
||||
self.title = NSLocalizedStringFromTable(@"directory_title", @"Vector", nil);
|
||||
self.title = [VectorL10n directoryTitle];
|
||||
|
||||
self.tableView.delegate = self;
|
||||
|
||||
|
||||
@@ -77,24 +77,24 @@
|
||||
NSMutableArray* viewControllers = [[NSMutableArray alloc] init];
|
||||
NSMutableArray* titles = [[NSMutableArray alloc] init];
|
||||
|
||||
[titles addObject: NSLocalizedStringFromTable(@"search_rooms", @"Vector", nil)];
|
||||
[titles addObject:[VectorL10n searchRooms]];
|
||||
recentsViewController = [RecentsViewController recentListViewController];
|
||||
recentsViewController.enableSearchBar = NO;
|
||||
recentsViewController.screenName = @"UnifiedSearchRooms";
|
||||
[viewControllers addObject:recentsViewController];
|
||||
|
||||
[titles addObject: NSLocalizedStringFromTable(@"search_messages", @"Vector", nil)];
|
||||
[titles addObject:[VectorL10n searchMessages]];
|
||||
messagesSearchViewController = [HomeMessagesSearchViewController searchViewController];
|
||||
[viewControllers addObject:messagesSearchViewController];
|
||||
|
||||
// Add search People tab
|
||||
[titles addObject: NSLocalizedStringFromTable(@"search_people", @"Vector", nil)];
|
||||
[titles addObject:[VectorL10n searchPeople]];
|
||||
peopleSearchViewController = [ContactsTableViewController contactsTableViewController];
|
||||
peopleSearchViewController.contactsTableViewControllerDelegate = self;
|
||||
[viewControllers addObject:peopleSearchViewController];
|
||||
|
||||
// add Files tab
|
||||
[titles addObject: NSLocalizedStringFromTable(@"search_files", @"Vector", nil)];
|
||||
[titles addObject:[VectorL10n searchFiles]];
|
||||
filesSearchViewController = [HomeFilesSearchViewController searchViewController];
|
||||
[viewControllers addObject:filesSearchViewController];
|
||||
|
||||
@@ -109,7 +109,7 @@
|
||||
[self initializeDataSources];
|
||||
|
||||
self.searchBar.autocapitalizationType = UITextAutocapitalizationTypeNone;
|
||||
self.searchBar.placeholder = NSLocalizedStringFromTable(@"search_default_placeholder", @"Vector", nil);
|
||||
self.searchBar.placeholder = [VectorL10n searchDefaultPlaceholder];
|
||||
|
||||
[super showSearch:NO];
|
||||
}
|
||||
@@ -408,11 +408,11 @@
|
||||
|
||||
if (self.selectedViewController == peopleSearchViewController)
|
||||
{
|
||||
self.searchBar.placeholder = NSLocalizedStringFromTable(@"search_people_placeholder", @"Vector", nil);
|
||||
self.searchBar.placeholder = [VectorL10n searchPeoplePlaceholder];
|
||||
}
|
||||
else
|
||||
{
|
||||
self.searchBar.placeholder = NSLocalizedStringFromTable(@"search_default_placeholder", @"Vector", nil);
|
||||
self.searchBar.placeholder = [VectorL10n searchDefaultPlaceholder];
|
||||
}
|
||||
|
||||
[self updateSearch];
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
switch (publicRoomsDirectoryDataSource.state)
|
||||
{
|
||||
case MXKDataSourceStatePreparing:
|
||||
self.titleLabel.text = NSLocalizedStringFromTable(@"directory_searching_title", @"Vector", nil);
|
||||
self.titleLabel.text = [VectorL10n directorySearchingTitle];
|
||||
self.descriptionLabel.text = @"";
|
||||
break;
|
||||
|
||||
@@ -51,20 +51,22 @@
|
||||
{
|
||||
if (publicRoomsDirectoryDataSource.searchPattern)
|
||||
{
|
||||
self.titleLabel.text = NSLocalizedStringFromTable(@"directory_search_results_title", @"Vector", nil);
|
||||
self.titleLabel.text = [VectorL10n directorySearchResultsTitle];
|
||||
|
||||
// Do we need to display like ">20 results found" or "18 results found"?
|
||||
NSString *descriptionLabel = (publicRoomsDirectoryDataSource.searchResultsCountIsLimited && publicRoomsDirectoryDataSource.searchResultsCount > 0) ? NSLocalizedStringFromTable(@"directory_search_results_more_than", @"Vector", nil) : NSLocalizedStringFromTable(@"directory_search_results", @"Vector", nil);
|
||||
|
||||
self.descriptionLabel.text = [NSString stringWithFormat:descriptionLabel,
|
||||
publicRoomsDirectoryDataSource.searchResultsCount,
|
||||
publicRoomsDirectoryDataSource.searchPattern];
|
||||
if (publicRoomsDirectoryDataSource.searchResultsCountIsLimited && publicRoomsDirectoryDataSource.searchResultsCount > 0)
|
||||
{
|
||||
self.descriptionLabel.text = [VectorL10n directorySearchResultsMoreThan:publicRoomsDirectoryDataSource.searchResultsCount :publicRoomsDirectoryDataSource.searchPattern];
|
||||
}
|
||||
else
|
||||
{
|
||||
self.descriptionLabel.text = [VectorL10n directorySearchResults:publicRoomsDirectoryDataSource.searchResultsCount :publicRoomsDirectoryDataSource.searchPattern];
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
self.titleLabel.text = NSLocalizedStringFromTable(@"directory_cell_title", @"Vector", nil);
|
||||
self.descriptionLabel.text = [NSString stringWithFormat:NSLocalizedStringFromTable(@"directory_cell_description", @"Vector", nil),
|
||||
publicRoomsDirectoryDataSource.searchResultsCount];
|
||||
self.titleLabel.text = [VectorL10n directoryCellTitle];
|
||||
self.descriptionLabel.text = [VectorL10n directoryCellDescription:publicRoomsDirectoryDataSource.searchResultsCount];
|
||||
}
|
||||
|
||||
if (publicRoomsDirectoryDataSource.searchResultsCount)
|
||||
@@ -76,8 +78,8 @@
|
||||
}
|
||||
|
||||
case MXKDataSourceStateFailed:
|
||||
self.titleLabel.text = NSLocalizedStringFromTable(@"directory_searching_title", @"Vector", nil);
|
||||
self.descriptionLabel.text = NSLocalizedStringFromTable(@"directory_search_fail", @"Vector", nil);
|
||||
self.titleLabel.text = [VectorL10n directorySearchingTitle];
|
||||
self.descriptionLabel.text = [VectorL10n directorySearchFail];
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
@@ -102,14 +102,14 @@ NSString *FallBackViewControllerJavascriptOnLogin = @"window.matrixLogin.onLogin
|
||||
}
|
||||
else
|
||||
{
|
||||
title = [NSBundle mxk_localizedStringForKey:@"error"];
|
||||
title = [MatrixKitL10n error];
|
||||
}
|
||||
}
|
||||
|
||||
MXWeakify(self);
|
||||
|
||||
UIAlertController *alert = [UIAlertController alertControllerWithTitle:title message:msg preferredStyle:UIAlertControllerStyleAlert];
|
||||
[alert addAction:[UIAlertAction actionWithTitle:[NSBundle mxk_localizedStringForKey:@"ok"]
|
||||
[alert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n ok]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
MXStrongifyAndReturnIfNil(self);
|
||||
@@ -142,7 +142,7 @@ NSString *FallBackViewControllerJavascriptOnLogin = @"window.matrixLogin.onLogin
|
||||
NSError *error = [NSError errorWithDomain:NSURLErrorDomain
|
||||
code:NSURLErrorNotConnectedToInternet
|
||||
userInfo:@{
|
||||
NSLocalizedDescriptionKey : NSLocalizedStringFromTable(@"network_offline_prompt", @"Vector", nil)
|
||||
NSLocalizedDescriptionKey : [VectorL10n networkOfflinePrompt]
|
||||
}];
|
||||
[self showErrorAsAlert:error];
|
||||
}
|
||||
|
||||
@@ -102,7 +102,7 @@
|
||||
{
|
||||
[super viewWillAppear:animated];
|
||||
|
||||
[AppDelegate theDelegate].masterTabBarController.navigationItem.title = NSLocalizedStringFromTable(@"title_home", @"Vector", nil);
|
||||
[AppDelegate theDelegate].masterTabBarController.navigationItem.title = [VectorL10n titleHome];
|
||||
|
||||
[ThemeService.shared.theme applyStyleOnNavigationBar:[AppDelegate theDelegate].masterTabBarController.navigationController.navigationBar];
|
||||
|
||||
@@ -274,7 +274,7 @@
|
||||
|
||||
currentAlert = [UIAlertController alertControllerWithTitle:nil message:nil preferredStyle:UIAlertControllerStyleActionSheet];
|
||||
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:NSLocalizedStringFromTable(@"spaces_explore_rooms", @"Vector", nil)
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n spacesExploreRooms]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -288,7 +288,7 @@
|
||||
|
||||
}]];
|
||||
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:NSLocalizedStringFromTable(@"room_details_people", @"Vector", nil)
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n roomDetailsPeople]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -305,7 +305,7 @@
|
||||
}]];
|
||||
|
||||
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[NSBundle mxk_localizedStringForKey:@"cancel"]
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n cancel]
|
||||
style:UIAlertActionStyleCancel
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -827,7 +827,7 @@
|
||||
|
||||
- (void)showCrossSigningSetup
|
||||
{
|
||||
[self setupCrossSigningWithTitle:NSLocalizedStringFromTable(@"cross_signing_setup_banner_title", @"Vector", nil) message:NSLocalizedStringFromTable(@"security_settings_user_password_description", @"Vector", nil) success:^{
|
||||
[self setupCrossSigningWithTitle:[VectorL10n crossSigningSetupBannerTitle] message:[VectorL10n securitySettingsUserPasswordDescription] success:^{
|
||||
|
||||
} failure:^(NSError *error) {
|
||||
|
||||
@@ -890,11 +890,11 @@
|
||||
displayName = displayName ?: @"";
|
||||
|
||||
NSString *appName = [[NSBundle mainBundle] infoDictionary][@"CFBundleDisplayName"];
|
||||
NSString *title = [NSString stringWithFormat:NSLocalizedStringFromTable(@"home_empty_view_title", @"Vector", nil), appName, displayName];
|
||||
NSString *title = [VectorL10n homeEmptyViewTitle:appName :displayName];
|
||||
|
||||
[self.emptyView fillWith:[self emptyViewArtwork]
|
||||
title:title
|
||||
informationText:NSLocalizedStringFromTable(@"home_empty_view_information", @"Vector", nil)];
|
||||
informationText:[VectorL10n homeEmptyViewInformation]];
|
||||
}
|
||||
|
||||
- (UIImage*)emptyViewArtwork
|
||||
|
||||
@@ -196,14 +196,14 @@ NSString *const kIntegrationManagerAddIntegrationScreen = @"add_integ";
|
||||
}
|
||||
else
|
||||
{
|
||||
[self sendLocalisedError:@"widget_integration_missing_room_id" toRequest:requestId];
|
||||
[self sendError:[VectorL10n widgetIntegrationMissingRoomId] toRequest:requestId];
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (![roomIdInEvent isEqualToString:roomId])
|
||||
{
|
||||
[self sendError:[NSString stringWithFormat:NSLocalizedStringFromTable(@"widget_integration_room_not_visible", @"Vector", nil), roomIdInEvent] toRequest:requestId];
|
||||
[self sendError:[VectorL10n widgetIntegrationRoomNotVisible:roomIdInEvent] toRequest:requestId];
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -249,7 +249,7 @@ NSString *const kIntegrationManagerAddIntegrationScreen = @"add_integ";
|
||||
|
||||
if (!userId)
|
||||
{
|
||||
[self sendLocalisedError:@"widget_integration_missing_user_id" toRequest:requestId];
|
||||
[self sendError:[VectorL10n widgetIntegrationMissingUserId] toRequest:requestId];
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -292,7 +292,7 @@ NSString *const kIntegrationManagerAddIntegrationScreen = @"add_integ";
|
||||
}
|
||||
else
|
||||
{
|
||||
[self sendLocalisedError:@"widget_integration_room_not_recognised" toRequest:requestId];
|
||||
[self sendError:[VectorL10n widgetIntegrationRoomNotRecognised] toRequest:requestId];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -324,7 +324,7 @@ NSString *const kIntegrationManagerAddIntegrationScreen = @"add_integ";
|
||||
} failure:^(NSError *error) {
|
||||
MXStrongifyAndReturnIfNil(self);
|
||||
|
||||
[self sendLocalisedError:@"widget_integration_need_to_be_able_to_invite" toRequest:requestId];
|
||||
[self sendError:[VectorL10n widgetIntegrationNeedToBeAbleToInvite] toRequest:requestId];
|
||||
}];
|
||||
}
|
||||
}];
|
||||
@@ -348,13 +348,13 @@ NSString *const kIntegrationManagerAddIntegrationScreen = @"add_integ";
|
||||
|
||||
if (!widget_id)
|
||||
{
|
||||
[self sendLocalisedError:@"widget_integration_unable_to_create" toRequest:requestId];
|
||||
[self sendError:[VectorL10n widgetIntegrationUnableToCreate] toRequest:requestId];
|
||||
return;
|
||||
}
|
||||
|
||||
if (!widgetType)
|
||||
{
|
||||
[self sendLocalisedError:@"widget_integration_unable_to_create" toRequest:requestId];
|
||||
[self sendError:[VectorL10n widgetIntegrationUnableToCreate] toRequest:requestId];
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -412,7 +412,7 @@ NSString *const kIntegrationManagerAddIntegrationScreen = @"add_integ";
|
||||
typeof(self) self = weakSelf;
|
||||
if (self)
|
||||
{
|
||||
[self sendLocalisedError:@"widget_integration_unable_to_create" toRequest:requestId];
|
||||
[self sendError:[VectorL10n widgetIntegrationUnableToCreate] toRequest:requestId];
|
||||
}
|
||||
}];
|
||||
}
|
||||
@@ -441,7 +441,7 @@ NSString *const kIntegrationManagerAddIntegrationScreen = @"add_integ";
|
||||
typeof(self) self = weakSelf;
|
||||
if (self)
|
||||
{
|
||||
[self sendLocalisedError:@"widget_integration_failed_to_send_request" toRequest:requestId];
|
||||
[self sendError:[VectorL10n widgetIntegrationFailedToSendRequest] toRequest:requestId];
|
||||
}
|
||||
}];
|
||||
}];
|
||||
@@ -490,7 +490,7 @@ NSString *const kIntegrationManagerAddIntegrationScreen = @"add_integ";
|
||||
|
||||
if (room.summary.membership != MXMembershipJoin)
|
||||
{
|
||||
[self sendLocalisedError:@"widget_integration_must_be_in_room" toRequest:requestId];
|
||||
[self sendError:[VectorL10n widgetIntegrationMustBeInRoom] toRequest:requestId];
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -517,7 +517,7 @@ NSString *const kIntegrationManagerAddIntegrationScreen = @"add_integ";
|
||||
}
|
||||
else
|
||||
{
|
||||
[self sendLocalisedError:@"widget_integration_no_permission_in_room" toRequest:requestId];
|
||||
[self sendError:[VectorL10n widgetIntegrationNoPermissionInRoom] toRequest:requestId];
|
||||
}
|
||||
|
||||
}];
|
||||
@@ -576,7 +576,7 @@ NSString *const kIntegrationManagerAddIntegrationScreen = @"add_integ";
|
||||
typeof(self) self = weakSelf;
|
||||
if (self)
|
||||
{
|
||||
[self sendLocalisedError:@"widget_integration_failed_to_send_request" toRequest:requestId];
|
||||
[self sendError:[VectorL10n widgetIntegrationFailedToSendRequest] toRequest:requestId];
|
||||
}
|
||||
}];
|
||||
}
|
||||
@@ -648,7 +648,7 @@ NSString *const kIntegrationManagerAddIntegrationScreen = @"add_integ";
|
||||
typeof(self) self = weakSelf;
|
||||
if (self)
|
||||
{
|
||||
[self sendLocalisedError:@"widget_integration_failed_to_send_request" toRequest:requestId];
|
||||
[self sendError:[VectorL10n widgetIntegrationFailedToSendRequest] toRequest:requestId];
|
||||
}
|
||||
}];
|
||||
}
|
||||
@@ -687,14 +687,14 @@ NSString *const kIntegrationManagerAddIntegrationScreen = @"add_integ";
|
||||
typeof(self) self = weakSelf;
|
||||
if (self)
|
||||
{
|
||||
[self sendLocalisedError:@"widget_integration_failed_to_send_request" toRequest:requestId];
|
||||
[self sendError:[VectorL10n widgetIntegrationFailedToSendRequest] toRequest:requestId];
|
||||
}
|
||||
}];
|
||||
}
|
||||
else
|
||||
{
|
||||
MXLogDebug(@"[IntegrationManagerVC] setBotPower. Power level must be positive integer.");
|
||||
[self sendLocalisedError:@"widget_integration_positive_power_level" toRequest:requestId];
|
||||
[self sendError:[VectorL10n widgetIntegrationPositivePowerLevel] toRequest:requestId];
|
||||
}
|
||||
}];
|
||||
}
|
||||
@@ -721,12 +721,12 @@ NSString *const kIntegrationManagerAddIntegrationScreen = @"add_integ";
|
||||
|
||||
- (void)showDisabledIntegrationManagerError
|
||||
{
|
||||
NSString *message = NSLocalizedStringFromTable(@"widget_integration_manager_disabled", @"Vector", nil);
|
||||
NSString *message = [VectorL10n widgetIntegrationManagerDisabled];
|
||||
UIAlertController *alert = [UIAlertController alertControllerWithTitle:nil
|
||||
message:message
|
||||
preferredStyle:UIAlertControllerStyleAlert];
|
||||
|
||||
[alert addAction:[UIAlertAction actionWithTitle:[NSBundle mxk_localizedStringForKey:@"ok"]
|
||||
[alert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n ok]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
[self withdrawViewControllerAnimated:YES completion:nil];
|
||||
|
||||
@@ -44,7 +44,7 @@
|
||||
mxSession = theMXSession;
|
||||
roomId = theRoomId;
|
||||
|
||||
_alertController = [UIAlertController alertControllerWithTitle:NSLocalizedStringFromTable(@"widget_picker_title", @"Vector", nil)
|
||||
_alertController = [UIAlertController alertControllerWithTitle:[VectorL10n widgetPickerTitle]
|
||||
message:nil
|
||||
preferredStyle:UIAlertControllerStyleAlert];
|
||||
}
|
||||
@@ -80,7 +80,7 @@
|
||||
// Link to the integration manager
|
||||
if (RiotSettings.shared.roomInfoScreenShowIntegrations)
|
||||
{
|
||||
alertAction = [UIAlertAction actionWithTitle:NSLocalizedStringFromTable(@"widget_picker_manage_integrations", @"Vector", nil)
|
||||
alertAction = [UIAlertAction actionWithTitle:[VectorL10n widgetPickerManageIntegrations]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * _Nonnull action)
|
||||
{
|
||||
@@ -95,7 +95,7 @@
|
||||
}
|
||||
|
||||
// Cancel
|
||||
alertAction = [UIAlertAction actionWithTitle:[NSBundle mxk_localizedStringForKey:@"cancel"]
|
||||
alertAction = [UIAlertAction actionWithTitle:[MatrixKitL10n cancel]
|
||||
style:UIAlertActionStyleCancel
|
||||
handler:nil];
|
||||
[self.alertController addAction:alertAction];
|
||||
|
||||
@@ -18,6 +18,8 @@
|
||||
|
||||
#import "IntegrationManagerViewController.h"
|
||||
|
||||
#import "Riot-Swift.h"
|
||||
|
||||
@interface StickerPickerViewController ()
|
||||
|
||||
@end
|
||||
@@ -28,7 +30,7 @@
|
||||
{
|
||||
[super viewDidLoad];
|
||||
|
||||
self.navigationItem.title = NSLocalizedStringFromTable(@"room_action_send_sticker", @"Vector", nil);
|
||||
self.navigationItem.title = [VectorL10n roomActionSendSticker];
|
||||
|
||||
// Hide back button title
|
||||
self.parentViewController.navigationItem.backBarButtonItem =[[UIBarButtonItem alloc] initWithTitle:@"" style:UIBarButtonItemStylePlain target:nil action:nil];
|
||||
|
||||
@@ -99,12 +99,4 @@
|
||||
*/
|
||||
- (void)sendError:(NSString*)message toRequest:(NSString*)requestId;
|
||||
|
||||
/**
|
||||
Send a localised message error to a request from the widget.
|
||||
|
||||
@param errorKey the string id of the message error.
|
||||
@param requestId the id of the widget request.
|
||||
*/
|
||||
- (void)sendLocalisedError:(NSString*)errorKey toRequest:(NSString*)requestId;
|
||||
|
||||
@end
|
||||
|
||||
@@ -143,14 +143,14 @@ NSString *const kJavascriptSendResponseToPostMessageAPI = @"riotIOS.sendResponse
|
||||
}
|
||||
else
|
||||
{
|
||||
title = [NSBundle mxk_localizedStringForKey:@"error"];
|
||||
title = [MatrixKitL10n error];
|
||||
}
|
||||
}
|
||||
|
||||
__weak __typeof__(self) weakSelf = self;
|
||||
|
||||
UIAlertController *alert = [UIAlertController alertControllerWithTitle:title message:msg preferredStyle:UIAlertControllerStyleAlert];
|
||||
[alert addAction:[UIAlertAction actionWithTitle:[NSBundle mxk_localizedStringForKey:@"ok"]
|
||||
[alert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n ok]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -213,7 +213,7 @@ NSString *const kJavascriptSendResponseToPostMessageAPI = @"riotIOS.sendResponse
|
||||
|
||||
- (void)askPermissionWithCompletion:(void (^)(BOOL granted))completion
|
||||
{
|
||||
NSString *widgetCreatorUserId = self.widget.widgetEvent.sender ?: NSLocalizedStringFromTable(@"room_participants_unknown", @"Vector", nil);
|
||||
NSString *widgetCreatorUserId = self.widget.widgetEvent.sender ?: [VectorL10n roomParticipantsUnknown];
|
||||
|
||||
MXSession *session = widget.mxSession;
|
||||
MXRoom *room = [session roomWithRoomId:self.widget.widgetEvent.roomId];
|
||||
@@ -236,12 +236,12 @@ NSString *const kJavascriptSendResponseToPostMessageAPI = @"riotIOS.sendResponse
|
||||
NSString *widgetCreatorAvatarURL = widgetCreatorRoomMember.avatarUrl;
|
||||
|
||||
NSArray<NSString*> *permissionStrings = @[
|
||||
NSLocalizedStringFromTable(@"room_widget_permission_display_name_permission", @"Vector", nil),
|
||||
NSLocalizedStringFromTable(@"room_widget_permission_avatar_url_permission", @"Vector", nil),
|
||||
NSLocalizedStringFromTable(@"room_widget_permission_user_id_permission", @"Vector", nil),
|
||||
NSLocalizedStringFromTable(@"room_widget_permission_theme_permission", @"Vector", nil),
|
||||
NSLocalizedStringFromTable(@"room_widget_permission_widget_id_permission", @"Vector", nil),
|
||||
NSLocalizedStringFromTable(@"room_widget_permission_room_id_permission", @"Vector", nil)
|
||||
[VectorL10n roomWidgetPermissionDisplayNamePermission],
|
||||
[VectorL10n roomWidgetPermissionAvatarUrlPermission],
|
||||
[VectorL10n roomWidgetPermissionUserIdPermission],
|
||||
[VectorL10n roomWidgetPermissionThemePermission],
|
||||
[VectorL10n roomWidgetPermissionWidgetIdPermission],
|
||||
[VectorL10n roomWidgetPermissionRoomIdPermission]
|
||||
];
|
||||
|
||||
|
||||
@@ -293,7 +293,7 @@ NSString *const kJavascriptSendResponseToPostMessageAPI = @"riotIOS.sendResponse
|
||||
|
||||
UIAlertController *menu = [UIAlertController alertControllerWithTitle:nil message:nil preferredStyle:UIAlertControllerStyleActionSheet];
|
||||
|
||||
[menu addAction:[UIAlertAction actionWithTitle:NSLocalizedStringFromTable(@"widget_menu_refresh", @"Vector", nil)
|
||||
[menu addAction:[UIAlertAction actionWithTitle:[VectorL10n widgetMenuRefresh]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action)
|
||||
{
|
||||
@@ -303,7 +303,7 @@ NSString *const kJavascriptSendResponseToPostMessageAPI = @"riotIOS.sendResponse
|
||||
NSURL *url = [NSURL URLWithString:self.widgetUrl];
|
||||
if (url && [[UIApplication sharedApplication] canOpenURL:url])
|
||||
{
|
||||
[menu addAction:[UIAlertAction actionWithTitle:NSLocalizedStringFromTable(@"widget_menu_open_outside", @"Vector", nil)
|
||||
[menu addAction:[UIAlertAction actionWithTitle:[VectorL10n widgetMenuOpenOutside]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action)
|
||||
{
|
||||
@@ -314,7 +314,7 @@ NSString *const kJavascriptSendResponseToPostMessageAPI = @"riotIOS.sendResponse
|
||||
|
||||
if (![widget.widgetEvent.sender isEqualToString:session.myUser.userId])
|
||||
{
|
||||
[menu addAction:[UIAlertAction actionWithTitle:NSLocalizedStringFromTable(@"widget_menu_revoke_permission", @"Vector", nil)
|
||||
[menu addAction:[UIAlertAction actionWithTitle:[VectorL10n widgetMenuRevokePermission]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action)
|
||||
{
|
||||
@@ -325,7 +325,7 @@ NSString *const kJavascriptSendResponseToPostMessageAPI = @"riotIOS.sendResponse
|
||||
|
||||
if ([self hasUserEnoughPowerToManageCurrentWidget])
|
||||
{
|
||||
[menu addAction:[UIAlertAction actionWithTitle:NSLocalizedStringFromTable(@"widget_menu_remove", @"Vector", nil)
|
||||
[menu addAction:[UIAlertAction actionWithTitle:[VectorL10n widgetMenuRemove]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action)
|
||||
{
|
||||
@@ -334,7 +334,7 @@ NSString *const kJavascriptSendResponseToPostMessageAPI = @"riotIOS.sendResponse
|
||||
}]];
|
||||
}
|
||||
|
||||
[menu addAction:[UIAlertAction actionWithTitle:[NSBundle mxk_localizedStringForKey:@"cancel"]
|
||||
[menu addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n cancel]
|
||||
style:UIAlertActionStyleCancel
|
||||
handler:^(UIAlertAction * action) {
|
||||
}]];
|
||||
@@ -365,7 +365,7 @@ NSString *const kJavascriptSendResponseToPostMessageAPI = @"riotIOS.sendResponse
|
||||
NSError *error = [NSError errorWithDomain:NSURLErrorDomain
|
||||
code:NSURLErrorNotConnectedToInternet
|
||||
userInfo:@{
|
||||
NSLocalizedDescriptionKey : NSLocalizedStringFromTable(@"network_offline_prompt", @"Vector", nil)
|
||||
NSLocalizedDescriptionKey : [VectorL10n networkOfflinePrompt]
|
||||
}];
|
||||
[self showErrorAsAlert:error];
|
||||
}
|
||||
@@ -582,12 +582,6 @@ NSString *const kJavascriptSendResponseToPostMessageAPI = @"riotIOS.sendResponse
|
||||
toRequest:requestId];
|
||||
}
|
||||
|
||||
- (void)sendLocalisedError:(NSString*)errorKey toRequest:(NSString*)requestId
|
||||
{
|
||||
[self sendError:NSLocalizedStringFromTable(errorKey, @"Vector", nil) toRequest:requestId];
|
||||
}
|
||||
|
||||
|
||||
#pragma mark - Private methods
|
||||
|
||||
- (NSString *)stringByReplacingScalarTokenInString:(NSString*)string byScalarToken:(NSString*)scalarToken
|
||||
|
||||
+2
-2
@@ -119,8 +119,8 @@ final class KeyVerificationScanConfirmationViewController: UIViewController {
|
||||
self.confirmButton.layer.masksToBounds = true
|
||||
self.rejectButton.layer.masksToBounds = true
|
||||
|
||||
self.confirmButton.setTitle(Bundle.mxk_localizedString(forKey: "yes"), for: .normal)
|
||||
self.rejectButton.setTitle(Bundle.mxk_localizedString(forKey: "no"), for: .normal)
|
||||
self.confirmButton.setTitle(MatrixKitL10n.yes, for: .normal)
|
||||
self.rejectButton.setTitle(MatrixKitL10n.no, for: .normal)
|
||||
self.rejectButton.actionStyle = .cancel
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -275,7 +275,7 @@ final class KeyVerificationVerifyByScanningViewController: UIViewController {
|
||||
message: VectorL10n.keyVerificationVerifyQrCodeScanOtherCodeSuccessMessage,
|
||||
preferredStyle: .alert)
|
||||
|
||||
let okAction = UIAlertAction(title: Bundle.mxk_localizedString(forKey: "ok"), style: .default, handler: { _ in
|
||||
let okAction = UIAlertAction(title: MatrixKitL10n.ok, style: .default, handler: { _ in
|
||||
completion()
|
||||
})
|
||||
alert.addAction(okAction)
|
||||
|
||||
@@ -134,7 +134,7 @@ final class UserVerificationCoordinator: NSObject, UserVerificationCoordinatorTy
|
||||
message: VectorL10n.keyVerificationBootstrapNotSetupMessage,
|
||||
preferredStyle: .alert)
|
||||
|
||||
let cancelAction = UIAlertAction(title: Bundle.mxk_localizedString(forKey: "ok"), style: .cancel)
|
||||
let cancelAction = UIAlertAction(title: MatrixKitL10n.ok, style: .cancel)
|
||||
alert.addAction(cancelAction)
|
||||
|
||||
self.presenter.toPresentable().present(alert, animated: true, completion: nil)
|
||||
|
||||
@@ -101,7 +101,7 @@
|
||||
|
||||
if (_allowsMultipleSelection)
|
||||
{
|
||||
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:NSLocalizedStringFromTable(@"media_picker_select", @"Vector", nil) style:UIBarButtonItemStylePlain target:self action:@selector(onSelect:)];
|
||||
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:[VectorL10n mediaPickerSelect] style:UIBarButtonItemStylePlain target:self action:@selector(onSelect:)];
|
||||
}
|
||||
|
||||
// Observe user interface theme change.
|
||||
@@ -351,7 +351,7 @@
|
||||
selectedAssets = [NSMutableArray array];
|
||||
|
||||
// Update the nav buttons
|
||||
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:[NSBundle mxk_localizedStringForKey:@"send"] style:UIBarButtonItemStylePlain target:self action:@selector(onSelectionSend:)];
|
||||
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:[MatrixKitL10n send] style:UIBarButtonItemStylePlain target:self action:@selector(onSelectionSend:)];
|
||||
self.navigationItem.rightBarButtonItem.enabled = NO;
|
||||
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(onSelectionCancel:)];
|
||||
}
|
||||
@@ -373,7 +373,7 @@
|
||||
selectedAssets = nil;
|
||||
|
||||
// Update the nav buttons
|
||||
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:NSLocalizedStringFromTable(@"media_picker_select", @"Vector", nil) style:UIBarButtonItemStylePlain target:self action:@selector(onSelect:)];
|
||||
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:[VectorL10n mediaPickerSelect] style:UIBarButtonItemStylePlain target:self action:@selector(onSelect:)];
|
||||
self.navigationItem.rightBarButtonItem.enabled = YES;
|
||||
self.navigationItem.leftBarButtonItem = nil;
|
||||
|
||||
|
||||
@@ -126,11 +126,11 @@
|
||||
[super viewDidLoad];
|
||||
// Do any additional setup after loading the view, typically from a nib.
|
||||
|
||||
self.title = NSLocalizedStringFromTable(@"media_picker_title", @"Vector", nil);
|
||||
self.title = [VectorL10n mediaPickerTitle];
|
||||
|
||||
MXWeakify(self);
|
||||
|
||||
UIBarButtonItem *closeBarButtonItem = [[MXKBarButtonItem alloc] initWithTitle:NSLocalizedStringFromTable(@"cancel", @"Vector", nil) style:UIBarButtonItemStylePlain action:^{
|
||||
UIBarButtonItem *closeBarButtonItem = [[MXKBarButtonItem alloc] initWithTitle:[VectorL10n cancel] style:UIBarButtonItemStylePlain action:^{
|
||||
MXStrongifyAndReturnIfNil(self);
|
||||
[self.delegate mediaPickerControllerDidCancel:self];
|
||||
}];
|
||||
@@ -267,13 +267,13 @@
|
||||
{
|
||||
NSString *appDisplayName = [[NSBundle mainBundle] infoDictionary][@"CFBundleDisplayName"];
|
||||
|
||||
NSString *message = [NSString stringWithFormat:NSLocalizedStringFromTable(@"photo_library_access_not_granted", @"Vector", nil), appDisplayName];
|
||||
NSString *message = [VectorL10n photoLibraryAccessNotGranted:appDisplayName];
|
||||
|
||||
UIAlertController *alert = [UIAlertController alertControllerWithTitle:NSLocalizedStringFromTable(@"media_picker_title", @"Vector", nil)
|
||||
UIAlertController *alert = [UIAlertController alertControllerWithTitle:[VectorL10n mediaPickerTitle]
|
||||
message:message
|
||||
preferredStyle:UIAlertControllerStyleAlert];
|
||||
|
||||
[alert addAction:[UIAlertAction actionWithTitle:[NSBundle mxk_localizedStringForKey:@"ok"]
|
||||
[alert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n ok]
|
||||
style:UIAlertActionStyleCancel
|
||||
handler:^(UIAlertAction * action) {
|
||||
[self.delegate mediaPickerControllerDidCancel:self];
|
||||
@@ -281,7 +281,7 @@
|
||||
|
||||
NSURL *settingsURL = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
|
||||
|
||||
[alert addAction:[UIAlertAction actionWithTitle:[NSBundle mxk_localizedStringForKey:@"settings"]
|
||||
[alert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n settings]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
[UIApplication.sharedApplication openURL:settingsURL options:@{} completionHandler:^(BOOL success) {
|
||||
@@ -656,7 +656,7 @@
|
||||
validationView.stretchable = YES;
|
||||
|
||||
// the user validates the image
|
||||
[validationView setRightButtonTitle:[NSBundle mxk_localizedStringForKey:@"ok"] handler:^(MXKImageView* imageView, NSString* buttonTitle) {
|
||||
[validationView setRightButtonTitle:[MatrixKitL10n ok] handler:^(MXKImageView* imageView, NSString* buttonTitle) {
|
||||
__strong __typeof(weakSelf)strongSelf = weakSelf;
|
||||
|
||||
// Dismiss the image view
|
||||
@@ -666,7 +666,7 @@
|
||||
}];
|
||||
|
||||
// the user wants to use an other image
|
||||
[validationView setLeftButtonTitle:[NSBundle mxk_localizedStringForKey:@"cancel"] handler:^(MXKImageView* imageView, NSString* buttonTitle) {
|
||||
[validationView setLeftButtonTitle:[MatrixKitL10n cancel] handler:^(MXKImageView* imageView, NSString* buttonTitle) {
|
||||
__strong __typeof(weakSelf)strongSelf = weakSelf;
|
||||
|
||||
// dismiss the image view
|
||||
@@ -695,7 +695,7 @@
|
||||
validationView.stretchable = NO;
|
||||
|
||||
// the user validates the image
|
||||
[validationView setRightButtonTitle:[NSBundle mxk_localizedStringForKey:@"ok"] handler:^(MXKImageView* imageView, NSString* buttonTitle) {
|
||||
[validationView setRightButtonTitle:[MatrixKitL10n ok] handler:^(MXKImageView* imageView, NSString* buttonTitle) {
|
||||
__strong __typeof(weakSelf)strongSelf = weakSelf;
|
||||
|
||||
// Dismiss the image view
|
||||
@@ -705,7 +705,7 @@
|
||||
}];
|
||||
|
||||
// the user wants to use an other image
|
||||
[validationView setLeftButtonTitle:[NSBundle mxk_localizedStringForKey:@"cancel"] handler:^(MXKImageView* imageView, NSString* buttonTitle) {
|
||||
[validationView setLeftButtonTitle:[MatrixKitL10n cancel] handler:^(MXKImageView* imageView, NSString* buttonTitle) {
|
||||
__strong __typeof(weakSelf)strongSelf = weakSelf;
|
||||
|
||||
// dismiss the image view
|
||||
|
||||
@@ -82,7 +82,7 @@
|
||||
{
|
||||
[super viewWillAppear:animated];
|
||||
|
||||
[AppDelegate theDelegate].masterTabBarController.navigationItem.title = NSLocalizedStringFromTable(@"title_people", @"Vector", nil);
|
||||
[AppDelegate theDelegate].masterTabBarController.navigationItem.title = [VectorL10n titlePeople];
|
||||
[AppDelegate theDelegate].masterTabBarController.tabBar.tintColor = ThemeService.shared.theme.tintColor;
|
||||
|
||||
if ([self.dataSource isKindOfClass:RecentsDataSource.class])
|
||||
@@ -149,8 +149,8 @@
|
||||
- (void)updateEmptyView
|
||||
{
|
||||
[self.emptyView fillWith:[self emptyViewArtwork]
|
||||
title:NSLocalizedStringFromTable(@"people_empty_view_title", @"Vector", nil)
|
||||
informationText:NSLocalizedStringFromTable(@"people_empty_view_information", @"Vector", nil)];
|
||||
title:[VectorL10n peopleEmptyViewTitle]
|
||||
informationText:[VectorL10n peopleEmptyViewInformation]];
|
||||
}
|
||||
|
||||
- (UIImage*)emptyViewArtwork
|
||||
|
||||
@@ -42,12 +42,12 @@ NSString *const kInviteRecentTableViewCellRoomKey = @"kInviteRecentTableViewCell
|
||||
|
||||
[self.leftButton.layer setCornerRadius:5];
|
||||
self.leftButton.clipsToBounds = YES;
|
||||
[self.leftButton setTitle:NSLocalizedStringFromTable(@"decline", @"Vector", nil) forState:UIControlStateNormal];
|
||||
[self.leftButton setTitle:[VectorL10n decline] forState:UIControlStateNormal];
|
||||
[self.leftButton addTarget:self action:@selector(onDeclinePressed:) forControlEvents:UIControlEventTouchUpInside];
|
||||
|
||||
[self.rightButton.layer setCornerRadius:5];
|
||||
self.rightButton.clipsToBounds = YES;
|
||||
[self.rightButton setTitle:NSLocalizedStringFromTable(@"accept", @"Vector", nil) forState:UIControlStateNormal];
|
||||
[self.rightButton setTitle:[VectorL10n accept] forState:UIControlStateNormal];
|
||||
[self.rightButton addTarget:self action:@selector(onRightButtonPressed:) forControlEvents:UIControlEventTouchUpInside];
|
||||
|
||||
[self.noticeBadgeView.layer setCornerRadius:10];
|
||||
@@ -114,12 +114,12 @@ NSString *const kInviteRecentTableViewCellRoomKey = @"kInviteRecentTableViewCell
|
||||
|
||||
if (!showPreviewButton)
|
||||
{
|
||||
rightButtonTitle = NSLocalizedStringFromTable(@"accept", @"Vector", nil);
|
||||
rightButtonTitle = [VectorL10n accept];
|
||||
[self vc_setAccessoryDisclosureIndicatorWithCurrentTheme];
|
||||
}
|
||||
else
|
||||
{
|
||||
rightButtonTitle = NSLocalizedStringFromTable(@"preview", @"Vector", nil);
|
||||
rightButtonTitle = [VectorL10n preview];
|
||||
self.accessoryView = nil;
|
||||
}
|
||||
|
||||
|
||||
@@ -83,7 +83,7 @@ static NSString *const kNSFWKeyword = @"nsfw";
|
||||
else
|
||||
{
|
||||
// We display only Matrix rooms of the user's HS
|
||||
directoryServerDisplayname = [NSBundle mxk_localizedStringForKey:@"matrix"];
|
||||
directoryServerDisplayname = [MatrixKitL10n matrix];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -391,18 +391,18 @@ static NSString *const kNSFWKeyword = @"nsfw";
|
||||
{
|
||||
if (_searchPattern.length)
|
||||
{
|
||||
tableViewCell.textLabel.text = NSLocalizedStringFromTable(@"search_no_result", @"Vector", nil);
|
||||
tableViewCell.textLabel.text = [VectorL10n searchNoResult];
|
||||
}
|
||||
else
|
||||
{
|
||||
tableViewCell.textLabel.text = NSLocalizedStringFromTable(@"room_directory_no_public_room", @"Vector", nil);
|
||||
tableViewCell.textLabel.text = [VectorL10n roomDirectoryNoPublicRoom];
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (_searchPattern.length)
|
||||
{
|
||||
tableViewCell.textLabel.text = NSLocalizedStringFromTable(@"search_in_progress", @"Vector", nil);
|
||||
tableViewCell.textLabel.text = [VectorL10n searchInProgress];
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -15,7 +15,6 @@
|
||||
*/
|
||||
|
||||
#import <MatrixKit/MatrixKit.h>
|
||||
@class URLPreviewData;
|
||||
|
||||
extern NSString *const URLPreviewDidUpdateNotification;
|
||||
|
||||
@@ -81,16 +80,6 @@ typedef NS_ENUM(NSInteger, RoomBubbleCellDataTag)
|
||||
*/
|
||||
@property(nonatomic, readonly) CGFloat additionalContentHeight;
|
||||
|
||||
/**
|
||||
The data necessary to show a URL preview.
|
||||
*/
|
||||
@property (nonatomic) URLPreviewData *urlPreviewData;
|
||||
|
||||
/**
|
||||
Whether a URL preview should be displayed for this cell.
|
||||
*/
|
||||
@property (nonatomic) BOOL showURLPreview;
|
||||
|
||||
/**
|
||||
MXKeyVerification object associated to key verification event when using key verification by direct message.
|
||||
*/
|
||||
@@ -106,6 +95,16 @@ typedef NS_ENUM(NSInteger, RoomBubbleCellDataTag)
|
||||
*/
|
||||
@property(nonatomic) NSInteger componentIndexOfSentMessageTick;
|
||||
|
||||
/**
|
||||
Indicate that both the text message layout and any additional content height are no longer
|
||||
valid and should be recomputed before presentation in a bubble cell. This could be due
|
||||
to a content change, or the available space for the cell has been updated.
|
||||
|
||||
This is a convenience method that calls `invalidateTextLayout` and
|
||||
`setNeedsUpdateAdditionalContentHeight` together.
|
||||
*/
|
||||
- (void)invalidateLayout;
|
||||
|
||||
/**
|
||||
Indicate to update additional content height.
|
||||
*/
|
||||
@@ -121,6 +120,14 @@ typedef NS_ENUM(NSInteger, RoomBubbleCellDataTag)
|
||||
*/
|
||||
- (NSInteger)firstVisibleComponentIndex;
|
||||
|
||||
/**
|
||||
Returns the bubble component for the specified event ID, but only if that component
|
||||
has detected a link in the event's body. Otherwise returns `nil`.
|
||||
|
||||
This will also return `nil` If URL previews have been disabled by the user.
|
||||
*/
|
||||
- (MXKRoomBubbleComponent *)bubbleComponentWithLinkForEventId:(NSString *)eventId;
|
||||
|
||||
#pragma mark - Show all reactions
|
||||
|
||||
- (BOOL)showAllReactionsForEvent:(NSString*)eventId;
|
||||
|
||||
@@ -177,14 +177,11 @@ NSString *const URLPreviewDidUpdateNotification = @"URLPreviewDidUpdateNotificat
|
||||
// Increase maximum number of components
|
||||
self.maxComponentCount = 20;
|
||||
|
||||
// Reset attributedTextMessage to force reset MXKRoomCellData parameters
|
||||
self.attributedTextMessage = nil;
|
||||
// Indicate that the text message layout should be recomputed.
|
||||
[self invalidateTextLayout];
|
||||
|
||||
// Load a url preview if a link was detected
|
||||
if (self.hasLink)
|
||||
{
|
||||
[self loadURLPreview];
|
||||
}
|
||||
// Load a url preview if necessary.
|
||||
[self refreshURLPreviewForEventId:event.eventId];
|
||||
}
|
||||
|
||||
return self;
|
||||
@@ -194,11 +191,8 @@ NSString *const URLPreviewDidUpdateNotification = @"URLPreviewDidUpdateNotificat
|
||||
{
|
||||
NSUInteger retVal = [super updateEvent:eventId withEvent:event];
|
||||
|
||||
// Update any URL preview data too.
|
||||
if (self.hasLink)
|
||||
{
|
||||
[self loadURLPreview];
|
||||
}
|
||||
// Update any URL preview data as necessary.
|
||||
[self refreshURLPreviewForEventId:event.eventId];
|
||||
|
||||
return retVal;
|
||||
}
|
||||
@@ -241,12 +235,12 @@ NSString *const URLPreviewDidUpdateNotification = @"URLPreviewDidUpdateNotificat
|
||||
{
|
||||
MXLogDebug(@"[RoomBubbleCellData] attributedTextMessage called on wrong thread");
|
||||
dispatch_sync(dispatch_get_main_queue(), ^{
|
||||
self.attributedTextMessage = [self refreshAttributedTextMessage];
|
||||
self.attributedTextMessage = [self makeAttributedString];
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
self.attributedTextMessage = [self refreshAttributedTextMessage];
|
||||
self.attributedTextMessage = [self makeAttributedString];
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -254,14 +248,6 @@ NSString *const URLPreviewDidUpdateNotification = @"URLPreviewDidUpdateNotificat
|
||||
return attributedTextMessage;
|
||||
}
|
||||
|
||||
- (BOOL)hasLink
|
||||
{
|
||||
// Only check the last bubble component as -addEvent:andRoomState: will break up
|
||||
// the data that way, to always show a URL preview at the bottom of the cell.
|
||||
MXKRoomBubbleComponent *lastComponent = bubbleComponents.lastObject;
|
||||
return (lastComponent && lastComponent.link);
|
||||
}
|
||||
|
||||
- (BOOL)hasNoDisplay
|
||||
{
|
||||
if (self.tag == RoomBubbleCellDataTagKeyVerificationNoDisplay)
|
||||
@@ -331,14 +317,20 @@ NSString *const URLPreviewDidUpdateNotification = @"URLPreviewDidUpdateNotificat
|
||||
// Refresh only cells series header
|
||||
if (self.collapsedAttributedTextMessage && self.nextCollapsableCellData)
|
||||
{
|
||||
attributedTextMessage = nil;
|
||||
[self invalidateTextLayout];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#pragma mark -
|
||||
#pragma mark -
|
||||
|
||||
- (NSAttributedString*)refreshAttributedTextMessage
|
||||
- (void)invalidateLayout
|
||||
{
|
||||
[self invalidateTextLayout];
|
||||
[self setNeedsUpdateAdditionalContentHeight];
|
||||
}
|
||||
|
||||
- (NSAttributedString*)makeAttributedString
|
||||
{
|
||||
// CAUTION: This method must be called on the main thread.
|
||||
|
||||
@@ -535,6 +527,8 @@ NSString *const URLPreviewDidUpdateNotification = @"URLPreviewDidUpdateNotificat
|
||||
{
|
||||
CGFloat additionalVerticalHeight = 0;
|
||||
|
||||
// Add vertical whitespace in case of a url preview.
|
||||
additionalVerticalHeight+= [self urlPreviewHeightForEventId:eventId];
|
||||
// Add vertical whitespace in case of reactions.
|
||||
additionalVerticalHeight+= [self reactionHeightForEventId:eventId];
|
||||
// Add vertical whitespace in case of read receipts.
|
||||
@@ -554,6 +548,7 @@ NSString *const URLPreviewDidUpdateNotification = @"URLPreviewDidUpdateNotificat
|
||||
{
|
||||
NSString *eventId = bubbleComponent.event.eventId;
|
||||
|
||||
height+= [self urlPreviewHeightForEventId:eventId];
|
||||
height+= [self reactionHeightForEventId:eventId];
|
||||
height+= [self readReceiptHeightForEventId:eventId];
|
||||
}
|
||||
@@ -593,6 +588,18 @@ NSString *const URLPreviewDidUpdateNotification = @"URLPreviewDidUpdateNotificat
|
||||
self.shouldUpdateAdditionalContentHeight = YES;
|
||||
}
|
||||
|
||||
- (CGFloat)urlPreviewHeightForEventId:(NSString*)eventId
|
||||
{
|
||||
MXKRoomBubbleComponent *component = [self bubbleComponentWithLinkForEventId:eventId];
|
||||
if (!component.showURLPreview)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
return RoomBubbleCellLayout.urlPreviewViewTopMargin + [URLPreviewView contentViewHeightFor:component.urlPreviewData
|
||||
fitting:self.maxTextViewWidth];
|
||||
}
|
||||
|
||||
- (CGFloat)reactionHeightForEventId:(NSString*)eventId
|
||||
{
|
||||
CGFloat height = 0;
|
||||
@@ -640,8 +647,8 @@ NSString *const URLPreviewDidUpdateNotification = @"URLPreviewDidUpdateNotificat
|
||||
// Update flag
|
||||
_containsLastMessage = containsLastMessage;
|
||||
|
||||
// Recompute the text message layout
|
||||
self.attributedTextMessage = nil;
|
||||
// Indicate that the text message layout should be recomputed.
|
||||
[self invalidateTextLayout];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -653,8 +660,8 @@ NSString *const URLPreviewDidUpdateNotification = @"URLPreviewDidUpdateNotificat
|
||||
// Update flag
|
||||
_selectedEventId = selectedEventId;
|
||||
|
||||
// Recompute the text message layout
|
||||
self.attributedTextMessage = nil;
|
||||
// Indicate that the text message layout should be recomputed.
|
||||
[self invalidateTextLayout];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -722,6 +729,23 @@ NSString *const URLPreviewDidUpdateNotification = @"URLPreviewDidUpdateNotificat
|
||||
return selectedComponentIndex;
|
||||
}
|
||||
|
||||
- (MXKRoomBubbleComponent *)bubbleComponentWithLinkForEventId:(NSString *)eventId
|
||||
{
|
||||
NSInteger index = [self bubbleComponentIndexForEventId:eventId];
|
||||
if (index == NSNotFound)
|
||||
{
|
||||
return nil;
|
||||
}
|
||||
|
||||
MXKRoomBubbleComponent *component = self.bubbleComponents[index];
|
||||
if (!component.link)
|
||||
{
|
||||
return nil;
|
||||
}
|
||||
|
||||
return component;
|
||||
}
|
||||
|
||||
#pragma mark -
|
||||
|
||||
+ (NSAttributedString *)timestampVerticalWhitespace
|
||||
@@ -775,19 +799,6 @@ NSString *const URLPreviewDidUpdateNotification = @"URLPreviewDidUpdateNotificat
|
||||
{
|
||||
BOOL shouldAddEvent = YES;
|
||||
|
||||
// For unencrypted rooms, don't allow any events to be added
|
||||
// after a bubble component that contains a link so than any URL
|
||||
// preview is for the last bubble component in the cell.
|
||||
if (!self.isEncryptedRoom && self.hasLink && self.bubbleComponents.lastObject)
|
||||
{
|
||||
MXKRoomBubbleComponent *lastComponent = self.bubbleComponents.lastObject;
|
||||
|
||||
if (event.originServerTs > lastComponent.event.originServerTs)
|
||||
{
|
||||
shouldAddEvent = NO;
|
||||
}
|
||||
}
|
||||
|
||||
switch (self.tag)
|
||||
{
|
||||
case RoomBubbleCellDataTagKeyVerificationNoDisplay:
|
||||
@@ -831,27 +842,9 @@ NSString *const URLPreviewDidUpdateNotification = @"URLPreviewDidUpdateNotificat
|
||||
if ([messageType isEqualToString:kMXMessageTypeKeyVerificationRequest])
|
||||
{
|
||||
shouldAddEvent = NO;
|
||||
break;
|
||||
}
|
||||
|
||||
// If the message contains a link and comes before this cell data, don't add it to
|
||||
// ensure that a URL preview is only shown for the last component on some new cell data.
|
||||
if (!self.isEncryptedRoom && self.bubbleComponents.firstObject)
|
||||
{
|
||||
MXKRoomBubbleComponent *firstComponent = self.bubbleComponents.firstObject;
|
||||
|
||||
if (event.originServerTs < firstComponent.event.originServerTs)
|
||||
{
|
||||
NSString *messageBody = event.content[@"body"];
|
||||
if (messageBody && [messageBody mxk_firstURLDetected])
|
||||
{
|
||||
shouldAddEvent = NO;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case MXEventTypeKeyVerificationStart:
|
||||
case MXEventTypeKeyVerificationAccept:
|
||||
case MXEventTypeKeyVerificationKey:
|
||||
@@ -902,14 +895,12 @@ NSString *const URLPreviewDidUpdateNotification = @"URLPreviewDidUpdateNotificat
|
||||
|
||||
if (shouldAddEvent)
|
||||
{
|
||||
BOOL hadLink = self.hasLink;
|
||||
|
||||
shouldAddEvent = [super addEvent:event andRoomState:roomState];
|
||||
|
||||
// If the cell data now contains a link, set the preview data.
|
||||
if (shouldAddEvent && self.hasLink && !hadLink)
|
||||
// If the event was added, load any url preview data if necessary.
|
||||
if (shouldAddEvent)
|
||||
{
|
||||
[self loadURLPreview];
|
||||
[self refreshURLPreviewForEventId:event.eventId];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1050,25 +1041,25 @@ NSString *const URLPreviewDidUpdateNotification = @"URLPreviewDidUpdateNotificat
|
||||
switch (attachmentType)
|
||||
{
|
||||
case MXKAttachmentTypeImage:
|
||||
accessibilityLabel = NSLocalizedStringFromTable(@"media_type_accessibility_image", @"Vector", nil);
|
||||
accessibilityLabel = [VectorL10n mediaTypeAccessibilityImage];
|
||||
break;
|
||||
case MXKAttachmentTypeAudio:
|
||||
accessibilityLabel = NSLocalizedStringFromTable(@"media_type_accessibility_audio", @"Vector", nil);
|
||||
accessibilityLabel = [VectorL10n mediaTypeAccessibilityAudio];
|
||||
break;
|
||||
case MXKAttachmentTypeVoiceMessage:
|
||||
accessibilityLabel = NSLocalizedStringFromTable(@"media_type_accessibility_audio", @"Vector", nil);
|
||||
accessibilityLabel = [VectorL10n mediaTypeAccessibilityAudio];
|
||||
break;
|
||||
case MXKAttachmentTypeVideo:
|
||||
accessibilityLabel = NSLocalizedStringFromTable(@"media_type_accessibility_video", @"Vector", nil);
|
||||
accessibilityLabel = [VectorL10n mediaTypeAccessibilityVideo];
|
||||
break;
|
||||
case MXKAttachmentTypeLocation:
|
||||
accessibilityLabel = NSLocalizedStringFromTable(@"media_type_accessibility_location", @"Vector", nil);
|
||||
accessibilityLabel = [VectorL10n mediaTypeAccessibilityLocation];
|
||||
break;
|
||||
case MXKAttachmentTypeFile:
|
||||
accessibilityLabel = NSLocalizedStringFromTable(@"media_type_accessibility_file", @"Vector", nil);
|
||||
accessibilityLabel = [VectorL10n mediaTypeAccessibilityFile];
|
||||
break;
|
||||
case MXKAttachmentTypeSticker:
|
||||
accessibilityLabel = NSLocalizedStringFromTable(@"media_type_accessibility_sticker", @"Vector", nil);
|
||||
accessibilityLabel = [VectorL10n mediaTypeAccessibilitySticker];
|
||||
break;
|
||||
default:
|
||||
accessibilityLabel = @"";
|
||||
@@ -1080,45 +1071,46 @@ NSString *const URLPreviewDidUpdateNotification = @"URLPreviewDidUpdateNotificat
|
||||
|
||||
#pragma mark - URL Previews
|
||||
|
||||
- (void)loadURLPreview
|
||||
- (void)refreshURLPreviewForEventId:(NSString *)eventId
|
||||
{
|
||||
// Get the last bubble component as that contains the link.
|
||||
MXKRoomBubbleComponent *lastComponent = bubbleComponents.lastObject;
|
||||
if (!lastComponent || !lastComponent.link)
|
||||
// Get the event's component, but only if it has a link.
|
||||
MXKRoomBubbleComponent *component = [self bubbleComponentWithLinkForEventId:eventId];
|
||||
if (!component)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Don't show the preview if it has been dismissed already.
|
||||
self.showURLPreview = ![URLPreviewService.shared hasClosedPreviewFrom:lastComponent.event];
|
||||
if (!self.showURLPreview)
|
||||
// Don't show the preview if they're disabled globally or this one has been dismissed previously.
|
||||
component.showURLPreview = RiotSettings.shared.roomScreenShowsURLPreviews && [URLPreviewService.shared shouldShowPreviewFor:component.event];
|
||||
if (!component.showURLPreview)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// If there is existing preview data, the message has been edited
|
||||
// Clear the data to show the loading state when the preview isn't cached
|
||||
if (self.urlPreviewData)
|
||||
// If there is existing preview data, the message has been edited.
|
||||
// Clear the data to show the loading state when the preview isn't cached.
|
||||
if (component.urlPreviewData)
|
||||
{
|
||||
self.urlPreviewData = nil;
|
||||
component.urlPreviewData = nil;
|
||||
}
|
||||
|
||||
// Set the preview data.
|
||||
MXWeakify(self);
|
||||
|
||||
NSDictionary<NSString *, NSString*> *userInfo = @{
|
||||
@"eventId": lastComponent.event.eventId,
|
||||
@"eventId": eventId,
|
||||
@"roomId": self.roomId
|
||||
};
|
||||
|
||||
[URLPreviewService.shared previewFor:lastComponent.link
|
||||
and:lastComponent.event
|
||||
[URLPreviewService.shared previewFor:component.link
|
||||
and:component.event
|
||||
with:self.mxSession
|
||||
success:^(URLPreviewData * _Nonnull urlPreviewData) {
|
||||
MXStrongifyAndReturnIfNil(self);
|
||||
|
||||
// Update the preview data and send a notification for refresh
|
||||
self.urlPreviewData = urlPreviewData;
|
||||
// Update the preview data, indicate that the message layout needs refreshing and send a notification for refresh
|
||||
component.urlPreviewData = urlPreviewData;
|
||||
[self invalidateLayout];
|
||||
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
[NSNotificationCenter.defaultCenter postNotificationName:URLPreviewDidUpdateNotification object:nil userInfo:userInfo];
|
||||
@@ -1127,8 +1119,9 @@ NSString *const URLPreviewDidUpdateNotification = @"URLPreviewDidUpdateNotificat
|
||||
} failure:^(NSError * _Nullable error) {
|
||||
MXLogDebug(@"[RoomBubbleCellData] Failed to get url preview")
|
||||
|
||||
// Don't show a preview and send a notification for refresh
|
||||
self.showURLPreview = NO;
|
||||
// Remove the loading URLPreviewView, indicate that the layout needs refreshing and send a notification for refresh
|
||||
component.showURLPreview = NO;
|
||||
[self invalidateLayout];
|
||||
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
[NSNotificationCenter.defaultCenter postNotificationName:URLPreviewDidUpdateNotification object:nil userInfo:userInfo];
|
||||
|
||||
@@ -369,14 +369,13 @@ const CGFloat kTypingCellHeight = 24;
|
||||
continue;
|
||||
}
|
||||
|
||||
NSURL *link = component.link;
|
||||
URLPreviewView *urlPreviewView;
|
||||
|
||||
// Show a URL preview if the component has a link that should be previewed.
|
||||
if (link && RiotSettings.shared.roomScreenShowsURLPreviews && cellData.showURLPreview)
|
||||
if (component.showURLPreview)
|
||||
{
|
||||
urlPreviewView = [URLPreviewView instantiate];
|
||||
urlPreviewView.preview = cellData.urlPreviewData;
|
||||
urlPreviewView.preview = component.urlPreviewData;
|
||||
urlPreviewView.delegate = self;
|
||||
|
||||
[temporaryViews addObject:urlPreviewView];
|
||||
@@ -388,8 +387,7 @@ const CGFloat kTypingCellHeight = 24;
|
||||
[bubbleCell.tmpSubviews addObject:urlPreviewView];
|
||||
|
||||
urlPreviewView.translatesAutoresizingMaskIntoConstraints = NO;
|
||||
// TODO: Use cellData.maxTextViewWidth when the view height is part of RoomBubbleCellData's additional height.
|
||||
urlPreviewView.availableWidth = tableView.contentSize.width;
|
||||
urlPreviewView.availableWidth = cellData.maxTextViewWidth;
|
||||
[bubbleCell.contentView addSubview:urlPreviewView];
|
||||
|
||||
CGFloat leftMargin = RoomBubbleCellLayout.reactionsViewLeftMargin;
|
||||
@@ -1221,37 +1219,36 @@ const CGFloat kTypingCellHeight = 24;
|
||||
// Use the link stored in the bubble component when opening the URL as we only
|
||||
// store the sanitized URL in the preview data which may differ to the message content.
|
||||
RoomBubbleCellData *cellData = [self cellDataOfEventWithEventId:eventID];
|
||||
|
||||
if (!cellData)
|
||||
MXKRoomBubbleComponent *component = [cellData bubbleComponentWithLinkForEventId:eventID];
|
||||
if (!component)
|
||||
{
|
||||
MXLogError(@"[RoomDataSource] Failed to open link: Unable to find bubble component.")
|
||||
return;
|
||||
}
|
||||
|
||||
MXKRoomBubbleComponent *lastComponent = cellData.bubbleComponents.lastObject;
|
||||
|
||||
if (!lastComponent)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
[UIApplication.sharedApplication vc_open:lastComponent.link completionHandler:nil];
|
||||
[UIApplication.sharedApplication vc_open:component.link completionHandler:nil];
|
||||
}
|
||||
|
||||
- (void)didCloseURLPreviewView:(URLPreviewView *)previewView for:(NSString *)eventID in:(NSString *)roomID
|
||||
{
|
||||
RoomBubbleCellData *cellData = [self cellDataOfEventWithEventId:eventID];
|
||||
|
||||
if (!cellData)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Remember that the user closed the preview so it isn't shown again.
|
||||
[URLPreviewService.shared closePreviewFor:eventID in:roomID];
|
||||
|
||||
// Get the component to remove the URL preview from.
|
||||
RoomBubbleCellData *cellData = [self cellDataOfEventWithEventId:eventID];
|
||||
MXKRoomBubbleComponent *component = [cellData bubbleComponentWithLinkForEventId:eventID];
|
||||
if (!component)
|
||||
{
|
||||
MXLogError(@"[RoomDataSource] Failed to close URL preview: Unable to find bubble component.")
|
||||
return;
|
||||
}
|
||||
|
||||
// Hide the preview, remove its data and refresh the cells.
|
||||
cellData.showURLPreview = NO;
|
||||
cellData.urlPreviewData = nil;
|
||||
component.showURLPreview = NO;
|
||||
component.urlPreviewData = nil;
|
||||
|
||||
[cellData invalidateLayout];
|
||||
|
||||
[self refreshCells];
|
||||
}
|
||||
|
||||
|
||||
@@ -356,8 +356,6 @@
|
||||
[self.mxRoom state:^(MXRoomState *roomState) {
|
||||
MXStrongifyAndReturnIfNil(self);
|
||||
|
||||
NSString *powerLevelTextFormat;
|
||||
|
||||
MXRoomPowerLevels *powerLevels = [roomState powerLevels];
|
||||
NSInteger powerLevel = [powerLevels powerLevelOfUserWithUserID:self.mxRoomMember.userId];
|
||||
|
||||
@@ -365,26 +363,18 @@
|
||||
|
||||
switch (roomPowerLevel) {
|
||||
case RoomPowerLevelAdmin:
|
||||
powerLevelTextFormat = NSLocalizedStringFromTable(@"room_member_power_level_admin_in", @"Vector", nil);
|
||||
self.roomMemberPowerLevelLabel.text = [VectorL10n roomMemberPowerLevelAdminIn:self.mxRoom.summary.displayname];
|
||||
self.roomMemberPowerLevelContainerView.hidden = NO;
|
||||
break;
|
||||
case RoomPowerLevelModerator:
|
||||
powerLevelTextFormat = NSLocalizedStringFromTable(@"room_member_power_level_moderator_in", @"Vector", nil);
|
||||
self.roomMemberPowerLevelLabel.text = [VectorL10n roomMemberPowerLevelModeratorIn:self.mxRoom.summary.displayname];
|
||||
self.roomMemberPowerLevelContainerView.hidden = NO;
|
||||
break;
|
||||
default:
|
||||
powerLevelTextFormat = nil;
|
||||
self.roomMemberPowerLevelLabel.text = nil;
|
||||
self.roomMemberPowerLevelContainerView.hidden = YES;
|
||||
break;
|
||||
}
|
||||
|
||||
NSString *powerLevelText;
|
||||
|
||||
if (powerLevelTextFormat)
|
||||
{
|
||||
NSString *roomName = self.mxRoom.summary.displayname;
|
||||
powerLevelText = [NSString stringWithFormat:powerLevelTextFormat, roomName];
|
||||
}
|
||||
|
||||
self.roomMemberPowerLevelLabel.text = powerLevelText;
|
||||
self.roomMemberPowerLevelContainerView.hidden = !powerLevelTextFormat;
|
||||
}];
|
||||
|
||||
NSString* presenceText;
|
||||
@@ -727,23 +717,23 @@
|
||||
{
|
||||
if (section == securityIndex)
|
||||
{
|
||||
return NSLocalizedStringFromTable(@"room_participants_action_section_security", @"Vector", nil);
|
||||
return [VectorL10n roomParticipantsActionSectionSecurity];
|
||||
}
|
||||
else if (section == adminToolsIndex)
|
||||
{
|
||||
return NSLocalizedStringFromTable(@"room_participants_action_section_admin_tools", @"Vector", nil);
|
||||
return [VectorL10n roomParticipantsActionSectionAdminTools];
|
||||
}
|
||||
else if (section == otherActionsIndex)
|
||||
{
|
||||
return NSLocalizedStringFromTable(@"room_participants_action_section_other", @"Vector", nil);
|
||||
return [VectorL10n roomParticipantsActionSectionOther];
|
||||
}
|
||||
else if (section == directChatsIndex)
|
||||
{
|
||||
return NSLocalizedStringFromTable(@"room_participants_action_section_direct_chats", @"Vector", nil);
|
||||
return [VectorL10n roomParticipantsActionSectionDirectChats];
|
||||
}
|
||||
else if (section == devicesIndex)
|
||||
{
|
||||
return NSLocalizedStringFromTable(@"room_participants_action_section_devices", @"Vector", nil);
|
||||
return [VectorL10n roomParticipantsActionSectionDevices];
|
||||
}
|
||||
|
||||
return nil;
|
||||
@@ -756,60 +746,60 @@
|
||||
switch (action)
|
||||
{
|
||||
case MXKRoomMemberDetailsActionInvite:
|
||||
title = NSLocalizedStringFromTable(@"room_participants_action_invite", @"Vector", nil);
|
||||
title = [VectorL10n roomParticipantsActionInvite];
|
||||
break;
|
||||
case MXKRoomMemberDetailsActionLeave:
|
||||
title = NSLocalizedStringFromTable(@"room_participants_action_leave", @"Vector", nil);
|
||||
title = [VectorL10n roomParticipantsActionLeave];
|
||||
break;
|
||||
case MXKRoomMemberDetailsActionKick:
|
||||
if (self.mxRoom.summary.roomType == MXRoomTypeSpace)
|
||||
{
|
||||
title = NSLocalizedStringFromTable(@"space_participants_action_remove", @"Vector", nil);
|
||||
title = [VectorL10n spaceParticipantsActionRemove];
|
||||
}
|
||||
else
|
||||
{
|
||||
title = NSLocalizedStringFromTable(@"room_participants_action_remove", @"Vector", nil);
|
||||
title = [VectorL10n roomParticipantsActionRemove];
|
||||
}
|
||||
break;
|
||||
case MXKRoomMemberDetailsActionBan:
|
||||
if (self.mxRoom.summary.roomType == MXRoomTypeSpace)
|
||||
{
|
||||
title = NSLocalizedStringFromTable(@"space_participants_action_ban", @"Vector", nil);
|
||||
title = [VectorL10n spaceParticipantsActionBan];
|
||||
}
|
||||
else
|
||||
{
|
||||
title = NSLocalizedStringFromTable(@"room_participants_action_ban", @"Vector", nil);
|
||||
title = [VectorL10n roomParticipantsActionBan];
|
||||
}
|
||||
break;
|
||||
case MXKRoomMemberDetailsActionUnban:
|
||||
title = NSLocalizedStringFromTable(@"room_participants_action_unban", @"Vector", nil);
|
||||
title = [VectorL10n roomParticipantsActionUnban];
|
||||
break;
|
||||
case MXKRoomMemberDetailsActionIgnore:
|
||||
title = NSLocalizedStringFromTable(@"room_participants_action_ignore", @"Vector", nil);
|
||||
title = [VectorL10n roomParticipantsActionIgnore];
|
||||
break;
|
||||
case MXKRoomMemberDetailsActionUnignore:
|
||||
title = NSLocalizedStringFromTable(@"room_participants_action_unignore", @"Vector", nil);
|
||||
title = [VectorL10n roomParticipantsActionUnignore];
|
||||
break;
|
||||
case MXKRoomMemberDetailsActionSetDefaultPowerLevel:
|
||||
title = NSLocalizedStringFromTable(@"room_participants_action_set_default_power_level", @"Vector", nil);
|
||||
title = [VectorL10n roomParticipantsActionSetDefaultPowerLevel];
|
||||
break;
|
||||
case MXKRoomMemberDetailsActionSetModerator:
|
||||
title = NSLocalizedStringFromTable(@"room_participants_action_set_moderator", @"Vector", nil);
|
||||
title = [VectorL10n roomParticipantsActionSetModerator];
|
||||
break;
|
||||
case MXKRoomMemberDetailsActionSetAdmin:
|
||||
title = NSLocalizedStringFromTable(@"room_participants_action_set_admin", @"Vector", nil);
|
||||
title = [VectorL10n roomParticipantsActionSetAdmin];
|
||||
break;
|
||||
case MXKRoomMemberDetailsActionStartChat:
|
||||
title = NSLocalizedStringFromTable(@"room_participants_action_start_chat", @"Vector", nil);
|
||||
title = [VectorL10n roomParticipantsActionStartNewChat];
|
||||
break;
|
||||
case MXKRoomMemberDetailsActionStartVoiceCall:
|
||||
title = NSLocalizedStringFromTable(@"room_participants_action_start_voice_call", @"Vector", nil);
|
||||
title = [VectorL10n roomParticipantsActionStartVoiceCall];
|
||||
break;
|
||||
case MXKRoomMemberDetailsActionStartVideoCall:
|
||||
title = NSLocalizedStringFromTable(@"room_participants_action_start_video_call", @"Vector", nil);
|
||||
title = [VectorL10n roomParticipantsActionStartVideoCall];
|
||||
break;
|
||||
case MXKRoomMemberDetailsActionMention:
|
||||
title = NSLocalizedStringFromTable(@"room_participants_action_mention", @"Vector", nil);
|
||||
title = [VectorL10n roomParticipantsActionMention];
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
@@ -834,26 +824,26 @@
|
||||
|
||||
switch (self.encryptionTrustLevel) {
|
||||
case UserEncryptionTrustLevelTrusted:
|
||||
statusText = NSLocalizedStringFromTable(@"room_participants_action_security_status_verified", @"Vector", nil);
|
||||
statusText = [VectorL10n roomParticipantsActionSecurityStatusVerified];
|
||||
break;
|
||||
case UserEncryptionTrustLevelNotVerified:
|
||||
case UserEncryptionTrustLevelNoCrossSigning:
|
||||
{
|
||||
if (self.isRoomMemberCurrentUser)
|
||||
{
|
||||
statusText = NSLocalizedStringFromTable(@"room_participants_action_security_status_complete_security", @"Vector", nil);
|
||||
statusText = [VectorL10n roomParticipantsActionSecurityStatusCompleteSecurity];
|
||||
}
|
||||
else
|
||||
{
|
||||
statusText = NSLocalizedStringFromTable(@"room_participants_action_security_status_verify", @"Vector", nil);
|
||||
statusText = [VectorL10n roomParticipantsActionSecurityStatusVerify];
|
||||
}
|
||||
}
|
||||
break;
|
||||
case UserEncryptionTrustLevelWarning:
|
||||
statusText = NSLocalizedStringFromTable(@"room_participants_action_security_status_warning", @"Vector", nil);
|
||||
statusText = [VectorL10n roomParticipantsActionSecurityStatusWarning];
|
||||
break;
|
||||
default:
|
||||
statusText = NSLocalizedStringFromTable(@"room_participants_action_security_status_loading", @"Vector", nil);
|
||||
statusText = [VectorL10n roomParticipantsActionSecurityStatusLoading];
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -884,21 +874,21 @@
|
||||
case UserEncryptionTrustLevelTrusted:
|
||||
{
|
||||
NSString *info = (self.mxRoom.isDirect) ?
|
||||
NSLocalizedStringFromTable(@"room_participants_security_information_room_encrypted_for_dm", @"Vector", nil) :
|
||||
NSLocalizedStringFromTable(@"room_participants_security_information_room_encrypted", @"Vector", nil);
|
||||
[VectorL10n roomParticipantsSecurityInformationRoomEncryptedForDm] :
|
||||
[VectorL10n roomParticipantsSecurityInformationRoomEncrypted];
|
||||
[encryptionInformation appendString:info];
|
||||
}
|
||||
break;
|
||||
case UserEncryptionTrustLevelNone:
|
||||
{
|
||||
NSString *info = (self.mxRoom.isDirect) ?
|
||||
NSLocalizedStringFromTable(@"room_participants_security_information_room_not_encrypted_for_dm", @"Vector", nil) :
|
||||
NSLocalizedStringFromTable(@"room_participants_security_information_room_not_encrypted", @"Vector", nil);
|
||||
[VectorL10n roomParticipantsSecurityInformationRoomNotEncryptedForDm] :
|
||||
[VectorL10n roomParticipantsSecurityInformationRoomNotEncrypted];
|
||||
[encryptionInformation appendString:info];
|
||||
}
|
||||
break;
|
||||
case UserEncryptionTrustLevelUnknown:
|
||||
[encryptionInformation appendString:NSLocalizedStringFromTable(@"room_participants_security_information_loading", @"Vector", nil)];
|
||||
[encryptionInformation appendString:[VectorL10n roomParticipantsSecurityLoading]];
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
@@ -984,7 +974,7 @@
|
||||
roomCell.avatarImageView.image = [UIImage imageNamed:@"start_chat"];
|
||||
roomCell.avatarImageView.defaultBackgroundColor = [UIColor clearColor];
|
||||
roomCell.avatarImageView.userInteractionEnabled = NO;
|
||||
roomCell.titleLabel.text = NSLocalizedStringFromTable(@"room_participants_action_start_new_chat", @"Vector", nil);
|
||||
roomCell.titleLabel.text = [VectorL10n roomParticipantsActionStartNewChat];
|
||||
}
|
||||
|
||||
cell = roomCell;
|
||||
@@ -1132,7 +1122,7 @@
|
||||
__weak typeof(self) weakSelf = self;
|
||||
|
||||
// Ban
|
||||
currentAlert = [UIAlertController alertControllerWithTitle:NSLocalizedStringFromTable(@"room_event_action_ban_prompt_reason", @"Vector", nil)
|
||||
currentAlert = [UIAlertController alertControllerWithTitle:[VectorL10n roomEventActionBanPromptReason]
|
||||
message:nil
|
||||
preferredStyle:UIAlertControllerStyleAlert];
|
||||
|
||||
@@ -1142,7 +1132,7 @@
|
||||
textField.keyboardType = UIKeyboardTypeDefault;
|
||||
}];
|
||||
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[NSBundle mxk_localizedStringForKey:@"cancel"]
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n cancel]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -1154,7 +1144,7 @@
|
||||
|
||||
}]];
|
||||
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:NSLocalizedStringFromTable(@"ban", @"Vector", nil)
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n ban]
|
||||
style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) {
|
||||
|
||||
if (weakSelf)
|
||||
@@ -1196,7 +1186,7 @@
|
||||
__weak typeof(self) weakSelf = self;
|
||||
|
||||
// Kick
|
||||
currentAlert = [UIAlertController alertControllerWithTitle:NSLocalizedStringFromTable(@"room_event_action_kick_prompt_reason", @"Vector", nil)
|
||||
currentAlert = [UIAlertController alertControllerWithTitle:[VectorL10n roomEventActionKickPromptReason]
|
||||
message:nil
|
||||
preferredStyle:UIAlertControllerStyleAlert];
|
||||
|
||||
@@ -1206,7 +1196,7 @@
|
||||
textField.keyboardType = UIKeyboardTypeDefault;
|
||||
}];
|
||||
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[NSBundle mxk_localizedStringForKey:@"cancel"]
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n cancel]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -1218,7 +1208,7 @@
|
||||
|
||||
}]];
|
||||
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:NSLocalizedStringFromTable(@"remove", @"Vector", nil)
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n remove]
|
||||
style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) {
|
||||
|
||||
if (weakSelf)
|
||||
@@ -1288,7 +1278,7 @@
|
||||
__block MXKImageView * avatarFullScreenView = [[MXKImageView alloc] initWithFrame:CGRectZero];
|
||||
avatarFullScreenView.stretchable = YES;
|
||||
|
||||
[avatarFullScreenView setRightButtonTitle:[NSBundle mxk_localizedStringForKey:@"ok"]
|
||||
[avatarFullScreenView setRightButtonTitle:[MatrixKitL10n ok]
|
||||
handler:^(MXKImageView* imageView, NSString* buttonTitle) {
|
||||
|
||||
MXStrongifyAndReturnIfNil(self);
|
||||
|
||||
@@ -112,19 +112,19 @@
|
||||
|
||||
[NSLayoutConstraint activateConstraints:@[_searchBarTopConstraint]];
|
||||
|
||||
self.navigationItem.title = NSLocalizedStringFromTable(@"room_participants_title", @"Vector", nil);
|
||||
self.navigationItem.title = [VectorL10n roomParticipantsTitle];
|
||||
|
||||
if (self.mxRoom.summary.roomType == MXRoomTypeSpace)
|
||||
{
|
||||
_searchBarView.placeholder = NSLocalizedStringFromTable(@"search_default_placeholder", @"Vector", nil);
|
||||
_searchBarView.placeholder = [VectorL10n searchDefaultPlaceholder];
|
||||
}
|
||||
else if (self.mxRoom.isDirect)
|
||||
{
|
||||
_searchBarView.placeholder = NSLocalizedStringFromTable(@"room_participants_filter_room_members_for_dm", @"Vector", nil);
|
||||
_searchBarView.placeholder = [VectorL10n roomParticipantsFilterRoomMembersForDm];
|
||||
}
|
||||
else
|
||||
{
|
||||
_searchBarView.placeholder = NSLocalizedStringFromTable(@"room_participants_filter_room_members", @"Vector", nil);
|
||||
_searchBarView.placeholder = [VectorL10n roomParticipantsFilterRoomMembers];
|
||||
}
|
||||
_searchBarView.returnKeyType = UIReturnKeyDone;
|
||||
_searchBarView.autocapitalizationType = UITextAutocapitalizationTypeNone;
|
||||
@@ -347,15 +347,15 @@
|
||||
|
||||
if (self.mxRoom.summary.roomType == MXRoomTypeSpace)
|
||||
{
|
||||
self.searchBarView.placeholder = NSLocalizedStringFromTable(@"search_default_placeholder", @"Vector", nil);
|
||||
self.searchBarView.placeholder = [VectorL10n searchDefaultPlaceholder];
|
||||
}
|
||||
else if (self.mxRoom.isDirect)
|
||||
{
|
||||
self.searchBarView.placeholder = NSLocalizedStringFromTable(@"room_participants_filter_room_members_for_dm", @"Vector", nil);
|
||||
self.searchBarView.placeholder = [VectorL10n roomParticipantsFilterRoomMembersForDm];
|
||||
}
|
||||
else
|
||||
{
|
||||
self.searchBarView.placeholder = NSLocalizedStringFromTable(@"room_participants_filter_room_members", @"Vector", nil);
|
||||
self.searchBarView.placeholder = [VectorL10n roomParticipantsFilterRoomMembers];
|
||||
}
|
||||
|
||||
// Update the current matrix session.
|
||||
@@ -574,7 +574,7 @@
|
||||
}
|
||||
|
||||
[contactsPickerViewController showSearch:YES];
|
||||
contactsPickerViewController.searchBar.placeholder = NSLocalizedStringFromTable(@"room_participants_invite_another_user", @"Vector", nil);
|
||||
contactsPickerViewController.searchBar.placeholder = [VectorL10n roomParticipantsInviteAnotherUser];
|
||||
|
||||
// Apply the search pattern if any
|
||||
if (currentSearchText)
|
||||
@@ -613,7 +613,7 @@
|
||||
if (mxMember.membership == MXMembershipJoin || mxMember.membership == MXMembershipInvite)
|
||||
{
|
||||
// The user is in this room
|
||||
NSString *displayName = NSLocalizedStringFromTable(@"you", @"Vector", nil);
|
||||
NSString *displayName = [VectorL10n you];
|
||||
|
||||
self->userParticipant = [[Contact alloc] initMatrixContactWithDisplayName:displayName andMatrixID:userId];
|
||||
self->userParticipant.mxMember = [roomState.members memberWithUserId:userId];
|
||||
@@ -1038,10 +1038,10 @@
|
||||
|
||||
switch (roomPowerLevel) {
|
||||
case RoomPowerLevelAdmin:
|
||||
powerLevelText = NSLocalizedStringFromTable(@"room_member_power_level_short_admin", @"Vector", nil);
|
||||
powerLevelText = [VectorL10n roomMemberPowerLevelShortAdmin];
|
||||
break;
|
||||
case RoomPowerLevelModerator:
|
||||
powerLevelText = NSLocalizedStringFromTable(@"room_member_power_level_short_moderator", @"Vector", nil);
|
||||
powerLevelText = [VectorL10n roomMemberPowerLevelShortModerator];
|
||||
break;
|
||||
default:
|
||||
powerLevelText = nil;
|
||||
@@ -1139,7 +1139,7 @@
|
||||
headerLabel.font = [UIFont boldSystemFontOfSize:15.0];
|
||||
headerLabel.backgroundColor = [UIColor clearColor];
|
||||
|
||||
headerLabel.text = NSLocalizedStringFromTable(@"room_participants_invited_section", @"Vector", nil);
|
||||
headerLabel.text = [VectorL10n roomParticipantsInvitedSection];
|
||||
|
||||
[sectionHeader addSubview:headerLabel];
|
||||
}
|
||||
@@ -1290,20 +1290,20 @@
|
||||
NSString *title, *message;
|
||||
if (self.mxRoom.isDirect)
|
||||
{
|
||||
title = NSLocalizedStringFromTable(@"room_participants_leave_prompt_title_for_dm", @"Vector", nil);
|
||||
message = NSLocalizedStringFromTable(@"room_participants_leave_prompt_msg_for_dm", @"Vector", nil);
|
||||
title = [VectorL10n roomParticipantsLeavePromptTitleForDm];
|
||||
message = [VectorL10n roomParticipantsLeavePromptMsgForDm];
|
||||
}
|
||||
else
|
||||
{
|
||||
title = NSLocalizedStringFromTable(@"room_participants_leave_prompt_title", @"Vector", nil);
|
||||
message = NSLocalizedStringFromTable(@"room_participants_leave_prompt_msg", @"Vector", nil);
|
||||
title = [VectorL10n roomParticipantsLeavePromptTitle];
|
||||
message = [VectorL10n roomParticipantsLeavePromptMsg];
|
||||
}
|
||||
|
||||
currentAlert = [UIAlertController alertControllerWithTitle:title
|
||||
message:message
|
||||
preferredStyle:UIAlertControllerStyleAlert];
|
||||
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[NSBundle mxk_localizedStringForKey:@"cancel"]
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n cancel]
|
||||
style:UIAlertActionStyleCancel
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -1312,7 +1312,7 @@
|
||||
|
||||
}]];
|
||||
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:NSLocalizedStringFromTable(@"leave", @"Vector", nil)
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n leave]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -1383,12 +1383,12 @@
|
||||
NSString *memberUserId = contact.mxMember.userId;
|
||||
|
||||
// Kick ?
|
||||
NSString *promptMsg = [NSString stringWithFormat:NSLocalizedStringFromTable(@"room_participants_remove_prompt_msg", @"Vector", nil), (contact ? contact.displayName : memberUserId)];
|
||||
currentAlert = [UIAlertController alertControllerWithTitle:NSLocalizedStringFromTable(@"room_participants_remove_prompt_title", @"Vector", nil)
|
||||
NSString *promptMsg = [VectorL10n roomParticipantsRemovePromptMsg:(contact ? contact.displayName : memberUserId)];
|
||||
currentAlert = [UIAlertController alertControllerWithTitle:[VectorL10n roomParticipantsRemovePromptTitle]
|
||||
message:promptMsg
|
||||
preferredStyle:UIAlertControllerStyleAlert];
|
||||
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[NSBundle mxk_localizedStringForKey:@"cancel"]
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n cancel]
|
||||
style:UIAlertActionStyleCancel
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -1397,7 +1397,7 @@
|
||||
|
||||
}]];
|
||||
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:NSLocalizedStringFromTable(@"remove", @"Vector", nil)
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n remove]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -1434,10 +1434,10 @@
|
||||
{
|
||||
// This is a third-party invite
|
||||
currentAlert = [UIAlertController alertControllerWithTitle:nil
|
||||
message:NSLocalizedStringFromTable(@"room_participants_remove_third_party_invite_prompt_msg", @"Vector", nil)
|
||||
message:[VectorL10n roomParticipantsRemoveThirdPartyInvitePromptMsg]
|
||||
preferredStyle:UIAlertControllerStyleAlert];
|
||||
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[NSBundle mxk_localizedStringForKey:@"cancel"]
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n cancel]
|
||||
style:UIAlertActionStyleCancel
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -1446,7 +1446,7 @@
|
||||
|
||||
}]];
|
||||
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:NSLocalizedStringFromTable(@"remove", @"Vector", nil)
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n remove]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -1504,12 +1504,12 @@
|
||||
}
|
||||
|
||||
// Invite ?
|
||||
NSString *promptMsg = [NSString stringWithFormat:NSLocalizedStringFromTable(@"room_participants_invite_prompt_msg", @"Vector", nil), contact.displayName];
|
||||
currentAlert = [UIAlertController alertControllerWithTitle:NSLocalizedStringFromTable(@"room_participants_invite_prompt_title", @"Vector", nil)
|
||||
NSString *promptMsg = [VectorL10n roomParticipantsInvitePromptMsg:contact.displayName];
|
||||
currentAlert = [UIAlertController alertControllerWithTitle:[VectorL10n roomParticipantsInvitePromptTitle]
|
||||
message:promptMsg
|
||||
preferredStyle:UIAlertControllerStyleAlert];
|
||||
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[NSBundle mxk_localizedStringForKey:@"cancel"]
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n cancel]
|
||||
style:UIAlertActionStyleCancel
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -1521,7 +1521,7 @@
|
||||
|
||||
}]];
|
||||
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:NSLocalizedStringFromTable(@"invite", @"Vector", nil)
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n invite]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -1595,7 +1595,7 @@
|
||||
if ([error.domain isEqualToString:kMXRestClientErrorDomain]
|
||||
&& error.code == MXRestClientErrorMissingIdentityServer)
|
||||
{
|
||||
NSString *message = [NSBundle mxk_localizedStringForKey:@"error_invite_3pid_with_no_identity_server"];
|
||||
NSString *message = [VectorL10n errorInvite3pidWithNoIdentityServer];
|
||||
[[AppDelegate theDelegate] showAlertWithTitle:message message:nil];
|
||||
}
|
||||
else
|
||||
|
||||
@@ -146,10 +146,10 @@
|
||||
- (void)configureViews
|
||||
{
|
||||
self.containerView.layer.cornerRadius = 20;
|
||||
self.titleLabel.text = NSLocalizedStringFromTable(@"read_receipts_list", @"Vector", nil);
|
||||
self.titleLabel.text = [VectorL10n readReceiptsList];
|
||||
|
||||
[_closeButton setTitle:[NSBundle mxk_localizedStringForKey:@"close"] forState:UIControlStateNormal];
|
||||
[_closeButton setTitle:[NSBundle mxk_localizedStringForKey:@"close"] forState:UIControlStateHighlighted];
|
||||
[_closeButton setTitle:[MatrixKitL10n close] forState:UIControlStateNormal];
|
||||
[_closeButton setTitle:[MatrixKitL10n close] forState:UIControlStateHighlighted];
|
||||
}
|
||||
|
||||
- (void)configureReceiptsTableView
|
||||
@@ -223,7 +223,7 @@
|
||||
}
|
||||
if (indexPath.row < self.receipts.count)
|
||||
{
|
||||
NSString *receiptReadText = NSLocalizedStringFromTable(@"receipt_status_read", @"Vector", nil);
|
||||
NSString *receiptReadText = [VectorL10n receiptStatusRead];
|
||||
NSString *receiptTimeText = [(MXKEventFormatter*)self.session.roomSummaryUpdateDelegate dateStringFromTimestamp:self.receipts[indexPath.row].ts withTime:YES];
|
||||
|
||||
NSMutableAttributedString *receiptDescription = [[NSMutableAttributedString alloc] initWithString:receiptReadText attributes:@{NSForegroundColorAttributeName : ThemeService.shared.theme.textSecondaryColor, NSFontAttributeName : [UIFont boldSystemFontOfSize:15]}];
|
||||
|
||||
@@ -441,7 +441,7 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05;
|
||||
self.errorPresenter = [MXKErrorAlertPresentation new];
|
||||
self.roomMessageURLParser = [RoomMessageURLParser new];
|
||||
|
||||
self.jumpToLastUnreadLabel.text = NSLocalizedStringFromTable(@"room_jump_to_first_unread", @"Vector", nil);
|
||||
self.jumpToLastUnreadLabel.text = [VectorL10n roomJumpToFirstUnread];
|
||||
|
||||
// Observe user interface theme change.
|
||||
kThemeServiceDidChangeThemeNotificationObserver = [[NSNotificationCenter defaultCenter] addObserverForName:kThemeServiceDidChangeThemeNotification object:nil queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification *notif) {
|
||||
@@ -1463,7 +1463,7 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05;
|
||||
style:UIBarButtonItemStylePlain
|
||||
target:self
|
||||
action:@selector(onVideoCallPressed:)];
|
||||
item.accessibilityLabel = NSLocalizedStringFromTable(@"room_accessibility_video_call", @"Vector", nil);
|
||||
item.accessibilityLabel = [VectorL10n roomAccessibilityVideoCall];
|
||||
|
||||
return item;
|
||||
}
|
||||
@@ -1603,7 +1603,7 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05;
|
||||
style:UIBarButtonItemStylePlain
|
||||
target:self
|
||||
action:@selector(onVoiceCallPressed:)];
|
||||
itemVoice.accessibilityLabel = NSLocalizedStringFromTable(@"room_accessibility_call", @"Vector", nil);
|
||||
itemVoice.accessibilityLabel = [VectorL10n roomAccessibilityCall];
|
||||
itemVoice.enabled = !self.isCallActive;
|
||||
[rightBarButtonItems addObject:itemVoice];
|
||||
|
||||
@@ -1630,14 +1630,14 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05;
|
||||
CallTileActionButton *button = [CallTileActionButton new];
|
||||
[button setImage:[UIImage imageNamed:@"call_video_icon"]
|
||||
forState:UIControlStateNormal];
|
||||
[button setTitle:NSLocalizedStringFromTable(@"room_join_group_call", @"Vector", nil)
|
||||
[button setTitle:[VectorL10n roomJoinGroupCall]
|
||||
forState:UIControlStateNormal];
|
||||
[button addTarget:self
|
||||
action:@selector(onVideoCallPressed:)
|
||||
forControlEvents:UIControlEventTouchUpInside];
|
||||
button.contentEdgeInsets = UIEdgeInsetsMake(4, 12, 4, 12);
|
||||
UIBarButtonItem *item = [[UIBarButtonItem alloc] initWithCustomView:button];
|
||||
item.accessibilityLabel = NSLocalizedStringFromTable(@"room_accessibility_video_call", @"Vector", nil);
|
||||
item.accessibilityLabel = [VectorL10n roomAccessibilityVideoCall];
|
||||
[rightBarButtonItems addObject:item];
|
||||
|
||||
hasCustomJoinButton = YES;
|
||||
@@ -1663,7 +1663,7 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05;
|
||||
style:UIBarButtonItemStylePlain
|
||||
target:self
|
||||
action:@selector(onIntegrationsPressed:)];
|
||||
item.accessibilityLabel = NSLocalizedStringFromTable(@"room_accessibility_integrations", @"Vector", nil);
|
||||
item.accessibilityLabel = [VectorL10n roomAccessibilityIntegrations];
|
||||
if (hasCustomJoinButton)
|
||||
{
|
||||
item.imageInsets = UIEdgeInsetsMake(0, -5, 0, -5);
|
||||
@@ -1711,7 +1711,7 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05;
|
||||
userPictureView = roomInputToolbarView.pictureView;
|
||||
|
||||
// For the moment, there is only one reason to use `DisabledRoomInputToolbarView`
|
||||
[roomInputToolbarView setDisabledReason:NSLocalizedStringFromTable(@"room_do_not_have_permission_to_post", @"Vector", nil)];
|
||||
[roomInputToolbarView setDisabledReason:[VectorL10n roomDoNotHavePermissionToPost]];
|
||||
}
|
||||
|
||||
// Set user picture in input toolbar
|
||||
@@ -2020,17 +2020,16 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05;
|
||||
{
|
||||
// The Sticker picker widget is not installed yet. Propose the user to install it
|
||||
MXWeakify(self);
|
||||
|
||||
|
||||
[currentAlert dismissViewControllerAnimated:NO completion:nil];
|
||||
|
||||
NSString *alertMessage = [NSString stringWithFormat:@"%@\n%@",
|
||||
NSLocalizedStringFromTable(@"widget_sticker_picker_no_stickerpacks_alert", @"Vector", nil),
|
||||
NSLocalizedStringFromTable(@"widget_sticker_picker_no_stickerpacks_alert_add_now", @"Vector", nil)
|
||||
];
|
||||
|
||||
[VectorL10n widgetStickerPickerNoStickerpacksAlert],
|
||||
[VectorL10n widgetStickerPickerNoStickerpacksAlertAddNow]];
|
||||
|
||||
currentAlert = [UIAlertController alertControllerWithTitle:nil message:alertMessage preferredStyle:UIAlertControllerStyleAlert];
|
||||
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[NSBundle mxk_localizedStringForKey:@"no"]
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n no]
|
||||
style:UIAlertActionStyleCancel
|
||||
handler:^(UIAlertAction * action)
|
||||
{
|
||||
@@ -2039,7 +2038,7 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05;
|
||||
|
||||
}]];
|
||||
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[NSBundle mxk_localizedStringForKey:@"yes"]
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n yes]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action)
|
||||
{
|
||||
@@ -2986,8 +2985,8 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05;
|
||||
|
||||
// Check app permissions first
|
||||
[MXKTools checkAccessForCall:YES
|
||||
manualChangeMessageForAudio:[NSString stringWithFormat:[NSBundle mxk_localizedStringForKey:@"microphone_access_not_granted_for_call"], AppInfo.current.displayName]
|
||||
manualChangeMessageForVideo:[NSString stringWithFormat:[NSBundle mxk_localizedStringForKey:@"camera_access_not_granted_for_call"], AppInfo.current.displayName]
|
||||
manualChangeMessageForAudio:[MatrixKitL10n microphoneAccessNotGrantedForCall:AppInfo.current.displayName]
|
||||
manualChangeMessageForVideo:[MatrixKitL10n cameraAccessNotGrantedForCall:AppInfo.current.displayName]
|
||||
showPopUpInViewController:self completionHandler:^(BOOL granted) {
|
||||
|
||||
MXStrongifyAndReturnIfNil(self);
|
||||
@@ -3084,7 +3083,7 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05;
|
||||
// Add actions for a failed event
|
||||
if (selectedEvent.sentState == MXEventSentStateFailed)
|
||||
{
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:NSLocalizedStringFromTable(@"retry", @"Vector", nil)
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n retry]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -3100,7 +3099,7 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05;
|
||||
|
||||
}]];
|
||||
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:NSLocalizedStringFromTable(@"room_event_action_delete", @"Vector", nil)
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n roomEventActionDelete]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -3137,7 +3136,7 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05;
|
||||
selectedEvent.sentState == MXEventSentStateEncrypting ||
|
||||
selectedEvent.sentState == MXEventSentStateSending)
|
||||
{
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:NSLocalizedStringFromTable(@"room_event_action_cancel_send", @"Vector", nil)
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n roomEventActionCancelSend]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action)
|
||||
{
|
||||
@@ -3159,7 +3158,7 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05;
|
||||
|
||||
if (!isJitsiCallEvent)
|
||||
{
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:NSLocalizedStringFromTable(@"room_event_action_quote", @"Vector", nil)
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n roomEventActionQuote]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -3181,7 +3180,7 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05;
|
||||
|
||||
if (!isJitsiCallEvent && BuildSettings.messageDetailsAllowShare)
|
||||
{
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:NSLocalizedStringFromTable(@"room_event_action_share", @"Vector", nil)
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n roomEventActionShare]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -3214,7 +3213,7 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05;
|
||||
{
|
||||
if (attachment.type == MXKAttachmentTypeImage || attachment.type == MXKAttachmentTypeVideo)
|
||||
{
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:NSLocalizedStringFromTable(@"room_event_action_save", @"Vector", nil)
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n roomEventActionSave]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -3259,7 +3258,7 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05;
|
||||
NSString *uploadId = roomBubbleTableViewCell.bubbleData.attachment.contentURL;
|
||||
if ([MXMediaManager existingUploaderWithId:uploadId])
|
||||
{
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:NSLocalizedStringFromTable(@"room_event_action_cancel_send", @"Vector", nil)
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n roomEventActionCancelSend]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -3297,7 +3296,7 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05;
|
||||
{
|
||||
if (BuildSettings.messageDetailsAllowShare)
|
||||
{
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:NSLocalizedStringFromTable(@"room_event_action_share", @"Vector", nil)
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n roomEventActionShare]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -3346,7 +3345,7 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05;
|
||||
NSString *downloadId = roomBubbleTableViewCell.bubbleData.attachment.downloadId;
|
||||
if ([MXMediaManager existingDownloaderWithIdentifier:downloadId])
|
||||
{
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:NSLocalizedStringFromTable(@"room_event_action_cancel_download", @"Vector", nil)
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n roomEventActionCancelDownload]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -3374,7 +3373,7 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05;
|
||||
// because it breaks everything
|
||||
if (selectedEvent.eventType != MXEventTypeRoomEncryption)
|
||||
{
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:NSLocalizedStringFromTable(@"room_event_action_redact", @"Vector", nil)
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n roomEventActionRedact]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -3408,7 +3407,7 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05;
|
||||
|
||||
if (BuildSettings.messageDetailsAllowPermalink)
|
||||
{
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:NSLocalizedStringFromTable(@"room_event_action_permalink", @"Vector", nil)
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n roomEventActionPermalink]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -3437,7 +3436,7 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05;
|
||||
// Add reaction history if event contains reactions
|
||||
if (roomBubbleTableViewCell.bubbleData.reactions[selectedEvent.eventId].aggregatedReactionsWithNonZeroCount)
|
||||
{
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:NSLocalizedStringFromTable(@"room_event_action_reaction_history", @"Vector", nil)
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n roomEventActionReactionHistory]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -3450,7 +3449,7 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05;
|
||||
|
||||
if (BuildSettings.messageDetailsAllowViewSource)
|
||||
{
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:NSLocalizedStringFromTable(@"room_event_action_view_source", @"Vector", nil)
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n roomEventActionViewSource]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -3470,7 +3469,7 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05;
|
||||
// Add "View Decrypted Source" for e2ee event we can decrypt
|
||||
if (selectedEvent.isEncrypted && selectedEvent.clearEvent)
|
||||
{
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:NSLocalizedStringFromTable(@"room_event_action_view_decrypted_source", @"Vector", nil)
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n roomEventActionViewDecryptedSource]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -3490,7 +3489,7 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05;
|
||||
|
||||
if (![selectedEvent.sender isEqualToString:self.mainSession.myUser.userId] && RiotSettings.shared.roomContextualMenuShowReportContentOption)
|
||||
{
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:NSLocalizedStringFromTable(@"room_event_action_report", @"Vector", nil)
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n roomEventActionReport]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -3501,7 +3500,7 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05;
|
||||
[self cancelEventSelection];
|
||||
|
||||
// Prompt user to enter a description of the problem content.
|
||||
self->currentAlert = [UIAlertController alertControllerWithTitle:NSLocalizedStringFromTable(@"room_event_action_report_prompt_reason", @"Vector", nil) message:nil preferredStyle:UIAlertControllerStyleAlert];
|
||||
self->currentAlert = [UIAlertController alertControllerWithTitle:[VectorL10n roomEventActionReportPromptReason] message:nil preferredStyle:UIAlertControllerStyleAlert];
|
||||
|
||||
[self->currentAlert addTextFieldWithConfigurationHandler:^(UITextField *textField) {
|
||||
textField.secureTextEntry = NO;
|
||||
@@ -3509,7 +3508,7 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05;
|
||||
textField.keyboardType = UIKeyboardTypeDefault;
|
||||
}];
|
||||
|
||||
[self->currentAlert addAction:[UIAlertAction actionWithTitle:[NSBundle mxk_localizedStringForKey:@"ok"] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) {
|
||||
[self->currentAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n ok] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) {
|
||||
|
||||
if (weakSelf)
|
||||
{
|
||||
@@ -3525,9 +3524,9 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05;
|
||||
[self stopActivityIndicator];
|
||||
|
||||
// Prompt user to ignore content from this user
|
||||
self->currentAlert = [UIAlertController alertControllerWithTitle:NSLocalizedStringFromTable(@"room_event_action_report_prompt_ignore_user", @"Vector", nil) message:nil preferredStyle:UIAlertControllerStyleAlert];
|
||||
self->currentAlert = [UIAlertController alertControllerWithTitle:[VectorL10n roomEventActionReportPromptIgnoreUser] message:nil preferredStyle:UIAlertControllerStyleAlert];
|
||||
|
||||
[self->currentAlert addAction:[UIAlertAction actionWithTitle:[NSBundle mxk_localizedStringForKey:@"yes"] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) {
|
||||
[self->currentAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n yes] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) {
|
||||
|
||||
if (weakSelf)
|
||||
{
|
||||
@@ -3556,7 +3555,7 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05;
|
||||
|
||||
}]];
|
||||
|
||||
[self->currentAlert addAction:[UIAlertAction actionWithTitle:[NSBundle mxk_localizedStringForKey:@"no"] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) {
|
||||
[self->currentAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n no] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) {
|
||||
|
||||
if (weakSelf)
|
||||
{
|
||||
@@ -3582,7 +3581,7 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05;
|
||||
|
||||
}]];
|
||||
|
||||
[self->currentAlert addAction:[UIAlertAction actionWithTitle:[NSBundle mxk_localizedStringForKey:@"cancel"] style:UIAlertActionStyleCancel handler:^(UIAlertAction * action) {
|
||||
[self->currentAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n cancel] style:UIAlertActionStyleCancel handler:^(UIAlertAction * action) {
|
||||
|
||||
if (weakSelf)
|
||||
{
|
||||
@@ -3600,7 +3599,7 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05;
|
||||
|
||||
if (!isJitsiCallEvent && self.roomDataSource.room.summary.isEncrypted)
|
||||
{
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:NSLocalizedStringFromTable(@"room_event_action_view_encryption", @"Vector", nil)
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n roomEventActionViewEncryption]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -3617,7 +3616,7 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05;
|
||||
}
|
||||
}
|
||||
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:NSLocalizedStringFromTable(@"cancel", @"Vector", nil)
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n cancel]
|
||||
style:UIAlertActionStyleCancel
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -3778,10 +3777,9 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05;
|
||||
if (visibleURL && ![url isEqual:visibleURL])
|
||||
{
|
||||
// urls are different, show confirmation alert
|
||||
NSString *formatStr = NSLocalizedStringFromTable(@"external_link_confirmation_message", @"Vector", nil);
|
||||
UIAlertController *alert = [UIAlertController alertControllerWithTitle:NSLocalizedStringFromTable(@"external_link_confirmation_title", @"Vector", nil) message:[NSString stringWithFormat:formatStr, visibleURL.absoluteString, url.absoluteString] preferredStyle:UIAlertControllerStyleAlert];
|
||||
UIAlertController *alert = [UIAlertController alertControllerWithTitle:[VectorL10n externalLinkConfirmationTitle] message:[VectorL10n externalLinkConfirmationMessage:visibleURL.absoluteString :url.absoluteString] preferredStyle:UIAlertControllerStyleAlert];
|
||||
|
||||
UIAlertAction *continueAction = [UIAlertAction actionWithTitle:NSLocalizedStringFromTable(@"continue", @"Vector", nil) style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
|
||||
UIAlertAction *continueAction = [UIAlertAction actionWithTitle:[VectorL10n continue] style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
|
||||
// Try to open the link
|
||||
[[UIApplication sharedApplication] vc_open:url completionHandler:^(BOOL success) {
|
||||
if (!success)
|
||||
@@ -3791,7 +3789,7 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05;
|
||||
}];
|
||||
}];
|
||||
|
||||
UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:NSLocalizedStringFromTable(@"cancel", @"Vector", nil) style:UIAlertActionStyleCancel handler:nil];
|
||||
UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:[VectorL10n cancel] style:UIAlertActionStyleCancel handler:nil];
|
||||
|
||||
[alert addAction:continueAction];
|
||||
[alert addAction:cancelAction];
|
||||
@@ -3880,8 +3878,8 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05;
|
||||
|
||||
- (void)showUnableToOpenLinkErrorAlert
|
||||
{
|
||||
[self showAlertWithTitle:[NSBundle mxk_localizedStringForKey:@"error"]
|
||||
message:NSLocalizedStringFromTable(@"room_message_unable_open_link_error_message", @"Vector", nil)];
|
||||
[self showAlertWithTitle:[MatrixKitL10n error]
|
||||
message:[VectorL10n roomMessageUnableOpenLinkErrorMessage]];
|
||||
}
|
||||
|
||||
- (void)editEventContentWithId:(NSString*)eventId
|
||||
@@ -3983,8 +3981,8 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05;
|
||||
|
||||
// Check app permissions first
|
||||
[MXKTools checkAccessForCall:video
|
||||
manualChangeMessageForAudio:[NSString stringWithFormat:[NSBundle mxk_localizedStringForKey:@"microphone_access_not_granted_for_call"], AppInfo.current.displayName]
|
||||
manualChangeMessageForVideo:[NSString stringWithFormat:[NSBundle mxk_localizedStringForKey:@"camera_access_not_granted_for_call"], AppInfo.current.displayName]
|
||||
manualChangeMessageForAudio:[MatrixKitL10n microphoneAccessNotGrantedForCall:AppInfo.current.displayName]
|
||||
manualChangeMessageForVideo:[MatrixKitL10n cameraAccessNotGrantedForCall:AppInfo.current.displayName]
|
||||
showPopUpInViewController:self completionHandler:^(BOOL granted) {
|
||||
|
||||
if (weakSelf)
|
||||
@@ -4022,7 +4020,7 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05;
|
||||
preferredStyle:UIAlertControllerStyleActionSheet];
|
||||
|
||||
__weak typeof(self) weakSelf = self;
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:NSLocalizedStringFromTable(@"room_place_voice_call", @"Vector", nil)
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n roomPlaceVoiceCall]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -4036,7 +4034,7 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05;
|
||||
|
||||
}]];
|
||||
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:NSLocalizedStringFromTable(@"room_open_dialpad", @"Vector", nil)
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n roomOpenDialpad]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -4050,7 +4048,7 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05;
|
||||
|
||||
}]];
|
||||
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[NSBundle mxk_localizedStringForKey:@"cancel"]
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n cancel]
|
||||
style:UIAlertActionStyleCancel
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -4116,11 +4114,11 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05;
|
||||
MXWeakify(self);
|
||||
[currentAlert dismissViewControllerAnimated:NO completion:nil];
|
||||
|
||||
currentAlert = [UIAlertController alertControllerWithTitle:[NSBundle mxk_localizedStringForKey:@"room_no_privileges_to_create_group_call"]
|
||||
currentAlert = [UIAlertController alertControllerWithTitle:[VectorL10n roomNoPrivilegesToCreateGroupCall]
|
||||
message:nil
|
||||
preferredStyle:UIAlertControllerStyleAlert];
|
||||
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[NSBundle mxk_localizedStringForKey:@"ok"]
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n ok]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action)
|
||||
{
|
||||
@@ -4776,7 +4774,7 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05;
|
||||
error = [NSError errorWithDomain:error.domain
|
||||
code:error.code
|
||||
userInfo:@{
|
||||
NSLocalizedDescriptionKey: NSLocalizedStringFromTable(@"room_conference_call_no_power", @"Vector", nil)
|
||||
NSLocalizedDescriptionKey: [VectorL10n roomConferenceCallNoPower]
|
||||
}];
|
||||
}
|
||||
|
||||
@@ -4826,7 +4824,7 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05;
|
||||
else if ([AppDelegate theDelegate].isOffline)
|
||||
{
|
||||
self.activitiesViewExpanded = YES;
|
||||
[roomActivitiesView displayNetworkErrorNotification:NSLocalizedStringFromTable(@"room_offline_notification", @"Vector", nil)];
|
||||
[roomActivitiesView displayNetworkErrorNotification:[VectorL10n roomOfflineNotification]];
|
||||
}
|
||||
else if (customizedRoomDataSource.roomState.isObsolete)
|
||||
{
|
||||
@@ -5041,8 +5039,8 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05;
|
||||
if (sentStatus != RoomSentStatusOk)
|
||||
{
|
||||
NSString *notification = sentStatus == RoomSentStatusSentFailedDueToUnknownDevices ?
|
||||
NSLocalizedStringFromTable(@"room_unsent_messages_unknown_devices_notification", @"Vector", nil) :
|
||||
NSLocalizedStringFromTable(@"room_unsent_messages_notification", @"Vector", nil);
|
||||
[VectorL10n roomUnsentMessagesUnknownDevicesNotification] :
|
||||
[VectorL10n roomUnsentMessagesNotification];
|
||||
|
||||
RoomActivitiesView *roomActivitiesView = (RoomActivitiesView*) self.activitiesView;
|
||||
self.activitiesViewExpanded = YES;
|
||||
@@ -5064,7 +5062,7 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05;
|
||||
__weak __typeof(self) weakSelf = self;
|
||||
currentAlert = [UIAlertController alertControllerWithTitle:nil message:nil preferredStyle:UIAlertControllerStyleActionSheet];
|
||||
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:NSLocalizedStringFromTable(@"room_resend_unsent_messages", @"Vector", nil)
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n roomResendUnsentMessages]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -5077,7 +5075,7 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05;
|
||||
|
||||
}]];
|
||||
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:NSLocalizedStringFromTable(@"room_delete_unsent_messages", @"Vector", nil)
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n roomDeleteUnsentMessages]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -5090,7 +5088,7 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05;
|
||||
|
||||
}]];
|
||||
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:NSLocalizedStringFromTable(@"cancel", @"Vector", nil)
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n cancel]
|
||||
style:UIAlertActionStyleCancel
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -5145,11 +5143,11 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05;
|
||||
}
|
||||
}
|
||||
|
||||
currentAlert = [UIAlertController alertControllerWithTitle:[NSBundle mxk_localizedStringForKey:@"unknown_devices_alert_title"]
|
||||
message:[NSBundle mxk_localizedStringForKey:@"unknown_devices_alert"]
|
||||
currentAlert = [UIAlertController alertControllerWithTitle:[VectorL10n unknownDevicesAlertTitle]
|
||||
message:[VectorL10n unknownDevicesAlert]
|
||||
preferredStyle:UIAlertControllerStyleAlert];
|
||||
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[NSBundle mxk_localizedStringForKey:@"unknown_devices_verify"]
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n unknownDevicesVerify]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -5163,7 +5161,7 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05;
|
||||
|
||||
}]];
|
||||
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[NSBundle mxk_localizedStringForKey:@"unknown_devices_send_anyway"]
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n unknownDevicesSendAnyway]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -5249,15 +5247,15 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05;
|
||||
|
||||
- (void)cancelAllUnsentMessages
|
||||
{
|
||||
currentAlert = [UIAlertController alertControllerWithTitle:NSLocalizedStringFromTable(@"room_unsent_messages_cancel_title", @"Vector", nil) message:NSLocalizedStringFromTable(@"room_unsent_messages_cancel_message", @"Vector", nil) preferredStyle:UIAlertControllerStyleAlert];
|
||||
currentAlert = [UIAlertController alertControllerWithTitle:[VectorL10n roomUnsentMessagesCancelTitle] message:[VectorL10n roomUnsentMessagesCancelMessage] preferredStyle:UIAlertControllerStyleAlert];
|
||||
|
||||
MXWeakify(self);
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[NSBundle mxk_localizedStringForKey:@"cancel"] style:UIAlertActionStyleCancel handler:^(UIAlertAction * action) {
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n cancel] style:UIAlertActionStyleCancel handler:^(UIAlertAction * action) {
|
||||
MXStrongifyAndReturnIfNil(self);
|
||||
self->currentAlert = nil;
|
||||
}]];
|
||||
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[NSBundle mxk_localizedStringForKey:@"delete"] style:UIAlertActionStyleDestructive handler:^(UIAlertAction * action) {
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n delete] style:UIAlertActionStyleDestructive handler:^(UIAlertAction * action) {
|
||||
MXStrongifyAndReturnIfNil(self);
|
||||
// Remove unsent event ids
|
||||
for (NSUInteger index = 0; index < self.roomDataSource.room.outgoingMessages.count;)
|
||||
@@ -5502,12 +5500,12 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05;
|
||||
}
|
||||
|
||||
// Invite ?
|
||||
NSString *promptMsg = [NSString stringWithFormat:NSLocalizedStringFromTable(@"room_participants_invite_prompt_msg", @"Vector", nil), contact.displayName];
|
||||
currentAlert = [UIAlertController alertControllerWithTitle:NSLocalizedStringFromTable(@"room_participants_invite_prompt_title", @"Vector", nil)
|
||||
NSString *promptMsg = [VectorL10n roomParticipantsInvitePromptMsg:contact.displayName];
|
||||
currentAlert = [UIAlertController alertControllerWithTitle:[VectorL10n roomParticipantsInvitePromptTitle]
|
||||
message:promptMsg
|
||||
preferredStyle:UIAlertControllerStyleAlert];
|
||||
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[NSBundle mxk_localizedStringForKey:@"cancel"]
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n cancel]
|
||||
style:UIAlertActionStyleCancel
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -5519,7 +5517,7 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05;
|
||||
|
||||
}]];
|
||||
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:NSLocalizedStringFromTable(@"invite", @"Vector", nil)
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n invite]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -5587,8 +5585,7 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05;
|
||||
if ([error.domain isEqualToString:kMXRestClientErrorDomain]
|
||||
&& error.code == MXRestClientErrorMissingIdentityServer)
|
||||
{
|
||||
NSString *message = [NSBundle mxk_localizedStringForKey:@"error_invite_3pid_with_no_identity_server"];
|
||||
[self showAlertWithTitle:message message:nil];
|
||||
[self showAlertWithTitle:[VectorL10n errorInvite3pidWithNoIdentityServer] message:nil];
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -5663,7 +5660,7 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05;
|
||||
currentAlert = alert;
|
||||
|
||||
|
||||
[alert addAction:[UIAlertAction actionWithTitle:[NSBundle mxk_localizedStringForKey:@"ok"]
|
||||
[alert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n ok]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action)
|
||||
{
|
||||
@@ -5684,17 +5681,17 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05;
|
||||
|
||||
[currentAlert dismissViewControllerAnimated:NO completion:nil];
|
||||
|
||||
UIAlertController *alert = [UIAlertController alertControllerWithTitle:NSLocalizedStringFromTable(@"key_verification_self_verify_unverified_sessions_alert_title", @"Vector", nil)
|
||||
message:NSLocalizedStringFromTable(@"key_verification_self_verify_unverified_sessions_alert_message", @"Vector", nil)
|
||||
UIAlertController *alert = [UIAlertController alertControllerWithTitle:[VectorL10n keyVerificationSelfVerifyUnverifiedSessionsAlertTitle]
|
||||
message:[VectorL10n keyVerificationSelfVerifyUnverifiedSessionsAlertMessage]
|
||||
preferredStyle:UIAlertControllerStyleAlert];
|
||||
|
||||
[alert addAction:[UIAlertAction actionWithTitle:NSLocalizedStringFromTable(@"key_verification_self_verify_unverified_sessions_alert_validate_action", @"Vector", nil)
|
||||
[alert addAction:[UIAlertAction actionWithTitle:[VectorL10n keyVerificationSelfVerifyUnverifiedSessionsAlertValidateAction]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
[self showSettingsSecurityScreen];
|
||||
}]];
|
||||
|
||||
[alert addAction:[UIAlertAction actionWithTitle:NSLocalizedStringFromTable(@"later", @"Vector", nil)
|
||||
[alert addAction:[UIAlertAction actionWithTitle:[VectorL10n later]
|
||||
style:UIAlertActionStyleCancel
|
||||
handler:nil]];
|
||||
|
||||
@@ -5945,12 +5942,14 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05;
|
||||
[self hideContextualMenuAnimated:YES cancelEventSelection:YES completion:^{
|
||||
MXStrongifyAndReturnIfNil(self);
|
||||
|
||||
self->currentAlert = [UIAlertController alertControllerWithTitle:NSLocalizedStringFromTable(@"room_event_action_delete_confirmation_title", @"Vector", nil) message:NSLocalizedStringFromTable(@"room_event_action_delete_confirmation_message", @"Vector", nil) preferredStyle:UIAlertControllerStyleAlert];
|
||||
self->currentAlert = [UIAlertController alertControllerWithTitle:[VectorL10n roomEventActionDeleteConfirmationTitle]
|
||||
message:[VectorL10n roomEventActionDeleteConfirmationMessage]
|
||||
preferredStyle:UIAlertControllerStyleAlert];
|
||||
|
||||
[self->currentAlert addAction:[UIAlertAction actionWithTitle:[NSBundle mxk_localizedStringForKey:@"cancel"] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) {
|
||||
[self->currentAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n cancel] style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) {
|
||||
}]];
|
||||
|
||||
[self->currentAlert addAction:[UIAlertAction actionWithTitle:[NSBundle mxk_localizedStringForKey:@"delete"] style:UIAlertActionStyleDestructive handler:^(UIAlertAction * action) {
|
||||
[self->currentAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n delete] style:UIAlertActionStyleDestructive handler:^(UIAlertAction * action) {
|
||||
[self.roomDataSource removeEventWithEventId:event.eventId];
|
||||
}]];
|
||||
|
||||
@@ -6255,8 +6254,8 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05;
|
||||
{
|
||||
MXLogDebug(@"[MXKRoomViewController] File upload using MIME type %@ is not supported.", mimeType);
|
||||
|
||||
[self showAlertWithTitle:NSLocalizedStringFromTable(@"file_upload_error_title", @"Vector", nil)
|
||||
message:NSLocalizedStringFromTable(@"file_upload_error_unsupported_file_type_message", @"Vector", nil)];
|
||||
[self showAlertWithTitle:[VectorL10n fileUploadErrorTitle]
|
||||
message:[VectorL10n fileUploadErrorUnsupportedFileTypeMessage]];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6458,7 +6457,7 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05;
|
||||
|
||||
- (void)voiceMessageControllerDidRequestMicrophonePermission:(VoiceMessageController *)voiceMessageController
|
||||
{
|
||||
NSString *message = [NSString stringWithFormat:[NSBundle mxk_localizedStringForKey:@"microphone_access_not_granted_for_voice_message"], AppInfo.current.displayName];
|
||||
NSString *message = [MatrixKitL10n microphoneAccessNotGrantedForVoiceMessage:AppInfo.current.displayName];
|
||||
|
||||
[MXKTools checkAccessForMediaType:AVMediaTypeAudio
|
||||
manualChangeMessage: message
|
||||
|
||||
@@ -50,12 +50,12 @@
|
||||
NSMutableArray* viewControllers = [[NSMutableArray alloc] init];
|
||||
NSMutableArray* titles = [[NSMutableArray alloc] init];
|
||||
|
||||
[titles addObject: NSLocalizedStringFromTable(@"search_messages", @"Vector", nil)];
|
||||
[titles addObject:[VectorL10n searchMessages]];
|
||||
messagesSearchViewController = [RoomMessagesSearchViewController searchViewController];
|
||||
[viewControllers addObject:messagesSearchViewController];
|
||||
|
||||
// add Files tab
|
||||
[titles addObject: NSLocalizedStringFromTable(@"search_files", @"Vector", nil)];
|
||||
[titles addObject:[VectorL10n searchFiles]];
|
||||
filesSearchViewController = [RoomFilesSearchViewController searchViewController];
|
||||
[viewControllers addObject:filesSearchViewController];
|
||||
|
||||
|
||||
@@ -559,11 +559,11 @@ NSString *const kRoomSettingsAdvancedE2eEnabledCellViewIdentifier = @"kRoomSetti
|
||||
|
||||
if (mxRoom.isDirect)
|
||||
{
|
||||
sectionAccess.headerTitle = NSLocalizedStringFromTable(@"room_details_access_section_for_dm", @"Vector", nil);
|
||||
sectionAccess.headerTitle = [VectorL10n roomDetailsAccessSectionAnyoneForDm];
|
||||
}
|
||||
else
|
||||
{
|
||||
sectionAccess.headerTitle = NSLocalizedStringFromTable(@"room_details_access_section", @"Vector", nil);
|
||||
sectionAccess.headerTitle = [VectorL10n roomDetailsAccessSection];
|
||||
}
|
||||
[tmpSections addObject:sectionAccess];
|
||||
}
|
||||
@@ -575,7 +575,7 @@ NSString *const kRoomSettingsAdvancedE2eEnabledCellViewIdentifier = @"kRoomSetti
|
||||
[sectionHistory addRowWithTag:ROOM_SETTINGS_HISTORY_VISIBILITY_SECTION_ROW_MEMBERS_ONLY];
|
||||
[sectionHistory addRowWithTag:ROOM_SETTINGS_HISTORY_VISIBILITY_SECTION_ROW_MEMBERS_ONLY_SINCE_INVITED];
|
||||
[sectionHistory addRowWithTag:ROOM_SETTINGS_HISTORY_VISIBILITY_SECTION_ROW_MEMBERS_ONLY_SINCE_JOINED];
|
||||
sectionHistory.headerTitle = NSLocalizedStringFromTable(@"room_details_history_section", @"Vector", nil);
|
||||
sectionHistory.headerTitle = [VectorL10n roomDetailsHistorySection];
|
||||
[tmpSections addObject:sectionHistory];
|
||||
}
|
||||
|
||||
@@ -594,7 +594,7 @@ NSString *const kRoomSettingsAdvancedE2eEnabledCellViewIdentifier = @"kRoomSetti
|
||||
[sectionAddresses addRowWithTag:ROOM_SETTINGS_ROOM_ADDRESS_NO_LOCAL_ADDRESS];
|
||||
}
|
||||
[sectionAddresses addRowWithTag:ROOM_SETTINGS_ROOM_ADDRESS_NEW_ALIAS];
|
||||
sectionAddresses.headerTitle = NSLocalizedStringFromTable(@"room_details_addresses_section", @"Vector", nil);
|
||||
sectionAddresses.headerTitle = [VectorL10n roomDetailsAddressesSection];
|
||||
[tmpSections addObject:sectionAddresses];
|
||||
}
|
||||
|
||||
@@ -619,7 +619,7 @@ NSString *const kRoomSettingsAdvancedE2eEnabledCellViewIdentifier = @"kRoomSetti
|
||||
}
|
||||
}
|
||||
|
||||
sectionFlair.headerTitle = NSLocalizedStringFromTable(@"room_details_flair_section", @"Vector", nil);
|
||||
sectionFlair.headerTitle = [VectorL10n roomDetailsFlairSection];
|
||||
if ([sectionFlair hasAnyRows])
|
||||
{
|
||||
[tmpSections addObject:sectionFlair];
|
||||
@@ -635,7 +635,7 @@ NSString *const kRoomSettingsAdvancedE2eEnabledCellViewIdentifier = @"kRoomSetti
|
||||
[sectionBannedUsers addRowWithTag:counter];
|
||||
}
|
||||
|
||||
sectionBannedUsers.headerTitle = NSLocalizedStringFromTable(@"room_details_banned_users_section", @"Vector", nil);
|
||||
sectionBannedUsers.headerTitle = [VectorL10n roomDetailsBannedUsersSection];
|
||||
[tmpSections addObject:sectionBannedUsers];
|
||||
}
|
||||
|
||||
@@ -671,7 +671,7 @@ NSString *const kRoomSettingsAdvancedE2eEnabledCellViewIdentifier = @"kRoomSetti
|
||||
}
|
||||
}
|
||||
|
||||
sectionAdvanced.headerTitle = NSLocalizedStringFromTable(@"room_details_advanced_section", @"Vector", nil);
|
||||
sectionAdvanced.headerTitle = [VectorL10n roomDetailsAdvancedSection];
|
||||
[tmpSections addObject:sectionAdvanced];
|
||||
}
|
||||
|
||||
@@ -845,9 +845,11 @@ NSString *const kRoomSettingsAdvancedE2eEnabledCellViewIdentifier = @"kRoomSetti
|
||||
|
||||
__weak typeof(self) weakSelf = self;
|
||||
|
||||
currentAlert = [UIAlertController alertControllerWithTitle:nil message:NSLocalizedStringFromTable(@"room_details_save_changes_prompt", @"Vector", nil) preferredStyle:UIAlertControllerStyleAlert];
|
||||
currentAlert = [UIAlertController alertControllerWithTitle:nil
|
||||
message:[VectorL10n roomDetailsSaveChangesPrompt]
|
||||
preferredStyle:UIAlertControllerStyleAlert];
|
||||
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[NSBundle mxk_localizedStringForKey:@"no"]
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n no]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -863,7 +865,7 @@ NSString *const kRoomSettingsAdvancedE2eEnabledCellViewIdentifier = @"kRoomSetti
|
||||
|
||||
}]];
|
||||
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[NSBundle mxk_localizedStringForKey:@"yes"]
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n yes]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -891,7 +893,7 @@ NSString *const kRoomSettingsAdvancedE2eEnabledCellViewIdentifier = @"kRoomSetti
|
||||
|
||||
currentAlert = [UIAlertController alertControllerWithTitle:nil message:nil preferredStyle:UIAlertControllerStyleActionSheet];
|
||||
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:NSLocalizedStringFromTable(@"room_details_copy_room_id", @"Vector", nil)
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n roomDetailsCopyRoomId]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -914,7 +916,7 @@ NSString *const kRoomSettingsAdvancedE2eEnabledCellViewIdentifier = @"kRoomSetti
|
||||
|
||||
}]];
|
||||
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[NSBundle mxk_localizedStringForKey:@"cancel"]
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n cancel]
|
||||
style:UIAlertActionStyleCancel
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -961,7 +963,7 @@ NSString *const kRoomSettingsAdvancedE2eEnabledCellViewIdentifier = @"kRoomSetti
|
||||
|
||||
if (canonicalAlias && [roomAliasLabel.text isEqualToString:canonicalAlias])
|
||||
{
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:NSLocalizedStringFromTable(@"room_details_unset_main_address", @"Vector", nil)
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n roomDetailsUnsetMainAddress]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -983,7 +985,7 @@ NSString *const kRoomSettingsAdvancedE2eEnabledCellViewIdentifier = @"kRoomSetti
|
||||
else
|
||||
{
|
||||
// Invite user to define this alias as the main room address
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:NSLocalizedStringFromTable(@"room_details_set_main_address", @"Vector", nil)
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n roomDetailsSetMainAddress]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -999,7 +1001,7 @@ NSString *const kRoomSettingsAdvancedE2eEnabledCellViewIdentifier = @"kRoomSetti
|
||||
}
|
||||
}
|
||||
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:NSLocalizedStringFromTable(@"room_details_copy_room_address", @"Vector", nil)
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n roomDetailsCopyRoomAddress]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -1022,7 +1024,7 @@ NSString *const kRoomSettingsAdvancedE2eEnabledCellViewIdentifier = @"kRoomSetti
|
||||
|
||||
}]];
|
||||
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:NSLocalizedStringFromTable(@"room_details_copy_room_url", @"Vector", nil)
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n roomDetailsCopyRoomUrl]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -1049,7 +1051,7 @@ NSString *const kRoomSettingsAdvancedE2eEnabledCellViewIdentifier = @"kRoomSetti
|
||||
|
||||
// The user can only delete alias they has created, even if the Admin has set it as canonical.
|
||||
// So, let the server answer if it's possible to delete an alias.
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[NSBundle mxk_localizedStringForKey:@"delete"]
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n delete]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -1063,7 +1065,7 @@ NSString *const kRoomSettingsAdvancedE2eEnabledCellViewIdentifier = @"kRoomSetti
|
||||
|
||||
}]];
|
||||
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[NSBundle mxk_localizedStringForKey:@"cancel"]
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n cancel]
|
||||
style:UIAlertActionStyleCancel
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -1393,7 +1395,7 @@ NSString *const kRoomSettingsAdvancedE2eEnabledCellViewIdentifier = @"kRoomSetti
|
||||
|
||||
currentAlert = [UIAlertController alertControllerWithTitle:nil message:message preferredStyle:UIAlertControllerStyleAlert];
|
||||
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[NSBundle mxk_localizedStringForKey:@"cancel"]
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n cancel]
|
||||
style:UIAlertActionStyleCancel
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -1414,7 +1416,7 @@ NSString *const kRoomSettingsAdvancedE2eEnabledCellViewIdentifier = @"kRoomSetti
|
||||
|
||||
}]];
|
||||
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:NSLocalizedStringFromTable(@"retry", @"Vector", nil)
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n retry]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -1480,7 +1482,7 @@ NSString *const kRoomSettingsAdvancedE2eEnabledCellViewIdentifier = @"kRoomSetti
|
||||
NSString* message = error.localizedDescription;
|
||||
if (!message.length)
|
||||
{
|
||||
message = NSLocalizedStringFromTable(@"room_details_fail_to_update_avatar", @"Vector", nil);
|
||||
message = [VectorL10n roomDetailsFailToUpdateAvatar];
|
||||
}
|
||||
[self onSaveFailed:message withKeys:@[kRoomSettingsAvatarKey]];
|
||||
|
||||
@@ -1521,7 +1523,7 @@ NSString *const kRoomSettingsAdvancedE2eEnabledCellViewIdentifier = @"kRoomSetti
|
||||
NSString* message = error.localizedDescription;
|
||||
if (!message.length)
|
||||
{
|
||||
message = NSLocalizedStringFromTable(@"room_details_fail_to_update_avatar", @"Vector", nil);
|
||||
message = [VectorL10n roomDetailsFailToUpdateAvatar];
|
||||
}
|
||||
[self onSaveFailed:message withKeys:@[kRoomSettingsAvatarURLKey]];
|
||||
|
||||
@@ -1563,7 +1565,7 @@ NSString *const kRoomSettingsAdvancedE2eEnabledCellViewIdentifier = @"kRoomSetti
|
||||
NSString* message = error.localizedDescription;
|
||||
if (!message.length)
|
||||
{
|
||||
message = NSLocalizedStringFromTable(@"room_details_fail_to_update_room_name", @"Vector", nil);
|
||||
message = [VectorL10n roomDetailsFailToUpdateRoomName];
|
||||
}
|
||||
[self onSaveFailed:message withKeys:@[kRoomSettingsNameKey]];
|
||||
|
||||
@@ -1605,7 +1607,7 @@ NSString *const kRoomSettingsAdvancedE2eEnabledCellViewIdentifier = @"kRoomSetti
|
||||
NSString* message = error.localizedDescription;
|
||||
if (!message.length)
|
||||
{
|
||||
message = NSLocalizedStringFromTable(@"room_details_fail_to_update_topic", @"Vector", nil);
|
||||
message = [VectorL10n roomDetailsFailToUpdateTopic];
|
||||
}
|
||||
[self onSaveFailed:message withKeys:@[kRoomSettingsTopicKey]];
|
||||
|
||||
@@ -1647,7 +1649,7 @@ NSString *const kRoomSettingsAdvancedE2eEnabledCellViewIdentifier = @"kRoomSetti
|
||||
NSString* message = error.localizedDescription;
|
||||
if (!message.length)
|
||||
{
|
||||
message = NSLocalizedStringFromTable(@"room_details_fail_to_update_room_guest_access", @"Vector", nil);
|
||||
message = [VectorL10n roomDetailsFailToUpdateRoomGuestAccess];
|
||||
}
|
||||
[self onSaveFailed:message withKeys:@[kRoomSettingsGuestAccessKey]];
|
||||
|
||||
@@ -1689,7 +1691,7 @@ NSString *const kRoomSettingsAdvancedE2eEnabledCellViewIdentifier = @"kRoomSetti
|
||||
NSString* message = error.localizedDescription;
|
||||
if (!message.length)
|
||||
{
|
||||
message = NSLocalizedStringFromTable(@"room_details_fail_to_update_room_join_rule", @"Vector", nil);
|
||||
message = [VectorL10n roomDetailsFailToUpdateRoomJoinRule];
|
||||
}
|
||||
[self onSaveFailed:message withKeys:@[kRoomSettingsJoinRuleKey]];
|
||||
|
||||
@@ -1731,7 +1733,7 @@ NSString *const kRoomSettingsAdvancedE2eEnabledCellViewIdentifier = @"kRoomSetti
|
||||
NSString* message = error.localizedDescription;
|
||||
if (!message.length)
|
||||
{
|
||||
message = NSLocalizedStringFromTable(@"room_details_fail_to_update_history_visibility", @"Vector", nil);
|
||||
message = [VectorL10n roomDetailsFailToUpdateHistoryVisibility];
|
||||
}
|
||||
[self onSaveFailed:message withKeys:@[kRoomSettingsHistoryVisibilityKey]];
|
||||
|
||||
@@ -1785,7 +1787,7 @@ NSString *const kRoomSettingsAdvancedE2eEnabledCellViewIdentifier = @"kRoomSetti
|
||||
NSString* message = error.localizedDescription;
|
||||
if (!message.length)
|
||||
{
|
||||
message = NSLocalizedStringFromTable(@"room_details_fail_to_add_room_aliases", @"Vector", nil);
|
||||
message = [VectorL10n roomDetailsFailToAddRoomAliases];
|
||||
}
|
||||
[self onSaveFailed:message withKeys:@[kRoomSettingsNewAliasesKey]];
|
||||
|
||||
@@ -1838,7 +1840,7 @@ NSString *const kRoomSettingsAdvancedE2eEnabledCellViewIdentifier = @"kRoomSetti
|
||||
NSString* message = error.localizedDescription;
|
||||
if (!message.length)
|
||||
{
|
||||
message = NSLocalizedStringFromTable(@"room_details_fail_to_remove_room_aliases", @"Vector", nil);
|
||||
message = [VectorL10n roomDetailsFailToRemoveRoomAliases];
|
||||
}
|
||||
[self onSaveFailed:message withKeys:@[kRoomSettingsRemovedAliasesKey]];
|
||||
|
||||
@@ -1879,7 +1881,7 @@ NSString *const kRoomSettingsAdvancedE2eEnabledCellViewIdentifier = @"kRoomSetti
|
||||
NSString* message = error.localizedDescription;
|
||||
if (!message.length)
|
||||
{
|
||||
message = NSLocalizedStringFromTable(@"room_details_fail_to_update_room_canonical_alias", @"Vector", nil);
|
||||
message = [VectorL10n roomDetailsFailToUpdateRoomCanonicalAlias];
|
||||
}
|
||||
[self onSaveFailed:message withKeys:@[kRoomSettingsCanonicalAliasKey]];
|
||||
|
||||
@@ -1925,7 +1927,7 @@ NSString *const kRoomSettingsAdvancedE2eEnabledCellViewIdentifier = @"kRoomSetti
|
||||
NSString* message = error.localizedDescription;
|
||||
if (!message.length)
|
||||
{
|
||||
message = NSLocalizedStringFromTable(@"room_details_fail_to_update_room_communities", @"Vector", nil);
|
||||
message = [VectorL10n roomDetailsFailToUpdateRoomCommunities];
|
||||
}
|
||||
[self onSaveFailed:message withKeys:@[kRoomSettingsNewRelatedGroupKey,kRoomSettingsRemovedRelatedGroupKey]];
|
||||
|
||||
@@ -2023,7 +2025,7 @@ NSString *const kRoomSettingsAdvancedE2eEnabledCellViewIdentifier = @"kRoomSetti
|
||||
NSString* message = error.localizedDescription;
|
||||
if (!message.length)
|
||||
{
|
||||
message = NSLocalizedStringFromTable(@"room_details_fail_to_update_room_direct", @"Vector", nil);
|
||||
message = [VectorL10n roomDetailsFailToUpdateRoomDirect];
|
||||
}
|
||||
[self onSaveFailed:message withKeys:@[kRoomSettingsDirectChatKey]];
|
||||
|
||||
@@ -2063,7 +2065,7 @@ NSString *const kRoomSettingsAdvancedE2eEnabledCellViewIdentifier = @"kRoomSetti
|
||||
NSString* message = error.localizedDescription;
|
||||
if (!message.length)
|
||||
{
|
||||
message = NSLocalizedStringFromTable(@"room_details_fail_to_update_room_directory_visibility", @"Vector", nil);
|
||||
message = [VectorL10n roomDetailsFailToUpdateRoomDirectoryVisibility];
|
||||
}
|
||||
[self onSaveFailed:message withKeys:@[kRoomSettingsDirectoryKey]];
|
||||
|
||||
@@ -2105,7 +2107,7 @@ NSString *const kRoomSettingsAdvancedE2eEnabledCellViewIdentifier = @"kRoomSetti
|
||||
NSString* message = error.localizedDescription;
|
||||
if (!message.length)
|
||||
{
|
||||
message = NSLocalizedStringFromTable(@"room_details_fail_to_enable_encryption", @"Vector", nil);
|
||||
message = [VectorL10n roomDetailsFailToEnableEncryption];
|
||||
}
|
||||
[self onSaveFailed:message withKeys:@[kRoomSettingsEncryptionKey]];
|
||||
|
||||
@@ -2201,7 +2203,7 @@ NSString *const kRoomSettingsAdvancedE2eEnabledCellViewIdentifier = @"kRoomSetti
|
||||
|
||||
[roomNotifCell.mxkSwitch addTarget:self action:@selector(toggleRoomNotification:) forControlEvents:UIControlEventValueChanged];
|
||||
|
||||
roomNotifCell.mxkLabel.text = NSLocalizedStringFromTable(@"room_details_mute_notifs", @"Vector", nil);
|
||||
roomNotifCell.mxkLabel.text = [VectorL10n roomDetailsMuteNotifs];
|
||||
|
||||
if (updatedItemsDict[kRoomSettingsMuteNotifKey])
|
||||
{
|
||||
@@ -2220,7 +2222,7 @@ NSString *const kRoomSettingsAdvancedE2eEnabledCellViewIdentifier = @"kRoomSetti
|
||||
|
||||
[roomDirectChat.mxkSwitch addTarget:self action:@selector(toggleDirectChat:) forControlEvents:UIControlEventValueChanged];
|
||||
|
||||
roomDirectChat.mxkLabel.text = NSLocalizedStringFromTable(@"room_details_direct_chat", @"Vector", nil);
|
||||
roomDirectChat.mxkLabel.text = [VectorL10n roomDetailsDirectChat];
|
||||
|
||||
if (updatedItemsDict[kRoomSettingsDirectChatKey])
|
||||
{
|
||||
@@ -2255,11 +2257,11 @@ NSString *const kRoomSettingsAdvancedE2eEnabledCellViewIdentifier = @"kRoomSetti
|
||||
|
||||
if (mxRoom.isDirect)
|
||||
{
|
||||
roomPhotoCell.mxkLabel.text = NSLocalizedStringFromTable(@"room_details_photo_for_dm", @"Vector", nil);
|
||||
roomPhotoCell.mxkLabel.text = [VectorL10n roomDetailsPhotoForDm];
|
||||
}
|
||||
else
|
||||
{
|
||||
roomPhotoCell.mxkLabel.text = NSLocalizedStringFromTable(@"room_details_photo", @"Vector", nil);
|
||||
roomPhotoCell.mxkLabel.text = [VectorL10n roomDetailsPhoto];
|
||||
}
|
||||
roomPhotoCell.mxkLabel.textColor = ThemeService.shared.theme.textPrimaryColor;
|
||||
|
||||
@@ -2283,7 +2285,7 @@ NSString *const kRoomSettingsAdvancedE2eEnabledCellViewIdentifier = @"kRoomSetti
|
||||
|
||||
roomTopicCell.labelLeadingConstraint.constant = roomTopicCell.vc_separatorInset.left;
|
||||
|
||||
roomTopicCell.label.text = NSLocalizedStringFromTable(@"room_details_topic", @"Vector", nil);
|
||||
roomTopicCell.label.text = [VectorL10n roomDetailsTopic];
|
||||
|
||||
topicTextView = roomTopicCell.textView;
|
||||
|
||||
@@ -2319,11 +2321,11 @@ NSString *const kRoomSettingsAdvancedE2eEnabledCellViewIdentifier = @"kRoomSetti
|
||||
|
||||
if (mxRoom.isDirect)
|
||||
{
|
||||
roomNameCell.mxkLabel.text = NSLocalizedStringFromTable(@"room_details_room_name_for_dm", @"Vector", nil);
|
||||
roomNameCell.mxkLabel.text = [VectorL10n roomDetailsRoomNameForDm];
|
||||
}
|
||||
else
|
||||
{
|
||||
roomNameCell.mxkLabel.text = NSLocalizedStringFromTable(@"room_details_room_name", @"Vector", nil);
|
||||
roomNameCell.mxkLabel.text = [VectorL10n roomDetailsRoomName];
|
||||
}
|
||||
roomNameCell.mxkLabel.textColor = ThemeService.shared.theme.textPrimaryColor;
|
||||
|
||||
@@ -2371,10 +2373,10 @@ NSString *const kRoomSettingsAdvancedE2eEnabledCellViewIdentifier = @"kRoomSetti
|
||||
UILabel *label;
|
||||
label = labels[0];
|
||||
label.textColor = ThemeService.shared.theme.textPrimaryColor;
|
||||
label.text = NSLocalizedStringFromTable(@"room_details_favourite_tag", @"Vector", nil);
|
||||
label.text = [VectorL10n roomDetailsFavouriteTag];
|
||||
label = labels[1];
|
||||
label.textColor = ThemeService.shared.theme.textPrimaryColor;
|
||||
label.text = NSLocalizedStringFromTable(@"room_details_low_priority_tag", @"Vector", nil);
|
||||
label.text = [VectorL10n roomDetailsLowPriorityTag];
|
||||
|
||||
if (updatedItemsDict[kRoomSettingsTagKey])
|
||||
{
|
||||
@@ -2409,7 +2411,7 @@ NSString *const kRoomSettingsAdvancedE2eEnabledCellViewIdentifier = @"kRoomSetti
|
||||
|
||||
[favoriteCell.mxkSwitch addTarget:self action:@selector(toggleFavorite:) forControlEvents:UIControlEventValueChanged];
|
||||
|
||||
favoriteCell.mxkLabel.text = NSLocalizedStringFromTable(@"room_details_favourite_tag", @"Vector", nil);
|
||||
favoriteCell.mxkLabel.text = [VectorL10n roomDetailsFavouriteTag];
|
||||
|
||||
if ([updatedItemsDict[kRoomSettingsTagKey] isEqualToString:kMXRoomTagFavourite])
|
||||
{
|
||||
@@ -2427,7 +2429,7 @@ NSString *const kRoomSettingsAdvancedE2eEnabledCellViewIdentifier = @"kRoomSetti
|
||||
{
|
||||
MXKTableViewCellWithButton *leaveCell = [tableView dequeueReusableCellWithIdentifier:[MXKTableViewCellWithButton defaultReuseIdentifier] forIndexPath:indexPath];
|
||||
|
||||
NSString* title = NSLocalizedStringFromTable(@"leave", @"Vector", nil);
|
||||
NSString* title = [VectorL10n leave];
|
||||
|
||||
[leaveCell.mxkButton setTitle:title forState:UIControlStateNormal];
|
||||
[leaveCell.mxkButton setTitle:title forState:UIControlStateHighlighted];
|
||||
@@ -2448,11 +2450,11 @@ NSString *const kRoomSettingsAdvancedE2eEnabledCellViewIdentifier = @"kRoomSetti
|
||||
|
||||
if (mxRoom.isDirect)
|
||||
{
|
||||
directoryToggleCell.mxkLabel.text = NSLocalizedStringFromTable(@"room_details_access_section_directory_toggle_for_dm", @"Vector", nil);
|
||||
directoryToggleCell.mxkLabel.text = [VectorL10n roomDetailsAccessSectionDirectoryToggleForDm];
|
||||
}
|
||||
else
|
||||
{
|
||||
directoryToggleCell.mxkLabel.text = NSLocalizedStringFromTable(@"room_details_access_section_directory_toggle", @"Vector", nil);
|
||||
directoryToggleCell.mxkLabel.text = [VectorL10n roomDetailsAccessSectionDirectoryToggle];
|
||||
}
|
||||
|
||||
[directoryToggleCell.mxkSwitch addTarget:self action:@selector(toggleDirectoryVisibility:) forControlEvents:UIControlEventValueChanged];
|
||||
@@ -2485,7 +2487,7 @@ NSString *const kRoomSettingsAdvancedE2eEnabledCellViewIdentifier = @"kRoomSetti
|
||||
cell.accessoryView = nil;
|
||||
cell.accessoryType = UITableViewCellAccessoryNone;
|
||||
cell.selectionStyle = UITableViewCellSelectionStyleNone;
|
||||
cell.textLabel.text = NSLocalizedStringFromTable(@"room_details_access_section_no_address_warning", @"Vector", nil);
|
||||
cell.textLabel.text = [VectorL10n roomDetailsAccessSectionNoAddressWarning];
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -2509,7 +2511,7 @@ NSString *const kRoomSettingsAdvancedE2eEnabledCellViewIdentifier = @"kRoomSetti
|
||||
|
||||
if (row == ROOM_SETTINGS_ROOM_ACCESS_SECTION_ROW_INVITED_ONLY)
|
||||
{
|
||||
roomAccessCell.label.text = NSLocalizedStringFromTable(@"room_details_access_section_invited_only", @"Vector", nil);
|
||||
roomAccessCell.label.text = [VectorL10n roomDetailsAccessSectionInvitedOnly];
|
||||
|
||||
roomAccessCell.enabled = ([joinRule isEqualToString:kMXRoomJoinRuleInvite]);
|
||||
|
||||
@@ -2519,11 +2521,11 @@ NSString *const kRoomSettingsAdvancedE2eEnabledCellViewIdentifier = @"kRoomSetti
|
||||
{
|
||||
if (mxRoom.isDirect)
|
||||
{
|
||||
roomAccessCell.label.text = NSLocalizedStringFromTable(@"room_details_access_section_anyone_apart_from_guest_for_dm", @"Vector", nil);
|
||||
roomAccessCell.label.text = [VectorL10n roomDetailsAccessSectionAnyoneApartFromGuestForDm];
|
||||
}
|
||||
else
|
||||
{
|
||||
roomAccessCell.label.text = NSLocalizedStringFromTable(@"room_details_access_section_anyone_apart_from_guest", @"Vector", nil);
|
||||
roomAccessCell.label.text = [VectorL10n roomDetailsAccessSectionAnyoneApartFromGuest];
|
||||
}
|
||||
|
||||
roomAccessCell.enabled = ([joinRule isEqualToString:kMXRoomJoinRulePublic] && [guestAccess isEqualToString:kMXRoomGuestAccessForbidden]);
|
||||
@@ -2534,11 +2536,11 @@ NSString *const kRoomSettingsAdvancedE2eEnabledCellViewIdentifier = @"kRoomSetti
|
||||
{
|
||||
if (mxRoom.isDirect)
|
||||
{
|
||||
roomAccessCell.label.text = NSLocalizedStringFromTable(@"room_details_access_section_anyone_for_dm", @"Vector", nil);
|
||||
roomAccessCell.label.text = [VectorL10n roomDetailsAccessSectionAnyoneForDm];
|
||||
}
|
||||
else
|
||||
{
|
||||
roomAccessCell.label.text = NSLocalizedStringFromTable(@"room_details_access_section_anyone", @"Vector", nil);
|
||||
roomAccessCell.label.text = [VectorL10n roomDetailsAccessSectionAnyone];
|
||||
}
|
||||
|
||||
roomAccessCell.enabled = ([joinRule isEqualToString:kMXRoomJoinRulePublic] && [guestAccess isEqualToString:kMXRoomGuestAccessCanJoin]);
|
||||
@@ -2571,7 +2573,7 @@ NSString *const kRoomSettingsAdvancedE2eEnabledCellViewIdentifier = @"kRoomSetti
|
||||
if (row == ROOM_SETTINGS_HISTORY_VISIBILITY_SECTION_ROW_ANYONE)
|
||||
{
|
||||
historyVisibilityCell.label.lineBreakMode = NSLineBreakByTruncatingMiddle;
|
||||
historyVisibilityCell.label.text = NSLocalizedStringFromTable(@"room_details_history_section_anyone", @"Vector", nil);
|
||||
historyVisibilityCell.label.text = [VectorL10n roomDetailsHistorySectionAnyone];
|
||||
|
||||
historyVisibilityCell.enabled = ([visibility isEqualToString:kMXRoomHistoryVisibilityWorldReadable]);
|
||||
|
||||
@@ -2580,7 +2582,7 @@ NSString *const kRoomSettingsAdvancedE2eEnabledCellViewIdentifier = @"kRoomSetti
|
||||
else if (row == ROOM_SETTINGS_HISTORY_VISIBILITY_SECTION_ROW_MEMBERS_ONLY)
|
||||
{
|
||||
historyVisibilityCell.label.lineBreakMode = NSLineBreakByTruncatingMiddle;
|
||||
historyVisibilityCell.label.text = NSLocalizedStringFromTable(@"room_details_history_section_members_only", @"Vector", nil);
|
||||
historyVisibilityCell.label.text = [VectorL10n roomDetailsHistorySectionMembersOnly];
|
||||
|
||||
historyVisibilityCell.enabled = ([visibility isEqualToString:kMXRoomHistoryVisibilityShared]);
|
||||
|
||||
@@ -2589,7 +2591,7 @@ NSString *const kRoomSettingsAdvancedE2eEnabledCellViewIdentifier = @"kRoomSetti
|
||||
else if (row == ROOM_SETTINGS_HISTORY_VISIBILITY_SECTION_ROW_MEMBERS_ONLY_SINCE_INVITED)
|
||||
{
|
||||
historyVisibilityCell.label.lineBreakMode = NSLineBreakByTruncatingMiddle;
|
||||
historyVisibilityCell.label.text = NSLocalizedStringFromTable(@"room_details_history_section_members_only_since_invited", @"Vector", nil);
|
||||
historyVisibilityCell.label.text = [VectorL10n roomDetailsHistorySectionMembersOnlySinceInvited];
|
||||
|
||||
historyVisibilityCell.enabled = ([visibility isEqualToString:kMXRoomHistoryVisibilityInvited]);
|
||||
|
||||
@@ -2598,7 +2600,7 @@ NSString *const kRoomSettingsAdvancedE2eEnabledCellViewIdentifier = @"kRoomSetti
|
||||
else if (row == ROOM_SETTINGS_HISTORY_VISIBILITY_SECTION_ROW_MEMBERS_ONLY_SINCE_JOINED)
|
||||
{
|
||||
historyVisibilityCell.label.lineBreakMode = NSLineBreakByTruncatingMiddle;
|
||||
historyVisibilityCell.label.text = NSLocalizedStringFromTable(@"room_details_history_section_members_only_since_joined", @"Vector", nil);
|
||||
historyVisibilityCell.label.text = [VectorL10n roomDetailsHistorySectionMembersOnlySinceJoined];
|
||||
|
||||
historyVisibilityCell.enabled = ([visibility isEqualToString:kMXRoomHistoryVisibilityJoined]);
|
||||
|
||||
@@ -2630,7 +2632,7 @@ NSString *const kRoomSettingsAdvancedE2eEnabledCellViewIdentifier = @"kRoomSetti
|
||||
addAddressCell.accessoryView = [[UIImageView alloc] initWithImage:[[UIImage imageNamed:@"plus_icon"] vc_tintedImageUsingColor:ThemeService.shared.theme.textPrimaryColor]];
|
||||
|
||||
addAddressTextField = addAddressCell.mxkTextField;
|
||||
addAddressTextField.placeholder = [NSString stringWithFormat:NSLocalizedStringFromTable(@"room_details_new_address_placeholder", @"Vector", nil), self.mainSession.matrixRestClient.homeserverSuffix];
|
||||
addAddressTextField.placeholder = [VectorL10n roomDetailsNewAddressPlaceholder:self.mainSession.matrixRestClient.homeserverSuffix];
|
||||
addAddressTextField.attributedPlaceholder = [[NSAttributedString alloc]
|
||||
initWithString:addAddressTextField.placeholder
|
||||
attributes:@{NSForegroundColorAttributeName: ThemeService.shared.theme.placeholderTextColor}];
|
||||
@@ -2661,11 +2663,11 @@ NSString *const kRoomSettingsAdvancedE2eEnabledCellViewIdentifier = @"kRoomSetti
|
||||
addressCell.selectionStyle = UITableViewCellSelectionStyleNone;
|
||||
if (mxRoom.isDirect)
|
||||
{
|
||||
addressCell.textLabel.text = NSLocalizedStringFromTable(@"room_details_no_local_addresses_for_dm", @"Vector", nil);
|
||||
addressCell.textLabel.text = [VectorL10n roomDetailsNoLocalAddressesForDm];
|
||||
}
|
||||
else
|
||||
{
|
||||
addressCell.textLabel.text = NSLocalizedStringFromTable(@"room_details_no_local_addresses", @"Vector", nil);
|
||||
addressCell.textLabel.text = [VectorL10n roomDetailsNoLocalAddresses];
|
||||
}
|
||||
|
||||
cell = addressCell;
|
||||
@@ -2731,7 +2733,7 @@ NSString *const kRoomSettingsAdvancedE2eEnabledCellViewIdentifier = @"kRoomSetti
|
||||
addCommunityCell.accessoryView = [[UIImageView alloc] initWithImage:[[UIImage imageNamed:@"plus_icon"] vc_tintedImageUsingColor:ThemeService.shared.theme.textPrimaryColor]];
|
||||
|
||||
addGroupTextField = addCommunityCell.mxkTextField;
|
||||
addGroupTextField.placeholder = [NSString stringWithFormat:NSLocalizedStringFromTable(@"room_details_new_flair_placeholder", @"Vector", nil), self.mainSession.matrixRestClient.homeserverSuffix];
|
||||
addGroupTextField.placeholder = [VectorL10n roomDetailsNewFlairPlaceholder:self.mainSession.matrixRestClient.homeserverSuffix];
|
||||
addGroupTextField.attributedPlaceholder = [[NSAttributedString alloc]
|
||||
initWithString:addGroupTextField.placeholder
|
||||
attributes:@{NSForegroundColorAttributeName: ThemeService.shared.theme.placeholderTextColor}];
|
||||
@@ -2798,11 +2800,11 @@ NSString *const kRoomSettingsAdvancedE2eEnabledCellViewIdentifier = @"kRoomSetti
|
||||
cell.textLabel.font = [UIFont systemFontOfSize:17];
|
||||
if (mxRoom.isDirect)
|
||||
{
|
||||
cell.textLabel.text = NSLocalizedStringFromTable(@"room_details_advanced_room_id_for_dm", @"Vector", nil);
|
||||
cell.textLabel.text = [VectorL10n roomDetailsAdvancedRoomIdForDm];
|
||||
}
|
||||
else
|
||||
{
|
||||
cell.textLabel.text = NSLocalizedStringFromTable(@"room_details_advanced_room_id", @"Vector", nil);
|
||||
cell.textLabel.text = [VectorL10n roomDetailsAdvancedRoomId];
|
||||
}
|
||||
cell.textLabel.textColor = ThemeService.shared.theme.textPrimaryColor;
|
||||
|
||||
@@ -2820,7 +2822,7 @@ NSString *const kRoomSettingsAdvancedE2eEnabledCellViewIdentifier = @"kRoomSetti
|
||||
[roomBlacklistUnverifiedDevicesCell.mxkSwitch addTarget:self action:@selector(toggleBlacklistUnverifiedDevice:) forControlEvents:UIControlEventValueChanged];
|
||||
roomBlacklistUnverifiedDevicesCell.mxkSwitch.onTintColor = ThemeService.shared.theme.tintColor;
|
||||
|
||||
roomBlacklistUnverifiedDevicesCell.mxkLabel.text = NSLocalizedStringFromTable(@"room_details_advanced_e2e_encryption_blacklist_unverified_devices", @"Vector", nil);
|
||||
roomBlacklistUnverifiedDevicesCell.mxkLabel.text = [VectorL10n roomDetailsAdvancedE2eEncryptionBlacklistUnverifiedDevices];
|
||||
|
||||
// For the switch value, use by order:
|
||||
// - the MXCrypto.globalBlacklistUnverifiedDevices if its value is YES
|
||||
@@ -2866,11 +2868,11 @@ NSString *const kRoomSettingsAdvancedE2eEnabledCellViewIdentifier = @"kRoomSetti
|
||||
cell.textLabel.numberOfLines = 0;
|
||||
if (mxRoom.isDirect)
|
||||
{
|
||||
cell.textLabel.text = NSLocalizedStringFromTable(@"room_details_advanced_e2e_encryption_enabled_for_dm", @"Vector", nil);
|
||||
cell.textLabel.text = [VectorL10n roomDetailsAdvancedE2eEncryptionEnabledForDm];
|
||||
}
|
||||
else
|
||||
{
|
||||
cell.textLabel.text = NSLocalizedStringFromTable(@"room_details_advanced_e2e_encryption_enabled", @"Vector", nil);
|
||||
cell.textLabel.text = [VectorL10n roomDetailsAdvancedE2eEncryptionEnabled];
|
||||
}
|
||||
cell.textLabel.textColor = ThemeService.shared.theme.textPrimaryColor;
|
||||
|
||||
@@ -2882,7 +2884,7 @@ NSString *const kRoomSettingsAdvancedE2eEnabledCellViewIdentifier = @"kRoomSetti
|
||||
|
||||
[roomEncryptionCell.mxkSwitch addTarget:self action:@selector(toggleEncryption:) forControlEvents:UIControlEventValueChanged];
|
||||
|
||||
roomEncryptionCell.mxkLabel.text = NSLocalizedStringFromTable(@"room_details_advanced_enable_e2e_encryption", @"Vector", nil);
|
||||
roomEncryptionCell.mxkLabel.text = [VectorL10n roomDetailsAdvancedEnableE2eEncryption];
|
||||
|
||||
roomEncryptionCell.mxkSwitch.on = (updatedItemsDict[kRoomSettingsEncryptionKey] != nil);
|
||||
|
||||
@@ -2900,11 +2902,11 @@ NSString *const kRoomSettingsAdvancedE2eEnabledCellViewIdentifier = @"kRoomSetti
|
||||
cell.textLabel.numberOfLines = 0;
|
||||
if (mxRoom.isDirect)
|
||||
{
|
||||
cell.textLabel.text = NSLocalizedStringFromTable(@"room_details_advanced_e2e_encryption_disabled_for_dm", @"Vector", nil);
|
||||
cell.textLabel.text = [VectorL10n roomDetailsAdvancedE2eEncryptionDisabledForDm];
|
||||
}
|
||||
else
|
||||
{
|
||||
cell.textLabel.text = NSLocalizedStringFromTable(@"room_details_advanced_e2e_encryption_disabled", @"Vector", nil);
|
||||
cell.textLabel.text = [VectorL10n roomDetailsAdvancedE2eEncryptionDisabled];
|
||||
}
|
||||
cell.textLabel.textColor = ThemeService.shared.theme.textPrimaryColor;
|
||||
|
||||
@@ -3303,9 +3305,11 @@ NSString *const kRoomSettingsAdvancedE2eEnabledCellViewIdentifier = @"kRoomSetti
|
||||
|
||||
__weak typeof(self) weakSelf = self;
|
||||
|
||||
currentAlert = [UIAlertController alertControllerWithTitle:NSLocalizedStringFromTable(@"room_details_history_section_prompt_title", @"Vector", nil) message:NSLocalizedStringFromTable(@"room_details_history_section_prompt_msg", @"Vector", nil) preferredStyle:UIAlertControllerStyleAlert];
|
||||
currentAlert = [UIAlertController alertControllerWithTitle:[VectorL10n roomDetailsHistorySectionPromptTitle]
|
||||
message:[VectorL10n roomDetailsHistorySectionPromptMsg]
|
||||
preferredStyle:UIAlertControllerStyleAlert];
|
||||
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[NSBundle mxk_localizedStringForKey:@"cancel"]
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n cancel]
|
||||
style:UIAlertActionStyleCancel
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -3317,7 +3321,7 @@ NSString *const kRoomSettingsAdvancedE2eEnabledCellViewIdentifier = @"kRoomSetti
|
||||
|
||||
}]];
|
||||
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[NSBundle mxk_localizedStringForKey:@"continue"]
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n continue]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -3389,9 +3393,11 @@ NSString *const kRoomSettingsAdvancedE2eEnabledCellViewIdentifier = @"kRoomSetti
|
||||
|
||||
__weak typeof(self) weakSelf = self;
|
||||
|
||||
currentAlert = [UIAlertController alertControllerWithTitle:NSLocalizedStringFromTable(@"room_details_addresses_disable_main_address_prompt_title", @"Vector", nil) message:NSLocalizedStringFromTable(@"room_details_addresses_disable_main_address_prompt_msg", @"Vector", nil) preferredStyle:UIAlertControllerStyleAlert];
|
||||
currentAlert = [UIAlertController alertControllerWithTitle:[VectorL10n roomDetailsAddressesDisableMainAddressPromptTitle]
|
||||
message:[VectorL10n roomDetailsAddressesDisableMainAddressPromptMsg]
|
||||
preferredStyle:UIAlertControllerStyleAlert];
|
||||
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[NSBundle mxk_localizedStringForKey:@"cancel"]
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n cancel]
|
||||
style:UIAlertActionStyleCancel
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -3403,7 +3409,7 @@ NSString *const kRoomSettingsAdvancedE2eEnabledCellViewIdentifier = @"kRoomSetti
|
||||
|
||||
}]];
|
||||
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[NSBundle mxk_localizedStringForKey:@"continue"]
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n continue]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -3457,20 +3463,20 @@ NSString *const kRoomSettingsAdvancedE2eEnabledCellViewIdentifier = @"kRoomSetti
|
||||
NSString *title, *message;
|
||||
if ([self.mainSession roomWithRoomId:self.roomId].isDirect)
|
||||
{
|
||||
title = NSLocalizedStringFromTable(@"room_participants_leave_prompt_title_for_dm", @"Vector", nil);
|
||||
message = NSLocalizedStringFromTable(@"room_participants_leave_prompt_msg_for_dm", @"Vector", nil);
|
||||
title = [VectorL10n roomParticipantsLeavePromptTitleForDm];
|
||||
message = [VectorL10n roomParticipantsLeavePromptMsgForDm];
|
||||
}
|
||||
else
|
||||
{
|
||||
title = NSLocalizedStringFromTable(@"room_participants_leave_prompt_title", @"Vector", nil);
|
||||
message = NSLocalizedStringFromTable(@"room_participants_leave_prompt_msg", @"Vector", nil);
|
||||
title = [VectorL10n roomParticipantsLeavePromptTitle];
|
||||
message = [VectorL10n roomParticipantsLeavePromptMsg];
|
||||
}
|
||||
|
||||
currentAlert = [UIAlertController alertControllerWithTitle:title
|
||||
message:message
|
||||
preferredStyle:UIAlertControllerStyleAlert];
|
||||
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[NSBundle mxk_localizedStringForKey:@"cancel"]
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n cancel]
|
||||
style:UIAlertActionStyleCancel
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -3482,7 +3488,7 @@ NSString *const kRoomSettingsAdvancedE2eEnabledCellViewIdentifier = @"kRoomSetti
|
||||
|
||||
}]];
|
||||
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:NSLocalizedStringFromTable(@"leave", @"Vector", nil)
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[VectorL10n leave]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -3848,13 +3854,13 @@ NSString *const kRoomSettingsAdvancedE2eEnabledCellViewIdentifier = @"kRoomSetti
|
||||
|
||||
[currentAlert dismissViewControllerAnimated:NO completion:nil];
|
||||
|
||||
NSString *alertMsg = [NSString stringWithFormat:NSLocalizedStringFromTable(@"room_details_addresses_invalid_address_prompt_msg", @"Vector", nil), roomAlias];
|
||||
NSString *alertMsg = [VectorL10n roomDetailsAddressesInvalidAddressPromptMsg:roomAlias];
|
||||
|
||||
currentAlert = [UIAlertController alertControllerWithTitle:NSLocalizedStringFromTable(@"room_details_addresses_invalid_address_prompt_title", @"Vector", nil)
|
||||
currentAlert = [UIAlertController alertControllerWithTitle:[VectorL10n roomDetailsAddressesInvalidAddressPromptTitle]
|
||||
message:alertMsg
|
||||
preferredStyle:UIAlertControllerStyleAlert];
|
||||
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[NSBundle mxk_localizedStringForKey:@"ok"]
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n ok]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -3913,13 +3919,13 @@ NSString *const kRoomSettingsAdvancedE2eEnabledCellViewIdentifier = @"kRoomSetti
|
||||
|
||||
[currentAlert dismissViewControllerAnimated:NO completion:nil];
|
||||
|
||||
NSString *alertMsg = [NSString stringWithFormat:NSLocalizedStringFromTable(@"room_details_flair_invalid_id_prompt_msg", @"Vector", nil), groupId];
|
||||
NSString *alertMsg = [VectorL10n roomDetailsFlairInvalidIdPromptMsg:groupId];
|
||||
|
||||
currentAlert = [UIAlertController alertControllerWithTitle:NSLocalizedStringFromTable(@"room_details_flair_invalid_id_prompt_title", @"Vector", nil)
|
||||
currentAlert = [UIAlertController alertControllerWithTitle:[VectorL10n roomDetailsFlairInvalidIdPromptTitle]
|
||||
message:alertMsg
|
||||
preferredStyle:UIAlertControllerStyleAlert];
|
||||
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[NSBundle mxk_localizedStringForKey:@"ok"]
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n ok]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
|
||||
@@ -121,7 +121,7 @@
|
||||
|
||||
[self.resendButton.layer setCornerRadius:5];
|
||||
self.resendButton.clipsToBounds = YES;
|
||||
[self.resendButton setTitle:NSLocalizedStringFromTable(@"retry", @"Vector", nil) forState:UIControlStateNormal];
|
||||
[self.resendButton setTitle:[VectorL10n retry] forState:UIControlStateNormal];
|
||||
self.resendButton.backgroundColor = ThemeService.shared.theme.tintColor;
|
||||
|
||||
UIImage *image = [[UIImage imageNamed:@"room_context_menu_delete"] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
|
||||
@@ -214,37 +214,32 @@
|
||||
|
||||
if (!onOngoingConferenceCallClosePressed)
|
||||
{
|
||||
onGoingConferenceCall = [NSString stringWithFormat:NSLocalizedStringFromTable(@"room_ongoing_conference_call", @"Vector", nil),
|
||||
NSLocalizedStringFromTable(@"voice", @"Vector", nil),
|
||||
NSLocalizedStringFromTable(@"video", @"Vector", nil)];
|
||||
onGoingConferenceCall = [VectorL10n roomOngoingConferenceCall:[VectorL10n voice] :[VectorL10n video]];
|
||||
}
|
||||
else
|
||||
{
|
||||
// Display the banner with a "Close it" string
|
||||
objc_setAssociatedObject(self.messageTextView, "onOngoingConferenceCallClosePressed", [onOngoingConferenceCallClosePressed copy], OBJC_ASSOCIATION_RETAIN_NONATOMIC);
|
||||
|
||||
onGoingConferenceCall = [NSString stringWithFormat:NSLocalizedStringFromTable(@"room_ongoing_conference_call_with_close", @"Vector", nil),
|
||||
NSLocalizedStringFromTable(@"voice", @"Vector", nil),
|
||||
NSLocalizedStringFromTable(@"video", @"Vector", nil),
|
||||
NSLocalizedStringFromTable(@"room_ongoing_conference_call_close", @"Vector", nil)];
|
||||
|
||||
onGoingConferenceCall = [VectorL10n roomOngoingConferenceCallWithClose:[VectorL10n voice] :[VectorL10n video] :[VectorL10n roomOngoingConferenceCallClose]];
|
||||
}
|
||||
|
||||
NSMutableAttributedString *onGoingConferenceCallAttibutedString = [[NSMutableAttributedString alloc] initWithString:onGoingConferenceCall];
|
||||
|
||||
// Add a link on the "voice" string
|
||||
NSRange voiceRange = [onGoingConferenceCall rangeOfString:NSLocalizedStringFromTable(@"voice", @"Vector", nil)];
|
||||
NSRange voiceRange = [onGoingConferenceCall rangeOfString:[VectorL10n voice]];
|
||||
[onGoingConferenceCallAttibutedString addAttribute:NSUnderlineStyleAttributeName value:@(NSUnderlineStyleSingle) range:voiceRange];
|
||||
[onGoingConferenceCallAttibutedString addAttribute:NSLinkAttributeName value:@"onOngoingConferenceCallWithVoicePressed" range:voiceRange];
|
||||
|
||||
// Add a link on the "video" string
|
||||
NSRange videoRange = [onGoingConferenceCall rangeOfString:NSLocalizedStringFromTable(@"video", @"Vector", nil)];
|
||||
NSRange videoRange = [onGoingConferenceCall rangeOfString:[VectorL10n video]];
|
||||
[onGoingConferenceCallAttibutedString addAttribute:NSUnderlineStyleAttributeName value:@(NSUnderlineStyleSingle) range:videoRange];
|
||||
[onGoingConferenceCallAttibutedString addAttribute:NSLinkAttributeName value:@"onOngoingConferenceCallWithVideoPressed" range:videoRange];
|
||||
|
||||
// Add a link on the "Close" string
|
||||
if (onOngoingConferenceCallClosePressed)
|
||||
{
|
||||
NSRange closeRange = [onGoingConferenceCall rangeOfString:NSLocalizedStringFromTable(@"room_ongoing_conference_call_close", @"Vector", nil)];
|
||||
NSRange closeRange = [onGoingConferenceCall rangeOfString:[VectorL10n roomOngoingConferenceCallClose]];
|
||||
[onGoingConferenceCallAttibutedString addAttribute:NSUnderlineStyleAttributeName value:@(NSUnderlineStyleSingle) range:closeRange];
|
||||
[onGoingConferenceCallAttibutedString addAttribute:NSLinkAttributeName value:@"onOngoingConferenceCallClosePressed" range:closeRange];
|
||||
}
|
||||
@@ -290,11 +285,11 @@
|
||||
|
||||
NSMutableAttributedString *roomReplacementAttributedString = [NSMutableAttributedString new];
|
||||
|
||||
NSString *roomReplacementReasonString = [NSString stringWithFormat:@"%@\n", NSLocalizedStringFromTable(@"room_replacement_information", @"Vector", nil)];
|
||||
NSString *roomReplacementReasonString = [NSString stringWithFormat:@"%@\n", [VectorL10n roomReplacementInformation]];
|
||||
|
||||
NSAttributedString *roomReplacementReasonAttributedString = [[NSAttributedString alloc] initWithString:roomReplacementReasonString attributes:roomReplacementReasonAttributes];
|
||||
|
||||
NSString *roomLinkString = NSLocalizedStringFromTable(@"room_replacement_link", @"Vector", nil);
|
||||
NSString *roomLinkString = [VectorL10n roomReplacementLink];
|
||||
NSAttributedString *roomLinkAttributedString = [[NSAttributedString alloc] initWithString:roomLinkString attributes:roomLinkAttributes];
|
||||
|
||||
[roomReplacementAttributedString appendAttributedString:roomReplacementReasonAttributedString];
|
||||
@@ -307,7 +302,7 @@
|
||||
}
|
||||
else
|
||||
{
|
||||
self.messageTextView.text = NSLocalizedStringFromTable(@"room_replacement_information", @"Vector", nil);
|
||||
self.messageTextView.text = [VectorL10n roomReplacementInformation];
|
||||
}
|
||||
|
||||
self.messageTextView.tintColor = ThemeService.shared.theme.textPrimaryColor;
|
||||
@@ -357,29 +352,29 @@
|
||||
// Reuse MatrixKit as is for the beginning of hardLimit
|
||||
if ([limitType isEqualToString:kMXErrorResourceLimitExceededLimitTypeMonthlyActiveUserValue])
|
||||
{
|
||||
[message appendString:[NSBundle mxk_localizedStringForKey:@"login_error_resource_limit_exceeded_message_monthly_active_user"]];
|
||||
[message appendString:[MatrixKitL10n loginErrorResourceLimitExceededMessageMonthlyActiveUser]];
|
||||
}
|
||||
else
|
||||
{
|
||||
[message appendString:[NSBundle mxk_localizedStringForKey:@"login_error_resource_limit_exceeded_message_default"]];
|
||||
[message appendString:[MatrixKitL10n loginErrorResourceLimitExceededMessageDefault]];
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if ([limitType isEqualToString:kMXErrorResourceLimitExceededLimitTypeMonthlyActiveUserValue])
|
||||
{
|
||||
[message appendString:NSLocalizedStringFromTable(@"room_resource_usage_limit_reached_message_1_monthly_active_user", @"Vector", nil)];
|
||||
[message appendString:[VectorL10n roomResourceUsageLimitReachedMessage1MonthlyActiveUser]];
|
||||
}
|
||||
else
|
||||
{
|
||||
[message appendString:NSLocalizedStringFromTable(@"room_resource_usage_limit_reached_message_1_default", @"Vector", nil)];
|
||||
[message appendString:[VectorL10n roomResourceUsageLimitReachedMessage1Default]];
|
||||
}
|
||||
|
||||
message2 = [[NSAttributedString alloc] initWithString:NSLocalizedStringFromTable(@"room_resource_usage_limit_reached_message_2", @"Vector", nil)
|
||||
|
||||
message2 = [[NSAttributedString alloc] initWithString:[VectorL10n roomResourceUsageLimitReachedMessage2]
|
||||
attributes:@{
|
||||
NSFontAttributeName: [UIFont boldSystemFontOfSize:fontSize],
|
||||
NSForegroundColorAttributeName: ThemeService.shared.theme.backgroundColor
|
||||
}];
|
||||
NSFontAttributeName: [UIFont boldSystemFontOfSize:fontSize],
|
||||
NSForegroundColorAttributeName: ThemeService.shared.theme.backgroundColor
|
||||
}];
|
||||
}
|
||||
|
||||
NSDictionary *attributes = @{
|
||||
@@ -406,16 +401,16 @@
|
||||
messageContact2LinkAttributes = attributes;
|
||||
}
|
||||
|
||||
NSAttributedString *messageContact1 = [[NSAttributedString alloc] initWithString:NSLocalizedStringFromTable(@"room_resource_limit_exceeded_message_contact_1", @"Vector", nil) attributes:attributes];
|
||||
NSAttributedString *messageContact2Link = [[NSAttributedString alloc] initWithString:NSLocalizedStringFromTable(@"room_resource_limit_exceeded_message_contact_2_link", @"Vector", nil) attributes:messageContact2LinkAttributes];
|
||||
NSAttributedString *messageContact1 = [[NSAttributedString alloc] initWithString:[VectorL10n roomResourceLimitExceededMessageContact1] attributes:attributes];
|
||||
NSAttributedString *messageContact2Link = [[NSAttributedString alloc] initWithString:[VectorL10n roomResourceLimitExceededMessageContact2Link] attributes:messageContact2LinkAttributes];
|
||||
NSAttributedString *messageContact3;
|
||||
if (hardLimit)
|
||||
{
|
||||
messageContact3 = [[NSAttributedString alloc] initWithString:NSLocalizedStringFromTable(@"room_resource_limit_exceeded_message_contact_3", @"Vector", nil) attributes:attributes];
|
||||
messageContact3 = [[NSAttributedString alloc] initWithString:[VectorL10n roomResourceLimitExceededMessageContact3] attributes:attributes];
|
||||
}
|
||||
else
|
||||
{
|
||||
messageContact3 = [[NSAttributedString alloc] initWithString:NSLocalizedStringFromTable(@"room_resource_usage_limit_reached_message_contact_3", @"Vector", nil) attributes:attributes];
|
||||
messageContact3 = [[NSAttributedString alloc] initWithString:[VectorL10n roomResourceUsageLimitReachedMessageContact3] attributes:attributes];
|
||||
}
|
||||
|
||||
NSMutableAttributedString *attributedText = [[NSMutableAttributedString alloc] initWithString:message attributes:attributes];
|
||||
|
||||
@@ -39,19 +39,4 @@
|
||||
[self updateUserNameColor];
|
||||
}
|
||||
|
||||
+ (CGFloat)heightForCellData:(MXKCellData *)cellData withMaximumWidth:(CGFloat)maxWidth
|
||||
{
|
||||
RoomBubbleCellData *bubbleData = (RoomBubbleCellData*)cellData;
|
||||
|
||||
// Include the URL preview in the height if necessary.
|
||||
if (RiotSettings.shared.roomScreenShowsURLPreviews && bubbleData && bubbleData.showURLPreview)
|
||||
{
|
||||
CGFloat height = [super heightForCellData:cellData withMaximumWidth:maxWidth];
|
||||
return height + RoomBubbleCellLayout.urlPreviewViewTopMargin + [URLPreviewView contentViewHeightFor:bubbleData.urlPreviewData
|
||||
fitting:maxWidth];
|
||||
}
|
||||
|
||||
return [super heightForCellData:cellData withMaximumWidth:maxWidth];
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
-15
@@ -45,19 +45,4 @@
|
||||
}
|
||||
}
|
||||
|
||||
+ (CGFloat)heightForCellData:(MXKCellData *)cellData withMaximumWidth:(CGFloat)maxWidth
|
||||
{
|
||||
RoomBubbleCellData *bubbleData = (RoomBubbleCellData*)cellData;
|
||||
|
||||
// Include the URL preview in the height if necessary.
|
||||
if (RiotSettings.shared.roomScreenShowsURLPreviews && bubbleData && bubbleData.showURLPreview)
|
||||
{
|
||||
CGFloat height = [super heightForCellData:cellData withMaximumWidth:maxWidth];
|
||||
return height + RoomBubbleCellLayout.urlPreviewViewTopMargin + [URLPreviewView contentViewHeightFor:bubbleData.urlPreviewData
|
||||
fitting:maxWidth];
|
||||
}
|
||||
|
||||
return [super heightForCellData:cellData withMaximumWidth:maxWidth];
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@@ -29,19 +29,4 @@
|
||||
self.messageTextView.tintColor = ThemeService.shared.theme.tintColor;
|
||||
}
|
||||
|
||||
+ (CGFloat)heightForCellData:(MXKCellData *)cellData withMaximumWidth:(CGFloat)maxWidth
|
||||
{
|
||||
RoomBubbleCellData *bubbleData = (RoomBubbleCellData*)cellData;
|
||||
|
||||
// Include the URL preview in the height if necessary.
|
||||
if (RiotSettings.shared.roomScreenShowsURLPreviews && bubbleData && bubbleData.showURLPreview)
|
||||
{
|
||||
CGFloat height = [super heightForCellData:cellData withMaximumWidth:maxWidth];
|
||||
return height + RoomBubbleCellLayout.urlPreviewViewTopMargin + [URLPreviewView contentViewHeightFor:bubbleData.urlPreviewData
|
||||
fitting:maxWidth];
|
||||
}
|
||||
|
||||
return [super heightForCellData:cellData withMaximumWidth:maxWidth];
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@@ -29,7 +29,7 @@ NSString *const kRoomMembershipExpandedBubbleCellTapOnCollapseButton = @"kRoomMe
|
||||
{
|
||||
[super awakeFromNib];
|
||||
|
||||
NSString* title = NSLocalizedStringFromTable(@"collapse", @"Vector", nil);
|
||||
NSString* title = [VectorL10n collapse];
|
||||
[self.collapseButton setTitle:title forState:UIControlStateNormal];
|
||||
[self.collapseButton setTitle:title forState:UIControlStateHighlighted];
|
||||
}
|
||||
|
||||
@@ -40,19 +40,4 @@
|
||||
[self updateUserNameColor];
|
||||
}
|
||||
|
||||
+ (CGFloat)heightForCellData:(MXKCellData *)cellData withMaximumWidth:(CGFloat)maxWidth
|
||||
{
|
||||
RoomBubbleCellData *bubbleData = (RoomBubbleCellData*)cellData;
|
||||
|
||||
// Include the URL preview in the height if necessary.
|
||||
if (RiotSettings.shared.roomScreenShowsURLPreviews && bubbleData && bubbleData.showURLPreview)
|
||||
{
|
||||
CGFloat height = [super heightForCellData:cellData withMaximumWidth:maxWidth];
|
||||
return height + RoomBubbleCellLayout.urlPreviewViewTopMargin + [URLPreviewView contentViewHeightFor:bubbleData.urlPreviewData
|
||||
fitting:maxWidth];
|
||||
}
|
||||
|
||||
return [super heightForCellData:cellData withMaximumWidth:maxWidth];
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@@ -29,19 +29,4 @@
|
||||
self.messageTextView.tintColor = ThemeService.shared.theme.tintColor;
|
||||
}
|
||||
|
||||
+ (CGFloat)heightForCellData:(MXKCellData *)cellData withMaximumWidth:(CGFloat)maxWidth
|
||||
{
|
||||
RoomBubbleCellData *bubbleData = (RoomBubbleCellData*)cellData;
|
||||
|
||||
// Include the URL preview in the height if necessary.
|
||||
if (RiotSettings.shared.roomScreenShowsURLPreviews && bubbleData && bubbleData.showURLPreview)
|
||||
{
|
||||
CGFloat height = [super heightForCellData:cellData withMaximumWidth:maxWidth];
|
||||
return height + RoomBubbleCellLayout.urlPreviewViewTopMargin + [URLPreviewView contentViewHeightFor:bubbleData.urlPreviewData
|
||||
fitting:maxWidth];
|
||||
}
|
||||
|
||||
return [super heightForCellData:cellData withMaximumWidth:maxWidth];
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@@ -119,7 +119,7 @@ const CGFloat kComposerContainerTrailingPadding = 12;
|
||||
[growingTextView becomeFirstResponder];
|
||||
}
|
||||
|
||||
self.attachMediaButton.accessibilityLabel = NSLocalizedStringFromTable(@"room_accessibility_upload", @"Vector", nil);
|
||||
self.attachMediaButton.accessibilityLabel = [VectorL10n roomAccessibilityUpload];
|
||||
|
||||
UIImage *image = [UIImage imageNamed:@"input_text_background"];
|
||||
image = [image resizableImageWithCapInsets:UIEdgeInsetsMake(9, 15, 10, 16)];
|
||||
@@ -180,7 +180,7 @@ const CGFloat kComposerContainerTrailingPadding = 12;
|
||||
case RoomInputToolbarViewSendModeReply:
|
||||
buttonImage = [UIImage imageNamed:@"send_icon"];
|
||||
self.inputContextImageView.image = [UIImage imageNamed:@"input_reply_icon"];
|
||||
self.inputContextLabel.text = [NSString stringWithFormat:NSLocalizedStringFromTable(@"room_message_replying_to", @"Vector", nil), self.eventSenderDisplayName];
|
||||
self.inputContextLabel.text = [VectorL10n roomMessageReplyingTo:self.eventSenderDisplayName];
|
||||
|
||||
self.inputContextViewHeightConstraint.constant = kContextBarHeight;
|
||||
updatedHeight += kContextBarHeight;
|
||||
@@ -189,7 +189,7 @@ const CGFloat kComposerContainerTrailingPadding = 12;
|
||||
case RoomInputToolbarViewSendModeEdit:
|
||||
buttonImage = [UIImage imageNamed:@"save_icon"];
|
||||
self.inputContextImageView.image = [UIImage imageNamed:@"input_edit_icon"];
|
||||
self.inputContextLabel.text = NSLocalizedStringFromTable(@"room_message_editing", @"Vector", nil);
|
||||
self.inputContextLabel.text = [VectorL10n roomMessageEditing];
|
||||
|
||||
self.inputContextViewHeightConstraint.constant = kContextBarHeight;
|
||||
updatedHeight += kContextBarHeight;
|
||||
@@ -249,11 +249,11 @@ const CGFloat kComposerContainerTrailingPadding = 12;
|
||||
switch (_sendMode)
|
||||
{
|
||||
case RoomInputToolbarViewSendModeReply:
|
||||
placeholder = NSLocalizedStringFromTable(@"room_message_reply_to_short_placeholder", @"Vector", nil);
|
||||
placeholder = [VectorL10n roomMessageReplyToShortPlaceholder];
|
||||
break;
|
||||
|
||||
default:
|
||||
placeholder = NSLocalizedStringFromTable(@"room_message_short_placeholder", @"Vector", nil);
|
||||
placeholder = [VectorL10n roomMessageShortPlaceholder];
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -264,11 +264,11 @@ const CGFloat kComposerContainerTrailingPadding = 12;
|
||||
switch (_sendMode)
|
||||
{
|
||||
case RoomInputToolbarViewSendModeReply:
|
||||
placeholder = NSLocalizedStringFromTable(@"encrypted_room_message_reply_to_placeholder", @"Vector", nil);
|
||||
placeholder = [VectorL10n encryptedRoomMessageReplyToPlaceholder];
|
||||
break;
|
||||
|
||||
default:
|
||||
placeholder = NSLocalizedStringFromTable(@"encrypted_room_message_placeholder", @"Vector", nil);
|
||||
placeholder = [VectorL10n encryptedRoomMessagePlaceholder];
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -277,11 +277,11 @@ const CGFloat kComposerContainerTrailingPadding = 12;
|
||||
switch (_sendMode)
|
||||
{
|
||||
case RoomInputToolbarViewSendModeReply:
|
||||
placeholder = NSLocalizedStringFromTable(@"room_message_reply_to_placeholder", @"Vector", nil);
|
||||
placeholder = [VectorL10n roomMessageReplyToPlaceholder];
|
||||
break;
|
||||
|
||||
default:
|
||||
placeholder = NSLocalizedStringFromTable(@"room_message_placeholder", @"Vector", nil);
|
||||
placeholder = [VectorL10n roomMessagePlaceholder];
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -69,23 +69,23 @@
|
||||
activeCount ++;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (memberCount)
|
||||
{
|
||||
// Check whether the logged in user is alone in this room
|
||||
if (memberCount == 1 && self.mxRoom.summary.membership == MXMembershipJoin)
|
||||
{
|
||||
self.roomMembers.text = NSLocalizedStringFromTable(@"room_title_invite_members", @"Vector", nil);
|
||||
self.roomMembers.text = [VectorL10n roomTitleInviteMembers];
|
||||
}
|
||||
else
|
||||
{
|
||||
if (activeCount > 1)
|
||||
{
|
||||
self.roomMembers.text = [NSString stringWithFormat:NSLocalizedStringFromTable(@"room_title_multiple_active_members", @"Vector", nil), @(activeCount), @(memberCount)];
|
||||
self.roomMembers.text = [VectorL10n roomTitleMultipleActiveMembers:@(activeCount).stringValue :@(memberCount).stringValue];
|
||||
}
|
||||
else
|
||||
{
|
||||
self.roomMembers.text = [NSString stringWithFormat:NSLocalizedStringFromTable(@"room_title_one_active_member", @"Vector", nil), @(activeCount), @(memberCount)];
|
||||
self.roomMembers.text = [VectorL10n roomTitleOneActiveMember:@(activeCount).stringValue :@(memberCount).stringValue];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -38,8 +38,8 @@
|
||||
self.previewLabel.text = nil;
|
||||
self.subNoticeLabel.text = nil;
|
||||
|
||||
[self.leftButton setTitle:NSLocalizedStringFromTable(@"decline", @"Vector", nil) forState:UIControlStateNormal];
|
||||
[self.leftButton setTitle:NSLocalizedStringFromTable(@"decline", @"Vector", nil) forState:UIControlStateHighlighted];
|
||||
[self.leftButton setTitle:[VectorL10n decline] forState:UIControlStateNormal];
|
||||
[self.leftButton setTitle:[VectorL10n decline] forState:UIControlStateHighlighted];
|
||||
|
||||
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(reportTapGesture:)];
|
||||
[tap setNumberOfTouchesRequired:1];
|
||||
@@ -48,8 +48,8 @@
|
||||
[self.leftButton addGestureRecognizer:tap];
|
||||
self.leftButton.userInteractionEnabled = YES;
|
||||
|
||||
[self.rightButton setTitle:NSLocalizedStringFromTable(@"join", @"Vector", nil) forState:UIControlStateNormal];
|
||||
[self.rightButton setTitle:NSLocalizedStringFromTable(@"join", @"Vector", nil) forState:UIControlStateHighlighted];
|
||||
[self.rightButton setTitle:[VectorL10n join] forState:UIControlStateNormal];
|
||||
[self.rightButton setTitle:[VectorL10n join] forState:UIControlStateHighlighted];
|
||||
|
||||
tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(reportTapGesture:)];
|
||||
[tap setNumberOfTouchesRequired:1];
|
||||
@@ -121,11 +121,11 @@
|
||||
// Joined members count
|
||||
if (self.roomPreviewData.numJoinedMembers > 1)
|
||||
{
|
||||
self.roomMembers.text = [NSString stringWithFormat:NSLocalizedStringFromTable(@"room_title_members", @"Vector", nil), @(self.roomPreviewData.numJoinedMembers)];
|
||||
self.roomMembers.text = [VectorL10n roomTitleMembers:@(self.roomPreviewData.numJoinedMembers)];
|
||||
}
|
||||
else if (self.roomPreviewData.numJoinedMembers == 1)
|
||||
{
|
||||
self.roomMembers.text = NSLocalizedStringFromTable(@"room_title_one_member", @"Vector", nil);
|
||||
self.roomMembers.text = [VectorL10n roomTitleOneMember];
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -136,7 +136,7 @@
|
||||
if (self.roomPreviewData.roomDataSource)
|
||||
{
|
||||
// Display the default preview subtitle in case of peeking
|
||||
self.subNoticeLabel.text = NSLocalizedStringFromTable(@"room_preview_subtitle", @"Vector", nil);
|
||||
self.subNoticeLabel.text = [VectorL10n roomPreviewSubtitle];
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -146,10 +146,10 @@
|
||||
if (self.roomPreviewData.emailInvitation.email)
|
||||
{
|
||||
// The user has been invited to join this room by email
|
||||
self.previewLabel.text = [NSString stringWithFormat:NSLocalizedStringFromTable(@"room_preview_invitation_format", @"Vector", nil), self.roomPreviewData.emailInvitation.inviterName];
|
||||
self.previewLabel.text = [VectorL10n roomPreviewInvitationFormat:self.roomPreviewData.emailInvitation.inviterName];
|
||||
|
||||
// Warn the user that the email is not bound to his matrix account
|
||||
self.subNoticeLabel.text = [NSString stringWithFormat:NSLocalizedStringFromTable(@"room_preview_unlinked_email_warning", @"Vector", nil), self.roomPreviewData.emailInvitation.email];
|
||||
self.subNoticeLabel.text = [VectorL10n roomPreviewUnlinkedEmailWarning:self.roomPreviewData.emailInvitation.email];
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -157,7 +157,7 @@
|
||||
NSString *roomName = self.roomPreviewData.roomName;
|
||||
if (!roomName)
|
||||
{
|
||||
roomName = NSLocalizedStringFromTable(@"room_preview_try_join_an_unknown_room_default", @"Vector", nil);
|
||||
roomName = [VectorL10n roomPreviewTryJoinAnUnknownRoomDefault];
|
||||
}
|
||||
else if (roomName.length > 20)
|
||||
{
|
||||
@@ -167,7 +167,7 @@
|
||||
roomName = [NSString stringWithFormat:@"%@…",[roomName substringToIndex:20]];
|
||||
}
|
||||
|
||||
self.previewLabel.text = [NSString stringWithFormat:NSLocalizedStringFromTable(@"room_preview_try_join_an_unknown_room", @"Vector", nil), roomName];
|
||||
self.previewLabel.text = [VectorL10n roomPreviewTryJoinAnUnknownRoom:roomName];
|
||||
}
|
||||
}
|
||||
else if (self.mxRoom)
|
||||
@@ -204,11 +204,11 @@
|
||||
// {
|
||||
// if (activeCount > 1)
|
||||
// {
|
||||
// self.roomMembers.text = [NSString stringWithFormat:NSLocalizedStringFromTable(@"room_title_multiple_active_members", @"Vector", nil), @(activeCount), @(memberCount)];
|
||||
// self.roomMembers.text = [VectorL10n roomTitleMultipleActiveMembers:@(activeCount).stringValue :@(memberCount).stringValue];
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// self.roomMembers.text = [NSString stringWithFormat:NSLocalizedStringFromTable(@"room_title_one_active_member", @"Vector", nil), @(activeCount), @(memberCount)];
|
||||
// self.roomMembers.text = [VectorL10n roomTitleOneActiveMember:@(activeCount).stringValue :@(memberCount).stringValue];
|
||||
// }
|
||||
// }
|
||||
// else
|
||||
@@ -218,7 +218,7 @@
|
||||
// }
|
||||
|
||||
NSString *displayName = [inviter isEqualToString:inviterUserId] ? inviter : [NSString stringWithFormat:@"%@ (%@)", inviter, inviterUserId];
|
||||
self.previewLabel.text = [NSString stringWithFormat:NSLocalizedStringFromTable(@"room_preview_invitation_format", @"Vector", nil), displayName];
|
||||
self.previewLabel.text = [VectorL10n roomPreviewInvitationFormat:displayName];
|
||||
};
|
||||
|
||||
[self.mxRoom members:^(MXRoomMembers *roomMembers) {
|
||||
|
||||
@@ -112,7 +112,7 @@
|
||||
self.displayNameTextField.text = self.mxRoom.summary.displayname;
|
||||
if (!self.displayNameTextField.text.length)
|
||||
{
|
||||
self.displayNameTextField.text = [NSBundle mxk_localizedStringForKey:@"room_displayname_empty_room"];
|
||||
self.displayNameTextField.text = [MatrixKitL10n roomDisplaynameEmptyRoom];
|
||||
self.displayNameTextField.textColor = ThemeService.shared.theme.textSecondaryColor;
|
||||
}
|
||||
else
|
||||
|
||||
@@ -37,9 +37,9 @@ class URLPreviewView: UIView, NibLoadable, Themable {
|
||||
static let reducedWidth: CGFloat = 230
|
||||
|
||||
/// The availableWidth value that the XIB file is designed against.
|
||||
static let defaultAvailableWidth: CGFloat = 375
|
||||
static let defaultAvailableWidth: CGFloat = 340
|
||||
/// The threshold value for available width that triggers the view to use a reducedWidth
|
||||
static let reducedWidthThreshold: CGFloat = 320
|
||||
static let reducedWidthThreshold: CGFloat = 285
|
||||
}
|
||||
|
||||
// MARK: - Properties
|
||||
|
||||
@@ -130,12 +130,7 @@ public class VoiceMessageController: NSObject, VoiceMessageToolbarViewDelegate,
|
||||
}
|
||||
|
||||
func voiceMessageToolbarViewDidRequestRecordingCancel(_ toolbarView: VoiceMessageToolbarView) {
|
||||
isInLockedMode = false
|
||||
audioPlayer?.stop()
|
||||
audioRecorder?.stopRecording()
|
||||
deleteRecordingAtURL(temporaryFileURL)
|
||||
UINotificationFeedbackGenerator().notificationOccurred(.error)
|
||||
updateUI()
|
||||
cancelRecording()
|
||||
}
|
||||
|
||||
func voiceMessageToolbarViewDidRequestLockedModeRecording(_ toolbarView: VoiceMessageToolbarView) {
|
||||
@@ -259,6 +254,8 @@ public class VoiceMessageController: NSObject, VoiceMessageToolbarViewDelegate,
|
||||
guard isInLockedMode else {
|
||||
if recordDuration ?? 0 >= Constants.minimumRecordingDuration {
|
||||
sendRecordingAtURL(temporaryFileURL)
|
||||
} else {
|
||||
cancelRecording()
|
||||
}
|
||||
return
|
||||
}
|
||||
@@ -268,6 +265,19 @@ public class VoiceMessageController: NSObject, VoiceMessageToolbarViewDelegate,
|
||||
updateUI()
|
||||
}
|
||||
|
||||
private func cancelRecording() {
|
||||
isInLockedMode = false
|
||||
|
||||
audioPlayer?.stop()
|
||||
audioRecorder?.stopRecording()
|
||||
|
||||
deleteRecordingAtURL(temporaryFileURL)
|
||||
|
||||
UINotificationFeedbackGenerator().notificationOccurred(.error)
|
||||
|
||||
updateUI()
|
||||
}
|
||||
|
||||
private func loadDraftRecording() {
|
||||
guard let temporaryFileURL = temporaryFileURL,
|
||||
let roomId = roomId else {
|
||||
|
||||
@@ -43,7 +43,6 @@ class VoiceMessagePlaybackView: UIView, NibLoadable, Themable {
|
||||
|
||||
private var _waveformView: VoiceMessageWaveformView!
|
||||
private var currentTheme: Theme?
|
||||
private var scrubProgress: CGFloat?
|
||||
|
||||
@IBOutlet private var backgroundView: UIView!
|
||||
@IBOutlet private var recordingIcon: UIView!
|
||||
@@ -51,6 +50,9 @@ class VoiceMessagePlaybackView: UIView, NibLoadable, Themable {
|
||||
@IBOutlet private var elapsedTimeLabel: UILabel!
|
||||
@IBOutlet private var waveformContainerView: UIView!
|
||||
|
||||
private var longPressGestureRecognizer: UILongPressGestureRecognizer!
|
||||
private var panGestureRecognizer: UIPanGestureRecognizer!
|
||||
|
||||
weak var delegate: VoiceMessagePlaybackViewDelegate?
|
||||
|
||||
var details: VoiceMessagePlaybackViewDetails?
|
||||
@@ -75,6 +77,14 @@ class VoiceMessagePlaybackView: UIView, NibLoadable, Themable {
|
||||
|
||||
_waveformView = VoiceMessageWaveformView(frame: waveformContainerView.bounds)
|
||||
waveformContainerView.vc_addSubViewMatchingParent(_waveformView)
|
||||
|
||||
longPressGestureRecognizer = UILongPressGestureRecognizer(target: self, action: #selector(handleLongPressGesture(_:)))
|
||||
longPressGestureRecognizer.minimumPressDuration = 0.2
|
||||
waveformView.addGestureRecognizer(longPressGestureRecognizer)
|
||||
|
||||
panGestureRecognizer = UIPanGestureRecognizer(target: self, action: #selector(handlePanGesture(_:)))
|
||||
panGestureRecognizer.isEnabled = false
|
||||
waveformView.addGestureRecognizer(panGestureRecognizer)
|
||||
}
|
||||
|
||||
func configureWithDetails(_ details: VoiceMessagePlaybackViewDetails?) {
|
||||
@@ -136,28 +146,36 @@ class VoiceMessagePlaybackView: UIView, NibLoadable, Themable {
|
||||
currentTheme = theme
|
||||
configureWithDetails(details)
|
||||
}
|
||||
|
||||
|
||||
// MARK: - Private
|
||||
|
||||
@IBAction private func onPlayButtonTap() {
|
||||
delegate?.voiceMessagePlaybackViewDidRequestPlaybackToggle()
|
||||
}
|
||||
|
||||
@IBAction private func tap(gestureRecognizer: UITapGestureRecognizer) {
|
||||
@objc private func handleLongPressGesture(_ gestureRecognizer: UITapGestureRecognizer) {
|
||||
let x = gestureRecognizer.location(in: waveformContainerView).x.clamped(to: 0...waveformContainerView.bounds.width)
|
||||
let progress = x / waveformContainerView.bounds.width
|
||||
delegate?.voiceMessagePlaybackViewDidRequestSeek(to: progress)
|
||||
}
|
||||
|
||||
@IBAction private func pan(gestureRecognizer: UIPanGestureRecognizer) {
|
||||
switch gestureRecognizer.state {
|
||||
case .began, .changed:
|
||||
let x = gestureRecognizer.location(in: waveformContainerView).x.clamped(to: 0...waveformContainerView.bounds.width)
|
||||
let progress = x / waveformContainerView.bounds.width
|
||||
scrubProgress = progress
|
||||
delegate?.voiceMessagePlaybackViewDidRequestSeek(to: progress)
|
||||
default:
|
||||
scrubProgress = nil
|
||||
}
|
||||
|
||||
switch gestureRecognizer.state {
|
||||
case .began:
|
||||
panGestureRecognizer.isEnabled = true
|
||||
case .ended, .failed, .cancelled:
|
||||
panGestureRecognizer.isEnabled = false
|
||||
default:
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
@objc private func handlePanGesture(_ gestureRecognizer: UIPanGestureRecognizer) {
|
||||
switch gestureRecognizer.state {
|
||||
case .began, .changed:
|
||||
let x = gestureRecognizer.location(in: waveformContainerView).x.clamped(to: 0...waveformContainerView.bounds.width)
|
||||
let progress = x / waveformContainerView.bounds.width
|
||||
delegate?.voiceMessagePlaybackViewDidRequestSeek(to: progress)
|
||||
default:
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -51,10 +51,6 @@
|
||||
<rect key="frame" x="94" y="7" width="317" height="30"/>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<gestureRecognizers/>
|
||||
<connections>
|
||||
<outletCollection property="gestureRecognizers" destination="TvB-7x-51j" appends="YES" id="2ac-M3-OKn"/>
|
||||
<outletCollection property="gestureRecognizers" destination="Fwa-Eg-VFh" appends="YES" id="meS-g1-yIc"/>
|
||||
</connections>
|
||||
</view>
|
||||
</subviews>
|
||||
<constraints>
|
||||
@@ -86,16 +82,6 @@
|
||||
</connections>
|
||||
<point key="canvasLocation" x="-1742.753623188406" y="-299.33035714285711"/>
|
||||
</view>
|
||||
<panGestureRecognizer minimumNumberOfTouches="1" id="TvB-7x-51j">
|
||||
<connections>
|
||||
<action selector="panWithGestureRecognizer:" destination="cGR-49-HWB" id="mcT-Wy-ePL"/>
|
||||
</connections>
|
||||
</panGestureRecognizer>
|
||||
<tapGestureRecognizer id="Fwa-Eg-VFh">
|
||||
<connections>
|
||||
<action selector="tapWithGestureRecognizer:" destination="cGR-49-HWB" id="VMd-gQ-DPy"/>
|
||||
</connections>
|
||||
</tapGestureRecognizer>
|
||||
</objects>
|
||||
<resources>
|
||||
<image name="voice_message_play_button" width="15.5" height="15"/>
|
||||
|
||||
@@ -49,15 +49,15 @@
|
||||
UIViewController *rootViewController = [AppDelegate theDelegate].window.rootViewController;
|
||||
if (rootViewController)
|
||||
{
|
||||
NSString *title = NSLocalizedStringFromTable(@"e2e_room_key_request_title", @"Vector", nil);
|
||||
NSString *title = [VectorL10n e2eRoomKeyRequestTitle];
|
||||
NSString *message;
|
||||
if (wasNewDevice)
|
||||
{
|
||||
message = [NSString stringWithFormat:NSLocalizedStringFromTable(@"e2e_room_key_request_message_new_device", @"Vector", nil), _device.displayName];
|
||||
message = [VectorL10n e2eRoomKeyRequestMessageNewDevice:_device.displayName];
|
||||
}
|
||||
else
|
||||
{
|
||||
message = [NSString stringWithFormat:NSLocalizedStringFromTable(@"e2e_room_key_request_message", @"Vector", nil), _device.displayName];
|
||||
message = [VectorL10n e2eRoomKeyRequestMessage:_device.displayName];
|
||||
}
|
||||
|
||||
_alertController = [UIAlertController alertControllerWithTitle:title
|
||||
@@ -66,7 +66,7 @@
|
||||
|
||||
__weak typeof(self) weakSelf = self;
|
||||
|
||||
[_alertController addAction:[UIAlertAction actionWithTitle:NSLocalizedStringFromTable(@"e2e_room_key_request_start_verification", @"Vector", nil)
|
||||
[_alertController addAction:[UIAlertAction actionWithTitle:[VectorL10n e2eRoomKeyRequestStartVerification]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -79,7 +79,7 @@
|
||||
}
|
||||
}]];
|
||||
|
||||
[_alertController addAction:[UIAlertAction actionWithTitle:NSLocalizedStringFromTable(@"e2e_room_key_request_share_without_verifying", @"Vector", nil)
|
||||
[_alertController addAction:[UIAlertAction actionWithTitle:[VectorL10n e2eRoomKeyRequestShareWithoutVerifying]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -97,7 +97,7 @@
|
||||
}
|
||||
}]];
|
||||
|
||||
[_alertController addAction:[UIAlertAction actionWithTitle:NSLocalizedStringFromTable(@"e2e_room_key_request_ignore_request", @"Vector", nil)
|
||||
[_alertController addAction:[UIAlertAction actionWithTitle:[VectorL10n e2eRoomKeyRequestIgnoreRequest]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
|
||||
@@ -89,7 +89,7 @@
|
||||
{
|
||||
[super viewDidLoad];
|
||||
|
||||
self.title = NSLocalizedStringFromTable(@"directory_server_picker_title", @"Vector", nil);
|
||||
self.title = [VectorL10n directoryServerPickerTitle];
|
||||
|
||||
self.tableView.delegate = self;
|
||||
|
||||
@@ -285,16 +285,16 @@
|
||||
[currentAlert dismissViewControllerAnimated:NO completion:nil];
|
||||
|
||||
// Prompt the user to enter a homeserver
|
||||
currentAlert = [UIAlertController alertControllerWithTitle:nil message:NSLocalizedStringFromTable(@"directory_server_type_homeserver", @"Vector", nil) preferredStyle:UIAlertControllerStyleAlert];
|
||||
currentAlert = [UIAlertController alertControllerWithTitle:nil message:[VectorL10n directoryServerTypeHomeserver] preferredStyle:UIAlertControllerStyleAlert];
|
||||
|
||||
[currentAlert addTextFieldWithConfigurationHandler:^(UITextField *textField) {
|
||||
|
||||
textField.secureTextEntry = NO;
|
||||
textField.placeholder = NSLocalizedStringFromTable(@"directory_server_placeholder", @"Vector", nil);
|
||||
textField.placeholder = [VectorL10n directoryServerPlaceholder];
|
||||
textField.keyboardType = UIKeyboardTypeDefault;
|
||||
}];
|
||||
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[NSBundle mxk_localizedStringForKey:@"cancel"]
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n cancel]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
@@ -306,7 +306,7 @@
|
||||
|
||||
}]];
|
||||
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[NSBundle mxk_localizedStringForKey:@"ok"]
|
||||
[currentAlert addAction:[UIAlertAction actionWithTitle:[MatrixKitL10n ok]
|
||||
style:UIAlertActionStyleDefault
|
||||
handler:^(UIAlertAction * action) {
|
||||
|
||||
|
||||
@@ -35,11 +35,11 @@
|
||||
if (cellData.includeAllNetworks)
|
||||
{
|
||||
|
||||
self.detailDescLabel.text = [NSString stringWithFormat:NSLocalizedStringFromTable(@"directory_server_all_rooms", @"Vector", nil), cellData.homeserver];
|
||||
self.detailDescLabel.text = [VectorL10n directoryServerAllRooms:cellData.homeserver];
|
||||
}
|
||||
else
|
||||
{
|
||||
self.detailDescLabel.text = NSLocalizedStringFromTable(@"directory_server_all_native_rooms", @"Vector", nil);
|
||||
self.detailDescLabel.text = [VectorL10n directoryServerAllNativeRooms];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -64,7 +64,7 @@
|
||||
{
|
||||
[super viewWillAppear:animated];
|
||||
|
||||
[AppDelegate theDelegate].masterTabBarController.navigationItem.title = NSLocalizedStringFromTable(@"title_rooms", @"Vector", nil);
|
||||
[AppDelegate theDelegate].masterTabBarController.navigationItem.title = [VectorL10n titleRooms];
|
||||
[AppDelegate theDelegate].masterTabBarController.tabBar.tintColor = ThemeService.shared.theme.tintColor;
|
||||
|
||||
if ([self.dataSource isKindOfClass:RecentsDataSource.class])
|
||||
@@ -128,8 +128,8 @@
|
||||
- (void)updateEmptyView
|
||||
{
|
||||
[self.emptyView fillWith:[self emptyViewArtwork]
|
||||
title:NSLocalizedStringFromTable(@"rooms_empty_view_title", @"Vector", nil)
|
||||
informationText:NSLocalizedStringFromTable(@"rooms_empty_view_information", @"Vector", nil)];
|
||||
title:[VectorL10n roomsEmptyViewTitle]
|
||||
informationText:[VectorL10n roomsEmptyViewInformation]];
|
||||
}
|
||||
|
||||
- (UIImage*)emptyViewArtwork
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user