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>
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>
- add option in profile on Android to enable local notifications
- use foreground service to keep the app alive when running in the background
- implement enable and disbable notification function in status module
When enabling notifications, a foreground service is started that displays
a sticky notification to make the user aware that the app is running in the
background.
Notifications are updated whenever a new.message signal is handled on java side.
Currently only one to one chats are generating notifications but that can be
easily extended to other types of messages, including mentions and keywords.
The ens name of the user as well as keywords to follow should then be passed
to the native side when calling the enable function.
Signed-off-by: yenda <eric@status.im>
- Use community net-info, react-native-webview instead of deprecated react-native classes
- Remove react-native-tcp
- Upgrade react-native libs (react-native-camera, react-native-firebase, react-native-mail, react-native-udp, react-native-webview-bridge)
- Do not include `:react-native-android` module explicitly
- Take advantage of RN AutoLinking
- nix: Update Gradle dependencies
- remove impl/modules.cljs namespace because it was needlessly redundant
- remove `create-account` unused call
- add documentation for some calls
- only keep `(status)` check for relevant calls that are failing tests
because they are evaluated
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>
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>
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>
Currently when receiving a push notification while the app has not
started (on android), the whole app is woken up. If autologin is enabled, we will try
to start the node, but will fail has no activity has been attached.
In such cases we try for 10s and quit the app if not successful.
Signed-off-by: Andrea Maria Piana <andrea.maria.piana@gmail.com>
StatusService was only used to handle `signalEvent:` from status-go.
This commit simplifies this interaction and getting rid of the service
and all the problems that come with it.
Signed-off-by: Igor Mandrigin <i@mandrigin.ru>
We now check that we are only connected to some `peers` instead of using `NetInfo` from `react-native`.
This is because it has been reported to be quite flaky at times, not reporting online status after sleeping, and for privacy concerns (on ios it pings `apple.com`, on desktop `google.com`).
Adds a new banner `Wallet Offline` and change `Connecting to peers` to `Chat offline`.
A message will be marked as `Sent` only if it made it to the mailserver you are connected to, which will increase the guarantees that we can make about a message (if you see it as sent, it has reached at least a mailserver), this has the consequence that:
- If you are not connected to any mailserver or the mailserver is non responsive/down, and you send a message, it will be marked as `Not sent`, although it might have been actually made it in the network.
Probably this is something that we would like to communicate to the user through UX (i.e. tick if made it to at least a peer, double tick if it made to a mailserver )
Currently I have only enabled this feature in nightlies & devs, I would give it a run and see how we feel about it.
There is no need to wait for `Statusgo.Login` callback in order to start
unlocking realm db: currently it is encrypted via a key which is derived
from user’s password, so we can try to unlock that DB before starting
node. That’s how password will be checked. Right after that `:home`
screen is shown, the node is started, then `Statusgo.Login` executed.
The difference in sign in duration is more noticeable on Android
devices, where `Statusgo.Login` is much slower because of PFS database
encryption.
Adds a `chat-id` field in `content` map.
The reason it has been added to the map instead of augmenting transit is
that it would simplify the calculation of `message-id`, which in this
case is consistent for both old & new clients.
`chat-id` also represents the `chat-id` with respect of the sender, as
in 1-to-1 chats that is asymmetric.
Signed-off-by: Andrea Maria Piana <andrea.maria.piana@gmail.com>
Signed-off-by: Jakub Sokołowski <jakub@status.im>
- rename jar file to match flatDir search method
- try using ivy repo to pull status-go from github
- drop use of artifactory in pom.xml
- move status-go version to a STATUS_GO_VERSION file
- upgrade status-go to 0.16.0
- unzip with overwriting
- prepare-ios: doewnload archive only if it doesn't exist
- fix prepare-android and prepare-ios
- use Makefile targets to make sure status-go archives exist
- remove unnecessary call to make prepare-android
Signed-off-by: Jakub Sokołowski <jakub@status.im>
- Add `LOG_LEVEL_STATUS_GO` feature flag for a differentiated log level in status-go.
- Remove superfluous `DEBUG_LOGS_ENABLED` feature flag.
- Enable info-level logging for Jenkins and dev builds.
Signed-off-by: andytudhope <tuddy0525@gmail.com>
- Turns on flag for dev and Jenkins
- Change enode to peer in requestMessages arg
- Upgrades status-go to get ssh_requestMessages
- Use status-cluster enode
- Fix Android AddPeer binding bug
* Upgrade status-go to bugfix-no-messaging-rinkeby-gd04e667-12 (geth 1.7 rebase)
* [bug] fix#2089 and #2098 with geth update
with geth 1.7 addresses are passed with 0x prefix and mix of lower/upper cases
update the normalize hex function so that addresses are always without prefix
and entirely lower-cased.
There are two ways that messages can reach the StatusService,
application events (which are handled via `handleEvent`) and
signal events (which are handled via `signalEvent`).
If a signal event fires before an application event, it still
uses handleEvent logic, and handleEvent will try to reply to
the message. If the `applicationMessenger` isn't set, the reply
fails and the react native app is never told that the status
node is running, which is why the app gets no messages.
I've added a CountDownLatch, forcing the event handler to wait
for the applicationMessenger to be set before replying to any
messages.
Tested by injecting a long wait into `handleMessage` and observing
the same failure we see in SauceLabs runs.
- Send notification when sending message in 1on1 chat
- Add notify FFI with binds for ObjC and Java
- Add fcm-token to contacts in spec and realm
- Add notifications to db
- Include fcm-token in contact request
- Update fcm-token when it arrives and put it in DB
- Disable copy-paste hijacking and popup
- Turn on notifications flag in Jenkins build