Commit Graph

291 Commits

Author SHA1 Message Date
Dmitry Novotochinov 1b836bf7ec
[#7006] login with keycard
Signed-off-by: Dmitry Novotochinov <dmitry.novot@gmail.com>
2019-02-06 00:20:07 +03:00
yenda b80e02d8cf
[feature] add block user feature in user profile
- add block/unblock action to user profile
- blocking deletes all messages from user and ignores future messages
- unblocking stops ignoring new messages from user but doesn't recover past ones

[feature] add contact list

[tests] added scroll to BackupRecoveryPhraseButton

[tests] added scroll to public key

Signed-off-by: yenda <eric@status.im>
2019-02-05 16:29:56 +01:00
Roman Volosovskyi fe7c7088db
Use partitioned topic for discovery
Currently we use a single topic for discovery.
This provides the best obscurity at the cost of bandwidth, as a message
sent on the discovery topic will be received by any peer.
This PR changes this behavior and start listening on a partitioned
topic.
Each pk will be hashed to a limited number of topics.

Everytime someone is in a conversation with someone from another topic
they will have to listen as well to avoid loosing obscurity, because we
only forward messages that we also advertise in the bloom filter.

The choice for the number of partitions depends on 2 factors:

1) The expected number of users using the network
2) The average number of contacts each user

Any change to the discovery topic will need to be split across 3
releases, to avoid breaking compatibility:

1) Listen to the new and old topic, publish to the old topic
2) Listen to the new and old topic, publish to the new topic
3) Listen to the new topic, publish to the new topic

This is step 1.
2019-02-01 14:40:54 +02:00
Andrea Maria Piana 13b04f17eb
Enable pairing & contact recovery
This PR enables pairing outside of dev-mode and contact-recovery, which
is useful in the case a new device is added or re-installed.

Signed-off-by: Andrea Maria Piana <andrea.maria.piana@gmail.com>
2019-01-29 18:25:25 +01:00
Andrey Shovkoplyas 2430992fb4
Implement stickers market
Signed-off-by: Andrey Shovkoplyas <motor4ik@gmail.com>
2019-01-28 17:18:44 +01:00
Andrea Maria Piana 2b2c44c9a5
Add device name to pairing
Signed-off-by: Andrea Maria Piana <andrea.maria.piana@gmail.com>
2019-01-24 11:29:24 +01:00
Dmitry Novotochinov cee18d23b8
[#7132] add keycard settings
Signed-off-by: Dmitry Novotochinov <dmitry.novot@gmail.com>
2019-01-23 20:11:23 +03:00
Roman Volosovskyi 8754f72eba
Fix merging of :message/message-persisted event
Previously `:message/message-persisted` was dispatched for each incoming
message because its argument was not a vector. The event was renamed to
`:message/messages-persisted`.
2019-01-18 18:14:40 +02:00
Pedro Pombeiro 5a69b4198e
Update PNs to use data-only messaging, and only encode/decode data values. Fixes #6772
Fix navigation to chat when PN is tapped while signed off. Fixes #3488

Anonymize PN pubkeys. Part of #6772
2019-01-17 19:23:55 +02:00
Roman Volosovskyi 664cbf6bbe
Sign-in flow docs and tests 2019-01-15 17:00:58 +02:00
Igor Mandrigin e8de37f5ef
Report messages as "processed" to status-go only after they were successfully stored in the DB.
Signed-off-by: Igor Mandrigin <i@mandrigin.ru>
2019-01-14 19:12:26 +01:00
Roman Volosovskyi aceea457ce
[slow sign in] Chats preloading
10 last chats are loaded to `app-db` before showing `:home` screen, in
result a user will not see two consequent activity indicators. In this
case opening of `:home` screen is a bit slower but looks better from
UI/UX pov. As it is limited to 10 chats on initialization, the time
necessary for opening `:home` screen will not depend on a total number
of chats in `app-db` if an account contains 10+ chats.

Signed-off-by: Igor Mandrigin <i@mandrigin.ru>
2019-01-09 16:03:21 +01:00
Andrea Maria Piana b56fd2e29f
Show popup when device is not targeted.
When someone is sending a pfs message to us but did not include our own
device, a pop up is shown propmting the user to connect with the user.

The reason for receiving messages that are not targeting our devices are
various:

1) The account was just recovered (which means it is a new installation
id)
2) More than 3 devices are in use (we only keep max 3 devices in sync)
3) The sender has used an old bundle which does not include the current
device

