Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[PAL-818] allow direction of when a plugin is a dependency #623

Merged
merged 4 commits into from
Oct 30, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions LoopKit/Pluggable.swift
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,13 @@ public protocol Pluggable: AnyObject {
/// A plugin may need a reference to another plugin. This callback allows for such a reference.
/// It is called once during app initialization after plugins are initialized and again as new plugins are added and initialized.
func initializationComplete(for pluggables: [Pluggable])

/// A plugin may require another plugin. This callback informs this dependency.
/// Often this is called as apart of `initializationComplete(for pluggables: [Pluggable])`
func markAsDepedency(_ isDependency: Bool)
}

public extension Pluggable {
func initializationComplete(for pluggables: [Pluggable]) { } // optional
func markAsDepedency(_ isDependency: Bool) { } // optional
}
4 changes: 2 additions & 2 deletions LoopKitUI/ServiceUI.swift
Original file line number Diff line number Diff line change
Expand Up @@ -31,14 +31,14 @@ public protocol ServiceUI: Service {
/// - colorPalette: Color palette to use for any UI.
/// - pluginHost: Object that provides namd and version information about host to the service plugin.
/// - Returns: Either a conforming view controller to create and onboard the service or a newly created and onboarded service.
static func setupViewController(colorPalette: LoopUIColorPalette, pluginHost: PluginHost) -> SetupUIResult<ServiceViewController, ServiceUI>
static func setupViewController(colorPalette: LoopUIColorPalette, pluginHost: PluginHost, allowDebugFeatures: Bool) -> SetupUIResult<ServiceViewController, ServiceUI>

/// Configure settings for an existing service.
///
/// - Parameters:
/// - colorPalette: Color palette to use for any UI.
/// - Returns: A view controller to configure an existing service.
func settingsViewController(colorPalette: LoopUIColorPalette) -> ServiceViewController
func settingsViewController(colorPalette: LoopUIColorPalette, allowDebugFeatures: Bool) -> ServiceViewController
}

public extension ServiceUI {
Expand Down
4 changes: 2 additions & 2 deletions MockKitUI/MockService+UI.swift
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,11 @@ extension MockService: ServiceUI {
return UIImage(systemName: "icloud.and.arrow.up")
}

public static func setupViewController(colorPalette: LoopUIColorPalette, pluginHost: PluginHost) -> SetupUIResult<ServiceViewController, ServiceUI> {
public static func setupViewController(colorPalette: LoopUIColorPalette, pluginHost: PluginHost, allowDebugFeatures: Bool) -> SetupUIResult<ServiceViewController, ServiceUI> {
return .userInteractionRequired(ServiceNavigationController(rootViewController: MockServiceTableViewController(service: MockService(), for: .create)))
}

public func settingsViewController(colorPalette: LoopUIColorPalette) -> ServiceViewController {
public func settingsViewController(colorPalette: LoopUIColorPalette, allowDebugFeatures: Bool) -> ServiceViewController {
return ServiceNavigationController(rootViewController: MockServiceTableViewController(service: self, for: .update))
}

Expand Down