From 4a802b2d062f4ff7ffc9309605f8fd01e04996f9 Mon Sep 17 00:00:00 2001 From: Gavin McDonald Date: Wed, 9 Apr 2025 12:11:51 -0400 Subject: [PATCH] random game IDs --- app/page.tsx | 4 ++-- package-lock.json | 52 +++++++++++++++++++++++++++-------------- tools/getRandomItems.js | 12 ---------- tools/simpleID.ts | 6 +++-- 4 files changed, 41 insertions(+), 33 deletions(-) delete mode 100644 tools/getRandomItems.js diff --git a/app/page.tsx b/app/page.tsx index cf4a8dd..31e9c0c 100644 --- a/app/page.tsx +++ b/app/page.tsx @@ -1,12 +1,12 @@ 'use client'; import { useRouter } from 'next/navigation'; -//import generateID from '@/tools/simpleID'; +import generateID from '@/tools/simpleID'; export default function Home() { const router = useRouter(); const handleCreateGame = () => { - const id = 'abc123'; //generateID(); + const id = generateID(); router.push(`/${id}`); }; diff --git a/package-lock.json b/package-lock.json index 7aab1b2..9898f56 100644 --- a/package-lock.json +++ b/package-lock.json @@ -789,6 +789,24 @@ "tailwindcss": "4.1.3" } }, + "node_modules/@tailwindcss/postcss/node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, "node_modules/@tailwindcss/postcss/node_modules/postcss": { "version": "8.5.3", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz", @@ -1671,23 +1689,6 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" }, - "node_modules/nanoid": { - "version": "3.3.11", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", - "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, "node_modules/negotiator": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", @@ -1846,6 +1847,23 @@ "node": "^10 || ^12 || >=14" } }, + "node_modules/postcss/node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, "node_modules/pstree.remy": { "version": "1.1.8", "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", diff --git a/tools/getRandomItems.js b/tools/getRandomItems.js deleted file mode 100644 index d67c0db..0000000 --- a/tools/getRandomItems.js +++ /dev/null @@ -1,12 +0,0 @@ -export default function getRandomItems(items, count) { - const shuffled = [...items]; - - // Fisher-Yates shuffle - for (let i = shuffled.length - 1; i > 0; i--) { - const j = Math.floor(Math.random() * (i + 1)); - [shuffled[i], shuffled[j]] = [shuffled[j], shuffled[i]]; - } - - return count > shuffled.length ? shuffled : shuffled.slice(0, count); -} - diff --git a/tools/simpleID.ts b/tools/simpleID.ts index 581c0f8..7255844 100644 --- a/tools/simpleID.ts +++ b/tools/simpleID.ts @@ -1,8 +1,10 @@ -import { customAlphabet } from 'nanoid'; +import getRandomItems from '@/tools/getRandomItems'; const alphabet = '0123456789abcdefghijklmnopqrstuvwxyz'; -const generateID = (length: number = 6) => customAlphabet(alphabet, length); +const generateID = (length: number = 6) => { + return getRandomItems(alphabet.split(''), length).join(''); +}; export default generateID;