SubwayTooter-Android-App/app/src/main/java/jp/juggler/subwaytooter/actpost/ActPostVisibility.kt

76 lines
2.5 KiB
Kotlin
Raw Normal View History

2021-06-28 09:09:00 +02:00
package jp.juggler.subwaytooter.actpost
2021-06-23 06:14:25 +02:00
import androidx.appcompat.app.AlertDialog
2021-06-28 09:09:00 +02:00
import jp.juggler.subwaytooter.ActPost
import jp.juggler.subwaytooter.R
2021-06-23 06:14:25 +02:00
import jp.juggler.subwaytooter.api.entity.InstanceCapability
import jp.juggler.subwaytooter.api.entity.TootInstance
import jp.juggler.subwaytooter.api.entity.TootVisibility
import jp.juggler.subwaytooter.getVisibilityCaption
import jp.juggler.subwaytooter.getVisibilityIconId
2021-06-23 06:14:25 +02:00
fun ActPost.showVisibility() {
val iconId = (states.visibility ?: TootVisibility.Public)
.getVisibilityIconId(account?.isMisskey == true)
views.btnVisibility.setImageResource(iconId)
2021-06-23 06:14:25 +02:00
}
2021-06-27 12:22:11 +02:00
fun ActPost.openVisibilityPicker() {
2021-06-23 06:14:25 +02:00
val ti = TootInstance.getCached(account)
val list = when {
2021-06-27 12:22:11 +02:00
account?.isMisskey == true -> arrayOf(
// TootVisibility.WebSetting,
TootVisibility.Public,
TootVisibility.UnlistedHome,
TootVisibility.PrivateFollowers,
TootVisibility.LocalPublic,
TootVisibility.LocalHome,
TootVisibility.LocalFollowers,
TootVisibility.DirectSpecified,
TootVisibility.DirectPrivate
)
2021-06-23 06:14:25 +02:00
2021-06-27 12:22:11 +02:00
InstanceCapability.visibilityMutual(ti) -> arrayOf(
TootVisibility.WebSetting,
TootVisibility.Public,
TootVisibility.UnlistedHome,
TootVisibility.PrivateFollowers,
TootVisibility.Limited,
TootVisibility.Mutual,
TootVisibility.DirectSpecified
)
2021-06-23 06:14:25 +02:00
2021-06-27 12:22:11 +02:00
InstanceCapability.visibilityLimited(ti) -> arrayOf(
TootVisibility.WebSetting,
TootVisibility.Public,
TootVisibility.UnlistedHome,
TootVisibility.PrivateFollowers,
TootVisibility.Limited,
TootVisibility.DirectSpecified
)
2021-06-23 06:14:25 +02:00
2021-06-27 12:22:11 +02:00
else -> arrayOf(
TootVisibility.WebSetting,
TootVisibility.Public,
TootVisibility.UnlistedHome,
TootVisibility.PrivateFollowers,
TootVisibility.DirectSpecified
)
2021-06-23 06:14:25 +02:00
}
val captionList = list
.map { getVisibilityCaption(this, account?.isMisskey == true, it) }
2021-06-23 06:14:25 +02:00
.toTypedArray()
AlertDialog.Builder(this)
.setTitle(R.string.choose_visibility)
2021-06-27 12:22:11 +02:00
.setNegativeButton(R.string.cancel, null)
2021-06-23 06:14:25 +02:00
.setItems(captionList) { _, which ->
2021-06-27 12:22:11 +02:00
list.elementAtOrNull(which)?.let {
states.visibility = it
2021-06-23 06:14:25 +02:00
showVisibility()
}
}
.show()
}