Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
//// CardCapsuleView.swift// twogetskills//// Created by Efrain Yanez Recanatini on 2/17/22.//import SwiftUIstruct CardCapsuleView: View {@EnvironmentObject private var appNavigation : AppNavigation@ObservedObject private var viewModel = CapsuleCardViewModel()private let userUuid : String;private var capsuleTitle : String = ""private var appData = AppData.sharedInstanceinit(capsuleUuid : String){userUuid = appData.userUuidviewModel.fetch(capsuleUuid: capsuleUuid, userUuid: appData.userUuid)if viewModel.capsule.name.count > Constants.CAPSULE_TITLE_MAX_LENGTH {capsuleTitle = String(Array(self.viewModel.capsule.name)[0...Constants.CAPSULE_TITLE_MAX_LENGTH]) + "..."} else {capsuleTitle = viewModel.capsule.name}}var body: some View {Button(action: {appData.topicUuidActive = self.viewModel.capsule.topicUuidappData.capsuleUuidActive = self.viewModel.capsule.uuidappData.slideUuidActive = ""appData.save()appNavigation.subpageActive = .slides}) {VStack {Text(self.capsuleTitle).font(Font.custom(Config.FONT_NAME_REGULAR, size: Config.FONT_SIZE_CARD_VIEW_TITLE)).foregroundColor(Color("color_textview_foreground")).padding(.horizontal, 5).padding(.top, 5).multilineTextAlignment(/*@START_MENU_TOKEN@*/.leading/*@END_MENU_TOKEN@*/)HStack {if self.viewModel.capsule.image.isEmpty {Image(uiImage: UIImage(named: "logo") ?? UIImage()).resizable().aspectRatio(contentMode: .fit)} else {CustomAsyncImage(url: URL(string: self.viewModel.capsule.image)!,placeholder: { Text(Config.LANG_COMMON_LOADING).font(.footnote).foregroundColor(.black)},image: {Image(uiImage: $0).resizable()})}}.padding(.horizontal, 5)Spacer()Group() {HStack {ProgressBar(value: self.viewModel.capsule.progress,maxValue: 100,backgroundColor: Color("color_card_view_progress_background"),foregroundColor: Color("color_card_view_progress_foreground")).frame(height: 6).padding(10)Text( String(format: "%.1f", self.viewModel.capsule.progress) + "%").font(Font.custom(Config.FONT_NAME_REGULAR, size: Config.FONT_SIZE_CARD_VIEW_FOOTER )).foregroundColor(Color("color_textview_foreground")).padding(5)}}.background(Color("color_card_view_background_footer"))}.background(Color("color_card_view_background")).cornerRadius(16).overlay(RoundedRectangle(cornerRadius: 16).stroke(Color("color_card_view_border"), lineWidth:1)).padding(.horizontal, 5)}.onAppear {viewModel.fetchProgress(capsuleUuid: self.viewModel.capsule.uuid, userUuid: self.userUuid)}.onReceive(NotificationCenter.default.publisher(for: Constants.NOTIFICATION_NAME_CHANGE_PERCENTAJE_COMPLETED_CAPSULE)){ data inif data.userInfo != nil {if let capsuleUuid = data.userInfo?["capsuleUuid"]! as? String {if !capsuleUuid.isEmpty && capsuleUuid == self.viewModel.capsule.uuid {self.viewModel.fetchProgress(capsuleUuid: capsuleUuid, userUuid: appData.userUuid)}}}}.padding(.top, 5)}}struct CardCapsuleView_Previews: PreviewProvider {static var previews: some View {CardCapsuleView(capsuleUuid: "C123")}}