Skip to content

Commit f44a5c9

Browse files
committed
feat: add create invite code edited data update. now can review changed info
1 parent b6e978e commit f44a5c9

File tree

5 files changed

+60
-23
lines changed

5 files changed

+60
-23
lines changed

client/shared/i18n/langs/en-US/translation.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@
4444
"k250e392c": "System is busy, please try again later",
4545
"k263bff41": "Edit invite link",
4646
"k267cc491": "Me",
47+
"k29498d11": "Can be used <2>{{num}}</2> times",
4748
"k2a1422d2": "Configuration",
4849
"k2a8031e": "Homepage",
4950
"k2b411a11": "Component can only work in the group panel",

client/shared/i18n/langs/zh-CN/translation.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@
4444
"k250e392c": "系统忙, 请稍后再试",
4545
"k263bff41": "编辑邀请链接",
4646
"k267cc491": "",
47+
"k29498d11": "可使用 <2>{{num}}</2> 次",
4748
"k2a1422d2": "配置",
4849
"k2a8031e": "个人主页",
4950
"k2b411a11": "组件只能在群组面板中才能正常显示",
Lines changed: 32 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Tooltip } from 'antd';
1+
import { Divider, Tooltip } from 'antd';
22
import React from 'react';
33
import {
44
datetimeFromNow,
@@ -9,30 +9,46 @@ import {
99
} from 'tailchat-shared';
1010

1111
interface InviteCodeExpiredAtProps {
12-
invite: Pick<GroupInvite, 'expiredAt'>;
12+
invite: Pick<GroupInvite, 'expiredAt' | 'usageLimit'>;
1313
}
1414
export const InviteCodeExpiredAt: React.FC<InviteCodeExpiredAtProps> =
1515
React.memo((props) => {
1616
const { invite } = props;
1717

18-
if (!invite.expiredAt) {
19-
return <span>{t('该邀请码永不过期')}</span>;
20-
}
21-
22-
if (new Date(invite.expiredAt).valueOf() < Date.now()) {
18+
if (invite.expiredAt && new Date(invite.expiredAt).valueOf() < Date.now()) {
2319
return <span>{t('该邀请码已过期')}</span>;
2420
}
2521

2622
return (
27-
<Trans>
28-
该邀请将于{' '}
29-
<Tooltip title={formatFullTime(invite.expiredAt)}>
30-
<span className="font-bold">
31-
{{ date: datetimeFromNow(invite.expiredAt) } as any}
32-
</span>
33-
</Tooltip>{' '}
34-
过期
35-
</Trans>
23+
<>
24+
{!invite.expiredAt ? (
25+
<span>{t('该邀请码永不过期')}</span>
26+
) : (
27+
<Trans>
28+
该邀请将于{' '}
29+
<Tooltip title={formatFullTime(invite.expiredAt)}>
30+
<span className="font-bold">
31+
{{ date: datetimeFromNow(invite.expiredAt) } as any}
32+
</span>
33+
</Tooltip>{' '}
34+
过期
35+
</Trans>
36+
)}
37+
38+
{invite.usageLimit && (
39+
<>
40+
<Divider type="vertical" />
41+
42+
<Trans>
43+
可使用{' '}
44+
<span className="font-bold">
45+
{{ num: invite.usageLimit } as any}
46+
</span>{' '}
47+
48+
</Trans>
49+
</>
50+
)}
51+
</>
3652
);
3753
});
3854
InviteCodeExpiredAt.displayName = 'InviteCodeExpiredAt';

client/web/src/components/modals/CreateGroupInvite/CreateInviteCode.tsx

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,18 @@ export const CreateInviteCode: React.FC<CreateInviteCodeProps> = React.memo(
5151
<EditGroupInvite
5252
groupId={groupId}
5353
code={createdInvite.code}
54-
onEditSuccess={() => {
54+
onEditSuccess={({ expiredAt, usageLimit }) => {
5555
showToasts(t('邀请设置修改成功'), 'success');
56+
setCreateInvite(
57+
(state) =>
58+
({
59+
...state,
60+
expiredAt: expiredAt
61+
? new Date(expiredAt).toISOString()
62+
: undefined,
63+
usageLimit: usageLimit,
64+
} as any)
65+
);
5666
closeModal(key);
5767
}}
5868
/>

client/web/src/components/modals/EditGroupInvite/index.tsx

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -90,21 +90,30 @@ const fields: MetaFormFieldMeta[] = [
9090
interface EditGroupInviteProps {
9191
groupId: string;
9292
code: string;
93-
onEditSuccess: () => void;
93+
onEditSuccess: (info: {
94+
expiredAt: number | undefined;
95+
usageLimit: number | undefined;
96+
}) => void;
9497
}
9598
export const EditGroupInvite: React.FC<EditGroupInviteProps> = React.memo(
9699
(props) => {
97100
const handleEditGroupInvite = useEvent(async (values: MetaFormValues) => {
101+
const expiredAt =
102+
values.expiredAt === -1
103+
? undefined
104+
: Date.now() + values.expiredAt * 1000;
105+
106+
const usageLimit =
107+
values.usageLimit === -1 ? undefined : values.usageLimit;
108+
98109
await model.group.editGroupInvite(
99110
props.groupId,
100111
props.code,
101-
values.expiredAt === -1
102-
? undefined
103-
: Date.now() + values.expiredAt * 1000,
104-
values.usageLimit === -1 ? undefined : values.usageLimit
112+
expiredAt,
113+
usageLimit
105114
);
106115

107-
props.onEditSuccess();
116+
props.onEditSuccess({ expiredAt, usageLimit });
108117
});
109118

110119
return (

0 commit comments

Comments
 (0)