hensei-web/transformers/PartyTransformer.tsx

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,
}
}
// 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
}