mirror of
https://github.com/nonebot/nonebot2.git
synced 2025-09-07 20:46:45 +00:00
📝 Docs: 商店头像 skeleton (#3362)
This commit is contained in:
@ -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]
|
||||
|
@ -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);
|
||||
|
@ -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]
|
||||
|
@ -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));
|
||||
},
|
||||
};
|
||||
|
Reference in New Issue
Block a user