enzostvs HF staff commited on
Commit
332141a
β€’
1 Parent(s): 5dfd24d

fix search

Browse files
src/lib/components/models/drawer/Drawer.svelte CHANGED
@@ -1,6 +1,6 @@
1
  <script lang="ts">
2
  import { clickoutside } from '@svelte-put/clickoutside';
3
- import { goto } from "$app/navigation";
4
  import { page } from "$app/stores";
5
  import { get } from "svelte/store";
6
  import Icon from "@iconify/svelte";
@@ -19,7 +19,7 @@
19
  model = value?.model;
20
  });
21
 
22
- const handleClose = () => {
23
  modelStore.update((value) => {
24
  return {
25
  ...value,
@@ -28,7 +28,8 @@
28
  });
29
 
30
  $page.url.searchParams.delete('model');
31
- goto(`?${$page.url.searchParams.toString()}`);
 
32
  };
33
 
34
  const handleClickNext = () => {
@@ -43,10 +44,9 @@
43
  handleClose();
44
  }
45
  };
46
- const handleClickAuthor = () => {
47
  $page.url.searchParams.set('search', author as string);
48
- goto(`?${$page.url.searchParams.toString()}`);
49
- handleClose()
50
  }
51
  </script>
52
 
 
1
  <script lang="ts">
2
  import { clickoutside } from '@svelte-put/clickoutside';
3
+ import { goto, invalidate } from "$app/navigation";
4
  import { page } from "$app/stores";
5
  import { get } from "svelte/store";
6
  import Icon from "@iconify/svelte";
 
19
  model = value?.model;
20
  });
21
 
22
+ const handleClose = async () => {
23
  modelStore.update((value) => {
24
  return {
25
  ...value,
 
28
  });
29
 
30
  $page.url.searchParams.delete('model');
31
+ await goto(`?${$page.url.searchParams.toString()}`);
32
+ await invalidate(url => url.pathname.includes("/api/models"));
33
  };
34
 
35
  const handleClickNext = () => {
 
44
  handleClose();
45
  }
46
  };
47
+ const handleClickAuthor = async () => {
48
  $page.url.searchParams.set('search', author as string);
49
+ handleClose();
 
50
  }
51
  </script>
52
 
src/routes/+page.svelte CHANGED
@@ -1,6 +1,9 @@
1
  <script lang="ts">
2
  import { browser } from "$app/environment";
3
  import InfiniteScroll from "svelte-infinite-scroll";
 
 
 
4
  import Button from "$lib/components/Button.svelte";
5
  import Card from "$lib/components/models/Card.svelte";
6
  import Input from "$lib/components/fields/Input.svelte";
@@ -10,13 +13,10 @@
10
  import Dialog from "$lib/components/dialog/Dialog.svelte";
11
  import SubmitModel from "$lib/components/models/Submit.svelte";
12
  import Drawer from "$lib/components/models/drawer/Drawer.svelte";
13
- import { page } from "$app/stores";
14
- import { goto } from "$app/navigation";
15
- // import UserIsLogged from "$lib/components/UserIsLogged.svelte";
16
 
17
  export let data
18
 
19
- let form = {
20
  filter: data?.filter,
21
  search: data?.search,
22
  page: "0",
@@ -30,18 +30,18 @@
30
  refetch(true);
31
  }
32
  const handleChangeFilter = async (filter: string) => {
33
- form = { ...form, filter, page: (0).toString()};
34
  $page.url.searchParams.set('filter', filter);
35
- goto(`?${$page.url.searchParams.toString()}`, { replaceState: true, invalidateAll: true });
 
36
  }
37
  let timeout: any;
38
  const handleChangeSearch = async (search: string) => {
39
  clearTimeout(timeout);
40
- form = { ...form, search, page: (0).toString()};
41
- timeout = setTimeout(() => {
42
  if (search === "") $page.url.searchParams.delete('search');
43
  else $page.url.searchParams.set('search', search);
44
- goto(`?${$page.url.searchParams.toString()}`, { replaceState: true, invalidateAll: true });
 
45
  }, 500);
46
  }
47
 
