fix: persist SponsorBlock preference between launches
This commit is contained in:
@@ -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)]
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user