From 398493b0dee36d143db85f84de31829e1263a3c8 Mon Sep 17 00:00:00 2001 From: Spencer Murray Date: Tue, 21 Jan 2025 17:07:08 -0500 Subject: [PATCH] Add path to EventContext --- src/services/events/hooks.test.tsx | 7 +++++-- src/services/events/hooks.tsx | 5 ++++- src/services/events/types.ts | 1 + 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/services/events/hooks.test.tsx b/src/services/events/hooks.test.tsx index 310c91bc43..4427bb4d4c 100644 --- a/src/services/events/hooks.test.tsx +++ b/src/services/events/hooks.test.tsx @@ -120,7 +120,7 @@ describe('useEventContext', () => { } describe('when called on owner page', () => { - it('sets event context with ownerid and no repoid', async () => { + it('sets event context with path, ownerid, and no repoid', async () => { setup({}) renderHook(() => useEventContext(), { wrapper: ownerWrapper, @@ -128,6 +128,7 @@ describe('useEventContext', () => { await waitFor(() => { expect(mockedSetContext).toHaveBeenCalledWith({ + path: '/:provider/:owner', owner: { id: mockOwnerContext.owner.ownerid, }, @@ -138,7 +139,7 @@ describe('useEventContext', () => { }) describe('when called on repo page', () => { - it('sets event context with ownerid and repoid', async () => { + it('sets event context with path, ownerid, and repoid', async () => { setup({}) renderHook(useEventContext, { wrapper: repoWrapper, @@ -146,6 +147,7 @@ describe('useEventContext', () => { await waitFor(() => { expect(mockedSetContext).toHaveBeenCalledWith({ + path: '/:provider/:owner/:repo', owner: { id: mockOwnerContext.owner.ownerid, }, @@ -167,6 +169,7 @@ describe('useEventContext', () => { await waitFor(() => { expect(mockedSetContext).toHaveBeenCalledWith({ + path: '/:provider/:owner', owner: undefined, repo: undefined, }) diff --git a/src/services/events/hooks.tsx b/src/services/events/hooks.tsx index 1cb3457187..2efdb86d00 100644 --- a/src/services/events/hooks.tsx +++ b/src/services/events/hooks.tsx @@ -3,7 +3,7 @@ import { useQuery as useQueryV5, } from '@tanstack/react-queryV5' import { useRef } from 'react' -import { useParams } from 'react-router' +import { useParams, useRouteMatch } from 'react-router' import { z } from 'zod' import { @@ -26,6 +26,7 @@ export function useEventContext() { }>() const context = useRef({}) + const { path } = useRouteMatch() const { data: ownerData } = useQueryV5( OwnerContextQueryOpts({ provider, owner }) ) @@ -34,11 +35,13 @@ export function useEventContext() { ) if ( + path !== context.current.path || ownerData?.ownerid !== context.current.owner?.id || repoData?.repoid !== context.current.repo?.id ) { // only update if this is a new owner or repo const newContext: EventContext = { + path, owner: ownerData?.ownerid ? { id: ownerData?.ownerid, diff --git a/src/services/events/types.ts b/src/services/events/types.ts index b4dc6ded8c..b03cceb9ee 100644 --- a/src/services/events/types.ts +++ b/src/services/events/types.ts @@ -54,6 +54,7 @@ export type EventContext = { id: number isPrivate?: boolean } + path?: string } export abstract class EventTracker {