WIP
This commit is contained in:
17
Werkout_ios/APIModels/NSFWVideo.swift
Normal file
17
Werkout_ios/APIModels/NSFWVideo.swift
Normal file
@@ -0,0 +1,17 @@
|
||||
//
|
||||
// NSFWVideo.swift
|
||||
// Werkout_ios
|
||||
//
|
||||
// Created by Trey Tartt on 7/29/23.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
|
||||
struct NSFWVideo: Codable {
|
||||
let videoFile, genderValue: String
|
||||
|
||||
enum CodingKeys: String, CodingKey {
|
||||
case videoFile = "video_file"
|
||||
case genderValue = "gender_value"
|
||||
}
|
||||
}
|
||||
@@ -17,7 +17,6 @@ struct Workout: Codable, Identifiable, Equatable {
|
||||
let description: String?
|
||||
let supersets: [Superset]?
|
||||
let registeredUser: RegisteredUser?
|
||||
let femaleVideos, maleVideos, bothVideos: [String]?
|
||||
let muscles: [String]?
|
||||
let equipment: [String]?
|
||||
let exercise_count: Int?
|
||||
@@ -28,9 +27,6 @@ struct Workout: Codable, Identifiable, Equatable {
|
||||
enum CodingKeys: String, CodingKey {
|
||||
case id, name, description, supersets, exercise_count, muscles, equipment
|
||||
case registeredUser = "registered_user"
|
||||
case maleVideos = "male_videos"
|
||||
case femaleVideos = "female_videos"
|
||||
case bothVideos = "both_videos"
|
||||
case createdAt = "created_at"
|
||||
case estimatedTime = "estimated_time"
|
||||
case allSupersetExecercise = "all_superset_exercise"
|
||||
@@ -43,9 +39,6 @@ struct Workout: Codable, Identifiable, Equatable {
|
||||
self.description = try container.decodeIfPresent(String.self, forKey: .description)
|
||||
self.registeredUser = try container.decodeIfPresent(RegisteredUser.self, forKey: .registeredUser)
|
||||
self.id = try container.decode(Int.self, forKey: .id)
|
||||
self.femaleVideos = try container.decodeIfPresent([String].self, forKey: .femaleVideos)
|
||||
self.maleVideos = try container.decodeIfPresent([String].self, forKey: .maleVideos)
|
||||
self.bothVideos = try container.decodeIfPresent([String].self, forKey: .bothVideos)
|
||||
self.supersets = try container.decodeIfPresent([Superset].self, forKey: .supersets)
|
||||
|
||||
self.equipment = try container.decodeIfPresent([String].self, forKey: .equipment)
|
||||
|
||||
@@ -12,6 +12,6 @@ enum BaseURLs: String {
|
||||
case dev = "https://dev.werkout.fitness"
|
||||
|
||||
static var currentBaseURL: String {
|
||||
return BaseURLs.local.rawValue
|
||||
return BaseURLs.dev.rawValue
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,11 +20,18 @@ class DataStore: ObservableObject {
|
||||
public private(set) var allMuscles: [Muscle]?
|
||||
public private(set) var allEquipment: [Equipment]?
|
||||
public private(set) var allExercise: [Exercise]?
|
||||
public private(set) var allNSFWVideos: [NSFWVideo]?
|
||||
|
||||
@Published public private(set) var status = DataStoreStatus.idle
|
||||
|
||||
private let fetchAllDataQueue = DispatchGroup()
|
||||
|
||||
public func randomVideoFor(gender: String) -> String? {
|
||||
return allNSFWVideos?.filter({
|
||||
$0.genderValue == gender
|
||||
}).randomElement()?.videoFile ?? nil
|
||||
}
|
||||
|
||||
public var workoutsUniqueUsers: [RegisteredUser]? {
|
||||
guard let workouts = allWorkouts else {
|
||||
return nil
|
||||
@@ -41,6 +48,7 @@ class DataStore: ObservableObject {
|
||||
fetchAllDataQueue.enter()
|
||||
fetchAllDataQueue.enter()
|
||||
fetchAllDataQueue.enter()
|
||||
fetchAllDataQueue.enter()
|
||||
|
||||
fetchAllDataQueue.notify(queue: .main) {
|
||||
self.status = .idle
|
||||
@@ -73,7 +81,7 @@ class DataStore: ObservableObject {
|
||||
switch result {
|
||||
case .success(let model):
|
||||
self.allEquipment = model.sorted(by: {
|
||||
$0.name ?? "a" < $1.name ?? "a"
|
||||
$0.name < $1.name
|
||||
})
|
||||
case .failure(let error):
|
||||
print(error)
|
||||
@@ -92,6 +100,16 @@ class DataStore: ObservableObject {
|
||||
}
|
||||
self.fetchAllDataQueue.leave()
|
||||
})
|
||||
|
||||
AllNSFWVideosFetchable().fetch(completion: { result in
|
||||
switch result {
|
||||
case .success(let model):
|
||||
self.allNSFWVideos = model
|
||||
case .failure(let error):
|
||||
print(error)
|
||||
}
|
||||
self.fetchAllDataQueue.leave()
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -97,3 +97,8 @@ class PlanWorkoutFetchable: Postable {
|
||||
self.postableData = postData
|
||||
}
|
||||
}
|
||||
|
||||
class AllNSFWVideosFetchable: Fetchable {
|
||||
typealias Response = [NSFWVideo]
|
||||
var endPoint: String = "/videos/nsfw_videos/"
|
||||
}
|
||||
|
||||
@@ -95,18 +95,18 @@ class VideoURLCreator {
|
||||
|
||||
switch thotStyle {
|
||||
case .always:
|
||||
urlString = workout?.femaleVideos?.randomElement()
|
||||
urlString = DataStore.shared.randomVideoFor(gender: "female")
|
||||
case .never:
|
||||
urlString = defaultVideoURLStr
|
||||
case .recovery:
|
||||
if exerciseName?.lowercased() == "recover" {
|
||||
urlString = workout?.femaleVideos?.randomElement()
|
||||
urlString = DataStore.shared.randomVideoFor(gender: "female")
|
||||
} else {
|
||||
urlString = defaultVideoURLStr
|
||||
}
|
||||
case .random:
|
||||
if Bool.random() {
|
||||
urlString = workout?.femaleVideos?.randomElement()
|
||||
urlString = DataStore.shared.randomVideoFor(gender: "female")
|
||||
} else {
|
||||
urlString = defaultVideoURLStr
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user