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
|
|
|
|
import jp.juggler.subwaytooter.Styler
|
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
|
|
|
|
|
|
|
|
fun ActPost.showVisibility() {
|
2022-01-05 10:39:48 +01:00
|
|
|
val iconId = Styler.getVisibilityIconId(account?.isMisskey == true,
|
|
|
|
states.visibility ?: TootVisibility.Public)
|
|
|
|
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 { Styler.getVisibilityCaption(this, account?.isMisskey == true, it) }
|
|
|
|
.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()
|
|
|
|
}
|