feat: profile and subs

This commit is contained in:
2026-06-17 11:32:18 +03:30
parent 943ba13872
commit e9f294fa19
19 changed files with 1762 additions and 34 deletions
+16
View File
@@ -56,12 +56,26 @@ class Booster {
priceToman = (j['price_toman'] ?? 0) as int;
}
class VIPPackage {
final String id;
final String title;
final int months;
final int priceToman;
VIPPackage.fromJson(Map<String, dynamic> j)
: id = j['id'] as String,
title = j['title'] as String,
months = (j['months'] ?? 1) as int,
priceToman = (j['price_toman'] ?? 0) as int;
}
/// داده‌ی کامل فروشگاه: کاتالوگ + کارت‌های متعلق به کاربر + کارت انتخابی.
class ShopData {
final List<CoinPackage> coinPackages;
final List<TicketPackage> ticketPackages;
final List<CardSkin> cardSkins;
final List<Booster> boosters;
final List<VIPPackage> vipPackages;
final List<String> ownedCards;
final String selectedCard;
@@ -70,6 +84,7 @@ class ShopData {
required this.ticketPackages,
required this.cardSkins,
required this.boosters,
required this.vipPackages,
required this.ownedCards,
required this.selectedCard,
});
@@ -85,6 +100,7 @@ class ShopData {
ticketPackages: parse('ticket_packages', TicketPackage.fromJson),
cardSkins: parse('card_skins', CardSkin.fromJson),
boosters: parse('boosters', Booster.fromJson),
vipPackages: parse('vip_packages', VIPPackage.fromJson),
ownedCards: ((j['owned_cards'] as List?) ?? []).map((e) => e as String).toList(),
selectedCard: (j['selected_card'] ?? 'simple') as String,
);