diff --git a/frontend/src/components/BuyOfferDetailItem/BuyOfferDetailItem.js b/frontend/src/components/BuyOfferDetailItem/BuyOfferDetailItem.js
index a5f9bc5e..ff875638 100644
--- a/frontend/src/components/BuyOfferDetailItem/BuyOfferDetailItem.js
+++ b/frontend/src/components/BuyOfferDetailItem/BuyOfferDetailItem.js
@@ -95,7 +95,7 @@ export default function BuyOfferDetailItem({
- Expires: {moment(expireTime*1000).fromNow()} ({expireTime})
+ Expires: {moment(expireTime*1000).fromNow()}
)
@@ -114,9 +114,7 @@ export default function BuyOfferDetailItem({
Node Pubkey:
- {
- console.info("I'm a button.");
+ >Node Pubkey: {
goToLightningNodePage(
offer.getNodePubkey(),
offer.getNodeHost(),
@@ -126,11 +124,6 @@ export default function BuyOfferDetailItem({
{offer.getNodePubkey()}
-
-
- {PayOfferButton()}
-
-
)
}
diff --git a/frontend/src/components/BuySqueakDialog/BuySqueakDialog.js b/frontend/src/components/BuySqueakDialog/BuySqueakDialog.js
new file mode 100644
index 00000000..38a296bf
--- /dev/null
+++ b/frontend/src/components/BuySqueakDialog/BuySqueakDialog.js
@@ -0,0 +1,205 @@
+import React, {useState, useEffect} from 'react';
+import {
+ Paper,
+ IconButton,
+ Menu,
+ MenuItem,
+ Typography,
+ Grid,
+ Box,
+ Link,
+ Dialog,
+ DialogTitle,
+ DialogContent,
+ DialogContentText,
+ TextField,
+ DialogActions,
+ Button,
+ FormControl,
+ InputLabel,
+ Select,
+} from "@material-ui/core";
+
+import { MoreVert as MoreIcon } from "@material-ui/icons";
+import {useHistory} from "react-router-dom";
+import classnames from "classnames";
+
+// styles
+import useStyles from "./styles";
+
+import Widget from "../../components/Widget";
+import SqueakThreadItem from "../../components/SqueakThreadItem";
+import BuyOfferItem from "../../components/BuyOfferItem";
+import BuyOfferDetailItem from "../../components/BuyOfferDetailItem";
+
+import {
+ makeSqueakRequest,
+ getSigningProfilesRequest,
+} from "../../squeakclient/requests"
+import {
+ getBuyOffersRequest,
+ syncSqueakRequest,
+} from "../../squeakclient/requests"
+import {
+ payOfferRequest,
+} from "../../squeakclient/requests"
+
+
+export default function BuySqueakDialog({
+ open,
+ handleClose,
+ hash,
+ ...props
+}) {
+ var classes = useStyles();
+ const history = useHistory();
+
+ var [selectedOfferId, setSelectedOfferId] = useState(-1);
+ const [offers, setOffers] = useState([]);
+
+ const resetFields = () => {
+ setSelectedOfferId(-1);
+ };
+
+ const handleChange = (event) => {
+ setSelectedOfferId(event.target.value);
+ };
+
+ const handleResponse = (response) => {
+ // Open pay confirmation dialog
+ };
+
+ const handleErr = (err) => {
+ alert('Error paying offer: ' + err);
+ };
+
+ // const payOffer = (offerID) => {
+ // alert('Pay offer ID here: ' + offerID);
+ // pay(offer.getOfferId());
+ // };
+
+ const loadOffers = () => {
+ getBuyOffersRequest(hash, setOffers);
+ };
+
+ const handlePayResponse = (response) => {
+ // goToSqueakPage(offer.getSqueakHash());
+ reloadRoute();
+ };
+
+ const handlePayErr = (err) => {
+ alert('Payment failure: ' + err);
+ };
+
+ const pay = (offerId) => {
+ payOfferRequest(offerId, handlePayResponse, handlePayErr);
+ };
+
+ const reloadRoute = () => {
+ history.go(0);
+ };
+
+ const getSelectedOffer = () => {
+ var offer;
+ for (offer of offers) {
+ if (offer.getOfferId() == selectedOfferId) {
+ return offer;
+ }
+ }
+ return null;
+ };
+
+ useEffect(() => {
+ loadOffers()
+ }, []);
+
+ function handleSubmit(event) {
+ event.preventDefault();
+ console.log( 'selectedOfferId:', selectedOfferId);
+ if (selectedOfferId == -1) {
+ alert('Selected Offer Id must be selected.');
+ return;
+ }
+ pay(selectedOfferId);
+ handleClose();
+ }
+
+ function MakeSelectSigningProfile() {
+ return (
+
+ Offer
+
+
+ )
+ }
+
+ function MakeSqueakContentInput() {
+ var selectedOffer = getSelectedOffer();
+ if (selectedOffer == null) {
+ return <>>
+ }
+ return (
+
+
+
+
+ )
+ }
+
+ function MakeCancelButton() {
+ return (
+
+ )
+ }
+
+ function MakeSqueakButton() {
+ return (
+
+ )
+ }
+
+ return (
+
+ )
+}
diff --git a/frontend/src/components/BuySqueakDialog/package.json b/frontend/src/components/BuySqueakDialog/package.json
new file mode 100644
index 00000000..6e75516f
--- /dev/null
+++ b/frontend/src/components/BuySqueakDialog/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "BuySqueakDialog",
+ "version": "0.0.0",
+ "private": true,
+ "main": "BuySqueakDialog.js"
+}
diff --git a/frontend/src/components/BuySqueakDialog/styles.js b/frontend/src/components/BuySqueakDialog/styles.js
new file mode 100644
index 00000000..f2d64da1
--- /dev/null
+++ b/frontend/src/components/BuySqueakDialog/styles.js
@@ -0,0 +1,43 @@
+import { makeStyles } from "@material-ui/styles";
+
+export default makeStyles(theme => ({
+ widgetWrapper: {
+ display: "flex",
+ minHeight: "100%",
+ },
+ widgetHeader: {
+ padding: theme.spacing(3),
+ paddingBottom: theme.spacing(1),
+ display: "flex",
+ justifyContent: "space-between",
+ alignItems: "center",
+ },
+ widgetRoot: {
+ boxShadow: theme.customShadows.widget,
+ },
+ widgetBody: {
+ paddingBottom: theme.spacing(3),
+ paddingRight: theme.spacing(3),
+ paddingLeft: theme.spacing(3),
+ },
+ noPadding: {
+ padding: 0,
+ },
+ paper: {
+ display: "flex",
+ flexDirection: "column",
+ flexGrow: 1,
+ overflow: "hidden",
+ },
+ moreButton: {
+ margin: -theme.spacing(1),
+ padding: 0,
+ width: 40,
+ height: 40,
+ color: theme.palette.text.hint,
+ "&:hover": {
+ backgroundColor: theme.palette.primary.main,
+ color: "rgba(255, 255, 255, 0.35)",
+ },
+ },
+}));
diff --git a/frontend/src/components/SqueakDetailItem/SqueakDetailItem.js b/frontend/src/components/SqueakDetailItem/SqueakDetailItem.js
index 2d6d247c..4d388ef6 100644
--- a/frontend/src/components/SqueakDetailItem/SqueakDetailItem.js
+++ b/frontend/src/components/SqueakDetailItem/SqueakDetailItem.js
@@ -30,6 +30,8 @@ import useStyles from "./styles";
import Widget from "../../components/Widget";
import MakeSqueakDialog from "../../components/MakeSqueakDialog";
import DeleteSqueakDialog from "../../components/DeleteSqueakDialog";
+import BuySqueakDialog from "../../components/BuySqueakDialog";
+
import {
syncSqueakRequest,
@@ -54,6 +56,7 @@ export default function SqueakDetailItem({
const history = useHistory();
const [replyDialogOpen, setReplyDialogOpen] = useState(false);
const [deleteDialogOpen, setDeleteDialogOpen] = useState(false);
+ const [buyDialogOpen, setBuyDialogOpen] = useState(false);
const handleClickOpen = () => {
setReplyDialogOpen(true);
@@ -72,6 +75,14 @@ export default function SqueakDetailItem({
setDeleteDialogOpen(false);
};
+ const handleClickOpenBuyDialog = () => {
+ setBuyDialogOpen(true);
+ };
+
+ const handleCloseBuyDialog = () => {
+ setBuyDialogOpen(false);
+ };
+
const goToSqueakAddressPage = () => {
history.push("/app/squeakaddress/" + squeak.getAuthorAddress());
};
@@ -137,7 +148,8 @@ export default function SqueakDetailItem({
if (!squeak) {
return;
}
- goToBuyPage(squeak.getSqueakHash());
+ // goToBuyPage(squeak.getSqueakHash());
+ handleClickOpenBuyDialog();
}
const onDownloadClick = (event) => {
@@ -283,6 +295,18 @@ export default function SqueakDetailItem({
)
}
+ function BuyDialogContent() {
+ return (
+ <>
+
+ >
+ )
+ }
+
return (
<>
{MakeSqueakDialogContent()}
{DeleteSqueakDialogContent()}
+ {BuyDialogContent()}
>
)
}