public override async void Execute(object parameter)
        {
            if (string.IsNullOrEmpty(Locator.ViewModels.MessagesVm.FriendSearch))
            {
                return;
            }
            var friendFinderManager = new FriendFinderManager();
            var friendResult        =
                await
                friendFinderManager.SearchForFriends(Locator.ViewModels.MessagesVm.FriendSearch, Locator.ViewModels.MainPageVm.CurrentTokens,
                                                     Locator.ViewModels.MainPageVm.CurrentUser.Region,
                                                     Locator.ViewModels.MainPageVm.CurrentUser.Language);

            var result = await ResultChecker.CheckSuccess(friendResult);

            if (!result)
            {
                return;
            }
            var friendFinderResult = JsonConvert.DeserializeObject <FriendFinderResponse>(friendResult.ResultJson);

            if (friendFinderResult.SearchResults != null)
            {
                Locator.ViewModels.MessagesVm.FriendSearchResults = friendFinderResult.SearchResults.ToList();
            }
        }
        private async Task SetNicoDougaElements(bool interactive = false, string query = "")
        {
            var nicoNicoResultEntity =
                await _liveStreamManager.GetNicoFeed("onair", "PS4", interactive, 0, 80, "view", query, Locator.ViewModels.MainPageVm.CurrentTokens);

            await AccountAuthHelpers.UpdateTokens(Locator.ViewModels.MainPageVm.CurrentUser, nicoNicoResultEntity);

            var result = await ResultChecker.CheckSuccess(nicoNicoResultEntity);

            if (!result)
            {
                return;
            }
            var nicoNicoEntity = JsonConvert.DeserializeObject <NicoNicoEntity>(nicoNicoResultEntity.ResultJson);

            if (nicoNicoEntity?.programs == null)
            {
                return;
            }
            foreach (NicoNicoEntity.Program program in nicoNicoEntity.programs)
            {
                var entity = new LiveBroadcastEntity();
                entity.ParseFromNicoNico(program);
                LiveBroadcastCollection.Add(entity);
            }
        }
        private async Task <bool> LoginTest(AccountUser user)
        {
            IsLoading = true;
            Result result = new Result();

            try
            {
                result = await _authManager.RefreshAccessToken(user.RefreshToken);

                var tokenResult = JsonConvert.DeserializeObject <Tokens>(result.Tokens);
                result = await _userManager.GetUser(user.Username,
                                                    new UserAuthenticationEntity(tokenResult.AccessToken, tokenResult.RefreshToken, tokenResult.ExpiresIn),
                                                    user.Region, user.Language);

                var userResult = JsonConvert.DeserializeObject <User>(result.ResultJson);


                var didUpdate = await AccountAuthHelpers.UpdateUserAccount(user, tokenResult, null, userResult);

                result.IsSuccess = didUpdate;
            }
            catch (Exception ex)
            {
                result.IsSuccess = false;
                result.Error     = ex.Message;
            }
            await ResultChecker.CheckSuccess(result);

            IsLoading = false;
            return(result.IsSuccess);
        }
        private async Task SetUstreamElements(bool interactive = false, string query = "")
        {
            var filterList = new Dictionary <string, string>
            {
                { "platform", "PS4" },
                { "type", "live" },
                { "interactive", interactive ? "true" : "false" }
            };
            var ustreamResultList =
                await
                _liveStreamManager.GetUstreamFeed(0, 80, "compact", filterList, "views", query,
                                                  Locator.ViewModels.MainPageVm.CurrentTokens);

            await AccountAuthHelpers.UpdateTokens(Locator.ViewModels.MainPageVm.CurrentUser, ustreamResultList);

            var result = await ResultChecker.CheckSuccess(ustreamResultList);

            if (!result)
            {
                return;
            }
            var ustreamList = JsonConvert.DeserializeObject <UstreamEntity>(ustreamResultList.ResultJson);

            if (ustreamList?.items == null)
            {
                return;
            }
            foreach (UstreamEntity.Item ustream in ustreamList.items)
            {
                var entity = new LiveBroadcastEntity();
                entity.ParseFromUstream(ustream);
                LiveBroadcastCollection.Add(entity);
            }
        }
        private async Task SetTwitchElements(bool interactive = false, string query = "")
        {
            var twitchResult =
                await _liveStreamManager.GetTwitchFeed(0, 80, "PS4", interactive, query, Locator.ViewModels.MainPageVm.CurrentTokens);

            await AccountAuthHelpers.UpdateTokens(Locator.ViewModels.MainPageVm.CurrentUser, twitchResult);

            var result = await ResultChecker.CheckSuccess(twitchResult);

            if (!result)
            {
                return;
            }
            var twitchList = JsonConvert.DeserializeObject <TwitchEntity>(twitchResult.ResultJson);

            if (twitchList?.streams == null)
            {
                return;
            }
            foreach (TwitchEntity.Stream twitch in twitchList.streams)
            {
                var entity = new LiveBroadcastEntity();
                entity.ParseFromTwitch(twitch);
                LiveBroadcastCollection.Add(entity);
            }
        }
        private async Task <string> GetAvatarUrl(string username)
        {
            var userResult =
                await
                _userManager.GetUserAvatar(username, Shell.Instance.ViewModel.CurrentTokens,
                                           Shell.Instance.ViewModel.CurrentUser.Region,
                                           Shell.Instance.ViewModel.CurrentUser.Language);

            await AccountAuthHelpers.UpdateTokens(Shell.Instance.ViewModel.CurrentUser, userResult);

            var result = await ResultChecker.CheckSuccess(userResult);

            if (!result)
            {
                return(string.Empty);
            }
            if (string.IsNullOrEmpty(userResult.ResultJson))
            {
                return(string.Empty);
            }
            var user = JsonConvert.DeserializeObject <User>(userResult.ResultJson);

            if (user?.AvatarUrls != null)
            {
                return(user.AvatarUrls.First().AvatarUrlLink);
            }

            return(string.Empty);
        }
