package com.adealink.weparty.profile.relation.data

import com.adealink.weparty.commonui.recycleview.diffutil.BaseListItemData
import com.google.gson.annotations.GsonNullable
import com.google.gson.annotations.SerializedName


data class FollowReq(
    @SerializedName("userNo") val uid: String,
    @SerializedName("follow") val follow: Boolean,
)


data class FollowStatusReq(
    @SerializedName("userNos") val uids: List<String>
)

data class FollowStatusRes(
    @SerializedName("list") val list: List<FollowStatusData>
)

data class FollowStatusData(
    @SerializedName("userNo") val uid: String,
    @SerializedName("relateion") val followStatus: Int, //详见: FollowStatus
)


data class FollowListReq(
    @SerializedName("size") val size: Int,
    @SerializedName("next") val next: String?
)

data class FollowListRes(
    @SerializedName("list") val list: List<FollowData>,
    @GsonNullable
    @SerializedName("next") val next: String?
)

data class FollowData(
    @SerializedName("userNo") val uid: String,
    @GsonNullable
    @SerializedName("nickname") var nickName: String? = null,
    @GsonNullable
    @SerializedName("avatar") var avatar: String? = null,
    @GsonNullable
    @SerializedName("gender") var gender: Int? = null,
    @GsonNullable
    @SerializedName("age") var age: Int? = null,
    @GsonNullable
    @SerializedName("relateion") var followStatus: Int? = null
)


data class FansListReq(
    @SerializedName("size") val size: Int,
    @SerializedName("next") val next: String?
)

data class FansListRes(
    @SerializedName("list") val list: List<FansData>,
    @GsonNullable
    @SerializedName("next") val next: String?
)

data class FansData(
    @SerializedName("userNo") val uid: String,
    @GsonNullable
    @SerializedName("nickname") var nickName: String? = null,
    @GsonNullable
    @SerializedName("avatar") var avatar: String? = null,
    @GsonNullable
    @SerializedName("gender") var gender: Int? = null,
    @GsonNullable
    @SerializedName("age") var age: Int? = null,
    @GsonNullable
    @SerializedName("relateion") var followStatus: Int? = null
)


sealed class BaseRelationShipItemData : BaseListItemData


data class FollowItemData(
    val data: FollowData
) : BaseRelationShipItemData()


data class FansItemData(
    val data: FansData
) : BaseRelationShipItemData()