Proyectos de Subversion Iphone Microlearning - Nuevo Interface

Rev

Rev 8 | Rev 19 | Ir a la última revisión | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 efrain 1
//
2
//  MainView.swift
3
//  twogetskills
4
//
5
//  Created by Efrain Yanez Recanatini on 2/17/22.
6
//
7
 
8
import SwiftUI
17 efrain 9
import TTGSnackbar
1 efrain 10
 
11
struct MainView: View {
17 efrain 12
 
13
 
14
 
1 efrain 15
    @StateObject private var appNavigation = AppNavigation()
16
    @StateObject private var networkMonitor = NetworkMonitor()
17
    @State private var showToast : Bool = true
18
 
17 efrain 19
    private var appData = AppData.sharedInstance
20
    private var localNotification = LocalNotificationManager()
1 efrain 21
 
22
    var body: some View {
23
        ZStack {
24
            Color("color_window_background").ignoresSafeArea(.all)
25
 
26
           VStack(spacing: 0) {
8 efrain 27
                switch appNavigation.pageActive
28
                {
29
                    case AppMainPage.intro1 :
1 efrain 30
                        IntroStep1View()
31
                        .environmentObject(appNavigation)
32
                        .environmentObject(networkMonitor)
33
                        .transition(.scale)
34
 
8 efrain 35
                case AppMainPage.intro2 :
1 efrain 36
                        IntroStep2View()
37
                        .environmentObject(appNavigation)
38
                        .environmentObject(networkMonitor)
39
                        .transition(.scale)
40
 
8 efrain 41
                case AppMainPage.intro3 :
1 efrain 42
                        IntroStep3View()
43
                        .environmentObject(appNavigation)
44
                        .environmentObject(networkMonitor)
45
                        .transition(.scale)
46
 
8 efrain 47
                case  AppMainPage.signin :
1 efrain 48
                        SigninView()
49
                        .environmentObject(appNavigation)
50
                        .environmentObject(networkMonitor)
51
                        .transition(.scale)
52
 
8 efrain 53
                case AppMainPage.splash :
54
                    SplashScreenView()
55
                    .environmentObject(appNavigation)
56
                    .environmentObject(networkMonitor)
57
 
58
                case AppMainPage.goodbye :
59
                    GoodByeView()
60
                    .environmentObject(appNavigation)
61
                    .environmentObject(networkMonitor)
17 efrain 62
 
63
                case AppMainPage.videoplayer :
64
                    VideoPlayerView()
65
                    .environmentObject(appNavigation)
66
                    .environmentObject(networkMonitor)
8 efrain 67
 
17 efrain 68
                case AppMainPage.pdfviewer :
69
                    PdfViewerView()
70
                    .environmentObject(appNavigation)
71
                    .environmentObject(networkMonitor)
72
 
73
                case AppMainPage.webviewer :
74
                    WebViewerView()
75
                    .environmentObject(appNavigation)
76
                    .environmentObject(networkMonitor)
77
 
8 efrain 78
                default :
79
                    HomeView()
80
                    .environmentObject(appNavigation)
81
                    .environmentObject(networkMonitor)
82
                    .transition(.scale)
1 efrain 83
 
8 efrain 84
                }
1 efrain 85
 
86
                    //Spacer()
87
                    /*
88
                    if(self.networkMonitor.status == .disconnected) {
89
                        Text("The popup")
90
                        .frame(width: UIScreen.main.bounds.width, height: 60)
91
                        .background(Color("color_error_background"))
92
                        .foregroundColor(Color("color_error_foreground"))
93
                        .font(.callout)
94
                    }*/
95
            }
17 efrain 96
        } .onReceive(NotificationCenter.default.publisher(for: Constants.NOTIFICATION_NAME_COMMAND_REFRESH_CONTENT))
97
        { data in
98
            if data.userInfo != nil {
99
                let newCapsules = Int(data.userInfo?["new_capsules"]! as? String ?? "0") ?? 0
100
                let isForeground = (Int(data.userInfo?["is_foreground"]! as? String ?? "0") ?? 0) == 1
101
 
102
                if newCapsules > 0 {
103
 
104
                    let message = newCapsules == 1 ? Config.LANG_MESSAGE_NEW_CONTENT_THERE_IS_ONE_CAPSULE : Config.LANG_MESSAGE_NEW_CONTENT_THERE_ARE_MULTIPLE_CAPSULES.replacingOccurrences(of: "%s", with: String(newCapsules))
105
 
106
                    if isForeground {
107
                        let snackbar = TTGSnackbar(message:  message, duration: .long)
108
                        snackbar.show()
109
                    } else {
110
                        localNotification.sendNotification(title: Config.LANG_TITLE_NEW_CONTENT, subtitle: "", body: message, launchIn: 0)
111
                    }
112
                }
113
            }
1 efrain 114
 
115
        }
17 efrain 116
        .onReceive(NotificationCenter.default.publisher(for: Constants.NOTIFICATION_NAME_COMMAND_EXIT))
117
       { data in
1 efrain 118
 
17 efrain 119
           appData.userUuid = ""
120
           appData.userFirstname = ""
121
           appData.userLastname = ""
122
           appData.userEmail = ""
123
           appData.userImage = ""
124
           appData.save()
125
 
126
           appNavigation.pageActive = .goodbye
1 efrain 127
 
17 efrain 128
       }
1 efrain 129
 
130
 
131
    }
132
}
133
 
134
struct MainView_Previews: PreviewProvider {
135
    static var previews: some View {
136
        MainView()
137
    }
138
}
139