Fix PetAppearance ID when there's an Alt Style
I don't think this actually affects any clients in practice, but now that `PetAppearance` can be influenced not just by pet state ID but also alt style ID, it's no longer correct to just use pet state ID as the `id` (the default cache key). This could theoretically cause an alt style to be locally cached as the default appearance of a species/color/pose. Instead, we now append an extra string in the case that there's also an alt style influencing the appearance. This is a bit of a mess, because I know there's some tooling that's expecting this field to be strictly the pet state ID, mainly for support/debugging purposes I think? But I imagine that's not a big deal in practice, and this change should narrow the scope of a bug like that to just be like, "error: pet state 123-with-alt-style-456 not found" when trying to save a change to it or something. Good enough!
This commit is contained in:
parent
98eb14853c
commit
8fb561338a
1 changed files with 10 additions and 0 deletions
|
@ -73,7 +73,11 @@ const typeDefs = gql`
|
||||||
}
|
}
|
||||||
|
|
||||||
type PetAppearance @cacheControl(maxAge: ${oneHour}, staleWhileRevalidate: ${oneWeek}) {
|
type PetAppearance @cacheControl(maxAge: ${oneHour}, staleWhileRevalidate: ${oneWeek}) {
|
||||||
|
"""
|
||||||
|
NOTE: In the case of an alt style, this won't match petStateId!
|
||||||
|
"""
|
||||||
id: ID!
|
id: ID!
|
||||||
|
|
||||||
species: Species!
|
species: Species!
|
||||||
color: Color!
|
color: Color!
|
||||||
pose: Pose!
|
pose: Pose!
|
||||||
|
@ -269,6 +273,12 @@ const resolvers = {
|
||||||
},
|
},
|
||||||
|
|
||||||
PetAppearance: {
|
PetAppearance: {
|
||||||
|
id: ({ id, altStyleId }) => {
|
||||||
|
if (altStyleId != null) {
|
||||||
|
return `${id}-with-alt-style-${altStyleId}`;
|
||||||
|
}
|
||||||
|
return id;
|
||||||
|
},
|
||||||
color: async ({ id }, _, { petStateLoader, petTypeLoader }) => {
|
color: async ({ id }, _, { petStateLoader, petTypeLoader }) => {
|
||||||
const petState = await petStateLoader.load(id);
|
const petState = await petStateLoader.load(id);
|
||||||
const petType = await petTypeLoader.load(petState.petTypeId);
|
const petType = await petTypeLoader.load(petState.petTypeId);
|
||||||
|
|
Loading…
Reference in a new issue