mirror of
https://github.com/cake-tech/cake_wallet.git
synced 2024-10-31 17:37:41 +00:00
30dc8f9238
* init commit * buy card UI * buy card detail page * card filter * dropdown button * user auth flow * create order * denomination option * fix searching * denom option fix UI * simulate payment * Update pr_test_build.yml * Update pr_test_build.yml * Implement order expiration handling [skip ci] * refactor code [skip ci] * remove ionia related code [skip ci] * change auth flow * add currency prefix * grid view UI * fix country filter issue * fix underline color * fix fetching card list [skip ci] * list view * update cake pay title * Optimize API usage by fetching CakePay vendors * handle no cards found case * adjust the flow of purchases * UI fixes * fix btc payment data * link extractor * fix fetch next page issue * UI fixes * fix text size * revert base page changes * Revert "revert base page changes" * UI fixes * fix UI * fix link style + localization * update cake pay title * update cake pay subtitle * Update cake_pay_order.dart * revert inject_app_details update
51 lines
1.3 KiB
Dart
51 lines
1.3 KiB
Dart
import 'dart:convert';
|
|
|
|
import 'cake_pay_card.dart';
|
|
|
|
class CakePayVendor {
|
|
final int id;
|
|
final String name;
|
|
final bool unavailable;
|
|
final String? cakeWarnings;
|
|
final List<String> countries;
|
|
final CakePayCard? card;
|
|
|
|
CakePayVendor({
|
|
required this.id,
|
|
required this.name,
|
|
required this.unavailable,
|
|
this.cakeWarnings,
|
|
required this.countries,
|
|
this.card,
|
|
});
|
|
|
|
factory CakePayVendor.fromJson(Map<String, dynamic> json) {
|
|
final name = stripHtmlIfNeeded(json['name'] as String);
|
|
final decodedName = fixEncoding(name);
|
|
|
|
var cardsJson = json['cards'] as List?;
|
|
CakePayCard? firstCard;
|
|
|
|
if (cardsJson != null && cardsJson.isNotEmpty) {
|
|
firstCard = CakePayCard.fromJson(cardsJson.first as Map<String, dynamic>);
|
|
}
|
|
|
|
return CakePayVendor(
|
|
id: json['id'] as int,
|
|
name: decodedName,
|
|
unavailable: json['unavailable'] as bool? ?? false,
|
|
cakeWarnings: json['cake_warnings'] as String?,
|
|
countries: List<String>.from(json['countries'] as List? ?? []),
|
|
card: firstCard,
|
|
);
|
|
}
|
|
|
|
static String stripHtmlIfNeeded(String text) {
|
|
return text.replaceAll(RegExp(r'<[^>]*>|&[^;]+;'), ' ');
|
|
}
|
|
|
|
static String fixEncoding(String text) {
|
|
final bytes = latin1.encode(text);
|
|
return utf8.decode(bytes, allowMalformed: true);
|
|
}
|
|
}
|