示例#1
0
        public async override void Execute(object parameter)
        {
            var thread = (ForumThreadEntity)parameter;

            if (!thread.IsBookmark)
            {
                await
                AwfulDebugger.SendMessageDialogAsync(
                    "In order to be notified of thread updates, the thread must be a bookmark.",
                    new Exception("Not a bookmark"));

                return;
            }
            var mfd = new MainForumsDatabase();

            try
            {
                await mfd.SetThreadNotified(thread);
            }
            catch (Exception ex)
            {
                await
                AwfulDebugger.SendMessageDialogAsync(
                    "Failed to save thread to notifications table",
                    ex);
            }
        }
        private async Task Update(IBackgroundTaskInstance taskInstance)
        {
            var bookmarkManager = new MainForumsDatabase();

            var forumThreadEntities = await bookmarkManager.RefreshBookmarkedThreads();

            CreateBookmarkLiveTiles(forumThreadEntities);

            var notifyList = forumThreadEntities.Where(node => node.IsNotified);

            CreateToastNotifications(notifyList);
        }
示例#3
0
        public async override void Execute(object parameter)
        {
            var replyText = parameter as TextBox;

            if (replyText == null)
            {
                return;
            }

            var vm = Locator.ViewModels.NewThreadReplyVm;
            var db = new MainForumsDatabase();
            await db.SaveThreadReplyDraft(replyText.Text, vm.ForumThreadEntity);
        }
        public async override void Execute(object parameter)
        {
            var args = parameter as ForumThreadEntity ?? Locator.ViewModels.ThreadPageVm.ForumThreadEntity;

            if (args == null)
            {
                return;
            }

            var tabManager = new MainForumsDatabase();
            var test       = await tabManager.DoesTabExist(args);

            if (!args.IsBookmark && !test)
            {
                await tabManager.AddThreadToTabListAsync(args);
            }
        }
示例#5
0
        public async override void Execute(object parameter)
        {
            var replyText = parameter as TextBox;

            if (replyText == null)
            {
                return;
            }
            var db    = new MainForumsDatabase();
            var vm    = Locator.ViewModels.NewThreadReplyVm;
            var draft = await db.LoadThreadDraftEntity(vm.ForumThreadEntity);

            if (draft == null)
            {
                return;
            }

            replyText.Text = draft.Draft;
        }
示例#6
0
        private async Task Update(IBackgroundTaskInstance taskInstance)
        {
            var bookmarkManager = new MainForumsDatabase();

            var forumThreadEntities = await bookmarkManager.RefreshBookmarkedThreads();

            if (_localSettings.Values.ContainsKey(Constants.BookmarkBackground))
            {
                if ((bool)_localSettings.Values[Constants.BookmarkBackground])
                {
                    CreateBookmarkLiveTiles(forumThreadEntities);
                }
            }

            if (_localSettings.Values.ContainsKey(Constants.BookmarkNotifications))
            {
                if ((bool)_localSettings.Values[Constants.BookmarkNotifications])
                {
                    var notifyList = forumThreadEntities.Where(node => node.IsNotified);
                    CreateToastNotifications(notifyList);
                }
            }
        }
