Skip to content

Commit da987d1

Browse files
committed
fix: align campaign public URL with SUPABASE_PROJECT_URL
1 parent b452a37 commit da987d1

File tree

5 files changed

+583
-347
lines changed

5 files changed

+583
-347
lines changed

supabase/functions/.env.dev

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
LEADMINER_ANON_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZS1kZW1vIiwicm9sZSI6ImFub24iLCJleHAiOjE5ODM4MTI5OTZ9.CRXP1A7WOeoJeXxjNni43kdQwgnWNReilDMblYTn_I0
22
LEADMINER_HASH_SECRET=change_me
3-
LEADMINER_PROJECT_URL=http://host.docker.internal:54321/
3+
SUPABASE_PROJECT_URL=http://host.docker.internal:54321/
44
LEADMINER_SECRET_TOKEN=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZS1kZW1vIiwicm9sZSI6InNlcnZpY2Vfcm9sZSIsImV4cCI6MTk4MzgxMjk5Nn0.EGIM96RAZx35lJzdJsyH-qQwv8Hdp7fsn3W0YpN81IU
55

66
# Use an SMTP testing service like Ethereal for development https://ethereal.email/

supabase/functions/.env.prod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
LEADMINER_ANON_KEY= # ( REQUIRED ) Supabase anon key
22
LEADMINER_HASH_SECRET= # ( REQUIRED ) The hash secret used by backend
3-
LEADMINER_PROJECT_URL= # ( REQUIRED ) Supabase project url
3+
SUPABASE_PROJECT_URL= # ( REQUIRED ) Supabase project url
44
LEADMINER_SECRET_TOKEN= # ( REQUIRED ) Supabase service role key
55

66
SMTP_HOST=

supabase/functions/_shared/url.test.ts

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import {
22
assertEquals,
33
assertThrows,
44
} from "https://deno.land/std@0.224.0/assert/mod.ts";
5-
import { resolvePublicBaseUrl } from "./url.ts";
5+
import { resolveCampaignBaseUrlFromEnv, resolvePublicBaseUrl } from "./url.ts";
66

77
Deno.test("resolvePublicBaseUrl prefers explicit public URL", () => {
88
const value = resolvePublicBaseUrl(
@@ -20,3 +20,22 @@ Deno.test("resolvePublicBaseUrl falls back to secondary URL", () => {
2020
Deno.test("resolvePublicBaseUrl throws when both values are missing", () => {
2121
assertThrows(() => resolvePublicBaseUrl());
2222
});
23+
24+
Deno.test("resolveCampaignBaseUrlFromEnv prefers SUPABASE_PROJECT_URL", () => {
25+
const value = resolveCampaignBaseUrlFromEnv((key) => {
26+
if (key === "SUPABASE_PROJECT_URL") return "https://db-qa.domain.io/";
27+
if (key === "SUPABASE_URL") return "http://kong:8000";
28+
return undefined;
29+
});
30+
31+
assertEquals(value, "https://db-qa.domain.io");
32+
});
33+
34+
Deno.test("resolveCampaignBaseUrlFromEnv falls back to SUPABASE_URL", () => {
35+
const value = resolveCampaignBaseUrlFromEnv((key) => {
36+
if (key === "SUPABASE_URL") return "http://localhost:54321/";
37+
return undefined;
38+
});
39+
40+
assertEquals(value, "http://localhost:54321");
41+
});

supabase/functions/_shared/url.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ function normalizeBaseUrl(url: string): string {
22
return url.replace(/\/+$/, "");
33
}
44

5+
type EnvReader = (key: string) => string | undefined;
6+
57
export function resolvePublicBaseUrl(
68
explicitPublicUrl?: string,
79
fallbackUrl?: string,
@@ -12,3 +14,10 @@ export function resolvePublicBaseUrl(
1214
}
1315
return normalizeBaseUrl(candidate);
1416
}
17+
18+
export function resolveCampaignBaseUrlFromEnv(readEnv: EnvReader): string {
19+
return resolvePublicBaseUrl(
20+
readEnv("SUPABASE_PROJECT_URL"),
21+
readEnv("SUPABASE_URL"),
22+
);
23+
}

0 commit comments

Comments
 (0)