Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
//// GridSlideView.swift// twogetskills//// Created by Efrain Yanez Recanatini on 2/17/22.//import SwiftUIstruct GridSlideView: View {@EnvironmentObject private var networkMonitor : NetworkMonitor@EnvironmentObject private var appNavigation : AppNavigation@ObservedObject private var viewModel : SlideGridViewModel = SlideGridViewModel()@State private var scrollToIndex : Int = 0private var appData = AppData.sharedInstanceprivate let capsuleDao : CapsuleDao = CapsuleDao.sharedInstanceprivate var capsuleModel : CapsuleModel = CapsuleModel()private var capsuleTitle : String = ""private let config = [GridItem(.fixed(Constants.CARD_WIDTH)),GridItem(.fixed(Constants.CARD_WIDTH))]init(){self.capsuleModel = capsuleDao.selectByUuid(uuid: appData.capsuleUuidActive)viewModel.fetch(capsuleUuid: self.capsuleModel.uuid, userUuid: appData.userUuid)if self.capsuleModel.name.count > Constants.APP_BAR_TITLE_MAX_LENGTH {capsuleTitle = String(Array(self.capsuleModel.name)[0...Constants.APP_BAR_TITLE_MAX_LENGTH]) + "..."} else {capsuleTitle = self.capsuleModel.name}}var body: some View {VStack(spacing: 0) {HStack {Button(action: {if appNavigation.subPageSource == .mycapsules {//appData.topicUuidActive = ""//appData.capsuleUuidActive = ""appData.slideUuidActive = ""appData.save()withAnimation {appNavigation.subpageActive = .mycapsules}} else {appData.slideUuidActive = ""appData.save()withAnimation {appNavigation.subpageActive = .capsules}}}, label: {Image(systemName: "chevron.backward").frame(width: 32, height: 32, alignment: /*@START_MENU_TOKEN@*/.center/*@END_MENU_TOKEN@*/).aspectRatio(contentMode: .fit).foregroundColor(networkMonitor.status == .disconnected ? Color("color_network_disconnected_foreground") : Color("color_app_bar_foreground"))}).padding(.leading, 16)Text(networkMonitor.status == .disconnected ? Config.LANG_ERROR_NETWORK_MESSAGE_SHORT : capsuleTitle).font(Font.custom(Config.FONT_NAME_REGULAR, size: Config.FONT_SIZE_APP_BAR_HEAD1 )).foregroundColor(networkMonitor.status == .disconnected ? Color("color_network_disconnected_foreground") : Color("color_app_bar_foreground")).padding(.leading, 4)Spacer()}.edgesIgnoringSafeArea(.top).frame(height: 50).background(networkMonitor.status == .disconnected ? Color("color_network_disconnected_background") : Color("color_app_bar_background"))Divider().background(networkMonitor.status == .disconnected ? Color("color_network_disconnected_background") : Color("color_app_bar_background"))Divider()ScrollView() {ScrollViewReader { proxy inLazyVGrid(columns: config, alignment: /*@START_MENU_TOKEN@*/.center/*@END_MENU_TOKEN@*/, spacing: /*@START_MENU_TOKEN@*/nil/*@END_MENU_TOKEN@*/, pinnedViews: /*@START_MENU_TOKEN@*/[]/*@END_MENU_TOKEN@*/, content: {ForEach(0..<self.viewModel.slides.count) { index inCardSlideView(slideUuid: self.viewModel.slides[index].uuid,position: index).environmentObject(appNavigation).frame(width: Constants.CARD_WIDTH,height: Constants.CARD_HEIGHT,alignment: .center).id(index)}/*}.onChange(of: scrollToIndex, perform: { value in//print("onChange")proxy.scrollTo(value, anchor: nil)})*/})}}.onAppear {var i : Int = 0while i < self.viewModel.slides.count {if appData.slideUuidActive == self.viewModel.slides[i].uuid {self.scrollToIndex = i}i += 1}}.padding(.top, 5)}}}struct GridSlideView_Previews: PreviewProvider {static var previews: some View {//GridSlideView(capsuleUuid: "C123")GridSlideView()}}