diff --git a/frontend/react-material-admin/src/components/Layout/Layout.js b/frontend/react-material-admin/src/components/Layout/Layout.js index 33ce9b2c..277859a1 100644 --- a/frontend/react-material-admin/src/components/Layout/Layout.js +++ b/frontend/react-material-admin/src/components/Layout/Layout.js @@ -19,6 +19,7 @@ import Dashboard from "../../pages/dashboard"; import SqueakAddress from "../../pages/squeakaddress"; import Profile from "../../pages/profile"; import CreateSigningProfile from "../../pages/createsigningprofile"; +import MakeSqueak from "../../pages/makesqueak"; import Notifications from "../../pages/notifications"; import Maps from "../../pages/maps"; import Profiles from "../../pages/profiles"; @@ -51,6 +52,7 @@ function Layout(props) { + { + history.push("/app/squeak/" + squeakHash); + }; + + function handleSubmit(event) { + event.preventDefault(); + console.log( 'profileId:', profileId); + console.log( 'content:', content); + console.log( 'replyto:', replyto); + makeSqueak(profileId, content, replyto); + } + + const makeSqueak = (profileId, content, replyto) => { + console.log("called makeSqueak"); + + var makeSqueakRequest = new MakeSqueakRequest() + makeSqueakRequest.setProfileId(profileId); + makeSqueakRequest.setContent(content); + makeSqueakRequest.setReplyto(replyto); + console.log(makeSqueakRequest); + + client.makeSqueak(makeSqueakRequest, {}, (err, response) => { + console.log(response); + console.log(response.getHash()); + goToSqueakPage(response.getHash()); + }); + }; + const getSigningProfiles = () => { + console.log("called getSigningProfiles"); + var getSigningProfilesRequest = new GetSigningProfilesRequest() + client.getSigningProfiles(getSigningProfilesRequest, {}, (err, response) => { + console.log(response); + console.log(response.getSqueakProfilesList()); + setSigningProfiles(response.getSqueakProfilesList()); + }); + }; + + useEffect(() => { + getSigningProfiles() + }, []); + + return ( + <> + < PageTitle title = "Make Squeak" /> + +
+ Number of signing profiles: {signingProfiles.length} +
+ + +
+ setContent(e.target.value)} + /> + + + +
+); +} diff --git a/frontend/react-material-admin/src/pages/makesqueak/package.json b/frontend/react-material-admin/src/pages/makesqueak/package.json new file mode 100644 index 00000000..1569bff4 --- /dev/null +++ b/frontend/react-material-admin/src/pages/makesqueak/package.json @@ -0,0 +1,6 @@ +{ + "name": "MakeSqueak", + "version": "0.0.0", + "main": "MakeSqueak.js", + "private": true +} diff --git a/frontend/react-material-admin/src/pages/makesqueak/styles.js b/frontend/react-material-admin/src/pages/makesqueak/styles.js new file mode 100644 index 00000000..39d05eff --- /dev/null +++ b/frontend/react-material-admin/src/pages/makesqueak/styles.js @@ -0,0 +1,21 @@ +import { makeStyles } from "@material-ui/styles"; + +export default makeStyles(theme => ({ + dashedBorder: { + border: "1px dashed", + borderColor: theme.palette.primary.main, + padding: theme.spacing(2), + paddingTop: theme.spacing(4), + paddingBottom: theme.spacing(4), + marginTop: theme.spacing(1), + }, + text: { + marginBottom: theme.spacing(2), + }, + root: { + '& .MuiTextField-root': { + margin: theme.spacing(1), + width: '25ch', + }, +}, +})); diff --git a/squeakserver/server/postgres_db.py b/squeakserver/server/postgres_db.py index 5b1fbb5a..2a62db8f 100644 --- a/squeakserver/server/postgres_db.py +++ b/squeakserver/server/postgres_db.py @@ -280,6 +280,8 @@ class PostgresDb: return SqueakEntry(squeak=squeak, block_header=block_header) def _parse_squeak_profile(self, row): + if row is None: + return None private_key_column = row["private_key"] private_key = bytes(private_key_column) if private_key_column else None return SqueakProfile( @@ -292,6 +294,8 @@ class PostgresDb: ) def _parse_squeak_entry_with_profile(self, row): + if row is None: + return None squeak_entry = self._parse_squeak_entry(row) squeak_profile = self._parse_squeak_profile(row) return SqueakEntryWithProfile(