diff --git a/Sources/hyper-focus/action_handler.swift b/Sources/hyper-focus/action_handler.swift index 3a26058..5a5326c 100644 --- a/Sources/hyper-focus/action_handler.swift +++ b/Sources/hyper-focus/action_handler.swift @@ -208,8 +208,7 @@ enum ActionHandler { } static func blockTab(_ activeTab: BrowserTab?) { - // TODO: allow redirect to be configured - let redirectUrl: String? = "about:blank" + let redirectUrl = scheduleManager!.configuration.blocked_redirect_url ?? "about:blank" // TODO: I don't know how to more elegantly unwrap the enum here... switch activeTab { diff --git a/Sources/hyper-focus/hyper_focus.swift b/Sources/hyper-focus/hyper_focus.swift index ea247f4..4711af3 100644 --- a/Sources/hyper-focus/hyper_focus.swift +++ b/Sources/hyper-focus/hyper_focus.swift @@ -39,9 +39,11 @@ struct Configuration: Codable { var initial_wake: String? var wake: String? + var blocked_redirect_url: String? var schedule: [ScheduleItem] } +var scheduleManager: ScheduleManager? var systemObserver: SystemObserver? var sleepWatcher: SleepWatcher? var apiServer: ApiServer? @@ -67,10 +69,11 @@ public enum focus_app { return } - let scheduleManager = ScheduleManager() - systemObserver = SystemObserver(scheduleManager: scheduleManager) - sleepWatcher = SleepWatcher(scheduleManager: scheduleManager) - apiServer = ApiServer(scheduleManager: scheduleManager) + // NOTE this is hte main entrypoint of the application + scheduleManager = ScheduleManager() + systemObserver = SystemObserver(scheduleManager: scheduleManager!) + sleepWatcher = SleepWatcher(scheduleManager: scheduleManager!) + apiServer = ApiServer(scheduleManager: scheduleManager!) } } diff --git a/Sources/hyper-focus/schedule_manager.swift b/Sources/hyper-focus/schedule_manager.swift index 470e770..5876dfe 100644 --- a/Sources/hyper-focus/schedule_manager.swift +++ b/Sources/hyper-focus/schedule_manager.swift @@ -11,7 +11,7 @@ class ScheduleManager { var overrideSchedule: Configuration.ScheduleItem? var plannedSchedule: Configuration.ScheduleItem? - let BLANK_SCHEDULE = Configuration.ScheduleItem() + let BLANK_PAUSE_SCHEDULE = Configuration.ScheduleItem() init(_ config: Configuration? = nil) { configuration = config ?? ConfigurationLoader.loadConfiguration() @@ -128,9 +128,10 @@ class ScheduleManager { } func getSchedule() -> Configuration.ScheduleItem? { - // TODO: weird to have this check vs in the check poller, but we need a conditional to return BLANK_SCHEDULE + // TODO: weird to have this check vs in the check poller, but we need a conditional to return BLANK_PAUSE_SCHEDULE if endPause != nil, Date() < endPause! { - return BLANK_SCHEDULE + // if we are in a pause, return a blank schedule + return BLANK_PAUSE_SCHEDULE } else { endPause = nil } diff --git a/schema.json b/schema.json index fcae74c..6f1ce59 100644 --- a/schema.json +++ b/schema.json @@ -10,6 +10,9 @@ "wake": { "type": "string" }, + "blocked_redirect_url": { + "type": "string" + }, "schedule": { "type": "array", "items": {