diff --git a/Clover/app/src/main/java/org/floens/chan/core/settings/ChanSettings.java b/Clover/app/src/main/java/org/floens/chan/core/settings/ChanSettings.java
index cb1624c0..638e0585 100644
--- a/Clover/app/src/main/java/org/floens/chan/core/settings/ChanSettings.java
+++ b/Clover/app/src/main/java/org/floens/chan/core/settings/ChanSettings.java
@@ -160,6 +160,8 @@ public class ChanSettings {
public static final LongSetting updateCheckInterval;
public static final BooleanSetting crashReporting;
+ public static final BooleanSetting useNewCaptchaWindow;
+ public static final BooleanSetting useRealGoogleCookies;
static {
SettingProvider p = new SharedPreferencesSettingProvider(AndroidUtils.getPreferences());
@@ -250,6 +252,8 @@ public class ChanSettings {
updateCheckInterval = new LongSetting(p, "update_check_interval", UpdateManager.DEFAULT_UPDATE_CHECK_INTERVAL_MS);
crashReporting = new BooleanSetting(p, "preference_crash_reporting", true);
+ useNewCaptchaWindow = new BooleanSetting(p, "use_new_captcha_window", true);
+ useRealGoogleCookies = new BooleanSetting(p, "use_real_google_cookies", false);
// Old (but possibly still in some users phone)
// preference_board_view_mode default "list"
diff --git a/Clover/app/src/main/java/org/floens/chan/ui/captcha/v2/CaptchaNoJsPresenterV2.java b/Clover/app/src/main/java/org/floens/chan/ui/captcha/v2/CaptchaNoJsPresenterV2.java
index 026b6f79..c0f57b53 100644
--- a/Clover/app/src/main/java/org/floens/chan/ui/captcha/v2/CaptchaNoJsPresenterV2.java
+++ b/Clover/app/src/main/java/org/floens/chan/ui/captcha/v2/CaptchaNoJsPresenterV2.java
@@ -52,7 +52,6 @@ public class CaptchaNoJsPresenterV2 {
private static final int SUCCESS_STATUS_CODE = 200;
private static final long CAPTCHA_REQUEST_THROTTLE_MS = 3000L;
- // this should be updated once in 3 months IIRC
private static final String googleCookies =
"SID=gjaHjfFJPAN5HO3MVVZpjHFKa_249dsfjHa9klsiaflsd99.asHqjsM2lAS; " +
"HSID=j7m0aFJ82lPF7Hd9d; " +
diff --git a/Clover/app/src/main/java/org/floens/chan/ui/controller/BehaviourSettingsController.java b/Clover/app/src/main/java/org/floens/chan/ui/controller/BehaviourSettingsController.java
index 5dfb4b3c..5e88615e 100644
--- a/Clover/app/src/main/java/org/floens/chan/ui/controller/BehaviourSettingsController.java
+++ b/Clover/app/src/main/java/org/floens/chan/ui/controller/BehaviourSettingsController.java
@@ -39,6 +39,7 @@ import static org.floens.chan.Chan.injector;
public class BehaviourSettingsController extends SettingsController {
private SettingView forceEnglishSetting;
+ private SettingView useNewCaptchaWindow;
public BehaviourSettingsController(Context context) {
super(context);
@@ -47,14 +48,10 @@ public class BehaviourSettingsController extends SettingsController {
@Override
public void onCreate() {
super.onCreate();
-
navigation.setTitle(R.string.settings_screen_behavior);
setupLayout();
-
- populatePreferences();
-
- buildPreferences();
+ rebuildPreferences();
}
@Override
@@ -63,10 +60,27 @@ public class BehaviourSettingsController extends SettingsController {
if (item == forceEnglishSetting) {
Toast.makeText(context, R.string.setting_force_english_locale_toggle_notice,
Toast.LENGTH_LONG).show();
+ } else if (item == useNewCaptchaWindow) {
+ // when user disables the new captcha window also disable the usage of the google cookies
+ if (!ChanSettings.useNewCaptchaWindow.get()) {
+ ChanSettings.useRealGoogleCookies.set(false);
+ }
+
+ rebuildPreferences();
}
}
+ private void rebuildPreferences() {
+ populatePreferences();
+ buildPreferences();
+ }
+
private void populatePreferences() {
+ requiresUiRefresh.clear();
+ groups.clear();
+ requiresRestart.clear();
+
+
// General group
{
SettingsGroup general = new SettingsGroup(R.string.settings_group_general);
@@ -152,6 +166,25 @@ public class BehaviourSettingsController extends SettingsController {
groups.add(post);
}
+ // Captcha group
+ {
+ SettingsGroup captcha = new SettingsGroup(R.string.settings_captcha_group);
+
+ useNewCaptchaWindow = captcha.add(new BooleanSettingView(this,
+ ChanSettings.useNewCaptchaWindow,
+ R.string.settings_use_new_captcha_window,
+ 0));
+
+ if (ChanSettings.useNewCaptchaWindow.get()) {
+ captcha.add(new BooleanSettingView(this,
+ ChanSettings.useRealGoogleCookies,
+ R.string.settings_use_real_google_cookies,
+ R.string.settings_use_real_google_cookies_description));
+ }
+
+ groups.add(captcha);
+ }
+
// Proxy group
{
SettingsGroup proxy = new SettingsGroup(R.string.settings_group_proxy);
diff --git a/Clover/app/src/main/java/org/floens/chan/ui/settings/SettingsController.java b/Clover/app/src/main/java/org/floens/chan/ui/settings/SettingsController.java
index 63f7a3a8..0c80b5ba 100644
--- a/Clover/app/src/main/java/org/floens/chan/ui/settings/SettingsController.java
+++ b/Clover/app/src/main/java/org/floens/chan/ui/settings/SettingsController.java
@@ -140,6 +140,8 @@ public class SettingsController extends Controller implements AndroidUtils.OnMea
protected void buildPreferences() {
LayoutInflater inf = LayoutInflater.from(context);
boolean firstGroup = true;
+ content.removeAllViews();
+
for (SettingsGroup group : groups) {
LinearLayout groupLayout = (LinearLayout) inf.inflate(R.layout.setting_group, content, false);
((TextView) groupLayout.findViewById(R.id.header)).setText(group.name);
diff --git a/Clover/app/src/main/res/values/strings.xml b/Clover/app/src/main/res/values/strings.xml
index ed7e8ba4..7978578b 100644
--- a/Clover/app/src/main/res/values/strings.xml
+++ b/Clover/app/src/main/res/values/strings.xml
@@ -577,6 +577,13 @@ Don't have a 4chan Pass?
"
Themes
+
+
+ Captcha
+ Use new captcha window for no-js captcha
+ Use real google cookies instead of hardcoded ones
+ By using the real google cookies a GET request to the google.com will be executed to get the google cookies (SID, HSID, SSID, NID) which will be stored on the device and used for captcha authentication. Why would you need them? Because the hardcoded ones sometimes will make you re-enter the captcha dozens of times. Those cookies will be updated automatically (once in a month). But it will also be possible to update them manually
+
Verify
Reload
Use old captcha