From a7e976dd2a406ac7fbe8d4e1d3cf7b934176e706 Mon Sep 17 00:00:00 2001 From: Joshua Onwuzu Date: Tue, 5 Aug 2025 07:49:03 +0100 Subject: [PATCH 1/7] add support for gnosis pay --- packages/core/package.json | 4 +- packages/formula-parser/package.json | 4 +- packages/react/package.json | 4 +- .../SheetOverlay/FormulaHint/index.tsx | 148 ++++++++++++++++++ .../SheetOverlay/FormulaHint/utils/utils.ts | 19 +++ .../SheetOverlay/FormulaSearch/index.tsx | 140 +++++++++++------ 6 files changed, 268 insertions(+), 51 deletions(-) create mode 100644 packages/react/src/components/SheetOverlay/FormulaHint/utils/utils.ts diff --git a/packages/core/package.json b/packages/core/package.json index aa57b111..abcc6d93 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@fileverse-dev/fortune-core", - "version": "1.0.88", + "version": "1.0.88-patch-5", "main": "lib/index.js", "module": "es/index.js", "typings": "lib/index.d.ts", @@ -15,7 +15,7 @@ "dev": "father-build --watch" }, "dependencies": { - "@fileverse-dev/formula-parser": "0.2.50", + "@fileverse-dev/formula-parser": "0.2.50-patch-4", "dayjs": "^1.11.0", "immer": "^9.0.12", "lodash": "^4.17.21", diff --git a/packages/formula-parser/package.json b/packages/formula-parser/package.json index ce87ad3d..7d98b60a 100644 --- a/packages/formula-parser/package.json +++ b/packages/formula-parser/package.json @@ -1,6 +1,6 @@ { "name": "@fileverse-dev/formula-parser", - "version": "0.2.50", + "version": "0.2.50-patch-4", "description": "Formula parser", "main": "lib/index.js", "module": "es/index.js", @@ -48,7 +48,7 @@ "webpack-cli": "^4.2.0" }, "dependencies": { - "@fileverse-dev/formulajs": "4.4.11-mod-89", + "@fileverse-dev/formulajs": "4.4.11-mod-89-patch-3", "tiny-emitter": "^2.1.0" }, "jest": { diff --git a/packages/react/package.json b/packages/react/package.json index 1ce476ea..eb1b3866 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -1,6 +1,6 @@ { "name": "@fileverse-dev/fortune-react", - "version": "1.0.88", + "version": "1.0.88-patch-5", "main": "lib/index.js", "types": "lib/index.d.ts", "module": "es/index.js", @@ -16,7 +16,7 @@ "tsc": "tsc" }, "dependencies": { - "@fileverse-dev/fortune-core": "1.0.88", + "@fileverse-dev/fortune-core": "1.0.88-patch-5", "@fileverse/ui": "^4.1.7-patch-21", "@tippyjs/react": "^4.2.6", "@types/regenerator-runtime": "^0.13.6", diff --git a/packages/react/src/components/SheetOverlay/FormulaHint/index.tsx b/packages/react/src/components/SheetOverlay/FormulaHint/index.tsx index 2e9c3aa7..2452406b 100644 --- a/packages/react/src/components/SheetOverlay/FormulaHint/index.tsx +++ b/packages/react/src/components/SheetOverlay/FormulaHint/index.tsx @@ -3,6 +3,7 @@ import { Button, TextField, LucideIcon } from "@fileverse/ui"; import React, { useContext, useEffect, useRef, useState } from "react"; import WorkbookContext from "../../../context"; import "./index.css"; +import { formatTimeLeft, isExpired, timeFromNowMessage } from "./utils/utils"; const FormulaHint: React.FC> = (props) => { const { context } = useContext(WorkbookContext); @@ -16,13 +17,50 @@ const FormulaHint: React.FC> = (props) => { const [isKeyAdded, setApiKeyAdded] = useState( !!localStorage.getItem(fn?.API_KEY) ); + const [hasGnosisPayToken, setHasGnosisPayToken] = useState(false); const [showFunctionBody, setShouldShowFunctionBody] = useState(true); + const [timeLeft, setTimeLeft] = useState("0 minute"); + const [accessTokenCreatedAt, setAccessTokenCreatedAt] = useState(0); + const isWrongGnosisPayConnector = + localStorage.getItem("LOGIN_METHOD") !== "walletAddress"; + + const handleGnosisPayToken = (onDone?: () => void) => { + if (localStorage.getItem("GNOSIS_PAY_ACCESS")) { + const access = JSON.parse( + localStorage.getItem("GNOSIS_PAY_ACCESS") || "" + ); + if (!access?.token || isExpired(access?.createdAt)) { + if (hasGnosisPayToken) { + setHasGnosisPayToken(false); + } + if (accessTokenCreatedAt) { + setAccessTokenCreatedAt(0); + } + localStorage.removeItem("GNOSIS_PAY_ACCESS"); + return; + } + setHasGnosisPayToken(!!access.token); + setAccessTokenCreatedAt(access.createdAt); + onDone?.(); + } else { + const urlParams = new URLSearchParams(window.location.search); + const isRejected = urlParams.has("reject"); + if (isRejected) { + const url = new URL(window.location.href); + url.searchParams.delete("reject"); + window.history.replaceState({}, "", url.toString()); + onDone?.(); + } + } + }; useEffect(() => { if (fn) { setApiKeyAdded(!!localStorage.getItem(fn?.API_KEY)); setAPI_KEY(localStorage.getItem(fn?.API_KEY) || ""); setShowAPInput(!localStorage.getItem(fn?.API_KEY)); + + handleGnosisPayToken(); } }, [fn]); const apiKeyPlaceholder: Record = { @@ -89,6 +127,50 @@ const FormulaHint: React.FC> = (props) => { if (el && handleWheel) el.removeEventListener("wheel", handleWheel); }; }, []); + + const gnosisTokenTokenIntervalRef = useRef(null); + const [isLoading, setIsLoading] = useState(false); + + useEffect(() => { + return () => { + if (gnosisTokenTokenIntervalRef.current) + clearInterval(gnosisTokenTokenIntervalRef.current); + }; + }, [gnosisTokenTokenIntervalRef]); + + useEffect(() => { + if (accessTokenCreatedAt <= 0) return () => {}; + + const interval = setInterval(() => { + const EXPIRY_DURATION_MS = 60 * 60 * 1000; + const expiryTimestamp = accessTokenCreatedAt + EXPIRY_DURATION_MS; + const newTimeLeft = expiryTimestamp - Date.now(); + setTimeLeft(formatTimeLeft(newTimeLeft)); + if (newTimeLeft <= 0 || !document.getElementById("gnosis-pay-area")) { + clearInterval(interval); + } + }, 1000); + + return () => { + clearInterval(interval); + }; + }, [accessTokenCreatedAt, fn]); + + const grantAccess = () => { + const button = document.getElementById("grant-gnosispay-access"); + if (!button) return; + button.click(); + setIsLoading(true); + const interval = setInterval(() => { + handleGnosisPayToken(() => { + clearInterval(interval); + setIsLoading(false); + }); + }, 5000); + + gnosisTokenTokenIntervalRef.current = interval; + }; + if (!fn) return null; return ( @@ -291,6 +373,72 @@ const FormulaHint: React.FC> = (props) => { )} + {fn.n === "GNOSISPAY" && ( +
+
{}} + > +

