linkWidgetUrl method

Future<Uri> linkWidgetUrl({
  1. required String redirectUrl,
  2. List<ProviderSlug>? filterOnProviders,
})

Implementation

Future<Uri> linkWidgetUrl(
    {required String redirectUrl,
    List<ProviderSlug>? filterOnProviders}) async {
  String? userId = await core.currentUserId();
  if (userId == null) {
    throw Exception("SDK is not signed in.");
  }

  List<String>? rawfilterOnProviders =
      filterOnProviders?.map((slug) => slug.toString()).toList();

  Response<CreateLinkResponse> response = await linkService.createLink(
      userId, null, redirectUrl,
      filterOnProviders: rawfilterOnProviders);

  if (response.isSuccessful) {
    String host, env;

    switch (_environment) {
      case Environment.dev:
        host = "link.dev.tryvital.io";
        env = "sandbox";
        break;
      case Environment.sandbox:
        host = "link.tryvital.io";
        env = "sandbox";
        break;
      case Environment.production:
        host = "link.tryvital.io";
        env = "production";
        break;
    }

    CreateLinkResponse resp = response.body!;
    Uri widgetUrl =
        Uri(scheme: "https", host: host, path: "/", queryParameters: {
      "token": resp.linkToken,
      "env": env,
      "region": _region.name,
    });
    return widgetUrl;
  } else {
    throw Exception("Link token creation failed: ${response.error}");
  }
}