mirror of
https://github.com/keymanapp/keyman.git
synced 2026-09-19 06:07:40 +00:00
Some checks are pending
Keyman Build Summary / Summarize build status checks (push) Waiting to run
added booleans to indicate input method exists and matches the current version made installationState optional made accessibilityPermissionGranted optional added comments
58 lines
1.8 KiB
Swift
58 lines
1.8 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 verifyInputMethod = "verify" // verify the new input method was installed
|
|
case migrateData = "migrateData" // 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
|
|
}
|
|
}
|