fix: persist SponsorBlock preference between launches

This commit is contained in:
2026-10-25 03:41:38 +01:00
parent b04ed7fdc8
commit 8c2a18df48
4 changed files with 37 additions and 4 deletions
+27
View File
@@ -30,6 +30,8 @@ struct ResolvedPlaybackCheck {
}
_ = NSApplication.shared
NSApp.setActivationPolicy(.prohibited)
sponsorPreferenceCheck()
if CommandLine.arguments[1] == "--sponsor-preference" { return }
let input = CommandLine.arguments[1]
let file = URL(fileURLWithPath: input)
let preference = CommandLine.arguments.first(where: { $0.hasPrefix("--provider=") }).map { String($0.dropFirst(11)) } ?? ""
@@ -128,6 +130,31 @@ struct ResolvedPlaybackCheck {
}
}
static func sponsorPreferenceCheck() {
let suite = "terebi.sponsor-preference." + UUID().uuidString
let defaults = UserDefaults(suiteName: suite)!
defer { defaults.removePersistentDomain(forName: suite) }
func launch(_ configured: Bool = false) -> PlayerModel {
PlayerModel(defaults: UserDefaults(suiteName: suite)!, configuration: .init(sponsorBlock: configured))
}
let first = launch()
require(!first.sponsorBlockEnabled, "unconfigured SponsorBlock defaults to disabled")
first.setSponsorBlockEnabled(true)
first.shutdown()
let second = launch()
require(second.sponsorBlockEnabled, "enabled preference survives a fresh model/defaults instance")
second.setSponsorBlockEnabled(false)
second.shutdown()
let third = launch(true)
require(!third.sponsorBlockEnabled, "saved disabled preference survives restart and overrides config")
third.shutdown()
defaults.removePersistentDomain(forName: suite)
let configured = launch(true)
require(configured.sponsorBlockEnabled, "config supplies the initial choice without a saved preference")
configured.shutdown()
print("PASS: SponsorBlock preference persists enable/disable across launches, with config fallback")
}
static var fixtureSponsors: [SponsorSegment] {
[.init(start: 0.5, end: 1.5, videoDuration: 0)]
}