Remove edit product flow
Build and push image / build (push) Successful in 46s

Product catalog entries are set at creation time. Per-instance
details (price, THC, weight) are edited from the inventory drawer.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-05-04 19:14:29 -04:00
parent db2af4b79d
commit 925a57aa03
2 changed files with 4 additions and 37 deletions
+1 -14
View File
@@ -2,7 +2,7 @@ import { useEffect, useMemo, useState } from "react";
import { useQuery } from "@tanstack/react-query"; import { useQuery } from "@tanstack/react-query";
import { Routes, Route } from "react-router-dom"; import { Routes, Route } from "react-router-dom";
import { api } from "./api.js"; import { api } from "./api.js";
import type { Bin, Bootstrap, Brand, Item, Product, Shop } from "./types.js"; import type { Bin, Bootstrap, Brand, Item, Shop } from "./types.js";
import { enrichItems } from "./types.js"; import { enrichItems } from "./types.js";
import { computeStats } from "./stats.js"; import { computeStats } from "./stats.js";
import { Sidebar } from "./components/Sidebar.js"; import { Sidebar } from "./components/Sidebar.js";
@@ -17,7 +17,6 @@ import type { ThemeKey } from "./views/SettingsView.js";
import { ProductDetail } from "./components/ProductDetail.js"; import { ProductDetail } from "./components/ProductDetail.js";
import { AddInventoryFlow } from "./components/modals/AddInventoryFlow.js"; import { AddInventoryFlow } from "./components/modals/AddInventoryFlow.js";
import { EditInventoryFlow } from "./components/modals/EditInventoryFlow.js"; import { EditInventoryFlow } from "./components/modals/EditInventoryFlow.js";
import { EditProductFlow } from "./components/modals/EditProductFlow.js";
import { ConsumeFlow } from "./components/modals/ConsumeFlow.js"; import { ConsumeFlow } from "./components/modals/ConsumeFlow.js";
import { MarkGoneFlow } from "./components/modals/MarkGoneFlow.js"; import { MarkGoneFlow } from "./components/modals/MarkGoneFlow.js";
import { AuditFlow } from "./components/modals/AuditFlow.js"; import { AuditFlow } from "./components/modals/AuditFlow.js";
@@ -33,7 +32,6 @@ import {
type ModalKey = type ModalKey =
| "add" | "add"
| "edit" | "edit"
| "editProduct"
| "consume" | "consume"
| "gone" | "gone"
| "audit" | "audit"
@@ -49,7 +47,6 @@ export function App() {
const [selected, setSelected] = useState<Item | null>(null); const [selected, setSelected] = useState<Item | null>(null);
const [modal, setModal] = useState<ModalKey>(null); const [modal, setModal] = useState<ModalKey>(null);
const [modalItem, setModalItem] = useState<Item | null>(null); const [modalItem, setModalItem] = useState<Item | null>(null);
const [modalProduct, setModalProduct] = useState<Product | null>(null);
const [modalBin, setModalBin] = useState<Bin | null>(null); const [modalBin, setModalBin] = useState<Bin | null>(null);
const [modalBrand, setModalBrand] = useState<Brand | null>(null); const [modalBrand, setModalBrand] = useState<Brand | null>(null);
const [modalShop, setModalShop] = useState<Shop | null>(null); const [modalShop, setModalShop] = useState<Shop | null>(null);
@@ -104,12 +101,6 @@ export function App() {
setSelected(null); setSelected(null);
setModal("edit"); setModal("edit");
}; };
const openEditProduct = (p: Product) => {
setModalProduct(p);
setSelected(null);
setModal("editProduct");
};
if (isLoading) { if (isLoading) {
return ( return (
<div <div
@@ -201,7 +192,6 @@ export function App() {
onMarkGone={openMarkGone} onMarkGone={openMarkGone}
onAudit={openAudit} onAudit={openAudit}
onEdit={openEdit} onEdit={openEdit}
onEditProduct={openEditProduct}
/> />
)} )}
@@ -209,9 +199,6 @@ export function App() {
{modal === "edit" && modalItem && ( {modal === "edit" && modalItem && (
<EditInventoryFlow data={data} item={modalItem} onClose={() => setModal(null)} /> <EditInventoryFlow data={data} item={modalItem} onClose={() => setModal(null)} />
)} )}
{modal === "editProduct" && modalProduct && (
<EditProductFlow data={data} product={modalProduct} onClose={() => setModal(null)} />
)}
{modal === "consume" && ( {modal === "consume" && (
<ConsumeFlow data={data} onClose={() => setModal(null)} item={modalItem} /> <ConsumeFlow data={data} onClose={() => setModal(null)} item={modalItem} />
)} )}
+2 -22
View File
@@ -15,7 +15,6 @@ export function ProductDetail({
onMarkGone, onMarkGone,
onAudit, onAudit,
onEdit, onEdit,
onEditProduct,
}: { }: {
item: Item; item: Item;
data: Bootstrap; data: Bootstrap;
@@ -24,7 +23,6 @@ export function ProductDetail({
onMarkGone: (i: Item) => void; onMarkGone: (i: Item) => void;
onAudit: (i: Item) => void; onAudit: (i: Item) => void;
onEdit: (i: Item) => void; onEdit: (i: Item) => void;
onEditProduct: (p: Product) => void;
}) { }) {
const bin = data.bins.find((b) => b.id === item.binId); const bin = data.bins.find((b) => b.id === item.binId);
const cfg = TYPES.find((t) => t.id === item.type); const cfg = TYPES.find((t) => t.id === item.type);
@@ -178,27 +176,9 @@ export function ProductDetail({
<div style={{ fontSize: 16, color: "var(--ink-2)" }}> <div style={{ fontSize: 16, color: "var(--ink-2)" }}>
{helpers.brandName(data, item.brandId)} · from {helpers.shopName(data, item.shopId)} {helpers.brandName(data, item.brandId)} · from {helpers.shopName(data, item.shopId)}
</div> </div>
{product && (
<div style={{ marginTop: 8 }}>
<button
onClick={() => onEditProduct(product)}
style={{
background: "none",
border: "none",
fontSize: 12,
color: "var(--ink-3)",
cursor: "pointer",
textDecoration: "underline",
padding: 0,
}}
>
Edit product (catalog)
</button>
{siblings.length > 0 && ( {siblings.length > 0 && (
<span style={{ fontSize: 12, color: "var(--ink-3)", marginLeft: 12 }}> <div style={{ marginTop: 8, fontSize: 12, color: "var(--ink-3)" }}>
· {siblings.length} other instance{siblings.length === 1 ? "" : "s"} on file {siblings.length} other instance{siblings.length === 1 ? "" : "s"} on file
</span>
)}
</div> </div>
)} )}