add: send files
This commit is contained in:
@@ -17,7 +17,7 @@ type Service struct {
|
||||
savePath string // 默认下载目录
|
||||
|
||||
// pendingRequests 存储等待用户确认的通道
|
||||
// Key: TransferID, Value: Transfer
|
||||
// Key: TransferID, Value: *Transfer
|
||||
transferList sync.Map
|
||||
|
||||
discoveryService *discovery.Service
|
||||
@@ -63,21 +63,21 @@ func (s *Service) Start() {
|
||||
}()
|
||||
}
|
||||
|
||||
func (s *Service) GetTransferList() []Transfer {
|
||||
var requests []Transfer
|
||||
func (s *Service) GetTransferList() []*Transfer {
|
||||
var requests []*Transfer
|
||||
s.transferList.Range(func(key, value any) bool {
|
||||
requests = append(requests, value.(Transfer))
|
||||
requests = append(requests, value.(*Transfer))
|
||||
return true
|
||||
})
|
||||
return requests
|
||||
}
|
||||
|
||||
func (s *Service) GetTransfer(transferID string) (Transfer, bool) {
|
||||
func (s *Service) GetTransfer(transferID string) (*Transfer, bool) {
|
||||
val, ok := s.transferList.Load(transferID)
|
||||
if !ok {
|
||||
return Transfer{}, false
|
||||
return nil, false
|
||||
}
|
||||
return val.(Transfer), true
|
||||
return val.(*Transfer), true
|
||||
}
|
||||
|
||||
func (s *Service) CancelTransfer(transferID string) {
|
||||
@@ -87,8 +87,36 @@ func (s *Service) CancelTransfer(transferID string) {
|
||||
t, ok := s.GetTransfer(transferID)
|
||||
if ok {
|
||||
t.Status = TransferStatusCanceled
|
||||
s.transferList.Store(transferID, t)
|
||||
s.app.Event.Emit("transfer:refreshList")
|
||||
s.StoreTransferToList(t)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func (s *Service) StoreTransferToList(transfer *Transfer) {
|
||||
s.transferList.Store(transfer.ID, transfer)
|
||||
s.NotifyTransferListUpdate()
|
||||
}
|
||||
|
||||
func (s *Service) NotifyTransferListUpdate() {
|
||||
s.app.Event.Emit("transfer:refreshList")
|
||||
}
|
||||
|
||||
// CleanTransferList 清理完成的 transfer
|
||||
func (s *Service) CleanTransferList() {
|
||||
s.transferList.Range(func(key, value any) bool {
|
||||
task := value.(*Transfer)
|
||||
if task.Status == TransferStatusCompleted ||
|
||||
task.Status == TransferStatusError ||
|
||||
task.Status == TransferStatusCanceled ||
|
||||
task.Status == TransferStatusRejected {
|
||||
s.transferList.Delete(key)
|
||||
}
|
||||
return true
|
||||
})
|
||||
s.NotifyTransferListUpdate()
|
||||
}
|
||||
|
||||
func (s *Service) DeleteTransfer(transferID string) {
|
||||
s.transferList.Delete(transferID)
|
||||
s.NotifyTransferListUpdate()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user