Skip to content

Commit ab9807e

Browse files
committed
download script, moved sortOptions to separate file, commented env var
1 parent 767c27a commit ab9807e

8 files changed

Lines changed: 74 additions & 61 deletions

File tree

package.json

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@
88
"build": "tsc -b && vite build",
99
"preview": "vite preview",
1010
"lint": "eslint .",
11-
"format": "prettier --write \"src/**/*.{js,jsx,ts,tsx,css,html}\""
11+
"format": "prettier --write \"src/**/*.{js,jsx,ts,tsx,css,html}\"",
12+
"download": "node ./src/lib/download.ts"
1213
},
1314
"dependencies": {
1415
"@fontsource-variable/inter": "^5.2.8",
@@ -23,7 +24,7 @@
2324
"class-variance-authority": "^0.7.1",
2425
"clsx": "^2.1.1",
2526
"embla-carousel-react": "^8.6.0",
26-
"lucide-react": "^0.561.0",
27+
"lucide-react": "^0.562.0",
2728
"react": "^19.2.3",
2829
"react-dom": "^19.2.3",
2930
"tailwind-merge": "^3.4.0"
@@ -33,7 +34,7 @@
3334
"@tailwindcss/vite": "^4.1.18",
3435
"@tanstack/eslint-plugin-query": "^5.91.2",
3536
"@tanstack/react-query-devtools": "^5.91.1",
36-
"@types/node": "^22.15.30",
37+
"@types/node": "^24.10.4",
3738
"@types/react": "^19.2.7",
3839
"@types/react-dom": "^19.2.3",
3940
"@vitejs/plugin-react-swc": "^4.2.2",

pnpm-lock.yaml

Lines changed: 23 additions & 23 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/components/PaginationRow.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ import { ToggleGroup, ToggleGroupItem } from '@/components/ui/toggle-group'
2222
import { LayoutGrid, LayoutList, AlignJustify } from 'lucide-react'
2323
import type { View } from '@/components/VinylBrowser'
2424

25-
import { type SortingOption, sortOptions } from '@/lib/getUserCollection'
25+
import { type SortingOption, sortOptions } from '@/lib/sort'
2626

2727
type PaginationRowProps = {
2828
pagination: PaginationType

src/components/VinylBrowser.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@ import { useState } from 'react'
22
import { useQuery } from '@tanstack/react-query'
33
import { getUserCollection } from '@/lib/getUserCollection'
44
import { getRelease } from '@/lib/getRelease'
5+
import { sortOptions } from '@/lib/sort'
56
import { Spinner } from '@/components/ui/spinner'
67
import { PaginationRow } from '@/components/PaginationRow'
78
import { AlbumCoversTextGrid } from '@/components/AlbumCoversTextGrid'
89
import { AlbumCoversGrid } from '@/components/AlbumCoversGrid'
910
import { AlbumTextList } from '@/components/AlbumTextList'
1011
import { AlbumDetails } from '@/components/AlbumDetails'
11-
import { sortOptions } from '@/lib/getUserCollection'
1212

1313
type VinylBrowserProps = {
1414
user: string

src/lib/download.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import { getUserCollection } from './getUserCollection.ts'
2+
import fs from 'node:fs'
3+
4+
const main = async () => {
5+
const vinyls = await getUserCollection({ user: 'davidlyons', perPage: 100 })
6+
fs.writeFileSync('src/lib/vinyls.json', JSON.stringify(vinyls, null, 4))
7+
console.log('Vinyls data written to vinyls.json')
8+
}
9+
10+
main()

src/lib/getRelease.ts

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,14 @@ import type { Release } from '@/lib/types-release'
44

55
// get user's vinyl collection
66
export const getRelease = async (id: number | undefined) => {
7-
const response = await fetch(`https://api.discogs.com/releases/${id}`, {
8-
headers: {
9-
Authorization: `Discogs token=${import.meta.env.DISCOGS_TOKEN}`,
10-
},
11-
})
7+
const response = await fetch(
8+
`https://api.discogs.com/releases/${id}`
9+
// {
10+
// headers: {
11+
// Authorization: `Discogs token=${import.meta.env.DISCOGS_TOKEN}`,
12+
// },
13+
// }
14+
)
1215

1316
if (!response.ok) {
1417
throw new Error(`Error: ${response.status}`)

src/lib/getUserCollection.ts

Lines changed: 6 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,12 @@ export const getUserCollection = async ({
2424
const response = await fetch(
2525
// 0 is the folder ID for the main collection
2626
// per_page default is 50, can be up to 100
27-
`https://api.discogs.com/users/${user}/collection/folders/0/releases?page=${page}&per_page=${perPage}&sort=${sort}&sort_order=${sortOrder}`,
28-
{
29-
headers: {
30-
Authorization: `Discogs token=${import.meta.env.DISCOGS_TOKEN}`,
31-
},
32-
}
27+
`https://api.discogs.com/users/${user}/collection/folders/0/releases?page=${page}&per_page=${perPage}&sort=${sort}&sort_order=${sortOrder}`
28+
// {
29+
// headers: {
30+
// Authorization: `Discogs token=${import.meta.env.DISCOGS_TOKEN}`,
31+
// },
32+
// }
3333
)
3434

3535
if (!response.ok) {
@@ -40,25 +40,3 @@ export const getUserCollection = async ({
4040

4141
return data
4242
}
43-
44-
// ------------------------------------------------------------------------------
45-
46-
export type SortingOption = {
47-
value: string
48-
name: CollectionParams['sort']
49-
order: CollectionParams['sortOrder']
50-
label: string
51-
}
52-
53-
export const sortOptions: SortingOption[] = [
54-
{ value: 'added-desc', name: 'added', order: 'desc', label: 'Newest Addition' },
55-
{ value: 'added-asc', name: 'added', order: 'asc', label: 'Oldest Addition' },
56-
{ value: 'title-asc', name: 'title', order: 'asc', label: 'Title (A-Z)' },
57-
{ value: 'title-desc', name: 'title', order: 'desc', label: 'Title (Z-A)' },
58-
{ value: 'artist-asc', name: 'artist', order: 'asc', label: 'Artist (A-Z)' },
59-
{ value: 'artist-desc', name: 'artist', order: 'desc', label: 'Artist (Z-A)' },
60-
{ value: 'year-asc', name: 'year', order: 'asc', label: 'Year (0-9)' },
61-
{ value: 'year-desc', name: 'year', order: 'desc', label: 'Year (9-0)' },
62-
{ value: 'format-asc', name: 'format', order: 'asc', label: 'Format (A-Z)' },
63-
{ value: 'format-desc', name: 'format', order: 'desc', label: 'Format (Z-A)' },
64-
]

src/lib/sort.ts

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import type { CollectionParams } from './getUserCollection'
2+
3+
export type SortingOption = {
4+
value: string
5+
name: CollectionParams['sort']
6+
order: CollectionParams['sortOrder']
7+
label: string
8+
}
9+
10+
export const sortOptions: SortingOption[] = [
11+
{ value: 'added-desc', name: 'added', order: 'desc', label: 'Newest Addition' },
12+
{ value: 'added-asc', name: 'added', order: 'asc', label: 'Oldest Addition' },
13+
{ value: 'title-asc', name: 'title', order: 'asc', label: 'Title (A-Z)' },
14+
{ value: 'title-desc', name: 'title', order: 'desc', label: 'Title (Z-A)' },
15+
{ value: 'artist-asc', name: 'artist', order: 'asc', label: 'Artist (A-Z)' },
16+
{ value: 'artist-desc', name: 'artist', order: 'desc', label: 'Artist (Z-A)' },
17+
{ value: 'year-asc', name: 'year', order: 'asc', label: 'Year (0-9)' },
18+
{ value: 'year-desc', name: 'year', order: 'desc', label: 'Year (9-0)' },
19+
{ value: 'format-asc', name: 'format', order: 'asc', label: 'Format (A-Z)' },
20+
{ value: 'format-desc', name: 'format', order: 'desc', label: 'Format (Z-A)' },
21+
]

0 commit comments

Comments
 (0)