Esempio n. 7
0
        public async Task RemoveMessageGroup(MessageGroupItem messageGroupItem)
        {
            try
            {
                var result =
                    await
                    _messageManager.DeleteMessageThread(messageGroupItem.MessageGroup.MessageGroupId,
                                                        Locator.ViewModels.MainPageVm.CurrentUser.Username,
                                                        Locator.ViewModels.MainPageVm.CurrentTokens,
                                                        Locator.ViewModels.MainPageVm.CurrentUser.Region);

                await AccountAuthHelpers.UpdateTokens(Locator.ViewModels.MainPageVm.CurrentUser, result);

                var resultCheck = await ResultChecker.CheckSuccess(result);

                if (!resultCheck)
                {
                    return;
                }
                if (SelectedMessageGroup != null && SelectedMessageGroup.MessageGroupId == messageGroupItem.MessageGroup.MessageGroupId)
                {
                    GroupMemberSeperatedList = string.Empty;
                    SelectedMessageGroup     = null;
                    MessageCollection.Clear();
                    IsSelected = false;
                }
                MessageGroupCollection.Remove(messageGroupItem);
            }
            catch (Exception ex)
            {
                // TODO: Proper Error handling if deleting fails :\
            }
        }
        private async Task <bool> LoadFeed(ObservableCollection <Feed> testFeed)
        {
            var feedResultEntity =
                await _recentActivityManager.GetActivityFeed(Locator.ViewModels.MainPageVm.CurrentUser.Username, _page, true, true, Locator.ViewModels.MainPageVm.CurrentTokens, Locator.ViewModels.MainPageVm.CurrentUser.Region, Locator.ViewModels.MainPageVm.CurrentUser.Language);

            var result = await ResultChecker.CheckSuccess(feedResultEntity);

            if (!result)
            {
                return(false);
            }
            if (string.IsNullOrEmpty(feedResultEntity.ResultJson))
            {
                // No Items, return false.
                return(false);
            }
            var feedEntity = JsonConvert.DeserializeObject <RecentActivityResponse>(feedResultEntity.ResultJson);

            foreach (var feed in feedEntity.Feed)
            {
                testFeed.Add(feed);
            }
            _page++;
            return(true);
        }
        private async Task <bool> LoadFeed(ObservableCollection <Feed> testFeed)
        {
            await Shell.Instance.ViewModel.UpdateTokens();

            var feedResultEntity =
                await _recentActivityManager.GetActivityFeed(Shell.Instance.ViewModel.CurrentUser.Username, _page, true, true, Shell.Instance.ViewModel.CurrentTokens, Shell.Instance.ViewModel.CurrentUser.Region, Shell.Instance.ViewModel.CurrentUser.Language);

            await AccountAuthHelpers.UpdateTokens(Shell.Instance.ViewModel.CurrentUser, feedResultEntity);

            var result = await ResultChecker.CheckSuccess(feedResultEntity);

            if (!result)
            {
                return(false);
            }
            if (string.IsNullOrEmpty(feedResultEntity.ResultJson))
            {
                // No Items, return false.
                return(false);
            }
            var feedEntity = JsonConvert.DeserializeObject <RecentActivityResponse>(feedResultEntity.ResultJson);

            foreach (var feed in feedEntity.Feed)
            {
                testFeed.Add(feed);
            }
            _page++;
            return(true);
        }
        public async Task GetMessageGroups(string userName)
        {
            Username  = userName;
            IsLoading = true;
            MessageGroupCollection = new ObservableCollection <MessageGroupItem>();
            try
            {
                await Shell.Instance.ViewModel.UpdateTokens();

                var messageResult =
                    await
                    _messageManager.GetMessageGroup(userName, Shell.Instance.ViewModel.CurrentTokens,
                                                    Shell.Instance.ViewModel.CurrentUser.Region,
                                                    Shell.Instance.ViewModel.CurrentUser.Language);

                await AccountAuthHelpers.UpdateTokens(Shell.Instance.ViewModel.CurrentUser, messageResult);

                var result = await ResultChecker.CheckSuccess(messageResult);

                if (!result)
                {
                    return;
                }
                _messageGroupEntity = JsonConvert.DeserializeObject <MessageGroupResponse>(messageResult.ResultJson);
                var avatarOnlineId   = new Dictionary <string, string>();
                var avatarOnlinelist = _messageGroupEntity.MessageGroups.Select(node => node.LatestMessage);
                foreach (var member in avatarOnlinelist)
                {
                    var avatar = await GetAvatarUrl(member.SenderOnlineId);

                    if (avatarOnlineId.All(node => node.Key != member.SenderOnlineId))
                    {
                        avatarOnlineId.Add(member.SenderOnlineId, avatar);
                    }
                }
                foreach (
                    var newMessage in
                    _messageGroupEntity.MessageGroups.Select(
                        message => new MessageGroupItem {
                    MessageGroup = message
                }))
                {
                    newMessage.AvatarUrl =
                        avatarOnlineId.FirstOrDefault(
                            node => node.Key == newMessage.MessageGroup.LatestMessage.SenderOnlineId).Value;
                    MessageGroupCollection.Add(newMessage);
                }
            }
            catch (Exception ex)
            {
                //Insights.Report(ex);
            }
            if (MessageGroupCollection.Count <= 0)
            {
                MessageGroupEmpty = true;
            }
            IsLoading = false;
        }
