diff --git a/apps/desktop/layer/renderer/src/pages/(main)/(layer)/(subview)/discover/category/[category].tsx b/apps/desktop/layer/renderer/src/pages/(main)/(layer)/(subview)/discover/category/[category].tsx index 10c578ccc..1836e9133 100644 --- a/apps/desktop/layer/renderer/src/pages/(main)/(layer)/(subview)/discover/category/[category].tsx +++ b/apps/desktop/layer/renderer/src/pages/(main)/(layer)/(subview)/discover/category/[category].tsx @@ -18,9 +18,6 @@ import { RecommendationContent } from "~/modules/discover/RecommendationContent" import { FeedIcon } from "~/modules/feed/feed-icon" import { Queries } from "~/queries" -type Language = "all" | "eng" | "cmn" -type DiscoverCategories = (typeof RSSHubCategories)[number] | string - const LanguageMap = { all: "all", eng: "en", @@ -29,13 +26,6 @@ const LanguageMap = { type RouteData = Awaited>["data"] -const fetchRsshubPopular = (category: DiscoverCategories, lang: Language) => { - return Queries.discover.rsshubCategory({ - // category: "popular", - categories: category === "all" ? "popular" : `${category}`, - lang: LanguageMap[lang], - }) -} export const Component = () => { const { t } = useTranslation() const lang = useUISettingKey("discoverLanguage") @@ -43,10 +33,16 @@ export const Component = () => { const title = t(`discover.category.${category}`, { ns: "common" }) useSubViewTitle(title) - const rsshubPopular = useAuthQuery(fetchRsshubPopular(category, lang), { - staleTime: 1000 * 60 * 60 * 24, // 1 day - placeholderData: keepPreviousData, - }) + const rsshubPopular = useAuthQuery( + Queries.discover.rsshubCategory({ + categories: category === "all" ? "popular" : `${category}`, + lang: LanguageMap[lang], + }), + { + staleTime: 1000 * 60 * 60 * 24, // 1 day + placeholderData: keepPreviousData, + }, + ) const data: RouteData = rsshubPopular.data as any const { isLoading } = rsshubPopular @@ -171,6 +167,11 @@ const RecommendationListItem = ({ } }, [data]) + const rsshubAnalytics = useAuthQuery(Queries.discover.rsshubAnalytics(), { + staleTime: 1000 * 60 * 60 * 24, // 1 day + placeholderData: keepPreviousData, + }) + return (
@@ -194,7 +195,7 @@ const RecommendationListItem = ({ @@ -213,10 +214,12 @@ const RecommendationListItem = ({ if (Array.isArray(routeData.path)) { routeData.path = routeData.path.find((p) => p === route) ?? routeData.path[0] } + const subscriptionCount = + rsshubAnalytics.data?.[`/${routePrefix}${routeData.path}`]?.subscriptionCount return (
  • { present({ @@ -232,15 +235,23 @@ const RecommendationListItem = ({ }) }} > -
    -
    -
    - - {routeData.name} - -
    {`rsshub://${routePrefix}${routeData.path}`}
    +
    +
    +
    +
    + + {routeData.name} + + {`rsshub://${routePrefix}${routeData.path}`} +
    + {subscriptionCount && ( +
    + + {subscriptionCount} +
    + )}
  • ) })} diff --git a/apps/desktop/layer/renderer/src/queries/discover.ts b/apps/desktop/layer/renderer/src/queries/discover.ts index 36ee8afd7..0ee0f77a9 100644 --- a/apps/desktop/layer/renderer/src/queries/discover.ts +++ b/apps/desktop/layer/renderer/src/queries/discover.ts @@ -39,4 +39,9 @@ export const discover = { }) return res.data }), + rsshubAnalytics: () => + defineQuery(["discover", "rsshub", "analytics"], async () => { + const res = await apiClient.discover["rsshub-analytics"].$get() + return res.data + }), } diff --git a/icons/mgc/fire_cute_re.svg b/icons/mgc/fire_cute_re.svg new file mode 100644 index 000000000..118057cd8 --- /dev/null +++ b/icons/mgc/fire_cute_re.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/internal/shared/src/hono.ts b/packages/internal/shared/src/hono.ts index 5bb68f20d..6f91ca900 100644 --- a/packages/internal/shared/src/hono.ts +++ b/packages/internal/shared/src/hono.ts @@ -14574,6 +14574,21 @@ declare const _routes: hono_hono_base.HonoBase | hono_types.MergeSchemaPath