public void ShowPreviewAsync(Awful.Core.Models.ActionResult result, SAThreadPage preview)
        {
            ThreadPool.QueueUserWorkItem(state =>
                {
                    this.HandleResult(result, preview, 0);

                }, null);
        }
Example #2
0
        static void Authenticator_LoginSuccessful(object sender, Awful.Core.Event.ProfileChangedEventArgs e)
        {
            ThreadPool.QueueUserWorkItem(state =>
                {
                    try
                    {
                        OnProfileChanged(sender, e);
                        using (var db = new SAForumDB())
                        {
                            var count = db.Smilies.Count();
                            if (count == 0)
                            {
                                var signal = new AutoResetEvent(false);
                                Services.AwfulSmileyService.FetchSmiliesFromWebAsync((result, list) =>
                                    {
                                        if (result == Awful.Core.Models.ActionResult.Success)
                                        {
                                            db.Smilies.InsertAllOnSubmit(list);
                                        }
                                        signal.Set();
                                    });

                                signal.WaitOne();
                                db.SubmitChanges(ConflictMode.FailOnFirstConflict);
                            }
                        }
                    }

                    catch (Exception ex)
                    {
                        string error = string.Format("An error occured while updating the smiley database: [{0}] {1}", ex.Message, ex.StackTrace);
                        Awful.Core.Event.Logger.AddEntry(error);
                    }

                }, null);
        }
        protected void HandleResult(Awful.Core.Models.ActionResult result, ThreadPage page, int postNumber)
        {
            ThreadPage old = this._currentThreadPage;

            switch (result)
            {
                case Awful.Core.Models.ActionResult.Success:
                    this._currentThreadPage = page;
                    if (this.CurrentUserID == 0) { ThreadCache.AddPageToCache(page as SAThreadPage); }
                    break;

                case Awful.Core.Models.ActionResult.Failure:
                    Deployment.Current.Dispatcher.BeginInvoke(() =>
                        {
                            MessageBox.Show(Globals.Constants.WEB_PAGE_FAILURE, ":(", MessageBoxButton.OK);
                        });
                    break;
            }

            object[] args = new object[2] { _currentThreadPage, postNumber };
            this.BuildContentFromThreadPage(args);
        }
Example #4
0
        private static void OnProfileChanged(object sender, Awful.Core.Event.ProfileChangedEventArgs e)
        {
            try
            {
                using (var db = new SAForumDB())
                {
                    var profile = db.Profiles.Where(p => p.Username.Equals(e.Value.Username)).SingleOrDefault();
                    if (profile == null)
                    {
                        profile = new Profile() { Username = e.Value.Username, Password = e.Value.Password };
                        profile.AssignTokens(e.Cookies);
                        db.Profiles.InsertOnSubmit(profile);
                        db.SubmitChanges(ConflictMode.FailOnFirstConflict);
                        App.Settings.CurrentProfileID = profile.ID;
                    }
                    else
                    {
                        App.Settings.CurrentProfileID = profile.ID;
                        App.CurrentUser = profile.Username;
                        foreach (var cookie in e.Cookies)
                        {
                            var token = new SAAuthToken(cookie) { Profile = profile };
                            db.Tokens.InsertOnSubmit(token);
                        }

                        db.SubmitChanges(ConflictMode.FailOnFirstConflict);

                        var profile2 = db.Profiles.Where(p => p.ID == profile.ID).SingleOrDefault();
                    }
                }
            }

            catch (Exception ex)
            {
                string error = string.Format(
                    "There was an error while trying to save profile to DB. [{0}] {1}",
                    ex.Message,
                    ex.StackTrace);

                Awful.Core.Event.Logger.AddEntry(error);
            }
        }