Skip to content

Commit

Permalink
Merge pull request #18 from DatepollSystems/ui-improvements
Browse files Browse the repository at this point in the history
UI improvements
  • Loading branch information
kaulex99 committed Aug 16, 2023
2 parents 42d7741 + 8cc40e1 commit e250d8d
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 10 deletions.
7 changes: 6 additions & 1 deletion WaiterRobot/Ui/Core/Navigation.swift
Original file line number Diff line number Diff line change
Expand Up @@ -39,12 +39,17 @@ extension View {
}

@MainActor
func handleSideEffects<S, E, VM, OVM>(of vm: OVM, _ navigator: UIPilot<Screen>, handler: ((E) -> Bool)? = nil) -> some View where S: ViewModelState, E: ViewModelEffect, VM: AbstractViewModel<S, E>, OVM: ObservableViewModel<S, E, VM> {
func handleSideEffects<S, E, VM, OVM>(
of vm: OVM, _ navigator: UIPilot<Screen>,
handler: ((E) -> Bool)? = nil
) -> some View where S: ViewModelState, E: ViewModelEffect, VM: AbstractViewModel<S, E>, OVM: ObservableViewModel<S, E, VM> {
onReceive(vm.sideEffect) { effect in
debugPrint("Got Sideeffect \(effect)")

switch effect {
case let navEffect as NavOrViewModelEffectNavEffect<E>:
navigator.navigate(navEffect.action)

case let sideEffect as NavOrViewModelEffectVMEffect<E>:
if handler?(sideEffect.effect) != true {
koin.logger(tag: "handleSideEffects").w { "Side effect \(sideEffect.effect) was not handled." }
Expand Down
20 changes: 11 additions & 9 deletions WaiterRobot/Ui/TableList/TableListScreen.swift
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,14 @@ struct TableListScreen: View {

ScreenContainer(vm.state) {
VStack {
TableListFilterRow(
selectedTableGroups: vm.state.selectedTableGroupList,
unselectedTableGroups: vm.state.unselectedTableGroupList,
onToggleFilter: { vm.actual.toggleFilter(tableGroup: $0) },
onClearFilter: vm.actual.clearFilter
)
if (vm.state.unselectedTableGroupList.count + vm.state.selectedTableGroupList.count) > 1 {
TableListFilterRow(
selectedTableGroups: vm.state.selectedTableGroupList,
unselectedTableGroups: vm.state.unselectedTableGroupList,
onToggleFilter: { vm.actual.toggleFilter(tableGroup: $0) },
onClearFilter: vm.actual.clearFilter
)
}

ScrollView {
if vm.state.filteredTableGroups.isEmpty {
Expand All @@ -43,6 +45,9 @@ struct TableListScreen: View {
.padding()
}
}
.refreshable {
vm.actual.loadTables(forceUpdate: true)
}
}
}
.navigationTitle(CommonApp.shared.settings.eventName)
Expand All @@ -56,9 +61,6 @@ struct TableListScreen: View {
}
}
}
.refreshable {
vm.actual.loadTables(forceUpdate: true)
}
.handleSideEffects(of: vm, navigator)
}
}

0 comments on commit e250d8d

Please sign in to comment.