mirror of
https://github.com/keymanapp/keyman.git
synced 2026-09-26 17:47:40 +00:00
this is checked on init to complete an installation also added flag for tracking whether the complete message has been displayed to the user
59 lines
1.9 KiB
Swift
59 lines
1.9 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 confirmAccess = "confirmAccess" // confirms that Accessibility was granted
|
|
case requestRestart = "requestRestart" // prompts user to restart machine
|
|
case confirmRestart = "confirmRestart" // confirms that the machine was restarted
|
|
}
|
|
|
|
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
|
|
}
|
|
}
|