Remove Identity Proof Support (#2456)
* Remove IdentityProof.kt and refactor * Remove accountFieldData from viewmodel * Remove unused imports
This commit is contained in:
parent
f15b3e61bb
commit
0e9d362351
5 changed files with 9 additions and 74 deletions
|
@ -372,12 +372,6 @@ class AccountActivity : BottomSheetActivity(), ActionButtonActivity, HasAndroidI
|
||||||
.show()
|
.show()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
viewModel.accountFieldData.observe(
|
|
||||||
this
|
|
||||||
) {
|
|
||||||
accountFieldAdapter.fields = it
|
|
||||||
accountFieldAdapter.notifyDataSetChanged()
|
|
||||||
}
|
|
||||||
viewModel.noteSaved.observe(this) {
|
viewModel.noteSaved.observe(this) {
|
||||||
binding.saveNoteInfo.visible(it, View.INVISIBLE)
|
binding.saveNoteInfo.visible(it, View.INVISIBLE)
|
||||||
}
|
}
|
||||||
|
@ -409,7 +403,7 @@ class AccountActivity : BottomSheetActivity(), ActionButtonActivity, HasAndroidI
|
||||||
val emojifiedNote = account.note.parseAsMastodonHtml().emojify(account.emojis, binding.accountNoteTextView, animateEmojis)
|
val emojifiedNote = account.note.parseAsMastodonHtml().emojify(account.emojis, binding.accountNoteTextView, animateEmojis)
|
||||||
setClickableText(binding.accountNoteTextView, emojifiedNote, emptyList(), null, this)
|
setClickableText(binding.accountNoteTextView, emojifiedNote, emptyList(), null, this)
|
||||||
|
|
||||||
// accountFieldAdapter.fields = account.fields ?: emptyList()
|
accountFieldAdapter.fields = account.fields ?: emptyList()
|
||||||
accountFieldAdapter.emojis = account.emojis ?: emptyList()
|
accountFieldAdapter.emojis = account.emojis ?: emptyList()
|
||||||
accountFieldAdapter.notifyDataSetChanged()
|
accountFieldAdapter.notifyDataSetChanged()
|
||||||
|
|
||||||
|
|
|
@ -15,7 +15,6 @@
|
||||||
|
|
||||||
package com.keylesspalace.tusky.components.account
|
package com.keylesspalace.tusky.components.account
|
||||||
|
|
||||||
import android.text.method.LinkMovementMethod
|
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
|
@ -23,11 +22,8 @@ import com.keylesspalace.tusky.R
|
||||||
import com.keylesspalace.tusky.databinding.ItemAccountFieldBinding
|
import com.keylesspalace.tusky.databinding.ItemAccountFieldBinding
|
||||||
import com.keylesspalace.tusky.entity.Emoji
|
import com.keylesspalace.tusky.entity.Emoji
|
||||||
import com.keylesspalace.tusky.entity.Field
|
import com.keylesspalace.tusky.entity.Field
|
||||||
import com.keylesspalace.tusky.entity.IdentityProof
|
|
||||||
import com.keylesspalace.tusky.interfaces.LinkListener
|
import com.keylesspalace.tusky.interfaces.LinkListener
|
||||||
import com.keylesspalace.tusky.util.BindingHolder
|
import com.keylesspalace.tusky.util.BindingHolder
|
||||||
import com.keylesspalace.tusky.util.Either
|
|
||||||
import com.keylesspalace.tusky.util.createClickableText
|
|
||||||
import com.keylesspalace.tusky.util.emojify
|
import com.keylesspalace.tusky.util.emojify
|
||||||
import com.keylesspalace.tusky.util.parseAsMastodonHtml
|
import com.keylesspalace.tusky.util.parseAsMastodonHtml
|
||||||
import com.keylesspalace.tusky.util.setClickableText
|
import com.keylesspalace.tusky.util.setClickableText
|
||||||
|
@ -38,7 +34,7 @@ class AccountFieldAdapter(
|
||||||
) : RecyclerView.Adapter<BindingHolder<ItemAccountFieldBinding>>() {
|
) : RecyclerView.Adapter<BindingHolder<ItemAccountFieldBinding>>() {
|
||||||
|
|
||||||
var emojis: List<Emoji> = emptyList()
|
var emojis: List<Emoji> = emptyList()
|
||||||
var fields: List<Either<IdentityProof, Field>> = emptyList()
|
var fields: List<Field> = emptyList()
|
||||||
|
|
||||||
override fun getItemCount() = fields.size
|
override fun getItemCount() = fields.size
|
||||||
|
|
||||||
|
@ -48,32 +44,20 @@ class AccountFieldAdapter(
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onBindViewHolder(holder: BindingHolder<ItemAccountFieldBinding>, position: Int) {
|
override fun onBindViewHolder(holder: BindingHolder<ItemAccountFieldBinding>, position: Int) {
|
||||||
val proofOrField = fields[position]
|
val field = fields[position]
|
||||||
val nameTextView = holder.binding.accountFieldName
|
val nameTextView = holder.binding.accountFieldName
|
||||||
val valueTextView = holder.binding.accountFieldValue
|
val valueTextView = holder.binding.accountFieldValue
|
||||||
|
|
||||||
if (proofOrField.isLeft()) {
|
val emojifiedName = field.name.emojify(emojis, nameTextView, animateEmojis)
|
||||||
val identityProof = proofOrField.asLeft()
|
nameTextView.text = emojifiedName
|
||||||
|
|
||||||
nameTextView.text = identityProof.provider
|
val emojifiedValue = field.value.parseAsMastodonHtml().emojify(emojis, valueTextView, animateEmojis)
|
||||||
valueTextView.text = createClickableText(identityProof.username, identityProof.profileUrl)
|
setClickableText(valueTextView, emojifiedValue, emptyList(), null, linkListener)
|
||||||
|
|
||||||
valueTextView.movementMethod = LinkMovementMethod.getInstance()
|
|
||||||
|
|
||||||
|
if (field.verifiedAt != null) {
|
||||||
valueTextView.setCompoundDrawablesRelativeWithIntrinsicBounds(0, 0, R.drawable.ic_check_circle, 0)
|
valueTextView.setCompoundDrawablesRelativeWithIntrinsicBounds(0, 0, R.drawable.ic_check_circle, 0)
|
||||||
} else {
|
} else {
|
||||||
val field = proofOrField.asRight()
|
valueTextView.setCompoundDrawablesRelativeWithIntrinsicBounds(0, 0, 0, 0)
|
||||||
val emojifiedName = field.name.emojify(emojis, nameTextView, animateEmojis)
|
|
||||||
nameTextView.text = emojifiedName
|
|
||||||
|
|
||||||
val emojifiedValue = field.value.parseAsMastodonHtml().emojify(emojis, valueTextView, animateEmojis)
|
|
||||||
setClickableText(valueTextView, emojifiedValue, emptyList(), null, linkListener)
|
|
||||||
|
|
||||||
if (field.verifiedAt != null) {
|
|
||||||
valueTextView.setCompoundDrawablesRelativeWithIntrinsicBounds(0, 0, R.drawable.ic_check_circle, 0)
|
|
||||||
} else {
|
|
||||||
valueTextView.setCompoundDrawablesRelativeWithIntrinsicBounds(0, 0, 0, 0)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,17 +10,13 @@ import com.keylesspalace.tusky.appstore.ProfileEditedEvent
|
||||||
import com.keylesspalace.tusky.appstore.UnfollowEvent
|
import com.keylesspalace.tusky.appstore.UnfollowEvent
|
||||||
import com.keylesspalace.tusky.db.AccountManager
|
import com.keylesspalace.tusky.db.AccountManager
|
||||||
import com.keylesspalace.tusky.entity.Account
|
import com.keylesspalace.tusky.entity.Account
|
||||||
import com.keylesspalace.tusky.entity.Field
|
|
||||||
import com.keylesspalace.tusky.entity.IdentityProof
|
|
||||||
import com.keylesspalace.tusky.entity.Relationship
|
import com.keylesspalace.tusky.entity.Relationship
|
||||||
import com.keylesspalace.tusky.network.MastodonApi
|
import com.keylesspalace.tusky.network.MastodonApi
|
||||||
import com.keylesspalace.tusky.util.Either
|
|
||||||
import com.keylesspalace.tusky.util.Error
|
import com.keylesspalace.tusky.util.Error
|
||||||
import com.keylesspalace.tusky.util.Loading
|
import com.keylesspalace.tusky.util.Loading
|
||||||
import com.keylesspalace.tusky.util.Resource
|
import com.keylesspalace.tusky.util.Resource
|
||||||
import com.keylesspalace.tusky.util.RxAwareViewModel
|
import com.keylesspalace.tusky.util.RxAwareViewModel
|
||||||
import com.keylesspalace.tusky.util.Success
|
import com.keylesspalace.tusky.util.Success
|
||||||
import com.keylesspalace.tusky.util.combineOptionalLiveData
|
|
||||||
import io.reactivex.rxjava3.core.Single
|
import io.reactivex.rxjava3.core.Single
|
||||||
import io.reactivex.rxjava3.disposables.Disposable
|
import io.reactivex.rxjava3.disposables.Disposable
|
||||||
import retrofit2.Call
|
import retrofit2.Call
|
||||||
|
@ -40,13 +36,6 @@ class AccountViewModel @Inject constructor(
|
||||||
|
|
||||||
val noteSaved = MutableLiveData<Boolean>()
|
val noteSaved = MutableLiveData<Boolean>()
|
||||||
|
|
||||||
private val identityProofData = MutableLiveData<List<IdentityProof>>()
|
|
||||||
|
|
||||||
val accountFieldData = combineOptionalLiveData(accountData, identityProofData) { accountRes, identityProofs ->
|
|
||||||
identityProofs.orEmpty().map { Either.Left<IdentityProof, Field>(it) }
|
|
||||||
.plus(accountRes?.data?.fields.orEmpty().map { Either.Right(it) })
|
|
||||||
}
|
|
||||||
|
|
||||||
val isRefreshing = MutableLiveData<Boolean>().apply { value = false }
|
val isRefreshing = MutableLiveData<Boolean>().apply { value = false }
|
||||||
private var isDataLoading = false
|
private var isDataLoading = false
|
||||||
|
|
||||||
|
@ -106,22 +95,6 @@ class AccountViewModel @Inject constructor(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun obtainIdentityProof(reload: Boolean = false) {
|
|
||||||
if (identityProofData.value == null || reload) {
|
|
||||||
|
|
||||||
mastodonApi.identityProofs(accountId)
|
|
||||||
.subscribe(
|
|
||||||
{ proofs ->
|
|
||||||
identityProofData.postValue(proofs)
|
|
||||||
},
|
|
||||||
{ t ->
|
|
||||||
Log.w(TAG, "failed obtaining identity proofs", t)
|
|
||||||
}
|
|
||||||
)
|
|
||||||
.autoDispose()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun changeFollowState() {
|
fun changeFollowState() {
|
||||||
val relationship = relationshipData.value?.data
|
val relationship = relationshipData.value?.data
|
||||||
if (relationship?.following == true || relationship?.requested == true) {
|
if (relationship?.following == true || relationship?.requested == true) {
|
||||||
|
@ -314,7 +287,6 @@ class AccountViewModel @Inject constructor(
|
||||||
return
|
return
|
||||||
accountId.let {
|
accountId.let {
|
||||||
obtainAccount(isReload)
|
obtainAccount(isReload)
|
||||||
obtainIdentityProof()
|
|
||||||
if (!isSelf)
|
if (!isSelf)
|
||||||
obtainRelationship(isReload)
|
obtainRelationship(isReload)
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,9 +0,0 @@
|
||||||
package com.keylesspalace.tusky.entity
|
|
||||||
|
|
||||||
import com.google.gson.annotations.SerializedName
|
|
||||||
|
|
||||||
data class IdentityProof(
|
|
||||||
val provider: String,
|
|
||||||
@SerializedName("provider_username") val username: String,
|
|
||||||
@SerializedName("profile_url") val profileUrl: String
|
|
||||||
)
|
|
|
@ -24,7 +24,6 @@ import com.keylesspalace.tusky.entity.Conversation
|
||||||
import com.keylesspalace.tusky.entity.DeletedStatus
|
import com.keylesspalace.tusky.entity.DeletedStatus
|
||||||
import com.keylesspalace.tusky.entity.Emoji
|
import com.keylesspalace.tusky.entity.Emoji
|
||||||
import com.keylesspalace.tusky.entity.Filter
|
import com.keylesspalace.tusky.entity.Filter
|
||||||
import com.keylesspalace.tusky.entity.IdentityProof
|
|
||||||
import com.keylesspalace.tusky.entity.Instance
|
import com.keylesspalace.tusky.entity.Instance
|
||||||
import com.keylesspalace.tusky.entity.Marker
|
import com.keylesspalace.tusky.entity.Marker
|
||||||
import com.keylesspalace.tusky.entity.MastoList
|
import com.keylesspalace.tusky.entity.MastoList
|
||||||
|
@ -367,11 +366,6 @@ interface MastodonApi {
|
||||||
@Query("id[]") accountIds: List<String>
|
@Query("id[]") accountIds: List<String>
|
||||||
): Single<List<Relationship>>
|
): Single<List<Relationship>>
|
||||||
|
|
||||||
@GET("api/v1/accounts/{id}/identity_proofs")
|
|
||||||
fun identityProofs(
|
|
||||||
@Path("id") accountId: String
|
|
||||||
): Single<List<IdentityProof>>
|
|
||||||
|
|
||||||
@POST("api/v1/pleroma/accounts/{id}/subscribe")
|
@POST("api/v1/pleroma/accounts/{id}/subscribe")
|
||||||
fun subscribeAccount(
|
fun subscribeAccount(
|
||||||
@Path("id") accountId: String
|
@Path("id") accountId: String
|
||||||
|
|
Loading…
Reference in a new issue