From 39aedffce76f756fc284091eb69463ac9ef62936 Mon Sep 17 00:00:00 2001 From: Eric Anderson Date: Mon, 8 Jul 2019 13:23:09 -0700 Subject: [PATCH] Check array length before accessing it. Fixes #377 (#378) --- packages/sdk/src/adapters/multipeer/rules.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/packages/sdk/src/adapters/multipeer/rules.ts b/packages/sdk/src/adapters/multipeer/rules.ts index 86d2a42a2..ac77eabbc 100644 --- a/packages/sdk/src/adapters/multipeer/rules.ts +++ b/packages/sdk/src/adapters/multipeer/rules.ts @@ -270,7 +270,7 @@ export const Rules: { [id in Payloads.PayloadType]: Rule } = { (value.message.payload as Payloads.ActorUpdate).actor.id === payload.actorId).shift(); if (queuedMessage) { const existingPayload = queuedMessage.message.payload as Partial; - existingPayload.actor = deepmerge(existingPayload.actor, { + existingPayload.actor = deepmerge(existingPayload.actor, { payload: { actor: { transform: { @@ -682,7 +682,10 @@ export const Rules: { [id in Payloads.PayloadType]: Rule } = { message: Message ) => { // Check that this is the authoritative client - const exclusiveUser = session.actorSet[message.payload.actors[0].id].exclusiveToUser; + const exclusiveUser = + message.payload.actors && message.payload.actors.length ? + session.actorSet[message.payload.actors[0].id].exclusiveToUser : + undefined; if (client.authoritative || client.userId && client.userId === exclusiveUser) { // Create no-op creation message. Implicit sync from initialization until they're updated for (const spawned of message.payload.actors) {