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.
This commit is contained in:
parent
881ed31dd1
commit
7c814610b9
3 changed files with 122 additions and 26 deletions
69
transformers/PartyTransformer.tsx
Normal file
69
transformers/PartyTransformer.tsx
Normal file
|
|
@ -0,0 +1,69 @@
|
|||
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
|
||||
}
|
||||
57
types/Party.d.ts
vendored
57
types/Party.d.ts
vendored
|
|
@ -15,34 +15,39 @@ type GuidebookList = {
|
|||
|
||||
interface Party {
|
||||
id: string
|
||||
localId?: string
|
||||
name: string
|
||||
description: string
|
||||
raid: Raid
|
||||
full_auto: boolean
|
||||
auto_guard: boolean
|
||||
auto_summon: boolean
|
||||
charge_attack: boolean
|
||||
clear_time: number
|
||||
button_count?: number
|
||||
turn_count?: number
|
||||
chain_count?: number
|
||||
source_party?: Party
|
||||
job: Job
|
||||
master_level?: number
|
||||
ultimate_mastery?: number
|
||||
job_skills: JobSkillList
|
||||
accessory: JobAccessory
|
||||
shortcode: string
|
||||
extra: boolean
|
||||
guidebooks: GuidebookList
|
||||
favorited: boolean
|
||||
characters: Array<GridCharacter>
|
||||
weapons: Array<GridWeapon>
|
||||
summons: Array<GridSummon>
|
||||
user: User
|
||||
local_id?: string
|
||||
remix: boolean
|
||||
remixes: Party[]
|
||||
created_at: string
|
||||
updated_at: string
|
||||
details: {
|
||||
extra: boolean
|
||||
fullAuto: boolean
|
||||
autoGuard: boolean
|
||||
autoSummon: boolean
|
||||
chargeAttack: boolean
|
||||
clearTime: number
|
||||
buttonCount?: number
|
||||
turnCount?: number
|
||||
chainCount?: number
|
||||
}
|
||||
protagonist: {
|
||||
job: Job
|
||||
skills: JobSkillList
|
||||
masterLevel?: number
|
||||
ultimateMastery?: number
|
||||
accessory: JobAccessory
|
||||
}
|
||||
social: {
|
||||
favorited: boolean
|
||||
sourceParty?: Party
|
||||
remix: boolean
|
||||
remixes: Party[]
|
||||
}
|
||||
raid: Raid
|
||||
guidebooks: GuidebookList
|
||||
timestamps: {
|
||||
createdAt: string
|
||||
updatedAt: string
|
||||
}
|
||||
}
|
||||
|
|
|
|||
22
types/PartyParams.d.ts
vendored
Normal file
22
types/PartyParams.d.ts
vendored
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
interface PartyParams {
|
||||
local_id?: string
|
||||
name?: string
|
||||
description?: string
|
||||
raid_id?: string
|
||||
extra?: boolean
|
||||
job_id?: string
|
||||
master_level?: number
|
||||
ultimate_mastery?: number
|
||||
accessory_id?: string
|
||||
full_auto?: boolean
|
||||
auto_guard?: boolean
|
||||
auto_summon?: boolean
|
||||
charge_attack?: boolean
|
||||
clear_time?: number
|
||||
button_count?: number
|
||||
turn_count?: number
|
||||
chain_count?: number
|
||||
guidebook1_id?: string
|
||||
guidebook2_id?: string
|
||||
guidebook3_id?: string
|
||||
}
|
||||
Loading…
Reference in a new issue