(Misskey)ミュート設定/解除操作と「ミュートしたユーザ」カラムの表示
This commit is contained in:
parent
8a32a54041
commit
41eb1af706
|
@ -312,22 +312,43 @@ class Column(
|
|||
})
|
||||
}
|
||||
|
||||
private val misskeyArrayFinderUsers = { it:JSONObject -> it.optJSONArray("users") }
|
||||
|
||||
private val misskeyCustomParserFollowRequest =
|
||||
{ parser : TootParser, jsonArray : JSONArray ->
|
||||
val dst = ArrayList<TootAccountRef>()
|
||||
for(i in 0 until jsonArray.length()) {
|
||||
val src = jsonArray.optJSONObject(i) ?: continue
|
||||
|
||||
val followerRef = TootAccountRef.mayNull(
|
||||
val accountRef = TootAccountRef.mayNull(
|
||||
parser,
|
||||
parser.account(src.optJSONObject("follower"))
|
||||
) ?: continue
|
||||
|
||||
val requestId = EntityId.mayNull(src.parseString("id")) ?: continue
|
||||
|
||||
followerRef.get()._orderId = requestId
|
||||
accountRef.get()._orderId = requestId
|
||||
|
||||
dst.add(followerRef)
|
||||
dst.add(accountRef)
|
||||
}
|
||||
dst
|
||||
}
|
||||
val misskeyCustomParserMutes =
|
||||
{ parser : TootParser, jsonArray : JSONArray ->
|
||||
val dst = ArrayList<TootAccountRef>()
|
||||
for(i in 0 until jsonArray.length()) {
|
||||
val src = jsonArray.optJSONObject(i) ?: continue
|
||||
|
||||
val accountRef = TootAccountRef.mayNull(
|
||||
parser,
|
||||
parser.account(src.optJSONObject("follower"))
|
||||
) ?: continue
|
||||
|
||||
val requestId = EntityId.mayNull(src.parseString("id")) ?: continue
|
||||
|
||||
accountRef.get()._orderId = requestId
|
||||
|
||||
dst.add(accountRef)
|
||||
}
|
||||
dst
|
||||
}
|
||||
|
@ -1970,7 +1991,7 @@ class Column(
|
|||
PATH_MISSKEY_PROFILE_FOLLOWING,
|
||||
emptyMessage = context.getString(R.string.none_or_hidden_following),
|
||||
misskeyParams = makeMisskeyParamsUserId(parser),
|
||||
misskeyArrayFinder = { it.optJSONArray("users") }
|
||||
misskeyArrayFinder = misskeyArrayFinderUsers
|
||||
)
|
||||
} else {
|
||||
parseAccountList(
|
||||
|
@ -1990,7 +2011,7 @@ class Column(
|
|||
PATH_MISSKEY_PROFILE_FOLLOWERS,
|
||||
emptyMessage = context.getString(R.string.none_or_hidden_followers),
|
||||
misskeyParams = makeMisskeyParamsUserId(parser),
|
||||
misskeyArrayFinder = { it.optJSONArray("users") }
|
||||
misskeyArrayFinder = misskeyArrayFinderUsers
|
||||
)
|
||||
} else {
|
||||
parseAccountList(
|
||||
|
@ -2058,7 +2079,18 @@ class Column(
|
|||
}
|
||||
}
|
||||
|
||||
TYPE_MUTES -> return parseAccountList(client, PATH_MUTES)
|
||||
TYPE_MUTES -> return if(isMisskey){
|
||||
|
||||
parseAccountList(
|
||||
client
|
||||
, "/api/mute/list"
|
||||
, misskeyParams = access_info.putMisskeyApiToken(JSONObject())
|
||||
|
||||
,misskeyArrayFinder = misskeyArrayFinderUsers
|
||||
)
|
||||
}else{
|
||||
parseAccountList(client, PATH_MUTES)
|
||||
}
|
||||
TYPE_KEYWORD_FILTER -> return parseFilterList(client, PATH_FILTERS)
|
||||
|
||||
TYPE_BLOCKS -> return parseAccountList(client, PATH_BLOCKS)
|
||||
|
@ -3460,7 +3492,7 @@ class Column(
|
|||
client,
|
||||
PATH_MISSKEY_PROFILE_FOLLOWING,
|
||||
misskeyParams = makeMisskeyParamsUserId(parser),
|
||||
misskeyArrayFinder = { it.optJSONArray("users") }
|
||||
misskeyArrayFinder = misskeyArrayFinderUsers
|
||||
)
|
||||
} else {
|
||||
getAccountList(
|
||||
|
@ -3478,7 +3510,7 @@ class Column(
|
|||
client,
|
||||
PATH_MISSKEY_PROFILE_FOLLOWERS,
|
||||
misskeyParams = makeMisskeyParamsUserId(parser),
|
||||
misskeyArrayFinder = { it.optJSONArray("users") }
|
||||
misskeyArrayFinder = misskeyArrayFinderUsers
|
||||
)
|
||||
} else {
|
||||
getAccountList(
|
||||
|
@ -3527,7 +3559,17 @@ class Column(
|
|||
)
|
||||
}
|
||||
|
||||
TYPE_MUTES -> getAccountList(client, PATH_MUTES)
|
||||
TYPE_MUTES -> if(isMisskey){
|
||||
getAccountList(
|
||||
client
|
||||
, "/api/mute/list"
|
||||
, misskeyParams = access_info.putMisskeyApiToken(JSONObject())
|
||||
|
||||
,misskeyArrayFinder = misskeyArrayFinderUsers
|
||||
)
|
||||
}else{
|
||||
getAccountList(client, PATH_MUTES)
|
||||
}
|
||||
|
||||
TYPE_BLOCKS -> getAccountList(client, PATH_BLOCKS)
|
||||
|
||||
|
@ -3796,13 +3838,11 @@ class Column(
|
|||
|
||||
fun getAccountList(
|
||||
client : TootApiClient
|
||||
,
|
||||
path_base : String
|
||||
,
|
||||
misskeyParams : JSONObject? = null
|
||||
,
|
||||
misskeyCustomParser : (parser : TootParser, jsonArray : JSONArray) -> ArrayList<TootAccountRef> =
|
||||
,path_base : String
|
||||
,misskeyParams : JSONObject? = null
|
||||
,misskeyCustomParser : (parser : TootParser, jsonArray : JSONArray) -> ArrayList<TootAccountRef> =
|
||||
{ parser, jsonArray -> parser.accountList(jsonArray) }
|
||||
,misskeyArrayFinder :(jsonObject:JSONObject)->JSONArray? = {null}
|
||||
|
||||
) : TootApiResult? {
|
||||
|
||||
|
@ -3834,6 +3874,11 @@ class Column(
|
|||
since_id?.putMisskeySince(params)
|
||||
val r2 = client.request(path_base, params.toPostRequestBuilder())
|
||||
|
||||
val jsonObject = r2?.jsonObject
|
||||
if( jsonObject != null ){
|
||||
r2.data = misskeyArrayFinder(jsonObject)
|
||||
}
|
||||
|
||||
val jsonArray = r2?.jsonArray
|
||||
if(jsonArray == null) {
|
||||
log.d("gap-account: error. make gap.")
|
||||
|
@ -4292,7 +4337,17 @@ class Column(
|
|||
String.format(Locale.JAPAN, PATH_FAVOURITED_BY, status_id)
|
||||
)
|
||||
|
||||
TYPE_MUTES -> getAccountList(client, PATH_MUTES)
|
||||
TYPE_MUTES -> if(isMisskey){
|
||||
getAccountList(
|
||||
client
|
||||
, "/api/mute/list"
|
||||
, misskeyParams = access_info.putMisskeyApiToken(JSONObject())
|
||||
|
||||
,misskeyArrayFinder = misskeyArrayFinderUsers
|
||||
)
|
||||
}else{
|
||||
getAccountList(client, PATH_MUTES)
|
||||
}
|
||||
|
||||
TYPE_BLOCKS -> getAccountList(client, PATH_BLOCKS)
|
||||
|
||||
|
|
|
@ -3,6 +3,7 @@ package jp.juggler.subwaytooter
|
|||
import android.annotation.SuppressLint
|
||||
import android.app.Dialog
|
||||
import android.graphics.PorterDuff
|
||||
import android.opengl.Visibility
|
||||
import android.support.v4.app.ShareCompat
|
||||
import android.support.v7.app.AlertDialog
|
||||
import android.view.View
|
||||
|
@ -414,7 +415,30 @@ internal class DlgContextMenu(
|
|||
who,
|
||||
bMute = false
|
||||
)
|
||||
} else {
|
||||
} else if(access_info.isMisskey) {
|
||||
// Misskey には「このユーザからの通知もミュート」オプションはない
|
||||
|
||||
@SuppressLint("InflateParams")
|
||||
val view =
|
||||
activity.layoutInflater.inflate(R.layout.dlg_confirm, null, false)
|
||||
val tvMessage = view.findViewById<TextView>(R.id.tvMessage)
|
||||
tvMessage.text =
|
||||
activity.getString(R.string.confirm_mute_user, who.username)
|
||||
val cbMuteNotification = view.findViewById<CheckBox>(R.id.cbSkipNext)
|
||||
cbMuteNotification.visibility = View.GONE
|
||||
AlertDialog.Builder(activity)
|
||||
.setView(view)
|
||||
.setNegativeButton(R.string.cancel, null)
|
||||
.setPositiveButton(R.string.ok) { _, _ ->
|
||||
Action_User.mute(
|
||||
activity,
|
||||
access_info,
|
||||
who
|
||||
)
|
||||
}
|
||||
.show()
|
||||
}else{
|
||||
|
||||
@SuppressLint("InflateParams")
|
||||
val view =
|
||||
activity.layoutInflater.inflate(R.layout.dlg_confirm, null, false)
|
||||
|
|
|
@ -48,32 +48,52 @@ object Action_User {
|
|||
|
||||
var relation : UserRelation? = null
|
||||
override fun background(client : TootApiClient) : TootApiResult? {
|
||||
|
||||
val request_builder = Request.Builder().post(
|
||||
if(! bMute)
|
||||
RequestBody.create(TootApiClient.MEDIA_TYPE_FORM_URL_ENCODED, "")
|
||||
else if(bMuteNotification)
|
||||
RequestBody.create(
|
||||
TootApiClient.MEDIA_TYPE_JSON,
|
||||
"{\"notifications\": true}"
|
||||
)
|
||||
else
|
||||
RequestBody.create(
|
||||
TootApiClient.MEDIA_TYPE_JSON,
|
||||
"{\"notifications\": false}"
|
||||
)
|
||||
)
|
||||
|
||||
val result = client.request(
|
||||
"/api/v1/accounts/" + who.id + if(bMute) "/mute" else "/unmute",
|
||||
request_builder
|
||||
)
|
||||
val jsonObject = result?.jsonObject
|
||||
if(jsonObject != null) {
|
||||
relation =
|
||||
saveUserRelation(access_info, parseItem(::TootRelationShip, jsonObject))
|
||||
if(access_info.isMisskey){
|
||||
val params = access_info.putMisskeyApiToken(JSONObject())
|
||||
.put("userId",who.id.toString())
|
||||
|
||||
val result = client.request(when(bMute){
|
||||
true-> "/api/mute/create"
|
||||
else->"/api/mute/delete"
|
||||
},params.toPostRequestBuilder())
|
||||
if( result?.jsonObject != null ){
|
||||
// 204 no content
|
||||
|
||||
// update user relation
|
||||
val ur = UserRelation.load(access_info.db_id,who.id)
|
||||
ur.muting = bMute
|
||||
saveUserRelationMisskey(access_info,who.id,TootParser(activity,access_info))
|
||||
this.relation = ur
|
||||
}
|
||||
return result
|
||||
}else{
|
||||
val request_builder = Request.Builder().post(
|
||||
if(! bMute)
|
||||
RequestBody.create(TootApiClient.MEDIA_TYPE_FORM_URL_ENCODED, "")
|
||||
else if(bMuteNotification)
|
||||
RequestBody.create(
|
||||
TootApiClient.MEDIA_TYPE_JSON,
|
||||
"{\"notifications\": true}"
|
||||
)
|
||||
else
|
||||
RequestBody.create(
|
||||
TootApiClient.MEDIA_TYPE_JSON,
|
||||
"{\"notifications\": false}"
|
||||
)
|
||||
)
|
||||
|
||||
val result = client.request(
|
||||
"/api/v1/accounts/" + who.id + if(bMute) "/mute" else "/unmute",
|
||||
request_builder
|
||||
)
|
||||
val jsonObject = result?.jsonObject
|
||||
if(jsonObject != null) {
|
||||
relation =
|
||||
saveUserRelation(access_info, parseItem(::TootRelationShip, jsonObject))
|
||||
}
|
||||
return result
|
||||
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
override fun handleResult(result : TootApiResult?) {
|
||||
|
|
Loading…
Reference in New Issue