Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: add mock pfi verification widget #4

Merged
merged 1 commit into from
Dec 30, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 0 additions & 6 deletions frontend/ios/Podfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,13 @@ PODS:
- path_provider_foundation (0.0.1):
- Flutter
- FlutterMacOS
- url_launcher_ios (0.0.1):
- Flutter
- webview_flutter_wkwebview (0.0.1):
- Flutter

DEPENDENCIES:
- Flutter (from `Flutter`)
- flutter_secure_storage (from `.symlinks/plugins/flutter_secure_storage/ios`)
- path_provider_foundation (from `.symlinks/plugins/path_provider_foundation/darwin`)
- url_launcher_ios (from `.symlinks/plugins/url_launcher_ios/ios`)
- webview_flutter_wkwebview (from `.symlinks/plugins/webview_flutter_wkwebview/ios`)

EXTERNAL SOURCES:
Expand All @@ -24,16 +21,13 @@ EXTERNAL SOURCES:
:path: ".symlinks/plugins/flutter_secure_storage/ios"
path_provider_foundation:
:path: ".symlinks/plugins/path_provider_foundation/darwin"
url_launcher_ios:
:path: ".symlinks/plugins/url_launcher_ios/ios"
webview_flutter_wkwebview:
:path: ".symlinks/plugins/webview_flutter_wkwebview/ios"

SPEC CHECKSUMS:
Flutter: f04841e97a9d0b0a8025694d0796dd46242b2854
flutter_secure_storage: 23fc622d89d073675f2eaa109381aefbcf5a49be
path_provider_foundation: 29f094ae23ebbca9d3d0cec13889cd9060c0e943
url_launcher_ios: bf5ce03e0e2088bad9cc378ea97fa0ed5b49673b
webview_flutter_wkwebview: 2e2d318f21a5e036e2c3f26171342e95908bd60a

PODFILE CHECKSUM: 70d9d25280d0dd177a5f637cdb0f0b0b12c6a189
Expand Down
20 changes: 9 additions & 11 deletions frontend/lib/features/home/home_page.dart
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import 'package:flutter/material.dart';
import 'package:flutter_starter/features/pfis/pfi_providers.dart';
import 'package:flutter_starter/features/pfis/pfi_verification_page.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:url_launcher/url_launcher.dart';

class HomePage extends HookConsumerWidget {
const HomePage({super.key});
Expand All @@ -14,23 +14,21 @@ class HomePage extends HookConsumerWidget {
body: ListView(
children: [
...pfis.map(
(e) => ListTile(
title: Text(e.name),
subtitle: Text(e.id),
(pfi) => ListTile(
title: Text(pfi.name),
subtitle: Text(pfi.id),
trailing: const Icon(Icons.chevron_right),
onTap: () {
_launchUrl(e.widgetUrl);
Navigator.of(context).push(
MaterialPageRoute(
builder: (_) => PfiVerificationPage(pfi: pfi),
),
);
},
),
)
],
),
);
}

Future<void> _launchUrl(String url) async {
if (!await launchUrl(Uri.parse(url))) {
throw Exception('Could not launch $url');
}
}
}
13 changes: 11 additions & 2 deletions frontend/lib/features/pfis/pfi_providers.dart
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,16 @@ import 'package:hooks_riverpod/hooks_riverpod.dart';

final pfisProvider = Provider<List<Pfi>>(
(ref) => [
Pfi(id: 'africa', name: 'Africa', widgetUrl: 'https://tbd.website'),
Pfi(id: 'mexico', name: 'Mexico', widgetUrl: 'https://block.xyz'),
Pfi(
id: 'africa',
name: 'Africa',
widgetUrl: 'https://tbd.website',
),
Pfi(
id: 'mexico',
name: 'Mexico',
widgetUrl:
'https://robustdisastrousstartups.wesbillman.repl.co/?proof=moeisreal&callback_uri=didpay://wes',
),
],
);
49 changes: 49 additions & 0 deletions frontend/lib/features/pfis/pfi_verification_page.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
import 'package:webview_flutter/webview_flutter.dart';
import 'package:flutter/material.dart';
import 'package:flutter_starter/features/pfis/pfi.dart';

