public async Task HandleAsync( ISession session, IClientPacket clientPacket) { string ssoTicket = clientPacket.ReadString(); IPlayer player = await _playerController.GetPlayerBySsoAsync(ssoTicket); if (player != null) { session.Player = player; IPlayerSettings playerSettings = await _playerController.GetPlayerSettingsByIdAsync(player.Id); if (playerSettings != null) { session.PlayerSettings = playerSettings; } else { await _playerController.AddPlayerSettingsAsync(player.Id); session.PlayerSettings = await _playerController.GetPlayerSettingsByIdAsync(player.Id); } await session.WriteAndFlushAsync(new AuthenticationOkComposer()); await session.WriteAndFlushAsync(new HomeRoomComposer(1)); await session.WriteAndFlushAsync(new FavouriteRoomsComposer()); await session.WriteAndFlushAsync(new FigureSetIdsComposer()); await session.WriteAndFlushAsync(new UserRightsComposer(session.Player.Rank)); await session.WriteAndFlushAsync(new AvailabilityStatusComposer()); await session.WriteAndFlushAsync(new BuildersClubMembershipComposer()); await session.WriteAndFlushAsync(new CfhTopicsInitComposer()); await session.WriteAndFlushAsync(new BadgeDefinitionsComposer()); await session.WriteAndFlushAsync(new PlayerSettingsComposer()); } }