43 Commits

Author SHA1 Message Date
Julien Eluard
e1bcaebd2c
Resolve ENS name in chats and profiles
Signed-off-by: Julien Eluard <julien.eluard@gmail.com>
2019-07-02 19:41:07 +02: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
Roman Volosovskyi
2ad4c9c054
upgrade react-navigation 2019-06-19 12:00:22 +03:00
Roman Volosovskyi
908f730b1d
[perf] network module 2019-06-13 09:33:18 +03: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
Roman Volosovskyi
c7c7b50281
RAM bundle basic setup 2019-05-27 17:34:17 +03:00
yenda
b13864d052
[refactor] move utils.ethereum to ethereum
move utils.ethereum.tokens to ethereum.tokens
move utils.ethereum.abi-spec to ethereum.abi-spec
move utils.ethereum.core to ethereum.core
move utils.ethereum.eip165 to ethereum.eip165
move utils.ethereum.eip55 to ethereum.eip55
move utils.ethereum.eip681 to ethereum.eip681
move utils.ethereum.ens to ethereum.ens
move utils.ethereum.erc721 to ethereum.erc721
move utils.ethereum.mnemonics to ethereum.mnemonics
move utils.ethereum.resolver to ethereum.resolver
move utils.ethereum.macros to ethereum.macros

Signed-off-by: yenda <eric@status.im>
2019-05-23 15:11:48 +02:00
yenda
70e889a03a
[performance] replace reduce by reduce-kv
For associative collections, using reduce-kv should
give a small performance gain over reduce as there is
no allocation of tuples for key/value pairs

Signed-off-by: yenda <eric@status.im>
2019-05-17 19:44:26 +02:00
Andrey Shovkoplyas
428464df07
re-frame subscriptions optimization
Signed-off-by: Andrey Shovkoplyas <motor4ik@gmail.com>
2019-05-01 12:49:31 +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
Julien Eluard
f6fce850b2
Revert "After dismissing error, no redirect to home and new qr can be"
This reverts commit 386c678cafa108884daa806e1c61dc083042b407.
2019-04-26 15:27:44 +03:00
Roman Volosovskyi
c98f547349
Multiple messages gaps per chat 2019-04-24 22:33:08 +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
bitsikka
cd1dfb67f4
[#7917] fix - Contacts are not synced between 0.11.0 and current nightly
Signed-off-by: Jakub Sokołowski <jakub@status.im>
2019-04-16 21:33:46 +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
yenda
26b97ddf43
introduce system-tags
Signed-off-by: yenda <eric@status.im>
2019-03-25 16:55:09 +01: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
Andrea Maria Piana
9c6cce7d4d
Allow to send transactions to non-contacts
Signed-off-by: Andrea Maria Piana <andrea.maria.piana@gmail.com>
2019-02-18 11:33:39 +01:00
Andrea Maria Piana
dac323a3de
Remove automatic sending of contact request 2019-02-18 09:37:35 +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
yenda
77b792a37a
[#6850] related refactoring
- remove unecessary subscriptions related to add-contact-bar

Signed-off-by: yenda <eric@status.im>
2019-02-13 12:38:31 +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
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
yenda
444c6af319
[refactor] contact model: remove unused fields and add blocked?
- dapp related fields are removed since it is not used anymore
- blocked? field is added for futur block user feature
2019-02-05 16:28:50 +01:00
Igor Mandrigin
e2f53418f3
Revert "don't auto-generate contact address from whisper pub key"
This reverts commit b3416f5ad54d5b8fb8bb227db2850841156c2cc9.

Signed-off-by: Igor Mandrigin <i@mandrigin.ru>
2019-02-04 16:08:49 +01:00
Andrea Franz
b3416f5ad5
don't auto-generate contact address from whisper pub key
Signed-off-by: Andrea Franz <andrea@gravityblast.com>
2019-02-04 13:58:21 +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
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
yenda
20bd65c0c0
[refactor] differentiate private and public chat and contact subs
- aliased namespace keywords are used for local subs used for caching
- synthetic :chat namespace is used for subs used elsewhere

Signed-off-by: yenda <eric@status.im>
2018-11-21 12:08:51 +01:00
yenda
b119facb2a
[fix] query-chat-contacts subscription params
Signed-off-by: yenda <eric@status.im>
2018-11-19 15:59:44 +01:00
yenda
1ba7feb439
[refactor] move contact.subs and utils.contacts to contact.db
functions defined in subs need to be reusable and testable independently
from re-frame framework. they are moved into db namespace for that purpose

Signed-off-by: yenda <eric@status.im>
2018-11-19 14:30:25 +01:00
Eric Dvorsak
26ec3f8cd7
[refactor] remove unused functions in handlers
Signed-off-by: yenda <eric@status.im>
2018-11-09 11:16:46 +01:00
Eric Dvorsak
548162f733
[refactor] remove current-public-key 2018-11-09 11:16:27 +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
Eric Dvorsak
b7b7806ed1
[refactor] remove allowed-keys macro
The initial purpose of the allowed keys macro was to only accept maps
with a defined set of keys so that the maps can be serialized into the db.
The way maps are serialized has been changed so that only the existing keys
in the db are cherry picked so passing maps with extra keys is no longer a
problem
2018-11-09 11:16:26 +01:00
Eric Dvorsak
4804d11b0f
[refactor] remove jail-loaded? and jail-loaded-events 2018-11-09 11:16:23 +01:00
karol
18b4bf590c
[#2884] added name lookup for recipient after qr code scanning, moved address comparision function to utils.ethereum namespace, address= will now expect address to be passed (instead of contact)
Signed-off-by: Goran Jovic <goranjovic@gmail.com>
2018-11-06 17:44:55 +01:00
Andrea Maria Piana
7aa597517e
Add system messages to group chats
Signed-off-by: Andrea Maria Piana <andrea.maria.piana@gmail.com>
2018-11-05 14:54:43 +01: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
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