Skip to content

Commit 8edce35

Browse files
committed
fix: browser bugs
1 parent ac7bef4 commit 8edce35

File tree

2 files changed

+24
-5
lines changed

2 files changed

+24
-5
lines changed

apps/onelauncher/frontend/src/hooks/useBrowser.tsx

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
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';
22
import type { UndefinedInitialDataOptions } from '@tanstack/react-query';
33
import { bindings } from '@/main';
44
import { PROVIDERS } from '@/utils';
55
import { useCommand } from '@onelauncher/common';
66
import { createContext, useContext, useEffect, useMemo, useState } from 'react';
7+
import { useNavigate } from '@tanstack/react-router';
78

89
export 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+
}

apps/onelauncher/frontend/src/routes/app/browser/search.tsx

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,15 @@ function Search() {
2525
});
2626
useEffect(() => {
2727
search.refetch();
28-
}, [context.provider, context.query]);
28+
}, [context.provider, context.query, context.cluster]);
2929

3030
return (
31-
<Show when={search.isSuccess}>
32-
<PackageGrid items={search.data!.items} provider={context.provider} />
33-
</Show>
31+
<>
32+
{
33+
search.data
34+
? <PackageGrid items={search.data.items} provider={context.provider} />
35+
: <h1>Loading</h1>
36+
}
37+
</>
3438
);
3539
}

0 commit comments

Comments
 (0)