Show bottom sheet in user other sessions

This commit is contained in:
Alfonso Grillo 2022-10-26 16:29:57 +02:00
parent 8ababcf52e
commit 55ab2ab14f
5 changed files with 42 additions and 14 deletions

View file

@ -42,6 +42,7 @@ struct UserOtherSessionsViewState: BindableState, Equatable {
struct UserOtherSessionsBindings: Equatable {
var filter: UserOtherSessionsFilter
var isEditModeEnabled: Bool
var showBottomSheet: Bool = false
}
enum UserOtherSessionsViewAction {

View file

@ -167,3 +167,33 @@ private extension UserOtherSessionsFilter {
}
}
}
extension UserOtherSessionsViewState {
var bottomSheetTitle: String {
switch bindings.filter {
case .unverified:
return VectorL10n.userSessionUnverifiedSessionTitle
case .verified:
return VectorL10n.userSessionVerifiedSessionTitle
case .inactive:
return VectorL10n.userSessionInactiveSessionTitle
case .all:
return ""
}
}
var bottomSheetDescription: String {
switch bindings.filter {
case .unverified:
return VectorL10n.userSessionUnverifiedSessionDescription
case .verified:
return VectorL10n.userSessionVerifiedSessionDescription
case .inactive:
return VectorL10n.userSessionInactiveSessionDescription
case .all:
return ""
}
}
}

View file

@ -33,7 +33,7 @@ struct UserOtherSessions: View {
UserOtherSessionsHeaderView(
viewData: viewModel.viewState.header,
onLearnMoreAction: {
viewModel.showBottomSheet = true
}
)
.frame(maxWidth: .infinity, alignment: .leading)
@ -58,6 +58,11 @@ struct UserOtherSessions: View {
}
.navigationBarBackButtonHidden(viewModel.isEditModeEnabled)
.accentColor(theme.colors.accent)
.bottomSheet(isPresented: $viewModel.showBottomSheet) {
InfoView(title: viewModel.viewState.bottomSheetTitle,
descripion: viewModel.viewState.bottomSheetDescription,
action: .init(text: VectorL10n.userSessionGotIt, action: { viewModel.showBottomSheet = false }))
}
}
private func noItemsView() -> some View {

View file

@ -101,20 +101,16 @@ class UserSessionOverviewViewModel: UserSessionOverviewViewModelType, UserSessio
extension UserSessionOverviewViewState {
var bottomSheetTitle: String {
cardViewData.verificationState.bottomSheetTitle(isSessionActive: nil)
cardViewData.verificationState.bottomSheetTitle
}
var bottomSheetDescription: String {
cardViewData.verificationState.bottomSheetDescription(isSessionActive: nil)
cardViewData.verificationState.bottomSheetDescription
}
}
private extension UserSessionInfo.VerificationState {
func bottomSheetTitle(isSessionActive: Bool? = nil) -> String {
guard isSessionActive != false else {
return VectorL10n.userSessionInactiveSessionTitle
}
var bottomSheetTitle: String {
switch self {
case .unverified:
return VectorL10n.userSessionUnverifiedSessionTitle
@ -125,11 +121,7 @@ private extension UserSessionInfo.VerificationState {
}
}
func bottomSheetDescription(isSessionActive: Bool?) -> String {
guard isSessionActive != false else {
return VectorL10n.userSessionInactiveSessionDescription
}
var bottomSheetDescription: String {
switch self {
case .unverified:
return VectorL10n.userSessionUnverifiedSessionDescription

View file

@ -85,7 +85,7 @@ struct UserSessionOverview: View {
.bottomSheet(isPresented: $viewModel.showBottomSheet) {
InfoView(title: viewModel.viewState.bottomSheetTitle,
descripion: viewModel.viewState.bottomSheetDescription,
action: .init(text: VectorL10n.userSessionGotIt, action: { $viewModel.showBottomSheet.wrappedValue = false }))
action: .init(text: VectorL10n.userSessionGotIt, action: { viewModel.showBottomSheet = false }))
}
}
}