mirror of
https://github.com/cranci1/Sora.git
synced 2026-03-11 17:45:37 +00:00
test
This commit is contained in:
parent
2e528fcfa5
commit
6a6b3df298
3 changed files with 51 additions and 15 deletions
Binary file not shown.
|
|
@ -14,10 +14,12 @@ struct EpisodeCell: View {
|
|||
let imageUrl: String
|
||||
let progress: Double
|
||||
let itemID: Int
|
||||
let module: ModuleStruct
|
||||
|
||||
@State private var episodeTitle: String = ""
|
||||
@State private var episodeImageUrl: String = ""
|
||||
@State private var isLoading: Bool = true
|
||||
@State private var currentProgress: Double = 0.0
|
||||
|
||||
var body: some View {
|
||||
HStack {
|
||||
|
|
@ -46,11 +48,12 @@ struct EpisodeCell: View {
|
|||
|
||||
Spacer()
|
||||
|
||||
CircularProgressBar(progress: progress)
|
||||
CircularProgressBar(progress: currentProgress)
|
||||
.frame(width: 40, height: 40)
|
||||
}
|
||||
.onAppear {
|
||||
fetchEpisodeDetails()
|
||||
updateProgress()
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -104,4 +107,11 @@ struct EpisodeCell: View {
|
|||
}
|
||||
}.resume()
|
||||
}
|
||||
|
||||
func updateProgress() {
|
||||
let episodeURL = episode.hasPrefix("https") ? episode : "\(module.module[0].details.baseURL)\(episode)"
|
||||
let lastPlayedTime = UserDefaults.standard.double(forKey: "lastPlayedTime_\(episodeURL)")
|
||||
let totalTime = UserDefaults.standard.double(forKey: "totalTime_\(episodeURL)")
|
||||
currentProgress = totalTime > 0 ? lastPlayedTime / totalTime : 0
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -24,6 +24,8 @@ struct MediaView: View {
|
|||
@State var itemID: Int?
|
||||
@State private var selectedEpisode: String = ""
|
||||
@State private var selectedEpisodeNumber: Int = 0
|
||||
@State private var episodeRange: ClosedRange<Int> = 0...99
|
||||
@State private var selectedRange: String = "1-100"
|
||||
|
||||
@AppStorage("externalPlayer") private var externalPlayer: String = "Default"
|
||||
@StateObject private var libraryManager = LibraryManager.shared
|
||||
|
|
@ -134,22 +136,46 @@ struct MediaView: View {
|
|||
|
||||
if !episodes.isEmpty {
|
||||
VStack(alignment: .leading, spacing: 10) {
|
||||
Text("Episodes")
|
||||
.font(.system(size: 18))
|
||||
.fontWeight(.bold)
|
||||
|
||||
ForEach(episodes.indices, id: \.self) { index in
|
||||
let episodeURL = episodes[index].hasPrefix("https") ? episodes[index] : "\(module.module[0].details.baseURL)\(episodes[index])"
|
||||
let lastPlayedTime = UserDefaults.standard.double(forKey: "lastPlayedTime_\(episodeURL)")
|
||||
let totalTime = UserDefaults.standard.double(forKey: "totalTime_\(episodeURL)")
|
||||
let progress = totalTime > 0 ? lastPlayedTime / totalTime : 0
|
||||
HStack {
|
||||
Text("Episodes")
|
||||
.font(.system(size: 18))
|
||||
.fontWeight(.bold)
|
||||
|
||||
EpisodeCell(episode: episodes[index], episodeID: index, imageUrl: item.imageUrl, progress: progress, itemID: itemID ?? 0)
|
||||
.onTapGesture {
|
||||
selectedEpisode = episodes[index]
|
||||
selectedEpisodeNumber = index + 1
|
||||
fetchEpisodeStream(urlString: episodeURL)
|
||||
Spacer()
|
||||
|
||||
if episodes.count > 100 {
|
||||
Menu {
|
||||
ForEach(0..<(episodes.count / 100) + 1, id: \.self) { index in
|
||||
let start = index * 100 + 1
|
||||
let end = min((index + 1) * 100, episodes.count)
|
||||
Button(action: {
|
||||
episodeRange = (start - 1)...(end - 1)
|
||||
selectedRange = "\(start)-\(end)"
|
||||
}) {
|
||||
Text("\(start)-\(end)")
|
||||
}
|
||||
}
|
||||
} label: {
|
||||
Text(selectedRange)
|
||||
.font(.system(size: 14))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ForEach(episodeRange, id: \.self) { index in
|
||||
if index < episodes.count {
|
||||
let episodeURL = episodes[index].hasPrefix("https") ? episodes[index] : "\(module.module[0].details.baseURL)\(episodes[index])"
|
||||
let lastPlayedTime = UserDefaults.standard.double(forKey: "lastPlayedTime_\(episodeURL)")
|
||||
let totalTime = UserDefaults.standard.double(forKey: "totalTime_\(episodeURL)")
|
||||
let progress = totalTime > 0 ? lastPlayedTime / totalTime : 0
|
||||
|
||||
EpisodeCell(episode: episodes[index], episodeID: index, imageUrl: item.imageUrl, progress: progress, itemID: itemID ?? 0, module: module)
|
||||
.onTapGesture {
|
||||
selectedEpisode = episodes[index]
|
||||
selectedEpisodeNumber = index + 1
|
||||
fetchEpisodeStream(urlString: episodeURL)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue