mirror of https://github.com/Xhofe/alist
fix: serialize task info
parent
786e44d1d2
commit
f54418bdae
|
@ -59,8 +59,9 @@ outer:
|
|||
if err != nil {
|
||||
return err
|
||||
}
|
||||
m.tsk.SetStatus("aria2 download completed, waiting for transfer")
|
||||
m.tsk.SetStatus("aria2 download completed, transferring")
|
||||
<-m.finish
|
||||
m.tsk.SetStatus("completed")
|
||||
return nil
|
||||
}
|
||||
|
||||
|
@ -88,7 +89,8 @@ func (m *Monitor) Update() (bool, error) {
|
|||
if err != nil {
|
||||
downloaded = 0
|
||||
}
|
||||
m.tsk.SetProgress(int(float64(downloaded) / float64(total)))
|
||||
progress := float64(downloaded) / float64(total) * 100
|
||||
m.tsk.SetProgress(int(progress))
|
||||
switch info.Status {
|
||||
case "complete":
|
||||
err := m.Complete()
|
||||
|
|
|
@ -43,10 +43,25 @@ func (t *Task[K]) SetProgress(percentage int) {
|
|||
t.progress = percentage
|
||||
}
|
||||
|
||||
func (t *Task[K]) GetState() string {
|
||||
func (t Task[K]) GetProgress() int {
|
||||
return t.progress
|
||||
}
|
||||
|
||||
func (t Task[K]) GetState() string {
|
||||
return t.state
|
||||
}
|
||||
|
||||
func (t Task[K]) GetStatus() string {
|
||||
return t.status
|
||||
}
|
||||
|
||||
func (t Task[K]) GetErrMsg() string {
|
||||
if t.Error == nil {
|
||||
return ""
|
||||
}
|
||||
return t.Error.Error()
|
||||
}
|
||||
|
||||
func (t *Task[K]) run() {
|
||||
t.state = RUNNING
|
||||
defer func() {
|
||||
|
|
|
@ -3,17 +3,65 @@ package controllers
|
|||
import (
|
||||
"github.com/alist-org/alist/v3/internal/aria2"
|
||||
"github.com/alist-org/alist/v3/internal/fs"
|
||||
"github.com/alist-org/alist/v3/pkg/task"
|
||||
"github.com/alist-org/alist/v3/server/common"
|
||||
"github.com/gin-gonic/gin"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
type TaskInfo struct {
|
||||
ID string `json:"id"`
|
||||
Name string `json:"name"`
|
||||
State string `json:"state"`
|
||||
Status string `json:"status"`
|
||||
Progress int `json:"progress"`
|
||||
Error string `json:"error"`
|
||||
}
|
||||
|
||||
func getTaskInfoUint(task *task.Task[uint64]) TaskInfo {
|
||||
return TaskInfo{
|
||||
ID: strconv.FormatUint(task.ID, 10),
|
||||
Name: task.Name,
|
||||
State: task.GetState(),
|
||||
Status: task.GetStatus(),
|
||||
Progress: task.GetProgress(),
|
||||
Error: task.Error.Error(),
|
||||
}
|
||||
}
|
||||
|
||||
func getTaskInfoStr(task *task.Task[string]) TaskInfo {
|
||||
return TaskInfo{
|
||||
ID: task.ID,
|
||||
Name: task.Name,
|
||||
State: task.GetState(),
|
||||
Status: task.GetStatus(),
|
||||
Progress: task.GetProgress(),
|
||||
Error: task.GetErrMsg(),
|
||||
}
|
||||
}
|
||||
|
||||
func getTaskInfosUint(tasks []*task.Task[uint64]) []TaskInfo {
|
||||
var infos []TaskInfo
|
||||
for _, t := range tasks {
|
||||
infos = append(infos, getTaskInfoUint(t))
|
||||
}
|
||||
return infos
|
||||
}
|
||||
|
||||
func getTaskInfosStr(tasks []*task.Task[string]) []TaskInfo {
|
||||
var infos []TaskInfo
|
||||
for _, t := range tasks {
|
||||
infos = append(infos, getTaskInfoStr(t))
|
||||
}
|
||||
return infos
|
||||
}
|
||||
|
||||
func UndoneDownTask(c *gin.Context) {
|
||||
common.SuccessResp(c, aria2.DownTaskManager.ListUndone())
|
||||
common.SuccessResp(c, getTaskInfosStr(aria2.DownTaskManager.ListUndone()))
|
||||
}
|
||||
|
||||
func DoneDownTask(c *gin.Context) {
|
||||
common.SuccessResp(c, aria2.DownTaskManager.ListDone())
|
||||
common.SuccessResp(c, getTaskInfosStr(aria2.DownTaskManager.ListDone()))
|
||||
}
|
||||
|
||||
func CancelDownTask(c *gin.Context) {
|
||||
|
@ -26,11 +74,11 @@ func CancelDownTask(c *gin.Context) {
|
|||
}
|
||||
|
||||
func UndoneTransferTask(c *gin.Context) {
|
||||
common.SuccessResp(c, aria2.TransferTaskManager.ListUndone())
|
||||
common.SuccessResp(c, getTaskInfosUint(aria2.TransferTaskManager.ListUndone()))
|
||||
}
|
||||
|
||||
func DoneTransferTask(c *gin.Context) {
|
||||
common.SuccessResp(c, aria2.TransferTaskManager.ListDone())
|
||||
common.SuccessResp(c, getTaskInfosUint(aria2.TransferTaskManager.ListDone()))
|
||||
}
|
||||
|
||||
func CancelTransferTask(c *gin.Context) {
|
||||
|
@ -48,11 +96,11 @@ func CancelTransferTask(c *gin.Context) {
|
|||
}
|
||||
|
||||
func UndoneUploadTask(c *gin.Context) {
|
||||
common.SuccessResp(c, fs.UploadTaskManager.ListUndone())
|
||||
common.SuccessResp(c, getTaskInfosUint(fs.UploadTaskManager.ListUndone()))
|
||||
}
|
||||
|
||||
func DoneUploadTask(c *gin.Context) {
|
||||
common.SuccessResp(c, fs.UploadTaskManager.ListDone())
|
||||
common.SuccessResp(c, getTaskInfosUint(fs.UploadTaskManager.ListDone()))
|
||||
}
|
||||
|
||||
func CancelUploadTask(c *gin.Context) {
|
||||
|
@ -70,11 +118,11 @@ func CancelUploadTask(c *gin.Context) {
|
|||
}
|
||||
|
||||
func UndoneCopyTask(c *gin.Context) {
|
||||
common.SuccessResp(c, fs.CopyTaskManager.ListUndone())
|
||||
common.SuccessResp(c, getTaskInfosUint(fs.CopyTaskManager.ListUndone()))
|
||||
}
|
||||
|
||||
func DoneCopyTask(c *gin.Context) {
|
||||
common.SuccessResp(c, fs.CopyTaskManager.ListDone())
|
||||
common.SuccessResp(c, getTaskInfosUint(fs.CopyTaskManager.ListDone()))
|
||||
}
|
||||
|
||||
func CancelCopyTask(c *gin.Context) {
|
||||
|
|
Loading…
Reference in New Issue