Skip to content

Commit 697447c

Browse files
Merge pull request #13123 from mezonai/bug26b/webdesktop/Incorrect-data-Member-Since-in-member-page-in-clan
260520 - WEB/DESKTOP - Incorrect data Member Since in member-page in clan
2 parents a23453d + d280e5f commit 697447c

3 files changed

Lines changed: 37 additions & 22 deletions

File tree

apps/chat/src/app/pages/member/TableMember.tsx

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import type { IUsersClan } from '@mezon/utils';
2-
import { getTimeDifferenceDate } from '@mezon/utils';
32
import React, { useMemo } from 'react';
43
import TableMemberHeader from './TableMemberHeader';
54
import TableMemberItem from './TableMemberItem';
@@ -21,20 +20,22 @@ const TableMember: React.FC<ITableMemberProps> = ({ currentPage, pageSize, dataM
2120
<div className="flex flex-col gap-2 flex-1 min-h-[48px]">
2221
<TableMemberHeader />
2322
<div className="flex flex-col overflow-y-auto px-4 py-2 border-b-theme-primary">
24-
{displayUsersClan.map((user) => (
25-
<TableMemberItem
26-
key={user.id}
27-
username={user.user?.username ?? ''}
28-
avatar={user.clan_avatar || user.user?.avatar_url || ''}
29-
mezonJoinTime={getTimeDifferenceDate((user.user?.create_time_seconds || 0) * 1000 || '')}
30-
clanJoinTime={new Date(
31-
(user.user?.create_time_seconds ??
32-
(user.user?.create_time_seconds ? new Date(user.user.create_time_seconds).getTime() / 1000 : 0)) * 1000
33-
).toISOString()}
34-
userId={user.id}
35-
displayName={user.prioritizeName!}
36-
/>
37-
))}
23+
{displayUsersClan.map((user) => {
24+
const accountCreatedSeconds = Number(user.user?.create_time_seconds ?? user.create_time_seconds ?? 0);
25+
const memberSinceSeconds = Number(user.user?.join_time_seconds ?? user.join_time_seconds ?? 0);
26+
27+
return (
28+
<TableMemberItem
29+
key={user.id}
30+
username={user.user?.username ?? ''}
31+
avatar={user.clan_avatar || user.user?.avatar_url || ''}
32+
mezonJoinTime={accountCreatedSeconds ? new Date(accountCreatedSeconds * 1000).toISOString() : undefined}
33+
clanJoinTime={memberSinceSeconds ? new Date(memberSinceSeconds * 1000).toISOString() : undefined}
34+
userId={user.id}
35+
displayName={user.prioritizeName!}
36+
/>
37+
);
38+
})}
3839
</div>
3940
</div>
4041
);

apps/chat/src/app/pages/member/TableMemberItem.tsx

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import {
1515
import { HighlightMatchBold, Icons } from '@mezon/ui';
1616
import type { ChannelMembersEntity } from '@mezon/utils';
1717
import { DEFAULT_ROLE_COLOR, EPermission, EVERYONE_ROLE_TITLE, createImgproxyUrl, generateE2eId, getDateLocale } from '@mezon/utils';
18-
import { formatDistance } from 'date-fns';
18+
import { format } from 'date-fns';
1919
import Tooltip from 'rc-tooltip';
2020
import type { MouseEvent } from 'react';
2121
import { useMemo, useRef, useState } from 'react';
@@ -181,6 +181,20 @@ const TableMemberItem = ({ userId, username, avatar, clanJoinTime, mezonJoinTime
181181
openUserProfile();
182182
};
183183

184+
const memberSinceLabel = useMemo(() => {
185+
if (!clanJoinTime) return '';
186+
const d = new Date(clanJoinTime);
187+
if (Number.isNaN(d.getTime())) return '';
188+
return format(d, 'MMM dd, yyyy', { locale: getDateLocale(i18n.language) });
189+
}, [clanJoinTime, i18n.language]);
190+
191+
const joinedMezonLabel = useMemo(() => {
192+
if (!mezonJoinTime) return '';
193+
const d = new Date(mezonJoinTime);
194+
if (Number.isNaN(d.getTime())) return '';
195+
return format(d, 'MMM dd, yyyy', { locale: getDateLocale(i18n.language) });
196+
}, [mezonJoinTime, i18n.language]);
197+
184198
return (
185199
<div
186200
className="flex flex-row justify-between items-center h-[48px] bg-item-hover cursor-pointer border-b-theme-primary no-divider-last "
@@ -215,15 +229,13 @@ const TableMemberItem = ({ userId, username, avatar, clanJoinTime, mezonJoinTime
215229
</div>
216230
</div>
217231
<div className="flex-1 p-1 text-center">
218-
<span className="text-xs font-medium uppercase" data-e2e={generateE2eId('clan_page.member_list.member_since')}>
219-
{clanJoinTime
220-
? formatDistance(clanJoinTime as string, new Date(), { addSuffix: true, locale: getDateLocale(i18n.language) })
221-
: '-'}
232+
<span className="text-xs font-medium" data-e2e={generateE2eId('clan_page.member_list.member_since')}>
233+
{memberSinceLabel || '-'}
222234
</span>
223235
</div>
224236
<div className="flex-1 p-1 text-center">
225-
<span className="text-xs font-medium uppercase" data-e2e={generateE2eId('clan_page.member_list.join_mezon')}>
226-
{mezonJoinTime ? t('memberTable:timeAgo', { time: mezonJoinTime }) : '-'}
237+
<span className="text-xs font-medium" data-e2e={generateE2eId('clan_page.member_list.join_mezon')}>
238+
{joinedMezonLabel || '-'}
227239
</span>
228240
</div>
229241
<div className="flex-2 p-1 text-center">

libs/utils/src/lib/types/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,8 @@ export type IPermissionUser = ApiPermission & {
9191
export type IUsersClan = ClanUserListClanUser & {
9292
prioritizeName?: string;
9393
id: string;
94+
join_time_seconds?: number;
95+
create_time_seconds?: number;
9496
};
9597

9698
export type IRolesClan = ApiRole & {

0 commit comments

Comments
 (0)