import { githubLinks } from "@/data/links"; import { analyticsPermission } from "@/features/analytics"; import extLink from "@/utils/extLink"; import * as fui from "@fluentui/react-components"; import { settingsForReview } from "../utils/showSettingsReviewDialog"; import { reviewSettings } from "../utils/setSettingsReviewNeeded"; import { Unwatch } from "wxt/storage"; import { thumbnailCaptureEnabled } from "@/features/collectionStorage"; export default function SettingsReviewDialog(): React.ReactElement { const [allowAnalytics, setAllowAnalytics] = useState(null); const [captureThumbnails, setCaptureThumbnails] = useState(null); const [needsReview, setNeedsReview] = useState([]); const cls = useStyles(); useEffect(() => { analyticsPermission.getValue().then(setAllowAnalytics); thumbnailCaptureEnabled.getValue().then(setCaptureThumbnails); settingsForReview.getValue().then(setNeedsReview); const unwatchAnalytics: Unwatch = analyticsPermission.watch(setAllowAnalytics); const unwatchThumbnails: Unwatch = thumbnailCaptureEnabled.watch(setCaptureThumbnails); return () => { unwatchAnalytics(); unwatchThumbnails(); }; }, []); const updateAnalytics = (enabled: boolean): void => { setAllowAnalytics(null); analyticsPermission.setValue(enabled) .catch(() => setAllowAnalytics(!enabled)); }; const updateThumbnails = (enabled: boolean): void => { setCaptureThumbnails(null); thumbnailCaptureEnabled.setValue(enabled) .catch(() => setCaptureThumbnails(!enabled)); }; return ( { i18n.t("features.settingsReview.title") } { needsReview.includes(reviewSettings.THUMBNAILS) &&
updateThumbnails(e.checked as boolean) } /> { i18n.t("options_page.storage.thumbnail_capture_notice1") } { i18n.t("options_page.storage.thumbnail_capture_notice2") }
} { needsReview.includes(reviewSettings.ANALYTICS) &&
updateAnalytics(e.checked as boolean) } /> { i18n.t("features.settingsReview.analytics.title") } { i18n.t("features.settingsReview.analytics.p1") } { i18n.t("features.settingsReview.analytics.p2") } { i18n.t("features.settingsReview.analytics.p3_text") } { i18n.t("features.settingsReview.analytics.p3_link") }.
}
browser.runtime.openOptionsPage() }> { i18n.t("features.settingsReview.action") } { i18n.t("common.actions.save") }
); } const useStyles = fui.makeStyles({ content: { display: "flex", flexFlow: "column", gap: fui.tokens.spacingVerticalL }, section: { display: "flex", flexFlow: "column", gap: fui.tokens.spacingVerticalXS }, msgBarBody: { display: "flex", flexFlow: "column", gap: fui.tokens.spacingVerticalXS, marginBottom: fui.tokens.spacingVerticalXS } });