Esempio n. 11
0
        public async Task <bool> LoadTrophies(string username)
        {
            Offset    = Offset + MaxCount;
            IsLoading = true;
            await Shell.Instance.ViewModel.UpdateTokens();

            var trophyManager    = new TrophyManager();
            var trophyResultList = await trophyManager.GetTrophyList(username, CompareUsername, Offset, Shell.Instance.ViewModel.CurrentTokens, Shell.Instance.ViewModel.CurrentUser.Region, Shell.Instance.ViewModel.CurrentUser.Language);

            await AccountAuthHelpers.UpdateTokens(Shell.Instance.ViewModel.CurrentUser, trophyResultList);

            var result = await ResultChecker.CheckSuccess(trophyResultList, false);

            if (!result)
            {
                HasMoreItems = false;
                if (Count <= 0)
                {
                    IsEmpty = true;
                }
                IsLoading = false;
                return(false);
            }
            var trophyList = JsonConvert.DeserializeObject <TrophyDetailResponse>(trophyResultList.ResultJson);

            if (trophyList == null)
            {
                //HasMoreItems = false;
                IsEmpty   = true;
                IsLoading = false;
                return(false);
            }
            foreach (var trophy in trophyList.TrophyTitles)
            {
                Add(trophy);
            }
            if (trophyList.TrophyTitles.Any())
            {
                HasMoreItems = true;
                MaxCount    += 64;
            }
            else
            {
                if (Count <= 0)
                {
                    IsEmpty = true;
                }
                HasMoreItems = false;
            }
            IsLoading = false;
            return(true);
        }
        public async Task SendSticker(StickerSelection stickerSelection)
        {
            string error;

            try
            {
                var result = new Result();
                if (GroupMembers.Any() && IsNewMessage)
                {
                    result =
                        await
                        _messageManager.CreateStickerPostWithNewGroupMessage(GroupMembers.ToArray(),
                                                                             stickerSelection.ManifestUrl,
                                                                             stickerSelection.Number.ToString(), stickerSelection.ImageUrl, stickerSelection.PackageId,
                                                                             stickerSelection.Type, Shell.Instance.ViewModel.CurrentTokens,
                                                                             Shell.Instance.ViewModel.CurrentUser.Region);
                }
                else
                {
                    result =
                        await
                        _messageManager.CreateStickerPost(SelectedMessageGroup.MessageGroupId,
                                                          stickerSelection.ManifestUrl,
                                                          stickerSelection.Number.ToString(), stickerSelection.ImageUrl, stickerSelection.PackageId,
                                                          stickerSelection.Type, Shell.Instance.ViewModel.CurrentTokens,
                                                          Shell.Instance.ViewModel.CurrentUser.Region);
                }

                await AccountAuthHelpers.UpdateTokens(Shell.Instance.ViewModel.CurrentUser, result);

                var resultCheck = await ResultChecker.CheckSuccess(result);

                if (resultCheck)
                {
                    SelectedMessageGroup = JsonConvert.DeserializeObject <MessageGroup>(result.ResultJson);
                    await GetMessages(SelectedMessageGroup);

                    //await GetMessageGroups(Shell.Instance.ViewModel.CurrentUser.Username);
                    IsNewMessage = false;
                }
                return;
            }
            catch (Exception ex)
            {
                error = ex.Message;
            }

            await ResultChecker.SendMessageDialogAsync(error, false);
        }
        public async Task <string> CreateFriendLink()
        {
            var result = await _friendManager.GetFriendLink(Locator.ViewModels.MainPageVm.CurrentTokens);

            await AccountAuthHelpers.UpdateTokens(Locator.ViewModels.MainPageVm.CurrentUser, result);

            var resultCheck = await ResultChecker.CheckSuccess(result);

            if (!resultCheck)
            {
                return(string.Empty);
            }
            var tokenEntity = JsonConvert.DeserializeObject <TokenResponse>(result.ResultJson);

            return(tokenEntity.Token);
        }
        private async Task SendMessageWithMedia()
        {
            var realImage = await ConvertToJpeg(AttachedImage);

            var result = new Result();

            if (GroupMembers.Any() && IsNewMessage)
            {
                result =
                    await _messageManager.CreateNewGroupMessageWithMedia(GroupMembers.ToArray(), Message, ImagePath,
                                                                         realImage,
                                                                         Shell.Instance.ViewModel.CurrentTokens, Shell.Instance.ViewModel.CurrentUser.Region);
            }
            else
            {
                if (SelectedMessageGroup == null)
                {
                    await ResultChecker.SendMessageDialogAsync("Selected Message Group Null!", false);
                }
                else
                {
                    result =
                        await
                        _messageManager.CreatePostWithMedia(SelectedMessageGroup.MessageGroupId, Message, ImagePath,
                                                            realImage,
                                                            Shell.Instance.ViewModel.CurrentTokens,
                                                            Shell.Instance.ViewModel.CurrentUser.Region);
                }
            }
            await AccountAuthHelpers.UpdateTokens(Shell.Instance.ViewModel.CurrentUser, result);

            var resultCheck = await ResultChecker.CheckSuccess(result);

            if (resultCheck)
            {
                IsImageAttached      = false;
                AttachedImage        = null;
                SelectedMessageGroup = JsonConvert.DeserializeObject <MessageGroup>(result.ResultJson);

                await GetMessages(SelectedMessageGroup);

                //await GetMessageGroups(Shell.Instance.ViewModel.CurrentUser.Username);
                IsNewMessage = false;
            }
        }
