diff --git a/README.md b/README.md
index 4d7b69ab7..5f806a938 100644
--- a/README.md
+++ b/README.md
@@ -6,6 +6,8 @@ Read in other languages: [Deutsch](docs/README.de-DE.md), [Español](docs/README
ReactFlux is a third-party web frontend for [Miniflux](https://github.com/miniflux/v2), aimed at providing a more user-friendly reading experience.
+Supported Miniflux versions: 2.1.4 and higher.
+
Key features include:
- Modern interface design
diff --git a/docs/README.de-DE.md b/docs/README.de-DE.md
index edbc13b5e..39c419b7a 100644
--- a/docs/README.de-DE.md
+++ b/docs/README.de-DE.md
@@ -6,6 +6,8 @@ In anderen Sprachen lesen: [English](../README.md), [Español](README.es-ES.md),
ReactFlux ist ein Drittanbieter-Web-Frontend für [Miniflux](https://github.com/miniflux/v2), das ein benutzerfreundlicheres Leseerlebnis bieten soll.
+Unterstützte Miniflux-Versionen: 2.1.4 und höher.
+
Die wichtigsten Merkmale sind:
- Modernes Oberflächendesign
diff --git a/docs/README.es-ES.md b/docs/README.es-ES.md
index 84499e3af..904b73a28 100644
--- a/docs/README.es-ES.md
+++ b/docs/README.es-ES.md
@@ -6,6 +6,8 @@ Lea este texto en otros idiomas: [Deutsch](README.de-DE.md), [English](../README
ReactFlux es una interfaz web de terceros para [Miniflux](https://github.com/miniflux/v2), cuyo objetivo es proporcionar una experiencia de lectura más fácil de usar.
+Versiones de Miniflux compatibles: 2.1.4 y superiores.
+
Las funcionalidades clave incluyen:
- Diseño de interfaz moderna
diff --git a/docs/README.fr-FR.md b/docs/README.fr-FR.md
index 3988a4921..5962be0c7 100644
--- a/docs/README.fr-FR.md
+++ b/docs/README.fr-FR.md
@@ -6,6 +6,8 @@ Lire dans d'autres langues : [Deutsch](README.de-DE.md), [English](../README.md)
ReactFlux est une interface web tierce pour [Miniflux](https://github.com/miniflux/v2), visant à offrir une expérience de lecture plus conviviale.
+Versions Miniflux prises en charge : 2.1.4 et supérieures.
+
Les fonctionnalités principales incluent :
- Design d'interface moderne
diff --git a/docs/README.zh-CN.md b/docs/README.zh-CN.md
index af6aeea92..10f91e270 100644
--- a/docs/README.zh-CN.md
+++ b/docs/README.zh-CN.md
@@ -6,6 +6,8 @@
ReactFlux 是 [Miniflux](https://github.com/miniflux/v2) 的第三方 Web 前端,旨在提供更加友好的阅读体验。
+支持的 Miniflux 版本:2.1.4 及更高版本。
+
主要特性包括:
- 现代化的界面设计
diff --git a/src/apis/categories.js b/src/apis/categories.js
index 8f4786cd5..cbdc9316d 100644
--- a/src/apis/categories.js
+++ b/src/apis/categories.js
@@ -1,5 +1,8 @@
import apiClient from "./ofetch"
+import { dataState } from "@/store/dataState"
+import compareVersions from "@/utils/version"
+
export const getCategories = async () => apiClient.get("/v1/categories")
export const addCategory = async (title) => apiClient.post("/v1/categories", { title })
@@ -8,7 +11,17 @@ export const deleteCategory = async (id) =>
apiClient.raw(`/v1/categories/${id}`, { method: "DELETE" })
export const updateCategory = async (id, newTitle, hidden = false) => {
- const params = { title: newTitle, hide_globally: hidden ? "on" : undefined }
+ const { version } = dataState.get()
+
+ let hide_globally
+
+ if (compareVersions(version, "2.2.8") >= 0) {
+ hide_globally = hidden
+ } else {
+ hide_globally = hidden ? "on" : undefined
+ }
+
+ const params = { title: newTitle, hide_globally }
return apiClient.put(`/v1/categories/${id}`, params)
}
diff --git a/src/apis/entries.js b/src/apis/entries.js
index 1513f2bae..519fa59ac 100644
--- a/src/apis/entries.js
+++ b/src/apis/entries.js
@@ -13,8 +13,11 @@ export const updateEntriesStatus = async (entryIds, newStatus) =>
export const toggleEntryStarred = async (entryId) =>
apiClient.put(`/v1/entries/${entryId}/bookmark`)
-export const getOriginalContent = async (entryId) =>
- apiClient.get(`/v1/entries/${entryId}/fetch-content`)
+export const getOriginalContent = async (entryId) => {
+ const { updateContentOnFetch } = getSettings("updateContentOnFetch")
+ const queryParams = updateContentOnFetch ? "?update_content=true" : ""
+ return apiClient.get(`/v1/entries/${entryId}/fetch-content${queryParams}`)
+}
export const saveToThirdPartyServices = async (entryId) =>
apiClient.raw(`/v1/entries/${entryId}/save`, { method: "POST" })
diff --git a/src/components/Settings/General.jsx b/src/components/Settings/General.jsx
index d0a1cdc62..1f0e7a3ca 100644
--- a/src/components/Settings/General.jsx
+++ b/src/components/Settings/General.jsx
@@ -5,7 +5,9 @@ import SettingItem from "./SettingItem"
import { polyglotState } from "@/hooks/useLanguage"
import useScreenWidth from "@/hooks/useScreenWidth"
+import { dataState } from "@/store/dataState"
import { settingsState, updateSettings } from "@/store/settingsState"
+import compareVersions from "@/utils/version"
const languageOptions = [
{ label: "Deutsch", value: "de-DE" },
@@ -16,6 +18,7 @@ const languageOptions = [
]
const General = () => {
+ const { version } = useStore(dataState)
const {
enableSwipeGesture,
homePage,
@@ -26,6 +29,7 @@ const General = () => {
pageSize,
removeDuplicates,
swipeSensitivity,
+ updateContentOnFetch,
} = useStore(settingsState)
const { polyglot } = useStore(polyglotState)
const { isBelowMedium } = useScreenWidth()
@@ -190,6 +194,22 @@ const General = () => {
/>
+ {compareVersions(version, "2.2.8") >= 0 && (
+ <>
+
+
+
+ updateSettings({ updateContentOnFetch: value })}
+ />
+
+ >
+ )}
+
{isBelowMedium && (
<>
diff --git a/src/hooks/useEntryActions.js b/src/hooks/useEntryActions.js
index 09b6640ca..03b9d8f0e 100644
--- a/src/hooks/useEntryActions.js
+++ b/src/hooks/useEntryActions.js
@@ -143,7 +143,9 @@ const useEntryActions = () => {
try {
const response = await getOriginalContent(activeContent.id)
Message.success(polyglot.t("actions.fetched_content_success"))
- setActiveContent({ ...activeContent, content: response.content })
+ const newContent = response.content
+ const newReadingTime = response.reading_time ?? activeContent.reading_time
+ setActiveContent({ ...activeContent, content: newContent, readingTime: newReadingTime })
} catch (error) {
console.error("Failed to fetch content: ", error)
Message.error(polyglot.t("actions.fetched_content_error"))
diff --git a/src/locales/de-DE.json b/src/locales/de-DE.json
index 52b84f1e7..ff5eceb58 100644
--- a/src/locales/de-DE.json
+++ b/src/locales/de-DE.json
@@ -225,8 +225,10 @@
"mark_read_on_view": "Ansehen",
"enable_swipe_gesture_description": "Swipe-Geste nach links und rechts zum Wechseln von Artikeln aktivieren",
"enable_swipe_gesture_label": "Swipe-Geste aktivieren",
- "swipe_sensitivity_description": "Swipe-Geste-Empfindlichkeit anpassen",
- "swipe_sensitivity_label": "Swipe-Geste-Empfindlichkeit"
+ "swipe_sensitivity_description": "Empfindlichkeit der Wischgesten anpassen",
+ "swipe_sensitivity_label": "Wischempfindlichkeit",
+ "update_content_on_fetch_label": "Abgerufene Inhalte automatisch speichern",
+ "update_content_on_fetch_description": "Abgerufene Inhalte automatisch aktualisieren und in der Datenbank speichern"
},
"appearance": {
"theme_color_label": "Themenfarbe",
diff --git a/src/locales/en-US.json b/src/locales/en-US.json
index 41ccb9d7c..ca9498f0c 100644
--- a/src/locales/en-US.json
+++ b/src/locales/en-US.json
@@ -225,8 +225,10 @@
"mark_read_on_view": "View",
"enable_swipe_gesture_description": "Enable swipe gesture to switch articles",
"enable_swipe_gesture_label": "Enable swipe gesture",
- "swipe_sensitivity_description": "Adjust swipe gesture sensitivity",
- "swipe_sensitivity_label": "Swipe sensitivity"
+ "swipe_sensitivity_description": "Adjust the sensitivity of swipe gestures",
+ "swipe_sensitivity_label": "Swipe sensitivity",
+ "update_content_on_fetch_label": "Auto-save fetched content",
+ "update_content_on_fetch_description": "Automatically update and save fetched content to database"
},
"appearance": {
"theme_color_label": "Theme color",
diff --git a/src/locales/es-ES.json b/src/locales/es-ES.json
index 11d435782..37b5e0449 100644
--- a/src/locales/es-ES.json
+++ b/src/locales/es-ES.json
@@ -225,8 +225,10 @@
"mark_read_on_view": "Ver",
"enable_swipe_gesture_description": "Habilitar gesto de deslizamiento para cambiar artículos",
"enable_swipe_gesture_label": "Habilitar gesto de deslizamiento",
- "swipe_sensitivity_description": "Ajustar la sensibilidad del gesto de deslizamiento",
- "swipe_sensitivity_label": "Sensibilidad del deslizamiento"
+ "swipe_sensitivity_description": "Ajustar la sensibilidad de los gestos de deslizamiento",
+ "swipe_sensitivity_label": "Sensibilidad de deslizamiento",
+ "update_content_on_fetch_label": "Guardar automáticamente el contenido obtenido",
+ "update_content_on_fetch_description": "Actualizar y guardar automáticamente el contenido obtenido en la base de datos"
},
"appearance": {
"theme_color_label": "Color del tema",
diff --git a/src/locales/fr-FR.json b/src/locales/fr-FR.json
index fc0cc09c0..d4f1d9214 100644
--- a/src/locales/fr-FR.json
+++ b/src/locales/fr-FR.json
@@ -225,8 +225,10 @@
"mark_read_on_view": "Voir",
"enable_swipe_gesture_description": "Activer le geste de balayage pour changer d'article",
"enable_swipe_gesture_label": "Activer le geste de balayage",
- "swipe_sensitivity_description": "Ajuster la sensibilité du geste de balayage",
- "swipe_sensitivity_label": "Sensibilité du balayage"
+ "swipe_sensitivity_description": "Ajuster la sensibilité des gestes de balayage",
+ "swipe_sensitivity_label": "Sensibilité du balayage",
+ "update_content_on_fetch_label": "Enregistrer automatiquement le contenu récupéré",
+ "update_content_on_fetch_description": "Mettre à jour et enregistrer automatiquement le contenu récupéré dans la base de données"
},
"appearance": {
"theme_color_label": "Couleur du thème",
diff --git a/src/locales/zh-CN.json b/src/locales/zh-CN.json
index 4d7815c65..4ebda00eb 100644
--- a/src/locales/zh-CN.json
+++ b/src/locales/zh-CN.json
@@ -226,7 +226,9 @@
"enable_swipe_gesture_description": "启用左右滑动手势来切换文章",
"enable_swipe_gesture_label": "启用滑动手势",
"swipe_sensitivity_description": "调整滑动手势的灵敏度",
- "swipe_sensitivity_label": "滑动灵敏度"
+ "swipe_sensitivity_label": "滑动灵敏度",
+ "update_content_on_fetch_label": "获取原文时自动保存",
+ "update_content_on_fetch_description": "获取原文时自动更新并保存到数据库"
},
"appearance": {
"theme_color_label": "主题颜色",
diff --git a/src/store/settingsState.js b/src/store/settingsState.js
index 72383d8fa..913a8b1c6 100644
--- a/src/store/settingsState.js
+++ b/src/store/settingsState.js
@@ -27,6 +27,7 @@ const defaultValue = {
themeColor: "Blue",
themeMode: "system",
titleAlignment: "center",
+ updateContentOnFetch: false,
}
export const settingsState = persistentAtom("settings", defaultValue, {