User Form

Voleu fer una aplicació que, per entrar, els usuaris han d'estar registrats. Farem el formulari de registre i entrada.

userform

Metodologia

Organitza les tasques

Crea un trello amb la planificació de les tasques que hauràs de fer i ves-lo actualitzant.

Git

Tingues sempre el codi a GIT.

Recursos

Imatge de fons

Pantalles

L'aplicació consta de quatre pantalles

graph TB Welcome-->Login Welcome-->Register Login-->UserLogged Register-->UserLogged Register-.->Login Login-.->Register

Welcome

Pantalla de benvinguda del usuari.

Login

L'usuari posa les seves dades per entrar a l'aplicació.
Els dos camps són obligatoris.

Register

L'usuari crea un nou usuari i entra a l'aplicació.

Validacions

Pantalla registre

Pantalla scrolled

Pantalla mostrant errors

UserLogged

Test

Fes tests automàtic de l'aplicació.

Validació del login

Tenim la següent simulacre d'api.

Urls

Url: http://itb.mateuyabar.com/DAM-M07/UF1/exercicis/userform/fakeapi

Login: /nomusuari/login.json?password=password
Registre: /nomusuari/register.json?password=password&…

Resultats

Aquesta api només funciona per dos noms usuari: user1 i user2. El primer el login sempre retorna login correcte i error al registre. El segon error al login i correcte el registre.

Pots veure els resultats en els links següents:

Tasca

Modifica el formulari per a que accedeixi a la api i només fagi login si és correcte.

En cas d'error mostra'l amb un SnackBar.

Loading

Fes que quan l'usuari fagi clic al botó surti un dialeg de progrés.

Conexió a http

Per defecte Android bloqueja totes les conexións no https. Per permetre-ho haurem d'afegir el següent fitxer i modificar el Manifest

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config cleartextTrafficPermitted="true">
        <domain includeSubdomains="true">Domini a permetre</domain>
    </domain-config>
</network-security-config>
<application
...
android:networkSecurityConfig="@xml/network_security_config"
>

Tips

MutableLiveData<Boolean> logged = new MutableLiveData<>(false);
MutableLiveData<Boolean> loading = new MutableLiveData<>(false);
MutableLiveData<String> error = new MutableLiveData<>();