mirror of
https://github.com/Sheldan/abstracto.git
synced 2026-04-18 04:50:38 +00:00
[AB-xxx] adding feature to focus on a particular user in both leaderboard command and leaderboard UI
adding button to view the specified user on loaderboard at the rank command
This commit is contained in:
@@ -12,12 +12,19 @@ import lombok.Setter;
|
||||
@Setter
|
||||
@Builder
|
||||
public class LeaderBoardEntry {
|
||||
/**
|
||||
* Object representing the current experience status of a user in a guild.
|
||||
*/
|
||||
private AUserExperience experience;
|
||||
/**
|
||||
* The rank this user has in the respective guild.
|
||||
*/
|
||||
private Long userId;
|
||||
private Integer level;
|
||||
private Long experience;
|
||||
private Long messageCount;
|
||||
private Integer rank;
|
||||
|
||||
public static LeaderBoardEntry fromAUserExperience(AUserExperience aUserExperience) {
|
||||
return LeaderBoardEntry
|
||||
.builder()
|
||||
.experience(aUserExperience.getExperience())
|
||||
.userId(aUserExperience.getUser().getUserReference().getId())
|
||||
.messageCount(aUserExperience.getMessageCount())
|
||||
.level(aUserExperience.getLevelOrDefault())
|
||||
.build();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,11 +7,8 @@ public interface LeaderBoardEntryResult {
|
||||
|
||||
Long getId();
|
||||
|
||||
/**
|
||||
* The {@link dev.sheldan.abstracto.core.models.database.AUserInAServer} id of the user
|
||||
* @return The ID of the user in a server
|
||||
*/
|
||||
Long getUserInServerId();
|
||||
Long getUserId();
|
||||
Long getRoleId();
|
||||
|
||||
/**
|
||||
* The experience of the {@link dev.sheldan.abstracto.core.models.database.AUserInAServer}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package dev.sheldan.abstracto.experience.model.template;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.context.SlimUserInitiatedServerContext;
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
@@ -25,4 +26,9 @@ public class LeaderBoardModel extends SlimUserInitiatedServerContext {
|
||||
*/
|
||||
private LeaderBoardEntryModel userExecuting;
|
||||
private String leaderboardUrl;
|
||||
/**
|
||||
* Whether to show the users own placement
|
||||
*/
|
||||
@Builder.Default
|
||||
private boolean showPlacement = true;
|
||||
}
|
||||
|
||||
@@ -47,4 +47,5 @@ public class RankModel {
|
||||
* The member to show the rank for
|
||||
*/
|
||||
private Member member;
|
||||
private String leaderboardUrl;
|
||||
}
|
||||
|
||||
@@ -54,6 +54,7 @@ public interface AUserExperienceService {
|
||||
* from the desired page
|
||||
*/
|
||||
LeaderBoard findLeaderBoardData(AServer server, Integer page);
|
||||
LeaderBoard findLeaderBoardDataForUserFocus(AUserInAServer aUserInAServer);
|
||||
|
||||
/**
|
||||
* Retrieves the {@link LeaderBoardEntry} from a specific {@link AUserInAServer} containing information about the
|
||||
|
||||
@@ -62,6 +62,7 @@ public interface UserExperienceManagementService {
|
||||
* @return A list desc ordered by {@link AUserExperience} experience only containing the elements between {@code start} and @{code end}
|
||||
*/
|
||||
List<AUserExperience> findLeaderBoardUsersPaginated(AServer server, Integer page, Integer size);
|
||||
List<LeaderBoardEntryResult> getWindowedLeaderboardEntriesForUser(AUserInAServer aUserInAServer, Integer windowSize);
|
||||
|
||||
/**
|
||||
* Returns the {@link LeaderBoardEntryResult} of the given {@link AUserExperience}.
|
||||
|
||||
Reference in New Issue
Block a user