2023-07-27 07:31:52 +02:00
|
|
|
/*
|
2024-02-12 03:37:45 +01:00
|
|
|
* SPDX-FileCopyrightText: syuilo and misskey-project
|
2023-07-27 07:31:52 +02:00
|
|
|
* SPDX-License-Identifier: AGPL-3.0-only
|
|
|
|
*/
|
|
|
|
|
2023-07-15 02:57:58 +02:00
|
|
|
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('');
|
|
|
|
}
|