add: clean finished transfers button
This commit is contained in:
@@ -20,8 +20,8 @@ export function CancelTransfer(transferID: string): $CancellablePromise<void> {
|
|||||||
/**
|
/**
|
||||||
* CleanTransferList 清理完成的 transfer
|
* CleanTransferList 清理完成的 transfer
|
||||||
*/
|
*/
|
||||||
export function CleanTransferList(): $CancellablePromise<void> {
|
export function CleanFinishedTransferList(): $CancellablePromise<void> {
|
||||||
return $Call.ByID(3775121017);
|
return $Call.ByID(1852624467);
|
||||||
}
|
}
|
||||||
|
|
||||||
export function DeleteTransfer(transferID: string): $CancellablePromise<void> {
|
export function DeleteTransfer(transferID: string): $CancellablePromise<void> {
|
||||||
|
|||||||
@@ -14,7 +14,10 @@ import { Transfer } from "../../bindings/mesh-drop/internal/transfer";
|
|||||||
// --- Service & 后端绑定 ---
|
// --- Service & 后端绑定 ---
|
||||||
import { Events } from "@wailsio/runtime";
|
import { Events } from "@wailsio/runtime";
|
||||||
import { GetPeers } from "../../bindings/mesh-drop/internal/discovery/service";
|
import { GetPeers } from "../../bindings/mesh-drop/internal/discovery/service";
|
||||||
import { GetTransferList } from "../../bindings/mesh-drop/internal/transfer/service";
|
import {
|
||||||
|
GetTransferList,
|
||||||
|
CleanFinishedTransferList,
|
||||||
|
} from "../../bindings/mesh-drop/internal/transfer/service";
|
||||||
|
|
||||||
// --- 状态 ---
|
// --- 状态 ---
|
||||||
const peers = ref<Peer[]>([]);
|
const peers = ref<Peer[]>([]);
|
||||||
@@ -53,10 +56,7 @@ const menuItems = computed(() => [
|
|||||||
onMounted(async () => {
|
onMounted(async () => {
|
||||||
checkMobile();
|
checkMobile();
|
||||||
window.addEventListener("resize", checkMobile);
|
window.addEventListener("resize", checkMobile);
|
||||||
const list = await GetTransferList();
|
transferList.value = (await GetTransferList()) as Transfer[];
|
||||||
transferList.value = (
|
|
||||||
(list || []).filter((t) => t !== null) as Transfer[]
|
|
||||||
).sort((a, b) => b.create_time - a.create_time);
|
|
||||||
|
|
||||||
if (isMobile.value) {
|
if (isMobile.value) {
|
||||||
drawer.value = false;
|
drawer.value = false;
|
||||||
@@ -75,10 +75,7 @@ Events.On("peers:update", (event) => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
Events.On("transfer:refreshList", async () => {
|
Events.On("transfer:refreshList", async () => {
|
||||||
const list = await GetTransferList();
|
transferList.value = (await GetTransferList()) as Transfer[];
|
||||||
transferList.value = (
|
|
||||||
(list || []).filter((t) => t !== null) as Transfer[]
|
|
||||||
).sort((a, b) => b.create_time - a.create_time);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
// --- 方法 ---
|
// --- 方法 ---
|
||||||
@@ -96,6 +93,10 @@ const handleMenuClick = (key: string) => {
|
|||||||
drawer.value = false;
|
drawer.value = false;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const handleCleanFinished = async () => {
|
||||||
|
await CleanFinishedTransferList();
|
||||||
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
@@ -176,6 +177,16 @@ const handleMenuClick = (key: string) => {
|
|||||||
<!-- 传输视图 -->
|
<!-- 传输视图 -->
|
||||||
<div v-show="activeKey === 'transfers'">
|
<div v-show="activeKey === 'transfers'">
|
||||||
<div v-if="transferList.length > 0">
|
<div v-if="transferList.length > 0">
|
||||||
|
<div class="d-flex justify-end mb-2">
|
||||||
|
<v-btn
|
||||||
|
prepend-icon="mdi-delete-sweep"
|
||||||
|
variant="text"
|
||||||
|
color="error"
|
||||||
|
@click="handleCleanFinished"
|
||||||
|
>
|
||||||
|
Clear Finished
|
||||||
|
</v-btn>
|
||||||
|
</div>
|
||||||
<TransferItem
|
<TransferItem
|
||||||
v-for="transfer in transferList"
|
v-for="transfer in transferList"
|
||||||
:key="transfer.id"
|
:key="transfer.id"
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ import (
|
|||||||
"mesh-drop/internal/security"
|
"mesh-drop/internal/security"
|
||||||
"net/http"
|
"net/http"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
|
"sort"
|
||||||
"sync"
|
"sync"
|
||||||
|
|
||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
@@ -96,9 +97,14 @@ func (s *Service) Start() {
|
|||||||
func (s *Service) GetTransferList() []*Transfer {
|
func (s *Service) GetTransferList() []*Transfer {
|
||||||
var requests []*Transfer = make([]*Transfer, 0)
|
var requests []*Transfer = make([]*Transfer, 0)
|
||||||
s.transferList.Range(func(key, value any) bool {
|
s.transferList.Range(func(key, value any) bool {
|
||||||
requests = append(requests, value.(*Transfer))
|
transfer := value.(*Transfer)
|
||||||
|
requests = append(requests, transfer)
|
||||||
return true
|
return true
|
||||||
})
|
})
|
||||||
|
// 按照创建时间降序排序,方便前端展示
|
||||||
|
sort.Slice(requests, func(i, j int) bool {
|
||||||
|
return requests[i].CreateTime-requests[j].CreateTime > 0
|
||||||
|
})
|
||||||
return requests
|
return requests
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -139,7 +145,7 @@ func (s *Service) NotifyTransferListUpdate() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// CleanTransferList 清理完成的 transfer
|
// CleanTransferList 清理完成的 transfer
|
||||||
func (s *Service) CleanTransferList() {
|
func (s *Service) CleanFinishedTransferList() {
|
||||||
s.transferList.Range(func(key, value any) bool {
|
s.transferList.Range(func(key, value any) bool {
|
||||||
task := value.(*Transfer)
|
task := value.(*Transfer)
|
||||||
if task.Status == TransferStatusCompleted ||
|
if task.Status == TransferStatusCompleted ||
|
||||||
|
|||||||
Reference in New Issue
Block a user