Rev 24 | Rev 26 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
//// MainView.swift// twogetskills//// Created by Efrain Yanez Recanatini on 2/17/22.//import SwiftUIimport TTGSnackbarstruct MainView: View {@StateObject private var appNavigation = AppNavigation()@StateObject private var networkMonitor = NetworkMonitor()@State private var showToast : Bool = trueprivate var appData = AppData.sharedInstanceprivate var localNotification = LocalNotificationManager()var body: some View {ZStack {Color("color_window_background").ignoresSafeArea(.all)VStack(spacing: 0) {switch appNavigation.pageActive{case AppMainPage.intro1 :IntroStep1View().environmentObject(appNavigation).environmentObject(networkMonitor).transition(.scale)case AppMainPage.intro2 :IntroStep2View().environmentObject(appNavigation).environmentObject(networkMonitor).transition(.scale)case AppMainPage.intro3 :IntroStep3View().environmentObject(appNavigation).environmentObject(networkMonitor).transition(.scale)case AppMainPage.signin :SigninView().environmentObject(appNavigation).environmentObject(networkMonitor).transition(.scale)case AppMainPage.splash :SplashScreenView().environmentObject(appNavigation).environmentObject(networkMonitor)case AppMainPage.goodbye :GoodByeView().environmentObject(appNavigation).environmentObject(networkMonitor)case AppMainPage.videoplayer :VideoPlayerView().environmentObject(appNavigation).environmentObject(networkMonitor)case AppMainPage.pdfviewer :PdfViewerView().environmentObject(appNavigation).environmentObject(networkMonitor)case AppMainPage.webviewer :WebViewerView().environmentObject(appNavigation).environmentObject(networkMonitor)case AppMainPage.download :DownloadFileView().environmentObject(appNavigation).environmentObject(networkMonitor)default :HomeView().environmentObject(appNavigation).environmentObject(networkMonitor).transition(.scale)}//Spacer()/*if(self.networkMonitor.status == .disconnected) {Text("The popup").frame(width: UIScreen.main.bounds.width, height: 60).background(Color("color_error_background")).foregroundColor(Color("color_error_foreground")).font(.callout)}*/}}.onAppear {if appData.refreshContentMessageShowPending {let snackbar = TTGSnackbar(message: appData.refreshContentMessage, duration: .long)snackbar.show()appData.refreshContentMessage = ""appData.refreshContentMessageShowPending = falseappData.save()}}.onReceive(NotificationCenter.default.publisher(for: Constants.NOTIFICATION_NAME_COMMAND_REFRESH_CONTENT)){ data inif data.userInfo != nil {let newCapsules = Int(data.userInfo?["new_capsules"]! as? String ?? "0") ?? 0let isForeground = (Int(data.userInfo?["is_foreground"]! as? String ?? "0") ?? 0) == 1if newCapsules > 0 {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))if isForeground {let snackbar = TTGSnackbar(message: message, duration: .long)snackbar.show()} else {appData.refreshContentMessage = messageappData.refreshContentMessageShowPending = trueappData.save()}}}}.onReceive(NotificationCenter.default.publisher(for: Constants.NOTIFICATION_NAME_COMMAND_EXIT)){ data inappData.userUuid = ""appData.userFirstname = ""appData.userLastname = ""appData.userEmail = ""appData.userImage = ""appData.save()appNavigation.pageActive = .goodbye}.onReceive(NotificationCenter.default.publisher(for: Constants.NOTIFICATION_NAME_PUSH)){ data inlet title = data.userInfo?["title"]! as? String ?? ""let body = data.userInfo?["body"]! as? String ?? ""let url = data.userInfo?["url"]! as? String ?? ""let newCapsules = Int(data.userInfo?["new_capsules"]! as? String ?? "0") ?? 0if !title.isEmpty && !body.isEmpty {var command : Stringif !url.isEmpty {command = Constants.NOTIFICATION_COMMAND_OPEN_URL} else if newCapsules > 0 {command = Constants.NOTIFICATION_COMMAND_REFRESH_CONTENT} else {command = ""}let now = Date()let dateFormatter = DateFormatter()dateFormatter.dateFormat = Constants.FORMAT_DATE_YMDlet timeFormatter = DateFormatter()timeFormatter.dateFormat = Constants.FORMAT_TIME_12let dateOn = dateFormatter.string(from: now)let timeOn = dateFormatter.string(from: now)let userNotificationDao = UserNotificationDao.sharedInstancevar userNotification : UserNotificationModel = UserNotificationModel(userUuid: appData.userUuid, title: title, body: body, viewed: command.isEmpty ? 1 : 0, url: url, command: command, dateOn: dateOn, timeOn: timeOn)userNotificationDao.insert(userNotification: userNotification)}}}}struct MainView_Previews: PreviewProvider {static var previews: some View {MainView()}}