diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 8bea1bf25..9586db1be 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -103,7 +103,7 @@ jobs: - run: cat .github/workflows/versions.env >> $GITHUB_ENV - uses: subosito/flutter-action@v2 with: - flutter-version: ${{ env.FLUTTER_VERSION }} + flutter-version: 3.19.6 # Workaround for not working on 3.22 cache: true - name: Install dependencies run: sudo apt-get update && sudo apt-get install curl clang cmake ninja-build pkg-config libgtk-3-dev libblkid-dev liblzma-dev libjsoncpp-dev cmake-data libsecret-1-dev libsecret-1-0 librhash0 libssl-dev -y diff --git a/CHANGELOG.md b/CHANGELOG.md index a87b31034..b1a6a7397 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,44 @@ +## v1.21.0 +FluffyChat v1.21.0 introduces the new search feature which also includes a gallery and files list for each chat. Several performance improvements have been added under the hood, leading to a much nicer user experience. + +- feat: Enable download images on iOS, not only share images (krille-chan) +- feat: Search feature (krille-chan) +- build: Update record package (krille-chan) +- build: Use correct pubspec.yaml format for hosted dependency (krille-chan) +- build: Use matrix sdk main branch (krille-chan) +- chore: Change default timeout to 30 min (krille-chan) +- chore: Go back to pub.dev matrix sdk (Krille) +- chore: Hotfix create missing objectbox (Krille) +- chore: Increase default network request timeout (Krille) +- chore: Make bottomnavbar labels always visible (krille-chan) +- chore: Nicer message animation (krille-chan) +- chore: Only load last event sender if necessary (Krille) +- chore: Set a maxsize for textfields (Krille) +- chore: upgrade flutter to 3.22.0 (lauren n. liberda) +- chore: upgrade flutter to 3.22.1 (lauren n. liberda) +- ci: run `flutter gen-l10n` on code_tests (lauren n. liberda) +- design: Improve design of Voice Messages and add 1.25 as speed (Krille) +- fastlane: i18n ru (Yurt Page) +- fastlane: improve full_description.txt (Yurt Page) +- fix: Broken localization with empty strings in it (krille-chan) +- fix: FakeMatrixApi check (krille-chan) +- fix: mxc reactions not rendered correctly (krille-chan) +- fix: Stickers from gboard have black background (Krille) +- fix: voip code breaking from 0.28 (td) +- refactor: Delete database file on failed app start (krille-chan) +- refactor: Display better command hints (Krille) +- refactor: Improve performance of chat list (krille-chan) +- refactor: Precache theme and directchatmatrixid to improve performance in chat list item (krille-chan) +- refactor: Update to Matrix Dart SDK 0.29.9 (Krille) +- Translated using Weblate (Croatian) (Milo Ivir) +- Translated using Weblate (Czech) (Jozef Mlich) +- Translated using Weblate (Georgian) (Nicholas Winterhalter) +- Translated using Weblate (German) (Gian Klug) +- Translated using Weblate (Korean) (kdh8219) +- Translated using Weblate (Latvian) (Edgars Andersons) +- Translated using Weblate (Norwegian Bokmål) (sunniva) +- Translated using Weblate (Turkish) (Oğuz Ersen) + ## v1.20.0 Design improvements and new advanced UI to manage rooms. diff --git a/assets/l10n/intl_en.arb b/assets/l10n/intl_en.arb index 28a92926b..fc9c93e98 100644 --- a/assets/l10n/intl_en.arb +++ b/assets/l10n/intl_en.arb @@ -4030,5 +4030,7 @@ "@thereAreCountUsersBlocked": { "type": "text", "count": {} - } + }, + "restricted": "Restricted", + "knockRestricted": "Knock restricted" } \ No newline at end of file diff --git a/devtools_options.yaml b/devtools_options.yaml new file mode 100644 index 000000000..fa0b357c4 --- /dev/null +++ b/devtools_options.yaml @@ -0,0 +1,3 @@ +description: This file stores settings for Dart & Flutter DevTools. +documentation: https://docs.flutter.dev/tools/devtools/extensions#configure-extension-enablement-states +extensions: diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index 20a12af44..4d1ab7555 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -197,6 +197,7 @@ 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, F9C8EE392B9AB471149C306E /* [CP] Embed Pods Frameworks */, + 064CBD7CE0D4CD6850C6880A /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -288,6 +289,23 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ + 064CBD7CE0D4CD6850C6880A /* [CP] Copy Pods Resources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Copy Pods Resources"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources.sh\"\n"; + showEnvVarsInLog = 0; + }; 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; diff --git a/lib/pages/chat/chat.dart b/lib/pages/chat/chat.dart index 971383fc5..6d018bbf6 100644 --- a/lib/pages/chat/chat.dart +++ b/lib/pages/chat/chat.dart @@ -85,7 +85,7 @@ class ChatPage extends StatelessWidget { } return ChatPageWithRoom( - key: Key('chat_page_$roomId'), + key: Key('chat_page_${roomId}_$eventId'), room: room, shareText: shareText, eventId: eventId, @@ -360,16 +360,19 @@ class ChatController extends State } void _tryLoadTimeline() async { - readMarkerEventId = widget.eventId; - loadTimelineFuture = _getTimeline(eventContextId: readMarkerEventId); + final initialEventId = widget.eventId; + loadTimelineFuture = _getTimeline(); try { await loadTimelineFuture; + if (initialEventId != null) scrollToEventId(initialEventId); + final fullyRead = room.fullyRead; if (fullyRead.isEmpty) { setReadMarker(); return; } - if (timeline!.events.any((event) => event.eventId == fullyRead)) { + if (timeline?.events.any((event) => event.eventId == fullyRead) ?? + false) { Logs().v('Scroll up to visible event', fullyRead); setReadMarker(); return; diff --git a/lib/pages/chat/events/message.dart b/lib/pages/chat/events/message.dart index 15ae96ee9..dc129a192 100644 --- a/lib/pages/chat/events/message.dart +++ b/lib/pages/chat/events/message.dart @@ -107,7 +107,8 @@ class Message extends StatelessWidget { final client = Matrix.of(context).client; final ownMessage = event.senderId == client.userID; final alignment = ownMessage ? Alignment.topRight : Alignment.topLeft; - var color = Theme.of(context).colorScheme.surfaceContainerHighest; + // ignore: deprecated_member_use + var color = Theme.of(context).colorScheme.surfaceVariant; final displayTime = event.type == EventTypes.RoomCreate || nextEvent == null || !event.originServerTs.sameEnvironment(nextEvent!.originServerTs); diff --git a/lib/pages/chat/typing_indicators.dart b/lib/pages/chat/typing_indicators.dart index 0eb2c0803..47079d4c3 100644 --- a/lib/pages/chat/typing_indicators.dart +++ b/lib/pages/chat/typing_indicators.dart @@ -14,6 +14,8 @@ class TypingIndicators extends StatelessWidget { @override Widget build(BuildContext context) { + const avatarSize = Avatar.defaultSize / 2; + return StreamBuilder( stream: controller.room.client.onSync.stream.where( (syncUpdate) => @@ -24,7 +26,7 @@ class TypingIndicators extends StatelessWidget { builder: (context, _) { final typingUsers = controller.room.typingUsers ..removeWhere((u) => u.stateKey == Matrix.of(context).client.userID); - const topPadding = 20.0; + const bottomPadding = 4.0; return Container( width: double.infinity, @@ -32,8 +34,7 @@ class TypingIndicators extends StatelessWidget { child: AnimatedContainer( constraints: const BoxConstraints(maxWidth: FluffyThemes.columnWidth * 2.5), - height: - typingUsers.isEmpty ? 0 : Avatar.defaultSize + bottomPadding, + height: typingUsers.isEmpty ? 0 : avatarSize + bottomPadding, duration: FluffyThemes.animationDuration, curve: FluffyThemes.animationCurve, alignment: controller.timeline!.events.isNotEmpty && @@ -50,14 +51,13 @@ class TypingIndicators extends StatelessWidget { child: Row( children: [ SizedBox( - height: Avatar.defaultSize, - width: typingUsers.length < 2 - ? Avatar.defaultSize - : Avatar.defaultSize + 16, + height: avatarSize, + width: typingUsers.length < 2 ? avatarSize : avatarSize + 16, child: Stack( children: [ if (typingUsers.isNotEmpty) Avatar( + size: avatarSize, mxContent: typingUsers.first.avatarUrl, name: typingUsers.first.calcDisplayname(), ), @@ -65,6 +65,7 @@ class TypingIndicators extends StatelessWidget { Padding( padding: const EdgeInsets.only(left: 16), child: Avatar( + size: avatarSize, mxContent: typingUsers.length == 2 ? typingUsers.last.avatarUrl : null, @@ -77,21 +78,16 @@ class TypingIndicators extends StatelessWidget { ), ), const SizedBox(width: 8), - Padding( - padding: const EdgeInsets.only(top: topPadding), - child: Material( - color: - Theme.of(context).colorScheme.surfaceContainerHighest, - borderRadius: const BorderRadius.only( - topLeft: Radius.circular(2), - topRight: Radius.circular(AppConfig.borderRadius), - bottomLeft: Radius.circular(AppConfig.borderRadius), - bottomRight: Radius.circular(AppConfig.borderRadius), - ), - child: Padding( - padding: const EdgeInsets.symmetric(horizontal: 8), - child: typingUsers.isEmpty ? null : const _TypingDots(), - ), + Material( + color: + // ignore: deprecated_member_use + Theme.of(context).colorScheme.surfaceVariant, + borderRadius: const BorderRadius.all( + Radius.circular(AppConfig.borderRadius), + ), + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 8), + child: typingUsers.isEmpty ? null : const _TypingDots(), ), ), ], diff --git a/lib/pages/chat_access_settings/chat_access_settings_page.dart b/lib/pages/chat_access_settings/chat_access_settings_page.dart index 48d2d950c..7de6f3793 100644 --- a/lib/pages/chat_access_settings/chat_access_settings_page.dart +++ b/lib/pages/chat_access_settings/chat_access_settings_page.dart @@ -266,6 +266,10 @@ extension JoinRulesDisplayString on JoinRules { return l10n.usersMustKnock; case JoinRules.private: return l10n.noOneCanJoin; + case JoinRules.restricted: + return l10n.restricted; + case JoinRules.knockRestricted: + return l10n.knockRestricted; } } } diff --git a/lib/pages/chat_list/chat_list_item.dart b/lib/pages/chat_list/chat_list_item.dart index 48ecc80f6..76c75e83b 100644 --- a/lib/pages/chat_list/chat_list_item.dart +++ b/lib/pages/chat_list/chat_list_item.dart @@ -94,6 +94,11 @@ class ChatListItem extends StatelessWidget { if (filter != null && !displayname.toLowerCase().contains(filter)) { return const SizedBox.shrink(); } + + final needLastEventSender = lastEvent == null + ? false + : room.getState(EventTypes.RoomMember, lastEvent.senderId) == null; + return Padding( padding: const EdgeInsets.symmetric( horizontal: 8, diff --git a/lib/pages/chat_search/chat_search_page.dart b/lib/pages/chat_search/chat_search_page.dart index c2b08d34d..40109d0b6 100644 --- a/lib/pages/chat_search/chat_search_page.dart +++ b/lib/pages/chat_search/chat_search_page.dart @@ -70,6 +70,16 @@ class ChatSearchController extends State result.$2, ), ) + // Deduplication workaround for + // https://github.com/famedly/matrix-dart-sdk/issues/1831 + .map( + (result) => ( + { + for (final event in result.$1) event.eventId: event, + }.values.toList(), + result.$2, + ), + ) .asBroadcastStream(); }); } @@ -100,6 +110,16 @@ class ChatSearchController extends State result.$2, ), ) + // Deduplication workaround for + // https://github.com/famedly/matrix-dart-sdk/issues/1831 + .map( + (result) => ( + { + for (final event in result.$1) event.eventId: event, + }.values.toList(), + result.$2, + ), + ) .asBroadcastStream(); }); } @@ -130,6 +150,16 @@ class ChatSearchController extends State result.$2, ), ) + // Deduplication workaround for + // https://github.com/famedly/matrix-dart-sdk/issues/1831 + .map( + (result) => ( + { + for (final event in result.$1) event.eventId: event, + }.values.toList(), + result.$2, + ), + ) .asBroadcastStream(); }); } diff --git a/lib/pages/homeserver_picker/homeserver_app_bar.dart b/lib/pages/homeserver_picker/homeserver_app_bar.dart index f122a1b14..d041c8852 100644 --- a/lib/pages/homeserver_picker/homeserver_app_bar.dart +++ b/lib/pages/homeserver_picker/homeserver_app_bar.dart @@ -92,7 +92,8 @@ class HomeserverAppBar extends StatelessWidget { : null, fillColor: FluffyThemes.isColumnMode(context) ? Theme.of(context).colorScheme.surface - : Theme.of(context).colorScheme.surfaceContainerHighest, + // ignore: deprecated_member_use + : Theme.of(context).colorScheme.surfaceVariant, prefixText: '${L10n.of(context)!.homeserver}: ', hintText: L10n.of(context)!.enterYourHomeserver, suffixIcon: const Icon(Icons.search), diff --git a/lib/pages/settings_ignore_list/settings_ignore_list_view.dart b/lib/pages/settings_ignore_list/settings_ignore_list_view.dart index 403440f82..785249c69 100644 --- a/lib/pages/settings_ignore_list/settings_ignore_list_view.dart +++ b/lib/pages/settings_ignore_list/settings_ignore_list_view.dart @@ -61,8 +61,14 @@ class SettingsIgnoreListView extends StatelessWidget { ), Expanded( child: StreamBuilder( - stream: client.onAccountData.stream - .where((a) => a.type == 'm.ignored_user_list'), + stream: client.onSync.stream.where( + (syncUpdate) => + syncUpdate.accountData?.any( + (accountData) => + accountData.type == 'm.ignored_user_list', + ) ?? + false, + ), builder: (context, snapshot) { return ListView.builder( itemCount: client.ignoredUsers.length, diff --git a/lib/pages/settings_notifications/settings_notifications_view.dart b/lib/pages/settings_notifications/settings_notifications_view.dart index 978858a02..6c1d45cc5 100644 --- a/lib/pages/settings_notifications/settings_notifications_view.dart +++ b/lib/pages/settings_notifications/settings_notifications_view.dart @@ -22,11 +22,13 @@ class SettingsNotificationsView extends StatelessWidget { ), body: MaxWidthBody( child: StreamBuilder( - stream: Matrix.of(context) - .client - .onAccountData - .stream - .where((event) => event.type == 'm.push_rules'), + stream: Matrix.of(context).client.onSync.stream.where( + (syncUpdate) => + syncUpdate.accountData?.any( + (accountData) => accountData.type == 'm.push_rules', + ) ?? + false, + ), builder: (BuildContext context, _) { return Column( children: [ diff --git a/lib/pages/settings_style/settings_style_view.dart b/lib/pages/settings_style/settings_style_view.dart index 0286ff700..86f48fe87 100644 --- a/lib/pages/settings_style/settings_style_view.dart +++ b/lib/pages/settings_style/settings_style_view.dart @@ -205,10 +205,14 @@ class SettingsStyleView extends StatelessWidget { ), ), StreamBuilder( - stream: client.onAccountData.stream.where( - (data) => - data.type == - ApplicationAccountConfigExtension.accountDataKey, + stream: client.onSync.stream.where( + (syncUpdate) => + syncUpdate.accountData?.any( + (accountData) => + accountData.type == + ApplicationAccountConfigExtension.accountDataKey, + ) ?? + false, ), builder: (context, snapshot) { final accountConfig = client.applicationAccountConfig; diff --git a/lib/pages/user_bottom_sheet/user_bottom_sheet_view.dart b/lib/pages/user_bottom_sheet/user_bottom_sheet_view.dart index 982a3e26b..b3e861b79 100644 --- a/lib/pages/user_bottom_sheet/user_bottom_sheet_view.dart +++ b/lib/pages/user_bottom_sheet/user_bottom_sheet_view.dart @@ -119,7 +119,8 @@ class UserBottomSheetView extends StatelessWidget { padding: const EdgeInsets.all(12.0), child: Material( color: - Theme.of(context).colorScheme.surfaceContainerHighest, + // ignore: deprecated_member_use + Theme.of(context).colorScheme.surfaceVariant, borderRadius: BorderRadius.circular(AppConfig.borderRadius), child: ListTile( diff --git a/needed-translations.txt b/needed-translations.txt index 83e2c8509..7c1f565a0 100644 --- a/needed-translations.txt +++ b/needed-translations.txt @@ -860,7 +860,9 @@ "capacitySetTooLow", "roomCapacityExplanation", "enterNumber", - "buildTranslation" + "buildTranslation", + "restricted", + "knockRestricted" ], "be": [ @@ -2351,7 +2353,9 @@ "enterNumber", "buildTranslation", "noDatabaseEncryption", - "thereAreCountUsersBlocked" + "thereAreCountUsersBlocked", + "restricted", + "knockRestricted" ], "bn": [ @@ -3838,7 +3842,9 @@ "enterNumber", "buildTranslation", "noDatabaseEncryption", - "thereAreCountUsersBlocked" + "thereAreCountUsersBlocked", + "restricted", + "knockRestricted" ], "bo": [ @@ -5329,7 +5335,9 @@ "enterNumber", "buildTranslation", "noDatabaseEncryption", - "thereAreCountUsersBlocked" + "thereAreCountUsersBlocked", + "restricted", + "knockRestricted" ], "ca": [ @@ -6222,7 +6230,9 @@ "enterNumber", "buildTranslation", "noDatabaseEncryption", - "thereAreCountUsersBlocked" + "thereAreCountUsersBlocked", + "restricted", + "knockRestricted" ], "cs": [ @@ -7197,7 +7207,9 @@ "enterNumber", "buildTranslation", "noDatabaseEncryption", - "thereAreCountUsersBlocked" + "thereAreCountUsersBlocked", + "restricted", + "knockRestricted" ], "de": [ @@ -8061,7 +8073,9 @@ "capacitySetTooLow", "roomCapacityExplanation", "enterNumber", - "buildTranslation" + "buildTranslation", + "restricted", + "knockRestricted" ], "el": [ @@ -9503,7 +9517,9 @@ "enterNumber", "buildTranslation", "noDatabaseEncryption", - "thereAreCountUsersBlocked" + "thereAreCountUsersBlocked", + "restricted", + "knockRestricted" ], "eo": [ @@ -10643,7 +10659,9 @@ "enterNumber", "buildTranslation", "noDatabaseEncryption", - "thereAreCountUsersBlocked" + "thereAreCountUsersBlocked", + "restricted", + "knockRestricted" ], "es": [ @@ -10678,7 +10696,9 @@ "files", "addSpaceToSpaceDescription", "noDatabaseEncryption", - "thereAreCountUsersBlocked" + "thereAreCountUsersBlocked", + "restricted", + "knockRestricted" ], "et": [ @@ -11542,7 +11562,9 @@ "capacitySetTooLow", "roomCapacityExplanation", "enterNumber", - "buildTranslation" + "buildTranslation", + "restricted", + "knockRestricted" ], "eu": [ @@ -12406,7 +12428,9 @@ "capacitySetTooLow", "roomCapacityExplanation", "enterNumber", - "buildTranslation" + "buildTranslation", + "restricted", + "knockRestricted" ], "fa": [ @@ -13403,7 +13427,9 @@ "enterNumber", "buildTranslation", "noDatabaseEncryption", - "thereAreCountUsersBlocked" + "thereAreCountUsersBlocked", + "restricted", + "knockRestricted" ], "fi": [ @@ -14364,7 +14390,9 @@ "enterNumber", "buildTranslation", "noDatabaseEncryption", - "thereAreCountUsersBlocked" + "thereAreCountUsersBlocked", + "restricted", + "knockRestricted" ], "fil": [ @@ -15681,7 +15709,9 @@ "enterNumber", "buildTranslation", "noDatabaseEncryption", - "thereAreCountUsersBlocked" + "thereAreCountUsersBlocked", + "restricted", + "knockRestricted" ], "fr": [ @@ -16677,7 +16707,9 @@ "enterNumber", "buildTranslation", "noDatabaseEncryption", - "thereAreCountUsersBlocked" + "thereAreCountUsersBlocked", + "restricted", + "knockRestricted" ], "ga": [ @@ -17802,7 +17834,9 @@ "enterNumber", "buildTranslation", "noDatabaseEncryption", - "thereAreCountUsersBlocked" + "thereAreCountUsersBlocked", + "restricted", + "knockRestricted" ], "gl": [ @@ -18666,7 +18700,9 @@ "capacitySetTooLow", "roomCapacityExplanation", "enterNumber", - "buildTranslation" + "buildTranslation", + "restricted", + "knockRestricted" ], "he": [ @@ -19910,7 +19946,9 @@ "enterNumber", "buildTranslation", "noDatabaseEncryption", - "thereAreCountUsersBlocked" + "thereAreCountUsersBlocked", + "restricted", + "knockRestricted" ], "hi": [ @@ -21394,7 +21432,9 @@ "enterNumber", "buildTranslation", "noDatabaseEncryption", - "thereAreCountUsersBlocked" + "thereAreCountUsersBlocked", + "restricted", + "knockRestricted" ], "hr": [ @@ -22331,7 +22371,9 @@ "enterNumber", "buildTranslation", "noDatabaseEncryption", - "thereAreCountUsersBlocked" + "thereAreCountUsersBlocked", + "restricted", + "knockRestricted" ], "hu": [ @@ -23205,7 +23247,9 @@ "capacitySetTooLow", "roomCapacityExplanation", "enterNumber", - "buildTranslation" + "buildTranslation", + "restricted", + "knockRestricted" ], "ia": [ @@ -24682,7 +24726,9 @@ "enterNumber", "buildTranslation", "noDatabaseEncryption", - "thereAreCountUsersBlocked" + "thereAreCountUsersBlocked", + "restricted", + "knockRestricted" ], "id": [ @@ -25546,7 +25592,9 @@ "capacitySetTooLow", "roomCapacityExplanation", "enterNumber", - "buildTranslation" + "buildTranslation", + "restricted", + "knockRestricted" ], "ie": [ @@ -26794,7 +26842,9 @@ "enterNumber", "buildTranslation", "noDatabaseEncryption", - "thereAreCountUsersBlocked" + "thereAreCountUsersBlocked", + "restricted", + "knockRestricted" ], "it": [ @@ -27709,7 +27759,9 @@ "enterNumber", "buildTranslation", "noDatabaseEncryption", - "thereAreCountUsersBlocked" + "thereAreCountUsersBlocked", + "restricted", + "knockRestricted" ], "ja": [ @@ -28735,7 +28787,9 @@ "enterNumber", "buildTranslation", "noDatabaseEncryption", - "thereAreCountUsersBlocked" + "thereAreCountUsersBlocked", + "restricted", + "knockRestricted" ], "ka": [ @@ -30080,7 +30134,9 @@ "enterNumber", "buildTranslation", "noDatabaseEncryption", - "thereAreCountUsersBlocked" + "thereAreCountUsersBlocked", + "restricted", + "knockRestricted" ], "ko": [ @@ -30944,7 +31000,9 @@ "capacitySetTooLow", "roomCapacityExplanation", "enterNumber", - "buildTranslation" + "buildTranslation", + "restricted", + "knockRestricted" ], "lt": [ @@ -31970,7 +32028,9 @@ "enterNumber", "buildTranslation", "noDatabaseEncryption", - "thereAreCountUsersBlocked" + "thereAreCountUsersBlocked", + "restricted", + "knockRestricted" ], "lv": [ @@ -32836,7 +32896,9 @@ "capacitySetTooLow", "roomCapacityExplanation", "enterNumber", - "buildTranslation" + "buildTranslation", + "restricted", + "knockRestricted" ], "nb": [ @@ -34026,7 +34088,9 @@ "enterNumber", "buildTranslation", "noDatabaseEncryption", - "thereAreCountUsersBlocked" + "thereAreCountUsersBlocked", + "restricted", + "knockRestricted" ], "nl": [ @@ -34980,7 +35044,9 @@ "enterNumber", "buildTranslation", "noDatabaseEncryption", - "thereAreCountUsersBlocked" + "thereAreCountUsersBlocked", + "restricted", + "knockRestricted" ], "pl": [ @@ -35943,7 +36009,9 @@ "enterNumber", "buildTranslation", "noDatabaseEncryption", - "thereAreCountUsersBlocked" + "thereAreCountUsersBlocked", + "restricted", + "knockRestricted" ], "pt": [ @@ -37412,7 +37480,9 @@ "enterNumber", "buildTranslation", "noDatabaseEncryption", - "thereAreCountUsersBlocked" + "thereAreCountUsersBlocked", + "restricted", + "knockRestricted" ], "pt_BR": [ @@ -38276,7 +38346,9 @@ "capacitySetTooLow", "roomCapacityExplanation", "enterNumber", - "buildTranslation" + "buildTranslation", + "restricted", + "knockRestricted" ], "pt_PT": [ @@ -39467,7 +39539,9 @@ "enterNumber", "buildTranslation", "noDatabaseEncryption", - "thereAreCountUsersBlocked" + "thereAreCountUsersBlocked", + "restricted", + "knockRestricted" ], "ro": [ @@ -40465,7 +40539,9 @@ "enterNumber", "buildTranslation", "noDatabaseEncryption", - "thereAreCountUsersBlocked" + "thereAreCountUsersBlocked", + "restricted", + "knockRestricted" ], "ru": [ @@ -41329,7 +41405,9 @@ "capacitySetTooLow", "roomCapacityExplanation", "enterNumber", - "buildTranslation" + "buildTranslation", + "restricted", + "knockRestricted" ], "sk": [ @@ -42586,7 +42664,9 @@ "enterNumber", "buildTranslation", "noDatabaseEncryption", - "thereAreCountUsersBlocked" + "thereAreCountUsersBlocked", + "restricted", + "knockRestricted" ], "sl": [ @@ -43973,7 +44053,9 @@ "enterNumber", "buildTranslation", "noDatabaseEncryption", - "thereAreCountUsersBlocked" + "thereAreCountUsersBlocked", + "restricted", + "knockRestricted" ], "sr": [ @@ -45134,7 +45216,9 @@ "enterNumber", "buildTranslation", "noDatabaseEncryption", - "thereAreCountUsersBlocked" + "thereAreCountUsersBlocked", + "restricted", + "knockRestricted" ], "sv": [ @@ -46029,7 +46113,9 @@ "enterNumber", "buildTranslation", "noDatabaseEncryption", - "thereAreCountUsersBlocked" + "thereAreCountUsersBlocked", + "restricted", + "knockRestricted" ], "ta": [ @@ -47517,7 +47603,9 @@ "enterNumber", "buildTranslation", "noDatabaseEncryption", - "thereAreCountUsersBlocked" + "thereAreCountUsersBlocked", + "restricted", + "knockRestricted" ], "th": [ @@ -48959,7 +49047,9 @@ "enterNumber", "buildTranslation", "noDatabaseEncryption", - "thereAreCountUsersBlocked" + "thereAreCountUsersBlocked", + "restricted", + "knockRestricted" ], "tr": [ @@ -49823,7 +49913,9 @@ "capacitySetTooLow", "roomCapacityExplanation", "enterNumber", - "buildTranslation" + "buildTranslation", + "restricted", + "knockRestricted" ], "uk": [ @@ -50718,7 +50810,9 @@ "enterNumber", "buildTranslation", "noDatabaseEncryption", - "thereAreCountUsersBlocked" + "thereAreCountUsersBlocked", + "restricted", + "knockRestricted" ], "vi": [ @@ -52135,7 +52229,9 @@ "enterNumber", "buildTranslation", "noDatabaseEncryption", - "thereAreCountUsersBlocked" + "thereAreCountUsersBlocked", + "restricted", + "knockRestricted" ], "zh": [ @@ -52999,7 +53095,9 @@ "capacitySetTooLow", "roomCapacityExplanation", "enterNumber", - "buildTranslation" + "buildTranslation", + "restricted", + "knockRestricted" ], "zh_Hant": [ @@ -54138,6 +54236,8 @@ "enterNumber", "buildTranslation", "noDatabaseEncryption", - "thereAreCountUsersBlocked" + "thereAreCountUsersBlocked", + "restricted", + "knockRestricted" ] } diff --git a/pubspec.lock b/pubspec.lock index 3938691ae..f9da302e6 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -1409,10 +1409,10 @@ packages: dependency: "direct main" description: name: matrix - sha256: b96f16ec227138a61d148f2812c4d558b2930edbb6cd05d03b3a41c4fffd2f47 + sha256: "668ed9b7279ac9c364c687585e606c1122f88d6e2e3410ba781a167b47cd9471" url: "https://pub.dev" source: hosted - version: "0.29.7" + version: "0.29.9" meta: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 6276bf220..aa6dbff32 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -6,7 +6,7 @@ description: Learn a language while texting your friends. # Pangea# publish_to: none # On version bump also increase the build number for F-Droid -version: 1.20.0+3532 +version: 1.21.0+3533 environment: sdk: ">=3.0.0 <4.0.0" @@ -70,7 +70,7 @@ dependencies: keyboard_shortcuts: ^0.1.4 latlong2: ^0.9.1 linkify: ^5.0.0 - matrix: ^0.29.7 + matrix: ^0.29.9 native_imaging: ^0.1.1 package_info_plus: ^6.0.0 pasteboard: ^0.2.0 @@ -200,9 +200,8 @@ dependency_overrides: # Until https://github.com/mogol/flutter_secure_storage/issues/616 is fixed flutter_secure_storage_linux: 1.1.3 geolocator_android: - hosted: - name: geolocator_android - url: https://hanntech-gmbh.gitlab.io/free2pass/flutter-geolocator-floss + hosted: https://hanntech-gmbh.gitlab.io/free2pass/flutter-geolocator-floss + version: ^1.0.1 # waiting for null safety # Upstream pull request: https://github.com/AntoineMarcel/keyboard_shortcuts/pull/13 keyboard_shortcuts: diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml index 86b7eb241..a32ad5704 100644 --- a/snap/snapcraft.yaml +++ b/snap/snapcraft.yaml @@ -64,13 +64,40 @@ parts: stage-snaps: - zenity-integration + flutter-git: + source: https://github.com/flutter/flutter.git + source-tag: 3.19.6 + source-depth: 1 + plugin: nil + override-build: | + mkdir -p $CRAFT_PART_INSTALL/usr/bin + mkdir -p $CRAFT_PART_INSTALL/usr/libexec + cp -r $CRAFT_PART_SRC $CRAFT_PART_INSTALL/usr/libexec/flutter + ln -s $CRAFT_PART_INSTALL/usr/libexec/flutter/bin/flutter $CRAFT_PART_INSTALL/usr/bin/flutter + ln -s $SNAPCRAFT_PART_INSTALL/usr/libexec/flutter/bin/dart $SNAPCRAFT_PART_INSTALL/usr/bin/dart + $CRAFT_PART_INSTALL/usr/bin/flutter doctor + build-packages: + - clang + - cmake + - curl + - libgtk-3-dev + - ninja-build + - unzip + - xz-utils + - zip + override-prime: '' + fluffychat: - plugin: flutter + after: [flutter-git] + plugin: nil source: . override-build: | # Workaround for Flutter build error: rm -rf build - craftctl default + + flutter build linux --release -v + mkdir -p $CRAFT_PART_INSTALL/bin/ + cp -r build/linux/*/release/bundle/* $CRAFT_PART_INSTALL/bin/ build-packages: - libjsoncpp-dev - curl @@ -87,7 +114,7 @@ slots: apps: fluffychat: - command: fluffychat + command: bin/fluffychat extensions: [ gnome ] plugs: - audio-playback