From e0b6a877d70e8127142781e883b8287c97cf32d6 Mon Sep 17 00:00:00 2001
From: Mike Frysinger <vapier@gentoo.org>
Date: Mon, 3 Jun 2019 11:03:24 -0400
Subject: [PATCH] my customizations

---
 advanced.html |   4 +-
 advanced.js   |   6 +--
 background.js | 109 +++++---------------------------------------------
 manifest.json |   5 ++-
 options.js    |   2 +-
 popup.js      |  12 +++---
 6 files changed, 24 insertions(+), 114 deletions(-)

diff --git a/advanced.html b/advanced.html
index 57bf236..ecdb129 100644
--- a/advanced.html
+++ b/advanced.html
@@ -379,11 +379,11 @@
 			Restore selected <img src="icon_48.png" style="width: 26px;" />
 		</div>
 		<div id="restoreSelectedRadio">
-			<input type="radio" id="restoreSelectedRadioSingleWindow" name="radio-1-set" class="regular-radio" checked />
+			<input type="radio" id="restoreSelectedRadioSingleWindow" name="radio-1-set" class="regular-radio" />
 			<label for="restoreSelectedRadioSingleWindow" title="Restore all selected tabs into a single window"></label>
 			<span id="restoreSelectedRadioSingleWindowSpanLabel" class="radioSpanLabel" title="Restore all selected tabs into a single window"> Restore to a single window</span><br />
 
-			<input type="radio" id="restoreSelectedRadioMultipleWindows" name="radio-1-set" class="regular-radio" />
+			<input type="radio" id="restoreSelectedRadioMultipleWindows" name="radio-1-set" class="regular-radio" checked />
 			<label for="restoreSelectedRadioMultipleWindows" title="Restore selected tabs into their respective window"></label>
 			<span id="restoreSelectedRadioMultipleWindowsSpanLabel" class="radioSpanLabel" title="Restore selected tabs into their respective window"> Restore to multiple windows</span>
 		</div>
