Rev 19 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
//// MyCapsuleListingView.swift// twogetskills//// Created by Efrain Yanez Recanatini on 7/27/22.//import Foundationimport SwiftUIimport HTMLEntitiesstruct MyCapsuleListItemView: View {@EnvironmentObject var appNavigation : AppNavigationprivate var viewModel : MyCapsulesListingItemView = MyCapsulesListingItemView()private let capsuleName : Stringprivate let capsuleDescription : Stringprivate var appData = AppData.sharedInstanceinit (capsuleUuid : String) {self.viewModel.fetch(capsuleUuid: capsuleUuid, userUuid: appData.userUuid)if self.viewModel.capsule.name.count > Constants.MYCAPSULE_TITLE_MAX_LENGTH {self.capsuleName = String(Array(self.viewModel.capsule.name)[0...Constants.MYCAPSULE_TITLE_MAX_LENGTH]) + "..."} else {self.capsuleName = self.viewModel.capsule.name}let textHtml = self.viewModel.capsule.description.htmlUnescape()let regex = "<.*?>"let repl = ""let s = textHtml.replacingOccurrences(of: regex, with: repl, options: [.regularExpression])if s.count > Constants.MYCAPSULE_DESCRIPTION_MAX_LENGTH {self.capsuleDescription = String(Array(s)[0...Constants.MYCAPSULE_DESCRIPTION_MAX_LENGTH]) + "..."} else {self.capsuleDescription = s}}var body: some View {VStack(spacing: 0 ) {Group {HStack {Group {if self.viewModel.capsule.image.isEmpty {Image(uiImage: UIImage(named: "logo") ?? UIImage()).resizable().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()})}} .frame(width: 64, height:97, alignment: .center)VStack(spacing: 0){HStack {Text(self.capsuleName).font(Font.custom(Config.FONT_NAME_BOLD, size: 14)).foregroundColor(Color("color_capsule_list_item_title_foreground"))Spacer()Button(action: {appData.topicUuidActive = self.viewModel.capsule.topicUuidappData.capsuleUuidActive = self.viewModel.capsule.uuidappData.slideUuidActive = ""appData.save()appNavigation.subPageSource = .mycapsuleswithAnimation {appNavigation.subpageActive = .slides}}, label: {Image(systemName: "arrowtriangle.right.fill").resizable().aspectRatio(contentMode: /*@START_MENU_TOKEN@*/.fill/*@END_MENU_TOKEN@*/).frame(width: 16, height: 16, alignment: /*@START_MENU_TOKEN@*/.center/*@END_MENU_TOKEN@*/)}).padding(.trailing, 10).foregroundColor(Color("color_capsule_list_item_title_foreground"))}HStack {Text(self.capsuleDescription).font(Font.custom(Config.FONT_NAME_REGULAR, size: 16)).foregroundColor(Color("color_capsule_list_item_description_foreground"))Spacer()}.padding(.top, 3)HStack {Text("\(self.viewModel.capsule.viewSlides)/\(self.viewModel.capsule.totalSlides) \(Config.LANG_COMMON_SLIDES)").font(Font.custom(Config.FONT_NAME_REGULAR, size: 12)).foregroundColor(Color("color_capsule_list_item_description_foreground"))Spacer()}.padding(.top, 3)Button(action: {appData.topicUuidActive = self.viewModel.capsule.topicUuidappData.capsuleUuidActive = self.viewModel.capsule.uuidappData.slideUuidActive = ""appData.save()appNavigation.subPageSource = .mycapsulesappNavigation.subpageActive = .commentsandrating}, label: {HStack {FiveStarView(rating: self.viewModel.capsule.totalRating, color: Color("color_capsule_list_item_star_foreground"), backgroundColor: Color("color_capsule_list_item_star_background")) .frame(width: /*@START_MENU_TOKEN@*/100/*@END_MENU_TOKEN@*/, height: 16, alignment: /*@START_MENU_TOKEN@*/.center/*@END_MENU_TOKEN@*/).padding(.leading, 8)Spacer()Text("\(self.viewModel.capsule.totalComments)").font(Font.custom(Config.FONT_NAME_REGULAR, size: 16)).foregroundColor(Color("color_capsule_list_item_description_foreground"))Image(systemName: "message").resizable().aspectRatio(contentMode: .fill).frame(width: 16, height: 16, alignment: /*@START_MENU_TOKEN@*/.center/*@END_MENU_TOKEN@*/).padding(.trailing, 16).foregroundColor(Color("color_capsule_list_item_description_foreground"))}}).padding(.top, 3)}}}Divider()} .background(Color("color_capsule_list_item_background")).padding(.leading, 5).padding(.trailing, 5)}}struct MyCapsuleListItemView_Previews: PreviewProvider {static var previews: some View {MyCapsuleListItemView(capsuleUuid : "C123")}}