@@ -72,46 +72,48 @@ export function createDojoStore<T extends SchemaType>() {
7272 } ,
7373 updateEntity : ( entity : Partial < ParsedEntity < T > > ) => {
7474 set ( ( state : Draft < GameState < T > > ) => {
75- if (
76- entity . entityId &&
77- state . entities [ entity . entityId ] &&
78- entity . models
79- ) {
75+ if ( entity . entityId && entity . models ) {
8076 const existingEntity =
8177 state . entities [ entity . entityId ] ;
8278
83- // Create new models object without spread
84- const mergedModels : typeof existingEntity . models =
85- Object . assign ( { } , existingEntity . models ) ;
79+ if ( existingEntity ) {
80+ // Create new models object without spread
81+ const mergedModels : typeof existingEntity . models =
82+ Object . assign ( { } , existingEntity . models ) ;
8683
87- // Iterate through each namespace in the new models
88- Object . entries ( entity . models ) . forEach (
89- ( [ namespace , namespaceModels ] ) => {
90- const typedNamespace =
91- namespace as keyof ParsedEntity < T > [ "models" ] ;
92- if ( ! ( typedNamespace in mergedModels ) ) {
93- mergedModels [
94- typedNamespace as keyof typeof mergedModels
95- ] = { } as any ;
96- }
84+ // Iterate through each namespace in the new models
85+ Object . entries ( entity . models ) . forEach (
86+ ( [ namespace , namespaceModels ] ) => {
87+ const typedNamespace =
88+ namespace as keyof ParsedEntity < T > [ "models" ] ;
89+ if ( ! ( typedNamespace in mergedModels ) ) {
90+ mergedModels [
91+ typedNamespace as keyof typeof mergedModels
92+ ] = { } as any ;
93+ }
9794
98- mergedModels [
99- typedNamespace as keyof typeof mergedModels
100- ] = Object . assign (
101- { } ,
10295 mergedModels [
10396 typedNamespace as keyof typeof mergedModels
104- ] ,
105- namespaceModels
106- ) ;
107- }
108- ) ;
109- // Update the entity
110- state . entities [ entity . entityId ] = {
111- ...existingEntity ,
112- ...entity ,
113- models : mergedModels ,
114- } ;
97+ ] = Object . assign (
98+ { } ,
99+ mergedModels [
100+ typedNamespace as keyof typeof mergedModels
101+ ] ,
102+ namespaceModels
103+ ) ;
104+ }
105+ ) ;
106+ // Update the entity
107+ state . entities [ entity . entityId ] = {
108+ ...existingEntity ,
109+ ...entity ,
110+ models : mergedModels ,
111+ } ;
112+ } else {
113+ // Set new entity
114+ state . entities [ entity . entityId ] =
115+ entity as WritableDraft < ParsedEntity < T > > ;
116+ }
115117 }
116118 } ) ;
117119 } ,
0 commit comments