From b2f64f1d786deb3ef082787934f31423f4e817b0 Mon Sep 17 00:00:00 2001 From: Justin Edmund Date: Fri, 7 Jul 2023 06:47:41 -0700 Subject: [PATCH] Fix transformers and types Dozens of tiny errors from me freehanding it --- pages/p/[party].tsx | 6 +++--- transformers/AwakeningTransformer.tsx | 2 +- transformers/CharacterTransformer.tsx | 20 +++++++++---------- transformers/GridCharacterTransformer.tsx | 12 +++++++----- transformers/GridSummonTransformer.tsx | 4 ++-- transformers/GridTransformer.tsx | 19 +++++++++--------- transformers/GridWeaponTransformer.tsx | 2 +- transformers/GuidebookTransformer.tsx | 15 ++++++++++++++ transformers/JobAccessoryTransformer.tsx | 2 +- transformers/JobSkillTransformer.tsx | 2 +- transformers/JobTransformer.tsx | 9 ++++----- transformers/PartyTransformer.tsx | 24 ++++++++++++++++------- transformers/RaidGroupTransformer.tsx | 8 +++++--- transformers/RaidTransformer.tsx | 6 +++--- transformers/SummonTransformer.tsx | 24 +++++++++++------------ transformers/WeaponKeyTransformer.tsx | 4 ++-- transformers/WeaponTransformer.tsx | 20 +++++++++---------- types/Grid.d.ts | 6 +++--- types/GridCharacter.d.ts | 8 ++++---- types/GridSummon.d.ts | 2 +- types/Guidebook.d.ts | 4 ++-- types/Job.d.ts | 1 - types/Party.d.ts | 4 ++-- types/Raid.d.ts | 2 +- types/RaidGroup.d.ts | 2 +- 25 files changed, 118 insertions(+), 90 deletions(-) create mode 100644 transformers/GuidebookTransformer.tsx diff --git a/pages/p/[party].tsx b/pages/p/[party].tsx index ff9e2f09..e49587b4 100644 --- a/pages/p/[party].tsx +++ b/pages/p/[party].tsx @@ -14,7 +14,7 @@ import { appState } from '~utils/appState' import { GroupedWeaponKeys, groupWeaponKeys } from '~utils/groupWeaponKeys' import * as JobTransformer from '~transformers/JobTransformer' -import * as JobSkillTransformer from '~transformers/JobTransformer' +import * as JobSkillTransformer from '~transformers/JobSkillTransformer' import * as PartyTransformer from '~transformers/PartyTransformer' import * as RaidGroupTransformer from '~transformers/RaidGroupTransformer' import * as WeaponKeyTransformer from '~transformers/WeaponKeyTransformer' @@ -171,7 +171,7 @@ export const getServerSideProps = async ({ req, res, locale, query }: { req: Nex .getAll() .then((response) => response.data.map((job: any) => JobTransformer.toObject(job)) - ) + ) const jobSkills: JobSkill[] = await api .allJobSkills() @@ -190,7 +190,7 @@ export const getServerSideProps = async ({ req, res, locale, query }: { req: Nex // Fetch the party if (!query.party) throw new Error('No party code') - + const party: Party | undefined = await api.endpoints.parties.getOne({ id: query.party, }).then((response) => PartyTransformer.toObject(response.data.party)) diff --git a/transformers/AwakeningTransformer.tsx b/transformers/AwakeningTransformer.tsx index db1685bc..083c7cf1 100644 --- a/transformers/AwakeningTransformer.tsx +++ b/transformers/AwakeningTransformer.tsx @@ -4,7 +4,7 @@ export function toObject(data: any): Awakening { id: data.id, name: { en: data.name.en, - ja: data.name.jp, + ja: data.name.ja, }, slug: data.slug, object_type: data.object_type, diff --git a/transformers/CharacterTransformer.tsx b/transformers/CharacterTransformer.tsx index 91b09cd5..cf2f2711 100644 --- a/transformers/CharacterTransformer.tsx +++ b/transformers/CharacterTransformer.tsx @@ -6,11 +6,11 @@ export function toObject(data: any): Character { return { type: 'character', id: data.id, - granblueId: data.granblueId, + granblueId: data.granblue_id, characterId: data.character_id, name: { en: data.name.en, - ja: data.name.jp, + ja: data.name.ja, }, element: Element.toObject(data.element), rarity: data.rarity, @@ -18,16 +18,16 @@ export function toObject(data: any): Character { gender: data.gender, race: data.race, hp: { - min: data.hp.min, - max: data.hp.max, - flb: data.hp.max_hp_flb, - ulb: data.hp.max_hp_ulb, + min: data.hp.min_hp, + max: data.hp.max_hp, + flb: data.hp.max_hp_flb ? data.hp.max_hp_flb : null, + ulb: data.hp.max_hp_ulb ? data.hp.max_hp_ulb : null, }, atk: { - min: data.atk.min, - max: data.atk.max, - flb: data.atk.max_atk_flb, - ulb: data.atk.max_atk_ulb, + min: data.atk.min_atk, + max: data.atk.max_atk, + flb: data.atk.max_atk_flb ? data.atk.max_atk_flb : null, + ulb: data.atk.max_atk_ulb ? data.atk.max_atk_ulb : null, }, uncap: { flb: data.uncap.flb, diff --git a/transformers/GridCharacterTransformer.tsx b/transformers/GridCharacterTransformer.tsx index b0585b57..e2ebdba3 100644 --- a/transformers/GridCharacterTransformer.tsx +++ b/transformers/GridCharacterTransformer.tsx @@ -7,14 +7,16 @@ export function toObject(data: any): GridCharacter { id: data.id, object: Character.toObject(data.object), position: data.position, - uncapLevel: data.uncapLevel, - transcendenceStep: data.transcendence_step, + uncapLevel: data.uncap_level, + transcendenceStep: data.transcendence_step ? data.transcendence_step : null, mastery: { - overMastery: data.over_mastery, - aetherialMastery: data.aetherial_mastery, + overMastery: data.over_mastery + ? data.over_mastery + : [null, null, null, null], + aetherialMastery: data.aetherial_mastery ? data.aetherial_mastery : null, awakening: { type: Awakening.toObject(data.awakening.type), - level: data.awakening.awakening_level, + level: data.awakening.level, }, perpetuity: data.perpetuity, }, diff --git a/transformers/GridSummonTransformer.tsx b/transformers/GridSummonTransformer.tsx index 42cf3a06..7aa99756 100644 --- a/transformers/GridSummonTransformer.tsx +++ b/transformers/GridSummonTransformer.tsx @@ -8,8 +8,8 @@ export function toObject(data: any): GridSummon { position: data.position, main: data.main, friend: data.friend, - uncapLevel: data.uncapLevel, - transcendenceStep: data.transcendence_step, + uncapLevel: data.uncap_level, + transcendenceStep: data.transcendence_step ? data.transcendence_step : null, quickSummon: data.quick_summon, } } diff --git a/transformers/GridTransformer.tsx b/transformers/GridTransformer.tsx index d7931b17..d890e589 100644 --- a/transformers/GridTransformer.tsx +++ b/transformers/GridTransformer.tsx @@ -4,25 +4,26 @@ import * as GridCharacter from '~transformers/GridCharacterTransformer' // Transforms API response to Party object export function toObject(data: any): Grid { + const mainSummon = data.summons.find((summon: any) => summon.main === true) + const friendSummon = data.summons.find( + (summon: any) => summon.friend === true + ) + const mainWeapon = data.weapons.find( + (weapon: any) => weapon.mainhand === true + ) return { characters: data.characters.map((character: any) => GridCharacter.toObject(character) ), summons: { - mainSummon: GridSummon.toObject( - data.summons.find((summon: any) => summon.main === true) - ), - friendSummon: GridSummon.toObject( - data.summons.find((summon: any) => summon.friend === true) - ), + mainSummon: mainSummon ? GridSummon.toObject(mainSummon) : null, + friendSummon: friendSummon ? GridSummon.toObject(friendSummon) : null, allSummons: data.summons.map((summon: any) => { if (!summon.main && !summon.friend) return GridSummon.toObject(summon) }), }, weapons: { - mainWeapon: GridWeapon.toObject( - data.weapons.find((weapon: any) => weapon.mainhand === true) - ), + mainWeapon: mainWeapon ? GridWeapon.toObject(mainWeapon) : null, allWeapons: data.weapons.map((weapon: any) => { if (!weapon.mainhand) return GridWeapon.toObject(weapon) }), diff --git a/transformers/GridWeaponTransformer.tsx b/transformers/GridWeaponTransformer.tsx index e96b17ab..782a95ee 100644 --- a/transformers/GridWeaponTransformer.tsx +++ b/transformers/GridWeaponTransformer.tsx @@ -10,7 +10,7 @@ export function toObject(data: any): GridWeapon { object: Weapon.toObject(data.object), position: data.position, mainhand: data.mainhand, - uncapLevel: data.uncapLevel, + uncapLevel: data.uncap_level, element: Element.toObject(data.element), weaponKeys: data.weapon_keys.map((key: any) => WeaponKey.toObject(key)), ax: data.ax, diff --git a/transformers/GuidebookTransformer.tsx b/transformers/GuidebookTransformer.tsx new file mode 100644 index 00000000..d5469e87 --- /dev/null +++ b/transformers/GuidebookTransformer.tsx @@ -0,0 +1,15 @@ +// Transforms API response to Guidebook object +export function toObject(data: any): Guidebook { + return { + id: data.id, + granblueId: data.granblue_id, + name: { + en: data.name.en, + ja: data.name.jp, + }, + description: { + en: data.description.en, + ja: data.description.jp, + }, + } +} diff --git a/transformers/JobAccessoryTransformer.tsx b/transformers/JobAccessoryTransformer.tsx index a6991487..d6ceedf2 100644 --- a/transformers/JobAccessoryTransformer.tsx +++ b/transformers/JobAccessoryTransformer.tsx @@ -4,7 +4,7 @@ import * as Job from './JobTransformer' export function toObject(data: any): JobAccessory { return { id: data.id, - granblueId: data.granblueId, + granblueId: data.granblue_id, name: { en: data.name.en, ja: data.name.jp, diff --git a/transformers/JobSkillTransformer.tsx b/transformers/JobSkillTransformer.tsx index 1c40a162..905a0d90 100644 --- a/transformers/JobSkillTransformer.tsx +++ b/transformers/JobSkillTransformer.tsx @@ -6,7 +6,7 @@ export function toObject(data: any): JobSkill { id: data.id, name: { en: data.name.en, - ja: data.name.jp, + ja: data.name.ja, }, job: Job.toObject(data.job), slug: data.slug, diff --git a/transformers/JobTransformer.tsx b/transformers/JobTransformer.tsx index dc54964f..81f2ebd2 100644 --- a/transformers/JobTransformer.tsx +++ b/transformers/JobTransformer.tsx @@ -2,19 +2,18 @@ export function toObject(data: any): Job { return { id: data.id, - granblueId: data.granblueId, + granblueId: data.granblue_id, name: { en: data.name.en, - ja: data.name.jp, + ja: data.name.ja, }, - baseJob: toObject(data.base_job), row: data.row, order: data.order, masterLevel: data.master_level, ultimateMastery: data.ultimate_mastery, proficiency: { - proficiency1: data.proficiency1, - proficiency2: data.proficiency2, + proficiency1: data.proficiency?.[0] ?? null, + proficiency2: data.proficiency?.[1] ?? null, }, accessory: data.accessory, accessory_type: data.accessory_type, diff --git a/transformers/PartyTransformer.tsx b/transformers/PartyTransformer.tsx index e24c58ef..8b0a5466 100644 --- a/transformers/PartyTransformer.tsx +++ b/transformers/PartyTransformer.tsx @@ -1,4 +1,5 @@ import * as Grid from './GridTransformer' +import * as Guidebook from './GuidebookTransformer' import * as Job from './JobTransformer' import * as JobAccessory from './JobAccessoryTransformer' import * as JobSkill from './JobSkillTransformer' @@ -32,24 +33,33 @@ export function toObject(data: any): Party { chainCount: data.chain_count, }, protagonist: { - job: Job.toObject(data.job), - skills: data.job_skills.map((skill: any) => JobSkill.toObject(skill)), + job: data.job && Job.toObject(data.job), + skills: { + 0: data.job_skills[0] && JobSkill.toObject(data.job_skills[0]), + 1: data.job_skills[1] && JobSkill.toObject(data.job_skills[1]), + 2: data.job_skills[2] && JobSkill.toObject(data.job_skills[2]), + 3: data.job_skills[3] && JobSkill.toObject(data.job_skills[3]), + }, masterLevel: data.master_level, ultimateMastery: data.ultimate_mastery, - accessory: JobAccessory.toObject(data.accessory), + accessory: data.accessory && JobAccessory.toObject(data.accessory), }, social: { favorited: data.favorited, remix: data.remix, remixes: data.remixes.map((remix: any) => toObject(remix)), - sourceParty: toObject(data.source_party), + sourceParty: data.source_party && toObject(data.source_party), }, timestamps: { createdAt: data.created_at, updatedAt: data.updated_at, }, - raid: Raid.toObject(data.raid), - guidebooks: data.guidebooks, + raid: data.raid && Raid.toObject(data.raid), + guidebooks: { + 0: data.guidebooks[1] && Guidebook.toObject(data.guidebooks[1]), + 1: data.guidebooks[2] && Guidebook.toObject(data.guidebooks[2]), + 2: data.guidebooks[3] && Guidebook.toObject(data.guidebooks[3]), + }, } } @@ -69,7 +79,7 @@ export function toParams(party: Party): PartyParams { turn_count: party.details.turnCount, chain_count: party.details.chainCount, raid_id: party.raid?.id, - job_id: party.protagonist.job.id, + job_id: party.protagonist.job?.id, master_level: party.protagonist.masterLevel, ultimate_mastery: party.protagonist.ultimateMastery, guidebook1_id: party.guidebooks[0]?.id, diff --git a/transformers/RaidGroupTransformer.tsx b/transformers/RaidGroupTransformer.tsx index 7695a491..0c5aac2a 100644 --- a/transformers/RaidGroupTransformer.tsx +++ b/transformers/RaidGroupTransformer.tsx @@ -5,10 +5,12 @@ export function toObject(data: any): RaidGroup { return { id: data.id, name: { - en: data.name_en, - ja: data.name_jp, + en: data.name.en, + ja: data.name.ja, }, - raids: data.raids.map((raid: any) => Raid.toObject(raid)), + raids: data.raids + ? data.raids.map((raid: any) => Raid.toObject(raid)) + : null, difficulty: data.difficulty, section: data.section, order: data.order, diff --git a/transformers/RaidTransformer.tsx b/transformers/RaidTransformer.tsx index 68021aec..263454b1 100644 --- a/transformers/RaidTransformer.tsx +++ b/transformers/RaidTransformer.tsx @@ -5,10 +5,10 @@ import * as RaidGroup from './RaidGroupTransformer' export function toObject(data: any): Raid { return { id: data.id, - group: RaidGroup.toObject(data.group), + group: data.group && RaidGroup.toObject(data.group), name: { - en: data.name_en, - ja: data.name_jp, + en: data.name.en, + ja: data.name.ja, }, element: Element.toObject(data.element), level: data.level, diff --git a/transformers/SummonTransformer.tsx b/transformers/SummonTransformer.tsx index bb0a9fd5..c964d33f 100644 --- a/transformers/SummonTransformer.tsx +++ b/transformers/SummonTransformer.tsx @@ -5,27 +5,27 @@ export function toObject(data: any): Summon { return { type: 'summon', id: data.id, - granblueId: data.granblueId, + granblueId: data.granblue_id, name: { en: data.name.en, - ja: data.name.jp, + ja: data.name.ja, }, element: Element.toObject(data.element), rarity: data.rarity, maxLevel: data.max_level, hp: { - min: data.hp.min, - max: data.hp.max, - flb: data.hp.max_hp_flb, - ulb: data.hp.max_hp_ulb, - xlb: data.hp.max_hp_xlb, + min: data.hp.min_hp, + max: data.hp.max_hp, + flb: data.hp.max_hp_flb ? data.hp.max_hp_flb : null, + ulb: data.hp.max_hp_ulb ? data.hp.max_hp_ulb : null, + xlb: data.hp.max_hp_xlb ? data.hp.max_hp_xlb : null, }, atk: { - min: data.atk.min, - max: data.atk.max, - flb: data.atk.max_atk_flb, - ulb: data.atk.max_atk_ulb, - xlb: data.atk.max_atk_xlb, + min: data.atk.min_atk, + max: data.atk.max_atk, + flb: data.atk.max_atk_flb ? data.atk.max_atk_flb : null, + ulb: data.atk.max_atk_ulb ? data.atk.max_atk_ulb : null, + xlb: data.atk.max_atk_xlb ? data.atk.max_atk_xlb : null, }, uncap: { flb: data.uncap.flb, diff --git a/transformers/WeaponKeyTransformer.tsx b/transformers/WeaponKeyTransformer.tsx index 2c5c5e91..fb713a11 100644 --- a/transformers/WeaponKeyTransformer.tsx +++ b/transformers/WeaponKeyTransformer.tsx @@ -2,10 +2,10 @@ export function toObject(data: any): WeaponKey { return { id: data.id, - granblueId: data.granblueId, + granblueId: data.granblue_id, name: { en: data.name.en, - ja: data.name.jp, + ja: data.name.ja, }, slug: data.slug, series: data.series, diff --git a/transformers/WeaponTransformer.tsx b/transformers/WeaponTransformer.tsx index 4eb39950..489218e8 100644 --- a/transformers/WeaponTransformer.tsx +++ b/transformers/WeaponTransformer.tsx @@ -6,10 +6,10 @@ export function toObject(data: any): Weapon { return { type: 'weapon', id: data.id, - granblueId: data.granblueId, + granblueId: data.granblue_id, name: { en: data.name.en, - ja: data.name.jp, + ja: data.name.ja, }, element: Element.toObject(data.element), rarity: data.rarity, @@ -18,16 +18,16 @@ export function toObject(data: any): Weapon { maxLevel: data.max_level, maxSkillLevel: data.max_skill_level, hp: { - min: data.hp.min, - max: data.hp.max, - flb: data.hp.max_hp_flb, - ulb: data.hp.max_hp_ulb, + min: data.hp.min_hp, + max: data.hp.max_hp, + flb: data.hp.max_hp_flb ? data.hp.max_hp_flb : null, + ulb: data.hp.max_hp_ulb ? data.hp.max_hp_ulb : null, }, atk: { - min: data.atk.min, - max: data.atk.max, - flb: data.atk.max_atk_flb, - ulb: data.atk.max_atk_ulb, + min: data.atk.min_atk, + max: data.atk.max_atk, + flb: data.atk.max_atk_flb ? data.atk.max_atk_flb : null, + ulb: data.atk.max_atk_ulb ? data.atk.max_atk_ulb : null, }, uncap: { flb: data.uncap.flb, diff --git a/types/Grid.d.ts b/types/Grid.d.ts index 81344165..17f3cf91 100644 --- a/types/Grid.d.ts +++ b/types/Grid.d.ts @@ -1,11 +1,11 @@ interface Grid { weapons: { - mainWeapon: GridWeapon | undefined + mainWeapon?: GridWeapon | undefined allWeapons: GridArray } summons: { - mainSummon: GridSummon | undefined - friendSummon: GridSummon | undefined + mainSummon?: GridSummon | undefined + friendSummon?: GridSummon | undefined allSummons: GridArray } characters: GridArray diff --git a/types/GridCharacter.d.ts b/types/GridCharacter.d.ts index b0549ab0..18978549 100644 --- a/types/GridCharacter.d.ts +++ b/types/GridCharacter.d.ts @@ -3,13 +3,13 @@ interface GridCharacter { position: number object: Character uncapLevel: number - transcendenceStep: number + transcendenceStep?: number mastery: { - overMastery: CharacterOverMastery - aetherialMastery: ExtendedMastery + overMastery?: CharacterOverMastery + aetherialMastery?: ExtendedMastery awakening: { type: Awakening - level: number + level?: number } perpetuity: boolean } diff --git a/types/GridSummon.d.ts b/types/GridSummon.d.ts index 8d23ffe0..5af7656f 100644 --- a/types/GridSummon.d.ts +++ b/types/GridSummon.d.ts @@ -5,6 +5,6 @@ interface GridSummon { position: number object: Summon uncapLevel: number - transcendenceStep: number + transcendenceStep?: number quickSummon: boolean } diff --git a/types/Guidebook.d.ts b/types/Guidebook.d.ts index 1e52b940..562992e1 100644 --- a/types/Guidebook.d.ts +++ b/types/Guidebook.d.ts @@ -4,11 +4,11 @@ interface Guidebook { name: { [key: string]: string en: string - jp: string + ja: string } description: { [key: string]: string en: string - jp: string + ja: string } } diff --git a/types/Job.d.ts b/types/Job.d.ts index 64fb1b14..4156d937 100644 --- a/types/Job.d.ts +++ b/types/Job.d.ts @@ -1,7 +1,6 @@ interface Job { id: string granblueId: string - baseJob?: Job name: { [key: string]: string en: string diff --git a/types/Party.d.ts b/types/Party.d.ts index e4ac583f..b6fcffae 100644 --- a/types/Party.d.ts +++ b/types/Party.d.ts @@ -35,11 +35,11 @@ interface Party { chainCount?: number } protagonist: { - job: Job + job?: Job skills: JobSkillList masterLevel?: number ultimateMastery?: number - accessory: JobAccessory + accessory?: JobAccessory } social: { favorited: boolean diff --git a/types/Raid.d.ts b/types/Raid.d.ts index ac431294..41f26f58 100644 --- a/types/Raid.d.ts +++ b/types/Raid.d.ts @@ -1,6 +1,6 @@ interface Raid { id: string - group: RaidGroup + group?: RaidGroup name: { [key: string]: string en: string diff --git a/types/RaidGroup.d.ts b/types/RaidGroup.d.ts index f4dc72f9..4627ff2a 100644 --- a/types/RaidGroup.d.ts +++ b/types/RaidGroup.d.ts @@ -5,7 +5,7 @@ interface RaidGroup { en: string ja: string } - raids: Raid[] + raids?: Raid[] difficulty: number section: number order: number