Merge branch 'master' into 'master'
Save to storage only on changes See merge request KevinRoebert/ClearUrls!47
This commit is contained in:
		
						commit
						7e78bed8cb
					
				| 
						 | 
					@ -308,6 +308,7 @@ function start()
 | 
				
			||||||
                            else {
 | 
					                            else {
 | 
				
			||||||
                                toObject(storage.ClearURLsData);
 | 
					                                toObject(storage.ClearURLsData);
 | 
				
			||||||
                                storeHashStatus(1);
 | 
					                                storeHashStatus(1);
 | 
				
			||||||
 | 
					                                saveOnDisk(['hashStatus']);
 | 
				
			||||||
                            }
 | 
					                            }
 | 
				
			||||||
                        }
 | 
					                        }
 | 
				
			||||||
                        else {
 | 
					                        else {
 | 
				
			||||||
| 
						 | 
					@ -345,6 +346,7 @@ function start()
 | 
				
			||||||
                            }
 | 
					                            }
 | 
				
			||||||
                            storage.ClearURLsData = JSON.parse(storage.ClearURLsData);
 | 
					                            storage.ClearURLsData = JSON.parse(storage.ClearURLsData);
 | 
				
			||||||
                            toObject(storage.ClearURLsData);
 | 
					                            toObject(storage.ClearURLsData);
 | 
				
			||||||
 | 
					                            saveOnDisk(['ClearURLsData', 'dataHash', 'hashStatus']);
 | 
				
			||||||
                        }
 | 
					                        }
 | 
				
			||||||
                    });
 | 
					                    });
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
| 
						 | 
					@ -777,5 +779,6 @@ function start()
 | 
				
			||||||
                    "timestamp": Date.now()
 | 
					                    "timestamp": Date.now()
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            );
 | 
					            );
 | 
				
			||||||
 | 
					            deferSaveOnDisk('log');
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -47,13 +47,51 @@ function saveOnExit()
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
* Save the value under the key on the disk.
 | 
					* Save multiple keys on the disk.
 | 
				
			||||||
* @param  {String} key
 | 
					* @param  {String[]} keys
 | 
				
			||||||
* @param  {Object} value
 | 
					 | 
				
			||||||
*/
 | 
					*/
 | 
				
			||||||
function saveOnDisk(key, value)
 | 
					function saveOnDisk(keys)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    browser.storage.local.set({key: value});
 | 
					    var json = {};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    keys.forEach(function(key) {
 | 
				
			||||||
 | 
					        var value = storage[key];
 | 
				
			||||||
 | 
					        switch (key) {
 | 
				
			||||||
 | 
					            case "ClearURLsData":
 | 
				
			||||||
 | 
					            case "log":
 | 
				
			||||||
 | 
					            json[key] = JSON.stringify(value);
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
 | 
					            case "types":
 | 
				
			||||||
 | 
					            json[key] = value.toString();
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
 | 
					            default:
 | 
				
			||||||
 | 
					            json[key] = value;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					    console.log(translate('core_save_on_disk'));
 | 
				
			||||||
 | 
					    browser.storage.local.set(json);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var hasPendingSaves = false;
 | 
				
			||||||
 | 
					var pendingSaves = new Set();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					* Schedule to save a key to disk in 30 seconds.
 | 
				
			||||||
 | 
					* @param  {String} key
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
 | 
					function deferSaveOnDisk(key)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    if (hasPendingSaves) {
 | 
				
			||||||
 | 
					        pendingSaves.add(key);
 | 
				
			||||||
 | 
					        return;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    setTimeout(function() {
 | 
				
			||||||
 | 
					        saveOnDisk(Array.from(pendingSaves));
 | 
				
			||||||
 | 
					        pendingSaves.clear();
 | 
				
			||||||
 | 
					        hasPendingSaves = false;
 | 
				
			||||||
 | 
					    }, 30000);
 | 
				
			||||||
 | 
					    hasPendingSaves = true;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
| 
						 | 
					@ -85,6 +123,10 @@ function getEntireData()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
* Save the value under the key on the RAM.
 | 
					* Save the value under the key on the RAM.
 | 
				
			||||||
 | 
					*
 | 
				
			||||||
 | 
					* Note: To store the data on the hard disk, one of
 | 
				
			||||||
 | 
					*  deferSaveOnDisk(), saveOnDisk(), or saveOnExit()
 | 
				
			||||||
 | 
					*  must be called.
 | 
				
			||||||
* @param {String} key
 | 
					* @param {String} key
 | 
				
			||||||
* @param {Object} value
 | 
					* @param {Object} value
 | 
				
			||||||
*/
 | 
					*/
 | 
				
			||||||
| 
						 | 
					@ -199,7 +241,7 @@ function loadOldDataFromStore()
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
* Save the hash status to the local storage.
 | 
					* Save the hash status to the local storage (RAM).
 | 
				
			||||||
* The status can have the following values:
 | 
					* The status can have the following values:
 | 
				
			||||||
*  1 "up to date"
 | 
					*  1 "up to date"
 | 
				
			||||||
*  2 "updated"
 | 
					*  2 "updated"
 | 
				
			||||||
| 
						 | 
					@ -222,10 +264,5 @@ function storeHashStatus(status_code)
 | 
				
			||||||
    storage.hashStatus = status_code;
 | 
					    storage.hashStatus = status_code;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					 | 
				
			||||||
* Save every minute the temporary data to the disk.
 | 
					 | 
				
			||||||
*/
 | 
					 | 
				
			||||||
setInterval(saveOnExit, 60000);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Start storage
 | 
					// Start storage
 | 
				
			||||||
getDataFromDisk();
 | 
					getDataFromDisk();
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -199,7 +199,7 @@ function loadOldDataFromStore()
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
* Save the hash status to the local storage.
 | 
					* Save the hash status to the local storage (RAM).
 | 
				
			||||||
* The status can have the following values:
 | 
					* The status can have the following values:
 | 
				
			||||||
*  1 "up to date"
 | 
					*  1 "up to date"
 | 
				
			||||||
*  2 "updated"
 | 
					*  2 "updated"
 | 
				
			||||||
| 
						 | 
					@ -231,6 +231,7 @@ function increaseGlobalURLCounter(number)
 | 
				
			||||||
    if(storage.statisticsStatus)
 | 
					    if(storage.statisticsStatus)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        storage.globalurlcounter += number;
 | 
					        storage.globalurlcounter += number;
 | 
				
			||||||
 | 
					        deferSaveOnDisk('globalurlcounter');
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -242,6 +243,7 @@ function increaseURLCounter()
 | 
				
			||||||
    if(storage.statisticsStatus)
 | 
					    if(storage.statisticsStatus)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        storage.globalCounter++;
 | 
					        storage.globalCounter++;
 | 
				
			||||||
 | 
					        deferSaveOnDisk('globalCounter');
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue
	
	Block a user