Custom-Domain-Slots sind jetzt EIN gemeinsamer Pool für web + mail
(Pro 10 / Legend 20) statt getrennter web/mail-Buckets. Free-Tier ist
entfallen — PLAN_LIMITS hat nur noch pro + legend, getPlanLimits
defaultet auf pro.
Backend:
- plan-features: customDomains ist eine Zahl (CustomDomainLimits weg)
- index.post: Slot-Check gegen Gesamt-Count, Fehler einheitlich LIMIT_REACHED
- index.get: liefert { items, count, limit }
- change-preview + coach/message an die neue Form angepasst
Frontend:
- useCustomDomains: count/limit (Zahlen) statt countsByType/limits
- AddDomainSheet: ein generischer Limit-Hinweis (error_limit_reached)
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
19 lines
612 B
TypeScript
19 lines
612 B
TypeScript
import { getUserCustomDomains, countActiveCustomDomains } from "../../db/domains";
|
|
import { getProfile } from "../../db/profile";
|
|
import { getPlanLimits } from "../../utils/plan-features";
|
|
|
|
export default defineEventHandler(async (event) => {
|
|
const user = await requireUser(event);
|
|
|
|
const [items, count, profile] = await Promise.all([
|
|
getUserCustomDomains(user.id),
|
|
countActiveCustomDomains(user.id),
|
|
getProfile(user.id),
|
|
]);
|
|
|
|
// Slot-Pool: web + mail gemeinsam (Pro 10 / Legend 20).
|
|
const limit = getPlanLimits(profile?.plan ?? "pro").customDomains;
|
|
|
|
return { items, count, limit };
|
|
});
|