SubwayTooter-Android-App/app/src/main/java/jp/juggler/subwaytooter/util/PostAttachment.kt

51 lines
1.3 KiB
Kotlin

package jp.juggler.subwaytooter.util
import jp.juggler.subwaytooter.api.entity.TootAttachment
import kotlinx.coroutines.Job
class PostAttachment : Comparable<PostAttachment> {
interface Callback {
fun onPostAttachmentComplete(pa: PostAttachment)
fun onPostAttachmentProgress()
}
enum class Status(val id: Int) {
Progress(1),
Ok(2),
Error(3),
}
var isCancelled = false
val job = Job()
var status: Status
var attachment: TootAttachment? = null
var callback: Callback? = null
var progress = ""
set(value) {
if (field != value) {
field = value
callback?.onPostAttachmentProgress()
}
}
constructor(callback: Callback) {
this.status = Status.Progress
this.callback = callback
}
constructor(a: TootAttachment) {
this.status = Status.Ok
this.attachment = a
}
override fun compareTo(other: PostAttachment): Int {
val ta = this.attachment
val tb = other.attachment
return if (ta != null) {
if (tb == null) 1 else ta.id.compareTo(tb.id)
} else {
if (tb == null) 0 else -1
}
}
}