Files
ultimate-ban-tracker/frontend/electron/services/backend.ts
Nils Pukropp 64fe49e58e
Some checks failed
Build and Release / build (push) Has been cancelled
init
2026-02-21 01:48:48 +01:00

95 lines
2.7 KiB
TypeScript

import axios from 'axios';
export class BackendService {
private url: string;
private token?: string;
constructor(url: string, token?: string) {
this.url = url;
this.token = token;
}
private get headers() {
return {
Authorization: `Bearer ${this.token}`,
'Content-Type': 'application/json'
};
}
public async getSharedAccounts() {
if (!this.token) return [];
try {
const response = await axios.get(`${this.url}/api/sync`, { headers: this.headers });
return response.data;
} catch (e) {
console.error('[Backend] Failed to fetch shared accounts');
return [];
}
}
public async getCommunityAccounts() {
if (!this.token) return [];
try {
const response = await axios.get(`${this.url}/api/sync/community`, { headers: this.headers });
return response.data;
} catch (e) {
console.error('[Backend] Failed to fetch community accounts');
return [];
}
}
public async getServerUsers() {
if (!this.token) return [];
try {
const response = await axios.get(`${this.url}/api/sync/users`, { headers: this.headers });
return response.data;
} catch (e) {
console.error('[Backend] Failed to fetch server users');
return [];
}
}
public async shareAccount(account: any) {
if (!this.token) return;
try {
await axios.post(`${this.url}/api/sync`, {
steamId: account.steamId,
personaName: account.personaName,
avatar: account.avatar,
profileUrl: account.profileUrl,
vacBanned: account.vacBanned,
gameBans: account.gameBans,
loginName: account.loginName,
steamLoginSecure: account.steamLoginSecure,
loginConfig: account.loginConfig
}, { headers: this.headers });
} catch (e) {
console.error('[Backend] Failed to share account');
}
}
public async pushCooldown(steamId: string, cooldownExpiresAt?: string) {
if (!this.token) return;
try {
await axios.patch(`${this.url}/api/sync/${steamId}/cooldown`, {
cooldownExpiresAt
}, { headers: this.headers });
} catch (e) {
console.error(`[Backend] Failed to push cooldown for ${steamId}`);
}
}
public async shareWithUser(steamId: string, targetSteamId: string) {
if (!this.token) return;
try {
const response = await axios.post(`${this.url}/api/sync/${steamId}/share`, {
targetSteamId
}, { headers: this.headers });
return response.data;
} catch (e: any) {
console.error(`[Backend] Failed to share account ${steamId} with ${targetSteamId}`);
throw new Error(e.response?.data?.message || 'Failed to share account');
}
}
}