feat: voting averages

This commit is contained in:
TrèsAbhi committed 2024-09-01 15:46:39 -05:00
1 parent c3c16bf607
commit 2d2d31adf7
24 files changed
+643 -254

No files matched your search

+32
View File
@@ -0,0 +1,32 @@
import { Region } from '../../constants/regions';
import { WARGAMING_APPLICATION_ID } from '../../constants/wargamingApplicationID';
import { idToRegion } from './idToRegion';
export async function isValidBlitzId(id: number, token?: string) {
let region: Region;
try {
region = idToRegion(id);
} catch (error) {
return false;
}
const json = await fetch(
`https://api.wotblitz.com/wotb/account/info/?account_id=${
id
}&application_id=${WARGAMING_APPLICATION_ID}${
token === undefined ? '' : `&access_token=${token}`
}&fields=account_id%2C-account_id`,
).then(
(response) =>
response.json() as Promise<
| {
status: 'ok';
data: Record<number, {} | null>;
}
| { status: 'error' }
>,
);
return json.status === 'ok' && json.data[id] !== null;
}
-30
View File
@@ -1,30 +0,0 @@
import { usersDatabase } from '../../databases/users';
import { idToRegion } from '../blitz/idToRegion';
export async function flagUserActivity(blitz: number) {
await usersDatabase.users.upsert({
where: { blitz },
update: {},
create: { blitz },
});
}
export async function linkBlitzAndDiscord(discord: bigint, blitz: number) {
await usersDatabase.discordUsers.upsert({
where: { discord },
update: { blitz },
create: { discord, blitz },
});
await flagUserActivity(blitz);
}
export async function getBlitzFromDiscord(discord: bigint) {
const unique = await usersDatabase.discordUsers.findUnique({
where: { discord },
});
if (unique === null) return null;
await flagUserActivity(unique.blitz);
return { id: unique.blitz, region: idToRegion(unique.blitz) };
}
+9
View File
@@ -0,0 +1,9 @@
import { usersDatabase } from '../../databases/users';
export async function flagUserActivity(blitzId: number) {
await usersDatabase.user.upsert({
where: { blitz_id: blitzId },
update: {},
create: { blitz_id: blitzId },
});
}
+14
View File
@@ -0,0 +1,14 @@
import { usersDatabase } from '../../databases/users';
import { idToRegion } from '../blitz/idToRegion';
import { flagUserActivity } from './flagUserActivity';
export async function getBlitzFromDiscord(discordId: bigint) {
const unique = await usersDatabase.discordUser.findUnique({
where: { discord_id: discordId },
});
if (unique === null) return null;
await flagUserActivity(unique.blitz_id);
return { id: unique.blitz_id, region: idToRegion(unique.blitz_id) };
}
+11
View File
@@ -0,0 +1,11 @@
import { usersDatabase } from '../../databases/users';
import { flagUserActivity } from './flagUserActivity';
export async function linkBlitzAndDiscord(discordId: bigint, blitzId: number) {
await usersDatabase.discordUser.upsert({
where: { discord_id: discordId },
update: { blitz_id: blitzId },
create: { discord_id: discordId, blitz_id: blitzId },
});
await flagUserActivity(blitzId);
}
@@ -0,0 +1,9 @@
import { BlitzkitResponse } from '../../hooks/useTankVotes';
export function unwrapBlitzkitResponse<Data>(response: BlitzkitResponse<Data>) {
if (response.status === 'error') {
throw new Error(response.error, { cause: response.message });
}
return response.data;
}
@@ -3,7 +3,7 @@ import markdownEscape from 'markdown-escape';
import { Region } from '../../../constants/regions';
import { UserError } from '../../../hooks/userError';
import searchPlayersAcrossRegions from '../../blitz/searchPlayersAcrossRegions';
import { getBlitzFromDiscord } from '../../blitzkit/discordBlitzLink';
import { getBlitzFromDiscord } from '../../blitzkit/getBlitzFromDiscord';
import { translator } from '../../localization/translator';
import { serverAndIdPattern } from './constants';