29 lines
887 B
TypeScript
29 lines
887 B
TypeScript
import { Id } from "./_generated/dataModel";
|
|
|
|
// Change this if your public IP changes
|
|
const PUBLIC_CONVEX_URL = "http://72.26.56.3:3210";
|
|
|
|
/** Rewrite any URL to use the public hostname/port/protocol */
|
|
export function rewriteToPublicUrl(url: string): string {
|
|
try {
|
|
const original = new URL(url);
|
|
const target = new URL(PUBLIC_CONVEX_URL);
|
|
original.hostname = target.hostname;
|
|
original.port = target.port;
|
|
original.protocol = target.protocol;
|
|
return original.toString();
|
|
} catch {
|
|
return url;
|
|
}
|
|
}
|
|
|
|
/** Get a storage file URL rewritten to the public address */
|
|
export async function getPublicStorageUrl(
|
|
ctx: { storage: { getUrl: (id: Id<"_storage">) => Promise<string | null> } },
|
|
storageId: Id<"_storage">
|
|
): Promise<string | null> {
|
|
const url = await ctx.storage.getUrl(storageId);
|
|
if (!url) return null;
|
|
return rewriteToPublicUrl(url);
|
|
}
|