import { FormModalUiHandler } from "./form-modal-ui-handler"; import { ModalConfig } from "./modal-ui-handler"; import i18next from "i18next"; import { PlayerPokemon } from "#app/field/pokemon"; export default class RenameFormUiHandler extends FormModalUiHandler { getModalTitle(config?: ModalConfig): string { return i18next.t("menu:renamePokemon"); } getFields(config?: ModalConfig): string[] { return [ i18next.t("menu:nickname") ]; } getWidth(config?: ModalConfig): number { return 160; } getMargin(config?: ModalConfig): [number, number, number, number] { return [ 0, 0, 48, 0 ]; } getButtonLabels(config?: ModalConfig): string[] { return [ i18next.t("menu:rename"), i18next.t("menu:cancel") ]; } getReadableErrorMessage(error: string): string { const colonIndex = error?.indexOf(":"); if (colonIndex > 0) { error = error.slice(0, colonIndex); } return super.getReadableErrorMessage(error); } show(args: any[]): boolean { if (super.show(args)) { const config = args[0] as ModalConfig; if (args[1] && typeof (args[1] as PlayerPokemon).getNameToRender === "function") { this.inputs[0].text = (args[1] as PlayerPokemon).getNameToRender(); } else { this.inputs[0].text = args[1]; } this.submitAction = (_) => { this.sanitizeInputs(); const sanitizedName = btoa(unescape(encodeURIComponent(this.inputs[0].text))); config.buttonActions[0](sanitizedName); return true; }; return true; } return false; } }