feat: recommendation modal

This commit is contained in:
DIYgod 2024-06-25 01:22:02 +08:00
parent 48d141a894
commit 1f21877ae2
No known key found for this signature in database
3 changed files with 38 additions and 1 deletions

View File

@ -82,3 +82,5 @@ export type FeedListModel = {
export type SupportedLanguages = Parameters<
typeof apiClient.ai.translation.$get
>[0]["query"]["language"]
export type RecommendationItem = ExtractBizResponse<typeof apiClient.discover.rsshub.$get>["data"][string]

View File

@ -0,0 +1,12 @@
import type { RecommendationItem } from "@renderer/models"
export const RecommendationContent = ({
route,
}: {
route: RecommendationItem["routes"][string]
}) => (
<>
rsshub:/
{route.path}
</>
)

View File

@ -6,13 +6,17 @@ import {
CardHeader,
CardTitle,
} from "@renderer/components/ui/card"
import { useModalStack } from "@renderer/components/ui/modal/stacked/hooks"
import { useBizQuery } from "@renderer/hooks"
import { Queries } from "@renderer/queries"
import { RecommendationContent } from "./recommendation-content"
export function Recommendations() {
const rsshubPopular = useBizQuery(Queries.discover.rsshubCategory({
category: "popular",
}))
const { present } = useModalStack()
return (
<div className="mt-8">
@ -33,7 +37,26 @@ export function Recommendations() {
<CardDescription>
<ul className="space-y-1">
{Object.keys(rsshubPopular.data[key].routes).map((route) => (
<li key={route} className="transition-colors hover:font-medium hover:text-zinc-800">{rsshubPopular.data[key].routes[route].name}</li>
<li
key={route}
className="transition-colors hover:font-medium hover:text-zinc-800"
onClick={() => {
present({
content: () => <RecommendationContent route={rsshubPopular.data[key].routes[route]} />,
title: (
<div className="flex items-center">
<SiteIcon
url={`https://${rsshubPopular.data[key].url}`}
/>
{`${rsshubPopular.data[key].name} - ${rsshubPopular.data[key].routes[route].name}`}
</div>
),
clickOutsideToDismiss: true,
})
}}
>
{rsshubPopular.data[key].routes[route].name}
</li>
))}
</ul>
</CardDescription>