Some captcha fixes

filtering
Floens 10 years ago
parent dd0371f38a
commit f02cc1636e
  1. 15
      Clover/app/src/main/assets/captcha/captcha.html
  2. 4
      Clover/app/src/main/java/org/floens/chan/ui/fragment/ReplyFragment.java
  3. 18
      Clover/app/src/main/java/org/floens/chan/ui/layout/CaptchaLayout.java

@ -3,14 +3,6 @@
<head>
<meta name=viewport content="width=device-width, initial-scale=1">
<style type="text/css">
body.light {
background: #ffffff;
}
body.dark {
background: #000000;
}
#loadingCaptcha {
font-family: sans-serif;
font-size: 20px;
@ -18,8 +10,9 @@
</style>
<script src='https://www.google.com/recaptcha/api.js?onload=globalOnCaptchaLoaded&render=explicit'></script>
</head>
<body class="__theme__">
<body>
<div id="captcha-loading">Loading captcha...</div>
<div id="captcha-error"></div>
<div id="captcha-container"></div>
<script type="text/javascript">
@ -36,6 +29,10 @@ window.globalOnCaptchaLoaded = function() {
CaptchaCallback.onCaptchaLoaded();
document.getElementById('captcha-loading').style.display = 'none';
}
window.onerror = function(message, url, line) {
document.getElementById('captcha-error').appendChild(document.createTextNode(line + ': ' + message + ' @ ' + url));
}
</script>
</body>
</html>

@ -204,7 +204,7 @@ public class ReplyFragment extends DialogFragment implements CaptchaLayout.Captc
String baseUrl = loadable.isThreadMode() ? ChanUrls.getThreadUrlDesktop(loadable.board, loadable.no) : ChanUrls.getBoardUrlDesktop(loadable.board);
captchaLayout.initCaptcha(baseUrl, ChanUrls.getCaptchaSiteKey(),
ThemeHelper.getInstance().getTheme().isLightTheme, ChanApplication.getReplyManager().getUserAgent(), this);
ThemeHelper.getInstance().getTheme().isLightTheme, ChanApplication.getInstance().getUserAgent(), this);
} else {
Logger.e(TAG, "Loadable in ReplyFragment was null");
closeReply();
@ -578,11 +578,11 @@ public class ReplyFragment extends DialogFragment implements CaptchaLayout.Captc
cancelButton.setEnabled(true);
setClosable(true);
captchaResponse = null;
captchaLayout.reset();
if (ChanPreferences.getPassEnabled()) {
flipPage(0);
} else {
flipPage(1);
captchaLayout.reset();
}
} else if (response.isSuccessful) {
shouldSaveDraft = false;

@ -21,7 +21,10 @@ import android.annotation.SuppressLint;
import android.content.Context;
import android.text.TextUtils;
import android.util.AttributeSet;
import android.util.Log;
import android.webkit.ConsoleMessage;
import android.webkit.JavascriptInterface;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
@ -29,6 +32,8 @@ import org.floens.chan.utils.IOUtils;
import org.floens.chan.utils.Utils;
public class CaptchaLayout extends WebView {
private static final String TAG = "CaptchaLayout";
private CaptchaCallback callback;
private boolean loaded = false;
private String baseUrl;
@ -58,6 +63,15 @@ public class CaptchaLayout extends WebView {
settings.setJavaScriptEnabled(true);
settings.setUserAgentString(userAgent);
setWebChromeClient(new WebChromeClient() {
@Override
public boolean onConsoleMessage(ConsoleMessage consoleMessage) {
Log.i(TAG, consoleMessage.lineNumber() + ":" + consoleMessage.message() + " " + consoleMessage.sourceId());
return true;
}
});
setBackgroundColor(0x00000000);
addJavascriptInterface(new CaptchaInterface(this), "CaptchaCallback");
}
@ -94,9 +108,9 @@ public class CaptchaLayout extends WebView {
}
public interface CaptchaCallback {
public void captchaLoaded(CaptchaLayout captchaLayout);
void captchaLoaded(CaptchaLayout captchaLayout);
public void captchaEntered(CaptchaLayout captchaLayout, String response);
void captchaEntered(CaptchaLayout captchaLayout, String response);
}
public static class CaptchaInterface {

Loading…
Cancel
Save