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