mirror of
https://github.com/pagefaultgames/pokerogue.git
synced 2025-06-20 16:42:45 +02:00
* start migrating Utils.apiFetch to api class
* move dailyranking to api
* use api in title-ui-handler
* remove: Utils.apiFetch
* migrate `updateSystemSavedata` to api
* migrate clear session savedata to api
* migrate updateAllSavedata to api
* migrate `updateSessionSavedata` to api
* rename `api` to `pokerogue-api`
* migrate unlink discord to pokerogue-api
* migrate unlink google to pokerogue-api
* update pokerogue-api login
* migrate register account to pokerogue-api
* remove Utils.apiPost
* reset overrides.ts
* chore: cleanup
* fix env.development
* fix circular dependencies with api
* fix gamedata verify missing await
* fix daily api calls in daily-run-scorebard
* fix discord-link request body being empty
there was a double `toUrlSearchParams()` call involved
* add pokerogue-api test coverge
* add test-utils `getApiBaseUrl()` method
* add pokerogue-admin-api test coverage
* add pokerogue-account-api test coverage
* add pokerogue-daily-api test coverage
* add pokerogue-savedata-api test coverage
* fix some test describes
* add pokerogue-session-savedata-api test coverage
* add pokerogue-system-savedata-api test coverage
* fix tests
* fix tryExportData
thanks @MokaStitcher
* chore: fix menu-ui-handlers.ts
* fix admin-ui-handler (types)
* extend test-coverage for admin-api
* remove outdated code
* skip some clowning-around-encounter tests if events are active
this is not a permanent solution
* Update src/system/game-data.ts
Co-authored-by: PigeonBar <56974298+PigeonBar@users.noreply.github.com>
* Revert "skip some clowning-around-encounter tests if events are active"
This reverts commit a97dafe8b2
.
* mark `localServerUrl` and `apiUrl` as deprecated
in `utils.ts`
---------
Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
Co-authored-by: PigeonBar <56974298+PigeonBar@users.noreply.github.com>
116 lines
3.7 KiB
TypeScript
116 lines
3.7 KiB
TypeScript
import type {
|
|
ClearSessionSavedataRequest,
|
|
ClearSessionSavedataResponse,
|
|
DeleteSessionSavedataRequest,
|
|
GetSessionSavedataRequest,
|
|
NewClearSessionSavedataRequest,
|
|
UpdateSessionSavedataRequest,
|
|
} from "#app/@types/PokerogueSessionSavedataApi";
|
|
import { ApiBase } from "#app/plugins/api/api-base";
|
|
import type { SessionSaveData } from "#app/system/game-data";
|
|
|
|
/**
|
|
* A wrapper for PokéRogue session savedata API requests.
|
|
*/
|
|
export class PokerogueSessionSavedataApi extends ApiBase {
|
|
//#region Public
|
|
|
|
/**
|
|
* Mark a session as cleared aka "newclear".\
|
|
* *This is **NOT** the same as {@linkcode clear | clear()}.*
|
|
* @param params The {@linkcode NewClearSessionSavedataRequest} to send
|
|
* @returns The raw savedata as `string`.
|
|
*/
|
|
public async newclear(params: NewClearSessionSavedataRequest) {
|
|
try {
|
|
const urlSearchParams = this.toUrlSearchParams(params);
|
|
const response = await this.doGet(`/savedata/session/newclear?${urlSearchParams}`);
|
|
const json = await response.json();
|
|
|
|
return Boolean(json);
|
|
} catch (err) {
|
|
console.warn("Could not newclear session!", err);
|
|
return false;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Get a session savedata.
|
|
* @param params The {@linkcode GetSessionSavedataRequest} to send
|
|
* @returns The session as `string`
|
|
*/
|
|
public async get(params: GetSessionSavedataRequest) {
|
|
try {
|
|
const urlSearchParams = this.toUrlSearchParams(params);
|
|
const response = await this.doGet(`/savedata/session/get?${urlSearchParams}`);
|
|
|
|
return await response.text();
|
|
} catch (err) {
|
|
console.warn("Could not get session savedata!", err);
|
|
return null;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Update a session savedata.
|
|
* @param params The {@linkcode UpdateSessionSavedataRequest} to send
|
|
* @param rawSavedata The raw savedata (as `string`)
|
|
* @returns An error message if something went wrong
|
|
*/
|
|
public async update(params: UpdateSessionSavedataRequest, rawSavedata: string) {
|
|
try {
|
|
const urlSearchParams = this.toUrlSearchParams(params);
|
|
const response = await this.doPost(`/savedata/session/update?${urlSearchParams}`, rawSavedata);
|
|
|
|
return await response.text();
|
|
} catch (err) {
|
|
console.warn("Could not update session savedata!", err);
|
|
}
|
|
|
|
return "Unknown Error!";
|
|
}
|
|
|
|
/**
|
|
* Delete a session savedata slot.
|
|
* @param params The {@linkcode DeleteSessionSavedataRequest} to send
|
|
* @returns An error message if something went wrong
|
|
*/
|
|
public async delete(params: DeleteSessionSavedataRequest) {
|
|
try {
|
|
const urlSearchParams = this.toUrlSearchParams(params);
|
|
const response = await this.doGet(`/savedata/session/delete?${urlSearchParams}`);
|
|
|
|
if (response.ok) {
|
|
return null;
|
|
} else {
|
|
return await response.text();
|
|
}
|
|
} catch (err) {
|
|
console.warn("Could not delete session savedata!", err);
|
|
return "Unknown error";
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Clears the session savedata of the given slot.\
|
|
* *This is **NOT** the same as {@linkcode newclear | newclear()}.*
|
|
* @param params The {@linkcode ClearSessionSavedataRequest} to send
|
|
* @param sessionData The {@linkcode SessionSaveData} object
|
|
*/
|
|
public async clear(params: ClearSessionSavedataRequest, sessionData: SessionSaveData) {
|
|
try {
|
|
const urlSearchParams = this.toUrlSearchParams(params);
|
|
const response = await this.doPost(`/savedata/session/clear?${urlSearchParams}`, sessionData);
|
|
|
|
return (await response.json()) as ClearSessionSavedataResponse;
|
|
} catch (err) {
|
|
console.warn("Could not clear session savedata!", err);
|
|
}
|
|
|
|
return {
|
|
error: "Unknown error",
|
|
success: false,
|
|
} as ClearSessionSavedataResponse;
|
|
}
|
|
}
|