♻️ Refactor icon picker (#724)

This commit is contained in:
Manuel
2023-02-20 22:11:30 +01:00
committed by GitHub
parent 2c1b329dfd
commit f5686fbf2c
17 changed files with 441 additions and 258 deletions

View File

@@ -0,0 +1,14 @@
import { useQuery } from '@tanstack/react-query';
import { NormalizedIconRepositoryResult } from '../../tools/server/images/abstract-icons-repository';
export const useGetDashboardIcons = () =>
useQuery({
queryKey: ['repository-icons'],
queryFn: async () => {
const response = await fetch('/api/icons/');
const data = await response.json();
return data as NormalizedIconRepositoryResult[];
},
refetchOnMount: false,
refetchOnWindowFocus: false,
});

View File

@@ -1,27 +0,0 @@
import { useQuery } from '@tanstack/react-query';
import { IconSelectorItem } from '../types/iconSelector/iconSelectorItem';
export const useRepositoryIconsQuery = <TRepositoryIcon extends object>({
url,
converter,
}: {
url: string;
converter: (value: TRepositoryIcon) => IconSelectorItem;
}) =>
useQuery({
queryKey: ['repository-icons', { url }],
queryFn: async () => fetchRepositoryIcons<TRepositoryIcon>(url),
select(data) {
return data.map((x) => converter(x));
},
refetchOnWindowFocus: false,
});
const fetchRepositoryIcons = async <TRepositoryIcon extends object>(
url: string
): Promise<TRepositoryIcon[]> => {
const response = await fetch(
'https://api.github.com/repos/walkxcode/Dashboard-Icons/contents/png'
);
return response.json();
};