@@ -25,6 +25,15 @@ document.addEventListener('DOMContentLoaded', function () {
2525 document . getElementById ( 'exportToCsv' ) . addEventListener ( 'click' , function ( ) {
2626 exportToCSV ( ) ;
2727 } ) ;
28+ document . getElementById ( 'backup' ) . addEventListener ( 'click' , function ( ) {
29+ backup ( ) ;
30+ } ) ;
31+ document . getElementById ( 'restore' ) . addEventListener ( 'click' , function ( ) {
32+ restoreDataClick ( ) ;
33+ } ) ;
34+ document . getElementById ( 'file-input-backup' ) . addEventListener ( 'change' , function ( e ) {
35+ restore ( e ) ;
36+ } ) ;
2837 document . getElementById ( 'addBlackSiteBtn' ) . addEventListener ( 'click' , function ( ) {
2938 addNewSiteClickHandler ( 'addBlackSiteLbl' , null , actionAddBlackSiteToList , 'notifyForBlackList' ) ;
3039 } ) ;
@@ -88,6 +97,9 @@ function loadSettings() {
8897 storage . getMemoryUse ( STORAGE_TABS , function ( integer ) {
8998 document . getElementById ( 'memoryUse' ) . innerHTML = ( integer / 1024 ) . toFixed ( 2 ) + 'Kb' ;
9099 } ) ;
100+ storage . getValue ( STORAGE_TABS , function ( item ) {
101+ let s = item ;
102+ } ) ;
91103 storage . getValue ( STORAGE_BLACK_LIST , function ( items ) {
92104 if ( items !== undefined )
93105 blackList = items ;
@@ -234,20 +246,54 @@ function exportToCSV() {
234246 } ) ;
235247}
236248
249+ function backup ( ) {
250+ storage . getValue ( STORAGE_TABS , function ( item ) {
251+ let tabs = JSON . stringify ( item ) ;
252+ createFile ( tabs , "application/json" , 'backup.json' ) ;
253+ viewNotify ( 'notify-backup' ) ;
254+ } ) ;
255+ }
256+
257+ function restoreDataClick ( ) {
258+ document . getElementById ( 'file-input-backup' ) . click ( ) ;
259+ }
260+
261+ function restore ( e ) {
262+ let file = e . target . files [ 0 ] ;
263+ if ( file . type === "application/json" ) {
264+ var reader = new FileReader ( ) ;
265+ reader . readAsText ( file , 'UTF-8' ) ;
266+
267+ reader . onload = readerEvent => {
268+ let content = readerEvent . target . result ;
269+ let tabs = JSON . parse ( content ) ;
270+ chrome . extension . getBackgroundPage ( ) . tabs = tabs ;
271+ storage . saveTabs ( tabs , allDataDeletedSuccess ) ;
272+ viewNotify ( 'notify-restore' ) ;
273+ }
274+ } else {
275+ viewNotify ( 'notify-restore-failed' ) ;
276+ }
277+ }
278+
237279function toCsv ( tabsData ) {
238280 var str = 'domain,date,time(sec)\r\n' ;
239281 for ( var i = 0 ; i < tabsData . length ; i ++ ) {
240282 for ( var y = 0 ; y < tabsData [ i ] . days . length ; y ++ ) {
241- var line = tabsData [ i ] . url + ',' + tabsData [ i ] . days [ y ] . date + ',' + tabsData [ i ] . days [ y ] . summary ;
283+ var line = tabsData [ i ] . url + ',' + tabsData [ i ] . days [ y ] . date + ',' + tabsData [ i ] . days [ y ] . summary ;
242284 str += line + '\r\n' ;
243285 }
244286 }
245287
246- var csvFile = new Blob ( [ str ] , { type : "text/csv" } ) ;
288+ createFile ( str , "text/csv" , 'domains.csv' ) ;
289+ }
290+
291+ function createFile ( data , type , fileName ) {
292+ var file = new Blob ( [ data ] , { type : type } ) ;
247293 var downloadLink ;
248294 downloadLink = document . createElement ( "a" ) ;
249- downloadLink . download = 'domains.csv' ;
250- downloadLink . href = window . URL . createObjectURL ( csvFile ) ;
295+ downloadLink . download = fileName ;
296+ downloadLink . href = window . URL . createObjectURL ( file ) ;
251297 downloadLink . style . display = "none" ;
252298 document . body . appendChild ( downloadLink ) ;
253299 downloadLink . click ( ) ;
0 commit comments