diff --git a/src/command-palette/bar.js b/src/command-palette/bar.js index 2c9d761..6832c99 100644 --- a/src/command-palette/bar.js +++ b/src/command-palette/bar.js @@ -74,6 +74,23 @@ const ALL_OVERVIEWS = { }, }; +const ALL_FEEDBACKS = { + feedbackNew: { + title: 'Report a bug or suggest improvements', + icon: '', + execute() { + gitdock.openGitLab('/mvanremmerden/gitdock/-/issues/new'); + }, + }, + feedbackIssues: { + title: 'Open issues for GitDock', + icon: '', + execute() { + gitdock.openGitLab('/mvanremmerden/gitdock/-/issues'); + }, + }, +}; + function matcher({ title }) { let lowerCaseTitle = title.toLowerCase(); const searchTerm = $search.value; @@ -111,6 +128,14 @@ function loadOverviews() { .sort(([, overviewA], [, overviewB]) => matcher(overviewB) - matcher(overviewA)); } +function loadFeedbacks() { + const feedbacks = Object.entries(ALL_FEEDBACKS); + + return [...feedbacks] + .filter(([, feedback]) => matcher(feedback)) + .sort(([, feedbackA], [, feedbackB]) => matcher(feedbackB) - matcher(feedbackA)); +} + function loadFavorites() { const favorites = ALL_FAVORITES.map((favorite) => [ `open-favorite::${favorite.id}`, @@ -177,6 +202,7 @@ function search() { const availableActions = loadActions(); const availableOverviews = loadOverviews(); + const availableFeedbacks = loadFeedbacks(); const availableFavorites = loadFavorites(); const availableBookmarks = loadBookmarks(); const availableRecents = loadRecents(); @@ -286,6 +312,23 @@ function search() { /* eslint-enable */ } + if (availableFeedbacks.length > 0) { + html.push('
GitDock
'); + + /* eslint-disable no-restricted-syntax */ + for (const [key, action] of availableFeedbacks) { + const icon = action.icon ? `${action.icon}` : ''; + html.push( + `
  • ${icon} +
    ${action.title}
    +
  • `, + ); + i += 1; + } + } + $results.innerHTML = html.join('\n'); changeHighlight(0); changeTheme(); @@ -330,6 +373,8 @@ function handleClick(target) { ALL_ACTIONS[key].execute(); } else if (key.startsWith('overview')) { ALL_OVERVIEWS[key].execute(); + } else if (key.startsWith('feedback')) { + ALL_FEEDBACKS[key].execute(); } setTimeout(() => {