@@ -14,7 +14,6 @@ import http from 'http';
1414import { promisify } from 'util' ;
1515import fs from 'fs' ;
1616import updateNotifier from 'update-notifier' ;
17- import axios from 'axios' ;
1817import { dir } from 'tmp-promise' ;
1918import { fileTypeFromBuffer } from 'file-type' ;
2019import icongen from 'icon-gen' ;
@@ -385,7 +384,7 @@ async function mergeConfig(url, options, tauriConf) {
385384 disabled_web_shortcuts : disabledWebShortcuts ,
386385 hide_on_close : platformHideOnClose ,
387386 incognito : incognito ,
388- title : title || null ,
387+ title : title ,
389388 enable_wasm : wasm ,
390389 enable_drag_drop : enableDragDrop ,
391390 start_to_tray : startToTray && showSystemTray ,
@@ -1302,7 +1301,6 @@ var license = "MIT";
13021301var dependencies = {
13031302 "@tauri-apps/api" : "^2.9.0" ,
13041303 "@tauri-apps/cli" : "^2.9.0" ,
1305- axios : "^1.12.2" ,
13061304 chalk : "^5.6.2" ,
13071305 commander : "^12.1.0" ,
13081306 execa : "^9.6.0" ,
@@ -1705,24 +1703,40 @@ async function tryGetFavicon(url, appName) {
17051703 * Downloads icon from URL
17061704 */
17071705async function downloadIcon ( iconUrl , showSpinner = true , customTimeout ) {
1706+ const controller = new AbortController ( ) ;
1707+ const timeoutId = setTimeout ( ( ) => {
1708+ controller . abort ( ) ;
1709+ } , customTimeout || 10000 ) ;
17081710 try {
1709- const response = await axios . get ( iconUrl , {
1710- responseType : 'arraybuffer' ,
1711- timeout : customTimeout || 10000 ,
1711+ const response = await fetch ( iconUrl , {
1712+ signal : controller . signal ,
17121713 } ) ;
1713- const iconData = response . data ;
1714- if ( ! iconData || iconData . byteLength < ICON_CONFIG . minFileSize )
1714+ clearTimeout ( timeoutId ) ;
1715+ if ( ! response . ok ) {
1716+ if ( response . status === 404 && ! showSpinner ) {
1717+ return null ;
1718+ }
1719+ throw new Error ( `HTTP ${ response . status } ${ response . statusText } ` ) ;
1720+ }
1721+ const arrayBuffer = await response . arrayBuffer ( ) ;
1722+ if ( ! arrayBuffer || arrayBuffer . byteLength < ICON_CONFIG . minFileSize )
17151723 return null ;
1716- const fileDetails = await fileTypeFromBuffer ( iconData ) ;
1724+ const fileDetails = await fileTypeFromBuffer ( arrayBuffer ) ;
17171725 if ( ! fileDetails ||
17181726 ! ICON_CONFIG . supportedFormats . includes ( fileDetails . ext ) ) {
17191727 return null ;
17201728 }
1721- return await saveIconFile ( iconData , fileDetails . ext ) ;
1729+ return await saveIconFile ( arrayBuffer , fileDetails . ext ) ;
17221730 }
17231731 catch ( error ) {
1724- if ( showSpinner && ! ( error . response ?. status === 404 ) ) {
1725- logger . error ( 'Icon download failed!' , error ) ;
1732+ clearTimeout ( timeoutId ) ;
1733+ if ( showSpinner ) {
1734+ if ( error instanceof Error && error . name === 'AbortError' ) {
1735+ logger . error ( 'Icon download timed out!' ) ;
1736+ }
1737+ else {
1738+ logger . error ( 'Icon download failed!' , error instanceof Error ? error . message : String ( error ) ) ;
1739+ }
17261740 }
17271741 return null ;
17281742 }
0 commit comments