mirror of
https://github.com/blitzkit/blitzkit.git
synced 2026-10-21 18:57:03 +02:00
feat: voting averages
This commit is contained in:
1 parent
c3c16bf607
commit
2d2d31adf7
24 files changed
+643
-254
No files matched your search
@@ -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;
|
||||
}
|
||||
@@ -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) };
|
||||
}
|
||||
@@ -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 },
|
||||
});
|
||||
}
|
||||
@@ -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) };
|
||||
}
|
||||
@@ -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';
|
||||
|
||||
|
||||
Reference in new issue
Block a user