LibreConfigRootView.swift 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  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("Background_1"),
  13. Color("Background_1"),
  14. Color("Background_2")
  15. // Color("Background_1")
  16. ]),
  17. startPoint: .top,
  18. endPoint: .bottom
  19. )
  20. :
  21. LinearGradient(
  22. gradient: Gradient(colors: [Color.gray.opacity(0.1)]),
  23. startPoint: .top,
  24. endPoint: .bottom
  25. )
  26. }
  27. var body: some View {
  28. Group {
  29. if state.configured, let manager = state.source.manager {
  30. LibreTransmitterSettingsView(
  31. manager: manager,
  32. glucoseUnit: state.unit
  33. ) {
  34. self.state.source.manager = nil
  35. self.state.configured = false
  36. } completion: {
  37. state.hideModal()
  38. }
  39. } else {
  40. LibreTransmitterSetupView { manager in
  41. self.state.source.manager = manager
  42. self.state.configured = true
  43. } completion: {
  44. state.hideModal()
  45. }
  46. }
  47. }
  48. .scrollContentBackground(.hidden).background(color)
  49. .navigationBarTitle("")
  50. .navigationBarHidden(true)
  51. .onAppear(perform: configureView)
  52. }
  53. }
  54. }