fix: auto save block ask process
fix: mark all pending transfers canceled when app exit
This commit is contained in:
@@ -30,6 +30,7 @@
|
|||||||
- [x] 系统通知
|
- [x] 系统通知
|
||||||
- [ ] 应用图标
|
- [ ] 应用图标
|
||||||
- [ ] 系统托盘(最小化到托盘)
|
- [ ] 系统托盘(最小化到托盘)
|
||||||
|
- [ ] 清理历史
|
||||||
|
|
||||||
## 技术栈
|
## 技术栈
|
||||||
|
|
||||||
|
|||||||
@@ -71,6 +71,11 @@ func (s *Service) SendFile(target *discovery.Peer, targetIP string, filePath str
|
|||||||
task.Status = TransferStatusCanceled
|
task.Status = TransferStatusCanceled
|
||||||
} else {
|
} else {
|
||||||
// 如果请求发送失败,更新状态为 Error
|
// 如果请求发送失败,更新状态为 Error
|
||||||
|
if errors.Is(err, io.EOF) {
|
||||||
|
// 接收方离线
|
||||||
|
task.Status = TransferStatusCanceled
|
||||||
|
return
|
||||||
|
}
|
||||||
task.Status = TransferStatusError
|
task.Status = TransferStatusError
|
||||||
task.ErrorMsg = fmt.Sprintf("Failed to connect to receiver: %v", err)
|
task.ErrorMsg = fmt.Sprintf("Failed to connect to receiver: %v", err)
|
||||||
}
|
}
|
||||||
@@ -125,6 +130,11 @@ func (s *Service) SendFolder(target *discovery.Peer, targetIP string, folderPath
|
|||||||
task.Status = TransferStatusCanceled
|
task.Status = TransferStatusCanceled
|
||||||
} else {
|
} else {
|
||||||
// 如果请求发送失败,更新状态为 Error
|
// 如果请求发送失败,更新状态为 Error
|
||||||
|
if errors.Is(err, io.EOF) {
|
||||||
|
// 接收方离线
|
||||||
|
task.Status = TransferStatusCanceled
|
||||||
|
return
|
||||||
|
}
|
||||||
task.Status = TransferStatusError
|
task.Status = TransferStatusError
|
||||||
task.ErrorMsg = fmt.Sprintf("Failed to connect to receiver: %v", err)
|
task.ErrorMsg = fmt.Sprintf("Failed to connect to receiver: %v", err)
|
||||||
}
|
}
|
||||||
@@ -180,6 +190,11 @@ func (s *Service) SendText(target *discovery.Peer, targetIP string, text string)
|
|||||||
task.Status = TransferStatusCanceled
|
task.Status = TransferStatusCanceled
|
||||||
} else {
|
} else {
|
||||||
// 如果请求发送失败,更新状态为 Error
|
// 如果请求发送失败,更新状态为 Error
|
||||||
|
if errors.Is(err, io.EOF) {
|
||||||
|
// 接收方离线
|
||||||
|
task.Status = TransferStatusCanceled
|
||||||
|
return
|
||||||
|
}
|
||||||
task.Status = TransferStatusError
|
task.Status = TransferStatusError
|
||||||
task.ErrorMsg = fmt.Sprintf("Failed to connect to receiver: %v", err)
|
task.ErrorMsg = fmt.Sprintf("Failed to connect to receiver: %v", err)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,9 +9,16 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func (s *Service) SaveHistory() {
|
func (s *Service) SaveHistory() {
|
||||||
|
// 将 pending 状态的任务改为 canceled
|
||||||
|
transferList := s.GetTransferList()
|
||||||
|
for _, task := range transferList {
|
||||||
|
if task.Status == TransferStatusPending {
|
||||||
|
task.Status = TransferStatusCanceled
|
||||||
|
}
|
||||||
|
}
|
||||||
configDir := config.GetConfigDir()
|
configDir := config.GetConfigDir()
|
||||||
historyPath := filepath.Join(configDir, "history.json")
|
historyPath := filepath.Join(configDir, "history.json")
|
||||||
historyJson, err := json.Marshal(s.GetTransferList())
|
historyJson, err := json.Marshal(transferList)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -59,7 +59,6 @@ func NewTransfer(id string, sender Sender, opts ...TransferOption) *Transfer {
|
|||||||
CreateTime: time.Now().UnixMilli(),
|
CreateTime: time.Now().UnixMilli(),
|
||||||
Sender: sender,
|
Sender: sender,
|
||||||
Status: TransferStatusPending, // Default status
|
Status: TransferStatusPending, // Default status
|
||||||
DecisionChan: make(chan Decision, 1),
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, opt := range opts {
|
for _, opt := range opts {
|
||||||
|
|||||||
@@ -40,6 +40,7 @@ func (s *Service) handleAsk(c *gin.Context) {
|
|||||||
// 存储请求
|
// 存储请求
|
||||||
task.Type = TransferTypeReceive
|
task.Type = TransferTypeReceive
|
||||||
task.Status = TransferStatusPending
|
task.Status = TransferStatusPending
|
||||||
|
task.DecisionChan = make(chan Decision, 1)
|
||||||
s.StoreTransferToList(&task)
|
s.StoreTransferToList(&task)
|
||||||
|
|
||||||
if s.config.GetAutoAccept() {
|
if s.config.GetAutoAccept() {
|
||||||
|
|||||||
Reference in New Issue
Block a user