Commit Graph

329 Commits

Author SHA1 Message Date
Gheorghe Pinzaru 028543aa31
Support universal link for ens name
Handle ens-name in qr reader

If user has an username generate link with it

Ensure no infinite recursion happens on qr scan event

Fix test for custom profile ens-name

Fix QR code read for ens-name

Extra check for ens name in QR code

Do not open unknown profile for bad ens name

Signed-off-by: Gheorghe Pinzaru <feross95@gmail.com>
2020-01-28 15:21:11 +03:00
Andrea Maria Piana b2fd81fc76
Contact updates & pairing in status-go
Signed-off-by: Andrea Maria Piana <andrea.maria.piana@gmail.com>
2020-01-15 09:46:17 +01:00
yenda 1cac8f1161
fix pending transactions
Signed-off-by: yenda <eric@status.im>
2020-01-10 16:39:49 +01:00
yenda 48d3087f81
fix 9792
Signed-off-by: yenda <eric@status.im>
2020-01-10 16:39:06 +01:00
yenda bf16116acd
move multiaccount settings to a table
integrate status-go changes to move multiaccount settings to a table
that can be migrated

Signed-off-by: yenda <eric@status.im>
2020-01-02 18:07:10 +01:00
Andrey Shovkoplyas 3e19f929e9
show ens name for chats created using ens name 2019-12-18 12:07:08 +01:00
Andrey Shovkoplyas b84139013a
hide dev mode setting 2019-12-17 11:03:31 +01:00
Andrey Shovkoplyas e7122dc86a
[#9575] Make sure status supports EIP 1102 and EIP 1193 2019-12-11 16:17:52 +01:00
Andrea Maria Piana 54cf783d5b
Move group chats to status-go
This commit completely remove transit for group chats. All the
processing is now done in status-go.
Also introuduces parsing and handling of mentions, needed so that system
messages can be easily built in status-go.

Signed-off-by: Andrea Maria Piana <andrea.maria.piana@gmail.com>
2019-12-10 16:18:26 +01:00
Roman Volosovskyi 91b931c3b4
Replace address with keyUid in accounts db
Account's address was used as a primary key in accounts db and as a
deterministic id of an account in some API calls. Also it was used as a
part of the name of the account specific database. This revealed some
extra information about the account and wasn't necessary.
At first the hash of the address was planned to be used as a
deterministic id, but we already have a keyUid which is calculated as
sha256 hash of account's public key and has similar properties:
- it is deterministic
- doesn't reveal accounts public key or address in plain
2019-12-09 11:57:44 +02:00
Volodymyr Kozieiev 7168eada1c
Calls to gfycat and identicon made async in few places
Signed-off-by: Volodymyr Kozieiev <vkjr.sp@gmail.com>
2019-12-06 17:42:36 +02:00
Andrea Maria Piana 78d694f52f
Move message processing to status-go and introduce protobuf
This commit moves all the processing of messages to status-go.

Messages are going arrive to status-react already saved an processed.

Receiving/sending/retrieving from db is now using the same identical
structure. The only processing left in status-react is to mark the
messages as seen and update the unviewed count locally (only
status-react knows whether the count should be updated).

Partially remove commands as well as won't be used anymore.

Signed-off-by: Andrea Maria Piana <andrea.maria.piana@gmail.com>
2019-12-05 17:30:30 +01:00
yenda 94c7953f30
remove commands before replacement by gui commands
Signed-off-by: yenda <eric@status.im>
2019-12-03 15:07:56 +01:00
Andrey Shovkoplyas 6facfe3938
[#9550] Improve stickers usage experience
Signed-off-by: Andrey Shovkoplyas <motor4ik@gmail.com>
2019-12-03 11:15:45 +01:00
Roman Volosovskyi 5bb6997d1d
[#9354] Unlock keycard account without a card
To make it work `encryption-public-key` and `whisper-private-key` are
stored on the devices when a user chooses this option. The former key is
used for multiaccount's database encryption, the latter is needed for a
messaging. In case if a user wants to sign a transaction the card is
still needed, we don't store wallet's keys on the device.

Other things were fixed/added:
- A user can enable biometric auth for a regular account when chooses
  to save the password on the device (if biometric auth is available).
  This is done for feature parity between keycard and "on device"
  accounts.
- The option to create/restore an account on a keycard is not shown on
  the devices which do not support NFC. Currently, the app just crashes
  if the user continues a flow which is not supported by the device.
2019-12-02 19:25:05 +02:00
yenda 572e028f32
fix 9394 select mailserver based on ping
- if not mailserver was actively selected by user,
use rpc call to get latency for known mailservers
and use the best one
- this happens when `set-current-mailserver` is called which happens
in `change-mailserver` when user unpins his preferred mailserver and when
there's been too many failed attemps to fetch messages or to connect to
then current mailserverm as well as when user logs in.

Signed-off-by: yenda <eric@status.im>
2019-11-28 23:31:39 +01:00
Roman Volosovskyi 67e6ab6055
[#9435] Prevent multiaccount duplication
Currently we have two ways to restore a multiaccount:
- by entering a mnemonic phrase
- by pairing a keycard with an existing multiaccount

In both cases, when we detect that a user tries to recover an existing
multiaccount we interrupt recovering and propose them to unlock that
multiaccount instead.
2019-11-27 17:10:55 +02:00
Andrey Shovkoplyas 507cc5cf39
send transaction GUI
Signed-off-by: Andrey Shovkoplyas <motor4ik@gmail.com>
2019-11-27 14:32:04 +01:00
elegant651 7b14bbecde
Add new welcome page after generating their key
formatting to style

add accessibility-id & flow for keycard

Signed-off-by: Andrey Shovkoplyas <motor4ik@gmail.com>
2019-11-18 12:27:55 +01:00
Andrea Maria Piana 9a9c0ce526
Render markdown
Fixes: https://github.com/status-im/trailofbits-audit/issues/47
Fixes: https://github.com/status-im/trailofbits-audit/issues/46
Fixes: https://github.com/status-im/trailofbits-audit/issues/44
Fixes: https://github.com/status-im/security-reports/issues/13
Fixes: https://github.com/status-im/security-reports/issues/5
Fixes: https://github.com/status-im/status-react/issues/8995

This commits re-introduce rendering of markdown text and implent a few
changes:

1) Parsing of the message content is now in status-go, this includes
markdown, line-count, and rtl. Parsing is not nested, as there's some
rendering degradation involved as we nest components, unclear exactly if
it's react-native or clojure, haven't looked too deeply into it.
2) Emojii type messages are not parsed on the sending side, not the
receiving one, using the appropriate content-type
3) Fixes a few issues with chat input rendering, currrently we use
`chats/current-chat` subscription which is very heavy and should not be
used unless necessary, and means that
any change to chat will trigger a re-render, which caused re-rendering
of input container on each received message. Also to note that
input-container is fairly heavy to render, and it's rendered twice at
each keypress on input.

The inline markdow supported is:

*italic* or _italic_
**bold** or __bold__
`inline code`
http://test.com links
\#status-tag

The block markdown supported is:

\# Headers
```
code blocks
```
> Quotereply

The styling is very basic at the moment, but can be improved.
Adding other markdown (photo,mentions) is straightforward and should
come at little performance cost (unless the component to render is
heavy, i.e a photo for example).

There are some behavioral changes with this commit:

1) Links are only parsed if starting with http:// or https://, meaning that
blah.com won't be parsed, nor www.test.com. This behavior is consistent
with discord for example and allows faster parsing at little expense to
ser experience imo. Fixes a few security issues as well.

