public async Task <IActionResult> SpotifyAuthorized(string code, string state)
        {
            if (state.Contains("-sync"))
            {
                var option = new CookieOptions();
                option.Expires = DateTime.Now.AddDays(1);
                Request.Cookies.TryGetValue("jwtToken", out string jwtToken);
                jwtToken = await _tokenService
                           .AddClaimToToken(
                    jwtToken,
                    "spotifyAuth",
                    (await new UserAccountsService(new HttpClient(), _config).RequestAccessRefreshToken(code)).AccessToken);

                Response.Cookies.Append("jwtToken", jwtToken, option);

                var roomId = state.TrimEnd("-sync".ToCharArray());
                return(RedirectToAction("Index", "Room", routeValues: new { Id = roomId }));
            }

            var refreshToken = (await new UserAccountsService(new HttpClient(), _config).RequestAccessRefreshToken(code)).AccessToken;
            var room         = await _roomDataStore.GetItemAsync(state);

            room.SpotifyAuthCode = refreshToken;
            var request = HttpContext.Request;
            var roomUrl = $"{request.Scheme}://{request.Host}/Room/Index/{room.Id}";

            var spotify       = new SpotifyService(refreshToken);
            var spotifyUserId = await spotify.GetUserIdAsync();

            var updateRoomTask        = _roomDataStore.UpdateItemAsync(room);
            var createSpotifyRoomTask = spotify.CreatePlaylist(room.Name, spotifyUserId, roomUrl);

            await Task.WhenAll(updateRoomTask, createSpotifyRoomTask);

            var playlist = (SpotifyPlaylist)createSpotifyRoomTask.Result;

            playlist.Room = room;
            await _spotifyPlaylistsStore.AddItemAsync(playlist);

            return(RedirectToAction("Index", "Room", routeValues: new { Id = state }));
        }