Skip to content

Commit

Permalink
Deploy 20240301
Browse files Browse the repository at this point in the history
feat:
- add short link for record
- add short link for level
  • Loading branch information
Teages committed Mar 1, 2024
2 parents 2731c55 + 09e175e commit 2423cc9
Show file tree
Hide file tree
Showing 3 changed files with 68 additions and 0 deletions.
27 changes: 27 additions & 0 deletions pages/s/l[id].ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
export default defineNuxtComponent({
async setup() {
const route = useRoute()
const id = decompressLevelId(route.params.id.toString())

let levelId = id.toString()

try {
const level = await $fetch<{ uid: string }>(
useServiceUrl(`/levels/${id}`),
)
if (level?.uid) {
levelId = level.uid
}
}
catch (error) {
console.error(error)
}
await navigateTo({
name: 'levels-id',
params: { id: levelId },
})
},
render() {
return null // This component doesn't render anything
},
})
14 changes: 14 additions & 0 deletions pages/s/r[uid].ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
export default defineNuxtComponent({
async setup() {
const route = useRoute()
const uid = route.params.uid.toString()
const { chartId, recordId } = decompressRecordId(uid)
await navigateTo({
name: 'records-chartId-id',
params: { chartId, id: recordId },
})
},
render() {
return null // This component doesn't render anything
},
})
27 changes: 27 additions & 0 deletions utils/compress-id.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
export function compressRecordId(chartId: number, recordId: number) {
const base36Num1 = chartId.toString(36)
const base36Num2 = recordId.toString(36)

return `${base36Num1}-${base36Num2}`
}

export function decompressRecordId(compressedId: string) {
const [base36Num1, base36Num2] = compressedId.split('-')
const chartId = Number.parseInt(base36Num1, 36)
const recordId = Number.parseInt(base36Num2, 36)

return { chartId, recordId }
}

export function compressLevelId(levelId: number) {
const base36Num = levelId.toString(36)

return base36Num
}

export function decompressLevelId(compressedId: string) {
const base36Num = compressedId
const id = Number.parseInt(base36Num, 36)

return id
}

0 comments on commit 2423cc9

Please sign in to comment.