Atoll/DynamicIsland/managers/DynamicIslandExtensionManager.swift
Hariharan Mudaliar 13a2ff0e20 Working
2025-07-13 22:16:02 +05:30

59 lines
1.7 KiB
Swift

//
// DynamicIslandExtensionManager.swift
// DynamicIsland
//
// Created by Harsh Vardhan Goswami on 04/08/24.
// DynamicIslandExtensionManager.swift
// DynamicIsland
//
// Created by Harsh Vardhan Goswami on 07/09/24.
//
import Foundation
import SwiftUI
var clipboardExtension: String = "dynamicisland.TheDynamicClipboard"
var hudExtension: String = "dynamicisland.TheDynamicHUDs"
var downloadManagerExtension: String = "dynamicisland.TheDynamicDownloadManager"
struct Extension: Identifiable, Hashable {
var id = UUID()
var name: String
var bundleIdentifier: String
var status: StatusModel = .enabled
}
enum StatusModel {
case disabled
case enabled
}
class DynamicIslandExtensionManager: ObservableObject {
@Published var installedExtensions: [Extension] = [] {
didSet {
print("Extensions installed: \(installedExtensions)")
}
}
var extensions = [
clipboardExtension,
hudExtension
]
init() {
checkIfExtensionsAreInstalled()
DistributedNotificationCenter.default().addObserver(self, selector: #selector(checkIfExtensionsAreInstalled), name: NSNotification.Name("NSWorkspaceDidLaunchApplicationNotification"), object: nil)
}
@objc func checkIfExtensionsAreInstalled() {
installedExtensions = []
for extensionName in extensions {
if NSWorkspace.shared.urlForApplication(withBundleIdentifier: extensionName) != nil {
let ext = Extension(name: extensionName.components(separatedBy: ".").last ?? extensionName, bundleIdentifier: extensionName)
installedExtensions.append(ext)
}
}
}
}