Compare commits

...

2 Commits

View File

@@ -17,6 +17,10 @@ type ActionLogSummary = Pick<
"target_id" | "status" | "action" | "created_at" | "error_message" "target_id" | "status" | "action" | "created_at" | "error_message"
>; >;
function normalizeDomainLike(value: string) {
return value.trim().toLowerCase().replace(/\.$/, "");
}
export default async function DashboardPage() { export default async function DashboardPage() {
const context = await getServerAgencyContextOrRedirect(); const context = await getServerAgencyContextOrRedirect();
const supabase = createSupabaseServerClient() as any; const supabase = createSupabaseServerClient() as any;
@@ -50,7 +54,7 @@ export default async function DashboardPage() {
supabase supabase
.from("plesk_domains") .from("plesk_domains")
.select( .select(
"id, plesk_instance_id, subscription_id, status, domain_name, hosting_type, source_created_at, aliases_count, updated_at", "id, plesk_instance_id, subscription_id, external_subscription_id, status, domain_name, hosting_type, source_created_at, aliases_count, updated_at",
) )
.eq("agency_id", context.agencyId) .eq("agency_id", context.agencyId)
.order("updated_at", { ascending: false }) .order("updated_at", { ascending: false })
@@ -101,6 +105,7 @@ export default async function DashboardPage() {
id: string; id: string;
plesk_instance_id: string; plesk_instance_id: string;
subscription_id: string | null; subscription_id: string | null;
external_subscription_id: string | null;
domain_name: string; domain_name: string;
status: string | null; status: string | null;
hosting_type: string | null; hosting_type: string | null;
@@ -121,13 +126,17 @@ export default async function DashboardPage() {
), ),
); );
const domainInstanceIds = Array.from(
new Set((domains ?? []).map((domain) => domain.plesk_instance_id)),
);
const { data: domainSubscriptions } = const { data: domainSubscriptions } =
domainSubscriptionIds.length > 0 domainInstanceIds.length > 0
? await supabase ? await supabase
.from("plesk_subscriptions") .from("plesk_subscriptions")
.select("id, status") .select("id, plesk_instance_id, plesk_subscription_id, name, status")
.eq("agency_id", context.agencyId) .eq("agency_id", context.agencyId)
.in("id", domainSubscriptionIds) .in("plesk_instance_id", domainInstanceIds)
: { data: [] }; : { data: [] };
const subscriptionStatusById = new Map<string, string | null>( const subscriptionStatusById = new Map<string, string | null>(
@@ -137,6 +146,31 @@ export default async function DashboardPage() {
]), ]),
); );
const subscriptionStatusByExternalId = new Map<string, string | null>(
(domainSubscriptions ?? [])
.filter((subscription: any) =>
Boolean(
subscription?.plesk_instance_id &&
subscription?.plesk_subscription_id,
),
)
.map((subscription: any) => [
`${String(subscription.plesk_instance_id)}:${String(subscription.plesk_subscription_id)}`,
subscription?.status ? String(subscription.status) : null,
]),
);
const subscriptionStatusByInstanceAndName = new Map<string, string | null>(
(domainSubscriptions ?? [])
.filter((subscription: any) =>
Boolean(subscription?.plesk_instance_id && subscription?.name),
)
.map((subscription: any) => [
`${String(subscription.plesk_instance_id)}:${normalizeDomainLike(String(subscription.name))}`,
subscription?.status ? String(subscription.status) : null,
]),
);
const autoSyncByInstance = new Map< const autoSyncByInstance = new Map<
string, string,
{ status: string; created_at: string; error_message: string | null } { status: string; created_at: string; error_message: string | null }
@@ -192,9 +226,21 @@ export default async function DashboardPage() {
instances={instances ?? []} instances={instances ?? []}
subscriptions={subscriptions ?? []} subscriptions={subscriptions ?? []}
domains={(domains ?? []).map((domain) => { domains={(domains ?? []).map((domain) => {
const joinedStatus = domain.subscription_id const joinedStatusByLocalId = domain.subscription_id
? subscriptionStatusById.get(domain.subscription_id) ? subscriptionStatusById.get(domain.subscription_id)
: null; : null;
const joinedStatusByExternalId = domain.external_subscription_id
? subscriptionStatusByExternalId.get(
`${domain.plesk_instance_id}:${domain.external_subscription_id}`,
)
: null;
const joinedStatusByName = subscriptionStatusByInstanceAndName.get(
`${domain.plesk_instance_id}:${normalizeDomainLike(domain.domain_name)}`,
);
const joinedStatus =
joinedStatusByLocalId ??
joinedStatusByExternalId ??
joinedStatusByName;
return { return {
...domain, ...domain,