トゥート検索から 「別アカウントでプロフを開く」でMisskeyアカウントを選択した時の挙動を改善
This commit is contained in:
parent
7f3ba1749c
commit
418259ded9
|
@ -235,24 +235,52 @@ object Action_User {
|
|||
var who_local : TootAccount? = null
|
||||
override fun background(client : TootApiClient) : TootApiResult? {
|
||||
|
||||
val path = String.format(
|
||||
Locale.JAPAN,
|
||||
Column.PATH_SEARCH,
|
||||
who_url.encodePercent()
|
||||
) + "&resolve=1"
|
||||
val result = client.request(path)
|
||||
val jsonObject = result?.jsonObject
|
||||
|
||||
if(jsonObject != null) {
|
||||
val tmp = TootParser(activity, access_info).results(jsonObject)
|
||||
if(tmp != null && tmp.accounts.isNotEmpty()) {
|
||||
who_local = tmp.accounts[0].get()
|
||||
} else {
|
||||
return TootApiResult(activity.getString(R.string.user_id_conversion_failed))
|
||||
if( access_info.isMisskey){
|
||||
val acct = TootAccount.getAcctFromUrl(who_url)
|
||||
?: return TootApiResult("can't find acct from $who_url")
|
||||
val delm = acct.indexOf('@')
|
||||
val params = access_info.putMisskeyApiToken(JSONObject())
|
||||
if(delm!=-1){
|
||||
params.put("username",acct.substring(0,delm))
|
||||
params.put("host",acct.substring(delm+1))
|
||||
}else{
|
||||
params.put("username",acct)
|
||||
}
|
||||
val result = client.request("/api/users/show",params.toPostRequestBuilder())
|
||||
val jsonObject = result?.jsonObject
|
||||
|
||||
if(jsonObject != null) {
|
||||
val tmp = TootParser(activity, access_info).account(jsonObject)
|
||||
if(tmp != null){
|
||||
who_local = tmp
|
||||
} else {
|
||||
return TootApiResult(activity.getString(R.string.user_id_conversion_failed))
|
||||
}
|
||||
}
|
||||
|
||||
return result
|
||||
|
||||
}else{
|
||||
val path = String.format(
|
||||
Locale.JAPAN,
|
||||
Column.PATH_SEARCH,
|
||||
who_url.encodePercent()
|
||||
) + "&resolve=1"
|
||||
val result = client.request(path)
|
||||
val jsonObject = result?.jsonObject
|
||||
|
||||
if(jsonObject != null) {
|
||||
val tmp = TootParser(activity, access_info).results(jsonObject)
|
||||
if(tmp != null && tmp.accounts.isNotEmpty()) {
|
||||
who_local = tmp.accounts[0].get()
|
||||
} else {
|
||||
return TootApiResult(activity.getString(R.string.user_id_conversion_failed))
|
||||
}
|
||||
}
|
||||
|
||||
return result
|
||||
|
||||
}
|
||||
|
||||
return result
|
||||
}
|
||||
|
||||
override fun handleResult(result : TootApiResult?) {
|
||||
|
|
|
@ -310,6 +310,7 @@ open class TootAccount(parser : TootParser, src : JSONObject) {
|
|||
@Suppress("HasPlatformType")
|
||||
val reAccountUrl =
|
||||
Pattern.compile("\\Ahttps://([A-Za-z0-9.-]+)/@([A-Za-z0-9_]+(?:@[A-Za-z0-9][A-Za-z0-9.-]+?[A-Za-z0-9])?)(?:\\z|[?#])")
|
||||
|
||||
fun getAcctFromUrl(url:String):String?{
|
||||
val m = TootAccount.reAccountUrl.matcher(url)
|
||||
if(m.find()){
|
||||
|
|
|
@ -36,8 +36,10 @@ import jp.juggler.subwaytooter.table.SavedAccount
|
|||
import jp.juggler.subwaytooter.util.NetworkEmojiInvalidator
|
||||
import jp.juggler.subwaytooter.util.encodePercent
|
||||
import jp.juggler.subwaytooter.util.showToast
|
||||
import jp.juggler.subwaytooter.util.toPostRequestBuilder
|
||||
import jp.juggler.subwaytooter.view.MyListView
|
||||
import jp.juggler.subwaytooter.view.MyNetworkImageView
|
||||
import org.json.JSONObject
|
||||
|
||||
@SuppressLint("InflateParams")
|
||||
class DlgListMember(
|
||||
|
@ -187,17 +189,40 @@ class DlgListMember(
|
|||
override fun background(client : TootApiClient) : TootApiResult? {
|
||||
// リストに追加したいアカウントの自タンスでのアカウントIDを取得する
|
||||
local_who = null
|
||||
var result = client.request("/api/v1/search?resolve=true&q=" + target_user_full_acct.encodePercent())
|
||||
val jsonObject = result?.jsonObject ?: return result
|
||||
|
||||
|
||||
val search_result = TootParser(activity, list_owner ).results(jsonObject)
|
||||
if(search_result != null) {
|
||||
for(aRef in search_result.accounts) {
|
||||
val a = aRef.get()
|
||||
if(target_user_full_acct.equals(list_owner .getFullAcct(a), ignoreCase = true)) {
|
||||
local_who = a
|
||||
break
|
||||
if( list_owner.isMisskey){
|
||||
val acct = target_user_full_acct
|
||||
val delm = acct.indexOf('@')
|
||||
val params = list_owner.putMisskeyApiToken(JSONObject())
|
||||
if(delm!=-1){
|
||||
params.put("username",acct.substring(0,delm))
|
||||
params.put("host",acct.substring(delm+1))
|
||||
}else{
|
||||
params.put("username",acct)
|
||||
}
|
||||
val result = client.request("/api/users/show",params.toPostRequestBuilder())
|
||||
val jsonObject = result?.jsonObject
|
||||
|
||||
if(jsonObject != null) {
|
||||
val tmp = TootParser(activity, list_owner).account(jsonObject)
|
||||
if(tmp != null){
|
||||
local_who = tmp
|
||||
}
|
||||
}
|
||||
|
||||
}else{
|
||||
val result = client.request("/api/v1/search?resolve=true&q=" + target_user_full_acct.encodePercent())
|
||||
val jsonObject = result?.jsonObject ?: return result
|
||||
|
||||
|
||||
val search_result = TootParser(activity, list_owner ).results(jsonObject)
|
||||
if(search_result != null) {
|
||||
for(aRef in search_result.accounts) {
|
||||
val a = aRef.get()
|
||||
if(target_user_full_acct.equals(list_owner .getFullAcct(a), ignoreCase = true)) {
|
||||
local_who = a
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -206,7 +231,7 @@ class DlgListMember(
|
|||
?: return TootApiResult(activity.getString(R.string.account_sync_failed))
|
||||
|
||||
// リスト登録状況を取得
|
||||
result = client.request("/api/v1/accounts/" + local_who .id + "/lists")
|
||||
var result = client.request("/api/v1/accounts/" + local_who .id + "/lists")
|
||||
var jsonArray = result?.jsonArray ?:return result
|
||||
|
||||
// 結果を解釈する
|
||||
|
|
Loading…
Reference in New Issue