Commit Graph

344 Commits

Author SHA1 Message Date
Andrea Maria Piana dd5c30b7a0
Move mailserver logic/gaps/ranges to status-go
This commit moves most of the mailserver logic to status-go.

- Filters are now removed and not passed to the client anymore
- Ranges have been removed
- Gaps are now messages with a different content type
- Upsert/Save chat has been removed and instead we have more specific
endpoints such as CreatePublicChat/CreateOneToOneChat/CreateProfileChat
- Creation of timeline/profile chat has been moved to status-go

Signed-off-by: Andrea Maria Piana <andrea.maria.piana@gmail.com>
2021-05-21 07:44:21 +02:00
Shivek Khurana ed4e227144
Add a long running task to transfer events to Go when the user logs in, rename interceptors namespace to core, send events in batches, capture s/on-will-focus, capture navigate-to-cofx, stop long running task if any event fails validation, not quite ready yet, needs more testing
Remove redudant println, don't stop the task in case of a bad event, just reject that batch, capture navigate-to-cofx events with an effect, capture parts of screens/on-will-focus event

Fix lint

Shorten comment widths, update  to use less brackets, call events reset once, double run safety for long running task

Call onboard after stopping

Reset periodic-tasks-chan to  on close, formatting

Get rid of redundant inline function

Update go version to point to 0.75.1