Esempio n. 15
0
        public async Task <bool> DeleteUserAccount(AccountUser user)
        {
            var result = new Result();

            try
            {
                result.IsSuccess = await AccountAuthHelpers.DeleteUserAccount(user);
            }
            catch (Exception ex)
            {
                result.IsSuccess = false;
                result.Error     = "Failed to delete user";
            }
            var resultCheck = await ResultChecker.CheckSuccess(result);

            if (resultCheck)
            {
                AccountUsers.Remove(user);
                if (Shell.Instance.ViewModel.CurrentUser != null && Shell.Instance.ViewModel.CurrentUser.Username == user.Username)
                {
                    Shell.Instance.ViewModel.CurrentUser = null;
                    Shell.Instance.ViewModel.IsLoggedIn  = false;
                    try
                    {
                        var pages = App.Frame.BackStack;
                        foreach (var page in pages)
                        {
                            App.Frame.BackStack.Remove(page);
                        }
                    }
                    catch (Exception)
                    {
                        // Failed to delete backstack :\
                    }
                }
                if (!AccountUsers.Any())
                {
                    NavigationService.Navigate(typeof(LoginPage));
                }
            }
            return(resultCheck);
        }
        public async Task GetFeatureEvents()
        {
            var feedResultEntity =
                await
                _eventManager.GetFeaturedEvents(Locator.ViewModels.MainPageVm.CurrentTokens, "recommendInGame",
                                                Locator.ViewModels.MainPageVm.CurrentUser.Region);

            var result = await ResultChecker.CheckSuccess(feedResultEntity);

            if (!result)
            {
                return;
            }
            var feedEntity = JsonConvert.DeserializeObject <EventsResponse>(feedResultEntity.ResultJson);

            foreach (var feed in feedEntity.Events)
            {
                FeatureEvents.Add(feed);
            }
        }
        public async Task LoadNextPages()
        {
            IsLoading = true;
            var result = new Result();

            try
            {
                await LoadPage();

                result.IsSuccess = true;
            }
            catch (Exception ex)
            {
                result.IsSuccess = false;
                result.Error     = ex.Message;
            }
            await ResultChecker.CheckSuccess(result);

            IsLoading = false;
        }
        public override async void Execute(object parameter)
        {
            var    args      = parameter as SearchBoxSuggestionsRequestedEventArgs;
            var    deferral  = args.Request.GetDeferral();
            string queryText = args?.QueryText;

            if (string.IsNullOrEmpty(queryText))
            {
                return;
            }

            var friendFinderManager = new FriendFinderManager();
            var friendResult        =
                await
                friendFinderManager.SearchForFriends(queryText, Locator.ViewModels.MainPageVm.CurrentTokens,
                                                     Locator.ViewModels.MainPageVm.CurrentUser.Region,
                                                     Locator.ViewModels.MainPageVm.CurrentUser.Language);

            var result = await ResultChecker.CheckSuccess(friendResult);

            if (!result)
            {
                return;
            }

            var friendFinderResult = JsonConvert.DeserializeObject <FriendFinderResponse>(friendResult.ResultJson);

            var suggestionCollection = args.Request.SearchSuggestionCollection;

            if (friendFinderResult.SearchResults != null)
            {
                Locator.ViewModels.MessagesVm.FriendSearchResults = friendFinderResult.SearchResults.ToList();

                foreach (var friend in friendFinderResult.SearchResults.Take(5))
                {
                    suggestionCollection.AppendQuerySuggestion(friend.OnlineId);
                }
            }
            deferral.Complete();
        }
