From cc99459701aa6e579093e105c180679b84b629b2 Mon Sep 17 00:00:00 2001 From: ShootingStarDragons Date: Sun, 12 Mar 2023 12:33:47 +0800 Subject: [PATCH] feat: change to flutterwebauth2 --- android/app/src/main/AndroidManifest.xml | 5 ++-- lib/pages/connect/connect_page.dart | 21 +++++++++------- linux/flutter/generated_plugin_registrant.cc | 4 ++++ linux/flutter/generated_plugins.cmake | 1 + macos/Flutter/GeneratedPluginRegistrant.swift | 6 +++-- macos/Runner.xcodeproj/project.pbxproj | 4 ++-- pubspec.lock | 24 +++++++++++++++---- pubspec.yaml | 2 +- web/auth.html | 2 +- .../flutter/generated_plugin_registrant.cc | 3 +++ windows/flutter/generated_plugins.cmake | 1 + 11 files changed, 52 insertions(+), 21 deletions(-) diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 6e08b1d7c..db9c95314 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -93,8 +93,9 @@ - + diff --git a/lib/pages/connect/connect_page.dart b/lib/pages/connect/connect_page.dart index d950f6811..c58f48c61 100644 --- a/lib/pages/connect/connect_page.dart +++ b/lib/pages/connect/connect_page.dart @@ -3,7 +3,7 @@ import 'package:flutter/material.dart'; import 'package:adaptive_dialog/adaptive_dialog.dart'; import 'package:flutter_gen/gen_l10n/l10n.dart'; -import 'package:flutter_web_auth/flutter_web_auth.dart'; +import 'package:flutter_web_auth_2/flutter_web_auth_2.dart'; import 'package:future_loading_dialog/future_loading_dialog.dart'; import 'package:image_picker/image_picker.dart'; import 'package:matrix/matrix.dart'; @@ -103,11 +103,10 @@ class ConnectPageController extends State { .any((flow) => flow.type == flowType) ?? false; - bool get supportsSso => - (PlatformInfos.isMobile || - PlatformInfos.isWeb || - PlatformInfos.isMacOS) && - _supportsFlow('m.login.sso'); + bool get supportsSso => _supportsFlow('m.login.sso'); + + bool isDefaultPlatform = + (PlatformInfos.isMobile || PlatformInfos.isWeb || PlatformInfos.isMacOS); bool get supportsLogin => _supportsFlow('m.login.password'); @@ -133,11 +132,15 @@ class ConnectPageController extends State { void ssoLoginAction(String id) async { final redirectUrl = kIsWeb ? '${html.window.origin!}/web/auth.html' - : '${AppConfig.appOpenUrlScheme.toLowerCase()}://login'; + : isDefaultPlatform + ? '${AppConfig.appOpenUrlScheme.toLowerCase()}://login' + : 'http://localhost:3001//login'; final url = '${Matrix.of(context).getLoginClient().homeserver?.toString()}/_matrix/client/r0/login/sso/redirect/${Uri.encodeComponent(id)}?redirectUrl=${Uri.encodeQueryComponent(redirectUrl)}'; - final urlScheme = Uri.parse(redirectUrl).scheme; - final result = await FlutterWebAuth.authenticate( + final urlScheme = isDefaultPlatform + ? Uri.parse(redirectUrl).scheme + : "http://localhost:3001"; + final result = await FlutterWebAuth2.authenticate( url: url, callbackUrlScheme: urlScheme, ); diff --git a/linux/flutter/generated_plugin_registrant.cc b/linux/flutter/generated_plugin_registrant.cc index 2035a4094..094d536bc 100644 --- a/linux/flutter/generated_plugin_registrant.cc +++ b/linux/flutter/generated_plugin_registrant.cc @@ -14,6 +14,7 @@ #include #include #include +#include void fl_register_plugins(FlPluginRegistry* registry) { g_autoptr(FlPluginRegistrar) desktop_drop_registrar = @@ -40,4 +41,7 @@ void fl_register_plugins(FlPluginRegistry* registry) { g_autoptr(FlPluginRegistrar) url_launcher_linux_registrar = fl_plugin_registry_get_registrar_for_plugin(registry, "UrlLauncherPlugin"); url_launcher_plugin_register_with_registrar(url_launcher_linux_registrar); + g_autoptr(FlPluginRegistrar) window_to_front_registrar = + fl_plugin_registry_get_registrar_for_plugin(registry, "WindowToFrontPlugin"); + window_to_front_plugin_register_with_registrar(window_to_front_registrar); } diff --git a/linux/flutter/generated_plugins.cmake b/linux/flutter/generated_plugins.cmake index 86a165fa7..f84e8896c 100644 --- a/linux/flutter/generated_plugins.cmake +++ b/linux/flutter/generated_plugins.cmake @@ -11,6 +11,7 @@ list(APPEND FLUTTER_PLUGIN_LIST handy_window record_linux url_launcher_linux + window_to_front ) list(APPEND FLUTTER_FFI_PLUGIN_LIST diff --git a/macos/Flutter/GeneratedPluginRegistrant.swift b/macos/Flutter/GeneratedPluginRegistrant.swift index a7283a50a..268d92fb8 100644 --- a/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/macos/Flutter/GeneratedPluginRegistrant.swift @@ -15,7 +15,7 @@ import emoji_picker_flutter import flutter_app_badger import flutter_local_notifications import flutter_secure_storage_macos -import flutter_web_auth +import flutter_web_auth_2 import flutter_webrtc import geolocator_apple import just_audio @@ -29,6 +29,7 @@ import sqflite import url_launcher_macos import video_compress import wakelock_macos +import window_to_front func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { AudioSessionPlugin.register(with: registry.registrar(forPlugin: "AudioSessionPlugin")) @@ -41,7 +42,7 @@ func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { FlutterAppBadgerPlugin.register(with: registry.registrar(forPlugin: "FlutterAppBadgerPlugin")) FlutterLocalNotificationsPlugin.register(with: registry.registrar(forPlugin: "FlutterLocalNotificationsPlugin")) FlutterSecureStoragePlugin.register(with: registry.registrar(forPlugin: "FlutterSecureStoragePlugin")) - FlutterWebAuthPlugin.register(with: registry.registrar(forPlugin: "FlutterWebAuthPlugin")) + FlutterWebAuth2Plugin.register(with: registry.registrar(forPlugin: "FlutterWebAuth2Plugin")) FlutterWebRTCPlugin.register(with: registry.registrar(forPlugin: "FlutterWebRTCPlugin")) GeolocatorPlugin.register(with: registry.registrar(forPlugin: "GeolocatorPlugin")) JustAudioPlugin.register(with: registry.registrar(forPlugin: "JustAudioPlugin")) @@ -55,4 +56,5 @@ func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { UrlLauncherPlugin.register(with: registry.registrar(forPlugin: "UrlLauncherPlugin")) VideoCompressPlugin.register(with: registry.registrar(forPlugin: "VideoCompressPlugin")) WakelockMacosPlugin.register(with: registry.registrar(forPlugin: "WakelockMacosPlugin")) + WindowToFrontPlugin.register(with: registry.registrar(forPlugin: "WindowToFrontPlugin")) } diff --git a/macos/Runner.xcodeproj/project.pbxproj b/macos/Runner.xcodeproj/project.pbxproj index 0f19f640f..5a481e7fb 100644 --- a/macos/Runner.xcodeproj/project.pbxproj +++ b/macos/Runner.xcodeproj/project.pbxproj @@ -270,7 +270,7 @@ "${BUILT_PRODUCTS_DIR}/emoji_picker_flutter/emoji_picker_flutter.framework", "${BUILT_PRODUCTS_DIR}/flutter_local_notifications/flutter_local_notifications.framework", "${BUILT_PRODUCTS_DIR}/flutter_secure_storage_macos/flutter_secure_storage_macos.framework", - "${BUILT_PRODUCTS_DIR}/flutter_web_auth/flutter_web_auth.framework", + "${BUILT_PRODUCTS_DIR}/flutter_web_auth_2/flutter_web_auth_2.framework", "${BUILT_PRODUCTS_DIR}/flutter_webrtc/flutter_webrtc.framework", "${BUILT_PRODUCTS_DIR}/geolocator_apple/geolocator_apple.framework", "${BUILT_PRODUCTS_DIR}/just_audio/just_audio.framework", @@ -297,7 +297,7 @@ "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/emoji_picker_flutter.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/flutter_local_notifications.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/flutter_secure_storage_macos.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/flutter_web_auth.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/flutter_web_auth_2.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/flutter_webrtc.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/geolocator_apple.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/just_audio.framework", diff --git a/pubspec.lock b/pubspec.lock index 91f441045..2d673f68c 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -694,14 +694,22 @@ packages: url: "https://pub.dev" source: hosted version: "4.3.2" - flutter_web_auth: + flutter_web_auth_2: dependency: "direct main" description: - name: flutter_web_auth - sha256: a69fa8f43b9e4d86ac72176bf747b735e7b977dd7cf215076d95b87cb05affdd + name: flutter_web_auth_2 + sha256: eab1cc4ba7b2c517a7ea1cf0d165f2ae22403f4a725ea681fc238c32abd0ab87 url: "https://pub.dev" source: hosted - version: "0.5.0" + version: "2.1.1" + flutter_web_auth_2_platform_interface: + dependency: transitive + description: + name: flutter_web_auth_2_platform_interface + sha256: dd934033564cacff127b4776798dc2b27b2f2ebfd6b669746455b91c3611cfde + url: "https://pub.dev" + source: hosted + version: "2.1.0" flutter_web_plugins: dependency: transitive description: flutter @@ -2132,6 +2140,14 @@ packages: url: "https://pub.dev" source: hosted version: "3.1.3" + window_to_front: + dependency: transitive + description: + name: window_to_front + sha256: "7aef379752b7190c10479e12b5fd7c0b9d92adc96817d9e96c59937929512aee" + url: "https://pub.dev" + source: hosted + version: "0.0.3" wkt_parser: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 165c37678..152927a7f 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -43,7 +43,7 @@ dependencies: flutter_ringtone_player: ^3.1.1 flutter_secure_storage: ^7.0.1 flutter_typeahead: ^4.3.2 - flutter_web_auth: ^0.5.0 + flutter_web_auth_2: ^2.1.1 flutter_webrtc: ^0.9.24 future_loading_dialog: ^0.2.3 geolocator: ^7.6.2 diff --git a/web/auth.html b/web/auth.html index 9e0e115c0..f1d2fc0bc 100644 --- a/web/auth.html +++ b/web/auth.html @@ -7,7 +7,7 @@ close the window. diff --git a/windows/flutter/generated_plugin_registrant.cc b/windows/flutter/generated_plugin_registrant.cc index 6649d186d..9ecc25413 100644 --- a/windows/flutter/generated_plugin_registrant.cc +++ b/windows/flutter/generated_plugin_registrant.cc @@ -16,6 +16,7 @@ #include #include #include +#include void RegisterPlugins(flutter::PluginRegistry* registry) { ConnectivityPlusWindowsPluginRegisterWithRegistrar( @@ -38,4 +39,6 @@ void RegisterPlugins(flutter::PluginRegistry* registry) { registry->GetRegistrarForPlugin("SharePlusWindowsPluginCApi")); UrlLauncherWindowsRegisterWithRegistrar( registry->GetRegistrarForPlugin("UrlLauncherWindows")); + WindowToFrontPluginRegisterWithRegistrar( + registry->GetRegistrarForPlugin("WindowToFrontPlugin")); } diff --git a/windows/flutter/generated_plugins.cmake b/windows/flutter/generated_plugins.cmake index ff0374aaa..db2218895 100644 --- a/windows/flutter/generated_plugins.cmake +++ b/windows/flutter/generated_plugins.cmake @@ -13,6 +13,7 @@ list(APPEND FLUTTER_PLUGIN_LIST record_windows share_plus url_launcher_windows + window_to_front ) list(APPEND FLUTTER_FFI_PLUGIN_LIST