forked from administration/panel
feat: enable and improve relations/server list
parent
20579c9ebb
commit
5b0bc0d36a
|
@ -57,12 +57,10 @@ export default async function User({
|
||||||
const relevantUsers = await fetchUsersById([
|
const relevantUsers = await fetchUsersById([
|
||||||
...botIds,
|
...botIds,
|
||||||
...(
|
...(
|
||||||
user.relations?.filter((relation) => relation.status === "Friend") ?? []
|
user.relations ?? []
|
||||||
).map((relation) => relation._id),
|
).map((relation) => relation._id),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
relevantUsers.sort((a) => (a.bot ? -1 : 0));
|
|
||||||
|
|
||||||
// Fetch server memberships
|
// Fetch server memberships
|
||||||
const serverMemberships = await fetchMembershipsByUser(user._id).catch(
|
const serverMemberships = await fetchMembershipsByUser(user._id).catch(
|
||||||
() => []
|
() => []
|
||||||
|
|
|
@ -18,12 +18,24 @@ export function RelevantObjects({
|
||||||
return (
|
return (
|
||||||
<div className="flex gap-2">
|
<div className="flex gap-2">
|
||||||
<div className="flex-1 min-w-0 flex flex-col gap-2">
|
<div className="flex-1 min-w-0 flex flex-col gap-2">
|
||||||
<h2 className="text-md text-center pb-2">Bots & Friends</h2>
|
<h2 className="text-md text-center pb-2">Bots & Relations</h2>
|
||||||
<ListCompactor
|
<ListCompactor
|
||||||
data={users}
|
data={[
|
||||||
|
// for whatever fucking reason nextjs threw a bunch of errors at me
|
||||||
|
// when i used .sort() here but i guess this works well enough..?
|
||||||
|
...users.filter((user) => user.bot?.owner == userId),
|
||||||
|
...users.filter((user) => user.bot?.owner != userId),
|
||||||
|
]}
|
||||||
Component={({ item }) => (
|
Component={({ item }) => (
|
||||||
<Link href={`/panel/inspect/user/${item._id}`}>
|
<Link href={`/panel/inspect/user/${item._id}`}>
|
||||||
<UserCard user={item} subtitle="" />
|
<UserCard
|
||||||
|
user={item}
|
||||||
|
subtitle={
|
||||||
|
item.bot?.owner == userId
|
||||||
|
? "Owned bot"
|
||||||
|
: item.relations?.find((relation) => relation._id == userId)?.status || ""
|
||||||
|
}
|
||||||
|
/>
|
||||||
</Link>
|
</Link>
|
||||||
)}
|
)}
|
||||||
/>
|
/>
|
||||||
|
@ -31,12 +43,21 @@ export function RelevantObjects({
|
||||||
<div className="flex-1 min-w-0 flex flex-col gap-2">
|
<div className="flex-1 min-w-0 flex flex-col gap-2">
|
||||||
<h2 className="text-md text-center pb-2">Servers</h2>
|
<h2 className="text-md text-center pb-2">Servers</h2>
|
||||||
<ListCompactor
|
<ListCompactor
|
||||||
data={servers}
|
// same as above
|
||||||
|
data={[
|
||||||
|
...servers.filter((server) => userId == server.owner),
|
||||||
|
...servers.filter((server) => userId != server.owner),
|
||||||
|
]}
|
||||||
Component={({ item }) => (
|
Component={({ item }) => (
|
||||||
<Link href={`/panel/inspect/server/${item._id}`}>
|
<Link href={`/panel/inspect/server/${item._id}`}>
|
||||||
<ServerCard
|
<ServerCard
|
||||||
server={item}
|
server={item}
|
||||||
subtitle={userId === item.owner ? "Server Owner" : ""}
|
subtitle={
|
||||||
|
[
|
||||||
|
userId === item.owner ? "Server Owner" : null,
|
||||||
|
item.discoverable ? "Discoverable" : null,
|
||||||
|
].filter(i => i).join(" · ")
|
||||||
|
}
|
||||||
/>
|
/>
|
||||||
</Link>
|
</Link>
|
||||||
)}
|
)}
|
||||||
|
|
|
@ -175,7 +175,8 @@ const PermissionSets = {
|
||||||
"bots/update/owner",
|
"bots/update/owner",
|
||||||
|
|
||||||
// "messages/fetch/by-user",
|
// "messages/fetch/by-user",
|
||||||
// "users/fetch/memberships",
|
"users/fetch/memberships",
|
||||||
|
"users/fetch/relations",
|
||||||
"servers/fetch",
|
"servers/fetch",
|
||||||
|
|
||||||
"messages/fetch/by-id",
|
"messages/fetch/by-id",
|
||||||
|
|
Loading…
Reference in New Issue