From 84fe47ed454c979d0a8b0187486017aaa1944fae Mon Sep 17 00:00:00 2001 From: Andrew Chou Date: Thu, 1 Oct 2026 15:05:20 -0400 Subject: [PATCH 1/3] update comapeo-ipc to 11 --- package-lock.json | 11 +++++------ package.json | 4 ++-- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index d788c69..14f0ff4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16,7 +16,7 @@ }, "devDependencies": { "@comapeo/core": "7.5.1", - "@comapeo/ipc": "9.0.1", + "@comapeo/ipc": "11.0.0", "@eslint/js": "10.0.1", "@ianvs/prettier-plugin-sort-imports": "4.7.1", "@mapeo/crypto": "1.1.0", @@ -56,7 +56,7 @@ }, "peerDependencies": { "@comapeo/core": "^7.2.0", - "@comapeo/ipc": "^9.0.0", + "@comapeo/ipc": "^11.0.0", "@tanstack/react-query": "^5", "react": "^18 || ^19" } @@ -658,14 +658,13 @@ } }, "node_modules/@comapeo/ipc": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/@comapeo/ipc/-/ipc-9.0.1.tgz", - "integrity": "sha512-9cTbxkvQyz6Pnk7R2WYXMOKLW6jg8HSpTDWDuv8cx0b4JI+MKET85g0lZqT2T2VN/vrqPFqfTg4HqrTVjfdNzQ==", + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/@comapeo/ipc/-/ipc-11.0.0.tgz", + "integrity": "sha512-waehLyovKUIHl+suo5Z7KxGkdF27TTVKmw6GH4AZqEFNDswyoUN/108Ap+pkZhZDJbY0z5J5dTD0WCVvnI+yig==", "dev": true, "license": "MIT", "dependencies": { "custom-error-creator": "^1.4.0", - "p-defer": "^4.0.1", "rpc-reflector": "^4.2.0" }, "engines": { diff --git a/package.json b/package.json index 7b76f50..9435d06 100644 --- a/package.json +++ b/package.json @@ -71,13 +71,13 @@ }, "peerDependencies": { "@comapeo/core": "^7.2.0", - "@comapeo/ipc": "^9.0.0", + "@comapeo/ipc": "^11.0.0", "@tanstack/react-query": "^5", "react": "^18 || ^19" }, "devDependencies": { "@comapeo/core": "7.5.1", - "@comapeo/ipc": "9.0.1", + "@comapeo/ipc": "11.0.0", "@eslint/js": "10.0.1", "@ianvs/prettier-plugin-sort-imports": "4.7.1", "@mapeo/crypto": "1.1.0", From 4d47c8f488cfa0f0c3550d8d706230701fbdc9d0 Mon Sep 17 00:00:00 2001 From: Andrew Chou Date: Thu, 1 Oct 2026 15:21:15 -0400 Subject: [PATCH 2/3] fix broken test --- test/hooks/invite-rejoin.test.ts | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/test/hooks/invite-rejoin.test.ts b/test/hooks/invite-rejoin.test.ts index c3557c9..d96f60a 100644 --- a/test/hooks/invite-rejoin.test.ts +++ b/test/hooks/invite-rejoin.test.ts @@ -198,11 +198,10 @@ test( ) assert.strictEqual(settingsHook.result.current.data.name, 'mapeo') - // The re-joined project must be a fresh instance — calls on the wrapper - // cached before the re-join reject because that instance is closed. - assert.notStrictEqual( + assert.strictEqual( rejoinedProjectHook.result.current.data, originalWrapper, + 'Rejoined project uses original project client instance', ) }, ) From 08a7bedde00b47fd82cd617caac1287dfb734ab1 Mon Sep 17 00:00:00 2001 From: Andrew Chou Date: Thu, 1 Oct 2026 15:21:52 -0400 Subject: [PATCH 3/3] remove unnecessary code in useAcceptInvite --- src/hooks/invites.ts | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/src/hooks/invites.ts b/src/hooks/invites.ts index 945dea4..925aeaa 100644 --- a/src/hooks/invites.ts +++ b/src/hooks/invites.ts @@ -13,7 +13,6 @@ import { getInvitesByIdQueryKey, getInvitesQueryKey, getMembersQueryKey, - getProjectByIdQueryKey, getProjectsQueryKey, } from '../lib/react-query.js' import { useClientApi } from './client.js' @@ -94,19 +93,10 @@ export function useAcceptInvite() { mutationFn: async ({ inviteId }: { inviteId: string }) => { return clientApi.invite.accept({ inviteId }) }, - onSuccess: (projectId) => { + onSuccess: () => { queryClient.invalidateQueries({ queryKey: getInvitesQueryKey(), }) - // Accepting an invite (re-)adds the project on the backend, which - // closes any project instance that was open before the invite (e.g. - // after leaving the project) and opens a fresh one. The project - // client is cached with staleTime/gcTime Infinity, so drop it here - // or every observer keeps using the closed instance. - queryClient.removeQueries({ - queryKey: getProjectByIdQueryKey({ projectId }), - exact: true, - }) queryClient.invalidateQueries({ queryKey: getProjectsQueryKey(), })