Esempio n. 19
0
        public async Task SetUser(string userName)
        {
            var isCurrentUser = Shell.Instance.ViewModel.CurrentUser.Username.Equals(userName);
            var userManager   = new UserManager();
            await Shell.Instance.ViewModel.UpdateTokens();

            var userResult = await userManager.GetUser(userName, Shell.Instance.ViewModel.CurrentTokens, Shell.Instance.ViewModel.CurrentUser.Region, Shell.Instance.ViewModel.CurrentUser.Language);

            await AccountAuthHelpers.UpdateTokens(Shell.Instance.ViewModel.CurrentUser, userResult);

            var result = await ResultChecker.CheckSuccess(userResult);

            if (!result)
            {
                return;
            }
            if (string.IsNullOrEmpty(userResult.ResultJson))
            {
                return;
            }
            var user = JsonConvert.DeserializeObject <User>(userResult.ResultJson);

            if (user == null)
            {
                return;
            }
            var list = user.TrophySummary.EarnedTrophies;

            user.TrophySummary.TotalTrophies = list.Bronze + list.Gold + list.Platinum + list.Silver;
            List <string> languageList = user.LanguagesUsed.Select(ParseLanguageVariable).ToList();
            string        language     = string.Join("," + Environment.NewLine, languageList);

            UserModel = new UserViewModel
            {
                Language            = language,
                User                = user,
                IsNotCurrentUser    = !isCurrentUser,
                CurrentUserOnlineId = Shell.Instance.ViewModel.CurrentUser.Username
            };
        }
        public async Task <bool> DeleteUserAccount(AccountUser user)
        {
            Locator.ViewModels.MainPageVm.MenuItems = new List <MenuItem>();
            try
            {
                var pages = App.RootFrame.BackStack;
                foreach (var page in pages)
                {
                    App.RootFrame.BackStack.Remove(page);
                }
            }
            catch (Exception)
            {
                // Failed to delete backstack :\
            }
            var result = new Result();

            try
            {
                result.IsSuccess = await AccountAuthHelpers.DeleteUserAccount(user);
            }
            catch (Exception ex)
            {
                result.IsSuccess = false;
                result.Error     = "Failed to delete user";
            }
            var resultCheck = await ResultChecker.CheckSuccess(result);

            if (resultCheck)
            {
                AccountUsers.Remove(user);
                if (AccountUsers.Any())
                {
                    OnPropertyChanged("AccountUsers");
                    return(true);
                }
                App.RootFrame.Navigate(typeof(LoginPage));
            }
            return(resultCheck);
        }
        public async Task GetStickers(StickerResponse stickerPack)
        {
            IsLoading = true;
            try
            {
                var manifestResult = await _stickerManager.GetStickerAndManifestPack(stickerPack.ManifestUrl);

                var resultCheck = await ResultChecker.CheckSuccess(manifestResult);

                if (!resultCheck)
                {
                    return;
                }
                var manifest = JsonConvert.DeserializeObject <StickerResponse>(manifestResult.ResultJson);
                var newList  = SizetypeConverter.ConvertStringToSizeProperty(manifestResult.ResultJson);
                if (newList.Any())
                {
                    StickerCollection = new ObservableCollection <StickerSelection>();
                    var stickerUrls = newList.First().Urls.ToList();
                    for (int index = 0; index < stickerUrls.Count; index++)
                    {
                        StickerCollection.Add(new StickerSelection()
                        {
                            Number      = index + 1,
                            ManifestUrl = stickerPack.ManifestUrl,
                            PackageId   = stickerPack.StickerPackageId,
                            Type        = stickerPack.Type,
                            ImageUrl    = stickerUrls[index]
                        });
                    }
                }
            }
            catch (Exception ex)
            {
                // TODO: Throw error to user.
            }
            IsLoading = false;
        }
