Mastodonのクライアント情報再利用チェックでAPIがエラーを返した際のフォールバックが不足していた
This commit is contained in:
parent
953cdea115
commit
c4150b1ff1
|
@ -104,6 +104,7 @@ class AuthMastodon(override val client: TootApiClient) : AuthBase() {
|
||||||
// スコープ一覧を取得する
|
// スコープ一覧を取得する
|
||||||
val scopeString = mastodonScope(tootInstance)
|
val scopeString = mastodonScope(tootInstance)
|
||||||
|
|
||||||
|
try {
|
||||||
when {
|
when {
|
||||||
// 古いクライアント情報は使わない。削除もしない。
|
// 古いクライアント情報は使わない。削除もしない。
|
||||||
AUTH_VERSION != clientInfo?.int(KEY_AUTH_VERSION) -> Unit
|
AUTH_VERSION != clientInfo?.int(KEY_AUTH_VERSION) -> Unit
|
||||||
|
@ -127,7 +128,7 @@ class AuthMastodon(override val client: TootApiClient) : AuthBase() {
|
||||||
// クライアント情報を再利用する
|
// クライアント情報を再利用する
|
||||||
!forceUpdateClient && oldScope == scopeString -> return clientInfo
|
!forceUpdateClient && oldScope == scopeString -> return clientInfo
|
||||||
|
|
||||||
else -> try {
|
else -> {
|
||||||
// マストドン2.4でスコープが追加された
|
// マストドン2.4でスコープが追加された
|
||||||
// 取得時のスコープ指定がマッチしない(もしくは記録されていない)ならクライアント情報を再利用してはいけない
|
// 取得時のスコープ指定がマッチしない(もしくは記録されていない)ならクライアント情報を再利用してはいけない
|
||||||
daoClientInfo.delete(apiHost, clientName)
|
daoClientInfo.delete(apiHost, clientName)
|
||||||
|
@ -142,13 +143,14 @@ class AuthMastodon(override val client: TootApiClient) : AuthBase() {
|
||||||
?: error("revokeClientCredential: missing client_secret"),
|
?: error("revokeClientCredential: missing client_secret"),
|
||||||
clientCredential = clientCredential,
|
clientCredential = clientCredential,
|
||||||
)
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
} catch (ex: Throwable) {
|
} catch (ex: Throwable) {
|
||||||
// クライアント情報の削除処理はエラーが起きても無視する
|
// クライアント再利用チェックやクライアント情報の削除処理はエラーが起きても無視する
|
||||||
log.w(ex, "can't delete client information.")
|
log.w(ex, "can't verify/delete client information.")
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
clientInfo = api.registerClient(apiHost, scopeString, clientName, callbackUrl).apply {
|
clientInfo = api.registerClient(apiHost, scopeString, clientName, callbackUrl).apply {
|
||||||
|
|
|
@ -204,7 +204,6 @@ private class EmojiPicker(
|
||||||
}
|
}
|
||||||
|
|
||||||
private inner class VhCategory(
|
private inner class VhCategory(
|
||||||
parent: ViewGroup,
|
|
||||||
view: FrameLayout = FrameLayout(activity),
|
view: FrameLayout = FrameLayout(activity),
|
||||||
) : ViewHolderBase(view) {
|
) : ViewHolderBase(view) {
|
||||||
var lastItem: PickerItemCategory? = null
|
var lastItem: PickerItemCategory? = null
|
||||||
|
@ -212,12 +211,15 @@ private class EmojiPicker(
|
||||||
val tv = AppCompatTextView(activity).apply {
|
val tv = AppCompatTextView(activity).apply {
|
||||||
layoutParams = FrameLayout.LayoutParams(matchParent, wrapContent)
|
layoutParams = FrameLayout.LayoutParams(matchParent, wrapContent)
|
||||||
minHeightCompat = (density * 48f + 0.5f).toInt()
|
minHeightCompat = (density * 48f + 0.5f).toInt()
|
||||||
gravity = Gravity.START or Gravity.CENTER_VERTICAL
|
|
||||||
includeFontPadding = false
|
|
||||||
background = ContextCompat.getDrawable(
|
background = ContextCompat.getDrawable(
|
||||||
this@EmojiPicker.activity,
|
this@EmojiPicker.activity,
|
||||||
R.drawable.btn_bg_transparent_round6dp
|
R.drawable.btn_bg_transparent_round6dp
|
||||||
)
|
)
|
||||||
|
gravity = Gravity.START or Gravity.CENTER_VERTICAL
|
||||||
|
includeFontPadding = false
|
||||||
|
val paddingH = (density * 4f + 0.5f).toInt()
|
||||||
|
val paddingV = (density * 2f + 0.5f).toInt()
|
||||||
|
setPadding(paddingH,paddingV,paddingH,paddingV)
|
||||||
compoundDrawablePadding = (density * 4f + 0.5f).toInt()
|
compoundDrawablePadding = (density * 4f + 0.5f).toInt()
|
||||||
|
|
||||||
setOnClickListener {
|
setOnClickListener {
|
||||||
|
@ -401,7 +403,7 @@ private class EmojiPicker(
|
||||||
|
|
||||||
override fun onCreateViewHolder(viewGroup: ViewGroup, viewType: Int) =
|
override fun onCreateViewHolder(viewGroup: ViewGroup, viewType: Int) =
|
||||||
when (viewType) {
|
when (viewType) {
|
||||||
VT_CATEGORY -> VhCategory(viewGroup)
|
VT_CATEGORY -> VhCategory()
|
||||||
VT_CUSTOM_EMOJI -> VhCustomEmoji()
|
VT_CUSTOM_EMOJI -> VhCustomEmoji()
|
||||||
VT_TWEMOJI -> VhTwemoji()
|
VT_TWEMOJI -> VhTwemoji()
|
||||||
VT_COMPAT_EMOJI -> VhAppCompatEmoji()
|
VT_COMPAT_EMOJI -> VhAppCompatEmoji()
|
||||||
|
|
Loading…
Reference in New Issue