diff --git a/advanced.js b/advanced.js
index 9d48a66..588e056 100644
--- a/advanced.js
+++ b/advanced.js
@@ -672,7 +672,7 @@ function menu_backupNow() {
 
 	lastTimeBackupNowClicked = new Date().getTime();
 
-	chrome.extension.getBackgroundPage().backupNowManual(function(success, backupName, backupObj) {
+	chrome.runtime.getBackgroundPage((bg) => bg.backupNowManual(function(success, backupName, backupObj) {
 		if (success) {
 			//updateBackupsList();
 			insertBackupItem (backupName, backupObj, true /*insertAtBeginning*/, true /*doAnimation*/);
@@ -682,12 +682,12 @@ function menu_backupNow() {
 		} else {
 			alert('An error occured while creating the backup..');
 		}
-	});
+	}));
 
 }
 
 function menu_restoreNow() {
-	chrome.extension.getBackgroundPage().restoreNow('full_backup');
+	chrome.runtime.getBackgroundPage((bg) => bg.restoreNow('full_backup'));
 }
 
 //document.onload(function () {
diff --git a/background.js b/background.js
index a1debe5..6b6f89d 100644
--- a/background.js
+++ b/background.js
@@ -1,19 +1,11 @@
 
 // Set default values if needed
 if (!localStorage.prefsMaxBackupItems) {
-	localStorage.prefsMaxBackupItems = "30";
+	localStorage.prefsMaxBackupItems = "10";
 }
 
 if (!localStorage.prefsBackupTimer) {
-	localStorage.prefsBackupTimer = "5";
-}
-
-if (!localStorage.lastTimerIntervalId) {
-	localStorage.lastTimerIntervalId = 0;
-}
-
-if (!localStorage.lastTabsEdit) {
-	localStorage.lastTabsEdit = 0;
+	localStorage.prefsBackupTimer = "30";
 }
 
 if (!localStorage.lastBackupTime) {
@@ -26,99 +18,18 @@ if (!localStorage.lastBackupTime) {
 	backupNow(true, formattedDate, function(success, backupName, backupObj) {
 		// backup completed
 	});
-
-	localStorage.lastBackupTime = localStorage.lastTabsEdit;
-}
-
-
-
-// Works only for Event Pages
-/*
-chrome.runtime.onInstalled.addListener(function() {
-	console.log("Extension installed/updates");
-
-	if (localStorage.lastBackupTime != localStorage.lastTabsEdit) {
-		// Create a backup now
-		var d = new Date();
-		var formattedDate = date_format (d);
-
-		backupNow(true, formattedDate, function(success, backupName, backupObj) {
-			// backup completed
-		});
-
-		localStorage.lastBackupTime = localStorage.lastTabsEdit;
-	}
-});*/
-
-chrome.tabs.onRemoved.addListener(function(tabId, removeInfo) {
-	//console.log('tabs.onRemoved');
-
-	tabsEdited(true);
-});
-
-chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) {
-	//console.log('tabs.onUpdated');
-
-	tabsEdited(true);
-});
-
-chrome.tabs.onAttached.addListener(function(tabId, attachInfo) {
-	//console.log('tabs.onAttached');
-
-	tabsEdited(false);
-});
-
-chrome.tabs.onMoved.addListener(function(tabId, moveInfo) {
-	//console.log('tabs.onMoved');
-
-	tabsEdited(false);
-});
-
-chrome.tabs.onDetached.addListener(function(tabId, detachInfo) {
-	//console.log('tabs.onDetached');
-
-	tabsEdited(false);
-});
-
-chrome.tabs.onCreated.addListener(function(tab) {
-	//console.log('tabs.onCreated');
-
-	tabsEdited(true);
-});
-
-function tabsEdited (isImportant) {
-	var d = new Date();
-	var millis = d.getTime();
-
-	console.log('tabsEdited - lastTabsEdit: ' + localStorage.lastTabsEdit);
-	console.log('tabsEdited - new lastTabsEdit: ' + millis);
-
-	localStorage.lastTabsEdit = millis;
-
-
 }
 
 function initAlarm () {
-	console.log("initAlarm");
+	//console.log("initAlarm");
 
 	var BACKUP_ALARM_NAME = "backup_alarm";
 
 	// Clear any previous alarm
 	chrome.alarms.clearAll();
-	clearInterval(parseInt(localStorage.lastTimerIntervalId));
 
 	var timerMinutes = parseInt(localStorage.prefsBackupTimer);
-
-	// Apparantely once the app is on the Chrome Store it's not possible
-	// to create alarms that have period less than 5 minutes..
-	if (timerMinutes < 5) {
-		var timerMillis = timerMinutes * 60 * 1000;
-		localStorage.lastTimerIntervalId = setInterval (onAlarm, timerMillis);
-		console.log("Created interval alarm - id: " + localStorage.lastTimerIntervalId + " time: " + timerMinutes + " minutes");
-	} else {
-		console.log("Creating chrome.alarm 'backup_alarm' - time: " + timerMinutes + " minutes");
-		chrome.alarms.create(BACKUP_ALARM_NAME, {periodInMinutes: timerMinutes});
-	}
+	chrome.alarms.create(BACKUP_ALARM_NAME, {periodInMinutes: timerMinutes});
 }
 
 initAlarm();
@@ -127,12 +38,10 @@ function onAlarm (alarm) {
 	var d = new Date();
 	var formattedDate = date_format (d);
 
-	console.log("Alarm {" + alarm + "} fired up: " + formattedDate + " last tabs edit: " + localStorage.lastTabsEdit + " last backup time: " + localStorage.lastBackupTime);
+	console.log("Alarm {" + alarm + "} fired up: " + formattedDate);
 
-	// localStorage.lastBackupTime
 	// if last backup time != lastTabsEdit
 	//	perform automatic backup
-	if (localStorage.lastBackupTime != localStorage.lastTabsEdit) {
 		backupNow(true, formattedDate, function(success, backupName, backupObj) {
 			// automatic backup completed
 			var popupViews = chrome.extension.getViews({type: "popup"});
@@ -148,9 +57,6 @@ function onAlarm (alarm) {
 				}
 			}
 		});
-
-		localStorage.lastBackupTime = localStorage.lastTabsEdit;
-	}
 }
 
 chrome.alarms.onAlarm.addListener(onAlarm);
