import { runInAction } from 'mobx';
import { useCallback } from 'react';

import { useStores } from '@/app/(root)/AppProviders';

export const useProjectSearch = () => {
  const { project } = useStores();

  const searchProjects = useCallback(
    async (query: string, page?: number, showTrashed: boolean = false) => {
      runInAction(() => {
        project.projectQuery = query;
        project.currentProjectPage = page ?? 1;
        project.showTrash = showTrashed;
      });
      if (project.showTrash) {
        await project.loadArchivedProjects();
      } else {
        await project.loadAllProjects();
      }
      return {
        projects: showTrashed ? project.archivedProjects : project.allProjects,
        numTotalResults: showTrashed
          ? project.totalArchivedProjects
          : project.totalProjects,
        currentPage: project.currentProjectPage,
      };
    },
    [project.showTrash]
  );

  return searchProjects;
};