2) Content is not anymore capped (regression), that's due to the fact that
before we only rendered text and react-native allowed us easily to limit
the number of lines, but adding markdown support means that this
strategy is not viable anymore. Performance of rendering don't see to be
very much impacted by this, I would re-introduce it if necessary, but
I'd rather do that in a separate PR.

Signed-off-by: Andrea Maria Piana <andrea.maria.piana@gmail.com>
2019-11-15 10:23:25 +01:00
Dmitry Novotochinov a6a65ec0e4
remove keycard views with old design 2019-11-12 11:23:04 +02:00
Andrea Maria Piana c69863cda2
Fix message ordering and improve performance rec. messages
This commit does a few things:

==== Ordering of messages ====

Change the ordering of messages from a mixture of timestamp/clock-value to use
only clock-value.

Datemarks are now not used for sorting anymore, which means that the
order of messages is always causally related (not the case before, as we
were breaking this property by sorting by datemark), but datemark
calculation is unreliable (a reply to a message might have a timestamp <
then the message that is replied to).
So for timestamp calculation we
naively group them ignoring "out-of-order timestamp" messages, although
there's much to improve.
It fixes an issue whereby the user would change their time and the
message will be displayed in the past, although it is still possible to
craft a message with a lower clock value and order it in the past
(there's no way we can prevent this to some extent, but there are ways
to mitigate, but outside the scope of this PR).

==== Performance of receiving messages ====

The app would freeze on pulling messages from a mailserver (100 or so).
This is due to the JS Thread being hogged by CPU calculation, coupled
with the fact that we always tried to process messages all in one go.

This strategy can't scale, and given x is big enough (200,300,1000) the
UI will freeze.

Instead, each message is now processed separately, and we leave a gap
between processing each message for the UI to respond to user input
(otherwise the app freezes again).
Pulling messages will be longer overall, but the app will be usuable
while this happen (albeit it might slow down).
Other strategies are possible (calculate off-db and do a big swap,
avoiding many re-renders etc), but this is the reccommended strategy by
re-frame author (Solving the CPU Hog problem), so sounds like a safe
base point.

The underlying data structure for holding messages was also changed, we
used an immutable Red and Black Tree, same as a sorted map for clojure, but we use
a js library as is twice as performing then clojure sorted map.

We also don't sort messages again each time we receive them O(nlogn), but we
insert them in order O(logn).

Other data structures considered but discarded:
1) Plain vector, but performance prepending/insertion in the middle
(both O(n)) were not great, as not really suited for these operations.

