import { QueryClient } from '@tanstack/react-query';

import { BooleanFilter, ClipBrowserKeyType } from './types';

export const clipBrowserQueryClient = new QueryClient();

export const invalidateWorkspaceQueries = (workspaceId: string) => {
  clipBrowserQueryClient.removeQueries({
    predicate: (query) => {
      // only inactive queries
      if (query.isActive()) return false;
      const [filters] = query.queryKey as ClipBrowserKeyType;
      if (!filters || !filters.workspace) return false;
      return (
        filters.workspace.presence === BooleanFilter.True &&
        filters.workspace.workspaceId === workspaceId
      );
    },
  });
  clipBrowserQueryClient.invalidateQueries({
    predicate: (query) => {
      // only active queries
      if (!query.isActive()) return false;
      const [filters] = query.queryKey as ClipBrowserKeyType;
      if (!filters || !filters.workspace) return false;
      return (
        filters.workspace.presence === BooleanFilter.True &&
        filters.workspace.workspaceId === workspaceId
      );
    },
  });
};
