import { queryOptions } from '@tanstack/react-query';
import { useApi } from '../api/Api';
import { ERRORS } from '../components/Error/Errors';

export const profileSelfQueryOptions = (Api: ReturnType<typeof useApi>) =>
  queryOptions({
    queryKey: ['profile', { id: Api.authenticatedUser?.id }],
    queryFn: async () => ({
      user: await Api.user(),
      posts: await Api.userPosts(Api.authenticatedUser?.id ?? 0),
    }),
    retry: (count, error) => ('code' in error && error.code !== ERRORS.UNAUTHORIZED ? count < 3 : false),
  });

export const profileQueryOptions = (Api: ReturnType<typeof useApi>, id?: number) =>
  queryOptions({
    queryKey: ['profile', { id }],
    queryFn: async () => ({ user: await Api.user(id), posts: await Api.userPosts(id) }),
    retry: (count, error) => ('code' in error && error.code !== ERRORS.UNAUTHORIZED ? count < 3 : false),
  });
