From b73cdc2e83b066cf37c59769550bbf8c320405ee Mon Sep 17 00:00:00 2001 From: Ucanbarlic Date: Sat, 31 Aug 2024 18:01:06 +0200 Subject: [PATCH 1/2] Show correct code snippet for products type of plugin --- .../controllers/use_this_package_panel_controller.js | 3 ++- .../API/API+PackageController+GetRoute+Model.swift | 11 +++++++++++ .../Views/PackageController/GetRoute.Model+ext.swift | 4 +++- 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/FrontEnd/scripts/controllers/use_this_package_panel_controller.js b/FrontEnd/scripts/controllers/use_this_package_panel_controller.js index b6acb98e2..4c878ae58 100644 --- a/FrontEnd/scripts/controllers/use_this_package_panel_controller.js +++ b/FrontEnd/scripts/controllers/use_this_package_panel_controller.js @@ -26,6 +26,7 @@ export class UseThisPackagePanelController extends Controller { const optionElement = selectElement.options[selectElement.selectedIndex] const packageName = optionElement.dataset.package const productName = optionElement.dataset.product - this.snippetTarget.value = `.product(name: "${productName}", package: "${packageName}")` + const prefix = type == "plugin" ? ".plugin" : ".product" + this.snippetTarget.value = `${prefix}(name: "${productName}", package: "${packageName}")` } } diff --git a/Sources/App/Controllers/API/API+PackageController+GetRoute+Model.swift b/Sources/App/Controllers/API/API+PackageController+GetRoute+Model.swift index 7d1f3db11..903194a2d 100644 --- a/Sources/App/Controllers/API/API+PackageController+GetRoute+Model.swift +++ b/Sources/App/Controllers/API/API+PackageController+GetRoute+Model.swift @@ -235,6 +235,17 @@ extension API.PackageController.GetRoute.Model { case executable case plugin + var stringValue: String { + switch self { + case .library: + return "library" + case .executable: + return "executable" + case .plugin: + return "plugin" + } + } + init?(_ productType: App.ProductType) { switch productType { case .executable: diff --git a/Sources/App/Views/PackageController/GetRoute.Model+ext.swift b/Sources/App/Views/PackageController/GetRoute.Model+ext.swift index 0d5603801..7c177b6c7 100644 --- a/Sources/App/Views/PackageController/GetRoute.Model+ext.swift +++ b/Sources/App/Views/PackageController/GetRoute.Model+ext.swift @@ -415,10 +415,12 @@ extension API.PackageController.GetRoute.Model { .data(named: "action", value: "input->use-this-package-panel#updateProductSnippet"), .attribute(named: "name", value: "products"), .id("products"), - .forEach(products, { product in + // Filter out products of type `executable` until we add support for them. + .forEach(products.filter({ $0.type != .executable }), { product in .option( .data(named: "package", value: package), .data(named: "product", value: product.name), + .data(named: "type", value: product.type.stringValue), .value(product.name), .label(product.name) ) From acfa65c2f5da0726c21508532dd95fa10a19d7c7 Mon Sep 17 00:00:00 2001 From: Ucanbarlic Date: Sun, 1 Sep 2024 18:05:49 +0200 Subject: [PATCH 2/2] Use rawValue instead of stringValue --- .../use_this_package_panel_controller.js | 1 + .../API/API+PackageController+GetRoute+Model.swift | 13 +------------ .../PackageController/GetRoute.Model+ext.swift | 2 +- 3 files changed, 3 insertions(+), 13 deletions(-) diff --git a/FrontEnd/scripts/controllers/use_this_package_panel_controller.js b/FrontEnd/scripts/controllers/use_this_package_panel_controller.js index 4c878ae58..6ade1bf3c 100644 --- a/FrontEnd/scripts/controllers/use_this_package_panel_controller.js +++ b/FrontEnd/scripts/controllers/use_this_package_panel_controller.js @@ -26,6 +26,7 @@ export class UseThisPackagePanelController extends Controller { const optionElement = selectElement.options[selectElement.selectedIndex] const packageName = optionElement.dataset.package const productName = optionElement.dataset.product + const type = optionElement.dataset.type const prefix = type == "plugin" ? ".plugin" : ".product" this.snippetTarget.value = `${prefix}(name: "${productName}", package: "${packageName}")` } diff --git a/Sources/App/Controllers/API/API+PackageController+GetRoute+Model.swift b/Sources/App/Controllers/API/API+PackageController+GetRoute+Model.swift index 903194a2d..211e5fb17 100644 --- a/Sources/App/Controllers/API/API+PackageController+GetRoute+Model.swift +++ b/Sources/App/Controllers/API/API+PackageController+GetRoute+Model.swift @@ -230,22 +230,11 @@ extension API.PackageController.GetRoute.Model { self.type = type } - enum ProductType: Codable, Equatable { + enum ProductType: String, Codable, Equatable { case library case executable case plugin - var stringValue: String { - switch self { - case .library: - return "library" - case .executable: - return "executable" - case .plugin: - return "plugin" - } - } - init?(_ productType: App.ProductType) { switch productType { case .executable: diff --git a/Sources/App/Views/PackageController/GetRoute.Model+ext.swift b/Sources/App/Views/PackageController/GetRoute.Model+ext.swift index 7c177b6c7..d4e77d1ef 100644 --- a/Sources/App/Views/PackageController/GetRoute.Model+ext.swift +++ b/Sources/App/Views/PackageController/GetRoute.Model+ext.swift @@ -420,7 +420,7 @@ extension API.PackageController.GetRoute.Model { .option( .data(named: "package", value: package), .data(named: "product", value: product.name), - .data(named: "type", value: product.type.stringValue), + .data(named: "type", value: product.type.rawValue), .value(product.name), .label(product.name) )