Session + message pagination, SVG favicon, load-more buttons
This commit is contained in:
@@ -25,7 +25,8 @@ export default function SessionReplayPage({ params }: { params: Promise<{ id: st
|
||||
const [editingTitle, setEditingTitle] = useState(false);
|
||||
const [titleDraft, setTitleDraft] = useState("");
|
||||
const { data: sessionData } = useSession(id);
|
||||
const { data: messagesData, isLoading } = useMessages(id);
|
||||
const [msgLimit, setMsgLimit] = useState(100);
|
||||
const { data: messagesData, isLoading } = useMessages(id, msgLimit);
|
||||
const [input, setInput] = useState("");
|
||||
const [sending, setSending] = useState(false);
|
||||
const [pendingMsg, setPendingMsg] = useState<string | null>(null);
|
||||
@@ -266,6 +267,17 @@ export default function SessionReplayPage({ params }: { params: Promise<{ id: st
|
||||
Empty session
|
||||
</p>
|
||||
)}
|
||||
|
||||
{/* Load more (at bottom = older messages since list is reversed) */}
|
||||
{(messagesData?.total || 0) > msgLimit && (
|
||||
<button
|
||||
onClick={() => setMsgLimit((l) => l + 100)}
|
||||
className="w-full py-3 mt-2 text-[13px] font-medium rounded-xl transition-colors"
|
||||
style={{ color: "var(--accent)", background: "var(--accent-dim)" }}
|
||||
>
|
||||
Load older messages
|
||||
</button>
|
||||
)}
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
|
||||
+12
-1
@@ -19,7 +19,9 @@ export default function HistoryPage() {
|
||||
const [query, setQuery] = useState("");
|
||||
const [searching, setSearching] = useState(false);
|
||||
|
||||
const { data: sessionsData, isLoading } = useSessions(30, filter || undefined);
|
||||
const [limit, setLimit] = useState(20);
|
||||
const { data: sessionsData, isLoading } = useSessions(limit, filter || undefined);
|
||||
const hasMore = (sessionsData?.total || 0) > (sessionsData?.items?.length || 0);
|
||||
const { data: searchData, isFetching: searchLoading } = useSessionSearch(searching ? query : "");
|
||||
const showSearch = searching && query.length >= 2;
|
||||
|
||||
@@ -107,6 +109,15 @@ export default function HistoryPage() {
|
||||
{sessionsData?.items?.length === 0 && (
|
||||
<p className="text-sm py-8 text-center" style={{ color: "var(--text-3)" }}>No sessions found</p>
|
||||
)}
|
||||
{hasMore && (
|
||||
<button
|
||||
onClick={() => setLimit((l) => l + 20)}
|
||||
className="w-full py-3 mt-2 text-[13px] font-medium rounded-xl transition-colors"
|
||||
style={{ color: "var(--accent)", background: "var(--accent-dim)" }}
|
||||
>
|
||||
Load more
|
||||
</button>
|
||||
)}
|
||||
</div>
|
||||
)}
|
||||
</>
|
||||
|
||||
Reference in New Issue
Block a user