- (Misskey)プロフカラムの複数ピン留め表示に対応。

- (Misskey)プロフカラムのTLの初回取得時に未来のuntilDateを指定する。
This commit is contained in:
tateisu 2018-11-18 12:51:03 +09:00
parent 3d9b3e634c
commit d89a41096d
6 changed files with 51 additions and 49 deletions

View File

@ -1913,7 +1913,8 @@ class Column(
misskeyParams : JSONObject? = null,
misskeyCustomParser : (parser : TootParser, jsonArray : JSONArray) -> ArrayList<TootStatus> =
{ parser, jsonArray -> parser.statusList(jsonArray) }
{ parser, jsonArray -> parser.statusList(jsonArray) },
initialUntilDate : Boolean = false
) : TootApiResult? {
val params = misskeyParams ?: makeMisskeyTimelineParameter(parser)
@ -1924,7 +1925,12 @@ class Column(
// 初回の取得
val result = when {
isMisskey -> client.request(path_base, params.toPostRequestBuilder())
isMisskey -> {
if( initialUntilDate ){
params.put("untilDate",System.currentTimeMillis() + ( 86400000L * 365))
}
client.request(path_base, params.toPostRequestBuilder())
}
aroundMin -> client.request("$path_base&min_id=$status_id")
aroundMax -> client.request("$path_base&max_id=$status_id")
else -> client.request(path_base)
@ -2647,7 +2653,7 @@ class Column(
)
}
TAB_STATUS -> {
else -> {
var instance = access_info.instance
@ -2679,24 +2685,21 @@ class Column(
getStatuses(client, path)
} else {
// 固定トゥートの取得
val pinnedNote = who_account?.get()?.pinnedNote
if(pinnedNote != null) {
pinnedNote.pinned = true
val src = ArrayList<TootStatus>()
src.add(pinnedNote)
this.list_pinned = addWithFilterStatus(null, src)
val pinnedNotes = who_account?.get()?.pinnedNotes
if(pinnedNotes != null) {
this.list_pinned =
addWithFilterStatus(null, pinnedNotes)
}
// 通常トゥートの取得
getStatuses(
client,
PATH_MISSKEY_PROFILE_STATUSES,
misskeyParams = makeMisskeyParamsProfileStatuses(parser)
misskeyParams = makeMisskeyParamsProfileStatuses(parser),
initialUntilDate = true
)
}
}
else -> throw RuntimeException("profile_tab : invalid value.")
}
}
@ -2827,6 +2830,7 @@ class Column(
, misskeyParams = makeMisskeyTimelineParameter(parser)
.put("tag", hashtag)
.put("limit", MISSKEY_HASHTAG_LIMIT)
)
} else {
getStatuses(client, makeHashtagUrl(hashtag))
@ -6815,13 +6819,13 @@ class Column(
}
}
fun getContentColor(activity:AppCompatActivity) : Int = if(content_color != 0) {
fun getContentColor(activity : AppCompatActivity) : Int = if(content_color != 0) {
content_color
} else {
Styler.getAttributeColor(activity, R.attr.colorContentText)
}
fun getAcctColor(activity:AppCompatActivity) : Int = if(acct_color != 0) {
fun getAcctColor(activity : AppCompatActivity) : Int = if(acct_color != 0) {
acct_color
} else {
Styler.getAttributeColor(activity, R.attr.colorTimeSmall)
@ -6838,5 +6842,4 @@ class Column(
registerColumnId(column_id, this)
}
}

View File

@ -101,7 +101,7 @@ internal class StatusButtons(
color = color_normal
)
val a = (((color_normal ushr 24)/255f) * 0.7f)
// val a = (((color_normal ushr 24)/255f) * 0.7f)
// setIconDrawableId で色を指定するとアルファ値も反映されるらしい
// btnConversation.alpha = a

View File

@ -2,6 +2,7 @@ package jp.juggler.subwaytooter.api.entity
import jp.juggler.subwaytooter.api.TootParser
import jp.juggler.subwaytooter.util.LogCategory
import jp.juggler.subwaytooter.util.toStringArrayList
import org.json.JSONArray
import org.json.JSONException
import org.json.JSONObject
@ -215,5 +216,3 @@ fun <T : TootAttachmentLike> ArrayList<T>.encodeJson() : JSONArray {
}
return a
}

View File

@ -103,11 +103,11 @@ class NicoEnquete(
this.items = parseChoiceList(
parser.context,
status,
parseStringArray(src, "items")
src.parseStringArrayList("items")
)
this.ratios = parseFloatArray(src, "ratios")
this.ratios_text = parseStringArray(src, "ratios_text")
this.ratios = src.parseFloatArrayList("ratios")
this.ratios_text = src.parseStringArrayList( "ratios_text")
}
}
@ -172,29 +172,6 @@ class NicoEnquete(
}
}
private fun parseStringArray(src : JSONObject, name : String) : ArrayList<String>? {
val array = src.optJSONArray(name)
if(array != null) {
val dst = array.toStringArrayList()
if(dst.isNotEmpty()) return dst
}
return null
}
private fun parseFloatArray(src : JSONObject, name : String) : ArrayList<Float>? {
val array = src.optJSONArray(name)
if(array != null) {
val size = array.length()
val dst = ArrayList<Float>(size)
for(i in 0 until size) {
val dv = array.optDouble(i)
dst.add(dv.toFloat())
}
if(dst.isNotEmpty()) return dst
}
return null
}
private fun parseChoiceList(
context : Context,
status : TootStatus,

View File

@ -185,8 +185,8 @@ open class TootAccount(parser : TootParser, src : JSONObject) {
// user_hides_network is preference, not exposed in API
// val user_hides_network : Boolean
var pinnedNote : TootStatus? = null
var pinnedNoteId : String? = null
var pinnedNotes : ArrayList<TootStatus>? = null
var pinnedNoteIds : ArrayList<String>? = null
init {
var sv : String?
@ -243,10 +243,11 @@ open class TootAccount(parser : TootParser, src : JSONObject) {
this.header = src.parseString("bannerUrl")
this.header_static = src.parseString("bannerUrl")
this.pinnedNoteId = src.parseString("pinnedNoteId")
this.pinnedNoteIds = src.parseStringArrayList("pinnedNoteIds")
if(parser.misskeyDecodeProfilePin) {
this.pinnedNote = parseItem(::TootStatus, parser, src.optJSONObject("pinnedNote"))
val list = parseList(::TootStatus, parser,src.optJSONArray("pinnedNotes"))
list.forEach { it.pinned = true }
this.pinnedNotes = if( list.isNotEmpty() ) list else null
}
UserRelationMisskey.fromAccount(parser,src,id)

View File

@ -684,6 +684,28 @@ fun JSONArray.toStringArrayList() : ArrayList<String> {
return dst_list
}
fun JSONObject.parseStringArrayList(name : String) : ArrayList<String>? {
val array = optJSONArray(name)
if(array != null) {
val dst = array.toStringArrayList()
if(dst.isNotEmpty()) return dst
}
return null
}
fun JSONObject.parseFloatArrayList(name : String) : ArrayList<Float>? {
val array = optJSONArray(name)
if(array != null) {
val size = array.length()
val dst = ArrayList<Float>(size)
for(i in 0 until size) {
val dv = array.optDouble(i)
dst.add(dv.toFloat())
}
if(dst.isNotEmpty()) return dst
}
return null
}
fun String.toJsonObject() = JSONObject(this)
fun String.toJsonArray() = JSONArray(this)