Add share link and URL settings
This commit is contained in:
		
							parent
							
								
									77c8669407
								
							
						
					
					
						commit
						cc32abf47b
					
				
							
								
								
									
										24
									
								
								background.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								background.js
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,24 @@
 | 
			
		|||
/**
 | 
			
		||||
 * Share Current Tab
 | 
			
		||||
 * @return {void}       -
 | 
			
		||||
 */
 | 
			
		||||
function shareCurrentTab() {
 | 
			
		||||
  browser.tabs.query({
 | 
			
		||||
    active: true,
 | 
			
		||||
    currentWindow: true,
 | 
			
		||||
  }).then((tabs) => {
 | 
			
		||||
    const url = tabs[0].url;
 | 
			
		||||
    const title = tabs[0].title || url;
 | 
			
		||||
    browser.storage.local.get('url').then((storage) => {
 | 
			
		||||
      const shareUrl = `${storage.url}?post=${encodeURIComponent(url)}&title=${encodeURIComponent(title)}&source=bookmarklet`;
 | 
			
		||||
 | 
			
		||||
      browser.windows.create({
 | 
			
		||||
        url: shareUrl,
 | 
			
		||||
        type: 'popup',
 | 
			
		||||
        allowScriptsToClose: true,
 | 
			
		||||
      });
 | 
			
		||||
    });
 | 
			
		||||
  });
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
browser.browserAction.onClicked.addListener(shareCurrentTab);
 | 
			
		||||
							
								
								
									
										18
									
								
								options/options.css
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								options/options.css
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,18 @@
 | 
			
		|||
 | 
			
		||||
body {
 | 
			
		||||
  width: 25em;
 | 
			
		||||
  font-family: "Open Sans Light", sans-serif;
 | 
			
		||||
  font-size: 0.9em;
 | 
			
		||||
  font-weight: 300;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
input#url {
 | 
			
		||||
  margin: 0.5em;
 | 
			
		||||
  width: 50em;
 | 
			
		||||
  height: 2.5em;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
input {
 | 
			
		||||
  width: 20em;
 | 
			
		||||
  height: 2.5em;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										17
									
								
								options/options.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								options/options.html
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,17 @@
 | 
			
		|||
<!DOCTYPE html>
 | 
			
		||||
 | 
			
		||||
<html>
 | 
			
		||||
  <head>
 | 
			
		||||
    <meta charset="utf-8">
 | 
			
		||||
    <link rel="stylesheet" href="options.css"/>
 | 
			
		||||
  </head>
 | 
			
		||||
 | 
			
		||||
  <body>
 | 
			
		||||
 | 
			
		||||
    <div>URL: <input id="url" type="text"/></div>
 | 
			
		||||
    <input type="button" value="Save preferences" id="save-button"/>
 | 
			
		||||
 | 
			
		||||
    <script src="options.js"></script>
 | 
			
		||||
  </body>
 | 
			
		||||
 | 
			
		||||
</html>
 | 
			
		||||
							
								
								
									
										38
									
								
								options/options.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								options/options.js
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,38 @@
 | 
			
		|||
/*
 | 
			
		||||
Store options UI using browser.storage.local.
 | 
			
		||||
*/
 | 
			
		||||
function storeSettings() {
 | 
			
		||||
  const url = document.querySelector("#url");
 | 
			
		||||
  // console.log('storeSettings url');
 | 
			
		||||
  // console.log(url);
 | 
			
		||||
  browser.storage.local.set({
 | 
			
		||||
    url: url.value,
 | 
			
		||||
  });
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
Update the options UI with the settings values retrieved from storage,
 | 
			
		||||
or the default settings if the stored settings are empty.
 | 
			
		||||
*/
 | 
			
		||||
function updateUI(restoredSettings) {
 | 
			
		||||
  const url = document.querySelector("#url");
 | 
			
		||||
  // console.log('restoredSettings url');
 | 
			
		||||
  // console.log(url);
 | 
			
		||||
  url.value = restoredSettings.url || "";
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function onError(e) {
 | 
			
		||||
  console.error(e);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
On opening the options page, fetch stored settings and update the UI with them.
 | 
			
		||||
*/
 | 
			
		||||
const gettingStoredSettings = browser.storage.local.get();
 | 
			
		||||
gettingStoredSettings.then(updateUI, onError);
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
On clicking the save button, save the currently selected settings.
 | 
			
		||||
*/
 | 
			
		||||
const saveButton = document.querySelector("#save-button");
 | 
			
		||||
saveButton.addEventListener("click", storeSettings);
 | 
			
		||||
							
								
								
									
										26
									
								
								storage.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								storage.js
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,26 @@
 | 
			
		|||
/*
 | 
			
		||||
Default settings. Initialize storage to these values.
 | 
			
		||||
*/
 | 
			
		||||
var storage = {
 | 
			
		||||
  url: '',
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
Generic error logger.
 | 
			
		||||
*/
 | 
			
		||||
function onError(e) {
 | 
			
		||||
  console.error(e);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
On startup, check whether we have stored settings.
 | 
			
		||||
If we don't, then store the default settings.
 | 
			
		||||
*/
 | 
			
		||||
function checkStoredSettings(storedSettings) {
 | 
			
		||||
  if (!storedSettings.storage) {
 | 
			
		||||
    browser.storage.local.set({storage});
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
const gettingStoredSettings = browser.storage.local.get();
 | 
			
		||||
gettingStoredSettings.then(checkStoredSettings, onError);
 | 
			
		||||
		Loading…
	
		Reference in a new issue