Skip to content

Commit c342ce7

Browse files
committed
server verify settings: hide verify button until 30 days
1 parent 3569b9f commit c342ce7

File tree

2 files changed

+32
-7
lines changed

2 files changed

+32
-7
lines changed

src/components/servers/settings/ServerVerifySettings.tsx

Lines changed: 28 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import { styled } from "solid-styled-components";
1212
import Button from "@/components/ui/Button";
1313
import { useCustomPortal } from "@/components/ui/custom-portal/CustomPortal";
1414
import { CreateTicketModal } from "@/components/CreateTicketModal";
15+
import { formatTimestampRelative } from "@/common/date";
1516

1617
const Container = styled("div")`
1718
display: flex;
@@ -27,6 +28,7 @@ export default function ServerSettingsBans() {
2728
const params = useParams<{ serverId: string }>();
2829
const { servers, serverMembers, header, users } = useStore();
2930
const { createPortal } = useCustomPortal();
31+
const server = () => servers.get(params.serverId);
3032

3133
createEffect(() => {
3234
header.updateHeader({
@@ -39,7 +41,21 @@ export default function ServerSettingsBans() {
3941
});
4042
});
4143
const TARGET_MEMBERS = 30;
42-
const server = () => servers.get(params.serverId);
44+
const THIRTY_DAYS_MS = 30 * 24 * 60 * 60 * 1000;
45+
46+
const daysLeft = () => {
47+
const createdAt = server()?.createdAt;
48+
if (!createdAt) return "Unknown";
49+
50+
const targetDate = createdAt + THIRTY_DAYS_MS;
51+
const now = Date.now();
52+
const remainingMillis = targetDate - now;
53+
54+
return remainingMillis > 0
55+
? formatTimestampRelative(targetDate, "duration")
56+
: "Expired";
57+
};
58+
4359
const isVerified = () => server()?.verified;
4460
const memberCount = () =>
4561
serverMembers
@@ -75,12 +91,19 @@ export default function ServerSettingsBans() {
7591
description={t("servers.settings.verify.alreadyVerified")}
7692
/>
7793
</Match>
78-
<Match when={membersNeeded() > 0}>
94+
<Match when={membersNeeded() > 0 || daysLeft() !== "Expired"}>
7995
<Notice
8096
type="warn"
81-
description={t("servers.settings.verify.insufficientMembers", {
82-
count: `${membersNeeded()}`
83-
})}
97+
description={[
98+
!membersNeeded()
99+
? undefined
100+
: t("servers.settings.verify.insufficientMembers", {
101+
count: `${membersNeeded()}`
102+
}),
103+
daysLeft() === "Expired"
104+
? undefined
105+
: `Wait ${daysLeft()} more to apply for server verification.`
106+
]}
84107
// description={`You need ${membersNeeded()} more member(s) to apply for a verification.`}
85108
/>
86109
</Match>

src/components/ui/Notice/Notice.tsx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ const noticeType = {
3939

4040
interface NoticeProps {
4141
class?: string;
42-
description?: string | string[];
42+
description?: string | (string | undefined)[];
4343
type: keyof typeof noticeType;
4444
children?: JSX.Element;
4545
style?: JSX.CSSProperties;
@@ -72,7 +72,9 @@ export function Notice(props: NoticeProps) {
7272
<Switch>
7373
<Match when={Array.isArray(props.description)}>
7474
<ul class={styles.noticeList}>
75-
<For each={props.description as string[]}>
75+
<For
76+
each={(props.description as string[]).filter((item) => item)}
77+
>
7678
{(item) => <li>{item}</li>}
7779
</For>
7880
</ul>

0 commit comments

Comments
 (0)