diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/login/LibrusLoginPortal.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/login/LibrusLoginPortal.kt index e8e00950..68fa64ae 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/login/LibrusLoginPortal.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/login/LibrusLoginPortal.kt @@ -144,18 +144,14 @@ class LibrusLoginPortal(val data: DataLibrus, val onSuccess: () -> Unit) { .withResponse(response)) return } - if (json.getBoolean("captchaRequired") == true) { - data.error(ApiError(TAG, ERROR_CAPTCHA_LIBRUS_PORTAL) - .withResponse(response) - .withApiResponse(json)) - return - } val error = if (response.code() == 200) null else json.getJsonArray("errors")?.getString(0) error?.let { code -> when { code.contains("Sesja logowania wygasła") -> ERROR_LOGIN_LIBRUS_PORTAL_CSRF_EXPIRED code.contains("Upewnij się, że nie") -> ERROR_LOGIN_LIBRUS_PORTAL_INVALID_LOGIN + // this doesn't work anyway: `errors` is an object with `g-recaptcha-response` set + code.contains("robotem") -> ERROR_CAPTCHA_LIBRUS_PORTAL else -> ERROR_LOGIN_LIBRUS_PORTAL_ACTION_ERROR }.let { errorCode -> data.error(ApiError(TAG, errorCode) @@ -164,6 +160,12 @@ class LibrusLoginPortal(val data: DataLibrus, val onSuccess: () -> Unit) { return } } + if (json.getBoolean("captchaRequired") == true) { + data.error(ApiError(TAG, ERROR_CAPTCHA_LIBRUS_PORTAL) + .withResponse(response) + .withApiResponse(json)) + return + } authorize(json.getString("redirect", LIBRUS_AUTHORIZE_URL)) } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/utils/CheckableImageView.java b/app/src/main/java/pl/szczodrzynski/edziennik/utils/CheckableImageView.java index 8765c7e1..593c7b10 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/utils/CheckableImageView.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/utils/CheckableImageView.java @@ -46,6 +46,12 @@ public class CheckableImageView extends AppCompatImageView implements Checkable return drawableState; } + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + super.onMeasure(widthMeasureSpec, heightMeasureSpec); + setMeasuredDimension(getMeasuredWidth(), getMeasuredWidth()); + } + @Override public void toggle() { setChecked(!checked); } diff --git a/app/src/main/res/layout/recaptcha_dialog.xml b/app/src/main/res/layout/recaptcha_dialog.xml index 221883f7..f5465ff5 100644 --- a/app/src/main/res/layout/recaptcha_dialog.xml +++ b/app/src/main/res/layout/recaptcha_dialog.xml @@ -7,7 +7,7 @@ xmlns:tools="http://schemas.android.com/tools"> @@ -39,30 +39,32 @@ @@ -75,7 +77,8 @@ @@ -88,7 +91,8 @@ @@ -100,14 +104,15 @@ android:background="?colorSurface" /> @@ -120,7 +125,8 @@ @@ -133,7 +139,8 @@ @@ -145,14 +152,15 @@ android:background="?colorSurface" /> @@ -165,7 +173,8 @@ @@ -178,7 +187,8 @@ diff --git a/app/src/main/res/layout/recaptcha_view.xml b/app/src/main/res/layout/recaptcha_view.xml index 86cc71db..dba7824b 100644 --- a/app/src/main/res/layout/recaptcha_view.xml +++ b/app/src/main/res/layout/recaptcha_view.xml @@ -13,7 +13,7 @@ android:paddingRight="16dp" android:paddingBottom="8dp">