diff --git a/pluto-kotlin-client-sdk/build.gradle b/pluto-kotlin-client-sdk/build.gradle index 68bae75..e59f95f 100644 --- a/pluto-kotlin-client-sdk/build.gradle +++ b/pluto-kotlin-client-sdk/build.gradle @@ -4,8 +4,8 @@ apply plugin: 'kotlin-android-extensions' apply plugin: 'maven-publish' buildscript { - ext.versionCode = 12 - ext.versionName = '0.6' + ext.versionCode = 13 + ext.versionName = '0.6.1' } android { diff --git a/pluto-kotlin-client-sdk/src/main/java/com/mushare/plutosdk/Pluto+Binding.kt b/pluto-kotlin-client-sdk/src/main/java/com/mushare/plutosdk/Pluto+Binding.kt index af88e3d..0d78f11 100644 --- a/pluto-kotlin-client-sdk/src/main/java/com/mushare/plutosdk/Pluto+Binding.kt +++ b/pluto-kotlin-client-sdk/src/main/java/com/mushare/plutosdk/Pluto+Binding.kt @@ -7,7 +7,7 @@ import retrofit2.Response val availableLoginTypes: Array get() = arrayOf(Pluto.LoginType.mail, Pluto.LoginType.mail) -val Pluto.availableBindings: Array? +val Pluto.availableBindings: Array? get() = data.user?.bindings fun Pluto.bind( diff --git a/pluto-kotlin-client-sdk/src/main/java/com/mushare/plutosdk/PlutoModel.kt b/pluto-kotlin-client-sdk/src/main/java/com/mushare/plutosdk/PlutoModel.kt index cb1107d..8063368 100644 --- a/pluto-kotlin-client-sdk/src/main/java/com/mushare/plutosdk/PlutoModel.kt +++ b/pluto-kotlin-client-sdk/src/main/java/com/mushare/plutosdk/PlutoModel.kt @@ -102,17 +102,3 @@ internal class PlutoModel(context: Context) { infoJSONString = null } } - -data class PlutoUser( - @field:SerializedName("sub") var id: Int, - @field:SerializedName("user_id") var userId: String, - @field:SerializedName("user_id_updated") var userIdUpdated: Boolean, - @field:SerializedName("avatar") var avatar: String, - @field:SerializedName("name") var name: String, - @field:SerializedName("bindings") var bindings: Array -) - -data class PlutoUserBinding( - @field:SerializedName("login_type") val loginType: Pluto.LoginType, - @field:SerializedName("mail") var mail: String? -) \ No newline at end of file diff --git a/pluto-kotlin-client-sdk/src/main/java/com/mushare/plutosdk/PlutoUser.kt b/pluto-kotlin-client-sdk/src/main/java/com/mushare/plutosdk/PlutoUser.kt new file mode 100644 index 0000000..51e0d5a --- /dev/null +++ b/pluto-kotlin-client-sdk/src/main/java/com/mushare/plutosdk/PlutoUser.kt @@ -0,0 +1,50 @@ +package com.mushare.plutosdk + +import com.google.gson.annotations.SerializedName + +data class PlutoUser( + @field:SerializedName("sub") var id: Int, + @field:SerializedName("user_id") var userId: String, + @field:SerializedName("user_id_updated") var userIdUpdated: Boolean, + @field:SerializedName("avatar") var avatar: String, + @field:SerializedName("name") var name: String, + @field:SerializedName("bindings") var bindings: Array +) { + data class Binding( + @field:SerializedName("login_type") val loginType: Pluto.LoginType, + @field:SerializedName("mail") var mail: String? + ) + + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (javaClass != other?.javaClass) return false + + other as PlutoUser + + if (id != other.id) return false + if (userId != other.userId) return false + if (userIdUpdated != other.userIdUpdated) return false + if (avatar != other.avatar) return false + if (name != other.name) return false + if (!bindings.contentEquals(other.bindings)) return false + + return true + } + + override fun hashCode(): Int { + var result = id + result = 31 * result + userId.hashCode() + result = 31 * result + userIdUpdated.hashCode() + result = 31 * result + avatar.hashCode() + result = 31 * result + name.hashCode() + result = 31 * result + bindings.contentHashCode() + return result + } + + val mail: Binding? + get() = bindings.firstOrNull { it.loginType == Pluto.LoginType.mail } + + val google: Binding? + get() = bindings.firstOrNull { it.loginType == Pluto.LoginType.google } +} +