Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
49 changes: 9 additions & 40 deletions src/App.tsx
Original file line number Diff line number Diff line change
@@ -1,10 +1,8 @@
import { useState } from "react";
import { v4 as uuidv4 } from "uuid";
import { Layout, Typography } from "antd";
import { getJobStatus, addRecipe } from "./utils/firebase";
import { getJobStatus } from "./utils/firebase";
import { getFirebaseRecipe, jsonToString } from "./utils/recipeLoader";
import { getSubmitPackingUrl, JOB_STATUS } from "./constants/aws";
import { FIRESTORE_FIELDS } from "./constants/firebase";
import { SIMULARIUM_EMBED_URL } from "./constants/urls";
import PackingInput from "./components/PackingInput";
import Viewer from "./components/Viewer";
Expand Down Expand Up @@ -44,54 +42,25 @@ function App() {
return !(jsonToString(originalRecipe) == recipeString);
};

const recipeToFirebase = (
recipe: string,
path: string,
id: string
): object => {
const recipeJson = JSON.parse(recipe);
if (recipeJson.bounding_box) {
const flattened_array = Object.assign({}, recipeJson.bounding_box);
recipeJson.bounding_box = flattened_array;
}
recipeJson[FIRESTORE_FIELDS.RECIPE_PATH] = path;
recipeJson[FIRESTORE_FIELDS.NAME] = id;
recipeJson[FIRESTORE_FIELDS.TIMESTAMP] = Date.now();
return recipeJson;
};

const submitRecipe = async (
recipeId: string,
configId: string,
recipeString: string
) => {
resetState();
let firebaseRecipe = "firebase:recipes/" + recipeId;
const firebaseConfig = configId
? "firebase:configs/" + configId
: undefined;
const recipeChanged: boolean = await recipeHasChanged(
recipeId,
recipeString
);
if (recipeChanged) {
const recipeId = uuidv4();
firebaseRecipe = "firebase:recipes_edited/" + recipeId;
const recipeJson = recipeToFirebase(
recipeString,
firebaseRecipe,
recipeId
);
try {
await addRecipe(recipeId, recipeJson);
} catch (e) {
setJobStatus(JOB_STATUS.FAILED);
setJobLogs(String(e));
return;
}
}
const firebaseRecipe = recipeChanged
? undefined
: "firebase:recipes/" + recipeId;
const firebaseConfig = configId
? "firebase:configs/" + configId
: undefined;
const url = getSubmitPackingUrl(firebaseRecipe, firebaseConfig);
const request: RequestInfo = new Request(url, { method: "POST" });
const requestBody = recipeChanged ? recipeString : undefined;
const request = new Request(url, { method: "POST", body: requestBody });
start = Date.now();
const response = await fetch(request);
setJobStatus(JOB_STATUS.SUBMITTED);
Expand Down
12 changes: 8 additions & 4 deletions src/constants/aws.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,16 @@ const SUBMIT_PACKING_ECS = "https://bda21vau5c.execute-api.us-west-2.amazonaws.c
const S3_BASE_URL = "https://s3.us-west-2.amazonaws.com";

export const getSubmitPackingUrl = (
recipe: string,
recipe?: string,
config?: string,
) => {
let url = `${SUBMIT_PACKING_ECS}?recipe=${recipe}`;
if (config) {
url += `&config=${config}`;
let url = SUBMIT_PACKING_ECS;
if (recipe && config) {
url += `?recipe=${recipe}&config=${config}`;
} else if (recipe) {
url += `?recipe=${recipe}`;
} else if (config) {
url += `?config=${config}`;
}
return url;
};
Expand Down
7 changes: 1 addition & 6 deletions src/utils/firebase.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ import {
documentId,
QuerySnapshot,
DocumentData,
setDoc,
doc,
Timestamp,
deleteDoc,
Expand Down Expand Up @@ -172,10 +171,6 @@ const getDocsByIds = async (coll: string, ids: string[]) => {
return docs;
}

const addRecipe = async (id: string, data: object) => {
await setDoc(doc(db, FIRESTORE_COLLECTIONS.EDITED_RECIPES, id), data);
}

const docCleanup = async () => {
const now = Date.now();
const collectionsToClean = [
Expand All @@ -202,4 +197,4 @@ const docCleanup = async () => {
console.log(`Cleaned up ${deletePromises.length} documents from ${collectionConfig.name}`);
}
}
export { db, queryDocumentById, getDocsByIds, getJobStatus, addRecipe, docCleanup, getPackingInputsDict, getOutputsDirectory };
export { db, queryDocumentById, getDocsByIds, getJobStatus, docCleanup, getPackingInputsDict, getOutputsDirectory };