From f0e620a4851a61b8164c09bc6f95ee1df5859838 Mon Sep 17 00:00:00 2001 From: =Corey Hulen Date: Tue, 5 Jan 2016 14:48:05 -0600 Subject: PLT-1485 Adding last view channel sticky --- api/channel.go | 9 +++++++++ model/preference.go | 3 +++ web/web.go | 9 ++++++++- 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/api/channel.go b/api/channel.go index f17594c0a..b85de3071 100644 --- a/api/channel.go +++ b/api/channel.go @@ -679,6 +679,15 @@ func updateLastViewedAt(c *Context, w http.ResponseWriter, r *http.Request) { Srv.Store.Channel().UpdateLastViewedAt(id, c.Session.UserId) + preference := model.Preference{ + UserId: c.Session.UserId, + Category: model.PREFERENCE_CATEGORY_LAST, + Name: model.PREFERENCE_NAME_LAST_CHANNEL, + Value: id, + } + + Srv.Store.Preference().Save(&model.Preferences{preference}) + message := model.NewMessage(c.Session.TeamId, id, c.Session.UserId, model.ACTION_CHANNEL_VIEWED) message.Add("channel_id", id) diff --git a/model/preference.go b/model/preference.go index a3230959c..e3ad23ed4 100644 --- a/model/preference.go +++ b/model/preference.go @@ -13,6 +13,9 @@ const ( PREFERENCE_CATEGORY_DIRECT_CHANNEL_SHOW = "direct_channel_show" PREFERENCE_CATEGORY_TUTORIAL_STEPS = "tutorial_step" PREFERENCE_CATEGORY_ADVANCED_SETTINGS = "advanced_settings" + + PREFERENCE_CATEGORY_LAST = "last" + PREFERENCE_NAME_LAST_CHANNEL = "channel" ) type Preference struct { diff --git a/web/web.go b/web/web.go index 6e0e8df32..5bdc04c9b 100644 --- a/web/web.go +++ b/web/web.go @@ -238,7 +238,14 @@ func login(c *api.Context, w http.ResponseWriter, r *http.Request) { _, session := api.FindMultiSessionForTeamId(r, team.Id) if session != nil { w.Header().Set(model.HEADER_TOKEN, session.Token) - http.Redirect(w, r, c.GetSiteURL()+"/"+team.Name+"/channels/town-square", http.StatusTemporaryRedirect) + lastViewChannelName := "town-square" + if lastViewResult := <-api.Srv.Store.Preference().Get(session.UserId, model.PREFERENCE_CATEGORY_LAST, model.PREFERENCE_NAME_LAST_CHANNEL); lastViewResult.Err == nil { + if lastViewChannelResult := <-api.Srv.Store.Channel().Get(lastViewResult.Data.(model.Preference).Value); lastViewChannelResult.Err == nil { + lastViewChannelName = lastViewChannelResult.Data.(*model.Channel).Name + } + } + + http.Redirect(w, r, c.GetSiteURL()+"/"+team.Name+"/channels/"+lastViewChannelName, http.StatusTemporaryRedirect) return } -- cgit v1.2.3-1-g7c22