Skip to content

Commit f85ccf9

Browse files
committed
fix file size
fixes #4
1 parent f168faf commit f85ccf9

File tree

2 files changed

+23
-11
lines changed

2 files changed

+23
-11
lines changed

src/components/viewers/MarkdownView.tsx

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import React from 'react'
22
import { useEffect, useState } from 'react'
33
import Markdown from '../Markdown.js'
4-
import ContentHeader from './ContentHeader.js'
4+
import ContentHeader, { parseFileSize } from './ContentHeader.js'
55

66
enum LoadingState {
77
NotLoaded,
@@ -14,12 +14,17 @@ interface ViewerProps {
1414
setError: (error: Error) => void
1515
}
1616

17+
interface Content {
18+
text: string
19+
fileSize?: number
20+
}
21+
1722
/**
1823
* Markdown viewer component.
1924
*/
2025
export default function MarkdownView({ file, setError }: ViewerProps) {
2126
const [loading, setLoading] = useState(LoadingState.NotLoaded)
22-
const [text, setText] = useState<string | undefined>()
27+
const [content, setContent] = useState<Content>()
2328

2429
const isUrl = file.startsWith('http://') || file.startsWith('https://')
2530
const url = isUrl ? file : '/api/store/get?key=' + file
@@ -29,7 +34,8 @@ export default function MarkdownView({ file, setError }: ViewerProps) {
2934
try {
3035
const res = await fetch(url)
3136
const text = await res.text()
32-
setText(text)
37+
const fileSize = parseFileSize(res.headers) ?? text.length
38+
setContent({ text, fileSize })
3339
} catch (error) {
3440
setError(error as Error)
3541
} finally {
@@ -45,7 +51,7 @@ export default function MarkdownView({ file, setError }: ViewerProps) {
4551
})
4652
}, [url, loading, setError])
4753

48-
return <ContentHeader content={{ fileSize: text?.length }}>
49-
<Markdown className='markdown' text={text || ''} />
54+
return <ContentHeader content={content}>
55+
<Markdown className='markdown' text={content?.text ?? ''} />
5056
</ContentHeader>
5157
}

src/components/viewers/TextView.tsx

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { useEffect, useRef, useState } from 'react'
22
import React from 'react'
33
import { Spinner } from '../Layout.js'
4-
import ContentHeader from './ContentHeader.js'
4+
import ContentHeader, { parseFileSize } from './ContentHeader.js'
55

66
enum LoadingState {
77
NotLoaded,
@@ -15,12 +15,17 @@ interface ViewerProps {
1515
setProgress: (progress: number) => void
1616
}
1717

18+
interface Content {
19+
text: string
20+
fileSize?: number
21+
}
22+
1823
/**
1924
* Text viewer component.
2025
*/
2126
export default function TextView({ file, setError }: ViewerProps) {
2227
const [loading, setLoading] = useState(LoadingState.NotLoaded)
23-
const [text, setText] = useState<string | undefined>()
28+
const [content, setContent] = useState<Content>()
2429
const textRef = useRef<HTMLPreElement>(null)
2530

2631
const isUrl = file.startsWith('http://') || file.startsWith('https://')
@@ -32,7 +37,8 @@ export default function TextView({ file, setError }: ViewerProps) {
3237
try {
3338
const res = await fetch(url)
3439
const text = await res.text()
35-
setText(text)
40+
const fileSize = parseFileSize(res.headers) ?? text.length
41+
setContent({ text, fileSize })
3642
} catch (error) {
3743
setError(error as Error)
3844
} finally {
@@ -49,13 +55,13 @@ export default function TextView({ file, setError }: ViewerProps) {
4955
}, [file, loading, setError])
5056

5157
const headers = <>
52-
<span>{text ? newlines(text) : 0} lines</span>
58+
<span>{newlines(content?.text ?? "")} lines</span>
5359
</>
5460

5561
// Simple text viewer
56-
return <ContentHeader content={{ fileSize: text?.length }} headers={headers}>
62+
return <ContentHeader content={content} headers={headers}>
5763
<code className='text' ref={textRef}>
58-
{text}
64+
{content?.text}
5965
</code>
6066

6167
{loading && <Spinner className='center' />}

0 commit comments

Comments
 (0)