From c4bdfd991ce46fb2da5362bc7bac7cc05cec0c0a Mon Sep 17 00:00:00 2001 From: MTG2000 Date: Thu, 9 Jun 2022 14:45:36 +0300 Subject: [PATCH] change: re-fetch lnurl after delay --- api/functions/is-logged-in/is-logged-in.js | 4 -- api/functions/login/login.js | 4 +- api/utils/consts.js | 10 ---- .../Auth/pages/LoginPage/LoginPage.tsx | 55 ++++++++++++------- 4 files changed, 37 insertions(+), 36 deletions(-) diff --git a/api/functions/is-logged-in/is-logged-in.js b/api/functions/is-logged-in/is-logged-in.js index cf18524..9df8118 100644 --- a/api/functions/is-logged-in/is-logged-in.js +++ b/api/functions/is-logged-in/is-logged-in.js @@ -9,10 +9,8 @@ const lnurlService = require('../../auth/services/lnurl.service'); const isLoggedInHandler = async (req, res) => { - // console.log(req.cookies); try { const login_session = req.cookies?.login_session; - // console.log(login_session); if (login_session) { const { payload } = await jose.jwtVerify(login_session, Buffer.from(JWT_SECRET), { @@ -38,8 +36,6 @@ const isLoggedInHandler = async (req, res) => { httpOnly: true, }) .json({ - hash, - token, logged_in: true }); } else { diff --git a/api/functions/login/login.js b/api/functions/login/login.js index e5ec730..7adff9b 100644 --- a/api/functions/login/login.js +++ b/api/functions/login/login.js @@ -2,8 +2,8 @@ const { prisma } = require('../../prisma'); const LnurlService = require('../../auth/services/lnurl.service') const serverless = require('serverless-http'); -const { getAuthTokenByHash, createHash, associateTokenToHash } = require('../../auth/services/lnurl.service'); -const { sessionsStore, createExpressApp } = require('../../modules'); +const { createHash, associateTokenToHash } = require('../../auth/services/lnurl.service'); +const { createExpressApp } = require('../../modules'); const express = require('express'); const jose = require('jose'); const { JWT_SECRET } = require('../../utils/consts'); diff --git a/api/utils/consts.js b/api/utils/consts.js index 6d23421..f82caa0 100644 --- a/api/utils/consts.js +++ b/api/utils/consts.js @@ -1,21 +1,11 @@ const BOLT_FUN_LIGHTNING_ADDRESS = 'johns@getalby.com'; // #TODO, replace it by bolt-fun lightning address if there exist one const JWT_SECRET = process.env.JWT_SECRET; const LNURL_AUTH_HOST = process.env.LNURL_AUTH_HOST -const SESSION_SECRET = process.env.SESSION_SECRET - -const CORS_HEADERS = { - 'Access-Control-Allow-Origin': 'http://localhost:3000', - 'Access-Control-Allow-Headers': 'Content-Type', - 'Access-Control-Allow-Methods': 'GET, POST, PUT, DELETE', - 'Access-Control-Allow-Credentials': true -}; const CONSTS = { JWT_SECRET, BOLT_FUN_LIGHTNING_ADDRESS, LNURL_AUTH_HOST, - CORS_HEADERS, - SESSION_SECRET } module.exports = CONSTS; \ No newline at end of file diff --git a/src/features/Auth/pages/LoginPage/LoginPage.tsx b/src/features/Auth/pages/LoginPage/LoginPage.tsx index 773895f..d107070 100644 --- a/src/features/Auth/pages/LoginPage/LoginPage.tsx +++ b/src/features/Auth/pages/LoginPage/LoginPage.tsx @@ -10,7 +10,7 @@ import { IoQrCode } from "react-icons/io5"; -const getLnurlAuth = async () => { +const fetchLnurlAuth = async () => { const res = await fetch(CONSTS.apiEndpoint + '/login', { credentials: 'include' }) @@ -18,15 +18,46 @@ const getLnurlAuth = async () => { return data; } +const useLnurlQuery = () => { + const [loading, setLoading] = useState(true) + const [error, setError] = useState(null); + const [data, setData] = useState("") + + + useEffect(() => { + + let timeOut: NodeJS.Timeout; + const doFetch = async () => { + const res = await fetchLnurlAuth(); + if (!res?.encoded) + setError(true) + else { + setLoading(false); + setData(res.encoded); + timeOut = setTimeout(doFetch, 1000 * 60 * 2) + } + } + doFetch() + + return () => clearTimeout(timeOut) + }, []) + + return { + loadingLnurl: loading, + error, + lnurlAuth: data + } +} + export default function LoginPage() { - const [loadingLnurl, setLoadingLnurl] = useState(true) const [showQr, setShowQr] = useState(false) - const [lnurlAuth, setLnurlAuth] = useState(""); const [isLoggedIn, setIsLoggedIn] = useState(false); - const [error, setError] = useState(null) const navigate = useNavigate() + const { loadingLnurl, lnurlAuth, error } = useLnurlQuery() + console.log(lnurlAuth); + const meQuery = useMeQuery({ onCompleted: (data) => { @@ -41,23 +72,7 @@ export default function LoginPage() { } }) - - - useEffect(() => { - getLnurlAuth() - .then(data => { - setLoadingLnurl(false); - setLnurlAuth(data.encoded); - if (!data?.encoded) - setError(true); - }) - .catch((error) => { - setError(error) - }) - }, []) - const startPolling = () => { - // meQuery.startPolling(3000) const interval = setInterval(() => { fetch(CONSTS.apiEndpoint + '/is-logged-in', { credentials: 'include'