@@ -282,6 +188,9 @@ function backupNow(isAutomatic, backupName, callbackDone) {
 			fullBackup.windows.push(bkpWindow);
 		}
 
+		if (totNumTabs == 0)
+			return;
+
 		fullBackup.totNumTabs = totNumTabs;
 
 		var storageSetValues = {};
@@ -464,4 +373,4 @@ function restoreNow(backupName) {
 
 		}
 	});
-}
\ No newline at end of file
+}
diff --git a/manifest.json b/manifest.json
index cd65f1d..06162e6 100644
--- a/manifest.json
+++ b/manifest.json
@@ -1,12 +1,13 @@
 {
-  "name": "Tabs Backup & Restore",
-  "version": "0.2.1",
+  "name": "vapier tabs backup",
+  "version": "0.2.1.1",
   "manifest_version": 2,
   "description": "With 'Tabs Backup & Restore' you will never lose your work again! Backup an entire Chrome session (windows and tabs).",
   "icons": { "16": "icon_16.png",
            "48": "icon_48.png",
           "128": "icon_128.png" },
   "background": {
+	"persistent": false,
 	"scripts": ["background.js"]
   },
   "options_page": "options.html",
diff --git a/options.js b/options.js
index e443a8f..26d6d1c 100644
--- a/options.js
+++ b/options.js
@@ -33,7 +33,7 @@ function saveOptions () {
 	localStorage.prefsMaxBackupItems = backupMaxItems;
 
 	// Re-initialize the backup alarm
-	chrome.extension.getBackgroundPage().initAlarm();
+	chrome.runtime.getBackgroundPage((bg) => bg.initAlarm());
 
 	// Update status to let user know options were saved.
 	var status = document.getElementById("statusDiv");
diff --git a/popup.js b/popup.js
index a8f1a04..7c5f2f5 100644
--- a/popup.js
+++ b/popup.js
@@ -140,7 +140,7 @@ function insertBackupItem (backupName, backupObj, insertAtBeginning, doAnimation
 		return function(event) {
 			bootbox.confirm("Open Windows & Tabs of backup '" + backupName + "'?", function(confirmed) {
 				if (confirmed) {
-					chrome.extension.getBackgroundPage().restoreNow(backupName);
+					chrome.runtime.getBackgroundPage((bg) => bg.restoreNow(backupName));
 				}
 			});
 
@@ -157,8 +157,8 @@ function insertBackupItem (backupName, backupObj, insertAtBeginning, doAnimation
 
 			bootbox.confirm("Delete backup '" + backupName + "'?", function(confirmed) {
 				if (confirmed) {
-					chrome.extension.getBackgroundPage().deleteBackup(backupName, function() {
-						updateStorageInfo();
+					chrome.runtime.getBackgroundPage((bg) => {
+						bg.deleteBackup(backupName, () => updateStorageInfo());
 					});
 
 					//if (elem.parentNode) {
@@ -321,7 +321,7 @@ function menu_backupNow() {
 
 	lastTimeBackupNowClicked = new Date().getTime();
 
-	chrome.extension.getBackgroundPage().backupNowManual(function(success, backupName, backupObj) {
+	chrome.runtime.getBackgroundPage((bg) => bg.backupNowManual(function(success, backupName, backupObj) {
 		if (success) {
 			//updateBackupsList();
 			insertBackupItem (backupName, backupObj, true /*insertAtBeginning*/, true /*doAnimation*/);
@@ -331,12 +331,12 @@ function menu_backupNow() {
 		} else {
 			alert('An error occured while creating the backup..');
 		}
-	});
+	}));
 
 }
 
 function menu_restoreNow() {
-	chrome.extension.getBackgroundPage().restoreNow('full_backup');
+	chrome.runtime.getBackgroundPage((bg) => bg.restoreNow('full_backup'));
 }
 
 //document.onload(function () {
-- 
2.39.5