Misskeyクライアント登録のスコープ比較をより精密にした

This commit is contained in:
tateisu 2018-08-30 22:06:23 +09:00
parent 4f29ec0676
commit ddb8af590c
2 changed files with 19 additions and 3 deletions

View File

@ -552,8 +552,6 @@ class ActPost : AppCompatActivity(), View.OnClickListener, PostAttachment.Callba
val mention_list = ArrayList<String>()
// 元レスにあった mention
// TODO Misskey対応
val old_mentions = reply_status.mentions
if(old_mentions != null) {
for(mention in old_mentions) {

View File

@ -238,6 +238,16 @@ class TootApiClient(
// https://github.com/syuilo/misskey/issues/2341
}
private fun encodeScopeArray(scope_array : JSONArray?) : String? {
scope_array ?: return null
val list = scope_array.toStringArrayList()
list.sort()
return list.joinToString(",")
}
private fun compareScopeArray(a : JSONArray, b : JSONArray?) : Boolean {
return encodeScopeArray(a) == encodeScopeArray(b)
}
}
@Suppress("unused")
@ -695,7 +705,10 @@ class TootApiClient(
// tmpClientInfo はsecretを含まないので保存してはいけない
if(tmpClientInfo != null // アプリが登録済みで
&& client_name == tmpClientInfo.parseString("name") // クライアント名が一致してて
&& tmpClientInfo.optJSONArray("permission")?.length() == scope_array.length() // パーミッションが同じ
&& compareScopeArray(
scope_array,
tmpClientInfo.optJSONArray("permission")
) // パーミッションが同じ
&& appSecret?.isNotEmpty() == true
) {
// クライアント情報を再利用する
@ -1423,6 +1436,8 @@ fun TootApiClient.syncAccountByAcct(accessInfo : SavedAccount, acct : String) :
}
fun TootApiClient.syncStatus(accessInfo : SavedAccount, url : String) : TootApiResult? {
// FIXME Misskeyアカウントでも別アカのトゥートをローカルに同期したい
if(accessInfo.isMisskey) {
return TootApiResult("Misskey has no API to sync note from remote to local.")
}
@ -1447,9 +1462,12 @@ fun TootApiClient.syncStatus(
accessInfo : SavedAccount,
statusRemote : TootStatus
) : TootApiResult? {
// FIXME Misskeyアカウントでも別アカのトゥートをローカルに同期したい
if(accessInfo.isMisskey) {
return TootApiResult("Misskey has no API to sync note from remote to local.")
}
var result : TootApiResult? = TootApiResult("missing url or uri")
var sv = statusRemote.url
when {