add detail alert
This commit is contained in:
parent
f080cd4d13
commit
bae2eb607a
@ -71,6 +71,11 @@ final class DetailModel {
|
||||
|
||||
}
|
||||
|
||||
enum FollowResult {
|
||||
case success
|
||||
case error(String, String)
|
||||
}
|
||||
|
||||
var name: String = ""
|
||||
var summary: String = ""
|
||||
var thumb: String = ""
|
||||
@ -113,12 +118,11 @@ final class DetailModel {
|
||||
}
|
||||
|
||||
@MainActor
|
||||
func onTapFollowButton(userId: Int, id: Int, status: String) async {
|
||||
func onTapFollowButton(userId: Int, id: Int, status: String) async -> FollowResult {
|
||||
let response = await API.followDrama(userId: userId, id: id, status: status, as: [String].self)
|
||||
switch response {
|
||||
case .error(let code, let message):
|
||||
print(code)
|
||||
print(message)
|
||||
return .error("错误", message)
|
||||
case .result(let newStatuses):
|
||||
self.statuses = newStatuses.flatMap({ s in
|
||||
if let status = DramaStatus(s) {
|
||||
@ -127,6 +131,7 @@ final class DetailModel {
|
||||
return []
|
||||
}
|
||||
})
|
||||
return .success
|
||||
}
|
||||
}
|
||||
|
||||
@ -135,6 +140,11 @@ final class DetailModel {
|
||||
struct DetailView: View {
|
||||
@State var detailModel = DetailModel()
|
||||
@State var showAllSummary: Bool = false
|
||||
|
||||
// 错误提示信息
|
||||
@State var showAlert: Bool = false
|
||||
@State var errorInfo: (String, String) = ("", "")
|
||||
|
||||
let id: Int
|
||||
|
||||
var body: some View {
|
||||
@ -175,7 +185,14 @@ struct DetailView: View {
|
||||
ForEach(detailModel.statuses, id: \.status) { status in
|
||||
FollowButtonView(dramaStatus: status) { followStatus in
|
||||
Task {
|
||||
await detailModel.onTapFollowButton(userId: 1, id: id, status: followStatus)
|
||||
let result = await detailModel.onTapFollowButton(userId: 1, id: id, status: followStatus)
|
||||
switch result {
|
||||
case .success:
|
||||
()
|
||||
case .error(let title, let message):
|
||||
self.errorInfo = (title, message)
|
||||
self.showAlert = true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -246,6 +263,9 @@ struct DetailView: View {
|
||||
Spacer()
|
||||
}
|
||||
.frame(width: 370, alignment: .center)
|
||||
.alert(isPresented: $showAlert) {
|
||||
Alert(title: Text(self.errorInfo.0), message: Text(self.errorInfo.1), dismissButton: .default(Text("OK")))
|
||||
}
|
||||
.task {
|
||||
await detailModel.loadData(userId: 1, id: self.id)
|
||||
print(detailModel.summary)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user