diff --git a/packages/design-system/molecules/guild-nav/GuildNav.tsx b/packages/design-system/molecules/guild-nav/GuildNav.tsx
index 079812e..0e18460 100644
--- a/packages/design-system/molecules/guild-nav/GuildNav.tsx
+++ b/packages/design-system/molecules/guild-nav/GuildNav.tsx
@@ -1,5 +1,5 @@
import { NavSlug } from '@roleypoly/design-system/molecules/nav-slug';
-import { sortBy } from '@roleypoly/misc-utils/sortBy';
+import { getRecentAndSortedGuilds } from '@roleypoly/misc-utils/guildListing';
import { GuildSlug, UserGuildPermissions } from '@roleypoly/types';
import * as React from 'react';
import Scrollbars from 'react-custom-scrollbars';
@@ -40,21 +40,9 @@ const NavList = (props: { guilds: Props['guilds'] }) => (
);
export const GuildNav = (props: Props) => {
- const recentGuildSlugs: GuildSlug[] = props.recentGuilds
- .reduce<(GuildSlug | undefined)[]>(
- (acc, id) => [...acc, props.guilds.find((guild) => guild.id === id)],
- []
- )
- .filter((slug) => slug !== undefined);
-
- console.log({
- recentGuilds: props.recentGuilds,
- slugs: props.guilds,
- recentSlugs: recentGuildSlugs,
- });
-
- const sortedSlugs = sortBy(props.guilds, 'name', (a: string, b: string) =>
- a.toLowerCase() > b.toLowerCase() ? 1 : -1
+ const { sortedGuildSlugs, recentGuildSlugs } = getRecentAndSortedGuilds(
+ props.guilds,
+ props.recentGuilds
);
return (
@@ -72,7 +60,7 @@ export const GuildNav = (props: Props) => {
All Guilds
>
)}
-
+
diff --git a/packages/design-system/organisms/servers-listing/ServersListing.tsx b/packages/design-system/organisms/servers-listing/ServersListing.tsx
index 62c9bc1..cc2c677 100644
--- a/packages/design-system/organisms/servers-listing/ServersListing.tsx
+++ b/packages/design-system/organisms/servers-listing/ServersListing.tsx
@@ -1,27 +1,45 @@
import { CompletelyStylelessLink } from '@roleypoly/design-system/atoms/typography';
import { ServerListingCard } from '@roleypoly/design-system/molecules/server-listing-card';
-import { sortBy } from '@roleypoly/misc-utils/sortBy';
+import { getRecentAndSortedGuilds } from '@roleypoly/misc-utils/guildListing';
import { GuildSlug } from '@roleypoly/types';
import * as React from 'react';
import { CardContainer, ContentContainer } from './ServersListing.styled';
type ServersListingProps = {
guilds: GuildSlug[];
+ recentGuilds: string[];
};
-export const ServersListing = (props: ServersListingProps) => (
-
- {props.guilds &&
- sortBy(props.guilds, 'name', (a: string, b: string) =>
- a.toLowerCase() > b.toLowerCase() ? 1 : -1
- ).map((guild, idx) => (
-
-
-
-
-
-
-
- ))}
-
+const CardList = (props: { guilds: GuildSlug[] }) => (
+ <>
+ {props.guilds.map((guild, idx) => (
+
+
+
+
+
+
+
+ ))}
+ >
);
+
+export const ServersListing = (props: ServersListingProps) => {
+ const { recentGuildSlugs, sortedGuildSlugs } = getRecentAndSortedGuilds(
+ props.guilds,
+ props.recentGuilds
+ );
+
+ return (
+
+ {recentGuildSlugs && (
+ <>
+ Recent Guilds
+
+ All Guilds
+ >
+ )}
+
+
+ );
+};
diff --git a/packages/design-system/templates/servers/Servers.tsx b/packages/design-system/templates/servers/Servers.tsx
index 98d42d5..6fd476b 100644
--- a/packages/design-system/templates/servers/Servers.tsx
+++ b/packages/design-system/templates/servers/Servers.tsx
@@ -6,6 +6,9 @@ type ServerTemplateProps = Omit;
export const ServersTemplate = (props: ServerTemplateProps) => (
-
+
);
diff --git a/packages/misc-utils/guildListing.ts b/packages/misc-utils/guildListing.ts
new file mode 100644
index 0000000..e838472
--- /dev/null
+++ b/packages/misc-utils/guildListing.ts
@@ -0,0 +1,26 @@
+import { sortBy } from '@roleypoly/misc-utils/sortBy';
+import { GuildSlug } from '@roleypoly/types';
+
+type RecentAndSortedT = {
+ recentGuildSlugs: GuildSlug[];
+ sortedGuildSlugs: GuildSlug[];
+};
+
+export const getRecentAndSortedGuilds = (
+ guilds: GuildSlug[],
+ recentGuilds: string[]
+): RecentAndSortedT => {
+ return {
+ recentGuildSlugs: recentGuilds.reduce((acc, id) => {
+ const guild = guilds.find((guild) => guild.id === id);
+ if (guild) {
+ acc.push(guild);
+ }
+
+ return acc;
+ }, []),
+ sortedGuildSlugs: sortBy(guilds, 'name', (a: string, b: string) =>
+ a.toLowerCase() > b.toLowerCase() ? 1 : -1
+ ),
+ };
+};