From d72f0b1d2dce874434fe9ed12bbed76bb32fc30a Mon Sep 17 00:00:00 2001 From: Noah Petherbridge Date: Fri, 24 Nov 2023 11:37:01 -0800 Subject: [PATCH] Site Gallery: Remember last 'Whose photos' preference --- pkg/config/enum.go | 1 + pkg/controller/photo/site_gallery.go | 7 +++++++ pkg/models/like.go | 1 - pkg/models/user.go | 3 +++ 4 files changed, 11 insertions(+), 1 deletion(-) diff --git a/pkg/config/enum.go b/pkg/config/enum.go index d901c77..00c2822 100644 --- a/pkg/config/enum.go +++ b/pkg/config/enum.go @@ -69,6 +69,7 @@ var ( SitePreferenceFields = []string{ "dm_privacy", "blur_explicit", + "site_gallery_default", // default view on site gallery (friends-only or all certified?) } // Choices for the Contact Us subject diff --git a/pkg/controller/photo/site_gallery.go b/pkg/controller/photo/site_gallery.go index ad7e021..d6c9c49 100644 --- a/pkg/controller/photo/site_gallery.go +++ b/pkg/controller/photo/site_gallery.go @@ -60,6 +60,10 @@ func SiteGallery() http.HandlerFunc { if viewStyle != "full" { viewStyle = "cards" } + if who == "" { + // They didn't post a "Whose photos" filter, restore it from their last saved default. + who = currentUser.GetProfileField("site_gallery_default") + } if who != "friends" && who != "everybody" && who != "friends+private" { // Default Who setting should be Friends-only, unless you have no friends. if myFriendCount > 0 { @@ -69,6 +73,9 @@ func SiteGallery() http.HandlerFunc { } } + // Store their "Whose photos" filter on their page to default it for next time. + currentUser.SetProfileField("site_gallery_default", who) + // Admin scope warning. if adminView && !currentUser.HasAdminScope(config.ScopePhotoModerator) { session.FlashError(w, r, "Missing admin scope: %s", config.ScopePhotoModerator) diff --git a/pkg/models/like.go b/pkg/models/like.go index 19707e2..95510f1 100644 --- a/pkg/models/like.go +++ b/pkg/models/like.go @@ -224,7 +224,6 @@ func MapLikes(user *User, tableName string, tableIDs []uint64) LikeMap { // Does the CURRENT USER like any of these IDs? if likedIDs, err := LikedIDs(user, tableName, tableIDs); err == nil { - log.Error("USER LIKES IDS: %+v", likedIDs) for _, id := range likedIDs { if stats, ok := result[id]; ok { stats.UserLikes = true diff --git a/pkg/models/user.go b/pkg/models/user.go index 2492b8e..f4f66e8 100644 --- a/pkg/models/user.go +++ b/pkg/models/user.go @@ -579,6 +579,9 @@ func (u *User) SetProfileField(name, value string) { Name: name, Value: value, }) + if err := u.Save(); err != nil { + log.Error("User(%s).SetProfileField(%s): error saving after append new field: %s", u.Username, name, err) + } } // GetProfileField returns the value of a profile field or blank string.