class PfiVerificationPage extends StatelessWidget {
final Pfi pfi;

const PfiVerificationPage({required this.pfi, super.key});

@override
Widget build(BuildContext context) {
final controller = WebViewController()
..setBackgroundColor(Theme.of(context).colorScheme.background)
..setNavigationDelegate(
NavigationDelegate(
onProgress: (int progress) {
// Update loading bar.
},
onPageStarted: (String url) {},
onPageFinished: (String url) {},
onWebResourceError: (WebResourceError error) {},
onNavigationRequest: (NavigationRequest request) {
if (request.url.startsWith('didpay://')) {
_handleDidPay(context, request.url);
return NavigationDecision.prevent;
}
return NavigationDecision.navigate;
},
),
)
..loadRequest(Uri.parse(pfi.widgetUrl));

return Scaffold(
appBar: AppBar(title: const Text('PFI Verification')),
body: WebViewWidget(
controller: controller,
),
);
}

void _handleDidPay(BuildContext context, String url) {
final snackBar = SnackBar(
content: Text('Received custom URL callback: $url'),
);

ScaffoldMessenger.of(context).showSnackBar(snackBar);
Navigator.of(context).pop();
}
}
68 changes: 2 additions & 66 deletions frontend/pubspec.lock
Original file line number Diff line number Diff line change
Expand Up @@ -387,70 +387,6 @@ packages:
url: "https://pub.dev"
source: hosted
version: "1.3.2"
url_launcher:
dependency: "direct main"
description:
name: url_launcher
sha256: e9aa5ea75c84cf46b3db4eea212523591211c3cf2e13099ee4ec147f54201c86
url: "https://pub.dev"
source: hosted
version: "6.2.2"
url_launcher_android:
dependency: transitive
description:
name: url_launcher_android
sha256: "31222ffb0063171b526d3e569079cf1f8b294075ba323443fdc690842bfd4def"
url: "https://pub.dev"
source: hosted
version: "6.2.0"
url_launcher_ios:
dependency: transitive
description:
name: url_launcher_ios
sha256: bba3373219b7abb6b5e0d071b0fe66dfbe005d07517a68e38d4fc3638f35c6d3
url: "https://pub.dev"
source: hosted
version: "6.2.1"
url_launcher_linux:
dependency: transitive
description:
name: url_launcher_linux
sha256: ab360eb661f8879369acac07b6bb3ff09d9471155357da8443fd5d3cf7363811
url: "https://pub.dev"
source: hosted
version: "3.1.1"
url_launcher_macos:
dependency: transitive
description:
name: url_launcher_macos
sha256: b7244901ea3cf489c5335bdacda07264a6e960b1c1b1a9f91e4bc371d9e68234
url: "https://pub.dev"
source: hosted
version: "3.1.0"
url_launcher_platform_interface:
dependency: transitive
description:
name: url_launcher_platform_interface
sha256: "980e8d9af422f477be6948bdfb68df8433be71f5743a188968b0c1b887807e50"
url: "https://pub.dev"
source: hosted
version: "2.2.0"
url_launcher_web:
dependency: transitive
description:
name: url_launcher_web
sha256: "7286aec002c8feecc338cc33269e96b73955ab227456e9fb2a91f7fab8a358e9"
url: "https://pub.dev"
source: hosted
version: "2.2.2"
url_launcher_windows:
dependency: transitive
description:
name: url_launcher_windows
sha256: ecf9725510600aa2bb6d7ddabe16357691b6d2805f66216a97d1b881e21beff7
url: "https://pub.dev"
source: hosted
version: "3.1.1"
vector_math:
dependency: transitive
description:
Expand Down Expand Up @@ -516,5 +452,5 @@ packages:
source: hosted
version: "1.0.3"
sdks:
dart: ">=3.2.0 <4.0.0"
flutter: ">=3.16.0"
dart: ">=3.2.0-194.0.dev <4.0.0"
flutter: ">=3.10.0"
1 change: 0 additions & 1 deletion frontend/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@ dependencies:
flutter_secure_storage: ^9.0.0
hooks_riverpod: ^2.4.9
intl: ^0.18.1
url_launcher: ^6.2.2
webview_flutter: ^4.4.2

dev_dependencies:
Expand Down