1
0
mirror of https://github.com/XFox111/TabsAsideExtension.git synced 2026-07-02 19:52:47 +03:00

Compare commits

...

4 Commits

Author SHA1 Message Date
Michael Gordeev cb45f1a7b3 Minor 1.4 (#16)
- Added ability to disable tabs loading on restoring (#10)
- Extension optimization
- Added "Contributors" page link
- Updated README.md

Co-authored-by: Amine A. <15179425+AmineI@users.noreply.github.com>
Co-Authored-By: Michael Gordeev <michael@xfox111.net>
2020-06-27 12:56:54 +03:00
Michael Gordeev 2b83f3bd60 Patch 1.3.1
Fixed version number
Fixed browser closing
Hid elements of unimplemented features
Added code for issue #10 (help wanted)
2020-06-20 20:38:30 +03:00
Michael Gordeev 386b4f57d9 Minor 1.3 (#9)
* Empty tabs are now ignored (#8)

* Empty collections can't be saved now
2020-06-11 14:13:22 +03:00
Michael Gordeev 3a05ecb722 Patch 1.2.2 (#7)
"Save tabs" now doesn't affect pinned tabs (#6)
2020-04-25 11:25:43 +03:00
6 changed files with 108 additions and 44 deletions
+1
View File
@@ -11,6 +11,7 @@
[![Twitter Follow](https://img.shields.io/twitter/follow/xfox111?style=social)](https://twitter.com/xfox111)
[![GitHub followers](https://img.shields.io/github/followers/xfox111?label=Follow%20@xfox111&style=social)](https://github.com/xfox111)
[![Buy Me a Coffee](https://img.shields.io/badge/Buy%20Me%20a%20Coffee-%40xfox111-orange)](https://buymeacoffee.com/xfox111)
![Tabs aside](https://xfox111.net/images/TabsAside.png)
+6 -1
View File
@@ -31,11 +31,16 @@
<button title="Options">&#xE10C;</button>
<nav>
<p>
<input type="checkbox" id="loadOnRestore"/>
<label for="loadOnRestore">Load tabs on restore</label>
</p>
<div>
<button value="https://github.com/xfox111/ChromiumTabsAside">Visit GitHub page</button>
<button value="https://github.com/XFox111/ChromiumTabsAside/graphs/contributors">Project contributors</button>
<button value="https://chrome.google.com/webstore/detail/tabs-aside/mgmjbodjgijnebfgohlnjkegdpbdjgin">Leave feedback</button>
<button value="https://buymeacoffee.com/xfox111">Buy me a coffee!</button>
<button hidden>Backup saved tabs</button>
<!-- <button hidden>Backup saved tabs</button> -->
</div>
<p>
<small>v1.0</small><br />
+5
View File
@@ -6,8 +6,13 @@
<button title="Options">&#xE10C;</button>
<nav>
<p>
<input type="checkbox" id="loadOnRestore"/>
<label for="loadOnRestore">Load tabs on restore</label>
</p>
<div>
<button value="https://github.com/xfox111/ChromiumTabsAside">Visit GitHub page</button>
<button value="https://github.com/XFox111/ChromiumTabsAside/graphs/contributors">Project contributors</button>
<button value="https://chrome.google.com/webstore/detail/tabs-aside/mgmjbodjgijnebfgohlnjkegdpbdjgin">Leave feedback</button>
<button value="https://buymeacoffee.com/xfox111">Buy me a coffee!</button>
<!--<button hidden>Backup saved tabs</button>-->
+49 -3
View File
@@ -37,6 +37,28 @@ else
document.querySelector(".tabsAside .saveTabs").onclick = SetTabsAside;
document.querySelector("nav > p > small").textContent = chrome.runtime.getManifest()["version"];
var loadOnRestoreCheckbox = document.querySelector("nav > p > input[type=checkbox]");
chrome.storage.sync.get({ "loadOnRestore": false },
values => loadOnRestoreCheckbox.checked = values.loadOnRestore
);
chrome.storage.onChanged.addListener(function (changes, namespace) {
if (namespace == 'sync'){
for (key in changes) {
if (key === 'loadOnRestore') {
loadOnRestoreCheckbox.checked = changes[key].newValue
}
}
}
});
loadOnRestoreCheckbox.addEventListener("click", function ()
{
chrome.storage.sync.set(
{
"loadOnRestore": loadOnRestoreCheckbox.checked
});
});
document.querySelectorAll(".tabsAside.pane > header nav button").forEach(i =>
{
@@ -98,6 +120,29 @@ function InitializeStandalone()
document.querySelector(".tabsAside .saveTabs").onclick = SetTabsAside;
document.querySelector("nav > p > small").textContent = chrome.runtime.getManifest()["version"];
var loadOnRestoreCheckbox = document.querySelector("nav > p > input[type=checkbox]");
chrome.storage.sync.get({ "loadOnRestore": false },
values => loadOnRestoreCheckbox.checked = values.loadOnRestore
);
chrome.storage.onChanged.addListener(function (changes, namespace) {
if (namespace == 'sync'){
for (key in changes) {
if (key === 'loadOnRestore') {
loadOnRestoreCheckbox.checked = changes[key].newValue
}
}
}
});
loadOnRestoreCheckbox.addEventListener("click", function ()
{
chrome.storage.sync.set(
{
"loadOnRestore": loadOnRestoreCheckbox.checked
});
});
document.querySelectorAll(".tabsAside.pane > header nav button").forEach(i =>
{
i.onclick = function () { window.open(i.value, '_blank'); };
@@ -142,8 +187,8 @@ function AddCollection(collection)
"<button title='More...'>&#xE10C;</button>" +
"<nav>" +
"<button>Restore without removing</button>" +
"<button hidden>Add tabs to favorites</button>" +
"<button hidden>Share tabs</button>" +
// "<button hidden>Add tabs to favorites</button>" +
// "<button hidden>Share tabs</button>" +
"</nav>" +
"</div>" +
"<button title='Remove collection'>&#xE106;</button>" +
@@ -164,7 +209,8 @@ function AddCollection(collection)
list.querySelectorAll("div > div:last-child > div > span").forEach(i =>
{
i.onclick = function () {
i.onclick = function ()
{
chrome.runtime.sendMessage(
{
command: "openTab",
+44 -38
View File
@@ -1,8 +1,8 @@
chrome.browserAction.onClicked.addListener(function (tab)
{
if (tab.url.startsWith("http")
&& !tab.url.includes("chrome.google.com")
&& !tab.url.includes("microsoftedge.microsoft.com"))
&& !tab.url.includes("chrome.google.com")
&& !tab.url.includes("microsoftedge.microsoft.com"))
{
chrome.tabs.insertCSS(
{
@@ -37,25 +37,22 @@ chrome.browserAction.onClicked.addListener(function (tab)
chrome.tabs.create({
url: chrome.extension.getURL("TabsAside.html"),
active: true
});
},
chrome.tabs.onActivated.addListener(function TabsAsideCloser(activeInfo) {
chrome.tabs.query({ url: chrome.extension.getURL("TabsAside.html") }, function (result) {
if (result.length)
setTimeout(function () {
result.forEach(i => {
if (activeInfo.tabId != i.id)
chrome.tabs.remove(i.id);
});
}, 200);
else chrome.tabs.onActivated.removeListener(TabsAsideCloser);
});
}));
}
});
chrome.tabs.onActivated.addListener(function (activeInfo)
{
chrome.tabs.query({ url: chrome.extension.getURL("TabsAside.html") }, function (result)
{
if (result.length)
setTimeout(function ()
{
result.forEach(i =>
{
if (activeInfo.tabId != i.id)
chrome.tabs.remove(i.id);
});
}, 200);
});
});
function UpdateTheme()
{
@@ -150,28 +147,22 @@ chrome.runtime.onMessage.addListener(function (message, sender, sendResponse)
});
UpdateTheme();
chrome.windows.onCreated.addListener(UpdateTheme);
chrome.windows.onRemoved.addListener(UpdateTheme);
chrome.windows.onFocusChanged.addListener(UpdateTheme);
chrome.tabs.onUpdated.addListener(UpdateTheme);
chrome.tabs.onCreated.addListener(UpdateTheme);
chrome.tabs.onMoved.addListener(UpdateTheme);
chrome.tabs.onSelectionChanged.addListener(UpdateTheme);
chrome.tabs.onActiveChanged.addListener(UpdateTheme);
chrome.tabs.onActivated.addListener(UpdateTheme);
chrome.tabs.onHighlightChanged.addListener(UpdateTheme);
chrome.tabs.onHighlighted.addListener(UpdateTheme);
chrome.tabs.onDetached.addListener(UpdateTheme);
chrome.tabs.onAttached.addListener(UpdateTheme);
chrome.tabs.onRemoved.addListener(UpdateTheme);
chrome.tabs.onReplaced.addListener(UpdateTheme);
function SaveCollection()
{
chrome.tabs.query({ currentWindow: true }, function (tabs)
chrome.tabs.query({ currentWindow: true }, function (rawTabs)
{
tabs = tabs.filter(i => !i.url.startsWith("chrome-extension") && !i.url.endsWith("TabsAside.html"));
var tabs = rawTabs.filter(i => !(i.url.startsWith("chrome-extension") && i.url.endsWith("TabsAside.html")) && !i.pinned && !i.url.includes("//newtab"));
if (tabs.length < 1)
{
alert("No tabs available to save");
return;
}
var collection =
{
@@ -196,11 +187,13 @@ function SaveCollection()
collections = JSON.parse(localStorage.getItem("sets"));
chrome.tabs.create({});
chrome.tabs.remove(tabs.map(tab => tab.id));
});
var newTabId;
chrome.tabs.create({}, function(tab) { newTabId = tab.id; });
chrome.tabs.remove(rawTabs.filter(i => !i.url.startsWith("chrome-extension") && !i.url.endsWith("TabsAside.html") && !i.pinned && i.id != newTabId).map(tab => tab.id));
UpdateTheme();
UpdateTheme();
});
}
function DeleteCollection(collectionIndex)
@@ -219,7 +212,20 @@ function RestoreCollection(collectionIndex, removeCollection)
{
url: i,
active: false
} , function (createdTab)
{
chrome.storage.sync.get({ "loadOnRestore" : false }, values => {
if (!values.loadOnRestore)
chrome.tabs.onUpdated.addListener(function discarder(updatedTabId, changeInfo, updatedTab) {
if (updatedTabId === createdTab.id) {
chrome.tabs.onUpdated.removeListener(discarder);
if (!updatedTab.active) {
chrome.tabs.discard(updatedTabId);
}
}
});
});
});
});
if (!removeCollection)
@@ -298,7 +304,7 @@ function AppendThumbnail(tabId, cahngeInfo, tab)
},
function (dataUrl)
{
if(!dataUrl)
if (!dataUrl)
{
console.log("Failed to retrieve thumbnail");
return;
@@ -319,4 +325,4 @@ function AppendThumbnail(tabId, cahngeInfo, tab)
);
}
chrome.tabs.onUpdated.addListener(AppendThumbnail);
chrome.tabs.onUpdated.addListener(AppendThumbnail);
+3 -2
View File
@@ -1,6 +1,6 @@
{
"name": "Tabs Aside",
"version": "1.2.1",
"version": "1.4",
"manifest_version": 2,
"description": "Classic Microsoft Edge \"Tabs Aside\" feature for Chromium browsers",
"author": "Michael \"XFox\" Gordeev",
@@ -8,6 +8,7 @@
[
"tabs",
"unlimitedStorage",
"storage",
"<all_urls>"
],
@@ -24,6 +25,6 @@
"background":
{
"scripts": [ "js/background.js" ],
"persistent": true
"persistent": false
}
}