2) Linked list, appealing as append/prepend is O(1), while insertion is
O(n). This is probably acceptable as messages tend to come in order
(from the db, so adding N messages is O(n)), or the network (most of
them prepends, or close to the head), while mailserver would not follow this path.
An implementation of a linked list was built, which performed roughtly the
same as a clojure sorted-map (although faster append/prepend), but not
worth the complexity of having our own implementation.

3) Clojure sorted-map, probably the most versatile, performance were
acceptable, but nowhere near the javascript implementation we decided on

4) Priority map, much slower than a sorted map (twice as slow)

5) Mutable sorted map, js implementation, (bintrees), not explored this very much, but from
just a quick benchmark, performance were much worse that clojure
immutable sorted map

Given that each message is now processed separately, saving the chat /
messages is also debounced to avoid spamming status-go with network
requests. This is a temporary measure for now until that's done directly
in status-go, without having to ping-pong with status-react.

Next steps performance wise is to move stuff to status-go, parsing of
transit, validation, which is heavy, at which point we can re-consider
performance and how to handle messages.

Fixes also an issue with the last message in the chat, we were using the
last message in the chat list, which might not necessarely be the last
message the chat has seen, in case messages were not loaded and a more
recent message is the database (say you fetch historical messages for
1-to-1 A, you don't have any messages in 1-to-1 chat B loaded, you receive an
historical message for chat B, it sets it as last message).

Also use clj beans instead of js->clj for type conversion

Signed-off-by: Andrea Maria Piana <andrea.maria.piana@gmail.com>
2019-11-01 23:59:26 +01:00
yenda 7bb45fdd8f
remove firebase
Signed-off-by: yenda <eric@status.im>
2019-10-29 15:03:58 +01:00
Andrey Shovkoplyas da4d95d85c
drop les
Signed-off-by: Andrey Shovkoplyas <motor4ik@gmail.com>
2019-10-15 13:55:39 +02:00
Andrey Shovkoplyas b3d04bb68c
[#8966] biometric
Signed-off-by: Andrey Shovkoplyas <motor4ik@gmail.com>
2019-10-04 12:43:32 +02:00
Andrey Shovkoplyas 9d06f01506
[#8934] Only one sticker is shown in "Recently used"
Signed-off-by: Andrey Shovkoplyas <motor4ik@gmail.com>
2019-09-30 16:15:08 +02:00
Andrey Shovkoplyas 371c66aad1
Remove UUID related code #9048
Signed-off-by: yenda <eric@status.im>
2019-09-30 15:55:55 +02:00
tbenr f7076016d8
fixes #8071
Signed-off-by: yenda <eric@status.im>
2019-09-20 17:54:23 +02:00
Dmitry Novotochinov 1df30f7447
handle initialized cards
Signed-off-by: Dmitry Novotochinov <dmitry.novot@gmail.com>
2019-09-16 11:14:35 +03:00
Andrea Maria Piana e7fa010088
Move gaps to status-go
This commit moves gaps to status-go.

Signed-off-by: Andrea Maria Piana <andrea.maria.piana@gmail.com>
2019-09-04 15:53:48 +02:00
Pedro Pombeiro 58d310ffce
Remove RAM bundle support 2019-08-30 17:13:35 +02:00
yenda ddefae11b1
use wallet_getTokensBalances to reduce number of rpc calls 2019-08-28 16:46:52 +02:00
yenda b45e7ccafb
cleanup fetching transactions 2019-08-28 16:46:52 +02:00
yenda 7d813149eb
move network-id verification 2019-08-28 11:11:41 +02:00
yenda b28c521b2b
remove semaphores 2019-08-28 11:11:41 +02:00
yenda 41cf68b6a7
[fix 8786] fix multiaccount recovery and add account
fix #8786

- multiaccount recovery wasn't saving the root key properly
- this resulted in the impossibility to add new accounts in the wallet

Signed-off-by: yenda <eric@status.im>
2019-08-23 13:15:28 +02:00
yenda c75d5b24f6
[fix 8795] remove mainnet is default alert
Signed-off-by: yenda <eric@status.im>
2019-08-21 17:40:50 +02:00
yenda 5cafef6702
remove contact-recovery
contact recovery is now handled by status-go

Signed-off-by: yenda <eric@status.im>
2019-08-21 10:37:46 +02:00
yenda 1c475e5b1e
replace last remains of web3.js by json-rpc 2019-08-20 17:42:02 +02:00
yenda d61fffb021
remove dev-server and extensions for v1 2019-08-20 17:42:02 +02:00
yenda d7cd2b8a74
integrate status-go accounts 2019-08-20 17:42:02 +02:00
Andrea Maria Piana dcb7415208
Move messages to status-go
This commit does a few things:

1) Move messages to status-go
2) Use message-id computed from status-go
3) Remove old replies

Old message id was used for compatibility of replies with older clients.
Given that v1 is breaking, this is not needed anymore and simplifies
moving messages to status-go. No protocol/data-store change is made, to minimize
changes.

