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, {