frontend/src/lib/lemonsqueezy.ts
2024-05-26 16:07:01 +02:00

34 lines
817 B
TypeScript

import { browser } from "$app/environment";
const windowWithLemonSqueezy = browser
? (window as unknown as {
LemonSqueezy: any;
createLemonSqueezy: () => void;
})
: undefined;
export async function openLemonSqueezyUrl(s: string) {
const LemonSqueezy = await getLemonSqueezy();
return LemonSqueezy.Url.Open(s);
}
async function getLemonSqueezy() {
if (!windowWithLemonSqueezy?.LemonSqueezy) {
await loadAndInitialize();
}
return windowWithLemonSqueezy?.LemonSqueezy;
}
function loadAndInitialize() {
return new Promise<void>((resolve) => {
const script = document.createElement("script");
script.onload = function () {
windowWithLemonSqueezy?.createLemonSqueezy();
resolve();
};
script.src = "https://assets.lemonsqueezy.com/lemon.js";
document.head.appendChild(script);
});
}