next.js tricked me, fixed ssr

This commit is contained in:
samepant
2020-09-20 15:53:34 -07:00
parent 4868bb83f9
commit 5cb60add56
8 changed files with 63 additions and 89 deletions
+2
View File
@@ -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`
Binary file not shown.
+26
View File
@@ -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();
}
};
@@ -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();
-47
View File
@@ -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();
}
};
+17
View File
@@ -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();
}
+2 -23
View File
@@ -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 (
@@ -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 }) => {