Add a generic ErrorAlertInfo type.

Adopt it in Location Sharing and Polls.
This commit is contained in:
Doug
2022-03-03 16:30:00 +00:00
committed by Doug
parent 66bf8f0428
commit 572b1ff3bb
8 changed files with 85 additions and 57 deletions
@@ -99,16 +99,10 @@ struct TimelinePollViewState: BindableState {
}
struct TimelinePollViewStateBindings {
var alertInfo: TimelinePollErrorAlertInfo?
var alertInfo: ErrorAlertInfo<TimelinePollAlertType>?
}
struct TimelinePollErrorAlertInfo: Identifiable {
enum AlertType {
case failedClosingPoll
case failedSubmittingAnswer
}
let id: AlertType
let title: String
let subtitle: String
enum TimelinePollAlertType {
case failedClosingPoll
case failedSubmittingAnswer
}
@@ -64,15 +64,15 @@ class TimelinePollViewModel: TimelinePollViewModelType, TimelinePollViewModelPro
}
func showAnsweringFailure() {
state.bindings.alertInfo = TimelinePollErrorAlertInfo(id: .failedSubmittingAnswer,
title: VectorL10n.pollTimelineVoteNotRegisteredTitle,
subtitle: VectorL10n.pollTimelineVoteNotRegisteredSubtitle)
state.bindings.alertInfo = ErrorAlertInfo(id: TimelinePollAlertType.failedSubmittingAnswer,
title: VectorL10n.pollTimelineVoteNotRegisteredTitle,
message: VectorL10n.pollTimelineVoteNotRegisteredSubtitle)
}
func showClosingFailure() {
state.bindings.alertInfo = TimelinePollErrorAlertInfo(id: .failedClosingPoll,
title: VectorL10n.pollTimelineNotClosedTitle,
subtitle: VectorL10n.pollTimelineNotClosedSubtitle)
state.bindings.alertInfo = ErrorAlertInfo(id: TimelinePollAlertType.failedClosingPoll,
title: VectorL10n.pollTimelineNotClosedTitle,
message: VectorL10n.pollTimelineNotClosedSubtitle)
}
// MARK: - Private
@@ -59,7 +59,7 @@ struct TimelinePollView: View {
.padding([.bottom])
.alert(item: $viewModel.alertInfo) { info in
Alert(title: Text(info.title),
message: Text(info.subtitle),
message: info.messageText,
dismissButton: .default(Text(VectorL10n.ok)))
}
}