77 * @param {string } src - Image source URL
88 * @returns {Promise } - Promise that resolves when image is loaded
99 */
10- export const preloadImage = src => {
10+ export const preloadImage = ( src ) => {
1111 return new Promise ( ( resolve , reject ) => {
1212 const img = new Image ( ) ;
1313 img . onload = ( ) => resolve ( img ) ;
1414 img . onerror = reject ;
15- img . src = src ;
15+ // Remove leading /hxndev.github.io/ from paths as they're causing issues with GitHub Pages
16+ if ( src . startsWith ( '/hxndev.github.io/' ) ) {
17+ img . src = src . substring ( '/hxndev.github.io/' . length ) ;
18+ } else {
19+ img . src = src ;
20+ }
1621 } ) ;
1722} ;
1823
@@ -25,25 +30,26 @@ export const preloadImage = src => {
2530export const preloadImages = ( images , progressCallback = null ) => {
2631 let loaded = 0 ;
2732 const total = images . length ;
28-
33+
2934 return Promise . all (
30- images . map ( src =>
31- preloadImage ( src )
32- . then ( img => {
33- loaded ++ ;
34- if ( progressCallback ) {
35- progressCallback ( ( loaded / total ) * 100 ) ;
36- }
37- return img ;
38- } )
39- . catch ( err => {
40- console . warn ( `Failed to preload image: ${ src } ` , err ) ;
41- loaded ++ ;
42- if ( progressCallback ) {
43- progressCallback ( ( loaded / total ) * 100 ) ;
44- }
45- return null ;
46- } )
35+ images . map (
36+ src =>
37+ preloadImage ( src )
38+ . then ( img => {
39+ loaded ++ ;
40+ if ( progressCallback ) {
41+ progressCallback ( loaded / total * 100 ) ;
42+ }
43+ return img ;
44+ } )
45+ . catch ( err => {
46+ console . warn ( `Failed to preload image: ${ src } ` , err ) ;
47+ loaded ++ ;
48+ if ( progressCallback ) {
49+ progressCallback ( loaded / total * 100 ) ;
50+ }
51+ return null ;
52+ } )
4753 )
4854 ) ;
4955} ;
@@ -58,13 +64,10 @@ export const preloadFont = (fontFamily, src) => {
5864 return new Promise ( ( resolve , reject ) => {
5965 try {
6066 const font = new FontFace ( fontFamily , `url(${ src } )` ) ;
61- font
62- . load ( )
63- . then ( loadedFont => {
64- document . fonts . add ( loadedFont ) ;
65- resolve ( loadedFont ) ;
66- } )
67- . catch ( reject ) ;
67+ font . load ( ) . then ( loadedFont => {
68+ document . fonts . add ( loadedFont ) ;
69+ resolve ( loadedFont ) ;
70+ } ) . catch ( reject ) ;
6871 } catch ( error ) {
6972 reject ( error ) ;
7073 }
@@ -76,37 +79,38 @@ export const preloadFont = (fontFamily, src) => {
7679 * @returns {Array } Array of critical image URLs
7780 */
7881export const getCriticalImages = ( ) => {
82+ // Use relative paths without the /hxndev.github.io/ prefix
7983 return [
8084 // Profile image
81- '/hxndev.github.io/ images/profile.jpg' ,
82-
85+ 'images/profile.jpg' ,
86+
8387 // Project images for featured projects
84- '/hxndev.github.io/ images/projects/3d-solar-system.jpg' ,
85- '/hxndev.github.io/ images/projects/ai-chess.jpg' ,
86- '/hxndev.github.io/ images/projects/brilliant-pro.jpg' ,
87- '/hxndev.github.io/ images/projects/event-management.jpg' ,
88- '/hxndev.github.io/ images/projects/exam-scheduler.jpg' ,
89- '/hxndev.github.io/ images/projects/face-mesh.jpg' ,
90- '/hxndev.github.io/ images/projects/graphical-password.jpg' ,
91- '/hxndev.github.io/ images/projects/hawkseye.jpg' ,
92- '/hxndev.github.io/ images/projects/image-to-sketch.jpg' ,
93- '/hxndev.github.io/ images/projects/insta-profile.jpg' ,
94- '/hxndev.github.io/ images/projects/job-fit.jpg' ,
95- '/hxndev.github.io/ images/projects/password-cracker.jpg' ,
96- '/hxndev.github.io/ images/projects/phy-app.jpg' ,
97- '/hxndev.github.io/ images/projects/portfolio.jpg' ,
98- '/hxndev.github.io/ images/projects/pose-detection.jpg' ,
99- '/hxndev.github.io/ images/projects/qr-code.jpg' ,
100- '/hxndev.github.io/ images/projects/ripple-effect.jpg' ,
101- '/hxndev.github.io/ images/projects/rock-paper-scissors.jpg' ,
102- '/hxndev.github.io/ images/projects/simple-translator.jpg' ,
103- '/hxndev.github.io/ images/projects/vehicle-buy-sell.jpg' ,
104- '/hxndev.github.io/ images/projects/video-to-gif.jpg' ,
105- '/hxndev.github.io/ images/projects/virtual-drag-and-drop.jpg' ,
106- '/hxndev.github.io/ images/projects/virtual-mouse.jpg' ,
107-
88+ 'images/projects/3d-solar-system.jpg' ,
89+ 'images/projects/ai-chess.jpg' ,
90+ 'images/projects/brilliant-pro.jpg' ,
91+ 'images/projects/event-management.jpg' ,
92+ 'images/projects/exam-scheduler.jpg' ,
93+ 'images/projects/face-mesh.jpg' ,
94+ 'images/projects/graphical-password.jpg' ,
95+ 'images/projects/hawkseye.jpg' ,
96+ 'images/projects/image-to-sketch.jpg' ,
97+ 'images/projects/insta-profile.jpg' ,
98+ 'images/projects/job-fit.jpg' ,
99+ 'images/projects/password-cracker.jpg' ,
100+ 'images/projects/phy-app.jpg' ,
101+ 'images/projects/portfolio.jpg' ,
102+ 'images/projects/pose-detection.jpg' ,
103+ 'images/projects/qr-code.jpg' ,
104+ 'images/projects/ripple-effect.jpg' ,
105+ 'images/projects/rock-paper-scissors.jpg' ,
106+ 'images/projects/simple-translator.jpg' ,
107+ 'images/projects/vehicle-buy-sell.jpg' ,
108+ 'images/projects/video-to-gif.jpg' ,
109+ 'images/projects/virtual-drag-and-drop.jpg' ,
110+ 'images/projects/virtual-mouse.jpg' ,
111+
108112 // Fallback images
109- 'https://placehold.co/600x400/9B00FF/FFFFFF?text=Image+Not+Found' ,
113+ 'https://placehold.co/600x400/9B00FF/FFFFFF?text=Image+Not+Found'
110114 ] ;
111115} ;
112116
@@ -117,14 +121,27 @@ export const getCriticalImages = () => {
117121 */
118122export const preloadCriticalAssets = ( progressCallback = null ) => {
119123 const criticalImages = getCriticalImages ( ) ;
120-
121- return preloadImages ( criticalImages , progressCallback ) ;
124+
125+ // Add a delay before resolving to ensure the loading screen displays
126+ return new Promise ( ( resolve ) => {
127+ // First try to preload images
128+ preloadImages ( criticalImages , progressCallback )
129+ . then ( result => {
130+ // Even if some images fail to load, we still want to proceed
131+ setTimeout ( ( ) => resolve ( result ) , 500 ) ;
132+ } )
133+ . catch ( error => {
134+ console . warn ( "Error preloading assets, but continuing anyway:" , error ) ;
135+ // Still resolve after a delay to ensure the app proceeds
136+ setTimeout ( ( ) => resolve ( [ ] ) , 500 ) ;
137+ } ) ;
138+ } ) ;
122139} ;
123140
124141export default {
125142 preloadImage,
126143 preloadImages,
127144 preloadFont,
128145 getCriticalImages,
129- preloadCriticalAssets,
130- } ;
146+ preloadCriticalAssets
147+ } ;
0 commit comments