Esempio n. 22
0
        public async Task SendSticker(StickerSelection stickerSelection)
        {
            var result = new Result();

            if (GroupMembers.Any() && IsNewMessage)
            {
                result =
                    await
                    _messageManager.CreateStickerPostWithNewGroupMessage(GroupMembers.ToArray(),
                                                                         stickerSelection.ManifestUrl,
                                                                         stickerSelection.Number.ToString(), stickerSelection.ImageUrl, stickerSelection.PackageId,
                                                                         stickerSelection.Type, Locator.ViewModels.MainPageVm.CurrentTokens,
                                                                         Locator.ViewModels.MainPageVm.CurrentUser.Region);
            }
            else
            {
                result =
                    await
                    _messageManager.CreateStickerPost(SelectedMessageGroup.MessageGroupId,
                                                      stickerSelection.ManifestUrl,
                                                      stickerSelection.Number.ToString(), stickerSelection.ImageUrl, stickerSelection.PackageId,
                                                      stickerSelection.Type, Locator.ViewModels.MainPageVm.CurrentTokens,
                                                      Locator.ViewModels.MainPageVm.CurrentUser.Region);
            }

            await AccountAuthHelpers.UpdateTokens(Locator.ViewModels.MainPageVm.CurrentUser, result);

            var resultCheck = await ResultChecker.CheckSuccess(result);

            if (resultCheck)
            {
                SelectedMessageGroup = JsonConvert.DeserializeObject <MessageGroup>(result.ResultJson);
                await GetMessages(SelectedMessageGroup);
                await GetMessageGroups(Locator.ViewModels.MainPageVm.CurrentUser.Username);

                IsNewMessage = false;
            }
        }
        public override async void Execute(object parameter)
        {
            var    args      = parameter as SearchBoxQuerySubmittedEventArgs;
            string queryText = args?.QueryText;

            if (string.IsNullOrEmpty(queryText))
            {
                return;
            }

            var friendFinderManager = new FriendFinderManager();
            var friendResult        =
                await
                friendFinderManager.SearchForFriends(queryText, Locator.ViewModels.MainPageVm.CurrentTokens,
                                                     Locator.ViewModels.MainPageVm.CurrentUser.Region,
                                                     Locator.ViewModels.MainPageVm.CurrentUser.Language);

            var result = await ResultChecker.CheckSuccess(friendResult);

            if (!result)
            {
                return;
            }
            var friendFinderResult = JsonConvert.DeserializeObject <FriendFinderResponse>(friendResult.ResultJson);

            if (!friendFinderResult.SearchResults.Any())
            {
                return;
            }

            Locator.ViewModels.MessagesVm.GroupMembers = new List <string>
            {
                friendFinderResult.SearchResults.First().OnlineId
            };
            Locator.ViewModels.MessagesVm.IsNewMessage = true;
        }
Esempio n. 24
0
        private async Task SendMessageWithoutMedia()
        {
            var result = new Result();

            if (GroupMembers.Any() && IsNewMessage)
            {
                result = await _messageManager.CreateNewGroupMessage(GroupMembers.ToArray(), Message,
                                                                     Locator.ViewModels.MainPageVm.CurrentTokens, Locator.ViewModels.MainPageVm.CurrentUser.Region);
            }
            else
            {
                if (SelectedMessageGroup == null)
                {
                    await ResultChecker.SendMessageDialogAsync("Selected Message Group Null!", false);
                }
                else
                {
                    result = await
                             _messageManager.CreatePost(SelectedMessageGroup.MessageGroupId, Message,
                                                        Locator.ViewModels.MainPageVm.CurrentTokens,
                                                        Locator.ViewModels.MainPageVm.CurrentUser.Region);
                }
            }
            await AccountAuthHelpers.UpdateTokens(Locator.ViewModels.MainPageVm.CurrentUser, result);

            var resultCheck = await ResultChecker.CheckSuccess(result);

            if (resultCheck)
            {
                SelectedMessageGroup = JsonConvert.DeserializeObject <MessageGroup>(result.ResultJson);
                await GetMessages(SelectedMessageGroup);
                await GetMessageGroups(Locator.ViewModels.MainPageVm.CurrentUser.Username);

                IsNewMessage = false;
            }
        }
        public async Task GetMessages(MessageGroup messageGroup)
        {
            IsSelected = false;
            //MessageCollection.Clear();
            IsLoading = true;
            try
            {
                SelectedMessageGroup = messageGroup;
                await Shell.Instance.ViewModel.UpdateTokens();

                var messageResult =
                    await
                    _messageManager.GetGroupConversation(messageGroup.MessageGroupId,
                                                         Shell.Instance.ViewModel.CurrentTokens,
                                                         Shell.Instance.ViewModel.CurrentUser.Region,
                                                         Shell.Instance.ViewModel.CurrentUser.Language);

                await AccountAuthHelpers.UpdateTokens(Shell.Instance.ViewModel.CurrentUser, messageResult);

                var result = await ResultChecker.CheckSuccess(messageResult);

                if (!result)
                {
                    return;
                }
                _messageResponse = JsonConvert.DeserializeObject <MessageResponse>(messageResult.ResultJson);
                var avatarOnlineId = new Dictionary <string, string>();
                foreach (var member in _messageResponse.MessageGroup.MessageGroupDetail.Members)
                {
                    var avatar = await GetAvatarUrl(member.OnlineId);

                    if (avatarOnlineId.All(node => node.Key != member.OnlineId))
                    {
                        avatarOnlineId.Add(member.OnlineId, avatar);
                    }
                }
                var newList =
                    avatarOnlineId.Where(node => node.Key != Shell.Instance.ViewModel.CurrentUser.Username)
                    .Select(node => node.Key);
                GroupMemberSeperatedList = string.Join(", ", newList);
                foreach (
                    var newMessage in
                    _messageResponse.Messages.Where(node => !MessageCollection.Select(test => test.Message.MessageUid).Contains(node.MessageUid)).Reverse().Select(message => new MessageGroupItem {
                    Message = message
                }))
                {
                    newMessage.AvatarUrl =
                        avatarOnlineId.First(node => node.Key == newMessage.Message.SenderOnlineId).Value;
                    if (newMessage.Message.StickerDetail != null)
                    {
                        newMessage.Message.Body = string.Empty;
                    }
                    newMessage.ImageAvailable = newMessage.Message.ContentKeys.Contains("image-data-0");
                    try
                    {
                        if (newMessage.ImageAvailable)
                        {
                            //var imageBytes =
                            //    await
                            //        _messageManager.GetMessageContent(SelectedMessageGroup.MessageGroupId,
                            //            newMessage.Message.SentMessageId,
                            //            Shell.Instance.ViewModel.CurrentTokens,
                            //            Shell.Instance.ViewModel.CurrentUser.Region,
                            //            Shell.Instance.ViewModel.CurrentUser.Language);
                            //newMessage.Image = await DecodeImage(imageBytes);
                        }
                    }
                    catch (Exception ex)
                    {
                        //Insights.Report(ex);
                    }
                    MessageCollection.Add(newMessage);
                }
                ScrollToBottom();
            }
            catch (Exception ex)
            {
                //Insights.Report(ex);
            }
            var newMessages = _messageResponse?.Messages.Where(node => !node.SeenFlag);

            if (newMessages != null)
            {
                await Shell.Instance.ViewModel.UpdateTokens();

                var messageUids = newMessages.Select(node => node.MessageUid).ToList();
                await
                _messageManager.ClearMessages(_messageResponse.MessageGroup.MessageGroupId, messageUids,
                                              Shell.Instance.ViewModel.CurrentTokens,
                                              Shell.Instance.ViewModel.CurrentUser.Region);
            }

            IsLoading  = false;
            IsSelected = true;
        }
