File size: 904 Bytes
92c8d86
 
a2157f5
b10df03
 
a2f4024
b10df03
a2f4024
b10df03
 
 
 
a2f4024
b10df03
a2f4024
118829c
92c8d86
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import { SpaceProps } from "./type";

export const fetchAllPages = async (sort = "trending") => {
  const filter_key = "zero-a10g";
  
  const pageNumbers = Array.from({ length: 55 }, (_, i) => i);
  const urls = pageNumbers.map(async (pageNumber) => {
    const url = `https://huggingface.co/spaces-json?p=${pageNumber}&sort=${sort}&runtime.hardware.current=${filter_key}`;
    const response = await fetch(url);
    const json = await response.json();
    return json?.spaces ?? [];
  });

  const jsonResponses = await Promise.all(urls);
  const spaces = jsonResponses.flat();
  return spaces
};

export const sortByCreatedAt = (spaces: SpaceProps[]) => {
  return spaces.sort((a, b) => {
    return new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime();
  });
}

export const sortByLikes = (spaces: SpaceProps[]) => {
  return spaces.sort((a, b) => {
    return b.likes - a.likes;
  });
}