Change requests to flask (#1225)

* Got timeline request using flask endpoint

* Better error handling for javascript requests

* Got all lnd rpc methods working with flask requests

* Use flask endpoints for more rpc methods

* Use flask endpoints for even more rpc methods

* Use flask endpoints for even more rpc methods

* Use flask endpoints for even more rpc methods

* Use flask endpoints for even more rpc methods

* Comment out streaming frontend requests

* Comment out all streaming requests

* Remove grpc web client from requests

* Run frontend lint

* Update frontend build
This commit is contained in:
Jonathan Zernik 2021-09-08 10:42:24 -07:00 committed by GitHub
parent dc524f80ec
commit 099d33a893
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
21 changed files with 1474 additions and 480 deletions

View file

@ -22,7 +22,7 @@ import BuyOfferDetailItem from '../BuyOfferDetailItem';
import {
downloadOffersRequest,
getBuyOffersRequest,
subscribeBuyOffersRequest,
// subscribeBuyOffersRequest,
payOfferRequest,
} from '../../squeakclient/requests';
@ -56,10 +56,10 @@ export default function BuySqueakDialog({
getBuyOffersRequest(hash, setOffers);
},
[hash, setOffers]);
const subscribeOffers = useCallback(() => subscribeBuyOffersRequest(hash, (offer) => {
setOffers((prevOffers) => prevOffers.concat([offer]));
}),
[hash, setOffers]);
// const subscribeOffers = useCallback(() => subscribeBuyOffersRequest(hash, (offer) => {
// setOffers((prevOffers) => prevOffers.concat([offer]));
// }),
// [hash, setOffers]);
const downloadOffers = () => {
console.log(`downloadOffersRequest with hash: ${hash}`);
downloadOffersRequest(hash, (response) => {
@ -109,10 +109,10 @@ export default function BuySqueakDialog({
useEffect(() => {
loadOffers();
}, [loadOffers]);
useEffect(() => {
const stream = subscribeOffers();
return () => stream.cancel();
}, [subscribeOffers, hash]);
// useEffect(() => {
// const stream = subscribeOffers();
// return () => stream.cancel();
// }, [subscribeOffers, hash]);
function handleSubmit(event) {
event.preventDefault();

View file

@ -23,7 +23,7 @@ import {
connectSqueakPeerRequest,
disconnectSqueakPeerRequest,
getConnectedPeerRequest,
subscribeConnectedPeerRequest,
// subscribeConnectedPeerRequest,
} from '../../squeakclient/requests';
export default function PeerAddressPage() {
@ -36,18 +36,18 @@ export default function PeerAddressPage() {
},
[host, port]);
const subscribeConnectedPeer = useCallback(() => subscribeConnectedPeerRequest(host, port, (connectedPeer) => {
setConnectedPeer(connectedPeer);
}),
[host, port]);
// const subscribeConnectedPeer = useCallback(() => subscribeConnectedPeerRequest(host, port, (connectedPeer) => {
// setConnectedPeer(connectedPeer);
// }),
// [host, port]);
useEffect(() => {
getConnectedPeer();
}, [getConnectedPeer]);
useEffect(() => {
const stream = subscribeConnectedPeer();
return () => stream.cancel();
}, [subscribeConnectedPeer]);
// useEffect(() => {
// const stream = subscribeConnectedPeer();
// return () => stream.cancel();
// }, [subscribeConnectedPeer]);
function DisconnectPeerButton() {
return (

View file

@ -24,7 +24,7 @@ import SavedPeerListItem from '../../components/SavedPeerListItem';
import {
getPeersRequest,
getConnectedPeersRequest,
subscribeConnectedPeersRequest,
// subscribeConnectedPeersRequest,
} from '../../squeakclient/requests';
const useStyles = makeStyles((theme) => ({
@ -58,7 +58,7 @@ export default function Peers() {
getConnectedPeersRequest(setConnectedPeers);
};
const subscribeConnectedPeers = () => subscribeConnectedPeersRequest(setConnectedPeers);
// const subscribeConnectedPeers = () => subscribeConnectedPeersRequest(setConnectedPeers);
const getSqueakPeers = () => {
getPeersRequest(setPeers);
@ -83,10 +83,10 @@ export default function Peers() {
useEffect(() => {
getConnectedPeers();
}, []);
useEffect(() => {
const stream = subscribeConnectedPeers();
return () => stream.cancel();
}, []);
// useEffect(() => {
// const stream = subscribeConnectedPeers();
// return () => stream.cancel();
// }, []);
useEffect(() => {
getSqueakPeers();
}, []);

View file

@ -26,14 +26,12 @@ import {
const SENT_PAYMENTS_PER_PAGE = 10;
export default function SentPayments() {
const classes = useStyles();
const [value, setValue] = useState(0);
const [sentPayments, setSentPayments] = useState([]);
const [waitingForSentPayments, setWaitingForSentPayments] = React.useState(false);
function a11yProps(index) {
return {
id: `simple-tab-${index}`,

View file

@ -28,8 +28,8 @@ import {
getReplySqueakDisplaysRequest,
getNetworkRequest,
downloadRepliesRequest,
subscribeReplySqueakDisplaysRequest,
subscribeAncestorSqueakDisplaysRequest,
// subscribeReplySqueakDisplaysRequest,
// subscribeAncestorSqueakDisplaysRequest,
} from '../../squeakclient/requests';
const SQUEAKS_PER_PAGE = 10;
@ -48,15 +48,15 @@ export default function SqueakPage() {
getAncestorSqueakDisplaysRequest(hash, handleLoadedAncestorSqueaks);
},
[]);
const subscribeAncestorSqueaks = (hash) => subscribeAncestorSqueakDisplaysRequest(hash, setAncestorSqueaks);
// const subscribeAncestorSqueaks = (hash) => subscribeAncestorSqueakDisplaysRequest(hash, setAncestorSqueaks);
const getReplySqueaks = useCallback((hash, limit, lastEntry) => {
setWaitingForReplySqueaks(true);
getReplySqueakDisplaysRequest(hash, limit, lastEntry, handleLoadedReplySqueaks);
},
[]);
const subscribeReplySqueaks = (hash) => subscribeReplySqueakDisplaysRequest(hash, (resp) => {
setReplySqueaks((prevReplySqueaks) => prevReplySqueaks.concat(resp));
});
// const subscribeReplySqueaks = (hash) => subscribeReplySqueakDisplaysRequest(hash, (resp) => {
// setReplySqueaks((prevReplySqueaks) => prevReplySqueaks.concat(resp));
// });
const getNetwork = () => {
getNetworkRequest(setNetwork);
};
@ -101,18 +101,18 @@ export default function SqueakPage() {
setAncestorSqueaks(null); // Temporary fix until component unmounts correcyly
getAncestorSqueaks(hash);
}, [getAncestorSqueaks, hash]);
useEffect(() => {
const stream = subscribeAncestorSqueaks(hash);
return () => stream.cancel();
}, [hash]);
// useEffect(() => {
// const stream = subscribeAncestorSqueaks(hash);
// return () => stream.cancel();
// }, [hash]);
useEffect(() => {
setReplySqueaks(null); // Temporary fix until component unmounts correcyly
getReplySqueaks(hash, SQUEAKS_PER_PAGE, null);
}, [getReplySqueaks, hash]);
useEffect(() => {
const stream = subscribeReplySqueaks(hash);
return () => stream.cancel();
}, [hash]);
// useEffect(() => {
// const stream = subscribeReplySqueaks(hash);
// return () => stream.cancel();
// }, [hash]);
useEffect(() => {
getNetwork();
}, []);

View file

@ -24,7 +24,7 @@ import {
getSqueakProfileByAddressRequest,
getAddressSqueakDisplaysRequest,
getNetworkRequest,
subscribeAddressSqueakDisplaysRequest,
// subscribeAddressSqueakDisplaysRequest,
downloadAddressSqueaksRequest,
} from '../../squeakclient/requests';
import {
@ -51,9 +51,9 @@ export default function SqueakAddressPage() {
getAddressSqueakDisplaysRequest(address, limit, lastEntry, handleLoadedAddressSqueaks);
},
[]);
const subscribeSqueaks = (address) => subscribeAddressSqueakDisplaysRequest(address, (resp) => {
setSqueaks((prevSqueaks) => [resp].concat(prevSqueaks));
});
// const subscribeSqueaks = (address) => subscribeAddressSqueakDisplaysRequest(address, (resp) => {
// setSqueaks((prevSqueaks) => [resp].concat(prevSqueaks));
// });
const getNetwork = () => {
getNetworkRequest(setNetwork);
};
@ -90,10 +90,10 @@ export default function SqueakAddressPage() {
useEffect(() => {
getSqueaks(address, SQUEAKS_PER_PAGE, null);
}, [getSqueaks, address]);
useEffect(() => {
const stream = subscribeSqueaks(address);
return () => stream.cancel();
}, [address]);
// useEffect(() => {
// const stream = subscribeSqueaks(address);
// return () => stream.cancel();
// }, [address]);
useEffect(() => {
getNetwork();
}, []);

View file

@ -25,7 +25,7 @@ import SqueakList from '../../components/SqueakList';
import {
getTimelineSqueakDisplaysRequest,
getNetworkRequest,
subscribeTimelineSqueakDisplaysRequest,
// subscribeTimelineSqueakDisplaysRequest,
} from '../../squeakclient/requests';
const SQUEAKS_PER_PAGE = 10;
@ -43,8 +43,8 @@ export default function TimelinePage() {
getTimelineSqueakDisplaysRequest(limit, lastEntry, handleLoadedTimeline, alertFailedRequest);
},
[]);
const subscribeNewSqueaks = useCallback(() => subscribeTimelineSqueakDisplaysRequest(handleLoadedNewSqueak),
[]);
// const subscribeNewSqueaks = useCallback(() => subscribeTimelineSqueakDisplaysRequest(handleLoadedNewSqueak),
// []);
const getNetwork = () => {
getNetworkRequest(setNetwork);
@ -59,6 +59,7 @@ export default function TimelinePage() {
};
const alertFailedRequest = () => {
setWaitingForTimeline(false);
alert('Failed to load timeline.');
};
@ -68,7 +69,8 @@ export default function TimelinePage() {
getSqueaks(SQUEAKS_PER_PAGE, null);
};
const handleLoadedTimeline = (loadedSqueaks) => {
const handleLoadedTimeline = (resp) => {
const loadedSqueaks = resp.getSqueakDisplayEntriesList();
setWaitingForTimeline(false);
setSqueaks((prevSqueaks) => {
if (!prevSqueaks) {
@ -90,10 +92,10 @@ export default function TimelinePage() {
useEffect(() => {
getSqueaks(SQUEAKS_PER_PAGE, null);
}, [getSqueaks]);
useEffect(() => {
const stream = subscribeNewSqueaks();
return () => stream.cancel();
}, [subscribeNewSqueaks]);
// useEffect(() => {
// const stream = subscribeNewSqueaks();
// return () => stream.cancel();
// }, [subscribeNewSqueaks]);
useEffect(() => {
getNetwork();
}, []);

File diff suppressed because it is too large Load diff

View file

@ -37,6 +37,8 @@ from flask_login import LoginManager
from flask_login import logout_user
from werkzeug.serving import make_server
from proto import lnd_pb2
from proto import squeak_admin_pb2
from squeaknode.admin.webapp.forms import LoginForm
from squeaknode.admin.webapp.squeak_admin_web_user import User
@ -118,6 +120,534 @@ def create_app(handler, username, password):
logger.info("Getting hello route.")
return "Hello, World!"
@app.route("/lndgetinfo", methods=["POST"])
@login_required
def lndgetinfo():
return handle_request(
lnd_pb2.GetInfoRequest(),
handler.handle_lnd_get_info,
)
@app.route("/lndwalletbalance", methods=["POST"])
@login_required
def lndwalletbalance():
return handle_request(
lnd_pb2.WalletBalanceRequest(),
handler.handle_lnd_wallet_balance,
)
@app.route("/lndgettransactions", methods=["POST"])
@login_required
def lndgettransactions():
return handle_request(
lnd_pb2.GetTransactionsRequest(),
handler.handle_lnd_get_transactions,
)
@app.route("/lndlistpeers", methods=["POST"])
@login_required
def lndlistpeers():
return handle_request(
lnd_pb2.ListPeersRequest(),
handler.handle_lnd_list_peers,
)
@app.route("/lndlistchannels", methods=["POST"])
@login_required
def lndlistchannels():
return handle_request(
lnd_pb2.ListChannelsRequest(),
handler.handle_lnd_list_channels,
)
@app.route("/lndpendingchannels", methods=["POST"])
@login_required
def lndpendingchannels():
return handle_request(
lnd_pb2.PendingChannelsRequest(),
handler.handle_lnd_pending_channels,
)
@app.route("/lndconnectpeer", methods=["POST"])
@login_required
def lndconnectpeer():
return handle_request(
lnd_pb2.ConnectPeerRequest(),
handler.handle_lnd_connect_peer,
)
@app.route("/lnddisconnectpeer", methods=["POST"])
@login_required
def lnddisconnectpeer():
return handle_request(
lnd_pb2.DisconnectPeerRequest(),
handler.handle_lnd_disconnect_peer,
)
@app.route("/lndopenchannelsync", methods=["POST"])
@login_required
def lndopenchannelsync():
return handle_request(
lnd_pb2.OpenChannelRequest(),
handler.handle_lnd_open_channel_sync,
)
@app.route("/lndclosechannel", methods=["POST"])
@login_required
def lndclosechannel():
return handle_request(
lnd_pb2.CloseChannelRequest(),
handler.handle_lnd_close_channel,
)
@app.route("/lndnewaddress", methods=["POST"])
@login_required
def lndnewaddress():
return handle_request(
lnd_pb2.NewAddressRequest(),
handler.handle_lnd_new_address,
)
@app.route("/lndsendcoins", methods=["POST"])
@login_required
def lndsendcoins():
return handle_request(
lnd_pb2.SendCoinsRequest(),
handler.handle_lnd_send_coins,
)
@app.route("/gettimelinesqueakdisplays", methods=["POST"])
@login_required
def gettimelinesqueakdisplays():
return handle_request(
squeak_admin_pb2.GetTimelineSqueakDisplaysRequest(),
handler.handle_get_timeline_squeak_display_entries,
)
@app.route("/getsqueakprofile", methods=["POST"])
@login_required
def getsqueakprofile():
return handle_request(
squeak_admin_pb2.GetSqueakProfileRequest(),
handler.handle_get_squeak_profile,
)
@app.route("/setsqueakprofilefollowing", methods=["POST"])
@login_required
def setsqueakprofilefollowing():
return handle_request(
squeak_admin_pb2.SetSqueakProfileFollowingRequest(),
handler.handle_set_squeak_profile_following,
)
@app.route("/setsqueakprofileusecustomprice", methods=["POST"])
@login_required
def setsqueakprofileusecustomprice():
return handle_request(
squeak_admin_pb2.SetSqueakProfileUseCustomPriceRequest(),
handler.handle_set_squeak_profile_use_custom_price,
)
@app.route("/setsqueakprofilecustomprice", methods=["POST"])
@login_required
def setsqueakprofilecustomprice():
return handle_request(
squeak_admin_pb2.SetSqueakProfileCustomPriceRequest(),
handler.handle_set_squeak_profile_custom_price,
)
@app.route("/setsqueakprofilesharing", methods=["POST"])
@login_required
def setsqueakprofilesharing():
return handle_request(
squeak_admin_pb2.SetSqueakProfileSharingRequest(),
handler.handle_set_squeak_profile_sharing,
)
@app.route("/renamesqueakprofile", methods=["POST"])
@login_required
def renamesqueakprofile():
return handle_request(
squeak_admin_pb2.RenameSqueakProfileRequest(),
handler.handle_rename_squeak_profile,
)
@app.route("/setsqueakprofileimage", methods=["POST"])
@login_required
def setsqueakprofileimage():
return handle_request(
squeak_admin_pb2.SetSqueakProfileImageRequest(),
handler.handle_set_squeak_profile_image,
)
@app.route("/clearsqueakprofileimage", methods=["POST"])
@login_required
def clearsqueakprofileimage():
return handle_request(
squeak_admin_pb2.ClearSqueakProfileImageRequest(),
handler.handle_clear_squeak_profile_image,
)
@app.route("/getpeers", methods=["POST"])
@login_required
def getpeers():
return handle_request(
squeak_admin_pb2.GetPeersRequest(),
handler.handle_get_squeak_peers,
)
@app.route("/payoffer", methods=["POST"])
@login_required
def payoffer():
return handle_request(
squeak_admin_pb2.PayOfferRequest(),
handler.handle_pay_offer,
)
@app.route("/getbuyoffers", methods=["POST"])
@login_required
def getbuyoffers():
return handle_request(
squeak_admin_pb2.GetBuyOffersRequest(),
handler.handle_get_buy_offers,
)
@app.route("/getbuyoffer", methods=["POST"])
@login_required
def getbuyoffer():
return handle_request(
squeak_admin_pb2.GetBuyOfferRequest(),
handler.handle_get_buy_offer,
)
@app.route("/getpeer", methods=["POST"])
@login_required
def getpeer():
return handle_request(
squeak_admin_pb2.GetPeerRequest(),
handler.handle_get_squeak_peer,
)
@app.route("/setpeerdownloading", methods=["POST"])
@login_required
def setpeerdownloading():
return handle_request(
squeak_admin_pb2.SetPeerDownloadingRequest(),
handler.handle_set_squeak_peer_downloading,
)
@app.route("/setpeeruploading", methods=["POST"])
@login_required
def setpeeruploading():
return handle_request(
squeak_admin_pb2.SetPeerUploadingRequest(),
handler.handle_set_squeak_peer_uploading,
)
@app.route("/setpeerautoconnect", methods=["POST"])
@login_required
def setpeerautoconnect():
return handle_request(
squeak_admin_pb2.SetPeerAutoconnectRequest(),
handler.handle_set_squeak_peer_autoconnect,
)
@app.route("/renamepeer", methods=["POST"])
@login_required
def renamepeer():
return handle_request(
squeak_admin_pb2.RenamePeerRequest(),
handler.handle_rename_squeak_peer,
)
@app.route("/getprofiles", methods=["POST"])
@login_required
def getprofiles():
return handle_request(
squeak_admin_pb2.GetProfilesRequest(),
handler.handle_get_signing_profiles,
)
@app.route("/getsigningprofiles", methods=["POST"])
@login_required
def getsigningprofiles():
return handle_request(
squeak_admin_pb2.GetSigningProfilesRequest(),
handler.handle_get_signing_profiles,
)
@app.route("/getcontactprofiles", methods=["POST"])
@login_required
def getcontactprofiles():
return handle_request(
squeak_admin_pb2.GetContactProfilesRequest(),
handler.handle_get_contact_profiles,
)
@app.route("/makesqueakrequest", methods=["POST"])
@login_required
def makesqueakrequest():
return handle_request(
squeak_admin_pb2.MakeSqueakRequest(),
handler.handle_make_squeak,
)
@app.route("/getsqueakdisplay", methods=["POST"])
@login_required
def getsqueakdisplay():
return handle_request(
squeak_admin_pb2.GetSqueakDisplayRequest(),
handler.handle_get_squeak_display_entry,
)
@app.route("/getancestorsqueakdisplays", methods=["POST"])
@login_required
def getancestorsqueakdisplays():
return handle_request(
squeak_admin_pb2.GetAncestorSqueakDisplaysRequest(),
handler.handle_get_ancestor_squeak_display_entries,
)
@app.route("/getreplysqueakdisplays", methods=["POST"])
@login_required
def getreplysqueakdisplays():
return handle_request(
squeak_admin_pb2.GetReplySqueakDisplaysRequest(),
handler.handle_get_reply_squeak_display_entries,
)
@app.route("/getsqueakprofilebyaddress", methods=["POST"])
@login_required
def getsqueakprofilebyaddress():
return handle_request(
squeak_admin_pb2.GetSqueakProfileByAddressRequest(),
handler.handle_get_squeak_profile_by_address,
)
@app.route("/getaddresssqueakdisplays", methods=["POST"])
@login_required
def getaddresssqueakdisplays():
return handle_request(
squeak_admin_pb2.GetAddressSqueakDisplaysRequest(),
handler.handle_get_squeak_display_entries_for_address,
)
@app.route("/createcontactprofile", methods=["POST"])
@login_required
def createcontactprofile():
return handle_request(
squeak_admin_pb2.CreateContactProfileRequest(),
handler.handle_create_contact_profile,
)
@app.route("/createsigningprofile", methods=["POST"])
@login_required
def createsigningprofile():
return handle_request(
squeak_admin_pb2.CreateSigningProfileRequest(),
handler.handle_create_signing_profile,
)
@app.route("/importsigningprofile", methods=["POST"])
@login_required
def importsigningprofile():
return handle_request(
squeak_admin_pb2.ImportSigningProfileRequest(),
handler.handle_import_signing_profile,
)
@app.route("/createpeer", methods=["POST"])
@login_required
def createpeer():
return handle_request(
squeak_admin_pb2.CreatePeerRequest(),
handler.handle_create_peer,
)
@app.route("/deletepeer", methods=["POST"])
@login_required
def deletepeer():
return handle_request(
squeak_admin_pb2.DeletePeerRequest(),
handler.handle_delete_squeak_peer,
)
@app.route("/deleteprofile", methods=["POST"])
@login_required
def deleteprofile():
return handle_request(
squeak_admin_pb2.DeleteSqueakProfileRequest(),
handler.handle_delete_squeak_profile,
)
@app.route("/deletesqueak", methods=["POST"])
@login_required
def deletesqueak():
return handle_request(
squeak_admin_pb2.DeleteSqueakRequest(),
handler.handle_delete_squeak,
)
@app.route("/syncsqueak", methods=["POST"])
@login_required
def syncsqueak():
return handle_request(
squeak_admin_pb2.SyncSqueakRequest(),
handler.handle_sync_squeak,
)
@app.route("/downloadsqueak", methods=["POST"])
@login_required
def downloadsqueak():
return handle_request(
squeak_admin_pb2.DownloadSqueakRequest(),
handler.handle_download_squeak,
)
@app.route("/downloadoffers", methods=["POST"])
@login_required
def downloadoffers():
return handle_request(
squeak_admin_pb2.DownloadOffersRequest(),
handler.handle_download_offers,
)
@app.route("/downloadreplies", methods=["POST"])
@login_required
def downloadreplies():
return handle_request(
squeak_admin_pb2.DownloadRepliesRequest(),
handler.handle_download_replies,
)
@app.route("/downloadaddresssqueaks", methods=["POST"])
@login_required
def downloadaddresssqueaks():
return handle_request(
squeak_admin_pb2.DownloadAddressSqueaksRequest(),
handler.handle_download_address_squeaks,
)
@app.route("/getsqueakdetails", methods=["POST"])
@login_required
def getsqueakdetails():
return handle_request(
squeak_admin_pb2.GetSqueakDetailsRequest(),
handler.handle_get_squeak_details,
)
@app.route("/getsentpayments", methods=["POST"])
@login_required
def getsentpayments():
return handle_request(
squeak_admin_pb2.GetSentPaymentsRequest(),
handler.handle_get_sent_payments,
)
@app.route("/getsentoffers", methods=["POST"])
@login_required
def getsentoffers():
return handle_request(
squeak_admin_pb2.GetSentOffersRequest(),
handler.handle_get_sent_offers,
)
@app.route("/getreceivedpayments", methods=["POST"])
@login_required
def getreceivedpayments():
return handle_request(
squeak_admin_pb2.GetReceivedPaymentsRequest(),
handler.handle_get_received_payments,
)
@app.route("/getnetwork", methods=["POST"])
@login_required
def getnetwork():
return handle_request(
squeak_admin_pb2.GetNetworkRequest(),
handler.handle_get_network,
)
@app.route("/getsqueakprofileprivatekey", methods=["POST"])
@login_required
def getsqueakprofileprivatekey():
return handle_request(
squeak_admin_pb2.GetSqueakProfilePrivateKeyRequest(),
handler.handle_get_squeak_profile_private_key,
)
@app.route("/getpaymentsummary", methods=["POST"])
@login_required
def getpaymentsummary():
return handle_request(
squeak_admin_pb2.GetPaymentSummaryRequest(),
handler.handle_get_payment_summary,
)
@app.route("/reprocessreceivedpayments", methods=["POST"])
@login_required
def reprocessreceivedpayments():
return handle_request(
squeak_admin_pb2.ReprocessReceivedPaymentsRequest(),
handler.handle_reprocess_received_payments,
)
@app.route("/likesqueak", methods=["POST"])
@login_required
def likesqueak():
return handle_request(
squeak_admin_pb2.LikeSqueakRequest(),
handler.handle_like_squeak,
)
@app.route("/unlikesqueak", methods=["POST"])
@login_required
def unlikesqueak():
return handle_request(
squeak_admin_pb2.UnlikeSqueakRequest(),
handler.handle_unlike_squeak,
)
@app.route("/getlikedsqueakdisplays", methods=["POST"])
@login_required
def getlikedsqueakdisplays():
return handle_request(
squeak_admin_pb2.GetLikedSqueakDisplaysRequest(),
handler.handle_get_liked_squeak_display_entries,
)
@app.route("/getconnectedpeers", methods=["POST"])
@login_required
def getconnectedpeers():
return handle_request(
squeak_admin_pb2.GetConnectedPeersRequest(),
handler.handle_get_connected_peers,
)
@app.route("/getconnectedpeer", methods=["POST"])
@login_required
def getconnectedpeer():
return handle_request(
squeak_admin_pb2.GetConnectedPeerRequest(),
handler.handle_get_connected_peer,
)
@app.route("/connectpeer", methods=["POST"])
@login_required
def connectpeer():
return handle_request(
squeak_admin_pb2.ConnectPeerRequest(),
handler.handle_connect_peer,
)
@app.route("/disconnectpeer", methods=["POST"])
@login_required
def disconnectpeer():
return handle_request(
squeak_admin_pb2.DisconnectPeerRequest(),
handler.handle_disconnect_peer,
)
return app

View file

@ -1,17 +1,17 @@
{
"files": {
"main.js": "/static/js/main.b185b1a7.chunk.js",
"main.js.map": "/static/js/main.b185b1a7.chunk.js.map",
"main.js": "/static/js/main.c0d29968.chunk.js",
"main.js.map": "/static/js/main.c0d29968.chunk.js.map",
"runtime-main.js": "/static/js/runtime-main.9f0ba400.js",
"runtime-main.js.map": "/static/js/runtime-main.9f0ba400.js.map",
"static/css/2.ea4ba2f0.chunk.css": "/static/css/2.ea4ba2f0.chunk.css",
"static/js/2.73e108c6.chunk.js": "/static/js/2.73e108c6.chunk.js",
"static/js/2.73e108c6.chunk.js.map": "/static/js/2.73e108c6.chunk.js.map",
"static/js/2.e1ce3d4b.chunk.js": "/static/js/2.e1ce3d4b.chunk.js",
"static/js/2.e1ce3d4b.chunk.js.map": "/static/js/2.e1ce3d4b.chunk.js.map",
"index.html": "/index.html",
"precache-manifest.f5f2492faa6e868a5f1b2d46bb8144db.js": "/precache-manifest.f5f2492faa6e868a5f1b2d46bb8144db.js",
"precache-manifest.7eef597035e3601a05613393510db816.js": "/precache-manifest.7eef597035e3601a05613393510db816.js",
"service-worker.js": "/service-worker.js",
"static/css/2.ea4ba2f0.chunk.css.map": "/static/css/2.ea4ba2f0.chunk.css.map",
"static/js/2.73e108c6.chunk.js.LICENSE.txt": "/static/js/2.73e108c6.chunk.js.LICENSE.txt",
"static/js/2.e1ce3d4b.chunk.js.LICENSE.txt": "/static/js/2.e1ce3d4b.chunk.js.LICENSE.txt",
"static/media/font-awesome.min.css": "/static/media/fontawesome-webfont.fee66e71.woff",
"static/media/google.svg": "/static/media/google.695a3160.svg",
"static/media/logo.svg": "/static/media/logo.a0185b04.svg"
@ -19,7 +19,7 @@
"entrypoints": [
"static/js/runtime-main.9f0ba400.js",
"static/css/2.ea4ba2f0.chunk.css",
"static/js/2.73e108c6.chunk.js",
"static/js/main.b185b1a7.chunk.js"
"static/js/2.e1ce3d4b.chunk.js",
"static/js/main.c0d29968.chunk.js"
]
}

View file

@ -1 +1 @@
<!doctype html><html lang="en"><head><meta charset="utf-8"/><link rel="shortcut icon" href="/favicon.ico"/><meta name="viewport" content="width=device-width,initial-scale=1,shrink-to-fit=no"/><meta name="theme-color" content="#000000"/><link rel="manifest" href="/manifest.json"/><title>Squeak Node</title><meta name="description" content="Squeak Node is a frontend for accessing a squeak node"><meta name="keywords" content="squeak, bitcoin, lightning"><meta name="author" content="Flatlogic LLC."><link href="/static/css/2.ea4ba2f0.chunk.css" rel="stylesheet"></head><body style="font-family:Roboto,sans-serif"><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div><script>!function(e){function r(r){for(var n,f,l=r[0],a=r[1],i=r[2],c=0,s=[];c<l.length;c++)f=l[c],Object.prototype.hasOwnProperty.call(o,f)&&o[f]&&s.push(o[f][0]),o[f]=0;for(n in a)Object.prototype.hasOwnProperty.call(a,n)&&(e[n]=a[n]);for(p&&p(r);s.length;)s.shift()();return u.push.apply(u,i||[]),t()}function t(){for(var e,r=0;r<u.length;r++){for(var t=u[r],n=!0,l=1;l<t.length;l++){var a=t[l];0!==o[a]&&(n=!1)}n&&(u.splice(r--,1),e=f(f.s=t[0]))}return e}var n={},o={1:0},u=[];function f(r){if(n[r])return n[r].exports;var t=n[r]={i:r,l:!1,exports:{}};return e[r].call(t.exports,t,t.exports,f),t.l=!0,t.exports}f.m=e,f.c=n,f.d=function(e,r,t){f.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:t})},f.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},f.t=function(e,r){if(1&r&&(e=f(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var t=Object.create(null);if(f.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var n in e)f.d(t,n,function(r){return e[r]}.bind(null,n));return t},f.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return f.d(r,"a",r),r},f.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},f.p="/";var l=this["webpackJsonpsqueak-node-frontend"]=this["webpackJsonpsqueak-node-frontend"]||[],a=l.push.bind(l);l.push=r,l=l.slice();for(var i=0;i<l.length;i++)r(l[i]);var p=a;t()}([])</script><script src="/static/js/2.73e108c6.chunk.js"></script><script src="/static/js/main.b185b1a7.chunk.js"></script></body></html>
<!doctype html><html lang="en"><head><meta charset="utf-8"/><link rel="shortcut icon" href="/favicon.ico"/><meta name="viewport" content="width=device-width,initial-scale=1,shrink-to-fit=no"/><meta name="theme-color" content="#000000"/><link rel="manifest" href="/manifest.json"/><title>Squeak Node</title><meta name="description" content="Squeak Node is a frontend for accessing a squeak node"><meta name="keywords" content="squeak, bitcoin, lightning"><meta name="author" content="Flatlogic LLC."><link href="/static/css/2.ea4ba2f0.chunk.css" rel="stylesheet"></head><body style="font-family:Roboto,sans-serif"><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div><script>!function(e){function r(r){for(var n,f,l=r[0],a=r[1],i=r[2],c=0,s=[];c<l.length;c++)f=l[c],Object.prototype.hasOwnProperty.call(o,f)&&o[f]&&s.push(o[f][0]),o[f]=0;for(n in a)Object.prototype.hasOwnProperty.call(a,n)&&(e[n]=a[n]);for(p&&p(r);s.length;)s.shift()();return u.push.apply(u,i||[]),t()}function t(){for(var e,r=0;r<u.length;r++){for(var t=u[r],n=!0,l=1;l<t.length;l++){var a=t[l];0!==o[a]&&(n=!1)}n&&(u.splice(r--,1),e=f(f.s=t[0]))}return e}var n={},o={1:0},u=[];function f(r){if(n[r])return n[r].exports;var t=n[r]={i:r,l:!1,exports:{}};return e[r].call(t.exports,t,t.exports,f),t.l=!0,t.exports}f.m=e,f.c=n,f.d=function(e,r,t){f.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:t})},f.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},f.t=function(e,r){if(1&r&&(e=f(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var t=Object.create(null);if(f.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var n in e)f.d(t,n,function(r){return e[r]}.bind(null,n));return t},f.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return f.d(r,"a",r),r},f.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},f.p="/";var l=this["webpackJsonpsqueak-node-frontend"]=this["webpackJsonpsqueak-node-frontend"]||[],a=l.push.bind(l);l.push=r,l=l.slice();for(var i=0;i<l.length;i++)r(l[i]);var p=a;t()}([])</script><script src="/static/js/2.e1ce3d4b.chunk.js"></script><script src="/static/js/main.c0d29968.chunk.js"></script></body></html>

View file

@ -1,23 +1,23 @@
self.__precacheManifest = (self.__precacheManifest || []).concat([
{
"revision": "864a5aa83a22b34be5ea2461efb38eb2",
"revision": "6bd938746dda27d7bb870bbf8be036b3",
"url": "/index.html"
},
{
"revision": "734b8e8587fed7afde5b",
"revision": "785caac4a07b948d3be4",
"url": "/static/css/2.ea4ba2f0.chunk.css"
},
{
"revision": "734b8e8587fed7afde5b",
"url": "/static/js/2.73e108c6.chunk.js"
"revision": "785caac4a07b948d3be4",
"url": "/static/js/2.e1ce3d4b.chunk.js"
},
{
"revision": "279b8724b89bf7d504758b3fa917239f",
"url": "/static/js/2.73e108c6.chunk.js.LICENSE.txt"
"url": "/static/js/2.e1ce3d4b.chunk.js.LICENSE.txt"
},
{
"revision": "c92d37fe13753e88ca70",
"url": "/static/js/main.b185b1a7.chunk.js"
"revision": "b69449e99921f8747b0a",
"url": "/static/js/main.c0d29968.chunk.js"
},
{
"revision": "cc9816de5a8639d377ea",

View file

@ -14,7 +14,7 @@
importScripts("https://storage.googleapis.com/workbox-cdn/releases/4.3.1/workbox-sw.js");
importScripts(
"/precache-manifest.f5f2492faa6e868a5f1b2d46bb8144db.js"
"/precache-manifest.7eef597035e3601a05613393510db816.js"
);
self.addEventListener('message', (event) => {

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long