From c08878b35a1553ff52fd716dab5ae4e9c9932e20 Mon Sep 17 00:00:00 2001 From: Christien Rioux Date: Sat, 22 Jul 2023 23:29:10 -0400 Subject: [PATCH] xfer --- assets/images/icon.svg | 98 +++++++++++++ assets/images/splash.svg | 129 ++++++++++++++++++ assets/images/title.svg | 41 ++++++ assets/sources/Pointless.ttf | Bin 0 -> 8756 bytes assets/sources/icon.afdesign | Bin 0 -> 133725 bytes assets/sources/splash.afdesign | Bin 0 -> 44840 bytes assets/sources/title.afdesign | Bin 0 -> 8794 bytes ios/Runner.xcodeproj/project.pbxproj | 24 ++-- ios/Runner/Info.plist | 8 +- lib/app.dart | 1 + lib/components/account_bubble.dart | 63 +++++++++ lib/entities/user_login.dart | 4 +- lib/entities/user_login.freezed.dart | 74 +++++----- lib/entities/user_login.g.dart | 11 +- lib/main.dart | 25 +++- lib/pages/index.dart | 35 ++++- lib/pages/login.dart | 55 ++++++-- lib/providers/local_accounts.dart | 85 ++++-------- lib/providers/local_accounts.g.dart | 2 +- lib/providers/logins.dart | 59 ++++---- lib/providers/logins.g.dart | 2 +- lib/router/router_notifier.dart | 51 +++---- lib/theming/theme_service.dart | 6 +- lib/veilid_support/dht_record_crypto.dart | 9 +- lib/veilid_support/identity_master.dart | 5 +- lib/veilid_support/processor.dart | 2 + lib/veilid_support/table_db.dart | 4 +- .../{init.dart => veilid_init.dart} | 20 ++- lib/veilid_support/veilid_init.g.dart | 24 ++++ lib/veilid_support/veilid_support.dart | 2 +- linux/flutter/generated_plugin_registrant.cc | 8 ++ linux/flutter/generated_plugins.cmake | 2 + macos/Flutter/GeneratedPluginRegistrant.swift | 4 + macos/Podfile.lock | 14 +- macos/Runner.xcodeproj/project.pbxproj | 15 ++ pubspec.lock | 82 ++++++++++- pubspec.yaml | 17 ++- .../flutter/generated_plugin_registrant.cc | 6 + windows/flutter/generated_plugins.cmake | 2 + 39 files changed, 771 insertions(+), 218 deletions(-) create mode 100644 assets/images/icon.svg create mode 100644 assets/images/splash.svg create mode 100644 assets/images/title.svg create mode 100644 assets/sources/Pointless.ttf create mode 100644 assets/sources/icon.afdesign create mode 100644 assets/sources/splash.afdesign create mode 100644 assets/sources/title.afdesign create mode 100644 lib/components/account_bubble.dart rename lib/veilid_support/{init.dart => veilid_init.dart} (76%) create mode 100644 lib/veilid_support/veilid_init.g.dart diff --git a/assets/images/icon.svg b/assets/images/icon.svg new file mode 100644 index 0000000..1c71ccd --- /dev/null +++ b/assets/images/icon.svg @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/images/splash.svg b/assets/images/splash.svg new file mode 100644 index 0000000..703ff14 --- /dev/null +++ b/assets/images/splash.svg @@ -0,0 +1,129 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/images/title.svg b/assets/images/title.svg new file mode 100644 index 0000000..251d26e --- /dev/null +++ b/assets/images/title.svg @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/sources/Pointless.ttf b/assets/sources/Pointless.ttf new file mode 100644 index 0000000000000000000000000000000000000000..fa0acfde8876768ae5c8b4bedfa593fe287ee19f GIT binary patch literal 8756 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 OK6t_Y7y8%zC*t3iESKm2 literal 0 HcmV?d00001 diff --git a/assets/sources/icon.afdesign b/assets/sources/icon.afdesign new file mode 100644 index 0000000000000000000000000000000000000000..c228c6fd8c57021e22b1d91e83457faf9ac989fa GIT binary patch literal 133725 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