Signed-off-by: Andrea Maria Piana <andrea.maria.piana@gmail.com>
2019-08-20 13:25:05 +02:00
Dmitry Novotochinov b635691c25
recovery flow v1
Signed-off-by: Dmitry Novotochinov <dmitry.novot@gmail.com>
2019-08-14 19:42:26 +03:00
Andrey Shovkoplyas ba112a765b
[#8666] Add account via BIP 44
Signed-off-by: Andrey Shovkoplyas <motor4ik@gmail.com>
2019-08-14 17:58:24 +02:00
Andrea Maria Piana 370bc207bc
Add datasync confirmations, enable device-to-device by default
This commit adds datasync confirmations and enables device-to-device for
all the communications, as that's what we will go with v1.

Signed-off-by: Andrea Maria Piana <andrea.maria.piana@gmail.com>
2019-08-12 19:52:37 +02:00
Andrea Maria Piana fe9d4e9cd8
Move contacts to status-go
Contacts are now in status-go, no migration of contacts is provided so
all contacts will be lost upon installing this build.

I have left the initialization of filters a bit sketchy (we wait that
load-filters is called twice), as the next step will be to avoid calling
load-filters altogether, as now that both contacts & chats are in
status-go, there's no reason to call it from status-react, and can be
called directly from status-go on loading.

Signed-off-by: Andrea Maria Piana <andrea.maria.piana@gmail.com>
2019-08-07 13:39:59 +02:00
Andrea Maria Piana 6fa482a776
Move chats to status-go
This commit moves chats to status-go.

I have changed the logic to load all chats in one go for simplicity and
while that might have a performance impact, I think it's premature to
  optimize this flow as there will be more changes to the login flow.

Also currently this is likely to be slower as we need to wait for the
 status-service to be initialized, as well as realm.

No migration is provided as we are past the point of no return, so by
installing this version you will lose your chats.

Signed-off-by: Andrea Maria Piana <andrea.maria.piana@gmail.com>
2019-08-05 16:08:24 +02:00
Dmitry Novotochinov 60de46b6c2
keycard login v1
Signed-off-by: Dmitry Novotochinov <dmitry.novot@gmail.com>
2019-08-05 11:33:19 +03:00
Andrey Shovkoplyas 6d337bc69a
multiaccounts 2019-07-30 20:35:58 +02:00
Andrea Maria Piana 27b77a6dc9
Add datasync,v1messages & disable discovery topic
In preparation for v1 this commits adds a few options so we can get
start debugging the protocol for v1.
This options are:

1) Datasync: If enabled it will send datasync messages
2) V1Messages: If enabled it will send v1 messages (just adding a
signature to the message)
3) Disable discovery topic: If enabled it will stop listening/publishing
on the discovery topic. You will be able to receive messages only from
clients who have this enabled as well.

If any of this option is on, it will only be compatitle with builds >=
this one. A logout is required for any change to take effect.

All this options will be removed before v1, they are there just to make
it easier for us to test and find potential issues.

