Commit Graph

71 Commits

Author SHA1 Message Date
Andrea Maria Piana 34755500d5
[Fixes: #10471] Parse markdown in chat subheader.
This commit adds parsing of markdown in the chat subheader.

Because of the added complexity performance are impacted but I have
also noticed that on each loading of the chat screen we calculate
alias & identicon through status-go, so that has been changed so that
they are returned from status-go.

Overall performance is now roughly identical, tested loading 150
one-to-one chats.

Another issue that I've spotted is that some `subs` are unnecessarely
recalculated (`active-chats`), when unrelated fields changes. I will
address this in a separate PR that should improve performance.

Signed-off-by: Andrea Maria Piana <andrea.maria.piana@gmail.com>
2020-05-25 14:03:24 +02:00
Andrea Maria Piana ed87e350ae
[Fixes: #10390] Re-enable group chat on re-invite
If we get re-invited to a chat that we left, the chat will be shown
again.

Signed-off-by: Andrea Maria Piana <andrea.maria.piana@gmail.com>
2020-04-23 12:46:03 +02:00
Andrea Maria Piana 387b9cb37a
Don't send extra contacts from status-go
Previous we sent all contacts from status-go, also those that we only
create to memoize name/image.
This commit changes the behavior so that only contacts that have custom
fields are received by status-react (added by us, added by them,
blocked, with a verified ENS name)

Signed-off-by: Andrea Maria Piana <andrea.maria.piana@gmail.com>
2020-04-21 09:15:32 +02:00
Andrea Maria Piana 28a2bca012
Get replies directly from status-go
Fixes: #10297
Fixes: #10274

Before if a reply was missing (for example if it the message replied to
arrived after the reply) status-react would subscribe to it dynamically
and use that. This caused some flickering issues when offloading the
messages from the database, as the message being replied to would be
offloaded and later loaded back again, triggering scroll and ending up
in a loop.

This commit changes the behavior so that status-go always adds the
reply to the message. In case the message being replied to arrives after
the reply, this will be included in the message update, and status-react
will replace it in the local storage.

Signed-off-by: Andrea Maria Piana <andrea.maria.piana@gmail.com>
2020-04-16 15:54:33 +02:00
Andrea Maria Piana a9c580e82c
Increment retry count when ENS fails to verify
When an ENS name fails to verify, we should increment the retry count so
that it back offs. All the changes are in status-go.

Signed-off-by: Andrea Maria Piana <andrea.maria.piana@gmail.com>
2020-04-14 14:26:01 +02:00
Gheorghe Pinzaru 461b6cdb74
Update the UI for the group chat
Add search for contacts

Add format name inside contact

Add back button on create group

Fix current contact name and alias

fixup

Update UI for group chat profile

Fix tests

Ui clean up

fix change group chat name

Add leave group chat option

Hide options if user has left the chat

Use modal for all required chat screens

Add dark mode to group chats

Fix offset 10 pt off screen on presentation modals

Wrap keyboard avoiding view with safe area offset

Keep only leave chat

Fix search input focus

Make edit name active when title not changed

Fix lint

review cleanup

QA review

Fix group chat inviter name

Fit flat list into container

Signed-off-by: Gheorghe Pinzaru <feross95@gmail.com>
2020-04-10 13:58:04 +03:00
Andrea Maria Piana c2d129d04e
Fix mark as read for hidden messages
If a message is hidden and is not currently loaded, it will not be
marked as read, resulting in the count being always positive. To avoid this
we always mark it as read, and from the backend we return whether it has
been marked as read or was already seen.

Signed-off-by: Andrea Maria Piana <andrea.maria.piana@gmail.com>
2020-04-07 13:27:06 +02:00
Andrea Maria Piana 97a953cc64
Upgrade status-go
Signed-off-by: Andrea Maria Piana <andrea.maria.piana@gmail.com>
2020-03-30 15:50:10 +02:00
Andrea Maria Piana dcca501b0a
Enable waku node default
Signed-off-by: Andrea Maria Piana <andrea.maria.piana@gmail.com>
2020-03-30 10:59:29 +02:00
Artur Zabeyvorota cda7564bbe
[#9657] system messages ui changes in group chat
Signed-off-by: Andrea Maria Piana <andrea.maria.piana@gmail.com>
2020-03-25 15:33:41 +01:00
Andrey Shovkoplyas b8861c6c14
[#10141] Unable to login to multiaccount if it is already restored as account in another multiaccount (IOS)
Signed-off-by: Andrey Shovkoplyas <motor4ik@gmail.com>
2020-03-12 14:21:56 +01:00
Roman Volosovskyi cc520a1f27
[#9987] Stop fetching new blocks while app is not active 2020-03-11 09:17:58 +02:00
Andrea Maria Piana 6a9eef1c2a
Upgrade status-go
Signed-off-by: Andrea Maria Piana <andrea.maria.piana@gmail.com>
2020-02-29 14:01:52 +01:00
Andrea Maria Piana f9af0825ce
upgrade status-go
Signed-off-by: Andrea Maria Piana <andrea.maria.piana@gmail.com>
2020-02-28 18:51:12 +01:00
Roman Volosovskyi 988a7f6b0c
[#10010] Start wallet service for keycard acc 2020-02-26 20:50:34 +02:00
Andrea Maria Piana 21ef5a68b8
Add mark all read
Signed-off-by: Andrea Maria Piana <andrea.maria.piana@gmail.com>
2020-02-26 13:35:31 +01:00
Andrea Maria Piana a2af83f034
Add option to enable waku-mode
This commit adds an option to enable waku mode through ENV settings.

Signed-off-by: Andrea Maria Piana <andrea.maria.piana@gmail.com>
2020-02-17 18:22:50 +01:00
Volodymyr Kozieiev e6c859dd2d
Pending stickers status maintains after app restart
Signed-off-by: Volodymyr Kozieiev <vkjr.sp@gmail.com>
2020-02-13 15:02:00 +02:00
Andrea Maria Piana 3d4ee8fe6a
Check for empty public key
We check that ENS does not return an empty public key. In addition to
that validation is done on status-go in order to avoid saving the chat.

Signed-off-by: Andrea Maria Piana <andrea.maria.piana@gmail.com>
2020-02-07 14:43:54 +01:00
Andrea Maria Piana 27a001b0f0
fix status-go version
Signed-off-by: Andrea Maria Piana <andrea.maria.piana@gmail.com>
2020-02-05 11:35:04 +01:00
Andrea Maria Piana b1ec418133
Resolve ENS names in the background
This commits resolves ENS names in the background, implementing retries
and exponential backoff.
All is handled in the background in status-go.

Signed-off-by: Andrea Maria Piana <andrea.maria.piana@gmail.com>
2020-02-05 11:12:06 +01:00
Roman Volosovskyi ef49699222
[#9942] Upgradable paths in configs
Storing absolute path for different configs breaks compatibility on iOS
as app's dir is changed after upgrade. The solution is to store relative
paths and to concatenate it with `backend.rootDataDir`. The only
exception is `LogFile` as it is stored outside `backend.rootDataDir` on
Android. `LogDir` config was added to allow adding of custom dir for log
file.
Configs concerned:
`DataDir`
`LogDir`
`LogFile`
`KeystoreDir`
`BackupDisabledDataDir`
2020-02-03 20:34:40 +02:00
Roman Volosovskyi b41df2f2fc
[#9927] Fast blocks sync after being offline
Front end changes:
 As there is no guarantee that `newblock` event will be dispatched
consequently (e.g. if there was a delay after block#1 the next event
might be dispatched for a block#2000, no guarantee that block#2 will be
the next one), `newTransactions` field was added with a map of accounts
to the number of new transactions received to this block. In result if
there are new transactions we request them all of db instead of fetching
them on for the block specified in `newblock` event, as it was done
previously.

Back end changes:
- In order to avoid handling of the reorganized blocks we use an offset
from the latest known block when start listening to new blocks. Before
this commit the offset was 15 blocks for all networks. This offset is
too big for mainnet and causes noticeable delay of marking a transfer as
confirmed in Status (comparing to etherscan). So it was changed to be 5
blocks on mainnet and is still 15 blocks on other networks.
- Also before this commit all new blocks were handled one by one with
network specific interval (10s for mainnet), which means that in case of
lost internet connection or application suspension (happens on iOS)
receiving of new blocks would be paused and then resumed with the same
"speed" - 1 blocks per 10s. In case if that pause is big enough the
application would never catch up with the latest block in the network,
and this also causes the state of transfers to be delayed in the
application. In this commit in case if there was more than 40s delay
after receiving of the previous block the whole history in range between
the previous received block and ("latest"-reorgeSafetyDepth) block is
checked at once and app catches up with a recent state of the chain.
2020-01-30 19:40:19 +02:00
Andrea Maria Piana 6ff878c836
Explicitly start messenger
We should only start receiving messages/processing topics once all the
initializiation is completed, so an endpoint that start the messenger
has been added.
Before we would initialize the topics/receiving messages at the same time,
which resulted in a race condition where a topic was signaled from
status-go and was considered new just because was not loaded yet.

Signed-off-by: Andrea Maria Piana <andrea.maria.piana@gmail.com>
2020-01-29 21:17:32 +01:00
Roman Volosovskyi 161042066d
[#9203] Transfers fetching with less requests
- all messages are not shown right away, in order to paginate history
  a user has to press "load more" button
- added link to etherscan before transfers list
- there is a new "fetch more" button at the end of the list
- rest of changes can be found here status-im/status-go#1775
2020-01-23 14:41:16 +02:00
Andrea Maria Piana ee613276b7
Fix ens names & contacts
Signed-off-by: Andrea Maria Piana <andrea.maria.piana@gmail.com>
2020-01-23 11:32:21 +01:00
Jakub Sokołowski 171ca13db2
status-go: upgrade 0.39.8 > 0.39.10
Signed-off-by: Jakub Sokołowski <jakub@status.im>
2020-01-23 10:06:36 +01:00
yenda db74e0431c
make send commands work directly with ens names
Signed-off-by: yenda <eric@status.im>
2020-01-20 18:10:55 +01:00
Andrea Maria Piana 53d0cb519c
Fix ens names & group chat add-members
Signed-off-by: Andrea Maria Piana <andrea.maria.piana@gmail.com>
2020-01-17 13:43:19 +01:00
yenda 5ab4762a07
update status-go to fix empty-account bug
Signed-off-by: yenda <eric@status.im>
2020-01-15 22:58:18 +01: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 84828891a0
Add chat commands
Signed-off-by: yenda <eric@status.im>
2020-01-10 20:13:19 +01:00
yenda f36efbc24b
fix stickers persistence
Signed-off-by: yenda <eric@status.im>
2020-01-10 17:25:17 +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
yenda a72d4c7d85
integrate status-go fix for keycard accounts
Signed-off-by: yenda <eric@status.im>
2019-12-19 21:32:10 +01:00
yenda 2c3e831a03
use accounts rpc endpoints
Accounts were previously stored within the multiaccount `setting`
serialized in transit

This moves [:multiaccount :accounts] to `:multiaccount/accounts` and uses
the `getAccounts`, `saveAccounts` and `deleteAccounts` endpoints.

Signed-off-by: yenda <eric@status.im>
2019-12-17 10:33:46 +01:00
yenda 6a800b211d
move custom tokens to a separate table
Signed-off-by: yenda <eric@status.im>
2019-12-12 14:00:01 +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
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 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
Jakub Sokołowski b32dd113f6
nix: upgrade nixpkgs
Also:
- upgrade Go: 1.12 > 1.13
- upgrade Android SDK: 28.0.3 > 29.0.2
- nix: stop using system Fastlane for iOS builds
- nix: include CocoaPods in shell for iOS
- nix: concatenate shellHooks correctly
- fix gomobile status-go build by setting GO111MODULE=off
- fix gradle accepting empty STATUS_GO_SRC_OVERRIDE value
- don't use a pure shell for uploadToSauceLabs()

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2019-11-26 16:30:41 +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
Andrea Maria Piana 2bb7c70216
[Fixes: #1520] Enable ens
Signed-off-by: Andrea Maria Piana <andrea.maria.piana@gmail.com>
2019-11-08 13:03:42 +01:00
Andrea Maria Piana 5fe385c225
Parse messages in status-go
This commit enables parsing of messages in status-go.
Currently only a few messages are supported in status-protocol-go.
For now we only enable Message types.
Status-react will conditionally use the parsed version if present.
Eventually this can be moved to a separate signal/different structure,
but for the time being is best to validate with the minimum amount of
changes.

The next step would be handle validation and processing of the field in
status-go, so we can skip saving the message from status-react.

This commit should improve performance of receiving messages from a
chat, although haven't had time to validate that.

Signed-off-by: Andrea Maria Piana <andrea.maria.piana@gmail.com>
2019-11-06 19:30:47 +01:00
Andrea Maria Piana 5eb314db58
Use staging fleet and upgrade status-go
Signed-off-by: Andrea Maria Piana <andrea.maria.piana@gmail.com>
2019-11-04 15:07:12 +01:00
Andrea Maria Piana 9cd891365a
Use payload & avoid transforming in clojure objects.
This commit includes a few performance fixes:
1) Pass a string payload instead of an hex encoded string, to avoid
unecessary conversion
2) Don't js->clj on messages, as that's fairly expensive and we can get
away without
3) Don't use `pr-str` `read-string`, rather convert to json

Signed-off-by: Andrea Maria Piana <andrea.maria.piana@gmail.com>
2019-10-23 15:52:32 +02:00
Adam Babik df874966ba
upgrade status-go with geth 1.9.5
Signed-off-by: Adam Babik <a.babik@designfortress.com>
2019-10-05 16:26:55 +02:00
Andrea Maria Piana acd7e56d1d
Add gfycat/identicon from status-go
Signed-off-by: yenda <eric@status.im>
2019-09-26 14:12:43 +02:00