feat: 按钮显示上传中

This commit is contained in:
Junhui Chen 2025-09-12 15:16:12 +08:00
parent 776824b51d
commit 5b9413699f

View File

@ -26,6 +26,8 @@ struct MediaUploadView: View {
@State private var uploadComplete = false
/// ID
@State private var uploadedFileIds: [[String: String]] = []
/// Continue
@State private var isSubmitting: Bool = false
// MARK: -
@ -145,18 +147,32 @@ struct MediaUploadView: View {
///
private var continueButton: some View {
Button(action: handleContinue) {
Text("Continue")
.font(.headline)
.foregroundColor(uploadManager.selectedMedia.isEmpty ? Color.themeTextMessage : Color.themeTextMessageMain)
.frame(maxWidth: .infinity)
.frame(height: 56)
.background(uploadManager.selectedMedia.isEmpty ? Color.white : Color.themePrimary)
.cornerRadius(28)
.padding(.horizontal, 24)
let uploading = isUploading()
let hasSelection = !uploadManager.selectedMedia.isEmpty
let canProceed = uploadManager.isAllUploaded
let isLoading = uploading || isSubmitting
return Button(action: handleContinue) {
HStack(spacing: 8) {
if isLoading {
ProgressView()
.progressViewStyle(CircularProgressViewStyle())
}
Text(uploading ? "Uploading..." : (isSubmitting ? "Processing..." : "Continue"))
.font(.headline)
}
.foregroundColor(hasSelection ? Color.themeTextMessageMain : Color.themeTextMessage)
.frame(maxWidth: .infinity)
.frame(height: 56)
.background(
hasSelection
? (isSubmitting ? Color.gray.opacity(0.3) : Color.themePrimary)
: Color.white
)
.cornerRadius(28)
.padding(.horizontal, 24)
}
.buttonStyle(PlainButtonStyle())
.disabled(uploadManager.selectedMedia.isEmpty)
.disabled(!canProceed || isSubmitting)
}
///
@ -315,6 +331,9 @@ struct MediaUploadView: View {
///
private func handleContinue() {
//
guard !isSubmitting else { return }
//
let uploadResults = uploadManager.uploadResults
guard !uploadResults.isEmpty else {
@ -332,6 +351,8 @@ struct MediaUploadView: View {
// id
Task {
isSubmitting = true
defer { isSubmitting = false }
do {
let materialIds = try await MaterialUpload.shared.addMaterials(files: files)
print("🚀 素材ID: \(materialIds ?? [])")