Merge remote-tracking branch 'origin/master' into sdk_extensions

This commit is contained in:
manuroe 2017-12-04 10:50:45 +01:00
commit 243637bec2
55 changed files with 735 additions and 85 deletions

View file

@ -1,3 +1,27 @@
Changes in 0.6.3 (2017-11-30)
===============================================
Improvements:
* Upgrade MatrixKit version (v0.7.3).
* Crypto: Add key sharing dialog for incoming room key requests (PR #1652, PR #1655).
* Update developing instructions in README, thanks to @aaronraimist.
* Add basic OLED black theme, thanks to @aaronraimist (PR #1665).
* Make code compatible with `!use_frameworks` in Podfile.
Bug Fix:
* Failed to send photos which are not stored on the local device and must be downloaded from iCloud (#1654).
* Spontaneous logouts (#1643).
* Dark theme: Make the keyboard dark (#1620), thanks to @aaronraimist.
* App crashes when user wants to share a message (matrix-org/riot-ios-rageshakes#676).
* Fix UICollectionView warning: The behavior of the UICollectionViewFlowLayout is not defined...
Translations:
* Vietnamese, enabled thanks to @loulsle.
* Simplified Chinese, updated thanks to @tonghuix.
* German, updated thanks to @dccs and @fkalis.
* Japanese, updated thanks to @yuurii and @libraryxhime.
* Russian, updated thanks to @Walter.
Changes in 0.6.2 (2017-11-13)
===============================================

View file

@ -6,7 +6,7 @@ source 'https://github.com/CocoaPods/Specs.git'
# Different flavours of pods to MatrixKit
# The current MatrixKit pod version
$matrixKitVersion = '0.7.2'
$matrixKitVersion = '0.7.3'
# The develop branch version
#$matrixKitVersion = 'develop'

View file

@ -44,27 +44,27 @@ PODS:
- GZIP (1.2.1)
- HPGrowingTextView (1.1)
- libPhoneNumber-iOS (0.9.12)
- MatrixKit (0.7.2):
- MatrixKit (0.7.3):
- cmark (~> 0.24.1)
- DTCoreText (~> 1.6.17)
- HPGrowingTextView (~> 1.1)
- libPhoneNumber-iOS (~> 0.9.10)
- MatrixKit/Core (= 0.7.2)
- MatrixSDK (= 0.10.3)
- MatrixKit/AppExtension (0.7.2):
- MatrixKit/Core (= 0.7.3)
- MatrixSDK (= 0.10.4)
- MatrixKit/AppExtension (0.7.3):
- cmark (~> 0.24.1)
- DTCoreText (~> 1.6.17)
- DTCoreText/Extension
- HPGrowingTextView (~> 1.1)
- libPhoneNumber-iOS (~> 0.9.10)
- MatrixSDK (= 0.10.3)
- MatrixKit/Core (0.7.2):
- MatrixSDK (= 0.10.4)
- MatrixKit/Core (0.7.3):
- cmark (~> 0.24.1)
- DTCoreText (~> 1.6.17)
- HPGrowingTextView (~> 1.1)
- libPhoneNumber-iOS (~> 0.9.10)
- MatrixSDK (= 0.10.3)
- MatrixSDK (0.10.3):
- MatrixSDK (= 0.10.4)
- MatrixSDK (0.10.4):
- AFNetworking (~> 3.1.0)
- GZIP (~> 1.2.1)
- OLMKit (2.2.2):
@ -82,8 +82,8 @@ DEPENDENCIES:
- DTCoreText
- GBDeviceInfo (~> 4.4.0)
- GoogleAnalytics
- MatrixKit (= 0.7.2)
- MatrixKit/AppExtension (= 0.7.2)
- MatrixKit (= 0.7.3)
- MatrixKit/AppExtension (= 0.7.3)
- OLMKit
- Realm (~> 3.0.1)
- WebRTC (= 61.5.19063)
@ -98,12 +98,12 @@ SPEC CHECKSUMS:
GZIP: 7ee835f989fb3c6ea79005fc90b8fa6af710a70d
HPGrowingTextView: 88a716d97fb853bcb08a4a08e4727da17efc9b19
libPhoneNumber-iOS: b8a1038a101c78616c4df87815ac1556349faf98
MatrixKit: d1e15f32b4475ca3ca4795036b3f7e77a2907e74
MatrixSDK: fb748691aadc4bdbf3b26ce3c0f0231041368b3a
MatrixKit: ca47e31127c483bc1717ece23834c42dd52dd3c6
MatrixSDK: 66bca5fec7ce03bd9872a42a7877473fcbf822e3
OLMKit: b9d8c0ffee9ea8c45bc0aaa9afb47f93fba7efbd
Realm: 6f23fd1f178a09342eac21bfa7c2bf4312a7a180
WebRTC: 141474ba648e0b940a70696c183451b4a3b2b10f
PODFILE CHECKSUM: 7f9dbb8da3d54f9176ad46ddcca746ade3e48bf1
PODFILE CHECKSUM: 1beb6729176f4d8818ebb6c7c3989534997007fd
COCOAPODS: 1.3.1

View file

@ -28,7 +28,7 @@
24EEE5A11F23A09A00B3C705 /* RiotDesignValues.m in Sources */ = {isa = PBXBuildFile; fileRef = F083BC171E7009EC00A9B29C /* RiotDesignValues.m */; };
24EEE5A21F23A8B400B3C705 /* MXRoom+Riot.m in Sources */ = {isa = PBXBuildFile; fileRef = F083BBE81E7009EC00A9B29C /* MXRoom+Riot.m */; };
24EEE5A31F23A8C300B3C705 /* AvatarGenerator.m in Sources */ = {isa = PBXBuildFile; fileRef = F083BC111E7009EC00A9B29C /* AvatarGenerator.m */; };
24EEE5A41F24C06E00B3C705 /* (null) in Resources */ = {isa = PBXBuildFile; };
24EEE5A41F24C06E00B3C705 /* BuildFile in Resources */ = {isa = PBXBuildFile; };
24EEE5A81F25529600B3C705 /* cancel@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = F0614A121EDEE65000F5DC9A /* cancel@3x.png */; };
24EEE5A91F25529900B3C705 /* cancel@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = F0614A111EDEE65000F5DC9A /* cancel@2x.png */; };
24EEE5AA1F25529C00B3C705 /* cancel.png in Resources */ = {isa = PBXBuildFile; fileRef = F0614A101EDEE65000F5DC9A /* cancel.png */; };
@ -98,6 +98,9 @@
92726A4B1F58737A004AD26F /* SiriIntents.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = 92726A431F58737A004AD26F /* SiriIntents.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
92726A511F587410004AD26F /* Intents.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 92726A501F587410004AD26F /* Intents.framework */; };
F0131DE51F2200D600CBF707 /* RiotSplitViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = F0131DE41F2200D600CBF707 /* RiotSplitViewController.m */; };
F0173EB51FCF346800B5F6A3 /* Vector.strings in Resources */ = {isa = PBXBuildFile; fileRef = F0173EAF1FCF346800B5F6A3 /* Vector.strings */; };
F0173EB61FCF346800B5F6A3 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = F0173EB11FCF346800B5F6A3 /* Localizable.strings */; };
F0173EB71FCF346800B5F6A3 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = F0173EB31FCF346800B5F6A3 /* InfoPlist.strings */; };
F02C1A861E8EB04C0045A404 /* PeopleViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = F02C1A841E8EB04C0045A404 /* PeopleViewController.m */; };
F04AF26A1F83A4C100D20F4D /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = F04AF25F1F83A4C000D20F4D /* InfoPlist.strings */; };
F04AF26B1F83A4C100D20F4D /* Vector.strings in Resources */ = {isa = PBXBuildFile; fileRef = F04AF2611F83A4C000D20F4D /* Vector.strings */; };
@ -730,6 +733,9 @@
C5258DFF261AA3AB228A3F11 /* Pods-RiotPods-RiotShareExtension.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RiotPods-RiotShareExtension.debug.xcconfig"; path = "Pods/Target Support Files/Pods-RiotPods-RiotShareExtension/Pods-RiotPods-RiotShareExtension.debug.xcconfig"; sourceTree = "<group>"; };
F0131DE31F2200D600CBF707 /* RiotSplitViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RiotSplitViewController.h; sourceTree = "<group>"; };
F0131DE41F2200D600CBF707 /* RiotSplitViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RiotSplitViewController.m; sourceTree = "<group>"; };
F0173EB01FCF346800B5F6A3 /* vi */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = vi; path = Vector.strings; sourceTree = "<group>"; };
F0173EB21FCF346800B5F6A3 /* vi */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = vi; path = Localizable.strings; sourceTree = "<group>"; };
F0173EB41FCF346800B5F6A3 /* vi */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = vi; path = InfoPlist.strings; sourceTree = "<group>"; };
F02C1A831E8EB04C0045A404 /* PeopleViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PeopleViewController.h; sourceTree = "<group>"; };
F02C1A841E8EB04C0045A404 /* PeopleViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PeopleViewController.m; sourceTree = "<group>"; };
F04AF2601F83A4C000D20F4D /* zh_Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = zh_Hans; path = InfoPlist.strings; sourceTree = "<group>"; };
@ -1573,6 +1579,16 @@
path = SiriIntents;
sourceTree = "<group>";
};
F0173EAE1FCF346800B5F6A3 /* vi.lproj */ = {
isa = PBXGroup;
children = (
F0173EAF1FCF346800B5F6A3 /* Vector.strings */,
F0173EB11FCF346800B5F6A3 /* Localizable.strings */,
F0173EB31FCF346800B5F6A3 /* InfoPlist.strings */,
);
path = vi.lproj;
sourceTree = "<group>";
};
F04AF25E1F83A4C000D20F4D /* zh_Hans.lproj */ = {
isa = PBXGroup;
children = (
@ -1643,6 +1659,7 @@
F083BB0E1E7009EC00A9B29C /* Assets */ = {
isa = PBXGroup;
children = (
F0173EAE1FCF346800B5F6A3 /* vi.lproj */,
F04AF2631F83A4C000D20F4D /* eu.lproj */,
F04AF25E1F83A4C000D20F4D /* zh_Hans.lproj */,
32918EA41F473BDB0076CA16 /* ru.lproj */,
@ -2641,6 +2658,7 @@
ru,
zh_Hans,
eu,
vi,
);
mainGroup = F094A9991B78D8F000B1FBBF;
productRefGroup = F094A9A31B78D8F000B1FBBF /* Products */;
@ -2674,9 +2692,9 @@
24EEE5AA1F25529C00B3C705 /* cancel.png in Resources */,
F0A895601F7D404B00BD6C2A /* e2e_verified.png in Resources */,
24D6B35E1F3CA03E00FC7A71 /* FallbackViewController.xib in Resources */,
24EEE5A41F24C06E00B3C705 /* (null) in Resources */,
24EEE5A41F24C06E00B3C705 /* BuildFile in Resources */,
2439DD641F6BBEA50090F42D /* RecentRoomTableViewCell.xib in Resources */,
24EEE5A41F24C06E00B3C705 /* (null) in Resources */,
24EEE5A41F24C06E00B3C705 /* BuildFile in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -2707,6 +2725,7 @@
F083BDAB1E7009ED00A9B29C /* placeholder@2x.png in Resources */,
F083BE4D1E7009ED00A9B29C /* RoomOutgoingEncryptedAttachmentWithoutSenderInfoBubbleCell.xib in Resources */,
24B510401EFA88CC004C6AD2 /* ReadReceiptsViewController.xib in Resources */,
F0173EB61FCF346800B5F6A3 /* Localizable.strings in Resources */,
F083BDC81E7009ED00A9B29C /* search_icon.png in Resources */,
F083BDE91E7009ED00A9B29C /* ring.mp3 in Resources */,
F083BE431E7009ED00A9B29C /* RoomIncomingEncryptedTextMsgWithoutSenderInfoBubbleCell.xib in Resources */,
@ -2997,6 +3016,7 @@
F083BE8B1E7009ED00A9B29C /* ExpandedRoomTitleView.xib in Resources */,
F083BE691E7009ED00A9B29C /* RoomIncomingTextMsgWithPaginationTitleWithoutSenderNameBubbleCell.xib in Resources */,
F083BDBC1E7009ED00A9B29C /* riot_icon.png in Resources */,
F0173EB71FCF346800B5F6A3 /* InfoPlist.strings in Resources */,
F083BE2E1E7009ED00A9B29C /* ForgotPasswordInputsView.xib in Resources */,
F083BDC71E7009ED00A9B29C /* search_bg@3x.png in Resources */,
F083BDBF1E7009ED00A9B29C /* scrolldown.png in Resources */,
@ -3044,6 +3064,7 @@
F083BD561E7009ED00A9B29C /* camera_video_capture.png in Resources */,
F083BD651E7009ED00A9B29C /* directChatOff.png in Resources */,
F083BE811E7009ED00A9B29C /* PublicRoomTableViewCell.xib in Resources */,
F0173EB51FCF346800B5F6A3 /* Vector.strings in Resources */,
F083BE851E7009ED00A9B29C /* RoomIdOrAliasTableViewCell.xib in Resources */,
F083BD461E7009ED00A9B29C /* call_video_mute_off_icon@2x.png in Resources */,
F083BD311E7009ED00A9B29C /* bubbles_bg_landscape@2x.png in Resources */,
@ -3166,8 +3187,7 @@
"${PODS_ROOT}/MatrixKit/MatrixKit/Views/RoomTitle/MXKRoomTitleView.xib",
"${PODS_ROOT}/MatrixKit/MatrixKit/Views/RoomTitle/MXKRoomTitleViewWithTopic.xib",
"${PODS_ROOT}/MatrixKit/MatrixKit/Views/Search/MXKSearchTableViewCell.xib",
$PODS_CONFIGURATION_BUILD_DIR/MatrixKit/MatrixKit.bundle,
"${PODS_ROOT}/MatrixSDK/MatrixSDK/Data/Store/MXCoreDataStore/MXCoreDataStore.xcdatamodeld",
"$PODS_CONFIGURATION_BUILD_DIR/MatrixKit/MatrixKit.bundle",
);
name = "[CP] Copy Pods Resources";
outputPaths = (
@ -3586,6 +3606,30 @@
name = Vector.strings;
sourceTree = "<group>";
};
F0173EAF1FCF346800B5F6A3 /* Vector.strings */ = {
isa = PBXVariantGroup;
children = (
F0173EB01FCF346800B5F6A3 /* vi */,
);
name = Vector.strings;
sourceTree = "<group>";
};
F0173EB11FCF346800B5F6A3 /* Localizable.strings */ = {
isa = PBXVariantGroup;
children = (
F0173EB21FCF346800B5F6A3 /* vi */,
);
name = Localizable.strings;
sourceTree = "<group>";
};
F0173EB31FCF346800B5F6A3 /* InfoPlist.strings */ = {
isa = PBXVariantGroup;
children = (
F0173EB41FCF346800B5F6A3 /* vi */,
);
name = InfoPlist.strings;
sourceTree = "<group>";
};
F04AF25F1F83A4C000D20F4D /* InfoPlist.strings */ = {
isa = PBXVariantGroup;
children = (

View file

@ -22,7 +22,7 @@
#import "AppDelegate.h"
#import "BugReportViewController.h"
#import "NSBundle+MatrixKit.h"
#import <MatrixKit/MatrixKit.h>
static RageShakeManager* sharedInstance = nil;

View file

@ -34,8 +34,7 @@
#import "BugReportViewController.h"
#import "RoomKeyRequestViewController.h"
#import "NSBundle+MatrixKit.h"
#import "MatrixSDK/MatrixSDK.h"
#import <MatrixKit/MatrixKit.h>
#import "Tools.h"
#import "WidgetManager.h"
@ -49,9 +48,6 @@
// Calls
#import "CallViewController.h"
#import <MatrixSDK/MXCallKitAdapter.h>
#import <MatrixSDK/MXCallKitConfiguration.h>
#import "MXSession+Riot.h"
#import "MXRoom+Riot.h"
@ -315,6 +311,17 @@ NSString *const kAppDelegateNetworkStatusDidChangeNotification = @"kAppDelegateN
- (BOOL)application:(UIApplication *)application willFinishLaunchingWithOptions:(nullable NSDictionary *)launchOptions
{
NSUInteger loopCount = 0;
// Check whether the content protection is active before going further.
// Should fix the spontaneous logout.
while(![application isProtectedDataAvailable])
{
loopCount++;
// Wait for protected data.
[[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:0.2f]];
}
// Set the App Group identifier.
MXSDKOptions *sdkOptions = [MXSDKOptions sharedInstance];
sdkOptions.applicationGroupIdentifier = @"group.im.vector";
@ -324,7 +331,7 @@ NSString *const kAppDelegateNetworkStatusDidChangeNotification = @"kAppDelegateN
[MXLogger redirectNSLogToFiles:YES];
}
NSLog(@"[AppDelegate] willFinishLaunchingWithOptions");
NSLog(@"[AppDelegate] willFinishLaunchingWithOptions (%tu)", loopCount);
return YES;
}
@ -579,7 +586,7 @@ NSString *const kAppDelegateNetworkStatusDidChangeNotification = @"kAppDelegateN
if (@available(iOS 11.0, *))
{
// Riot has its own dark theme. Prevent iOS from applying its one
[[UIApplication sharedApplication] keyWindow].accessibilityIgnoresInvertColors = YES;
[application keyWindow].accessibilityIgnoresInvertColors = YES;
}
[self handleLaunchAnimation];
@ -1048,7 +1055,7 @@ NSString *const kAppDelegateNetworkStatusDidChangeNotification = @"kAppDelegateN
- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification
{
NSLog(@"[AppDelegate] didReceiveLocalNotification: applicationState: %@", @([UIApplication sharedApplication].applicationState));
NSLog(@"[AppDelegate] didReceiveLocalNotification: applicationState: %@", @(application.applicationState));
NSString* roomId = notification.userInfo[@"room_id"];
if (roomId.length)

View file

@ -0,0 +1 @@

View file

@ -0,0 +1 @@

View file

@ -0,0 +1 @@

View file

@ -153,8 +153,8 @@
"room_one_user_is_typing" = "%@ tippt…";
"room_two_users_are_typing" = "%@ & %@ tippen…";
"room_many_users_are_typing" = "%@, %@ & andere tippen…";
"room_message_placeholder" = "Sende eine Nachricht (unverschlüsselt)…";
"encrypted_room_message_placeholder" = "Seine eine verschlüsselte Nachricht…";
"room_message_placeholder" = "Nachricht senden (unverschlüsselt)…";
"encrypted_room_message_placeholder" = "Verschlüsselte Nachricht senden…";
"room_message_short_placeholder" = "Sende eine Nachricht…";
"room_offline_notification" = "Verbindung zum Server wurde unterbrochen.";
"room_unsent_messages_notification" = "Nachrichten wurden nicht gesendet. Jetzt %@ oder %@?";
@ -308,7 +308,7 @@
"room_ongoing_conference_call" = "Laufender Konferenz-Anruf. Trete bei als %@ oder %@.";
"room_event_action_redact" = "Schwärzen";
"room_warning_about_encryption" = "Ende-zu-Ende Verschlüsselung ist in Beta und ist evtl. nicht zuverlässig.\n\nMan sollte noch nicht darauf vertrauen, dass die Daten sicher sind.\n\nGeräte werden den Verlauf vor dem Beitritt des Raumes nicht entschlüsseln können.\n\nVerschlüsselte Nachrichten sind nicht lesbar auf Clients, die Verschlüsselung noch nicht implementiert haben.";
"unknown_devices_alert" = "Dieser Raum enthält unbekannte Geräte die nicht verifiziert wurden.\nDas bedeutet es gibt keine Garantie, dass sie dem User gehören, der angegeben ist.\nWir empfehlen eine Überprüfung für jedes Gerät bevor du weitermachst, aber du kannst die Nachricht erneut senden ohne Verifikation.";
"unknown_devices_alert" = "Dieser Raum enthält unbekannte Geräte, die nicht verifiziert wurden.\nDas bedeutet, es gibt keine Garantie, dass sie dem User gehören, der angegeben ist.\nWir empfehlen eine Überprüfung für jedes Gerät, bevor du weitermachst, aber du kannst die Nachricht erneut senden ohne Verifikation.";
"room_preview_unlinked_email_warning" = "Diese Einladung wurde an %@ gesendet, die Adresse ist nicht mit diesem Konto verbunden. Du kannst dich mit einem anderen Konto anmelden, oder diese E-Mail-Adresse deinem Konto hinzufügen.";
"room_preview_try_join_an_unknown_room" = "Du versuchst auf %@ zuzugreifen. Möchtest du dem Raum beitreten um teilzunehmen?";
"settings_config_identity_server" = "Identitätsserver ist %@";
@ -437,7 +437,7 @@
"settings_ui_theme_dark" = "Dunkel";
"settings_ui_theme_picker_title" = "Thema wählen";
"send_to" = "Sende an %@";
"sending" = "Sende";
"sending" = "Senden";
"room_event_failed_to_send" = "Senden fehlgeschlagen";
"settings_labs_matrix_apps" = "Matrix Apps";
"room_details_direct_chat" = "Direkter Chat";

View file

@ -348,6 +348,7 @@
"settings_ui_theme_auto" = "Auto";
"settings_ui_theme_light" = "Light";
"settings_ui_theme_dark" = "Dark";
"settings_ui_theme_black" = "Black";
"settings_ui_theme_picker_title" = "Select a theme";
"settings_ui_theme_picker_message" = "\"Auto\" uses your device \"Invert Colours\" settings";

View file

@ -8,7 +8,7 @@
"view" = "表示";
"next" = "次へ";
"back" = "戻る";
"continue" = "続ける";
"continue" = "続";
"create" = "作成";
"start" = "開始";
"leave" = "退室";
@ -289,7 +289,7 @@
"settings_enable_push_notif" = "この端末での通知";
"settings_show_decrypted_content" = "復号化された文章を表示";
"settings_global_settings_info" = "あなたの %@ webクライアント上で、全体の通知設定が可能です";
"settings_pin_rooms_with_missed_notif" = "";
"settings_pin_rooms_with_missed_notif" = "通知の届かなかった部屋をピン止めする";
"settings_on_denied_notification" = "%@で通知されないように設定されています。あなたの端末設定で許可してください";
"settings_callkit_info" = "画面がロックされているときに着信がありました。Riotの着信はシステムの通話履歴で確認してください。 iCloudが有効になっている場合、この通話履歴はAppleと共有されます。";
"settings_ui_language" = "言語";
@ -469,3 +469,4 @@
"share_extension_failed_to_encrypt" = "送信に失敗しました。この部屋の暗号設定をメインの端末で確認して下さい";
"room_details_advanced_e2e_encryption_prompt_message" = "End-to-end暗号化は実験的なものであり、信頼性が低い場合があります。\n\n発言を保護するためにはまだそれを信用すべきではありません。\n\n端末は、まだ参加する前の発言履歴を復号化することはできません。\n\n部屋の暗号化が今から有効になったら、もう無効にすることはできません。\n\n暗号化された発言は、まだ暗号化を実装していないアプリでは表示されません。";
"settings_enable_callkit" = "呼び出しの統合";
"settings_pin_rooms_with_unread" = "未読のある部屋をピン止めする";

View file

@ -343,8 +343,8 @@
"room_details_copy_room_address" = "Копировать адрес комнаты";
"room_details_copy_room_url" = "Копировать URL-адрес комнаты";
// Read Receipts
"read_receipts_list" = "Чтение списка расписок";
"receipt_status_read" = "Читать: ";
"read_receipts_list" = "Список прочитавших";
"receipt_status_read" = "Прочитано: ";
// Media picker
"media_picker_library" = "Библиотека";
"media_picker_select" = "Выбор";
@ -464,7 +464,7 @@
"settings_ui_theme_light" = "Светлая";
"settings_ui_theme_dark" = "Темная";
"settings_ui_theme_picker_title" = "Выберите тему";
"settings_ui_theme_picker_message" = "\"Авто\" использует параметры устройства \"Инверсия цветов\"";
"settings_ui_theme_picker_message" = "\"Авто\" использует настройки \"Инверсия цветов\" вашего устройства";
"settings_enable_rageshake" = "Встряхните устройство, чтобы сообщить об ошибке";
"event_formatter_widget_added" = "%@ виджет добавлен %@";
"event_formatter_widget_removed" = "%@ виджет удален %@";

View file

@ -0,0 +1,5 @@
// Permissions usage explanations
"NSCameraUsageDescription" = "Máy ảnh được sử dụng để chụp ảnh và quay phim, thực hiện các cuộc gọi video thoại.";
"NSPhotoLibraryUsageDescription" = "Thư viện ảnh được dùng để gửi hình ảnh và videos.";
"NSMicrophoneUsageDescription" = "Microphone được dùng để thực hiện quay video, thực hiện các cuộc gọi.";
"NSContactsUsageDescription" = "Danh bạ được sử dụng để tìm kiếm người dùng bởi email hoặc số điện thoại trên Riot.";

View file

@ -0,0 +1,48 @@
/* New message from a specific person, not referencing a room */
"MSG_FROM_USER" = "Tin nhắn từ %@";
/* New message from a specific person in a named room */
"MSG_FROM_USER_IN_ROOM" = "%@ đã đăng trong %@";
/* New message from a specific person, not referencing a room. Content included. */
"MSG_FROM_USER_WITH_CONTENT" = "%@: %@";
/* New message from a specific person in a named room. Content included. */
"MSG_FROM_USER_IN_ROOM_WITH_CONTENT" = "%@ trong %@: %@";
/* New action message from a specific person, not referencing a room. */
"ACTION_FROM_USER" = "* %@ %@";
/* New action message from a specific person in a named room. */
"ACTION_FROM_USER_IN_ROOM" = "%@: * %@ %@";
/* New action message from a specific person, not referencing a room. */
"IMAGE_FROM_USER" = "%@ đã gửi bạn một hình ảnh %@";
/* New action message from a specific person in a named room. */
"IMAGE_FROM_USER_IN_ROOM" = "%@ đã đăng một hình ảnh %@ trong %@";
/* Multiple unread messages in a room */
"UNREAD_IN_ROOM" = "%@ có tin nhắn mới trong %@";
/* Multiple unread messages from a specific person, not referencing a room */
"MSGS_FROM_USER" = "%@ có tin nhắn mới trong %@";
/* Multiple unread messages from two people */
"MSGS_FROM_TWO_USERS" = "%@ có tin nhắn mới từ %@ và %@";
/* Multiple unread messages from three people */
"MSGS_FROM_THREE_USERS" = "%@ có tin nhắn mới từ %@, %@ và %@";
/* Multiple unread messages from two plus people (ie. for 4+ people: 'others' replaces the third person) */
"MSGS_FROM_TWO_PLUS_USERS" = "%@ có tin nhắn mới từ %@, %@ và những người khác";
/* Multiple messages in two rooms */
"MSGS_IN_TWO_ROOMS" = "%@ có tin nhắn mới trong %@ và %@";
/* Look, stuff's happened, alright? Just open the app. */
"MSGS_IN_TWO_PLUS_ROOMS" = "%@ có tin nhắn mới từ %@, %@ và nhiều hơn nữa";
/* A user has invited you to a chat */
"USER_INVITE_TO_CHAT" = "%@ đã mời bạn tham gia trò chuyện";
/* A user has invited you to an (unamed) group chat */
"USER_INVITE_TO_CHAT_GROUP_CHAT" = "%@ đã mời bạn tham gia vào một cuộc trò chuyện nhóm";
/* A user has invited you to a named room */
"USER_INVITE_TO_NAMED_ROOM" = "%@ đã mời bạn tham gia vào %@";
/* Incoming one-to-one voice call */
"VOICE_CALL_FROM_USER" = "Gọi thoại từ %@";
/* Incoming one-to-one video call */
"VIDEO_CALL_FROM_USER" = "Gọi video từ %@";
/* Incoming unnamed voice conference invite from a specific person */
"VOICE_CONF_FROM_USER" = "Gọi thoại nhóm từ %@";
/* Incoming unnamed video conference invite from a specific person */
"VIDEO_CONF_FROM_USER" = "Gọi video nhóm từ %@";
/* Incoming named voice conference invite from a specific person */
"VOICE_CONF_NAMED_FROM_USER" = "Gọi thoại nhóm từ %@: '%@'";
/* Incoming named video conference invite from a specific person */
"VIDEO_CONF_NAMED_FROM_USER" = "Gọi video nhóm từ %@: '%@'";

View file

@ -0,0 +1,472 @@
// Titles
"title_home" = "Trang chủ";
"title_favourites" = "Yêu thích";
"title_people" = "Danh bạ";
"title_rooms" = "Phòng chat";
// Actions
"view" = "Xem";
"next" = "Kế tiếp";
"back" = "Trở về";
"continue" = "Tiếp tục";
"create" = "Tạo mới";
"start" = "Bắt đầu";
"leave" = "Rời khỏi";
"remove" = "Gỡ bỏ";
"invite" = "Mời";
"retry" = "Thử lại";
"on" = "Bật";
"off" = "Tắt";
"cancel" = "Huỷ";
"save" = "Lưu";
"join" = "Tham gia";
"decline" = "Từ chối";
"accept" = "Chấp nhận";
"preview" = "Xem trước";
"camera" = "Máy ảnh";
"voice" = "Giọng nói";
"video" = "Video";
"active_call" = "Cuộc gọi hiện tại";
"active_call_details" = "Cuộc gọi hiện tại (%@)";
"later" = "Để sau";
"rename" = "Đổi tên";
"collapse" = "Đóng";
"send_to" = "Gửi tới %@";
"sending" = "Đang gửi";
// Authentication
"auth_login" = "Đăng nhập";
"auth_register" = "Đăng kí";
"auth_submit" = "Gửi đi";
"auth_skip" = "Bỏ qua";
"auth_send_reset_email" = "Gửi email đặt lại";
"auth_return_to_login" = "Trở về trang đăng kí";
"auth_user_id_placeholder" = "Email hoặc tên đăng nhập";
"auth_password_placeholder" = "Mật khẩu";
"auth_new_password_placeholder" = "Mật khẩu mới";
"auth_user_name_placeholder" = "Tên đăng nhập";
"auth_optional_email_placeholder" = "Địa chỉ email (không bắt buộc)";
"auth_email_placeholder" = "Địa chỉ email";
"auth_optional_phone_placeholder" = "Số điện thoại (không bắt buộc)";
"auth_phone_placeholder" = "Số điện thoại";
"auth_repeat_password_placeholder" = "Nhật lại mật khẩu";
"auth_repeat_new_password_placeholder" = "Xác nhận mật khẩu mới";
"auth_home_server_placeholder" = "URL (ví dụ: https://matrix.org)";
"auth_identity_server_placeholder" = "URL (ví dụ: https://matrix.org)";
"auth_invalid_login_param" = "Tên đăng nhập hoặc mật khẩu không đúng";
"warning" = "Cảnh báo";
"auth_invalid_user_name" = "Tên đăng nhập chỉ được chứa các chữ cái, dấu chấm, dấu gạch ngang và dấu gạch dưới";
"auth_invalid_password" = "Mật khẩu quá ngắn (tối thiểu 6 kí tự)";
"auth_invalid_email" = "Địa chỉ Email không hợp lệ";
"auth_invalid_phone" = "Số điện thoại không hợp lệ";
"auth_missing_password" = "Thiếu mật khẩu";
"auth_add_email_message" = "Thêm địa chỉ email vào tài khoản để người dùng khác có thể tìm thấy bạn và giúp bạn thay đổi mật khẩu về sau.";
"auth_add_phone_message" = "Thêm số điện thoại vào tài khoản của bạn để giúp người dùng khác có thể tìm thấy bạn.";
"auth_add_email_phone_message" = "Thêm địa chỉ email hoặc số điện thoại vào tài khoản để người dùng khác có thể tìm thấy bạn. Địa chỉ email cũng sẽ giúp bạn thay đổi mật khẩu về sau.";
"auth_add_email_and_phone_message" = "Thêm địa chỉ email hoặc số điện thoại vào tài khoản để người dùng khác có thể tìm thấy bạn. Địa chỉ email cũng sẽ giúp bạn thay đổi mật khẩu về sau.";
"auth_missing_email" = "Thiếu địa chỉ email";
"auth_missing_phone" = "Thiếu số điện thoại";
"auth_missing_email_or_phone" = "Thiếu địa chỉ email hoặc số điện thoại";
"auth_email_in_use" = "Địa chỉ email này đã được sử dụng";
"auth_phone_in_use" = "Số điện thoại này đã được sử dụng";
"auth_untrusted_id_server" = "Máy chủ nhận dạng không được tin cậy";
"auth_password_dont_match" = "Mật khẩu không trùng khớp";
"auth_username_in_use" = "Tên đăng nhập đang được sử dụng";
"auth_forgot_password" = "Quên mật khẩu?";
"auth_email_not_found" = "Gửi email thất bại: Địa chỉ email này không thể tìm thấy";
"auth_use_server_options" = "Sử dụng tùy chọn máy chủ tuỳ chỉnh (nâng cao)";
"auth_email_validation_message" = "Vui lòng kiểm tra email của bẹn để tiếp tục đăng kí";
"auth_msisdn_validation_title" = "Xác minh đang chờ xử lí";
"auth_msisdn_validation_message" = "Chúng tôi đã gửi mã kích hoạt qua SMS. Vui lòng nhập mã kích hoạt bên dưới.";
"auth_msisdn_validation_error" = "Không thể xác thực số điện thoại.";
"auth_recaptcha_message" = "Home Server này muốn đảm bảo rằng bạn không phải là Robot";
"auth_reset_password_message" = "Để thay đổi mật khẩu, nhập địa chỉ email được kết nối với tài khoản của bạn:";
"auth_reset_password_missing_email" = "Bạn phải nhập địa chỉ email đã được kết nối với tài khoản của bạn.";
"auth_reset_password_missing_password" = "Bạn phải nhập mật khẩu mới.";
"auth_reset_password_email_validation_message" = "Email đã được gửi tới %@. Khi bạn đã theo liên kết trong đó, bấm vào dưới đây.";
"auth_reset_password_next_step_button" = "Tôi đã xác thực địa chỉ email của tôi";
"auth_reset_password_error_unauthorized" = "Xác thực địa chỉ email thất bại: hãy đảm bảo rằng bạn đã bấm vào địa chỉ đính kèm trong email";
"auth_reset_password_error_not_found" = "Địa chỉ email có vẻ chưa được liên kết với Matrix ID trên Homeserver này.";
"auth_reset_password_success_message" = "Mật khẩu của bạn đã được thiết lập lại.\n\nBạn đã được đăng xuất khỏi tất cả các thiết bị và sẽ không còn nhận được thông báo. Để bật lại thông báo, đăng nhập lại trên mỗi thiết bị.";
"auth_add_email_and_phone_warning" = "Đăng kí với mật khẩu và số điện thoại cùng lúc chưa được hỗ trợ cho tới khi api được thiết lập. Duy nhất số điện thoại sẽ được liên kết với với tài khoản. Bạn sẽ phải thêm email vào hồ sơ trong mục cài đặt.";
// Chat creation
"room_creation_title" = "Cuộc trò chuyện mới";
"room_creation_account" = "Tài khoản";
"room_creation_appearance" = "Ngoại hình";
"room_creation_appearance_name" = "Tên";
"room_creation_appearance_picture" = "Hình ảnh trò chuyện (tuỳ chọn)";
"room_creation_privacy" = "Riêng tư";
"room_creation_private_room" = "Cuộc trò chuyện này là riêng tư";
"room_creation_public_room" = "Cuộc trò chuyện này là công khai";
"room_creation_make_public" = "Công khai";
"room_creation_make_public_prompt_title" = "Công khai cuộc trò chuyện này?";
"room_creation_make_public_prompt_msg" = "Bạn có chắc là bạn muốn làm cuộc trò chuyện này công khai? Mọi người có thể đọc tin nhắn và tham gia cuộc trò chuyện.";
"room_creation_keep_private" = "Giữ nó riêng tư";
"room_creation_make_private" = "Riêng tư";
"room_creation_wait_for_creation" = "Phòng trò chuyện đã được tạo. Vui lòng chờ.";
"room_creation_invite_another_user" = "Tìm / mời bằng ID người dùng, tên hoặc email";
// Room recents
"room_recents_directory_section" = "DANH MỤC PHÒNG";
"room_recents_directory_section_network" = "Mạng";
"room_recents_favourites_section" = "YÊU THÍCH";
"room_recents_people_section" = "DANH BẠ";
"room_recents_conversations_section" = "PHÒNG";
"room_recents_no_conversation" = "Không có cuộc trò chuyện nào";
"room_recents_low_priority_section" = "ƯU TIÊN THẤP";
"room_recents_invites_section" = "MỜI";
"room_recents_start_chat_with" = "Bắt đầu chat";
"room_recents_create_empty_room" = "Tạo phòng";
"room_recents_join_room" = "Tham gia phòng";
"room_recents_join_room_title" = "Tham gia một phòng đã tồn tại";
"room_recents_join_room_prompt" = "Nhập id phòng hoặc bí danh phòng";
// People tab
"people_invites_section" = "MỜI";
"people_conversation_section" = "CUỘC TRÒ CHUYỆN";
"people_no_conversation" = "Không có cuộc trò chuyện nào";
// Rooms tab
"room_directory_no_public_room" = "Không có phòng chung nào";
// Search
"search_rooms" = "Phòng";
"search_messages" = "Tin nhắn";
"search_people" = "Mọi người";
"search_files" = "Tập tin";
"search_default_placeholder" = "Tìm kiếm";
"search_people_placeholder" = "Tìm bằng ID Người dùng, Tên hoặc Email";
"search_no_result" = "Không có kết quả";
"search_in_progress" = "Đang tìm…";
// Directory
"directory_cell_title" = "Duyệt danh mục";
"directory_cell_description" = "%tu phòng";
"directory_search_results_title" = "Kết quả duyệt danh mục";
"directory_search_results" = "%tu kết quả được tìm thấy cho %@";
"directory_search_results_more_than" = ">%tu kết quả được tìm thấy cho %@";
"directory_searching_title" = "Đang tìm danh mục…";
"directory_search_fail" = "Không thể tìm nạp dữ liệu";
// Contacts
"contacts_address_book_section" = "DANH BẠ NỘI BỘ";
"contacts_address_book_matrix_users_toggle" = "Chỉ người dùng của matrix";
"contacts_address_book_no_contact" = "Không có danh bạ nội bộ";
"contacts_address_book_permission_required" = "Quyền được yêu cầu để truy cập danh bạ nội bộ";
"contacts_address_book_permission_denied" = "Bạn chưa cho phép Riot truy cập danh bạ nội bộ của bạn";
"contacts_user_directory_section" = "DANH MỤC NGƯỜI DÙNG";
"contacts_user_directory_offline_section" = "DANH MỤC NGƯỜI DÙNG (ngoại tuyến)";
// Chat participants
"room_participants_title" = "Người tham gia";
"room_participants_add_participant" = "Thêm người tham gia";
"room_participants_one_participant" = "1 người tham gia";
"room_participants_multi_participants" = "%d người tham gia";
"room_participants_leave_prompt_title" = "Rời phòng";
"room_participants_leave_prompt_msg" = "Bạn có muốn rời phòng này?";
"room_participants_remove_prompt_title" = "Xác nhận";
"room_participants_remove_prompt_msg" = "Bạn có muốn gỡ bỏ %@ ra khỏi cuộc trò chuyện?";
"room_participants_remove_third_party_invite_msg" = "Gỡ bỏ lời mời của bên thứ ba chưa được hỗ trợ cho tới khi api được thực hiện";
"room_participants_invite_prompt_title" = "Xác nhận";
"room_participants_invite_prompt_msg" = "Bạn có muốn mời %@ vào cuộc trò chuyện này?";
"room_participants_filter_room_members" = "Lọc thành viên trong phòng";
"room_participants_invite_another_user" = "Tìm / mời bằng ID Người dùng, Tên hoặc Email";
"room_participants_invite_malformed_id_title" = "Lỗi mời";
"room_participants_invite_malformed_id" = "ID không hợp lệ. Nên là một địa chỉ email hoặc một Matrix ID như '@localpart:domain'";
"room_participants_invited_section" = "ĐÃ MỜI";
"room_participants_online" = "Trực tuyến";
"room_participants_offline" = "Ngoại tuyến";
"room_participants_unknown" = "Không xác định";
"room_participants_idle" = "Không hoạt động";
"room_participants_now" = "ngay bây giờ";
"room_participants_ago" = "trước đó";
"room_participants_action_section_admin_tools" = "Công cụ quản trị";
"room_participants_action_section_direct_chats" = "Trò chuyện trực tiếp";
"room_participants_action_section_devices" = "Thiết bị";
"room_participants_action_section_other" = "Khác";
"room_participants_action_invite" = "Mời";
"room_participants_action_leave" = "Rời khỏi phòng này";
"room_participants_action_remove" = "Loại bỏ khỏi phòng này";
"room_participants_action_ban" = "Cấm từ phòng này";
"room_participants_action_unban" = "Huỷ cấm";
"room_participants_action_ignore" = "Dấu tất cả tin nhắn từ người dùng này";
"room_participants_action_unignore" = "Hiển thị tất cả tin nhắn từ người dùng này";
"room_participants_action_set_default_power_level" = "Thiết lập lại về người dùng bình thường";
"room_participants_action_set_moderator" = "Trao quyền người kiểm duyệt";
"room_participants_action_set_admin" = "Trao quyền quản trị viên";
"room_participants_action_start_new_chat" = "Bắt đầu cuộc trò chuyện mới";
"room_participants_action_start_voice_call" = "Bắt đầu cuộc gọi thoại";
"room_participants_action_start_video_call" = "Bắt đầu cuộc gọi video";
"room_participants_action_mention" = "Đề cập đến";
// Chat
"room_jump_to_first_unread" = "Chuyển đến tin nhắn chưa đọc đầu tiên";
"room_new_message_notification" = "%d tin nhắn mới";
"room_new_messages_notification" = "%d tin nhắn mới";
"room_one_user_is_typing" = "%@ đang gõ…";
"room_two_users_are_typing" = "%@ & %@ đang gõ…";
"room_many_users_are_typing" = "%@, %@ & và những người khác đang gõ…";
"room_message_placeholder" = "Gửi tin nhắn (không được mã hoá)…";
"encrypted_room_message_placeholder" = "Gửi tin nhắn đã mã hoá…";
"room_message_short_placeholder" = "Gửi tin nhắn…";
"room_offline_notification" = "Kết nối tới máy chủ thất bại.";
"room_unsent_messages_notification" = "Các tin nhắn chưa được gửi. %@ hoặc %@ ngay bây giờ?";
"room_unsent_messages_unknown_devices_notification" = "Các tin nhắn chưa được gửi tới các thiết bị không xác định hiện hành. %@ hoặc %@ ngay bây giờ?";
"room_ongoing_conference_call" = "Cuộc gọi hội nghị đang diễn ra. Tham gia như %@ hoặc %@.";
"room_ongoing_conference_call_with_close" = "Cuộc gọi hội nghị đang diễn ra. Tham gia như %@ hoặc %@. %@ nó.";
"room_ongoing_conference_call_close" = "Đóng";
"room_conference_call_no_power" = "Bạn cần quyền để quản lí cuộc gọi hội nghị trong phòng này";
"room_prompt_resend" = "Gửi lại tất cả";
"room_prompt_cancel" = "huỷ tất cả";
"room_resend_unsent_messages" = "Gửi lại các tin nhắn chưa được gửi";
"room_delete_unsent_messages" = "Xoá các tin nhắn chưa được gửi";
"room_event_action_copy" = "Sao chép";
"room_event_action_quote" = "Trích dẫn";
"room_event_action_redact" = "Biên tập lại";
"room_event_action_more" = "Thêm";
"room_event_action_share" = "Chia sẻ";
"room_event_action_permalink" = "Liên kết";
"room_event_action_view_source" = "Xem nguồn";
"room_event_action_report" = "Báo cáo nội dung";
"room_event_action_report_prompt_reason" = "Lí do báo cáo nội dung";
"room_event_action_report_prompt_ignore_user" = "Bạn có muốn ẩn tất cả tin nhắn từ người dùng này?";
"room_event_action_save" = "Lưu";
"room_event_action_resend" = "Gửi lại";
"room_event_action_delete" = "Xoá";
"room_event_action_cancel_send" = "Huỷ Gửi";
"room_event_action_cancel_download" = "Huỷ Tải";
"room_event_action_view_encryption" = "Thông tin mã hoá";
"room_warning_about_encryption" = "Mã hoá đầu-cuối đang trong giai đoạn thử nghiệm và có thể không đáng tin cậy.\n\nBạn có thể không nên tin tưởng hoàn toàn vào sự bảo mật dữ liệu này.\n\nCác thiết bị có thể không giải mã lịch sử từ trước khi họ tham gia vào phòng.\n\nCác tin nhắn được mã hoá sẽ không hiển thị trên các máy khách chưa tích hợp mã hoá.";
"room_event_failed_to_send" = "Gửi thất bại";
// Unknown devices
"unknown_devices_alert_title" = "Phòng chứa các thiết bị không xác định";
"unknown_devices_alert" = "Phòng này có các thiết bị không xác định chưa được xác minh.\nĐiều này có nghĩa là không có đảm bảo rằng thiết bị thuộc về người dùng mà họ yêu cầu.\nChúng tôi khuyên bạn nên đi qua quá trình xác minh cho từng thiết bị trước khi tiếp tục, nhưng bạn có thể gửi lại tin nhắn mà không cần xác nhận nếu bạn muốn.";
"unknown_devices_send_anyway" = "Gửi bằng mọi cách";
"unknown_devices_call_anyway" = "Gọi bằng mọi cách";
"unknown_devices_answer_anyway" = "Trả lời bằng mọi cách";
"unknown_devices_verify" = "Xác thực…";
"unknown_devices_title" = "Các thiết bị không xác định";
// Room Title
"room_title_new_room" = "Phòng mới";
"room_title_multiple_active_members" = "%@/%@ thành viên đang hoạt động";
"room_title_one_active_member" = "%@/%@ thành viên đang hoạt động";
"room_title_invite_members" = "Mời các thành viên";
"room_title_members" = "%@ thành viên";
"room_title_one_member" = "1 thành viên";
// Room Preview
"room_preview_invitation_format" = "Bạn đã được mời tham gia phòng này bởi %@";
"room_preview_subtitle" = "Đây là bản xem trước của phòng này. Tương tác với phòng đã bị tắt.";
"room_preview_unlinked_email_warning" = "Lời mời này đã được gửi tới %@, không được liên kết với tài khoản này. Bạn có thể đăng nhập bằng một tài khoản khác hoặc thêm email này vào tài khoản của bạn.";
"room_preview_try_join_an_unknown_room" = "Bạn đang cố gắng để truy cập %@. Bạn có muốn tham gia vào cuộc thảo luận không?";
"room_preview_try_join_an_unknown_room_default" = "phòng";
// Settings
"settings_title" = "Cài đặt";
"account_logout_all" = "Đăng xuất tất cả tài khoản";
"settings_config_no_build_info" = "Không có thông tin cho phiên bản";
"settings_mark_all_as_read" = "Đánh dấu đã đọc tất cả tin nhắn";
"settings_report_bug" = "Báo cáo lỗi";
"settings_config_home_server" = "Máy chủ chính là %@";
"settings_config_identity_server" = "Máy chủ xác thực là %@";
"settings_config_user_id" = "Đăng nhập như %@";
"settings_user_settings" = "CÀI ĐẶT NGƯỜI DÙNG";
"settings_notifications_settings" = "CÀI ĐẶT THÔNG BÁO";
"settings_calls_settings" = "CUỘC GỌI";
"settings_user_interface" = "GIAO DIỆN NGƯỜI DÙNG";
"settings_ignored_users" = "NGƯỜI DÙNG BỊ LÀM NGƠ";
"settings_contacts" = "DANH BẠ";
"settings_advanced" = "NÂNG CAO";
"settings_other" = "KHÁC";
"settings_labs" = "PHÒNG THÍ NGHIỆM";
"settings_devices" = "THIẾT BỊ";
"settings_cryptography" = "MÃ HOÁ";
"settings_sign_out" = "Đăng xuất";
"settings_sign_out_confirmation" = "Bạn có chắc chắn?";
"settings_sign_out_e2e_warn" = "Bạn sẽ mất end-to-end khoá bảo mật. Điều đó có nghĩa rằng bạn sẽ không thể đọc các tin nhắn trước đó đã được mã hoá trong phòng bởi thiết bị này.";
"settings_profile_picture" = "Hình ảnh hồ sơ";
"settings_display_name" = "Tên hiển thị";
"settings_first_name" = "Tên";
"settings_surname" = "Họ";
"settings_remove_prompt_title" = "Xác nhận";
"settings_remove_email_prompt_msg" = "Bạn có chắc chắn muốn gỡ bỏ địa chỉ email %@?";
"settings_remove_phone_prompt_msg" = "Bạn có chắc chắn muốn gỡ bỏ số điện thoại %@?";
"settings_email_address" = "Email";
"settings_email_address_placeholder" = "Nhập địa chỉ email của bạn";
"settings_add_email_address" = "Thêm địa chỉ email";
"settings_phone_number" = "Điện thoại";
"settings_add_phone_number" = "Thêm số điện thoại";
"settings_night_mode" = "Chế độ ban đêm";
"settings_fail_to_update_profile" = "Cập nhật hồ sơ thất bại";
"settings_enable_push_notif" = "Thông báo trên thiết bị";
"settings_show_decrypted_content" = "Hiện nội dung đã giải mã";
"settings_global_settings_info" = "Cài đặt thông báo toàn cầu khả dụng trên %@ trình duyệt khách của bạn";
"settings_pin_rooms_with_missed_notif" = "Neo phòng có thông báo bỏ lỡ";
"settings_pin_rooms_with_unread" = "Neo phòng có tin nhắn chưa đọc";
"settings_on_denied_notification" = "Thông báo bị từ chối cho %@, vui lòng cho phép trong cài đặt thiết bị của bạn";
"settings_enable_callkit" = "Cuộc gọi tích hợp";
"settings_callkit_info" = "Nhận cuộc gọi tới trên màn hình khóa. Xem lịch sử cuộc gọi trong lịch sử cuộc gọi của hệ thống. Nếu iCloud được kích hoạt, lịch sử cuộc gọi sẽ được chia sẻ với Apple.";
"settings_ui_language" = "Ngôn ngữ";
"settings_ui_theme" = "Chủ đề";
"settings_ui_theme_auto" = "Tự động";
"settings_ui_theme_light" = "Sáng";
"settings_ui_theme_dark" = "Tối";
"settings_ui_theme_picker_title" = "Chọn một chủ đề";
"settings_ui_theme_picker_message" = "\"Tự động\" sử dụng cài đặt \"Đảo Màu\" của thiết bị";
"settings_unignore_user" = "Xem tất cả tin nhắn từ %@?";
"settings_contacts_discover_matrix_users" = "Sử dụng email và số điện thoại để tìm người dùng khác";
"settings_contacts_phonebook_country" = "Quốc gia trong danh bạ";
"settings_labs_e2e_encryption" = "End-to-End Mã Hóa";
"settings_labs_e2e_encryption_prompt_message" = "Để hoàn thành cài đặt mã hóa, bạn phải đăng nhập lại.";
"settings_labs_matrix_apps" = "Ứng dụng Matrix";
"settings_labs_create_conference_with_jitsi" = "Tạo cuộc gọi hội họp bằng jitsi";
"settings_version" = "Phiên bản %@";
"settings_olm_version" = "Phiên bản Olm %@";
"settings_copyright" = "Bản quyền";
"settings_copyright_url" = "https://riot.im/copyright";
"settings_term_conditions" = "Điều khoản và điều kiện";
"settings_term_conditions_url" = "https://riot.im/tac_apple";
"settings_privacy_policy" = "Chính sách bảo mật";
"settings_privacy_policy_url" = "https://riot.im/privacy";
"settings_third_party_notices" = "Thông báo từ bên thứ ba";
"settings_send_crash_report" = "Gửi lỗi & dữ liệu sử dụng";
"settings_enable_rageshake" = "Lắc điện thoại để báo cáo lỗi";
"settings_clear_cache" = "Dọn bộ nhớ đệm";
"settings_change_password" = "Đổi mật khẩu";
"settings_old_password" = "Mật khẩu cũ";
"settings_new_password" = "mật khẩu mới";
"settings_confirm_password" = "xác nhận mật khẩu";
"settings_fail_to_update_password" = "Cập nhật mật khẩu thất bại";
"settings_password_updated" = "Mật khẩu của bạn đã được cập nhật";
"settings_crypto_device_name" = "Tên thiết bị: ";
"settings_crypto_device_id" = "\nID Thiết bị: ";
"settings_crypto_device_key" = "\nMã khóa của thiết bị: ";
"settings_crypto_export" = "Xuất khóa";
"settings_crypto_blacklist_unverified_devices" = "Chỉ mã hóa để xác thực thiết bị";
// Room Details
"room_details_title" = "Chi tiết phòng chat";
"room_details_people" = "Thành viên";
"room_details_files" = "Tập tin";
"room_details_settings" = "Cài đặt";
"room_details_photo" = "Hình ảnh của phòng";
"room_details_room_name" = "Tên của phòng";
"room_details_topic" = "Chủ đề";
"room_details_favourite_tag" = "Yêu thích";
"room_details_low_priority_tag" = "Ưu tiên thấp";
"room_details_mute_notifs" = "Tắt tiếng thông báo";
"room_details_direct_chat" = "Trò chuyện trực tiếp";
"room_details_access_section" = "Ai có thể truy cập phòng này?";
"room_details_access_section_invited_only" = "Chỉ người được mời";
"room_details_access_section_anyone_apart_from_guest" = "Bất cứ ai biết đường dẫn của phòng, ngoại trừ khách";
"room_details_access_section_anyone" = "Bất cứ ai biết đường dẫn của phòng, kể cả khách";
"room_details_access_section_no_address_warning" = "Phải có địa chỉ để có thể liên kết đến một phòng";
"room_details_access_section_directory_toggle" = "Liệt kê phòng trong danh mục phòng";
"room_details_history_section" = "Ai có thể xem lịch sử?";
"room_details_history_section_anyone" = "Bất cứ ai";
"room_details_history_section_members_only" = "Chỉ thành viên (kể từ thời điểm chọn tùy chọn này)";
"room_details_history_section_members_only_since_invited" = "Chỉ thành viên (kể từ khi họ được mời)";
"room_details_history_section_members_only_since_joined" = "Chỉ thành viên (kể từ khi họ tham gia)";
"room_details_history_section_prompt_title" = "Cảnh báo riêng tư";
"room_details_history_section_prompt_msg" = "Thay đổi đối với những người có thể đọc lịch sử sẽ chỉ áp dụng cho các tin nhắn trong tương lai trong phòng này. Khả năng hiển thị của lịch sử hiện tại sẽ không thay đổi.";
"room_details_addresses_section" = "Địa chỉ";
"room_details_no_local_addresses" = "Phòng này không có địa chỉ nội bộ";
"room_details_new_address" = "Thêm địa chỉ mới";
"room_details_new_address_placeholder" = "Thêm địa chỉ mới (ví dụ: #foo%@)";
"room_details_addresses_invalid_address_prompt_title" = "Sai định dạng bí danh";
"room_details_addresses_invalid_address_prompt_msg" = "%@ không phải là một bí danh phù hợp định dạng";
"room_details_addresses_disable_main_address_prompt_title" = "Cảnh báo địa chỉ chính";
"room_details_addresses_disable_main_address_prompt_msg" = "Bạn sẽ không có địa chỉ chính được chỉ định. Địa chỉ chính mặc định cho phòng này sẽ được chọn ngẫu nhiên";
"room_details_banned_users_section" = "Người dùng bị cấm";
"room_details_advanced_section" = "Nâng cao";
"room_details_advanced_room_id" = "ID Phòng:";
"room_details_advanced_enable_e2e_encryption" = "Bật mã hóa (cảnh báo: không thể tắt trở lại!)";
"room_details_advanced_e2e_encryption_enabled" = "Mã hóa được bật cho phòng này";
"room_details_advanced_e2e_encryption_disabled" = "Mã hóa chưa được bật cho phòng này.";
"room_details_advanced_e2e_encryption_blacklist_unverified_devices" = "Chỉ mã hóa cho các thiết bị đã được xác thực";
"room_details_advanced_e2e_encryption_prompt_message" = "End-to-end, mã hoá đang trong giai đoạn thử nghiệm và có thể không đáng tin cậy.\n\nBạn không nên tin tưởng tuyệt đối vào nó về việc bảo mật dữ liệu hoàn toàn.\n\nThiết bị sẽ không thể giải mã lịch sử từ trước khi họ tham gia vào phòng.\n\nMột khi mã hóa được kích hoạt cho một căn phòng nó không thể tắt (cho đến bây giờ).\n\nTin nhắn được mã hóa sẽ không hiển thị trên các máy khách khi chúng chưa được tích hợp mã hoá.";
"room_details_fail_to_update_avatar" = "Cập nhật ảnh phòng thất bại";
"room_details_fail_to_update_room_name" = "Cập nhật tên phòng thất bại";
"room_details_fail_to_update_topic" = "Cập nhật chủ đề thất bại";
"room_details_fail_to_update_room_guest_access" = "Cập nhật truy cập khách của phòng thất bại";
"room_details_fail_to_update_room_join_rule" = "Cập nhật quy định tham gia thất bại";
"room_details_fail_to_update_room_directory_visibility" = "Cập nhật chế độ hiển thị danh mục phòng thất bại";
"room_details_fail_to_update_history_visibility" = "Cập nhật hiển thị lịch sử thất bại";
"room_details_fail_to_add_room_aliases" = "Thêm địa chỉ mới của phòng thất bại";
"room_details_fail_to_remove_room_aliases" = "Gỡ bỏ địa chỉ phòng thất bại";
"room_details_fail_to_update_room_canonical_alias" = "Cập nhật địa chỉ chính thất bại";
"room_details_fail_to_update_room_direct" = "Cập nhật đánh dấu trực tiếp của phòng thất bại";
"room_details_fail_to_enable_encryption" = "Bật mã hoá của phòng thất bại";
"room_details_save_changes_prompt" = "Bạn có muốn lưu thay đổi?";
"room_details_set_main_address" = "Đặt làm địa chỉ chính";
"room_details_unset_main_address" = "Bỏ cài làm địa chỉ chính";
"room_details_copy_room_id" = "Sao chép ID phòng";
"room_details_copy_room_address" = "Sao chép địa chỉ phòng";
"room_details_copy_room_url" = "Sao chép đường dẫn của phòng";
// Read Receipts
"read_receipts_list" = "Đọc danh sách người đã xem";
"receipt_status_read" = "Đọc: ";
// Media picker
"media_picker_library" = "Thư viện";
"media_picker_select" = "Chọn";
// Directory
"directory_title" = "Danh mục";
"directory_server_picker_title" = "Chọn một danh mục";
"directory_server_all_rooms" = "Tất cả phòng trong máy chủ %@";
"directory_server_all_native_rooms" = "Tất cả phòng thuần Matrix";
"directory_server_type_homeserver" = "Gõ một máy chủ nhà để liệt kê danh sách phòng";
"directory_server_placeholder" = "matrix.org";
// Events formatter
"event_formatter_member_updates" = "%tu thành viên thay đổi";
"event_formatter_widget_added" = "%@ widget tạo bởi %@";
"event_formatter_widget_removed" = "%@ widget gỡ bỏ bởi %@";
"event_formatter_jitsi_widget_added" = "VoIP hội họp tạo bởi %@";
"event_formatter_jitsi_widget_removed" = "VoIP hội họp gỡ bỏ bởi %@";
// Others
"or" = "hoặc";
"you" = "Bạn";
"today" = "Ngày hôm nay";
"yesterday" = "Ngày hôm qua";
"network_offline_prompt" = "Kết nối mạng có vẻ không hoạt động.";
"public_room_section_title" = "Phòng chung (tại %@):";
"bug_report_prompt" = "Ứng dụng đã bị lỗi lần trước. Bạn có muốn gửi báo cáo sự cố không?";
"rage_shake_prompt" = "Bạn dường như đang lắc điện thoại trong sự thất vọng. Bạn có muốn gửi báo cáo lỗi không?";
"do_not_ask_again" = "Đừng hỏi lại";
"camera_access_not_granted" = "%@ không có quyền để sử dụng máy ảnh, vui lòng thay đổi thiết lập riêng tư";
"large_badge_value_k_format" = "%.1fK";
// room display name
"room_displayname_invite_from" = "Mời từ %@";
"room_displayname_room_invite" = "Phòng mời";
"room_displayname_two_members" = "%@ và %@";
"room_displayname_more_than_two_members" = "%@ và %u người khác";
"room_displayname_no_title" = "Phòng trống";
// Call
"call_incoming_voice_prompt" = "Cuộc gọi thoại đến từ %@";
"call_incoming_video_prompt" = "Cuộc gọi video đến từ %@";
"call_incoming_voice" = "Cuộc gọi tới...";
"call_incoming_video" = "Cuộc gọi video tới...";
"call_already_displayed" = "Có một cuộc gọi đang được tiến hành.";
"call_jitsi_error" = "Tham gia cuộc gọi hội họp thất bại.";
// No VoIP support
"no_voip_title" = "Cuộc gọi tới";
"no_voip" = "%@ đang gọi nhưng %@ chưa hỗ trợ gọi thoại.\nBạn có thể bỏ qua thông báo này và trả lời cuộc gọi từ thiết bị khác hoặc từ chối nó.";
// Crash report
"google_analytics_use_prompt" = "Bạn có muốn giúp cải thiện %@ bằng cách tự động báo cáo sự cố vô danh và dữ liệu sử dụng?";
// Crypto
"e2e_enabling_on_app_update" = "Riot đã hỗ trợ mã hóa end-to-end nhưng bạn cần phải đăng nhập lại để kích hoạt.\n\nBạn có thể thực hiện ngay bây giờ hoặc sau đó từ cài đặt của ứng dụng.";
"e2e_need_log_in_again" = "Bạn cần phải đăng nhập lại để tạo các khoá mã hóa end-to-end cho thiết bị này và gửi khoá chung tới máy chủ nhà của bạn.\nĐây là một lần duy nhất; xin lỗi vì sự bất tiện.";
// Bug report
"bug_report_title" = "Báo cáo lỗi";
"bug_report_description" = "Vui lòng mô tả chi tiết lỗi. Bạn đã làm gì? Bạn mong đợi điều gì sẽ xảy ra? Điều gì thực sự xảy ra?";
"bug_crash_report_title" = "Báo cáo lỗi";
"bug_crash_report_description" = "Vui lòng mô tả những gì bạn đã làm trước khi bị lỗi:";
"bug_report_logs_description" = "Để chẩn đoán sự cố, nhật ký từ khách hàng này sẽ được gửi cùng với báo cáo lỗi này. Nếu bạn chỉ muốn gửi văn bản ở trên, vui lòng bỏ chọn:";
"bug_report_send_logs" = "Gửi nhật kí";
"bug_report_send_screenshot" = "Gửi ảnh chụp màn hình";
"bug_report_progress_zipping" = "Thu thập nhật kí";
"bug_report_progress_uploading" = "Gửi báo cáo";
"bug_report_send" = "Gửi";
// Widget
"widget_no_power_to_manage" = "Bạn cần quyền để quản lí widgets trong phòng này";
"widget_creation_failure" = "Tạo widget thất bại";
// Widget Integration Manager
"widget_integration_need_to_be_able_to_invite" = "Bạn cần có khả năng mời người dùng để làm điều đó.";
"widget_integration_unable_to_create" = "Không thể tạo widget.";
"widget_integration_failed_to_send_request" = "Gửi yêu cầu thất bại.";
"widget_integration_room_not_recognised" = "Phòng này không được công nhận.";
"widget_integration_positive_power_level" = "Cấp quyền phải là số nguyên dương.";
"widget_integration_must_be_in_room" = "Bạn không có trong phòng này.";
"widget_integration_no_permission_in_room" = "Bạn không có quyền để làm điều này trong phòng.";
"widget_integration_missing_room_id" = "Thiếu room_id trong yêu cầu.";
"widget_integration_missing_user_id" = "Thiếu user_id trong yêu cầu.";
"widget_integration_room_not_visible" = "Phòng %@ không hiện hữu.";
// Share extension
"share_extension_auth_prompt" = "Đăng nhập vào ứng dụng chính để chia sẻ nội dung";
"share_extension_failed_to_encrypt" = "Gửi thất bại. Kiểm tra cài đặt bảo mật phòng trong ứng dụng chính";

View file

@ -17,11 +17,11 @@
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>0.6.2</string>
<string>0.6.3</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>0.6.2</string>
<string>0.6.3</string>
<key>ITSAppUsesNonExemptEncryption</key>
<true/>
<key>ITSEncryptionExportComplianceCode</key>

View file

@ -14,7 +14,7 @@
limitations under the License.
*/
#import "MXKRoomBubbleCellDataWithAppendingMode.h"
#import <MatrixKit/MatrixKit.h>
// Custom tags for MXKRoomBubbleCellDataStoring.tag
typedef NS_ENUM(NSInteger, RoomBubbleCellDataTag)

View file

@ -16,8 +16,8 @@
#import <Foundation/Foundation.h>
#import <MatrixKit/MatrixKit.h>
#import "RoomEmailInvitation.h"
#import "MXSession.h"
#import "RoomDataSource.h"
/**

View file

@ -15,6 +15,8 @@
limitations under the License.
*/
#import <MatrixKit/MatrixKit.h>
#import "HomeMessagesSearchDataSource.h"
#import "RoomBubbleCellData.h"

View file

@ -17,7 +17,8 @@
#import <Foundation/Foundation.h>
#import <MatrixSDK/MatrixSDK.h>
#import "MXKRecentCellData.h"
#import <MatrixKit/MatrixKit.h>
/**
`RecentCellData` is Vector cuustomized MXKRecentCellData` cell.
*/

View file

@ -62,6 +62,8 @@ extern UIStatusBarStyle kRiotDesignStatusBarStyle;
extern UIBarStyle kRiotDesignSearchBarStyle;
extern UIColor *kRiotDesignSearchBarTintColor;
extern UIKeyboardAppearance kRiotKeyboard;
/**
`RiotDesignValues` class manages the Riot design parameters
*/

View file

@ -43,6 +43,7 @@ UIColor *kRiotColorOrange;
// Riot Background Colors
UIColor *kRiotBgColorWhite;
UIColor *kRiotBgColorBlack;
UIColor *kRiotBgColorOLEDBlack;
UIColor *kRiotColorLightGrey;
UIColor *kRiotColorLightBlack;
UIColor *kRiotColorLightKeyboard;
@ -62,6 +63,8 @@ UIStatusBarStyle kRiotDesignStatusBarStyle = UIStatusBarStyleDefault;
UIBarStyle kRiotDesignSearchBarStyle = UIBarStyleDefault;
UIColor *kRiotDesignSearchBarTintColor = nil;
UIKeyboardAppearance kRiotKeyboard;
@implementation RiotDesignValues
+ (RiotDesignValues *)sharedInstance
@ -92,6 +95,7 @@ UIColor *kRiotDesignSearchBarTintColor = nil;
kRiotBgColorWhite = [UIColor whiteColor];
kRiotBgColorBlack = UIColorFromRGB(0x2D2D2D);
kRiotBgColorOLEDBlack = [UIColor blackColor];
kRiotColorLightGrey = UIColorFromRGB(0xF2F2F2);
kRiotColorLightBlack = UIColorFromRGB(0x353535);
@ -108,7 +112,7 @@ UIColor *kRiotDesignSearchBarTintColor = nil;
// Colors copied from Vector web
kRiotColorLightGreen = UIColorFromRGB(0x50e2c2);
kRiotColorLightOrange = UIColorFromRGB(0xf4c371);
// Observe user interface theme change.
[[NSUserDefaults standardUserDefaults] addObserver:[RiotDesignValues sharedInstance] forKeyPath:@"userInterfaceTheme" options:0 context:nil];
[[RiotDesignValues sharedInstance] userInterfaceThemeDidChange];
@ -145,7 +149,6 @@ UIColor *kRiotDesignSearchBarTintColor = nil;
theme = UIAccessibilityIsInvertColorsEnabled() ? @"dark" : @"light";
}
// Currently only 2 themes is supported
if ([theme isEqualToString:@"dark"])
{
// Set dark theme colors
@ -164,6 +167,31 @@ UIColor *kRiotDesignSearchBarTintColor = nil;
kRiotAuxiliaryColor = kRiotTextColorGray;
kRiotOverlayColor = [UIColor colorWithWhite:0.3 alpha:0.5];
kRiotKeyboardColor = kRiotColorDarkKeyboard;
[UITextField appearance].keyboardAppearance = UIKeyboardAppearanceDark;
kRiotKeyboard = UIKeyboardAppearanceDark;
}
else if ([theme isEqualToString:@"black"])
{
// Set black theme colors
kRiotPrimaryBgColor = kRiotBgColorOLEDBlack;
kRiotSecondaryBgColor = kRiotColorLightBlack;
kRiotPrimaryTextColor = kRiotTextColorWhite;
kRiotSecondaryTextColor = kRiotTextColorGray;
kRiotPlaceholderTextColor = [UIColor colorWithWhite:1.0 alpha:0.3];
kRiotTopicTextColor = kRiotTextColorDarkWhite;
kRiotSelectedBgColor = [UIColor blackColor];
kRiotDesignStatusBarStyle = UIStatusBarStyleLightContent;
kRiotDesignSearchBarStyle = UIBarStyleBlack;
kRiotDesignSearchBarTintColor = kRiotColorGreen;
kRiotAuxiliaryColor = kRiotTextColorGray;
kRiotOverlayColor = [UIColor colorWithWhite:0.3 alpha:0.5];
kRiotKeyboardColor = kRiotColorDarkKeyboard;
[UITextField appearance].keyboardAppearance = UIKeyboardAppearanceDark;
kRiotKeyboard = UIKeyboardAppearanceDark;
}
else
{
@ -183,6 +211,9 @@ UIColor *kRiotDesignSearchBarTintColor = nil;
kRiotAuxiliaryColor = kRiotColorSilver;
kRiotOverlayColor = [UIColor colorWithWhite:0.7 alpha:0.5];
kRiotKeyboardColor = kRiotColorLightKeyboard;
[UITextField appearance].keyboardAppearance = UIKeyboardAppearanceLight;
kRiotKeyboard = UIKeyboardAppearanceLight;
}
[[NSNotificationCenter defaultCenter] postNotificationName:kRiotDesignValuesDidChangeThemeNotification object:nil];

View file

@ -16,7 +16,7 @@
#import "WidgetManager.h"
#import "MXKAppSettings.h"
#import <MatrixKit/MatrixKit.h>
#pragma mark - Contants

View file

@ -29,7 +29,7 @@
#import "MediaAlbumTableCell.h"
#import "MXKPieChartView.h"
#import <MatrixKit/MatrixKit.h>
static void *CapturingStillImageContext = &CapturingStillImageContext;
static void *RecordingContext = &RecordingContext;

View file

@ -23,7 +23,7 @@
#import "MXRoom+Riot.h"
#import "NSBundle+MatrixKit.h"
#import <MatrixKit/MatrixKit.h>
#import "RoomViewController.h"

View file

@ -2081,6 +2081,8 @@ NSString *const kRoomSettingsAdvancedE2eEnabledCellViewIdentifier = @"kRoomSetti
topicTextView.editable = (oneSelfPowerLevel >= [powerLevels minimumPowerLevelForSendingEventAsStateEvent:kMXEventTypeStringRoomTopic]);
topicTextView.textColor = kRiotSecondaryTextColor;
topicTextView.keyboardAppearance = kRiotKeyboard;
cell = roomTopicCell;
}
else if (row == ROOM_SETTINGS_MAIN_SECTION_ROW_NAME)

View file

@ -2015,10 +2015,13 @@
NSArray *activityItems = [NSArray arrayWithObjects:selectedComponent.textMessage, nil];
UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:activityItems applicationActivities:nil];
activityViewController.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
if (activityViewController)
{
activityViewController.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
activityViewController.popoverPresentationController.sourceView = roomBubbleTableViewCell;
activityViewController.popoverPresentationController.sourceRect = roomBubbleTableViewCell.bounds;
[self presentViewController:activityViewController animated:YES completion:nil];
}
}

