@@ -20,37 +20,37 @@ async function actionOnClicked(event) {
2020/**
2121 * On Installed Callback
2222 * @function onInstalled
23- * @param {InstalledDetails } details
23+ * @param {chrome.runtime. InstalledDetails } details
2424 */
2525async function onInstalled ( details ) {
2626 console . log ( 'onInstalled:' , details )
2727 const githubURL = 'https://github.com/django-files/web-extension'
2828 const installURL = 'https://django-files.github.io/extension/#configure'
29- const options = await Promise . resolve (
30- setDefaultOptions ( {
31- siteUrl : '' ,
32- authToken : '' ,
33- recentFiles : 14 ,
34- popupWidth : 380 ,
35- popupTimeout : 10 ,
36- popupPreview : true ,
37- popupIcons : true ,
38- iconPrivate : true ,
39- iconPassword : true ,
40- iconExpire : false ,
41- popupLinks : true ,
42- popupSidePanel : true ,
43- checkAuth : true ,
44- deleteConfirm : true ,
45- ctxSidePanel : true ,
46- contextMenu : true ,
47- showUpdate : false ,
48- radioBackground : 'bgPicture' ,
49- pictureURL : 'https://picsum.photos/1920/1080' ,
50- videoURL : '' ,
51- } )
52- )
29+ const options = await setDefaultOptions ( {
30+ siteUrl : '' ,
31+ authToken : '' ,
32+ recentFiles : 14 ,
33+ popupWidth : 380 ,
34+ popupTimeout : 10 ,
35+ popupPreview : true ,
36+ popupIcons : true ,
37+ iconPrivate : true ,
38+ iconPassword : true ,
39+ iconExpire : false ,
40+ popupLinks : true ,
41+ popupSidePanel : true ,
42+ checkAuth : true ,
43+ deleteConfirm : true ,
44+ ctxSidePanel : true ,
45+ contextMenu : true ,
46+ showUpdate : false ,
47+ radioBackground : 'bgPicture' ,
48+ pictureURL : 'https://picsum.photos/1920/1080' ,
49+ videoURL : '' ,
50+ } )
5351 console . log ( 'options:' , options )
52+ await setStorageDefaults ( chrome . storage . local , { popupView : 'popup' } )
53+
5454 if ( options . contextMenu ) {
5555 // noinspection ES6MissingAwait
5656 createContextMenus ( options )
@@ -60,7 +60,6 @@ async function onInstalled(details) {
6060 // noinspection ES6MissingAwait
6161 chrome . runtime . openOptionsPage ( )
6262 await chrome . tabs . create ( { active : false , url : installURL } )
63- await chrome . storage . local . set ( { popupView : 'popup' } )
6463 } else if ( details . reason === 'update' && options . showUpdate ) {
6564 if ( manifest . version !== details . previousVersion ) {
6665 let { internal } = await chrome . storage . sync . get ( [ 'internal' ] )
@@ -149,7 +148,7 @@ async function onCommand(command) {
149148/**
150149 * Context Menus On Clicked Callback
151150 * @function contextMenusClicked
152- * @param {OnClickData } ctx
151+ * @param {chrome.contextMenus. OnClickData } ctx
153152 */
154153async function contextMenusClicked ( ctx ) {
155154 console . debug ( 'contextMenusClicked:' , ctx )
@@ -230,7 +229,7 @@ function onChanged(changes, namespace) {
230229 * On Message Callback
231230 * @function onMessage
232231 * @param {Object } message
233- * @param {MessageSender } sender
232+ * @param {chrome.runtime. MessageSender } sender
234233 */
235234function onMessage ( message , sender ) {
236235 console . debug ( 'onMessage: message, sender:' , message , sender )
@@ -519,7 +518,7 @@ async function clipboardWrite(value) {
519518 * Set Default Options
520519 * @function setDefaultOptions
521520 * @param {Object } defaultOptions
522- * @return {Object }
521+ * @return {Promise< Object> }
523522 */
524523async function setDefaultOptions ( defaultOptions ) {
525524 console . log ( 'setDefaultOptions' )
@@ -536,7 +535,28 @@ async function setDefaultOptions(defaultOptions) {
536535 }
537536 if ( changed ) {
538537 await chrome . storage . sync . set ( { options } )
539- console . log ( 'options:' , options )
538+ console . log ( 'changed options:' , options )
540539 }
541540 return options
542541}
542+
543+ /**
544+ * @function setStorageDefaults
545+ * @param {chrome.storage.LocalStorageArea|chrome.storage.SyncStorageArea } storageArea
546+ * @param {Object } defaultOptions
547+ * @return {Promise<void> }
548+ */
549+ async function setStorageDefaults ( storageArea , defaultOptions ) {
550+ console . log ( '%c setStorageDefaults:' , 'color: Lime' , defaultOptions )
551+ const current = await storageArea . get ( )
552+ const data = { }
553+ for ( const [ key , value ] of Object . entries ( defaultOptions ) ) {
554+ if ( current [ key ] === undefined ) {
555+ data [ key ] = value
556+ }
557+ }
558+ if ( Object . keys ( data ) . length > 0 ) {
559+ console . log ( '%c Set data:' , 'color: Yellow' , data )
560+ await storageArea . set ( data )
561+ }
562+ }
0 commit comments