// // SeriesItemView.swift // JellyfinPlayer // // Created by Aiden Vigue on 5/1/21. // import SwiftUI import SwiftyRequest import SwiftyJSON import SDWebImageSwiftUI struct SeriesItemView: View { @EnvironmentObject var globalData: GlobalData @State private var isLoading: Bool = true; var item: ResumeItem; @State private var items: [ResumeItem] = []; @State private var hasAppearedOnce: Bool = false; func onAppear() { recalcTracks() if(hasAppearedOnce) { return; } _isLoading.wrappedValue = true; let url = "/Shows/\(item.Id )/Seasons?userId=\(globalData.user?.user_id ?? "")&Fields=ItemCount" let request = RestRequest(method: .get, url: (globalData.server?.baseURI ?? "") + url) request.headerParameters["X-Emby-Authorization"] = globalData.authHeader request.contentType = "application/json" request.acceptType = "application/json" request.responseData() { (result: Result, RestError>) in switch result { case .success(let response): let body = response.body do { let json = try JSON(data: body) for (_,item):(String, JSON) in json["Items"] { // Do something you want var itemObj = ResumeItem() itemObj.Type = "Season" itemObj.Id = item["Id"].string ?? "" itemObj.ProductionYear = item["ProductionYear"].int ?? 0 itemObj.ItemBadge = item["UserData"]["UnplayedItemCount"].int ?? 0 itemObj.Image = item["ImageTags"]["Primary"].string ?? "" if(itemObj.Image == "") { itemObj.Image = item["ParentBackdropImageTags"][0].string ?? "" } itemObj.ImageType = "Primary" itemObj.SeasonImage = item["ParentBackdropImageTags"][0].string ?? "" itemObj.SeasonImageType = "Backdrop" itemObj.SeasonImageBlurHash = item["ImageBlurHashes"]["Backdrop"][itemObj.SeasonImage ?? ""].string ?? "" itemObj.BlurHash = item["ImageBlurHashes"]["Primary"][itemObj.Image].string ?? "" itemObj.SeriesName = item["SeriesName"].string ?? "" itemObj.Name = item["Name"].string ?? "" _items.wrappedValue.append(itemObj) } } catch { } break case .failure(let error): debugPrint(error) break } _isLoading.wrappedValue = false; _hasAppearedOnce.wrappedValue = true; } } @Environment(\.verticalSizeClass) var verticalSizeClass: UserInterfaceSizeClass? @Environment(\.horizontalSizeClass) var horizontalSizeClass: UserInterfaceSizeClass? var isPortrait: Bool { let result = verticalSizeClass == .regular && horizontalSizeClass == .compact return result } func recalcTracks() { let trkCnt: Int = Int(floor(UIScreen.main.bounds.size.width / 125)); _tracks.wrappedValue = [] for _ in (0..