Improve invite handling
All checks were successful
Template Compliance / compliance (push) Successful in 5s
All checks were successful
Template Compliance / compliance (push) Successful in 5s
This commit is contained in:
@@ -14,6 +14,7 @@ import { getAppSettings, type AppSettings } from "@/lib/settings";
|
||||
import { updateInstanceSettings, updateSecuritySettings } from "@/lib/settings-actions";
|
||||
import { banUser, createInstanceInvite, disableUser, enableUser, grantAdminRole, removeUserFriendships, revokeAdminRole, revokeInvite } from "@/lib/admin-actions";
|
||||
import { deleteRoom } from "@/lib/room-actions";
|
||||
import { isInviteExpired } from "@/lib/invites";
|
||||
|
||||
export const dynamic = "force-dynamic";
|
||||
|
||||
@@ -364,21 +365,28 @@ function InvitesPanel({
|
||||
<EmptyState title="No invites yet" description="Create an invite to allow registration or room access workflows." />
|
||||
) : (
|
||||
<div className="settings-list">
|
||||
{invites.map((invite) => (
|
||||
<div className="setting-row" key={invite.id}>
|
||||
<span>
|
||||
<strong>{invite.code}</strong>
|
||||
<small>{invite.room ? `${invite.room.name} /${invite.room.slug}` : "Instance invite"} - {formatDate(invite.createdAt)}</small>
|
||||
</span>
|
||||
<StatusBadge tone={invite.status === "ACTIVE" ? "good" : "warn"}>{invite.status.toLowerCase()}</StatusBadge>
|
||||
{invite.status === "ACTIVE" ? (
|
||||
<form action={revokeInvite}>
|
||||
<input type="hidden" name="inviteId" value={invite.id} />
|
||||
<button className="button compact-button danger" type="submit">Revoke</button>
|
||||
</form>
|
||||
) : null}
|
||||
</div>
|
||||
))}
|
||||
{invites.map((invite) => {
|
||||
const expired = isInviteExpired(invite.expiresAt);
|
||||
const label = expired && invite.status === "ACTIVE" ? "expired" : invite.status.toLowerCase();
|
||||
return (
|
||||
<div className="setting-row" key={invite.id}>
|
||||
<span>
|
||||
<strong>{invite.code}</strong>
|
||||
<small>
|
||||
{invite.room ? `${invite.room.name} /${invite.room.slug}` : "Instance invite"} - created {formatDate(invite.createdAt)}
|
||||
{invite.expiresAt ? ` - expires ${formatDate(invite.expiresAt)}` : " - no expiry"}
|
||||
</small>
|
||||
</span>
|
||||
<StatusBadge tone={invite.status === "ACTIVE" && !expired ? "good" : "warn"}>{label}</StatusBadge>
|
||||
{invite.status === "ACTIVE" && !expired ? (
|
||||
<form action={revokeInvite}>
|
||||
<input type="hidden" name="inviteId" value={invite.id} />
|
||||
<button className="button compact-button danger" type="submit">Revoke</button>
|
||||
</form>
|
||||
) : null}
|
||||
</div>
|
||||
);
|
||||
})}
|
||||
</div>
|
||||
)}
|
||||
</Panel>
|
||||
|
||||
Reference in New Issue
Block a user