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(KeyConfig.gkAccessTokenKey),
      cacheInstance.getValue(KeyConfig.checkoutAccessTokenKey),
      cacheInstance.getValue(KeyConfig.gkNotificationEnabled),
    ]);

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

    if (accessToken != null) {
      gokwik.options.headers[KeyConfig.gkAccessTokenKey] = accessToken;
    }
    if (checkoutAccessToken != null) {
      gokwik.options.headers[KeyConfig.checkoutAccessTokenKey] =
          checkoutAccessToken;
    }

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

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

    await cacheInstance.setValue(
      KeyConfig.gkVerifiedUserKey,
      jsonEncode(userData),
    );

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