AutorÃa | Ultima modificación | Ver Log |
//// CardSlideView.swift// twogetskills//// Created by Efrain Yanez Recanatini on 2/17/22.//import SwiftUIstruct CardSlideView: View {private let colorCardViewBackground = UIColor(hex: Config.COLOR_WINDOW_BACKGROUND)private let colorWindowBackground = UIColor(hex: Config.COLOR_WINDOW_BACKGROUND)private let colorCardViewBorder = UIColor(hex: Config.COLOR_CARD_VIEW_BORDER)private let colorBackgroundTopicFooter = UIColor(hex: Config.COLOR_BACKGROUND_TOPIC_FOOTER)private let colorForegroundTopicProgressBar = UIColor(hex: Config.COLOR_FOREGROUND_TOPIC_PROGRESS_BAR)private let colorTitle = UIColor(hex: Config.COLOR_TEXT_VIEW_TITLE);private var position : Intprivate var viewModel = SlideCardViewModel()@State private var goToGallery : Bool = falseinit(slideUuid : String, position : Int){print("CardSlideView slideUuid : \(slideUuid)")let preference = Preference.sharedInstanceself.viewModel.fetch(slideUuid: slideUuid, userUuid: preference.userUuid)self.position = positionif self.viewModel.slide.name.count > Constants.CAPSULE_TITLE_MAX_LENGTH {self.viewModel.slide.name = String(Array(self.viewModel.slide.name)[0...Constants.CAPSULE_TITLE_MAX_LENGTH]) + "..."}}var body: some View {GeometryReader { geometry in//let cardProportional = 1.1 * (geometry.size.height / (geometry.size.width - 20))//let cardWidht = (geometry.size.width - 20) / 2//let cardHeigh = cardWidht * cardProportionallet checkMarkX = (geometry.size.width - 40) / 2let checkMarkY = -1 * ((geometry.size.height - 50) / 2)Button(action: {let preference = Preference.sharedInstancepreference.topicUuidActive = self.viewModel.slide.topicUuidpreference.capsuleUuidActive = self.viewModel.slide.capsuleUuidpreference.slideUuidActive = self.viewModel.slide.uuidpreference.save()self.goToGallery = true}) {NavigationLink("", destination: GridGalleryView(capsuleUuid: self.viewModel.slide.capsuleUuid, position: position), isActive: self.$goToGallery).frame( height: 0)ZStack {if self.viewModel.slide.completed == 1 {Image(uiImage: UIImage(named: "ic_slide_completado_checkmark") ?? UIImage()).alignmentGuide(.top, computeValue: { dimension in10}).offset(x: checkMarkX, y: checkMarkY).zIndex(10000).scaleEffect(0.8)}VStack {Text( self.viewModel.slide.name).fontWeight(/*@START_MENU_TOKEN@*/.bold/*@END_MENU_TOKEN@*/).font(.system(size: 11.0)).foregroundColor(Color(colorTitle ?? .red)).padding(.horizontal, 5).padding(.top, 5)Spacer()HStack {if viewModel.slide.background.isEmpty && viewModel.slide.file.isEmpty {Image(uiImage: UIImage(named: "logo") ?? UIImage()).resizable().aspectRatio(contentMode: .fit)} else {CustomAsyncImage(url: URL(string:self.viewModel.slide.type == Constants.SLIDE_TYPE_IMAGE ? self.viewModel.slide.file : self.viewModel.slide.background)!,placeholder: { Text("Cargando...").font(.footnote).foregroundColor(.black)},image: {Image(uiImage: $0).resizable()})}}.padding(.horizontal, 5).zIndex(500)Spacer()Group() {HStack {Spacer()}}.background(Color(colorBackgroundTopicFooter ?? .red))}.background(Color(colorCardViewBackground ?? .red)).cornerRadius(16).overlay(RoundedRectangle(cornerRadius: 16).stroke(Color(colorCardViewBorder ?? .red), lineWidth: 1)).padding(.horizontal, 5)} .onAppear {print("CardSlideView")} .onReceive(NotificationCenter.default.publisher(for: Constants.NOTIFICATION_NAME_COMPLETED_SLIDE)){ data inif data.userInfo != nil {if let notificationSlideUuid = data.userInfo?["slideUuid"]! as? String {if !notificationSlideUuid.isEmpty && notificationSlideUuid == self.viewModel.slide.uuid {let preference = Preference.sharedInstanceself.viewModel.fetch(slideUuid: notificationSlideUuid, userUuid: preference.userUuid)}}}}.padding(.top, 5)}}}}struct CardSlideView_Previews: PreviewProvider {static var previews: some View {CardSlideView(slideUuid: "S123", position : 0)}}