From 545cf75e9993f4dbc0653512d01b198f111998bf Mon Sep 17 00:00:00 2001 From: Sebastien Castiel Date: Wed, 24 Jan 2024 11:12:55 -0500 Subject: Join group by URL (Closes #55) --- src/app/groups/recent-group-list.tsx | 68 +++++++++++++++++++++++++++--------- 1 file changed, 51 insertions(+), 17 deletions(-) (limited to 'src/app/groups/recent-group-list.tsx') diff --git a/src/app/groups/recent-group-list.tsx b/src/app/groups/recent-group-list.tsx index 5f41fdb..9ad6f56 100644 --- a/src/app/groups/recent-group-list.tsx +++ b/src/app/groups/recent-group-list.tsx @@ -1,5 +1,6 @@ 'use client' import { getGroupsAction } from '@/app/groups/actions' +import { AddGroupByUrlButton } from '@/app/groups/add-group-by-url-button' import { RecentGroups, getArchivedGroups, @@ -10,7 +11,7 @@ import { Button } from '@/components/ui/button' import { getGroups } from '@/lib/api' import { Loader2 } from 'lucide-react' import Link from 'next/link' -import { SetStateAction, useEffect, useState } from 'react' +import { PropsWithChildren, SetStateAction, useEffect, useState } from 'react' import { RecentGroupListCard } from './recent-group-list-card' export type RecentGroupsState = @@ -54,7 +55,7 @@ function sortGroups( export function RecentGroupList() { const [state, setState] = useState({ status: 'pending' }) - useEffect(() => { + function loadGroups() { const groupsInStorage = getRecentGroups() const starredGroups = getStarredGroups() const archivedGroups = getArchivedGroups() @@ -73,35 +74,43 @@ export function RecentGroupList() { archivedGroups, }) }) + } + + useEffect(() => { + loadGroups() }, []) if (state.status === 'pending') { return ( -

- Loading recent - groups… -

+ +

+ Loading + recent groups… +

+
) } if (state.groups.length === 0) { return ( -
-

You have not visited any group recently.

-

- {' '} - or ask a friend to send you the link to an existing one. -

-
+ +
+

You have not visited any group recently.

+

+ {' '} + or ask a friend to send you the link to an existing one. +

+
+
) } const { starredGroupInfo, groupInfo, archivedGroupInfo } = sortGroups(state) return ( - <> + {starredGroupInfo.length > 0 && ( <>

Starred groups

@@ -132,7 +141,7 @@ export function RecentGroupList() { )} - +
) } @@ -158,3 +167,28 @@ function GroupList({ ) } + +function GroupsPage({ + children, + reload, +}: PropsWithChildren<{ reload: () => void }>) { + return ( + <> +
+

+ My groups +

+
+ + +
+
+
{children}
+ + ) +} -- cgit v1.3