From 12f26af3beecc18a5a094b716a57272f240b7d14 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 12 Aug 2025 05:52:20 +0000 Subject: [PATCH 1/9] build: (deps): bump share_plus from 11.0.0 to 11.1.0 Bumps [share_plus](https://github.com/fluttercommunity/plus_plugins/tree/main/packages/share_plus) from 11.0.0 to 11.1.0. - [Release notes](https://github.com/fluttercommunity/plus_plugins/releases) - [Commits](https://github.com/fluttercommunity/plus_plugins/commits/share_plus-v11.1.0/packages/share_plus) --- updated-dependencies: - dependency-name: share_plus dependency-version: 11.1.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- pubspec.lock | 8 ++++---- pubspec.yaml | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/pubspec.lock b/pubspec.lock index 4fa2798d4..fe8e35de7 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -1680,18 +1680,18 @@ packages: dependency: "direct main" description: name: share_plus - sha256: b2961506569e28948d75ec346c28775bb111986bb69dc6a20754a457e3d97fa0 + sha256: d7dc0630a923883c6328ca31b89aa682bacbf2f8304162d29f7c6aaff03a27a1 url: "https://pub.dev" source: hosted - version: "11.0.0" + version: "11.1.0" share_plus_platform_interface: dependency: transitive description: name: share_plus_platform_interface - sha256: "1032d392bc5d2095a77447a805aa3f804d2ae6a4d5eef5e6ebb3bd94c1bc19ef" + sha256: "88023e53a13429bd65d8e85e11a9b484f49d4c190abbd96c7932b74d6927cc9a" url: "https://pub.dev" source: hosted - version: "6.0.0" + version: "6.1.0" shared_preferences: dependency: "direct main" description: diff --git a/pubspec.yaml b/pubspec.yaml index 28360a08a..e50f1fdb9 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -73,7 +73,7 @@ dependencies: receive_sharing_intent: ^1.8.1 record: ^6.0.0 scroll_to_index: ^3.0.1 - share_plus: ^11.0.0 + share_plus: ^11.1.0 shared_preferences: ^2.2.0 # Pinned because https://github.com/flutter/flutter/issues/118401 slugify: ^2.0.0 sqflite_common_ffi: ^2.3.6 From 182d2429c0725cbe496dae0e913bb90f38a3b743 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 12 Aug 2025 05:52:31 +0000 Subject: [PATCH 2/9] build: (deps): bump package_info_plus from 8.3.0 to 8.3.1 Bumps [package_info_plus](https://github.com/fluttercommunity/plus_plugins/tree/main/packages/package_info_plus) from 8.3.0 to 8.3.1. - [Release notes](https://github.com/fluttercommunity/plus_plugins/releases) - [Commits](https://github.com/fluttercommunity/plus_plugins/commits/package_info_plus-v8.3.1/packages/package_info_plus) --- updated-dependencies: - dependency-name: package_info_plus dependency-version: 8.3.1 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- pubspec.lock | 8 ++++---- pubspec.yaml | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/pubspec.lock b/pubspec.lock index 4fa2798d4..59d85a551 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -1280,18 +1280,18 @@ packages: dependency: "direct main" description: name: package_info_plus - sha256: "7976bfe4c583170d6cdc7077e3237560b364149fcd268b5f53d95a991963b191" + sha256: "16eee997588c60225bda0488b6dcfac69280a6b7a3cf02c741895dd370a02968" url: "https://pub.dev" source: hosted - version: "8.3.0" + version: "8.3.1" package_info_plus_platform_interface: dependency: transitive description: name: package_info_plus_platform_interface - sha256: "6c935fb612dff8e3cc9632c2b301720c77450a126114126ffaafe28d2e87956c" + sha256: "202a487f08836a592a6bd4f901ac69b3a8f146af552bbd14407b6b41e1c3f086" url: "https://pub.dev" source: hosted - version: "3.2.0" + version: "3.2.1" pana: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 28360a08a..115122756 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -61,7 +61,7 @@ dependencies: mime: ^2.0.0 native_imaging: ^0.2.0 opus_caf_converter_dart: ^1.0.1 - package_info_plus: ^8.0.2 + package_info_plus: ^8.3.1 path: ^1.9.0 path_provider: ^2.1.2 permission_handler: ^12.0.1 From 9dae089a4bd3204507345e2a573b2a79e1016b7c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 12 Aug 2025 06:06:21 +0000 Subject: [PATCH 3/9] build: (deps): bump msix from 3.16.10 to 3.16.12 Bumps [msix](https://github.com/YehudaKremer/msix) from 3.16.10 to 3.16.12. - [Release notes](https://github.com/YehudaKremer/msix/releases) - [Changelog](https://github.com/YehudaKremer/msix/blob/main/CHANGELOG.md) - [Commits](https://github.com/YehudaKremer/msix/commits/v3.16.12) --- updated-dependencies: - dependency-name: msix dependency-version: 3.16.12 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- pubspec.lock | 4 ++-- pubspec.yaml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/pubspec.lock b/pubspec.lock index 4fa2798d4..7f0cf4e3d 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -1232,10 +1232,10 @@ packages: dependency: "direct dev" description: name: msix - sha256: bbb9b3ff4a9f8e7e7507b2a22dc0517fd1fe3db44e72de7ab052cb6b362406ee + sha256: f88033fcb9e0dd8de5b18897cbebbd28ea30596810f4a7c86b12b0c03ace87e5 url: "https://pub.dev" source: hosted - version: "3.16.10" + version: "3.16.12" native_imaging: dependency: "direct main" description: diff --git a/pubspec.yaml b/pubspec.yaml index 28360a08a..0d3dd0690 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -98,7 +98,7 @@ dev_dependencies: integration_test: sdk: flutter license_checker: ^1.6.0 - msix: ^3.16.10 + msix: ^3.16.12 translations_cleaner: ^0.0.5 import_sorter: From b3c8c6326da40ac8db264d989d19fae4c4dc3962 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 12 Aug 2025 06:57:35 +0000 Subject: [PATCH 4/9] build: (deps): bump actions/checkout from 4 to 5 Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 5. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/v4...v5) --- updated-dependencies: - dependency-name: actions/checkout dependency-version: '5' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/check_duplicates.yaml | 2 +- .github/workflows/integrate.yaml | 10 +++++----- .github/workflows/main_deploy.yaml | 4 ++-- .github/workflows/release.yaml | 10 +++++----- 4 files changed, 13 insertions(+), 13 deletions(-) diff --git a/.github/workflows/check_duplicates.yaml b/.github/workflows/check_duplicates.yaml index a3ded8d90..cc5975863 100644 --- a/.github/workflows/check_duplicates.yaml +++ b/.github/workflows/check_duplicates.yaml @@ -13,7 +13,7 @@ jobs: number: ${{ github.event.issue.number }} GH_TOKEN: ${{ github.token }} steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - name: Check duplicates run: | issues=$(gh issue list --search '${{ env.title }}' --json number,title,url) diff --git a/.github/workflows/integrate.yaml b/.github/workflows/integrate.yaml index 14be3085d..da67d66da 100644 --- a/.github/workflows/integrate.yaml +++ b/.github/workflows/integrate.yaml @@ -8,7 +8,7 @@ jobs: code_tests: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - run: ./scripts/generate-locale-config.sh - run: git diff --exit-code - run: cat .github/workflows/versions.env >> $GITHUB_ENV @@ -33,7 +33,7 @@ jobs: build_debug_apk: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - run: cat .github/workflows/versions.env >> $GITHUB_ENV - uses: actions/setup-java@v4 with: @@ -50,7 +50,7 @@ jobs: build_debug_web: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - run: cat .github/workflows/versions.env >> $GITHUB_ENV - uses: subosito/flutter-action@v2 with: @@ -69,7 +69,7 @@ jobs: arch: [ x64, arm64 ] runs-on: ${{ matrix.arch == 'arm64' && 'ubuntu-24.04-arm' || 'ubuntu-latest'}} steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - run: cat .github/workflows/versions.env >> $GITHUB_ENV - name: Install dependencies run: sudo apt-get update && sudo apt-get install git wget 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 libwebkit2gtk-4.1-dev -y @@ -84,7 +84,7 @@ jobs: build_debug_ios: runs-on: macos-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - run: cat .github/workflows/versions.env >> $GITHUB_ENV - uses: subosito/flutter-action@v2 with: diff --git a/.github/workflows/main_deploy.yaml b/.github/workflows/main_deploy.yaml index 5915117cd..43da0d782 100644 --- a/.github/workflows/main_deploy.yaml +++ b/.github/workflows/main_deploy.yaml @@ -14,7 +14,7 @@ jobs: deploy_web: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - run: cat .github/workflows/versions.env >> $GITHUB_ENV - uses: subosito/flutter-action@v2 with: @@ -39,7 +39,7 @@ jobs: deploy_playstore_internal: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - run: cat .github/workflows/versions.env >> $GITHUB_ENV - uses: actions/setup-java@v4 with: diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 75c69af8c..ef1878ff6 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -17,7 +17,7 @@ jobs: build_web: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - run: cat .github/workflows/versions.env >> $GITHUB_ENV - uses: subosito/flutter-action@v2 with: @@ -72,7 +72,7 @@ jobs: build_apk: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - run: cat .github/workflows/versions.env >> $GITHUB_ENV - uses: actions/setup-java@v4 with: @@ -111,7 +111,7 @@ jobs: arch: [ x64, arm64 ] runs-on: ${{ matrix.arch == 'arm64' && 'self-hosted' || 'ubuntu-latest'}} steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - run: cat .github/workflows/versions.env >> $GITHUB_ENV - 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 libwebkit2gtk-4.1-dev -y @@ -137,7 +137,7 @@ jobs: deploy_playstore: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - run: cat .github/workflows/versions.env >> $GITHUB_ENV - uses: actions/setup-java@v4 with: @@ -193,7 +193,7 @@ jobs: packages: write steps: - name: Check out Git repository - uses: actions/checkout@v4 + uses: actions/checkout@v5 - name: Log in to the Container registry uses: docker/login-action@v3 with: From 51d891c62c008b56e4e04926b32be16dc7cc23be Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 12 Aug 2025 23:56:33 +0000 Subject: [PATCH 5/9] build: (deps): bump file_picker from 10.2.3 to 10.3.1 Bumps [file_picker](https://github.com/miguelpruivo/flutter_file_picker) from 10.2.3 to 10.3.1. - [Release notes](https://github.com/miguelpruivo/flutter_file_picker/releases) - [Changelog](https://github.com/miguelpruivo/flutter_file_picker/blob/master/CHANGELOG.md) - [Commits](https://github.com/miguelpruivo/flutter_file_picker/commits) --- updated-dependencies: - dependency-name: file_picker dependency-version: 10.3.1 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- pubspec.lock | 4 ++-- pubspec.yaml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/pubspec.lock b/pubspec.lock index 4fa2798d4..913d28b74 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -410,10 +410,10 @@ packages: dependency: "direct main" description: name: file_picker - sha256: "8f9f429998f9232d65bc4757af74475ce44fc80f10704ff5dfa8b1d14fc429b9" + sha256: ef7d2a085c1b1d69d17b6842d0734aad90156de08df6bd3c12496d0bd6ddf8e2 url: "https://pub.dev" source: hosted - version: "10.2.3" + version: "10.3.1" file_selector: dependency: "direct main" description: diff --git a/pubspec.yaml b/pubspec.yaml index 28360a08a..c3d27762b 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -24,7 +24,7 @@ dependencies: dynamic_color: ^1.8.1 emoji_picker_flutter: ^4.3.0 emojis: ^0.9.9 - file_picker: ^10.2.3 + file_picker: ^10.3.1 file_selector: ^1.0.3 flutter: sdk: flutter From 565926809da3b16583ac4c0ca20fff6bdbf8440d Mon Sep 17 00:00:00 2001 From: krille-chan Date: Sun, 17 Aug 2025 08:24:46 +0200 Subject: [PATCH 6/9] fix: BuildContext crash when starting a new chat --- lib/widgets/adaptive_dialogs/user_dialog.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/widgets/adaptive_dialogs/user_dialog.dart b/lib/widgets/adaptive_dialogs/user_dialog.dart index 641bd509a..1834c0153 100644 --- a/lib/widgets/adaptive_dialogs/user_dialog.dart +++ b/lib/widgets/adaptive_dialogs/user_dialog.dart @@ -168,13 +168,13 @@ class UserDialog extends StatelessWidget { bigButtons: true, onPressed: () async { final router = GoRouter.of(context); - Navigator.of(context).pop(); final roomIdResult = await showFutureLoadingDialog( context: context, future: () => client.startDirectChat(profile.userId), ); final roomId = roomIdResult.result; if (roomId == null) return; + if (context.mounted) Navigator.of(context).pop(); router.go('/rooms/$roomId'); }, child: Text( From 85139f533c82daa2723ad2d446c7680a051b2e6d Mon Sep 17 00:00:00 2001 From: krille-chan Date: Sun, 17 Aug 2025 08:34:25 +0200 Subject: [PATCH 7/9] fix: Use animatedswitcher instead of crashing animatedcrossfade --- .../new_private_chat_view.dart | 332 +++++++++--------- lib/widgets/mxc_image.dart | 12 +- 2 files changed, 173 insertions(+), 171 deletions(-) diff --git a/lib/pages/new_private_chat/new_private_chat_view.dart b/lib/pages/new_private_chat/new_private_chat_view.dart index ba1b417b5..5a5bdeee0 100644 --- a/lib/pages/new_private_chat/new_private_chat_view.dart +++ b/lib/pages/new_private_chat/new_private_chat_view.dart @@ -99,181 +99,189 @@ class NewPrivateChatView extends StatelessWidget { ), ), Expanded( - child: AnimatedCrossFade( + child: AnimatedSwitcher( duration: FluffyThemes.animationDuration, - crossFadeState: searchResponse == null - ? CrossFadeState.showFirst - : CrossFadeState.showSecond, - firstChild: ListView( - children: [ - Padding( - padding: const EdgeInsets.symmetric(horizontal: 18.0), - child: SelectableText.rich( - TextSpan( - children: [ - TextSpan( - text: L10n.of(context).yourGlobalUserIdIs, - ), - TextSpan( - text: Matrix.of(context).client.userID, - style: const TextStyle( - fontWeight: FontWeight.w600, + child: searchResponse == null + ? ListView( + children: [ + Padding( + padding: + const EdgeInsets.symmetric(horizontal: 18.0), + child: SelectableText.rich( + TextSpan( + children: [ + TextSpan( + text: L10n.of(context).yourGlobalUserIdIs, + ), + TextSpan( + text: Matrix.of(context).client.userID, + style: const TextStyle( + fontWeight: FontWeight.w600, + ), + ), + ], + ), + style: TextStyle( + color: theme.colorScheme.onSurface, + fontSize: 12, ), ), - ], - ), - style: TextStyle( - color: theme.colorScheme.onSurface, - fontSize: 12, - ), - ), - ), - const SizedBox(height: 8), - ListTile( - leading: CircleAvatar( - backgroundColor: theme.colorScheme.secondaryContainer, - foregroundColor: theme.colorScheme.onSecondaryContainer, - child: Icon(Icons.adaptive.share_outlined), - ), - title: Text(L10n.of(context).shareInviteLink), - onTap: controller.inviteAction, - ), - ListTile( - leading: CircleAvatar( - backgroundColor: theme.colorScheme.tertiaryContainer, - foregroundColor: theme.colorScheme.onTertiaryContainer, - child: const Icon(Icons.group_add_outlined), - ), - title: Text(L10n.of(context).createGroup), - onTap: () => context.go('/rooms/newgroup'), - ), - if (PlatformInfos.isMobile) - ListTile( - leading: CircleAvatar( - backgroundColor: theme.colorScheme.primaryContainer, - foregroundColor: theme.colorScheme.onPrimaryContainer, - child: const Icon(Icons.qr_code_scanner_outlined), - ), - title: Text(L10n.of(context).scanQrCode), - onTap: controller.openScannerAction, - ), - Center( - child: Padding( - padding: const EdgeInsets.symmetric( - horizontal: 64.0, - vertical: 24.0, - ), - child: Material( - shape: RoundedRectangleBorder( - borderRadius: - BorderRadius.circular(AppConfig.borderRadius), - side: BorderSide( - width: 3, - color: theme.colorScheme.primary, - ), ), - color: Colors.transparent, - clipBehavior: Clip.hardEdge, - child: InkWell( - borderRadius: - BorderRadius.circular(AppConfig.borderRadius), - onTap: () => showQrCodeViewer( - context, - userId, + const SizedBox(height: 8), + ListTile( + leading: CircleAvatar( + backgroundColor: + theme.colorScheme.secondaryContainer, + foregroundColor: + theme.colorScheme.onSecondaryContainer, + child: Icon(Icons.adaptive.share_outlined), ), + title: Text(L10n.of(context).shareInviteLink), + onTap: controller.inviteAction, + ), + ListTile( + leading: CircleAvatar( + backgroundColor: + theme.colorScheme.tertiaryContainer, + foregroundColor: + theme.colorScheme.onTertiaryContainer, + child: const Icon(Icons.group_add_outlined), + ), + title: Text(L10n.of(context).createGroup), + onTap: () => context.go('/rooms/newgroup'), + ), + if (PlatformInfos.isMobile) + ListTile( + leading: CircleAvatar( + backgroundColor: + theme.colorScheme.primaryContainer, + foregroundColor: + theme.colorScheme.onPrimaryContainer, + child: + const Icon(Icons.qr_code_scanner_outlined), + ), + title: Text(L10n.of(context).scanQrCode), + onTap: controller.openScannerAction, + ), + Center( child: Padding( - padding: const EdgeInsets.all(16.0), - child: ConstrainedBox( - constraints: - const BoxConstraints(maxWidth: 200), - child: PrettyQrView.data( - data: 'https://matrix.to/#/$userId', - decoration: PrettyQrDecoration( - shape: PrettyQrSmoothSymbol( - roundFactor: 1, - color: theme.colorScheme.primary, + padding: const EdgeInsets.symmetric( + horizontal: 64.0, + vertical: 24.0, + ), + child: Material( + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular( + AppConfig.borderRadius, + ), + side: BorderSide( + width: 3, + color: theme.colorScheme.primary, + ), + ), + color: Colors.transparent, + clipBehavior: Clip.hardEdge, + child: InkWell( + borderRadius: BorderRadius.circular( + AppConfig.borderRadius, + ), + onTap: () => showQrCodeViewer( + context, + userId, + ), + child: Padding( + padding: const EdgeInsets.all(16.0), + child: ConstrainedBox( + constraints: + const BoxConstraints(maxWidth: 200), + child: PrettyQrView.data( + data: 'https://matrix.to/#/$userId', + decoration: PrettyQrDecoration( + shape: PrettyQrSmoothSymbol( + roundFactor: 1, + color: theme.colorScheme.primary, + ), + ), + ), ), ), ), ), ), ), - ), + ], + ) + : FutureBuilder( + future: searchResponse, + builder: (context, snapshot) { + final result = snapshot.data; + final error = snapshot.error; + if (error != null) { + return Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Text( + error.toLocalizedString(context), + textAlign: TextAlign.center, + style: TextStyle( + color: theme.colorScheme.error, + ), + ), + const SizedBox(height: 12), + OutlinedButton.icon( + onPressed: controller.searchUsers, + icon: const Icon(Icons.refresh_outlined), + label: Text(L10n.of(context).tryAgain), + ), + ], + ); + } + if (result == null) { + return const Center( + child: CircularProgressIndicator.adaptive(), + ); + } + if (result.isEmpty) { + return Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + const Icon(Icons.search_outlined, size: 86), + Padding( + padding: const EdgeInsets.all(16.0), + child: Text( + L10n.of(context).noUsersFoundWithQuery( + controller.controller.text, + ), + style: TextStyle( + color: theme.colorScheme.primary, + ), + textAlign: TextAlign.center, + ), + ), + ], + ); + } + return ListView.builder( + itemCount: result.length, + itemBuilder: (context, i) { + final contact = result[i]; + final displayname = contact.displayName ?? + contact.userId.localpart ?? + contact.userId; + return ListTile( + leading: Avatar( + name: displayname, + mxContent: contact.avatarUrl, + presenceUserId: contact.userId, + ), + title: Text(displayname), + subtitle: Text(contact.userId), + onTap: () => controller.openUserModal(contact), + ); + }, + ); + }, ), - ), - ], - ), - secondChild: FutureBuilder( - future: searchResponse, - builder: (context, snapshot) { - final result = snapshot.data; - final error = snapshot.error; - if (error != null) { - return Column( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Text( - error.toLocalizedString(context), - textAlign: TextAlign.center, - style: TextStyle( - color: theme.colorScheme.error, - ), - ), - const SizedBox(height: 12), - OutlinedButton.icon( - onPressed: controller.searchUsers, - icon: const Icon(Icons.refresh_outlined), - label: Text(L10n.of(context).tryAgain), - ), - ], - ); - } - if (result == null) { - return const Center( - child: CircularProgressIndicator.adaptive(), - ); - } - if (result.isEmpty) { - return Column( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - const Icon(Icons.search_outlined, size: 86), - Padding( - padding: const EdgeInsets.all(16.0), - child: Text( - L10n.of(context).noUsersFoundWithQuery( - controller.controller.text, - ), - style: TextStyle( - color: theme.colorScheme.primary, - ), - textAlign: TextAlign.center, - ), - ), - ], - ); - } - return ListView.builder( - itemCount: result.length, - itemBuilder: (context, i) { - final contact = result[i]; - final displayname = contact.displayName ?? - contact.userId.localpart ?? - contact.userId; - return ListTile( - leading: Avatar( - name: displayname, - mxContent: contact.avatarUrl, - presenceUserId: contact.userId, - ), - title: Text(displayname), - subtitle: Text(contact.userId), - onTap: () => controller.openUserModal(contact), - ); - }, - ); - }, - ), ), ), ], diff --git a/lib/widgets/mxc_image.dart b/lib/widgets/mxc_image.dart index f5ae03a4e..70c558da9 100644 --- a/lib/widgets/mxc_image.dart +++ b/lib/widgets/mxc_image.dart @@ -140,12 +140,9 @@ class _MxcImageState extends State { final data = _imageData; final hasData = data != null && data.isNotEmpty; - return AnimatedCrossFade( - crossFadeState: - hasData ? CrossFadeState.showSecond : CrossFadeState.showFirst, + return AnimatedSwitcher( duration: const Duration(milliseconds: 128), - firstChild: placeholder(context), - secondChild: hasData + child: hasData ? Image.memory( data, width: widget.width, @@ -169,10 +166,7 @@ class _MxcImageState extends State { ); }, ) - : SizedBox( - width: widget.width, - height: widget.height, - ), + : placeholder(context), ); } } From e0c934dbdf65b0a0b071aac8161f6dd494fb560b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20Ku=C3=9Fowski?= Date: Sun, 17 Aug 2025 12:57:57 +0200 Subject: [PATCH 8/9] chore: Mention room version 12 update in changelog --- CHANGELOG.md | 2 ++ android/fastlane/metadata/android/en-US/changelogs/default.txt | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f29cd1e61..83067c377 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,6 @@ ## v2.1.0 +FluffyChat 2.1.0 brings support for room version 12 and a lot of bugfixes, updated translations and performance improvements. Also chat state events are now collapsed by default. + - feat: Collapse all state events by default (Christian Kußowski) - feat(linux/notify): support avatar icon (ShootingStarDragons) - build: (deps): bump archive from 3.6.1 to 4.0.7 (dependabot[bot]) diff --git a/android/fastlane/metadata/android/en-US/changelogs/default.txt b/android/fastlane/metadata/android/en-US/changelogs/default.txt index 8634247fb..0b2d50a81 100644 --- a/android/fastlane/metadata/android/en-US/changelogs/default.txt +++ b/android/fastlane/metadata/android/en-US/changelogs/default.txt @@ -1 +1 @@ -FluffyChat 2.1.0 brings a lot of bugfixes, updated translations and performance improvements. Also chat state events are now collapsed by default. \ No newline at end of file +FluffyChat 2.1.0 brings support for room version 12 and a lot of bugfixes, updated translations and performance improvements. Also chat state events are now collapsed by default. \ No newline at end of file From c7871b24214d9b3f362e5214419c8958013b45fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20Ku=C3=9Fowski?= Date: Sun, 17 Aug 2025 14:58:22 +0200 Subject: [PATCH 9/9] build: Also build linux on github runners --- .github/workflows/release.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index ef1878ff6..b10a6c3aa 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -109,7 +109,7 @@ jobs: strategy: matrix: arch: [ x64, arm64 ] - runs-on: ${{ matrix.arch == 'arm64' && 'self-hosted' || 'ubuntu-latest'}} + runs-on: ${{ matrix.arch == 'arm64' && 'ubuntu-24.04-arm' || 'ubuntu-latest'}} steps: - uses: actions/checkout@v5 - run: cat .github/workflows/versions.env >> $GITHUB_ENV