User Form
Voleu fer una aplicació que, per entrar, els usuaris han d'estar registrats. Farem el formulari de registre i entrada.
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
- Welcome
- Login
- Register
- UserLogged
Navegació
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ó.
- Al fer clic a data, s'ha d'obrir un calendari per seleccionar la data
- Al fer clic a pronoun genere s'ha d'obrir un seleccionable.
Validacions
- Els camps username, password, repeat password i email obligatoris.
- L'email ha de tenir un format correcte
- Les dues contrasenyes han de ser iguals
Pantalla registre
Pantalla scrolled
Pantalla mostrant errors
UserLogged
Test
Fes tests automàtic de l'aplicació.
- Test de login correcte.
- Test de login sense dades mostra errors
- Test de registre correcte.
- Test de registre incorrecte mostra errors
- Test de navegació login<->registre
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:
- http://itb.mateuyabar.com/DAM-M07/UF1/exercicis/userform/fakeapi/user1/login.json
- http://itb.mateuyabar.com/DAM-M07/UF1/exercicis/userform/fakeapi/user1/register.json
- http://itb.mateuyabar.com/DAM-M07/UF1/exercicis/userform/fakeapi/user2/login.json
- http://itb.mateuyabar.com/DAM-M07/UF1/exercicis/userform/fakeapi/user2/register.json
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
- res/xml/network_security_config.xml
<?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>
- Manifest
<application
...
android:networkSecurityConfig="@xml/network_security_config"
>
Tips
- El viewModel hauria de tenir els següents livedatas:
MutableLiveData<Boolean> logged = new MutableLiveData<>(false);
MutableLiveData<Boolean> loading = new MutableLiveData<>(false);
MutableLiveData<String> error = new MutableLiveData<>();
- Fes la conversió de Retrofit call a LiveData dins del ViewModel.