From 1b766b70ad2895659043d15a64f109c75069a5d0 Mon Sep 17 00:00:00 2001 From: ascibisz Date: Thu, 23 Oct 2025 13:46:22 -0700 Subject: [PATCH 1/2] for edited recipes, send json version of recipe to server rather than upload to firebase --- src/App.tsx | 60 ++++++++----------------------------------- src/constants/aws.ts | 12 ++++++--- src/utils/firebase.ts | 7 +---- 3 files changed, 20 insertions(+), 59 deletions(-) diff --git a/src/App.tsx b/src/App.tsx index 4b6c0623..fb29636a 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -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"; @@ -44,54 +42,18 @@ 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 buildSubmitRecipeRequest = async (recipeId: string, configId: string, recipeString: string): Promise => { + const recipeChanged: boolean = await recipeHasChanged(recipeId, recipeString); + const firebaseRecipe = recipeChanged ? undefined : "firebase:recipes/" + recipeId; + const firebaseConfig = configId ? "firebase:configs/" + configId : undefined; + const url = getSubmitPackingUrl(firebaseRecipe, firebaseConfig); + const requestBody = recipeChanged ? recipeString : undefined; + return new Request(url, { method: "POST", body: requestBody }); + } - const submitRecipe = async ( - recipeId: string, - configId: string, - recipeString: string - ) => { + 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 url = getSubmitPackingUrl(firebaseRecipe, firebaseConfig); - const request: RequestInfo = new Request(url, { method: "POST" }); + const request = await buildSubmitRecipeRequest(recipeId, configId, recipeString); start = Date.now(); const response = await fetch(request); setJobStatus(JOB_STATUS.SUBMITTED); diff --git a/src/constants/aws.ts b/src/constants/aws.ts index 383f18bf..dfb00c9c 100644 --- a/src/constants/aws.ts +++ b/src/constants/aws.ts @@ -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; }; diff --git a/src/utils/firebase.ts b/src/utils/firebase.ts index f8ce4c63..95b5a8c6 100644 --- a/src/utils/firebase.ts +++ b/src/utils/firebase.ts @@ -8,7 +8,6 @@ import { documentId, QuerySnapshot, DocumentData, - setDoc, doc, Timestamp, deleteDoc, @@ -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 = [ @@ -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 }; From 1c4ca32129e153f90053bbd668826e28adfebf21 Mon Sep 17 00:00:00 2001 From: ascibisz Date: Thu, 23 Oct 2025 14:48:30 -0700 Subject: [PATCH 2/2] minimize changeset --- src/App.tsx | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/src/App.tsx b/src/App.tsx index fb29636a..877e1bf8 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -42,18 +42,25 @@ function App() { return !(jsonToString(originalRecipe) == recipeString); }; - const buildSubmitRecipeRequest = async (recipeId: string, configId: string, recipeString: string): Promise => { - const recipeChanged: boolean = await recipeHasChanged(recipeId, recipeString); - const firebaseRecipe = recipeChanged ? undefined : "firebase:recipes/" + recipeId; - const firebaseConfig = configId ? "firebase:configs/" + configId : undefined; + const submitRecipe = async ( + recipeId: string, + configId: string, + recipeString: string + ) => { + resetState(); + const recipeChanged: boolean = await recipeHasChanged( + recipeId, + recipeString + ); + const firebaseRecipe = recipeChanged + ? undefined + : "firebase:recipes/" + recipeId; + const firebaseConfig = configId + ? "firebase:configs/" + configId + : undefined; const url = getSubmitPackingUrl(firebaseRecipe, firebaseConfig); const requestBody = recipeChanged ? recipeString : undefined; - return new Request(url, { method: "POST", body: requestBody }); - } - - const submitRecipe = async (recipeId: string, configId: string, recipeString: string) => { - resetState(); - const request = await buildSubmitRecipeRequest(recipeId, configId, recipeString); + const request = new Request(url, { method: "POST", body: requestBody }); start = Date.now(); const response = await fetch(request); setJobStatus(JOB_STATUS.SUBMITTED);