From 009e2eeb972c86a1a3faf5df83db7515a03527c6 Mon Sep 17 00:00:00 2001 From: Ehren Kret Date: Fri, 17 Sep 2021 11:21:33 -0500 Subject: [PATCH] Enable editing of badges on profiles --- .../textsecuregcm/controllers/ProfileController.java | 4 ++++ .../org/whispersystems/textsecuregcm/storage/Account.java | 8 ++++++++ 2 files changed, 12 insertions(+) diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/controllers/ProfileController.java b/service/src/main/java/org/whispersystems/textsecuregcm/controllers/ProfileController.java index 59aa30e1f..22027e4fb 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/controllers/ProfileController.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/controllers/ProfileController.java @@ -187,9 +187,13 @@ public class ProfileController { response = Optional.of(generateAvatarUploadForm(avatar)); } + List updatedBadges = mergeBadgeIdsWithExistingAccountBadges( + request.getBadges(), auth.getAccount().getBadges()); + accountsManager.update(auth.getAccount(), a -> { a.setProfileName(request.getName()); a.setAvatar(avatar); + a.setBadges(clock, updatedBadges); a.setCurrentProfileVersion(request.getVersion()); }); diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/storage/Account.java b/service/src/main/java/org/whispersystems/textsecuregcm/storage/Account.java index 8e17928da..bc82af8a2 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/storage/Account.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/storage/Account.java @@ -321,6 +321,14 @@ public class Account { return badges; } + public void setBadges(Clock clock, List badges) { + requireNotStale(); + + this.badges = badges; + + purgeStaleBadges(clock); + } + public void addBadge(Clock clock, AccountBadge badge) { requireNotStale();