fix: hide empty member message pagination
This commit is contained in:
parent
89bd4b87e1
commit
9fe3343038
2 changed files with 74 additions and 1 deletions
|
|
@ -207,6 +207,8 @@ export const MemberMessagesTab = ({
|
||||||
? 'No loaded messages for this member yet'
|
? 'No loaded messages for this member yet'
|
||||||
: 'No messages with this member'
|
: 'No messages with this member'
|
||||||
: 'No activity with this member';
|
: 'No activity with this member';
|
||||||
|
const canLoadOlderMessages =
|
||||||
|
hasMore && activityFilter !== 'comments' && displayEntries.length > 0;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="space-y-3">
|
<div className="space-y-3">
|
||||||
|
|
@ -281,7 +283,7 @@ export const MemberMessagesTab = ({
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
{hasMore && activityFilter !== 'comments' && (
|
{canLoadOlderMessages && (
|
||||||
<div className="flex justify-center pt-2">
|
<div className="flex justify-center pt-2">
|
||||||
<Button
|
<Button
|
||||||
variant="ghost"
|
variant="ghost"
|
||||||
|
|
|
||||||
|
|
@ -159,4 +159,75 @@ describe('MemberMessagesTab', () => {
|
||||||
await Promise.resolve();
|
await Promise.resolve();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('hides load older messages when the member has no visible activity', async () => {
|
||||||
|
getMessagesPage.mockResolvedValue({
|
||||||
|
messages: [
|
||||||
|
{
|
||||||
|
from: 'team-lead',
|
||||||
|
to: 'alice',
|
||||||
|
text: 'Message for another member',
|
||||||
|
summary: 'Message for another member',
|
||||||
|
timestamp: '2026-04-13T13:34:00.000Z',
|
||||||
|
read: false,
|
||||||
|
messageId: 'msg-other-member',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
nextCursor: 'older-cursor',
|
||||||
|
hasMore: true,
|
||||||
|
});
|
||||||
|
|
||||||
|
const members: ResolvedTeamMember[] = [
|
||||||
|
{
|
||||||
|
name: 'team-lead',
|
||||||
|
status: 'active',
|
||||||
|
currentTaskId: null,
|
||||||
|
taskCount: 0,
|
||||||
|
lastActiveAt: null,
|
||||||
|
messageCount: 0,
|
||||||
|
agentType: 'team-lead',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'jack',
|
||||||
|
status: 'active',
|
||||||
|
currentTaskId: null,
|
||||||
|
taskCount: 0,
|
||||||
|
lastActiveAt: null,
|
||||||
|
messageCount: 0,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'alice',
|
||||||
|
status: 'active',
|
||||||
|
currentTaskId: null,
|
||||||
|
taskCount: 0,
|
||||||
|
lastActiveAt: null,
|
||||||
|
messageCount: 0,
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
const host = document.createElement('div');
|
||||||
|
document.body.appendChild(host);
|
||||||
|
const root = createRoot(host);
|
||||||
|
|
||||||
|
await act(async () => {
|
||||||
|
root.render(
|
||||||
|
React.createElement(MemberMessagesTab, {
|
||||||
|
messages: [],
|
||||||
|
teamName: 'demo-team',
|
||||||
|
memberName: 'jack',
|
||||||
|
members,
|
||||||
|
tasks: [],
|
||||||
|
})
|
||||||
|
);
|
||||||
|
await Promise.resolve();
|
||||||
|
});
|
||||||
|
|
||||||
|
expect(host.textContent).toContain('No activity with this member');
|
||||||
|
expect(host.textContent).not.toContain('Load older messages');
|
||||||
|
|
||||||
|
await act(async () => {
|
||||||
|
root.unmount();
|
||||||
|
await Promise.resolve();
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue