fix: make sure volumeURLs are sorted, and are set correctly in metadata

This commit was merged in pull request #15.
This commit is contained in:
2026-07-13 03:18:41 +02:00
parent 4cab14d9ae
commit f42e44e1af
+12 -10
View File
@@ -194,8 +194,10 @@ class ViewController: UIViewController, UIGestureRecognizerDelegate {
loadLocalState() loadLocalState()
let volCovP = ProgressIndices(v: progress.v, c: 0, i: 0) let volCovP = ProgressIndices(v: progress.v, c: 0, i: 0)
let volumeDir = currentPath.appendingPathComponent("volumes") let volumeDir = currentPath.appendingPathComponent("volumes")
let archive = try! Archive(url: volumeDir.appendingPathComponent(metadata.volumes[progress.v].archive), accessMode: .read) let archivePath = volumeDir.appendingPathComponent(metadata.volumes[volCovP.v].archive)
let targetEntry = archive[metadata.volumes[volCovP.v].chapters[volCovP.c].images[volCovP.i].filename]! let archive = try! Archive(url: archivePath, accessMode: .read)
let filename = metadata.volumes[volCovP.v].chapters[volCovP.c].images[volCovP.i].filename!
let targetEntry = archive[filename]!
var extractedData = Data() var extractedData = Data()
_ = try archive.extract(targetEntry) { data in _ = try archive.extract(targetEntry) { data in
extractedData.append(data) extractedData.append(data)
@@ -205,7 +207,8 @@ class ViewController: UIViewController, UIGestureRecognizerDelegate {
cover: UIImage(data: extractedData)!, cover: UIImage(data: extractedData)!,
metadata: metadata, metadata: metadata,
path: dir path: dir
)) )
)
} }
} catch { } catch {
print("Failed to read directories") print("Failed to read directories")
@@ -289,6 +292,7 @@ class ViewController: UIViewController, UIGestureRecognizerDelegate {
var volumes: [Offset] = [] var volumes: [Offset] = []
var currentChapters: [Offset] = [] var currentChapters: [Offset] = []
var currentImages: [Offset] = [] var currentImages: [Offset] = []
var previousVolumeURL = ""
var titleValue: String = "" var titleValue: String = ""
@@ -304,6 +308,7 @@ class ViewController: UIViewController, UIGestureRecognizerDelegate {
includingPropertiesForKeys: [.isRegularFileKey], includingPropertiesForKeys: [.isRegularFileKey],
options: [.skipsHiddenFiles] options: [.skipsHiddenFiles]
).filter { $0.pathExtension == "cbz" } ).filter { $0.pathExtension == "cbz" }
.sorted { $0.lastPathComponent < $1.lastPathComponent }
if volumeURLs.isEmpty { if volumeURLs.isEmpty {
print("found no volumes in volume dir: \(volumeDir)") print("found no volumes in volume dir: \(volumeDir)")
@@ -372,7 +377,6 @@ class ViewController: UIViewController, UIGestureRecognizerDelegate {
return return
} }
let regex = pattern! let regex = pattern!
let titleRegex = titlePattern! let titleRegex = titlePattern!
@@ -435,7 +439,7 @@ class ViewController: UIViewController, UIGestureRecognizerDelegate {
currentChapters.append(chapterMetadata) currentChapters.append(chapterMetadata)
let volumeTitle = builder.create(string: "") let volumeTitle = builder.create(string: "")
let volumeURLOffset = builder.create(string: volumeURL) let volumeURLOffset = builder.create(string: previousVolumeURL)
let chaptersOffset = builder.createVector(ofOffsets: currentChapters) let chaptersOffset = builder.createVector(ofOffsets: currentChapters)
let volumeMetadata = VolumeMetadata.createVolumeMetadata( let volumeMetadata = VolumeMetadata.createVolumeMetadata(
&builder, &builder,
@@ -507,6 +511,7 @@ class ViewController: UIViewController, UIGestureRecognizerDelegate {
} }
currentVolume = volume currentVolume = volume
currentChapter = chapter currentChapter = chapter
previousVolumeURL = volumeURL
} else { } else {
print("no regex match on \(filename), returning") print("no regex match on \(filename), returning")
return return
@@ -1319,10 +1324,7 @@ class ViewController: UIViewController, UIGestureRecognizerDelegate {
} }
func setImages(path _: URL) { func setImages(path _: URL) {
let scaling: UIView.ContentMode! let scaling: UIView.ContentMode = mode == .scroll ? .scaleAspectFill : .scaleAspectFit
if mode == .scroll {
scaling = UIView.ContentMode.scaleAspectFill
} else { scaling = UIView.ContentMode.scaleAspectFit }
imageLoader.loadImage( imageLoader.loadImage(
archiveURL: currentPath.appendingPathComponent("volumes").appendingPathComponent(metadata.volumes[progress.v].archive), archiveURL: currentPath.appendingPathComponent("volumes").appendingPathComponent(metadata.volumes[progress.v].archive),
filename: getImagePath(progress: progress), filename: getImagePath(progress: progress),
@@ -1330,8 +1332,8 @@ class ViewController: UIViewController, UIGestureRecognizerDelegate {
screenSize: UIScreen.main.bounds.size screenSize: UIScreen.main.bounds.size
) { [weak self] image in ) { [weak self] image in
self?.imageView.image = image self?.imageView.image = image
self?.updateInfo()
} }
updateInfo()
var newProgress = progress var newProgress = progress
for _ in 0 ..< preloadCount { for _ in 0 ..< preloadCount {