38 строки
1.2 KiB
JavaScript
38 строки
1.2 KiB
JavaScript
import { getApiSuggestions } from './sw-suggestions.js';
|
|
|
|
console.log('sw-omnibox.js');
|
|
|
|
// Initialize default API suggestions
|
|
chrome.runtime.onInstalled.addListener(({ reason }) => {
|
|
if (reason === 'install') {
|
|
chrome.storage.local.set({
|
|
apiSuggestions: ['tabs', 'storage', 'scripting']
|
|
});
|
|
}
|
|
});
|
|
|
|
const URL_CHROME_EXTENSIONS_DOC =
|
|
'https://developer.chrome.com/docs/extensions/reference/';
|
|
const NUMBER_OF_PREVIOUS_SEARCHES = 4;
|
|
|
|
// Displays the suggestions after user starts typing
|
|
chrome.omnibox.onInputChanged.addListener(async (input, suggest) => {
|
|
const { description, suggestions } = await getApiSuggestions(input);
|
|
await chrome.omnibox.setDefaultSuggestion({ description });
|
|
suggest(suggestions);
|
|
});
|
|
|
|
// Opens the reference page of the chosen API
|
|
chrome.omnibox.onInputEntered.addListener((input) => {
|
|
chrome.tabs.create({ url: URL_CHROME_EXTENSIONS_DOC + input });
|
|
// Saves the latest keyword
|
|
updateHistory(input);
|
|
});
|
|
|
|
async function updateHistory(input) {
|
|
const { apiSuggestions } = await chrome.storage.local.get('apiSuggestions');
|
|
apiSuggestions.unshift(input);
|
|
apiSuggestions.splice(NUMBER_OF_PREVIOUS_SEARCHES);
|
|
await chrome.storage.local.set({ apiSuggestions });
|
|
}
|