@@ -15,55 +15,12 @@ import image404 from '@/assets/images/pages/image404.jpg';
15
15
const { SITE_URL } = CONFIG_CLIENT ;
16
16
const { AVATAR , OG_FOLDER , IMAGE_404 } = FILE_PATHS ;
17
17
18
- // todo: no urls at build time
19
- // ! must use absolute file paths
20
- export const getTemplatePropsUrl = ( frontmatterProps : FrontmatterProps ) : TemplateProps => {
21
- const { title, heroImage, pageId } = frontmatterProps ;
22
-
23
- // avatarImage
24
- const avatarImageUrl = avatarImage . src ;
25
-
26
- // heroImage
27
- let heroImageUrl : string ;
28
-
29
- switch ( true ) {
30
- // from mdx frontmatter
31
- case Boolean ( heroImage . src ) :
32
- heroImageUrl = `${ SITE_URL } ${ heroImage . src } ` ; // todo: fix this, path from mdx frontmatter
33
- break ;
34
- // hardcoded in 404.mdx frontmatter
35
- case pageId === 'page404' :
36
- heroImageUrl = image404 . src ;
37
- break ;
38
-
39
- // fallback to random default image
40
- default :
41
- heroImageUrl = `${ SITE_URL } ${ getRandomImageUrl ( ) } ` ;
42
- break ;
43
- }
44
-
45
- // ? all fail
46
- // const dummyImageAbsolutePath =
47
- // '/home/username/Desktop/nemanjam.github.io/src/assets/images/default/open-graph/amfi1.jpg';
48
- // const dummyImageUrl = 'https://placehold.co/600x400.png';
49
- // const dummyImageBase64Url =
50
- // 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8/x8AAusB9Y1bN+UAAAAASUVORK5CYII=';
51
-
52
- const templateProps = {
53
- title,
54
- heroImageUrl : heroImageUrl ,
55
- avatarImageUrl : avatarImageUrl ,
56
- siteUrl : trimHttpProtocol ( SITE_URL ) ,
57
- } ;
58
-
59
- return templateProps ;
60
- } ;
61
-
62
18
// original base64 implementation
63
19
export const getTemplatePropsBase64 = async (
64
20
frontmatterProps : FrontmatterProps
65
21
) : Promise < TemplateProps > => {
66
22
const { title, heroImage, pageId } = frontmatterProps ;
23
+
67
24
// avatarImage
68
25
const avatarImageBase64Url = await getBase64Image ( AVATAR ) ;
69
26
@@ -97,26 +54,8 @@ export const getTemplatePropsBase64 = async (
97
54
return templateProps ;
98
55
} ;
99
56
100
- /*-------------------------------- url utils (ImageMetadata) ------------------------------*/
101
-
102
- export const getOpenGraphImagesMetadata = ( ) : ImageMetadata [ ] => {
103
- const imageModules = import . meta. glob < { default : ImageMetadata } > (
104
- // cant be even variable
105
- '/src/assets/images/default/open-graph/*.jpg' ,
106
- { eager : true }
107
- ) ;
108
-
109
- // convert map to array
110
- const imagesMetadata = Object . keys ( imageModules ) . map ( ( path ) => imageModules [ path ] . default ) ;
111
-
112
- return imagesMetadata ;
113
- } ;
114
-
115
- export const getRandomImageUrl = ( ) => getRandomElementFromArray ( getOpenGraphImagesMetadata ( ) ) . src ;
116
-
117
57
/*-------------------------------- base64 utils ------------------------------*/
118
58
119
- // Satori started to fail with base64 url
120
59
export const getBase64Image = async ( imagePath : string ) : Promise < string > => {
121
60
const imageData = await fs . readFile ( imagePath ) ;
122
61
@@ -166,3 +105,59 @@ export const getRandomImagePath = async (folderPath: string): Promise<string> =>
166
105
167
106
return randomImageWithPath ;
168
107
} ;
108
+
109
+ /*-------------------------------- unused code bellow ------------------------------*/
110
+
111
+ // todo: this cant work, no urls at build time
112
+ // ! must use absolute file paths
113
+ export const getTemplatePropsUrl = ( frontmatterProps : FrontmatterProps ) : TemplateProps => {
114
+ const { title, heroImage, pageId } = frontmatterProps ;
115
+
116
+ // avatarImage
117
+ const avatarImageUrl = avatarImage . src ;
118
+
119
+ // heroImage
120
+ let heroImageUrl : string ;
121
+
122
+ switch ( true ) {
123
+ // from mdx frontmatter
124
+ case Boolean ( heroImage . src ) :
125
+ heroImageUrl = `${ SITE_URL } ${ heroImage . src } ` ; // todo: fix this, path from mdx frontmatter
126
+ break ;
127
+ // hardcoded in 404.mdx frontmatter
128
+ case pageId === 'page404' :
129
+ heroImageUrl = image404 . src ;
130
+ break ;
131
+
132
+ // fallback to random default image
133
+ default :
134
+ heroImageUrl = `${ SITE_URL } ${ getRandomImageUrl ( ) } ` ;
135
+ break ;
136
+ }
137
+
138
+ const templateProps = {
139
+ title,
140
+ heroImageUrl : heroImageUrl ,
141
+ avatarImageUrl : avatarImageUrl ,
142
+ siteUrl : trimHttpProtocol ( SITE_URL ) ,
143
+ } ;
144
+
145
+ return templateProps ;
146
+ } ;
147
+
148
+ /*-------------------------------- url utils (ImageMetadata) ------------------------------*/
149
+
150
+ export const getOpenGraphImagesMetadata = ( ) : ImageMetadata [ ] => {
151
+ const imageModules = import . meta. glob < { default : ImageMetadata } > (
152
+ // cant be even variable
153
+ '/src/assets/images/default/open-graph/*.jpg' ,
154
+ { eager : true }
155
+ ) ;
156
+
157
+ // convert map to array
158
+ const imagesMetadata = Object . keys ( imageModules ) . map ( ( path ) => imageModules [ path ] . default ) ;
159
+
160
+ return imagesMetadata ;
161
+ } ;
162
+
163
+ export const getRandomImageUrl = ( ) => getRandomElementFromArray ( getOpenGraphImagesMetadata ( ) ) . src ;
0 commit comments