Expose search provider contributions
This commit is contained in:
+23
-10
@@ -241,6 +241,13 @@ type FlatCommand struct {
|
||||
Handler string `json:"handler,omitempty"`
|
||||
}
|
||||
|
||||
type FlatSearchProvider struct {
|
||||
PluginID string `json:"pluginId"`
|
||||
ID string `json:"id"`
|
||||
Label string `json:"label"`
|
||||
Handler string `json:"handler"`
|
||||
}
|
||||
|
||||
type FlatStatusBarItem struct {
|
||||
PluginID string `json:"pluginId"`
|
||||
ID string `json:"id"`
|
||||
@@ -276,13 +283,14 @@ type FlatWorkspaceItem struct {
|
||||
|
||||
// ContributionSummary aggregates all contribution types for the frontend.
|
||||
type ContributionSummary struct {
|
||||
Views []FlatView `json:"views"`
|
||||
Commands []FlatCommand `json:"commands"`
|
||||
SettingsPanels []FlatSettingsPanel `json:"settingsPanels"`
|
||||
SidebarItems []FlatSidebarItem `json:"sidebarItems"`
|
||||
StatusBarItems []FlatStatusBarItem `json:"statusBarItems"`
|
||||
OpenProviders []FlatOpenProvider `json:"openProviders"`
|
||||
WorkspaceItems []FlatWorkspaceItem `json:"workspaceItems"`
|
||||
Views []FlatView `json:"views"`
|
||||
Commands []FlatCommand `json:"commands"`
|
||||
SearchProviders []FlatSearchProvider `json:"searchProviders"`
|
||||
SettingsPanels []FlatSettingsPanel `json:"settingsPanels"`
|
||||
SidebarItems []FlatSidebarItem `json:"sidebarItems"`
|
||||
StatusBarItems []FlatStatusBarItem `json:"statusBarItems"`
|
||||
OpenProviders []FlatOpenProvider `json:"openProviders"`
|
||||
WorkspaceItems []FlatWorkspaceItem `json:"workspaceItems"`
|
||||
}
|
||||
|
||||
// buildContributionSummary creates a ContributionSummary from the registry.
|
||||
@@ -292,6 +300,7 @@ func buildContributionSummary(r *contribution.Registry) ContributionSummary {
|
||||
}
|
||||
regViews := r.Views()
|
||||
regCmds := r.Commands()
|
||||
regSearchProviders := r.SearchProviders()
|
||||
regPanels := r.SettingsPanels()
|
||||
regSidebar := r.SidebarItems()
|
||||
regStatusBar := r.StatusBarItems()
|
||||
@@ -306,6 +315,10 @@ func buildContributionSummary(r *contribution.Registry) ContributionSummary {
|
||||
for i, v := range regCmds {
|
||||
cmds[i] = FlatCommand{PluginID: v.PluginID, ID: v.Item.ID, Title: v.Item.Title, Icon: v.Item.Icon, Handler: v.Item.Handler}
|
||||
}
|
||||
searchProviders := make([]FlatSearchProvider, len(regSearchProviders))
|
||||
for i, v := range regSearchProviders {
|
||||
searchProviders[i] = FlatSearchProvider{PluginID: v.PluginID, ID: v.Item.ID, Label: v.Item.Label, Handler: v.Item.Handler}
|
||||
}
|
||||
panels := make([]FlatSettingsPanel, len(regPanels))
|
||||
for i, v := range regPanels {
|
||||
panels[i] = FlatSettingsPanel{PluginID: v.PluginID, ID: v.Item.ID, Title: v.Item.Title, Icon: v.Item.Icon, Component: v.Item.Component}
|
||||
@@ -337,7 +350,7 @@ func buildContributionSummary(r *contribution.Registry) ContributionSummary {
|
||||
for i, v := range regWorkspaceItems {
|
||||
workspaceItems[i] = FlatWorkspaceItem{PluginID: v.PluginID, ID: v.Item.ID, Title: v.Item.Title, Icon: v.Item.Icon, Component: v.Item.Component}
|
||||
}
|
||||
return ContributionSummary{Views: views, Commands: cmds, SettingsPanels: panels, SidebarItems: sidebar, StatusBarItems: statusBarItems, OpenProviders: openProviders, WorkspaceItems: workspaceItems}
|
||||
return ContributionSummary{Views: views, Commands: cmds, SearchProviders: searchProviders, SettingsPanels: panels, SidebarItems: sidebar, StatusBarItems: statusBarItems, OpenProviders: openProviders, WorkspaceItems: workspaceItems}
|
||||
}
|
||||
|
||||
// GetContributions returns all registered contributions flattened for the frontend.
|
||||
@@ -350,8 +363,8 @@ func (a *App) GetContributions() ContributionSummary {
|
||||
}
|
||||
summary := buildContributionSummary(a.contribRegistry)
|
||||
if a.debug {
|
||||
debug.Logf("[api] GetContributions: returning views=%d commands=%d sidebar=%d statusBar=%d settings=%d openProviders=%d",
|
||||
len(summary.Views), len(summary.Commands), len(summary.SidebarItems), len(summary.StatusBarItems), len(summary.SettingsPanels), len(summary.OpenProviders))
|
||||
debug.Logf("[api] GetContributions: returning views=%d commands=%d searchProviders=%d sidebar=%d statusBar=%d settings=%d openProviders=%d",
|
||||
len(summary.Views), len(summary.Commands), len(summary.SearchProviders), len(summary.SidebarItems), len(summary.StatusBarItems), len(summary.SettingsPanels), len(summary.OpenProviders))
|
||||
}
|
||||
return summary
|
||||
}
|
||||
|
||||
@@ -1026,6 +1026,9 @@ func newBridgeTestApp(t *testing.T) *App {
|
||||
StatusBarItems: []plugin.ContributionStatusBarItem{
|
||||
{ID: "bridge.status", Label: "Bridge Ready", Position: "right", Handler: "openBridgeStatus"},
|
||||
},
|
||||
SearchProviders: []plugin.ContributionSearchProvider{
|
||||
{ID: "bridge.search", Label: "Bridge Search", Handler: "searchVault"},
|
||||
},
|
||||
OpenProviders: []plugin.ContributionOpenProvider{
|
||||
{
|
||||
ID: "bridge.markdown",
|
||||
@@ -1113,6 +1116,19 @@ func TestContributionSummaryIncludesStatusBarItems(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestContributionSummaryIncludesSearchProviders(t *testing.T) {
|
||||
app := newBridgeTestApp(t)
|
||||
|
||||
summary := app.GetContributions()
|
||||
if len(summary.SearchProviders) != 1 {
|
||||
t.Fatalf("SearchProviders count = %d, want 1", len(summary.SearchProviders))
|
||||
}
|
||||
provider := summary.SearchProviders[0]
|
||||
if provider.PluginID != "bridge.plugin" || provider.ID != "bridge.search" || provider.Label != "Bridge Search" || provider.Handler != "searchVault" {
|
||||
t.Fatalf("search provider = %+v", provider)
|
||||
}
|
||||
}
|
||||
|
||||
func TestWorkbenchOpenAndEditResourceRouteToProvider(t *testing.T) {
|
||||
app := newBridgeTestApp(t)
|
||||
app.contribRegistry.Register("disabled.plugin", &plugin.Contributions{
|
||||
|
||||
Reference in New Issue
Block a user