Skip to content

Commit 2a46702

Browse files
fix: Syntax highlighting with long lines and untar content with emojis (#5098)
1 parent 44d3225 commit 2a46702

File tree

5 files changed

+20
-23
lines changed

5 files changed

+20
-23
lines changed

site/js-untar.d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
declare module "js-untar" {
22
interface File {
33
name: string
4-
readAsString: () => string
4+
blob: Blob
55
}
66

77
const Untar: (buffer: ArrayBuffer) => {

site/src/components/SyntaxHighlighter/SyntaxHighlighter.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,9 @@ const useStyles = makeStyles((theme) => ({
3030
background: theme.palette.background.paperLight,
3131
borderRadius: theme.shape.borderRadius,
3232
padding: theme.spacing(2, 3),
33+
// Line breaks are broken when used with line numbers on react-syntax-highlighter
34+
// https://github.com/react-syntax-highlighter/react-syntax-highlighter/pull/483
35+
overflowX: "auto",
3336

3437
"& code": {
3538
color: theme.palette.text.secondary,

site/src/pages/TemplateVersionPage/TemplateVersionPage.test.tsx

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,9 @@ const TEMPLATE_NAME = "coder-ts"
1212
const VERSION_NAME = "12345"
1313
const TERRAFORM_FILENAME = "main.tf"
1414
const README_FILENAME = "readme.md"
15-
const GPG_FILENAME = "key.gpg"
1615
const TEMPLATE_VERSION_FILES = {
1716
[TERRAFORM_FILENAME]: "{}",
1817
[README_FILENAME]: "Readme",
19-
[GPG_FILENAME]: "Some sensitive info",
2018
}
2119

2220
const setup = async () => {
@@ -38,10 +36,9 @@ const setup = async () => {
3836
describe("TemplateVersionPage", () => {
3937
beforeEach(setup)
4038

41-
it("shows the tf and md files only", () => {
39+
it("shows files", () => {
4240
expect(screen.queryByText(TERRAFORM_FILENAME)).toBeInTheDocument()
4341
expect(screen.queryByText(README_FILENAME)).toBeInTheDocument()
44-
expect(screen.queryByText(GPG_FILENAME)).not.toBeInTheDocument()
4542
})
4643

4744
it("shows the right content when click on the file name", async () => {

site/src/util/templateVersion.ts

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -9,26 +9,27 @@ export type TemplateVersionFiles = Record<string, string>
99

1010
export const getTemplateVersionFiles = async (
1111
version: TemplateVersion,
12+
allowedExtensions: string[],
1213
): Promise<TemplateVersionFiles> => {
1314
const files: TemplateVersionFiles = {}
1415
const tarFile = await getFile(version.job.file_id)
16+
const blobs: Record<string, Blob> = {}
17+
1518
await untar(tarFile).then(undefined, undefined, async (file) => {
1619
const paths = file.name.split("/")
1720
const filename = paths[paths.length - 1]
18-
files[filename] = file.readAsString()
21+
const [_, extension] = filename.split(".")
22+
23+
if (allowedExtensions.includes(extension)) {
24+
blobs[filename] = file.blob
25+
}
1926
})
20-
return files
21-
}
2227

23-
export const filterTemplateFilesByExtension = (
24-
files: TemplateVersionFiles,
25-
extensions: string[],
26-
): TemplateVersionFiles => {
27-
return Object.keys(files).reduce((filteredFiles, filename) => {
28-
const [_, extension] = filename.split(".")
28+
await Promise.all(
29+
Object.entries(blobs).map(async ([filename, blob]) => {
30+
files[filename] = await blob.text()
31+
}),
32+
)
2933

30-
return extensions.includes(extension)
31-
? { ...filteredFiles, [filename]: files[filename] }
32-
: filteredFiles
33-
}, {} as TemplateVersionFiles)
34+
return files
3435
}

site/src/xServices/templateVersion/templateVersionXService.ts

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import { getTemplateVersionByName } from "api/api"
22
import { TemplateVersion } from "api/typesGenerated"
33
import {
4-
filterTemplateFilesByExtension,
54
getTemplateVersionFiles,
65
TemplateVersionFiles,
76
} from "util/templateVersion"
@@ -86,10 +85,7 @@ export const templateVersionMachine = createMachine(
8685
if (!version) {
8786
throw new Error("Version is not defined")
8887
}
89-
return filterTemplateFilesByExtension(
90-
await getTemplateVersionFiles(version),
91-
["tf", "md"],
92-
)
88+
return getTemplateVersionFiles(version, ["tf", "md"])
9389
},
9490
},
9591
},

0 commit comments

Comments
 (0)