View file

@ -17,7 +17,8 @@
#import "SettingsViewController.h"
#import <MatrixSDK/MXCallKitAdapter.h>
#import <MatrixKit/MatrixKit.h>
#import <MediaPlayer/MediaPlayer.h>
#import <MobileCoreServices/MobileCoreServices.h>
#import <OLMKit/OLMKit.h>
@ -26,7 +27,6 @@
#import "AppDelegate.h"
#import "AvatarGenerator.h"
#import "MXKEncryptionKeysExportView.h"
#import "BugReportViewController.h"
#import "WebViewViewController.h"
@ -3542,7 +3542,7 @@ typedef void (^blockSettingsViewController_onReadyToDestroy)();
{
__weak typeof(self) weakSelf = self;
__block UIAlertAction *autoAction, *lightAction, *darkAction;
__block UIAlertAction *autoAction, *lightAction, *darkAction, *blackAction;
NSString *themePickerMessage;
void (^actionBlock)(UIAlertAction *action) = ^(UIAlertAction * action) {
@ -3564,6 +3564,10 @@ typedef void (^blockSettingsViewController_onReadyToDestroy)();
{
newTheme = @"dark";
}
else if (action == blackAction)
{
newTheme = @"black";
}
NSString *theme = [[NSUserDefaults standardUserDefaults] stringForKey:@"userInterfaceTheme"];
if (newTheme && ![newTheme isEqualToString:theme])
@ -3598,6 +3602,10 @@ typedef void (^blockSettingsViewController_onReadyToDestroy)();
darkAction = [UIAlertAction actionWithTitle:NSLocalizedStringFromTable(@"settings_ui_theme_dark", @"Vector", nil)
style:UIAlertActionStyleDefault
handler:actionBlock];
blackAction = [UIAlertAction actionWithTitle:NSLocalizedStringFromTable(@"settings_ui_theme_black", @"Vector", nil)
style:UIAlertActionStyleDefault
handler:actionBlock];
UIAlertController *themePicker = [UIAlertController alertControllerWithTitle:NSLocalizedStringFromTable(@"settings_ui_theme_picker_title", @"Vector", nil)
message:themePickerMessage
@ -3609,6 +3617,7 @@ typedef void (^blockSettingsViewController_onReadyToDestroy)();
}
[themePicker addAction:lightAction];
[themePicker addAction:darkAction];
[themePicker addAction:blackAction];
// Cancel button
[themePicker addAction:[UIAlertAction actionWithTitle:[NSBundle mxk_localizedStringForKey:@"cancel"]

View file

@ -17,7 +17,7 @@
#import "ContactTableViewCell.h"
#import "MXKContactManager.h"
#import <MatrixKit/MatrixKit.h>
#import "RiotDesignValues.h"

View file

@ -16,8 +16,6 @@
#import <MatrixKit/MatrixKit.h>
#import "MXKDirectoryServerCellDataStoring.h"
/**
The `DirectoryServerTableViewCell` cell displays a server .
*/

View file

@ -14,7 +14,7 @@
limitations under the License.
*/
#import "MXKTableViewCell.h"
#import <MatrixKit/MatrixKit.h>
/**
'MediaAlbumTableCell' is a base class for displaying a user album.

View file

@ -14,7 +14,7 @@
limitations under the License.
*/
#import "MXKRoomIncomingAttachmentBubbleCell.h"
#import <MatrixKit/MatrixKit.h>
/**
`RoomIncomingAttachmentBubbleCell` displays incoming attachment bubbles with sender's information.

View file

@ -14,7 +14,7 @@
limitations under the License.
*/
#import "MXKRoomIncomingAttachmentBubbleCell.h"
#import <MatrixKit/MatrixKit.h>
/**
`RoomIncomingAttachmentWithPaginationTitleBubbleCell` displays incoming attachment bubbles with sender's information and a pagination title.

View file

@ -14,7 +14,7 @@
limitations under the License.
*/
#import "MXKRoomIncomingAttachmentWithoutSenderInfoBubbleCell.h"
#import <MatrixKit/MatrixKit.h>
/**
`RoomIncomingAttachmentWithoutSenderInfoBubbleCell` displays incoming message bubbles without sender's information.

View file

@ -14,7 +14,7 @@
limitations under the License.
*/
#import "MXKRoomIncomingTextMsgBubbleCell.h"
#import <MatrixKit/MatrixKit.h>
/**
`RoomIncomingTextMsgBubbleCell` displays incoming message bubbles with sender's information.

View file

@ -14,7 +14,7 @@
limitations under the License.
*/
#import "MXKRoomIncomingTextMsgBubbleCell.h"
#import <MatrixKit/MatrixKit.h>
/**
`RoomIncomingTextMsgWithPaginationTitleBubbleCell` displays incoming message bubbles with sender's information.

View file

@ -14,7 +14,7 @@
limitations under the License.
*/
#import "MXKRoomIncomingTextMsgWithoutSenderInfoBubbleCell.h"
#import <MatrixKit/MatrixKit.h>
/**
`RoomIncomingTextMsgWithoutSenderInfoBubbleCell` displays incoming message bubbles without sender's information.

View file

@ -14,7 +14,7 @@
limitations under the License.
*/
#import "MXKRoomOutgoingAttachmentBubbleCell.h"
#import <MatrixKit/MatrixKit.h>
/**
`RoomOutgoingAttachmentBubbleCell` displays outgoing attachment bubbles.

View file

@ -14,7 +14,7 @@
limitations under the License.
*/
#import "MXKRoomOutgoingAttachmentWithoutSenderInfoBubbleCell.h"
#import <MatrixKit/MatrixKit.h>
#import "RoomOutgoingAttachmentBubbleCell.h"
/**

View file

@ -14,7 +14,7 @@
limitations under the License.
*/
#import "MXKRoomOutgoingTextMsgBubbleCell.h"
#import <MatrixKit/MatrixKit.h>
/**
`RoomOutgoingTextMsgBubbleCell` displays outgoing message bubbles with user's picture and name.

View file

@ -14,7 +14,7 @@
limitations under the License.
*/
#import "MXKRoomOutgoingTextMsgWithoutSenderInfoBubbleCell.h"
#import <MatrixKit/MatrixKit.h>
/**
`RoomOutgoingTextMsgWithoutSenderInfoBubbleCell` displays outgoing message bubbles without user's name.

View file

@ -16,7 +16,7 @@
*/
#import <Foundation/Foundation.h>
#import <HPGrowingTextView.h>
#import <HPGrowingTextView/HPGrowingTextView.h>
#import "RoomInputToolbarView.h"
@interface KeyboardGrowingTextView: HPGrowingTextView

View file

@ -92,6 +92,8 @@
growingTextView.font = [UIFont systemFontOfSize:15];
growingTextView.textColor = kRiotPrimaryTextColor;
growingTextView.tintColor = kRiotColorGreen;
growingTextView.internalTextView.keyboardAppearance = kRiotKeyboard;
}
#pragma mark -

View file

@ -14,7 +14,7 @@
limitations under the License.
*/
#import "MXKRoomBubbleTableViewCell.h"
#import <MatrixKit/MatrixKit.h>
/**
`MessagesSearchResultAttachmentBubbleCell` displays an attachment with the information of the room and the sender.

View file

@ -14,7 +14,7 @@
limitations under the License.
*/
#import "MXKRoomBubbleTableViewCell.h"
#import <MatrixKit/MatrixKit.h>
/**
`MessagesSearchResultTextMsgBubbleCell` displays a message text with the information of the room and the sender.

View file

@ -14,8 +14,8 @@
limitations under the License.
*/
#import "MXKTableViewCellWithButton.h"
#import <MatrixKit/MatrixKit.h>
@interface TableViewCellWithButton : MXKTableViewCellWithButton
@end
@end

View file

@ -14,7 +14,7 @@
limitations under the License.
*/
#import "MXKTableViewCell.h"
#import <MatrixKit/MatrixKit.h>
@interface TableViewCellWithCheckBoxAndLabel : MXKTableViewCell

View file

@ -14,7 +14,7 @@
limitations under the License.
*/
#import "MXKTableViewCell.h"
#import <MatrixKit/MatrixKit.h>
@class TableViewCellWithCheckBoxes;
@ -88,4 +88,4 @@
*/
- (BOOL)checkBoxValueAtIndex:(NSUInteger)index;
@end
@end

View file

@ -14,7 +14,7 @@
limitations under the License.
*/
#import "MXKTableViewCell.h"
#import <MatrixKit/MatrixKit.h>
@interface TableViewCellWithLabelAndLargeTextView : MXKTableViewCell <UITextViewDelegate>
@ -27,4 +27,4 @@
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *textViewWidthConstraint;
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *textViewTrailingConstraint;
@end
@end

View file

@ -17,7 +17,7 @@
<key>CFBundlePackageType</key>
<string>XPC!</string>
<key>CFBundleShortVersionString</key>
<string>0.6.2</string>
<string>0.6.3</string>
<key>CFBundleVersion</key>
<string>1</string>
<key>NSExtension</key>

View file

@ -16,7 +16,7 @@
#import "ShareExtensionManager.h"
#import "SharePresentingViewController.h"
#import "MXKPieChartHUD.h"
#import <MatrixKit/MatrixKit.h>
@import MobileCoreServices;
#import "objc/runtime.h"

View file

@ -20,8 +20,7 @@
#import "ShareExtensionManager.h"
#import "RecentCellData.h"
#import "RiotDesignValues.h"
#import "MXKPieChartView.h"
#import "MXKPieChartHUD.h"
#import <MatrixKit/MatrixKit.h>
@interface RoomsListViewController () <ShareExtensionManagerDelegate>

View file

@ -17,7 +17,7 @@
<key>CFBundlePackageType</key>
<string>XPC!</string>
<key>CFBundleShortVersionString</key>
<string>0.6.2</string>
<string>0.6.3</string>
<key>CFBundleVersion</key>
<string>1</string>
<key>NSExtension</key>

View file

@ -16,11 +16,7 @@
#import "IntentHandler.h"
#import "MXKAccount.h"
#import "MXKAccountManager.h"
#import "MXFileStore.h"
#import "MXRestClient.h"
#import "MXSession.h"
#import <MatrixKit/MatrixKit.h>
#if __has_include(<MatrixSDK/MXJingleCallStack.h>)
#define CALL_STACK_JINGLE