+ {t("global.keyboardShortcuts.clickToEdit")} +
++ {conflicts.length}{" "} + {conflicts.length > 1 + ? t("global.keyboardShortcuts.conflicts") + : t("global.keyboardShortcuts.conflict")}{" "} + {t("global.keyboardShortcuts.detected")} +
+ ) : ( + // Empty div to take up space + )} + ++ +
{t("home.support.explanation")}
+
+ {t("home.support.explanation2")}{" "}
+
+ {t("home.support.description")} +
++ {t("settings.appearance.options.minimalCards")} +
++ {t("settings.appearance.options.minimalCardsDescription")} +
++ {t("settings.appearance.options.minimalCardsLabel")} +
+
diff --git a/src/pages/parts/settings/ConnectionsPart.tsx b/src/pages/parts/settings/ConnectionsPart.tsx
index c0888c3d..443b916a 100644
--- a/src/pages/parts/settings/ConnectionsPart.tsx
+++ b/src/pages/parts/settings/ConnectionsPart.tsx
@@ -24,6 +24,7 @@ import { Heading1, Heading2, Paragraph } from "@/components/utils/Text";
import {
SetupPart,
Status,
+ fetchFebboxQuota,
testFebboxKey,
testTorboxToken,
testdebridToken,
@@ -237,9 +238,10 @@ function BackendEdit({ backendUrl, setBackendUrl }: BackendEditProps) {
async function getFebboxKeyStatus(febboxKey: string | null) {
if (febboxKey) {
const status: Status = await testFebboxKey(febboxKey);
- return status;
+ const quota = await fetchFebboxQuota(febboxKey);
+ return { status, quota };
}
- return "unset";
+ return { status: "unset" as Status, quota: null };
}
interface FebboxSetupProps extends FebboxKeyProps {
@@ -282,6 +284,7 @@ export function FebboxSetup({
}, [user.account, febboxKey, preferences.febboxKey, setFebboxKey, mode]);
const [status, setStatus] = useState
-
+ {t("fedapi.setup.traffic", { used, limit, reset })} +
++ {t("fedapi.setup.trafficExplanation")} +
+ > + ); + })()} > ) : null} diff --git a/src/pages/parts/settings/PreferencesPart.tsx b/src/pages/parts/settings/PreferencesPart.tsx index 150ee1f9..cb387d9d 100644 --- a/src/pages/parts/settings/PreferencesPart.tsx +++ b/src/pages/parts/settings/PreferencesPart.tsx @@ -8,9 +8,10 @@ import { Button } from "@/components/buttons/Button"; import { Toggle } from "@/components/buttons/Toggle"; import { FlagIcon } from "@/components/FlagIcon"; import { Dropdown } from "@/components/form/Dropdown"; -import { SortableListWithToggles } from "@/components/form/SortableListWithToggles"; +import { SortableList } from "@/components/form/SortableList"; import { Heading1 } from "@/components/utils/Text"; import { appLanguageOptions } from "@/setup/i18n"; +import { useOverlayStack } from "@/stores/interface/overlayStack"; import { isAutoplayAllowed } from "@/utils/autoplay"; import { getLocaleInfo, sortLangCodes } from "@/utils/language"; @@ -29,8 +30,6 @@ export function PreferencesPart(props: { setenableSourceOrder: (v: boolean) => void; enableLastSuccessfulSource: boolean; setEnableLastSuccessfulSource: (v: boolean) => void; - disabledSources: string[]; - setDisabledSources: (v: string[]) => void; enableLowPerformanceMode: boolean; setEnableLowPerformanceMode: (v: boolean) => void; enableHoldToBoost: boolean; @@ -43,6 +42,7 @@ export function PreferencesPart(props: { setEnableAutoResumeOnPlaybackError: (v: boolean) => void; }) { const { t } = useTranslation(); + const { showModal } = useOverlayStack(); const sorted = sortLangCodes(appLanguageOptions.map((item) => item.code)); const allowAutoplay = isAutoplayAllowed(); @@ -67,9 +67,8 @@ export function PreferencesPart(props: { id, name: allSources.find((s) => s.id === id)?.name || id, disabled: !currentDeviceSources.find((s) => s.id === id), - enabled: !props.disabledSources.includes(id), })); - }, [props.sourceOrder, props.disabledSources, allSources]); + }, [props.sourceOrder, allSources]); const navigate = useNavigate(); @@ -77,13 +76,6 @@ export function PreferencesPart(props: { props.setEnableLowPerformanceMode(!props.enableLowPerformanceMode); }; - const handleSourceToggle = (sourceId: string) => { - const newDisabledSources = props.disabledSources.includes(sourceId) - ? props.disabledSources.filter((id) => id !== sourceId) - : [...props.disabledSources, sourceId]; - props.setDisabledSources(newDisabledSources); - }; - return (+ {t("settings.preferences.keyboardShortcuts")} +
++ {t("settings.preferences.keyboardShortcutsDescription")} +
+