+ {hasGnosisPayToken ? "Access granted" : "Access required"} +

+
+
+

+ {!hasGnosisPayToken + ? "To access your Gnosis Pay account, please grant permission. Your dSheet account should be created via the same wallet ss your Gnosis Pay. " + : ` You have ${timeFromNowMessage( + timeLeft + )} to use your Gnosis Pay account. Then you need to grant access again.`} +

+ +
+
+ )} +
expiryTs; +} +export function timeFromNowMessage(expiryStr: string): string { + if (!expiryStr) { + return "0 minute"; + } + const [mm] = expiryStr.split(":").map(Number); + + return `${mm} minute${mm !== 1 ? "s" : ""}`; +} diff --git a/packages/react/src/components/SheetOverlay/FormulaSearch/index.tsx b/packages/react/src/components/SheetOverlay/FormulaSearch/index.tsx index fea55aac..c8478e55 100644 --- a/packages/react/src/components/SheetOverlay/FormulaSearch/index.tsx +++ b/packages/react/src/components/SheetOverlay/FormulaSearch/index.tsx @@ -1,5 +1,11 @@ import _ from "lodash"; -import React, { useContext, useEffect, useRef, useState } from "react"; +import React, { + Fragment, + useContext, + useEffect, + useRef, + useState, +} from "react"; import { LucideIcon, Tooltip } from "@fileverse/ui"; import { UNFilter } from "./constant"; import WorkbookContext from "../../../context"; @@ -12,6 +18,8 @@ const FormulaSearch: React.FC> = ( context, settings: { isAuthorized }, } = useContext(WorkbookContext); + const isWrongGnosisPayConnector = + localStorage.getItem("LOGIN_METHOD") !== "walletAddress"; const authedFunction = [ "COINGECKO", "ETHERSCAN", @@ -231,9 +239,23 @@ const FormulaSearch: React.FC> = (
-
- {v.n} +
+ {v.LOGO && + isWrongGnosisPayConnector && + v.n === "GNOSISPAY" && ( +
+ Service Logo +
+ )} +
+ {v.n} +
+
> = ( gap: "6px", }} > - {v.LOGO && ( - Service Logo - )} - {v.SECONDARY_LOGO && ( - Service Logo - )} - {v.API_KEY && ( + {isWrongGnosisPayConnector && v.n === "GNOSISPAY" ? ( +

+ Your dSheet account was created via + email/social. Unfortunately you are not able to + use Gnosis Pay onchain function. +

+

+ To use Gnosis Pay onchain function you need to + create a new dSheets account via the same wallet + as your Gnosis Pay account. +

+
} > -
- -
+ + ) : ( + <> + {v.LOGO && ( + Service Logo + )} + {v.SECONDARY_LOGO && ( + Service Logo + )} + {v.API_KEY && ( + +
+ +
+
+ )} + )}
From 2d260a1e428cfbcff8bd521df11a1c18011b2522 Mon Sep 17 00:00:00 2001 From: Joshua Onwuzu Date: Tue, 5 Aug 2025 12:43:41 +0100 Subject: [PATCH 2/7] lock --- yarn.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/yarn.lock b/yarn.lock index f2397dfd..8e293bff 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2402,10 +2402,10 @@ resolved "https://registry.npmjs.org/@fal-works/esbuild-plugin-global-externals/-/esbuild-plugin-global-externals-2.1.2.tgz" integrity sha512-cEee/Z+I12mZcFJshKcCqC8tuX5hG3s+d+9nZ3LabqKF1vKdF41B92pJVCBggjAGORAeOzyyDDKrZwIkLffeOQ== -"@fileverse-dev/formulajs@4.4.11-mod-89": - version "4.4.11-mod-89" - resolved "https://registry.yarnpkg.com/@fileverse-dev/formulajs/-/formulajs-4.4.11-mod-89.tgz#9f231e3d44399f95eda0bf6432c70fbd11a40322" - integrity sha512-ZoXtKwAccVbtunjiqNwFPUd6sGhgyYP/BY4z6YBjZ3R1JpganjK47COOK9CoKe7naZVlACPj0+Py50GJtxfO+Q== +"@fileverse-dev/formulajs@4.4.11-mod-89-patch-3": + version "4.4.11-mod-89-patch-3" + resolved "https://registry.yarnpkg.com/@fileverse-dev/formulajs/-/formulajs-4.4.11-mod-89-patch-3.tgz#d00c36acf4fb87e461a58de69d669b7eff621ee1" + integrity sha512-i0V6LVsH1kaxZ7mm50UhJA9jNzi0r2EkVHEVx9HdZg60VkT5apg7J0BAsiQQEgiYGfBUAbwzSEBLHTaFBHwQlg== dependencies: bessel "^1.0.2" esbuild "^0.25.4" From cb45476abc88ec65b092c9f08381f26facca644a Mon Sep 17 00:00:00 2001 From: Joshua Onwuzu Date: Tue, 5 Aug 2025 12:57:57 +0100 Subject: [PATCH 3/7] refactor-code --- .../SheetOverlay/FormulaHint/constants.ts | 1 + .../SheetOverlay/FormulaHint/index.tsx | 89 +++--------------- .../FormulaHint/use-gnosis-pay.tsx | 93 +++++++++++++++++++ 3 files changed, 105 insertions(+), 78 deletions(-) create mode 100644 packages/react/src/components/SheetOverlay/FormulaHint/constants.ts create mode 100644 packages/react/src/components/SheetOverlay/FormulaHint/use-gnosis-pay.tsx diff --git a/packages/react/src/components/SheetOverlay/FormulaHint/constants.ts b/packages/react/src/components/SheetOverlay/FormulaHint/constants.ts new file mode 100644 index 00000000..cdbfef3b --- /dev/null +++ b/packages/react/src/components/SheetOverlay/FormulaHint/constants.ts @@ -0,0 +1 @@ +export const GNOSIS_PAY_ACCESS = "GNOSIS_PAY_ACCESS"; diff --git a/packages/react/src/components/SheetOverlay/FormulaHint/index.tsx b/packages/react/src/components/SheetOverlay/FormulaHint/index.tsx index 2452406b..a37d8e8e 100644 --- a/packages/react/src/components/SheetOverlay/FormulaHint/index.tsx +++ b/packages/react/src/components/SheetOverlay/FormulaHint/index.tsx @@ -3,7 +3,8 @@ import { Button, TextField, LucideIcon } from "@fileverse/ui"; import React, { useContext, useEffect, useRef, useState } from "react"; import WorkbookContext from "../../../context"; import "./index.css"; -import { formatTimeLeft, isExpired, timeFromNowMessage } from "./utils/utils"; +import { timeFromNowMessage } from "./utils/utils"; +import useGnosisPay from "./use-gnosis-pay"; const FormulaHint: React.FC> = (props) => { const { context } = useContext(WorkbookContext); @@ -17,42 +18,17 @@ const FormulaHint: React.FC> = (props) => { const [isKeyAdded, setApiKeyAdded] = useState( !!localStorage.getItem(fn?.API_KEY) ); - const [hasGnosisPayToken, setHasGnosisPayToken] = useState(false); const [showFunctionBody, setShouldShowFunctionBody] = useState(true); - const [timeLeft, setTimeLeft] = useState("0 minute"); - const [accessTokenCreatedAt, setAccessTokenCreatedAt] = useState(0); - const isWrongGnosisPayConnector = - localStorage.getItem("LOGIN_METHOD") !== "walletAddress"; - const handleGnosisPayToken = (onDone?: () => void) => { - if (localStorage.getItem("GNOSIS_PAY_ACCESS")) { - const access = JSON.parse( - localStorage.getItem("GNOSIS_PAY_ACCESS") || "" - ); - if (!access?.token || isExpired(access?.createdAt)) { - if (hasGnosisPayToken) { - setHasGnosisPayToken(false); - } - if (accessTokenCreatedAt) { - setAccessTokenCreatedAt(0); - } - localStorage.removeItem("GNOSIS_PAY_ACCESS"); - return; - } - setHasGnosisPayToken(!!access.token); - setAccessTokenCreatedAt(access.createdAt); - onDone?.(); - } else { - const urlParams = new URLSearchParams(window.location.search); - const isRejected = urlParams.has("reject"); - if (isRejected) { - const url = new URL(window.location.href); - url.searchParams.delete("reject"); - window.history.replaceState({}, "", url.toString()); - onDone?.(); - } - } - }; + const { + grantAccess, + handleGnosisPayToken, + hasGnosisPayToken, + isWrongGnosisPayConnector, + isLoading, + accessTokenCreatedAt, + timeLeft, + } = useGnosisPay(fn); useEffect(() => { if (fn) { @@ -128,49 +104,6 @@ const FormulaHint: React.FC> = (props) => { }; }, []); - const gnosisTokenTokenIntervalRef = useRef(null); - const [isLoading, setIsLoading] = useState(false); - - useEffect(() => { - return () => { - if (gnosisTokenTokenIntervalRef.current) - clearInterval(gnosisTokenTokenIntervalRef.current); - }; - }, [gnosisTokenTokenIntervalRef]); - - useEffect(() => { - if (accessTokenCreatedAt <= 0) return () => {}; - - const interval = setInterval(() => { - const EXPIRY_DURATION_MS = 60 * 60 * 1000; - const expiryTimestamp = accessTokenCreatedAt + EXPIRY_DURATION_MS; - const newTimeLeft = expiryTimestamp - Date.now(); - setTimeLeft(formatTimeLeft(newTimeLeft)); - if (newTimeLeft <= 0 || !document.getElementById("gnosis-pay-area")) { - clearInterval(interval); - } - }, 1000); - - return () => { - clearInterval(interval); - }; - }, [accessTokenCreatedAt, fn]); - - const grantAccess = () => { - const button = document.getElementById("grant-gnosispay-access"); - if (!button) return; - button.click(); - setIsLoading(true); - const interval = setInterval(() => { - handleGnosisPayToken(() => { - clearInterval(interval); - setIsLoading(false); - }); - }, 5000); - - gnosisTokenTokenIntervalRef.current = interval; - }; - if (!fn) return null; return ( diff --git a/packages/react/src/components/SheetOverlay/FormulaHint/use-gnosis-pay.tsx b/packages/react/src/components/SheetOverlay/FormulaHint/use-gnosis-pay.tsx new file mode 100644 index 00000000..13fd3d05 --- /dev/null +++ b/packages/react/src/components/SheetOverlay/FormulaHint/use-gnosis-pay.tsx @@ -0,0 +1,93 @@ +import { useEffect, useRef, useState } from "react"; +import { GNOSIS_PAY_ACCESS } from "./constants"; +import { formatTimeLeft, isExpired } from "./utils/utils"; + +const useGnosisPay = (fn: any) => { + const gnosisTokenTokenIntervalRef = useRef(null); + const [isLoading, setIsLoading] = useState(false); + const [hasGnosisPayToken, setHasGnosisPayToken] = useState(false); + const [timeLeft, setTimeLeft] = useState("00:00"); + const [accessTokenCreatedAt, setAccessTokenCreatedAt] = useState(0); + const isWrongGnosisPayConnector = + localStorage.getItem("LOGIN_METHOD") !== "walletAddress"; + + const handleGnosisPayToken = (onDone?: () => void) => { + if (localStorage.getItem(GNOSIS_PAY_ACCESS)) { + const access = JSON.parse(localStorage.getItem(GNOSIS_PAY_ACCESS) || ""); + if (!access?.token || isExpired(access?.createdAt)) { + if (hasGnosisPayToken) { + setHasGnosisPayToken(false); + } + if (accessTokenCreatedAt) { + setAccessTokenCreatedAt(0); + } + localStorage.removeItem(GNOSIS_PAY_ACCESS); + return; + } + setHasGnosisPayToken(!!access.token); + setAccessTokenCreatedAt(access.createdAt); + onDone?.(); + } else { + const urlParams = new URLSearchParams(window.location.search); + const isRejected = urlParams.has("reject"); + if (isRejected) { + const url = new URL(window.location.href); + url.searchParams.delete("reject"); + window.history.replaceState({}, "", url.toString()); + onDone?.(); + } + } + }; + + useEffect(() => { + return () => { + if (gnosisTokenTokenIntervalRef.current) + clearInterval(gnosisTokenTokenIntervalRef.current); + }; + }, [gnosisTokenTokenIntervalRef]); + + useEffect(() => { + if (accessTokenCreatedAt <= 0) return () => {}; + + const interval = setInterval(() => { + const EXPIRY_DURATION_MS = 60 * 60 * 1000; + const expiryTimestamp = accessTokenCreatedAt + EXPIRY_DURATION_MS; + const newTimeLeft = expiryTimestamp - Date.now(); + setTimeLeft(formatTimeLeft(newTimeLeft)); + if (newTimeLeft <= 0 || !document.getElementById("gnosis-pay-area")) { + clearInterval(interval); + } + }, 1000); + + return () => { + clearInterval(interval); + }; + }, [accessTokenCreatedAt, fn]); + + const grantAccess = () => { + const button = document.getElementById("grant-gnosispay-access"); + if (!button) return; + button.click(); + setIsLoading(true); + const interval = setInterval(() => { + handleGnosisPayToken(() => { + clearInterval(interval); + setIsLoading(false); + }); + }, 5000); + + gnosisTokenTokenIntervalRef.current = interval; + }; + + return { + grantAccess, + handleGnosisPayToken, + hasGnosisPayToken, + isWrongGnosisPayConnector, + isLoading, + accessTokenCreatedAt, + timeLeft, + }; +}; + +export default useGnosisPay; From c332edfe4466b0d1fd563662e7f375b3676655d2 Mon Sep 17 00:00:00 2001 From: Joshua Onwuzu Date: Tue, 5 Aug 2025 13:05:15 +0100 Subject: [PATCH 4/7] v5 --- packages/core/package.json | 4 ++-- packages/formula-parser/package.json | 4 ++-- packages/react/package.json | 4 ++-- yarn.lock | 8 ++++---- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/packages/core/package.json b/packages/core/package.json index abcc6d93..a5b49edb 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@fileverse-dev/fortune-core", - "version": "1.0.88-patch-5", + "version": "1.0.88-patch-6", "main": "lib/index.js", "module": "es/index.js", "typings": "lib/index.d.ts", @@ -15,7 +15,7 @@ "dev": "father-build --watch" }, "dependencies": { - "@fileverse-dev/formula-parser": "0.2.50-patch-4", + "@fileverse-dev/formula-parser": "0.2.50-patch-5", "dayjs": "^1.11.0", "immer": "^9.0.12", "lodash": "^4.17.21", diff --git a/packages/formula-parser/package.json b/packages/formula-parser/package.json index 7d98b60a..4c4df0ba 100644 --- a/packages/formula-parser/package.json +++ b/packages/formula-parser/package.json @@ -1,6 +1,6 @@ { "name": "@fileverse-dev/formula-parser", - "version": "0.2.50-patch-4", + "version": "0.2.50-patch-5", "description": "Formula parser", "main": "lib/index.js", "module": "es/index.js", @@ -48,7 +48,7 @@ "webpack-cli": "^4.2.0" }, "dependencies": { - "@fileverse-dev/formulajs": "4.4.11-mod-89-patch-3", + "@fileverse-dev/formulajs": "4.4.11-mod-90", "tiny-emitter": "^2.1.0" }, "jest": { diff --git a/packages/react/package.json b/packages/react/package.json index eb1b3866..bfd9e751 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -1,6 +1,6 @@ { "name": "@fileverse-dev/fortune-react", - "version": "1.0.88-patch-5", + "version": "1.0.88-patch-6", "main": "lib/index.js", "types": "lib/index.d.ts", "module": "es/index.js", @@ -16,7 +16,7 @@ "tsc": "tsc" }, "dependencies": { - "@fileverse-dev/fortune-core": "1.0.88-patch-5", + "@fileverse-dev/fortune-core": "1.0.88-patch-6", "@fileverse/ui": "^4.1.7-patch-21", "@tippyjs/react": "^4.2.6", "@types/regenerator-runtime": "^0.13.6", diff --git a/yarn.lock b/yarn.lock index 8e293bff..4f71382d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2402,10 +2402,10 @@ resolved "https://registry.npmjs.org/@fal-works/esbuild-plugin-global-externals/-/esbuild-plugin-global-externals-2.1.2.tgz" integrity sha512-cEee/Z+I12mZcFJshKcCqC8tuX5hG3s+d+9nZ3LabqKF1vKdF41B92pJVCBggjAGORAeOzyyDDKrZwIkLffeOQ== -"@fileverse-dev/formulajs@4.4.11-mod-89-patch-3": - version "4.4.11-mod-89-patch-3" - resolved "https://registry.yarnpkg.com/@fileverse-dev/formulajs/-/formulajs-4.4.11-mod-89-patch-3.tgz#d00c36acf4fb87e461a58de69d669b7eff621ee1" - integrity sha512-i0V6LVsH1kaxZ7mm50UhJA9jNzi0r2EkVHEVx9HdZg60VkT5apg7J0BAsiQQEgiYGfBUAbwzSEBLHTaFBHwQlg== +"@fileverse-dev/formulajs@4.4.11-mod-90": + version "4.4.11-mod-90" + resolved "https://registry.yarnpkg.com/@fileverse-dev/formulajs/-/formulajs-4.4.11-mod-90.tgz#55b457dedfc0f85b95a797f54d31f85945aea702" + integrity sha512-oR+p7boilZDNkFNLAdCfJXbCqE6v6BG5kBC1jsRLD3k7g5W48t9kW7fac2uCRXSo/HcJjwTC3vsiWtNIVxe70g== dependencies: bessel "^1.0.2" esbuild "^0.25.4" From b91a59ecfcafeea0157dcf60fbe4fa1562150df9 Mon Sep 17 00:00:00 2001 From: Joshua Onwuzu Date: Wed, 6 Aug 2025 04:15:23 +0100 Subject: [PATCH 5/7] updated gnosis pay ui --- packages/core/package.json | 2 +- packages/react/package.json | 4 ++-- .../react/src/components/SheetOverlay/FormulaHint/index.tsx | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/core/package.json b/packages/core/package.json index a5b49edb..ef86cd99 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@fileverse-dev/fortune-core", - "version": "1.0.88-patch-6", + "version": "1.0.88-patch-7", "main": "lib/index.js", "module": "es/index.js", "typings": "lib/index.d.ts", diff --git a/packages/react/package.json b/packages/react/package.json index bfd9e751..146ed46a 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -1,6 +1,6 @@ { "name": "@fileverse-dev/fortune-react", - "version": "1.0.88-patch-6", + "version": "1.0.88-patch-7", "main": "lib/index.js", "types": "lib/index.d.ts", "module": "es/index.js", @@ -16,7 +16,7 @@ "tsc": "tsc" }, "dependencies": { - "@fileverse-dev/fortune-core": "1.0.88-patch-6", + "@fileverse-dev/fortune-core": "1.0.88-patch-7", "@fileverse/ui": "^4.1.7-patch-21", "@tippyjs/react": "^4.2.6", "@types/regenerator-runtime": "^0.13.6", diff --git a/packages/react/src/components/SheetOverlay/FormulaHint/index.tsx b/packages/react/src/components/SheetOverlay/FormulaHint/index.tsx index a37d8e8e..6fecbe0c 100644 --- a/packages/react/src/components/SheetOverlay/FormulaHint/index.tsx +++ b/packages/react/src/components/SheetOverlay/FormulaHint/index.tsx @@ -314,7 +314,7 @@ const FormulaHint: React.FC> = (props) => { hasGnosisPayToken ? "#177E23" : "#fb923c" }`, backgroundColor: "white", - padding: "16px", + padding: "8px", margin: "4px 4px 0px 4px", borderRadius: "4px", }} @@ -339,7 +339,7 @@ const FormulaHint: React.FC> = (props) => {

From a20369ff1c011cfa97c5b054906a81311dc045bb Mon Sep 17 00:00:00 2001 From: Joshua Onwuzu Date: Wed, 6 Aug 2025 13:20:25 +0100 Subject: [PATCH 6/7] updated gnosis pay copy and UI --- packages/core/package.json | 4 +-- packages/formula-parser/package.json | 4 +-- packages/react/package.json | 4 +-- .../SheetOverlay/FormulaHint/index.tsx | 12 +++++---- .../FormulaHint/use-gnosis-pay.tsx | 26 +++++++++++++------ .../SheetOverlay/FormulaHint/utils/utils.ts | 18 +++++++++---- .../SheetOverlay/FormulaSearch/index.tsx | 17 ++++++++++-- .../src/components/SheetOverlay/InputBox.tsx | 11 +++++++- packages/react/src/components/index.ts | 1 + yarn.lock | 21 ++++++++++++--- 10 files changed, 87 insertions(+), 31 deletions(-) diff --git a/packages/core/package.json b/packages/core/package.json index ef86cd99..ddac4f04 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@fileverse-dev/fortune-core", - "version": "1.0.88-patch-7", + "version": "1.0.88-patch-8", "main": "lib/index.js", "module": "es/index.js", "typings": "lib/index.d.ts", @@ -15,7 +15,7 @@ "dev": "father-build --watch" }, "dependencies": { - "@fileverse-dev/formula-parser": "0.2.50-patch-5", + "@fileverse-dev/formula-parser": "0.2.50-patch-6", "dayjs": "^1.11.0", "immer": "^9.0.12", "lodash": "^4.17.21", diff --git a/packages/formula-parser/package.json b/packages/formula-parser/package.json index 4c4df0ba..f3c3028c 100644 --- a/packages/formula-parser/package.json +++ b/packages/formula-parser/package.json @@ -1,6 +1,6 @@ { "name": "@fileverse-dev/formula-parser", - "version": "0.2.50-patch-5", + "version": "0.2.50-patch-6", "description": "Formula parser", "main": "lib/index.js", "module": "es/index.js", @@ -48,7 +48,7 @@ "webpack-cli": "^4.2.0" }, "dependencies": { - "@fileverse-dev/formulajs": "4.4.11-mod-90", + "@fileverse-dev/formulajs": "4.4.11-mod-92", "tiny-emitter": "^2.1.0" }, "jest": { diff --git a/packages/react/package.json b/packages/react/package.json index 146ed46a..90ffe9ef 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -1,6 +1,6 @@ { "name": "@fileverse-dev/fortune-react", - "version": "1.0.88-patch-7", + "version": "1.0.88-patch-8", "main": "lib/index.js", "types": "lib/index.d.ts", "module": "es/index.js", @@ -16,7 +16,7 @@ "tsc": "tsc" }, "dependencies": { - "@fileverse-dev/fortune-core": "1.0.88-patch-7", + "@fileverse-dev/fortune-core": "1.0.88-patch-8", "@fileverse/ui": "^4.1.7-patch-21", "@tippyjs/react": "^4.2.6", "@types/regenerator-runtime": "^0.13.6", diff --git a/packages/react/src/components/SheetOverlay/FormulaHint/index.tsx b/packages/react/src/components/SheetOverlay/FormulaHint/index.tsx index 6fecbe0c..f6ed9bf7 100644 --- a/packages/react/src/components/SheetOverlay/FormulaHint/index.tsx +++ b/packages/react/src/components/SheetOverlay/FormulaHint/index.tsx @@ -228,7 +228,7 @@ const FormulaHint: React.FC> = (props) => { style={{ backgroundColor: `${fn.BRAND_COLOR ? fn.BRAND_COLOR : "#F8F9FA"}`, maxHeight: "318px", - overflowY: "scroll", + overflowY: "auto", }} > {fn.API_KEY && ( @@ -333,7 +333,9 @@ const FormulaHint: React.FC> = (props) => { }} className="text-heading-xsm color-text-default" > - {hasGnosisPayToken ? "Access granted" : "Access required"} + {hasGnosisPayToken + ? "Access granted" + : "Connect your Gnosis Pay account"}

@@ -344,10 +346,10 @@ const FormulaHint: React.FC> = (props) => { className="text-body-sm color-text-default" > {!hasGnosisPayToken - ? "To access your Gnosis Pay account, please grant permission. Your dSheet account should be created via the same wallet ss your Gnosis Pay. " - : ` You have ${timeFromNowMessage( + ? "Grant access to your Gnosis Pay account and ensure you're using the same wallet for both Gnosis Pay and dSheet." + : ` You can now interact with your Gnosis Pay account for the next ${timeFromNowMessage( timeLeft - )} to use your Gnosis Pay account. Then you need to grant access again.`} + )}. When the timer’s up, just re-grant access and you're good to go!`}