From 9ebe4fc63dfa03f4af92e39b786c39ce6f2134f3 Mon Sep 17 00:00:00 2001 From: Nutcake Date: Wed, 3 May 2023 21:55:34 +0200 Subject: [PATCH] Add settings manager and move some things around --- assets/images/logo.png | Bin 0 -> 124673 bytes assets/images/logo512.png | Bin 0 -> 25354 bytes lib/apis/friend_api.dart | 2 +- lib/apis/message_api.dart | 2 +- lib/apis/user_api.dart | 2 +- lib/{ => clients}/api_client.dart | 24 ++-- lib/{ => clients}/neos_hub.dart | 2 +- lib/clients/settings_client.dart | 28 ++++ lib/main.dart | 52 ++++++- lib/models/message.dart | 2 +- lib/models/settings.dart | 30 +++- lib/widgets/default_error_widget.dart | 41 ++++++ lib/widgets/friend_list_tile.dart | 4 +- lib/widgets/friends_list.dart | 28 ++-- lib/widgets/login_screen.dart | 2 +- lib/widgets/message_audio_player.dart | 6 +- lib/widgets/message_session_invite.dart | 6 +- .../{messages.dart => messages_list.dart} | 56 ++------ lib/widgets/settings_page.dart | 34 ++++- linux/flutter/generated_plugin_registrant.cc | 4 + linux/flutter/generated_plugins.cmake | 1 + pubspec.lock | 136 ++++++++++++++++++ pubspec.yaml | 8 +- test/widget_test.dart | 30 ---- .../flutter/generated_plugin_registrant.cc | 3 + windows/flutter/generated_plugins.cmake | 1 + 26 files changed, 383 insertions(+), 121 deletions(-) create mode 100644 assets/images/logo.png create mode 100644 assets/images/logo512.png rename lib/{ => clients}/api_client.dart (89%) rename lib/{ => clients}/neos_hub.dart (99%) create mode 100644 lib/clients/settings_client.dart create mode 100644 lib/widgets/default_error_widget.dart rename lib/widgets/{messages.dart => messages_list.dart} (92%) delete mode 100644 test/widget_test.dart diff --git a/assets/images/logo.png b/assets/images/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..cd4cde0d19ee10654a25131702c8dcdcae99c1ea GIT binary patch literal 124673 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%0A>yg?+Q$|?) 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%0A)*qB*Z|`JT`92wVwG2u@ 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 V%%n7JsdOR83{O`-mvv4FO#mUKT4ewL literal 0 HcmV?d00001 diff --git a/assets/images/logo512.png b/assets/images/logo512.png new file mode 100644 index 0000000000000000000000000000000000000000..5c5a1df240f2e10d4da0207fc6300fc02eff2929 GIT binary patch literal 25354 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 } @@ -164,5 +169,8 @@ class ClientHolder extends InheritedWidget { } @override - bool updateShouldNotify(covariant ClientHolder oldWidget) => oldWidget.client != client; + bool updateShouldNotify(covariant ClientHolder oldWidget) => + oldWidget.apiClient != apiClient + || oldWidget.settingsClient != settingsClient + || oldWidget.hub != hub; } diff --git a/lib/neos_hub.dart b/lib/clients/neos_hub.dart similarity index 99% rename from lib/neos_hub.dart rename to lib/clients/neos_hub.dart index d65033c..4464d7c 100644 --- a/lib/neos_hub.dart +++ b/lib/clients/neos_hub.dart @@ -3,7 +3,7 @@ import 'dart:io'; import 'package:contacts_plus_plus/apis/message_api.dart'; import 'package:http/http.dart' as http; -import 'package:contacts_plus_plus/api_client.dart'; +import 'package:contacts_plus_plus/clients/api_client.dart'; import 'package:contacts_plus_plus/config.dart'; import 'package:contacts_plus_plus/models/message.dart'; import 'package:logging/logging.dart'; diff --git a/lib/clients/settings_client.dart b/lib/clients/settings_client.dart new file mode 100644 index 0000000..3585cf5 --- /dev/null +++ b/lib/clients/settings_client.dart @@ -0,0 +1,28 @@ +import 'dart:convert'; + +import 'package:contacts_plus_plus/models/settings.dart'; +import 'package:flutter_secure_storage/flutter_secure_storage.dart'; + + +class SettingsClient { + static const String _settingsKey = "settings"; + static const _storage = FlutterSecureStorage(); + Settings _currentSettings = Settings.def(); + + Settings get currentSettings => _currentSettings; + + Future loadSettings() async { + final data = await _storage.read(key: _settingsKey); + if (data == null) return; + try { + _currentSettings = Settings.fromMap(jsonDecode(data)); + } catch (_) { + _storage.delete(key: _settingsKey); + } + } + + Future changeSettings(Settings newSettings) async { + _currentSettings = newSettings; + await _storage.write(key: _settingsKey, value: jsonEncode(newSettings.toMap())); + } +} \ No newline at end of file diff --git a/lib/main.dart b/lib/main.dart index 2c3abfd..b387409 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,20 +1,28 @@ import 'dart:developer'; +import 'package:contacts_plus_plus/clients/settings_client.dart'; import 'package:contacts_plus_plus/widgets/friends_list.dart'; import 'package:contacts_plus_plus/widgets/login_screen.dart'; import 'package:flutter/material.dart'; +import 'package:flutter_local_notifications/flutter_local_notifications.dart'; import 'package:flutter_phoenix/flutter_phoenix.dart'; +import 'package:flutter_secure_storage/flutter_secure_storage.dart'; import 'package:logging/logging.dart'; -import 'api_client.dart'; +import 'clients/api_client.dart'; import 'models/authentication_data.dart'; -void main() { +void main() async { Logger.root.onRecord.listen((event) => log(event.message, name: event.loggerName)); - runApp(Phoenix(child: const ContactsPlusPlus())); + WidgetsFlutterBinding.ensureInitialized(); + final settingsClient = SettingsClient(); + await settingsClient.loadSettings(); + runApp(Phoenix(child: ContactsPlusPlus(settingsClient: settingsClient,))); } class ContactsPlusPlus extends StatefulWidget { - const ContactsPlusPlus({super.key}); + const ContactsPlusPlus({required this.settingsClient, super.key}); + + final SettingsClient settingsClient; @override State createState() => _ContactsPlusPlusState(); @@ -27,6 +35,7 @@ class _ContactsPlusPlusState extends State { @override Widget build(BuildContext context) { return ClientHolder( + settingsClient: widget.settingsClient, authenticationData: _authData, child: MaterialApp( debugShowCheckedModeBanner: false, @@ -40,6 +49,41 @@ class _ContactsPlusPlusState extends State { const FriendsList() : LoginScreen( onLoginSuccessful: (AuthenticationData authData) async { + final notificationManager = FlutterLocalNotificationsPlugin(); + final settings = widget.settingsClient.currentSettings; + final platformNotifications = notificationManager.resolvePlatformSpecificImplementation(); + if (!settings.notificationsDenied && !(await platformNotifications?.areNotificationsEnabled() ?? true)) { + if (context.mounted) { + await showDialog( + context: context, + builder: (context) { + return AlertDialog( + title: Text("This app needs to ask your permission to send background notifications."), + content: Text("Are you okay with that?"), + actions: [ + TextButton( + onPressed: () async { + Navigator.of(context).pop(); + await widget.settingsClient.changeSettings(settings.copyWith(notificationsDenied: true)); + }, + child: const Text("No"), + ), + TextButton( + onPressed: () async { + Navigator.of(context).pop(); + await widget.settingsClient.changeSettings(settings.copyWith(notificationsDenied: false)); + await notificationManager.resolvePlatformSpecificImplementation< + AndroidFlutterLocalNotificationsPlugin>() + ?.requestPermission(); + }, + child: const Text("Yes"), + ) + ], + ); + }, + ); + } + } if (authData.isAuthenticated) { setState(() { _authData = authData; diff --git a/lib/models/message.dart b/lib/models/message.dart index a74adde..1695c65 100644 --- a/lib/models/message.dart +++ b/lib/models/message.dart @@ -1,7 +1,7 @@ import 'dart:async'; import 'dart:developer'; -import 'package:contacts_plus_plus/api_client.dart'; +import 'package:contacts_plus_plus/clients/api_client.dart'; import 'package:contacts_plus_plus/apis/message_api.dart'; import 'package:contacts_plus_plus/auxiliary.dart'; import 'package:uuid/uuid.dart'; diff --git a/lib/models/settings.dart b/lib/models/settings.dart index d56e1f8..6b92e80 100644 --- a/lib/models/settings.dart +++ b/lib/models/settings.dart @@ -1,5 +1,33 @@ class Settings { - // No settings right now. + static const Settings _defaultSettings = Settings(notificationsDenied: true, unreadCheckIntervalMinutes: 0); + final bool notificationsDenied; + final int unreadCheckIntervalMinutes; + const Settings({required this.notificationsDenied, required this.unreadCheckIntervalMinutes}); + + factory Settings.def() => _defaultSettings; + + factory Settings.fromMap(Map map) { + return Settings( + notificationsDenied: map["notificationsDenied"] ?? _defaultSettings.notificationsDenied, + unreadCheckIntervalMinutes: map["unreadCheckIntervalMinutes"] ?? _defaultSettings.unreadCheckIntervalMinutes, + ); + } + + Map toMap() { + return { + "notificationsDenied": notificationsDenied, + "unreadCheckIntervalMinutes": unreadCheckIntervalMinutes, + }; + } + + Settings copy() => copyWith(); + + Settings copyWith({bool? notificationsDenied, int? unreadCheckIntervalMinutes}) { + return Settings( + notificationsDenied: notificationsDenied ?? this.notificationsDenied, + unreadCheckIntervalMinutes: unreadCheckIntervalMinutes ?? this.unreadCheckIntervalMinutes, + ); + } } \ No newline at end of file diff --git a/lib/widgets/default_error_widget.dart b/lib/widgets/default_error_widget.dart new file mode 100644 index 0000000..714ce89 --- /dev/null +++ b/lib/widgets/default_error_widget.dart @@ -0,0 +1,41 @@ +import 'package:flutter/material.dart'; + +class DefaultErrorWidget extends StatelessWidget { + const DefaultErrorWidget({required this.message, this.onRetry, super.key}); + + final String message; + final void Function()? onRetry; + + @override + Widget build(BuildContext context) { + return Padding( + padding: const EdgeInsets.symmetric(horizontal: 64, vertical: 128,), + child: Center( + child: Column( + mainAxisSize: MainAxisSize.max, + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Text("Something went wrong: ", style: Theme + .of(context) + .textTheme + .titleMedium,), + Padding( + padding: const EdgeInsets.all(16), + child: Text(message), + ), + if (onRetry != null) TextButton.icon( + onPressed: onRetry, + style: TextButton.styleFrom( + padding: const EdgeInsets.symmetric(vertical: 16, horizontal: 16), + ), + icon: const Icon(Icons.refresh), + label: const Text("Retry"), + ), + ], + ), + ), + ); + } + +} \ No newline at end of file diff --git a/lib/widgets/friend_list_tile.dart b/lib/widgets/friend_list_tile.dart index 7233b36..37d3291 100644 --- a/lib/widgets/friend_list_tile.dart +++ b/lib/widgets/friend_list_tile.dart @@ -1,7 +1,7 @@ import 'package:contacts_plus_plus/auxiliary.dart'; import 'package:contacts_plus_plus/models/friend.dart'; import 'package:contacts_plus_plus/widgets/generic_avatar.dart'; -import 'package:contacts_plus_plus/widgets/messages.dart'; +import 'package:contacts_plus_plus/widgets/messages_list.dart'; import 'package:flutter/material.dart'; class FriendListTile extends StatelessWidget { @@ -23,7 +23,7 @@ class FriendListTile extends StatelessWidget { title: Text(friend.username), subtitle: Text(friend.userStatus.onlineStatus.name), onTap: () async { - Navigator.of(context).push(MaterialPageRoute(builder: (context) => Messages(friend: friend))); + Navigator.of(context).push(MaterialPageRoute(builder: (context) => MessagesList(friend: friend))); await onTap?.call(); }, ); diff --git a/lib/widgets/friends_list.dart b/lib/widgets/friends_list.dart index b387cdb..d28af06 100644 --- a/lib/widgets/friends_list.dart +++ b/lib/widgets/friends_list.dart @@ -1,10 +1,11 @@ import 'dart:async'; -import 'package:contacts_plus_plus/api_client.dart'; +import 'package:contacts_plus_plus/clients/api_client.dart'; import 'package:contacts_plus_plus/apis/friend_api.dart'; import 'package:contacts_plus_plus/apis/message_api.dart'; import 'package:contacts_plus_plus/models/friend.dart'; import 'package:contacts_plus_plus/models/message.dart'; +import 'package:contacts_plus_plus/widgets/default_error_widget.dart'; import 'package:contacts_plus_plus/widgets/expanding_input_fab.dart'; import 'package:contacts_plus_plus/widgets/friend_list_tile.dart'; import 'package:contacts_plus_plus/widgets/settings_page.dart'; @@ -41,12 +42,12 @@ class _FriendsListState extends State { } void _refreshFriendsList() { - _friendsFuture = FriendApi.getFriendsList(_clientHolder!.client).then((Iterable value) async { - final unreadMessages = await MessageApi.getUserMessages(_clientHolder!.client, unreadOnly: true); + _friendsFuture = FriendApi.getFriendsList(_clientHolder!.apiClient).then((Iterable value) async { + final unreadMessages = await MessageApi.getUserMessages(_clientHolder!.apiClient, unreadOnly: true); _unreads.clear(); for (final msg in unreadMessages) { - if (msg.senderId != _clientHolder!.client.userId) { + if (msg.senderId != _clientHolder!.apiClient.userId) { final value = _unreads[msg.senderId]; if (value == null) { _unreads[msg.senderId] = [msg]; @@ -110,7 +111,7 @@ class _FriendsListState extends State { onTap: () async { if (unread.isNotEmpty) { final readBatch = MarkReadBatch( - senderId: _clientHolder!.client.userId, + senderId: _clientHolder!.apiClient.userId, ids: unread.map((e) => e.id).toList(), readTime: DateTime.now(), ); @@ -125,18 +126,11 @@ class _FriendsListState extends State { ); } else if (snapshot.hasError) { FlutterError.reportError(FlutterErrorDetails(exception: snapshot.error!, stack: snapshot.stackTrace)); - return Center( - child: Padding( - padding: const EdgeInsets.all(64), - child: Text( - "Something went wrong: ${snapshot.error}", - softWrap: true, - style: Theme - .of(context) - .textTheme - .labelMedium, - ), - ), + return DefaultErrorWidget( + message: "${snapshot.error}", + onRetry: () { + _refreshFriendsList(); + }, ); } else { return const SizedBox.shrink(); diff --git a/lib/widgets/login_screen.dart b/lib/widgets/login_screen.dart index d2e70bc..3e74ba4 100644 --- a/lib/widgets/login_screen.dart +++ b/lib/widgets/login_screen.dart @@ -1,4 +1,4 @@ -import 'package:contacts_plus_plus/api_client.dart'; +import 'package:contacts_plus_plus/clients/api_client.dart'; import 'package:contacts_plus_plus/models/authentication_data.dart'; import 'package:flutter/material.dart'; diff --git a/lib/widgets/message_audio_player.dart b/lib/widgets/message_audio_player.dart index 99b85a0..a866842 100644 --- a/lib/widgets/message_audio_player.dart +++ b/lib/widgets/message_audio_player.dart @@ -1,9 +1,9 @@ import 'dart:convert'; -import 'package:contacts_plus_plus/api_client.dart'; +import 'package:contacts_plus_plus/clients/api_client.dart'; import 'package:contacts_plus_plus/auxiliary.dart'; import 'package:contacts_plus_plus/models/message.dart'; -import 'package:contacts_plus_plus/widgets/messages.dart'; +import 'package:contacts_plus_plus/widgets/messages_list.dart'; import 'package:flutter/material.dart'; import 'package:intl/intl.dart'; import 'package:just_audio/just_audio.dart'; @@ -114,7 +114,7 @@ class _MessageAudioPlayerState extends State { ), ), const SizedBox(width: 4,), - if (widget.message.senderId == ClientHolder.of(context).client.userId) Padding( + if (widget.message.senderId == ClientHolder.of(context).apiClient.userId) Padding( padding: const EdgeInsets.only(right: 12.0), child: MessageStateIndicator(messageState: widget.message.state), ), diff --git a/lib/widgets/message_session_invite.dart b/lib/widgets/message_session_invite.dart index e478c76..24e39b5 100644 --- a/lib/widgets/message_session_invite.dart +++ b/lib/widgets/message_session_invite.dart @@ -1,11 +1,11 @@ import 'dart:convert'; -import 'package:contacts_plus_plus/api_client.dart'; +import 'package:contacts_plus_plus/clients/api_client.dart'; import 'package:contacts_plus_plus/auxiliary.dart'; import 'package:contacts_plus_plus/models/message.dart'; import 'package:contacts_plus_plus/models/session.dart'; import 'package:contacts_plus_plus/widgets/generic_avatar.dart'; -import 'package:contacts_plus_plus/widgets/messages.dart'; +import 'package:contacts_plus_plus/widgets/messages_list.dart'; import 'package:flutter/material.dart'; import 'package:intl/intl.dart'; @@ -68,7 +68,7 @@ class MessageSessionInvite extends StatelessWidget { ), ), const SizedBox(width: 4,), - if (message.senderId == ClientHolder.of(context).client.userId) Padding( + if (message.senderId == ClientHolder.of(context).apiClient.userId) Padding( padding: const EdgeInsets.only(right: 12.0), child: MessageStateIndicator(messageState: message.state), ), diff --git a/lib/widgets/messages.dart b/lib/widgets/messages_list.dart similarity index 92% rename from lib/widgets/messages.dart rename to lib/widgets/messages_list.dart index 0c033a3..7840685 100644 --- a/lib/widgets/messages.dart +++ b/lib/widgets/messages_list.dart @@ -1,27 +1,26 @@ -import 'dart:developer'; - import 'package:cached_network_image/cached_network_image.dart'; -import 'package:contacts_plus_plus/api_client.dart'; +import 'package:contacts_plus_plus/clients/api_client.dart'; import 'package:contacts_plus_plus/auxiliary.dart'; import 'package:contacts_plus_plus/models/friend.dart'; import 'package:contacts_plus_plus/models/message.dart'; import 'package:contacts_plus_plus/models/session.dart'; +import 'package:contacts_plus_plus/widgets/default_error_widget.dart'; import 'package:contacts_plus_plus/widgets/message_audio_player.dart'; import 'package:contacts_plus_plus/widgets/generic_avatar.dart'; import 'package:contacts_plus_plus/widgets/message_session_invite.dart'; import 'package:flutter/material.dart'; import 'package:intl/intl.dart'; -class Messages extends StatefulWidget { - const Messages({required this.friend, super.key}); +class MessagesList extends StatefulWidget { + const MessagesList({required this.friend, super.key}); final Friend friend; @override - State createState() => _MessagesState(); + State createState() => _MessagesListState(); } -class _MessagesState extends State { +class _MessagesListState extends State { Future? _messageCacheFuture; final TextEditingController _messageTextController = TextEditingController(); final ScrollController _sessionListScrollController = ScrollController(); @@ -79,8 +78,6 @@ class _MessagesState extends State { _messageScrollController.addListener(() { if (_messageScrollController.position.atEdge && _messageScrollController.position.pixels > 0 && _messageScrollController.position.maxScrollExtent > 0 && _messageCacheFutureComplete) { - log("Top edge hit."); - setState(() { _messageCacheFutureComplete = false; _messageCacheFuture = _clientHolder?.hub.getCache(widget.friend.id) @@ -94,7 +91,7 @@ class _MessagesState extends State { Widget build(BuildContext context) { final apiClient = ClientHolder .of(context) - .client; + .apiClient; var sessions = widget.friend.userStatus.activeSessions; final appBarColor = Theme .of(context) @@ -195,38 +192,13 @@ class _MessagesState extends State { }, ); } else if (snapshot.hasError) { - return Padding( - padding: const EdgeInsets.symmetric(horizontal: 64, vertical: 128,), - child: Center( - child: Column( - mainAxisSize: MainAxisSize.max, - mainAxisAlignment: MainAxisAlignment.center, - crossAxisAlignment: CrossAxisAlignment.center, - children: [ - Text("Failed to load messages:", style: Theme - .of(context) - .textTheme - .titleMedium,), - Padding( - padding: const EdgeInsets.all(16), - child: Text("${snapshot.error}"), - ), - TextButton.icon( - onPressed: () { - setState(() { - _loadMessages(); - }); - }, - style: TextButton.styleFrom( - padding: const EdgeInsets.symmetric( - vertical: 16, horizontal: 16), - ), - icon: const Icon(Icons.refresh), - label: const Text("Retry"), - ), - ], - ), - ), + return DefaultErrorWidget( + message: "${snapshot.error}", + onRetry: () { + setState(() { + _loadMessages(); + }); + }, ); } else { return Column( diff --git a/lib/widgets/settings_page.dart b/lib/widgets/settings_page.dart index 782468f..b8c282c 100644 --- a/lib/widgets/settings_page.dart +++ b/lib/widgets/settings_page.dart @@ -1,5 +1,6 @@ -import 'package:contacts_plus_plus/api_client.dart'; +import 'package:contacts_plus_plus/clients/api_client.dart'; import 'package:flutter/material.dart'; +import 'package:url_launcher/url_launcher.dart'; class SettingsPage extends StatelessWidget { const SettingsPage({super.key}); @@ -38,7 +39,7 @@ class SettingsPage extends StatelessWidget { TextButton(onPressed: () => Navigator.of(context).pop(), child: const Text("No")), TextButton( onPressed: () async { - await ClientHolder.of(context).client.logout(context); + await ClientHolder.of(context).apiClient.logout(context); }, child: const Text("Yes"), ), @@ -46,6 +47,35 @@ class SettingsPage extends StatelessWidget { ), ); }, + ), + ListTile( + shape: Border( + bottom: BorderSide(color: Theme.of(context).colorScheme.secondaryContainer, width: 0.5), + top: BorderSide(color: Theme.of(context).colorScheme.secondaryContainer, width: 0.5) + ), + trailing: const Icon(Icons.info_outline), + title: const Text("About Contacts++"), + onTap: () { + showAboutDialog( + context: context, + applicationVersion: "0.0.1", + applicationIcon: InkWell( + onTap: () async { + if (!await launchUrl(Uri.parse("https://github.com/Nutcake/contacts-plus-plus"), mode: LaunchMode.externalApplication)) { + if (context.mounted) { + ScaffoldMessenger.of(context).showSnackBar(const SnackBar(content: Text("Failed to open link."))); + } + } + }, + child: Container( + margin: const EdgeInsets.all(16), + constraints: const BoxConstraints(maxWidth: 64), + child: Image.asset("assets/images/logo512.png"), + ), + ), + applicationLegalese: "Created by Nutcake with love <3", + ); + }, ) ], ), diff --git a/linux/flutter/generated_plugin_registrant.cc b/linux/flutter/generated_plugin_registrant.cc index d0e7f79..38dd0bc 100644 --- a/linux/flutter/generated_plugin_registrant.cc +++ b/linux/flutter/generated_plugin_registrant.cc @@ -7,9 +7,13 @@ #include "generated_plugin_registrant.h" #include +#include 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) url_launcher_linux_registrar = + fl_plugin_registry_get_registrar_for_plugin(registry, "UrlLauncherPlugin"); + url_launcher_plugin_register_with_registrar(url_launcher_linux_registrar); } diff --git a/linux/flutter/generated_plugins.cmake b/linux/flutter/generated_plugins.cmake index b29e9ba..65240e9 100644 --- a/linux/flutter/generated_plugins.cmake +++ b/linux/flutter/generated_plugins.cmake @@ -4,6 +4,7 @@ list(APPEND FLUTTER_PLUGIN_LIST flutter_secure_storage_linux + url_launcher_linux ) list(APPEND FLUTTER_FFI_PLUGIN_LIST diff --git a/pubspec.lock b/pubspec.lock index 25250ce..dac875f 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -1,6 +1,14 @@ # Generated by pub # See https://dart.dev/tools/pub/glossary#lockfile packages: + args: + dependency: transitive + description: + name: args + sha256: "4cab82a83ffef80b262ddedf47a0a8e56ee6fbf7fe21e6e768b02792034dd440" + url: "https://pub.dev" + source: hosted + version: "2.4.0" async: dependency: transitive description: @@ -97,6 +105,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.0.5" + dbus: + dependency: transitive + description: + name: dbus + sha256: "6f07cba3f7b3448d42d015bfd3d53fe12e5b36da2423f23838efc1d5fb31a263" + url: "https://pub.dev" + source: hosted + version: "0.7.8" fake_async: dependency: transitive description: @@ -150,6 +166,30 @@ packages: url: "https://pub.dev" source: hosted version: "2.0.1" + flutter_local_notifications: + dependency: "direct main" + description: + name: flutter_local_notifications + sha256: "2876372952b65ca7f684e698eba22bda1cf581fa071dd30ba2f01900f507d0d1" + url: "https://pub.dev" + source: hosted + version: "14.0.0+1" + flutter_local_notifications_linux: + dependency: transitive + description: + name: flutter_local_notifications_linux + sha256: "909bb95de05a2e793503a2437146285a2f600cd0b3f826e26b870a334d8586d7" + url: "https://pub.dev" + source: hosted + version: "4.0.0" + flutter_local_notifications_platform_interface: + dependency: transitive + description: + name: flutter_local_notifications_platform_interface + sha256: "63235c42de5b6c99846969a27ad0209c401e6b77b0498939813725b5791c107c" + url: "https://pub.dev" + source: hosted + version: "7.0.0" flutter_phoenix: dependency: "direct main" description: @@ -400,6 +440,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.11.1" + petitparser: + dependency: transitive + description: + name: petitparser + sha256: "49392a45ced973e8d94a85fdb21293fbb40ba805fc49f2965101ae748a3683b4" + url: "https://pub.dev" + source: hosted + version: "5.1.0" platform: dependency: transitive description: @@ -525,6 +573,14 @@ packages: url: "https://pub.dev" source: hosted version: "0.4.16" + timezone: + dependency: transitive + description: + name: timezone + sha256: "1cfd8ddc2d1cfd836bc93e67b9be88c3adaeca6f40a00ca999104c30693cdca0" + url: "https://pub.dev" + source: hosted + version: "0.9.2" tuple: dependency: transitive description: @@ -541,6 +597,70 @@ packages: url: "https://pub.dev" source: hosted version: "1.3.1" + url_launcher: + dependency: "direct main" + description: + name: url_launcher + sha256: "75f2846facd11168d007529d6cd8fcb2b750186bea046af9711f10b907e1587e" + url: "https://pub.dev" + source: hosted + version: "6.1.10" + url_launcher_android: + dependency: transitive + description: + name: url_launcher_android + sha256: "22f8db4a72be26e9e3a4aa3f194b1f7afbc76d20ec141f84be1d787db2155cbd" + url: "https://pub.dev" + source: hosted + version: "6.0.31" + url_launcher_ios: + dependency: transitive + description: + name: url_launcher_ios + sha256: "9af7ea73259886b92199f9e42c116072f05ff9bea2dcb339ab935dfc957392c2" + url: "https://pub.dev" + source: hosted + version: "6.1.4" + url_launcher_linux: + dependency: transitive + description: + name: url_launcher_linux + sha256: "207f4ddda99b95b4d4868320a352d374b0b7e05eefad95a4a26f57da413443f5" + url: "https://pub.dev" + source: hosted + version: "3.0.5" + url_launcher_macos: + dependency: transitive + description: + name: url_launcher_macos + sha256: "91ee3e75ea9dadf38036200c5d3743518f4a5eb77a8d13fda1ee5764373f185e" + url: "https://pub.dev" + source: hosted + version: "3.0.5" + url_launcher_platform_interface: + dependency: transitive + description: + name: url_launcher_platform_interface + sha256: "6c9ca697a5ae218ce56cece69d46128169a58aa8653c1b01d26fcd4aad8c4370" + url: "https://pub.dev" + source: hosted + version: "2.1.2" + url_launcher_web: + dependency: transitive + description: + name: url_launcher_web + sha256: "81fe91b6c4f84f222d186a9d23c73157dc4c8e1c71489c4d08be1ad3b228f1aa" + url: "https://pub.dev" + source: hosted + version: "2.0.16" + url_launcher_windows: + dependency: transitive + description: + name: url_launcher_windows + sha256: "254708f17f7c20a9c8c471f67d86d76d4a3f9c1591aad1e15292008aceb82771" + url: "https://pub.dev" + source: hosted + version: "3.0.6" uuid: dependency: "direct main" description: @@ -573,6 +693,14 @@ packages: url: "https://pub.dev" source: hosted version: "3.1.4" + workmanager: + dependency: "direct main" + description: + name: workmanager + sha256: e0be7e35d644643f164ee45d2ce14414f0e0fdde19456aa66065f35a0b1d2ea1 + url: "https://pub.dev" + source: hosted + version: "0.5.1" xdg_directories: dependency: transitive description: @@ -581,6 +709,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.0.0" + xml: + dependency: transitive + description: + name: xml + sha256: "979ee37d622dec6365e2efa4d906c37470995871fe9ae080d967e192d88286b5" + url: "https://pub.dev" + source: hosted + version: "6.2.2" sdks: dart: ">=2.19.6 <3.0.0" flutter: ">=3.3.0" diff --git a/pubspec.yaml b/pubspec.yaml index fbe30a8..c258a6a 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -47,6 +47,9 @@ dependencies: html: ^0.15.2 just_audio: ^0.9.32 flutter_phoenix: ^1.1.1 + url_launcher: ^6.1.10 + workmanager: ^0.5.1 + flutter_local_notifications: ^14.0.0+1 dev_dependencies: flutter_test: @@ -71,9 +74,8 @@ flutter: uses-material-design: true # To add assets to your application, add an assets section, like this: - # assets: - # - images/a_dot_burr.jpeg - # - images/a_dot_ham.jpeg + assets: + - assets/images/ # An image asset can refer to one or more resolution-specific "variants", see # https://flutter.dev/assets-and-images/#resolution-aware diff --git a/test/widget_test.dart b/test/widget_test.dart deleted file mode 100644 index 174c813..0000000 --- a/test/widget_test.dart +++ /dev/null @@ -1,30 +0,0 @@ -// This is a basic Flutter widget test. -// -// To perform an interaction with a widget in your test, use the WidgetTester -// utility in the flutter_test package. For example, you can send tap and scroll -// gestures. You can also use WidgetTester to find child widgets in the widget -// tree, read text, and verify that the values of widget properties are correct. - -import 'package:flutter/material.dart'; -import 'package:flutter_test/flutter_test.dart'; - -import 'package:contacts_plus_plus/main.dart'; - -void main() { - testWidgets('Counter increments smoke test', (WidgetTester tester) async { - // Build our app and trigger a frame. - await tester.pumpWidget(const ContactsPlusPlus()); - - // Verify that our counter starts at 0. - expect(find.text('0'), findsOneWidget); - expect(find.text('1'), findsNothing); - - // Tap the '+' icon and trigger a frame. - await tester.tap(find.byIcon(Icons.add)); - await tester.pump(); - - // Verify that our counter has incremented. - expect(find.text('0'), findsNothing); - expect(find.text('1'), findsOneWidget); - }); -} diff --git a/windows/flutter/generated_plugin_registrant.cc b/windows/flutter/generated_plugin_registrant.cc index 0c50753..2048c45 100644 --- a/windows/flutter/generated_plugin_registrant.cc +++ b/windows/flutter/generated_plugin_registrant.cc @@ -7,8 +7,11 @@ #include "generated_plugin_registrant.h" #include +#include void RegisterPlugins(flutter::PluginRegistry* registry) { FlutterSecureStorageWindowsPluginRegisterWithRegistrar( registry->GetRegistrarForPlugin("FlutterSecureStorageWindowsPlugin")); + UrlLauncherWindowsRegisterWithRegistrar( + registry->GetRegistrarForPlugin("UrlLauncherWindows")); } diff --git a/windows/flutter/generated_plugins.cmake b/windows/flutter/generated_plugins.cmake index 4fc759c..de626cc 100644 --- a/windows/flutter/generated_plugins.cmake +++ b/windows/flutter/generated_plugins.cmake @@ -4,6 +4,7 @@ list(APPEND FLUTTER_PLUGIN_LIST flutter_secure_storage_windows + url_launcher_windows ) list(APPEND FLUTTER_FFI_PLUGIN_LIST