@@ -107,6 +107,9 @@
107
  {#each data.models as card}
108
  <Card card={card} />
109
  {/each}
 
 
 
110
  <InfiniteScroll
111
  elementScroll="{elementScroll ?? undefined}"
112
  threshold={100}
 
1
  <script lang="ts">
2
  import { browser } from "$app/environment";
3
  import InfiniteScroll from "svelte-infinite-scroll";
4
+ import { page } from "$app/stores";
5
+
6
+ import { goto, invalidate } from "$app/navigation";
7
  import Button from "$lib/components/Button.svelte";
8
  import Card from "$lib/components/models/Card.svelte";
9
  import Input from "$lib/components/fields/Input.svelte";
 
13
  import Dialog from "$lib/components/dialog/Dialog.svelte";
14
  import SubmitModel from "$lib/components/models/Submit.svelte";
15
  import Drawer from "$lib/components/models/drawer/Drawer.svelte";
 
 
 
16
 
17
  export let data
18
 
19
+ $: form = {
20
  filter: data?.filter,
21
  search: data?.search,
22
  page: "0",
 
30
  refetch(true);
31
  }
32
  const handleChangeFilter = async (filter: string) => {
 
33
  $page.url.searchParams.set('filter', filter);
34
+ await goto(`?${$page.url.searchParams.toString()}`);
35
+ await invalidate(url => url.pathname.includes("/api/models"));
36
  }
37
  let timeout: any;
38
  const handleChangeSearch = async (search: string) => {
39
  clearTimeout(timeout);
40
+ timeout = setTimeout(async () => {
 
41
  if (search === "") $page.url.searchParams.delete('search');
42
  else $page.url.searchParams.set('search', search);
43
+ await goto(`?${$page.url.searchParams.toString()}`);
44
+ await invalidate(url => url.pathname.includes("/api/models"));
45
  }, 500);
46
  }
47
 
 
107
  {#each data.models as card}
108
  <Card card={card} />
109
  {/each}
110
+ {#if data.models.length === 0}
111
+ <p class="text-neutral-400 text-left w-full">No models found</p>
112
+ {/if}
113
  <InfiniteScroll
114
  elementScroll="{elementScroll ?? undefined}"
115
  threshold={100}
src/routes/+page.ts CHANGED
@@ -4,7 +4,8 @@ import { modelStore } from "$lib/stores/use-model";
4
  export async function load({ fetch, url }) {
5
  const model_param = url.searchParams.get("model")
6
  const search_param = url.searchParams.get("search") ?? undefined
7
- const filter_param = url.searchParams.get("filter") ?? undefined
 
8
 
9
  if (model_param) {
10
  const model_request = await fetch(`/api/models/${model_param?.replace("/", "@")}?full=true`, {
@@ -20,14 +21,7 @@ export async function load({ fetch, url }) {
20
  });
21
  }
22
 
23
-
24
- const data = {
25
- filter: filter_param ?? "hotest",
26
- page: "0",
27
- search: search_param ?? ""
28
- }
29
-
30
- const response = await fetch(`/api/models?${new URLSearchParams(data)}`, {
31
  method: "GET",
32
  headers: {
33
  "Content-Type": "application/json"
@@ -39,6 +33,5 @@ export async function load({ fetch, url }) {
39
  total_items: models?.total_items ?? 0,
40
  search: search_param ?? "",
41
  filter: filter_param,
42
- // model: model?.model ?? null
43
  }
44
  }
 
4
  export async function load({ fetch, url }) {
5
  const model_param = url.searchParams.get("model")
6
  const search_param = url.searchParams.get("search") ?? undefined
7
+ const filter_param = url.searchParams.get("filter") ?? "hotest"
8
+
9
 
10
  if (model_param) {
11
  const model_request = await fetch(`/api/models/${model_param?.replace("/", "@")}?full=true`, {
 
21
  });
22
  }
23
 
24
+ const response = await fetch(`/api/models${url.search}`, {
 
 
 
 
 
 
 
25
  method: "GET",
26
  headers: {
27
  "Content-Type": "application/json"
 
33
  total_items: models?.total_items ?? 0,
34
  search: search_param ?? "",
35
  filter: filter_param,
 
36
  }
37
  }