Signed-off-by: Shivek Khurana <shivek@status.im>
2021-04-19 10:59:23 +05:30
andrey 93ce02b547
[#11958] Add activity center 2021-04-16 20:45:20 +02:00
Roman Volosovskyi 460685212a
[wallet] Finetuning RPC calls for new accounts 2021-03-31 16:08:25 +03:00
andrey 25d5672355
messages improvements 2021-03-12 12:07:15 +01:00
andrey 9648f741b4
cleaning 3
Signed-off-by: andrey <motor4ik@gmail.com>
2021-02-17 16:16:54 +01:00
Andrea Maria Piana 452e54fc19
Add buy crypto banner
Signed-off-by: Andrea Maria Piana <andrea.maria.piana@gmail.com>
2021-02-17 10:25:45 +01:00
Andrea Maria Piana eba6b63258
Fix topic issue, remove ttt, add db export/import
There were a few issues with topic management:

- Topics/ranges were saved one-by-one, which cause an out of memory
error on some devices
- Topics that were not listened to were saved, and therefore requested
from the mailserver, which caused long syncing time

It also removes tribute to talk and add export/import methods

Signed-off-by: Andrea Maria Piana <andrea.maria.piana@gmail.com>
2021-01-26 12:46:21 +01:00
andrey 35671226e4
remove outdated :initial-props
Signed-off-by: andrey <motor4ik@gmail.com>
2021-01-25 10:38:34 +01:00
Andrea Maria Piana 6099262c98
[Fixes: #11579] Add only certain fields to multiaccount on login
`multiaccounts` has some fields that should not be overriden
(`save-password`), so we expliciltly `assoc` only certain fields.

Signed-off-by: Andrea Maria Piana <andrea.maria.piana@gmail.com>
2020-12-28 17:09:22 +01:00
Gheorghe Pinzaru 5643c4d537
Add profile pictures
Signed-off-by: Andrea Maria Piana <andrea.maria.piana@gmail.com>
2020-12-17 14:12:07 +01:00
andrey 3241d3273e
[#11469] Browser bookmarks
Signed-off-by: andrey <motor4ik@gmail.com>
2020-12-11 16:55:42 +01:00
Roman Volosovskyi c33e2be76b
[wallet] Watch txs history while app is in the background (Android only) 2020-12-10 18:02:49 +02:00
Jonathan Rainville b2cdc59670
fix: fix mailserver popup showing after canceling it
Fixes #10065
After clicking cancel, the popup is `dismissed`, so it will not appear again
Selecting a new mail server sets `dismissed` as false, so the error can appear again
2020-12-02 09:49:46 +01:00
Andrea Maria Piana a4716cc494
[Fixes: #9181] Reset edit mailserver on add pressed
Signed-off-by: Andrea Maria Piana <andrea.maria.piana@gmail.com>
2020-12-01 14:44:34 +01:00
Roman Volosovskyi 92aaa194a8
[wallet] Pull to refresh tx history 2020-11-30 16:13:55 +02:00
Roman Volosovskyi 7bfaa9255c
[wallet history] Stop watching each new block 2020-11-25 16:44:16 +02:00
Roman Volosovskyi 35381a55c0
[#10239] Remove "Fetch last 24 hours" option 2020-11-10 13:33:53 +02:00
Roman Volosovskyi 6eb840c8b2
[#10362] Allow receiving old messages after rejoining a pubchat 2020-11-06 17:37:18 +02:00
andrey ee61244770
timeline
Signed-off-by: andrey <motor4ik@gmail.com>
2020-11-06 14:23:02 +01:00
andrey eae66c967e
my status
Signed-off-by: andrey <motor4ik@gmail.com>
2020-10-28 14:42:59 +01:00
shivekkhurana cf0cd283a6
Add new UI for mailserver selection, Add feature to disable mailserver usage 2020-10-16 12:13:15 +02:00
andrey e602f0493d
do not show zeros for token balances, and fetch all tokens only when creating new account 2020-10-07 11:44:01 +02:00
Roman Volosovskyi 22ca98b0f8
[#11216] Fix moving cursor after pressing mention suggestion on samsung device 2020-09-28 17:59:03 +03:00
andrey e55cb6b47b
[#11218] Hard code fix for SUPR NFT support
Drop collectibles details support
2020-09-25 11:58:09 +02:00
Volodymyr Kozieiev a95520067f
Added ui for asking webview page permissions
Signed-off-by: Volodymyr Kozieiev <vkjr.sp@gmail.com>
2020-09-16 12:17:45 +03:00
Roman Volosovskyi 16fecc2ac6
Mentions suggestions 2020-09-10 22:07:56 +03:00
andrey 89ad4f59d0
[#10179] Create invite link for group chat
Signed-off-by: andrey <motor4ik@gmail.com>
2020-09-07 13:32:24 +02:00
andrey 4304a5dd97
[#11046] Add local contact names
Signed-off-by: andrey <motor4ik@gmail.com>
2020-09-07 11:42:35 +02:00
Gheorghe Pinzaru f17b401bbc
Update UI for referrals flow
Cleanup http events

Add loaders

Add dapp flow

Fix tests

Fix dapp success event

Hide reward based on referrals metadata

New flows

Terms link

TX watcher event

Do not show success popup

Use new rewardable field from backend

Fix referral pulling

Update copy

Translate advertiser modal

Move modal styles into style ns

Signed-off-by: Gheorghe Pinzaru <feross95@gmail.com>
2020-08-20 13:44:12 +03:00
Gheorghe Pinzaru 793579885a
Add universal QR scanner via common router
Rename events

Add router to handle all links

Use router in add new chat

Unify universal link and universal qr with router

Add icon for universal scanner

Update tests

Now routing is tested in routing PR

lint

Cleanup

QA fixes

Scan own profile

Handle more EIP

Fix wallet scanner

Fix stack for view profile in UL

Signed-off-by: Gheorghe Pinzaru <feross95@gmail.com>
2020-08-11 10:24:15 +03:00
Gheorghe Pinzaru 3c42360b30
Add referral program under feature flag
Add acquisition backend methods

Init referrals sharing UI

Add invite on home screen

Use i18n for strings

Lint

Update status go

Pull acquisition contract to get SNT amount

Use new invite component

f pulling

go

Use screen instead of bottom sheet

Handle android install referrer

Post referrer to backend if present

go go

Add async storage for referral decisions

Update with the stage backend

Update contract methods

Modal

UI

Full handling of advertiser type

UI

test

UI

Handle with universal link

Allow multiple acquisition per installation

Fix android bottom sheet

Do not call service if no click-id received

Disable invite in release

Parse query params for referrer

Adapt UI changes

Add push notification

update deps

Mock react-native-push-notification

Request push notifications permission on press accept

Store transaction to local storage and load it back on login

Separate acquisition into smaller ns

Add chat invite

Get referrer only on first install

fix string

Fix firebase crash

Handle outdate click-id

Cleanup business logic

Update contract

Revert pn

Minor update to advertiser modal copy

OLD -  Welcome to Status! Here is some crypto to get you started
NEW - Here’s some crypto to get you started! Use it to get stickers, an ENS name and try dapps

OLD - By accepting you agree to the starter pack
NEW - By accepting you agree to the referral program

upgrade status-go

Add mainnet

Signed-off-by: Gheorghe Pinzaru <feross95@gmail.com>
2020-08-03 15:25:34 +03:00
Gheorghe Pinzaru 1c308c2d01
Emoji reactions
Signed-off-by: Andrea Maria Piana <andrea.maria.piana@gmail.com>
2020-07-31 13:43:10 +02:00
tbenr 86700f2b5c
audio messages
Signed-off-by: Andrea Maria Piana <andrea.maria.piana@gmail.com>
2020-07-29 10:09:31 +02:00
Roman Volosovskyi 10a814764d
[#10195] Delete multiaccount 2020-07-28 15:42:40 +03:00
Roman Volosovskyi 15cbec07e9
[keycard] Rename all "hardwallet" occurencies to "keycard"
Previously we used both "keycard" and "hardwallet" names for stuff
related to keycard. It can be confusing as "hardwallet" might be used
for other hardwallets in future.
2020-07-14 14:17:48 +03:00
Jakub Sokołowski 112132aa94
drop all desktop related files and references
Signed-off-by: Jakub Sokołowski <jakub@status.im>
2020-07-08 10:26:51 +02:00
andrey 3800f3f7da
[#10891] Add 'Add new contact' and 'Invite friends' button to Contact screen
Signed-off-by: andrey <motor4ik@gmail.com>
2020-07-07 14:53:10 +02:00
Gheorghe Pinzaru 497af38a7f
Update usage for toolbars
Replace all the usage of the button without component

Use quo

Fix tests

List item in multiaccounts

Use list items in contacts

Fix welcome  screen button

Experiment long press

Big list item

Remove old bottom sheet

Use bottom sheet

Keycard

Add error to list item

Stickers panel button

Images panel

Fix z-index in profile

Fix android crash

Fix signing list item

Try fixing test

iOs gas sheet keyboard

Disable root alert in e2e

keycard signing sheet height

Clean up bottom sheet events

Replace flat list in profile

Memorise the manual-close value for bottom sheet

Mailserver QR scanner

Fix e2e tests

E2e fix 2

Fix e2e 3

Remove extra fn

Reduce bridging time for animation

Trick android layout

Try hooks

Fix profile missing ens-name

Disable press on control in list-view

allow disabling animations in list item

Use simple list in wallet assets settings

TBD - this screen should be rewritten from scratch. Now on every interaction the full list is re-rendered, also it makes the wallet main screen to re-render.

Fix send sheet

Handle long press in main thread

UI fixes

perf

Update e2e

fix missing user name in image long press

Signed-off-by: Gheorghe Pinzaru <feross95@gmail.com>
2020-07-06 13:35:50 +03:00
Gheorghe Pinzaru 39cc56dd10
Handle links in profile qr code scanner
Signed-off-by: Gheorghe Pinzaru <feross95@gmail.com>
2020-06-03 17:42:57 +03:00
Andrea Maria Piana f69ae44d50
Improve chat loading performance
This commit does a few things:

Move collections top level

Move `messages`,`message-lists`,`pagination-info` from nested in
`chats` to top level at the db.
The reason for this change is that if any of the `messages` fields
change, any `sub` that relies on `chat` will be recomputed, which is
unnecessary.

Move chat-name to events

`chat-name` was computed dynamically, while it is now only calculated
when loading chat the first time around.

Remove `enrich-chats`

Enrich chats was doing a lot of work, and many subscriptions were
relying on it.
Not all the computations were necessary, for example it would always
calculate the name of who invited the user to a group chat, regardless
of whether it was actually used in the view.
This commit changes that behavior so that we use smaller subscriptions
to calculate such fields.
In general we should move computations to events, if that's not
desirable (there are some cases where we might not want to do that), we
should have "bottom/leaf heavy" subscriptions as opposed to "top heavy",
especially if they are to be shared, so only when (and if) we load that
particular view, the subscription is triggered, while others can be
re-used.

I have compared performance with current release, and there's a
noticeable difference. Opening a chat is faster (messages are loaded
faster), and clicking on the home view on a chat is more responsing
(the animation on-press is much quicker).
2020-06-01 13:50:49 +02:00
Andrey Shovkoplyas f659cbf242
camera roll 2020-06-01 11:34:13 +02:00
Andrey Shovkoplyas 60d5815bde
images 2020-06-01 11:34:11 +02:00
Andrea Maria Piana 80c6a516d8
Denormalize message on replying
Before we stored only the message-id and had a subscription pulling the
message from the database when replying to the message.
This broke once we implemented offloading of messages, as the message
might not be in the database anymore.
This commit fixes the issue by storing the full message in the database,
so in the event of it being offloaded it is still shown.

Signed-off-by: Andrea Maria Piana <andrea.maria.piana@gmail.com>
2020-05-19 10:03:08 +02:00
yenda a06413b6f7
fix missing search filter event
Signed-off-by: yenda <eric@status.im>
2020-05-08 14:07:15 +02:00
yenda 1bf68094e3
add clj-kondo to linting phase
Signed-off-by: yenda <eric@status.im>
2020-05-07 10:40:30 +02:00
Andrey Shovkoplyas d91067bb96
removed check spec, and moved db, events and navigation from ui to root folder 2020-05-04 12:23:19 +02:00
yenda d5ef218584
use shadow-cljs
Signed-off-by: Jakub Sokołowski <jakub@status.im>
Signed-off-by: yenda <eric@status.im>
2020-04-30 15:43:46 +02:00
Andrea Maria Piana 74f1405829
Handle when message confirmations arrive out of order.
In some cases message confirmations might arrive out of order, before
status-go calls the callback for a sent message.

This commit changes the behavior so that confirmations out of order are
not ignored and they are checked when the callback for sending message
is called.

Signed-off-by: Andrea Maria Piana <andrea.maria.piana@gmail.com>
2020-04-22 16:55:19 +02:00
Andrey Shovkoplyas c65ca5c92e
start loading messages earlier
Signed-off-by: Andrey Shovkoplyas <motor4ik@gmail.com>
2020-04-22 15:52:48 +02:00
Andrey Shovkoplyas cc70a7e8da
[#10203] Endless spinner when sending two TX in a batch in Dapp
Signed-off-by: Andrea Maria Piana <andrea.maria.piana@gmail.com>
2020-04-17 10:31:39 +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 e5dbac877e
Handle new universal links
Fixes: #10192
Fixes: #10083
Signed-off-by: Andrea Maria Piana <andrea.maria.piana@gmail.com>
2020-04-01 21:51:42 +02:00
Andrey Shovkoplyas a447bed4ac
dark mode 2020-03-26 08:34:13 +01:00
Gheorghe Pinzaru d823a2082a
Update react navigation and rework wrapper
Get rid of navigation wrapper

Use new API to declare navigation

Update tabbar component

Update to use new navigation events

Add ios presentation modal

Navigation cleanups

Android specific updates

Use letsubs for stack subscriptions

Keycard did load event backward compatibility

Fix tabbar and wallet on-focus bad rebase

Do not keep welcome screen into the stack

Comment outdated test

Fix rebase on home PR

Cancel back button on screens which can't be popped

Signed-off-by: Gheorghe Pinzaru <feross95@gmail.com>
2020-03-17 11:52:31 +03:00
Andrea Maria Piana 619e176087
Set waku mode dynamically
This commit allows setting waku-mode and waku-bloom-filter-mode
dynamically.
It requires a relogin for the changes to take effect.

Signed-off-by: Andrea Maria Piana <andrea.maria.piana@gmail.com>
2020-03-16 08:09:27 +01:00
Andrey Shovkoplyas c4a7849c9d
chat screens performance
Signed-off-by: Andrey Shovkoplyas <motor4ik@gmail.com>
2020-03-12 07:39:08 +01:00
Roman Volosovskyi 51c80a8f8e
[#9630] Clear keycard's app info before showing login screen 2020-03-06 14:22:34 +02:00
Andrey Shovkoplyas d64ba1b540
[#9789] Add a loading indicator and button to username input of start new chat
Signed-off-by: Andrey Shovkoplyas <motor4ik@gmail.com>
2020-03-02 12:35:05 +01:00
Andrey Shovkoplyas 6e3784d671
[#9886] App shows 'buy' for stickerpack user owns when pressing on sticker in chat
Signed-off-by: Andrey Shovkoplyas <motor4ik@gmail.com>
2020-02-26 09:51:33 +01:00
Gheorghe Pinzaru f18e7d746b
Separate hardwallet events into multiple ns
Signed-off-by: Gheorghe Pinzaru <feross95@gmail.com>
2020-02-25 14:06:18 +03:00
tbenr 81c4d16f9f
componentizied input-search and added in curency and token
Signed-off-by: Churikova Tetiana <churikova.tm@gmail.com>
2020-02-20 11:40:40 +01:00
Gheorghe Pinzaru 40c12241e0
Add bottom sheet to chat top bar options
Add bottom sheet to message long press

Make whole bottom sheet panel dragable

Fixes #9846

Use spring animation for bottom size of bottom sheet

Remove extra border height from bottom sheet

The height is already added to content height

Remove extra set value for animation

Timing and spring already mutates the animation value

Reuse chat bottom sheet in chat list

Update the size of new chat bottom sheet

Add remove to group chat

add chat id for clear history to be reused outside of current chat

Fix public chat bottom sheet missing destructoring

Replace icon for chat fetch history

Could be rotated arrow up, but this requires special handling in icons or list item

Fix remove public chat event

Dismiss keyboard on sheet mount

iOs rename arrow down icon

Fix unusable screen after close of bottom shet

The callback is called after 1.5 seconds after the animation starts. This happens because spring animation takes more time on animating post animation oscillations.

Add accessibility labels

Fix bad message destructoring

add view profile on long message press

Reset bottom value after animation

Remove pending circle from avatar in chat sheets

Do not show open profile on own messages

Signed-off-by: Gheorghe Pinzaru <feross95@gmail.com>
2020-02-19 14:29:33 +03:00
Andrea Maria Piana 4734a4ee04
offload chat messages
This commit does a few things:

1) Messages are offloaded from any chat once we go back from the home.
This allows us to ignore any message that is coming in from a chat we
are not currently focused.
2) After 5 seconds of not-scrolling activity, any received message that
is not currently visible will be offloaded to the database.
3) Similarly received messages that are not visible will be offloaded to
the database directly

Signed-off-by: Andrea Maria Piana <andrea.maria.piana@gmail.com>
2020-02-14 15:56:28 +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
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