From 74570ccbc0dd6388062507ad81db9622ba07ff7b Mon Sep 17 00:00:00 2001 From: Colin McDonald Date: Mon, 21 Nov 2016 20:12:42 -0500 Subject: [PATCH] Add scopeRanks field to user login info, which contains their best ranks on each scope --- .../java/net/frozenorb/apiv3/model/User.java | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/main/java/net/frozenorb/apiv3/model/User.java b/src/main/java/net/frozenorb/apiv3/model/User.java index 8e2b756..27f7dda 100644 --- a/src/main/java/net/frozenorb/apiv3/model/User.java +++ b/src/main/java/net/frozenorb/apiv3/model/User.java @@ -3,6 +3,7 @@ package net.frozenorb.apiv3.model; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.google.common.base.Charsets; +import com.google.common.collect.Collections2; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; @@ -346,7 +347,16 @@ public final class User { // db query, but we don't include the result because it's not used in // Hydrogen at all (bnut probably will be later on) // result.put("user", this); - result.put("ranks", ranks.stream().map(Rank::getId).collect(Collectors.toList())); + result.put("ranks", Collections2.transform(ranks, Rank::getId)); + + Map> scopeRanks = new HashMap<>(); + + for (ServerGroup scope : ServerGroup.findAll()) { + List ranksOnScope = getRanksScoped(scope, grants); + scopeRanks.put(scope.getId(), Collections2.transform(ranksOnScope, Rank::getId)); + } + + result.put("scopeRanks", scopeRanks); if (activeMute != null) { result.put("mute", activeMute); @@ -663,9 +673,7 @@ public final class User { grantedRanks.add(grantedRank); } - if (grantedRanks.isEmpty()) { - grantedRanks.add(Rank.findById("default")); - } + grantedRanks.add(Rank.findById("default")); if (registeredAt != null) { grantedRanks.add(Rank.findById("registered"));