diff --git a/ios/Podfile b/ios/Podfile index d97f17e..3e44f9c 100644 --- a/ios/Podfile +++ b/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -# platform :ios, '12.0' +platform :ios, '13.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 2d7b6e2..6522f45 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -40,18 +40,167 @@ PODS: - file_picker (0.0.1): - DKImagePickerController/PhotoGallery - Flutter + - Firebase/Analytics (11.4.0): + - Firebase/Core + - Firebase/Core (11.4.0): + - Firebase/CoreOnly + - FirebaseAnalytics (~> 11.4.0) + - Firebase/CoreOnly (11.4.0): + - FirebaseCore (= 11.4.0) + - Firebase/Crashlytics (11.4.0): + - Firebase/CoreOnly + - FirebaseCrashlytics (~> 11.4.0) + - Firebase/Messaging (11.4.0): + - Firebase/CoreOnly + - FirebaseMessaging (~> 11.4.0) + - firebase_analytics (11.3.5): + - Firebase/Analytics (= 11.4.0) + - firebase_core + - Flutter + - firebase_core (3.8.0): + - Firebase/CoreOnly (= 11.4.0) + - Flutter + - firebase_crashlytics (4.1.5): + - Firebase/Crashlytics (= 11.4.0) + - firebase_core + - Flutter + - firebase_messaging (15.1.5): + - Firebase/Messaging (= 11.4.0) + - firebase_core + - Flutter + - FirebaseAnalytics (11.4.0): + - FirebaseAnalytics/AdIdSupport (= 11.4.0) + - FirebaseCore (~> 11.0) + - FirebaseInstallations (~> 11.0) + - GoogleUtilities/AppDelegateSwizzler (~> 8.0) + - GoogleUtilities/MethodSwizzler (~> 8.0) + - GoogleUtilities/Network (~> 8.0) + - "GoogleUtilities/NSData+zlib (~> 8.0)" + - nanopb (~> 3.30910.0) + - FirebaseAnalytics/AdIdSupport (11.4.0): + - FirebaseCore (~> 11.0) + - FirebaseInstallations (~> 11.0) + - GoogleAppMeasurement (= 11.4.0) + - GoogleUtilities/AppDelegateSwizzler (~> 8.0) + - GoogleUtilities/MethodSwizzler (~> 8.0) + - GoogleUtilities/Network (~> 8.0) + - "GoogleUtilities/NSData+zlib (~> 8.0)" + - nanopb (~> 3.30910.0) + - FirebaseCore (11.4.0): + - FirebaseCoreInternal (~> 11.0) + - GoogleUtilities/Environment (~> 8.0) + - GoogleUtilities/Logger (~> 8.0) + - FirebaseCoreExtension (11.4.1): + - FirebaseCore (~> 11.0) + - FirebaseCoreInternal (11.5.0): + - "GoogleUtilities/NSData+zlib (~> 8.0)" + - FirebaseCrashlytics (11.4.0): + - FirebaseCore (~> 11.4) + - FirebaseInstallations (~> 11.0) + - FirebaseRemoteConfigInterop (~> 11.0) + - FirebaseSessions (~> 11.0) + - GoogleDataTransport (~> 10.0) + - GoogleUtilities/Environment (~> 8.0) + - nanopb (~> 3.30910.0) + - PromisesObjC (~> 2.4) + - FirebaseInstallations (11.4.0): + - FirebaseCore (~> 11.0) + - GoogleUtilities/Environment (~> 8.0) + - GoogleUtilities/UserDefaults (~> 8.0) + - PromisesObjC (~> 2.4) + - FirebaseMessaging (11.4.0): + - FirebaseCore (~> 11.0) + - FirebaseInstallations (~> 11.0) + - GoogleDataTransport (~> 10.0) + - GoogleUtilities/AppDelegateSwizzler (~> 8.0) + - GoogleUtilities/Environment (~> 8.0) + - GoogleUtilities/Reachability (~> 8.0) + - GoogleUtilities/UserDefaults (~> 8.0) + - nanopb (~> 3.30910.0) + - FirebaseRemoteConfigInterop (11.5.0) + - FirebaseSessions (11.4.0): + - FirebaseCore (~> 11.4) + - FirebaseCoreExtension (~> 11.4) + - FirebaseInstallations (~> 11.0) + - GoogleDataTransport (~> 10.0) + - GoogleUtilities/Environment (~> 8.0) + - GoogleUtilities/UserDefaults (~> 8.0) + - nanopb (~> 3.30910.0) + - PromisesSwift (~> 2.1) - Flutter (1.0.0) - flutter_native_splash (2.4.3): - Flutter - flutter_secure_storage (6.0.0): - Flutter + - flutter_udid (0.0.1): + - Flutter + - SAMKeychain + - GoogleAppMeasurement (11.4.0): + - GoogleAppMeasurement/AdIdSupport (= 11.4.0) + - GoogleUtilities/AppDelegateSwizzler (~> 8.0) + - GoogleUtilities/MethodSwizzler (~> 8.0) + - GoogleUtilities/Network (~> 8.0) + - "GoogleUtilities/NSData+zlib (~> 8.0)" + - nanopb (~> 3.30910.0) + - GoogleAppMeasurement/AdIdSupport (11.4.0): + - GoogleAppMeasurement/WithoutAdIdSupport (= 11.4.0) + - GoogleUtilities/AppDelegateSwizzler (~> 8.0) + - GoogleUtilities/MethodSwizzler (~> 8.0) + - GoogleUtilities/Network (~> 8.0) + - "GoogleUtilities/NSData+zlib (~> 8.0)" + - nanopb (~> 3.30910.0) + - GoogleAppMeasurement/WithoutAdIdSupport (11.4.0): + - GoogleUtilities/AppDelegateSwizzler (~> 8.0) + - GoogleUtilities/MethodSwizzler (~> 8.0) + - GoogleUtilities/Network (~> 8.0) + - "GoogleUtilities/NSData+zlib (~> 8.0)" + - nanopb (~> 3.30910.0) + - GoogleDataTransport (10.1.0): + - nanopb (~> 3.30910.0) + - PromisesObjC (~> 2.4) + - GoogleUtilities/AppDelegateSwizzler (8.0.2): + - GoogleUtilities/Environment + - GoogleUtilities/Logger + - GoogleUtilities/Network + - GoogleUtilities/Privacy + - GoogleUtilities/Environment (8.0.2): + - GoogleUtilities/Privacy + - GoogleUtilities/Logger (8.0.2): + - GoogleUtilities/Environment + - GoogleUtilities/Privacy + - GoogleUtilities/MethodSwizzler (8.0.2): + - GoogleUtilities/Logger + - GoogleUtilities/Privacy + - GoogleUtilities/Network (8.0.2): + - GoogleUtilities/Logger + - "GoogleUtilities/NSData+zlib" + - GoogleUtilities/Privacy + - GoogleUtilities/Reachability + - "GoogleUtilities/NSData+zlib (8.0.2)": + - GoogleUtilities/Privacy + - GoogleUtilities/Privacy (8.0.2) + - GoogleUtilities/Reachability (8.0.2): + - GoogleUtilities/Logger + - GoogleUtilities/Privacy + - GoogleUtilities/UserDefaults (8.0.2): + - GoogleUtilities/Logger + - GoogleUtilities/Privacy - image_picker_ios (0.0.1): - Flutter - isar_flutter_libs (1.0.0): - Flutter + - nanopb (3.30910.0): + - nanopb/decode (= 3.30910.0) + - nanopb/encode (= 3.30910.0) + - nanopb/decode (3.30910.0) + - nanopb/encode (3.30910.0) - path_provider_foundation (0.0.1): - Flutter - FlutterMacOS + - PromisesObjC (2.4.0) + - PromisesSwift (2.4.0): + - PromisesObjC (= 2.4.0) + - SAMKeychain (1.5.3) - SDWebImage (5.19.7): - SDWebImage/Core (= 5.19.7) - SDWebImage/Core (5.19.7) @@ -70,9 +219,14 @@ DEPENDENCIES: - croppy (from `.symlinks/plugins/croppy/ios`) - cupertino_http (from `.symlinks/plugins/cupertino_http/ios`) - file_picker (from `.symlinks/plugins/file_picker/ios`) + - firebase_analytics (from `.symlinks/plugins/firebase_analytics/ios`) + - firebase_core (from `.symlinks/plugins/firebase_core/ios`) + - firebase_crashlytics (from `.symlinks/plugins/firebase_crashlytics/ios`) + - firebase_messaging (from `.symlinks/plugins/firebase_messaging/ios`) - Flutter (from `Flutter`) - flutter_native_splash (from `.symlinks/plugins/flutter_native_splash/ios`) - flutter_secure_storage (from `.symlinks/plugins/flutter_secure_storage/ios`) + - flutter_udid (from `.symlinks/plugins/flutter_udid/ios`) - image_picker_ios (from `.symlinks/plugins/image_picker_ios/ios`) - isar_flutter_libs (from `.symlinks/plugins/isar_flutter_libs/ios`) - path_provider_foundation (from `.symlinks/plugins/path_provider_foundation/darwin`) @@ -84,6 +238,23 @@ SPEC REPOS: trunk: - DKImagePickerController - DKPhotoGallery + - Firebase + - FirebaseAnalytics + - FirebaseCore + - FirebaseCoreExtension + - FirebaseCoreInternal + - FirebaseCrashlytics + - FirebaseInstallations + - FirebaseMessaging + - FirebaseRemoteConfigInterop + - FirebaseSessions + - GoogleAppMeasurement + - GoogleDataTransport + - GoogleUtilities + - nanopb + - PromisesObjC + - PromisesSwift + - SAMKeychain - SDWebImage - SwiftyGif @@ -96,12 +267,22 @@ EXTERNAL SOURCES: :path: ".symlinks/plugins/cupertino_http/ios" file_picker: :path: ".symlinks/plugins/file_picker/ios" + firebase_analytics: + :path: ".symlinks/plugins/firebase_analytics/ios" + firebase_core: + :path: ".symlinks/plugins/firebase_core/ios" + firebase_crashlytics: + :path: ".symlinks/plugins/firebase_crashlytics/ios" + firebase_messaging: + :path: ".symlinks/plugins/firebase_messaging/ios" Flutter: :path: Flutter flutter_native_splash: :path: ".symlinks/plugins/flutter_native_splash/ios" flutter_secure_storage: :path: ".symlinks/plugins/flutter_secure_storage/ios" + flutter_udid: + :path: ".symlinks/plugins/flutter_udid/ios" image_picker_ios: :path: ".symlinks/plugins/image_picker_ios/ios" isar_flutter_libs: @@ -122,18 +303,40 @@ SPEC CHECKSUMS: DKImagePickerController: 946cec48c7873164274ecc4624d19e3da4c1ef3c DKPhotoGallery: b3834fecb755ee09a593d7c9e389d8b5d6deed60 file_picker: 09aa5ec1ab24135ccd7a1621c46c84134bfd6655 + Firebase: cf1b19f21410b029b6786a54e9764a0cacad3c99 + firebase_analytics: fa7e5b20c2b58042e3301f5112a473d365bd490c + firebase_core: 9efc3ecf689cdbc90f13f4dc58108c83ea46b266 + firebase_crashlytics: 72a8b504422ba8bb435a7a0c0a9341320cbcbe29 + firebase_messaging: 6bf60adb4b33a848d135e16bc363fb4924f98fba + FirebaseAnalytics: 3feef9ae8733c567866342a1000691baaa7cad49 + FirebaseCore: e0510f1523bc0eb21653cac00792e1e2bd6f1771 + FirebaseCoreExtension: f1bc67a4702931a7caa097d8e4ac0a1b0d16720e + FirebaseCoreInternal: f47dd28ae7782e6a4738aad3106071a8fe0af604 + FirebaseCrashlytics: 41bbdd2b514a8523cede0c217aee6ef7ecf38401 + FirebaseInstallations: 6ef4a1c7eb2a61ee1f74727d7f6ce2e72acf1414 + FirebaseMessaging: f8a160d99c2c2e5babbbcc90c4a3e15db036aee2 + FirebaseRemoteConfigInterop: 7a7aebb9342d53913a5c890efa88e289d9e5c1bc + FirebaseSessions: 3f56f177d9e53a85021d16b31f9a111849d1dd8b Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7 flutter_native_splash: e8a1e01082d97a8099d973f919f57904c925008a flutter_secure_storage: d33dac7ae2ea08509be337e775f6b59f1ff45f12 + flutter_udid: a2482c67a61b9c806ef59dd82ed8d007f1b7ac04 + GoogleAppMeasurement: 987769c4ca6b968f2479fbcc9fe3ce34af454b8e + GoogleDataTransport: aae35b7ea0c09004c3797d53c8c41f66f219d6a7 + GoogleUtilities: 26a3abef001b6533cf678d3eb38fd3f614b7872d image_picker_ios: c560581cceedb403a6ff17f2f816d7fea1421fc1 isar_flutter_libs: b69f437aeab9c521821c3f376198c4371fa21073 + nanopb: fad817b59e0457d11a5dfbde799381cd727c1275 path_provider_foundation: 2b6b4c569c0fb62ec74538f866245ac84301af46 + PromisesObjC: f5707f49cb48b9636751c5b2e7d227e43fba9f47 + PromisesSwift: 9d77319bbe72ebf6d872900551f7eeba9bce2851 + SAMKeychain: 483e1c9f32984d50ca961e26818a534283b4cd5c SDWebImage: 8a6b7b160b4d710e2a22b6900e25301075c34cb3 shared_preferences_foundation: fcdcbc04712aee1108ac7fda236f363274528f78 sqflite_darwin: 5a7236e3b501866c1c9befc6771dfd73ffb8702d SwiftyGif: 706c60cf65fa2bc5ee0313beece843c8eb8194d4 url_launcher_ios: 5334b05cef931de560670eeae103fd3e431ac3fe -PODFILE CHECKSUM: 819463e6a0290f5a72f145ba7cde16e8b6ef0796 +PODFILE CHECKSUM: a57f30d18f102dd3ce366b1d62a55ecbef2158e5 COCOAPODS: 1.15.2 diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index c813c8b..d581ddd 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -204,6 +204,7 @@ 3B06AD1E1E4923F5004D2608 /* Thin Binary */, FC4815D44D909666EB1FA614 /* [CP] Embed Pods Frameworks */, 244E364B35B507EB14F7681C /* FlutterFire: "flutterfire upload-crashlytics-symbols" */, + 43B5CF57FD79BC21654EE037 /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -310,6 +311,23 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; + 43B5CF57FD79BC21654EE037 /* [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; + }; 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; diff --git a/lib/main.dart b/lib/main.dart index fb09a42..68e56e1 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -12,6 +12,7 @@ import 'package:responsive_framework/responsive_framework.dart'; import 'package:surface/firebase_options.dart'; import 'package:surface/providers/channel.dart'; import 'package:surface/providers/navigation.dart'; +import 'package:surface/providers/notification.dart'; import 'package:surface/providers/sn_attachment.dart'; import 'package:surface/providers/sn_network.dart'; import 'package:surface/providers/theme.dart'; @@ -73,6 +74,7 @@ class SolianApp extends StatelessWidget { Provider(create: (ctx) => SnAttachmentProvider(ctx)), Provider(create: (ctx) => UserDirectoryProvider(ctx)), ChangeNotifierProvider(create: (ctx) => UserProvider(ctx)), + ChangeNotifierProvider(create: (ctx) => NotificationProvider(ctx)), ChangeNotifierProvider(create: (ctx) => WebSocketProvider(ctx)), ChangeNotifierProvider(create: (ctx) => ChatChannelProvider(ctx)), ], diff --git a/lib/providers/notification.dart b/lib/providers/notification.dart new file mode 100644 index 0000000..df37211 --- /dev/null +++ b/lib/providers/notification.dart @@ -0,0 +1,58 @@ +import 'dart:developer'; +import 'dart:io'; + +import 'package:firebase_messaging/firebase_messaging.dart'; +import 'package:flutter/foundation.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_udid/flutter_udid.dart'; +import 'package:provider/provider.dart'; +import 'package:surface/providers/sn_network.dart'; +import 'package:surface/providers/userinfo.dart'; +import 'package:surface/providers/websocket.dart'; + +class NotificationProvider extends ChangeNotifier { + late final SnNetworkProvider _sn; + late final UserProvider _ua; + late final WebSocketProvider _ws; + + NotificationProvider(BuildContext context) { + _sn = context.read(); + _ua = context.read(); + _ws = context.read(); + } + + Future registerPushNotifications() async { + if (kIsWeb) return; + if (!_ua.isAuthorized) return; + + late final String? token; + late final String provider; + var deviceUuid = await FlutterUdid.consistentUdid; + + if (deviceUuid.isEmpty) { + log("Unable to active push notifications, couldn't get device uuid"); + return; + } else { + log('Device UUID is $deviceUuid'); + log('Registering device push notifications...'); + } + + if (Platform.isIOS || Platform.isMacOS) { + provider = 'apple'; + token = await FirebaseMessaging.instance.getAPNSToken(); + } else { + provider = 'firebase'; + token = await FirebaseMessaging.instance.getToken(); + } + log('Device Push Token is $token'); + + await _sn.client.post( + '/cgi/id/notifications/subscribe', + data: { + 'provider': provider, + 'device_token': token, + 'device_id': deviceUuid, + }, + ); + } +} diff --git a/lib/screens/explore.dart b/lib/screens/explore.dart index 03fcb4d..67b0af5 100644 --- a/lib/screens/explore.dart +++ b/lib/screens/explore.dart @@ -5,7 +5,6 @@ import 'package:gap/gap.dart'; import 'package:go_router/go_router.dart'; import 'package:material_symbols_icons/symbols.dart'; import 'package:provider/provider.dart'; -import 'package:styled_widget/styled_widget.dart'; import 'package:surface/providers/sn_attachment.dart'; import 'package:surface/providers/sn_network.dart'; import 'package:surface/types/post.dart'; @@ -174,10 +173,7 @@ class _ExploreScreenState extends State { onFetchData: _fetchPosts, itemBuilder: (context, idx) { return GestureDetector( - child: Container( - constraints: const BoxConstraints(maxWidth: 640), - child: PostItem(data: _posts[idx]), - ).center(), + child: PostItem(data: _posts[idx], maxWidth: 640), onTap: () { GoRouter.of(context).pushNamed( 'postDetail', diff --git a/lib/widgets/navigation/app_drawer_navigation.dart b/lib/widgets/navigation/app_drawer_navigation.dart index 3b833ff..079f896 100644 --- a/lib/widgets/navigation/app_drawer_navigation.dart +++ b/lib/widgets/navigation/app_drawer_navigation.dart @@ -30,7 +30,7 @@ class _AppNavigationDrawerState extends State { final nav = context.watch(); final backgroundColor = ResponsiveBreakpoints.of(context).largerThan(MOBILE) - ? Theme.of(context).colorScheme.surface + ? Colors.transparent : null; return ListenableBuilder( @@ -57,7 +57,7 @@ class _AppNavigationDrawerState extends State { ).padding( horizontal: 32, top: MediaQuery.of(context).padding.top > 16 ? 8 : 16, - bottom: 16, + bottom: 8, ), ...destinations.where((ele) => ele.isPinned).map((ele) { return NavigationDrawerDestination( diff --git a/lib/widgets/post/post_comment_list.dart b/lib/widgets/post/post_comment_list.dart index 967d880..8cb58a5 100644 --- a/lib/widgets/post/post_comment_list.dart +++ b/lib/widgets/post/post_comment_list.dart @@ -95,12 +95,10 @@ class PostCommentSliverListState extends State { onFetchData: _fetchPosts, itemBuilder: (context, idx) { return GestureDetector( - child: Container( - constraints: BoxConstraints( - maxWidth: widget.maxWidth ?? double.infinity, - ), - child: PostItem(data: _posts[idx]), - ).center(), + child: PostItem( + data: _posts[idx], + maxWidth: widget.maxWidth, + ), onTap: () { GoRouter.of(context).pushNamed( 'postDetail', diff --git a/lib/widgets/post/post_item.dart b/lib/widgets/post/post_item.dart index 038e231..47b155a 100644 --- a/lib/widgets/post/post_item.dart +++ b/lib/widgets/post/post_item.dart @@ -18,12 +18,14 @@ class PostItem extends StatelessWidget { final SnPost data; final bool showReactions; final bool showComments; + final double? maxWidth; final Function(SnPost data)? onChanged; const PostItem({ super.key, required this.data, this.showReactions = true, this.showComments = true, + this.maxWidth, this.onChanged, }); @@ -34,14 +36,23 @@ class PostItem extends StatelessWidget { @override Widget build(BuildContext context) { return Column( - crossAxisAlignment: CrossAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, children: [ - _PostContentHeader(data: data).padding(horizontal: 12, vertical: 8), - _PostContentBody(data: data.body).padding(horizontal: 16, bottom: 6), - if (data.repostTo != null) - _PostQuoteContent(child: data.repostTo!).padding( - horizontal: 12, + Container( + constraints: BoxConstraints(maxWidth: maxWidth ?? double.infinity), + child: Column( + children: [ + _PostContentHeader(data: data) + .padding(horizontal: 12, vertical: 8), + _PostContentBody(data: data.body) + .padding(horizontal: 16, bottom: 6), + if (data.repostTo != null) + _PostQuoteContent(child: data.repostTo!).padding( + horizontal: 12, + ), + ], ), + ), if (data.preload?.attachments?.isNotEmpty ?? true) AttachmentList( data: data.preload!.attachments!, @@ -49,12 +60,19 @@ class PostItem extends StatelessWidget { maxHeight: 520, listPadding: const EdgeInsets.symmetric(horizontal: 12), ), - _PostBottomAction( - data: data, - showComments: showComments, - showReactions: showReactions, - onChanged: _onChanged, - ).padding(left: 12, right: 18), + Container( + constraints: BoxConstraints(maxWidth: maxWidth ?? double.infinity), + child: Column( + children: [ + _PostBottomAction( + data: data, + showComments: showComments, + showReactions: showReactions, + onChanged: _onChanged, + ).padding(left: 12, right: 18), + ], + ), + ), ], ); } diff --git a/linux/flutter/generated_plugin_registrant.cc b/linux/flutter/generated_plugin_registrant.cc index 7be807c..a9f5cf3 100644 --- a/linux/flutter/generated_plugin_registrant.cc +++ b/linux/flutter/generated_plugin_registrant.cc @@ -8,6 +8,7 @@ #include #include +#include #include #include @@ -18,6 +19,9 @@ void fl_register_plugins(FlPluginRegistry* registry) { g_autoptr(FlPluginRegistrar) flutter_secure_storage_linux_registrar = fl_plugin_registry_get_registrar_for_plugin(registry, "FlutterSecureStorageLinuxPlugin"); flutter_secure_storage_linux_plugin_register_with_registrar(flutter_secure_storage_linux_registrar); + g_autoptr(FlPluginRegistrar) flutter_udid_registrar = + fl_plugin_registry_get_registrar_for_plugin(registry, "FlutterUdidPlugin"); + flutter_udid_plugin_register_with_registrar(flutter_udid_registrar); g_autoptr(FlPluginRegistrar) isar_flutter_libs_registrar = fl_plugin_registry_get_registrar_for_plugin(registry, "IsarFlutterLibsPlugin"); isar_flutter_libs_plugin_register_with_registrar(isar_flutter_libs_registrar); diff --git a/linux/flutter/generated_plugins.cmake b/linux/flutter/generated_plugins.cmake index 88fe520..683c9bc 100644 --- a/linux/flutter/generated_plugins.cmake +++ b/linux/flutter/generated_plugins.cmake @@ -5,6 +5,7 @@ list(APPEND FLUTTER_PLUGIN_LIST file_selector_linux flutter_secure_storage_linux + flutter_udid isar_flutter_libs url_launcher_linux ) diff --git a/macos/Flutter/GeneratedPluginRegistrant.swift b/macos/Flutter/GeneratedPluginRegistrant.swift index 9e2494c..a6567d5 100644 --- a/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/macos/Flutter/GeneratedPluginRegistrant.swift @@ -12,6 +12,7 @@ import firebase_core import firebase_crashlytics import firebase_messaging import flutter_secure_storage_macos +import flutter_udid import isar_flutter_libs import path_provider_foundation import shared_preferences_foundation @@ -26,6 +27,7 @@ func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { FLTFirebaseCrashlyticsPlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseCrashlyticsPlugin")) FLTFirebaseMessagingPlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseMessagingPlugin")) FlutterSecureStoragePlugin.register(with: registry.registrar(forPlugin: "FlutterSecureStoragePlugin")) + FlutterUdidPlugin.register(with: registry.registrar(forPlugin: "FlutterUdidPlugin")) IsarFlutterLibsPlugin.register(with: registry.registrar(forPlugin: "IsarFlutterLibsPlugin")) PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin")) SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin")) diff --git a/pubspec.lock b/pubspec.lock index 22e4920..05b988a 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -685,6 +685,14 @@ packages: description: flutter source: sdk version: "0.0.0" + flutter_udid: + dependency: "direct main" + description: + name: flutter_udid + sha256: "63384bd96203aaefccfd7137fab642edda18afede12b0e9e1a2c96fe2589fd07" + url: "https://pub.dev" + source: hosted + version: "3.0.0" flutter_web_plugins: dependency: transitive description: flutter diff --git a/pubspec.yaml b/pubspec.yaml index f12b69f..d51f2a7 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -83,6 +83,7 @@ dependencies: firebase_messaging: ^15.1.5 firebase_analytics: ^11.3.5 firebase_crashlytics: ^4.1.5 + flutter_udid: ^3.0.0 dev_dependencies: flutter_test: diff --git a/windows/flutter/generated_plugin_registrant.cc b/windows/flutter/generated_plugin_registrant.cc index 8461e1c..c885e3e 100644 --- a/windows/flutter/generated_plugin_registrant.cc +++ b/windows/flutter/generated_plugin_registrant.cc @@ -10,6 +10,7 @@ #include #include #include +#include #include #include @@ -22,6 +23,8 @@ void RegisterPlugins(flutter::PluginRegistry* registry) { registry->GetRegistrarForPlugin("FirebaseCorePluginCApi")); FlutterSecureStorageWindowsPluginRegisterWithRegistrar( registry->GetRegistrarForPlugin("FlutterSecureStorageWindowsPlugin")); + FlutterUdidPluginCApiRegisterWithRegistrar( + registry->GetRegistrarForPlugin("FlutterUdidPluginCApi")); IsarFlutterLibsPluginRegisterWithRegistrar( registry->GetRegistrarForPlugin("IsarFlutterLibsPlugin")); UrlLauncherWindowsRegisterWithRegistrar( diff --git a/windows/flutter/generated_plugins.cmake b/windows/flutter/generated_plugins.cmake index 8b2f6b2..dbc4464 100644 --- a/windows/flutter/generated_plugins.cmake +++ b/windows/flutter/generated_plugins.cmake @@ -7,6 +7,7 @@ list(APPEND FLUTTER_PLUGIN_LIST file_selector_windows firebase_core flutter_secure_storage_windows + flutter_udid isar_flutter_libs url_launcher_windows )