Draft
Add player standing admin page for centralized player lookup and cheat level management#316
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
…ality Co-authored-by: owens1127 <98496129+owens1127@users.noreply.github.com>
Co-authored-by: owens1127 <98496129+owens1127@users.noreply.github.com>
Co-authored-by: owens1127 <98496129+owens1127@users.noreply.github.com>
Copilot
AI
changed the title
[WIP] Add admin page for player standing overview
Add player standing admin page for centralized player lookup and cheat level management
Feb 6, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds
/admin/playerspage for looking up players by membershipId to view standing, flags, and blacklisted instances. Integrates with new API endpointGET /admin/reporting/player-standing/{membershipId}.Changes
UserSearchiconsrc/app/admin/players/page.tsx- standard Next.js page wrappersrc/components/admin/players/player-standing-dashboard.tsxuseRaidHubUpdatePlayer)src/services/raidhub/usePlayerStanding.ts- followsuseReportedInstancepatternAdminPlayerStandingResponseschema and/admin/reporting/player-standing/{membershipId}endpoint toopenapi.d.tsImplementation Details
Reuses existing patterns:
Color coding and bitmask decoding match existing
PlayerOtherFlagsandInstanceFlagAreacomponents.Original prompt
Overview
Add a new "Player Standing" admin page at
/admin/playersthat allows admins to look up a player by membershipId and view their standing, recent flags, blacklisted instances, and cheat level — with the ability to update the cheat level directly.This page consumes a new API endpoint
GET /admin/reporting/player-standing/:membershipIdbeing added in a companion PR onRaid-Hub/API. That endpoint returns:{ "playerInfo": { "membershipId", "membershipType", "iconPath", "displayName", "bungieGlobalDisplayName", "bungieGlobalDisplayNameCode", "lastSeen", "isPrivate", "cheatLevel" }, "recentFlags": [{ "instanceId", "membershipId", "cheatCheckVersion", "cheatCheckBitmask", "cheatProbability", "flaggedAt", "instanceDate" }], "blacklistedInstances": [{ "instanceId", "instanceDate", "reason", "individualReason", "createdAt" }] }Current State
/adminwith a sidebar defined insrc/app/admin/sidebar.tsx/reporting), Badges (/badges), Vanity (/vanity), Query Tool (/query), Cache (/cache)src/app/admin/<section>/page.tsximporting a dashboard component fromsrc/components/admin/<section>/src/components/admin/reporting/) already has greatPlayerBox,PlayerBlacklistedInstances,PlayerOtherFlags, andInstanceFlagAreacomponents insrc/components/admin/reporting/tabs/instance-info-tab.tsxthat display exactly the kind of data we need — reuse/reference these patternssrc/services/raidhub/— seeuseReportedInstance.tsfor the standing query pattern anduseRaidHubUpdatePlayer.tsfor the player update patternsrc/services/raidhub/openapi.d.tsand derived types insrc/services/raidhub/types.tsgetRaidHubApiandpostRaidHubApihelpers are used for API calls fromsrc/services/raidhub/commonCheatLeveltype already exists asComponent<"CheatLevel">(0 | 1 | 2 | 3 | 4)useRaidHubUpdatePlayerhook already exists and works withPATCH /admin/reporting/player/:membershipIdgetCheatCheckReasonsFromBitmaskexists insrc/components/admin/reporting/tabs/instance-info-tab.tsxRequirements
1. Add sidebar entry (
src/app/admin/sidebar.tsx)Add a new entry to the
adminRoutesarray:Place it after "Reporting" since it's related.
2. Create the page (
src/app/admin/players/page.tsx)Follow the same pattern as other admin pages:
3. Create the dashboard component (
src/components/admin/players/player-standing-dashboard.tsx)This is the main component. It should be a
"use client"component with:Search Section:
4611686018488107374)Player Standing Display (shown after search):
Use the existing component patterns from
instance-info-tab.tsx. The page should show:a) Player Info Card — Display the player's:
playerInfo.iconPath, usebungieIconUrlhelper from~/util/destiny)getBungieDisplayNamehelper from~/util/destiny)/profile/{membershipId})PlayerBoxininstance-info-tab.tsx—Selectwith colored variants based on level, "Save Cheat Level" button that callsuseRaidHubUpdatePlayer)b) Recent Flags Table — A table showing the player's recent flags across all instances:
/pgcr/{instanceId}), Instance Date, Flagged At, Cheat Probability (color-coded like existing), Detection (decoded bitmask), Cheat Check VersionPlayerOtherFlagsininstance-info-tab.tsxTable,TableHeader,TableRow,TableHead,TableBody,TableCellcomponentsc) Blacklisted Instances Table — A table showing instances the player was blacklisted in:
/pgcr/{instanceId}), Instance Date, Reason, Individual Reason, Blacklisted AtPlayerBlacklistedInstancesininstance-info-tab.tsxUse the
AdminPageHeadercomponent (seen inreporting-dashboard.tsx) for the page title.**Use the `...
This pull request was created from Copilot chat.
💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.