mirror of
https://github.com/keymanapp/keyman.git
synced 2026-09-26 17:47:40 +00:00
Some checks failed
Keyman Build Summary / Summarize build status checks (push) Has been cancelled
for new installations, check if the input method is enabled and whether it has Accessibility permission before adding those items to the task list as they may be in place from a previous installation
57 lines
1.7 KiB
Swift
57 lines
1.7 KiB
Swift
/*
|
|
* Keyman is copyright (C) SIL Global. MIT License.
|
|
*
|
|
* Created by Shawn Schantz on 2026-06-01
|
|
*
|
|
* Class for tracking the state of a single installation task.
|
|
*/
|
|
|
|
import Foundation
|
|
import KeymanSettings
|
|
|
|
// String raw value for each task type is used as key for Dictionary
|
|
// when storing the task state in the UserDefaults
|
|
public enum InstallationTaskType: String {
|
|
case prepareNewInstall = "prepareNewInstall" // only called for new install
|
|
case enableInputMethod = "enableInputMethod" // triggers register and enable
|
|
case requestAccess = "requestAccess" // causes prompt to user to grant Accessibility
|
|
case restartMac = "restartMac" // prompts user to restart machine
|
|
}
|
|
|
|
public struct InstallationTask: Hashable, Equatable {
|
|
public let taskType: InstallationTaskType
|
|
public let isComplete: Bool
|
|
|
|
/**
|
|
* Hashable conformance based on taskType
|
|
*/
|
|
public func hash(into hasher: inout Hasher) {
|
|
hasher.combine(taskType)
|
|
}
|
|
|
|
/**
|
|
* Hashable conformance based on taskType
|
|
*/
|
|
public static func == (lhs: InstallationTask, rhs: InstallationTask) -> Bool {
|
|
return lhs.taskType == rhs.taskType
|
|
}
|
|
|
|
/**
|
|
* Create new InstallationTask: `completed` set to `false`
|
|
*/
|
|
static func createNewInstallationTask(type: InstallationTaskType) -> InstallationTask {
|
|
return InstallationTask(task: type, completed: false)
|
|
}
|
|
|
|
/**
|
|
* Create InstallationTask with `completed` set to `true`
|
|
*/
|
|
static func createCompletedInstallationTask(type: InstallationTaskType) -> InstallationTask {
|
|
return InstallationTask(task: type, completed: true)
|
|
}
|
|
|
|
init(task: InstallationTaskType, completed: Bool) {
|
|
self.taskType = task
|
|
self.isComplete = completed
|
|
}
|
|
}
|