mirror of
https://github.com/Sendouc/sendou.ink.git
synced 2026-09-12 14:16:04 -05:00
Progress
This commit is contained in:
@@ -3,13 +3,6 @@ import * as SearchParams from "~/modules/search-params/search-params";
|
||||
import { SP } from "~/modules/search-params/search-params";
|
||||
import { MapPool } from "./core/map-pool";
|
||||
|
||||
// xxx: consider where we really need to support legacy
|
||||
const presenceBoolean = z.codec(z.string(), z.boolean(), {
|
||||
// legacy decode fallback: bare `?readonly` (empty value) counts as true
|
||||
decode: (value) => value === "" || value === "true",
|
||||
encode: (value) => String(value),
|
||||
});
|
||||
|
||||
export const mapListGeneratorSearchParams = SearchParams.define({
|
||||
pool: SP.param(z.string(), {
|
||||
default: MapPool.ANARCHY.serialized,
|
||||
@@ -21,5 +14,5 @@ export const mapListGeneratorSearchParams = SearchParams.define({
|
||||
resets: ["pool"],
|
||||
loader: false,
|
||||
}),
|
||||
readonly: SP.custom(presenceBoolean, { default: false, loader: false }),
|
||||
readonly: SP.param(z.boolean(), { default: false, loader: false }),
|
||||
});
|
||||
|
||||
@@ -2,7 +2,6 @@ import { z } from "zod";
|
||||
import { rankedModesShort } from "~/modules/in-game-lists/modes";
|
||||
import * as SearchParams from "~/modules/search-params/search-params";
|
||||
import { SP } from "~/modules/search-params/search-params";
|
||||
import { decompressFromBase64 } from "~/utils/compression";
|
||||
import { modeShort } from "~/utils/zod";
|
||||
import { DEFAULT_TIERS } from "./tier-list-maker-constants";
|
||||
import {
|
||||
@@ -19,7 +18,7 @@ const EMPTY_TIER_LIST_STATE: TierListState = {
|
||||
const tierListState = z.codec(z.string(), z.custom<TierListState>(), {
|
||||
decode: (value, payload) => {
|
||||
const serialized =
|
||||
parseSerializedJson(value) ?? parseLegacySignaturelessBase64(value);
|
||||
parseSerializedJson(value);
|
||||
if (!serialized) {
|
||||
payload.issues.push({
|
||||
code: "custom",
|
||||
@@ -71,12 +70,4 @@ function parseSerializedJson(value: string) {
|
||||
|
||||
const parsed = tierListStateSerializedSchema.safeParse(json);
|
||||
return parsed.success ? parsed.data : null;
|
||||
}
|
||||
|
||||
// xxx: probably legacy support not needed?
|
||||
function parseLegacySignaturelessBase64(value: string) {
|
||||
const json = decompressFromBase64(value);
|
||||
if (json === null) return null;
|
||||
|
||||
return parseSerializedJson(json);
|
||||
}
|
||||
}
|
||||
@@ -3,8 +3,6 @@ import { isDeepEqual } from "remeda";
|
||||
import { z } from "zod";
|
||||
import { compressToBase64, decompressFromBase64 } from "~/utils/compression";
|
||||
|
||||
// xxx: e2e test that loader: false indeed does not send a request
|
||||
|
||||
const COMPRESSED_PREFIX = "lz~";
|
||||
const ESCAPED_PREFIX = "lz~~";
|
||||
const DECODE_CACHE_MAX_SIZE = 300;
|
||||
|
||||
Reference in New Issue
Block a user