From 772ff33d8ec6dbaaa67e28b1cc9870bc84839328 Mon Sep 17 00:00:00 2001 From: Christian Pauly Date: Sun, 4 Oct 2020 18:21:56 +0200 Subject: [PATCH 01/24] fix: Linux database --- lib/utils/database/mobile.dart | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/lib/utils/database/mobile.dart b/lib/utils/database/mobile.dart index d424e5f..30a2a75 100644 --- a/lib/utils/database/mobile.dart +++ b/lib/utils/database/mobile.dart @@ -2,6 +2,7 @@ import 'dart:ffi'; import 'dart:io'; import 'dart:isolate'; import 'package:famedlysdk/famedlysdk.dart'; +import 'package:path_provider/path_provider.dart'; import 'package:sqflite/sqflite.dart' show getDatabasesPath; import 'package:path/path.dart' as p; import 'package:flutter/material.dart'; @@ -64,22 +65,17 @@ Future constructDb( final isolate = (await receivePort.first as MoorIsolate); return Database.connect(await isolate.connect()); } else if (Platform.isLinux) { - debugPrint('[Moor] using desktop moor'); - open.overrideFor(OperatingSystem.linux, _openOnLinux); - return Database(moor.VmDatabase.memory()); + debugPrint('[Moor] using Linux desktop moor'); + final appDocDir = await getApplicationSupportDirectory(); + return Database(moor.VmDatabase(File('${appDocDir.path}/$filename'))); } else if (Platform.isWindows) { - debugPrint('[Moor] using desktop moor'); - open.overrideFor(OperatingSystem.linux, _openOnWindows); + debugPrint('[Moor] using Windows desktop moor'); + open.overrideFor(OperatingSystem.windows, _openOnWindows); return Database(moor.VmDatabase.memory()); } throw Exception('Platform not supported'); } -DynamicLibrary _openOnLinux() { - final libraryNextToScript = File('/usr/lib/x86_64-linux-gnu/libsqlite3.so'); - return DynamicLibrary.open(libraryNextToScript.path); -} - DynamicLibrary _openOnWindows() { final script = File(Platform.script.toFilePath()); final libraryNextToScript = File('${script.path}/sqlite3.dll'); From 46590d7f2b89f628f56cfce3a8525092f362a9f0 Mon Sep 17 00:00:00 2001 From: Christian Pauly Date: Sun, 4 Oct 2020 18:39:07 +0200 Subject: [PATCH 02/24] feat: Publish as snap --- .gitlab-ci.yml | 53 +++++++++++++++++++++++++++++++++++++++++++++ snap/snapcraft.yaml | 25 +++++++++++++++++++++ 2 files changed, 78 insertions(+) create mode 100644 snap/snapcraft.yaml diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 07860ce..68b3142 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -181,3 +181,56 @@ pages: - public only: - main + +snap:amd64: + stage: build + image: ubuntu:20.04 + except: + - coverage + script: + - apt-get update -qy + - apt-get install -y snapcraft + - snapcraft --debug + artifacts: + paths: + - './*.snap' + when: on_success + expire_in: 1 week + +snap:publish-candidate: + stage: publish + image: ubuntu:20.04 + only: + - main + script: + - apt-get update -qy + - apt-get install -y snapcraft curl + - snapcraft + - echo $SNAPCRAFT_LOGIN_FILE | base64 --decode --ignore-garbage > snapcraft.login + - snapcraft login --with snapcraft.login + - snapcraft push --release=candidate *.snap + - snapcraft logout + artifacts: + paths: + - './*.snap' + when: on_success + expire_in: 1 week + +snap:publish: + stage: publish + image: ubuntu:20.04 + only: + - tags + script: + - apt-get update -qy + - apt-get install -y snapcraft curl + - snapcraft + - echo $SNAPCRAFT_LOGIN_FILE | base64 --decode --ignore-garbage > snapcraft.login + - snapcraft login --with snapcraft.login + - snapcraft push --release=stable *.snap + - snapcraft logout + artifacts: + paths: + - './*.snap' + when: on_success + expire_in: 1 week \ No newline at end of file diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml new file mode 100644 index 0000000..269dba0 --- /dev/null +++ b/snap/snapcraft.yaml @@ -0,0 +1,25 @@ +name: fluffychat +version: 0.1.0 +summary: Chat with your friends. +description: Chat with your friends. +icon: assets/logo.png +confinement: strict +base: core18 +grade: stable + +apps: + fluffychat: + command: fluffychat + extensions: [flutter-dev] + plugs: + - network + - home + +parts: + fluffychat: + source: . + plugin: flutter + flutter-target: lib/main.dart + stage-packages: + - libsqlite3-0 + - libolm3 From 4345df387def744154dd0a58116d20e37a6e2918 Mon Sep 17 00:00:00 2001 From: Christian Pauly Date: Sun, 4 Oct 2020 18:39:54 +0200 Subject: [PATCH 03/24] fix: CI --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 68b3142..775f58a 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -183,7 +183,7 @@ pages: - main snap:amd64: - stage: build + stage: coverage image: ubuntu:20.04 except: - coverage From 46484664115eddcb9694f2cad94b43cdc0d720d9 Mon Sep 17 00:00:00 2001 From: Christian Pauly Date: Sun, 4 Oct 2020 19:06:41 +0200 Subject: [PATCH 04/24] fix: Snap --- .gitlab-ci.yml | 15 --------------- snap/snapcraft.yaml | 18 ++++++++++++++++-- 2 files changed, 16 insertions(+), 17 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 775f58a..3084903 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -181,21 +181,6 @@ pages: - public only: - main - -snap:amd64: - stage: coverage - image: ubuntu:20.04 - except: - - coverage - script: - - apt-get update -qy - - apt-get install -y snapcraft - - snapcraft --debug - artifacts: - paths: - - './*.snap' - when: on_success - expire_in: 1 week snap:publish-candidate: stage: publish diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml index 269dba0..b70f3fa 100644 --- a/snap/snapcraft.yaml +++ b/snap/snapcraft.yaml @@ -16,10 +16,24 @@ apps: - home parts: + olm: + source: . + source-type: git + plugin: cmake + build-packages: + - build-essential + override-build: | + rm -r olm + git clone https://gitlab.matrix.org/matrix-org/olm.git + cd olm + cmake . -Bbuild + cmake --build build + sudo make install fluffychat: source: . plugin: flutter flutter-target: lib/main.dart - stage-packages: + stage-packages: - libsqlite3-0 - - libolm3 + override-build: sudo apt install libolm3 + after: [olm] From ec7dd2b4d989c9194a7978ad286b78b50126cbef Mon Sep 17 00:00:00 2001 From: Christian Pauly Date: Sun, 4 Oct 2020 19:07:41 +0200 Subject: [PATCH 05/24] fix: Snap --- snap/snapcraft.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml index b70f3fa..6794d67 100644 --- a/snap/snapcraft.yaml +++ b/snap/snapcraft.yaml @@ -35,5 +35,4 @@ parts: flutter-target: lib/main.dart stage-packages: - libsqlite3-0 - override-build: sudo apt install libolm3 after: [olm] From 4dfd0dbc05e642ea9d5b07662cb170de9b163a70 Mon Sep 17 00:00:00 2001 From: Christian Pauly Date: Sun, 4 Oct 2020 19:09:54 +0200 Subject: [PATCH 06/24] fix: Desktop url launcher --- pubspec.lock | 2 +- pubspec.yaml | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/pubspec.lock b/pubspec.lock index ab60a8d..eacd935 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -969,7 +969,7 @@ packages: source: hosted version: "1.0.8" url_launcher_web: - dependency: "direct main" + dependency: transitive description: name: url_launcher_web url: "https://pub.dartlang.org" diff --git a/pubspec.yaml b/pubspec.yaml index 59974f6..8ae84b4 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -32,8 +32,7 @@ dependencies: localstorage: ^3.0.1+4 file_picker_cross: ^4.2.2 image_picker: ^0.6.7+11 - url_launcher: ^5.4.1 - url_launcher_web: ^0.1.0 + url_launcher: ^5.7.2 cached_network_image: ^2.3.2+1 firebase_messaging: ^7.0.2 flutter_local_notifications: ^1.4.3 From 540ff683d82f5f070ea8cebce96a525e24b24048 Mon Sep 17 00:00:00 2001 From: Sorunome Date: Sun, 4 Oct 2020 19:19:35 +0200 Subject: [PATCH 07/24] fix: small desktop fixes --- lib/components/matrix.dart | 3 ++- pubspec.lock | 2 +- pubspec.yaml | 4 ++-- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/lib/components/matrix.dart b/lib/components/matrix.dart index 01e46ad..8c0cf95 100644 --- a/lib/components/matrix.dart +++ b/lib/components/matrix.dart @@ -21,6 +21,7 @@ import '../utils/beautify_string_extension.dart'; import '../utils/famedlysdk_store.dart'; import '../utils/presence_extension.dart'; import '../views/key_verification.dart'; +import '../utils/platform_infos.dart'; import 'avatar.dart'; class Matrix extends StatefulWidget { @@ -212,7 +213,7 @@ class MatrixState extends State { final Set verificationMethods = { KeyVerificationMethod.numbers }; - if (!kIsWeb) { + if (PlatformInfos.isMobile) { // emojis don't show in web somehow verificationMethods.add(KeyVerificationMethod.emoji); } diff --git a/pubspec.lock b/pubspec.lock index eacd935..e9511b5 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -327,7 +327,7 @@ packages: name: flutter_matrix_html url: "https://pub.dartlang.org" source: hosted - version: "0.1.5" + version: "0.1.7" flutter_olm: dependency: "direct main" description: diff --git a/pubspec.yaml b/pubspec.yaml index 8ae84b4..411e6a4 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -50,7 +50,7 @@ dependencies: open_file: ^3.0.1 mime_type: ^0.3.0 bot_toast: ^3.0.0 - flutter_matrix_html: ^0.1.5 + flutter_matrix_html: ^0.1.7 moor: ^3.3.1 sqlite3_flutter_libs: ^0.2.0 sqlite3: ^0.1.4 @@ -87,7 +87,7 @@ flutter_icons: # The following section is specific to Flutter. flutter: - # Adds code generation (synthetic package) support + # Adds code generation (synthetic package) support generate: true From 0413b0c0b1ac55cf35bbe7b22a8796595d39f655 Mon Sep 17 00:00:00 2001 From: Christian Pauly Date: Sun, 4 Oct 2020 19:22:31 +0200 Subject: [PATCH 08/24] fix: User Status crash --- lib/components/list_items/status_list_item.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/components/list_items/status_list_item.dart b/lib/components/list_items/status_list_item.dart index 7ed9680..1d5f272 100644 --- a/lib/components/list_items/status_list_item.dart +++ b/lib/components/list_items/status_list_item.dart @@ -17,7 +17,7 @@ class StatusListItem extends StatelessWidget { future: client.getProfileFromUserId(status.userId), builder: (context, snapshot) { final profile = - snapshot.data ?? Profile(client.userID, Uri.parse('')); + snapshot.data ?? Profile(status.userId.localpart, null); return InkWell( borderRadius: BorderRadius.circular(8), onTap: () => Navigator.of(context).push( From daf99699eadcbbbfae43ac3ea19ba13b6b3f1847 Mon Sep 17 00:00:00 2001 From: Christian Pauly Date: Sun, 4 Oct 2020 19:55:36 +0200 Subject: [PATCH 09/24] chore: Minor snap fix --- snap/snapcraft.yaml | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml index 6794d67..f235933 100644 --- a/snap/snapcraft.yaml +++ b/snap/snapcraft.yaml @@ -22,9 +22,10 @@ parts: plugin: cmake build-packages: - build-essential + stage-packages: + - libsqlite3-0 override-build: | - rm -r olm - git clone https://gitlab.matrix.org/matrix-org/olm.git + if cd olm; then git pull; else git clone https://gitlab.matrix.org/matrix-org/olm.git; fi cd olm cmake . -Bbuild cmake --build build @@ -33,6 +34,4 @@ parts: source: . plugin: flutter flutter-target: lib/main.dart - stage-packages: - - libsqlite3-0 after: [olm] From 6b7d21d034d028ddf259b2aa55d1f5b580142165 Mon Sep 17 00:00:00 2001 From: Christian Pauly Date: Sun, 4 Oct 2020 20:01:39 +0200 Subject: [PATCH 10/24] fix: CI --- .gitlab-ci.yml | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 3084903..ea0ca7c 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -184,12 +184,10 @@ pages: snap:publish-candidate: stage: publish - image: ubuntu:20.04 + image: "cibuilds/snapcraft:core18" only: - main script: - - apt-get update -qy - - apt-get install -y snapcraft curl - snapcraft - echo $SNAPCRAFT_LOGIN_FILE | base64 --decode --ignore-garbage > snapcraft.login - snapcraft login --with snapcraft.login @@ -203,12 +201,10 @@ snap:publish-candidate: snap:publish: stage: publish - image: ubuntu:20.04 + image: "cibuilds/snapcraft:core18" only: - tags script: - - apt-get update -qy - - apt-get install -y snapcraft curl - snapcraft - echo $SNAPCRAFT_LOGIN_FILE | base64 --decode --ignore-garbage > snapcraft.login - snapcraft login --with snapcraft.login From f6ab1e0d6d072a230edbd92c60a5d7e371cfb83b Mon Sep 17 00:00:00 2001 From: Sorunome Date: Sun, 4 Oct 2020 20:09:46 +0200 Subject: [PATCH 11/24] fix: Make theme loading work properly --- CHANGELOG.md | 2 ++ lib/components/theme_switcher.dart | 25 +++---------------------- 2 files changed, 5 insertions(+), 22 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e4d83a6..4a7c499 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,8 @@ ### Features - Add ability to enable / disable emotes globally - Add ability to manage emote packs with different state keys +### Fixes +- Fix amoled / theme settings not always saving properly # Version 0.19.0 - 2020-09-21 ### Features diff --git a/lib/components/theme_switcher.dart b/lib/components/theme_switcher.dart index 300bf72..f5ddadf 100644 --- a/lib/components/theme_switcher.dart +++ b/lib/components/theme_switcher.dart @@ -176,8 +176,9 @@ class ThemeSwitcherWidgetState extends State { Future loadSelection(MatrixState matrix) async { String item = await matrix.store.getItem('theme') ?? 'light'; - selectedTheme = - Themes.values.firstWhere((e) => e.toString() == 'Themes.' + item); + selectedTheme = Themes.values.firstWhere( + (e) => e.toString() == 'Themes.' + item, + orElse: () => Themes.system); amoledEnabled = (await matrix.store.getItem('amoled_enabled') ?? 'false') .toLowerCase() == @@ -238,26 +239,6 @@ class ThemeSwitcherWidgetState extends State { void setup() async { final matrix = Matrix.of(context); await loadSelection(matrix); - - if (selectedTheme == null) { - switchTheme(matrix, Themes.light, false); - } else { - switch (selectedTheme) { - case Themes.light: - switchTheme(matrix, Themes.light, false); - break; - case Themes.dark: - if (amoledEnabled) { - switchTheme(matrix, Themes.dark, true); - } else { - switchTheme(matrix, Themes.dark, false); - } - break; - case Themes.system: - switchTheme(matrix, Themes.system, false); - break; - } - } } @override From aee854e5d5d062179e37ab9d63970b7d0c6ada87 Mon Sep 17 00:00:00 2001 From: Christian Pauly Date: Sun, 4 Oct 2020 20:30:06 +0200 Subject: [PATCH 12/24] fix: Minor fixes --- lib/views/chat_list.dart | 16 ++++++++++------ linux/CMakeLists.txt | 8 ++++++++ 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/lib/views/chat_list.dart b/lib/views/chat_list.dart index e126b5f..b0aa931 100644 --- a/lib/views/chat_list.dart +++ b/lib/views/chat_list.dart @@ -456,12 +456,16 @@ class _ChatListState extends State { ConnectionStatusHeader(), Expanded( child: StreamBuilder( - stream: Matrix.of(context) - .client - .onSync - .stream - .where((s) => - s.hasRoomUpdate || s.hasPresenceUpdate), + stream: + Matrix.of(context).client.onSync.stream.where( + (s) => + s.hasRoomUpdate || + s.accountData + .where((a) => + a.type == + MatrixState.userStatusesType) + .isNotEmpty, + ), builder: (context, snapshot) { return FutureBuilder( future: waitForFirstSync(context), diff --git a/linux/CMakeLists.txt b/linux/CMakeLists.txt index 34af8c5..5e82bb4 100644 --- a/linux/CMakeLists.txt +++ b/linux/CMakeLists.txt @@ -45,6 +45,14 @@ apply_standard_settings(${BINARY_NAME}) target_link_libraries(${BINARY_NAME} PRIVATE flutter) target_link_libraries(${BINARY_NAME} PRIVATE PkgConfig::GTK) add_dependencies(${BINARY_NAME} flutter_assemble) +# Only the install-generated bundle's copy of the executable will launch +# correctly, since the resources must in the right relative locations. To avoid +# people trying to run the unbundled copy, put it in a subdirectory instead of +# the default top-level location. +set_target_properties(${BINARY_NAME} + PROPERTIES + RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/intermediates_do_not_run" +) # Generated plugin build rules, which manage building the plugins and adding # them to the application. From 468c2587aa246717c46400e48407d031d2a40bbf Mon Sep 17 00:00:00 2001 From: Sorunome Date: Sun, 4 Oct 2020 20:44:44 +0200 Subject: [PATCH 13/24] fix: Show device name in account information correctly --- CHANGELOG.md | 1 + lib/views/app_info.dart | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4a7c499..a7aecbd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ - Add ability to manage emote packs with different state keys ### Fixes - Fix amoled / theme settings not always saving properly +- Show device name in account information correctly # Version 0.19.0 - 2020-09-21 ### Features diff --git a/lib/views/app_info.dart b/lib/views/app_info.dart index 462be7e..cd826c9 100644 --- a/lib/views/app_info.dart +++ b/lib/views/app_info.dart @@ -37,7 +37,9 @@ class AppInfo extends StatelessWidget { ), ListTile( title: Text('Device name:'), - subtitle: Text(client.deviceName), + subtitle: Text(client.userDeviceKeys[client.userID] + ?.deviceKeys[client.deviceID]?.deviceDisplayName ?? + L10n.of(context).unknownDevice), ), ListTile( title: Text('Device ID:'), From 751dcb760078623f8b608d56230d3f4b3e6fa5a4 Mon Sep 17 00:00:00 2001 From: Sorunome Date: Mon, 5 Oct 2020 16:41:29 +0200 Subject: [PATCH 14/24] fix: send images as images, not files --- lib/views/chat.dart | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/views/chat.dart b/lib/views/chat.dart index 1bd701b..acaf76d 100644 --- a/lib/views/chat.dart +++ b/lib/views/chat.dart @@ -227,7 +227,7 @@ class _ChatState extends State<_Chat> { } void sendImageAction(BuildContext context) async { - MatrixFile file; + MatrixImageFile file; if (PlatformInfos.isMobile) { final result = await ImagePicker().getImage( source: ImageSource.gallery, @@ -235,7 +235,7 @@ class _ChatState extends State<_Chat> { maxWidth: 1600, maxHeight: 1600); if (result == null) return; - file = MatrixFile( + file = MatrixImageFile( bytes: await result.readAsBytes(), name: result.path, ); @@ -243,7 +243,7 @@ class _ChatState extends State<_Chat> { final result = await FilePickerCross.importFromStorage(type: FileTypeCross.image); if (result == null) return; - file = MatrixFile( + file = MatrixImageFile( bytes: result.toUint8List(), name: result.fileName, ); From bfd38886074a7dea953ad17518df5a169e511de0 Mon Sep 17 00:00:00 2001 From: Christian Pauly Date: Tue, 6 Oct 2020 09:01:49 +0200 Subject: [PATCH 15/24] feat: Implement change device name --- lib/l10n/intl_en.arb | 7 ++++++- lib/views/settings_devices.dart | 35 ++++++++++++++++++++++++++++----- 2 files changed, 36 insertions(+), 6 deletions(-) diff --git a/lib/l10n/intl_en.arb b/lib/l10n/intl_en.arb index 5ac25ce..a6faa73 100644 --- a/lib/l10n/intl_en.arb +++ b/lib/l10n/intl_en.arb @@ -159,6 +159,11 @@ "type": "text", "placeholders": {} }, + "changeDeviceName": "Change device name", + "@changeDeviceName": { + "type": "text", + "placeholders": {} + }, "changedTheChatAvatar": "{username} changed the chat avatar", "@changedTheChatAvatar": { "type": "text", @@ -1718,4 +1723,4 @@ "type": "text", "placeholders": {} } -} +} \ No newline at end of file diff --git a/lib/views/settings_devices.dart b/lib/views/settings_devices.dart index 1894b13..a1a5620 100644 --- a/lib/views/settings_devices.dart +++ b/lib/views/settings_devices.dart @@ -56,6 +56,19 @@ class DevicesSettingsState extends State { } } + void _renameDeviceAction(BuildContext context, Device device) async { + final displayName = await SimpleDialogs(context).enterText( + hintText: device.displayName, + labelText: L10n.of(context).changeDeviceName, + ); + if (displayName == null) return; + await SimpleDialogs(context).tryRequestWithLoadingDialog( + Matrix.of(context) + .client + .setDeviceMetadata(device.deviceId, displayName: displayName), + ); + } + @override Widget build(BuildContext context) { return Scaffold( @@ -117,6 +130,7 @@ class DevicesSettingsState extends State { itemBuilder: (BuildContext context, int i) => UserDeviceListItem( devices[i], + rename: (d) => _renameDeviceAction(context, d), remove: (d) => _removeDevicesAction(context, [d]), ), ), @@ -132,23 +146,34 @@ class DevicesSettingsState extends State { class UserDeviceListItem extends StatelessWidget { final Device userDevice; final Function remove; + final Function rename; - const UserDeviceListItem(this.userDevice, {this.remove, Key key}) + const UserDeviceListItem(this.userDevice, {this.remove, this.rename, Key key}) : super(key: key); @override Widget build(BuildContext context) { return PopupMenuButton( onSelected: (String action) { - if (action == 'remove' && remove != null) { - remove(userDevice); + switch (action) { + case 'remove': + if (remove != null) remove(userDevice); + break; + case 'rename': + if (rename != null) rename(userDevice); } }, itemBuilder: (BuildContext context) => [ + PopupMenuItem( + value: 'rename', + child: Text(L10n.of(context).changeDeviceName), + ), PopupMenuItem( value: 'remove', - child: Text(L10n.of(context).removeDevice, - style: TextStyle(color: Colors.red)), + child: Text( + L10n.of(context).removeDevice, + style: TextStyle(color: Colors.red), + ), ), ], child: ListTile( From fd6b52bb471270387a12f85b84fee2cb55d8a248 Mon Sep 17 00:00:00 2001 From: Sorunome Date: Sun, 4 Oct 2020 18:42:23 +0000 Subject: [PATCH 16/24] Translated using Weblate (English) Currently translated at 100.0% (312 of 312 strings) Translation: FluffyChat/Translations-New Translate-URL: https://hosted.weblate.org/projects/fluffychat/translations-new/en/ --- lib/l10n/intl_en.arb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/l10n/intl_en.arb b/lib/l10n/intl_en.arb index a6faa73..35ceddd 100644 --- a/lib/l10n/intl_en.arb +++ b/lib/l10n/intl_en.arb @@ -23,7 +23,7 @@ "type": "text", "placeholders": {} }, - "accountInformation": "Account informations", + "accountInformation": "Account information", "@accountInformation": { "type": "text", "placeholders": {} @@ -1207,7 +1207,7 @@ "type": "text", "placeholders": {} }, - "sentryInfo": "Informations about your privacy: https://sentry.io/security/", + "sentryInfo": "Information about your privacy: https://sentry.io/security/", "@sentryInfo": { "type": "text", "placeholders": {} @@ -1315,7 +1315,7 @@ "username": {} } }, - "sentCallInformations": "{senderName} sent call informations", + "sentCallInformations": "{senderName} sent call information", "@sentCallInformations": { "type": "text", "placeholders": { From 952a8eeade93e1d5174b1ec73051fd095e30c1e9 Mon Sep 17 00:00:00 2001 From: Anne Onyme 017 Date: Sun, 4 Oct 2020 18:46:03 +0000 Subject: [PATCH 17/24] Translated using Weblate (French) Currently translated at 100.0% (312 of 312 strings) Translation: FluffyChat/Translations-New Translate-URL: https://hosted.weblate.org/projects/fluffychat/translations-new/fr/ --- lib/l10n/intl_fr.arb | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/lib/l10n/intl_fr.arb b/lib/l10n/intl_fr.arb index ce82ea1..ce3b836 100644 --- a/lib/l10n/intl_fr.arb +++ b/lib/l10n/intl_fr.arb @@ -23,7 +23,7 @@ "type": "text", "placeholders": {} }, - "accountInformation": "Informations du compte", + "accountInformation": "Informations sur le compte", "@accountInformation": { "type": "text", "placeholders": {} @@ -1702,5 +1702,20 @@ "@yourOwnUsername": { "type": "text", "placeholders": {} + }, + "privacy": "Vie privée", + "@privacy": { + "type": "text", + "placeholders": {} + }, + "enableEmotesGlobally": "Activer globalement le pack d'émoticônes", + "@enableEmotesGlobally": { + "type": "text", + "placeholders": {} + }, + "emotePacks": "Packs d'émoticônes pour le salon", + "@emotePacks": { + "type": "text", + "placeholders": {} } -} \ No newline at end of file +} From 8ebc02b7aece937a7725f926e95195df8018aab9 Mon Sep 17 00:00:00 2001 From: Milo Ivir Date: Sun, 4 Oct 2020 22:48:02 +0000 Subject: [PATCH 18/24] Translated using Weblate (Croatian) Currently translated at 100.0% (312 of 312 strings) Translation: FluffyChat/Translations-New Translate-URL: https://hosted.weblate.org/projects/fluffychat/translations-new/hr/ --- lib/l10n/intl_hr.arb | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/lib/l10n/intl_hr.arb b/lib/l10n/intl_hr.arb index f9121cc..7620a59 100644 --- a/lib/l10n/intl_hr.arb +++ b/lib/l10n/intl_hr.arb @@ -1702,5 +1702,20 @@ "@yourOwnUsername": { "type": "text", "placeholders": {} + }, + "enableEmotesGlobally": "Aktiviraj paket emotikona globalno", + "@enableEmotesGlobally": { + "type": "text", + "placeholders": {} + }, + "emotePacks": "Paketi emotikona za sobu", + "@emotePacks": { + "type": "text", + "placeholders": {} + }, + "privacy": "Privatnost", + "@privacy": { + "type": "text", + "placeholders": {} } -} \ No newline at end of file +} From 13c0b625ac2dca8aa9472f80dfa1d040dd57824f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?O=C4=9Fuz=20Ersen?= Date: Sun, 4 Oct 2020 22:11:46 +0000 Subject: [PATCH 19/24] Translated using Weblate (Turkish) Currently translated at 100.0% (312 of 312 strings) Translation: FluffyChat/Translations-New Translate-URL: https://hosted.weblate.org/projects/fluffychat/translations-new/tr/ --- lib/l10n/intl_tr.arb | 313 ++++++++++++++++++++++++++++++------------- 1 file changed, 217 insertions(+), 96 deletions(-) diff --git a/lib/l10n/intl_tr.arb b/lib/l10n/intl_tr.arb index 22f3ef5..1895c47 100644 --- a/lib/l10n/intl_tr.arb +++ b/lib/l10n/intl_tr.arb @@ -102,7 +102,7 @@ "type": "text", "placeholders": {} }, - "askVerificationRequest": "{username}'den gelen doğrulama talebini kabul etmek istiyor musunuz?", + "askVerificationRequest": "{username} kişisinden gelen bu doğrulama isteği kabul edilsin mi?", "@askVerificationRequest": { "type": "text", "placeholders": { @@ -119,7 +119,7 @@ "type": "text", "placeholders": {} }, - "banFromChat": "Sohbetten engellendiniz", + "banFromChat": "Sohbetten engelle", "@banFromChat": { "type": "text", "placeholders": {} @@ -129,7 +129,7 @@ "type": "text", "placeholders": {} }, - "bannedUser": "{username} engelledi: {targetName}", + "bannedUser": "{username}, {targetName} kişisini engelledi", "@bannedUser": { "type": "text", "placeholders": { @@ -249,7 +249,7 @@ "username": {} } }, - "changedTheRoomAliases": "", + "changedTheRoomAliases": "{username} oda takma adlarını değiştirdi", "@changedTheRoomAliases": { "type": "text", "placeholders": { @@ -268,7 +268,7 @@ "type": "text", "placeholders": {} }, - "changeTheHomeserver": "", + "changeTheHomeserver": "Ana sunucuyu değiştir", "@changeTheHomeserver": { "type": "text", "placeholders": {} @@ -293,7 +293,7 @@ "type": "text", "placeholders": {} }, - "channelCorruptedDecryptError": "", + "channelCorruptedDecryptError": "Şifreleme bozuldu", "@channelCorruptedDecryptError": { "type": "text", "placeholders": {} @@ -323,12 +323,12 @@ "type": "text", "placeholders": {} }, - "compareEmojiMatch": "", + "compareEmojiMatch": "Karşılaştırın ve aşağıdaki emojilerin diğer cihazdakilerle eşleştiğinden emin olun:", "@compareEmojiMatch": { "type": "text", "placeholders": {} }, - "compareNumbersMatch": "", + "compareNumbersMatch": "Karşılaştırın ve aşağıdaki numaraların diğer cihazdakilerle eşleştiğinden emin olun:", "@compareNumbersMatch": { "type": "text", "placeholders": {} @@ -353,7 +353,7 @@ "type": "text", "placeholders": {} }, - "contentViewer": "", + "contentViewer": "İçerik görüntüleyici", "@contentViewer": { "type": "text", "placeholders": {} @@ -380,7 +380,7 @@ "type": "text", "placeholders": {} }, - "couldNotSetDisplayname": "", + "couldNotSetDisplayname": "Görünen ad ayarlanamadı", "@couldNotSetDisplayname": { "type": "text", "placeholders": {} @@ -414,17 +414,17 @@ "type": "text", "placeholders": {} }, - "crossSigningDisabled": "", + "crossSigningDisabled": "Çapraz imzalama devre dışı bırakıldı", "@crossSigningDisabled": { "type": "text", "placeholders": {} }, - "crossSigningEnabled": "", + "crossSigningEnabled": "Çapraz imzalama etkinleştirildi", "@crossSigningEnabled": { "type": "text", "placeholders": {} }, - "currentlyActive": "", + "currentlyActive": "Şu anda etkin", "@currentlyActive": { "type": "text", "placeholders": {} @@ -469,7 +469,7 @@ "type": "text", "placeholders": {} }, - "deny": "", + "deny": "Reddet", "@deny": { "type": "text", "placeholders": {} @@ -484,12 +484,12 @@ "type": "text", "placeholders": {} }, - "discardPicture": "", + "discardPicture": "Resmi at", "@discardPicture": { "type": "text", "placeholders": {} }, - "displaynameHasBeenChanged": "", + "displaynameHasBeenChanged": "Görünen ad değiştirildi", "@displaynameHasBeenChanged": { "type": "text", "placeholders": {} @@ -499,52 +499,52 @@ "type": "text", "placeholders": {} }, - "downloadFile": "", + "downloadFile": "Dosyayı indir", "@downloadFile": { "type": "text", "placeholders": {} }, - "editDisplayname": "", + "editDisplayname": "Görünen adı düzenle", "@editDisplayname": { "type": "text", "placeholders": {} }, - "editJitsiInstance": "", + "editJitsiInstance": "Jitsi örneğini düzenle", "@editJitsiInstance": { "type": "text", "placeholders": {} }, - "emoteExists": "", + "emoteExists": "İfade zaten var!", "@emoteExists": { "type": "text", "placeholders": {} }, - "emoteInvalid": "", + "emoteInvalid": "Geçersiz ifade kısa kodu!", "@emoteInvalid": { "type": "text", "placeholders": {} }, - "emoteSettings": "", + "emoteSettings": "İfade Ayarları", "@emoteSettings": { "type": "text", "placeholders": {} }, - "emoteShortcode": "", + "emoteShortcode": "İfade kısa kodu", "@emoteShortcode": { "type": "text", "placeholders": {} }, - "emoteWarnNeedToPick": "", + "emoteWarnNeedToPick": "Bir ifade kısa kodu ve bir resim seçmeniz gerekiyor!", "@emoteWarnNeedToPick": { "type": "text", "placeholders": {} }, - "emptyChat": "", + "emptyChat": "Boş sohbet", "@emptyChat": { "type": "text", "placeholders": {} }, - "enableEncryptionWarning": "", + "enableEncryptionWarning": "Artık şifrelemeyi devre dışı bırakamayacaksınız. Emin misiniz?", "@enableEncryptionWarning": { "type": "text", "placeholders": {} @@ -559,7 +559,7 @@ "type": "text", "placeholders": {} }, - "encryptionNotEnabled": "", + "encryptionNotEnabled": "Şifreleme etkinleştirilmedi", "@encryptionNotEnabled": { "type": "text", "placeholders": {} @@ -579,7 +579,7 @@ "type": "text", "placeholders": {} }, - "enterYourHomeserver": "", + "enterYourHomeserver": "Ana sunucunuzu girin", "@enterYourHomeserver": { "type": "text", "placeholders": {} @@ -599,7 +599,7 @@ "type": "text", "placeholders": {} }, - "forward": "", + "forward": "İlet", "@forward": { "type": "text", "placeholders": {} @@ -609,12 +609,12 @@ "type": "text", "placeholders": {} }, - "fromJoining": "", + "fromJoining": "Katılmadan", "@fromJoining": { "type": "text", "placeholders": {} }, - "fromTheInvitation": "", + "fromTheInvitation": "Davetten", "@fromTheInvitation": { "type": "text", "placeholders": {} @@ -634,19 +634,19 @@ "type": "text", "placeholders": {} }, - "groupIsPublic": "", + "groupIsPublic": "Grup herkese açık", "@groupIsPublic": { "type": "text", "placeholders": {} }, - "groupWith": "", + "groupWith": "{displayname} ile grup", "@groupWith": { "type": "text", "placeholders": { "displayname": {} } }, - "guestsAreForbidden": "", + "guestsAreForbidden": "Misafirlere izin verilmiyor", "@guestsAreForbidden": { "type": "text", "placeholders": {} @@ -656,7 +656,7 @@ "type": "text", "placeholders": {} }, - "hasWithdrawnTheInvitationFor": "", + "hasWithdrawnTheInvitationFor": "{username}, {targetName} için daveti geri çekti", "@hasWithdrawnTheInvitationFor": { "type": "text", "placeholders": { @@ -669,44 +669,44 @@ "type": "text", "placeholders": {} }, - "homeserverIsNotCompatible": "", + "homeserverIsNotCompatible": "Ana sunucu uyumlu değil", "@homeserverIsNotCompatible": { "type": "text", "placeholders": {} }, - "id": "", + "id": "Kimlik", "@id": { "type": "text", "placeholders": {} }, - "identity": "", + "identity": "Kimlik", "@identity": { "type": "text", "placeholders": {} }, - "incorrectPassphraseOrKey": "", + "incorrectPassphraseOrKey": "Yanlış parola veya kurtarma anahtarı", "@incorrectPassphraseOrKey": { "type": "text", "placeholders": {} }, - "inviteContact": "", + "inviteContact": "Kişi davet et", "@inviteContact": { "type": "text", "placeholders": {} }, - "inviteContactToGroup": "", + "inviteContactToGroup": "Kişiyi {groupName} grubuna davet et", "@inviteContactToGroup": { "type": "text", "placeholders": { "groupName": {} } }, - "invited": "", + "invited": "Davet edildi", "@invited": { "type": "text", "placeholders": {} }, - "invitedUser": "", + "invitedUser": "{username}, {targetName} kişisini davet etti", "@invitedUser": { "type": "text", "placeholders": { @@ -719,7 +719,7 @@ "type": "text", "placeholders": {} }, - "inviteText": "", + "inviteText": "{username} sizi FluffyChat'e davet etti. \n1. FluffyChat kurun: https://fluffychat.im \n2. Kaydolun veya giriş yapın \n3. Davet bağlantısını açın: {link}", "@inviteText": { "type": "text", "placeholders": { @@ -727,7 +727,7 @@ "link": {} } }, - "isDeviceKeyCorrect": "", + "isDeviceKeyCorrect": "Aşağıdaki cihaz anahtarı doğru mu?", "@isDeviceKeyCorrect": { "type": "text", "placeholders": {} @@ -744,17 +744,17 @@ "username": {} } }, - "keysCached": "", + "keysCached": "Anahtarlar önbelleğe alındı", "@keysCached": { "type": "text", "placeholders": {} }, - "keysMissing": "", + "keysMissing": "Anahtarlar eksik", "@keysMissing": { "type": "text", "placeholders": {} }, - "kicked": "", + "kicked": "{username}, {targetName} kişisini attı", "@kicked": { "type": "text", "placeholders": { @@ -762,7 +762,7 @@ "targetName": {} } }, - "kickedAndBanned": "", + "kickedAndBanned": "{username}, {targetName} kişisini attı ve engelledi", "@kickedAndBanned": { "type": "text", "placeholders": { @@ -770,19 +770,19 @@ "targetName": {} } }, - "kickFromChat": "", + "kickFromChat": "Sohbetten at", "@kickFromChat": { "type": "text", "placeholders": {} }, - "lastActiveAgo": "", + "lastActiveAgo": "Son görülen: {localizedTimeShort}", "@lastActiveAgo": { "type": "text", "placeholders": { "localizedTimeShort": {} } }, - "lastSeenIp": "", + "lastSeenIp": "Son görülen IP", "@lastSeenIp": { "type": "text", "placeholders": {} @@ -797,7 +797,7 @@ "type": "text", "placeholders": {} }, - "leftTheChat": "", + "leftTheChat": "Sohbetten ayrıldı", "@leftTheChat": { "type": "text", "placeholders": {} @@ -812,7 +812,7 @@ "type": "text", "placeholders": {} }, - "loadCountMoreParticipants": "", + "loadCountMoreParticipants": "{count} katılımcı daha yükle", "@loadCountMoreParticipants": { "type": "text", "placeholders": { @@ -834,7 +834,7 @@ "type": "text", "placeholders": {} }, - "logInTo": "", + "logInTo": "{homeserver} üzerinde oturum aç", "@logInTo": { "type": "text", "placeholders": { @@ -846,17 +846,17 @@ "type": "text", "placeholders": {} }, - "makeAModerator": "", + "makeAModerator": "Moderatör yap", "@makeAModerator": { "type": "text", "placeholders": {} }, - "makeAnAdmin": "", + "makeAnAdmin": "Yönetici yap", "@makeAnAdmin": { "type": "text", "placeholders": {} }, - "makeSureTheIdentifierIsValid": "", + "makeSureTheIdentifierIsValid": "Tanımlayıcının geçerli olduğundan emin olun", "@makeSureTheIdentifierIsValid": { "type": "text", "placeholders": {} @@ -866,7 +866,7 @@ "type": "text", "placeholders": {} }, - "moderator": "", + "moderator": "Moderatör", "@moderator": { "type": "text", "placeholders": {} @@ -876,94 +876,94 @@ "type": "text", "placeholders": {} }, - "muteChat": "", + "muteChat": "Sohbeti sessize al", "@muteChat": { "type": "text", "placeholders": {} }, - "needPantalaimonWarning": "", + "needPantalaimonWarning": "Uçtan uca şifreleme kullanmak için şimdilik Pantalaimon'a ihtiyacınız olduğunu lütfen unutmayın.", "@needPantalaimonWarning": { "type": "text", "placeholders": {} }, - "newMessageInFluffyChat": "", + "newMessageInFluffyChat": "FluffyChat'te yeni mesaj", "@newMessageInFluffyChat": { "type": "text", "placeholders": {} }, - "newPrivateChat": "", + "newPrivateChat": "Yeni özel sohbet", "@newPrivateChat": { "type": "text", "placeholders": {} }, - "newVerificationRequest": "", + "newVerificationRequest": "Yeni doğrulama isteği!", "@newVerificationRequest": { "type": "text", "placeholders": {} }, - "noCrossSignBootstrap": "", + "noCrossSignBootstrap": "FluffyChat şu anda çapraz imzalamanın etkinleştirilmesini desteklemiyor. Lütfen Riot içinden etkinleştirin.", "@noCrossSignBootstrap": { "type": "text", "placeholders": {} }, - "noEmotesFound": "", + "noEmotesFound": "İfade bulunamadı. 😕", "@noEmotesFound": { "type": "text", "placeholders": {} }, - "noGoogleServicesWarning": "", + "noGoogleServicesWarning": "Görünüşe göre telefonunuzda Google hizmetleri yok. Bu, mahremiyetiniz için iyi bir karar! FluffyChat'te anlık bildirimler almak için microG kullanmanızı tavsiye ediyoruz: https://microg.org/", "@noGoogleServicesWarning": { "type": "text", "placeholders": {} }, - "noMegolmBootstrap": "", + "noMegolmBootstrap": "FluffyChat şu anda çevrim içi anahtar yedeklemenin etkinleştirilmesini desteklemiyor. Lütfen Riot içinden etkinleştirin.", "@noMegolmBootstrap": { "type": "text", "placeholders": {} }, - "none": "", + "none": "Yok", "@none": { "type": "text", "placeholders": {} }, - "noPermission": "", + "noPermission": "İzin yok", "@noPermission": { "type": "text", "placeholders": {} }, - "noRoomsFound": "", + "noRoomsFound": "Oda bulunamadı...", "@noRoomsFound": { "type": "text", "placeholders": {} }, - "notSupportedInWeb": "", + "notSupportedInWeb": "Web'de desteklenmiyor", "@notSupportedInWeb": { "type": "text", "placeholders": {} }, - "numberSelected": "", + "numberSelected": "{number} seçildi", "@numberSelected": { "type": "text", "placeholders": { "number": {} } }, - "ok": "", + "ok": "tamam", "@ok": { "type": "text", "placeholders": {} }, - "onlineKeyBackupDisabled": "", + "onlineKeyBackupDisabled": "Çevrim içi anahtar yedekleme devre dışı bırakıldı", "@onlineKeyBackupDisabled": { "type": "text", "placeholders": {} }, - "onlineKeyBackupEnabled": "", + "onlineKeyBackupEnabled": "Çevrim içi anahtar yedekleme etkinleştirildi", "@onlineKeyBackupEnabled": { "type": "text", "placeholders": {} }, - "oopsSomethingWentWrong": "", + "oopsSomethingWentWrong": "Tüh, bir şeyler yanlış gitti...", "@oopsSomethingWentWrong": { "type": "text", "placeholders": {} @@ -983,12 +983,12 @@ "type": "text", "placeholders": {} }, - "participatingUserDevices": "", + "participatingUserDevices": "Katılan kullanıcı cihazları", "@participatingUserDevices": { "type": "text", "placeholders": {} }, - "passphraseOrKey": "", + "passphraseOrKey": "parola veya kurtarma anahtarı", "@passphraseOrKey": { "type": "text", "placeholders": {} @@ -998,12 +998,12 @@ "type": "text", "placeholders": {} }, - "pickImage": "", + "pickImage": "Resim seç", "@pickImage": { "type": "text", "placeholders": {} }, - "play": "", + "play": "{fileName} dosyasını oynat", "@play": { "type": "text", "placeholders": { @@ -1015,7 +1015,7 @@ "type": "text", "placeholders": {} }, - "pleaseEnterAMatrixIdentifier": "", + "pleaseEnterAMatrixIdentifier": "Lütfen bir matrix tanımlayıcısı girin", "@pleaseEnterAMatrixIdentifier": { "type": "text", "placeholders": {} @@ -1030,17 +1030,17 @@ "type": "text", "placeholders": {} }, - "publicRooms": "", + "publicRooms": "Herkese Açık Odalar", "@publicRooms": { "type": "text", "placeholders": {} }, - "recording": "", + "recording": "Kaydediliyor", "@recording": { "type": "text", "placeholders": {} }, - "redactedAnEvent": "", + "redactedAnEvent": "{username} bir etkinliği düzenledi", "@redactedAnEvent": { "type": "text", "placeholders": { @@ -1086,7 +1086,7 @@ "type": "text", "placeholders": {} }, - "removeExile": "", + "removeExile": "Engeli kaldır", "@removeExile": { "type": "text", "placeholders": {} @@ -1096,12 +1096,12 @@ "type": "text", "placeholders": {} }, - "renderRichContent": "", + "renderRichContent": "Zengin mesaj içeriğini görüntüle", "@renderRichContent": { "type": "text", "placeholders": {} }, - "reply": "", + "reply": "Yanıtla", "@reply": { "type": "text", "placeholders": {} @@ -1121,7 +1121,7 @@ "type": "text", "placeholders": {} }, - "roomHasBeenUpgraded": "", + "roomHasBeenUpgraded": "Oda yükseltildi", "@roomHasBeenUpgraded": { "type": "text", "placeholders": {} @@ -1174,7 +1174,7 @@ "type": "text", "placeholders": {} }, - "sendImage": "", + "sendImage": "Resim gönder", "@sendImage": { "type": "text", "placeholders": {} @@ -1347,7 +1347,7 @@ "type": "text", "placeholders": {} }, - "unbannedUser": "{username} engeli kaldırdı: {targetName}", + "unbannedUser": "{username}, {targetName} kişisinin engelini kaldırdı", "@unbannedUser": { "type": "text", "placeholders": { @@ -1355,7 +1355,7 @@ "targetName": {} } }, - "unblockDevice": "", + "unblockDevice": "Cihazın Engellemesini Kaldır", "@unblockDevice": { "type": "text", "placeholders": {} @@ -1370,7 +1370,7 @@ "type": "text", "placeholders": {} }, - "unknownEvent": "", + "unknownEvent": "Bilinmeyen etkinlik '{type}'", "@unknownEvent": { "type": "text", "placeholders": { @@ -1449,7 +1449,7 @@ "type": "text", "placeholders": {} }, - "userSentUnknownEvent": "", + "userSentUnknownEvent": "{username} bir {type} etkinliği gönderdi", "@userSentUnknownEvent": { "type": "text", "placeholders": { @@ -1527,7 +1527,7 @@ "type": "text", "placeholders": {} }, - "waitingPartnerNumbers": "", + "waitingPartnerNumbers": "Ortağın numaraları kabul etmesi bekleniyor...", "@waitingPartnerNumbers": { "type": "text", "placeholders": {} @@ -1596,5 +1596,126 @@ "@yourOwnUsername": { "type": "text", "placeholders": {} + }, + "warning": "Uyarı!", + "@warning": { + "type": "text", + "placeholders": {} + }, + "unpin": "Sabitlemeyi kaldır", + "@unpin": { + "type": "text", + "placeholders": {} + }, + "startedACall": "{senderName} bir arama başlattı", + "@startedACall": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "sentCallInformations": "{senderName} arama bilgilerini gönderdi", + "@sentCallInformations": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "sendVideo": "Video gönder", + "@sendVideo": { + "type": "text", + "placeholders": {} + }, + "sendOriginal": "Orijinali gönder", + "@sendOriginal": { + "type": "text", + "placeholders": {} + }, + "sendAudio": "Ses gönder", + "@sendAudio": { + "type": "text", + "placeholders": {} + }, + "changesHaveBeenSaved": "Değişiklikler kaydedildi", + "@changesHaveBeenSaved": { + "type": "text", + "placeholders": {} + }, + "sentryInfo": "Gizliliğiniz hakkında bilgiler: https://sentry.io/security/", + "@sentryInfo": { + "type": "text", + "placeholders": {} + }, + "sendBugReports": "sentry.io ile hata raporları göndermeye izin ver", + "@sendBugReports": { + "type": "text", + "placeholders": {} + }, + "pin": "Sabitle", + "@pin": { + "type": "text", + "placeholders": {} + }, + "passwordHasBeenChanged": "Parola değiştirildi", + "@passwordHasBeenChanged": { + "type": "text", + "placeholders": {} + }, + "privacy": "Gizlilik", + "@privacy": { + "type": "text", + "placeholders": {} + }, + "no": "Hayır", + "@no": { + "type": "text", + "placeholders": {} + }, + "joinRoom": "Odaya katıl", + "@joinRoom": { + "type": "text", + "placeholders": {} + }, + "ignoreListDescription": "Sizi rahatsız eden kullanıcıları yok sayabilirsiniz. Kişisel yok sayma listenizdeki kullanıcılardan herhangi bir mesaj veya oda daveti alamayacaksınız.", + "@ignoreListDescription": { + "type": "text", + "placeholders": {} + }, + "ignoreUsername": "Kullanıcıyı yok say", + "@ignoreUsername": { + "type": "text", + "placeholders": {} + }, + "ignoredUsers": "Yok sayılan kullanıcılar", + "@ignoredUsers": { + "type": "text", + "placeholders": {} + }, + "endedTheCall": "{senderName} aramayı sonlandırdı", + "@endedTheCall": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "enableEmotesGlobally": "İfade paketini küresel olarak etkinleştir", + "@enableEmotesGlobally": { + "type": "text", + "placeholders": {} + }, + "emotePacks": "Oda için ifade paketleri", + "@emotePacks": { + "type": "text", + "placeholders": {} + }, + "deleteAccount": "Hesabı sil", + "@deleteAccount": { + "type": "text", + "placeholders": {} + }, + "deactivateAccountWarning": "Bu, kullanıcı hesabınızı devre dışı bırakacak. Bu geri alınamaz! Emin misiniz?", + "@deactivateAccountWarning": { + "type": "text", + "placeholders": {} } -} \ No newline at end of file +} From e2ca115eca2d9e60f91c3e5d248654201b8fb4ff Mon Sep 17 00:00:00 2001 From: lucanomax Date: Tue, 6 Oct 2020 10:46:52 +0200 Subject: [PATCH 20/24] Added translation using Weblate (Italian) --- lib/l10n/intl_it.arb | 1 + 1 file changed, 1 insertion(+) create mode 100644 lib/l10n/intl_it.arb diff --git a/lib/l10n/intl_it.arb b/lib/l10n/intl_it.arb new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/lib/l10n/intl_it.arb @@ -0,0 +1 @@ +{} From 2a6b5d822e84b1a885898432632b85814e8f8c17 Mon Sep 17 00:00:00 2001 From: Christian Pauly Date: Tue, 6 Oct 2020 16:31:52 +0200 Subject: [PATCH 21/24] fix: Build Linux CI --- .gitignore | 1 + .gitlab-ci.yml | 27 ++++++++++++--------------- snap/snapcraft.yaml | 37 ------------------------------------- 3 files changed, 13 insertions(+), 52 deletions(-) delete mode 100644 snap/snapcraft.yaml diff --git a/.gitignore b/.gitignore index bee4c81..e059815 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,7 @@ *.log *.pyc *.swp +*.snap .DS_Store .atom/ .buildlog/ diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index ea0ca7c..61adb58 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -181,23 +181,20 @@ pages: - public only: - main - -snap:publish-candidate: - stage: publish - image: "cibuilds/snapcraft:core18" + +build_linux: + stage: coverage + script: + - flutter channel dev + - flutter upgrade + - flutter config --enable-linux-desktop + - flutter build linux --release + artifacts: + when: on_success + paths: + - build/linux/release/bundle/ only: - main - script: - - snapcraft - - echo $SNAPCRAFT_LOGIN_FILE | base64 --decode --ignore-garbage > snapcraft.login - - snapcraft login --with snapcraft.login - - snapcraft push --release=candidate *.snap - - snapcraft logout - artifacts: - paths: - - './*.snap' - when: on_success - expire_in: 1 week snap:publish: stage: publish diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml deleted file mode 100644 index f235933..0000000 --- a/snap/snapcraft.yaml +++ /dev/null @@ -1,37 +0,0 @@ -name: fluffychat -version: 0.1.0 -summary: Chat with your friends. -description: Chat with your friends. -icon: assets/logo.png -confinement: strict -base: core18 -grade: stable - -apps: - fluffychat: - command: fluffychat - extensions: [flutter-dev] - plugs: - - network - - home - -parts: - olm: - source: . - source-type: git - plugin: cmake - build-packages: - - build-essential - stage-packages: - - libsqlite3-0 - override-build: | - if cd olm; then git pull; else git clone https://gitlab.matrix.org/matrix-org/olm.git; fi - cd olm - cmake . -Bbuild - cmake --build build - sudo make install - fluffychat: - source: . - plugin: flutter - flutter-target: lib/main.dart - after: [olm] From a9413562fc8234302eda78386ca5e773a4b6437f Mon Sep 17 00:00:00 2001 From: Christian Pauly Date: Tue, 6 Oct 2020 16:37:27 +0200 Subject: [PATCH 22/24] fix: Build Linux CI --- .gitlab-ci.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 61adb58..f281c27 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -184,10 +184,11 @@ pages: build_linux: stage: coverage + image:: registry.gitlab.com/famedly/containers/flutter-dockerimages:dev + dependencies: [] script: - - flutter channel dev - - flutter upgrade - flutter config --enable-linux-desktop + - flutter pub get - flutter build linux --release artifacts: when: on_success From fa39b206e244fbb88d73d6a6daf66a1845d9d4d1 Mon Sep 17 00:00:00 2001 From: Christian Pauly Date: Tue, 6 Oct 2020 14:46:04 +0000 Subject: [PATCH 23/24] Update .gitlab-ci.yml --- .gitlab-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index f281c27..0a3050e 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -184,7 +184,7 @@ pages: build_linux: stage: coverage - image:: registry.gitlab.com/famedly/containers/flutter-dockerimages:dev + image: registry.gitlab.com/famedly/containers/flutter-dockerimages:dev dependencies: [] script: - flutter config --enable-linux-desktop @@ -212,4 +212,4 @@ snap:publish: paths: - './*.snap' when: on_success - expire_in: 1 week \ No newline at end of file + expire_in: 1 week From c247b33e6d40dcd6759ac1e4abfe5478f08052f1 Mon Sep 17 00:00:00 2001 From: Christian Pauly Date: Tue, 6 Oct 2020 15:00:08 +0000 Subject: [PATCH 24/24] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 0a3050e..3cea1e6 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -187,6 +187,8 @@ build_linux: image: registry.gitlab.com/famedly/containers/flutter-dockerimages:dev dependencies: [] script: + - sudo apt update + - sudo apt install clang cmake ninja-build pkg-config libgtk-3-dev libblkid-dev - flutter config --enable-linux-desktop - flutter pub get - flutter build linux --release