diff --git a/packages/app/features/profile/screen.test.tsx b/packages/app/features/profile/screen.test.tsx index 23b21d62c..b83c27e98 100644 --- a/packages/app/features/profile/screen.test.tsx +++ b/packages/app/features/profile/screen.test.tsx @@ -3,6 +3,7 @@ import { ProfileScreen } from './screen' import { TamaguiProvider, config } from '@my/ui' import { render, screen, act, waitFor } from '@testing-library/react-native' import { QueryClient, QueryClientProvider } from '@tanstack/react-query' +import { useProfileScreenParams } from 'app/routers/params' const queryClient = new QueryClient() const TAG_NAME = 'pip_test44677' @@ -99,6 +100,10 @@ jest.mock('solito/router', () => ({ }), })) +jest.mock('app/routers/params', () => ({ + useProfileScreenParams: jest.fn().mockReturnValue([{ sendid: 0 }, jest.fn()]), +})) + test('ProfileScreen', async () => { jest.useFakeTimers() diff --git a/packages/app/features/profile/screen.tsx b/packages/app/features/profile/screen.tsx index 470a8edfb..0bf5fe8ad 100644 --- a/packages/app/features/profile/screen.tsx +++ b/packages/app/features/profile/screen.tsx @@ -24,15 +24,20 @@ import { useInterUserActivityFeed } from './utils/useInterUserActivityFeed' import type { Activity } from 'app/utils/zod/activity' import { amountFromActivity } from 'app/utils/activity' import { Fragment } from 'react' -const { useParam } = createParam<{ sendid: string }>() +import { useProfileScreenParams } from 'app/routers/params' + interface ProfileScreenProps { - sendid?: string + sendid?: number | null } export function ProfileScreen({ sendid: propSendid }: ProfileScreenProps) { - const [paramSendid] = useParam('sendid') - const otherUserId = propSendid || paramSendid - const { data: otherUserProfile, isLoading, error } = useProfileLookup('sendid', otherUserId || '') + const [{ sendid: paramSendid }] = useProfileScreenParams() + const otherUserId = propSendid || Number(paramSendid) + const { + data: otherUserProfile, + isLoading, + error, + } = useProfileLookup('sendid', otherUserId?.toString() || '') const { user, profile: currentUserProfile } = useUser() const router = useRouter() const media = useMedia() @@ -48,7 +53,7 @@ export function ProfileScreen({ sendid: propSendid }: ProfileScreenProps) { } = useInterUserActivityFeed({ pageSize: 10, otherUserId, - currentUserId: currentUserProfile?.send_id.toString(), + currentUserId: currentUserProfile?.send_id, }) const { pages } = data ?? {} const formatTags = (tags: string[]) => tags?.map((tag) => `/${tag}`).join(' ') diff --git a/packages/app/features/profile/utils/useInterUserActivityFeed.ts b/packages/app/features/profile/utils/useInterUserActivityFeed.ts index 34ac7c595..6f02c242c 100644 --- a/packages/app/features/profile/utils/useInterUserActivityFeed.ts +++ b/packages/app/features/profile/utils/useInterUserActivityFeed.ts @@ -21,8 +21,8 @@ import type { ZodError } from 'zod' export function useInterUserActivityFeed(params: { pageSize?: number refetchInterval?: number - currentUserId?: string - otherUserId?: string + currentUserId?: number + otherUserId?: number }): UseInfiniteQueryResult, PostgrestError | ZodError> { const { pageSize = 3, refetchInterval = 30_000, otherUserId, currentUserId } = params diff --git a/packages/app/routers/params.tsx b/packages/app/routers/params.tsx index b90ab850b..2c2c85b4d 100644 --- a/packages/app/routers/params.tsx +++ b/packages/app/routers/params.tsx @@ -131,7 +131,23 @@ export const useSendScreenParams = () => { ] as const } -export type ProfileScreenParams = undefined +export type ProfileScreenParams = { + sendid?: string +} + +const { useParam: useProfileParam, useParams: useProfileParams } = + createParam() + +export const useSendId = () => { + const [sendid, setSendid] = useProfileParam('sendid') + return [sendid, setSendid] as const +} + +export const useProfileScreenParams = () => { + const { setParams } = useProfileParams() + const [sendid] = useSendId() + return [{ sendid }, setParams] as const +} export type AuthScreenParams = { redirectUri?: string