diff --git a/lib/ionia/ionia_api.dart b/lib/ionia/ionia_api.dart index 7fd80f2aa..a3667cca8 100644 --- a/lib/ionia/ionia_api.dart +++ b/lib/ionia/ionia_api.dart @@ -5,6 +5,7 @@ import 'package:flutter/foundation.dart'; import 'package:http/http.dart'; import 'package:cake_wallet/ionia/ionia_user_credentials.dart'; import 'package:cake_wallet/ionia/ionia_virtual_card.dart'; +import 'package:cake_wallet/ionia/ionia_category.dart'; class IoniaApi { static const baseUri = 'apidev.dashdirect.org'; @@ -165,7 +166,7 @@ class IoniaApi { @required String password, @required String clientId, String search, - List<int> categories, + List<IoniaCategory> categories, int merchantFilterType = 0}) async { // MerchantFilterType: {All = 0, Nearby = 1, Popular = 2, Online = 3, MyFaves = 4, Search = 5} @@ -181,7 +182,10 @@ class IoniaApi { } if (categories != null) { - body['Categories'] = categories; + body['Categories'] = categories + .map((e) => e.ids) + .expand((e) => e) + .toList(); } final response = await post(getMerchantsByFilterUrl, headers: headers, body: json.encode(body)); @@ -199,7 +203,7 @@ class IoniaApi { final data = decodedBody['Data'] as List<dynamic>; return data.map((dynamic e) { - final element = e as Map<String, dynamic>; + final element = e['Merchant'] as Map<String, dynamic>; return IoniaMerchant.fromJsonMap(element); }).toList(); } diff --git a/lib/ionia/ionia_category.dart b/lib/ionia/ionia_category.dart new file mode 100644 index 000000000..28d48d2b8 --- /dev/null +++ b/lib/ionia/ionia_category.dart @@ -0,0 +1,20 @@ +class IoniaCategory { + const IoniaCategory(this.title, this.ids); + + static const allCategories = <IoniaCategory>[ + apparel, + onlineOnly, + food, + entertainment, + delivery, + travel]; + static const apparel = IoniaCategory('Apparel', [1]); + static const onlineOnly = IoniaCategory('Online Only', [13, 43]); + static const food = IoniaCategory('Food', [4]); + static const entertainment = IoniaCategory('Entertainment', [5]); + static const delivery = IoniaCategory('Delivery', [114, 109]); + static const travel = IoniaCategory('Travel', [12]); + + final String title; + final List<int> ids; +} diff --git a/lib/ionia/ionia_service.dart b/lib/ionia/ionia_service.dart index ab8d167e7..d0500d66d 100644 --- a/lib/ionia/ionia_service.dart +++ b/lib/ionia/ionia_service.dart @@ -5,6 +5,7 @@ import 'package:flutter/foundation.dart'; import 'package:flutter_secure_storage/flutter_secure_storage.dart'; import 'package:cake_wallet/.secrets.g.dart' as secrets; import 'package:cake_wallet/ionia/ionia_api.dart'; +import 'package:cake_wallet/ionia/ionia_category.dart'; class IoniaService { IoniaService(this.secureStorage, this.ioniaApi); @@ -75,7 +76,7 @@ class IoniaService { Future<List<IoniaMerchant>> getMerchantsByFilter({ String search, - List<int> categories, + List<IoniaCategory> categories, int merchantFilterType = 0}) async { final username = await secureStorage.read(key: ioniaUsernameStorageKey); final password = await secureStorage.read(key: ioniaPasswordStorageKey);