LibreConfigRootView.swift 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. import LibreTransmitter
  2. import SwiftUI
  3. import Swinject
  4. extension LibreConfig {
  5. struct RootView: BaseView {
  6. let resolver: Resolver
  7. @StateObject var state = StateModel()
  8. @Environment(\.colorScheme) var colorScheme
  9. var color: LinearGradient {
  10. colorScheme == .dark ? LinearGradient(
  11. gradient: Gradient(colors: [
  12. Color.bgDarkBlue,
  13. Color.bgDarkerDarkBlue
  14. ]),
  15. startPoint: .top,
  16. endPoint: .bottom
  17. )
  18. :
  19. LinearGradient(
  20. gradient: Gradient(colors: [Color.gray.opacity(0.1)]),
  21. startPoint: .top,
  22. endPoint: .bottom
  23. )
  24. }
  25. var body: some View {
  26. Group {
  27. if state.configured, let manager = state.source.manager {
  28. LibreTransmitterSettingsView(
  29. manager: manager,
  30. glucoseUnit: state.unit
  31. ) {
  32. self.state.source.manager = nil
  33. self.state.configured = false
  34. } completion: {
  35. state.hideModal()
  36. }
  37. } else {
  38. LibreTransmitterSetupView { manager in
  39. self.state.source.manager = manager
  40. self.state.configured = true
  41. } completion: {
  42. state.hideModal()
  43. }
  44. }
  45. }
  46. .scrollContentBackground(.hidden).background(color)
  47. .navigationBarTitle("")
  48. .navigationBarHidden(true)
  49. .onAppear(perform: configureView)
  50. }
  51. }
  52. }