カラムの差分読み込みのコードをリファクタ

This commit is contained in:
tateisu 2020-09-22 01:50:18 +09:00
parent d8188d8869
commit c209e70796
3 changed files with 42 additions and 36 deletions

View File

@ -12,7 +12,7 @@ import jp.juggler.util.*
class ColumnTask_Refresh(
columnArg : Column,
private val bSilent : Boolean,
internal val bBottom : Boolean,
private val bBottom : Boolean,
internal val posted_status_id : EntityId? = null,
internal val refresh_after_toot : Int = - 1
) : ColumnTask(
@ -723,12 +723,6 @@ class ColumnTask_Refresh(
return firstResult
}
private val nullArrayFinder : (JsonObject) -> JsonArray? =
{ null }
private val defaultListParserAccount : (parser : TootParser, jsonArray : JsonArray) -> List<TootAccountRef> =
{ parser, jsonArray -> parser.accountList(jsonArray) }
private fun defaultRequesterMisskey(
client : TootApiClient,
path_base : String,
@ -889,7 +883,7 @@ class ColumnTask_Refresh(
val logCaption = "getNotificationList"
val listParser : (parser : TootParser, jsonArray : JsonArray) -> List<TootNotification> =
{ parser, jsonArray -> parser.notificationList(jsonArray) }
defaultNotificationListParser
val adder : (List<TootNotification>, Boolean) -> Unit =
{ src, head -> addWithFilterNotification(list_tmp, src, head = head) }
@ -970,10 +964,10 @@ class ColumnTask_Refresh(
client : TootApiClient,
path_base : String,
misskeyParams : JsonObject? = null,
misskeyArrayFinder : (JsonObject) -> JsonArray? =
arrayFinder : (JsonObject) -> JsonArray? =
nullArrayFinder,
misskeyCustomParser : (parser : TootParser, jsonArray : JsonArray) -> List<TootAccountRef> =
defaultListParserAccount
listParser : (parser : TootParser, jsonArray : JsonArray) -> List<TootAccountRef> =
defaultAccountListParser
) : TootApiResult? {
val logCaption = "getAccountList"
@ -988,15 +982,15 @@ class ColumnTask_Refresh(
bBottom -> refreshBottomMisskey(
logCaption,
requester = requester,
arrayFinder = misskeyArrayFinder,
listParser = misskeyCustomParser,
arrayFinder = arrayFinder,
listParser = listParser,
adder = adder
)
else -> refreshTopMisskey(
logCaption,
requester = requester,
arrayFinder = misskeyArrayFinder,
listParser = misskeyCustomParser,
arrayFinder = arrayFinder,
listParser = listParser,
adder = adder
)
}
@ -1019,15 +1013,15 @@ class ColumnTask_Refresh(
bBottom -> refreshBottomMastodon(
logCaption,
requester = requester,
arrayFinder = misskeyArrayFinder,
listParser = misskeyCustomParser,
arrayFinder = arrayFinder,
listParser = listParser,
adder = adder
)
else -> refreshTopMastodon(
logCaption,
requester = requester,
arrayFinder = misskeyArrayFinder,
listParser = misskeyCustomParser,
arrayFinder = arrayFinder,
listParser = listParser,
adder = adder
)
}
@ -1038,11 +1032,13 @@ class ColumnTask_Refresh(
client : TootApiClient,
path_base : String
) : TootApiResult? {
val logCaption = "getDomainList"
val adder : (List<TimelineItem>, Boolean) -> Unit =
{ src, head -> addAll(list_tmp, src, head = head) }
val listParser : (parser : TootParser, jsonArray : JsonArray) -> List<TootDomainBlock> =
{ _, jsonArray -> TootDomainBlock.parseList(jsonArray) }
val listParser = defaultDomainBlockListParser
return if(isMisskey) {
TootApiResult("misskey support is not yet implemented.")
@ -1229,7 +1225,7 @@ class ColumnTask_Refresh(
return TootApiResult(context.getString(R.string.end_of_list))
}
return client.searchMsp(q, old)?.also{ result->
return client.searchMsp(q, old)?.also { result ->
val jsonArray = result.jsonArray
if(jsonArray != null) {
// max_id の更新
@ -1246,17 +1242,17 @@ class ColumnTask_Refresh(
}
}
fun getTootSearch(client : TootApiClient) :TootApiResult? {
fun getTootSearch(client : TootApiClient) : TootApiResult? {
if(! bBottom) return TootApiResult("head of list.")
val q = column.search_query.trim { it <= ' ' }
val old = column.idOld?.toString()?.toLong()
if(q.isEmpty() || old==null) {
if(q.isEmpty() || old == null) {
list_tmp = ArrayList()
return TootApiResult(context.getString(R.string.end_of_list))
}
return client.searchTootsearch(q,old)?.also { result ->
return client.searchTootsearch(q, old)?.also { result ->
val jsonObject = result.jsonObject
if(jsonObject != null) {
// max_id の更新

View File

@ -200,7 +200,7 @@ enum class ColumnType(
client,
Column.PATH_MISSKEY_PROFILE_FOLLOWING,
misskeyParams = column.makeMisskeyParamsUserId(parser),
misskeyArrayFinder = misskeyArrayFinderUsers
arrayFinder = misskeyArrayFinderUsers
)
},
gap = { client ->
@ -232,7 +232,7 @@ enum class ColumnType(
client,
Column.PATH_MISSKEY_PROFILE_FOLLOWING,
misskeyParams = column.makeMisskeyParamsUserId(parser),
misskeyCustomParser = misskey11FollowingParser
listParser = misskey11FollowingParser
)
},
gap = { client ->
@ -265,7 +265,7 @@ enum class ColumnType(
client,
Column.PATH_MISSKEY_PROFILE_FOLLOWERS,
misskeyParams = column.makeMisskeyParamsUserId(parser),
misskeyCustomParser = misskey11FollowersParser
listParser = misskey11FollowersParser
)
},
gap = { client ->
@ -298,7 +298,7 @@ enum class ColumnType(
client,
Column.PATH_MISSKEY_PROFILE_FOLLOWERS,
misskeyParams = column.makeMisskeyParamsUserId(parser),
misskeyArrayFinder = misskeyArrayFinderUsers
arrayFinder = misskeyArrayFinderUsers
)
},
gap = { client ->
@ -831,8 +831,8 @@ enum class ColumnType(
client,
Column.PATH_MISSKEY_MUTES,
misskeyParams = access_info.putMisskeyApiToken(),
misskeyArrayFinder = misskeyArrayFinderUsers,
misskeyCustomParser = misskeyCustomParserMutes
arrayFinder = misskeyArrayFinderUsers,
listParser = misskeyCustomParserMutes
)
else -> getAccountList(client, Column.PATH_MUTES)
}
@ -887,7 +887,7 @@ enum class ColumnType(
client,
Column.PATH_MISSKEY_BLOCKS,
misskeyParams = access_info.putMisskeyApiToken(),
misskeyCustomParser = misskeyCustomParserBlocks
listParser = misskeyCustomParserBlocks
)
}
@ -938,7 +938,7 @@ enum class ColumnType(
client,
Column.PATH_MISSKEY_FOLLOW_REQUESTS,
misskeyParams = access_info.putMisskeyApiToken(),
misskeyCustomParser = misskeyCustomParserFollowRequest
listParser = misskeyCustomParserFollowRequest
)
} else {
getAccountList(client, Column.PATH_FOLLOW_REQUESTS)

View File

@ -208,7 +208,7 @@ internal fun JsonObject.addMisskeyNotificationFilter(column : Column) : JsonObje
if(column.dont_show_vote) {
add("poll_vote")
}
if( column.dont_show_normal_toot){
if(column.dont_show_normal_toot) {
// FIXME Misskeyには特定フォロー者からの投稿を通知する機能があるのか
}
}
@ -231,7 +231,8 @@ internal fun JsonObject.addMisskeyNotificationFilter(column : Column) : JsonObje
)
Column.QUICK_FILTER_REACTION -> put("includeTypes", jp.juggler.util.jsonArray("reaction"))
Column.QUICK_FILTER_VOTE -> put("includeTypes", jp.juggler.util.jsonArray("poll_vote"))
Column.QUICK_FILTER_POST ->{
Column.QUICK_FILTER_POST -> {
// FIXME Misskeyには特定フォロー者からの投稿を通知する機能があるのか
}
}
@ -469,6 +470,12 @@ internal val misskeyArrayFinderUsers = { it : JsonObject ->
////////////////////////////////////////////////////////////////////////////////
// account list parser
internal val nullArrayFinder : (JsonObject) -> JsonArray? =
{ null }
internal val defaultAccountListParser : (parser : TootParser, jsonArray : JsonArray) -> List<TootAccountRef> =
{ parser, jsonArray -> parser.accountList(jsonArray) }
private fun misskeyUnwrapRelationAccount(parser : TootParser, srcList : JsonArray, key : String) =
srcList.objectList().mapNotNull {
when(val relationId = EntityId.mayNull(it.string("id"))) {
@ -516,4 +523,7 @@ internal val misskeyCustomParserFavorites : (TootParser, JsonArray) -> List<Toot
// notification list parser
val defaultNotificationListParser : (parser : TootParser, jsonArray : JsonArray) -> List<TootNotification> =
{ parser, jsonArray -> parser.notificationList(jsonArray) }
{ parser, jsonArray -> parser.notificationList(jsonArray) }
val defaultDomainBlockListParser : (parser : TootParser, jsonArray : JsonArray) -> List<TootDomainBlock> =
{ _, jsonArray -> TootDomainBlock.parseList(jsonArray) }