getShopifyMultipassToken static method

Future<Map<String, dynamic>> getShopifyMultipassToken({
  1. required String phone,
  2. required String email,
  3. String? id,
  4. String? state,
})

Implementation

static Future<Map<String, dynamic>> getShopifyMultipassToken({
  required String phone,
  required String email,
  String? id,
  String? state,
}) async {
  try {
    final gokwik = DioClient().getClient();

    final results = await Future.wait([
      cacheInstance.getValue(cdnConfigInstance.getKeys(StorageKeyKeys.gkAccessTokenKey)!),
      cacheInstance.getValue(cdnConfigInstance.getKeys(StorageKeyKeys.checkoutAccessTokenKey)!),
      cacheInstance.getValue(cdnConfigInstance.getKeys(StorageKeyKeys.gkNotificationEnabled)!),
    ]);

    final accessToken = results[0];
    final checkoutAccessToken = results[1];
    final notifications = results[2];

    if (accessToken != null) {
      gokwik.options.headers[cdnConfigInstance.getHeader(APIHeaderKeys.gkAccessToken)!] = accessToken;
    }
    if (checkoutAccessToken != null) {
      gokwik.options.headers[cdnConfigInstance.getHeader(APIHeaderKeys.checkoutAccessToken)!] =
          checkoutAccessToken;
    }

    final response = await gokwik.post(
      cdnConfigInstance.getEndpoint(APIEndpointKeys.shopifyMultipass)!,
      data: {
        'id': id ?? '',
        'email': email,
        'redirectUrl': '/',
        'isMarketingEventSubscribed': notifications == 'true',
        'state': state ?? '',
      },
    );

    final userData = {
      ...response.data?['data'],
      'phone': phone,
    };

    await cacheInstance.setValue(
      cdnConfigInstance.getKeys(StorageKeyKeys.gkVerifiedUserKey)!,
      jsonEncode(userData),
    );

    return response.data;
  } catch (error) {
    throw ApiService.handleApiError(error);
  }
}