Eventually we will reduce the likelihood of this scenario happening, but
we can't dismiss it completely.

It's only enabled when PFS is enabled.

Signed-off-by: Andrea Maria Piana <andrea.maria.piana@gmail.com>
2019-01-09 09:36:36 +01:00
Andrea Maria Piana ad99ed2a28
Allow toggling pfs in dev-mode
This commits allow users to toggle pfs in dev-mode (it is already used
for pairing and group chats).

Once enabled direct and public messages sent will only be received by
users running >= 0.9.32.

Also this does not guarantee PFS (both devices need to have it enabled
it), and there still some UX work to do to ensure that, but it is useful
for testing.

A warning is displayed explaining the limitations when enabling.
2019-01-09 09:34:51 +01:00
Andrea Maria Piana 3e761c3b85
Extend message hash confirmation for group chats
Signed-off-by: Andrea Maria Piana <andrea.maria.piana@gmail.com>
2019-01-08 13:59:30 +01:00
Andrea Maria Piana 881691fbc3
Add joining of group chats
Members will now have to explicitly join a group chat to start receiving
messages from it.

Messages are still sent to users who have not joined for backward
compatibility.
Group updates are unaffected.
2019-01-08 13:58:40 +01:00
Pedro Pombeiro 9d21cf143e
Add Send Logs command. Closes #6710
Signed-off-by: Pedro Pombeiro <pombeirp@users.noreply.github.com>
2019-01-08 09:48:56 +01:00
Roman Volosovskyi cdf8dc043a
[#7192] fix autologin switch behaviour on wrong password
Signed-off-by: Igor Mandrigin <i@mandrigin.ru>
2019-01-07 17:35:18 +01:00
Dmitry Novotochinov 7fa46065a7
[#7005] add installation progress bar
Signed-off-by: Dmitry Novotochinov <dmitry.novot@gmail.com>
2018-12-24 18:02:38 +03:00
Andrea Maria Piana 5f910a0bec
Sync public chats
Signed-off-by: Andrea Maria Piana <andrea.maria.piana@gmail.com>
2018-12-24 14:35:17 +01:00
Andrea Maria Piana 87e6c6cdee
Show popup on new device detected 2018-12-24 14:34:00 +01:00
Roman Volosovskyi dd2ff11216
[#7139] Fix crash on logout
The crash was caused by RPC calls which happened after `StopNode` call.

Implementation:
- The first suggestion was to `StopNode` only after all `.stopWatching`
  calls are done, but this only lowered probability of the crash,
  but did not fix the issue.
- Another suggestion was to prevent RPC calls after `StopNode` call,
  but it also only lowered probability of the crash.
- So the last resort was a fix on `status-go` side
  https://github.com/status-im/status-go/pull/1329,
  and it actually worked.
- Advanced settings are hidden until `Statusgo.Login` is finished
2018-12-20 21:35:09 +02:00
Volodymyr Kozieiev 112fe367cc
Fixed desktop release warning messagebox
Signed-off-by: Vitaliy Vlasov <siphiuel@gmail.com>
2018-12-20 15:51:54 +02:00
Dmitry Novotochinov 962c49e345
add keycard installation
Signed-off-by: Dmitry Novotochinov <dmitry.novot@gmail.com>
2018-12-20 15:43:37 +03:00
Vitaliy Vlasov 9bc98405a0
Add react-native-desktop-config
Add section separator for logging-display

Refactor user-login-callback

Add comment to AppConfig class definition

Fix mobile compilation error

Use reference in AppConfig singleton; remove obsolete CMake directives

Styling changes

Disable status-go logs by default on desktop

Signed-off-by: Vitaliy Vlasov <siphiuel@gmail.com>
2018-12-18 14:31:40 +02:00
Roman Volosovskyi c440b7a3a7
[slow sign in] Denorlmalize last message
The last messages of the chats are necessary to properly show the chat
list, which is shown right after signing in. Before this commit, the
last message was retrieved as one of 20 last messages fetched for each
chat.

Implementation:
- `:last-message-content` and `:last-message-type` fields were added to
  `chat` entity
- both fields are updated when messages are received/sent
- loading of the last 20 messages for each chat was removed as
  initialization step
2018-12-17 13:29:10 +02:00
Roman Volosovskyi 07e8f6908d
[#6952] Fix odd app behavior after quick logout
This commit changes the way how/when the node is started/stopped:
1. `node` is not started on the app startup
2. When the user presses "Sign in" button the node is started
   with user specific configs (`InstallationID`, custom bootnodes, etc),
   and only after that `Login` call is performed.
3. When the user creates a new account, at first the node is started
   with default params (the same as would be used when user signs into
   the app after account creation whithout changing any setting), then
   `CreateAccount` call happens, then `Login`.
4. When the user restores their account, the flow is the same as `3`
   but with `RecoverAccount` instead of `CreateAccount`
5. When the user logs out the node is stopped. That's it.
2018-12-17 13:27:17 +02:00
Andrea Maria Piana 6e5d54b5aa
Fetch history action 2018-12-14 13:10:37 +01:00
Andrey Shovkoplyas b80230a95f
[#6688] Update ENS resolving implementation to match what is defined in EIP-1577
Signed-off-by: Julien Eluard <julien.eluard@gmail.com>
2018-12-13 16:21:11 +01:00
yenda 9110a64dcc
[fix] handle errorMessage in mailserver.request.completed signal
Signed-off-by: Igor Mandrigin <i@mandrigin.ru>
2018-12-12 18:24:55 +01:00
Roman Volosovskyi 4aa562f6a8
[slow sign in] Unlock account's DB before starting node
There is no need to wait for `Statusgo.Login` callback in order to start
unlocking realm db: currently it is encrypted via a key which is derived
from user’s password, so we can try to unlock that DB before starting
node. That’s how password will be checked. Right after that `:home`
screen is shown, the node is started, then `Statusgo.Login` executed.

The difference in sign in duration is more noticeable on Android
devices, where `Statusgo.Login` is much slower because of PFS database
encryption.
2018-12-12 17:46:52 +02:00
Andrey Shovkoplyas 8374a7d532
fixed extensions installation issues
Signed-off-by: Andrey Shovkoplyas <motor4ik@gmail.com>
2018-12-12 13:21:01 +01:00
Roman Volosovskyi b6e515618b
[#6956] upgradable `message-id`
Implementation:
1. `transport.utils/message-id` function is called only in three places now
   and accepts `from` and  `raw_payload` as parameters.
   ID is calculated as `sha3(from + raw_payload)`.
2. This means that for wrapped private group chat message
   the raw payload of `GroupMembershipUpdate` is used.
2018-12-05 11:22:43 +02:00
Roman Volosovskyi e7d0312d25
[#6903] fix replies compatibility
Issue was caused by https://github.com/status-im/status-react/pull/6722

Implementation:
1. `old-message-id` field (indexed) was introduced in `message` entity
   and is calculated as `message-id` was calculated in `0.9.31`
```clojure
(defn old-message-id
  [message]
  (sha3 (pr-str message)))
```
2. When a reply message is sent from the PR version of app both `response-to`
   and `response-to-v2` fields are sent as a part of `message`'s `content`
   field, so that it can be recognized by `0.9.31`.
3. When PR version of app receives reply from `0.9.31` we check whether
   message's `content` contains `response-to` but doesn't contain
   `response-to-v2`, and if so we check whether DB contains message with
   `old-message-id=response-to`. If such message has been found we assoc
   `response-to-v2` to content.
4. If message from DB contains only `response-to` but not `response-to-v2`
   attempt to fetch the message by `old-message-id` is done.
2018-12-05 07:22:40 +02:00
Andrea Maria Piana dfbc27c5d7
Allow admin to leave chat
Signed-off-by: Andrea Maria Piana <andrea.maria.piana@gmail.com>
2018-12-04 10:17:50 +01:00
Andrey Shovkoplyas 582c2960ec
[#6644] Chat command recipients should be able to install an extension
Signed-off-by: Julien Eluard <julien.eluard@gmail.com>
2018-11-29 16:43:15 +01:00
Vitaliy Vlasov 92d00f4250
Use multiple app instances simultaneously
Signed-off-by: Vitaliy Vlasov <siphiuel@gmail.com>
2018-11-28 19:10:12 +02:00
Roman Volosovskyi c506521778
[slow sign in] Better handling of migration failures and db encryption problems.
Migration failures are handled separately from other errors which might appear
during opening account's realm DB. In case if user chooses to erase
the account's database, only this database will be removed and other accounts
will not be touched.
2018-11-28 14:13:30 +02:00
Andrey Shovkoplyas 028ab522b9
[#6867] Add on-send-sync to chat.command extension
Signed-off-by: Andrey Shovkoplyas <motor4ik@gmail.com>
2018-11-27 21:23:20 +01:00
Roman Volosovskyi 5d5847e4b9
[slow sign in] Add unviewed messages counter to chat entity.
Before we fetched ALL user-statuses with `status=received` (which means that
a message hasn't been seen), iterated them, grouped by chat and then stored
`message-ids` of these `user-statuses` in chat's `:unviewed-messages` key.

This commit introduces :unviewed-messages-count field in chat entity.
That means that there is no need to iterate `user-statuses` in order to count
a total number of unviewed messages, it is always stored along with chat.
In the rest of it, the difference is only that chat's db record should be
updated each time when unviewed messages are seen.
2018-11-23 17:08:48 +02:00
Andrey Shovkoplyas 5dd345fe49
[#6643] Allow chat command suggestions to select parameter
Signed-off-by: Julien Eluard <julien.eluard@gmail.com>
2018-11-22 15:57:39 +01:00
Roman Volosovskyi d66198a420
[slow sign in]
fix iterating over all messages from realm db (was done for deduplication)
async loading of chats (:init-chats event)
2018-11-21 18:21:52 +02:00
Igor Mandrigin 83ef7746d4
Show debug information when LES is selected (in the titlebar).
To simplify testing and debugging, there is a very simple sync indicator
(debug) for LES. This UI is not even close to being production and will
be reworked in the future.

Signed-off-by: Igor Mandrigin <i@mandrigin.ru>
2018-11-15 10:34:31 +01:00
Andrea Maria Piana 1104becfba
Enable syncing of contacts & style pairing section
Everytime a contact request is sent/confirmed a sync message is also
sent to other devices so the contact is kept in sync.

Signed-off-by: Andrea Maria Piana <andrea.maria.piana@gmail.com>
2018-11-14 13:21:14 +01:00
Aleksandr Pantiukhov 17f74ff2f6
[#6455]: Updated extension management
Signed-off-by: Aleksandr Pantiukhov <alwxndr@gmail.com>
2018-11-12 10:28:48 +01:00
Eric Dvorsak f8f499d9b0
[refactor] rename whisper-id and whisper-identity to public-key 2018-11-09 11:16:27 +01:00
Eric Dvorsak 38ec77b97b
[refactor] remove default contacts
transactor and demo-bot are not used anymore and related code can therefore
be deleted
2018-11-09 11:16:26 +01:00
Andrey Shovkoplyas e9bf1d7864
[#6169] Display .eth or other domain rather than IPFS redirect
Signed-off-by: Andrey Shovkoplyas <motor4ik@gmail.com>
2018-11-08 15:53:38 +01:00
Dmitry Novotochinov ae3029c2d9
[#6294] add desktop alpha release warning
Signed-off-by: Dmitry Novotochinov <dmitry.novot@gmail.com>
2018-11-07 22:10:39 +03:00
yenda a3b2bc1b87
[fix #3913] do not logout when changing mailserver
- do not logout and remove previous mailserver
from peers when changing mailserver
- rename wnode mailserver
- move transport.inbox to mailserver.core
- fix all subs and db keys

Signed-off-by: yenda <eric@status.im>
2018-11-07 17:10:18 +01:00
Andrea Maria Piana 693eae9cf9
Send your own messages
Adds a `chat-id` field in `content` map.

The reason it has been added to the map instead of augmenting transit is
that it would simplify the calculation of `message-id`, which in this
case is consistent for both old & new clients.

`chat-id` also represents the `chat-id` with respect of the sender, as
in 1-to-1 chats that is asymmetric.

Signed-off-by: Andrea Maria Piana <andrea.maria.piana@gmail.com>
2018-11-06 21:19:50 +01:00
janherich ff97345f07
Plug-in new text parsing engine 2018-11-06 19:59:24 +01:00
Andrea Maria Piana 073dddcee0
Add pairing
Signed-off-by: Andrea Maria Piana <andrea.maria.piana@gmail.com>
2018-10-27 20:43:53 +02:00
janherich 76165cc7cb
[#6460] [#6438] Deduplication-ids 2018-10-24 09:43:52 +02:00
yenda 82c3997f07
[desktop] Add search feature for chat list
Signed-off-by: yenda <eric@status.im>
2018-10-23 17:27:27 +02:00
Aleksandr Pantiukhov 5f06ebc27d
Temporary that makes it possible to install only one extension at a time (required for the hackathon)
Signed-off-by: Aleksandr Pantiukhov <alwxndr@gmail.com>
2018-10-22 15:01:39 +02:00
Max Risuhin 5986761210
Push notifications support #4432; Rename app to Status globally.
Signed-off-by: Max Risuhin <risuhin.max@gmail.com>
2018-10-19 18:52:04 +03:00
Aleksandr Pantiukhov 2c65077270
[#6382]: Makes extensions dev-mode aware
Signed-off-by: Julien Eluard <julien.eluard@gmail.com>
2018-10-19 16:37:46 +02:00
Andrea Maria Piana 9629983f7f
Remove instabug 2018-10-19 09:18:22 +03:00
Aleksandr Pantiukhov 76a724a2e7
[#6228]: API: requesting to connect to a node that is not available crashes the application
Signed-off-by: Aleksandr Pantiukhov <alwxndr@gmail.com>
2018-10-18 16:43:42 +02:00
yenda f98e013cff
fix login after logout when opening app from a notification
moves most of the fx that are suppose to happen only at app startup
to an init/start-app fn so that init/initialize-app which is also
called after logout doesn't repeat unecessary fxs
2018-10-17 17:24:34 +03:00
Aleksandr Pantiukhov 23503dc996
[#6094]: Persist extensions
Signed-off-by: Aleksandr Pantiukhov <alwxndr@gmail.com>
2018-10-17 14:08:45 +02:00
yenda 660bd2d1bd
request 7 days of history
- fetch 7 days of history when joining a chat
- make 7 24h requests to request 7 days because mailservers
ignores requests for a timespan > 24h
- make requests sequentially to avoid timeouts
- change mailserver after 3 timeouts on a request

Signed-off-by: yenda <eric@status.im>
2018-10-15 17:18:59 +02:00
Igor Mandrigin 1c4cca1004
Don't start a node while the node is already being started.
Restart it instead, so that we are sure which config is there.

Signed-off-by: yenda <eric@status.im>
2018-10-15 16:43:30 +02:00
Aleksandr Pantiukhov 4c7339f978
[#6198]: Add QR code scanner support in extensions panel
Signed-off-by: Julien Eluard <julien.eluard@gmail.com>
2018-10-15 12:03:03 +02:00
yenda 1a2fcdfe3a
refactor contact models
- move models.contact and models.contacts to contact.core
- add tags field to contact and chat

Signed-off-by: yenda <eric@status.im>
2018-10-15 11:57:48 +02:00
yenda efdd76b364
refactor inbox
Signed-off-by: yenda <eric@status.im>
2018-10-11 14:47:04 +02:00
janherich 99d33ebbc9
Always load messages referenced in responses 2018-10-11 11:21:34 +02:00
Aleksandr Pantiukhov 1b6fa1d980
[#5979]: Add ENS names to profile screen
Signed-off-by: Aleksandr Pantiukhov <alwxndr@gmail.com>
2018-10-11 08:53:08 +02:00
Andrea Maria Piana 78b6d67d79
Allow to edit group membership
Signed-off-by: Andrea Maria Piana <andrea.maria.piana@gmail.com>
2018-10-09 10:40:13 +02:00
Andrey Shovkoplyas 1b6d51ff11
implemented functionality to request user action from dapps
fixed qr code js api

Signed-off-by: Goran Jovic <goranjovic@gmail.com>
2018-10-04 15:25:18 +02:00
Dmitry Novotochinov 5dec44340d
Add wizard and 'card is ready' screen
Signed-off-by: Dmitry Novotochinov <dmitry.novot@gmail.com>
2018-10-03 16:50:41 +03:00
Andrey Shovkoplyas a1d0dcc0ec
introduced new status js api according latest web3 opt-in api 2018-10-02 22:12:46 +02:00
Dmitry Novotochinov 7a06a415c2
[#5964] hardwallet screens flow 2
Signed-off-by: Dmitry Novotochinov <dmitry.novot@gmail.com>
2018-10-02 21:15:28 +03:00
Andrea Maria Piana 165f1a46c7
Propagate signed membership information
Signed-off-by: Andrea Maria Piana <andrea.maria.piana@gmail.com>
2018-10-02 12:06:28 +02:00
Igor Mandrigin 851a3db9ee
Add an option to run LES on Ropsten as an experimental feature.
Signed-off-by: Igor Mandrigin <i@mandrigin.ru>
2018-10-01 13:10:29 +02:00
janherich 44fbe62773
Chat replies + refactoring 2018-09-28 16:15:47 +02:00
yenda 4bd5d986b0
remove merge-fx macro
Signed-off-by: yenda <eric@status.im>
2018-09-25 15:18:44 +02:00
Andrea Maria Piana df51731fca
Add pfs flag, installation id and nobackup data directory
Signed-off-by: Andrea Maria Piana <andrea.maria.piana@gmail.com>
2018-09-24 17:47:02 +02:00
Andrey Shovkoplyas 18b9ba0aac
[#5365] Open chat from browser
Signed-off-by: Andrey Shovkoplyas <motor4ik@gmail.com>
2018-09-24 16:50:25 +02:00
Dmitry Novotochinov 41347ae5e0
[#5898] add HW setup screens
Signed-off-by: Dmitry Novotochinov <dmitry.novot@gmail.com>
2018-09-24 16:43:01 +03:00
Julien Eluard 10373ae6fd
[fix 5870] Added QR code API
Signed-off-by: yenda <eric@status.im>
2018-09-24 12:08:50 +02:00
yenda 8459fef358
Refactor browser and permissions
- move db and models ns to browser module
- remove browser navigation/preload-data
- rewrite dapp-permission logic and move code to permissions ns
- rewrite all browser events according to guidelines and move them to
`status-im.events` ns
- rewrite tests for browser and permissions
2018-09-24 12:08:34 +02:00
yenda 41d3fe17ea
fix account-recover screen errors
when typing a wrong recovery phrase or password, navigating back and
returning to account-recover screen, errors about recovery phrase and
password were not cleared

get rid of navigation/preload-data in the process as it is too clunky

TODO: eventually use screen-params in the future for screen related data
Signed-off-by: yenda <eric@status.im>
2018-09-20 21:18:01 +02:00
yenda 47b739b4df
fix create-account white screen 2018-09-20 21:17:49 +02:00
yenda b71005d2fa
replace all register-event-db by fx and remove trim-v interceptor
Signed-off-by: yenda <eric@status.im>
2018-09-20 13:37:31 +02:00
Dmitry Novotochinov 60cb0eb36c
[#5825] add hardwallet auth method and connect screens
* add react-native-nfc-manager to detect NFC support
* add "Choose auth method" screen https://www.figma.com/file/UfQjpWl1hmRchHIyY3Wvu2nW/Hardwallet-light-flows?node-id=259%3A29
* add "Hardwallet connect" screen https://www.figma.com/file/UfQjpWl1hmRchHIyY3Wvu2nW/Hardwallet-light-flows?node-id=258%3A594

Signed-off-by: Dmitry Novotochinov <dmitry.novot@gmail.com>
2018-09-20 12:30:47 +03:00
Eric Dvorsak 5467deec9a
[fix 5814] fix add custom bootnode
the validation regexp is expecting a password, there is no password
for bootnodes

Signed-off-by: yenda <eric@status.im>
2018-09-19 10:23:11 +02:00
Eric Dvorsak d5fcc0b003
[FIX 5813] connect to custom mailserver button fix
Signed-off-by: yenda <eric@status.im>
2018-09-18 17:37:42 +02:00
Andrey Shovkoplyas a20facd895
web3 opt-in updates
Signed-off-by: Andrey Shovkoplyas <motor4ik@gmail.com>
2018-09-13 18:27:43 +03:00
Eric Dvorsak 8dc9af8917
refactoring of events into status-im.events
Signed-off-by: Eric Dvorsak <eric@dvorsak.fr>
2018-09-11 15:09:54 +02:00