Signed-off-by: Andrea Maria Piana <andrea.maria.piana@gmail.com>
2019-07-30 19:11:59 +02:00
Andrey Shovkoplyas 808aa793e5
[#8648] Packs aren't shown in mainnet but we have them in the contract
Signed-off-by: Andrey Shovkoplyas <motor4ik@gmail.com>
2019-07-26 15:02:48 +02:00
yenda 3ea8538377
integrate status-go permissions api
Signed-off-by: yenda <eric@status.im>
2019-07-26 12:16:52 +02:00
yenda 0c839860a2
integrate status-go browsers api 2019-07-26 12:16:32 +02:00
Dmitry Novotochinov d8645e2859
import keycard
Signed-off-by: Dmitry Novotochinov <dmitry.novot@gmail.com>
2019-07-23 17:28:57 +03:00
yenda 562773fa1b
[wallet] use status-go wallet service
- remove use of etherscan and subscriptions
- replace by status-go
2019-07-22 11:16:00 +02:00
yenda c3c4a5170a
[multiaccount] rename multiaccount to account
Signed-off-by: yenda <eric@status.im>
2019-07-22 11:14:44 +02:00
Andrey Shovkoplyas a71901d897
[#8458] [#8448] developed popover, share accounts and signing phrase popovers 2019-07-12 12:36:36 +02:00
Dmitry Novotochinov a2da4dec63
[#8502] recover key to keycard
Signed-off-by: Dmitry Novotochinov <dmitry.novot@gmail.com>
2019-07-12 11:29:47 +03:00
Julien Eluard 28f7ea0408
Enable stickers on all envs. Use contenthash to identify stickers
Signed-off-by: Julien Eluard <julien.eluard@gmail.com>
2019-07-11 15:06:32 +02:00
Vitaliy Vlasov 433f840f76
Onboarding sign-in
Signed-off-by: Vitaliy Vlasov <siphiuel@gmail.com>
2019-07-11 15:46:24 +03:00
Dmitry Novotochinov ac25f6766d
new wallet sign with keycard flow
Signed-off-by: Dmitry Novotochinov <dmitry.novot@gmail.com>
2019-07-08 16:58:43 +03:00
Volodymyr Kozieiev ea8bf402d7
Two pane ui on large screens
Signed-off-by: Volodymyr Kozieiev <vkjr.sp@gmail.com>
2019-07-05 13:03:21 +03:00
Andrea Maria Piana 138ade3b8d
Move installations to status-go
This commit moves the management of installations to status-go, and
migrates the data from realm.

Signed-off-by: Andrea Maria Piana <andrea.maria.piana@gmail.com>
2019-07-03 12:50:23 +02:00
Dmitry Novotochinov ab2248f9f8
keycard onboarding v1
Signed-off-by: Dmitry Novotochinov <dmitry.novot@gmail.com>
2019-06-27 16:02:57 +03:00
Andrea Maria Piana 532664ab84
Adds topic negotiation and partitioned topic
All the code has been implemented in statusgo: status-im/status-go#1466

Basically all the whisper filter management is done at that level.

Technical description
On startup we load all chats and send a list of them to status go:
For a public chat: {:chatId "status"}, we create a single filter, based on the name of the chat.

For each contact added by us, each user in a group chat and each one to one chat open, we send:
{:chatId "0x", :oneToOne true}. This will create a chats, to listen to their contact code.

Any previously negotiated topic is also returned.

Once loaded, we create our filters, and upsert the mailserver topics, both of which are solely based on the filters loaded.
In order to remove a chat, we delete/stopwatching first the the filter in status-react and then ask status-go to remove the filter. For a public chat we always remove, for a one-to-one we remove only if the user is not in our contacts, or in a group chat or we have a chat open. Negotiated topics are never removed, as otherwise the other user won't be able to contact us anymore.

On stopping whisper we don't have to ask status-go to remove filters as they are removed automatically.

Some more logic can be pushed in status-go, but that will be in subsequent PRs.

Signed-off-by: Andrea Maria Piana <andrea.maria.piana@gmail.com>
2019-06-24 13:54:43 +02:00
Andrey Shovkoplyas 26bbac83bc
[#8348] [Multi-Account] Account overview + individual wallet UI
Signed-off-by: Andrey Shovkoplyas <motor4ik@gmail.com>
2019-06-18 17:44:56 +02:00
Julien Eluard 8aa16520c6
[Fixes #8066] Added native ENS registration
Signed-off-by: Andrey Shovkoplyas <motor4ik@gmail.com>
2019-06-18 13:25:56 +02:00
Roman Volosovskyi 7097de6e05
[perf] extensions module 2019-06-13 09:35:09 +03:00
Roman Volosovskyi 908f730b1d
[perf] network module 2019-06-13 09:33:18 +03:00
Andrey Shovkoplyas 7de2941f26
[#8026] [Wallet] Sign transaction module 2019-06-12 13:20:01 +02:00
yenda 04de022eae
[refactor] replace web3-prototype
- replace web3-prototype wherever possible
- currently only the money namespace is left
for future refactoring, the ideal solution
would be to use strings for big numbers all
the time and only convert for arithmetic operations
- use json-rpc call to replace trivial web3 calls

Signed-off-by: yenda <eric@status.im>
2019-06-06 15:57:34 +02:00
yenda 1ae42ea424
[perf] upgrade realm and improve schemas/queries
- upgrade to realm 2.28 to benefit from perf improvements
- remove user-statuses and replace by seen and outgoing-status fields
to get rid of a lot of bloat queries and computations
- remove unused seen message, bottom-infos
- remove unused fields in transport schema
- use objectForPrimaryKey whenever possible instead of get by field

Signed-off-by: yenda <eric@status.im>
2019-06-04 23:36:35 +02:00
Vitaliy Vlasov 04ccd0e7d8
Add TtT chat flow
Signed-off-by: yenda <eric@status.im>
2019-06-03 15:31:30 +02:00
tbenr 090a4e7c76
fixes #6573
Signed-off-by: Andrey Shovkoplyas <motor4ik@gmail.com>
2019-05-31 10:25:24 +02:00
Roman Volosovskyi c7c7b50281
RAM bundle basic setup 2019-05-27 17:34:17 +03:00
yenda 9b04dc6530
[dev feature] extend the defn macro
the defn macro knows register the function as an events under the
keywords provided in the :events key of the attributes map. It also
adds the interceptors provided in the :interceptors map

exemple:

```clojure
(fx/defn hello4
  {:doc "this function is useless as well"
   :events [:test/valid1 :test/valid2]}
  [{:keys [db]} b]
  {:db (assoc db :a b) :b (:a db)})
```

Signed-off-by: yenda <eric@status.im>
2019-05-27 13:50:46 +02:00
Roman Volosovskyi b0be9ee976
Send logs on shaking device 2019-05-24 13:35:04 +03:00
yenda 291c413848
[fix] remove duplicates of :hardwallet/verify-pin event
Signed-off-by: yenda <eric@status.im>
2019-05-23 13:52:03 +02:00
yenda fc4c772c0b
[refactoring] remove web3, clean up wallet effects
- introduce json-rpc namespace, which provides `call` and `eth-call`,
a generic way of calling a json-rpc method taking care of conversions
and error handling
- remove web3 usage from wallet
- clean up effects, reducing the amount of computations when login in
2019-05-23 10:44:15 +02:00
yenda 89680f4861
[performance] improve wallet update performances
`wallet-autoconfig-token` is a very expensive call on mainnet
because it checks the balance of every known token.

it is called:
- when wallet is refreshed by pulling
- when user goes on any wallet screen

this PR changes that by:
- calling it only when the wallet is initialized and there is no
visible-token configuration

it only calls update-wallet when a new transaction arrives
2019-05-23 10:44:15 +02:00
yenda 2cd26c585d
[refactor] transaction history and filters 2019-05-23 10:30:33 +02:00
yenda b274ed9fa9
[feature] use new block signal to get new transactions
- remove the transaction fetching loop entirely to rely only on subscription
for live transactions and token transfer updates
- fetch token transfers history via etherscan API to lift the 100000 blocks
limit on token transfers history

- inbound token transfers are catched via a filter on ethlogs
- outbound token transfers and other transactions are catched by filtering
transaction in current block that have the wallet address as to or from field
2019-05-23 10:30:32 +02:00
yenda f5c18ae7a9
[feature] use subscriptions for tokens
- removes fetching of last 100000 blocks of token transfers from
the wallet pull loop
- fetches the last 100000 blocks of token transfers at startup
- replaces pulling by subscriptions to ethlogs for token transfers
2019-05-23 10:30:32 +02:00
Andrey Shovkoplyas 7a1cb54b2a
[#8236] [Wallet] Custom token details and remove
Signed-off-by: Andrey Shovkoplyas <motor4ik@gmail.com>
2019-05-22 16:50:05 +02:00
bitsikka d640b4c87c
[7947] Feature: Blank out app preview screen when switching apps on mobile
Signed-off-by: Andrey Shovkoplyas <motor4ik@gmail.com>
2019-05-22 15:31:50 +02:00
bitsikka 4f8399a8fd
[7715] Feature: Contextual bottom sheet on long press
Signed-off-by: Andrey Shovkoplyas <motor4ik@gmail.com>
2019-05-20 17:04:21 +02:00
Andrey Shovkoplyas 23b04288f1
[#7983] Basic user added ERC-20 support
Signed-off-by: Andrey Shovkoplyas <motor4ik@gmail.com>
2019-05-20 14:29:38 +02:00
yenda 65f05933bc
[feature] use status-go signal subscriptions for current block
- use signal subscriptions to get latest block signals
- compute confirmations in transaction details from current block
dynamically

Signed-off-by: yenda <eric@status.im>
2019-05-13 15:36:58 +02:00
Dmitry Novotochinov 5d6d549511
[#7927] import keycard account to new device
Signed-off-by: Dmitry Novotochinov <dmitry.novot@gmail.com>
2019-05-11 23:10:02 +03:00
Dmitry Novotochinov 5762967a44
[#7887] handle tag lost errors
Signed-off-by: Dmitry Novotochinov <dmitry.novot@gmail.com>
2019-05-11 23:05:33 +03:00
Dmitry Novotochinov 99e00898f9
[#7911 #7894] delete account and logout after keycard reset
Signed-off-by: Dmitry Novotochinov <dmitry.novot@gmail.com>
2019-05-08 14:35:10 +03:00
Julien Eluard 7b0ebf75e9
Fixed broken EIP15777 support
Signed-off-by: Julien Eluard <julien.eluard@gmail.com>
2019-05-07 15:38:55 +02:00
Vitaliy Vlasov e725fffe22
Move block contact related code
- this will avoid circular dependencies in future Tribute to Talk commits

Signed-off-by: yenda <eric@status.im>
2019-04-30 16:57:34 +02:00
Vitaliy Vlasov 1ca9294af7
[MVP TTT] Contract support for settings
- settings are stored in a manifest that is pointed at by the contract
- during login the contract is checked to fetch the settings

Signed-off-by: yenda <eric@status.im>
2019-04-30 14:52:33 +02:00
Dmitry Novotochinov 08d7db80af
[#7890] handle wrong keycard when signing
Signed-off-by: Dmitry Novotochinov <dmitry.novot@gmail.com>
2019-04-26 15:55:03 +03:00
Roman Volosovskyi 9b9eefbf0e
Allow to fetch more history in public chats (up to 30 days) 2019-04-26 15:53:26 +03:00
Julien Eluard f6fce850b2
Revert "After dismissing error, no redirect to home and new qr can be"
This reverts commit 386c678caf.
2019-04-26 15:27:44 +03:00
Roman Volosovskyi c98f547349
Multiple messages gaps per chat 2019-04-24 22:33:08 +03:00
bitsikka 8482ea5b5a
[#7933] fix - joining public chat with messages throws error
[#7933] fix - joining public chat with messages throws error
2019-04-19 13:00:23 +03:00
Andrey Shovkoplyas 159199a1b3
removed dapps list and introduced simple Dapp store dapp
Signed-off-by: Andrey Shovkoplyas <motor4ik@gmail.com>
2019-04-18 15:49:06 +02:00
Roman Volosovskyi 2753b0ef60
Skip fetching 24h of discovery topics on a new account
Signed-off-by: Igor Mandrigin <i@mandrigin.ru>
2019-04-16 11:55:17 +02:00
Roman Volosovskyi a4d8f57b09
Fetch missed range of messages 2019-04-12 16:22:44 +03:00
Emilio Silva Schlenker 64b63d5593
[#7598] Beta alert on upgrading
Signed-off-by: Igor Mandrigin <i@mandrigin.ru>
2019-04-11 20:50:10 +02:00
Kris Calabio 386c678caf
After dismissing error, no redirect to home and new qr can be
scanned.

Signed-off-by: Pedro Pombeiro <pombeirp@users.noreply.github.com>
2019-04-08 19:26:24 +02:00
Dmitry Novotochinov 4decedf5f6
Revert "Revert "[#7133] sign tx with keycard""
This reverts commit 4ccb1ea52d.

Signed-off-by: Dmitry Novotochinov <dmitry.novot@gmail.com>
2019-04-05 15:49:47 +03:00
Andrea Maria Piana f8674c0ee1
Add reading nodes from contract
This PR is part of network incentivisation. It adds a way for a client
to pull nodes from a contract.

This is done by selecting the `eth.contract` fleet. If that is selected
on login it will fetch nodes from a contract and pass them to status-go.
If these can't be fetched, it will default to `eth.beta`.

Currently contract information are hard-coded, but eventually the user
will be able to add their own (probably).

Toggled off in release.

Signed-off-by: Andrea Maria Piana <andrea.maria.piana@gmail.com>
2019-04-05 14:32:15 +02:00
bitsikka 6aae0b76b9
[#7454] fix add basic copy to public chat empty screen state + related issues/feature regarding chat message-views intro screens for all chats types
[#7454] fix add basic copy to public chat empty screen state + chat messages-views intro screens for all chats

Signed-off-by: Igor Mandrigin <i@mandrigin.ru>
2019-04-04 12:34:37 +02:00
tbenr 38fc712f07
fixes #7667
Signed-off-by: Julien Eluard <julien.eluard@gmail.com>
2019-04-03 11:50:56 +02:00
Dmitry Novotochinov 4ccb1ea52d
Revert "[#7133] sign tx with keycard"
This reverts commit feffcaf33d.

Signed-off-by: Dmitry Novotochinov <dmitry.novot@gmail.com>
2019-04-02 20:12:40 +03:00
Dmitry Novotochinov feffcaf33d
[#7133] sign tx with keycard
Signed-off-by: Dmitry Novotochinov <dmitry.novot@gmail.com>
2019-04-02 18:07:41 +03:00
Andrea Maria Piana 3eb570f082
Set chaos mode every time, dont show the popup everytime
Signed-off-by: Igor Mandrigin <i@mandrigin.ru>
2019-03-26 15:58:21 +01:00
yenda 26b97ddf43
introduce system-tags
Signed-off-by: yenda <eric@status.im>
2019-03-25 16:55:09 +01:00
Roman Volosovskyi 65e7e06b27
[#7681] Show confirmation dialog on switching to network with upstream RPC 2019-03-22 13:23:10 +02:00
yenda 5e7186ed52
[fix 5695] remove close icon in add to contacts bar
Signed-off-by: Igor Mandrigin <i@mandrigin.ru>
2019-03-21 13:44:00 +01:00
Roman Volosovskyi 6a3468c800
Request if chaos mode was enabled 2019-03-21 13:22:21 +02:00
Roman Volosovskyi 298f000fcb
Disable Etherscan and Cryptocompare requests in chaos mode 2019-03-19 19:35:24 +02:00
Andrey Shovkoplyas ad4c6ce94f
[#7684] Relocate and change menu for "+" icon on home/chat screen 2019-03-19 13:11:20 +01:00
Andrea Maria Piana 3431957a7f
Pass cofx as first parameter when deleting bootnodes
Signed-off-by: Andrea Maria Piana <andrea.maria.piana@gmail.com>
2019-03-15 13:23:19 +01:00
Dmitry Novotochinov 43bd6d159a
improve keycard installation UX
Signed-off-by: Dmitry Novotochinov <dmitry.novot@gmail.com>
2019-03-08 14:57:29 +03:00
Andrey Shovkoplyas 59feb5ecd8
[#7611] Update stickers contract and use "approveAndCall" feature
Signed-off-by: Andrey Shovkoplyas <motor4ik@gmail.com>
2019-03-08 10:31:51 +01:00
Andrey Shovkoplyas 38aca129cd
[#7527] Extension is not shown in chat if Development mode is switched off
Signed-off-by: Andrey Shovkoplyas <motor4ik@gmail.com>
2019-03-07 20:33:19 +01:00
Andrea Maria Piana b26b6ee5e0
Add unpinning of mailservers
Signed-off-by: Igor Mandrigin <i@mandrigin.ru>
2019-03-04 14:06:09 +01:00
Dmitry Novotochinov 908e80eb0b
[#7216] import account to keycard
Signed-off-by: Dmitry Novotochinov <dmitry.novot@gmail.com>
2019-03-01 14:38:00 +03:00
Andrea Maria Piana edf810444d
Fix concurrent retry-request
Sometimes it happens that the expired signal is received while the
there's a new request in flight.
This happens in cases such as:

1) We send a request (A)
2) We get disconnected from the mailserver
3) We connect to a new mailserver
4) We send a request (B)
5) We receive an expired signal for A

In such cases the request should not be retried or counted as a failure.

Signed-off-by: Igor Mandrigin <i@mandrigin.ru>
2019-02-28 15:28:59 +01:00
Vitaliy Vlasov c23d26e273
TtT Profile screen
Edit screen

Edit screen updates

Learn more screen

Add SNT asset value

Formatting

Add TtT note to QR code viewer

Fixes

UI fixes

Intro screen

Fix learn more

Add learn more subtext

Remove unneeded logs

Screen fixes 2

Signed-off-by: Vitaliy Vlasov <siphiuel@gmail.com>
2019-02-27 20:08:39 +02:00
Andrea Maria Piana 4f89073ae8
Add network info in about, with copy to clipboard
In network we show peer infos about you and the connect peers.
Any entry is about is clickable and will copy the value to the
clipboard. Copy info will copy all the info in a JSON string.

Signed-off-by: Andrea Maria Piana <andrea.maria.piana@gmail.com>
2019-02-26 17:31:55 +01:00
Andrea Maria Piana c56ef18ca9
Retry mailserver request when initial request fails
If the initial request fails we immediately show the error pop-up. This
PR changes the behavior so that it is retried just like any other
request. If 3 requests in a row fail, we show the error pop up if the
user has specifically set a mailserver, otherwise is changed
automatically.

Signed-off-by: Igor Mandrigin <i@mandrigin.ru>
2019-02-25 21:43:15 +01:00
Dmitry Novotochinov bae935d3e4
[#7217] check card state before installation
Signed-off-by: Dmitry Novotochinov <dmitry.novot@gmail.com>
2019-02-25 22:57:56 +03:00
Andrey Shovkoplyas a1aeff70e5
[#6703] Stickers UI and contract wedding
Signed-off-by: Andrey Shovkoplyas <motor4ik@gmail.com>
2019-02-25 09:29:15 +03:00
Andrea Maria Piana bcbaeb2cd9
Handle request error
Signed-off-by: Andrea Maria Piana <andrea.maria.piana@gmail.com>
2019-02-19 13:39:02 +01:00
Andrea Maria Piana dac323a3de
Remove automatic sending of contact request 2019-02-18 09:37:35 +01:00
Andrea Maria Piana becb32d5e7
Use dedup-id instead of raw-payload
This is a backward/forward compatible change with status-go.
We are changing the way messages are confirmed from passing the
raw-object to status-go to a dedup-id instead, which needs to be sent
back.
Based on the response from status-go we detect whether they are ids or
object and act accordingly.

Signed-off-by: Andrea Maria Piana <andrea.maria.piana@gmail.com>
2019-02-17 23:05:25 +01:00
Andrea Maria Piana bddae03ab2
Allow multiple push notifications
We keep tokens synchronized across devices, so that the user can notify
us on any paired device.
Currently we record the installation id associated to the fcm-token even
though is not necessary, but it will be once we send device-to-device
messages, in which case we want to notify only those devices.

Signed-off-by: Andrea Maria Piana <andrea.maria.piana@gmail.com>
2019-02-14 16:33:50 +01:00
Pedro Pombeiro 40b3100cfc
Fetch messages from mailserver upon PN if db is unlocked. Part of #3451
Signed-off-by: Pedro Pombeiro <pombeirp@users.noreply.github.com>
2019-02-13 23:28:44 +01:00
Andrey Shovkoplyas fca51beaaa
[#7445] Sticker detail view in chat
Signed-off-by: Julien Eluard <julien.eluard@gmail.com>
2019-02-12 16:31:22 +01:00
Andrea Maria Piana 7960fdef85
Publish contact updates periodically
Currently it's very easy for contact details to get out of sync, the
simplest example is:
A & B are contacts.
A changes name.
B receives the updated name.
B re-install the app.
Until A changes name again, B will not see their name, picture and won't
be able to send push notifications.

This PR changes the behavior to publish account informations to contacts
every 24 hrs, to add some redundancy in this cases.

It also publishes a contact code every 12hrs.

Signed-off-by: Andrea Maria Piana <andrea.maria.piana@gmail.com>
2019-02-12 14:20:45 +01:00
Andrey Shovkoplyas cf8527d147
[#7374] stickers polishing
Signed-off-by: Andrey Shovkoplyas <motor4ik@gmail.com>
2019-02-07 09:27:49 +01:00
Andrey Shovkoplyas 4c4fb6bbe9
[#5584] Implement Manage permissions screen and option for web3 provider Opt-in access
Signed-off-by: Andrey Shovkoplyas <motor4ik@gmail.com>
2019-02-06 10:38:20 +01:00
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