Esempio n. 26
0
        public async Task Login()
        {
            Result loginResult = new Result();

            IsLoading = true;
            try
            {
                loginResult = await _authManager.SendLoginData(UserName, Password);
            }
            catch (Exception ex)
            {
                loginResult.IsSuccess  = false;
                loginResult.ResultJson = ex.Message;
            }
            var loader = new Windows.ApplicationModel.Resources.ResourceLoader();

            if (!loginResult.IsSuccess)
            {
                loginResult.ResultJson = loader.GetString("LoginError/Text");
            }
            else if (loginResult.IsSuccess)
            {
                try
                {
                    var authTokens    = JsonConvert.DeserializeObject <Tokens>(loginResult.Tokens);
                    var expiresInDate = AuthHelpers.GetUnixTime(DateTime.Now) + authTokens.ExpiresIn;
                    if (!string.IsNullOrEmpty(authTokens.AccessToken) && !string.IsNullOrEmpty(authTokens.RefreshToken))
                    {
                        var loginUserResult =
                            await
                            _authManager.GetUserEntity(new UserAuthenticationEntity(authTokens.AccessToken, authTokens.RefreshToken, expiresInDate), "ja");

                        var loginUser  = JsonConvert.DeserializeObject <LogInUser>(loginUserResult.ResultJson);
                        var userResult =
                            await
                            _userManager.GetUser(loginUser.OnlineId,
                                                 new UserAuthenticationEntity(authTokens.AccessToken, authTokens.RefreshToken,
                                                                              expiresInDate), loginUser.Region, loginUser.Language);

                        var user             = JsonConvert.DeserializeObject <User>(userResult.ResultJson);
                        var newAccountResult = await AccountAuthHelpers.CreateUserAccount(authTokens, loginUser, user);

                        if (!newAccountResult)
                        {
                            loginResult.IsSuccess = false;
                            loginResult.Error     = "Failed to create new user in database.";
                        }
                    }
                }
                catch (Exception ex)
                {
                    loginResult.IsSuccess  = false;
                    loginResult.ResultJson = ex.Message;
                }
            }

            // Check if the result was good. If not, show error.
            await ResultChecker.CheckSuccess(loginResult);

            IsLoading = false;
            if (loginResult.IsSuccess)
            {
                NavigationService.Navigate(typeof(AccountPage));
            }
        }
        public async Task GetStickerPacks()
        {
            IsLoading = true;
            try
            {
                var stickerList = await _stickersDatabase.GetStickers();

                if (stickerList.Any())
                {
                    foreach (var item in stickerList)
                    {
                        StickerList.Add(item);
                    }
                    IsLoading = false;
                    return;
                }

                var initialResult =
                    await
                    _stickerManager.GetStickerPackList(Locator.ViewModels.MainPageVm.CurrentUser.Region);

                var resultCheck = await ResultChecker.CheckSuccess(initialResult);

                if (!resultCheck)
                {
                    return;
                }
                var packageList = JsonConvert.DeserializeObject <StickerPresetPackageListResponse>(initialResult.ResultJson);
                foreach (var item in packageList.PresetPackageList)
                {
                    var manifestResult = await _stickerManager.GetStickerAndManifestPack(item.ManifestUrl);

                    resultCheck = await ResultChecker.CheckSuccess(manifestResult);

                    if (!resultCheck)
                    {
                        return;
                    }

                    var manifest = JsonConvert.DeserializeObject <StickerResponse>(manifestResult.ResultJson);

                    var metadataResponse = await _stickerManager.GetStickerAndManifestPack(manifest.MetadataUrl);

                    resultCheck = await ResultChecker.CheckSuccess(metadataResponse);

                    if (!resultCheck)
                    {
                        return;
                    }

                    var metadata = JsonConvert.DeserializeObject <MetadataResponse>(metadataResponse.ResultJson);
                    manifest.Copyright   = metadata.Copyright;
                    manifest.Description = metadata.Description;
                    manifest.Publisher   = metadata.Publisher;
                    manifest.Title       = metadata.Title;
                    manifest.ManifestUrl = item.ManifestUrl;
                    stickerList.Add(manifest);
                }

                foreach (var item in stickerList)
                {
                    StickerList.Add(item);
                }
                await _stickersDatabase.InsertStickers(stickerList);
            }
            catch (Exception ex)
            {
                // TODO: Throw error to user.
            }
            IsLoading = false;
        }
        public async void LoadFeedList(string username)
        {
            IsLoading = true;
            await Shell.Instance.ViewModel.UpdateTokens();

            var feedResultEntity =
                await _recentActivityManager.GetActivityFeed(username, PageCount, StorePromo, IsNews, Shell.Instance.ViewModel.CurrentTokens, Shell.Instance.ViewModel.CurrentUser.Region, Shell.Instance.ViewModel.CurrentUser.Language);

            await AccountAuthHelpers.UpdateTokens(Shell.Instance.ViewModel.CurrentUser, feedResultEntity);

            var result = await ResultChecker.CheckSuccess(feedResultEntity, false);

            if (!result)
            {
                HasMoreItems = false;
                if (Count <= 0)
                {
                    IsEmpty = true;
                }
                IsLoading = false;
                return;
            }
            var feedEntity = JsonConvert.DeserializeObject <RecentActivityResponse>(feedResultEntity.ResultJson);

            if (feedEntity == null)
            {
                if (Count <= 0)
                {
                    IsEmpty = true;
                }
                HasMoreItems = false;
                IsLoading    = false;
                return;
            }
            if (feedEntity.Feed == null)
            {
                if (Count <= 0)
                {
                    IsEmpty = true;
                }
                HasMoreItems = false;
                IsLoading    = false;
                return;
            }
            foreach (var feed in feedEntity.Feed)
            {
                Add(feed);
            }
            if (feedEntity.Feed.Any())
            {
                HasMoreItems = true;
                PageCount++;
            }
            else
            {
                if (Count <= 0)
                {
                    IsEmpty = true;
                }
                HasMoreItems = false;
            }
            IsLoading = false;
        }
