Compare commits

..
Author SHA1 Message Date
Roman Volosovskyi c9335d0b8e deploay apk to diawi 2017-08-11 12:40:43 +03:00
2735 changed files with 53297 additions and 128932 deletions
-7
View File
@@ -1,7 +0,0 @@
android-sdk-build-tools;28.0.1;
android-sdk-platform;android-27;
android-sdk;4333796;aa190cfd7299cd6a1c687355bb2764e4
nix;2.2.1;
react_native_cli;2.0.1;
StatusImAppImage;20181208;
StatusIm-Windows-base-image;20181113;
-107
View File
@@ -1,107 +0,0 @@
.dockerignore
docker-build
env/dev/env/config.cljs
modules/react-native-status/android/build
# OSX
#
.DS_Store
.projectile
.cljs_rhino_repl/
.#*
# Xcode
#
build/
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3
xcuserdata
*.xccheckout
*.moved-aside
DerivedData
*.hmap
*.ipa
*.xcuserstate
project.xcworkspace
# Android/IJ
#
.idea
.gradle
*.iml
# Atom
.tags*
# node.js
#
node_modules/
npm-debug.log
# BUCK
buck-out/
\.buckd/
android/app/libs
android/app/obj
android/app/build
android/build
android/keystores/debug.keystore
# Generated by clj-rn
#
index.android.js
index.ios.js
target/
env/dev/env/config.cljs
externs/
shim.js
# Generated by lein voom
#
/pom.xml
# Figwheel
#
figwheel_server.log
.nrepl-port
# Lein
#
.lein-failures
.lein-repl-history
## Doo
#
out
doo-index.html
# Status
Statusgo.framework
status-dev-cli
#ios
ios/Pods
ios/StatusIm.xcworkspace
.ruby-version
#python
*.pyc
*.cache
# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the
# screenshots whenever they are needed.
# For more information about the recommended setup visit:
# https://docs.fastlane.tools/best-practices/source-control/
*/fastlane/report.xml
*/fastlane/Preview.html
*/fastlane/screenshots
+1 -23
View File
@@ -1,23 +1 @@
CACHED_WEBVIEWS_ENABLED=1
DEBUG_WEBVIEW=1
DEFAULT_NETWORK=mainnet_rpc
DEV_BUILD=1
ERC20_CONTRACT_WARNINGS=1
ETHEREUM_DEV_CLUSTER=1
EXTENSIONS=1
FLEET=eth.beta
GROUP_CHATS_ENABLED=1
HARDWALLET_ENABLED=0
LOG_LEVEL_STATUS_GO=info
LOG_LEVEL=debug
MAILSERVER_CONFIRMATIONS_ENABLED=1
PFS_ENCRYPTION_ENABLED=1
PFS_TOGGLE_VISIBLE=1
POW_TARGET=0.002
POW_TIME=1
RN_BRIDGE_THRESHOLD_WARNINGS=0
RPC_NETWORKS_ONLY=0
STICKERS_ENABLED=1
PARTITIONED_TOPIC=0
CONTRACT_NODES=1
MOBILE_UI_FOR_DESKTOP=0
TESTFAIRY_ENABLED=0
-19
View File
@@ -1,19 +0,0 @@
DEBUG_WEBVIEW=1
DEFAULT_NETWORK=testnet_rpc
ERC20_CONTRACT_WARNINGS=1
ETHEREUM_DEV_CLUSTER=1
EXTENSIONS=1
FLEET=eth.beta
GROUP_CHATS_ENABLED=1
LOG_LEVEL_STATUS_GO=info
LOG_LEVEL=debug
MAILSERVER_CONFIRMATIONS_ENABLED=0
PAIRING_POPUP_DISABLED=1
PFS_ENCRYPTION_ENABLED=1
PFS_TOGGLE_VISIBLE=1
POW_TARGET=0.002
POW_TIME=1
RN_BRIDGE_THRESHOLD_WARNINGS=0
STICKERS_ENABLED=1
PARTITIONED_TOPIC=0
CONTRACT_NODES=1
+1 -22
View File
@@ -1,22 +1 @@
CACHED_WEBVIEWS_ENABLED=1
DEBUG_WEBVIEW=1
DEFAULT_NETWORK=mainnet_rpc
ERC20_CONTRACT_WARNINGS=1
ETHEREUM_DEV_CLUSTER=1
EXTENSIONS=1
FLEET=eth.beta
GROUP_CHATS_ENABLED=1
HARDWALLET_ENABLED=0
LOG_LEVEL_STATUS_GO=info
LOG_LEVEL=debug
MAILSERVER_CONFIRMATIONS_ENABLED=1
MAINNET_WARNING_ENABLED=1
PFS_ENCRYPTION_ENABLED=1
PFS_TOGGLE_VISIBLE=1
POW_TARGET=0.002
POW_TIME=1
RN_BRIDGE_THRESHOLD_WARNINGS=0
RPC_NETWORKS_ONLY=0
STICKERS_ENABLED=1
PARTITIONED_TOPIC=0
CONTRACT_NODES=1
TESTFAIRY_ENABLED=1
-20
View File
@@ -1,20 +0,0 @@
DEBUG_WEBVIEW=1
DEFAULT_NETWORK=mainnet_rpc
ERC20_CONTRACT_WARNINGS=1
ETHEREUM_DEV_CLUSTER=1
EXTENSIONS=1
FLEET=eth.beta
GROUP_CHATS_ENABLED=1
LOG_LEVEL_STATUS_GO=info
LOG_LEVEL=debug
MAILSERVER_CONFIRMATIONS_ENABLED=1
MAINNET_WARNING_ENABLED=1
PFS_ENCRYPTION_ENABLED=1
PFS_TOGGLE_VISIBLE=1
POW_TARGET=0.002
POW_TIME=1
RN_BRIDGE_THRESHOLD_WARNINGS=0
RPC_NETWORKS_ONLY=0
STICKERS_ENABLED=0
PARTITIONED_TOPIC=0
CONTRACT_NODES=1
-19
View File
@@ -1,19 +0,0 @@
DEBUG_WEBVIEW=1
DEFAULT_NETWORK=mainnet_rpc
ERC20_CONTRACT_WARNINGS=1
ETHEREUM_DEV_CLUSTER=1
EXTENSIONS=1
FLEET=eth.staging
GROUP_CHATS_ENABLED=1
LOG_LEVEL_STATUS_GO=info
LOG_LEVEL=debug
MAILSERVER_CONFIRMATIONS_ENABLED=1
MAINNET_WARNING_ENABLED=1
PFS_ENCRYPTION_ENABLED=1
PFS_TOGGLE_VISIBLE=1
POW_TARGET=0.002
POW_TIME=1
RN_BRIDGE_THRESHOLD_WARNINGS=0
STICKERS_ENABLED=0
PARTITIONED_TOPIC=0
CONTRACT_NODES=1
+1 -19
View File
@@ -1,19 +1 @@
DEBUG_WEBVIEW=0
DEFAULT_NETWORK=mainnet_rpc
ERC20_CONTRACT_WARNINGS=0
ETHEREUM_DEV_CLUSTER=0
EXTENSIONS=1
FLEET=eth.beta
GROUP_CHATS_ENABLED=1
LOG_LEVEL_STATUS_GO=
LOG_LEVEL=info
MAILSERVER_CONFIRMATIONS_ENABLED=1
MAINNET_WARNING_ENABLED=1
PFS_ENCRYPTION_ENABLED=1
PFS_TOGGLE_VISIBLE=0
POW_TARGET=0.002
POW_TIME=1
RN_BRIDGE_THRESHOLD_WARNINGS=0
RPC_NETWORKS_ONLY=1
STICKERS_ENABLED=0
PARTITIONED_TOPIC=0
TESTFAIRY_ENABLED=0
-1
View File
@@ -1 +0,0 @@
layout node
+8 -20
View File
@@ -24,22 +24,14 @@
.*/Libraries/react-native/ReactNative.js
.*/node_modules/jest-runtime/build/__tests__/.*
; Ignore polyfills
.*/Libraries/polyfills/.*
; Ignore metro
.*/node_modules/metro/.*
[include]
[libs]
node_modules/react-native/Libraries/react-native/react-native-interface.js
node_modules/react-native/flow/
node_modules/react-native/flow
flow/
[options]
esproposal.optional_chaining=enable
esproposal.nullish_coalescing=enable
module.system=haste
esproposal.class_static_fields=enable
@@ -52,19 +44,15 @@ munge_underscores=true
module.name_mapper='^image![a-zA-Z0-9$_-]+$' -> 'GlobalImageStub'
module.name_mapper='^[./a-zA-Z0-9$_-]+\.\(bmp\|gif\|jpg\|jpeg\|png\|psd\|svg\|webp\|m4v\|mov\|mp4\|mpeg\|mpg\|webm\|aac\|aiff\|caf\|m4a\|mp3\|wav\|html\|pdf\)$' -> 'RelativeImageStub'
module.file_ext=.js
module.file_ext=.jsx
module.file_ext=.json
module.file_ext=.native.js
suppress_type=$FlowIssue
suppress_type=$FlowFixMe
suppress_type=$FlowFixMeProps
suppress_type=$FlowFixMeState
suppress_type=$FixMe
suppress_comment=\\(.\\|\n\\)*\\$FlowFixMe\\($\\|[^(]\\|(\\(<VERSION>\\)? *\\(site=[a-z,_]*react_native[a-z,_]*\\)?)\\)
suppress_comment=\\(.\\|\n\\)*\\$FlowIssue\\((\\(<VERSION>\\)? *\\(site=[a-z,_]*react_native[a-z,_]*\\)?)\\)?:? #[0-9]+
suppress_comment=\\(.\\|\n\\)*\\$FlowFixMe\\($\\|[^(]\\|(\\(>=0\\.\\(30\\|[1-2][0-9]\\|[0-9]\\).[0-9]\\)? *\\(site=[a-z,_]*react_native[a-z,_]*\\)?)\\)
suppress_comment=\\(.\\|\n\\)*\\$FlowIssue\\((\\(>=0\\.\\(30\\|1[0-9]\\|[1-2][0-9]\\).[0-9]\\)? *\\(site=[a-z,_]*react_native[a-z,_]*\\)?)\\)?:? #[0-9]+
suppress_comment=\\(.\\|\n\\)*\\$FlowFixedInNextDeploy
unsafe.enable_getters_and_setters=true
[version]
^0.92.0
^0.30.0
-2
View File
@@ -1,2 +0,0 @@
*.pbxproj -text
*.patch eol=lf
-36
View File
@@ -1,36 +0,0 @@
# This is a comment.
# Each line is a file pattern followed by one or more owners.
# These owners will be the default owners for everything in
# the repo. Unless a later match takes precedence,
# @global-owner1 and @global-owner2 will be requested for
# review when someone opens a pull request.
* @status-im/status-core
/ci @jakubgs
/fastlane @jakubgs
/scripts @jakubgs
/.env* @jakubgs
/.TOOLVERSIONS @jakubgs
/STATUS_GO_* @jakubgs
# Order is important; the last matching pattern takes the most
# precedence. When someone opens a pull request that only
# modifies Nix files, only @js-owner and not the global
# owner(s) will be requested for a review.
*.nix @PombeirP @jakubgs
/nix @PombeirP @jakubgs
/.github/ @PombeirP @jakubgs
/components @status-im/status-core-ui
desktop/ @vkjr
/desktop_files @vkjr
modules/react-native-desktop*/ @vkjr
modules/react-native-desktop*/ @vkjr
/doc @oskarth @mandrigin @yenda @jeluard
/deployment @vkjr @PombeirP
/test @antdanchenko @churik
+7 -7
View File
@@ -8,10 +8,10 @@ These are just guidelines, not rules. Use your best judgment, and feel free to p
#### What should I know before I get started?
* [Mission and Core Values](https://status.im/contribute)
* [Principles](https://status.im/contribute/our_principles.html)
* [Read our FAQ](https://status.im/docs/FAQs.html)
* [Join our Chat](http://get.status.im/chat/public/status-core-dev)
* [Developer Introduction](https://status.im/developer_tools/)
* [Build Status Yourself](https://status.im/build_status)
* [Find issues to work on](https://github.com/status-im/)
* [Mission and Core Values](http://wiki.status.im/getting-started/mission-and-core-values/)
* [Code of Conduct](http://wiki.status.im/getting-started/code-of-conduct/)
* [Read our FAQ](http://wiki.status.im/getting-started/faq/)
* [Join our Slack](http://slack.status.im/) and chat in `#dev-status`
* [Developer Introduction](http://wiki.status.im/contributing/development/introduction/)
* [How to Build Status](http://wiki.status.im/contributing/development/building-status/)
* [Finding issues to work on](http://wiki.status.im/contributing/development/introduction/#finding-issues-to-work-on)
@@ -1,57 +0,0 @@
---
name: Full Bug Report
about: Full bug report.
---
[comment]: # (Please replace ... with your information. Remove < and >)
### User Story
As a <user|developer|...>, I want to <task> so that <goal>.
### Description
[comment]: # (Feature or Bug? i.e Type: Bug)
*Type*: <Bug|Feature>
[comment]: # (Describe the feature you would like, or briefly summarise the bug and what you did, what you expected to happen, and what actually happens. Sections below)
*Summary*: ...
#### Expected behavior
[comment]: # (Describe what you expected to happen.)
#### Actual behavior
[comment]: # (Describe what actually happened.)
### Reproduction
[comment]: # (Describe how we can replicate the bug step by step.)
- Open Status
- ...
- Step 3, etc.
### Solution
[comment]: # (Please summarise the solution and provide a task list on what needs to be fixed.)
*Summary*:
- [ ] ...
- [ ] ...
### Additional Information
[comment]: # (Please do your best to fill this out.)
- Status version: ...
[comment]: # (Android or iOS.)
- Operating System: <Android|iOS>
#### Logs
[comment]: # (if on Android please replicate bug whilst running adb logcat)
```
...
```
-26
View File
@@ -1,26 +0,0 @@
---
name: Simple Issue Report
about: Simple issue report.
---
# Problem
An overview of the background required to understand the problem.
A problem description.
## Implementation
Known steps towards feature implementation.
What needs further specifying and investigating.
## Acceptance Criteria
Rules for the future PR to be accepted.
## Notes
Random notes to keep in mind while implementing it. Mostly about related issues and future plans and thoughts.
## Future Steps
Steps which should be taken after this issue has been resolved.
+4 -54
View File
@@ -1,66 +1,16 @@
[comment]: # (Please replace ... with your information. Remove < and >)
[comment]: # (To auto-close issue on merge, please insert the related issue number after # i.e fixes #566)
If you submit PR for issue with bounty then write here Fixes #NN where NN is issue number
*otherwise*
fixes #...
### Summary
### Summary:
[comment]: # (Summarise the problem and how the pull request solves it)
...
<!-- (Optional, remove if no changes to documentation) -->
Documentation change PR (review please): https://github.com/status-im/status.im/pull/xxx
### Review notes
<!-- (Optional. Specify if something in particular should be looked at, or ignored, during review) -->
### Testing notes
<!-- (Optional) -->
#### Platforms
<!-- (Optional. Specify which platforms should be tested) -->
- Android
- iOS
- macOS
- Linux
- Windows
#### Areas that maybe impacted
<!-- (Optional. Specify if some specific areas has to be tested, for example 1-1 chats) -->
##### Functional
- 1-1 chats
- public chats
- group chats
- wallet / transactions
- dapps / app browsing
- account recovery
- new account
- user profile updates
- networks
- mailservers
- fleet
- bootnodes
##### Non-functional
- battery performance
- CPU performance / speed of the app
- network consumption
### Steps to test
<!-- (Specify exact steps to test if there are such) -->
### Steps to test:
- Open Status
- ...
- Step 3, etc.
<!-- (PRs will only be accepted if squashed into single commit.) -->
[comment]: # (PRs will only be accepted if squashed into single commit.)
status: <ready|wip>
status: ready <!-- Can be ready or wip -->
-26
View File
@@ -1,26 +0,0 @@
# Set to true to add reviewers to pull requests
addReviewers: true
# Set to true to add assignees to pull requests
addAssignees: false
# A list of reviewers to be added to pull requests (GitHub user name)
reviewers:
- status-im/status-core
# A number of reviewers added to the pull request
# Set 0 to add all the reviewers (default: 0)
numberOfReviewers: 0
# A list of assignees, overrides reviewers if set
# assignees:
# - status-im/status-core
# A number of assignees to add to the pull request
# Set to 0 to add all of the assignees.
# Uses numberOfReviewers if unset.
# numberOfAssignees: 2
# A list of keywords to be skipped the process that add reviewers if pull requests include it
skipKeywords:
- wip
-21
View File
@@ -1,21 +0,0 @@
_extends: probot-settings
project-board:
name: 'Pipeline for QA'
tested-pr-label-name: 'Tested - Issues'
contributor-column-name: 'CONTRIBUTOR'
review-column-name: 'REVIEW'
test-column-name: 'E2E Tests'
automated-tests:
repo-full-name: 'status-im/status-react'
job-full-name: 'end-to-end-tests/status-app-end-to-end-tests'
kickoff-column-name: 'E2E Tests'
github-team:
slug: 'clojure'
prchecklist:
title: Pull Request Checklist
checklist:
- 'Have you updated the documentation, if impacted (e.g. [docs.status.im](https://docs.status.im/docs/build_status.html))?'
-7
View File
@@ -1,7 +0,0 @@
{
"recipients": [
"jakubgs",
"mandrigin",
"corpetty"
]
}
-16
View File
@@ -1,16 +0,0 @@
daysUntilStale: 90
daysUntilClose: 7
exemptLabels:
- 'wall of shame'
- security
staleLabel: stale
markComment: >
This issue has been automatically marked as stale because it has not had
recent activity. It will be closed if no further activity occurs. Thank you
for your contributions.
closeComment: >
This issue has been automatically closed. Please re-open if this issue
is important to you.
pulls:
daysUntilStale: 14
+6 -90
View File
@@ -29,41 +29,25 @@ project.xcworkspace
#
.idea
.gradle
*.iml
**/android/.project
# Atom
.tags*
# VS Code
.vscode/ipch/
local.properties
status-im.iml
# node.js
#
node_modules/
npm-debug.log
.babelrc
yarn-error.log
default.realm/
# BUCK
buck-out/
\.buckd/
android/app/libs
android/app/obj
android/keystores/debug.keystore
# Generated by clj-rn
# Generated by re-natal
#
index.android.js
index.ios.js
target/
env/dev/env/config.cljs
externs/
shim.js
# Desktop build
index.desktop.js
# Generated by lein voom
#
@@ -85,81 +69,13 @@ figwheel_server.log
out
doo-index.html
# Bundler
.bundle
# Re-natal
re-natal
# Status
Statusgo.framework
status-dev-cli
#ios
ios/Pods
ios/StatusIm.xcworkspace
.ruby-version
status-e2e/
#python
*.pyc
*.cache
# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the
# screenshots whenever they are needed.
# For more information about the recommended setup visit:
# https://docs.fastlane.tools/best-practices/source-control/
fastlane/report.xml
fastlane/Preview.html
fastlane/screenshots
fastlane/README.md
# Clj
.cpcache/
# emacs
.dir-locals.el
#ignore platform-specific files in the root since they are only symlinks to files in folders 'desktop_files' and 'mobile_files'
/VERSION
/package-lock.json
/package.json
/metro.config.js
/yarn.lock
/.re-natal
/re-natal
# Jenkins
pkg
/BUILD_NUMBER
# Status Desktop
cmake_install.cmake
CMakeCache.txt
**/CMakeFiles/
/StatusImPackage/*
*.AppImage
Status-Windows-x86_64.exe
/desktop/bin/*
/desktop/lib/*
/desktop/modules/*
/desktop/Makefile
/desktop/graph_info.json
/desktop/run-app.bat
/desktop/run-app.sh
/desktop/CMakeFiles/
/desktop/reportApp/Makefile
/deployment/windows/Status.rc
*_autogen/
CompleteBundleWin.cmake
logger_settings.ini
# Conan
conan*.txt
conanbuildinfo.*
conan.cmake
# Env
.env.bkp
# nix
/.ran-setup
/.nix-gcroots/
-16
View File
@@ -1,16 +0,0 @@
Andrea Maria Piana <cammellos@cammelloss-MacBook-Pro.local>
Aleksandr Pantyukhov <alwxndr@gmail.com>
Aleksandr Pantyukhov <me@alwx.me>
Anton Danchenko <adan@ciklum.com>
Chad Jackson <chad@status.im>
Dmitry Shulyak <yashulyak@gmail.com>
Eric Dvorsak <yenda1@gmail.com>
Eric Dvorsak <eric@dvorsak.fr>
Eric Dvorsak <eric@status.im>
George Lipov <gnl@lipov.net>
Goran Jović <goranjovic@gmail.com>
Jan Herich <jan.herich@gmail.com>
Jan Herich <ot73589@OT73589M1.local>
Jakub Sokołowski <i+github@always.fail>
Jarrad Hope <jarrad@Jarrads-iMac.local>
Oskar Thorén <ot@oskarthoren.com>
+56
View File
@@ -0,0 +1,56 @@
{
"name": "StatusIm",
"interface": "reagent",
"androidHost": "localhost",
"modules": [
"react-native-contacts",
"react-native-invertible-scroll-view",
"awesome-phonenumber",
"realm",
"react-native-i18n",
"realm/react-native",
"react-native-action-button",
"react-native-vector-icons/Ionicons",
"react-native-vector-icons/Octicons",
"react-native-randombytes",
"dismissKeyboard",
"react-native-linear-gradient",
"react-native-splash-screen",
"react-native-android-sms-listener",
"react-native-status",
"react-native-camera",
"react-native-qrcode",
"react-native-orientation",
"identicon.js",
"react-native-fs",
"react-native-dialogs",
"react-native-popup-menu",
"react-native-sortable-listview",
"react-native-image-resizer",
"react-native-image-crop-picker",
"react-native-webview-bridge",
"react-native-drawer-layout",
"homoglyph-finder",
"web3",
"eccjs",
"chance",
"react-native-swiper",
"react-native-emoji-picker",
"react-native-autolink",
"instabug-reactnative",
"nfc-react-native",
"react-native-http-bridge",
"emojilib",
"react-native-mapbox-gl",
"bignumber.js",
"react-native-config"
],
"imageDirs": [
"images"
],
"iosHost": "10.0.1.4",
"envRoots": {
"dev": "env/dev",
"prod": "env/prod"
}
}
+1
View File
@@ -0,0 +1 @@
{}
+14 -114
View File
@@ -1,124 +1,24 @@
# Changelog
All notable changes to this project will be documented in this file.
# Change Log
All notable changes to this project will be documented in this file. This change log follows the conventions of [keepachangelog.com](http://keepachangelog.com/).
The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
## [0.9.28 - Unreleased]
### Added
- Allow numbers in chat topics
### Fixed
Fix app freeze on recover with wrong password
## [Unreleased][unreleased]
### Changed
- Add a new arity to `make-widget-async` to provide a different widget shape.
## [0.9.27]
### Added
- Added BRLN coin #5582
- Added SuperRare token support #5496
- Setting to remember login passwords iOS
- ENS username resolution in Chat for stateofus.eth usernames (testnet only)
### Fixed
- Improve contact code validation #5612 #5613
- Frequent logouts on iOS
- Peepeth incompatibilities on Android #5726
- Realm vulnerability PR
- Fixed how node version is shown on the about screen #5688
- Transaction fixes #5694 #5709
## [0.1.1] - 2016-03-23
### Changed
- Updated Bounties.network address
- Update status-go to v0.13.1
- Documentation on how to make the widgets.
## [0.9.26]
### Added
- Allow user to remove custom avatar
### Fixed
### Changed
- Improved validation in account recovery. We now show a warning if any words are not from our mnemonic dictionary.
## [0.9.25]
### Added
- Add MOKSHA token on Rinkeby
### Changed
- Update REP contract address
- Update mailservers on Rinkeby network
- Update url of Bounties Network DApp
## [0.9.24 - 2018-08-01]
### Fixed
- Security patch for DApp browser
## [0.9.23 - 2018-07-23]
### Added
- Added dismiss button to "Add to contacts" bar
### Removed
- `make-widget-sync` - we're all async, all the time.
### Fixed
- Partially fixed issue with 0 fiat in main Wallet screen. We are now explicitly showing an error when app can't fetch
asset prices, instead of silently failing.
- Fixed widget maker to keep working when daylight savings switches over.
### Changed
## 0.9.23 - 2018-07-23
## 0.1.0 - 2016-03-23
### Added
- iPad support. Status is now displayed at full native resolution on iPad's
- Deep links support
- Persist browser history
- Added refresh button
- Added more dapps
- Allow for setting custom network id
- Sound for Push Notifications, tap on PN opens corresponding chat
- Files from the new template.
- Widget maker public API - `make-widget-sync`.
### Fixed
- Fixed Sign in: Cannot paste text within password field [#3931]
- Fixed chat message layout for right-to-left languages
- Fixed parsing of messages containing multiple dots (elipsis)
- Fixed Webview: Screen cut off when using ERC dEX DApp [#3131]
- Fixed links targeting new tabs [#4413]
- Fixed blinking token amounts in transaction history
- Fixed/corrected fiat values in /send and /request messages
- Automatically converts recovery phrase to lowercase during account recovery
- Fixed unread messages counter
- Fixed incoming messages timestamp
- Fixed gas validation: Showing message when total amount being sent plus the max gas cost exceed the balance [#3441]
### Changed
- Removed Mixpanel integration
## [0.9.22] - 2018-07-09
### Added
- Added Farsi public #status channel
- Spam moderation
- Collectibles support (CryptoKitties, CryptoStrikers and Etheremon)
- Added more dapps
- Universal and deep links for public chats, browsing dapps, viewing profiles
### Fixed
- Fixed mailservers connectivity issue
- Clear chat action correctly clear the unread messages counter
- Gracefully handle realm decryption failures by showing a pop up asking the user to reset the data
### Changed
- Downgraded React Native to 0.53.3 for improved performance and decreased battery consumption
- When joining a chat only download one day of history
## [0.9.21] - 2018-06-25
### Added
- Mainnet is enabled by default on new installations. Upgrades will need to manually switch.
- Chat now supports sending SNT and other tokens in 1-1 chats
- New chat UI for /send and /receive commands
- Updated chat message styling
- Updated toolbar style
- Updated DApp list
- New help links on the Profile tab. Read our Beta FAQ, file a bug, or suggest and vote on features.
- Performance improvements when fetching old messages
- Added 5 new default public chats for our friends speaking Korean, Chinese, Japanese, Russian and Spanish.
### Fixed
- Prevented empty commands from being sent in chat
- Fixed minimum amounts in transactions
- Fixed an issue where contacts names may not be shown
- Removed log files from release builds
- Fixed an issue with transactions when navigating back
[unreleased]: https://github.com/your-name/status-im/compare/0.1.1...HEAD
[0.1.1]: https://github.com/your-name/status-im/compare/0.1.0...0.1.1
Vendored
+83
View File
@@ -0,0 +1,83 @@
env.LANG="en_US.UTF-8"
env.LANGUAGE="en_US.UTF-8"
env.LC_ALL="en_US.UTF-8"
node {
def apkUrl = ''
def ipaUrl = ''
def testPassed = true
sh 'source /etc/profile'
try {
stage('Git & Dependencies') {
git([url: 'https://github.com/status-im/status-react.git', branch: env.BRANCH_NAME])
// Checkout master because used for iOS Plist version information
sh 'git checkout -- .'
sh 'git checkout master'
sh 'git checkout ' + env.BRANCH_NAME
sh 'rm -rf node_modules'
sh 'cp .env.jenkins .env'
sh 'lein deps && npm install && ./re-natal deps'
sh 'sed -i "" "s/301000/601000/g" node_modules/react-native/packager/src/JSTransformer/index.js'
sh 'lein generate-externs'
sh 'mvn -f modules/react-native-status/ios/RCTStatus dependency:unpack'
sh 'cd ios && pod install && cd ..'
}
stage('Tests') {
sh 'lein test-cljs'
}
stage('Build') {
sh 'lein prod-build'
}
// Android
stage('Build (Android)') {
sh 'cd android && ./gradlew assembleRelease'
}
stage('Deploy (Android)') {
withCredentials([string(credentialsId: 'diawi-token', variable: 'token')]) {
def job = sh(returnStdout: true, script: 'curl https://upload.diawi.com/ -F token='+token+' -F file=@android/app/build/outputs/apk/app-release.apk -F find_by_udid=0 -F wall_of_apps=0 | jq -r ".job"').trim()
sh 'sleep 10'
def hash = sh(returnStdout: true, script: "curl -vvv 'https://upload.diawi.com/status?token="+token+"&job="+job+"'|jq -r '.hash'").trim()
apkUrl = 'https://i.diawi.com/' + hash
}
}
// try {
// stage('Test (Android)') {
// sauce('b9aded57-5cc1-4f6b-b5ea-42d989987852') {
// sh 'cd test/appium && mvn -DapkUrl=' + apkUrl + ' test'
// saucePublisher()
// }
// }
// } catch(e) {
// testPassed = false
// }
// iOS
stage('Build (iOS)') {
sh 'export RCT_NO_LAUNCH_PACKAGER=true && xcodebuild -workspace ios/StatusIm.xcworkspace -scheme StatusIm -configuration release -archivePath status clean archive'
sh 'xcodebuild -exportArchive -exportPath status -archivePath status.xcarchive -exportOptionsPlist /Users/Xcloud/archive.plist'
}
stage('Deploy (iOS)') {
withCredentials([string(credentialsId: 'diawi-token', variable: 'token')]) {
def job = sh(returnStdout: true, script: 'curl https://upload.diawi.com/ -F token='+token+' -F file=@status/StatusIm.ipa -F find_by_udid=0 -F wall_of_apps=0 | jq -r ".job"').trim()
sh 'sleep 10'
def hash = sh(returnStdout: true, script: "curl -vvv 'https://upload.diawi.com/status?token="+token+"&job="+job+"'|jq -r '.hash'").trim()
ipaUrl = 'https://i.diawi.com/' + hash
}
}
} catch (e) {
slackSend color: 'bad', message: env.BRANCH_NAME + ' failed to build. ' + env.BUILD_URL
throw e
}
stage('Slack Notification') {
def c = (testPassed ? 'good' : 'warning' )
slackSend color: c, message: 'Branch: ' + env.BRANCH_NAME + '\nTests: ' + (testPassed ? ':+1:' : ':-1:') + ')\nAndroid: ' + apkUrl + '\n iOS: ' + ipaUrl
}
}
-232
View File
@@ -1,232 +0,0 @@
.PHONY: add-gcroots clean clean-nix react-native-android react-native-ios react-native-desktop test release _list
help: ##@other Show this help
@perl -e '$(HELP_FUN)' $(MAKEFILE_LIST)
# This is a code for automatic help generator.
# It supports ANSI colors and categories.
# To add new item into help output, simply add comments
# starting with '##'. To add category, use @category.
GREEN := $(shell tput -Txterm setaf 2)
RED := $(shell tput -Txterm setaf 1)
WHITE := $(shell tput -Txterm setaf 7)
YELLOW := $(shell tput -Txterm setaf 3)
RESET := $(shell tput -Txterm sgr0)
HELP_FUN = \
%help; \
while(<>) { push @{$$help{$$2 // 'options'}}, [$$1, $$3] if /^([a-zA-Z\-]+)\s*:.*\#\#(?:@([a-zA-Z\-]+))?\s(.*)$$/ }; \
print "Usage: make [target]\n\n"; \
for (sort keys %help) { \
print "${WHITE}$$_:${RESET}\n"; \
for (@{$$help{$$_}}) { \
$$sep = " " x (32 - length $$_->[0]); \
print " ${YELLOW}$$_->[0]${RESET}$$sep${GREEN}$$_->[1]${RESET}\n"; \
}; \
print "\n"; \
}
HOST_OS := $(shell uname | tr '[:upper:]' '[:lower:]')
export NIX_CONF_DIR = $(PWD)/nix
export REACT_SERVER_PORT ?= 5001 # any value different from default 5000 will work; this has to be specified for both the Node.JS server process and the Qt process
# WARNING: This has to be located right before the targets
ifdef IN_NIX_SHELL
SHELL := env bash
else
SHELL := ./nix/shell.sh
endif
# Main targets
clean: SHELL := /bin/sh
clean: ##@prepare Remove all output folders
git clean -dxf -f
clean-nix: SHELL := /bin/sh
clean-nix: ##@prepare Remove complete nix setup
sudo rm -rf /nix ~/.nix-profile ~/.nix-defexpr ~/.nix-channels ~/.cache/nix ~/.status .nix-gcroots
add-gcroots: ##@prepare Add Nix GC roots to avoid status-react expressions being garbage collected
scripts/add-gcroots.sh
shell: ##@prepare Enter into a pre-configured shell
ifndef IN_NIX_SHELL
@ENTER_NIX_SHELL
else
@echo "Nix shell is already active"
endif
#----------------
# Release builds
#----------------
release: release-android release-ios ##@build build release for Android and iOS
release-android: export TARGET_OS ?= android
release-android: ##@build build release for Android
@$(MAKE) prod-build-android && \
react-native run-android --variant=release
release-ios: export TARGET_OS ?= ios
release-ios: ##@build build release for iOS release
# Open XCode inside the Nix context
@$(MAKE) prod-build-ios && \
echo "Build in XCode, see https://status.im/build_status/ for instructions" && \
open ios/StatusIm.xcworkspace
release-desktop: export TARGET_OS ?= $(HOST_OS)
release-desktop: ##@build build release for desktop release
@$(MAKE) prod-build-desktop && \
scripts/build-desktop.sh
release-windows-desktop: export TARGET_OS ?= windows
release-windows-desktop: ##@build build release for desktop release
@$(MAKE) prod-build-desktop && \
scripts/build-desktop.sh
prod-build: export TARGET_OS ?= all
prod-build:
scripts/prepare-for-platform.sh android && \
scripts/prepare-for-platform.sh ios && \
lein prod-build
prod-build-android: export TARGET_OS ?= android
prod-build-android:
lein prod-build-android
prod-build-ios: export TARGET_OS ?= ios
prod-build-ios:
lein prod-build-ios
prod-build-desktop: export TARGET_OS ?= $(HOST_OS)
prod-build-desktop:
git clean -qdxf -f ./index.desktop.js desktop/ && \
lein prod-build-desktop
#--------------
# REPL
# -------------
_watch-%: ##@watch Start development for device
$(eval SYSTEM := $(word 2, $(subst -, , $@)))
$(eval DEVICE := $(word 3, $(subst -, , $@)))
clj -R:dev build.clj watch --platform $(SYSTEM) --$(SYSTEM)-device $(DEVICE)
watch-ios-real: export TARGET_OS ?= ios
watch-ios-real: _watch-ios-real ##@watch Start development for iOS real device
watch-ios-simulator: export TARGET_OS ?= ios
watch-ios-simulator: _watch-ios-simulator ##@watch Start development for iOS simulator
watch-android-real: export TARGET_OS ?= android
watch-android-real: _watch-android-real ##@watch Start development for Android real device
watch-android-avd: export TARGET_OS ?= android
watch-android-avd: _watch-android-avd ##@watch Start development for Android AVD
watch-android-genymotion: export TARGET_OS ?= android
watch-android-genymotion: _watch-android-genymotion ##@watch Start development for Android Genymotion
watch-desktop: export TARGET_OS ?= $(HOST_OS)
watch-desktop: ##@watch Start development for Desktop
clj -R:dev build.clj watch --platform desktop
desktop-server: export TARGET_OS ?= $(HOST_OS)
desktop-server:
node ubuntu-server.js
#--------------
# Run
# -------------
_run-%:
$(eval SYSTEM := $(word 2, $(subst -, , $@)))
react-native run-$(SYSTEM)
run-android: export TARGET_OS ?= android
run-android: ##@run Run Android build
react-native run-android --appIdSuffix debug
run-desktop: export TARGET_OS ?= $(HOST_OS)
run-desktop: _run-desktop ##@run Run Desktop build
SIMULATOR=
run-ios: export TARGET_OS ?= ios
run-ios: ##@run Run iOS build
ifneq ("$(SIMULATOR)", "")
react-native run-ios --simulator="$(SIMULATOR)"
else
react-native run-ios
endif
#--------------
# Tests
#--------------
test: ##@test Run tests once in NodeJS
lein with-profile test doo node test once
test-auto: ##@test Run tests in interactive (auto) mode in NodeJS
lein with-profile test doo node test
#--------------
# Other
#--------------
react-native-desktop: export TARGET_OS ?= $(HOST_OS)
react-native-desktop: ##@other Start react native packager
@scripts/start-react-native.sh
react-native-android: export TARGET_OS ?= android
react-native-android: ##@other Start react native packager for Android client
@scripts/start-react-native.sh
react-native-ios: export TARGET_OS ?= ios
react-native-ios: ##@other Start react native packager for Android client
@scripts/start-react-native.sh
geth-connect: export TARGET_OS ?= android
geth-connect: ##@other Connect to Geth on the device
adb forward tcp:8545 tcp:8545 && \
build/bin/geth attach http://localhost:8545
android-ports: export TARGET_OS ?= android
android-ports: ##@other Add proxies to Android Device/Simulator
adb reverse tcp:8081 tcp:8081 && \
adb reverse tcp:3449 tcp:3449 && \
adb reverse tcp:4567 tcp:4567 && \
adb forward tcp:5561 tcp:5561
android-logcat: export TARGET_OS ?= android
android-logcat:
adb logcat | grep -e StatusModule -e ReactNativeJS -e StatusNativeLogs
_list: SHELL := /bin/sh
_list:
@$(MAKE) -pRrq -f $(lastword $(MAKEFILE_LIST)) : 2>/dev/null | awk -v RS= -F: '/^# File/,/^# Finished Make data base/ {if ($$1 !~ "^[#.]") {print $$1}}' | sort | egrep -v -e '^[^[:alnum:]]' -e '^$@$$'
_unknown-startdev-target-%: SHELL := /bin/sh
_unknown-startdev-target-%:
@ echo "Unknown target device '$*'. Supported targets:"; \
${MAKE} _list | grep "watch-" | sed s/watch-/startdev-/; \
exit 1
_startdev-%:
$(eval SYSTEM := $(word 2, $(subst -, , $@)))
$(eval DEVICE := $(word 3, $(subst -, , $@)))
@ if [ -z "$(DEVICE)" ]; then \
$(MAKE) watch-$(SYSTEM) || $(MAKE) _unknown-startdev-target-$@; \
else \
$(MAKE) watch-$(SYSTEM)-$(DEVICE) || $(MAKE) _unknown-startdev-target-$@; \
fi
startdev-android-avd: export TARGET_OS ?= android
startdev-android-avd: _startdev-android-avd
startdev-android-genymotion: export TARGET_OS ?= android
startdev-android-genymotion: _startdev-android-genymotion
startdev-android-real: export TARGET_OS ?= android
startdev-android-real: _startdev-android-real
startdev-desktop: export TARGET_OS ?= $(HOST_OS)
startdev-desktop: _startdev-desktop
startdev-ios-real: export TARGET_OS ?= ios
startdev-ios-real: _startdev-ios-real
startdev-ios-simulator: export TARGET_OS ?= ios
startdev-ios-simulator: _startdev-ios-simulator
+47 -19
View File
@@ -1,3 +1,5 @@
![Status - A Browser, Messenger, and gateway to the decentralized world of Ethereum](https://status.im/img/status-github-banner@2x.png?v=1.1 "Status - A Browser, Messenger, and gateway to the decentralised world of Ethereum")
[![Build Status](https://saucelabs.com/buildstatus/jarrad-status)](https://saucelabs.com/beta/builds/50ccf11ec1a44d88b6eb989929e5789f)
# Status - a Mobile Ethereum Operating System
@@ -5,6 +7,7 @@ Join us in creating a browser, messenger, and gateway to a decentralized world.
[![Getting started with Status](https://i.imgur.com/C0aZZEL.jpg)](https://www.youtube.com/watch?v=oDCSEmS9c3o "Getting started with Status")
## Why?
We believe in a medium of pure free trade, economies with fair, permission-less access and a world without intermediaries. We want to create policies that can exist between friends or scale globally, we want to communicate securely and be uninhibited by legacy systems.
@@ -17,52 +20,77 @@ If this interests you, **help us make Status a reality** - anyone can contribute
## How to Contribute?
Go straight to the [docs](https://status.im/docs) or [join our chat](http://get.status.im/chat/public/status) and choose what interests you:
Go straight to the [wiki](https://wiki.status.im) or [join our Slack](http://slack.status.im) or choose what interests you:
- **Developer**
- **Developer**
Developers are the heart of software and to keep Status beating we need all the help we can get! If you're looking to code in ClojureScript or Golang then Status is the project for you! We use React Native and there is even some Java/Objective-C too!
Want to learn more about it? Start by reading our [Developer Introduction](https://status.im/developer_tools/) which guides you through the technology stack and start browsing [beginner issues](https://github.com/status-im/status-react/issues?utf8=%E2%9C%93&q=is%3Aopen%20is%3Aissue%20label%3A%22good%20first%20issue%22%20). Then you can read how to [Build Status](https://status.im/build_status/), which talks about managing project dependencies, coding guidelines and testing procedures.
Want to learn more about it? Start by reading our [Developer Introduction](http://wiki.status.im/contributing/development/introduction/) which guides you through the technology stack and and start browsing [beginner issues](https://github.com/status-im/status-react/issues?q=is%3Aopen+is%3Aissue+label%3Abeginner). Then you can read how to [Build Status](http://wiki.status.im/contributing/development/building-status/), which talks about managing project dependencies, coding guidelines and testing procedures.
- **Community Management**
Metcalfe's law states that the value of a network is proportional to the square of the number of connected users of the system - without community Status is meaningless. We're looking to create a positive, fun environment to explore new ideas, experiment and grow the Status community. Building a community takes a lot of work but the people you'll meet and long lasting relationships you form will be well worth it, check out our [Community Principles](https://status.im/contribute/our_principles.html)
Metcalfe's law states that the value of a network is proportional to the square of the number of connected users of the system - without community Status is meaningless. We're looking to create a positive, fun environment to explore new ideas, experiment and grow the Status community. Building a community takes alot of work but the people you'll meet and long lasting relationships you form will be well worth it, check out our [Community Development Guide](https://wiki.status.im/community/how-to-grow-our-community/)
- **Specification / Documentation**
John Dewey once said "Education is not preparation for life; education is life *itself* ". Developers & Designers need guidance and it all starts from documentation and specifications. Our software is only as good as its documentation, head over to our [docs](https://status.im/docs) and see how you can improve what we have.
John Dewey once said "Education is not preparation for life; education is life *itself* ". Developers & Designers need guidance and it all starts from documentation and specifications. Our software is only as good as its documentation, head over to our [wiki](https://wiki.status.im) and see how you can improve what we have.
- **Blog Writing**
Content is King, keeping our blog up to date and informing the community of news helps keep everyone on the same page. [Jump into our chat](http://get.status.im/chat/public/status) and discuss with the team how you can contribute!
Content is King, keeping our blog up to date and informing the community of news helps keep everyone on the same page. [Jump on our Slack](http://slack.status.im) and discuss with Carl how you can contribute.
- **Marketing**
In this day and age attention is limited, we need all the help we can get to find people who are interested in Status, whether that is paid user acquisition, public relations or hype building, check out our [Community Outreach and Marketing Guide](http://wiki.status.im/contributing/outreach/) to see how you can spread the word.
- **Testers**
It's bug hunting season! Status is currently in Alpha and there is sure to be a bunch of learning, [build status from scratch](https://status.im/build_status/) or if an android user check out our [nightly builds](https://status.im/nightly). You can shake your phone to submit bug reports, or start browsing our [Github Issues](http://github.com/status-im/status-react/issues). Every bug you find brings Status closer to stable, usable software for everyone to enjoy!
It's bug hunting season! Status is currently in Alpha and there are sure to be a bunch of education, [grab your fresh copy of Status](http://wiki.status.im/contributing/development/building-status/) and shake your phone to submit bug reports, or start browsing our [Github Issues](http://github.com/status-im/status-react/issues). Every bug you find brings Status closer to stable, usable software for everyone to enjoy!
- **Security**
Status is a visual interface to make permanent changes on the Blockchain, it handles crypto-tokens that have real value and allows 3rd party code execution. Security is paramount to its success. You are given permission to break Status as hard as you can, as long as you share your findings with the community!
- **Evangelism**
Help us spread the word! Tell a friend *right now*, in fact tell **everyone** - yell from a mountain if you have to, every person counts! If you've got a great story to tell or have some interesting way you've spread the word about Status let us know about it in our [chat](https://get.status.im/chat/public/status)
- **Design & User Experience**
It's all about that sex appeal, we want cryptocurrencies to be easy and fun to use, ugly software doesn't help adoption. [Check out our designs](http://wiki.status.im/contributing/design-guidelines/) and show us how to make them better!
## Status API
View our [API Docs](https://status.im/developer_tools/status_web_api.html) and learn how to integrate your DApp into Status. You can read more about how to add your DApp to Status [here](https://status.im/developer_tools/add_your_dapp.html).
- **Evangelism**
Help us spread the word! Tell a friend *right now*, in fact tell **everyone** - yell from a mountain if you have to, every person counts!
## Give me Binaries!
You can get our Beta builds for both Android and iOS on our [website](https://status.im), through our [nightly builds](https://status.im/nightly/) or by [building it yourself](https://status.im/build_status/).
Currently the fastest way to get your hands on a binary is to join our Early Access by submitting your email on our [website](https://status.im) or by [building it yourself](https://wiki.status.im/contributing/development/building-status/).
// TODO GPlay, TestFlight Instructions & FDroid
## Core Contributors
[Core Team Members](https://github.com/orgs/status-im/people)
<img src="https://status.im/img/new-site/jarrad.png" width="80px"></img>
Jarrad ([@jarradh](https://github.com/jarradh)) - Cofounder and Thought Leader.
<img src="https://status.im/img/new-site/carl.png" width="80px"></img>
Carl ([@carlbennetts](https://github.com/carlbennetts)) - Cofounder and Communications & Marketing.
<img src="https://status.im/img/new-site/roman.png" width="80px"></img>
Roman ([@rasom](https://github.com/rasom)) - Clojure and project lead.
<img src="https://status.im/img/new-site/alexander.png" width="80px"></img>
Alexander ([@alwx](https://github.com/alwx)) - Clojure ninja!
<img src="https://status.im/img/new-site/andrey.png" width="80px"></img>
Andrey ([@flexsurfer](https://github.com/flexsurfer)) - Clojure.
<img src="https://status.im/img/new-site/gustavo.png" width="80px"></img>
Gustavo ([@GustavoNunes](https://github.com/GustavoNunes)) - Clojure.
<img src="https://status.im/img/new-site/victor.png" width="80px"></img>
Victor ([@farazdagi](https://github.com/farazdagi)) - Golang one-man-army.
<img src="https://status.im/img/new-site/andrei.png" width="80px"></img>
Andrei ([@andmironov](https://github.com/andmironov)) - Visual design and user experience conjurer.
Special thanks to [@adrian-tiberius](https://github.com/adrian-tiberius).
Without the dedication of these outstanding individuals, Status would not exist.
Without the dedication of these fine gentleman, Status would not exist.
## Contact us
Feel free to email us at [support@status.im](mailto:support@status.im) or better yet, [join our chat](http://get.status.im/chat/public/status).
Feel free to email us at [support@status.im](mailto:support@status.im) or better yet, [join our Slack](http://slack.status.im).
Got a feature request or suggestion, download Status and shake your phone, failing that search our [Github Issues](http://github.com/status-im/status-react/issues).
## License
Licensed under the [Mozilla Public License v2.0](https://github.com/status-im/status-react/blob/develop/LICENSE.md)
## Testing Supported by
[![BrowserStack Status](https://www.browserstack.com/automate/badge.svg?badge_key=SFBWQ3k5R2tnT2t6UGsxU1h1U0g3VFlCNnoxVTRHYWNoTDhsb1laaTJZWT0tLUZMUm5sSVFBSU9qSWM1RUJvK1I3Z3c9PQ==--ad15ae7992b432b33743749d40318952415bd98f)](https://www.browserstack.com/automate/public-build/SFBWQ3k5R2tnT2t6UGsxU1h1U0g3VFlCNnoxVTRHYWNoTDhsb1laaTJZWT0tLUZMUm5sSVFBSU9qSWM1RUJvK1I3Z3c9PQ==--ad15ae7992b432b33743749d40318952415bd98f)
-1
View File
@@ -1 +0,0 @@
status-im
-3
View File
@@ -1,3 +0,0 @@
## DO NOT EDIT THIS FILE BY HAND. USE `scripts/update-status-go.sh <tag>` instead
0cj202bj2rwfrw327gibj8hj8i94ciyp3hkq2hck9l6711qlhpnb
-3
View File
@@ -1,3 +0,0 @@
## DO NOT EDIT THIS FILE BY HAND. USE `scripts/update-status-go.sh <tag>` instead
v0.25.0-beta.0
+15 -2
View File
@@ -11,8 +11,21 @@ import re
#
lib_deps = []
create_aar_targets(glob(["libs/*.aar"]))
create_jar_targets(glob(["libs/*.jar"]))
for jarfile in glob(['libs/*.jar']):
name = 'jars__' + re.sub(r'^.*/([^/]+)\.jar$', r'\1', jarfile)
lib_deps.append(':' + name)
prebuilt_jar(
name = name,
binary_jar = jarfile,
)
for aarfile in glob(['libs/*.aar']):
name = 'aars__' + re.sub(r'^.*/([^/]+)\.aar$', r'\1', aarfile)
lib_deps.append(':' + name)
android_prebuilt_aar(
name = name,
aar = aarfile,
)
android_library(
name = 'all-libs',
+51 -172
View File
@@ -3,13 +3,10 @@ apply plugin: "com.android.application"
apply from: project(':react-native-config').projectDir.getPath() + "/dotenv.gradle"
import com.android.build.OutputFile
import com.sun.org.apache.xalan.internal.xsltc.compiler.Copy
/**
* The react.gradle file registers a task for each build variant:
* - bundlePrJsAndAssets
* - bundleDebugJsAndAssets
* - bundleReleaseJsAndAssets
* The react.gradle file registers a task for each build variant (e.g. bundleDebugJsAndAssets
* and bundleReleaseJsAndAssets).
* These basically call `react-native bundle` with the correct arguments during the Android build
* cycle. By default, bundleDebugJsAndAssets is skipped, as in debug/dev mode we prefer to load the
* bundle directly from the development server. Below you can see all the possible configurations
@@ -38,13 +35,6 @@ import com.sun.org.apache.xalan.internal.xsltc.compiler.Copy
* // bundleInPaidRelease: true,
* // bundleInBeta: true,
*
* // whether to disable dev mode in custom build variants (by default only disabled in release)
* // for example: to disable dev mode in the staging build type (if configured)
* devDisabledInStaging: true,
* // The configuration property can be in the following formats
* // 'devDisabledIn${productFlavor}${buildType}'
* // 'devDisabledIn${buildType}'
*
* // the root of your project, i.e. where "package.json" lives
* root: "../../",
*
@@ -67,19 +57,11 @@ import com.sun.org.apache.xalan.internal.xsltc.compiler.Copy
* // date; if you have any other folders that you want to ignore for performance reasons (gradle
* // indexes the entire tree), add them here. Alternatively, if you have JS files in android/
* // for example, you might want to remove it from here.
* inputExcludes: ["android/**", "ios/**"],
*
* // override which node gets called and with what additional arguments
* nodeExecutableAndArgs: ["node"],
*
* // supply additional arguments to the packager
* extraPackagerArgs: []
* inputExcludes: ["android/**", "ios/**"]
* ]
*/
project.ext.react = [
nodeExecutableAndArgs: ["node", "--max-old-space-size=16384"],
entryFile: "index.android.js",
bundleInPr: true,
nodeExecutableAndArgs: ["node", "--max-old-space-size=4096"]
]
apply from: "../../node_modules/react-native/react.gradle"
@@ -102,9 +84,8 @@ def enableProguardInReleaseBuilds = false
def getVersionCode = { ->
new ByteArrayOutputStream().withStream { stdOut ->
exec {
commandLine "bash", "../../scripts/build_no.sh"
commandLine "git", "rev-list", "--count", "HEAD"
standardOutput = stdOut
errorOutput = System.err
}
return stdOut.toString().toInteger()
}
@@ -112,85 +93,39 @@ def getVersionCode = { ->
def getVersionName = { ->
new ByteArrayOutputStream().withStream { stdOut ->
if (project.hasProperty("releaseVersion")) {
return project.releaseVersion
exec {
commandLine "git", "describe", "--tags", "--always", "--dirty=+"
standardOutput = stdOut
}
version = new File('../VERSION').text
return version.replaceAll("\\s","")
return stdOut.toString().replaceAll("\\s","")
}
}
def getBuildUrl = { ->
new ByteArrayOutputStream().withStream { stdOut ->
if (project.hasProperty("buildUrl")) {
return project.buildUrl
}
return 'Local Build'
}
}
/* check if environment variable exists for given variable name first */
def getEnvOrConfig = { varName ->
def val = System.getenv(varName) ? System.getenv(varName) : project.property(varName)
return val
}
android {
compileSdkVersion 28
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
compileSdkVersion 24
buildToolsVersion "23.0.1"
defaultConfig {
applicationId "im.status.ethereum"
minSdkVersion 23
targetSdkVersion 28
minSdkVersion 18
targetSdkVersion 23
multiDexEnabled true
versionCode getVersionCode()
versionName getVersionName()
ndk {
abiFilters "armeabi-v7a", "arm64-v8a", "x86", "x86-64"
abiFilters "armeabi-v7a", "x86"
}
}
/**
* Arbitrary project metadata
* https://docs.gradle.org/current/dsl/org.gradle.api.plugins.ExtraPropertiesExtension.html
**/
project.ext {
buildUrl = getBuildUrl()
}
/**
* Fix for: (https://github.com/ReactiveX/RxJava/issues/4445)
* Execution failed for task ':app:transformResourcesWithMergeJavaResForDebug'.
* > com.android.build.api.transform.TransformException: com.android.builder.packaging.DuplicateFileException:
* Duplicate files copied in APK META-INF/rxjava.properties
*/
packagingOptions {
exclude 'META-INF/rxjava.properties'
exclude '/lib/mips64/**'
exclude '/lib/arm64-v8a/**'
exclude '/lib/x86_64/**'
/** Fix for: Execution failed for task ':app:transformNativeLibsWithStripDebugSymbolForDebug'.
* with recent version of ndk (17.0.4754217)
*/
doNotStrip '*/mips/*.so'
doNotStrip '*/mips64/*.so'
}
dexOptions {
jumboMode true
javaMaxHeapSize "8g"
javaMaxHeapSize "4g"
}
signingConfigs {
release {
/* environment variables take precedence over gradle.properties file */
storeFile file(getEnvOrConfig('STATUS_RELEASE_STORE_FILE').replaceAll("~", System.properties['user.home']))
storePassword getEnvOrConfig('STATUS_RELEASE_STORE_PASSWORD')
keyAlias getEnvOrConfig('STATUS_RELEASE_KEY_ALIAS')
keyPassword getEnvOrConfig('STATUS_RELEASE_KEY_PASSWORD')
storeFile file(STATUS_RELEASE_STORE_FILE)
storePassword STATUS_RELEASE_STORE_PASSWORD
keyAlias STATUS_RELEASE_KEY_ALIAS
keyPassword STATUS_RELEASE_KEY_PASSWORD
}
}
splits {
@@ -203,32 +138,20 @@ android {
}
buildTypes {
debug {
applicationIdSuffix ".debug"
debuggable true
versionNameSuffix "-SNAPSHOT"
resValue "string", "build_config_package", "im.status.ethereum"
versionNameSuffix "-SNAPSHOT"
}
release {
minifyEnabled enableProguardInReleaseBuilds
proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
signingConfig signingConfigs.release
}
pr {
initWith release
applicationIdSuffix ".pr"
versionNameSuffix ".pr"
debuggable false
matchingFallbacks = ["release"]
// necessary to make react-native-config's code generation work
resValue "string", "build_config_package", "im.status.ethereum"
}
}
// applicationVariants are e.g. debug, release
applicationVariants.all { variant ->
variant.outputs.each { output ->
// For each separate APK per architecture, set a unique version code as described here:
// http://tools.android.com/tech-docs/new-build-system/user-guide/apk-splits
def versionCodes = ["armeabi-v7a":1, "x86":2, "arm64-v8a": 3, "x86-64": 4]
def versionCodes = ["armeabi-v7a":1, "x86":2]
def abi = output.getFilter(OutputFile.ABI)
if (abi != null) { // null for the universal-debug, universal-release variants
output.versionCodeOverride =
@@ -236,86 +159,42 @@ android {
}
}
}
aaptOptions {
// disable PNG optimization as for some reason it cannot be trusted to provide deterministic output (see https://f-droid.org/en/docs/Reproducible_Builds/)
cruncherEnabled = false
}
sourceSets {
main { jniLibs.srcDirs 'libs' }
main.assets.srcDirs += '../../resources/mapview'
}
}
configurations.all {
exclude group: 'com.facebook.react', module: 'react-native'
}
dependencies {
implementation project(':react-native-background-timer')
implementation project(':react-native-svg')
implementation 'com.android.support:multidex:1.0.2'
implementation project(':react-native-http-bridge')
implementation project(':react-native-splash-screen')
implementation project(':react-native-image-resizer')
implementation project(':react-native-dialogs')
implementation project(':realm')
implementation fileTree(dir: "libs", include: ["*.jar"])
implementation "com.android.support:appcompat-v7:28.0.0"
implementation 'androidx.multidex:multidex:2.0.1' // only needed if minSdkVersion is less than 21 (https://developer.android.com/studio/build/multidex)
// Force using exact RN version instead of relying on gradle dependency resolution
// https://docs.gradle.org/current/userguide/introduction_dependency_management.html#sec:dependency_resolution
//compile ("com.facebook.react:react-native:0.55.4") { force = true } // From node_modules
implementation project(':react-native-android')
implementation project(':react-native-languages')
implementation project(':react-native-status')
implementation project(':react-native-fs')
implementation project(':react-native-image-crop-picker')
implementation project(':react-native-securerandom')
implementation project(':react-native-webview-bridge')
implementation project(':react-native-webview')
implementation project(':react-native-config')
implementation project(':react-native-firebase')
implementation project(':react-native-shake')
implementation project(':RNMail')
compile ('com.google.android.gms:play-services-base:16.0.1') {
force = true
}
compile (project(':react-native-camera')) {
exclude group: "com.google.android.gms"
compile 'com.android.support:exifinterface:28.+'
}
implementation project(':react-native-status-keycard')
implementation 'com.google.firebase:firebase-core:16.0.3' //this decides your firebase SDK version
implementation 'com.google.firebase:firebase-messaging:17.1.0'
implementation project(':react-native-keychain')
compile 'com.android.support:multidex:1.0.1'
compile project(':react-native-http-bridge')
compile project(':nfc-react-native')
compile project(':instabug-reactnative')
compile project(':react-native-splash-screen')
compile project(':react-native-image-resizer')
compile project(':react-native-dialogs')
compile project(':react-native-randombytes')
compile project(':react-native-android-sms-listener')
compile project(':realm')
compile project(':react-native-vector-icons')
compile fileTree(dir: "libs", include: ["*.jar"])
compile "com.android.support:appcompat-v7:23.0.1"
compile "com.facebook.react:react-native:+" // From node_modules
compile project(':react-native-contacts')
compile project(':react-native-i18n')
compile project(':react-native-linear-gradient')
compile project(':react-native-camera')
compile project(':react-native-status')
compile project(':react-native-orientation')
compile project(':react-native-fs')
compile project(':react-native-image-crop-picker')
compile project(':react-native-webview-bridge')
compile project(':reactnativemapboxgl')
compile 'testfairy:testfairy-android-sdk:1.+@aar'
compile project(':react-native-config')
compile 'com.github.status-im:function:0.0.1'
implementation fileTree(dir: "node_modules/realm/android/libs", include: ["*.jar"])
implementation 'com.facebook.fresco:animated-gif:1.10.0'
compile fileTree(dir: "node_modules/realm/android/libs", include: ["*.jar"])
}
// Run this once to be able to run the application with BUCK
// puts all compile dependencies into folder libs for BUCK to use
task hemroidBuild(type: Exec) {
def rootDir = project.rootDir
def localProperties = new File(rootDir, "local.properties")
def ndkDir = "$System.env.ANDROID_NDK"
if (localProperties.exists()) {
Properties properties = new Properties()
localProperties.withInputStream { instr ->
properties.load(instr)
}
ndkDir = properties.getProperty('ndk.dir')
}
executable "$ndkDir/ndk-build"
task copyDownloadableDepsToLibs(type: Copy) {
from configurations.compile
into 'libs'
}
preBuild.dependsOn hemroidBuild
// Must be at bottom to avoid dependency collision
apply plugin: "com.google.gms.google-services"
com.google.gms.googleservices.GoogleServicesPlugin.config.disableVersionCheck = true
-42
View File
@@ -1,42 +0,0 @@
{
"project_info": {
"project_number": "854811651919",
"firebase_url": "https://status-react-app.firebaseio.com",
"project_id": "status-react-app",
"storage_bucket": "status-react-app.appspot.com"
},
"client": [
{
"client_info": {
"mobilesdk_app_id": "1:854811651919:android:11ee7444ded8a00a",
"android_client_info": {
"package_name": "im.status.ethereum"
}
},
"oauth_client": [
{
"client_id": "854811651919-gua52csicclb5p9gr4eeu33ukk0aaphj.apps.googleusercontent.com",
"client_type": 3
}
],
"api_key": [
{
"current_key": "AIzaSyAOF4W1j8GYeXzzVKRfNKlXywD6bx0rJtQ"
}
],
"services": {
"analytics_service": {
"status": 1
},
"appinvite_service": {
"status": 1,
"other_platform_oauth_client": []
},
"ads_service": {
"status": 2
}
}
}
],
"configuration_version": "1"
}
-11
View File
@@ -1,11 +0,0 @@
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := status-logs
LOCAL_SRC_FILES := Log.c
LOCAL_CPPFLAGS := -std=c++11 -fexceptions -I$(LOCAL_PATH)/include
LOCAL_LDFLAGS := -llog
include $(BUILD_SHARED_LIBRARY)
-4
View File
@@ -1,4 +0,0 @@
APP_ABI := armeabi-v7a arm64-v8a x86 x86_64
APP_PLATFORM := android-18
APP_STL := c++_static
NDK_TOOLCHAIN_VERSION=clang
-39
View File
@@ -1,39 +0,0 @@
// https://codelab.wordpress.com/2014/11/03/how-to-use-standard-output-streams-for-logging-in-android-apps/
#include <jni.h>
#include <pthread.h>
#include <stdio.h>
#include <android/log.h>
static int pfd[2];
static pthread_t thr;
static void *thread_func(void* param)
{
ssize_t rdsz;
char buf[128];
while((rdsz = read(pfd[0], buf, sizeof buf - 1)) > 0) {
if(buf[rdsz - 1] == '\n') --rdsz;
buf[rdsz] = 0; /* add null-terminator */
__android_log_write(ANDROID_LOG_DEBUG, "StatusNativeLogs", buf);
}
return 0;
}
JNIEXPORT jint JNI_OnLoad(JavaVM* vm, void* reserved)
{
/* make stdout line-buffered and stderr unbuffered */
setvbuf(stdout, 0, _IOLBF, 0);
setvbuf(stderr, 0, _IONBF, 0);
/* create the pipe and redirect stdout and stderr */
pipe(pfd);
dup2(pfd[1], 1);
dup2(pfd[1], 2);
/* spawn the logging thread */
if(pthread_create(&thr, 0, thread_func, 0) == -1)
return JNI_VERSION_1_6; // fail silently
pthread_detach(thr);
return JNI_VERSION_1_6;
}
-8
View File
@@ -50,10 +50,6 @@
-dontwarn com.facebook.react.**
# TextLayoutBuilder uses a non-public Android constructor within StaticLayout.
# See libs/proxy/src/main/java/com/facebook/fbui/textlayoutbuilder/proxy for details.
-dontwarn android.text.StaticLayout
# okhttp
-keepattributes Signature
@@ -68,7 +64,3 @@
-dontwarn java.nio.file.*
-dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement
-dontwarn okio.**
# Firebase
-keep class io.invertase.firebase.** { *; }
-dontwarn io.invertase.firebase.**
@@ -1,8 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
<application tools:targetApi="28" tools:ignore="GoogleAppIndexingWarning" android:usesCleartextTraffic="true" />
</manifest>
@@ -1,42 +0,0 @@
{
"project_info": {
"project_number": "854811651919",
"firebase_url": "https://status-react-app.firebaseio.com",
"project_id": "status-react-app",
"storage_bucket": "status-react-app.appspot.com"
},
"client": [
{
"client_info": {
"mobilesdk_app_id": "1:854811651919:android:11ee7444ded8a00a",
"android_client_info": {
"package_name": "im.status.ethereum.debug"
}
},
"oauth_client": [
{
"client_id": "854811651919-gua52csicclb5p9gr4eeu33ukk0aaphj.apps.googleusercontent.com",
"client_type": 3
}
],
"api_key": [
{
"current_key": "AIzaSyAOF4W1j8GYeXzzVKRfNKlXywD6bx0rJtQ"
}
],
"services": {
"analytics_service": {
"status": 1
},
"appinvite_service": {
"status": 1,
"other_platform_oauth_client": []
},
"ads_service": {
"status": 2
}
}
}
],
"configuration_version": "1"
}
Binary file not shown.

Before

Width:  |  Height:  |  Size: 84 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.
@@ -1,3 +0,0 @@
<resources>
<string name="app_name">Status Debug</string>
</resources>
@@ -1,8 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">localhost</domain>
<domain includeSubdomains="true">10.0.3.2</domain>
<domain includeSubdomains="true">10.0.2.2</domain>
</domain-config>
</network-security-config>
+18 -63
View File
@@ -8,97 +8,52 @@
<uses-permission android:name="android.permission.NFC"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.READ_PROFILE" />
<!-- dangerous permissions -->
<uses-permission android:name="android.permission.CAMERA"/>
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_CONTACTS"/>
<uses-permission android:name="android.permission.RECEIVE_SMS"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<!-- these permissions should be removed -->
<!-- react-native-orientation adds an unnecessary permission; here we remove it -->
<uses-permission android:name="android.permission.BLUETOOTH" tools:node="remove"/>
<!-- react-native-contacts -->
<uses-permission android:name="android.permission.WRITE_CONTACTS" tools:node="remove"/>
<!-- react-native-camera -->
<uses-permission android:name="android.permission.RECORD_AUDIO" tools:node="remove"/>
<uses-permission android:name="android.permission.RECORD_VIDEO" tools:node="remove"/>
<!-- React Native unnecessary permissions (https://github.com/facebook/react-native/issues/5886) -->
<uses-permission android:name="android.permission.READ_PHONE_STATE" tools:node="remove"/>
<application
tools:replace="android:allowBackup"
android:allowBackup="false"
android:allowBackup="true"
android:label="@string/app_name"
android:icon="@mipmap/ic_launcher"
android:theme="@style/AppTheme"
android:name=".MainApplication"
android:largeHeap="true"
android:usesCleartextTraffic="true">
<meta-data android:name="firebase_analytics_collection_deactivated" android:value="true" />
<meta-data
android:name="com.google.firebase.messaging.default_notification_icon"
android:resource="@drawable/ic_stat_status_notification" />
<meta-data
android:name="com.google.firebase.messaging.default_notification_channel_id"
android:value="@string/notification_channel_id" />
android:largeHeap="true">
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:windowSoftInputMode="adjustResize"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
android:resizeableActivity="false"
android:launchMode="singleTask">
android:resizeableActivity="false">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
<intent-filter android:label="@string/app_name">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="app-settings"
android:host="notification" />
</intent-filter>
<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="http" android:host="get.status.im" />
<data android:scheme="https" android:host="get.status.im" />
</intent-filter>
<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="status-im" />
<data android:scheme="ethereum" />
</intent-filter>
</activity>
<service
android:name=".module.StatusService"
android:enabled="true"
android:exported="true"/>
<activity android:name="com.facebook.react.devsupport.DevSettingsActivity"/>
<service android:name="io.invertase.firebase.messaging.RNFirebaseMessagingService">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
<service android:name="io.invertase.firebase.messaging.RNFirebaseInstanceIdService">
<intent-filter>
<action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
</intent-filter>
</service>
<service android:name="io.invertase.firebase.messaging.RNFirebaseBackgroundMessagingService" />
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="${applicationId}.provider"
android:exported="false"
android:grantUriPermissions="true"
tools:replace="android:authorities">
<meta-data
tools:replace="android:resource"
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_provider_paths" />
</provider>
<service android:name="com.mapbox.mapboxsdk.telemetry.TelemetryService"/>
</application>
</manifest>
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,46 +1,34 @@
package im.status.ethereum;
import android.content.Context;
import android.annotation.TargetApi;
import androidx.annotation.Nullable;
import android.app.AlertDialog;
import android.app.ActivityManager;
import android.content.DialogInterface;
import android.content.DialogInterface.OnCancelListener;
import android.content.DialogInterface.OnClickListener;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Build;
import android.support.multidex.MultiDexApplication;
import android.os.Looper;
import android.preference.PreferenceManager;
import androidx.core.app.ActivityCompat;
import android.util.Log;
import android.view.WindowManager;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnCancelListener;
import android.content.DialogInterface.OnClickListener;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.res.Configuration;
import android.provider.Settings;
import android.os.Bundle;
import com.facebook.react.ReactActivity;
import com.facebook.react.modules.core.PermissionListener;
import org.devio.rn.splashscreen.SplashScreen;
import com.cboy.rn.splashscreen.SplashScreen;
import com.testfairy.TestFairy;
import java.util.Properties;
import im.status.ethereum.module.StatusThreadPoolExecutor;
public class MainActivity extends ReactActivity
implements ActivityCompat.OnRequestPermissionsResultCallback{
@Nullable private PermissionListener mPermissionListener;
public class MainActivity extends ReactActivity {
private static void registerUncaughtExceptionHandler(final Context context) {
final Thread.UncaughtExceptionHandler defaultUncaughtExceptionHandler = Thread.getDefaultUncaughtExceptionHandler();
Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
@Override
public void uncaughtException(final Thread thread, final Throwable t) {
// High priority, so don't use StatusThreadPoolExecutor
new Thread() {
@Override
public void run() {
@@ -80,30 +68,8 @@ public class MainActivity extends ReactActivity
properties.setProperty("https.nonProxyHosts", "localhost|127.0.0.1");
}
private Intent createNotificationSettingsIntent() {
final Intent intent = new Intent();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
intent.setAction(Settings.ACTION_APP_NOTIFICATION_SETTINGS);
intent.putExtra(Settings.EXTRA_APP_PACKAGE, getPackageName());
} else {
intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
intent.addCategory(Intent.CATEGORY_DEFAULT);
intent.setData(Uri.parse("package:" + getPackageName()));
}
return intent;
}
@Override
public void onNewIntent(final Intent intent) {
super.onNewIntent(intent);
if (intent.getDataString() != null && intent.getData().getScheme().startsWith("app-settings")) {
startActivity(createNotificationSettingsIntent());
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
// Make sure we get an Alert for every uncaught exceptions
registerUncaughtExceptionHandler(MainActivity.this);
@@ -111,11 +77,15 @@ public class MainActivity extends ReactActivity
final ActivityManager activityManager = getActivityManager();
Log.v("RNBootstrap", "Available system memory "+getAvailableMemory(activityManager).availMem + ", maximum usable application memory " + activityManager.getLargeMemoryClass()+"M");
setSecureFlag();
SplashScreen.show(this, true);
SplashScreen.show(this);
super.onCreate(savedInstanceState);
if (!shouldShowRootedNotification()) {
if(BuildConfig.TESTFAIRY_ENABLED == "1") {
TestFairy.begin(this, "969f6c921cb435cea1d41d1ea3f5b247d6026d55");
}
if (!RootUtil.isDeviceRooted()) {
configureStatus();
} else {
AlertDialog dialog = new AlertDialog.Builder(MainActivity.this)
@@ -123,7 +93,6 @@ public class MainActivity extends ReactActivity
.setPositiveButton(getResources().getString(R.string.root_okay), new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
rejectRootedNotification();
dialog.dismiss();
configureStatus();
}
@@ -146,15 +115,6 @@ public class MainActivity extends ReactActivity
dialog.show();
}
Runnable r = new Runnable() {
@Override
public void run() {
System.loadLibrary("status-logs");
}
};
StatusThreadPoolExecutor.getInstance().execute(r);
}
@Override
@@ -178,56 +138,4 @@ public class MainActivity extends ReactActivity
intent.putExtra("newConfig", newConfig);
this.sendBroadcast(intent);
}
private static final String REJECTED_ROOTED_NOTIFICATION = "rejectedRootedNotification";
private static final Integer FREQUENCY_OF_REMINDER_IN_PERCENT = 5;
private boolean shouldShowRootedNotification() {
if (RootUtil.isDeviceRooted()) {
if (userRejectedRootedNotification()) {
return ((Math.random() * 100) < FREQUENCY_OF_REMINDER_IN_PERCENT);
} else return true;
} else {
return false;
}
}
private boolean userRejectedRootedNotification() {
SharedPreferences preferences = getPreferences(0);
return preferences.getBoolean(REJECTED_ROOTED_NOTIFICATION, false);
}
private void rejectRootedNotification() {
SharedPreferences preferences = getPreferences(0);
SharedPreferences.Editor editor = preferences.edit();
editor.putBoolean(REJECTED_ROOTED_NOTIFICATION, true);
editor.commit();
}
private void setSecureFlag() {
final SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(this);
final boolean setSecure = sharedPrefs.getBoolean("BLANK_PREVIEW", false);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH && setSecure) {
getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);
} else {
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_SECURE);
}
}
@TargetApi(Build.VERSION_CODES.M)
public void requestPermissions(String[] permissions, int requestCode, PermissionListener listener) {
mPermissionListener = listener;
requestPermissions(permissions, requestCode);
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
if (mPermissionListener != null && mPermissionListener.onRequestPermissionsResult(requestCode, permissions, grantResults)) {
mPermissionListener = null;
}
if (grantResults.length == 1 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// Permission has been granted. Start camera preview Activity.
com.github.alinz.reactnativewebviewbridge.WebViewBridgeManager.grantAccess(requestCode);
}
}
}
@@ -1,42 +1,35 @@
package im.status.ethereum;
import androidx.multidex.MultiDexApplication;
import android.support.multidex.MultiDexApplication;
import com.BV.LinearGradient.LinearGradientPackage;
import com.aakashns.reactnativedialogs.ReactNativeDialogsPackage;
import com.bitgo.randombytes.RandomBytesPackage;
import com.cboy.rn.splashscreen.SplashScreenReactPackage;
import com.centaurwarchief.smslistener.SmsListenerPackage;
import com.facebook.react.ReactApplication;
import com.lugg.ReactNativeConfig.ReactNativeConfigPackage;
import com.facebook.react.ReactNativeHost;
import com.facebook.react.ReactPackage;
import com.facebook.react.shell.MainReactPackage;
import com.facebook.soloader.SoLoader;
import com.github.alinz.reactnativewebviewbridge.WebViewBridgePackage;
import com.reactnativecommunity.webview.RNCWebViewPackage;
import com.horcrux.svg.SvgPackage;
import com.lugg.ReactNativeConfig.ReactNativeConfigPackage;
import com.oblador.keychain.KeychainPackage;
import com.ocetnik.timer.BackgroundTimerPackage;
import com.reactcommunity.rnlanguages.RNLanguagesPackage;
import com.github.yamill.orientation.OrientationPackage;
import com.i18n.reactnativei18n.ReactNativeI18n;
import com.instabug.reactlibrary.RNInstabugReactnativePackage;
import com.lwansbrough.RCTCamera.RCTCameraPackage;
import com.oblador.vectoricons.VectorIconsPackage;
import com.reactnative.ivpusic.imagepicker.PickerPackage;
import com.rnfs.RNFSPackage;
import net.rhogan.rnsecurerandom.RNSecureRandomPackage;
import org.devio.rn.splashscreen.SplashScreenReactPackage;
import org.reactnative.camera.RNCameraPackage;
import java.util.Arrays;
import java.util.List;
import com.rt2zz.reactnativecontacts.ReactNativeContacts;
import es.tiarg.nfcreactnative.NfcReactNativePackage;
import fr.bamlab.rnimageresizer.ImageResizerPackage;
import im.status.ethereum.function.Function;
import im.status.ethereum.keycard.RNStatusKeycardPackage;
import im.status.ethereum.module.StatusPackage;
import io.invertase.firebase.RNFirebasePackage;
import io.invertase.firebase.messaging.RNFirebaseMessagingPackage;
import io.invertase.firebase.notifications.RNFirebaseNotificationsPackage;
import io.realm.react.RealmReactPackage;
import me.alwx.HttpServer.HttpServerReactPackage;
import com.chirag.RNMail.*;
import com.clipsub.RNShake.RNShakeEventPackage;
import com.mapbox.reactnativemapboxgl.ReactNativeMapboxGLPackage;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class MainApplication extends MultiDexApplication implements ReactApplication {
@@ -48,38 +41,35 @@ public class MainApplication extends MultiDexApplication implements ReactApplica
@Override
protected List<ReactPackage> getPackages() {
StatusPackage statusPackage = new StatusPackage(RootUtil.isDeviceRooted());
Function<String, String> callRPC = statusPackage.getCallRPC();
return Arrays.asList(
List<ReactPackage> packages = new ArrayList<ReactPackage>(Arrays.asList(
new MainReactPackage(),
new RNMail(),
new RNFirebasePackage(),
new RNFirebaseMessagingPackage(),
new RNFirebaseNotificationsPackage(),
new RNSecureRandomPackage(),
new BackgroundTimerPackage(),
new SvgPackage(),
new HttpServerReactPackage(),
new NfcReactNativePackage(),
new SplashScreenReactPackage(),
statusPackage,
new RNStatusKeycardPackage(),
new StatusPackage(BuildConfig.DEBUG),
new RealmReactPackage(),
new RNLanguagesPackage(),
new RNCameraPackage(),
new VectorIconsPackage(),
new ReactNativeContacts(),
new ReactNativeI18n(),
new RandomBytesPackage(),
new LinearGradientPackage(),
new RCTCameraPackage(),
new SmsListenerPackage(),
new OrientationPackage(),
new RNFSPackage(),
new ReactNativeDialogsPackage(),
new ImageResizerPackage(),
new PickerPackage(),
new WebViewBridgePackage(BuildConfig.DEBUG_WEBVIEW == "1", callRPC),
new RNCWebViewPackage(),
new ReactNativeConfigPackage(),
new KeychainPackage(),
new RNShakeEventPackage());
}
new WebViewBridgePackage(BuildConfig.DEBUG),
new ReactNativeMapboxGLPackage(),
new ReactNativeConfigPackage()
));
@Override
protected String getJSMainModuleName() {
return "index.android";
if (!BuildConfig.DEBUG) {
packages.add(new RNInstabugReactnativePackage("b239f82a9cb00464e4c72cc703e6821e", MainApplication.this, "shake"));
}
return packages;
}
};
@@ -88,9 +78,4 @@ public class MainApplication extends MultiDexApplication implements ReactApplica
return mReactNativeHost;
}
@Override
public void onCreate() {
super.onCreate();
SoLoader.init(this, /* native exopackage */ false);
}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 98 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 730 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 648 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 153 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 353 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 394 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 336 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 486 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 307 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 463 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 535 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 469 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 293 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 450 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 555 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 284 B

Some files were not shown because too many files have changed in this diff Show More