Merge pull request #1619 from krille-chan/krille/migrate-uni-link-to-app-link

refactor: Migrate uni_links to app_links
This commit is contained in:
Krille-chan 2025-02-16 11:54:28 +01:00 committed by GitHub
commit 7a4fb453c2
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
10 changed files with 74 additions and 50 deletions

View file

@ -4,6 +4,7 @@ import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:app_links/app_links.dart';
import 'package:cross_file/cross_file.dart'; import 'package:cross_file/cross_file.dart';
import 'package:flutter_gen/gen_l10n/l10n.dart'; import 'package:flutter_gen/gen_l10n/l10n.dart';
import 'package:flutter_shortcuts_new/flutter_shortcuts_new.dart'; import 'package:flutter_shortcuts_new/flutter_shortcuts_new.dart';
@ -11,7 +12,6 @@ import 'package:go_router/go_router.dart';
import 'package:matrix/matrix.dart' as sdk; import 'package:matrix/matrix.dart' as sdk;
import 'package:matrix/matrix.dart'; import 'package:matrix/matrix.dart';
import 'package:receive_sharing_intent/receive_sharing_intent.dart'; import 'package:receive_sharing_intent/receive_sharing_intent.dart';
import 'package:uni_links/uni_links.dart';
import 'package:fluffychat/config/app_config.dart'; import 'package:fluffychat/config/app_config.dart';
import 'package:fluffychat/pages/chat_list/chat_list_view.dart'; import 'package:fluffychat/pages/chat_list/chat_list_view.dart';
@ -29,7 +29,6 @@ import 'package:fluffychat/widgets/share_scaffold_dialog.dart';
import '../../../utils/account_bundles.dart'; import '../../../utils/account_bundles.dart';
import '../../config/setting_keys.dart'; import '../../config/setting_keys.dart';
import '../../utils/url_launcher.dart'; import '../../utils/url_launcher.dart';
import '../../widgets/fluffy_chat_app.dart';
import '../../widgets/matrix.dart'; import '../../widgets/matrix.dart';
import '../bootstrap/bootstrap_dialog.dart'; import '../bootstrap/bootstrap_dialog.dart';
@ -362,11 +361,11 @@ class ChatListController extends State<ChatList>
); );
} }
void _processIncomingUris(String? text) async { void _processIncomingUris(Uri? uri) async {
if (text == null) return; if (uri == null) return;
context.go('/rooms'); context.go('/rooms');
WidgetsBinding.instance.addPostFrameCallback((_) { WidgetsBinding.instance.addPostFrameCallback((_) {
UrlLauncher(context, text).openMatrixToUrl(); UrlLauncher(context, uri.toString()).openMatrixToUrl();
}); });
} }
@ -384,11 +383,8 @@ class ChatListController extends State<ChatList>
.then(_processIncomingSharedMedia); .then(_processIncomingSharedMedia);
// For receiving shared Uris // For receiving shared Uris
_intentUriStreamSubscription = linkStream.listen(_processIncomingUris); _intentUriStreamSubscription =
if (FluffyChatApp.gotInitialLink == false) { AppLinks().uriLinkStream.listen(_processIncomingUris);
FluffyChatApp.gotInitialLink = true;
getInitialLink().then(_processIncomingUris);
}
if (PlatformInfos.isAndroid) { if (PlatformInfos.isAndroid) {
final shortcuts = FlutterShortcuts(); final shortcuts = FlutterShortcuts();

View file

@ -24,9 +24,9 @@ import 'dart:io';
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_app_badger/flutter_app_badger.dart';
import 'package:flutter_gen/gen_l10n/l10n.dart'; import 'package:flutter_gen/gen_l10n/l10n.dart';
import 'package:flutter_local_notifications/flutter_local_notifications.dart'; import 'package:flutter_local_notifications/flutter_local_notifications.dart';
import 'package:flutter_new_badger/flutter_new_badger.dart';
import 'package:http/http.dart' as http; import 'package:http/http.dart' as http;
import 'package:matrix/matrix.dart'; import 'package:matrix/matrix.dart';
import 'package:unifiedpush/unifiedpush.dart'; import 'package:unifiedpush/unifiedpush.dart';
@ -133,9 +133,9 @@ class BackgroundPush {
.where((room) => room.isUnreadOrInvited && room.id != roomId) .where((room) => room.isUnreadOrInvited && room.id != roomId)
.length; .length;
if (unreadCount == 0) { if (unreadCount == 0) {
FlutterAppBadger.removeBadge(); FlutterNewBadger.removeBadge();
} else { } else {
FlutterAppBadger.updateBadgeCount(unreadCount); FlutterNewBadger.setBadge(unreadCount);
} }
return; return;
} }

View file

@ -25,6 +25,7 @@ packageLicenseOverride:
latlong2: Apache-2.0 latlong2: Apache-2.0
platform_detect: Apache-2.0 platform_detect: Apache-2.0
rxdart: Apache-2.0 rxdart: Apache-2.0
flutter_new_badger: MIT
# flutter's internal packages # flutter's internal packages
flutter_driver: BSD-3-Clause flutter_driver: BSD-3-Clause

View file

@ -12,6 +12,7 @@
#include <file_selector_linux/file_selector_plugin.h> #include <file_selector_linux/file_selector_plugin.h>
#include <flutter_secure_storage_linux/flutter_secure_storage_linux_plugin.h> #include <flutter_secure_storage_linux/flutter_secure_storage_linux_plugin.h>
#include <flutter_webrtc/flutter_web_r_t_c_plugin.h> #include <flutter_webrtc/flutter_web_r_t_c_plugin.h>
#include <gtk/gtk_plugin.h>
#include <handy_window/handy_window_plugin.h> #include <handy_window/handy_window_plugin.h>
#include <pasteboard/pasteboard_plugin.h> #include <pasteboard/pasteboard_plugin.h>
#include <record_linux/record_linux_plugin.h> #include <record_linux/record_linux_plugin.h>
@ -38,6 +39,9 @@ void fl_register_plugins(FlPluginRegistry* registry) {
g_autoptr(FlPluginRegistrar) flutter_webrtc_registrar = g_autoptr(FlPluginRegistrar) flutter_webrtc_registrar =
fl_plugin_registry_get_registrar_for_plugin(registry, "FlutterWebRTCPlugin"); fl_plugin_registry_get_registrar_for_plugin(registry, "FlutterWebRTCPlugin");
flutter_web_r_t_c_plugin_register_with_registrar(flutter_webrtc_registrar); flutter_web_r_t_c_plugin_register_with_registrar(flutter_webrtc_registrar);
g_autoptr(FlPluginRegistrar) gtk_registrar =
fl_plugin_registry_get_registrar_for_plugin(registry, "GtkPlugin");
gtk_plugin_register_with_registrar(gtk_registrar);
g_autoptr(FlPluginRegistrar) handy_window_registrar = g_autoptr(FlPluginRegistrar) handy_window_registrar =
fl_plugin_registry_get_registrar_for_plugin(registry, "HandyWindowPlugin"); fl_plugin_registry_get_registrar_for_plugin(registry, "HandyWindowPlugin");
handy_window_plugin_register_with_registrar(handy_window_registrar); handy_window_plugin_register_with_registrar(handy_window_registrar);

View file

@ -9,6 +9,7 @@ list(APPEND FLUTTER_PLUGIN_LIST
file_selector_linux file_selector_linux
flutter_secure_storage_linux flutter_secure_storage_linux
flutter_webrtc flutter_webrtc
gtk
handy_window handy_window
pasteboard pasteboard
record_linux record_linux

View file

@ -5,14 +5,15 @@
import FlutterMacOS import FlutterMacOS
import Foundation import Foundation
import app_links
import audio_session import audio_session
import desktop_drop import desktop_drop
import device_info_plus import device_info_plus
import dynamic_color import dynamic_color
import emoji_picker_flutter import emoji_picker_flutter
import file_selector_macos import file_selector_macos
import flutter_app_badger
import flutter_local_notifications import flutter_local_notifications
import flutter_new_badger
import flutter_secure_storage_macos import flutter_secure_storage_macos
import flutter_web_auth_2 import flutter_web_auth_2
import flutter_webrtc import flutter_webrtc
@ -33,14 +34,15 @@ import wakelock_plus
import window_to_front import window_to_front
func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
AppLinksMacosPlugin.register(with: registry.registrar(forPlugin: "AppLinksMacosPlugin"))
AudioSessionPlugin.register(with: registry.registrar(forPlugin: "AudioSessionPlugin")) AudioSessionPlugin.register(with: registry.registrar(forPlugin: "AudioSessionPlugin"))
DesktopDropPlugin.register(with: registry.registrar(forPlugin: "DesktopDropPlugin")) DesktopDropPlugin.register(with: registry.registrar(forPlugin: "DesktopDropPlugin"))
DeviceInfoPlusMacosPlugin.register(with: registry.registrar(forPlugin: "DeviceInfoPlusMacosPlugin")) DeviceInfoPlusMacosPlugin.register(with: registry.registrar(forPlugin: "DeviceInfoPlusMacosPlugin"))
DynamicColorPlugin.register(with: registry.registrar(forPlugin: "DynamicColorPlugin")) DynamicColorPlugin.register(with: registry.registrar(forPlugin: "DynamicColorPlugin"))
EmojiPickerFlutterPlugin.register(with: registry.registrar(forPlugin: "EmojiPickerFlutterPlugin")) EmojiPickerFlutterPlugin.register(with: registry.registrar(forPlugin: "EmojiPickerFlutterPlugin"))
FileSelectorPlugin.register(with: registry.registrar(forPlugin: "FileSelectorPlugin")) FileSelectorPlugin.register(with: registry.registrar(forPlugin: "FileSelectorPlugin"))
FlutterAppBadgerPlugin.register(with: registry.registrar(forPlugin: "FlutterAppBadgerPlugin"))
FlutterLocalNotificationsPlugin.register(with: registry.registrar(forPlugin: "FlutterLocalNotificationsPlugin")) FlutterLocalNotificationsPlugin.register(with: registry.registrar(forPlugin: "FlutterLocalNotificationsPlugin"))
FlutterNewBadgerPlugin.register(with: registry.registrar(forPlugin: "FlutterNewBadgerPlugin"))
FlutterSecureStoragePlugin.register(with: registry.registrar(forPlugin: "FlutterSecureStoragePlugin")) FlutterSecureStoragePlugin.register(with: registry.registrar(forPlugin: "FlutterSecureStoragePlugin"))
FlutterWebAuth2Plugin.register(with: registry.registrar(forPlugin: "FlutterWebAuth2Plugin")) FlutterWebAuth2Plugin.register(with: registry.registrar(forPlugin: "FlutterWebAuth2Plugin"))
FlutterWebRTCPlugin.register(with: registry.registrar(forPlugin: "FlutterWebRTCPlugin")) FlutterWebRTCPlugin.register(with: registry.registrar(forPlugin: "FlutterWebRTCPlugin"))

View file

@ -38,6 +38,38 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.0.3" version: "2.0.3"
app_links:
dependency: "direct main"
description:
name: app_links
sha256: "433df2e61b10519407475d7f69e470789d23d593f28224c38ba1068597be7950"
url: "https://pub.dev"
source: hosted
version: "6.3.3"
app_links_linux:
dependency: transitive
description:
name: app_links_linux
sha256: f5f7173a78609f3dfd4c2ff2c95bd559ab43c80a87dc6a095921d96c05688c81
url: "https://pub.dev"
source: hosted
version: "1.0.3"
app_links_platform_interface:
dependency: transitive
description:
name: app_links_platform_interface
sha256: "05f5379577c513b534a29ddea68176a4d4802c46180ee8e2e966257158772a3f"
url: "https://pub.dev"
source: hosted
version: "2.0.2"
app_links_web:
dependency: transitive
description:
name: app_links_web
sha256: af060ed76183f9e2b87510a9480e56a5352b6c249778d07bd2c95fc35632a555
url: "https://pub.dev"
source: hosted
version: "1.0.4"
archive: archive:
dependency: "direct main" dependency: "direct main"
description: description:
@ -427,14 +459,6 @@ packages:
description: flutter description: flutter
source: sdk source: sdk
version: "0.0.0" version: "0.0.0"
flutter_app_badger:
dependency: "direct main"
description:
name: flutter_app_badger
sha256: "64d4a279bab862ed28850431b9b446b9820aaae0bf363322d51077419f930fa8"
url: "https://pub.dev"
source: hosted
version: "1.5.0"
flutter_cache_manager: flutter_cache_manager:
dependency: "direct main" dependency: "direct main"
description: description:
@ -573,6 +597,14 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.4.1" version: "2.4.1"
flutter_new_badger:
dependency: "direct main"
description:
name: flutter_new_badger
sha256: d3742ace8009663db1ac6ba0377b092f479c35deb33e05514ba05cc0b0a5aaaa
url: "https://pub.dev"
source: hosted
version: "1.1.1"
flutter_olm: flutter_olm:
dependency: "direct main" dependency: "direct main"
description: description:
@ -788,6 +820,14 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "14.3.0" version: "14.3.0"
gtk:
dependency: transitive
description:
name: gtk
sha256: e8ce9ca4b1df106e4d72dad201d345ea1a036cc12c360f1a7d5a758f78ffa42c
url: "https://pub.dev"
source: hosted
version: "2.1.0"
handy_window: handy_window:
dependency: "direct main" dependency: "direct main"
description: description:
@ -1934,30 +1974,6 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.3.2" version: "1.3.2"
uni_links:
dependency: "direct main"
description:
name: uni_links
sha256: "051098acfc9e26a9fde03b487bef5d3d228ca8f67693480c6f33fd4fbb8e2b6e"
url: "https://pub.dev"
source: hosted
version: "0.5.1"
uni_links_platform_interface:
dependency: transitive
description:
name: uni_links_platform_interface
sha256: "929cf1a71b59e3b7c2d8a2605a9cf7e0b125b13bc858e55083d88c62722d4507"
url: "https://pub.dev"
source: hosted
version: "1.0.0"
uni_links_web:
dependency: transitive
description:
name: uni_links_web
sha256: "7539db908e25f67de2438e33cc1020b30ab94e66720b5677ba6763b25f6394df"
url: "https://pub.dev"
source: hosted
version: "0.1.0"
unicode: unicode:
dependency: transitive dependency: transitive
description: description:
@ -2287,5 +2303,5 @@ packages:
source: hosted source: hosted
version: "3.1.2" version: "3.1.2"
sdks: sdks:
dart: ">=3.5.0 <4.0.0" dart: ">=3.5.1 <4.0.0"
flutter: ">=3.24.0" flutter: ">=3.24.0"

View file

@ -9,6 +9,7 @@ environment:
dependencies: dependencies:
animations: ^2.0.11 animations: ^2.0.11
app_links: ^6.3.3
archive: ^3.4.10 archive: ^3.4.10
async: ^2.11.0 async: ^2.11.0
badges: ^3.1.2 badges: ^3.1.2
@ -28,7 +29,6 @@ dependencies:
file_selector: ^1.0.3 file_selector: ^1.0.3
flutter: flutter:
sdk: flutter sdk: flutter
flutter_app_badger: ^1.5.0
flutter_cache_manager: ^3.4.1 flutter_cache_manager: ^3.4.1
flutter_foreground_task: ^6.1.3 flutter_foreground_task: ^6.1.3
flutter_highlighter: ^0.1.1 flutter_highlighter: ^0.1.1
@ -37,6 +37,7 @@ dependencies:
flutter_localizations: flutter_localizations:
sdk: flutter sdk: flutter
flutter_map: ^6.1.0 flutter_map: ^6.1.0
flutter_new_badger: ^1.1.1
flutter_olm: 1.3.2 # Keep in sync with scripts/prepare-web.sh ! 1.4.0 does currently not build on Android flutter_olm: 1.3.2 # Keep in sync with scripts/prepare-web.sh ! 1.4.0 does currently not build on Android
flutter_openssl_crypto: ^0.3.0 flutter_openssl_crypto: ^0.3.0
flutter_ringtone_player: ^4.0.0+2 flutter_ringtone_player: ^4.0.0+2
@ -82,7 +83,6 @@ dependencies:
sqlcipher_flutter_libs: ^0.6.1 sqlcipher_flutter_libs: ^0.6.1
swipe_to_action: ^0.3.0 swipe_to_action: ^0.3.0
tor_detector_web: ^1.1.0 tor_detector_web: ^1.1.0
uni_links: ^0.5.1
unifiedpush: ^5.0.1 unifiedpush: ^5.0.1
unifiedpush_ui: ^0.1.0 unifiedpush_ui: ^0.1.0
universal_html: ^2.2.4 universal_html: ^2.2.4

View file

@ -6,6 +6,7 @@
#include "generated_plugin_registrant.h" #include "generated_plugin_registrant.h"
#include <app_links/app_links_plugin_c_api.h>
#include <desktop_drop/desktop_drop_plugin.h> #include <desktop_drop/desktop_drop_plugin.h>
#include <dynamic_color/dynamic_color_plugin_c_api.h> #include <dynamic_color/dynamic_color_plugin_c_api.h>
#include <emoji_picker_flutter/emoji_picker_flutter_plugin_c_api.h> #include <emoji_picker_flutter/emoji_picker_flutter_plugin_c_api.h>
@ -22,6 +23,8 @@
#include <window_to_front/window_to_front_plugin.h> #include <window_to_front/window_to_front_plugin.h>
void RegisterPlugins(flutter::PluginRegistry* registry) { void RegisterPlugins(flutter::PluginRegistry* registry) {
AppLinksPluginCApiRegisterWithRegistrar(
registry->GetRegistrarForPlugin("AppLinksPluginCApi"));
DesktopDropPluginRegisterWithRegistrar( DesktopDropPluginRegisterWithRegistrar(
registry->GetRegistrarForPlugin("DesktopDropPlugin")); registry->GetRegistrarForPlugin("DesktopDropPlugin"));
DynamicColorPluginCApiRegisterWithRegistrar( DynamicColorPluginCApiRegisterWithRegistrar(

View file

@ -3,6 +3,7 @@
# #
list(APPEND FLUTTER_PLUGIN_LIST list(APPEND FLUTTER_PLUGIN_LIST
app_links
desktop_drop desktop_drop
dynamic_color dynamic_color
emoji_picker_flutter emoji_picker_flutter