[Login/Captcha] Update captcha to fit smaller screens. Fix Librus invalid login error with captcha.

This commit is contained in:
Kuba Szczodrzyński 2020-02-26 21:27:03 +01:00
parent f6f1370edf
commit 54121c99a3
4 changed files with 44 additions and 26 deletions

View File

@ -144,18 +144,14 @@ class LibrusLoginPortal(val data: DataLibrus, val onSuccess: () -> Unit) {
.withResponse(response)) .withResponse(response))
return 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 val error = if (response.code() == 200) null else
json.getJsonArray("errors")?.getString(0) json.getJsonArray("errors")?.getString(0)
error?.let { code -> error?.let { code ->
when { when {
code.contains("Sesja logowania wygasła") -> ERROR_LOGIN_LIBRUS_PORTAL_CSRF_EXPIRED code.contains("Sesja logowania wygasła") -> ERROR_LOGIN_LIBRUS_PORTAL_CSRF_EXPIRED
code.contains("Upewnij się, że nie") -> ERROR_LOGIN_LIBRUS_PORTAL_INVALID_LOGIN 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 else -> ERROR_LOGIN_LIBRUS_PORTAL_ACTION_ERROR
}.let { errorCode -> }.let { errorCode ->
data.error(ApiError(TAG, errorCode) data.error(ApiError(TAG, errorCode)
@ -164,6 +160,12 @@ class LibrusLoginPortal(val data: DataLibrus, val onSuccess: () -> Unit) {
return 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)) authorize(json.getString("redirect", LIBRUS_AUTHORIZE_URL))
} }

View File

@ -46,6 +46,12 @@ public class CheckableImageView extends AppCompatImageView implements Checkable
return drawableState; return drawableState;
} }
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
setMeasuredDimension(getMeasuredWidth(), getMeasuredWidth());
}
@Override public void toggle() { @Override public void toggle() {
setChecked(!checked); setChecked(!checked);
} }

View File

