feat: 添加新的回调以提醒用户已经加入队列.

This commit is contained in:
LamGC 2024-01-11 01:52:02 +08:00
parent 98e256f4db
commit ba5566b594
Signed by: LamGC
GPG Key ID: 6C5AE2A913941E1D

View File

@ -25,7 +25,8 @@ import java.util.concurrent.*
object OneDriveTransferCenter { object OneDriveTransferCenter {
private val executor = OneDriveTransferTaskExecutor(5, DefaultOneDriveTransferCallback, ArrayBlockingQueue<OneDriveTransferTask>(100)) private val executor =
OneDriveTransferTaskExecutor(2, DefaultOneDriveTransferCallback, ArrayBlockingQueue<OneDriveTransferTask>(100))
fun submitUploadTask(task: OneDriveTransferTask) { fun submitUploadTask(task: OneDriveTransferTask) {
executor.submitTransferTask(task) executor.submitTransferTask(task)
@ -34,21 +35,37 @@ object OneDriveTransferCenter {
} }
object DefaultOneDriveTransferCallback : OneDriveTransferCallback { object DefaultOneDriveTransferCallback : OneDriveTransferCallback {
override fun onTransferStart(progress: OneDriveTransferWorkerProgress) { override fun onTransferTaskCreated(task: OneDriveTransferTask) {
val message = progress.currentTask.bot.execute( val message = task.bot.execute(
SendMessage.builder() SendMessage.builder()
.text(
"""
OneDrive 中转任务已创建
正在排队中...
文件名 ${task.document.fileName}
""".trimIndent()
)
.chatId(task.extra["chatId"].toString().toLong())
.replyToMessageId(task.extra["messageId"].toString().toInt())
.build()
)
task.extra["messageId"] = message.messageId
}
override fun onTransferStart(progress: OneDriveTransferWorkerProgress) {
progress.currentTask.bot.execute(
EditMessageText.builder()
.chatId(progress.currentTask.extra["chatId"].toString().toLong())
.messageId(progress.currentTask.extra["messageId"].toString().toInt())
.text( .text(
""" """
OneDrive 中转任务开始执行 OneDrive 中转任务开始执行
正在获取文件信息... 正在获取文件信息...(需要一些时间从 Telegram 服务器下载文件)
文件名 ${progress.currentTask.document.fileName} 文件名 ${progress.currentTask.document.fileName}
""".trimIndent() """.trimIndent()
) )
.chatId(progress.currentTask.extra["chatId"].toString().toLong())
.replyToMessageId(progress.currentTask.extra["messageId"].toString().toInt())
.build() .build()
) )
progress.currentTask.extra["messageId"] = message.messageId
} }
override fun onProgress(progress: OneDriveTransferWorkerProgress) { override fun onProgress(progress: OneDriveTransferWorkerProgress) {
@ -90,6 +107,7 @@ object DefaultOneDriveTransferCallback : OneDriveTransferCallback {
} }
interface OneDriveTransferCallback { interface OneDriveTransferCallback {
fun onTransferTaskCreated(task: OneDriveTransferTask)
fun onTransferStart(progress: OneDriveTransferWorkerProgress) fun onTransferStart(progress: OneDriveTransferWorkerProgress)
fun onProgress(progress: OneDriveTransferWorkerProgress) fun onProgress(progress: OneDriveTransferWorkerProgress)
fun onTransferFailure(task: OneDriveTransferTask, progress: OneDriveTransferWorkerProgress) fun onTransferFailure(task: OneDriveTransferTask, progress: OneDriveTransferWorkerProgress)
@ -120,6 +138,7 @@ class OneDriveTransferTaskExecutor(
fun submitTransferTask(task: OneDriveTransferTask) { fun submitTransferTask(task: OneDriveTransferTask) {
taskQueue.offer(task) taskQueue.offer(task)
callback.onTransferTaskCreated(task)
} }
private fun createWorker(id: Int): Runnable = Runnable { private fun createWorker(id: Int): Runnable = Runnable {