@@ -23,25 +23,28 @@ import {
23
23
export function OpenGraphImageChecker ( ) {
24
24
const [ loading , setLoading ] = useState ( false ) ;
25
25
const [ data , setData ] = useState < Record < MetaTags , string > | undefined > ( ) ;
26
+ const [ url , setUrl ] = useState < URL | undefined > ( ) ;
26
27
const { preview, PreviewControls } = usePreviewControls ( ) ;
27
28
28
- const debounced = useDebouncedCallback ( ( url : string ) => {
29
+ const debounced = useDebouncedCallback ( ( maybeUrl : string ) => {
29
30
try {
30
- let finalUrl = url ;
31
+ let finalUrl = maybeUrl ;
31
32
32
- if ( ! url . startsWith ( "http" ) ) {
33
- finalUrl = `https://${ url } ` ;
33
+ if ( ! maybeUrl . startsWith ( "http" ) ) {
34
+ finalUrl = `https://${ maybeUrl } ` ;
34
35
}
35
36
36
37
if ( ! finalUrl . includes ( "://" ) || ! finalUrl . includes ( "." ) ) {
37
38
throw new Error ( "Invalid URL" ) ;
38
39
}
39
40
40
- const maybeUrl = new URL ( finalUrl ) ;
41
+ // eslint-disable-next-line @typescript-eslint/no-shadow -- disable no shadow
42
+ const url = new URL ( finalUrl ) ;
41
43
44
+ setUrl ( url ) ;
42
45
setLoading ( true ) ;
43
46
44
- fetch ( `/api/og/check?url=${ encodeURIComponent ( maybeUrl . toString ( ) ) } ` )
47
+ fetch ( `/api/og/check?url=${ encodeURIComponent ( url . toString ( ) ) } ` )
45
48
. then ( async ( response ) => {
46
49
const tempData = ( await response . json ( ) ) as Record < MetaTags , string > ;
47
50
@@ -124,7 +127,7 @@ export function OpenGraphImageChecker() {
124
127
previewTitle = { data [ "og:title" ] }
125
128
previewDescription = { data [ "og:description" ] }
126
129
previewUrl = { data [ "og:url" ] }
127
- previewSite = { data [ "og:site_name" ] }
130
+ previewSite = { data [ "og:site_name" ] || url ?. hostname }
128
131
size = "medium"
129
132
/>
130
133
</ Flex >
0 commit comments