Merge branch 'main' into separate-uploads

pull/253/head
Lorenzo Palaia 8 months ago committed by GitHub
commit c459ccac36
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -36,7 +36,7 @@
"@tanstack/react-query": "^5.55.2", "@tanstack/react-query": "^5.55.2",
"autoprefixer": "^10.4.20", "autoprefixer": "^10.4.20",
"debug": "^4.3.6", "debug": "^4.3.6",
"express": "^4.19.2", "express": "^5.0.0",
"ioredis": "^5.4.2", "ioredis": "^5.4.2",
"next": "^15.1.3", "next": "^15.1.3",
"next-themes": "^0.4.4", "next-themes": "^0.4.4",

File diff suppressed because it is too large Load Diff

@ -38,7 +38,7 @@ async function generateShortSlugUntilUnique(
checkExists: (key: string) => Promise<boolean>, checkExists: (key: string) => Promise<boolean>,
): Promise<string> { ): Promise<string> {
for (let i = 0; i < config.shortSlug.maxAttempts; i++) { for (let i = 0; i < config.shortSlug.maxAttempts; i++) {
const slug = generateShortSlug() const slug = await generateShortSlug()
const exists = await checkExists(getShortSlugKey(slug)) const exists = await checkExists(getShortSlugKey(slug))
if (!exists) { if (!exists) {
return slug return slug

@ -53,7 +53,7 @@ export default function Uploader({
return ( return (
<> <>
<div className="flex w-full items-center"> <div className="flex w-full items-center">
<div className="flex-none mr-4"> <div className="flex-none mr-4 bg-white p-2">
<QRCode value={shortURL ?? ''} size={QR_CODE_SIZE} /> <QRCode value={shortURL ?? ''} size={QR_CODE_SIZE} />
</div> </div>
<div className="flex-auto flex flex-col justify-center space-y-2"> <div className="flex-auto flex flex-col justify-center space-y-2">

@ -86,6 +86,7 @@ export function useDownloader(uploaderPeerID: string): {
break break
case MessageType.Info: case MessageType.Info:
setFilesInfo(message.files) setFilesInfo(message.files)
setIsPasswordRequired(false)
break break
case MessageType.Chunk: case MessageType.Chunk:
processChunk.current?.(message) processChunk.current?.(message)

@ -25,12 +25,17 @@ function generateRandomWords(
} }
const getRandomInt = (max: number): number => { const getRandomInt = (max: number): number => {
const buffer = new Uint32Array(1) const limit = 4294967295 - (4294967295 % max) // uint32 max
let buffer = new Uint32Array(1)
do {
if (typeof window !== 'undefined' && window.crypto) { if (typeof window !== 'undefined' && window.crypto) {
window.crypto.getRandomValues(buffer) window.crypto.getRandomValues(buffer)
} else { } else {
crypto.randomFillSync(buffer) crypto.randomFillSync(buffer)
} }
} while (buffer[0] >= limit)
return buffer[0] % max return buffer[0] % max
} }
@ -44,15 +49,12 @@ function generateRandomWords(
}) })
} }
export const generateShortSlug = (): string => { export const generateShortSlug = async (): Promise<string> => {
let result = '' const parts = await generateRandomWords(
for (let i = 0; i < config.shortSlug.numChars; i++) { config.shortSlug.chars.split(''),
result += config.shortSlug.numChars,
config.shortSlug.chars[ )
Math.floor(Math.random() * config.shortSlug.chars.length) return parts.join('')
]
}
return result
} }
export const generateLongSlug = async (): Promise<string> => { export const generateLongSlug = async (): Promise<string> => {

Loading…
Cancel
Save