Use default values for plain /outfits/new URLs
Previously, if you navigated to /outfits/new without a species or color in the query string, we'd show a blank outfit page, with the species/color picker hidden. Now, we default to a Blue Acara instead! We don't do anything to handle _invalid_ species/color IDs, but I don't super mind that, because in practice that would require some call site to malform the URL, and I don't super expect that. This resolves more of the _cause_ of Sentry issue IMPRESS-2020-8, but I'm still wondering how a user got to the URL `/outfits/new?[object+Object]=&objects[]=35185&objects[]=67084`. I'm wondering if the pet loader on the homepage has a bug in Safari? I feel like I heard something like that from the feedback form, too...
This commit is contained in:
parent
f1dd3bffa6
commit
2dbed8b8c4
1 changed files with 20 additions and 3 deletions
|
@ -340,13 +340,30 @@ const outfitStateReducer = (apolloClient) => (baseState, action) => {
|
||||||
|
|
||||||
function useParseOutfitUrl() {
|
function useParseOutfitUrl() {
|
||||||
const { id } = useParams();
|
const { id } = useParams();
|
||||||
const urlParams = new URLSearchParams(window.location.search);
|
|
||||||
|
|
||||||
|
// For the /outfits/:id page, ignore the query string, and just wait for the
|
||||||
|
// outfit data to load in!
|
||||||
|
if (id != null) {
|
||||||
|
return {
|
||||||
|
id,
|
||||||
|
name: null,
|
||||||
|
speciesId: null,
|
||||||
|
colorId: null,
|
||||||
|
pose: null,
|
||||||
|
appearanceId: null,
|
||||||
|
wornItemIds: [],
|
||||||
|
closetedItemIds: [],
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
// Otherwise, parse the query string, and fill in default values for anything
|
||||||
|
// not specified.
|
||||||
|
const urlParams = new URLSearchParams(window.location.search);
|
||||||
return {
|
return {
|
||||||
id: id,
|
id: id,
|
||||||
name: urlParams.get("name"),
|
name: urlParams.get("name"),
|
||||||
speciesId: urlParams.get("species"),
|
speciesId: urlParams.get("species") || "1",
|
||||||
colorId: urlParams.get("color"),
|
colorId: urlParams.get("color") || "8",
|
||||||
pose: urlParams.get("pose") || "HAPPY_FEM",
|
pose: urlParams.get("pose") || "HAPPY_FEM",
|
||||||
appearanceId: urlParams.get("state") || null,
|
appearanceId: urlParams.get("state") || null,
|
||||||
wornItemIds: new Set(urlParams.getAll("objects[]")),
|
wornItemIds: new Set(urlParams.getAll("objects[]")),
|
||||||
|
|
Loading…
Reference in a new issue