summaryrefslogtreecommitdiff
path: root/packages/backend/src/misc/generate-invite-code.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/backend/src/misc/generate-invite-code.ts')
-rw-r--r--packages/backend/src/misc/generate-invite-code.ts20
1 files changed, 20 insertions, 0 deletions
diff --git a/packages/backend/src/misc/generate-invite-code.ts b/packages/backend/src/misc/generate-invite-code.ts
new file mode 100644
index 0000000000..617b27361d
--- /dev/null
+++ b/packages/backend/src/misc/generate-invite-code.ts
@@ -0,0 +1,20 @@
+import { secureRndstr } from './secure-rndstr.js';
+
+const CHARS = '23456789ABCDEFGHJKLMNPQRSTUVWXYZ'; // [0-9A-Z] w/o [01IO] (32 patterns)
+
+export function generateInviteCode(): string {
+ const code = secureRndstr(8, {
+ chars: CHARS,
+ });
+
+ const uniqueId = [];
+ let n = Math.floor(Date.now() / 1000 / 60);
+ while (true) {
+ uniqueId.push(CHARS[n % CHARS.length]);
+ const t = Math.floor(n / CHARS.length);
+ if (!t) break;
+ n = t;
+ }
+
+ return code + uniqueId.reverse().join('');
+}