feat(cloud): pause members when subscription is cancelled
This commit is contained in:
@@ -4,6 +4,7 @@ import type { Readable } from "node:stream";
|
||||
|
||||
import { createNextApiContext } from "@kan/api/trpc";
|
||||
import { withApiLogging } from "@kan/api/utils/apiLogging";
|
||||
import { cancelWorkspaceAccess } from "@kan/api/utils/workspace";
|
||||
import * as subscriptionRepo from "@kan/db/repository/subscription.repo";
|
||||
import * as workspaceRepo from "@kan/db/repository/workspace.repo";
|
||||
import { createLogger } from "@kan/logger";
|
||||
@@ -126,7 +127,7 @@ export default withApiLogging(
|
||||
const [, allSubs] = await Promise.all([
|
||||
subscriptionRepo.updateById(db, sub.id, {
|
||||
plan: "free",
|
||||
status: "inactive",
|
||||
status: "canceled",
|
||||
}),
|
||||
sub.referenceId
|
||||
? subscriptionRepo.getByReferenceId(db, sub.referenceId)
|
||||
@@ -137,7 +138,7 @@ export default withApiLogging(
|
||||
(s) => s.id !== sub.id,
|
||||
);
|
||||
if (!hasActiveSub) {
|
||||
await workspaceRepo.update(db, sub.referenceId, { plan: "free" });
|
||||
await cancelWorkspaceAccess(db, sub.referenceId);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -81,8 +81,6 @@ export function InviteMemberForm({
|
||||
}
|
||||
}, [activeInviteLink]);
|
||||
|
||||
const isAtSeatLimit = seatLimit !== null && memberCount >= seatLimit;
|
||||
|
||||
const inviteMember = api.member.invite.useMutation({
|
||||
onSuccess: async () => {
|
||||
closeModal();
|
||||
|
||||
@@ -89,6 +89,9 @@ export default function MembersPage() {
|
||||
|
||||
const activeMembers = data?.members.length ?? 0;
|
||||
const seatLimit = getSeatLimit(subscriptions);
|
||||
const memberCount =
|
||||
data?.members.filter((m) => m.status === "active" || m.status === "invited")
|
||||
.length ?? 0;
|
||||
const totalSeats =
|
||||
teamSubscription?.seats ??
|
||||
proSubscription?.seats ??
|
||||
@@ -407,7 +410,7 @@ export default function MembersPage() {
|
||||
<InviteMemberForm
|
||||
subscriptions={subscriptions}
|
||||
unlimitedSeats={unlimitedSeats}
|
||||
memberCount={activeMembers}
|
||||
memberCount={memberCount}
|
||||
seatLimit={seatLimit}
|
||||
/>
|
||||
</Modal>
|
||||
|
||||
Reference in New Issue
Block a user