@@ -349,7 +349,7 @@ function updateTable(data) {
349349 */
350350async function deleteClick ( event ) {
351351 console . log ( 'deleteClick:' , event )
352- const closest = event . target ?. closest ( 'tr' ) . querySelector ( '.file-link' )
352+ const closest = event . target ?. closest ( 'tr' ) ? .querySelector ( '.file-link' )
353353 const name = closest . dataset ?. name
354354 console . log ( 'name:' , name )
355355 if ( ! name ) {
@@ -373,16 +373,17 @@ async function deleteConfirm(event) {
373373 console . log ( 'deleteConfirm:' , event )
374374 const name = deleteName . textContent
375375 console . log ( `Deleting File: ${ name } ` )
376- // TODO: Catch Error...
376+ // TODO: Catch Error? Throw should happen during init ...
377377 const response = await deleteFile ( name )
378378 console . log ( 'response:' , response )
379379 if ( response . ok ) {
380380 mediaOuter . classList . add ( 'd-none' )
381381 deleteModal . hide ( )
382382 await initPopup ( )
383383 } else {
384- // TODO: Handle Error...
385- console . error ( 'Error Deleting File: name, response:' , name , response )
384+ console . error ( `Error Deleting File: "${ name } ", response:` , response )
385+ showToast ( `Error Deleting: <strong>${ name } </strong>` , 'danger' )
386+ deleteModal . hide ( )
386387 }
387388}
388389
@@ -395,16 +396,34 @@ async function deleteConfirm(event) {
395396async function deleteFile ( name ) {
396397 console . log ( `deleteFile: ${ name } ` )
397398 const { options } = await chrome . storage . sync . get ( [ 'options' ] )
398- console . log ( 'options:' , options )
399+ // console.log('options:', options)
399400 const headers = { Authorization : options . authToken }
400401 const opts = {
401402 method : 'DELETE' ,
402403 headers : headers ,
403404 }
404405 const apiUrl = `${ options . siteUrl } /api/delete/${ name } `
405- const response = await fetch ( apiUrl , opts )
406- console . log ( 'response:' , response )
407- return response
406+ return await fetch ( apiUrl , opts )
407+ }
408+
409+ /**
410+ * Show Bootstrap Toast
411+ * @function showToast
412+ * @param {String } message
413+ * @param {String } type
414+ */
415+ function showToast ( message , type = 'success' ) {
416+ console . log ( `showToast: ${ type } :` , message )
417+ const element = document . querySelector ( '.d-none .toast' ) . cloneNode ( true )
418+ element . classList . add ( `text-bg-${ type } ` )
419+ element . querySelector ( '.toast-body' ) . innerHTML = message
420+ document . getElementById ( 'toast-container' ) . appendChild ( element )
421+ const toast = new bootstrap . Toast ( element )
422+ toast . show ( )
423+ const callback = ( ) => {
424+ element . addEventListener ( 'mouseover' , ( ) => toast . hide ( ) )
425+ }
426+ setTimeout ( callback , 1000 )
408427}
409428
410429/**
@@ -466,8 +485,8 @@ function initPopupMouseover() {
466485 clearTimeout ( timeoutID )
467486 }
468487 } )
469- mediaImage . addEventListener ( 'error' , ( event ) => {
470- console . log ( 'mediaError:' , event )
488+ mediaImage . addEventListener ( 'error' , ( ) => {
489+ // console.log('mediaError:', event)
471490 mediaImage . classList . add ( 'd-none' )
472491 mediaError . classList . remove ( 'd-none' )
473492 mediaImage . src = '../media/loading.gif'
0 commit comments