1- import type { ClusterModel , Paginated , Provider , SearchQuery , SearchResult } from '@/bindings.gen' ;
1+ import type { ClusterModel , GameLoader , ManagedPackage , ManagedVersion , Paginated , Provider , SearchQuery , SearchResult } from '@/bindings.gen' ;
22import type { UndefinedInitialDataOptions } from '@tanstack/react-query' ;
33import { bindings } from '@/main' ;
44import { PROVIDERS } from '@/utils' ;
55import { useCommand } from '@onelauncher/common' ;
66import { createContext , useContext , useEffect , useMemo , useState } from 'react' ;
7+ import { useNavigate } from '@tanstack/react-router' ;
78
89export interface BrowserControllerType {
910 cluster : ClusterModel | undefined ;
@@ -28,6 +29,7 @@ export function BrowserProvider(props: any) {
2829 const { children } = props ;
2930 const [ cluster , setCluster ] = useState < ClusterModel | undefined > ( undefined ) ;
3031 const [ provider , setProvider ] = useState < Provider > ( PROVIDERS [ 0 ] ) ;
32+ const navigate = useNavigate ( )
3133 const [ query , setQuery ] = useState < SearchQuery > ( {
3234 filters : null ,
3335 query : null ,
@@ -36,6 +38,11 @@ export function BrowserProvider(props: any) {
3638 sort : null ,
3739 } ) ;
3840
41+ useEffect ( ( ) => {
42+ if ( query . filters ?. categories || query . query )
43+ navigate ( { to : "/app/browser/search" } )
44+ } , [ query ] )
45+
3946 const context = useMemo < BrowserControllerType > ( ( ) => ( {
4047 cluster,
4148 setCluster,
@@ -57,3 +64,11 @@ export function useBrowserSearch(provider: Provider, query: SearchQuery, options
5764 const validFilters = useMemo ( ( ) => Object . values ( query . filters ?? { } ) . filter ( a => a ) . length > 0 , [ query . filters ] ) ;
5865 return useCommand ( 'searchPackages' , ( ) => bindings . core . searchPackages ( provider , validFilters ? query : { ...query , filters : null } ) , options ) ;
5966}
67+
68+ export function usePackageData ( provider : Provider , slug : string , options ?: Omit < UndefinedInitialDataOptions < ManagedPackage > , "queryKey" | "queryFn" > | undefined ) {
69+ return useCommand ( "getPackage" , ( ) => bindings . core . getPackage ( provider , slug ) , options )
70+ }
71+
72+ export function usePackageVersions ( provider : Provider , slug : string , { mc_versions, loaders, offset, limit, ...options } :{ mc_versions ?:Array < string > | null , loaders ?:Array < GameLoader > | null , offset ?:number , limit : number } & Omit < UndefinedInitialDataOptions < Paginated < ManagedVersion > > , "queryKey" | "queryFn" > ) {
73+ return useCommand ( "getPackageVersions" , ( ) => bindings . core . getPackageVersions ( provider , slug , mc_versions ?? null , loaders ?? null , ( offset ?? 0 ) as unknown as bigint , limit as unknown as bigint ) , options )
74+ }
0 commit comments