99 clipboard ,
1010 dialog ,
1111 ipcMain ,
12- nativeImage ,
1312 shell ,
1413} from "electron" ;
1514import openAboutWindow from "electron-about-window" ;
@@ -79,16 +78,24 @@ import { getUploadOnceAvailable } from "./platform";
7978 app . quit ( ) ;
8079 } ) ;
8180
81+ let processingCount = 0 ;
82+ let uploadedList : { title : string ; permalink_url : string } [ ] = [ ] ;
83+ const uploadQueue = new PQueue ( { concurrency : 1 } ) ;
8284 const tray = new Tray (
83- nativeImage . createFromPath (
84- resolve ( __dirname , "../../../resources/trayTemplate@2x.png" )
85- )
85+ resolve ( __dirname , "../../../resources/tray-icons/Template@2x.png" )
8686 ) ;
87- tray . setToolTip ( "Gyazemon" ) ;
87+ const updateTray = ( ) => {
88+ tray . setImage (
89+ resolve (
90+ __dirname ,
91+ `../../../resources/tray-icons/${
92+ processingCount ? "processing" : ""
93+ } Template@2x.png`
94+ )
95+ ) ;
96+
97+ tray . setToolTip ( "Gyazemon" ) ;
8898
89- const uploadQueue = new PQueue ( { concurrency : 1 } ) ;
90- let uploadedList : { title : string ; permalink_url : string } [ ] = [ ] ;
91- const setTrayMenu = ( ) => {
9299 const queueLength = uploadQueue . pending + uploadQueue . size ;
93100 tray . setContextMenu (
94101 Menu . buildFromTemplate ( [
@@ -205,7 +212,9 @@ import { getUploadOnceAvailable } from "./platform";
205212
206213 const file = await readFile ( event . path ) ;
207214 const fileID = [
208- ...new Uint8Array ( await crypto . subtle . digest ( "SHA-256" , file ) ) ,
215+ ...new Uint8Array (
216+ await crypto . subtle . digest ( "SHA-256" , new Uint8Array ( file ) )
217+ ) ,
209218 ]
210219 . map ( ( uint8 ) => uint8 . toString ( 16 ) . padStart ( 2 , "0" ) )
211220 . join ( "" ) ;
@@ -214,6 +223,9 @@ import { getUploadOnceAvailable } from "./platform";
214223 return ;
215224 }
216225
226+ log . debug ( "processing" ) ;
227+ processingCount ++ ;
228+ updateTray ( ) ;
217229 try {
218230 log . debug ( "load" ) ;
219231 const loadedDataList = await load ( { ext, file } ) ;
@@ -231,7 +243,7 @@ import { getUploadOnceAvailable } from "./platform";
231243 { ...firstUploadResponse , title : basename ( event . path ) } ,
232244 ...uploadedList ,
233245 ] . slice ( 0 , 10 ) ;
234- setTrayMenu ( ) ;
246+ updateTray ( ) ;
235247
236248 if ( event . writesClipboard ) {
237249 clipboard . writeText ( firstUploadResponse . permalink_url ) ;
@@ -245,6 +257,9 @@ import { getUploadOnceAvailable } from "./platform";
245257 title : "Failed to upload to Gyazo. " ,
246258 body : `${ event . path } \nPlease check the log. ` ,
247259 } ) . show ( ) ;
260+ } finally {
261+ processingCount -- ;
262+ updateTray ( ) ;
248263 }
249264 } ;
250265
@@ -279,7 +294,7 @@ import { getUploadOnceAvailable } from "./platform";
279294 const pageImages : Buffer [ ] = [ ] ;
280295 ipcMain . handleOnce ( "getPDF" , ( ) : ArrayBuffer => {
281296 log . debug ( "getPDF" ) ;
282- return file ;
297+ return new Uint8Array ( file ) . buffer ;
283298 } ) ;
284299 ipcMain . handle ( "setPageImage" , ( _event , pageImage : ArrayBuffer ) => {
285300 pageImages . push ( Buffer . from ( pageImage ) ) ;
@@ -345,7 +360,11 @@ import { getUploadOnceAvailable } from "./platform";
345360 url . pathname = pathToFileURL ( path ) . pathname ;
346361
347362 formData . append ( "access_token" , gyazoAccessToken ) ;
348- formData . append ( "imagedata" , new Blob ( [ loadedData ] ) , "dummy.png" ) ;
363+ formData . append (
364+ "imagedata" ,
365+ new Blob ( [ new Uint8Array ( loadedData ) ] ) ,
366+ "dummy.png"
367+ ) ;
349368 formData . append ( "referer_url" , String ( url ) ) ;
350369 formData . append ( "app" , "Gyazemon" ) ;
351370 formData . append ( "title" , title ) ;
@@ -388,7 +407,7 @@ import { getUploadOnceAvailable } from "./platform";
388407 // Rate Limits https://gyazo.com/api/docs/errors
389408 if ( uploadResponse . status === 429 ) {
390409 uploadQueue . clear ( ) ;
391- setTrayMenu ( ) ;
410+ updateTray ( ) ;
392411
393412 new Notification ( {
394413 title : "Canceled the upload processes to Gyazo. " ,
@@ -414,11 +433,11 @@ import { getUploadOnceAvailable } from "./platform";
414433 return uploadResponses [ 0 ] . json ( ) ;
415434 } ;
416435
417- setTrayMenu ( ) ;
418- uploadQueue . on ( "add" , setTrayMenu ) ;
419- uploadQueue . on ( "next" , setTrayMenu ) ;
420- eventTarget . addEventListener ( "online" , setTrayMenu ) ;
421- eventTarget . addEventListener ( "offline" , setTrayMenu ) ;
436+ updateTray ( ) ;
437+ uploadQueue . on ( "add" , updateTray ) ;
438+ uploadQueue . on ( "next" , updateTray ) ;
439+ eventTarget . addEventListener ( "online" , updateTray ) ;
440+ eventTarget . addEventListener ( "offline" , updateTray ) ;
422441
423442 if ( gyazoAccessToken ) {
424443 for ( const watch of watchlist ) {
0 commit comments