feat(ui): improve clan list logic in SidebarHeader
This commit is contained in:
@@ -31,7 +31,11 @@ export const SidebarHeader = () => {
|
|||||||
ctx?.activeClanQuery?.data?.name.charAt(0).toUpperCase();
|
ctx?.activeClanQuery?.data?.name.charAt(0).toUpperCase();
|
||||||
const clanName = () => ctx?.activeClanQuery?.data?.name;
|
const clanName = () => ctx?.activeClanQuery?.data?.name;
|
||||||
|
|
||||||
const clans = () => ctx.otherClanQueries.filter((clan) => !clan.isError);
|
const clanList = () =>
|
||||||
|
ctx.allClansQueries
|
||||||
|
.filter((it) => it.isSuccess)
|
||||||
|
.map((it) => it.data!)
|
||||||
|
.sort((a, b) => a.name.localeCompare(b.name));
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div class="sidebar-header">
|
<div class="sidebar-header">
|
||||||
@@ -100,13 +104,13 @@ export const SidebarHeader = () => {
|
|||||||
</Button>
|
</Button>
|
||||||
</DropdownMenu.GroupLabel>
|
</DropdownMenu.GroupLabel>
|
||||||
<div class="dropdown-group-items">
|
<div class="dropdown-group-items">
|
||||||
<For each={clans()}>
|
<For each={clanList()}>
|
||||||
{(clan) => (
|
{(clan) => (
|
||||||
<Suspense fallback={"Loading..."}>
|
<Suspense fallback={"Loading..."}>
|
||||||
<DropdownMenu.Item
|
<DropdownMenu.Item
|
||||||
class="dropdown-item"
|
class="dropdown-item"
|
||||||
onSelect={() => {
|
onSelect={() => {
|
||||||
setActiveClanURI(clan.data!.uri);
|
setActiveClanURI(clan.uri);
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<Typography
|
<Typography
|
||||||
@@ -114,7 +118,7 @@ export const SidebarHeader = () => {
|
|||||||
size="xs"
|
size="xs"
|
||||||
weight="medium"
|
weight="medium"
|
||||||
>
|
>
|
||||||
{clan.data?.name}
|
{clan.name}
|
||||||
</Typography>
|
</Typography>
|
||||||
</DropdownMenu.Item>
|
</DropdownMenu.Item>
|
||||||
</Suspense>
|
</Suspense>
|
||||||
|
|||||||
@@ -41,6 +41,7 @@ interface ClanContextProps {
|
|||||||
machinesQuery: MachinesQueryResult;
|
machinesQuery: MachinesQueryResult;
|
||||||
activeClanQuery: UseQueryResult<ClanDetailsWithURI>;
|
activeClanQuery: UseQueryResult<ClanDetailsWithURI>;
|
||||||
otherClanQueries: UseQueryResult<ClanDetailsWithURI>[];
|
otherClanQueries: UseQueryResult<ClanDetailsWithURI>[];
|
||||||
|
allClansQueries: UseQueryResult<ClanDetailsWithURI>[];
|
||||||
|
|
||||||
isLoading(): boolean;
|
isLoading(): boolean;
|
||||||
}
|
}
|
||||||
@@ -48,8 +49,10 @@ interface ClanContextProps {
|
|||||||
class DefaultClanContext implements ClanContextProps {
|
class DefaultClanContext implements ClanContextProps {
|
||||||
public readonly clanURI: string;
|
public readonly clanURI: string;
|
||||||
public readonly machinesQuery: MachinesQueryResult;
|
public readonly machinesQuery: MachinesQueryResult;
|
||||||
|
|
||||||
public readonly activeClanQuery: UseQueryResult<ClanDetailsWithURI>;
|
public readonly activeClanQuery: UseQueryResult<ClanDetailsWithURI>;
|
||||||
public readonly otherClanQueries: UseQueryResult<ClanDetailsWithURI>[];
|
public readonly otherClanQueries: UseQueryResult<ClanDetailsWithURI>[];
|
||||||
|
public readonly allClansQueries: UseQueryResult<ClanDetailsWithURI>[];
|
||||||
|
|
||||||
allQueries: UseQueryResult[];
|
allQueries: UseQueryResult[];
|
||||||
|
|
||||||
@@ -61,8 +64,10 @@ class DefaultClanContext implements ClanContextProps {
|
|||||||
) {
|
) {
|
||||||
this.clanURI = clanURI;
|
this.clanURI = clanURI;
|
||||||
this.machinesQuery = machinesQuery;
|
this.machinesQuery = machinesQuery;
|
||||||
|
|
||||||
this.activeClanQuery = activeClanQuery;
|
this.activeClanQuery = activeClanQuery;
|
||||||
this.otherClanQueries = otherClanQueries;
|
this.otherClanQueries = otherClanQueries;
|
||||||
|
this.allClansQueries = [activeClanQuery, ...otherClanQueries];
|
||||||
|
|
||||||
this.allQueries = [machinesQuery, activeClanQuery, ...otherClanQueries];
|
this.allQueries = [machinesQuery, activeClanQuery, ...otherClanQueries];
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user