From a604ef4f3c85d42e30c9071c06088a8d52aee46f Mon Sep 17 00:00:00 2001
From: Lukas Woyke <l.woyke@outlook.de>
Date: Thu, 11 Feb 2021 15:28:16 +0100
Subject: [PATCH] Fix end up in spinning views during set up process.

---
 .../Mutiplayer/LocalTeamPlayManager.swift     | 20 +++++++++++--------
 1 file changed, 12 insertions(+), 8 deletions(-)

diff --git a/Better Together/Better Together/Mutiplayer/LocalTeamPlayManager.swift b/Better Together/Better Together/Mutiplayer/LocalTeamPlayManager.swift
index b1256a2..62d9ea9 100644
--- a/Better Together/Better Together/Mutiplayer/LocalTeamPlayManager.swift	
+++ b/Better Together/Better Together/Mutiplayer/LocalTeamPlayManager.swift	
@@ -59,19 +59,19 @@ class LocalTeamPlayManager: NSObject, MCNearbyServiceAdvertiserDelegate, MCBrows
             let action = try decoder.decode(SessionAction.self, from: data)
             switch action {
             case .setup(.selectedLevel(let level)):
-                NotificationCenter.default.post(name: .levelSelectedFromHost, object: nil, userInfo: ["level": level])
+                DispatchQueue.main.async{ NotificationCenter.default.post(name: .levelSelectedFromHost, object: nil, userInfo: ["level": level]) }
             case .setup(.responseForLevelSetting( _)):
-                self.delegate?.receivedLevelConfirmation(for: peerID) 
+                DispatchQueue.main.async{ self.delegate?.receivedLevelConfirmation(for: peerID) }
             case .setup(.syncCharacterIndexForGameScene(let playersInfo)):
-                self.delegate?.syncCharacterIndexForGameScene(playersInfo: playersInfo)
+                DispatchQueue.main.async{ self.delegate?.syncCharacterIndexForGameScene(playersInfo: playersInfo) }
             case .setup(.responseForCharacterInfoSyncDone(let done)):
-                self.delegate?.playerSyncDoneReceived(for: peerID, isDone: done)
+                DispatchQueue.main.async{ self.delegate?.playerSyncDoneReceived(for: peerID, isDone: done) }
             case .setup(.startGame(let start)):
-                NotificationCenter.default.post(name: .startGame, object: nil, userInfo: ["playerInfoSync": start])
+                DispatchQueue.main.async{ NotificationCenter.default.post(name: .startGame, object: nil, userInfo: ["playerInfoSync": start]) }
             case .setup(.gameOver(_)):
                 NotificationCenter.default.post(name: .gameResultReceived, object: nil, userInfo: ["result": "fail"])
             case .setup(.gameSceneLoaded(let isReady)):
-                self.delegate?.playersGameSceneLoadStateReceived(for: peerID, isReady: isReady)
+                DispatchQueue.main.async{ self.delegate?.playersGameSceneLoadStateReceived(for: peerID, isReady: isReady)}
             case .setup(.gameSuccess(_)):
                 NotificationCenter.default.post(name: .gameResultReceived, object: nil, userInfo: ["result": "success"])
             case .gamePhysics(let characterActionData):
@@ -79,11 +79,15 @@ class LocalTeamPlayManager: NSObject, MCNearbyServiceAdvertiserDelegate, MCBrows
             case .syncAllCharacters(let syncData):
                 delegate?.allChracterActionsReceived(charactersActions: syncData.data)
             case .setup(.clientsConfiguration(let config)):
-                let index = allPlayersPeerIDs!.firstIndex(of: peerID)!
+                DispatchQueue.main.async{
+                    let index = self.allPlayersPeerIDs!.firstIndex(of: peerID)!
                 CharacterManager.sharedInstance.addNewConfigurationServer(config: config, for: peerID, for: index)
-                delegate?.receivedNewCustomization(config: config, for: peerID)
+                    self.delegate?.receivedNewCustomization(config: config, for: peerID)
+                }
             case .setup(.dismissedInvitation(let value)):
+                DispatchQueue.main.async {
                 NotificationCenter.default.post(name: .dimissedInvitationBrowserClient , object: nil, userInfo: ["value": value])
+                }
             }
         } catch {
             debugPrint("receive - decoding error: \(error)")
-- 
GitLab