From d978caefe8ed9621148fb865892c738d02534d5b Mon Sep 17 00:00:00 2001 From: Matt Hamann Date: Thu, 16 Jan 2025 10:14:38 -0500 Subject: [PATCH 1/2] fix(state): state listener proliferation due to anony function/render --- examples/basic/package-lock.json | 14 ++++++++------ examples/basic/package.json | 2 +- package.json | 4 ++-- src/context/ReactRowndProvider.tsx | 8 +++++--- 4 files changed, 16 insertions(+), 12 deletions(-) diff --git a/examples/basic/package-lock.json b/examples/basic/package-lock.json index 245ccdf..2ccccb3 100644 --- a/examples/basic/package-lock.json +++ b/examples/basic/package-lock.json @@ -8,7 +8,7 @@ "name": "example", "version": "0.0.0", "dependencies": { - "@rownd/react": "file:../../packages/react/rownd-react-2.2.2.tgz", + "@rownd/react": "2.7.0", "react": "^18.2.0", "react-dom": "^18.2.0" }, @@ -536,9 +536,10 @@ } }, "node_modules/@rownd/react": { - "version": "2.2.2", - "resolved": "file:../../packages/react/rownd-react-2.2.2.tgz", - "integrity": "sha512-SwM6hZBf4TXk/UlYAjminR4XSmXS4ZUyCMvmyYTMDOkC8O1AtOZywD/ebanw1SjN8G14ZTk7w5elxTClzjP80w==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/@rownd/react/-/react-2.7.0.tgz", + "integrity": "sha512-AX5xGm1XtewkjwNy6H6NoqcntTiY6wM6lnWOGTKCXI2W1DYYdei9E5gC5g3sNuchba+mJwAbee5MFl2sBsU8Uw==", + "license": "MIT", "peerDependencies": { "react": ">=17.0", "react-dom": ">=17.0" @@ -2702,8 +2703,9 @@ } }, "@rownd/react": { - "version": "file:../../packages/react/rownd-react-2.2.2.tgz", - "integrity": "sha512-SwM6hZBf4TXk/UlYAjminR4XSmXS4ZUyCMvmyYTMDOkC8O1AtOZywD/ebanw1SjN8G14ZTk7w5elxTClzjP80w==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/@rownd/react/-/react-2.7.0.tgz", + "integrity": "sha512-AX5xGm1XtewkjwNy6H6NoqcntTiY6wM6lnWOGTKCXI2W1DYYdei9E5gC5g3sNuchba+mJwAbee5MFl2sBsU8Uw==", "requires": {} }, "@swc/core": { diff --git a/examples/basic/package.json b/examples/basic/package.json index 8e4233b..1d99059 100644 --- a/examples/basic/package.json +++ b/examples/basic/package.json @@ -10,7 +10,7 @@ "preview": "vite preview" }, "dependencies": { - "@rownd/react": "file:../../packages/react/rownd-react-2.2.2.tgz", + "@rownd/react": "2.7.0", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/package.json b/package.json index 725221e..7531117 100644 --- a/package.json +++ b/package.json @@ -96,8 +96,8 @@ ], "after:release": [ "cd packages/react && npm publish --access public", - "cd ../next && npm publish --access public", - "cd ../remix && npm publish --access public" + "cd packages/next && npm publish --access public", + "cd packages/remix && npm publish --access public" ] } }, diff --git a/src/context/ReactRowndProvider.tsx b/src/context/ReactRowndProvider.tsx index 5c84490..7e0c1e3 100644 --- a/src/context/ReactRowndProvider.tsx +++ b/src/context/ReactRowndProvider.tsx @@ -47,11 +47,13 @@ export const ReactRowndProvider: React.FC = ({ ); }, [is_authenticated, is_initializing, user.data.user_id]); + const stateListener = useCallback(({ state, api }) => { + hubListenerCb({ state, api, callback: setHubState }) + }, [hubListenerCb]); + return ( - hubListenerCb({ state, api, callback: setHubState }) - } + stateListener={stateListener} {...props} > From f0dc125e0af1a7ae91b5e4c1624b4b8b853d8ff6 Mon Sep 17 00:00:00 2001 From: Matt Hamann Date: Thu, 16 Jan 2025 11:57:29 -0500 Subject: [PATCH 2/2] fix(state): state listener proliferation due to anony function/render --- examples/remix/package-lock.json | 9 +++++---- examples/remix/package.json | 2 +- src/next/client/index.tsx | 16 +++++++++------- src/remix/RemixRowndProvider.tsx | 10 ++++++---- 4 files changed, 21 insertions(+), 16 deletions(-) diff --git a/examples/remix/package-lock.json b/examples/remix/package-lock.json index 6aad3ed..56fefcd 100644 --- a/examples/remix/package-lock.json +++ b/examples/remix/package-lock.json @@ -9,7 +9,7 @@ "@remix-run/node": "^2.12.1", "@remix-run/react": "^2.12.1", "@remix-run/serve": "^2.12.1", - "@rownd/remix": "file:../../packages/remix/rownd-remix-2.2.2.tgz", + "@rownd/remix": "^2.7.0", "isbot": "^4.1.0", "react": "^18.2.0", "react-dom": "^18.2.0" @@ -1859,9 +1859,10 @@ ] }, "node_modules/@rownd/remix": { - "version": "2.2.2", - "resolved": "file:../../packages/remix/rownd-remix-2.2.2.tgz", - "integrity": "sha512-I6Zd6orN3fpljjR2s4si9mdn68kwe4nsWXSjMT1faM7hhUTO/P7LSSVFOF04cJ9clmYDN2sfHAiVFaVZML5S4w==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/@rownd/remix/-/remix-2.7.0.tgz", + "integrity": "sha512-keeX1WfNGwVFOFfgXH0qCVsgOM2Qvj4aq8FB886y20hX5S71P5SuMoqxJ6ggzFZYHuSix17xXgPfUvjARRDxrg==", + "license": "MIT", "peerDependencies": { "jose": ">=4.0.0", "react": ">=17.0", diff --git a/examples/remix/package.json b/examples/remix/package.json index 45fd470..4de5993 100644 --- a/examples/remix/package.json +++ b/examples/remix/package.json @@ -14,7 +14,7 @@ "@remix-run/node": "^2.12.1", "@remix-run/react": "^2.12.1", "@remix-run/serve": "^2.12.1", - "@rownd/remix": "file:../../packages/remix/rownd-remix-2.2.2.tgz", + "@rownd/remix": "^2.7.0", "isbot": "^4.1.0", "react": "^18.2.0", "react-dom": "^18.2.0" diff --git a/src/next/client/index.tsx b/src/next/client/index.tsx index b340ef1..9dc7d3d 100644 --- a/src/next/client/index.tsx +++ b/src/next/client/index.tsx @@ -60,16 +60,18 @@ const Client: React.FC> = (props) => { } }, [hasCookieSignedIn, user.data.user_id, is_initializing, is_authenticated]); + const stateListener = useCallback(({ state, api }) => { + hubListenerCb({ + state, + api, + callback: setState, + }) + }, [hubListenerCb, setState]); + return ( <> - hubListenerCb({ - state, - api, - callback: setState, - }) - } + stateListener={stateListener} {...props} /> diff --git a/src/remix/RemixRowndProvider.tsx b/src/remix/RemixRowndProvider.tsx index dca2770..c68655f 100644 --- a/src/remix/RemixRowndProvider.tsx +++ b/src/remix/RemixRowndProvider.tsx @@ -1,4 +1,4 @@ -import React, { lazy, Suspense } from 'react'; +import React, { lazy, Suspense, useCallback } from 'react'; import { RowndContext, RowndProviderProps } from '../context/RowndContext'; import useHub from '../hooks/useHub'; import { TRowndContext } from '../context/types'; @@ -18,11 +18,13 @@ function RemixRowndProvider({ children, ...props }: RowndProviderProps) { }, }); + const stateListener = useCallback(({ state, api }) => { + hubListenerCb({ state, api, callback: setHubState }); + }, [hubListenerCb]); + return ( - hubListenerCb({ state, api, callback: setHubState }) - } + stateListener={stateListener} {...props} >