nimzuk commited on
Commit
4e3d627
·
verified ·
1 Parent(s): a71f048

CI: sync from GitHub

Browse files
frontend/src/ui/App.jsx CHANGED
@@ -7,6 +7,7 @@ function useImage(url){ const [i,set]=React.useState(null); React.useEffect(()=>
7
  export default function App(){
8
  const s = useStore()
9
  const d = s.details[s.active]
 
10
  const img = useImage(d.previewUrl)
11
  return (
12
  <div style={{display:'grid',gridTemplateColumns:'280px 1fr',minHeight:'100vh'}}>
@@ -33,8 +34,30 @@ export default function App(){
33
  <label htmlFor="file" style={{padding:'8px 12px',background:'#2563eb',display:'inline-block',borderRadius:8,cursor:'pointer'}}>Upload / Spread</label>
34
  </div>
35
  <div style={{marginTop:12}}>
36
- <button onClick={s.startOrder}>Order</button>
 
 
 
 
 
 
 
37
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
38
  </div>
39
  <div style={{display:'grid',placeItems:'center'}}>
40
  {!img ? <label style={{border:'2px dashed #3a4251',padding:40,borderRadius:12,cursor:'pointer'}}>
 
7
  export default function App(){
8
  const s = useStore()
9
  const d = s.details[s.active]
10
+ const orderInfo = s.lastOrderInfo
11
  const img = useImage(d.previewUrl)
12
  return (
13
  <div style={{display:'grid',gridTemplateColumns:'280px 1fr',minHeight:'100vh'}}>
 
34
  <label htmlFor="file" style={{padding:'8px 12px',background:'#2563eb',display:'inline-block',borderRadius:8,cursor:'pointer'}}>Upload / Spread</label>
35
  </div>
36
  <div style={{marginTop:12}}>
37
+ <button onClick={async ()=>{
38
+ try {
39
+ await s.startOrder()
40
+ } catch (err) {
41
+ console.error(err)
42
+ alert(err.message || String(err))
43
+ }
44
+ }}>Order</button>
45
  </div>
46
+ {orderInfo?.mockups?.length ? (
47
+ <div style={{marginTop:12, padding:12, border:'1px solid #2563eb', borderRadius:8}}>
48
+ <div style={{fontWeight:600, marginBottom:8}}>Mockups:</div>
49
+ <ul style={{margin:0, paddingLeft:20}}>
50
+ {orderInfo.mockups.map((url, idx)=>(
51
+ <li key={url+idx}><a href={url} target="_blank" rel="noreferrer">{url}</a></li>
52
+ ))}
53
+ </ul>
54
+ {orderInfo.mockups_dir ? (
55
+ <div style={{marginTop:8}}>
56
+ <a href={orderInfo.mockups_dir} target="_blank" rel="noreferrer">Open mockups folder</a>
57
+ </div>
58
+ ) : null}
59
+ </div>
60
+ ) : null}
61
  </div>
62
  <div style={{display:'grid',placeItems:'center'}}>
63
  {!img ? <label style={{border:'2px dashed #3a4251',padding:40,borderRadius:12,cursor:'pointer'}}>
frontend/src/useStore.js CHANGED
@@ -37,6 +37,7 @@ const useStore = create((set, get) => ({
37
  sleeveR: createInitialDetail(),
38
  },
39
  uploadedPath: null,
 
40
  busy: false,
41
  lastPreviewUrls: null,
42
  lastOrderInfo: null,
@@ -100,8 +101,8 @@ const useStore = create((set, get) => ({
100
  async upload(file) {
101
  set({ busy: true });
102
  try {
103
- const { path } = await postFile("/api/upload", file);
104
- set({ uploadedPath: path });
105
  return path;
106
  } finally {
107
  set({ busy: false });
@@ -186,4 +187,4 @@ const useStore = create((set, get) => ({
186
  },
187
  }));
188
 
189
- export default useStore;
 
37
  sleeveR: createInitialDetail(),
38
  },
39
  uploadedPath: null,
40
+ uploadedUrl: null,
41
  busy: false,
42
  lastPreviewUrls: null,
43
  lastOrderInfo: null,
 
101
  async upload(file) {
102
  set({ busy: true });
103
  try {
104
+ const { path, url } = await postFile("/api/upload", file);
105
+ set({ uploadedPath: path, uploadedUrl: url });
106
  return path;
107
  } finally {
108
  set({ busy: false });
 
187
  },
188
  }));
189
 
190
+ export default useStore;