Konto użytkownika

Mamy już podstawowe widoki w aplikacji, powoli zbliżamy się do edycji danych a użytkownik nadal nie ma możliwości, żeby się najzwyczajniej w świecie zalogować do BoardGameGeeka. Czas temu zaradzić. 

Login Dialog

Login Dialog
Login Dialog

Ekran logowania zaimplementujemy przy pomocy ContentDialog. Generyczny wygląd tej kontrolki jest dość mało elegancki, więc zmodyfikujmy ją nieco:

Usunęliśmy margines i rozciągaliśmy wiersz z tytułem na całą szerokość kontrolki [oryginalny styl tu]. Dzięki temu możemy wstawić do naszej kontrolki własny DataTemplate kolorowej belki tytułowej:

Zaś sam formularz logowania wygląda tak:

W PasswordBox nie możemy bezpośrednio podpiąć pola z ViewModelu, zatem trzeba dodać trochę code-behind:

Przechowywanie danych użytkownika to temat, do której trzeba podejść z ostrożnością. W UWP istnieje odpowiednia klasa do obsługi takiego scenariusza, a dokładniej Credential locker. Pozwala ona na bezpieczny zapis wrażliwych danych oraz możliwość przenoszenia danych na inne urządzenia użytkownika(roaming). Przykładowa implementacja:

Messaging

Po zaimplementowaniu logowania do BGG natknąłem się na pewien problem – jak odświeżyć kolekcje gracza i ostatnie rozgrywki po zmianie używanego konta. Jako, że zmiana loginu gracza to swego rodzaju event moglibyśmy zaimplementować swego rodzaju model nadawca-odbiorca. Jednak MVVM Light ma już wbudowaną odpowiednią bibliotekę do takich zastosowań, a mianowicie GalaSoft.MvvmLight.Messaging. Cytując za dokumentacją:

The Messenger is a class allowing objects to exchange messages.

Zatem mamy prosty model, który można zobrazować tak:

Via http://dotnetpattern.com/
Via http://dotnetpattern.com/

Jak to działa w praktyce?

Tworzymy klasę wiadomości:

W SettingsViewModel w funkcji logującej użytkownika wysyłamy wiadomość:

W np. CollectionViewModel nasłuchujemy wiadomości danego typu i podpinamy odpowiednią funkcję:

Której implementacja może wyglądać tak:

I gotowe! Trzeba jednak uważać na niebezpieczeństwo przerostu Messengera – jeśli owych wiadomości będzie za dużo łatwo pogubimy się w tym wszystkim.

W następnym tygodniu wracamy do API, by dodać możliwość edycji danych.

Autor: Paweł Rzepiński

Dev-wannabe, pasjonat gier planszowych i zimowego szusowania

Jedna myśl na temat “Konto użytkownika”

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *