enhance(reversi): improve desync handling

This commit is contained in:
syuilo 2024-01-23 10:51:59 +09:00
parent f48f7149f8
commit e8ba0b3f54
17 changed files with 206 additions and 60 deletions

View file

@ -1633,6 +1633,8 @@ declare namespace entities {
ReversiShowGameRequest,
ReversiShowGameResponse,
ReversiSurrenderRequest,
ReversiVerifyRequest,
ReversiVerifyResponse,
Error_2 as Error,
UserLite,
UserDetailedNotMeOnly,
@ -2644,6 +2646,12 @@ type ReversiShowGameResponse = operations['reversi/show-game']['responses']['200
// @public (undocumented)
type ReversiSurrenderRequest = operations['reversi/surrender']['requestBody']['content']['application/json'];
// @public (undocumented)
type ReversiVerifyRequest = operations['reversi/verify']['requestBody']['content']['application/json'];
// @public (undocumented)
type ReversiVerifyResponse = operations['reversi/verify']['responses']['200']['content']['application/json'];
// @public (undocumented)
type Role = components['schemas']['Role'];

View file

@ -1,6 +1,6 @@
/*
* version: 2024.2.0-beta.2
* generatedAt: 2024-01-22T07:11:08.412Z
* version: 2024.2.0-beta.3
* generatedAt: 2024-01-23T01:22:13.177Z
*/
import type { SwitchCaseResponseType } from '../api.js';
@ -4073,5 +4073,16 @@ declare module '../api.js' {
params: P,
credential?: string | null,
): Promise<SwitchCaseResponseType<E, P>>;
/**
* No description provided.
*
* **Credential required**: *No*
*/
request<E extends 'reversi/verify', P extends Endpoints[E]['req']>(
endpoint: E,
params: P,
credential?: string | null,
): Promise<SwitchCaseResponseType<E, P>>;
}
}

View file

@ -1,6 +1,6 @@
/*
* version: 2024.2.0-beta.2
* generatedAt: 2024-01-22T07:11:08.410Z
* version: 2024.2.0-beta.3
* generatedAt: 2024-01-23T01:22:13.175Z
*/
import type {
@ -554,6 +554,8 @@ import type {
ReversiShowGameRequest,
ReversiShowGameResponse,
ReversiSurrenderRequest,
ReversiVerifyRequest,
ReversiVerifyResponse,
} from './entities.js';
export type Endpoints = {
@ -923,4 +925,5 @@ export type Endpoints = {
'reversi/invitations': { req: EmptyRequest; res: ReversiInvitationsResponse };
'reversi/show-game': { req: ReversiShowGameRequest; res: ReversiShowGameResponse };
'reversi/surrender': { req: ReversiSurrenderRequest; res: EmptyResponse };
'reversi/verify': { req: ReversiVerifyRequest; res: ReversiVerifyResponse };
}

View file

@ -1,6 +1,6 @@
/*
* version: 2024.2.0-beta.2
* generatedAt: 2024-01-22T07:11:08.408Z
* version: 2024.2.0-beta.3
* generatedAt: 2024-01-23T01:22:13.173Z
*/
import { operations } from './types.js';
@ -556,3 +556,5 @@ export type ReversiInvitationsResponse = operations['reversi/invitations']['resp
export type ReversiShowGameRequest = operations['reversi/show-game']['requestBody']['content']['application/json'];
export type ReversiShowGameResponse = operations['reversi/show-game']['responses']['200']['content']['application/json'];
export type ReversiSurrenderRequest = operations['reversi/surrender']['requestBody']['content']['application/json'];
export type ReversiVerifyRequest = operations['reversi/verify']['requestBody']['content']['application/json'];
export type ReversiVerifyResponse = operations['reversi/verify']['responses']['200']['content']['application/json'];

View file

@ -1,6 +1,6 @@
/*
* version: 2024.2.0-beta.2
* generatedAt: 2024-01-22T07:11:08.408Z
* version: 2024.2.0-beta.3
* generatedAt: 2024-01-23T01:22:13.172Z
*/
import { components } from './types.js';

View file

@ -2,8 +2,8 @@
/* eslint @typescript-eslint/no-explicit-any: 0 */
/*
* version: 2024.2.0-beta.2
* generatedAt: 2024-01-22T07:11:08.327Z
* version: 2024.2.0-beta.3
* generatedAt: 2024-01-23T01:22:13.093Z
*/
/**
@ -3526,6 +3526,15 @@ export type paths = {
*/
post: operations['reversi/surrender'];
};
'/reversi/verify': {
/**
* reversi/verify
* @description No description provided.
*
* **Credential required**: *No*
*/
post: operations['reversi/verify'];
};
};
export type webhooks = Record<string, never>;
@ -25984,5 +25993,63 @@ export type operations = {
};
};
};
/**
* reversi/verify
* @description No description provided.
*
* **Credential required**: *No*
*/
'reversi/verify': {
requestBody: {
content: {
'application/json': {
/** Format: misskey:id */
gameId: string;
crc32: string;
};
};
};
responses: {
/** @description OK (with results) */
200: {
content: {
'application/json': {
desynced: boolean;
game?: components['schemas']['ReversiGameDetailed'] | null;
};
};
};
/** @description Client error */
400: {
content: {
'application/json': components['schemas']['Error'];
};
};
/** @description Authentication error */
401: {
content: {
'application/json': components['schemas']['Error'];
};
};
/** @description Forbidden error */
403: {
content: {
'application/json': components['schemas']['Error'];
};
};
/** @description I'm Ai */
418: {
content: {
'application/json': components['schemas']['Error'];
};
};
/** @description Internal server error */
500: {
content: {
'application/json': components['schemas']['Error'];
};
};
};
};
};