2019-01-13 18:30:34 +00:00
|
|
|
# Sign in flow
|
|
|
|
|
2019-09-05 18:21:37 +00:00
|
|
|
TODO: this document is outdated
|
|
|
|
|
2019-01-13 18:30:34 +00:00
|
|
|
## tl;dr
|
|
|
|
In general, at first we try to encrypt realm database using password
|
|
|
|
and then proceed with the rest of operations. We do not wait for
|
|
|
|
`Statusgo.Login` callback in order to show `:home` screen with chats
|
|
|
|
as this call may add more than 1s to the process.
|
|
|
|
|
|
|
|
![img](sign_in_diagram.jpg)
|
|
|
|
|
|
|
|
## In details
|
|
|
|
|
|
|
|
#### Main flow:
|
|
|
|
1. User enters password
|
|
|
|
2. Presses "Sign In"
|
|
|
|
3. Attempt to open account's db
|
|
|
|
4.
|
|
|
|
_a._ If DB file doesn't exist go to [**Empty DB flow**](#empty-db-flow)
|
|
|
|
|
|
|
|
_b._ Otherwise continue
|
|
|
|
5.
|
|
|
|
_a._ If db can't be encrypted go to [**Verify password flow**](#verify-password-flow)
|
|
|
|
|
|
|
|
_b._ Otherwise continue
|
|
|
|
6.
|
|
|
|
_a._ If db can't be migrate DB schema **show migrations failure popup with
|
|
|
|
option to erase DB**
|
|
|
|
|
|
|
|
_b._ Otherwise continue
|
|
|
|
7. Proceed with [**UI flow**](#ui-flow) and [**Statusgo.Login flow**]
|
|
|
|
(#statusgologin-flow)
|
|
|
|
|
|
|
|
#### Empty DB flow:
|
|
|
|
1. Verify password
|
|
|
|
2.
|
|
|
|
_a._ If password is wrong **show "Wrong password" label**
|
|
|
|
|
|
|
|
_b._ Otherwise continue
|
|
|
|
3. Create account's DB (by opening it with correct encryption key)
|
|
|
|
4. Proceed with [**UI flow**](#ui-flow) and [**Statusgo.Login flow**]
|
|
|
|
(#statusgologin-flow)
|
|
|
|
|
|
|
|
#### Verify password flow:
|
|
|
|
1. Verify password
|
|
|
|
2.
|
|
|
|
_a._ If password is correct **show encryption failure popup with option to
|
|
|
|
erase DB**
|
|
|
|
|
|
|
|
_b._ Otherwise **show "Wrong password" label**
|
|
|
|
|
|
|
|
#### Statusgo.Login flow:
|
|
|
|
1. Start node
|
|
|
|
2. "node.ready" event received
|
|
|
|
3. Statusgo.Login is called
|
|
|
|
4. Statusgo.Login callback
|
|
|
|
5.
|
|
|
|
_a._ If password is incorrect **show error popup (passwords used for db
|
|
|
|
encryption and for account do not match)**
|
|
|
|
|
|
|
|
_b._ Otherwise continue
|
|
|
|
6. Done
|
|
|
|
|
|
|
|
#### UI flow:
|
|
|
|
1. Load necessary data for last 10 chats
|
|
|
|
2. Show `:home` screen
|
|
|
|
2. Load the rest of chats
|
|
|
|
3. Show them too
|
|
|
|
4. Done
|