We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
1 parent bda4db8 commit a689bf4Copy full SHA for a689bf4
src/lib/layout/Home.svelte
@@ -9,10 +9,25 @@
9
10
async function filesDropped(files: FileList) {
11
const file = files[0];
12
+ let data: any;
13
- // TODO: file validation
14
+ try {
15
+ data = JSON.parse(await file.text()) as StatsData;
16
+ } catch(e) {
17
+ return `Invalid file format: ${e}`;
18
+ }
19
+
20
+ if(typeof(data) == "object" && Array.isArray(data)) {
21
+ return "Invalid file format: Expected Object got Array for root.";
22
23
- const data = JSON.parse(await file.text()) as StatsData;
24
+ if(!data["songs"]) {
25
+ return "Invalid file format: missing 'songs' field";
26
27
28
+ if(!Array.isArray(data["songs"])) {
29
+ return "Invalid file format: 'songs' must be an array";
30
31
32
setStats(new Stats(data));
33
}
0 commit comments