From 5cb60add56ca7b56551daf44f7928a8cf316efc3 Mon Sep 17 00:00:00 2001 From: samepant Date: Sun, 20 Sep 2020 15:53:34 -0700 Subject: [PATCH] next.js tricked me, fixed ssr --- README.md | 2 + database/multisig-db.db | Bin 20480 -> 20480 bytes pages/api/multiaddress/[uuid].js | 26 ++++++++++ .../index.js} | 4 +- pages/api/transaction/[uuid].js | 47 ------------------ pages/api/transaction/[uuid]/index.js | 17 +++++++ pages/multi/[address]/index.js | 25 +--------- .../transaction/[transactionUUID].js | 31 ++++++------ 8 files changed, 63 insertions(+), 89 deletions(-) create mode 100644 pages/api/multiaddress/[uuid].js rename pages/api/{multiaddress.js => multiaddress/index.js} (94%) delete mode 100644 pages/api/transaction/[uuid].js diff --git a/README.md b/README.md index 223dade..d711d8e 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,5 @@ +## Gaiacli node.js wrapper and demo app + You must have the gaiacli available to the node process running this app. Run with `npm run dev` diff --git a/database/multisig-db.db b/database/multisig-db.db index a118d69bd57b3c7c237c18637e37a6b69ad5ceba..57ec12f7cbce7ef0162404871607204c3c8d3dea 100644 GIT binary patch delta 119 zcmZozz}T>Wae}m<3AGoqZ2yg(+gs25C-%}q(L?`&o_8oGvYdK1+8`9qgdReL$*Q;e|K1TW?CrK@G`iqq-shnT^@_Xg1zDthO3K;ch zU#dN+>=d6INsr1$Qn69rtL*ZuJLTQ_8ZR$NT0~-W#HKGn-0}i?9+19bmh@>nOY>F= zC-i%~vXmUN(JYOhbXn`TL&wJf_USZO+TE*5yNzl!cdxee$?g01vq#hF#Zi}UV~=AR zB{Xp8Td&I(D*0CA7pd?yp7Y*mw0!0Ety|ew<*7_waGc&3QKuoV5if@3g8nI#rqaFs{QiC}N<0bzf`A|(2nYg#fFK|U2m*qDARq|*+X$R) zujDd~jF&xaWv)7wO@NMU8Q8>>p$3s`14LyN5C9F!C0JFRF!sY(b=&<3F~-hl5>rK= z_*CnINi^)m1E(K%2BtD>o1nQwfvwuMX37rG6fV)kGIpUOTLc(7F)#v}v8FjD*0Afy zn&YZ6G*nwQ9TV|lp=uxs09C9tr0cfs0z-Bo;F3(ok};2zk%N&56i1^NoMxAKWlryM zdOyi5lHsf}eCMq4?eZ|_(Ov{#8}}KrCVj2hM$GBqs0X_=iMky~#-2Apu|JuBfJC&N z4D){ zNz(OLWMXANnpEjSG-^i%wh|8l7>_`rH&Y7fxA~=;f6v_fC;t(bARq_`0)l`bAP5Ko zf`A|(2nYg#fFK|U{MQorbZPlccHTu~^+(y|TiK~^L%RQ8x&Eij&984}ZhXxj#3cv_ z0)l`bAP5Kof`A|(2nYg#fFSUnLg0cYfN4_`AybhRM{#6mTZU}uP?ZU=AWtQtC(s1sE-G5=8<-9c*HDr?)By&#z1*jTQ zu|w8eTL+HHLv70QLug^ygc!&aa0dm0XvCu0%b6pHqa1n^mA zkxE@s{`-G{4}19K%maXzzX175%71?+1ct}y{(m+5*UXLR+TVV>fAuf?QC$Bs1b*+V zUduFobLF>tzgzwFuz?XJNC%c|P|cDdCbn$3mcu=Du&F7kV(2b@k!Rx`%@^`#Jxz{D z=fOTB^-+E;Kfv9DN4?1Vv6nA=by?D#*xRQ8nNRHYL;v{oDVLet1^tq^92Wj-=0VhJ zciY2w9K?ZclEj-RLo;DUCkYH@c4H8A{5ay7u^%P@o9aqv5c<6Qg!}*ab5VJqq*wmr z`N_%iwY*EGHJoMSK^~5IzBF0>WG#Pwm?>Wfl5Te`&ky8;JVE~Cgd^cTO6ifMl+tUE zjPsyuzoBY{Oc6)T)kRTHERf(G#$Fl|CQJ%liI4I8P^8oi9h{!EEl6y%-ko{GlNJm zd2{Gc1`rZW1-7Lts%VbOS6m;gIhJP4VQ4zS9Jvgp)&UWaE!BX0gR3FO(j1`MVgdXe u3*Zmd9NAfOD6R%|fF0Si0p$A;=*p($x-wC1q}ar^RAC+8wIBIF&G9V|=Ju2T diff --git a/pages/api/multiaddress/[uuid].js b/pages/api/multiaddress/[uuid].js new file mode 100644 index 0000000..647b106 --- /dev/null +++ b/pages/api/multiaddress/[uuid].js @@ -0,0 +1,26 @@ +const { v4: uuidv4 } = require("uuid"); +const { queries } = require("../../../database/connectDatabase"); + +const get = async (req, res) => { + try { + const { + query: { uuid }, + } = req; + + const multi = query.getMultiFromUUID.get(uuid); + res.status(200).send(multi); + } catch (err) { + console.log(err); + res.status(500).send(err.message); + } +}; + +export default (req, res) => { + switch (req.method) { + case "GET": + get(req, res); + break; + default: + res.status(404).send(); + } +}; diff --git a/pages/api/multiaddress.js b/pages/api/multiaddress/index.js similarity index 94% rename from pages/api/multiaddress.js rename to pages/api/multiaddress/index.js index d5363d0..cf50a32 100644 --- a/pages/api/multiaddress.js +++ b/pages/api/multiaddress/index.js @@ -1,6 +1,6 @@ -const gaiaWrap = require("../../lib/gaiaWrap"); +const gaiaWrap = require("../../../lib/gaiaWrap"); const { v4: uuidv4 } = require("uuid"); -const { queries } = require("../../database/connectDatabase"); +const { queries } = require("../../../database/connectDatabase"); const get = async (req, res) => { const allKeys = await gaiaWrap.listKeys(); diff --git a/pages/api/transaction/[uuid].js b/pages/api/transaction/[uuid].js deleted file mode 100644 index bd7188a..0000000 --- a/pages/api/transaction/[uuid].js +++ /dev/null @@ -1,47 +0,0 @@ -const { v4: uuidv4 } = require("uuid"); -const { queries } = require("../../../database/connectDatabase"); - -const post = async (req, res) => { - try { - const { - query: { uuid }, - } = req; - - // req.body should have signature, a json object of the - // signature for this transaction - const { signature } = req.body; - - // get corresponding multi record - const transaction = queries.getTransactionForUUID.get(uuid); - - if (!transaction) { - res.status(404).send(); - } else { - // add signature to existing signatures and save - transaction.signatures = transaction.signatures - ? JSON.parse(transaction.signatures) - : []; - - transaction.signatures.push(signature); - queries.updateTransactionSignatures.run({ - signatures: JSON.stringify(transaction.signatures), - uuid: transaction.uuid, - }); - const updatedTransaction = queries.getTransactionForUUID.get(uuid); - res.status(200).send(updatedTransaction); - } - } catch (err) { - console.log(err); - res.status(500).send(err.message); - } -}; - -export default (req, res) => { - switch (req.method) { - case "POST": - post(req, res); - break; - default: - res.status(404).send(); - } -}; diff --git a/pages/api/transaction/[uuid]/index.js b/pages/api/transaction/[uuid]/index.js index 4dcb9e4..a81091e 100644 --- a/pages/api/transaction/[uuid]/index.js +++ b/pages/api/transaction/[uuid]/index.js @@ -1,6 +1,20 @@ const { v4: uuidv4 } = require("uuid"); const { queries } = require("../../../../database/connectDatabase"); +const get = async (req, res) => { + try { + const { + query: { uuid }, + } = req; + + const transaction = query.getTransactionForUUID.get(uuid); + res.status(200).send(transaction); + } catch (err) { + console.log(err); + res.status(500).send(err.message); + } +}; + const post = async (req, res) => { try { const { @@ -41,6 +55,9 @@ export default (req, res) => { case "POST": post(req, res); break; + case "GET": + post(req, res); + break; default: res.status(404).send(); } diff --git a/pages/multi/[address]/index.js b/pages/multi/[address]/index.js index 33e7de3..9167953 100644 --- a/pages/multi/[address]/index.js +++ b/pages/multi/[address]/index.js @@ -1,30 +1,9 @@ +import axios from "axios"; import { useRouter } from "next/router"; import Head from "../../../components/head"; -import { queries } from "../../../database/connectDatabase"; import TransactionForm from "../../../components/TransactionForm"; -export async function getStaticPaths() { - return { - paths: [{ params: { address: "*" } }], - fallback: true, - }; -} - -export async function getStaticProps(context) { - const { address } = context.params; - let transactions = []; - const multi = queries.getMultiFromAddress.get(address); - if (multi) { - transactions = queries.getTransactionsForMultiKeyName.all(multi.key_name); - } - return { - props: { - transactions, - }, - }; -} - -export default ({ transactions }) => { +export default () => { const router = useRouter(); const { address } = router.query; return ( diff --git a/pages/multi/[address]/transaction/[transactionUUID].js b/pages/multi/[address]/transaction/[transactionUUID].js index a284c6c..c5f6197 100644 --- a/pages/multi/[address]/transaction/[transactionUUID].js +++ b/pages/multi/[address]/transaction/[transactionUUID].js @@ -1,25 +1,22 @@ +import axios from "axios"; import Head from "../../../../components/head"; import { queries } from "../../../../database/connectDatabase"; import TransactionSigning from "../../../../components/TransactionSigning"; import { useRouter } from "next/router"; -export async function getStaticPaths() { - return { - paths: [{ params: { transactionUUID: "*", address: "*" } }], - fallback: true, - }; -} - -export async function getStaticProps(context) { - const { transactionUUID, address } = context.params; - const transaction = queries.getTransactionForUUID.get(transactionUUID); - const multi = queries.getMultiFromAddress.get(address); - return { - props: { - transaction, - multi, - }, - }; +export async function getInitialProps({ req, query }) { + const { transactionUUID, address } = query; + if (req) { + // server + const transaction = queries.getTransactionForUUID.get(transactionUUID); + const multi = queries.getMultiFromAddress.get(address); + return { transaction, multi }; + } else { + // browser + const multi = await axios.get(`/api/multiaddress/${address}`); + const transaction = await axios.get(`/api/transaction/${transactionUUID}`); + return { transaction, multi }; + } } export default ({ transaction, multi }) => {