SubwayTooter-Android-App/app/src/main/java/jp/juggler/subwaytooter/action/Action_Filter.kt

62 lines
2.0 KiB
Kotlin

package jp.juggler.subwaytooter.action
import jp.juggler.subwaytooter.ActMain
import jp.juggler.subwaytooter.App1
import jp.juggler.subwaytooter.R
import jp.juggler.subwaytooter.api.TootApiClient
import jp.juggler.subwaytooter.api.TootApiResult
import jp.juggler.subwaytooter.api.TootTask
import jp.juggler.subwaytooter.api.TootTaskRunner
import jp.juggler.subwaytooter.api.entity.TootFilter
import jp.juggler.subwaytooter.dialog.DlgConfirm
import jp.juggler.subwaytooter.table.SavedAccount
import jp.juggler.util.LogCategory
import jp.juggler.util.showToast
import okhttp3.Request
object Action_Filter {
private val log = LogCategory("Action_Filter")
fun delete( activity : ActMain, access_info : SavedAccount,filter: TootFilter ,bConfirmed :Boolean = false){
if(!bConfirmed){
DlgConfirm.openSimple(activity,activity.getString(R.string.filter_delete_confirm, filter.phrase)){
delete(activity,access_info,filter,bConfirmed=true)
}
return
}
TootTaskRunner(activity).run(access_info, object : TootTask {
var filterList : ArrayList<TootFilter>? = null
override fun background(client : TootApiClient) : TootApiResult? {
var result = client.request("/api/v1/filters/${filter.id}", Request.Builder().delete())
if( result != null && result.error == null){
result = client.request("/api/v1/filters")
val jsonArray = result?.jsonArray
if( jsonArray != null ) filterList = TootFilter.parseList(jsonArray)
}
return result
}
override fun handleResult(result : TootApiResult?) {
if(result == null) return // cancelled.
val filterList = this.filterList
if( filterList != null) {
showToast(activity, false, R.string.delete_succeeded)
for(column in App1.getAppState(activity).column_list) {
if( column.access_info == access_info ){
column.onFilterDeleted(filter,filterList)
}
}
} else {
showToast(activity, false, result.error)
}
}
})
}
}