diff --git a/app/src/main/java/com/hippo/ehviewer/Settings.java b/app/src/main/java/com/hippo/ehviewer/Settings.java index bc6dd0111..9bec37bc1 100755 --- a/app/src/main/java/com/hippo/ehviewer/Settings.java +++ b/app/src/main/java/com/hippo/ehviewer/Settings.java @@ -46,6 +46,8 @@ public class Settings { public static final String KEY_ACCOUNT = "account"; public static final String KEY_IMAGE_LIMITS = "image_limits"; + public static final String KEY_U_CONFIG = "uconfig"; + public static final String KEY_MY_TAGS = "mytags"; public static final String KEY_BLACK_DARK_THEME = "black_dark_theme"; public static final int THEME_SYSTEM = -1; public static final String KEY_GALLERY_SITE = "gallery_site"; @@ -53,11 +55,24 @@ public class Settings { public static final String KEY_DETAIL_SIZE = "detail_size"; public static final String KEY_THUMB_SIZE = "thumb_size_"; public static final String KEY_THUMB_RESOLUTION = "thumb_resolution"; + public static final String KEY_SHOW_JPN_TITLE = "show_jpn_title"; public static final String KEY_SHOW_TAG_TRANSLATIONS = "show_tag_translations"; + public static final String KEY_TAG_TRANSLATIONS_SOURCE = "tag_translations_source"; public static final String KEY_DEFAULT_CATEGORIES = "default_categories"; public static final int DEFAULT_DEFAULT_CATEGORIES = EhConfig.ALL_CATEGORY; public static final String KEY_EXCLUDED_TAG_NAMESPACES = "excluded_tag_namespaces"; public static final String KEY_EXCLUDED_LANGUAGES = "excluded_languages"; + public static final String KEY_REQUEST_NEWS = "request_news"; + public static final String KEY_HIDE_HV_EVENTS = "hide_hv_events"; + public static final String[] SIGN_IN_REQUIRED = { + KEY_IMAGE_LIMITS, + KEY_GALLERY_SITE, + KEY_U_CONFIG, + KEY_MY_TAGS, + KEY_SHOW_JPN_TITLE, + KEY_REQUEST_NEWS, + KEY_HIDE_HV_EVENTS + }; /******************** ****** Privacy and Security ********************/ @@ -88,7 +103,6 @@ public class Settings { public static final String KEY_DOMAIN_FRONTING = "domain_fronting"; public static final String KEY_BYPASS_VPN = "bypass_vpn"; public static final String KEY_LIST_THUMB_SIZE = "list_tile_size"; - private static final String KEY_HIDE_HV_EVENTS = "hide_hv_events"; private static final boolean DEFAULT_HIDE_HV_EVENTS = true; private static final String KEY_SHOW_COMMENTS = "show_gallery_comments"; private static final boolean DEFAULT_SHOW_COMMENTS = true; @@ -111,7 +125,6 @@ public class Settings { private static final int DEFAULT_DETAIL_SIZE = 0; private static final int DEFAULT_THUMB_SIZE = 120; private static final int DEFAULT_THUMB_RESOLUTION = 0; - private static final String KEY_SHOW_JPN_TITLE = "show_jpn_title"; private static final boolean DEFAULT_SHOW_JPN_TITLE = false; private static final String KEY_SHOW_GALLERY_PAGES = "show_gallery_pages"; private static final boolean DEFAULT_SHOW_GALLERY_PAGES = false; @@ -192,7 +205,6 @@ public class Settings { private static final int DEFAULT_CLIPBOARD_TEXT_HASH_CODE = 0; private static final String KEY_DOWNLOAD_DELAY = "download_delay"; private static final int DEFAULT_DOWNLOAD_DELAY = 0; - private static final String KEY_REQUEST_NEWS = "request_news"; private static final boolean DEFAULT_REQUEST_NEWS = true; private static final String KEY_ARCHIVE_PASSWDS = "archive_passwds"; private static final String KEY_QS_SAVE_PROGRESS = "qs_save_progress"; diff --git a/app/src/main/java/com/hippo/ehviewer/preference/SignInRequiredPreference.java b/app/src/main/java/com/hippo/ehviewer/preference/SignInRequiredPreference.java deleted file mode 100644 index 9231f3d0e..000000000 --- a/app/src/main/java/com/hippo/ehviewer/preference/SignInRequiredPreference.java +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Copyright 2019 Hippo Seven - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.hippo.ehviewer.preference; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.util.AttributeSet; - -import androidx.preference.Preference; - -import com.hippo.ehviewer.EhApplication; -import com.hippo.ehviewer.R; -import com.hippo.ehviewer.client.EhCookieStore; -import com.hippo.ehviewer.client.EhUrl; -import com.hippo.ehviewer.ui.SettingsActivity; -import com.hippo.ehviewer.ui.scene.BaseScene; - -import okhttp3.HttpUrl; - -public class SignInRequiredPreference extends Preference implements Preference.OnPreferenceClickListener { - - @SuppressLint("StaticFieldLeak") - private SettingsActivity mActivity; - - public SignInRequiredPreference(Context context) { - super(context); - init(context); - } - - public SignInRequiredPreference(Context context, AttributeSet attrs) { - super(context, attrs); - init(context); - } - - public SignInRequiredPreference(Context context, AttributeSet attrs, int defStyleAttr) { - super(context, attrs, defStyleAttr); - init(context); - } - - private void init(Context context) { - mActivity = (SettingsActivity) context; - setOnPreferenceClickListener(this); - } - - @Override - public boolean onPreferenceClick(Preference preference) { - EhCookieStore store = EhApplication.getEhCookieStore(); - HttpUrl e = HttpUrl.get(EhUrl.HOST_E); - HttpUrl ex = HttpUrl.get(EhUrl.HOST_EX); - - if (store.contains(e, EhCookieStore.KEY_IPB_MEMBER_ID) || - store.contains(e, EhCookieStore.KEY_IPB_PASS_HASH) || - store.contains(ex, EhCookieStore.KEY_IPB_MEMBER_ID) || - store.contains(ex, EhCookieStore.KEY_IPB_PASS_HASH)) { - return false; - } else { - mActivity.showTip(R.string.error_please_login_first, BaseScene.LENGTH_SHORT); - return true; - } - } -} diff --git a/app/src/main/java/com/hippo/ehviewer/ui/fragment/EhFragment.kt b/app/src/main/java/com/hippo/ehviewer/ui/fragment/EhFragment.kt index 5234f78a7..9af8911fc 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/fragment/EhFragment.kt +++ b/app/src/main/java/com/hippo/ehviewer/ui/fragment/EhFragment.kt @@ -20,6 +20,7 @@ import android.content.res.Configuration import android.os.Bundle import androidx.annotation.StringRes import androidx.appcompat.app.AppCompatDelegate +import androidx.lifecycle.lifecycleScope import androidx.preference.ListPreference import androidx.preference.Preference import com.hippo.ehviewer.EhApplication @@ -28,13 +29,12 @@ import com.hippo.ehviewer.Settings import com.hippo.ehviewer.client.EhCookieStore import com.hippo.ehviewer.client.EhEngine import com.hippo.ehviewer.client.EhTagDatabase -import eu.kanade.tachiyomi.util.lang.launchIO +import eu.kanade.tachiyomi.util.lang.launchNonCancellable class EhFragment : BasePreferenceFragment() { override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { addPreferencesFromResource(R.xml.eh_settings) val account = findPreference(Settings.KEY_ACCOUNT) - val imageLimits = findPreference(Settings.KEY_IMAGE_LIMITS) val theme = findPreference(Settings.KEY_THEME) val blackDarkTheme = findPreference(Settings.KEY_BLACK_DARK_THEME) val gallerySite = findPreference(Settings.KEY_GALLERY_SITE) @@ -44,7 +44,7 @@ class EhFragment : BasePreferenceFragment() { val thumbSize = findPreference(Settings.KEY_THUMB_SIZE) val thumbResolution = findPreference(Settings.KEY_THUMB_RESOLUTION) val showTagTranslations = findPreference(Settings.KEY_SHOW_TAG_TRANSLATIONS) - val tagTranslationsSource = findPreference("tag_translations_source") + val tagTranslationsSource = findPreference(Settings.KEY_TAG_TRANSLATIONS_SOURCE) Settings.getDisplayName()?.let { account?.summary = it } theme!!.onPreferenceChangeListener = this gallerySite!!.onPreferenceChangeListener = this @@ -62,7 +62,10 @@ class EhFragment : BasePreferenceFragment() { preferenceScreen.removePreference(tagTranslationsSource!!) } if (!EhCookieStore.hasSignedIn()) { - preferenceScreen.removePreference(imageLimits!!) + Settings.SIGN_IN_REQUIRED.forEach { + val preference = findPreference(it) + preferenceScreen.removePreference(preference!!) + } } } @@ -74,7 +77,13 @@ class EhFragment : BasePreferenceFragment() { return true } else if (Settings.KEY_GALLERY_SITE == key) { requireActivity().setResult(Activity.RESULT_OK) - launchIO { runCatching { EhEngine.getUConfig() } } + lifecycleScope.launchNonCancellable { + runCatching { + EhEngine.getUConfig() + }.onFailure { + it.printStackTrace() + } + } return true } else if (Settings.KEY_LIST_MODE == key) { requireActivity().setResult(Activity.RESULT_OK) diff --git a/app/src/main/res/xml/eh_settings.xml b/app/src/main/res/xml/eh_settings.xml index 1c8384476..24800fd68 100644 --- a/app/src/main/res/xml/eh_settings.xml +++ b/app/src/main/res/xml/eh_settings.xml @@ -40,13 +40,13 @@ app:iconSpaceReserved="false" app:useSimpleSummaryProvider="true" /> - -