@ -7,7 +7,7 @@
xmlns:tools="http://schemas.android.com/tools"> xmlns:tools="http://schemas.android.com/tools">
<LinearLayout <LinearLayout
android:layout_width="386dp" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="vertical"> android:orientation="vertical">
@ -39,30 +39,32 @@
</LinearLayout> </LinearLayout>
<FrameLayout <FrameLayout
android:layout_width="wrap_content" android:layout_width="match_parent"
android:layout_height="wrap_content"> android:layout_height="wrap_content">
<ImageView <ImageView
android:id="@+id/payload" android:id="@+id/payload"
android:layout_width="386dp" android:layout_width="match_parent"
android:layout_height="386dp" android:layout_height="match_parent"
android:scaleType="centerCrop" android:scaleType="fitXY"
android:adjustViewBounds="true"
tools:srcCompat="@tools:sample/backgrounds/scenic[1]" /> tools:srcCompat="@tools:sample/backgrounds/scenic[1]" />
<LinearLayout <LinearLayout
android:layout_width="386dp" android:layout_width="match_parent"
android:layout_height="386dp" android:layout_height="wrap_content"
android:orientation="vertical"> android:orientation="vertical">
<LinearLayout <LinearLayout
android:layout_width="wrap_content" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="horizontal"> android:orientation="horizontal">
<pl.szczodrzynski.edziennik.utils.CheckableImageView <pl.szczodrzynski.edziennik.utils.CheckableImageView
android:id="@+id/image0" android:id="@+id/image0"
android:layout_width="126dp" android:layout_width="126dp"
android:layout_height="126dp" android:layout_height="wrap_content"
android:layout_weight="1"
android:clickable="true" android:clickable="true"
android:background="@drawable/recaptcha_image" android:background="@drawable/recaptcha_image"
android:focusable="true" /> android:focusable="true" />
@ -75,7 +77,8 @@
<pl.szczodrzynski.edziennik.utils.CheckableImageView <pl.szczodrzynski.edziennik.utils.CheckableImageView
android:id="@+id/image1" android:id="@+id/image1"
android:layout_width="126dp" android:layout_width="126dp"
android:layout_height="126dp" android:layout_height="wrap_content"
android:layout_weight="1"
android:clickable="true" android:clickable="true"
android:background="@drawable/recaptcha_image" android:background="@drawable/recaptcha_image"
android:focusable="true" /> android:focusable="true" />
@ -88,7 +91,8 @@
<pl.szczodrzynski.edziennik.utils.CheckableImageView <pl.szczodrzynski.edziennik.utils.CheckableImageView
android:id="@+id/image2" android:id="@+id/image2"
android:layout_width="126dp" android:layout_width="126dp"
android:layout_height="126dp" android:layout_height="wrap_content"
android:layout_weight="1"
android:clickable="true" android:clickable="true"
android:background="@drawable/recaptcha_image" android:background="@drawable/recaptcha_image"
android:focusable="true" /> android:focusable="true" />
@ -100,14 +104,15 @@
android:background="?colorSurface" /> android:background="?colorSurface" />
<LinearLayout <LinearLayout
android:layout_width="wrap_content" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="horizontal"> android:orientation="horizontal">
<pl.szczodrzynski.edziennik.utils.CheckableImageView <pl.szczodrzynski.edziennik.utils.CheckableImageView
android:id="@+id/image3" android:id="@+id/image3"
android:layout_width="126dp" android:layout_width="126dp"
android:layout_height="126dp" android:layout_height="wrap_content"
android:layout_weight="1"
android:clickable="true" android:clickable="true"
android:background="@drawable/recaptcha_image" android:background="@drawable/recaptcha_image"
android:focusable="true" /> android:focusable="true" />
@ -120,7 +125,8 @@
<pl.szczodrzynski.edziennik.utils.CheckableImageView <pl.szczodrzynski.edziennik.utils.CheckableImageView
android:id="@+id/image4" android:id="@+id/image4"
android:layout_width="126dp" android:layout_width="126dp"
android:layout_height="126dp" android:layout_height="wrap_content"
android:layout_weight="1"
android:clickable="true" android:clickable="true"
android:background="@drawable/recaptcha_image" android:background="@drawable/recaptcha_image"
android:focusable="true" /> android:focusable="true" />
@ -133,7 +139,8 @@
<pl.szczodrzynski.edziennik.utils.CheckableImageView <pl.szczodrzynski.edziennik.utils.CheckableImageView
android:id="@+id/image5" android:id="@+id/image5"
android:layout_width="126dp" android:layout_width="126dp"
android:layout_height="126dp" android:layout_height="wrap_content"
android:layout_weight="1"
android:clickable="true" android:clickable="true"
android:background="@drawable/recaptcha_image" android:background="@drawable/recaptcha_image"
android:focusable="true" /> android:focusable="true" />
@ -145,14 +152,15 @@
android:background="?colorSurface" /> android:background="?colorSurface" />
<LinearLayout <LinearLayout
android:layout_width="wrap_content" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="horizontal"> android:orientation="horizontal">
<pl.szczodrzynski.edziennik.utils.CheckableImageView <pl.szczodrzynski.edziennik.utils.CheckableImageView
android:id="@+id/image6" android:id="@+id/image6"
android:layout_width="126dp" android:layout_width="126dp"
android:layout_height="126dp" android:layout_height="wrap_content"
android:layout_weight="1"
android:clickable="true" android:clickable="true"
android:background="@drawable/recaptcha_image" android:background="@drawable/recaptcha_image"
android:focusable="true" /> android:focusable="true" />
@ -165,7 +173,8 @@
<pl.szczodrzynski.edziennik.utils.CheckableImageView <pl.szczodrzynski.edziennik.utils.CheckableImageView
android:id="@+id/image7" android:id="@+id/image7"
android:layout_width="126dp" android:layout_width="126dp"
android:layout_height="126dp" android:layout_height="wrap_content"
android:layout_weight="1"
android:clickable="true" android:clickable="true"
android:background="@drawable/recaptcha_image" android:background="@drawable/recaptcha_image"
android:focusable="true" /> android:focusable="true" />
@ -178,7 +187,8 @@
<pl.szczodrzynski.edziennik.utils.CheckableImageView <pl.szczodrzynski.edziennik.utils.CheckableImageView
android:id="@+id/image8" android:id="@+id/image8"
android:layout_width="126dp" android:layout_width="126dp"
android:layout_height="126dp" android:layout_height="wrap_content"
android:layout_weight="1"
android:clickable="true" android:clickable="true"
android:background="@drawable/recaptcha_image" android:background="@drawable/recaptcha_image"
android:focusable="true" /> android:focusable="true" />

View File

@ -13,7 +13,7 @@
android:paddingRight="16dp" android:paddingRight="16dp"
android:paddingBottom="8dp"> android:paddingBottom="8dp">
<com.google.android.material.card.MaterialCardView <com.google.android.material.card.MaterialCardView
android:layout_width="304dp" android:layout_width="match_parent"
android:layout_height="78dp" android:layout_height="78dp"
android:layout_gravity="center" android:layout_gravity="center"
android:layout_margin="8dp" android:layout_margin="8dp"