📝 Docs: 商店头像 skeleton (#3362)

This commit is contained in:
StarHeart
2025-03-09 21:18:32 +08:00
committed by GitHub
parent ecab229133
commit 09343c332e
34 changed files with 623 additions and 282 deletions

View File

@ -2,10 +2,12 @@ import { useCallback, useState } from "react";
import { translate } from "@docusaurus/Translate";
import type { Resource } from "./store";
import { getValidStatus } from "@/components/Resource/ValidStatus";
import { ValidStatus } from "./valid";
import { getValidStatus } from "@/components/Resource/ValidStatus";
import type { Resource } from "./store";
export type Filter<T extends Resource = Resource> = {
type: string;
@ -102,7 +104,7 @@ export const queryFilter = <T extends Resource = Resource>(
id: `query-${query}`,
displayName: query,
filter: (resource: Resource): boolean => {
if (!query) return true;
if (!query) {return true;}
const queryLower = query.toLowerCase();
const pluginMatch =
resource.resourceType === "plugin" &&
@ -141,7 +143,7 @@ export function useFilteredResources<T extends Resource>(
const addFilter = useCallback(
(filter: Filter<T>) => {
if (filters.some((f) => f.id === filter.id)) return;
if (filters.some((f) => f.id === filter.id)) {return;}
setFilters((filters) => [...filters, filter]);
},
[filters, setFilters]

View File

@ -1,6 +1,7 @@
import { useCallback, useEffect, useState } from "react";
import { type Filter, useFilteredResources, queryFilter } from "./filter";
import type { Resource } from "./store";
type useSearchControlReturn<T extends Resource> = {
@ -42,7 +43,7 @@ export function useSearchControl<T extends Resource>(
const newFilter = queryFilter<T>(newQuery);
// do nothing if filter is not changed
if (currentFilter?.id === newFilter.id) return;
if (currentFilter?.id === newFilter.id) {return;}
// remove old currentFilter
currentFilter && removeFilter(currentFilter);

View File

@ -31,9 +31,9 @@ export async function fetchRegistryData<T extends RegistryDataType>(
throw new Error(`Failed to fetch ${dataType}s: ${e}`);
});
if (!resp.ok)
throw new Error(
{throw new Error(
`Failed to fetch ${dataType}s: ${resp.status} ${resp.statusText}`
);
);}
const data = (await resp.json()) as RegistryDataResponseTypes[T];
return data.map(
(resource) => ({ ...resource, resourceType: dataType }) as ResourceTypes[T]

View File

@ -1,15 +1,16 @@
import { translate } from "@docusaurus/Translate";
import type { Filter as FilterTool } from "@/components/Store/Toolbar";
import {
authorFilter,
tagFilter,
validStatusFilter,
type Filter,
} from "./filter";
import type { Resource } from "./store";
import { ValidStatus } from "./valid";
import type { Filter as FilterTool } from "@/components/Store/Toolbar";
import type { Resource } from "./store";
type Props<T extends Resource = Resource> = {
resources: T[];
@ -75,7 +76,7 @@ export function useToolbar<T extends Resource = Resource>({
choices: Object.keys(validateStatusFilterMapping),
onSubmit: (type: string) => {
const validStatus = validateStatusFilterMapping[type];
if (!validStatus) return;
if (!validStatus) {return;}
addFilter(validStatusFilter(validStatus));
},
};