FlutterStorage.swift 1.99 KB
//
//  FlutterStorage.swift
//  Runner
//
//  Created by 权海 on 2026/6/17.
//

import Foundation

private let kFlutterStorageKey = "flutter.double_feel_user_preferences_json"



class FlutterStorage{
    static func userSummary() -> FlutterUserSummary?{
        guard let json = UserDefaults.standard.object(forKey: kFlutterStorageKey) else{
            return nil
        }
        do{
            let data = try JSONSerialization.data(withJSONObject: json)
            let model = try JSONDecoder().decode(FlutterUserSummary.self, from: data)
            return model
        }catch{
            return nil
        }
    }
}


struct FlutterUserSummary: Codable{
    var meUserInfo: FlutterUserInfo?
    var partnerUserInfo: FlutterUserInfo?
    var accessToken: String?
    var rongcloudToken: String?
    var vipInfo: FlutterVipInfo?
    
    enum CodingKeys: String, CodingKey {
        case meUserInfo =   "me_user_info"
        case partnerUserInfo    =   "partner_user_info"
        case accessToken    =   "access_token"
        case rongcloudToken =   "rongcloud_token"
        case vipInfo    =   "vip_info"
    }
}

struct FlutterVipInfo: Codable{
    var isVip: Bool?
    var isForeverVip: Bool?
    var isShare: Bool?
    var vipStartDate: Int?
    var vipEndDate: Int?
    
    enum CodingKeys: String, CodingKey {
        case isVip  =   "is_vip"
        case isForeverVip   =   "is_forever_vip"
        case isShare    =   "is_share"
        case vipStartDate   =   "vip_start_date"
        case vipEndDate =   "vip_end_date"
    }
}

struct FlutterUserInfo: Codable{
    var id: Int?
    var pairId: Int?
    var pairCode: String?
    var nickname: String?
    var avatar: String?
    var telephone: String?
    var persona: Int?
    var isBot: Int?
    
    enum CodingKeys: String, CodingKey {
        case id
        case pairId =   "pair_id"
        case pairCode   =   "pair_code"
        case nickname
        case avatar
        case telephone
        case persona
        case isBot  =   "is_bot"
    }
}