`E~| 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 M=b>@J3iFb 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 QsWw38-UH35yLQq44}uEM!vFvP literal 0 HcmV?d00001 diff --git a/assets/sources/title.afdesign b/assets/sources/title.afdesign new file mode 100644 index 0000000000000000000000000000000000000000..00dce75b87abc08fcd2b476ffb46dcd3a2b91a4e GIT binary patch literal 8794 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 literal 0 HcmV?d00001 diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index 2d09887..d7a1871 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 50; + objectVersion = 51; objects = { /* Begin PBXBuildFile section */ @@ -121,7 +121,6 @@ 66884EE8E4C818DD7F73E828 /* Pods-Runner.release.xcconfig */, DC6D2E60CBCA1AC9F82D654F /* Pods-Runner.profile.xcconfig */, ); - name = Pods; path = Pods; sourceTree = ""; }; @@ -355,15 +354,16 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; - CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; - DEVELOPMENT_TEAM = ZJPQSFX5MW; + DEVELOPMENT_TEAM = XP5LBLT7M7; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; + INFOPLIST_KEY_CFBundleDisplayName = VeilidChat; + INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.social-networking"; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); - PRODUCT_BUNDLE_IDENTIFIER = com.vekoni.veilidchat.veilidchat; + PRODUCT_BUNDLE_IDENTIFIER = com.veilid.veilidchat; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_VERSION = 5.0; @@ -484,15 +484,16 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; - CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; - DEVELOPMENT_TEAM = ZJPQSFX5MW; + DEVELOPMENT_TEAM = XP5LBLT7M7; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; + INFOPLIST_KEY_CFBundleDisplayName = VeilidChat; + INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.social-networking"; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); - PRODUCT_BUNDLE_IDENTIFIER = com.vekoni.veilidchat.veilidchat; + PRODUCT_BUNDLE_IDENTIFIER = com.veilid.veilidchat; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; @@ -507,15 +508,16 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; - CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; - DEVELOPMENT_TEAM = ZJPQSFX5MW; + DEVELOPMENT_TEAM = XP5LBLT7M7; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; + INFOPLIST_KEY_CFBundleDisplayName = VeilidChat; + INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.social-networking"; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); - PRODUCT_BUNDLE_IDENTIFIER = com.vekoni.veilidchat.veilidchat; + PRODUCT_BUNDLE_IDENTIFIER = com.veilid.veilidchat; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_VERSION = 5.0; diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist index 371e80d..308c43d 100644 --- a/ios/Runner/Info.plist +++ b/ios/Runner/Info.plist @@ -2,6 +2,8 @@ + CADisableMinimumFrameDurationOnPhone + CFBundleDevelopmentRegion $(DEVELOPMENT_LANGUAGE) CFBundleDisplayName @@ -24,6 +26,8 @@ $(FLUTTER_BUILD_NUMBER) LSRequiresIPhoneOS + UIApplicationSupportsIndirectInputEvents + UILaunchStoryboardName LaunchScreen UIMainStoryboardFile @@ -43,9 +47,5 @@ UIViewControllerBasedStatusBarAppearance - CADisableMinimumFrameDurationOnPhone - - UIApplicationSupportsIndirectInputEvents - diff --git a/lib/app.dart b/lib/app.dart index 21937dd..ea085f6 100644 --- a/lib/app.dart +++ b/lib/app.dart @@ -25,6 +25,7 @@ class VeilidChatApp extends ConsumerWidget { return LocalizationProvider( state: LocalizationProvider.of(context).state, child: MaterialApp.router( + debugShowCheckedModeBanner: false, routerConfig: router, title: 'VeilidChat', theme: theme, diff --git a/lib/components/account_bubble.dart b/lib/components/account_bubble.dart new file mode 100644 index 0000000..aa072c6 --- /dev/null +++ b/lib/components/account_bubble.dart @@ -0,0 +1,63 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:window_manager/window_manager.dart'; +import 'package:user_profile_avatar/user_profile_avatar.dart'; + +import '../providers/local_accounts.dart'; +import '../providers/logins.dart'; + +class AccountBubble extends ConsumerWidget { + const AccountBubble({super.key}); + + void _onReorder(WidgetRef ref, int oldIndex, int newIndex) { + final accounts = ref.read(localAccountsProvider.notifier); + accounts.reorderAccount(oldIndex, newIndex); + // xxx fix this so we can await this properly, use FutureBuilder or whatever + } + + @override + Widget build(BuildContext context, WidgetRef ref) { + windowManager.setTitleBarStyle(TitleBarStyle.normal); + final accounts = ref.watch(localAccountsProvider); + final logins = ref.watch(loginsProvider); + + return Scaffold( + appBar: AppBar( + centerTitle: true, + title: const Text('Accounts'), + actions: [ + IconButton( + icon: const Icon(Icons.settings), + tooltip: 'Accessibility', + onPressed: () { + ScaffoldMessenger.of(context).showSnackBar(const SnackBar( + content: + Text('Accessibility and language options coming soon'))); + }, + ), + ], + ), + body: Center( + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + const Spacer(), + accounts.when( + error: (obj, err) => Text("error loading accounts: $err"), + loading: () => CircularProgressIndicator(), + data: (accountList) => ReorderableGridView.extent( + maxCrossAxisExtent: 128, + onReorder: (oldIndex, newIndex) => + _onReorder(ref, oldIndex, newIndex), + children: accountList.map((account) { + return AccountBubble(account); + }), + )), + const Spacer(), + ], + ), + ), + ); + } +} diff --git a/lib/entities/user_login.dart b/lib/entities/user_login.dart index 2853634..3d2352b 100644 --- a/lib/entities/user_login.dart +++ b/lib/entities/user_login.dart @@ -12,9 +12,9 @@ part 'user_login.g.dart'; class UserLogin with _$UserLogin { const factory UserLogin({ // Master record key for the user used to index the local accounts table - required TypedKey accountMasterKey, + required TypedKey accountMasterRecordKey, // The identity secret as unlocked from the local accounts table - required TypedSecret secretKey, + required TypedSecret identitySecret, // The time this login was most recently used required Timestamp lastActive, }) = _UserLogin; diff --git a/lib/entities/user_login.freezed.dart b/lib/entities/user_login.freezed.dart index f979e8c..f13f3f6 100644 --- a/lib/entities/user_login.freezed.dart +++ b/lib/entities/user_login.freezed.dart @@ -21,9 +21,9 @@ UserLogin _$UserLoginFromJson(Map json) { /// @nodoc mixin _$UserLogin { // Master record key for the user used to index the local accounts table - Typed get accountMasterKey => + Typed get accountMasterRecordKey => throw _privateConstructorUsedError; // The identity secret as unlocked from the local accounts table - Typed get secretKey => + Typed get identitySecret => throw _privateConstructorUsedError; // The time this login was most recently used Timestamp get lastActive => throw _privateConstructorUsedError; @@ -39,8 +39,8 @@ abstract class $UserLoginCopyWith<$Res> { _$UserLoginCopyWithImpl<$Res, UserLogin>; @useResult $Res call( - {Typed accountMasterKey, - Typed secretKey, + {Typed accountMasterRecordKey, + Typed identitySecret, Timestamp lastActive}); } @@ -57,18 +57,18 @@ class _$UserLoginCopyWithImpl<$Res, $Val extends UserLogin> @pragma('vm:prefer-inline') @override $Res call({ - Object? accountMasterKey = null, - Object? secretKey = null, + Object? accountMasterRecordKey = null, + Object? identitySecret = null, Object? lastActive = null, }) { return _then(_value.copyWith( - accountMasterKey: null == accountMasterKey - ? _value.accountMasterKey - : accountMasterKey // ignore: cast_nullable_to_non_nullable + accountMasterRecordKey: null == accountMasterRecordKey + ? _value.accountMasterRecordKey + : accountMasterRecordKey // ignore: cast_nullable_to_non_nullable as Typed, - secretKey: null == secretKey - ? _value.secretKey - : secretKey // ignore: cast_nullable_to_non_nullable + identitySecret: null == identitySecret + ? _value.identitySecret + : identitySecret // ignore: cast_nullable_to_non_nullable as Typed, lastActive: null == lastActive ? _value.lastActive @@ -86,8 +86,8 @@ abstract class _$$_UserLoginCopyWith<$Res> implements $UserLoginCopyWith<$Res> { @override @useResult $Res call( - {Typed accountMasterKey, - Typed secretKey, + {Typed accountMasterRecordKey, + Typed identitySecret, Timestamp lastActive}); } @@ -102,18 +102,18 @@ class __$$_UserLoginCopyWithImpl<$Res> @pragma('vm:prefer-inline') @override $Res call({ - Object? accountMasterKey = null, - Object? secretKey = null, + Object? accountMasterRecordKey = null, + Object? identitySecret = null, Object? lastActive = null, }) { return _then(_$_UserLogin( - accountMasterKey: null == accountMasterKey - ? _value.accountMasterKey - : accountMasterKey // ignore: cast_nullable_to_non_nullable + accountMasterRecordKey: null == accountMasterRecordKey + ? _value.accountMasterRecordKey + : accountMasterRecordKey // ignore: cast_nullable_to_non_nullable as Typed, - secretKey: null == secretKey - ? _value.secretKey - : secretKey // ignore: cast_nullable_to_non_nullable + identitySecret: null == identitySecret + ? _value.identitySecret + : identitySecret // ignore: cast_nullable_to_non_nullable as Typed, lastActive: null == lastActive ? _value.lastActive @@ -127,8 +127,8 @@ class __$$_UserLoginCopyWithImpl<$Res> @JsonSerializable() class _$_UserLogin implements _UserLogin { const _$_UserLogin( - {required this.accountMasterKey, - required this.secretKey, + {required this.accountMasterRecordKey, + required this.identitySecret, required this.lastActive}); factory _$_UserLogin.fromJson(Map json) => @@ -136,17 +136,17 @@ class _$_UserLogin implements _UserLogin { // Master record key for the user used to index the local accounts table @override - final Typed accountMasterKey; + final Typed accountMasterRecordKey; // The identity secret as unlocked from the local accounts table @override - final Typed secretKey; + final Typed identitySecret; // The time this login was most recently used @override final Timestamp lastActive; @override String toString() { - return 'UserLogin(accountMasterKey: $accountMasterKey, secretKey: $secretKey, lastActive: $lastActive)'; + return 'UserLogin(accountMasterRecordKey: $accountMasterRecordKey, identitySecret: $identitySecret, lastActive: $lastActive)'; } @override @@ -154,18 +154,18 @@ class _$_UserLogin implements _UserLogin { return identical(this, other) || (other.runtimeType == runtimeType && other is _$_UserLogin && - (identical(other.accountMasterKey, accountMasterKey) || - other.accountMasterKey == accountMasterKey) && - (identical(other.secretKey, secretKey) || - other.secretKey == secretKey) && + (identical(other.accountMasterRecordKey, accountMasterRecordKey) || + other.accountMasterRecordKey == accountMasterRecordKey) && + (identical(other.identitySecret, identitySecret) || + other.identitySecret == identitySecret) && (identical(other.lastActive, lastActive) || other.lastActive == lastActive)); } @JsonKey(ignore: true) @override - int get hashCode => - Object.hash(runtimeType, accountMasterKey, secretKey, lastActive); + int get hashCode => Object.hash( + runtimeType, accountMasterRecordKey, identitySecret, lastActive); @JsonKey(ignore: true) @override @@ -183,17 +183,17 @@ class _$_UserLogin implements _UserLogin { abstract class _UserLogin implements UserLogin { const factory _UserLogin( - {required final Typed accountMasterKey, - required final Typed secretKey, + {required final Typed accountMasterRecordKey, + required final Typed identitySecret, required final Timestamp lastActive}) = _$_UserLogin; factory _UserLogin.fromJson(Map json) = _$_UserLogin.fromJson; @override // Master record key for the user used to index the local accounts table - Typed get accountMasterKey; + Typed get accountMasterRecordKey; @override // The identity secret as unlocked from the local accounts table - Typed get secretKey; + Typed get identitySecret; @override // The time this login was most recently used Timestamp get lastActive; @override diff --git a/lib/entities/user_login.g.dart b/lib/entities/user_login.g.dart index 5207f85..c8f114b 100644 --- a/lib/entities/user_login.g.dart +++ b/lib/entities/user_login.g.dart @@ -7,16 +7,17 @@ part of 'user_login.dart'; // ************************************************************************** _$_UserLogin _$$_UserLoginFromJson(Map json) => _$_UserLogin( - accountMasterKey: - Typed.fromJson(json['account_master_key']), - secretKey: Typed.fromJson(json['secret_key']), + accountMasterRecordKey: Typed.fromJson( + json['account_master_record_key']), + identitySecret: + Typed.fromJson(json['identity_secret']), lastActive: Timestamp.fromJson(json['last_active']), ); Map _$$_UserLoginToJson(_$_UserLogin instance) => { - 'account_master_key': instance.accountMasterKey.toJson(), - 'secret_key': instance.secretKey.toJson(), + 'account_master_record_key': instance.accountMasterRecordKey.toJson(), + 'identity_secret': instance.identitySecret.toJson(), 'last_active': instance.lastActive.toJson(), }; diff --git a/lib/main.dart b/lib/main.dart index 90458b8..4da6aa8 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -3,12 +3,14 @@ import 'dart:async'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:flutter_translate/flutter_translate.dart'; +import 'package:window_manager/window_manager.dart'; + import 'log/log.dart'; import 'veilid_support/veilid_support.dart'; import 'theming/theming.dart'; import 'app.dart'; import 'dart:io'; -import 'package:flutter_translate/flutter_translate.dart'; void main() async { // Disable all debugprints in release mode @@ -29,13 +31,30 @@ void main() async { final themeService = await ThemeService.instance; var initTheme = themeService.initial; - // Start up Veilid and Veilid processor in the background - unawaited(initializeVeilid()); + // Manage window on desktop platforms + if (Platform.isWindows || Platform.isLinux || Platform.isMacOS) { + await windowManager.ensureInitialized(); + + const windowOptions = WindowOptions( + size: Size(768, 1024), + center: true, + backgroundColor: Colors.transparent, + skipTaskbar: false, + titleBarStyle: TitleBarStyle.hidden, + ); + windowManager.waitUntilReadyToShow(windowOptions, () async { + await windowManager.show(); + await windowManager.focus(); + }); + } // Make localization delegate var delegate = await LocalizationDelegate.create( fallbackLocale: 'en_US', supportedLocales: ['en_US']); + // Start up Veilid and Veilid processor in the background + unawaited(initializeVeilid()); + // Run the app // Hot reloads will only restart this part, not Veilid runApp(ProviderScope( diff --git a/lib/pages/index.dart b/lib/pages/index.dart index 51b67de..7bc646b 100644 --- a/lib/pages/index.dart +++ b/lib/pages/index.dart @@ -1,4 +1,7 @@ import 'package:flutter/material.dart'; +import 'package:radix_colors/radix_colors.dart'; +import 'package:flutter_svg/flutter_svg.dart'; +import 'package:window_manager/window_manager.dart'; class IndexPage extends StatelessWidget { const IndexPage({super.key}); @@ -6,8 +9,34 @@ class IndexPage extends StatelessWidget { @override Widget build(BuildContext context) { - return const Scaffold( - body: Center(child: Text("Index Page")), - ); + windowManager.setTitleBarStyle(TitleBarStyle.hidden); + return Scaffold( + body: DecoratedBox( + decoration: BoxDecoration( + gradient: LinearGradient( + begin: Alignment.topCenter, + end: Alignment.bottomCenter, + colors: [ + RadixColors.dark.plum.step4, + RadixColors.dark.plum.step2, + ])), + child: Center( + child: ConstrainedBox( + constraints: const BoxConstraints(maxHeight: 300), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Expanded( + flex: 2, + child: SvgPicture.asset( + "assets/images/icon.svg", + )), + Expanded( + flex: 1, + child: SvgPicture.asset( + "assets/images/title.svg", + )) + ]))), + )); } } diff --git a/lib/pages/login.dart b/lib/pages/login.dart index f515776..4e09e49 100644 --- a/lib/pages/login.dart +++ b/lib/pages/login.dart @@ -1,30 +1,61 @@ import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; -import '../state/active_logins_state.dart'; +import 'package:window_manager/window_manager.dart'; +import 'package:reorderable_grid/reorderable_grid.dart'; + +import '../providers/local_accounts.dart'; +import '../providers/logins.dart'; class LoginPage extends ConsumerWidget { const LoginPage({super.key}); static const path = '/login'; + void _onReorder(WidgetRef ref, int oldIndex, int newIndex) { + final accounts = ref.read(localAccountsProvider.notifier); + accounts.reorderAccount(oldIndex, newIndex); + // xxx fix this so we can await this properly, use FutureBuilder or whatever + } + @override Widget build(BuildContext context, WidgetRef ref) { + windowManager.setTitleBarStyle(TitleBarStyle.normal); + final accounts = ref.watch(localAccountsProvider); + final logins = ref.watch(loginsProvider); + return Scaffold( - appBar: null, + appBar: AppBar( + centerTitle: true, + title: const Text('Accounts'), + actions: [ + IconButton( + icon: const Icon(Icons.settings), + tooltip: 'Accessibility', + onPressed: () { + ScaffoldMessenger.of(context).showSnackBar(const SnackBar( + content: + Text('Accessibility and language options coming soon'))); + }, + ), + ], + ), body: Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center, children: [ - const Text("Login Page"), - ElevatedButton( - onPressed: () async { - await ref.watch(authNotifierProvider.notifier).login( - "myEmail", - "myPassword", - ); - }, - child: const Text("Login"), - ), + const Spacer(), + accounts.when( + error: (obj, err) => Text("error loading accounts: $err"), + loading: () => CircularProgressIndicator(), + data: (accountList) => ReorderableGridView.extent( + maxCrossAxisExtent: 128, + onReorder: (oldIndex, newIndex) => + _onReorder(ref, oldIndex, newIndex), + children: accountList.map((account) { + return AccountBubble(account); + }), + )), + const Spacer(), ], ), ), diff --git a/lib/providers/local_accounts.dart b/lib/providers/local_accounts.dart index ed5268b..cff0084 100644 --- a/lib/providers/local_accounts.dart +++ b/lib/providers/local_accounts.dart @@ -10,6 +10,7 @@ import '../tools/tools.dart'; import '../veilid_support/veilid_support.dart'; import '../entities/entities.dart'; import '../entities/proto.dart' as proto; +import 'logins.dart'; part 'local_accounts.g.dart'; @@ -38,58 +39,15 @@ class LocalAccounts extends _$LocalAccounts ////////////////////////////////////////////////////////////// /// Mutators and Selectors - /// Creates a new master identity and returns it with its secrets - Future newIdentityMaster() async { - final crypto = await Veilid.instance.bestCryptoSystem(); - final dhtctx = (await Veilid.instance.routingContext()) - .withPrivacy() - .withSequencing(Sequencing.ensureOrdered); - - // IdentityMaster DHT record is public/unencrypted - return (await DHTRecord.create(dhtctx, - crypto: const DHTRecordCryptoPublic())) - .deleteScope((masterRec) async { - // Identity record is private - return (await DHTRecord.create(dhtctx)).deleteScope((identityRec) async { - // Make IdentityMaster - final masterRecordKey = masterRec.key(); - final masterOwner = masterRec.ownerKeyPair()!; - final masterSigBuf = masterRecordKey.decode() - ..addAll(masterOwner.key.decode()); - - final identityRecordKey = identityRec.key(); - final identityOwner = identityRec.ownerKeyPair()!; - final identitySigBuf = identityRecordKey.decode() - ..addAll(identityOwner.key.decode()); - - final identitySignature = - await crypto.signWithKeyPair(masterOwner, identitySigBuf); - final masterSignature = - await crypto.signWithKeyPair(identityOwner, masterSigBuf); - - final identityMaster = IdentityMaster( - identityRecordKey: identityRecordKey, - identityPublicKey: identityOwner.key, - masterRecordKey: masterRecordKey, - masterPublicKey: masterOwner.key, - identitySignature: identitySignature, - masterSignature: masterSignature); - - // Write identity master to master dht key - await masterRec.eventualWriteJson(identityMaster); - - // Make empty identity - const identity = Identity(accountRecords: IMapConst({})); - - // Write empty identity to identity dht key - await identityRec.eventualWriteJson(identity); - - return IdentityMasterWithSecrets( - identityMaster: identityMaster, - masterSecret: masterOwner.secret, - identitySecret: identityOwner.secret); - }); - }); + /// Reorder accounts + Future reorderAccount(int oldIndex, int newIndex) async { + final localAccounts = state.requireValue; + var removedItem = Output(); + final updated = localAccounts + .removeAt(oldIndex, removedItem) + .insert(newIndex, removedItem.value!); + await store(updated); + state = AsyncValue.data(updated); } /// Creates a new account associated with master identity @@ -99,6 +57,7 @@ class LocalAccounts extends _$LocalAccounts EncryptionKeyType encryptionKeyType, String encryptionKey, proto.Account account) async { + final veilid = await eventualVeilid.future; final localAccounts = state.requireValue; // Encrypt identitySecret with key @@ -111,8 +70,8 @@ class LocalAccounts extends _$LocalAccounts identitySecretSaltBytes = Uint8List(0); case EncryptionKeyType.pin: case EncryptionKeyType.password: - final cs = await Veilid.instance - .getCryptoSystem(identityMaster.identityRecordKey.kind); + final cs = + await veilid.getCryptoSystem(identityMaster.identityRecordKey.kind); final ekbytes = Uint8List.fromList(utf8.encode(encryptionKey)); final nonce = await cs.randomNonce(); identitySecretSaltBytes = nonce.decode(); @@ -135,7 +94,7 @@ class LocalAccounts extends _$LocalAccounts /////// Add account with profile to DHT // Create private routing context - final dhtctx = (await Veilid.instance.routingContext()) + final dhtctx = (await veilid.routingContext()) .withPrivacy() .withSequencing(Sequencing.ensureOrdered); @@ -171,6 +130,22 @@ class LocalAccounts extends _$LocalAccounts return localAccount; } + /// Remove an account and wipe the messages for this account from this device + Future deleteAccount(TypedKey accountMasterRecordKey) async { + final logins = ref.read(loginsProvider.notifier); + await logins.logout(accountMasterRecordKey); + + final localAccounts = state.requireValue; + final updated = localAccounts.removeWhere( + (la) => la.identityMaster.masterRecordKey == accountMasterRecordKey); + await store(updated); + state = AsyncValue.data(updated); + + // xxx todo: wipe messages + + return true; + } + /// Import an account from another VeilidChat instance /// Recover an account with the master identity secret diff --git a/lib/providers/local_accounts.g.dart b/lib/providers/local_accounts.g.dart index 1a94454..04e9dbe 100644 --- a/lib/providers/local_accounts.g.dart +++ b/lib/providers/local_accounts.g.dart @@ -6,7 +6,7 @@ part of 'local_accounts.dart'; // RiverpodGenerator // ************************************************************************** -String _$localAccountsHash() => r'41f70b78e71c8b3faa2cd1f2a96084fbb373324c'; +String _$localAccountsHash() => r'694236fa91156c00b3f7d6985fbc55b8871646ab'; /// See also [LocalAccounts]. @ProviderFor(LocalAccounts) diff --git a/lib/providers/logins.dart b/lib/providers/logins.dart index 09fb1e9..8764dbb 100644 --- a/lib/providers/logins.dart +++ b/lib/providers/logins.dart @@ -4,10 +4,10 @@ import 'dart:typed_data'; import 'package:veilid/veilid.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; -import 'package:veilidchat/providers/repositories.dart'; import '../veilid_support/veilid_support.dart'; import '../entities/entities.dart'; +import 'local_accounts.dart'; part 'logins.g.dart'; @@ -34,19 +34,20 @@ class Logins extends _$Logins with AsyncTableDBBacked { ////////////////////////////////////////////////////////////// /// Mutators and Selectors - Future setActiveUserLogin(TypedKey accountMasterKey) async { + Future switchToAccount(TypedKey? accountMasterRecordKey) async { final current = state.requireValue; - for (final userLogin in current.userLogins) { - if (userLogin.accountMasterRecordKey == accountMasterKey) { - state = AsyncValue.data( - current.copyWith(activeUserLogin: accountMasterKey)); - return; - } + if (accountMasterRecordKey != null) { + // Assert the specified record key can be found, will throw if not + final _ = current.userLogins.firstWhere( + (ul) => ul.accountMasterRecordKey == accountMasterRecordKey); } - throw Exception("User not found"); + final updated = current.copyWith(activeUserLogin: accountMasterRecordKey); + await store(updated); + state = AsyncValue.data(updated); } Future loginWithNone(TypedKey accountMasterRecordKey) async { + final veilid = await eventualVeilid.future; final localAccounts = ref.read(localAccountsProvider).requireValue; // Get account, throws if not found @@ -64,7 +65,7 @@ class Logins extends _$Logins with AsyncTableDBBacked { SecretKey.fromBytes(localAccount.identitySecretKeyBytes); // Validate this secret with the identity public key - final cs = await Veilid.instance + final cs = await veilid .getCryptoSystem(localAccount.identityMaster.identityRecordKey.kind); final keyOk = await cs.validateKeyPair( localAccount.identityMaster.identityPublicKey, identitySecret); @@ -74,15 +75,15 @@ class Logins extends _$Logins with AsyncTableDBBacked { // Add to user logins and select it final current = state.requireValue; - final now = Veilid.instance.now(); + final now = veilid.now(); final updated = current.copyWith( userLogins: current.userLogins.replaceFirstWhere( (ul) => ul.accountMasterRecordKey == accountMasterRecordKey, (ul) => ul != null ? ul.copyWith(lastActive: now) : UserLogin( - accountMasterKey: accountMasterRecordKey, - secretKey: + accountMasterRecordKey: accountMasterRecordKey, + identitySecret: TypedSecret(kind: cs.kind(), value: identitySecret), lastActive: now), addIfNotFound: true), @@ -95,6 +96,7 @@ class Logins extends _$Logins with AsyncTableDBBacked { Future loginWithPasswordOrPin( TypedKey accountMasterRecordKey, String encryptionKey) async { + final veilid = await eventualVeilid.future; final localAccounts = ref.read(localAccountsProvider).requireValue; // Get account, throws if not found @@ -108,7 +110,7 @@ class Logins extends _$Logins with AsyncTableDBBacked { localAccount.encryptionKeyType != EncryptionKeyType.pin) { throw Exception("Wrong authentication type"); } - final cs = await Veilid.instance + final cs = await veilid .getCryptoSystem(localAccount.identityMaster.identityRecordKey.kind); final ekbytes = Uint8List.fromList(utf8.encode(encryptionKey)); final eksalt = localAccount.identitySecretSaltBytes; @@ -126,15 +128,15 @@ class Logins extends _$Logins with AsyncTableDBBacked { // Add to user logins and select it final current = state.requireValue; - final now = Veilid.instance.now(); + final now = veilid.now(); final updated = current.copyWith( userLogins: current.userLogins.replaceFirstWhere( (ul) => ul.accountMasterRecordKey == accountMasterRecordKey, (ul) => ul != null ? ul.copyWith(lastActive: now) : UserLogin( - accountMasterKey: accountMasterRecordKey, - secretKey: + accountMasterRecordKey: accountMasterRecordKey, + identitySecret: TypedSecret(kind: cs.kind(), value: identitySecret), lastActive: now), addIfNotFound: true), @@ -145,25 +147,18 @@ class Logins extends _$Logins with AsyncTableDBBacked { return true; } - Future logout() async { + Future logout(TypedKey? accountMasterRecordKey) async { final current = state.requireValue; - if (current.activeUserLogin == null) { + final logoutUser = accountMasterRecordKey ?? current.activeUserLogin; + if (logoutUser == null) { return; } final updated = current.copyWith( - activeUserLogin: null, - userLogins: current.userLogins.removeWhere( - (ul) => ul.accountMasterRecordKey == current.activeUserLogin)); - await store(updated); - state = AsyncValue.data(updated); - } - - Future switchToAccount(TypedKey accountMasterRecordKey) async { - final current = state.requireValue; - final userLogin = current.userLogins.firstWhere( - (ul) => ul.accountMasterRecordKey == accountMasterRecordKey); - final updated = - current.copyWith(activeUserLogin: userLogin.accountMasterRecordKey); + activeUserLogin: current.activeUserLogin == logoutUser + ? null + : current.activeUserLogin, + userLogins: current.userLogins + .removeWhere((ul) => ul.accountMasterRecordKey == logoutUser)); await store(updated); state = AsyncValue.data(updated); } diff --git a/lib/providers/logins.g.dart b/lib/providers/logins.g.dart index 7d597e5..8b4d078 100644 --- a/lib/providers/logins.g.dart +++ b/lib/providers/logins.g.dart @@ -6,7 +6,7 @@ part of 'logins.dart'; // RiverpodGenerator // ************************************************************************** -String _$loginsHash() => r'379514b8b6623d59cb89b4f128be5953d5ea62a6'; +String _$loginsHash() => r'cf7f1a2343340a4dc4ebfa4009e846d0a39c0167'; /// See also [Logins]. @ProviderFor(Logins) diff --git a/lib/router/router_notifier.dart b/lib/router/router_notifier.dart index 3e2f1f1..31e68a4 100644 --- a/lib/router/router_notifier.dart +++ b/lib/router/router_notifier.dart @@ -3,56 +3,42 @@ import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:go_router/go_router.dart'; import '../pages/pages.dart'; -import '../state/active_logins_state.dart'; +import '../providers/logins.dart'; -/// This notifier is meant to implement the [Listenable] our [GoRouter] needs. -/// -/// We aim to trigger redirects whenever's needed. -/// This is done by calling our (only) listener everytime we want to notify stuff. -/// This allows to centralize global redirecting logic in this class. -/// In this simple case, we just listen to auth changes. -/// -/// SIDE NOTE. -/// This might look overcomplicated at a first glance; -/// Instead, this method aims to follow some good some good practices: -/// 1. It doesn't require us to pipe down any `ref` parameter -/// 2. It works as a complete replacement for [ChangeNotifier] (it's a [Listenable] implementation) -/// 3. It allows for listening to multiple providers if needed (we do have a [Ref] now!) class RouterNotifier extends AutoDisposeAsyncNotifier implements Listenable { + /// GoRouter listener VoidCallback? routerListener; - bool isAuth = false; // Useful for our global redirect function + /// Router state for redirect + bool hasActiveUserLogin = false; + + /// AsyncNotifier build @override Future build() async { - // One could watch more providers and write logic accordingly - - isAuth = await ref.watch( - authNotifierProvider.selectAsync((data) => data != null), + hasActiveUserLogin = await ref.watch( + loginsProvider.selectAsync((data) => data.activeUserLogin != null), ); + // When this notifier's state changes, inform GoRouter ref.listenSelf((_, __) { - // One could write more conditional logic for when to call redirection if (state.isLoading) return; routerListener?.call(); }); } - /// Redirects the user when our authentication changes + /// Redirects when our state changes String? redirect(BuildContext context, GoRouterState state) { if (this.state.isLoading || this.state.hasError) return null; - final isIndex = state.location == IndexPage.path; - if (isIndex) { - return isAuth ? HomePage.path : LoginPage.path; + switch (state.location) { + case IndexPage.path: + return hasActiveUserLogin ? HomePage.path : LoginPage.path; + case LoginPage.path: + return hasActiveUserLogin ? HomePage.path : null; + default: + return hasActiveUserLogin ? null : LoginPage.path; } - - final isLoggingIn = state.location == LoginPage.path; - if (isLoggingIn) { - return isAuth ? HomePage.path : null; - } - - return isAuth ? null : IndexPage.path; } /// Our application routes @@ -103,6 +89,9 @@ class RouterNotifier extends AutoDisposeAsyncNotifier ), ]; + /////////////////////////////////////////////////////////////////////////// + /// Listenable + /// Adds [GoRouter]'s listener as specified by its [Listenable]. /// [GoRouteInformationProvider] uses this method on creation to handle its /// internal [ChangeNotifier]. diff --git a/lib/theming/theme_service.dart b/lib/theming/theme_service.dart index 54830ea..c861efb 100644 --- a/lib/theming/theme_service.dart +++ b/lib/theming/theme_service.dart @@ -24,7 +24,8 @@ class ThemeService { String? themeName = prefs.getString('previousThemeName'); if (themeName == null) { final isPlatformDark = - WidgetsBinding.instance.window.platformBrightness == Brightness.dark; + WidgetsBinding.instance.platformDispatcher.platformBrightness == + Brightness.dark; themeName = isPlatformDark ? 'light' : 'dark'; } return themeName; @@ -34,7 +35,8 @@ class ThemeService { String? themeName = prefs.getString('theme'); if (themeName == null) { final isPlatformDark = - WidgetsBinding.instance.window.platformBrightness == Brightness.dark; + WidgetsBinding.instance.platformDispatcher.platformBrightness == + Brightness.dark; themeName = isPlatformDark ? 'dark' : 'light'; } return allThemes[themeName]; diff --git a/lib/veilid_support/dht_record_crypto.dart b/lib/veilid_support/dht_record_crypto.dart index 2b9ff7f..538f57b 100644 --- a/lib/veilid_support/dht_record_crypto.dart +++ b/lib/veilid_support/dht_record_crypto.dart @@ -3,6 +3,8 @@ import 'dart:async'; import 'package:veilid/veilid.dart'; import 'dart:typed_data'; +import 'veilid_init.dart'; + abstract class DHTRecordCrypto { FutureOr encrypt(Uint8List data, int subkey); FutureOr decrypt(Uint8List data, int subkey); @@ -21,15 +23,16 @@ class DHTRecordCryptoPrivate implements DHTRecordCrypto { static Future fromTypedKeyPair( TypedKeyPair typedKeyPair) async { - final cryptoSystem = - await Veilid.instance.getCryptoSystem(typedKeyPair.kind); + final veilid = await eventualVeilid.future; + final cryptoSystem = await veilid.getCryptoSystem(typedKeyPair.kind); final secretKey = typedKeyPair.secret; return DHTRecordCryptoPrivate._(cryptoSystem, secretKey); } static Future fromSecret( CryptoKind kind, SharedSecret secretKey) async { - final cryptoSystem = await Veilid.instance.getCryptoSystem(kind); + final veilid = await eventualVeilid.future; + final cryptoSystem = await veilid.getCryptoSystem(kind); return DHTRecordCryptoPrivate._(cryptoSystem, secretKey); } diff --git a/lib/veilid_support/identity_master.dart b/lib/veilid_support/identity_master.dart index 2ab93ba..2ba09d1 100644 --- a/lib/veilid_support/identity_master.dart +++ b/lib/veilid_support/identity_master.dart @@ -6,8 +6,9 @@ import 'veilid_support.dart'; /// Creates a new master identity and returns it with its secrets Future newIdentityMaster() async { - final crypto = await Veilid.instance.bestCryptoSystem(); - final dhtctx = (await Veilid.instance.routingContext()) + final veilid = await eventualVeilid.future; + final crypto = await veilid.bestCryptoSystem(); + final dhtctx = (await veilid.routingContext()) .withPrivacy() .withSequencing(Sequencing.ensureOrdered); diff --git a/lib/veilid_support/processor.dart b/lib/veilid_support/processor.dart index c306a09..755e423 100644 --- a/lib/veilid_support/processor.dart +++ b/lib/veilid_support/processor.dart @@ -24,6 +24,8 @@ class Processor { _veilidVersion = 'Failed to get veilid version.'; } + log.info("Veilid version: $_veilidVersion"); + // In case of hot restart shut down first try { await Veilid.instance.shutdownVeilidCore(); diff --git a/lib/veilid_support/table_db.dart b/lib/veilid_support/table_db.dart index f7f1873..c08ef0e 100644 --- a/lib/veilid_support/table_db.dart +++ b/lib/veilid_support/table_db.dart @@ -1,9 +1,11 @@ import 'package:veilid/veilid.dart'; +import 'veilid_init.dart'; Future tableScope( String name, Future Function(VeilidTableDB tdb) callback, {int columnCount = 1}) async { - VeilidTableDB tableDB = await Veilid.instance.openTableDB(name, columnCount); + final veilid = await eventualVeilid.future; + VeilidTableDB tableDB = await veilid.openTableDB(name, columnCount); try { return await callback(tableDB); } finally { diff --git a/lib/veilid_support/init.dart b/lib/veilid_support/veilid_init.dart similarity index 76% rename from lib/veilid_support/init.dart rename to lib/veilid_support/veilid_init.dart index 4df12ba..6a0ce9e 100644 --- a/lib/veilid_support/init.dart +++ b/lib/veilid_support/veilid_init.dart @@ -1,8 +1,14 @@ +import 'dart:async'; + +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:riverpod_annotation/riverpod_annotation.dart'; import 'package:veilid/veilid.dart'; import 'package:flutter/foundation.dart'; import 'processor.dart'; import 'veilid_log.dart'; +part 'veilid_init.g.dart'; + Future getVeilidVersion() async { String veilidVersion; try { @@ -45,11 +51,12 @@ void _initVeilid() { } } -bool initialized = false; +Completer eventualVeilid = Completer(); Processor processor = Processor(); Future initializeVeilid() async { - if (initialized) { + // Ensure this runs only once + if (eventualVeilid.isCompleted) { return; } @@ -62,5 +69,12 @@ Future initializeVeilid() async { // Startup Veilid await processor.startup(); - initialized = true; + // Share the initialized veilid instance to the rest of the app + eventualVeilid.complete(Veilid.instance); +} + +// Expose the Veilid instance as a FutureProvider +@riverpod +FutureOr veilidInstance(VeilidInstanceRef ref) async { + return await eventualVeilid.future; } diff --git a/lib/veilid_support/veilid_init.g.dart b/lib/veilid_support/veilid_init.g.dart new file mode 100644 index 0000000..80e9777 --- /dev/null +++ b/lib/veilid_support/veilid_init.g.dart @@ -0,0 +1,24 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'veilid_init.dart'; + +// ************************************************************************** +// RiverpodGenerator +// ************************************************************************** + +String _$veilidInstanceHash() => r'6086fc1e7a83e7af81ee05ee84954507d38cb748'; + +/// See also [veilidInstance]. +@ProviderFor(veilidInstance) +final veilidInstanceProvider = AutoDisposeFutureProvider.internal( + veilidInstance, + name: r'veilidInstanceProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$veilidInstanceHash, + dependencies: null, + allTransitiveDependencies: null, +); + +typedef VeilidInstanceRef = AutoDisposeFutureProviderRef; +// ignore_for_file: unnecessary_raw_strings, subtype_of_sealed_class, invalid_use_of_internal_member, do_not_use_environment, prefer_const_constructors, public_member_api_docs, avoid_private_typedef_functions diff --git a/lib/veilid_support/veilid_support.dart b/lib/veilid_support/veilid_support.dart index 78c1deb..6ce5b4d 100644 --- a/lib/veilid_support/veilid_support.dart +++ b/lib/veilid_support/veilid_support.dart @@ -1,7 +1,7 @@ export 'config.dart'; export 'processor.dart'; export 'veilid_log.dart'; -export 'init.dart'; +export 'veilid_init.dart'; export 'dht_record.dart'; export 'dht_record_crypto.dart'; export 'table_db.dart'; diff --git a/linux/flutter/generated_plugin_registrant.cc b/linux/flutter/generated_plugin_registrant.cc index cebc32d..d87d6c1 100644 --- a/linux/flutter/generated_plugin_registrant.cc +++ b/linux/flutter/generated_plugin_registrant.cc @@ -6,10 +6,18 @@ #include "generated_plugin_registrant.h" +#include #include +#include void fl_register_plugins(FlPluginRegistry* registry) { + g_autoptr(FlPluginRegistrar) screen_retriever_registrar = + fl_plugin_registry_get_registrar_for_plugin(registry, "ScreenRetrieverPlugin"); + screen_retriever_plugin_register_with_registrar(screen_retriever_registrar); g_autoptr(FlPluginRegistrar) veilid_registrar = fl_plugin_registry_get_registrar_for_plugin(registry, "VeilidPlugin"); veilid_plugin_register_with_registrar(veilid_registrar); + g_autoptr(FlPluginRegistrar) window_manager_registrar = + fl_plugin_registry_get_registrar_for_plugin(registry, "WindowManagerPlugin"); + window_manager_plugin_register_with_registrar(window_manager_registrar); } diff --git a/linux/flutter/generated_plugins.cmake b/linux/flutter/generated_plugins.cmake index 003d7b5..3befce2 100644 --- a/linux/flutter/generated_plugins.cmake +++ b/linux/flutter/generated_plugins.cmake @@ -3,7 +3,9 @@ # list(APPEND FLUTTER_PLUGIN_LIST + screen_retriever veilid + window_manager ) list(APPEND FLUTTER_FFI_PLUGIN_LIST diff --git a/macos/Flutter/GeneratedPluginRegistrant.swift b/macos/Flutter/GeneratedPluginRegistrant.swift index 529d2da..af0af8b 100644 --- a/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/macos/Flutter/GeneratedPluginRegistrant.swift @@ -6,11 +6,15 @@ import FlutterMacOS import Foundation import path_provider_foundation +import screen_retriever import shared_preferences_foundation import veilid +import window_manager func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin")) + ScreenRetrieverPlugin.register(with: registry.registrar(forPlugin: "ScreenRetrieverPlugin")) SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin")) VeilidPlugin.register(with: registry.registrar(forPlugin: "VeilidPlugin")) + WindowManagerPlugin.register(with: registry.registrar(forPlugin: "WindowManagerPlugin")) } diff --git a/macos/Podfile.lock b/macos/Podfile.lock index 3f6eb42..f3ef21a 100644 --- a/macos/Podfile.lock +++ b/macos/Podfile.lock @@ -3,33 +3,45 @@ PODS: - path_provider_foundation (0.0.1): - Flutter - FlutterMacOS + - screen_retriever (0.0.1): + - FlutterMacOS - shared_preferences_foundation (0.0.1): - Flutter - FlutterMacOS - veilid (0.0.1): - FlutterMacOS + - window_manager (0.2.0): + - FlutterMacOS DEPENDENCIES: - FlutterMacOS (from `Flutter/ephemeral`) - path_provider_foundation (from `Flutter/ephemeral/.symlinks/plugins/path_provider_foundation/darwin`) + - screen_retriever (from `Flutter/ephemeral/.symlinks/plugins/screen_retriever/macos`) - shared_preferences_foundation (from `Flutter/ephemeral/.symlinks/plugins/shared_preferences_foundation/darwin`) - veilid (from `Flutter/ephemeral/.symlinks/plugins/veilid/macos`) + - window_manager (from `Flutter/ephemeral/.symlinks/plugins/window_manager/macos`) EXTERNAL SOURCES: FlutterMacOS: :path: Flutter/ephemeral path_provider_foundation: :path: Flutter/ephemeral/.symlinks/plugins/path_provider_foundation/darwin + screen_retriever: + :path: Flutter/ephemeral/.symlinks/plugins/screen_retriever/macos shared_preferences_foundation: :path: Flutter/ephemeral/.symlinks/plugins/shared_preferences_foundation/darwin veilid: :path: Flutter/ephemeral/.symlinks/plugins/veilid/macos + window_manager: + :path: Flutter/ephemeral/.symlinks/plugins/window_manager/macos SPEC CHECKSUMS: FlutterMacOS: 8f6f14fa908a6fb3fba0cd85dbd81ec4b251fb24 - path_provider_foundation: eaf5b3e458fc0e5fbb9940fb09980e853fe058b8 + path_provider_foundation: 29f094ae23ebbca9d3d0cec13889cd9060c0e943 + screen_retriever: 59634572a57080243dd1bf715e55b6c54f241a38 shared_preferences_foundation: 5b919d13b803cadd15ed2dc053125c68730e5126 veilid: a54f57b7bcf0e4e072fe99272d76ca126b2026d0 + window_manager: 3a1844359a6295ab1e47659b1a777e36773cd6e8 PODFILE CHECKSUM: ff0a9a3ce75ee73f200ca7e2f47745698c917ef9 diff --git a/macos/Runner.xcodeproj/project.pbxproj b/macos/Runner.xcodeproj/project.pbxproj index 5bf5bf8..8d95c36 100644 --- a/macos/Runner.xcodeproj/project.pbxproj +++ b/macos/Runner.xcodeproj/project.pbxproj @@ -425,9 +425,13 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements; + "CODE_SIGN_IDENTITY[sdk=macosx*]" = "-"; CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; + DEVELOPMENT_TEAM = XP5LBLT7M7; INFOPLIST_FILE = Runner/Info.plist; + INFOPLIST_KEY_CFBundleDisplayName = VeilidChat; + INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.social-networking"; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/../Frameworks", @@ -438,6 +442,7 @@ /usr/lib/swift, "../../veilid/target/lipo-darwin", ); + PRODUCT_BUNDLE_IDENTIFIER = com.veilid.veilidchat; PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_VERSION = 5.0; }; @@ -557,9 +562,13 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements; + "CODE_SIGN_IDENTITY[sdk=macosx*]" = "-"; CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; + DEVELOPMENT_TEAM = XP5LBLT7M7; INFOPLIST_FILE = Runner/Info.plist; + INFOPLIST_KEY_CFBundleDisplayName = VeilidChat; + INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.social-networking"; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/../Frameworks", @@ -570,6 +579,7 @@ /usr/lib/swift, "../../veilid/target/lipo-darwin", ); + PRODUCT_BUNDLE_IDENTIFIER = com.veilid.veilidchat; PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 5.0; @@ -583,9 +593,13 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Runner/Release.entitlements; + "CODE_SIGN_IDENTITY[sdk=macosx*]" = "-"; CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; + DEVELOPMENT_TEAM = XP5LBLT7M7; INFOPLIST_FILE = Runner/Info.plist; + INFOPLIST_KEY_CFBundleDisplayName = VeilidChat; + INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.social-networking"; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/../Frameworks", @@ -596,6 +610,7 @@ /usr/lib/swift, "../../veilid/target/lipo-darwin", ); + PRODUCT_BUNDLE_IDENTIFIER = com.veilid.veilidchat; PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_VERSION = 5.0; }; diff --git a/pubspec.lock b/pubspec.lock index d27e740..1e84197 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -339,6 +339,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.3.6" + flutter_svg: + dependency: "direct main" + description: + name: flutter_svg + sha256: "8c5d68a82add3ca76d792f058b186a0599414f279f00ece4830b9b231b570338" + url: "https://pub.dev" + source: hosted + version: "2.0.7" flutter_test: dependency: "direct dev" description: flutter @@ -549,6 +557,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.8.3" + path_parsing: + dependency: transitive + description: + name: path_parsing + sha256: e3e67b1629e6f7e8100b367d3db6ba6af4b1f0bb80f64db18ef1fbabd2fa9ccf + url: "https://pub.dev" + source: hosted + version: "1.0.1" path_provider: dependency: "direct main" description: @@ -597,6 +613,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.7" + petitparser: + dependency: transitive + description: + name: petitparser + sha256: cb3798bef7fc021ac45b308f4b51208a152792445cce0448c9a4ba5879dd8750 + url: "https://pub.dev" + source: hosted + version: "5.4.0" platform: dependency: transitive description: @@ -653,6 +677,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.0.4" + reorderable_grid: + dependency: "direct main" + description: + name: reorderable_grid + sha256: e482ecb05c0a8c45a383d19b39cdc5c3c02f16339c6699c81d5978e602409fff + url: "https://pub.dev" + source: hosted + version: "1.0.7" riverpod: dependency: transitive description: @@ -693,6 +725,14 @@ packages: url: "https://pub.dev" source: hosted version: "0.27.7" + screen_retriever: + dependency: transitive + description: + name: screen_retriever + sha256: "4931f226ca158123ccd765325e9fbf360bfed0af9b460a10f960f9bb13d58323" + url: "https://pub.dev" + source: hosted + version: "0.1.6" shared_preferences: dependency: "direct main" description: @@ -890,6 +930,30 @@ packages: url: "https://pub.dev" source: hosted version: "3.0.7" + vector_graphics: + dependency: transitive + description: + name: vector_graphics + sha256: "670f6e07aca990b4a2bcdc08a784193c4ccdd1932620244c3a86bb72a0eac67f" + url: "https://pub.dev" + source: hosted + version: "1.1.7" + vector_graphics_codec: + dependency: transitive + description: + name: vector_graphics_codec + sha256: "7451721781d967db9933b63f5733b1c4533022c0ba373a01bdd79d1a5457f69f" + url: "https://pub.dev" + source: hosted + version: "1.1.7" + vector_graphics_compiler: + dependency: transitive + description: + name: vector_graphics_compiler + sha256: "80a13c613c8bde758b1464a1755a7b3a8f2b6cec61fbf0f5a53c94c30f03ba2e" + url: "https://pub.dev" + source: hosted + version: "1.1.7" vector_math: dependency: transitive description: @@ -904,7 +968,7 @@ packages: path: "../veilid/veilid-flutter" relative: true source: path - version: "0.1.4" + version: "0.1.6" watcher: dependency: transitive description: @@ -929,6 +993,14 @@ packages: url: "https://pub.dev" source: hosted version: "5.0.5" + window_manager: + dependency: "direct main" + description: + name: window_manager + sha256: "9eef00e393e7f9308309ce9a8b2398c9ee3ca78b50c96e8b4f9873945693ac88" + url: "https://pub.dev" + source: hosted + version: "0.3.5" xdg_directories: dependency: transitive description: @@ -937,6 +1009,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.0.1" + xml: + dependency: transitive + description: + name: xml + sha256: "5bc72e1e45e941d825fd7468b9b4cc3b9327942649aeb6fc5cdbf135f0a86e84" + url: "https://pub.dev" + source: hosted + version: "6.3.0" yaml: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 4ebb7d6..468732c 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -39,6 +39,10 @@ dependencies: fixnum: ^1.1.0 protobuf: ^3.0.0 charcode: ^1.3.1 + window_manager: ^0.3.5 + flutter_svg: ^2.0.7 + reorderable_grid: ^1.0.7 + user_profile_avatar: ^0.1.2 dev_dependencies: flutter_test: @@ -50,14 +54,13 @@ dev_dependencies: riverpod_generator: ^2.2.3 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/i18n/en.json + - assets/images/splash.svg + - assets/images/icon.svg + - assets/images/title.svg + # An image asset can refer to one or more resolution-specific "variants", see # https://flutter.dev/assets-and-images/#resolution-aware diff --git a/windows/flutter/generated_plugin_registrant.cc b/windows/flutter/generated_plugin_registrant.cc index 72dbdef..4235bd9 100644 --- a/windows/flutter/generated_plugin_registrant.cc +++ b/windows/flutter/generated_plugin_registrant.cc @@ -6,9 +6,15 @@ #include "generated_plugin_registrant.h" +#include #include +#include void RegisterPlugins(flutter::PluginRegistry* registry) { + ScreenRetrieverPluginRegisterWithRegistrar( + registry->GetRegistrarForPlugin("ScreenRetrieverPlugin")); VeilidPluginRegisterWithRegistrar( registry->GetRegistrarForPlugin("VeilidPlugin")); + WindowManagerPluginRegisterWithRegistrar( + registry->GetRegistrarForPlugin("WindowManagerPlugin")); } diff --git a/windows/flutter/generated_plugins.cmake b/windows/flutter/generated_plugins.cmake index 658ec85..feaf6f0 100644 --- a/windows/flutter/generated_plugins.cmake +++ b/windows/flutter/generated_plugins.cmake @@ -3,7 +3,9 @@ # list(APPEND FLUTTER_PLUGIN_LIST + screen_retriever veilid + window_manager ) list(APPEND FLUTTER_FFI_PLUGIN_LIST