@@ -4,6 +4,7 @@ const winston = require('winston')
44const { remote, ipcRenderer} = require ( 'electron' )
55const { app} = require ( 'electron' ) . remote ;
66const lowdb = require ( 'lowdb' )
7+ const favicon = require ( 'favicon' ) ;
78
89const locationMsg = require ( `${ __dirname } /../app/modules/lang.js` )
910const adapter = require ( `${ __dirname } /../app/modules/adapter.js` )
@@ -85,28 +86,37 @@ const shuttle = {
8586
8687 /** Adds a bookmark to the bookmarks bar */
8788 addBookmarkToBar : ( url , id ) => {
89+
90+ let favurl = url
91+
92+ if ( url . indexOf ( 'http://' ) === - 1 || url . indexOf ( 'http://' ) === - 1 ) {
93+ favurl = `http://${ url } `
94+ }
95+
8896 if ( url . startsWith ( 'mod:' ) ) {
89- document . querySelector ( '.bookmarks-zone' ) . innerHTML += `<a href="#" class="bubble-btn" id="id-${ id } " onclick="shuttle.loadView('${ url } ', ${ id } )" oncontextmenu="shuttle.askToRemoveBookmark(' ${ id } ')" onmouseover="shuttle.showControlBar('id-${ id } ', 'show')" style="background-image: url(../app/modules/${ url . replace ( 'mod:' , '' ) } /icon.png);"></a>`
97+ document . querySelector ( '.bookmarks-zone' ) . innerHTML += `<a href="#" class="bubble-btn" id="id-${ id } " onclick="shuttle.loadView('${ url } ', ${ id } )" oncontextmenu="shuttle.askToRemoveBookmark(${ id } , ' ${ url } ')" onmouseover="shuttle.showControlBar('id-${ id } ', 'show')" style="background-image: url(../app/modules/${ url . replace ( 'mod:' , '' ) } /icon.png);"></a>`
9098 } else {
91- fetch ( `http://besticon-demo.herokuapp.com/allicons.json?url=${ url } ` ) . then ( ( resp ) => resp . json ( ) ) . then ( ( data ) => {
92- document . querySelector ( '.bookmarks-zone' ) . innerHTML += `<a href="#" class="bubble-btn" id="id-${ id } " onclick="shuttle.loadView('${ url } ', ${ id } )" oncontextmenu="shuttle.askToRemoveBookmark('${ id } ')" onmouseover="shuttle.showControlBar('id-${ id } ', 'show')" style="background-image: url(${ data . icons [ 0 ] . url } );"></a>`
93- } ) . catch ( ( error ) => {
94- document . querySelector ( '.bookmarks-zone' ) . innerHTML += `<a href="#" class="bubble-btn" id="id-${ id } " onclick="shuttle.loadView('${ url } ', ${ id } )" oncontextmenu="shuttle.askToRemoveBookmark('${ id } ')" onmouseover="shuttle.showControlBar('id-${ id } ', 'show')" style="background-image: url(../../assets/img/no-icon.png);"></a>`
95- } ) . then ( ( ) => {
96- shuttle . reloadAddButton ( )
97- } )
99+
100+ favicon ( favurl , function ( err , favicon_url ) {
101+ if ( err || favicon_url === null ) {
102+ document . querySelector ( '.bookmarks-zone' ) . innerHTML += `<a href="#" class="bubble-btn" id="id-${ id } " title="${ url } " onclick="shuttle.loadView('${ url } ', ${ id } )" oncontextmenu="shuttle.askToRemoveBookmark(${ id } , '${ url } ')" onmouseover="shuttle.showControlBar('id-${ id } ', 'show')" style="background-image: url(../assets/img/no-icon.png);"></a>`
103+ } else {
104+ document . querySelector ( '.bookmarks-zone' ) . innerHTML += `<a href="#" class="bubble-btn" id="id-${ id } " title="${ url } " onclick="shuttle.loadView('${ url } ', ${ id } )" oncontextmenu="shuttle.askToRemoveBookmark(${ id } , '${ url } ')" onmouseover="shuttle.showControlBar('id-${ id } ', 'show')" style="background-image: url(${ favicon_url } );"></a>`
105+ }
106+ } ) ;
107+
98108 }
99109 setTimeout ( ( ) => {
100110 shuttle . reloadAddButton ( )
101111 } , db . get ( 'bookmarks' ) . length * 1000 )
102112 } ,
103113
104114 /** Asks the user to confirm the removal of a given bookmark */
105- askToRemoveBookmark : ( id ) => {
115+ askToRemoveBookmark : ( id , url ) => {
106116 vex . dialog . buttons . YES . text = locationMsg ( 'continue' )
107117 vex . dialog . buttons . NO . text = locationMsg ( 'cancel' )
108118 vex . dialog . confirm ( {
109- message : locationMsg ( 'removeBookmarks' ) ,
119+ message :` ${ locationMsg ( 'removeBookmarks' ) } : ${ url } ` ,
110120 callback : function ( removalConfirmed ) {
111121 if ( removalConfirmed ) {
112122 bookmarkUrl = idToUrl [ id ]
@@ -304,6 +314,10 @@ shuttle.initBookmarks(bookmarks)
304314shuttle . showFrame ( settings . get ( 'settings.ShowFrame' ) . value ( ) )
305315shuttle . reloadAddButton ( )
306316
317+ setInterval ( ( ) => {
318+ shuttle . reloadAddButton ( )
319+ } , 500 )
320+
307321view . addEventListener ( 'did-fail-load' , ( errorCode , errorDescription , validatedURL ) => {
308322 console . log ( )
309323 currentBookmarkId = 'error'
0 commit comments