示例#7
0
        public async override void Execute(object parameter)
        {
            var args = parameter as ForumThreadEntity;

            if (args == null)
            {
                await AwfulDebugger.SendMessageDialogAsync("Thread navigation failed!:(", new Exception("Arguments are null"));

                return;
            }

            Locator.ViewModels.TabPageVm.TabThreads.Remove(args);

            var tabManager = new MainForumsDatabase();
            await tabManager.RemoveThreadFromTabListAsync(args);

            var tabs = await tabManager.GetAllTabThreads();

            if (tabs.Any())
            {
                return;
            }
            Locator.ViewModels.TabPageVm.IsEmpty = true;
        }
        public static async void WebView_ScriptNotify(object sender, NotifyEventArgs e)
        {
            var webview      = sender as WebView;
            var threadEntity = Locator.ViewModels.ThreadPageVm.ForumThreadEntity;

            if (webview == null || threadEntity == null)
            {
                return;
            }

            try
            {
                string stringJson = e.Value;
                var    command    = JsonConvert.DeserializeObject <ThreadCommand>(stringJson);
                switch (command.Command)
                {
                case "openLink":
                    await Windows.System.Launcher.LaunchUriAsync(new Uri(command.Id));

                    break;

                case "userProfile":
                    var navUser = new NavigateToUserProfilePageCommand();
                    navUser.Execute(Convert.ToInt64(command.Id));
                    break;

                case "downloadImage":
                    _url = command.Id;
                    var message = string.Format("Do you want to download this image?{0}{1}", Environment.NewLine, command.Id);
                    var msgBox  =
                        new MessageDialog(message,
                                          "Download Image");
                    var okButton = new UICommand("Yes")
                    {
                        Invoked = PictureOkButtonClick
                    };
                    var cancelButton = new UICommand("No")
                    {
                        Invoked = PictureCancelButtonClick
                    };
                    msgBox.Commands.Add(okButton);
                    msgBox.Commands.Add(cancelButton);
                    await msgBox.ShowAsync();

                    break;

                case "showPosts":
                    await webview.InvokeScriptAsync("ShowHiddenPosts", new[] { string.Empty });

                    break;

                case "profile":
                    //Frame.Navigate(typeof(UserProfileView), command.Id);
                    break;

                case "openPost":
                    var addIgnoredUserPostCommand = new AddIgnoredUserPostCommand();
                    var test = new WebViewCollection()
                    {
                        PostId  = command.Id,
                        WebView = webview
                    };
                    try
                    {
                        addIgnoredUserPostCommand.Execute(test);
                    }
                    catch (Exception ex)
                    {
                        AwfulDebugger.SendMessageDialogAsync("Error getting post", ex);
                    }
                    break;

                case "post_history":
                    //Frame.Navigate(typeof(UserPostHistoryPage), command.Id);
                    break;

                case "rap_sheet":
                    //Frame.Navigate(typeof(RapSheetView), command.Id);
                    break;

                case "quote":
                    var navigateToNewReplyViaQuoteCommand = new NavigateToNewReplyViaQuoteCommand();
                    navigateToNewReplyViaQuoteCommand.Execute(command.Id);
                    break;

                case "edit":
                    var navigateToEditPostPageCommand = new NavigateToEditPostPageCommand();
                    navigateToEditPostPageCommand.Execute(command.Id);
                    break;

                case "scrollToPost":
                    try
                    {
                        if (command.Id != null)
                        {
                            await webview.InvokeScriptAsync("ScrollToDiv", new[] { string.Concat("#postId", command.Id) });
                        }
                        else if (!string.IsNullOrEmpty(threadEntity.ScrollToPostString))
                        {
                            webview.InvokeScriptAsync("ScrollToDiv", new[] { threadEntity.ScrollToPostString });
                        }
                    }
                    catch (Exception)
                    {
                        Debug.WriteLine("Could not scroll to post...");
                    }
                    break;

                case "markAsLastRead":
                    try
                    {
                        var threadManager = new ThreadManager();
                        await threadManager.MarkPostAsLastReadAs(Locator.ViewModels.ThreadPageVm.ForumThreadEntity, Convert.ToInt32(command.Id));

                        int nextPost = Convert.ToInt32(command.Id) + 1;
                        await webview.InvokeScriptAsync("ScrollToDiv", new[] { string.Concat("#postId", nextPost.ToString()) });

                        NotifyStatusTile.CreateToastNotification("Last Read", "Post marked as last read.");
                    }
                    catch (Exception ex)
                    {
                        AwfulDebugger.SendMessageDialogAsync("Could not mark thread as last read", ex);
                    }
                    break;

                case "setFont":
                    if (_localSettings.Values.ContainsKey("zoomSize"))
                    {
                        _zoomSize = Convert.ToInt32(_localSettings.Values["zoomSize"]);
                        webview.InvokeScriptAsync("ResizeWebviewFont", new[] { _zoomSize.ToString() });
                    }
                    else
                    {
                        // _zoomSize = 20;
                    }
                    break;

                case "openThread":
                    var query = Extensions.ParseQueryString(command.Id);
                    if (query.ContainsKey("action") && query["action"].Equals("showPost"))
                    {
                        //var postManager = new PostManager();
                        //var html = await postManager.GetPost(Convert.ToInt32(query["postid"]));
                        return;
                    }
                    Locator.ViewModels.ThreadPageVm.IsLoading = true;
                    var newThreadEntity = new ForumThreadEntity()
                    {
                        Location          = command.Id,
                        ImageIconLocation = "/Assets/ThreadTags/noicon.png"
                    };
                    Locator.ViewModels.ThreadPageVm.ForumThreadEntity = newThreadEntity;

                    await Locator.ViewModels.ThreadPageVm.GetForumPostsAsync();

                    var tabManager = new MainForumsDatabase();
                    var test2      = await tabManager.DoesTabExist(newThreadEntity);

                    if (!test2)
                    {
                        await tabManager.AddThreadToTabListAsync(newThreadEntity);
                    }
                    Locator.ViewModels.ThreadPageVm.LinkedThreads.Add(newThreadEntity);
                    break;

                default:
                    var msgDlg = new MessageDialog("Not working yet!")
                    {
                        DefaultCommandIndex = 1
                    };
                    await msgDlg.ShowAsync();

                    break;
                }
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex);
            }
        }