feat: 使用旅拍相册批量删除接口
This commit is contained in:
@@ -41,8 +41,8 @@ protocol TravelAlbumServing {
|
||||
/// 删除旅拍相册。
|
||||
func deleteAlbum(id: Int) async throws
|
||||
|
||||
/// 删除旅拍相册素材。
|
||||
func deleteMaterial(id: Int) async throws
|
||||
/// 批量删除旅拍相册素材。
|
||||
func batchDeleteMaterials(ids: [Int]) async throws
|
||||
|
||||
/// 拉取相册小程序码。
|
||||
func mpCode(id: Int) async throws -> TravelAlbumMpCodeResponse
|
||||
@@ -164,10 +164,14 @@ final class TravelAlbumAPI: TravelAlbumServing {
|
||||
)
|
||||
}
|
||||
|
||||
/// 删除旅拍相册素材。
|
||||
func deleteMaterial(id: Int) async throws {
|
||||
/// 批量删除旅拍相册素材。
|
||||
func batchDeleteMaterials(ids: [Int]) async throws {
|
||||
let _: EmptyPayload = try await client.send(
|
||||
APIRequest(method: .post, path: "\(basePath)/delete-material", body: TravelAlbumIDRequest(id: id))
|
||||
APIRequest(
|
||||
method: .post,
|
||||
path: "\(basePath)/batch-delete-material",
|
||||
body: TravelAlbumBatchDeleteMaterialRequest(ids: ids)
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
@@ -212,3 +216,8 @@ final class TravelAlbumAPI: TravelAlbumServing {
|
||||
private struct TravelAlbumIDRequest: Encodable, Sendable {
|
||||
let id: Int
|
||||
}
|
||||
|
||||
/// 旅拍相册素材批量删除请求体。
|
||||
private struct TravelAlbumBatchDeleteMaterialRequest: Encodable, Sendable {
|
||||
let ids: [Int]
|
||||
}
|
||||
|
||||
@@ -267,15 +267,13 @@ final class TravelAlbumDetailViewModel {
|
||||
|
||||
/// 删除已选素材。
|
||||
func deleteSelectedMaterials(api: any TravelAlbumServing) async {
|
||||
let ids = Array(selectedMaterialIds)
|
||||
let ids = selectedMaterialIds.sorted()
|
||||
guard !ids.isEmpty else {
|
||||
onShowMessage?("请选择要删除的素材")
|
||||
return
|
||||
}
|
||||
do {
|
||||
for id in ids {
|
||||
try await api.deleteMaterial(id: id)
|
||||
}
|
||||
try await api.batchDeleteMaterials(ids: ids)
|
||||
onShowMessage?("删除成功")
|
||||
isSelectionMode = false
|
||||
selectedMaterialIds = []
|
||||
|
||||
@@ -17,7 +17,7 @@ final class TravelAlbumPreviewActionHandler: TravelAlbumPreviewActionHandling {
|
||||
/// 调用素材删除接口,仅在服务端确认成功后返回成功结果。
|
||||
func deleteProject(originalMaterialId: Int) async -> TravelAlbumPreviewActionResult {
|
||||
do {
|
||||
try await api.deleteMaterial(id: originalMaterialId)
|
||||
try await api.batchDeleteMaterials(ids: [originalMaterialId])
|
||||
return .success("删除成功")
|
||||
} catch is CancellationError {
|
||||
return .failure("删除已取消")
|
||||
|
||||
Reference in New Issue
Block a user