From 2d1697064db4347a11f12ef7cf02256f248d02a3 Mon Sep 17 00:00:00 2001 From: My-Responsitories <107370289+My-Responsitories@users.noreply.github.com> Date: Tue, 6 May 2025 00:20:12 +0800 Subject: [PATCH] fix: card vip (#825) --- lib/models/space/card.dart | 191 ++++++++++++++++++++--------------- lib/models/space/card.g.dart | 151 --------------------------- 2 files changed, 111 insertions(+), 231 deletions(-) delete mode 100644 lib/models/space/card.g.dart diff --git a/lib/models/space/card.dart b/lib/models/space/card.dart index d6e35a69..ff454a9e 100644 --- a/lib/models/space/card.dart +++ b/lib/models/space/card.dart @@ -12,11 +12,7 @@ import 'package:PiliPlus/models/space/pr_info.dart'; import 'package:PiliPlus/models/space/profession_verify.dart'; import 'package:PiliPlus/models/space/relation.dart'; import 'package:PiliPlus/models/space/space_tag_bottom.dart'; -import 'package:json_annotation/json_annotation.dart'; -part 'card.g.dart'; - -@JsonSerializable() class SpaceCard { Avatar? avatar; String? mid; @@ -24,7 +20,6 @@ class SpaceCard { bool? approve; String? rank; String? face; - @JsonKey(name: 'DisplayRank') String? displayRank; int? regtime; int? spacesta; @@ -33,112 +28,148 @@ class SpaceCard { String? description; int? article; dynamic attentions; - int fans; + late int fans; int? friend; - int attention; + late int attention; String? sign; - @JsonKey(name: 'level_info') LevelInfo? levelInfo; Pendant? pendant; Nameplate? nameplate; - @JsonKey(name: 'official_verify') OfficialVerify? officialVerify; - @JsonKey(name: 'profession_verify') ProfessionVerify? professionVerify; Vip? vip; int? silence; - @JsonKey(name: 'end_time') int? endTime; - @JsonKey(name: 'silence_url') String? silenceUrl; Likes? likes; Achieve? achieve; - @JsonKey(name: 'pendant_url') String? pendantUrl; - @JsonKey(name: 'pendant_title') String? pendantTitle; - @JsonKey(name: 'pr_info') PrInfo? prInfo; Relation? relation; - @JsonKey(name: 'is_deleted') int? isDeleted; Honours? honours; // Profession? profession; // School? school; - @JsonKey(name: 'space_tag') List? spaceTag; - @JsonKey(name: 'face_nft_new') int? faceNftNew; - @JsonKey(name: 'has_face_nft') bool? hasFaceNft; - @JsonKey(name: 'nft_certificate') NftCertificate? nftCertificate; Entrance? entrance; - @JsonKey(name: 'nft_id') String? nftId; - @JsonKey(name: 'nft_face_icon') dynamic nftFaceIcon; - @JsonKey(name: 'space_tag_bottom') List? spaceTagBottom; - @JsonKey(name: 'digital_id') String? digitalId; - @JsonKey(name: 'digital_type') int? digitalType; - @JsonKey(name: 'has_digital_asset') bool? hasDigitalAsset; - SpaceCard({ - this.avatar, - this.mid, - this.name, - this.approve, - this.rank, - this.face, - this.displayRank, - this.regtime, - this.spacesta, - this.birthday, - this.place, - this.description, - this.article, - this.attentions, - required this.fans, - this.friend, - required this.attention, - this.sign, - this.levelInfo, - this.pendant, - this.nameplate, - this.officialVerify, - this.professionVerify, - this.vip, - this.silence, - this.endTime, - this.silenceUrl, - this.likes, - this.achieve, - this.pendantUrl, - this.pendantTitle, - this.prInfo, - this.relation, - this.isDeleted, - this.honours, - // this.profession, - // this.school, - this.spaceTag, - this.faceNftNew, - this.hasFaceNft, - this.nftCertificate, - this.entrance, - this.nftId, - this.nftFaceIcon, - this.spaceTagBottom, - this.digitalId, - this.digitalType, - this.hasDigitalAsset, - }); - - factory SpaceCard.fromJson(Map json) => _$CardFromJson(json); - - Map toJson() => _$CardToJson(this); + SpaceCard.fromJson(Map json) { + avatar = json['avatar'] == null + ? null + : Avatar.fromJson(json['avatar'] as Map); + mid = json['mid'] as String?; + name = json['name'] as String?; + approve = json['approve'] as bool?; + rank = json['rank'] as String?; + face = json['face'] as String?; + displayRank = json['DisplayRank'] as String?; + regtime = (json['regtime'] as num?)?.toInt(); + spacesta = (json['spacesta'] as num?)?.toInt(); + birthday = json['birthday'] as String?; + place = json['place'] as String?; + description = json['description'] as String?; + article = (json['article'] as num?)?.toInt(); + attentions = json['attentions']; + fans = (json['fans'] as num?)?.toInt() ?? 0; + friend = (json['friend'] as num?)?.toInt(); + attention = (json['attention'] as num?)?.toInt() ?? 0; + sign = json['sign'] as String?; + levelInfo = json['level_info'] == null + ? null + : LevelInfo.fromJson(json['level_info'] as Map); + pendant = json['pendant'] == null + ? null + : Pendant.fromJson(json['pendant'] as Map); + nameplate = json['nameplate'] == null + ? null + : Nameplate.fromJson(json['nameplate'] as Map); + officialVerify = json['official_verify'] == null + ? null + : OfficialVerify.fromJson( + json['official_verify'] as Map); + professionVerify = json['profession_verify'] == null + ? null + : ProfessionVerify.fromJson( + json['profession_verify'] as Map); + vip = json['vip'] == null + ? null + : CardVip.fromJson(json['vip'] as Map); + silence = (json['silence'] as num?)?.toInt(); + endTime = (json['end_time'] as num?)?.toInt(); + silenceUrl = json['silence_url'] as String?; + likes = json['likes'] == null + ? null + : Likes.fromJson(json['likes'] as Map); + achieve = json['achieve'] == null + ? null + : Achieve.fromJson(json['achieve'] as Map); + pendantUrl = json['pendant_url'] as String?; + pendantTitle = json['pendant_title'] as String?; + prInfo = json['pr_info'] == null + ? null + : PrInfo.fromJson(json['pr_info'] as Map); + relation = json['relation'] == null + ? null + : Relation.fromJson(json['relation'] as Map); + isDeleted = (json['is_deleted'] as num?)?.toInt(); + honours = json['honours'] == null + ? null + : Honours.fromJson(json['honours'] as Map); + // profession = json['profession'] == null + // ? null + // : Profession.fromJson(json['profession'] as Map); + // school = json['school'] == null + // ? null + // : School.fromJson(json['school'] as Map); + spaceTag = (json['space_tag'] as List?) + ?.where((item) => (item['title'] as String?)?.startsWith('IP') == true) + .toList() + .map((item) => Item.fromJson(item)) + .toList(); + faceNftNew = (json['face_nft_new'] as num?)?.toInt(); + hasFaceNft = json['has_face_nft'] as bool?; + nftCertificate = json['nft_certificate'] == null + ? null + : NftCertificate.fromJson( + json['nft_certificate'] as Map); + entrance = json['entrance'] == null + ? null + : Entrance.fromJson(json['entrance'] as Map); + nftId = json['nft_id'] as String?; + nftFaceIcon = json['nft_face_icon']; + spaceTagBottom = (json['space_tag_bottom'] as List?) + ?.map((item) => Item.fromJson(item)) + .toList(); + digitalId = json['digital_id'] as String?; + digitalType = (json['digital_type'] as num?)?.toInt(); + hasDigitalAsset = json['has_digital_asset'] as bool?; + } +} + +class CardVip implements Vip { + @override + int? dueDate; + @override + Label? label; + @override + late int status; + @override + int? type; + + CardVip.fromJson(Map json) { + type = json['vipType']; + status = json['vipStatus'] ?? 0; + dueDate = json['vipDueDate']; + if (json['label'] != null) label = Label.fromJson(json['label']); + } } diff --git a/lib/models/space/card.g.dart b/lib/models/space/card.g.dart deleted file mode 100644 index 90f7cc4c..00000000 --- a/lib/models/space/card.g.dart +++ /dev/null @@ -1,151 +0,0 @@ -// GENERATED CODE - DO NOT MODIFY BY HAND - -part of 'card.dart'; - -// ************************************************************************** -// JsonSerializableGenerator -// ************************************************************************** - -SpaceCard _$CardFromJson(Map json) => SpaceCard( - avatar: json['avatar'] == null - ? null - : Avatar.fromJson(json['avatar'] as Map), - mid: json['mid'] as String?, - name: json['name'] as String?, - approve: json['approve'] as bool?, - rank: json['rank'] as String?, - face: json['face'] as String?, - displayRank: json['DisplayRank'] as String?, - regtime: (json['regtime'] as num?)?.toInt(), - spacesta: (json['spacesta'] as num?)?.toInt(), - birthday: json['birthday'] as String?, - place: json['place'] as String?, - description: json['description'] as String?, - article: (json['article'] as num?)?.toInt(), - attentions: json['attentions'], - fans: (json['fans'] as num?)?.toInt() ?? 0, - friend: (json['friend'] as num?)?.toInt(), - attention: (json['attention'] as num?)?.toInt() ?? 0, - sign: json['sign'] as String?, - levelInfo: json['level_info'] == null - ? null - : LevelInfo.fromJson(json['level_info'] as Map), - pendant: json['pendant'] == null - ? null - : Pendant.fromJson(json['pendant'] as Map), - nameplate: json['nameplate'] == null - ? null - : Nameplate.fromJson(json['nameplate'] as Map), - officialVerify: json['official_verify'] == null - ? null - : OfficialVerify.fromJson( - json['official_verify'] as Map), - professionVerify: json['profession_verify'] == null - ? null - : ProfessionVerify.fromJson( - json['profession_verify'] as Map), - vip: json['vip'] == null - ? null - : Vip.fromJson(json['vip'] as Map), - silence: (json['silence'] as num?)?.toInt(), - endTime: (json['end_time'] as num?)?.toInt(), - silenceUrl: json['silence_url'] as String?, - likes: json['likes'] == null - ? null - : Likes.fromJson(json['likes'] as Map), - achieve: json['achieve'] == null - ? null - : Achieve.fromJson(json['achieve'] as Map), - pendantUrl: json['pendant_url'] as String?, - pendantTitle: json['pendant_title'] as String?, - prInfo: json['pr_info'] == null - ? null - : PrInfo.fromJson(json['pr_info'] as Map), - relation: json['relation'] == null - ? null - : Relation.fromJson(json['relation'] as Map), - isDeleted: (json['is_deleted'] as num?)?.toInt(), - honours: json['honours'] == null - ? null - : Honours.fromJson(json['honours'] as Map), - // profession: json['profession'] == null - // ? null - // : Profession.fromJson(json['profession'] as Map), - // school: json['school'] == null - // ? null - // : School.fromJson(json['school'] as Map), - spaceTag: (json['space_tag'] as List?) - ?.where( - (item) => (item['title'] as String?)?.startsWith('IP') == true) - .toList() - .map((item) => Item.fromJson(item)) - .toList(), - faceNftNew: (json['face_nft_new'] as num?)?.toInt(), - hasFaceNft: json['has_face_nft'] as bool?, - nftCertificate: json['nft_certificate'] == null - ? null - : NftCertificate.fromJson( - json['nft_certificate'] as Map), - entrance: json['entrance'] == null - ? null - : Entrance.fromJson(json['entrance'] as Map), - nftId: json['nft_id'] as String?, - nftFaceIcon: json['nft_face_icon'], - spaceTagBottom: (json['space_tag_bottom'] as List?) - ?.map((item) => Item.fromJson(item)) - .toList(), - digitalId: json['digital_id'] as String?, - digitalType: (json['digital_type'] as num?)?.toInt(), - hasDigitalAsset: json['has_digital_asset'] as bool?, - ); - -Map _$CardToJson(SpaceCard instance) => { - 'avatar': instance.avatar, - 'mid': instance.mid, - 'name': instance.name, - 'approve': instance.approve, - 'rank': instance.rank, - 'face': instance.face, - 'DisplayRank': instance.displayRank, - 'regtime': instance.regtime, - 'spacesta': instance.spacesta, - 'birthday': instance.birthday, - 'place': instance.place, - 'description': instance.description, - 'article': instance.article, - 'attentions': instance.attentions, - 'fans': instance.fans, - 'friend': instance.friend, - 'attention': instance.attention, - 'sign': instance.sign, - 'level_info': instance.levelInfo, - 'pendant': instance.pendant, - 'nameplate': instance.nameplate, - 'official_verify': instance.officialVerify, - 'profession_verify': instance.professionVerify, - 'vip': instance.vip, - 'silence': instance.silence, - 'end_time': instance.endTime, - 'silence_url': instance.silenceUrl, - 'likes': instance.likes, - 'achieve': instance.achieve, - 'pendant_url': instance.pendantUrl, - 'pendant_title': instance.pendantTitle, - 'pr_info': instance.prInfo, - 'relation': instance.relation, - 'is_deleted': instance.isDeleted, - 'honours': instance.honours, - // 'profession': instance.profession, - // 'school': instance.school, - 'space_tag': instance.spaceTag, - 'face_nft_new': instance.faceNftNew, - 'has_face_nft': instance.hasFaceNft, - 'nft_certificate': instance.nftCertificate, - 'entrance': instance.entrance, - 'nft_id': instance.nftId, - 'nft_face_icon': instance.nftFaceIcon, - 'space_tag_bottom': instance.spaceTagBottom, - 'digital_id': instance.digitalId, - 'digital_type': instance.digitalType, - 'has_digital_asset': instance.hasDigitalAsset, - };