settings: add option to disable auto check updates (#279)

This commit is contained in:
Huang Xin
2025-02-01 13:45:55 +01:00
committed by GitHub
parent 44885f2901
commit 6889d6341f
26 changed files with 131 additions and 37 deletions
@@ -6,7 +6,7 @@ import { PiUserCircleCheck } from 'react-icons/pi';
import { MdCheck } from 'react-icons/md';
import { setAboutDialogVisible } from '@/components/AboutWindow';
import { isWebAppPlatform } from '@/services/environment';
import { hasUpdater, isWebAppPlatform } from '@/services/environment';
import { DOWNLOAD_READEST_URL } from '@/services/constants';
import { useAuth } from '@/context/AuthContext';
import { useEnv } from '@/context/EnvContext';
@@ -30,6 +30,7 @@ const SettingsMenu: React.FC<BookMenuProps> = ({ setIsDropdownOpen }) => {
const { settings, setSettings, saveSettings } = useSettingsStore();
const [quotas, setQuotas] = React.useState<QuotaType[]>([]);
const [isAutoUpload, setIsAutoUpload] = useState(settings.autoUpload);
const [isAutoCheckUpdates, setIsAutoCheckUpdates] = useState(settings.autoCheckUpdates);
const showAboutReadest = () => {
setAboutDialogVisible(true);
@@ -69,6 +70,13 @@ const SettingsMenu: React.FC<BookMenuProps> = ({ setIsDropdownOpen }) => {
}
};
const toggleAutoCheckUpdates = () => {
settings.autoCheckUpdates = !settings.autoCheckUpdates;
setSettings(settings);
saveSettings(envConfig, settings);
setIsAutoCheckUpdates(settings.autoCheckUpdates);
};
useEffect(() => {
if (!user || !token) return;
const storagPlan = getStoragePlanData(token);
@@ -131,6 +139,13 @@ const SettingsMenu: React.FC<BookMenuProps> = ({ setIsDropdownOpen }) => {
icon={isAutoUpload ? <MdCheck className='text-base-content' /> : undefined}
onClick={toggleAutoUploadBooks}
/>
{hasUpdater() && (
<MenuItem
label={_('Check Updates on Start')}
icon={isAutoCheckUpdates ? <MdCheck className='text-base-content' /> : undefined}
onClick={toggleAutoCheckUpdates}
/>
)}
<hr className='border-base-200 my-1' />
<MenuItem label={_('Reload Page')} onClick={handleReloadPage} />
<hr className='border-base-200 my-1' />
+8 -4
View File
@@ -63,14 +63,18 @@ const LibraryPage = () => {
useEffect(() => {
updateAppTheme('base-200');
const doAppUpdates = async () => {
if (hasUpdater()) {
// eslint-disable-next-line react-hooks/exhaustive-deps
}, []);
useEffect(() => {
const doCheckAppUpdates = async () => {
if (hasUpdater() && settings.autoCheckUpdates) {
await checkForAppUpdates(_);
}
};
doAppUpdates();
doCheckAppUpdates();
// eslint-disable-next-line react-hooks/exhaustive-deps
}, []);
}, [settings]);
const processOpenWithFiles = React.useCallback(
async (appService: AppService, openWithFiles: string[], libraryBooks: Book[]) => {
+8 -4
View File
@@ -5,20 +5,24 @@ import { useTheme } from '@/hooks/useTheme';
import { hasUpdater } from '@/services/environment';
import { checkForAppUpdates } from '@/helpers/updater';
import { useTranslation } from '@/hooks/useTranslation';
import { useSettingsStore } from '@/store/settingsStore';
import Reader from './components/Reader';
export default function Page() {
const _ = useTranslation();
const { settings } = useSettingsStore();
useTheme();
useEffect(() => {
const doAppUpdates = async () => {
if (hasUpdater()) {
const doCheckAppUpdates = async () => {
if (hasUpdater() && settings.autoCheckUpdates) {
await checkForAppUpdates(_);
}
};
doAppUpdates();
doCheckAppUpdates();
// eslint-disable-next-line react-hooks/exhaustive-deps
}, []);
}, [settings]);
return <Reader />;
}