6540f15c5b
* Wrap websockets with HyperExpress * Add endpoints on pusher to resolve wokas * getting textures urls from pusher * Adding OpenAPI documentation for the pusher. The pusher now exposes a "/openapi" endpoint and a "/swagger-ui/" endpoint. * revert FRONT_URL * playerTextures metadata is being loaded via Phaser.Loader * fetch textures every time character or customize scene is open * Heavy changes: refactoring the pusher to always send the textures (and the front to accept them) * Sending character layer details to admin * Cleaning commented code * Fixing regex * Fix woka endpoints on pusher * Change error wording on pusher * Working on integration of the woka-list with the new admin endpoint. * Switching from "name" to "id" in texture object + using zod for woka/list validation * Add position on default woka data * Remove async on pusher option method * Fix woka list url * add options for /register * Fxiing loading the Woka list * Actually returning something in logout-callback * Copying messages to back too * remove customize button if no body parts are available (#1952) * remove customize button if no body parts are available * remove unused position field from PlayerTexturesCollection interface * removed unused label field * fix LocalUser test * little PlayerTextures class refactor * Fixing linting * Fixing missing Openapi packages in prod * Fixing back build Co-authored-by: Hanusiak Piotr <piotr@ltmp.co> Co-authored-by: David Négrier <d.negrier@thecodingmachine.com> * Add returns on pusher endpoints Co-authored-by: Alexis Faizeau <a.faizeau@workadventu.re> Co-authored-by: Hanusiak Piotr <piotr@ltmp.co> Co-authored-by: Piotr Hanusiak <wacneg@gmail.com>
32 lines
906 B
TypeScript
32 lines
906 B
TypeScript
import { MAX_USERNAME_LENGTH } from "../Enum/EnvironmentVariable";
|
|
|
|
export type LayerNames = "woka" | "body" | "eyes" | "hair" | "clothes" | "hat" | "accessory";
|
|
|
|
export interface CharacterTexture {
|
|
id: string;
|
|
layer: LayerNames;
|
|
url: string;
|
|
}
|
|
|
|
export const maxUserNameLength: number = MAX_USERNAME_LENGTH;
|
|
|
|
export function isUserNameValid(value: unknown): boolean {
|
|
return typeof value === "string" && value.length > 0 && value.length <= maxUserNameLength && /\S/.test(value);
|
|
}
|
|
|
|
export function areCharacterLayersValid(value: string[] | null): boolean {
|
|
if (!value || !value.length) {
|
|
return false;
|
|
}
|
|
for (const layerName of value) {
|
|
if (layerName.length === 0 || layerName === " ") {
|
|
return false;
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
|
|
export class LocalUser {
|
|
constructor(public readonly uuid: string, public email: string | null = null) {}
|
|
}
|