Skip to content

Commit 7f1b7b6

Browse files
Update Shoko News. (#1092)
1 parent 14c474f commit 7f1b7b6

File tree

4 files changed

+21
-15
lines changed

4 files changed

+21
-15
lines changed
+1-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
import type { DashboardNewsType } from '@/core/types/api/dashboard';
22

3-
export const transformShokoNews = (response: { items: DashboardNewsType[] }) => response.items ?? [];
3+
export const transformShokoNews = (response: { results: DashboardNewsType[] }) => response.results ?? [];

src/core/react-query/external/queries.ts

+5-2
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,12 @@ import { transformShokoNews } from '@/core/react-query/external/helpers';
66
import type { DashboardNewsType } from '@/core/types/api/dashboard';
77

88
export const useShokoNewsQuery = () =>
9-
useQuery<{ items?: DashboardNewsType[] }, unknown, DashboardNewsType[]>({
9+
useQuery<{ results?: DashboardNewsType[] }, unknown, DashboardNewsType[]>({
1010
queryKey: ['shoko-news'],
11-
queryFn: () => axios.get('https://shokoanime.com/jsonfeed/index.json'),
11+
queryFn: async () =>
12+
axios.get(
13+
'https://shokoanime.com/api/getFiles?type=blog&offset=0&limit=4&sort=dateDescending',
14+
),
1215
select: transformShokoNews,
1316
retry: 1,
1417
});

src/core/types/api/dashboard.ts

+7-5
Original file line numberDiff line numberDiff line change
@@ -48,9 +48,11 @@ export type DashboardEpisodeDetailsType = {
4848
};
4949

5050
export type DashboardNewsType = {
51-
link: string;
52-
title: string;
53-
content_text: string;
54-
url: string;
55-
date_published: string;
51+
filename: string;
52+
meta: {
53+
link: string;
54+
title: string;
55+
quick: string;
56+
date: string;
57+
};
5658
};

src/pages/dashboard/panels/ShokoNews.tsx

+8-7
Original file line numberDiff line numberDiff line change
@@ -19,23 +19,24 @@ const newNewsCheck = (date: string) => {
1919

2020
const NewsRow = ({ item }: { item: DashboardNewsType }) => {
2121
const { shokoNewsPostsCount } = useSettingsQuery().data.WebUI_Settings.dashboard;
22+
const newsUrl = `https://shokoanime.com/blog/${item.filename.replace('.mdx', '')}`;
2223

2324
return (
24-
<div className="flex flex-col gap-y-1" key={item.title}>
25+
<div className="flex flex-col gap-y-1" key={item.meta.title}>
2526
<div className={cx('flex gap-x-4 justify-between font-semibold', shokoNewsPostsCount > 4 && ('mr-4'))}>
26-
<p>{item.date_published}</p>
27-
{newNewsCheck(item.date_published) && <p className="text-panel-text-important">New!</p>}
27+
<p>{item.meta.date}</p>
28+
{newNewsCheck(item.meta.date) && <p className="text-panel-text-important">New!</p>}
2829
</div>
2930
<a
30-
href={item.link}
31+
href={newsUrl}
3132
rel="noopener noreferrer"
3233
target="_blank"
3334
className="flex items-center space-x-2 font-semibold text-panel-icon-action"
3435
>
35-
<p className="font-semibold">{item.title}</p>
36+
<p className="line-clamp-1 max-w-[350px] font-semibold">{item.meta.title}</p>
3637
<Icon path={mdiOpenInNew} size={1} />
3738
</a>
38-
<p className="text-sm opacity-65">{item.content_text}</p>
39+
<p className="text-sm opacity-65">{item.meta.quick}</p>
3940
</div>
4041
);
4142
};
@@ -48,7 +49,7 @@ function ShokoNews() {
4849
return (
4950
<ShokoPanel title="Shoko News" isFetching={newsQuery.isPending} editMode={layoutEditMode}>
5051
<div className="mr-3 flex flex-col gap-y-4">
51-
{newsQuery.data?.slice(0, shokoNewsPostsCount).map(item => <NewsRow item={item} key={item.link} />)}
52+
{newsQuery.data?.slice(0, shokoNewsPostsCount).map(item => <NewsRow item={item} key={item.meta.title} />)}
5253
</div>
5354
</ShokoPanel>
5455
);

0 commit comments

Comments
 (0)