EditProfileActivity: allow adding fiels as much as instance allows (fix #89)
This commit is contained in:
parent
dc1a91e2ca
commit
9586ada327
@ -64,7 +64,7 @@ class EditProfileActivity : BaseActivity(), Injectable {
|
||||
private const val AVATAR_PICK_RESULT = 1
|
||||
private const val HEADER_PICK_RESULT = 2
|
||||
private const val PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE = 1
|
||||
private const val MAX_ACCOUNT_FIELDS = 4
|
||||
private const val MASTODON_MAX_ACCOUNT_FIELDS = 4
|
||||
|
||||
private const val BUNDLE_CURRENTLY_PICKING = "BUNDLE_CURRENTLY_PICKING"
|
||||
}
|
||||
@ -77,6 +77,7 @@ class EditProfileActivity : BaseActivity(), Injectable {
|
||||
private var currentlyPicking: PickType = PickType.NOTHING
|
||||
|
||||
private val accountFieldEditAdapter = AccountFieldEditAdapter()
|
||||
private var maxAccountFields = MASTODON_MAX_ACCOUNT_FIELDS
|
||||
|
||||
private enum class PickType {
|
||||
NOTHING,
|
||||
@ -112,7 +113,7 @@ class EditProfileActivity : BaseActivity(), Injectable {
|
||||
|
||||
addFieldButton.setOnClickListener {
|
||||
accountFieldEditAdapter.addField()
|
||||
if(accountFieldEditAdapter.itemCount >= MAX_ACCOUNT_FIELDS) {
|
||||
if(accountFieldEditAdapter.itemCount >= maxAccountFields) {
|
||||
it.isVisible = false
|
||||
}
|
||||
|
||||
@ -123,7 +124,7 @@ class EditProfileActivity : BaseActivity(), Injectable {
|
||||
|
||||
viewModel.obtainProfile()
|
||||
|
||||
viewModel.profileData.observe(this, Observer<Resource<Account>> { profileRes ->
|
||||
viewModel.profileData.observe(this) { profileRes ->
|
||||
when (profileRes) {
|
||||
is Success -> {
|
||||
val me = profileRes.data
|
||||
@ -134,7 +135,7 @@ class EditProfileActivity : BaseActivity(), Injectable {
|
||||
lockedCheckBox.isChecked = me.locked
|
||||
|
||||
accountFieldEditAdapter.setFields(me.source?.fields ?: emptyList())
|
||||
addFieldButton.isEnabled = me.source?.fields?.size ?: 0 < MAX_ACCOUNT_FIELDS
|
||||
addFieldButton.isEnabled = me.source?.fields?.size ?: 0 < maxAccountFields
|
||||
|
||||
if(viewModel.avatarData.value == null) {
|
||||
Glide.with(this)
|
||||
@ -164,24 +165,34 @@ class EditProfileActivity : BaseActivity(), Injectable {
|
||||
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
viewModel.obtainInstance()
|
||||
viewModel.instanceData.observe(this, Observer<Resource<Instance>> { result ->
|
||||
viewModel.instanceData.observe(this) { result ->
|
||||
when (result) {
|
||||
is Success -> {
|
||||
val instance = result.data
|
||||
if (instance?.maxBioChars != null && instance.maxBioChars > 0) {
|
||||
noteEditTextLayout.counterMaxLength = instance.maxBioChars
|
||||
}
|
||||
|
||||
instance?.pleroma?.metadata?.fieldsLimits?.let {
|
||||
maxAccountFields = it.maxFields
|
||||
|
||||
if(maxAccountFields > MASTODON_MAX_ACCOUNT_FIELDS
|
||||
&& accountFieldEditAdapter.itemCount == MASTODON_MAX_ACCOUNT_FIELDS
|
||||
&& !addFieldButton.isEnabled) {
|
||||
addFieldButton.isEnabled = true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
observeImage(viewModel.avatarData, avatarPreview, avatarProgressBar, true)
|
||||
observeImage(viewModel.headerData, headerPreview, headerProgressBar, false)
|
||||
|
||||
viewModel.saveData.observe(this, Observer<Resource<Nothing>> {
|
||||
viewModel.saveData.observe(this) {
|
||||
when(it) {
|
||||
is Success -> {
|
||||
finish()
|
||||
@ -193,7 +204,7 @@ class EditProfileActivity : BaseActivity(), Injectable {
|
||||
onSaveFailure(it.errorMessage)
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
@ -56,10 +56,15 @@ data class InstancePleroma (
|
||||
)
|
||||
|
||||
data class InstancePleromaMetadata (
|
||||
val features: List<String>
|
||||
val features: List<String>,
|
||||
@SerializedName("fields_limits") val fieldsLimits: InstancePleromaMetadataFieldsLimits,
|
||||
)
|
||||
|
||||
data class InstancePleromaMetadataFieldsLimits(
|
||||
@SerializedName("max_fields") val maxFields: Int,
|
||||
)
|
||||
|
||||
data class PollLimits (
|
||||
@SerializedName("max_options") val maxOptions: Int?,
|
||||
@SerializedName("max_option_chars") val maxOptionChars: Int?
|
||||
@SerializedName("max_options") val maxOptions: Int?,
|
||||
@SerializedName("max_option_chars") val maxOptionChars: Int?
|
||||
)
|
||||
|
Loading…
Reference in New Issue
Block a user