From 38d367dedcba143524b4668573f11b757233401b Mon Sep 17 00:00:00 2001 From: Michael FIG Date: Mon, 16 Mar 2020 00:03:47 -0600 Subject: [PATCH] fix: accomodate modified offer ids --- .../agoric-cli/agoric-wallet-build/asset-manifest.json | 8 ++++---- packages/agoric-cli/agoric-wallet-build/index.html | 2 +- ...precache-manifest.81ac76d1232f29be088449d54b9983b8.js} | 6 +++--- packages/agoric-cli/agoric-wallet-build/service-worker.js | 2 +- .../js/{main.8b821acd.chunk.js => main.2de9e919.chunk.js} | 4 ++-- .../static/js/main.2de9e919.chunk.js.map | 1 + .../static/js/main.8b821acd.chunk.js.map | 1 - packages/cosmic-swingset/lib/ag-solo/vats/lib-wallet.js | 7 +++++-- packages/wallet-frontend/src/components/Inbox.jsx | 2 +- 9 files changed, 18 insertions(+), 15 deletions(-) rename packages/agoric-cli/agoric-wallet-build/{precache-manifest.dc3db1e8ecb4d6dc99cf7c3550f46d0c.js => precache-manifest.81ac76d1232f29be088449d54b9983b8.js} (75%) rename packages/agoric-cli/agoric-wallet-build/static/js/{main.8b821acd.chunk.js => main.2de9e919.chunk.js} (51%) create mode 100644 packages/agoric-cli/agoric-wallet-build/static/js/main.2de9e919.chunk.js.map delete mode 100644 packages/agoric-cli/agoric-wallet-build/static/js/main.8b821acd.chunk.js.map diff --git a/packages/agoric-cli/agoric-wallet-build/asset-manifest.json b/packages/agoric-cli/agoric-wallet-build/asset-manifest.json index bb523f4ca75..0a47800dbf6 100644 --- a/packages/agoric-cli/agoric-wallet-build/asset-manifest.json +++ b/packages/agoric-cli/agoric-wallet-build/asset-manifest.json @@ -1,19 +1,19 @@ { "files": { - "main.js": "./static/js/main.8b821acd.chunk.js", - "main.js.map": "./static/js/main.8b821acd.chunk.js.map", + "main.js": "./static/js/main.2de9e919.chunk.js", + "main.js.map": "./static/js/main.2de9e919.chunk.js.map", "runtime-main.js": "./static/js/runtime-main.6d19b3b8.js", "runtime-main.js.map": "./static/js/runtime-main.6d19b3b8.js.map", "static/js/2.8b396fe9.chunk.js": "./static/js/2.8b396fe9.chunk.js", "static/js/2.8b396fe9.chunk.js.map": "./static/js/2.8b396fe9.chunk.js.map", "index.html": "./index.html", - "precache-manifest.dc3db1e8ecb4d6dc99cf7c3550f46d0c.js": "./precache-manifest.dc3db1e8ecb4d6dc99cf7c3550f46d0c.js", + "precache-manifest.81ac76d1232f29be088449d54b9983b8.js": "./precache-manifest.81ac76d1232f29be088449d54b9983b8.js", "service-worker.js": "./service-worker.js", "static/js/2.8b396fe9.chunk.js.LICENSE.txt": "./static/js/2.8b396fe9.chunk.js.LICENSE.txt" }, "entrypoints": [ "static/js/runtime-main.6d19b3b8.js", "static/js/2.8b396fe9.chunk.js", - "static/js/main.8b821acd.chunk.js" + "static/js/main.2de9e919.chunk.js" ] } \ No newline at end of file diff --git a/packages/agoric-cli/agoric-wallet-build/index.html b/packages/agoric-cli/agoric-wallet-build/index.html index 403c6d94639..e2420691626 100644 --- a/packages/agoric-cli/agoric-wallet-build/index.html +++ b/packages/agoric-cli/agoric-wallet-build/index.html @@ -1 +1 @@ -Simple Wallet
\ No newline at end of file +Simple Wallet
\ No newline at end of file diff --git a/packages/agoric-cli/agoric-wallet-build/precache-manifest.dc3db1e8ecb4d6dc99cf7c3550f46d0c.js b/packages/agoric-cli/agoric-wallet-build/precache-manifest.81ac76d1232f29be088449d54b9983b8.js similarity index 75% rename from packages/agoric-cli/agoric-wallet-build/precache-manifest.dc3db1e8ecb4d6dc99cf7c3550f46d0c.js rename to packages/agoric-cli/agoric-wallet-build/precache-manifest.81ac76d1232f29be088449d54b9983b8.js index 46bd14dacec..5fd83ad4cda 100644 --- a/packages/agoric-cli/agoric-wallet-build/precache-manifest.dc3db1e8ecb4d6dc99cf7c3550f46d0c.js +++ b/packages/agoric-cli/agoric-wallet-build/precache-manifest.81ac76d1232f29be088449d54b9983b8.js @@ -1,6 +1,6 @@ self.__precacheManifest = (self.__precacheManifest || []).concat([ { - "revision": "a560f397591079a24291619556e42872", + "revision": "65d7edb98e16dd32be252e15edb2365b", "url": "./index.html" }, { @@ -12,8 +12,8 @@ self.__precacheManifest = (self.__precacheManifest || []).concat([ "url": "./static/js/2.8b396fe9.chunk.js.LICENSE.txt" }, { - "revision": "6a350d0cd7abf187436b", - "url": "./static/js/main.8b821acd.chunk.js" + "revision": "5c87fd89f127e4b73851", + "url": "./static/js/main.2de9e919.chunk.js" }, { "revision": "ce519bdb244b322bcd66", diff --git a/packages/agoric-cli/agoric-wallet-build/service-worker.js b/packages/agoric-cli/agoric-wallet-build/service-worker.js index 97494997536..6935f2ac7cf 100644 --- a/packages/agoric-cli/agoric-wallet-build/service-worker.js +++ b/packages/agoric-cli/agoric-wallet-build/service-worker.js @@ -14,7 +14,7 @@ importScripts("https://storage.googleapis.com/workbox-cdn/releases/4.3.1/workbox-sw.js"); importScripts( - "./precache-manifest.dc3db1e8ecb4d6dc99cf7c3550f46d0c.js" + "./precache-manifest.81ac76d1232f29be088449d54b9983b8.js" ); self.addEventListener('message', (event) => { diff --git a/packages/agoric-cli/agoric-wallet-build/static/js/main.8b821acd.chunk.js b/packages/agoric-cli/agoric-wallet-build/static/js/main.2de9e919.chunk.js similarity index 51% rename from packages/agoric-cli/agoric-wallet-build/static/js/main.8b821acd.chunk.js rename to packages/agoric-cli/agoric-wallet-build/static/js/main.2de9e919.chunk.js index 909c4954bc5..d829a6555b3 100644 --- a/packages/agoric-cli/agoric-wallet-build/static/js/main.8b821acd.chunk.js +++ b/packages/agoric-cli/agoric-wallet-build/static/js/main.2de9e919.chunk.js @@ -1,2 +1,2 @@ -(this["webpackJsonp@agoric/wallet-frontend"]=this["webpackJsonp@agoric/wallet-frontend"]||[]).push([[0],{53:function(e,t,a){e.exports=a(64)},64:function(e,t,a){"use strict";a.r(t);var n=a(0),r=a.n(n),c=a(12),o=a(49),l=a(95),i=a(16),u=a(32),s=a.n(u),m=a(40);function E(e){return p.apply(this,arguments)}function p(){return(p=Object(m.a)(s.a.mark((function e(t){return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",fetch("/vat",{method:"POST",body:JSON.stringify(t),headers:{"Content-Type":"application/json"}}).then((function(e){return e.json()})).then((function(e){var t=e.ok,a=e.res;return t?a:{}})).catch((function(e){console.log("Fetch Error",e)})));case 1:case"end":return e.stop()}}),e)})))).apply(this,arguments)}var d=null;function f(e){var t=e.onConnect,a=e.onDisconnect,n=e.onMessage;d=new WebSocket(function(){var e=new URL("http://127.0.0.1:8000");return e.protocol="ws",e}()),t&&d.addEventListener("open",(function(){return t()})),a&&d.addEventListener("close",(function(){return a()})),n&&d.addEventListener("message",(function(e){var t=e.data;return n(t)}))}function g(){return!!d}function b(){g()&&(d.close(),d=null)}var v=function(e){return{type:"UPDATE_PURSES",payload:e}},O=function(e){return{type:"UPDATE_INBOX",payload:e}},y=a(17);var h=function(e,t){var a=t.type,n=t.payload;switch(a){case"ACTIVATE_CONNECTION":return function(e){return Object(y.a)({},e,{active:!0})}(e);case"DEACTIVATE_CONNECTION":return function(e){return Object(y.a)({},e,{active:!1})}(e);case"SERVER_CONNECTED":return function(e){return Object(y.a)({},e,{connected:!0})}(e);case"SERVER_DISCONNECTED":return function(e){return Object(y.a)({},e,{connected:!1})}(e);case"UPDATE_PURSES":return function(e,t){return Object(y.a)({},e,{purses:t})}(e,n);case"UPDATE_INBOX":return function(e,t){return Object(y.a)({},e,{inbox:t})}(e,n);case"REJECT_OFFER":return function(e,t){return E({type:"walletDeclineOffer",data:t}),e}(e,n);case"CANCEL_OFFER":return function(e,t){return E({type:"walletCancelOffer",data:t}),e}(e,n);case"CONFIRM_OFFER":return function(e,t){return E({type:"walletAcceptOffer",data:t}),e}(e,n);default:throw new TypeError("Action not supported ".concat(a))}},C=Object(n.createContext)();function N(){return Object(n.useContext)(C)}var T=a(8),j=a(82),R=a(94),w=a(84),A=a(85),k=a(30),F=a(42),I=a.n(F),D=Object(j.a)((function(e){return{appBar:{position:"relative"},title:{flexGrow:1},icon:{marginRight:e.spacing(1)}}}));function x(e){var t=e.children,a=D();return r.a.createElement(w.a,{position:"absolute",className:a.appBar},r.a.createElement(A.a,null,r.a.createElement(I.a,{className:a.icon}),r.a.createElement(k.a,{variant:"h6",color:"inherit",noWrap:!0,className:a.title},"Simple Wallet"),t))}var S=a(97),_=a(86),P=a(43),V=a.n(P),W=Object(j.a)((function(e){return{divider:{marginRight:e.spacing(2)}}}));function L(){var e=W(),t=N(),a=t.state,c=t.dispatch,o=a.active,l=a.connected,i=a.account;return Object(n.useEffect)((function(){return c({type:"ACTIVATE_CONNECTION"})}),[c]),r.a.createElement(r.a.Fragment,null,l&&r.a.createElement(S.a,{className:e.divider,label:i||"anonymous",avatar:r.a.createElement(V.a,null)}),o?r.a.createElement(_.a,{variant:"contained",onClick:function(){c({type:"DEACTIVATE_CONNECTION"})}},"Disconnect"):r.a.createElement(_.a,{variant:"contained",onClick:function(){c({type:"ACTIVATE_CONNECTION"})}},"Connect"))}var U=a(66),B=a(92),J=a(87),z=a(98),K=a(88),M=a(89),G=a(44),X=a.n(G),q=Object(j.a)((function(e){return{icon:{minWidth:24,marginRight:e.spacing(2)}}}));function H(){var e=q(),t=N().state.purses;return r.a.createElement(r.a.Fragment,null,r.a.createElement(k.a,{variant:"h6"},"Purses"),Array.isArray(t)&&t.length>0?r.a.createElement(J.a,null,t.map((function(t){var a=t.pursePetname,n=t.brandRegKey,c=t.issuerPetname,o=t.extent;return r.a.createElement(z.a,{key:a,value:a,divider:!0},r.a.createElement(K.a,{className:e.icon},r.a.createElement(X.a,null)),r.a.createElement(M.a,{primary:a,secondary:r.a.createElement(r.a.Fragment,null,r.a.createElement("b",null,o," ",c)," ",n?r.a.createElement("i",null,"(",n,")"):"")}))}))):r.a.createElement(k.a,{color:"inherit"},"No purses."))}var Q=a(4),Y=a(28),Z=a(91),$=a(29),ee=a(90),te=a(96),ae=a(93),ne=a(45),re=a.n(ne),ce=a(47),oe=a.n(ce),le=a(46),ie=a.n(le),ue=a(48),se=a.n(ue),me=Object(j.a)((function(e){return{icon:{margin:e.spacing(1)},buttons:{"& button ~ button":{marginLeft:e.spacing(1)}}}})),Ee=Object(Q.a)((function(e){return{root:{color:e.palette.getContrastText(Y.a[500]),backgroundColor:Y.a[500],"&:hover":{backgroundColor:Y.a[700]}}}}))(ee.a),pe=Object(Q.a)((function(e){return{root:{color:e.pallete.getContrastText(Z.a[500]),backgroundColor:Z.a[500],"&:hover":{backgroundColor:Z.a[700]}}}}))(ee.a),de=Object(Q.a)((function(e){return{root:{color:e.palette.getContrastText($.a[500]),backgroundColor:$.a[500],"&:hover":{backgroundColor:$.a[700]}}}}))(ee.a),fe=Object(Q.a)((function(e){return{root:{width:e.spacing(12),color:Y.a[800],borderColor:Y.a[800]}}}))(S.a),ge=Object(Q.a)((function(e){return{root:{width:e.spacing(12),color:$.a[800],borderColor:$.a[800]}}}))(S.a),be=function(e){return e||"???"};function ve(){var e=me(),t=N(),a=t.state,n=t.dispatch,c=a.inbox;return r.a.createElement(r.a.Fragment,null,r.a.createElement(k.a,{variant:"h6"},"Transactions"),Array.isArray(c)&&c.length>0?r.a.createElement(J.a,null,c.map((function(t){var a=t.requestContext,c=(a=void 0===a?{}:a).date,o=a.origin,l=void 0===o?"unknown origin":o,u=t.id,s=t.instanceRegKey,m=t.instancePetname,E=t.offerRulesTemplate,p=E.offer,d=void 0===p?{}:p,f=E.want,g=void 0===f?{}:f,b=t.status,v=t.wait;return r.a.createElement(z.a,{key:u,value:c,divider:!0},r.a.createElement(K.a,null,r.a.createElement(re.a,{edge:"start",className:e.icon})),r.a.createElement(B.a,{container:!0,direction:"column"},r.a.createElement(B.a,{item:!0},r.a.createElement(k.a,{variant:"body2",display:"block",color:"secondary"},"At\xa0",c?function(e){var t=new Date(e),a=t.getTime()-60*t.getTimezoneOffset()*1e3,n=new Date(a).toISOString().match(/^(.*)T(.*)\..*/);return r.a.createElement(r.a.Fragment,null,n[1],"\xa0",n[2])}(c):r.a.createElement("i",null,"unknown time")," via\xa0",l)),r.a.createElement(B.a,{item:!0},r.a.createElement(k.a,{variant:"body2",display:"block",color:"secondary"},r.a.createElement(te.a,{component:"span",fontWeight:800},be(m),"\xa0"),!m&&r.a.createElement("i",null,"(",s,")\xa0"),"says:")),r.a.createElement(B.a,{item:!0},Object.entries(d).map((function(e,t){var a=Object(i.a)(e,2),n=a[0],c=a[1],o=c.issuerPetname,l=c.pursePetname,u=c.brandRegKey,s=c.extent;return r.a.createElement(k.a,{key:"offer".concat(n),variant:"body1"},0===t?"Pay":r.a.createElement(r.a.Fragment,null,"and\xa0pay"),"\xa0",r.a.createElement(te.a,{component:"span",fontWeight:800},s,"\xa0",be(o)),!o&&r.a.createElement(r.a.Fragment,null,"\xa0",r.a.createElement("i",null,"(",u,")"))," from\xa0",r.a.createElement(te.a,{component:"span",fontWeight:800},be(l)))})),Object.entries(g).map((function(e,t){var a=Object(i.a)(e,2),n=a[0],c=a[1],o=c.issuerPetname,l=c.pursePetname,u=c.brandRegKey,s=c.extent;return r.a.createElement(k.a,{key:"offer".concat(n),variant:"body1"},0===t?Object.keys(d).length>0?r.a.createElement(r.a.Fragment,null,"to\xa0receive"):"Receive":r.a.createElement(r.a.Fragment,null,"and\xa0receieve"),"\xa0",r.a.createElement(te.a,{component:"span",fontWeight:800},s,"\xa0",be(o)),!o&&r.a.createElement(r.a.Fragment,null,"\xa0",r.a.createElement("i",null,"(",u,")"))," into\xa0",r.a.createElement(te.a,{component:"span",fontWeight:800},be(l)))})))),r.a.createElement(ae.a,{className:e.buttons},"decline"===b&&r.a.createElement(fe,{variant:"outlined",label:"Declined"}),"rejected"===b&&r.a.createElement(fe,{variant:"outlined",label:"Rejected"}),"accept"===b&&(void 0===v?r.a.createElement(ge,{variant:"outlined",label:"Accepted"}):r.a.createElement(pe,{size:"small","aria-label":"Cancel",onClick:function(){return function(e){n({type:"CANCEL_OFFER",payload:e})}(u)}},r.a.createElement(ie.a,null))),!b&&r.a.createElement(r.a.Fragment,null,r.a.createElement(Ee,{size:"small","aria-label":"Decline",onClick:function(){return function(e){n({type:"REJECT_OFFER",payload:e})}(u)}},r.a.createElement(oe.a,null)),r.a.createElement(de,{size:"small","aria-label":"Accept",onClick:function(){return function(e){n({type:"CONFIRM_OFFER",payload:e})}(u)}},r.a.createElement(se.a,null)))))}))):r.a.createElement(k.a,{color:"inherit"},"No transactions."))}var Oe=Object(j.a)((function(e){return{paper:Object(T.a)({marginTop:e.spacing(3),marginBottom:e.spacing(3),padding:e.spacing(2)},e.breakpoints.up(600+2*e.spacing(3)),{marginTop:e.spacing(6),marginBottom:e.spacing(6),padding:e.spacing(3)}),title:{padding:e.spacing(0,0,4)},aside:{borderRightColor:e.palette.divider,borderRightStyle:"solid",borderRightWidth:1}}}));function ye(){var e=Oe();return r.a.createElement(U.a,{className:e.paper},r.a.createElement(k.a,{component:"h1",variant:"h4",align:"center",className:e.title},"Wallet"),r.a.createElement(B.a,{container:!0,spacing:2},r.a.createElement(B.a,{item:!0,xs:4,className:e.aside},r.a.createElement(H,null)),r.a.createElement(B.a,{item:!0,xs:8},r.a.createElement(ve,null))))}var he=Object(j.a)((function(e){return{layout:Object(T.a)({width:"auto",marginLeft:e.spacing(2),marginRight:e.spacing(2)},e.breakpoints.up(1e3+2*e.spacing(2)),{width:1e3,marginLeft:"auto",marginRight:"auto"})}}));var Ce=Object(o.a)({palette:{primary:{main:"#AB2328"},secondary:{main:"#508AA8"}},typography:{useNextVariants:!0}});Object(c.render)(r.a.createElement((function(e){var t=e.children,a=Object(n.useReducer)(h,{active:!1,connected:!1,account:null,purses:null,inbox:null}),c=Object(i.a)(a,2),o=c[0],l=c[1],u=o.active;return Object(n.useEffect)((function(){function e(e){if(e){var t=e.type,a=e.data;"walletUpdatePurses"===t&&l(v(JSON.parse(a))),"walletUpdateInbox"===t&&l(O(JSON.parse(a)))}}u?function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};g()||f(e)}({onConnect:function(){l({type:"SERVER_CONNECTED"}),E({type:"walletGetPurses"}).then(e),E({type:"walletGetInbox"}).then(e)},onDisconnect:function(){l({type:"SERVER_DISCONNECTED"}),l({type:"DEACTIVATE_CONNECTION"}),l(v(null)),l(O(null))},onMessage:function(t){e(JSON.parse(t))}}):b()}),[u]),r.a.createElement(C.Provider,{value:{state:o,dispatch:l}},t)}),null,r.a.createElement(l.a,{theme:Ce},r.a.createElement((function(){var e=he();return r.a.createElement(r.a.Fragment,null,r.a.createElement(R.a,null),r.a.createElement(x,null,r.a.createElement(L,null)),r.a.createElement("main",{className:e.layout},r.a.createElement(ye,null)))}),null))),document.getElementById("root"))}},[[53,1,2]]]); -//# sourceMappingURL=main.8b821acd.chunk.js.map \ No newline at end of file +(this["webpackJsonp@agoric/wallet-frontend"]=this["webpackJsonp@agoric/wallet-frontend"]||[]).push([[0],{53:function(e,t,a){e.exports=a(64)},64:function(e,t,a){"use strict";a.r(t);var n=a(0),r=a.n(n),c=a(12),o=a(49),l=a(95),i=a(16),u=a(32),s=a.n(u),m=a(40);function E(e){return p.apply(this,arguments)}function p(){return(p=Object(m.a)(s.a.mark((function e(t){return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",fetch("/vat",{method:"POST",body:JSON.stringify(t),headers:{"Content-Type":"application/json"}}).then((function(e){return e.json()})).then((function(e){var t=e.ok,a=e.res;return t?a:{}})).catch((function(e){console.log("Fetch Error",e)})));case 1:case"end":return e.stop()}}),e)})))).apply(this,arguments)}var d=null;function f(e){var t=e.onConnect,a=e.onDisconnect,n=e.onMessage;d=new WebSocket(function(){var e=new URL("http://127.0.0.1:8000");return e.protocol="ws",e}()),t&&d.addEventListener("open",(function(){return t()})),a&&d.addEventListener("close",(function(){return a()})),n&&d.addEventListener("message",(function(e){var t=e.data;return n(t)}))}function g(){return!!d}function b(){g()&&(d.close(),d=null)}var v=function(e){return{type:"UPDATE_PURSES",payload:e}},O=function(e){return{type:"UPDATE_INBOX",payload:e}},y=a(17);var h=function(e,t){var a=t.type,n=t.payload;switch(a){case"ACTIVATE_CONNECTION":return function(e){return Object(y.a)({},e,{active:!0})}(e);case"DEACTIVATE_CONNECTION":return function(e){return Object(y.a)({},e,{active:!1})}(e);case"SERVER_CONNECTED":return function(e){return Object(y.a)({},e,{connected:!0})}(e);case"SERVER_DISCONNECTED":return function(e){return Object(y.a)({},e,{connected:!1})}(e);case"UPDATE_PURSES":return function(e,t){return Object(y.a)({},e,{purses:t})}(e,n);case"UPDATE_INBOX":return function(e,t){return Object(y.a)({},e,{inbox:t})}(e,n);case"REJECT_OFFER":return function(e,t){return E({type:"walletDeclineOffer",data:t}),e}(e,n);case"CANCEL_OFFER":return function(e,t){return E({type:"walletCancelOffer",data:t}),e}(e,n);case"CONFIRM_OFFER":return function(e,t){return E({type:"walletAcceptOffer",data:t}),e}(e,n);default:throw new TypeError("Action not supported ".concat(a))}},C=Object(n.createContext)();function N(){return Object(n.useContext)(C)}var T=a(8),j=a(82),R=a(94),w=a(84),A=a(85),k=a(30),F=a(42),I=a.n(F),D=Object(j.a)((function(e){return{appBar:{position:"relative"},title:{flexGrow:1},icon:{marginRight:e.spacing(1)}}}));function x(e){var t=e.children,a=D();return r.a.createElement(w.a,{position:"absolute",className:a.appBar},r.a.createElement(A.a,null,r.a.createElement(I.a,{className:a.icon}),r.a.createElement(k.a,{variant:"h6",color:"inherit",noWrap:!0,className:a.title},"Simple Wallet"),t))}var S=a(97),_=a(86),P=a(43),V=a.n(P),W=Object(j.a)((function(e){return{divider:{marginRight:e.spacing(2)}}}));function L(){var e=W(),t=N(),a=t.state,c=t.dispatch,o=a.active,l=a.connected,i=a.account;return Object(n.useEffect)((function(){return c({type:"ACTIVATE_CONNECTION"})}),[c]),r.a.createElement(r.a.Fragment,null,l&&r.a.createElement(S.a,{className:e.divider,label:i||"anonymous",avatar:r.a.createElement(V.a,null)}),o?r.a.createElement(_.a,{variant:"contained",onClick:function(){c({type:"DEACTIVATE_CONNECTION"})}},"Disconnect"):r.a.createElement(_.a,{variant:"contained",onClick:function(){c({type:"ACTIVATE_CONNECTION"})}},"Connect"))}var U=a(66),B=a(92),J=a(87),z=a(98),K=a(88),M=a(89),G=a(44),X=a.n(G),q=Object(j.a)((function(e){return{icon:{minWidth:24,marginRight:e.spacing(2)}}}));function H(){var e=q(),t=N().state.purses;return r.a.createElement(r.a.Fragment,null,r.a.createElement(k.a,{variant:"h6"},"Purses"),Array.isArray(t)&&t.length>0?r.a.createElement(J.a,null,t.map((function(t){var a=t.pursePetname,n=t.brandRegKey,c=t.issuerPetname,o=t.extent;return r.a.createElement(z.a,{key:a,value:a,divider:!0},r.a.createElement(K.a,{className:e.icon},r.a.createElement(X.a,null)),r.a.createElement(M.a,{primary:a,secondary:r.a.createElement(r.a.Fragment,null,r.a.createElement("b",null,o," ",c)," ",n?r.a.createElement("i",null,"(",n,")"):"")}))}))):r.a.createElement(k.a,{color:"inherit"},"No purses."))}var Q=a(4),Y=a(28),Z=a(91),$=a(29),ee=a(90),te=a(96),ae=a(93),ne=a(45),re=a.n(ne),ce=a(47),oe=a.n(ce),le=a(46),ie=a.n(le),ue=a(48),se=a.n(ue),me=Object(j.a)((function(e){return{icon:{margin:e.spacing(1)},buttons:{"& button ~ button":{marginLeft:e.spacing(1)}}}})),Ee=Object(Q.a)((function(e){return{root:{color:e.palette.getContrastText(Y.a[500]),backgroundColor:Y.a[500],"&:hover":{backgroundColor:Y.a[700]}}}}))(ee.a),pe=Object(Q.a)((function(e){return{root:{color:e.pallete.getContrastText(Z.a[500]),backgroundColor:Z.a[500],"&:hover":{backgroundColor:Z.a[700]}}}}))(ee.a),de=Object(Q.a)((function(e){return{root:{color:e.palette.getContrastText($.a[500]),backgroundColor:$.a[500],"&:hover":{backgroundColor:$.a[700]}}}}))(ee.a),fe=Object(Q.a)((function(e){return{root:{width:e.spacing(12),color:Y.a[800],borderColor:Y.a[800]}}}))(S.a),ge=Object(Q.a)((function(e){return{root:{width:e.spacing(12),color:$.a[800],borderColor:$.a[800]}}}))(S.a),be=function(e){return e||"???"};function ve(){var e=me(),t=N(),a=t.state,n=t.dispatch,c=a.inbox;return r.a.createElement(r.a.Fragment,null,r.a.createElement(k.a,{variant:"h6"},"Transactions"),Array.isArray(c)&&c.length>0?r.a.createElement(J.a,null,c.map((function(t){var a=t.requestContext,c=(a=void 0===a?{}:a).date,o=a.origin,l=void 0===o?"unknown origin":o,u=t.id,s=t.instanceRegKey,m=t.instancePetname,E=t.offerRulesTemplate,p=(E=void 0===E?{}:E).offer,d=void 0===p?{}:p,f=E.want,g=void 0===f?{}:f,b=t.status,v=t.wait;return r.a.createElement(z.a,{key:u,value:c,divider:!0},r.a.createElement(K.a,null,r.a.createElement(re.a,{edge:"start",className:e.icon})),r.a.createElement(B.a,{container:!0,direction:"column"},r.a.createElement(B.a,{item:!0},r.a.createElement(k.a,{variant:"body2",display:"block",color:"secondary"},"At\xa0",c?function(e){var t=new Date(e),a=t.getTime()-60*t.getTimezoneOffset()*1e3,n=new Date(a).toISOString().match(/^(.*)T(.*)\..*/);return r.a.createElement(r.a.Fragment,null,n[1],"\xa0",n[2])}(c):r.a.createElement("i",null,"unknown time")," via\xa0",l)),r.a.createElement(B.a,{item:!0},r.a.createElement(k.a,{variant:"body2",display:"block",color:"secondary"},r.a.createElement(te.a,{component:"span",fontWeight:800},be(m),"\xa0"),!m&&r.a.createElement("i",null,"(",s,")\xa0"),"says:")),r.a.createElement(B.a,{item:!0},Object.entries(d).map((function(e,t){var a=Object(i.a)(e,2),n=a[0],c=a[1],o=c.issuerPetname,l=c.pursePetname,u=c.brandRegKey,s=c.extent;return r.a.createElement(k.a,{key:"offer".concat(n),variant:"body1"},0===t?"Pay":r.a.createElement(r.a.Fragment,null,"and\xa0pay"),"\xa0",r.a.createElement(te.a,{component:"span",fontWeight:800},s,"\xa0",be(o)),!o&&r.a.createElement(r.a.Fragment,null,"\xa0",r.a.createElement("i",null,"(",u,")"))," from\xa0",r.a.createElement(te.a,{component:"span",fontWeight:800},be(l)))})),Object.entries(g).map((function(e,t){var a=Object(i.a)(e,2),n=a[0],c=a[1],o=c.issuerPetname,l=c.pursePetname,u=c.brandRegKey,s=c.extent;return r.a.createElement(k.a,{key:"offer".concat(n),variant:"body1"},0===t?Object.keys(d).length>0?r.a.createElement(r.a.Fragment,null,"to\xa0receive"):"Receive":r.a.createElement(r.a.Fragment,null,"and\xa0receieve"),"\xa0",r.a.createElement(te.a,{component:"span",fontWeight:800},s,"\xa0",be(o)),!o&&r.a.createElement(r.a.Fragment,null,"\xa0",r.a.createElement("i",null,"(",u,")"))," into\xa0",r.a.createElement(te.a,{component:"span",fontWeight:800},be(l)))})))),r.a.createElement(ae.a,{className:e.buttons},"decline"===b&&r.a.createElement(fe,{variant:"outlined",label:"Declined"}),"rejected"===b&&r.a.createElement(fe,{variant:"outlined",label:"Rejected"}),"accept"===b&&(void 0===v?r.a.createElement(ge,{variant:"outlined",label:"Accepted"}):r.a.createElement(pe,{size:"small","aria-label":"Cancel",onClick:function(){return function(e){n({type:"CANCEL_OFFER",payload:e})}(u)}},r.a.createElement(ie.a,null))),!b&&r.a.createElement(r.a.Fragment,null,r.a.createElement(Ee,{size:"small","aria-label":"Decline",onClick:function(){return function(e){n({type:"REJECT_OFFER",payload:e})}(u)}},r.a.createElement(oe.a,null)),r.a.createElement(de,{size:"small","aria-label":"Accept",onClick:function(){return function(e){n({type:"CONFIRM_OFFER",payload:e})}(u)}},r.a.createElement(se.a,null)))))}))):r.a.createElement(k.a,{color:"inherit"},"No transactions."))}var Oe=Object(j.a)((function(e){return{paper:Object(T.a)({marginTop:e.spacing(3),marginBottom:e.spacing(3),padding:e.spacing(2)},e.breakpoints.up(600+2*e.spacing(3)),{marginTop:e.spacing(6),marginBottom:e.spacing(6),padding:e.spacing(3)}),title:{padding:e.spacing(0,0,4)},aside:{borderRightColor:e.palette.divider,borderRightStyle:"solid",borderRightWidth:1}}}));function ye(){var e=Oe();return r.a.createElement(U.a,{className:e.paper},r.a.createElement(k.a,{component:"h1",variant:"h4",align:"center",className:e.title},"Wallet"),r.a.createElement(B.a,{container:!0,spacing:2},r.a.createElement(B.a,{item:!0,xs:4,className:e.aside},r.a.createElement(H,null)),r.a.createElement(B.a,{item:!0,xs:8},r.a.createElement(ve,null))))}var he=Object(j.a)((function(e){return{layout:Object(T.a)({width:"auto",marginLeft:e.spacing(2),marginRight:e.spacing(2)},e.breakpoints.up(1e3+2*e.spacing(2)),{width:1e3,marginLeft:"auto",marginRight:"auto"})}}));var Ce=Object(o.a)({palette:{primary:{main:"#AB2328"},secondary:{main:"#508AA8"}},typography:{useNextVariants:!0}});Object(c.render)(r.a.createElement((function(e){var t=e.children,a=Object(n.useReducer)(h,{active:!1,connected:!1,account:null,purses:null,inbox:null}),c=Object(i.a)(a,2),o=c[0],l=c[1],u=o.active;return Object(n.useEffect)((function(){function e(e){if(e){var t=e.type,a=e.data;"walletUpdatePurses"===t&&l(v(JSON.parse(a))),"walletUpdateInbox"===t&&l(O(JSON.parse(a)))}}u?function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};g()||f(e)}({onConnect:function(){l({type:"SERVER_CONNECTED"}),E({type:"walletGetPurses"}).then(e),E({type:"walletGetInbox"}).then(e)},onDisconnect:function(){l({type:"SERVER_DISCONNECTED"}),l({type:"DEACTIVATE_CONNECTION"}),l(v(null)),l(O(null))},onMessage:function(t){e(JSON.parse(t))}}):b()}),[u]),r.a.createElement(C.Provider,{value:{state:o,dispatch:l}},t)}),null,r.a.createElement(l.a,{theme:Ce},r.a.createElement((function(){var e=he();return r.a.createElement(r.a.Fragment,null,r.a.createElement(R.a,null),r.a.createElement(x,null,r.a.createElement(L,null)),r.a.createElement("main",{className:e.layout},r.a.createElement(ye,null)))}),null))),document.getElementById("root"))}},[[53,1,2]]]); +//# sourceMappingURL=main.2de9e919.chunk.js.map \ No newline at end of file diff --git a/packages/agoric-cli/agoric-wallet-build/static/js/main.2de9e919.chunk.js.map b/packages/agoric-cli/agoric-wallet-build/static/js/main.2de9e919.chunk.js.map new file mode 100644 index 00000000000..02f7f92608b --- /dev/null +++ b/packages/agoric-cli/agoric-wallet-build/static/js/main.2de9e919.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["utils/fetch-websocket.js","utils/constants.js","store/types.js","store/actions.js","store/reducer.js","store/operations.js","contexts/Application.jsx","components/Header.jsx","components/Web3Status.jsx","components/Purses.jsx","components/Inbox.jsx","components/Wallet.jsx","pages/App.jsx","index.jsx"],"names":["doFetch","req","a","fetch","method","body","JSON","stringify","headers","then","response","json","ok","res","catch","err","console","log","websocket","createWebSocket","onConnect","onDisconnect","onMessage","WebSocket","url","URL","process","protocol","getWebsocketEndpoint","addEventListener","data","isWebSocketActive","deactivateWebSocket","close","updatePurses","payload","type","updateInbox","reducer","state","active","activateConnection","deactivateConnection","connected","serverConnected","serverDisconnected","purses","inbox","id","declineOffer","cancelOffer","acceptOffer","TypeError","ApplicationContext","createContext","useApplicationContext","useContext","useStyles","makeStyles","theme","appBar","position","title","flexGrow","icon","marginRight","spacing","Header","children","classes","AppBar","className","Toolbar","Typography","variant","color","noWrap","divider","Web3Status","dispatch","account","useEffect","Chip","label","avatar","Button","onClick","minWidth","Purses","Array","isArray","length","List","map","pursePetname","brandRegKey","issuerPetname","extent","ListItem","key","value","ListItemIcon","ListItemText","primary","secondary","margin","buttons","marginLeft","RedIconButton","withStyles","root","palette","getContrastText","red","backgroundColor","IconButton","YellowIconButton","pallete","yellow","GreenIconButton","green","RedChip","width","borderColor","GreenChip","pet","petname","Inbox","requestContext","date","origin","instanceRegKey","instancePetname","offerRulesTemplate","offer","want","status","wait","edge","Grid","container","direction","item","display","stamp","Date","isoStamp","getTime","getTimezoneOffset","match","toISOString","formatDateNow","Box","component","fontWeight","Object","entries","i","role","keys","ListItemSecondaryAction","undefined","size","aria-label","handleCancel","handleDecline","handleAccept","paper","marginTop","marginBottom","padding","breakpoints","up","aside","borderRightColor","borderRightStyle","borderRightWidth","Wallet","Paper","align","xs","layout","createMuiTheme","main","typography","useNextVariants","render","useReducer","messageHandler","message","parse","websocketListeners","activateWebSocket","Provider","CssBaseline","document","getElementById"],"mappings":"iQAQO,SAAeA,EAAtB,kC,4CAAO,WAAuBC,GAAvB,SAAAC,EAAA,+EACEC,MAAM,OAAQ,CACnBC,OAAQ,OACRC,KAAMC,KAAKC,UAAUN,GACrBO,QAAS,CAAE,eAAgB,sBAE1BC,MAAK,SAAAC,GAAQ,OAAIA,EAASC,UAC1BF,MAAK,gBAAGG,EAAH,EAAGA,GAAIC,EAAP,EAAOA,IAAP,OAAkBD,EAAKC,EAAM,MAClCC,OAAM,SAAAC,GACLC,QAAQC,IAAI,cAAeF,OAT1B,4C,sBAeP,IAAIG,EAAY,KAShB,SAASC,EAAT,GAAkE,IAAvCC,EAAsC,EAAtCA,UAAWC,EAA2B,EAA3BA,aAAcC,EAAa,EAAbA,UAClDJ,EAAY,IAAIK,UARlB,WAEE,IAAMC,EAAM,IAAIC,IC3BKC,yBD6BrB,OADAF,EAAIG,SAAW,KACRH,EAImBI,IACtBR,GACFF,EAAUW,iBAAiB,QAAQ,kBAAMT,OAEvCC,GACFH,EAAUW,iBAAiB,SAAS,kBAAMR,OAExCC,GACFJ,EAAUW,iBAAiB,WAAW,gBAAGC,EAAH,EAAGA,KAAH,OAAcR,EAAUQ,MASlE,SAASC,IACP,QAASb,EAQJ,SAASc,IACTD,MAdLb,EAAUe,QACVf,EAAY,ME/CP,IC4BMgB,EAAe,SAAAC,GAAO,MAAK,CACtCC,KDvB2B,gBCwB3BD,YAEWE,EAAc,SAAAF,GAAO,MAAK,CACrCC,KD1B0B,eC2B1BD,Y,QCAK,IAAMG,EAAU,SAACC,EAAD,GAA+B,IAArBH,EAAoB,EAApBA,KAAMD,EAAc,EAAdA,QACrC,OAAQC,GACN,IFpC+B,sBEqC7B,OCnCC,SAA4BG,GACjC,OAAO,eAAKA,EAAZ,CAAmBC,QAAQ,IDkChBC,CAAmBF,GAC5B,IFrCiC,wBEsC/B,OClCC,SAA8BA,GACnC,OAAO,eAAKA,EAAZ,CAAmBC,QAAQ,IDiChBE,CAAqBH,GAE9B,IFtC4B,mBEuC1B,OCjCC,SAAyBA,GAC9B,OAAO,eAAKA,EAAZ,CAAmBI,WAAW,IDgCnBC,CAAgBL,GACzB,IFvC+B,sBEwC7B,OChCC,SAA4BA,GACjC,OAAO,eAAKA,EAAZ,CAAmBI,WAAW,ID+BnBE,CAAmBN,GAE5B,IFxCyB,gBEyCvB,OC/BC,SAAsBA,EAAOO,GAClC,OAAO,eAAKP,EAAZ,CAAmBO,WD8BRZ,CAAaK,EAAOJ,GAC7B,IFzCwB,eE0CtB,OC9BC,SAAqBI,EAAOQ,GACjC,OAAO,eAAKR,EAAZ,CAAmBQ,UD6BRV,CAAYE,EAAOJ,GAE5B,IF1CwB,eE2CtB,OC7BC,SAAsBI,EAAOS,GAMlC,OALAhD,EAAQ,CACNoC,KAAM,qBACNN,KAAMkB,IAGDT,EDuBIU,CAAaV,EAAOJ,GAC7B,IF1CwB,eE2CtB,OCfC,SAAqBI,EAAOS,GAKjC,OAJAhD,EAAQ,CACNoC,KAAM,oBACNN,KAAMkB,IAEDT,EDUIW,CAAYX,EAAOJ,GAC5B,IF7CyB,gBE8CvB,OCzBC,SAAqBI,EAAOS,GAMjC,OALAhD,EAAQ,CACNoC,KAAM,oBACNN,KAAMkB,IAGDT,EDmBIY,CAAYZ,EAAOJ,GAE5B,QACE,MAAM,IAAIiB,UAAJ,+BAAsChB,ME3CrCiB,EAAqBC,0BAE3B,SAASC,IACd,OAAOC,qBAAWH,G,oECbdI,EAAYC,aAAW,SAAAC,GAAK,MAAK,CACrCC,OAAQ,CACNC,SAAU,YAEZC,MAAO,CACLC,SAAU,GAEZC,KAAM,CACJC,YAAaN,EAAMO,QAAQ,QAKhB,SAASC,EAAT,GAA+B,IAAbC,EAAY,EAAZA,SACzBC,EAAUZ,IAEhB,OACE,kBAACa,EAAA,EAAD,CAAQT,SAAS,WAAWU,UAAWF,EAAQT,QAC7C,kBAACY,EAAA,EAAD,KACE,kBAAC,IAAD,CAAYD,UAAWF,EAAQL,OAC/B,kBAACS,EAAA,EAAD,CACEC,QAAQ,KACRC,MAAM,UACNC,QAAM,EACNL,UAAWF,EAAQP,OAJrB,iBAQCM,I,qCCzBHX,EAAYC,aAAW,SAAAC,GAAK,MAAK,CACrCkB,QAAS,CACPZ,YAAaN,EAAMO,QAAQ,QAIhB,SAASY,IACtB,IAAMT,EAAUZ,IADmB,EAEPF,IAApBhB,EAF2B,EAE3BA,MAAOwC,EAFoB,EAEpBA,SACPvC,EAA+BD,EAA/BC,OAAQG,EAAuBJ,EAAvBI,UAAWqC,EAAYzC,EAAZyC,QAa3B,OAVAC,qBAAU,kBAAMF,ELTuB,CACvC3C,KDbiC,0BMqBe,CAAC2C,IAW/C,oCACGpC,GACC,kBAACuC,EAAA,EAAD,CACEX,UAAWF,EAAQQ,QACnBM,MAAOH,GAAW,YAClBI,OAAQ,kBAAC,IAAD,QAGX5C,EACC,kBAAC6C,EAAA,EAAD,CAAQX,QAAQ,YAAYY,QAdlC,WACEP,ELZuC,CACzC3C,KDhBmC,4BMwC7B,cAIA,kBAACiD,EAAA,EAAD,CAAQX,QAAQ,YAAYY,QAtBlC,WACEP,ELZqC,CACvC3C,KDbiC,0BM6C3B,Y,qEC/BFqB,EAAYC,aAAW,SAAAC,GAAK,MAAK,CACrCK,KAAM,CACJuB,SAAU,GACVtB,YAAaN,EAAMO,QAAQ,QAIhB,SAASsB,IACtB,IAAMnB,EAAUZ,IAERX,EADUS,IAAVhB,MACAO,OAER,OACE,oCACE,kBAAC2B,EAAA,EAAD,CAAYC,QAAQ,MAApB,UACCe,MAAMC,QAAQ5C,IAAWA,EAAO6C,OAAS,EACxC,kBAACC,EAAA,EAAD,KACG9C,EAAO+C,KAAI,gBAAGC,EAAH,EAAGA,aAAcC,EAAjB,EAAiBA,YAAaC,EAA9B,EAA8BA,cAAeC,EAA7C,EAA6CA,OAA7C,OACV,kBAACC,EAAA,EAAD,CAAUC,IAAKL,EAAcM,MAAON,EAAcjB,SAAO,GACvD,kBAACwB,EAAA,EAAD,CAAc9B,UAAWF,EAAQL,MAC/B,kBAAC,IAAD,OAEF,kBAACsC,EAAA,EAAD,CACEC,QAAST,EACTU,UAAW,oCAAE,2BAAIP,EAAJ,IAAaD,GAAf,IAAmCD,EAAc,+BAAKA,EAAL,KAAyB,WAM7F,kBAACtB,EAAA,EAAD,CAAYE,MAAM,WAAlB,e,8ICpBFlB,GAAYC,aAAW,SAAAC,GAAK,MAAK,CACrCK,KAAM,CACJyC,OAAQ9C,EAAMO,QAAQ,IAExBwC,QAAS,CACP,oBAAqB,CACnBC,WAAYhD,EAAMO,QAAQ,SAK1B0C,GAAgBC,aAAW,SAAAlD,GAAK,MAAK,CACzCmD,KAAM,CACJnC,MAAOhB,EAAMoD,QAAQC,gBAAgBC,IAAI,MACzCC,gBAAiBD,IAAI,KACrB,UAAW,CACTC,gBAAiBD,IAAI,UALLJ,CAQlBM,MAEEC,GAAmBP,aAAW,SAAAlD,GAAK,MAAK,CAC5CmD,KAAM,CACJnC,MAAOhB,EAAM0D,QAAQL,gBAAgBM,IAAO,MAC5CJ,gBAAiBI,IAAO,KACxB,UAAW,CACTJ,gBAAiBI,IAAO,UALLT,CAQrBM,MAEEI,GAAkBV,aAAW,SAAAlD,GAAK,MAAK,CAC3CmD,KAAM,CACJnC,MAAOhB,EAAMoD,QAAQC,gBAAgBQ,IAAM,MAC3CN,gBAAiBM,IAAM,KACvB,UAAW,CACTN,gBAAiBM,IAAM,UALLX,CAQpBM,MAEEM,GAAUZ,aAAW,SAAAlD,GAAK,MAAK,CACnCmD,KAAM,CACJY,MAAO/D,EAAMO,QAAQ,IACrBS,MAAOsC,IAAI,KACXU,YAAaV,IAAI,SAJLJ,CAMZ3B,KAEE0C,GAAYf,aAAW,SAAAlD,GAAK,MAAK,CACrCmD,KAAM,CACJY,MAAO/D,EAAMO,QAAQ,IACrBS,MAAO6C,IAAM,KACbG,YAAaH,IAAM,SAJLX,CAMd3B,KAEE2C,GAAM,SAAAC,GAAO,OAAIA,GAAW,OAEnB,SAASC,KACtB,IAAM1D,EAAUZ,KADc,EAEFF,IAApBhB,EAFsB,EAEtBA,MAAOwC,EAFe,EAEfA,SACPhC,EAAUR,EAAVQ,MAgDR,OACE,oCAEE,kBAAC0B,EAAA,EAAD,CAAYC,QAAQ,MAApB,gBACCe,MAAMC,QAAQ3C,IAAUA,EAAM4C,OAAS,EACtC,kBAACC,EAAA,EAAD,KACG7C,EAAM8C,KACL,oBACEmC,eAAkBC,GADpB,aACuD,GADvD,GACoBA,KADpB,IAC0BC,cAD1B,MACmC,iBADnC,EAEElF,EAFF,EAEEA,GACAmF,EAHF,EAGEA,eACAC,EAJF,EAIEA,gBAJF,IAKEC,mBALF,gBAKkD,GALlD,GAKwBC,aALxB,MAKgC,GALhC,MAKoCC,YALpC,MAK2C,GAL3C,EAMEC,EANF,EAMEA,OACAC,EAPF,EAOEA,KAPF,OASE,kBAACvC,EAAA,EAAD,CAAUC,IAAKnD,EAAIoD,MAAO6B,EAAMpD,SAAO,GACrC,kBAACwB,EAAA,EAAD,KACE,kBAAC,KAAD,CAAcqC,KAAK,QAAQnE,UAAWF,EAAQL,QAEhD,kBAAC2E,EAAA,EAAD,CAAMC,WAAS,EAACC,UAAU,UACxB,kBAACF,EAAA,EAAD,CAAMG,MAAI,GACR,kBAACrE,EAAA,EAAD,CAAYC,QAAQ,QAAQqE,QAAQ,QAAQpE,MAAM,aAAlD,SAECsD,EAtEnB,SAAuBe,GACrB,IAAMf,EAAO,IAAIgB,KAAKD,GAChBE,EAAWjB,EAAKkB,UAAuC,GAA3BlB,EAAKmB,oBAA2B,IAG5DC,EAFU,IAAIJ,KAAKC,GACFI,cACFD,MAAM,kBAC3B,OAAO,oCAAGA,EAAM,GAAT,OAAmBA,EAAM,IAgERE,CAActB,GAAQ,2CAF9B,WAGCC,IAGH,kBAACS,EAAA,EAAD,CAAMG,MAAI,GACR,kBAACrE,EAAA,EAAD,CAAYC,QAAQ,QAAQqE,QAAQ,QAAQpE,MAAM,aAChD,kBAAC6E,GAAA,EAAD,CAAKC,UAAU,OAAOC,WAAY,KAC/B7B,GAAIO,GADP,SAIEA,GAAmB,+BAAKD,EAAL,SALvB,UASF,kBAACQ,EAAA,EAAD,CAAMG,MAAI,GACPa,OAAOC,QAAQtB,GAAOzC,KACrB,WAA+DgE,GAA/D,uBAAEC,EAAF,YAAU9D,EAAV,EAAUA,cAAeF,EAAzB,EAAyBA,aAAcC,EAAvC,EAAuCA,YAAaE,EAApD,EAAoDA,OAApD,OACE,kBAACxB,EAAA,EAAD,CAAY0B,IAAG,eAAU2D,GAAQpF,QAAQ,SAChC,IAANmF,EAAU,MAAQ,kDADrB,OAEE,kBAACL,GAAA,EAAD,CAAKC,UAAU,OAAOC,WAAY,KAC/BzD,EADH,OAGG4B,GAAI7B,KAELA,GAAiB,2CAAQ,+BAAKD,EAAL,MAP7B,YAQE,kBAACyD,GAAA,EAAD,CAAKC,UAAU,OAAOC,WAAY,KAC/B7B,GAAI/B,QAIZ6D,OAAOC,QAAQrB,GAAM1C,KACpB,WAA+DgE,GAA/D,uBAAEC,EAAF,YAAU9D,EAAV,EAAUA,cAAeF,EAAzB,EAAyBA,aAAcC,EAAvC,EAAuCA,YAAaE,EAApD,EAAoDA,OAApD,OACE,kBAACxB,EAAA,EAAD,CAAY0B,IAAG,eAAU2D,GAAQpF,QAAQ,SAChC,IAANmF,EACEF,OAAOI,KAAKzB,GAAO3C,OAAS,EAAI,qDAAuB,UACxD,uDAHJ,OAKE,kBAAC6D,GAAA,EAAD,CAAKC,UAAU,OAAOC,WAAY,KAC/BzD,EADH,OAGG4B,GAAI7B,KAELA,GAAiB,2CAAQ,+BAAKD,EAAL,MAV7B,YAWE,kBAACyD,GAAA,EAAD,CAAKC,UAAU,OAAOC,WAAY,KAC/B7B,GAAI/B,UAMjB,kBAACkE,GAAA,EAAD,CAAyBzF,UAAWF,EAAQqC,SAC9B,YAAX8B,GACC,kBAACf,GAAD,CAAS/C,QAAQ,WAAWS,MAAM,aAExB,aAAXqD,GACC,kBAACf,GAAD,CAAS/C,QAAQ,WAAWS,MAAM,aAExB,WAAXqD,SACUyB,IAATxB,EACE,kBAACb,GAAD,CAAWlD,QAAQ,WAAWS,MAAM,aAEpC,kBAACiC,GAAD,CACE8C,KAAK,QACLC,aAAW,SACX7E,QAAS,kBA7H/B,SAAsBtC,GACpB+B,EP7DmC,CACrC3C,KD3B0B,eC4B1BD,QO2DuBa,IA4HcoH,CAAapH,KAE5B,kBAAC,KAAD,SAIJwF,GACA,oCACE,kBAAC5B,GAAD,CACEsD,KAAK,QACLC,aAAW,UACX7E,QAAS,kBApI/B,SAAuBtC,GACrB+B,EP5DoC,CACtC3C,KDlC0B,eCmC1BD,QO0DwBa,IAmIaqH,CAAcrH,KAE7B,kBAAC,KAAD,OAEF,kBAACuE,GAAD,CACE2C,KAAK,QACLC,aAAW,SACX7E,QAAS,kBAvI/B,SAAsBtC,GACpB+B,EP3DmC,CACrC3C,KDtC2B,gBCuC3BD,QOyDuBa,IAsIcsH,CAAatH,KAE5B,kBAAC,KAAD,cAUhB,kBAACyB,EAAA,EAAD,CAAYE,MAAM,WAAlB,qBCpPR,IAAMlB,GAAYC,aAAW,SAAAC,GAAK,MAAK,CACrC4G,MAAM,aACJC,UAAW7G,EAAMO,QAAQ,GACzBuG,aAAc9G,EAAMO,QAAQ,GAC5BwG,QAAS/G,EAAMO,QAAQ,IACtBP,EAAMgH,YAAYC,GAAG,IAAyB,EAAnBjH,EAAMO,QAAQ,IAAU,CAClDsG,UAAW7G,EAAMO,QAAQ,GACzBuG,aAAc9G,EAAMO,QAAQ,GAC5BwG,QAAS/G,EAAMO,QAAQ,KAG3BJ,MAAO,CACL4G,QAAS/G,EAAMO,QAAQ,EAAG,EAAG,IAE/B2G,MAAO,CACLC,iBAAkBnH,EAAMoD,QAAQlC,QAChCkG,iBAAkB,QAClBC,iBAAkB,OAIP,SAASC,KACtB,IAAM5G,EAAUZ,KAEhB,OACE,kBAACyH,EAAA,EAAD,CAAO3G,UAAWF,EAAQkG,OACxB,kBAAC9F,EAAA,EAAD,CACEgF,UAAU,KACV/E,QAAQ,KACRyG,MAAM,SACN5G,UAAWF,EAAQP,OAJrB,UASA,kBAAC6E,EAAA,EAAD,CAAMC,WAAS,EAAC1E,QAAS,GACvB,kBAACyE,EAAA,EAAD,CAAMG,MAAI,EAACsC,GAAI,EAAG7G,UAAWF,EAAQwG,OACnC,kBAACrF,EAAD,OAEF,kBAACmD,EAAA,EAAD,CAAMG,MAAI,EAACsC,GAAI,GACb,kBAACrD,GAAD,SCvCV,IAAMtE,GAAYC,aAAW,SAAAC,GAAK,MAAK,CACrC0H,OAAO,aACL3D,MAAO,OACPf,WAAYhD,EAAMO,QAAQ,GAC1BD,YAAaN,EAAMO,QAAQ,IAC1BP,EAAMgH,YAAYC,GAAG,IAA0B,EAAnBjH,EAAMO,QAAQ,IAAU,CACnDwD,MAAO,IACPf,WAAY,OACZ1C,YAAa,aCRnB,IAAMN,GAAQ2H,YAAe,CAC3BvE,QAAS,CACPR,QAAS,CACPgF,KAAM,WAER/E,UAAW,CACT+E,KAAM,YAGVC,WAAY,CACVC,iBAAiB,KAIrBC,iBACE,mBPDa,YAAiC,IAAbtH,EAAY,EAAZA,SAAY,EACnBuH,qBAAWrJ,EFA9B,CACLE,QAAQ,EACRG,WAAW,EACXqC,QAAS,KACTlC,OAAQ,KACRC,MAAO,OENoC,mBACtCR,EADsC,KAC/BwC,EAD+B,KAErCvC,EAAWD,EAAXC,OA2CR,OAzCAyC,qBAAU,WACR,SAAS2G,EAAeC,GACtB,GAAKA,EAAL,CAD+B,IAEvBzJ,EAAeyJ,EAAfzJ,KAAMN,EAAS+J,EAAT/J,KACD,uBAATM,GACF2C,EAAS7C,EAAa5B,KAAKwL,MAAMhK,KAEtB,sBAATM,GACF2C,EAAS1C,EAAY/B,KAAKwL,MAAMhK,MAWhCU,ENQD,WAAqD,IAA1BuJ,EAAyB,uDAAJ,GACjDhK,KACJZ,EAAgB4K,GMTZC,CAAkB,CAChB5K,UADgB,WAEd2D,EH7B4B,CACpC3C,KDlB8B,qBIqCnBpC,EAAQ,CAAEoC,KAAM,oBAAqB3B,KAAKmL,GAG1C5L,EAAQ,CAAEoC,KAAM,mBAAoB3B,KAAKmL,IAU9CvK,aANgB,WAOd0D,EH9B+B,CACvC3C,KDrBiC,wBImDzB2C,EHvCiC,CACzC3C,KDhBmC,0BIuD3B2C,EAAS7C,EAAa,OACtB6C,EAAS1C,EAAY,QAEvBf,UAZgB,SAYNuK,GACRD,EAAetL,KAAKwL,MAAMD,OAI9B7J,MAED,CAACQ,IAGF,kBAACa,EAAmB4I,SAApB,CAA6B7F,MAAO,CAAE7D,QAAOwC,aAC1CX,KO9CL,KACE,kBAAC,IAAD,CAAkBT,MAAOA,IACvB,mBDJS,WACb,IAAMU,EAAUZ,KAEhB,OACE,oCACE,kBAACyI,EAAA,EAAD,MACA,kBAAC/H,EAAD,KACE,kBAACW,EAAD,OAEF,0BAAMP,UAAWF,EAAQgH,QACvB,kBAACJ,GAAD,UCNF,QAGJkB,SAASC,eAAe,W","file":"static/js/main.2de9e919.chunk.js","sourcesContent":["/* globals window, WebSocket, fetch */\n\n// todo: refactor this to a class\n\nimport { API_URL } from './constants';\n\n// === FETCH\n\nexport async function doFetch(req) {\n return fetch('/vat', {\n method: 'POST',\n body: JSON.stringify(req),\n headers: { 'Content-Type': 'application/json' },\n })\n .then(response => response.json())\n .then(({ ok, res }) => (ok ? res : {}))\n .catch(err => {\n console.log('Fetch Error', err);\n });\n}\n\n// === WEB SOCKET\n\nlet websocket = null;\n\nfunction getWebsocketEndpoint() {\n // TODO proxy websocket.\n const url = new URL(API_URL || window.origin);\n url.protocol = 'ws';\n return url;\n}\n\nfunction createWebSocket({ onConnect, onDisconnect, onMessage }) {\n websocket = new WebSocket(getWebsocketEndpoint());\n if (onConnect) {\n websocket.addEventListener('open', () => onConnect());\n }\n if (onDisconnect) {\n websocket.addEventListener('close', () => onDisconnect());\n }\n if (onMessage) {\n websocket.addEventListener('message', ({ data }) => onMessage(data));\n }\n}\n\nfunction closeWebSocket() {\n websocket.close();\n websocket = null;\n}\n\nfunction isWebSocketActive() {\n return !!websocket;\n}\n\nexport function activateWebSocket(websocketListeners = {}) {\n if (isWebSocketActive()) return;\n createWebSocket(websocketListeners);\n}\n\nexport function deactivateWebSocket() {\n if (!isWebSocketActive()) return;\n closeWebSocket();\n}\n","export const API_URL = process.env.REACT_APP_API_URL;\n","export const ACTIVATE_CONNECTION = 'ACTIVATE_CONNECTION';\nexport const DEACTIVATE_CONNECTION = 'DEACTIVATE_CONNECTION';\n\nexport const SERVER_CONNECTED = 'SERVER_CONNECTED';\nexport const SERVER_DISCONNECTED = 'SERVER_DISCONNECTED';\n\nexport const UPDATE_PURSES = 'UPDATE_PURSES';\nexport const UPDATE_INBOX = 'UPDATE_INBOX';\n\nexport const REJECT_OFFER = 'REJECT_OFFER';\nexport const CONFIRM_OFFER = 'CONFIRM_OFFER';\nexport const CANCEL_OFFER = 'CANCEL_OFFER';\n","import {\n ACTIVATE_CONNECTION,\n DEACTIVATE_CONNECTION,\n SERVER_CONNECTED,\n SERVER_DISCONNECTED,\n UPDATE_PURSES,\n UPDATE_INBOX,\n CANCEL_OFFER,\n REJECT_OFFER,\n CONFIRM_OFFER,\n} from './types';\n\nexport const activateConnection = () => ({\n type: ACTIVATE_CONNECTION,\n});\n\nexport const deactivateConnection = () => ({\n type: DEACTIVATE_CONNECTION,\n});\n\nexport const serverConnected = () => ({\n type: SERVER_CONNECTED,\n});\n\nexport const serverDisconnected = () => ({\n type: SERVER_DISCONNECTED,\n});\n\nexport const updatePurses = payload => ({\n type: UPDATE_PURSES,\n payload,\n});\nexport const updateInbox = payload => ({\n type: UPDATE_INBOX,\n payload,\n});\n\nexport const cancelOffer = payload => ({\n type: CANCEL_OFFER,\n payload,\n});\n\nexport const declineOffer = payload => ({\n type: REJECT_OFFER,\n payload,\n});\n\nexport const acceptOffer = payload => ({\n type: CONFIRM_OFFER,\n payload,\n});\n","import {\n ACTIVATE_CONNECTION,\n DEACTIVATE_CONNECTION,\n SERVER_CONNECTED,\n SERVER_DISCONNECTED,\n UPDATE_PURSES,\n UPDATE_INBOX,\n REJECT_OFFER,\n CANCEL_OFFER,\n CONFIRM_OFFER,\n} from './types';\nimport {\n activateConnection,\n deactivateConnection,\n serverConnected,\n serverDisconnected,\n updatePurses,\n updateInbox,\n declineOffer,\n cancelOffer,\n acceptOffer,\n} from './operations';\n\nexport function createDefaultState() {\n return {\n active: false,\n connected: false,\n account: null,\n purses: null,\n inbox: null,\n };\n}\n\n/* eslint-disable complexity */\nexport const reducer = (state, { type, payload }) => {\n switch (type) {\n case ACTIVATE_CONNECTION:\n return activateConnection(state);\n case DEACTIVATE_CONNECTION:\n return deactivateConnection(state);\n\n case SERVER_CONNECTED:\n return serverConnected(state);\n case SERVER_DISCONNECTED:\n return serverDisconnected(state);\n\n case UPDATE_PURSES:\n return updatePurses(state, payload);\n case UPDATE_INBOX:\n return updateInbox(state, payload);\n\n case REJECT_OFFER:\n return declineOffer(state, payload);\n case CANCEL_OFFER:\n return cancelOffer(state, payload);\n case CONFIRM_OFFER:\n return acceptOffer(state, payload);\n\n default:\n throw new TypeError(`Action not supported ${type}`);\n }\n};\n/* eslint-enable complexity */\n","import { doFetch } from '../utils/fetch-websocket';\n\nexport function activateConnection(state) {\n return { ...state, active: true };\n}\nexport function deactivateConnection(state) {\n return { ...state, active: false };\n}\n\nexport function serverConnected(state) {\n return { ...state, connected: true };\n}\nexport function serverDisconnected(state) {\n return { ...state, connected: false };\n}\n\nexport function updatePurses(state, purses) {\n return { ...state, purses };\n}\nexport function updateInbox(state, inbox) {\n return { ...state, inbox };\n}\n\nexport function declineOffer(state, id) {\n doFetch({\n type: 'walletDeclineOffer',\n data: id,\n }); // todo toast\n\n return state;\n}\nexport function acceptOffer(state, id) {\n doFetch({\n type: 'walletAcceptOffer',\n data: id,\n }); // todo toast\n\n return state;\n}\nexport function cancelOffer(state, id) {\n doFetch({\n type: 'walletCancelOffer',\n data: id,\n });\n return state;\n}\n","import React, { createContext, useContext, useReducer, useEffect } from 'react';\n\nimport {\n activateWebSocket,\n deactivateWebSocket,\n doFetch,\n} from '../utils/fetch-websocket';\nimport {\n updatePurses,\n updateInbox,\n serverConnected,\n serverDisconnected,\n deactivateConnection,\n} from '../store/actions';\nimport { reducer, createDefaultState } from '../store/reducer';\n\nexport const ApplicationContext = createContext();\n\nexport function useApplicationContext() {\n return useContext(ApplicationContext);\n}\n\n// eslint-disable-next-line react/prop-types\nexport default function Provider({ children }) {\n const [state, dispatch] = useReducer(reducer, createDefaultState());\n const { active } = state;\n\n useEffect(() => {\n function messageHandler(message) {\n if (!message) return;\n const { type, data } = message;\n if (type === 'walletUpdatePurses') {\n dispatch(updatePurses(JSON.parse(data)));\n }\n if (type === 'walletUpdateInbox') {\n dispatch(updateInbox(JSON.parse(data)));\n }\n }\n\n function walletGetPurses() {\n return doFetch({ type: 'walletGetPurses' }).then(messageHandler);\n }\n function walletGetInbox() {\n return doFetch({ type: 'walletGetInbox' }).then(messageHandler);\n }\n\n if (active) {\n activateWebSocket({\n onConnect() {\n dispatch(serverConnected());\n walletGetPurses();\n walletGetInbox();\n },\n onDisconnect() {\n dispatch(serverDisconnected());\n dispatch(deactivateConnection());\n dispatch(updatePurses(null));\n dispatch(updateInbox(null));\n },\n onMessage(message) {\n messageHandler(JSON.parse(message));\n },\n });\n } else {\n deactivateWebSocket();\n }\n }, [active]);\n\n return (\n \n {children}\n \n );\n}\n","import React from 'react';\n\nimport { makeStyles } from '@material-ui/core/styles';\nimport { AppBar, Toolbar, Typography } from '@material-ui/core';\nimport WalletIcon from '@material-ui/icons/AccountBalanceWallet';\n\nconst useStyles = makeStyles(theme => ({\n appBar: {\n position: 'relative',\n },\n title: {\n flexGrow: 1,\n },\n icon: {\n marginRight: theme.spacing(1),\n },\n}));\n\n// eslint-disable-next-line react/prop-types\nexport default function Header({ children }) {\n const classes = useStyles();\n\n return (\n \n \n \n \n Simple Wallet\n \n {children}\n \n \n );\n}\n","import React, { useEffect } from 'react';\n\nimport { makeStyles } from '@material-ui/core/styles';\nimport { Button, Chip } from '@material-ui/core';\nimport PersonIcon from '@material-ui/icons/Person';\n\nimport { useApplicationContext } from '../contexts/Application';\nimport { activateConnection, deactivateConnection } from '../store/actions';\n\nconst useStyles = makeStyles(theme => ({\n divider: {\n marginRight: theme.spacing(2),\n },\n}));\n\nexport default function Web3Status() {\n const classes = useStyles();\n const { state, dispatch } = useApplicationContext();\n const { active, connected, account } = state;\n\n // By default, be connected.\n useEffect(() => dispatch(activateConnection()), [dispatch]);\n\n function handleConnect() {\n dispatch(activateConnection());\n }\n\n function handleDisconnect() {\n dispatch(deactivateConnection());\n }\n\n return (\n <>\n {connected && (\n }\n />\n )}\n {active ? (\n \n ) : (\n \n )}\n \n );\n}\n","import React from 'react';\n\nimport { makeStyles } from '@material-ui/core/styles';\nimport {\n List,\n ListItemIcon,\n ListItem,\n ListItemText,\n Typography,\n} from '@material-ui/core';\nimport PurseIcon from '@material-ui/icons/BusinessCenter';\n\nimport { useApplicationContext } from '../contexts/Application';\n\nconst useStyles = makeStyles(theme => ({\n icon: {\n minWidth: 24,\n marginRight: theme.spacing(2),\n },\n}));\n\nexport default function Purses() {\n const classes = useStyles();\n const { state } = useApplicationContext();\n const { purses } = state;\n\n return (\n <>\n Purses\n {Array.isArray(purses) && purses.length > 0 ? (\n \n {purses.map(({ pursePetname, brandRegKey, issuerPetname, extent }) => (\n \n \n \n \n {extent} {issuerPetname} {brandRegKey ? ({brandRegKey}) : ''}}\n />\n \n ))}\n \n ) : (\n No purses.\n )}\n \n );\n}\n","import React from 'react';\n\nimport { makeStyles, withStyles } from '@material-ui/core/styles';\nimport { green, red, yellow } from '@material-ui/core/colors';\nimport {\n Box,\n Chip,\n Grid,\n List,\n ListItem,\n ListItemIcon,\n ListItemSecondaryAction,\n IconButton,\n Typography,\n} from '@material-ui/core';\nimport AutoswapIcon from '@material-ui/icons/SwapHorizontalCircle';\nimport ClearIcon from '@material-ui/icons/Clear';\nimport WatchIcon from '@material-ui/icons/Watch';\nimport CheckIcon from '@material-ui/icons/Check';\n\nimport { useApplicationContext } from '../contexts/Application';\n\nimport { cancelOffer, declineOffer, acceptOffer } from '../store/actions';\n\nconst useStyles = makeStyles(theme => ({\n icon: {\n margin: theme.spacing(1),\n },\n buttons: {\n '& button ~ button': {\n marginLeft: theme.spacing(1),\n },\n },\n}));\n\nconst RedIconButton = withStyles(theme => ({\n root: {\n color: theme.palette.getContrastText(red[500]),\n backgroundColor: red[500],\n '&:hover': {\n backgroundColor: red[700],\n },\n },\n}))(IconButton);\n\nconst YellowIconButton = withStyles(theme => ({\n root: {\n color: theme.pallete.getContrastText(yellow[500]),\n backgroundColor: yellow[500],\n '&:hover': {\n backgroundColor: yellow[700],\n },\n },\n}))(IconButton);\n\nconst GreenIconButton = withStyles(theme => ({\n root: {\n color: theme.palette.getContrastText(green[500]),\n backgroundColor: green[500],\n '&:hover': {\n backgroundColor: green[700],\n },\n },\n}))(IconButton);\n\nconst RedChip = withStyles(theme => ({\n root: {\n width: theme.spacing(12),\n color: red[800],\n borderColor: red[800],\n },\n}))(Chip);\n\nconst GreenChip = withStyles(theme => ({\n root: {\n width: theme.spacing(12),\n color: green[800],\n borderColor: green[800],\n },\n}))(Chip);\n\nconst pet = petname => petname || '???';\n\nexport default function Inbox() {\n const classes = useStyles();\n const { state, dispatch } = useApplicationContext();\n const { inbox } = state;\n\n function formatDateNow(stamp) {\n const date = new Date(stamp);\n const isoStamp = date.getTime() - date.getTimezoneOffset() * 60 * 1000;\n const isoDate = new Date(isoStamp);\n const isoStr = isoDate.toISOString();\n const match = isoStr.match(/^(.*)T(.*)\\..*/);\n return <>{match[1]} {match[2]};\n }\n\n function handleCancel(id) {\n dispatch(cancelOffer(id));\n }\n\n function handleDecline(id) {\n dispatch(declineOffer(id));\n }\n\n function handleAccept(id) {\n dispatch(acceptOffer(id));\n }\n\n// const offerDesc = {\n// id: Date.now(),\n// instanceRegKey: instanceId,\n// contractIssuerIndexToRole: ['TokenA', 'TokenB', 'Liquidity'],\n// instanceInviteHook: ['makeInvite'], // E(publicAPI).makeInvite()\n// instanceAcceptedHook: undefined, // Could be E(publicAPI)...\n// seatTriggerHook: ['swap'], // E(seat).swap()\n//\n// offerRulesTemplate: {\n// offer: {\n// $InputToken: {\n// pursePetname: inputPurse.pursePetname,\n// extent: inputAmount,\n// },\n// },\n// want: {\n// $OutputToken: {\n// pursePetname: outputPurse.pursePetname,\n// extent: outputAmount,\n// },\n// },\n// exit: { onDemand: {} },\n// },\n// };\n\n return (\n <>\n\n Transactions\n {Array.isArray(inbox) && inbox.length > 0 ? (\n \n {inbox.map(\n ({\n requestContext: { date, origin = 'unknown origin'} = {},\n id,\n instanceRegKey,\n instancePetname,\n offerRulesTemplate: { offer = {}, want = {} } = {},\n status,\n wait,\n }) => (\n \n \n \n \n \n \n \n At \n {date ? formatDateNow(date) : unknown time} via \n {origin}\n \n \n \n \n \n {pet(instancePetname)}\n  \n \n {!instancePetname && ({instanceRegKey}) }\n says:\n \n \n \n {Object.entries(offer).map(\n ([role, { issuerPetname, pursePetname, brandRegKey, extent }], i) => (\n \n {i === 0 ? 'Pay' : <>and pay} \n \n {extent}\n  \n {pet(issuerPetname)}\n \n {!issuerPetname && <> ({brandRegKey})} from \n \n {pet(pursePetname)}\n \n \n ))}\n {Object.entries(want).map(\n ([role, { issuerPetname, pursePetname, brandRegKey, extent }], i) => (\n \n {i === 0 ?\n (Object.keys(offer).length > 0 ? <>to receive : 'Receive') :\n <>and receieve\n } \n \n {extent}\n  \n {pet(issuerPetname)}\n \n {!issuerPetname && <> ({brandRegKey})} into \n \n {pet(pursePetname)}\n \n \n ))}\n \n \n \n {status === 'decline' && (\n \n )}\n {status === 'rejected' && (\n \n )}\n {status === 'accept' && (\n wait === undefined ? (\n \n ) : (\n handleCancel(id)}\n >\n \n \n )\n )}\n {!status && (\n <>\n handleDecline(id)}\n >\n \n \n handleAccept(id)}\n >\n \n \n \n )}\n \n \n ),\n )}\n \n ) : (\n No transactions.\n )}\n \n );\n}\n","import React from 'react';\n\nimport { makeStyles } from '@material-ui/core/styles';\nimport { Grid, Paper, Typography } from '@material-ui/core';\n\nimport Purses from './Purses';\nimport Inbox from './Inbox';\n\nconst useStyles = makeStyles(theme => ({\n paper: {\n marginTop: theme.spacing(3),\n marginBottom: theme.spacing(3),\n padding: theme.spacing(2),\n [theme.breakpoints.up(600 + theme.spacing(3) * 2)]: {\n marginTop: theme.spacing(6),\n marginBottom: theme.spacing(6),\n padding: theme.spacing(3),\n },\n },\n title: {\n padding: theme.spacing(0, 0, 4),\n },\n aside: {\n borderRightColor: theme.palette.divider,\n borderRightStyle: 'solid',\n borderRightWidth: 1,\n },\n}));\n\nexport default function Wallet() {\n const classes = useStyles();\n\n return (\n \n \n Wallet\n \n\n \n \n \n \n \n \n \n \n \n );\n}\n","import React from 'react';\n\nimport { makeStyles } from '@material-ui/core/styles';\nimport { CssBaseline } from '@material-ui/core';\n\nimport Header from '../components/Header';\nimport Web3Status from '../components/Web3Status';\nimport Wallet from '../components/Wallet';\n\nconst useStyles = makeStyles(theme => ({\n layout: {\n width: 'auto',\n marginLeft: theme.spacing(2),\n marginRight: theme.spacing(2),\n [theme.breakpoints.up(1000 + theme.spacing(2) * 2)]: {\n width: 1000,\n marginLeft: 'auto',\n marginRight: 'auto',\n },\n },\n}));\n\nexport default function App() {\n const classes = useStyles();\n\n return (\n <>\n \n
\n \n
\n
\n \n
\n \n );\n}\n","/* globals document */\nimport React from 'react';\nimport { render } from 'react-dom';\n\nimport { MuiThemeProvider, createMuiTheme } from '@material-ui/core/styles';\n\nimport ApplicationContextProvider from './contexts/Application';\nimport App from './pages/App';\n\nconst theme = createMuiTheme({\n palette: {\n primary: {\n main: '#AB2328',\n },\n secondary: {\n main: '#508AA8',\n },\n },\n typography: {\n useNextVariants: true,\n },\n});\n\nrender(\n \n \n \n \n ,\n document.getElementById('root'),\n);\n"],"sourceRoot":""} \ No newline at end of file diff --git a/packages/agoric-cli/agoric-wallet-build/static/js/main.8b821acd.chunk.js.map b/packages/agoric-cli/agoric-wallet-build/static/js/main.8b821acd.chunk.js.map deleted file mode 100644 index 7c19d3e59b6..00000000000 --- a/packages/agoric-cli/agoric-wallet-build/static/js/main.8b821acd.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["utils/fetch-websocket.js","utils/constants.js","store/types.js","store/actions.js","store/reducer.js","store/operations.js","contexts/Application.jsx","components/Header.jsx","components/Web3Status.jsx","components/Purses.jsx","components/Inbox.jsx","components/Wallet.jsx","pages/App.jsx","index.jsx"],"names":["doFetch","req","a","fetch","method","body","JSON","stringify","headers","then","response","json","ok","res","catch","err","console","log","websocket","createWebSocket","onConnect","onDisconnect","onMessage","WebSocket","url","URL","process","protocol","getWebsocketEndpoint","addEventListener","data","isWebSocketActive","deactivateWebSocket","close","updatePurses","payload","type","updateInbox","reducer","state","active","activateConnection","deactivateConnection","connected","serverConnected","serverDisconnected","purses","inbox","id","declineOffer","cancelOffer","acceptOffer","TypeError","ApplicationContext","createContext","useApplicationContext","useContext","useStyles","makeStyles","theme","appBar","position","title","flexGrow","icon","marginRight","spacing","Header","children","classes","AppBar","className","Toolbar","Typography","variant","color","noWrap","divider","Web3Status","dispatch","account","useEffect","Chip","label","avatar","Button","onClick","minWidth","Purses","Array","isArray","length","List","map","pursePetname","brandRegKey","issuerPetname","extent","ListItem","key","value","ListItemIcon","ListItemText","primary","secondary","margin","buttons","marginLeft","RedIconButton","withStyles","root","palette","getContrastText","red","backgroundColor","IconButton","YellowIconButton","pallete","yellow","GreenIconButton","green","RedChip","width","borderColor","GreenChip","pet","petname","Inbox","requestContext","date","origin","instanceRegKey","instancePetname","offerRulesTemplate","offer","want","status","wait","edge","Grid","container","direction","item","display","stamp","Date","isoStamp","getTime","getTimezoneOffset","match","toISOString","formatDateNow","Box","component","fontWeight","Object","entries","i","role","keys","ListItemSecondaryAction","undefined","size","aria-label","handleCancel","handleDecline","handleAccept","paper","marginTop","marginBottom","padding","breakpoints","up","aside","borderRightColor","borderRightStyle","borderRightWidth","Wallet","Paper","align","xs","layout","createMuiTheme","main","typography","useNextVariants","render","useReducer","messageHandler","message","parse","websocketListeners","activateWebSocket","Provider","CssBaseline","document","getElementById"],"mappings":"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","file":"static/js/main.8b821acd.chunk.js","sourcesContent":["/* globals window, WebSocket, fetch */\n\n// todo: refactor this to a class\n\nimport { API_URL } from './constants';\n\n// === FETCH\n\nexport async function doFetch(req) {\n return fetch('/vat', {\n method: 'POST',\n body: JSON.stringify(req),\n headers: { 'Content-Type': 'application/json' },\n })\n .then(response => response.json())\n .then(({ ok, res }) => (ok ? res : {}))\n .catch(err => {\n console.log('Fetch Error', err);\n });\n}\n\n// === WEB SOCKET\n\nlet websocket = null;\n\nfunction getWebsocketEndpoint() {\n // TODO proxy websocket.\n const url = new URL(API_URL || window.origin);\n url.protocol = 'ws';\n return url;\n}\n\nfunction createWebSocket({ onConnect, onDisconnect, onMessage }) {\n websocket = new WebSocket(getWebsocketEndpoint());\n if (onConnect) {\n websocket.addEventListener('open', () => onConnect());\n }\n if (onDisconnect) {\n websocket.addEventListener('close', () => onDisconnect());\n }\n if (onMessage) {\n websocket.addEventListener('message', ({ data }) => onMessage(data));\n }\n}\n\nfunction closeWebSocket() {\n websocket.close();\n websocket = null;\n}\n\nfunction isWebSocketActive() {\n return !!websocket;\n}\n\nexport function activateWebSocket(websocketListeners = {}) {\n if (isWebSocketActive()) return;\n createWebSocket(websocketListeners);\n}\n\nexport function deactivateWebSocket() {\n if (!isWebSocketActive()) return;\n closeWebSocket();\n}\n","export const API_URL = process.env.REACT_APP_API_URL;\n","export const ACTIVATE_CONNECTION = 'ACTIVATE_CONNECTION';\nexport const DEACTIVATE_CONNECTION = 'DEACTIVATE_CONNECTION';\n\nexport const SERVER_CONNECTED = 'SERVER_CONNECTED';\nexport const SERVER_DISCONNECTED = 'SERVER_DISCONNECTED';\n\nexport const UPDATE_PURSES = 'UPDATE_PURSES';\nexport const UPDATE_INBOX = 'UPDATE_INBOX';\n\nexport const REJECT_OFFER = 'REJECT_OFFER';\nexport const CONFIRM_OFFER = 'CONFIRM_OFFER';\nexport const CANCEL_OFFER = 'CANCEL_OFFER';\n","import {\n ACTIVATE_CONNECTION,\n DEACTIVATE_CONNECTION,\n SERVER_CONNECTED,\n SERVER_DISCONNECTED,\n UPDATE_PURSES,\n UPDATE_INBOX,\n CANCEL_OFFER,\n REJECT_OFFER,\n CONFIRM_OFFER,\n} from './types';\n\nexport const activateConnection = () => ({\n type: ACTIVATE_CONNECTION,\n});\n\nexport const deactivateConnection = () => ({\n type: DEACTIVATE_CONNECTION,\n});\n\nexport const serverConnected = () => ({\n type: SERVER_CONNECTED,\n});\n\nexport const serverDisconnected = () => ({\n type: SERVER_DISCONNECTED,\n});\n\nexport const updatePurses = payload => ({\n type: UPDATE_PURSES,\n payload,\n});\nexport const updateInbox = payload => ({\n type: UPDATE_INBOX,\n payload,\n});\n\nexport const cancelOffer = payload => ({\n type: CANCEL_OFFER,\n payload,\n});\n\nexport const declineOffer = payload => ({\n type: REJECT_OFFER,\n payload,\n});\n\nexport const acceptOffer = payload => ({\n type: CONFIRM_OFFER,\n payload,\n});\n","import {\n ACTIVATE_CONNECTION,\n DEACTIVATE_CONNECTION,\n SERVER_CONNECTED,\n SERVER_DISCONNECTED,\n UPDATE_PURSES,\n UPDATE_INBOX,\n REJECT_OFFER,\n CANCEL_OFFER,\n CONFIRM_OFFER,\n} from './types';\nimport {\n activateConnection,\n deactivateConnection,\n serverConnected,\n serverDisconnected,\n updatePurses,\n updateInbox,\n declineOffer,\n cancelOffer,\n acceptOffer,\n} from './operations';\n\nexport function createDefaultState() {\n return {\n active: false,\n connected: false,\n account: null,\n purses: null,\n inbox: null,\n };\n}\n\n/* eslint-disable complexity */\nexport const reducer = (state, { type, payload }) => {\n switch (type) {\n case ACTIVATE_CONNECTION:\n return activateConnection(state);\n case DEACTIVATE_CONNECTION:\n return deactivateConnection(state);\n\n case SERVER_CONNECTED:\n return serverConnected(state);\n case SERVER_DISCONNECTED:\n return serverDisconnected(state);\n\n case UPDATE_PURSES:\n return updatePurses(state, payload);\n case UPDATE_INBOX:\n return updateInbox(state, payload);\n\n case REJECT_OFFER:\n return declineOffer(state, payload);\n case CANCEL_OFFER:\n return cancelOffer(state, payload);\n case CONFIRM_OFFER:\n return acceptOffer(state, payload);\n\n default:\n throw new TypeError(`Action not supported ${type}`);\n }\n};\n/* eslint-enable complexity */\n","import { doFetch } from '../utils/fetch-websocket';\n\nexport function activateConnection(state) {\n return { ...state, active: true };\n}\nexport function deactivateConnection(state) {\n return { ...state, active: false };\n}\n\nexport function serverConnected(state) {\n return { ...state, connected: true };\n}\nexport function serverDisconnected(state) {\n return { ...state, connected: false };\n}\n\nexport function updatePurses(state, purses) {\n return { ...state, purses };\n}\nexport function updateInbox(state, inbox) {\n return { ...state, inbox };\n}\n\nexport function declineOffer(state, id) {\n doFetch({\n type: 'walletDeclineOffer',\n data: id,\n }); // todo toast\n\n return state;\n}\nexport function acceptOffer(state, id) {\n doFetch({\n type: 'walletAcceptOffer',\n data: id,\n }); // todo toast\n\n return state;\n}\nexport function cancelOffer(state, id) {\n doFetch({\n type: 'walletCancelOffer',\n data: id,\n });\n return state;\n}\n","import React, { createContext, useContext, useReducer, useEffect } from 'react';\n\nimport {\n activateWebSocket,\n deactivateWebSocket,\n doFetch,\n} from '../utils/fetch-websocket';\nimport {\n updatePurses,\n updateInbox,\n serverConnected,\n serverDisconnected,\n deactivateConnection,\n} from '../store/actions';\nimport { reducer, createDefaultState } from '../store/reducer';\n\nexport const ApplicationContext = createContext();\n\nexport function useApplicationContext() {\n return useContext(ApplicationContext);\n}\n\n// eslint-disable-next-line react/prop-types\nexport default function Provider({ children }) {\n const [state, dispatch] = useReducer(reducer, createDefaultState());\n const { active } = state;\n\n useEffect(() => {\n function messageHandler(message) {\n if (!message) return;\n const { type, data } = message;\n if (type === 'walletUpdatePurses') {\n dispatch(updatePurses(JSON.parse(data)));\n }\n if (type === 'walletUpdateInbox') {\n dispatch(updateInbox(JSON.parse(data)));\n }\n }\n\n function walletGetPurses() {\n return doFetch({ type: 'walletGetPurses' }).then(messageHandler);\n }\n function walletGetInbox() {\n return doFetch({ type: 'walletGetInbox' }).then(messageHandler);\n }\n\n if (active) {\n activateWebSocket({\n onConnect() {\n dispatch(serverConnected());\n walletGetPurses();\n walletGetInbox();\n },\n onDisconnect() {\n dispatch(serverDisconnected());\n dispatch(deactivateConnection());\n dispatch(updatePurses(null));\n dispatch(updateInbox(null));\n },\n onMessage(message) {\n messageHandler(JSON.parse(message));\n },\n });\n } else {\n deactivateWebSocket();\n }\n }, [active]);\n\n return (\n \n {children}\n \n );\n}\n","import React from 'react';\n\nimport { makeStyles } from '@material-ui/core/styles';\nimport { AppBar, Toolbar, Typography } from '@material-ui/core';\nimport WalletIcon from '@material-ui/icons/AccountBalanceWallet';\n\nconst useStyles = makeStyles(theme => ({\n appBar: {\n position: 'relative',\n },\n title: {\n flexGrow: 1,\n },\n icon: {\n marginRight: theme.spacing(1),\n },\n}));\n\n// eslint-disable-next-line react/prop-types\nexport default function Header({ children }) {\n const classes = useStyles();\n\n return (\n \n \n \n \n Simple Wallet\n \n {children}\n \n \n );\n}\n","import React, { useEffect } from 'react';\n\nimport { makeStyles } from '@material-ui/core/styles';\nimport { Button, Chip } from '@material-ui/core';\nimport PersonIcon from '@material-ui/icons/Person';\n\nimport { useApplicationContext } from '../contexts/Application';\nimport { activateConnection, deactivateConnection } from '../store/actions';\n\nconst useStyles = makeStyles(theme => ({\n divider: {\n marginRight: theme.spacing(2),\n },\n}));\n\nexport default function Web3Status() {\n const classes = useStyles();\n const { state, dispatch } = useApplicationContext();\n const { active, connected, account } = state;\n\n // By default, be connected.\n useEffect(() => dispatch(activateConnection()), [dispatch]);\n\n function handleConnect() {\n dispatch(activateConnection());\n }\n\n function handleDisconnect() {\n dispatch(deactivateConnection());\n }\n\n return (\n <>\n {connected && (\n }\n />\n )}\n {active ? (\n \n ) : (\n \n )}\n \n );\n}\n","import React from 'react';\n\nimport { makeStyles } from '@material-ui/core/styles';\nimport {\n List,\n ListItemIcon,\n ListItem,\n ListItemText,\n Typography,\n} from '@material-ui/core';\nimport PurseIcon from '@material-ui/icons/BusinessCenter';\n\nimport { useApplicationContext } from '../contexts/Application';\n\nconst useStyles = makeStyles(theme => ({\n icon: {\n minWidth: 24,\n marginRight: theme.spacing(2),\n },\n}));\n\nexport default function Purses() {\n const classes = useStyles();\n const { state } = useApplicationContext();\n const { purses } = state;\n\n return (\n <>\n Purses\n {Array.isArray(purses) && purses.length > 0 ? (\n \n {purses.map(({ pursePetname, brandRegKey, issuerPetname, extent }) => (\n \n \n \n \n {extent} {issuerPetname} {brandRegKey ? ({brandRegKey}) : ''}}\n />\n \n ))}\n \n ) : (\n No purses.\n )}\n \n );\n}\n","import React from 'react';\n\nimport { makeStyles, withStyles } from '@material-ui/core/styles';\nimport { green, red, yellow } from '@material-ui/core/colors';\nimport {\n Box,\n Chip,\n Grid,\n List,\n ListItem,\n ListItemIcon,\n ListItemSecondaryAction,\n IconButton,\n Typography,\n} from '@material-ui/core';\nimport AutoswapIcon from '@material-ui/icons/SwapHorizontalCircle';\nimport ClearIcon from '@material-ui/icons/Clear';\nimport WatchIcon from '@material-ui/icons/Watch';\nimport CheckIcon from '@material-ui/icons/Check';\n\nimport { useApplicationContext } from '../contexts/Application';\n\nimport { cancelOffer, declineOffer, acceptOffer } from '../store/actions';\n\nconst useStyles = makeStyles(theme => ({\n icon: {\n margin: theme.spacing(1),\n },\n buttons: {\n '& button ~ button': {\n marginLeft: theme.spacing(1),\n },\n },\n}));\n\nconst RedIconButton = withStyles(theme => ({\n root: {\n color: theme.palette.getContrastText(red[500]),\n backgroundColor: red[500],\n '&:hover': {\n backgroundColor: red[700],\n },\n },\n}))(IconButton);\n\nconst YellowIconButton = withStyles(theme => ({\n root: {\n color: theme.pallete.getContrastText(yellow[500]),\n backgroundColor: yellow[500],\n '&:hover': {\n backgroundColor: yellow[700],\n },\n },\n}))(IconButton);\n\nconst GreenIconButton = withStyles(theme => ({\n root: {\n color: theme.palette.getContrastText(green[500]),\n backgroundColor: green[500],\n '&:hover': {\n backgroundColor: green[700],\n },\n },\n}))(IconButton);\n\nconst RedChip = withStyles(theme => ({\n root: {\n width: theme.spacing(12),\n color: red[800],\n borderColor: red[800],\n },\n}))(Chip);\n\nconst GreenChip = withStyles(theme => ({\n root: {\n width: theme.spacing(12),\n color: green[800],\n borderColor: green[800],\n },\n}))(Chip);\n\nconst pet = petname => petname || '???';\n\nexport default function Inbox() {\n const classes = useStyles();\n const { state, dispatch } = useApplicationContext();\n const { inbox } = state;\n\n function formatDateNow(stamp) {\n const date = new Date(stamp);\n const isoStamp = date.getTime() - date.getTimezoneOffset() * 60 * 1000;\n const isoDate = new Date(isoStamp);\n const isoStr = isoDate.toISOString();\n const match = isoStr.match(/^(.*)T(.*)\\..*/);\n return <>{match[1]} {match[2]};\n }\n\n function handleCancel(id) {\n dispatch(cancelOffer(id));\n }\n\n function handleDecline(id) {\n dispatch(declineOffer(id));\n }\n\n function handleAccept(id) {\n dispatch(acceptOffer(id));\n }\n\n// const proposalTemplate = {\n// id: Date.now(),\n// instanceRegKey: instanceId,\n// contractIssuerIndexToRole: ['TokenA', 'TokenB', 'Liquidity'],\n// instanceInviteHook: ['makeInvite'], // E(publicAPI).makeInvite()\n// instanceAcceptedHook: undefined, // Could be E(publicAPI)...\n// seatTriggerHook: ['swap'], // E(seat).swap()\n//\n// offerRulesTemplate: {\n// offer: {\n// $InputToken: {\n// pursePetname: inputPurse.pursePetname,\n// extent: inputAmount,\n// },\n// },\n// want: {\n// $OutputToken: {\n// pursePetname: outputPurse.pursePetname,\n// extent: outputAmount,\n// },\n// },\n// exit: { onDemand: {} },\n// },\n// };\n\n return (\n <>\n\n Transactions\n {Array.isArray(inbox) && inbox.length > 0 ? (\n \n {inbox.map(\n ({\n requestContext: { date, origin = 'unknown origin'} = {},\n id,\n instanceRegKey,\n instancePetname,\n offerRulesTemplate: { offer = {}, want = {} },\n status,\n wait,\n }) => (\n \n \n \n \n \n \n \n At \n {date ? formatDateNow(date) : unknown time} via \n {origin}\n \n \n \n \n \n {pet(instancePetname)}\n  \n \n {!instancePetname && ({instanceRegKey}) }\n says:\n \n \n \n {Object.entries(offer).map(\n ([role, { issuerPetname, pursePetname, brandRegKey, extent }], i) => (\n \n {i === 0 ? 'Pay' : <>and pay} \n \n {extent}\n  \n {pet(issuerPetname)}\n \n {!issuerPetname && <> ({brandRegKey})} from \n \n {pet(pursePetname)}\n \n \n ))}\n {Object.entries(want).map(\n ([role, { issuerPetname, pursePetname, brandRegKey, extent }], i) => (\n \n {i === 0 ?\n (Object.keys(offer).length > 0 ? <>to receive : 'Receive') :\n <>and receieve\n } \n \n {extent}\n  \n {pet(issuerPetname)}\n \n {!issuerPetname && <> ({brandRegKey})} into \n \n {pet(pursePetname)}\n \n \n ))}\n \n \n \n {status === 'decline' && (\n \n )}\n {status === 'rejected' && (\n \n )}\n {status === 'accept' && (\n wait === undefined ? (\n \n ) : (\n handleCancel(id)}\n >\n \n \n )\n )}\n {!status && (\n <>\n handleDecline(id)}\n >\n \n \n handleAccept(id)}\n >\n \n \n \n )}\n \n \n ),\n )}\n \n ) : (\n No transactions.\n )}\n \n );\n}\n","import React from 'react';\n\nimport { makeStyles } from '@material-ui/core/styles';\nimport { Grid, Paper, Typography } from '@material-ui/core';\n\nimport Purses from './Purses';\nimport Inbox from './Inbox';\n\nconst useStyles = makeStyles(theme => ({\n paper: {\n marginTop: theme.spacing(3),\n marginBottom: theme.spacing(3),\n padding: theme.spacing(2),\n [theme.breakpoints.up(600 + theme.spacing(3) * 2)]: {\n marginTop: theme.spacing(6),\n marginBottom: theme.spacing(6),\n padding: theme.spacing(3),\n },\n },\n title: {\n padding: theme.spacing(0, 0, 4),\n },\n aside: {\n borderRightColor: theme.palette.divider,\n borderRightStyle: 'solid',\n borderRightWidth: 1,\n },\n}));\n\nexport default function Wallet() {\n const classes = useStyles();\n\n return (\n \n \n Wallet\n \n\n \n \n \n \n \n \n \n \n \n );\n}\n","import React from 'react';\n\nimport { makeStyles } from '@material-ui/core/styles';\nimport { CssBaseline } from '@material-ui/core';\n\nimport Header from '../components/Header';\nimport Web3Status from '../components/Web3Status';\nimport Wallet from '../components/Wallet';\n\nconst useStyles = makeStyles(theme => ({\n layout: {\n width: 'auto',\n marginLeft: theme.spacing(2),\n marginRight: theme.spacing(2),\n [theme.breakpoints.up(1000 + theme.spacing(2) * 2)]: {\n width: 1000,\n marginLeft: 'auto',\n marginRight: 'auto',\n },\n },\n}));\n\nexport default function App() {\n const classes = useStyles();\n\n return (\n <>\n \n
\n \n
\n
\n \n
\n \n );\n}\n","/* globals document */\nimport React from 'react';\nimport { render } from 'react-dom';\n\nimport { MuiThemeProvider, createMuiTheme } from '@material-ui/core/styles';\n\nimport ApplicationContextProvider from './contexts/Application';\nimport App from './pages/App';\n\nconst theme = createMuiTheme({\n palette: {\n primary: {\n main: '#AB2328',\n },\n secondary: {\n main: '#508AA8',\n },\n },\n typography: {\n useNextVariants: true,\n },\n});\n\nrender(\n \n \n \n \n ,\n document.getElementById('root'),\n);\n"],"sourceRoot":""} \ No newline at end of file diff --git a/packages/cosmic-swingset/lib/ag-solo/vats/lib-wallet.js b/packages/cosmic-swingset/lib/ag-solo/vats/lib-wallet.js index 47024c0de93..4d11907b2b0 100644 --- a/packages/cosmic-swingset/lib/ag-solo/vats/lib-wallet.js +++ b/packages/cosmic-swingset/lib/ag-solo/vats/lib-wallet.js @@ -196,11 +196,13 @@ export async function makeWallet( async function addOffer( rawOfferDesc, hooks = undefined, - requestContext = {}, + requestContext = { origin: 'unknown' }, ) { - const { id } = rawOfferDesc; + const { id: rawId } = rawOfferDesc; + const id = `${requestContext.origin}#${rawId}`; const offerDesc = { ...rawOfferDesc, + id, requestContext, status: undefined, wait: undefined, @@ -213,6 +215,7 @@ export async function makeWallet( // Our inbox state may have an enriched offerDesc. updateInboxState(id, idToOfferDesc.get(id)); + return id; } function declineOffer(id) { diff --git a/packages/wallet-frontend/src/components/Inbox.jsx b/packages/wallet-frontend/src/components/Inbox.jsx index fb010caa785..6711b1a5797 100644 --- a/packages/wallet-frontend/src/components/Inbox.jsx +++ b/packages/wallet-frontend/src/components/Inbox.jsx @@ -144,7 +144,7 @@ export default function Inbox() { id, instanceRegKey, instancePetname, - offerRulesTemplate: { offer = {}, want = {} }, + offerRulesTemplate: { offer = {}, want = {} } = {}, status, wait, }) => (