Skip to content

Commit

Permalink
adding submit and updating flutter web config parameters
Browse files Browse the repository at this point in the history
  • Loading branch information
jorgefspereira committed Oct 8, 2024
1 parent c1881f1 commit 5f1700e
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 27 deletions.
23 changes: 11 additions & 12 deletions lib/src/platform/plaid_flutter_web.dart
Original file line number Diff line number Diff line change
Expand Up @@ -58,9 +58,7 @@ class PlaidFlutterPlugin extends PlaidPlatformInterface {

/// onExit handler
options.onExit = allowInterop((error, metadata) {
Map<String, dynamic> data = {
'metadata': mapFromExitMetadata(jsToMap(metadata))
};
Map<String, dynamic> data = {'metadata': mapFromExitMetadata(jsToMap(metadata))};

if (error != null) {
data["error"] = mapFromError(jsToMap(error));
Expand All @@ -74,7 +72,6 @@ class PlaidFlutterPlugin extends PlaidPlatformInterface {
options.onLoad = allowInterop(() {});
options.token = configuration.token;
options.receivedRedirectUri = configuration.receivedRedirectUri;
options.env = configuration.token.split('-')[1];

_plaid = await Plaid.create(options);
}
Expand All @@ -91,6 +88,14 @@ class PlaidFlutterPlugin extends PlaidPlatformInterface {
_plaid?.destroy();
}

/// It allows the client application to submit additional user-collected data to the Link flow (e.g. a user phone number) for the Layer product.
@override
Future<void> submit(SubmissionData data) async {
SubmitConfiguration options = SubmitConfiguration();
options.phone_number = data.phoneNumber;
_plaid?.submit(options);
}

/// Dispose objects
void _dispose() {
_onObjectsController?.close();
Expand Down Expand Up @@ -129,10 +134,7 @@ class PlaidFlutterPlugin extends PlaidPlatformInterface {

Map<dynamic, dynamic> institutionMap = jsToMap(data["institution"]);

result["institution"] = {
"id": institutionMap["institution_id"] ?? "",
"name": institutionMap["name"] ?? ""
};
result["institution"] = {"id": institutionMap["institution_id"] ?? "", "name": institutionMap["name"] ?? ""};
result["linkSessionId"] = data["link_session_id"] ?? "";

List<dynamic> accountsList = [];
Expand Down Expand Up @@ -166,10 +168,7 @@ class PlaidFlutterPlugin extends PlaidPlatformInterface {

if (data["institution"] != null) {
Map<dynamic, dynamic> institutionMap = jsToMap(data["institution"]);
result["institution"] = {
"id": institutionMap["institution_id"] ?? "",
"name": institutionMap["name"] ?? ""
};
result["institution"] = {"id": institutionMap["institution_id"] ?? "", "name": institutionMap["name"] ?? ""};
}

return result;
Expand Down
23 changes: 8 additions & 15 deletions lib/src/platform/plaid_js_map.dart
Original file line number Diff line number Diff line change
Expand Up @@ -11,35 +11,28 @@ class Plaid {
external void open();
external void exit();
external void destroy();
external void submit(SubmitConfiguration options);
}

@JS()
@anonymous
class WebConfiguration {
external String? clientName;
external String? env;
external String? key;
external List<dynamic>? product;
external List<dynamic>? countryCodes;
external String? webhook;
external String? linkCustomizationName;
external String? language;
external String? oauthNonce;
external String? oauthRedirectUri;
external String? oauthStateId;
external String? token;
external String? paymentToken;
external String? userLegalName;
external String? userEmailAddress;
external String? userPhoneNumber;
external String? receivedRedirectUri;
external String? key;

external void Function(String publicToken, dynamic metadata) onSuccess;
external void Function() onLoad;
external void Function(dynamic error, dynamic metadata) onExit;
external void Function(String eventName, dynamic metadata) onEvent;
}

@JS()
@anonymous
class SubmitConfiguration {
external String? phone_number;
}

/// A workaround to converting an object from JS to a Dart Map.
Map jsToMap(jsObject) {
if (jsObject == null) {
Expand Down

0 comments on commit 5f1700e

Please sign in to comment.