Allow creating from a base64 encoded string in a query param
This commit is contained in:
+33
-15
@@ -1,31 +1,49 @@
|
||||
import { LoaderFunction, redirect } from "remix";
|
||||
import invariant from "tiny-invariant";
|
||||
import { sendEvent } from "~/graphJSON.server";
|
||||
import { createFromUrl } from "~/jsonDoc.server";
|
||||
import { createFromRawJson, createFromUrl } from "~/jsonDoc.server";
|
||||
|
||||
export let loader: LoaderFunction = async ({ request, context }) => {
|
||||
const url = new URL(request.url);
|
||||
const jsonUrl = url.searchParams.get("url");
|
||||
const base64EncodedJson = url.searchParams.get("j");
|
||||
|
||||
if (!jsonUrl) {
|
||||
if (!jsonUrl && !base64EncodedJson) {
|
||||
return redirect("/");
|
||||
}
|
||||
|
||||
const jsonURL = new URL(jsonUrl);
|
||||
if (jsonUrl) {
|
||||
const jsonURL = new URL(jsonUrl);
|
||||
|
||||
invariant(jsonURL, "url must be a valid URL");
|
||||
invariant(jsonURL, "url must be a valid URL");
|
||||
|
||||
const doc = await createFromUrl(jsonURL, jsonURL.href);
|
||||
const doc = await createFromUrl(jsonURL, jsonURL.href);
|
||||
|
||||
context.waitUntil(
|
||||
sendEvent({
|
||||
type: "create",
|
||||
from: "url",
|
||||
hostname: jsonURL.hostname,
|
||||
id: doc.id,
|
||||
source: url.searchParams.get("utm_source") ?? url.hostname,
|
||||
})
|
||||
);
|
||||
context.waitUntil(
|
||||
sendEvent({
|
||||
type: "create",
|
||||
from: "url",
|
||||
hostname: jsonURL.hostname,
|
||||
id: doc.id,
|
||||
source: url.searchParams.get("utm_source") ?? url.hostname,
|
||||
})
|
||||
);
|
||||
|
||||
return redirect(`/j/${doc.id}`);
|
||||
return redirect(`/j/${doc.id}`);
|
||||
}
|
||||
|
||||
if (base64EncodedJson) {
|
||||
const doc = await createFromRawJson("Untitled", atob(base64EncodedJson));
|
||||
|
||||
context.waitUntil(
|
||||
sendEvent({
|
||||
type: "create",
|
||||
from: "base64",
|
||||
id: doc.id,
|
||||
source: url.searchParams.get("utm_source"),
|
||||
})
|
||||
);
|
||||
|
||||
return redirect(`/j/${doc.id}`);
|
||||
}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user