diff --git a/icons/mgc/photo_album_cute_fi.svg b/icons/mgc/photo_album_cute_fi.svg
new file mode 100644
index 0000000000..a96ad87def
--- /dev/null
+++ b/icons/mgc/photo_album_cute_fi.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/locales/app/en.json b/locales/app/en.json
index 5fce7280cb..6498ff6d60 100644
--- a/locales/app/en.json
+++ b/locales/app/en.json
@@ -35,12 +35,14 @@
"entry_actions.tip": "Tip",
"entry_actions.unstar": "Unstar",
"entry_actions.unstarred": "Unstarred.",
+ "entry_column.filtered_content_tip": "You have filtered content hidden.",
+ "entry_column.filtered_content_tip_2": "In addition to the entries shown above, there is also filtered content.",
"entry_column.refreshing": "Refreshing new entries...",
"entry_content.ai_summary": "AI summary",
"entry_content.fetching_content": "Fetching original content and processing...",
"entry_content.header.play_tts": "Play TTS",
"entry_content.header.readability": "Readability",
- "entry_content.no_content": "No content",
+ "entry_content.no_content": "No media available",
"entry_content.readability_notice": "This content is provided by Readability. If you find typographical anomalies, please go to the source site to view the original content.",
"entry_content.render_error": "Render error:",
"entry_content.report_issue": "Report issue",
diff --git a/src/renderer/src/modules/entry-column/Items/picture-item.tsx b/src/renderer/src/modules/entry-column/Items/picture-item.tsx
index b66c845a76..7fe38da146 100644
--- a/src/renderer/src/modules/entry-column/Items/picture-item.tsx
+++ b/src/renderer/src/modules/entry-column/Items/picture-item.tsx
@@ -8,6 +8,7 @@ import { useEntry } from "@renderer/store/entry/hooks"
import { useImageDimensions } from "@renderer/store/image"
import type { PropsWithChildren } from "react"
import { memo, useEffect, useState } from "react"
+import { useTranslation } from "react-i18next"
import { usePreviewMedia } from "../../../components/ui/media/hooks"
import { EntryItemWrapper } from "../layouts/EntryItemWrapper"
@@ -24,6 +25,7 @@ export function PictureItem({ entryId, entryPreview, translation }: UniversalIte
const isActive = useRouteParamsSelector(({ entryId }) => entryId === entry?.entries.id)
+ const { t } = useTranslation()
const previewMedia = usePreviewMedia()
if (!entry) return
return (
@@ -46,7 +48,7 @@ export function PictureItem({ entryId, entryPreview, translation }: UniversalIte
) : (
- No media available
+ {t("entry_content.no_content")}
)}
@@ -97,7 +99,7 @@ export const PictureWaterFallItem = memo(function PictureWaterFallItem({
/>
) : (
-
+
No media available
diff --git a/src/renderer/src/modules/entry-column/index.tsx b/src/renderer/src/modules/entry-column/index.tsx
index b76e195e15..96e0e4bcc6 100644
--- a/src/renderer/src/modules/entry-column/index.tsx
+++ b/src/renderer/src/modules/entry-column/index.tsx
@@ -1,5 +1,5 @@
import { useGeneralSettingKey } from "@renderer/atoms/settings/general"
-import { useUISettingKey } from "@renderer/atoms/settings/ui"
+import { setUISetting, useUISettingKey } from "@renderer/atoms/settings/ui"
import { m } from "@renderer/components/common/Motion"
import { FeedFoundCanBeFollowError } from "@renderer/components/errors/FeedFoundCanBeFollowErrorFallback"
import { FeedNotFound } from "@renderer/components/errors/FeedNotFound"
@@ -248,23 +248,67 @@ const ListGird = ({
}
return virtuosoOptions.data
}, [virtuosoOptions.data, filterNoImage])
+ const { t } = useTranslation()
+ if (nextData.length === 0 && virtuosoOptions.data.length > 0) {
+ return (
+
+
+
+ {t("entry_column.filtered_content_tip")}
+
+
+
+
+ )
+ }
+
+ const hasFilteredContent = nextData.length < virtuosoOptions.data.length
+
+ const FilteredContentTip = hasFilteredContent && (
+
+
+
{t("entry_column.filtered_content_tip_2")}
+
+
+
+ )
+
if (masonry && view === FeedViewType.Pictures) {
return (
-
virtuosoOptions.data.length}
- endReached={virtuosoOptions.endReached}
- data={nextData}
- />
+ <>
+ virtuosoOptions.data.length}
+ endReached={virtuosoOptions.endReached}
+ data={nextData}
+ />
+
+ {FilteredContentTip}
+ >
)
}
return (
-
+ <>
+
+ {FilteredContentTip}
+ >
)
}
diff --git a/src/renderer/src/modules/entry-column/layouts/EntryListHeader.tsx b/src/renderer/src/modules/entry-column/layouts/EntryListHeader.tsx
index 5e558c0796..2f26bac502 100644
--- a/src/renderer/src/modules/entry-column/layouts/EntryListHeader.tsx
+++ b/src/renderer/src/modules/entry-column/layouts/EntryListHeader.tsx
@@ -188,7 +188,7 @@ const FilterNoImageButton = () => {
enabled ? "entry_list_header.show_all_items" : "entry_list_header.hide_no_image_items",
)}
>
-
+
)
}
diff --git a/src/renderer/src/modules/settings/tabs/invitations.tsx b/src/renderer/src/modules/settings/tabs/invitations.tsx
index 2443bf2888..b528b11088 100644
--- a/src/renderer/src/modules/settings/tabs/invitations.tsx
+++ b/src/renderer/src/modules/settings/tabs/invitations.tsx
@@ -80,7 +80,7 @@ export const SettingInvitations = () => {
-
+
{invitations.data?.length ? (
@@ -91,7 +91,7 @@ export const SettingInvitations = () => {
{t("invitation.tableHeaders.creationTime")}
-
+
{t("invitation.tableHeaders.usedBy")}