Skip to content

Commit

Permalink
feat: 🚧 Web browser dapp communication with aeWallet RPC
Browse files Browse the repository at this point in the history
  • Loading branch information
Chralu committed Dec 19, 2024
1 parent cff2fac commit e41ca7a
Show file tree
Hide file tree
Showing 5 changed files with 34 additions and 11 deletions.
28 changes: 20 additions & 8 deletions lib/router/router.authenticated.dart
Original file line number Diff line number Diff line change
Expand Up @@ -229,13 +229,25 @@ final _authenticatedRoutes = [
),
GoRoute(
path: DAppsBoardWebview.routerPage,
pageBuilder: (context, state) => NoTransitionPage<void>(
key: state.pageKey,
child: DAppsBoardWebview(
dappUrl: (state.extra! as Map<String, dynamic>)['dappUrl']! as String,
dappName: (state.extra! as Map<String, dynamic>)['dappName']! as String,
dappCode: (state.extra! as Map<String, dynamic>)['dappCode']! as String,
),
),
pageBuilder: (context, state) {
final extraData = state.extra as Map<String, dynamic>?;
final dappUrl =
extraData?['dappUrl'] ?? state.uri.queryParameters['dappUrl'] ?? '';
final dappName =
extraData?['dappName'] ?? state.uri.queryParameters['dappName'] ?? '';
final dappCode =
extraData?['dappCode'] ?? state.uri.queryParameters['dappCode'] ?? '';
final deeplink = state.uri.queryParameters['deeplink'] != null;

return NoTransitionPage<void>(
key: state.pageKey,
child: DAppsBoardWebview(
dappUrl: dappUrl,
dappName: dappName,
dappCode: dappCode,
deeplink: deeplink,
),
);
},
),
];
5 changes: 5 additions & 0 deletions lib/router/router.dart
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,11 @@ class RoutesPath {
if (deeplinkRpcReceiver.canHandle(state.matchedLocation)) {
await deeplinkRpcReceiver.handle(state.matchedLocation);
}
if (state.uri.scheme == 'aewallet' &&
state.uri.path + state.uri.host == DAppsBoardWebview.routerPage) {
final query = state.uri.query;
return '${DAppsBoardWebview.routerPage}?deeplink&$query';
}
return null;
},
errorBuilder: (context, state) => SheetSkeleton(
Expand Down
6 changes: 6 additions & 0 deletions lib/ui/views/dapps_board/layouts/dapps_board_webview.dart
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import 'package:aewallet/infrastructure/rpc/awc_webview.dart';
import 'package:aewallet/ui/themes/archethic_theme.dart';
import 'package:aewallet/ui/views/main/components/sheet_appbar.dart';
import 'package:aewallet/ui/views/main/home_page.dart';
import 'package:aewallet/ui/views/sheets/dapp_sheet_icon_refresh.dart';
import 'package:aewallet/ui/views/sheets/unavailable_feature_warning.dart';
import 'package:aewallet/ui/widgets/components/loading_list_header.dart';
Expand All @@ -17,6 +18,7 @@ class DAppsBoardWebview extends ConsumerWidget
required this.dappUrl,
required this.dappName,
required this.dappCode,
this.deeplink,
super.key,
});

Expand All @@ -25,6 +27,7 @@ class DAppsBoardWebview extends ConsumerWidget
final String dappUrl;
final String dappName;
final String dappCode;
final bool? deeplink;

@override
Widget build(BuildContext context, WidgetRef ref) {
Expand All @@ -49,6 +52,9 @@ class DAppsBoardWebview extends ConsumerWidget
key: const Key('back'),
color: ArchethicTheme.text,
onPressed: () {
if (deeplink != null) {
context.go(HomePage.routerPage);
}
context.pop();
},
),
Expand Down
4 changes: 2 additions & 2 deletions pubspec.lock
Original file line number Diff line number Diff line change
Expand Up @@ -894,10 +894,10 @@ packages:
dependency: "direct main"
description:
name: go_router
sha256: b465e99ce64ba75e61c8c0ce3d87b66d8ac07f0b35d0a7e0263fcfc10f99e836
sha256: "2fd11229f59e23e967b0775df8d5948a519cd7e1e8b6e849729e010587b46539"
url: "https://pub.dev"
source: hosted
version: "13.2.5"
version: "14.6.2"
gql:
dependency: transitive
description:
Expand Down
2 changes: 1 addition & 1 deletion pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,7 @@ dependencies:
get_it: ^7.2.0

# A declarative router for Flutter based on Navigation 2 supporting deep linking, data-driven routes and more
go_router: ^13.2.0
go_router: ^14.6.2

# Hive is a lightweight and blazing fast key-value database written in pure Dart
hive: ^2.2.3
Expand Down

0 comments on commit e41ca7a

Please sign in to comment.