hensei-web/transformers/PartyTransformer.tsx
Justin Edmund 7c814610b9 Create PartyTransformer
Transforms data into Party objects and back again.

We also created PartyParams to send data back to the API in a uniform way.

We organized the resulting object more than we have in the past since we can do what we want now.

Lastly, we removed characters, weapons and summons from this object. We will probably make a new Grid object and reference that here instead.
2023-07-06 00:04:52 -07:00

69 lines
2 KiB
TypeScript

import * as Raid from './RaidTransformer'
import * as User from './UserTransformer'
// Transforms API response to Party object
export function toObject(data: any): Party {
return {
id: data.id,
localId: data.local_id,
name: data.name,
description: data.description,
shortcode: data.shortcode,
user: User.toObject(data.user),
details: {
extra: data.extra,
fullAuto: data.full_auto,
autoGuard: data.auto_guard,
autoSummon: data.auto_summon,
chargeAttack: data.charge_attack,
clearTime: data.clear_time,
buttonCount: data.button_count,
turnCount: data.turn_count,
chainCount: data.chain_count,
},
protagonist: {
job: data.job,
skills: data.job_skills,
masterLevel: data.master_level,
ultimateMastery: data.ultimate_mastery,
accessory: data.accessory,
},
social: {
favorited: data.favorited,
remix: data.remix,
remixes: data.remixes,
sourceParty: data.source_party,
},
timestamps: {
createdAt: data.created_at,
updatedAt: data.updated_at,
},
raid: Raid.toObject(data.raid),
guidebooks: data.guidebooks,
} as Party
}
// Transforms Party object into API parameters
export function toParams(party: Party): PartyParams {
return {
local_id: party.localId,
name: party.name,
description: party.description,
extra: party.details.extra,
full_auto: party.details.fullAuto,
auto_guard: party.details.autoGuard,
auto_summon: party.details.autoSummon,
charge_attack: party.details.chargeAttack,
clear_time: party.details.clearTime,
button_count: party.details.buttonCount,
turn_count: party.details.turnCount,
chain_count: party.details.chainCount,
raid_id: party.raid.id,
job_id: party.protagonist.job.id,
master_level: party.protagonist.masterLevel,
ultimate_mastery: party.protagonist.ultimateMastery,
guidebook1_id: party.guidebooks[0]?.id,
guidebook2_id: party.guidebooks[1]?.id,
guidebook3_id: party.guidebooks[2]?.id,
} as PartyParams
}