Esempio n. 29
0
        private async Task <LoadMoreItemsResult> LoadFriends(uint count)
        {
            IsLoading = true;
            try
            {
                var friendManager = new FriendManager();
                await Shell.Instance.ViewModel.UpdateTokens();

                var friendResultEntity =
                    await
                    friendManager.GetFriendsList(Username, Offset, BlockedPlayer, RecentlyPlayed, PersonalDetailSharing,
                                                 FriendStatus, Requesting, Requested, OnlineFilter, Shell.Instance.ViewModel.CurrentTokens, Shell.Instance.ViewModel.CurrentUser.Region, Shell.Instance.ViewModel.CurrentUser.Language);

                var result = await ResultChecker.CheckSuccess(friendResultEntity, false);

                if (!result)
                {
                    HasMoreItems = false;
                    if (Count <= 0)
                    {
                        IsEmpty = true;
                    }
                    IsLoading = false;
                    return(new LoadMoreItemsResult {
                        Count = 0
                    });
                }
                await AccountAuthHelpers.UpdateTokens(Shell.Instance.ViewModel.CurrentUser, friendResultEntity);

                var friendEntity = JsonConvert.DeserializeObject <FriendListResponse>(friendResultEntity.ResultJson);
                if (friendEntity == null)
                {
                    HasMoreItems = false;
                    if (Count <= 0)
                    {
                        IsEmpty = true;
                    }
                    IsLoading = false;
                    return(new LoadMoreItemsResult {
                        Count = count
                    });
                }
                if (friendEntity.Friend == null)
                {
                    HasMoreItems = false;
                    if (Count <= 0)
                    {
                        IsEmpty = true;
                    }
                    IsLoading = false;
                    return(new LoadMoreItemsResult {
                        Count = count
                    });
                }
                foreach (var friend in friendEntity.Friend)
                {
                    Add(friend);
                }
                if (friendEntity.Friend.Any())
                {
                    HasMoreItems = true;
                    Offset       = Offset += 32;
                }
                else
                {
                    HasMoreItems = false;
                    if (Count <= 0)
                    {
                        IsEmpty = true;
                    }
                }
            }
            catch (Exception ex)
            {
                HasMoreItems = false;
            }
            IsLoading = false;
            return(new LoadMoreItemsResult {
                Count = count
            });
        }