Compare commits

..
Author SHA1 Message Date
Brian Sztamfater bd7da02c25 Implement Wallet Connect 2.0
Signed-off-by: Brian Sztamfater <brian@status.im>
2022-03-17 03:46:38 -03:00
jo-mut ece2605cb9 Refactored: edit community chats different screen segments
Signed-off-by: jo-mut <johnmutuku628@gmail.com>
2022-03-17 01:30:40 +03:00
jo-mut 407454859b Refactored: edit community chats different screen segments 2022-03-16 19:59:03 +03:00
andrey 12221ea067 [#13164] Warning 'Registration process has finished in invalid state' is shown for any ENS while typing it in profile
Signed-off-by: andrey <motor4ik@gmail.com>
2022-03-15 09:09:56 +01:00
Churikova Tetiana 2ae875f82a e2e: browser group 2022-03-14 17:20:06 +01:00
Audrius Molis 8e85d15a86 Only create git hook whet it is absent
Signed-off-by: Audrius Molis <masta@dr.com>
2022-03-14 11:57:14 +02:00
andrey 9e126a7399 tabs component
Signed-off-by: andrey <motor4ik@gmail.com>
2022-03-11 13:12:13 +01:00
andrey a0254c0fa8 button component 2022-03-11 13:07:22 +01:00
andrey 72a0df6332 text component 2022-03-11 13:07:21 +01:00
Audrius Molis 08da76c22a Disable chat input for chats with blocked users
Signed-off-by: Audrius Molis <masta@dr.com>
2022-03-10 20:44:48 +02:00
Parvesh Monu 66482863c1 fix screen opens twice on app reopening in ios (#13157) 2022-03-10 19:20:50 +05:30
Churikova Tetiana a3f4673177 e2e: nightly fixes 2022-03-09 17:38:29 +01:00
Churikova Tetiana 55915a9176 e2e: tx users 2022-03-07 22:17:39 +01:00
pavloburykh 891d1e6360 improvements of testing gap 2022-03-07 20:24:49 +02:00
Audrius Molis 1eb956d562 Add changelog from status-go on upgrade #13090
Signed-off-by: Audrius Molis <masta@dr.com>
Signed-off-by: Jakub Sokołowski <jakub@status.im>
2022-03-07 12:46:49 +01:00
Parvesh Monu cf606b921a remove deprecated react-native-dark-mode dependency (#13136) 2022-03-04 19:34:17 +05:30
Parvesh Monu e6f552e785 Fix ios simulator error when notifications enabled (#13145) 2022-03-03 15:54:33 +05:30
Churikova Tetiana 7f007f204f exclude tx 2022-03-01 18:00:51 +01:00
andrey a2497c81e7 [#13116] Load audio messages from http server
Signed-off-by: andrey <motor4ik@gmail.com>
2022-03-01 17:07:40 +01:00
Parvesh Monu 5fd7e35d99 add remote notifications preferences (#13129) 2022-03-01 01:29:40 +05:30
John M. Ngei a71ad6e1a8 stop showing notifications for muted chats
Signed-off-by: John M. Ngei <johnmutuku628@gmail.com>
2022-02-25 22:16:46 +03:00
Roman Volosovskyi e8e70143d2 [#13104] Fix deadlock on syncing all data 2022-02-23 21:17:44 +01:00
Churikova Tetiana 0769528dcd e2e: kk + nightly fixes 2022-02-23 16:56:39 +01:00
andrey aaf655abe4 [#13086] stateofus.eth ENS username is not connected with chat key after purchasing
Signed-off-by: andrey <motor4ik@gmail.com>
2022-02-23 13:24:51 +01:00
Churikova Tetiana c59089c7d3 e2e: wallet+send tx 2022-02-22 15:26:46 +01:00
Churikova Tetiana 37108c8ee3 e2e: fix communities 2022-02-17 17:55:37 +01:00
pavloburykh f220e0fed8 e2e: test gap in public chat 2022-02-17 15:46:29 +02:00
frank 606c3c05e7 Sync bookmarks
Signed-off-by: Andrea Maria Piana <andrea.maria.piana@gmail.com>
2022-02-17 13:37:39 +00:00
diana 6cb48834ae e2e: automate backup of contacts 2022-02-17 13:52:33 +01:00
frank 7b7a86284b Sync clear history
Signed-off-by: Andrea Maria Piana <andrea.maria.piana@gmail.com>
2022-02-17 12:44:55 +00:00
Churikova Tetiana cf734032f2 e2e: fix accesibility #13028
Signed-off-by: Churikova Tetiana <churikova.tm@gmail.com>
2022-02-14 15:38:45 +01:00
Parvesh Monu 36c7d8e4ca Implementation of remote android notifications (#13028) 2022-02-14 17:27:33 +05:30
Marco Süß a8e4363e6b always use english for fallback text
Signed-off-by: andrey <motor4ik@gmail.com>
2022-02-14 09:04:35 +01:00
jinhojang6 bcf20c358c Update translations
Signed-off-by: andrey <motor4ik@gmail.com>
2022-02-14 09:02:34 +01:00
Churikova Tetiana d77701537a e2e: fix ens and tx tests 2022-02-11 18:05:06 +01:00
Michele Balistreriandandrey 52afbf46ee get images over HTTPS with self-signed certificate
Co-Authored-By: andrey <motor4ik@gmail.com>
Signed-off-by: Michele Balistreri <michele@bitgamma.com>
2022-02-10 18:41:10 +01:00
Parvesh Monu 9850dd5160 fix ens resolve issue while following deep link (#13080) 2022-02-10 00:21:47 +05:30
Parvesh Monu e59a2663f7 fix activity center unique constraint error (#13088) 2022-02-09 19:00:32 +05:30
Roman Volosovskyi e1e709220e [#12193] Stop showing fetch more button for cleared history 2022-02-09 09:53:36 +02:00
Roman Volosovskyi d5c865d092 [#9480] Fix cutting of the last char in blockquote 2022-02-08 21:17:02 +02:00
Audrius Molis f0302e7cbf [status-im#12603] Show short hash near build number in About page
Signed-off-by: andrey <motor4ik@gmail.com>
2022-02-08 15:34:56 +01:00
Roman Volosovskyi 8f52b9b63c [#12816] Better meesage on insufficient balance to cover fee 2022-02-08 15:29:02 +02:00
Churikova Tetiana 82916de15c e2e: 2 onboarding groups
Signed-off-by: Churikova Tetiana <churikova.tm@gmail.com>
2022-02-04 18:18:15 +01:00
andrey 8ed9accbeb [#13070] No wallet is shown when switching on BSC network
Signed-off-by: andrey <motor4ik@gmail.com>
2022-02-04 14:52:32 +01:00
andrey c1a338c2dd [#13068] No error "Profile not found" if entering invalid public key in New chat field
Signed-off-by: andrey <motor4ik@gmail.com>
2022-02-04 10:36:10 +01:00
Churikova Tetiana 3745a8e2fe e2e: fixed missing geth
Signed-off-by: Churikova Tetiana <churikova.tm@gmail.com>
2022-02-02 16:26:15 +01:00
Roman Volosovskyi 9fb81c3894 [#12783] Improve order of mailserver requests 2022-02-02 11:21:21 +02:00
andrey 8e560d313d [#13007] Move ENS logic to status-go
Signed-off-by: andrey <motor4ik@gmail.com>
2022-02-01 13:26:05 +01:00
andrey c0e30b459f [#13006] Use token list from status-go
Signed-off-by: andrey <motor4ik@gmail.com>
2022-02-01 13:23:24 +01:00
Churikova Tetiana b63117845a e2e: fixes, umbrella issue update
Signed-off-by: Churikova Tetiana <churikova.tm@gmail.com>
2022-01-31 18:50:42 +01:00
Parvesh Monu fd894dc339 fix gradle google free variable (#13064) 2022-01-31 16:12:46 +05:30
andrey dc8cbcde56 [#13059] 'Cannot read property' error on scanning invalid key
Signed-off-by: andrey <motor4ik@gmail.com>
2022-01-31 09:39:52 +01:00
Churikova Tetiana 4bf393ec3d e2e refactoring: group and public chat 2022-01-27 21:58:28 +01:00
jakub b1780a7128 docs: add list of nix deps update make targets
Important now that we're onboarding more new devs.

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2022-01-27 21:42:05 +01:00
andrey 82f7fbf7e4 [#12071] Some ENS names starting with 0x are not picked up as universal links
Signed-off-by: andrey <motor4ik@gmail.com>
2022-01-26 17:10:09 +01:00
andrey a6eee856cf [#13046] No value in 'Gas amount limit' field in NFT dapps by default
Signed-off-by: andrey <motor4ik@gmail.com>
2022-01-26 17:07:56 +01:00
andrey 136a6313cd [#13047] Profile QR code overlaps share menu during sharing (IOS)
Signed-off-by: andrey <motor4ik@gmail.com>
2022-01-26 06:57:26 +01:00
Churikova Tetiana 6a8f7a07bf e2e: skip AttributeError
Signed-off-by: Churikova Tetiana <churikova.tm@gmail.com>
2022-01-25 12:20:21 +01:00
Roman Volosovskyi c6eb964b7c [#13034] Replace 'etherscan' with 'block explorer' in translations 2022-01-25 10:45:10 +02:00
Roman Volosovskyi 93d4dc8cb5 [#13038] Add error message to email template on crash 2022-01-24 16:55:47 +02:00
Churikova Tetiana 7bbb882ffa e2e: shared steps for session 2022-01-24 12:40:02 +01:00
Parvesh Monu 012b3e396e Fix advanced notifications translation (#13027) 2022-01-21 19:58:20 +05:30
Roman Volosovskyi bf92c51ce4 [#12919] Allow adding emoji to group intro message if it exceeds limit 2022-01-19 17:36:32 +02:00
Roman Volosovskyi eefc2ede81 [#12989] Use higher base fee value for default tx fee calculation 2022-01-19 14:14:05 +02:00
andrey 111064f747 [#13016] "No collectibles available" at attempt to get any existing collectibles
Signed-off-by: Andrea Maria Piana <andrea.maria.piana@gmail.com>
2022-01-18 16:38:58 +00:00
Churikova Tetiana cfab672f63 e2e: more fixes
Signed-off-by: Churikova Tetiana <churikova.tm@gmail.com>
2022-01-17 20:24:25 +01:00
Parvesh Monu 69221695b3 fix alert dialog background color (#13010) 2022-01-18 00:45:40 +05:30
Roman Volosovskyi c44e5bbb67 [#12919] Allowing adding emoji in status input even if it exceeds limit 2022-01-17 19:01:07 +02:00
Parvesh Monu 826dd32c40 Add group members to mentionable list and format code (#12994) 2022-01-17 18:47:09 +05:30
Churikova Tetiana 04b7357646 e2e: fixes
Signed-off-by: Churikova Tetiana <churikova.tm@gmail.com>
2022-01-14 17:55:39 +01:00
Michele Balistreri 2c38c74c16 * update react-native-webview
* more robust send-to-bridge

Signed-off-by: Michele Balistreri <michele@bitgamma.com>
2022-01-14 13:49:06 +03:00
andrey eb7a6ce45a [#12991] Error when trying to edit 'per-gas price limit' on 1inch.exchange
Signed-off-by: andrey <motor4ik@gmail.com>
2022-01-13 11:05:23 +01:00
jakub 525577ab17 ci: specify nix version via agent label
Will make it easier and safer to upgrade Nix on CI hosts.

Also added architecture since we are starting to mix those.

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2022-01-12 18:21:28 +01:00
Jonathan Ferreira (Johny) 83a7d3fafc Add/Fix rebase overwritten event (#12960)
* Add/Fix rebase overwritten event

* Remove membership invitation only option

* Fix lint findings

* Replace if w/ when condition

* Remove left over code

* Add/Fix rebase overwritten event

* Remove left over code

* Add correct message to community info
2022-01-12 14:05:44 +00:00
Churikova Tetiana 4318bb6431 github: update release umbrella issue
Signed-off-by: Churikova Tetiana <churikova.tm@gmail.com>
2022-01-11 15:50:38 +01:00
andrey c466f96326 [#12535] Human Readable data display when signing using eth_signTypedData_v3
Signed-off-by: andrey <motor4ik@gmail.com>
2022-01-11 14:47:53 +01:00
andrey 130308fa8a [#12920] Unable to perform swap on 1inch.exchange if initial swap was cancelled by closing bottom sheet
Signed-off-by: andrey <motor4ik@gmail.com>
2022-01-11 14:47:22 +01:00
Churikova Tetiana a858918b80 Merge branch 'tests/pr-critical-high' into develop 2022-01-10 15:50:37 +01:00
Brian Sztamfater d5b8cde8e2 Add UBI token to the list of default tokens
Signed-off-by: Brian Sztamfater <brian@status.im>
2022-01-10 11:46:34 -03:00
Churikova Tetiana e5a30eaf1d e2e: critical or high in prs 2022-01-10 15:19:26 +01:00
Parvesh Monu b0fd58e9cb fix membership requests on synced devices (#12971) 2022-01-10 17:56:30 +05:30
Shivek Khurana eeb8db00f7 🔁 SWAP UI
CLJ Refactor x Hydra are cool. Add modal

Swap UI

Swap token input and gas slider in place

Asset selector sheets

WIP

Selector events

Tabs are back

Hide Swaps behind ff, add cards and modals for advanced settings

Fix lint issues

Signed-off-by: Shivek Khurana <shivek@status.im>
2022-01-05 23:57:51 +05:30
Churikova Tetiana 3499cdc123 e2e: update ci and made first group 2021-12-29 18:02:58 +01:00
Parvesh Monu 44b8a4c0f4 fix community invite link is not resolved (#12956) 2021-12-28 16:38:42 +05:30
Michele Balistreri e45f959c27 support PUK and seed recovery during onboarding
Signed-off-by: Michele Balistreri <michele@bitgamma.com>
2021-12-27 20:35:33 +03:00
Roman Volosovskyi cd86a1065b [#12936] Add accessibility-id to message timestamp 2021-12-27 13:44:21 +02:00
Parvesh Monu ffba396e4d fix distortion of app theme due to change in system theme (#12934) 2021-12-27 15:24:45 +05:30
Du Cheng 961692251c [#12930] Remove public chat references 2021-12-24 21:10:10 +02:00
Parvesh Monu 94fde74b88 Reorder community chats and categories using drag and drop (#12854) 2021-12-24 21:04:44 +05:30
Roman Volosovskyi 5402c217df [#12913] Properly handle syncing of pubchat delition/installation after offline 2021-12-24 17:03:34 +02:00
Parvesh Monu 4588dafe02 Open user profile from membership requests (#12950) 2021-12-24 20:27:30 +05:30
Parvesh Monu edbb06a7c3 Add community members to mentionable list (#12926) 2021-12-24 20:25:00 +05:30
Roman Volosovskyi 29a7e4dc1c [#12918] Show history gaps only in public chats and communities 2021-12-24 13:40:01 +02:00
Roman Volosovskyi de3c08ba18 Add sync history for 2 mins option for testing purposes 2021-12-21 21:42:42 +02:00
Churikova Tetiana e5ff46fdd5 e2e: fixes
Signed-off-by: Churikova Tetiana <churikova.tm@gmail.com>
2021-12-21 14:58:41 +01:00
262 changed files with 11609 additions and 5703 deletions
-1
View File
@@ -1,6 +1,5 @@
status-im.utils.build/warning-handler status-im.utils.build/warning-handler
status-im.utils.build/get-current-sha status-im.utils.build/get-current-sha
status-im.ethereum.resolver/name
status-im.chat.constants/spacing-char status-im.chat.constants/spacing-char
status-im.chat.constants/arg-wrapping-char status-im.chat.constants/arg-wrapping-char
status-im.ios.core/init status-im.ios.core/init
+2
View File
@@ -32,3 +32,5 @@ METRICS_ENABLED=0
DELETE_MESSAGE_ENABLED=1 DELETE_MESSAGE_ENABLED=1
COLLECTIBLES_ENABLED=1 COLLECTIBLES_ENABLED=1
COMMANDS_ENABLED=1 COMMANDS_ENABLED=1
TWO_MINUTES_SYNCING=1
SWAP_ENABLED=1
+1
View File
@@ -33,3 +33,4 @@ COMMUNITIES_ENABLED=1
COMMUNITIES_MANAGEMENT_ENABLED=1 COMMUNITIES_MANAGEMENT_ENABLED=1
METRICS_ENABLED=0 METRICS_ENABLED=0
DELETE_MESSAGE_ENABLED=1 DELETE_MESSAGE_ENABLED=1
TWO_MINUTES_SYNCING=1
+2
View File
@@ -35,3 +35,5 @@ COMMUNITIES_ENABLED=1
COMMUNITIES_MANAGEMENT_ENABLED=1 COMMUNITIES_MANAGEMENT_ENABLED=1
METRICS_ENABLED=0 METRICS_ENABLED=0
DELETE_MESSAGE_ENABLED=1 DELETE_MESSAGE_ENABLED=1
TWO_MINUTES_SYNCING=1
ENABLE_QUO_PREVIEW=1
+11 -10
View File
@@ -27,11 +27,11 @@ Upgrade (e2e):
### Process ### Process
#### 1) Kick-off #### 1) Kick-off
- [ ] 1. Translation PRs is merged before cutting branch (Jinho) - [ ] 1. Translation PRs is merged before cutting branch (Jinho)
- [ ] 2. Prepare scope of visible changes based on commits history, started from previous release branch cut ([example]( https://notes.status.im/1.14-release-notes?view)) - [ ] 2. Prepare scope of visible changes based on commits history, started from previous release branch cut ([guide](https://notes.status.im/how-to-prepare-release-notes))
- [ ] 3. Update [RELEASES.md](https://github.com/status-im/status-react/blob/develop/RELEASES.md) with release notes (make PR based on previous step) - [ ] 3. Update [RELEASES.md](https://github.com/status-im/status-react/blob/develop/RELEASES.md) with release notes (make PR based on previous step)
- [ ] 4. Create release branch using this [guide](https://github.com/status-im/status-react/blob/develop/doc/RELEASE_GUIDE.md), bump VERSION (merge created PR ([example](https://github.com/status-im/status-react/pull/12504) ) to develop) and get successful release builds (so, testing can be started) - [ ] 4. Create release branch using this [guide](https://github.com/status-im/status-react/blob/develop/doc/RELEASE_GUIDE.md), bump VERSION (merge created PR ([example](https://github.com/status-im/status-react/pull/12504) ) to develop) and get successful release builds (so, testing can be started)
- [ ] 5. Based on release scope, ask for comms (Jonny) - [ ] 5. Based on release scope, ask for comms (Jonny)
- [ ] 6. Make sure that assets (screenshots, video) in stores are up to date. If should be updated, ask @cammellos for help - [ ] 6. Make sure that assets (screenshots, video) in stores are up-to-date, more info [here](https://notes.status.im/how-to-update-assets)
#### 2) Testing #### 2) Testing
[comment]: # (Section will be maintained by QA) [comment]: # (Section will be maintained by QA)
@@ -53,14 +53,15 @@ Upgrade (e2e):
#### 3) Submission #### 3) Submission
- [ ] 1. Release notes written and added (500 character limit for updates (Android) and PR for [RELEASES.md](https://github.com/status-im/status-react/blob/develop/RELEASES.md) is ready to be merged (from 1.3 step) - [ ] 1. Prepare PR for F-droid build ([instruction]( https://github.com/status-im/status-react/blob/develop/doc/FDROID.md))
- [ ] 2. Submit beta version for Android (Open Testing in Play Store) - [ ] 2. Release notes written and added (500 character limit for updates (Android) and PR for [RELEASES.md](https://github.com/status-im/status-react/blob/develop/RELEASES.md) is ready to be merged (from 1.3 step)
- [ ] 3. Submit iOS build to Apple review ([instruction](https://drive.google.com/file/d/10Cl7PBB7TFPkZiVbfzdFGpfMRP9bxXuq/view?usp=sharing), be careful - low quality of audio) - [ ] 3. Submit beta version for Android (Open Testing in Play Store)
- [ ] 4. Play store content reviewed and updated - [ ] 4. Submit iOS build to Apple review ([instruction](https://drive.google.com/file/d/10Cl7PBB7TFPkZiVbfzdFGpfMRP9bxXuq/view?usp=sharing), be careful - low quality of audio)
- [ ] 5. Privacy policy reviewed and updated (ask in channel) - [ ] 5. Play store content reviewed and updated
- [ ] 6. Countries to be excluded (ask in channel) - [ ] 6. Privacy policy reviewed and updated (ask in channel)
- [ ] 7. Changes to our FAQ made (should be checked and if any changes needed, ask Jakub to made them) - [ ] 7. Countries to be excluded (ask in channel)
- [ ] 8. Prepare PR for F-droid build ([instruction]( https://github.com/status-im/status-react/blob/develop/doc/FDROID.md)) - [ ] 8. Changes to our FAQ made (should be checked and if any changes needed, ask Jakub to made them)
#### 4) Before publishing #### 4) Before publishing
- [ ] 1. Translations for comms available (marketing, ask in the channel) - [ ] 1. Translations for comms available (marketing, ask in the channel)
+1 -1
View File
@@ -10,7 +10,7 @@ project-board:
automated-tests: automated-tests:
repo-full-name: 'status-im/status-react' repo-full-name: 'status-im/status-react'
job-full-name: 'end-to-end-tests/status-app-prs' job-full-name: 'status-react/e2e/status-app-prs'
kickoff-column-name: 'E2E Tests' kickoff-column-name: 'E2E Tests'
github-team: github-team:
+2 -1
View File
@@ -168,4 +168,5 @@ project.clj
##appium ##appium
test/appium/report/ test/appium/report/
result.xml result.xml
test/appium/tests/users.py
+8 -2
View File
@@ -1,4 +1,4 @@
.PHONY: nix-add-gcroots clean nix-clean run-metro test release _list _fix-node-perms _tmpdir-mk _tmpdir-rm .PHONY: nix-add-gcroots clean nix-clean run-metro test release _list _fix-node-perms _tmpdir-mk _tmpdir-rm _install-hooks
help: SHELL := /bin/sh help: SHELL := /bin/sh
help: ##@other Show this help help: ##@other Show this help
@@ -124,6 +124,11 @@ _tmpdir-rm: SHELL := /bin/sh
_tmpdir-rm: ##@prepare Remove TMPDIR _tmpdir-rm: ##@prepare Remove TMPDIR
rm -fr "$(TMPDIR)" rm -fr "$(TMPDIR)"
_install-hooks: SHELL := /bin/sh
_install-hooks: ##@prepare Create prepare-commit-msg git hook symlink
@ln -s -f ../../scripts/hooks/prepare-commit-msg .git/hooks
-include _install-hooks
# Remove directories and ignored files # Remove directories and ignored files
clean: SHELL := /bin/sh clean: SHELL := /bin/sh
clean: _fix-node-perms _tmpdir-rm ##@prepare Remove all output folders clean: _fix-node-perms _tmpdir-rm ##@prepare Remove all output folders
@@ -200,8 +205,9 @@ release-fdroid: export BUILD_TYPE = release
release-fdroid: export ANDROID_APK_SIGNED = false release-fdroid: export ANDROID_APK_SIGNED = false
release-fdroid: export ANDROID_ABI_SPLIT = false release-fdroid: export ANDROID_ABI_SPLIT = false
release-fdroid: export ANDROID_ABI_INCLUDE = armeabi-v7a;arm64-v8a;x86;x86_64 release-fdroid: export ANDROID_ABI_INCLUDE = armeabi-v7a;arm64-v8a;x86;x86_64
release-fdroid: export READER_FEATURES = google-free
release-fdroid: ##@build Build release for F-Droid release-fdroid: ##@build Build release for F-Droid
sed -i -e '$$aGOOGLE_FREE=1' .env.release scripts/google-free.sh
scripts/release-android.sh scripts/release-android.sh
release-ios: export TARGET := ios release-ios: export TARGET := ios
+1 -1
View File
@@ -1 +1 @@
1.18.0 1.18.0
+8 -1
View File
@@ -126,7 +126,7 @@ def enableHermes = project.ext.react.get("enableHermes", false);
/** /**
* Exclude google library so we can publish to external android stores * Exclude google library so we can publish to external android stores
*/ */
def googleFree = project.env.get("GOOGLE_FREE", false) def googleFree = project.env.get("GOOGLE_FREE", 0) == '1'
def getCommitHash = { -> def getCommitHash = { ->
if (project.hasProperty("commitHash")) { if (project.hasProperty("commitHash")) {
@@ -341,6 +341,8 @@ dependencies {
exclude group: 'com.google.android.gms' exclude group: 'com.google.android.gms'
exclude group: 'com.android.installreferrer' exclude group: 'com.android.installreferrer'
} }
} else {
implementation 'com.google.firebase:firebase-messaging:23.0.0'
} }
// react-native-screens // react-native-screens
@@ -358,6 +360,7 @@ dependencies {
implementation 'com.github.status-im:function:0.0.1' implementation 'com.github.status-im:function:0.0.1'
implementation 'com.facebook.fresco:fresco:2.2.0' implementation 'com.facebook.fresco:fresco:2.2.0'
implementation 'com.facebook.fresco:animated-gif:2.2.0' implementation 'com.facebook.fresco:animated-gif:2.2.0'
implementation "com.squareup.okhttp3:okhttp-tls:3.12.12"
} }
def getLocalNDKDir = { -> def getLocalNDKDir = { ->
@@ -393,3 +396,7 @@ task hemroidBuild(type: Exec) {
preBuild.dependsOn hemroidBuild preBuild.dependsOn hemroidBuild
apply from: file("../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesAppBuildGradle(project) apply from: file("../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesAppBuildGradle(project)
if (!googleFree) {
apply plugin: "com.google.gms.google-services"
}
+119
View File
@@ -0,0 +1,119 @@
{
"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": {
"appinvite_service": {
"other_platform_oauth_client": [
{
"client_id": "854811651919-gua52csicclb5p9gr4eeu33ukk0aaphj.apps.googleusercontent.com",
"client_type": 3
},
{
"client_id": "854811651919-30s20e3l0me0ins0vc4185jbnj7ja49o.apps.googleusercontent.com",
"client_type": 2,
"ios_info": {
"bundle_id": "im.status.ethereum"
}
}
]
}
}
},
{
"client_info": {
"mobilesdk_app_id": "1:854811651919:android:15dbe4af1e06ca3e005f3a",
"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": {
"appinvite_service": {
"other_platform_oauth_client": [
{
"client_id": "854811651919-gua52csicclb5p9gr4eeu33ukk0aaphj.apps.googleusercontent.com",
"client_type": 3
},
{
"client_id": "854811651919-30s20e3l0me0ins0vc4185jbnj7ja49o.apps.googleusercontent.com",
"client_type": 2,
"ios_info": {
"bundle_id": "im.status.ethereum"
}
}
]
}
}
},
{
"client_info": {
"mobilesdk_app_id": "1:854811651919:android:1d0d69fe8c1bb89b005f3a",
"android_client_info": {
"package_name": "im.status.ethereum.pr"
}
},
"oauth_client": [
{
"client_id": "854811651919-gua52csicclb5p9gr4eeu33ukk0aaphj.apps.googleusercontent.com",
"client_type": 3
}
],
"api_key": [
{
"current_key": "AIzaSyAOF4W1j8GYeXzzVKRfNKlXywD6bx0rJtQ"
}
],
"services": {
"appinvite_service": {
"other_platform_oauth_client": [
{
"client_id": "854811651919-gua52csicclb5p9gr4eeu33ukk0aaphj.apps.googleusercontent.com",
"client_type": 3
},
{
"client_id": "854811651919-30s20e3l0me0ins0vc4185jbnj7ja49o.apps.googleusercontent.com",
"client_type": 2,
"ios_info": {
"bundle_id": "im.status.ethereum"
}
}
]
}
}
}
],
"configuration_version": "1"
}
+6
View File
@@ -81,6 +81,12 @@
android:name="android.support.FILE_PROVIDER_PATHS" android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_provider_paths" /> android:resource="@xml/file_provider_paths" />
</provider> </provider>
<meta-data
android:name="com.google.firebase.messaging.default_notification_icon"
android:resource="@drawable/notification_icon" />
<meta-data
android:name="com.google.firebase.messaging.default_notification_color"
android:resource="@color/notification_icon_color" />
</application> </application>
</manifest> </manifest>
@@ -15,12 +15,14 @@ import com.reactnativenavigation.NavigationApplication;
import com.reactnativenavigation.react.NavigationReactNativeHost; import com.reactnativenavigation.react.NavigationReactNativeHost;
import com.facebook.react.ReactPackage; import com.facebook.react.ReactPackage;
import com.facebook.react.ReactInstanceManager; import com.facebook.react.ReactInstanceManager;
import com.facebook.react.modules.network.OkHttpClientProvider;
import java.util.List; import java.util.List;
import im.status.ethereum.keycard.RNStatusKeycardPackage; import im.status.ethereum.keycard.RNStatusKeycardPackage;
import im.status.ethereum.module.StatusPackage; import im.status.ethereum.module.StatusPackage;
import im.status.ethereum.pushnotifications.PushNotificationPackage; import im.status.ethereum.pushnotifications.PushNotificationPackage;
import im.status.ethereum.StatusOkHttpClientFactory;
public class MainApplication extends NavigationApplication { public class MainApplication extends NavigationApplication {
@@ -56,7 +58,9 @@ public class MainApplication extends NavigationApplication {
@Override @Override
public void onCreate() { public void onCreate() {
super.onCreate(); super.onCreate();
OkHttpClientProvider.setOkHttpClientFactory(new StatusOkHttpClientFactory());
WebView.setWebContentsDebuggingEnabled(BuildConfig.DEBUG_WEBVIEW == "1"); WebView.setWebContentsDebuggingEnabled(BuildConfig.DEBUG_WEBVIEW == "1");
initializeFlipper(this, getReactNativeHost().getReactInstanceManager()); initializeFlipper(this, getReactNativeHost().getReactInstanceManager());
} }
@@ -0,0 +1,44 @@
package im.status.ethereum;
import android.util.Log;
import com.facebook.react.modules.network.OkHttpClientFactory;
import com.facebook.react.modules.network.OkHttpClientProvider;
import okhttp3.OkHttpClient;
import okhttp3.Interceptor;
import okhttp3.tls.HandshakeCertificates;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.lang.RuntimeException;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.security.cert.CertificateFactory;
import java.security.cert.X509Certificate;
import im.status.ethereum.module.StatusPackage;
class StatusOkHttpClientFactory implements OkHttpClientFactory {
public OkHttpClient createNewNetworkModuleClient() {
String certPem = StatusPackage.getImageTLSCert();
X509Certificate cert;
try {
CertificateFactory cf = CertificateFactory.getInstance("X.509");
cert = (X509Certificate) cf.generateCertificate(new ByteArrayInputStream(certPem.getBytes()));
} catch(Exception e) {
Log.e("StatusOkHttpClientFactory", "Could not parse certificate");
cert = null;
}
HandshakeCertificates clientCertificates = new HandshakeCertificates.Builder()
.addPlatformTrustedCertificates()
.addTrustedCertificate(cert)
.build();
return OkHttpClientProvider.createClientBuilder()
.sslSocketFactory(clientCertificates.sslSocketFactory(), clientCertificates.trustManager())
.build();
}
}
Binary file not shown.

Before

Width:  |  Height:  |  Size: 482 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 272 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 975 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 495 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 826 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 826 B

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="alert_background">#141414</color>
<color name="alert_text">#ffffff</color>
</resources>
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="alert_background">#ffffff</color>
<color name="alert_text">#000000</color>
<color name="notification_icon_color">#4360DF</color>
</resources>
@@ -8,6 +8,7 @@
<item name="android:forceDarkAllowed">true</item> <item name="android:forceDarkAllowed">true</item>
<item name="android:windowTranslucentStatus">false</item> <item name="android:windowTranslucentStatus">false</item>
<item name="android:statusBarColor">?attr/backgroundColor</item> <item name="android:statusBarColor">?attr/backgroundColor</item>
<item name="android:alertDialogTheme">@style/AlertDialogTheme</item>
</style> </style>
<style name="LightTheme" parent="AppTheme"> <style name="LightTheme" parent="AppTheme">
@@ -21,4 +22,10 @@
<item name="backgroundColor">#000000</item> <item name="backgroundColor">#000000</item>
<item name="android:windowLightStatusBar">false</item> <item name="android:windowLightStatusBar">false</item>
</style> </style>
<style name="AlertDialogTheme" parent="Theme.AppCompat.DayNight.Dialog.Alert">
<item name="android:textColor">@color/alert_text</item>
<item name="android:textColorPrimary">@color/alert_text</item>
<item name="android:background">@color/alert_background</item>
</style>
</resources> </resources>
+1
View File
@@ -22,6 +22,7 @@ buildscript {
dependencies { dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.4.31" classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.4.31"
classpath "com.android.tools.build:gradle:${project.ext.gradlePluginVersion}" classpath "com.android.tools.build:gradle:${project.ext.gradlePluginVersion}"
classpath "com.google.gms:google-services:4.3.10"
// WARNING: Do not place your application dependencies here! // WARNING: Do not place your application dependencies here!
// They belong in the individual module build.gradle files. // They belong in the individual module build.gradle files.
} }
+1 -1
View File
@@ -1,7 +1,7 @@
library 'status-jenkins-lib@v1.3.3' library 'status-jenkins-lib@v1.3.3'
pipeline { pipeline {
agent { label 'linux' } agent { label 'linux && x86_64 && nix-2.3' }
options { options {
timestamps() timestamps()
+1 -1
View File
@@ -101,7 +101,7 @@ pipeline {
steps { script { steps { script {
e2eApk = utils.getEnv(apke2e, 'SAUCE_URL') e2eApk = utils.getEnv(apke2e, 'SAUCE_URL')
build( build(
job: 'end-to-end-tests/status-app-nightly', job: 'status-react/e2e/status-app-nightly',
parameters: [string(name: 'APK_NAME', value: e2eApk)], parameters: [string(name: 'APK_NAME', value: e2eApk)],
wait: false wait: false
) )
+1 -1
View File
@@ -1,7 +1,7 @@
library 'status-jenkins-lib@v1.3.3' library 'status-jenkins-lib@v1.3.3'
pipeline { pipeline {
agent { label 'macos && x86_64 && xcode-12.5' } agent { label 'macos && x86_64 && nix-2.3 && xcode-12.5' }
parameters { parameters {
string( string(
+13 -7
View File
@@ -3,15 +3,15 @@ pipeline {
agent { label 'linux' } agent { label 'linux' }
parameters { parameters {
string(
name: 'NETWORK',
description: 'Name of test network to use.',
defaultValue: 'ropsten',
)
string( string(
name: 'APK_NAME', name: 'APK_NAME',
description: 'Filename of APK uploaded to SauceLabs.', description: 'Filename of APK uploaded to SauceLabs.',
) )
string(
name: 'KEYWORD_EXPRESSION',
description: 'This will run tests which contain names that match the given string expression (Optional)',
defaultValue: '',
)
} }
options { options {
@@ -48,16 +48,22 @@ pipeline {
credentialsId: 'infura-e2e-token', credentialsId: 'infura-e2e-token',
variable: 'WEB3_INFURA_PROJECT_ID' variable: 'WEB3_INFURA_PROJECT_ID'
), ),
file(
credentialsId: "mobile-tests-eth-accounts",
variable: 'TEST_ETH_ACCOUNTS_FILE'
),
]) { ]) {
dir('test/appium/tests') { dir('test/appium/tests') {
/* Provide Eth test accounts secrets. */
sh 'cp -f $TEST_ETH_ACCOUNTS_FILE users.py'
sh """ sh """
python3 -m pytest \ python3 -m pytest \
--numprocesses 15 \ --numprocesses 15 \
--rerun_count=2 \ --rerun_count=2 \
--testrail_report=True \ --testrail_report=True \
-m testrail_id \ -m testrail_id \
-m "not upgrade" \ -m \"not upgrade\" \
--network=${params.NETWORK} \ -k \"${params.KEYWORD_EXPRESSION}\" \
--apk=${params.APK_NAME} --apk=${params.APK_NAME}
""" """
} }
+16 -9
View File
@@ -8,16 +8,12 @@ pipeline {
description: 'Name of the branch to checkout and build.', description: 'Name of the branch to checkout and build.',
defaultValue: 'develop', defaultValue: 'develop',
) )
string( /* Commented to use TEST_MARKERS values from job params
name: 'NETWORK',
description: 'Name of test network to use.',
defaultValue: 'ropsten',
)
string( string(
name: 'TEST_MARKERS', name: 'TEST_MARKERS',
description: 'Marker expression for matching tests to run.', description: 'Marker expression for matching tests to run.',
defaultValue: 'critical or high', defaultValue: 'critical or high',
) ) */
string( string(
name: 'APK_NAME', name: 'APK_NAME',
description: 'Filename of APK uploaded to SauceLabs, path, or URL.', description: 'Filename of APK uploaded to SauceLabs, path, or URL.',
@@ -26,9 +22,14 @@ pipeline {
name: 'PR_ID', name: 'PR_ID',
description: 'ID of the Pull Request triggering this build.', description: 'ID of the Pull Request triggering this build.',
) )
string(
name: 'KEYWORD_EXPRESSION',
description: 'This will run tests which contain names that match the given string expression (Optional)',
defaultValue: '',
)
string( string(
name: 'TR_CASE_IDS', name: 'TR_CASE_IDS',
description: 'IDs of the TestRail case, separated by a comma. (Optional)', description: 'IDs of the TestRail case, separated by a comma (Optional)',
defaultValue: '', defaultValue: '',
) )
} }
@@ -84,15 +85,21 @@ pipeline {
credentialsId: 'infura-e2e-token', credentialsId: 'infura-e2e-token',
variable: 'WEB3_INFURA_PROJECT_ID' variable: 'WEB3_INFURA_PROJECT_ID'
), ),
file(
credentialsId: "mobile-tests-eth-accounts",
variable: 'TEST_ETH_ACCOUNTS_FILE'
),
]) { ]) {
dir('test/appium/tests') { dir('test/appium/tests') {
/* Provide Eth test account secrets. */
sh 'cp -f $TEST_ETH_ACCOUNTS_FILE users.py'
sh """ sh """
python3 -m pytest \ python3 -m pytest \
--numprocesses 15 \ --numprocesses 15 \
--rerun_count=2 \ --rerun_count=2 \
--testrail_report=True \ --testrail_report=True \
-m "${params.TEST_MARKERS}" \ -m \"${params.TEST_MARKERS}\" \
--network=${params.NETWORK} \ -k \"${params.KEYWORD_EXPRESSION}\" \
--apk=${params.APK_NAME} \ --apk=${params.APK_NAME} \
--build=PR-${params.PR_ID} \ --build=PR-${params.PR_ID} \
--pr_number=${params.PR_ID} \ --pr_number=${params.PR_ID} \
+27 -10
View File
@@ -3,11 +3,6 @@ pipeline {
agent { label 'linux' } agent { label 'linux' }
parameters { parameters {
string(
name: 'NETWORK',
description: 'Name of test network to use',
defaultValue: 'ropsten',
)
string( string(
name: 'APK_NAME', name: 'APK_NAME',
description: 'Filename of APK uploaded to SauceLabs (base for upgrade, usually release build)', description: 'Filename of APK uploaded to SauceLabs (base for upgrade, usually release build)',
@@ -16,6 +11,16 @@ pipeline {
name: 'APK_NAME_UPGRADE', name: 'APK_NAME_UPGRADE',
description: 'Filename of APK of upgraded application (installed on top of base)', description: 'Filename of APK of upgraded application (installed on top of base)',
) )
string(
name: 'KEYWORD_EXPRESSION',
description: 'This will run tests which contain names that match the given string expression (Optional)',
defaultValue: '',
)
string(
name: 'TR_CASE_IDS',
description: 'IDs of the TestRail case, separated by a comma (Optional)',
defaultValue: '',
)
} }
options { options {
@@ -32,7 +37,12 @@ pipeline {
} } } }
} }
stage('Test') { stage('Test') {
steps { steps { script {
/* for managing optional arguments */
def extraPytestOpts = ''
if (params.TR_CASE_IDS != '') {
extraPytestOpts = "--run_testrail_ids='${params.TR_CASE_IDS}'"
}
withCredentials([ withCredentials([
usernamePassword( usernamePassword(
credentialsId: 'test-rail-api', credentialsId: 'test-rail-api',
@@ -52,22 +62,29 @@ pipeline {
credentialsId: 'infura-e2e-token', credentialsId: 'infura-e2e-token',
variable: 'WEB3_INFURA_PROJECT_ID' variable: 'WEB3_INFURA_PROJECT_ID'
), ),
file(
credentialsId: "mobile-tests-eth-accounts",
variable: 'TEST_ETH_ACCOUNTS_FILE'
),
]) { ]) {
dir('test/appium/tests') { dir('test/appium/tests') {
/* Provide Eth test accounts secrets. */
sh 'cp -f $TEST_ETH_ACCOUNTS_FILE users.py'
sh """ sh """
python3 -m pytest \ python3 -m pytest \
-m upgrade \ -m "upgrade" \
-k \"${params.KEYWORD_EXPRESSION}\" \
--numprocesses 15 \ --numprocesses 15 \
--rerun_count=2 \ --rerun_count=2 \
--testrail_report=True \ --testrail_report=True \
--network=${params.NETWORK} \
--apk=${params.APK_NAME} \ --apk=${params.APK_NAME} \
--apk_upgrade=${params.APK_NAME_UPGRADE} --apk_upgrade=${params.APK_NAME_UPGRADE} \
${extraPytestOpts}
""" """
} }
} }
} }
} } }
} }
post { post {
+5 -1
View File
@@ -163,4 +163,8 @@ used for some abi encoding primitives
## "rn-emoji-keyboard": "https://github.com/status-im/rn-emoji-keyboard" ## "rn-emoji-keyboard": "https://github.com/status-im/rn-emoji-keyboard"
Used for taking emoji input, for custom emoji thumbnails for community channels Used for taking emoji input, for custom emoji thumbnails for community channels
## "react-native-draggable-flatlist": "https://github.com/computerjazz/react-native-draggable-flatlist"
A drag-and-drop-enabled FlatList component for React Native
+7
View File
@@ -28,6 +28,13 @@ There are three steps necessary to start development, in this case for Android:
The first two will continue watching for changes and keep re-building the app. They need to be ready first. The first two will continue watching for changes and keep re-building the app. They need to be ready first.
The last one will exit once the app is up and ready. The last one will exit once the app is up and ready.
# Updating Dependencies
* `make nix-update-pods` - iOS CocoaPods dependencies (updates `ios/Podfile` and `ios/Podfile.loc`)
* `make nix-update-gradle` - Android Gradle/Maven dependencies (updates `nix/deps/gradle/deps.json`)
* `make nix-update-clojure` - Clojure Maven dependencies (updates `nix/deps/clojure/deps.json`)
* `make nix-update-gems` - Fastlane Ruby dependencies (updates `fastlane/Gemfile.lock` and `fastlane/gemset.nix`)
# Manual Steps # Manual Steps
There are a few manual steps you might want to do in order to start contributing. There are a few manual steps you might want to do in order to start contributing.
+1
View File
@@ -1 +1,2 @@
import "node-libs-react-native/globals";
import "./app/index.js"; import "./app/index.js";
+35 -11
View File
@@ -2,7 +2,7 @@ PODS:
- boost-for-react-native (1.63.0) - boost-for-react-native (1.63.0)
- BVLinearGradient (2.5.6): - BVLinearGradient (2.5.6):
- React - React
- CryptoSwift (1.4.2) - CryptoSwift (1.4.3)
- DoubleConversion (1.1.6) - DoubleConversion (1.1.6)
- FBLazyVector (0.63.4) - FBLazyVector (0.63.4)
- FBReactNativeSpec (0.63.4): - FBReactNativeSpec (0.63.4):
@@ -206,6 +206,10 @@ PODS:
- React-jsinspector (0.63.4) - React-jsinspector (0.63.4)
- react-native-background-timer (2.2.0): - react-native-background-timer (2.2.0):
- React - React
- react-native-blob-util (0.13.18):
- React-Core
- react-native-blur (0.8.0):
- React
- react-native-camera-kit (8.0.4): - react-native-camera-kit (8.0.4):
- React - React
- react-native-cameraroll (4.0.4): - react-native-cameraroll (4.0.4):
@@ -220,6 +224,10 @@ PODS:
- React-Core - React-Core
- react-native-netinfo (4.7.0): - react-native-netinfo (4.7.0):
- React - React
- react-native-notifications (4.1.3):
- React-Core
- react-native-randombytes (3.6.1):
- React-Core
- react-native-safe-area-context (2.0.0): - react-native-safe-area-context (2.0.0):
- React - React
- react-native-shake (3.4.0): - react-native-shake (3.4.0):
@@ -230,10 +238,10 @@ PODS:
- React - React
- react-native-status (1.0.0): - react-native-status (1.0.0):
- React - React
- react-native-status-keycard (2.5.36): - react-native-status-keycard (2.5.37):
- Keycard - Keycard
- React - React
- react-native-webview (11.3.0): - react-native-webview (11.16.0):
- React-Core - React-Core
- React-RCTActionSheet (0.63.4): - React-RCTActionSheet (0.63.4):
- React-Core/RCTActionSheetHeaders (= 0.63.4) - React-Core/RCTActionSheetHeaders (= 0.63.4)
@@ -388,8 +396,8 @@ PODS:
- SQLCipher/common (3.4.2) - SQLCipher/common (3.4.2)
- SQLCipher/standard (3.4.2): - SQLCipher/standard (3.4.2):
- SQLCipher/common - SQLCipher/common
- SSZipArchive (2.4.2) - SSZipArchive (2.4.3)
- TOCropViewController (2.6.0) - TOCropViewController (2.6.1)
- TouchID (4.4.1): - TouchID (4.4.1):
- React - React
- Yoga (1.14.0) - Yoga (1.14.0)
@@ -417,12 +425,16 @@ DEPENDENCIES:
- React-jsiexecutor (from `../node_modules/react-native/ReactCommon/jsiexecutor`) - React-jsiexecutor (from `../node_modules/react-native/ReactCommon/jsiexecutor`)
- React-jsinspector (from `../node_modules/react-native/ReactCommon/jsinspector`) - React-jsinspector (from `../node_modules/react-native/ReactCommon/jsinspector`)
- react-native-background-timer (from `../node_modules/react-native-background-timer`) - react-native-background-timer (from `../node_modules/react-native-background-timer`)
- react-native-blob-util (from `../node_modules/react-native-blob-util`)
- "react-native-blur (from `../node_modules/@react-native-community/blur`)"
- react-native-camera-kit (from `../node_modules/react-native-camera-kit`) - react-native-camera-kit (from `../node_modules/react-native-camera-kit`)
- "react-native-cameraroll (from `../node_modules/@react-native-community/cameraroll`)" - "react-native-cameraroll (from `../node_modules/@react-native-community/cameraroll`)"
- react-native-config (from `../node_modules/react-native-config`) - react-native-config (from `../node_modules/react-native-config`)
- react-native-image-resizer (from `../node_modules/react-native-image-resizer`) - react-native-image-resizer (from `../node_modules/react-native-image-resizer`)
- react-native-mail (from `../node_modules/react-native-mail`) - react-native-mail (from `../node_modules/react-native-mail`)
- "react-native-netinfo (from `../node_modules/@react-native-community/netinfo`)" - "react-native-netinfo (from `../node_modules/@react-native-community/netinfo`)"
- react-native-notifications (from `../node_modules/react-native-notifications`)
- react-native-randombytes (from `../node_modules/react-native-randombytes`)
- react-native-safe-area-context (from `../node_modules/react-native-safe-area-context`) - react-native-safe-area-context (from `../node_modules/react-native-safe-area-context`)
- react-native-shake (from `../node_modules/react-native-shake`) - react-native-shake (from `../node_modules/react-native-shake`)
- "react-native-slider (from `../node_modules/@react-native-community/slider`)" - "react-native-slider (from `../node_modules/@react-native-community/slider`)"
@@ -517,6 +529,10 @@ EXTERNAL SOURCES:
:path: "../node_modules/react-native/ReactCommon/jsinspector" :path: "../node_modules/react-native/ReactCommon/jsinspector"
react-native-background-timer: react-native-background-timer:
:path: "../node_modules/react-native-background-timer" :path: "../node_modules/react-native-background-timer"
react-native-blob-util:
:path: "../node_modules/react-native-blob-util"
react-native-blur:
:path: "../node_modules/@react-native-community/blur"
react-native-camera-kit: react-native-camera-kit:
:path: "../node_modules/react-native-camera-kit" :path: "../node_modules/react-native-camera-kit"
react-native-cameraroll: react-native-cameraroll:
@@ -529,6 +545,10 @@ EXTERNAL SOURCES:
:path: "../node_modules/react-native-mail" :path: "../node_modules/react-native-mail"
react-native-netinfo: react-native-netinfo:
:path: "../node_modules/@react-native-community/netinfo" :path: "../node_modules/@react-native-community/netinfo"
react-native-notifications:
:path: "../node_modules/react-native-notifications"
react-native-randombytes:
:path: "../node_modules/react-native-randombytes"
react-native-safe-area-context: react-native-safe-area-context:
:path: "../node_modules/react-native-safe-area-context" :path: "../node_modules/react-native-safe-area-context"
react-native-shake: react-native-shake:
@@ -621,12 +641,12 @@ CHECKOUT OPTIONS:
SPEC CHECKSUMS: SPEC CHECKSUMS:
boost-for-react-native: 39c7adb57c4e60d6c5479dd8623128eb5b3f0f2c boost-for-react-native: 39c7adb57c4e60d6c5479dd8623128eb5b3f0f2c
BVLinearGradient: e3aad03778a456d77928f594a649e96995f1c872 BVLinearGradient: e3aad03778a456d77928f594a649e96995f1c872
CryptoSwift: a532e74ed010f8c95f611d00b8bbae42e9fe7c17 CryptoSwift: a0799ee936271bd2253a006f1e4523df21845000
DoubleConversion: cde416483dac037923206447da6e1454df403714 DoubleConversion: cde416483dac037923206447da6e1454df403714
FBLazyVector: 3bb422f41b18121b71783a905c10e58606f7dc3e FBLazyVector: 3bb422f41b18121b71783a905c10e58606f7dc3e
FBReactNativeSpec: f2c97f2529dd79c083355182cc158c9f98f4bd6e FBReactNativeSpec: f2c97f2529dd79c083355182cc158c9f98f4bd6e
Folly: b73c3869541e86821df3c387eb0af5f65addfab4 Folly: b73c3869541e86821df3c387eb0af5f65addfab4
glog: 5bc68409594b19a3e5c5cbced7b1ecf61053b709 glog: 61334f8bdb4deea07543d4fbac3fb5948e78a7a5
Keycard: dd96182888da0aacf4de821b641103143bbb26cc Keycard: dd96182888da0aacf4de821b641103143bbb26cc
libwebp: 98a37e597e40bfdb4c911fc98f2c53d0b12d05fc libwebp: 98a37e597e40bfdb4c911fc98f2c53d0b12d05fc
Permission-Camera: afad27bf90337684d4a86f3825112d648c8c4d3b Permission-Camera: afad27bf90337684d4a86f3825112d648c8c4d3b
@@ -642,19 +662,23 @@ SPEC CHECKSUMS:
React-jsiexecutor: 93bd528844ad21dc07aab1c67cb10abae6df6949 React-jsiexecutor: 93bd528844ad21dc07aab1c67cb10abae6df6949
React-jsinspector: 58aef7155bc9a9683f5b60b35eccea8722a4f53a React-jsinspector: 58aef7155bc9a9683f5b60b35eccea8722a4f53a
react-native-background-timer: 1f7d560647b40e6a60b01c452ba29c54bf581fc4 react-native-background-timer: 1f7d560647b40e6a60b01c452ba29c54bf581fc4
react-native-blob-util: 600972b1782380a5a7d5db61a3817ea32349dae9
react-native-blur: cad4d93b364f91e7b7931b3fa935455487e5c33c
react-native-camera-kit: 498a6d111a904834e0824e9073cfadef7303235f react-native-camera-kit: 498a6d111a904834e0824e9073cfadef7303235f
react-native-cameraroll: 88f4e62d9ecd0e1f253abe4f685474f2ea14bfa2 react-native-cameraroll: 88f4e62d9ecd0e1f253abe4f685474f2ea14bfa2
react-native-config: c98128a72bc2c3a1ca72caec0b021f0fa944aa29 react-native-config: c98128a72bc2c3a1ca72caec0b021f0fa944aa29
react-native-image-resizer: 2f1577efa3bc762597681f530c8e8d05ce0ceeb3 react-native-image-resizer: 2f1577efa3bc762597681f530c8e8d05ce0ceeb3
react-native-mail: 8fdcd3aef007c33a6877a18eb4cf7447a1d4ce4a react-native-mail: 8fdcd3aef007c33a6877a18eb4cf7447a1d4ce4a
react-native-netinfo: ddaca8bbb9e6e914b1a23787ccb879bc642931c9 react-native-netinfo: ddaca8bbb9e6e914b1a23787ccb879bc642931c9
react-native-notifications: 805108822ceff3440644d5701944f0cda35f5b4b
react-native-randombytes: 421f1c7d48c0af8dbcd471b0324393ebf8fe7846
react-native-safe-area-context: 60f654e00b6cc416573f6d5dbfce3839958eb57a react-native-safe-area-context: 60f654e00b6cc416573f6d5dbfce3839958eb57a
react-native-shake: de052eaa3eadc4a326b8ddd7ac80c06e8d84528c react-native-shake: de052eaa3eadc4a326b8ddd7ac80c06e8d84528c
react-native-slider: 12bd76d3d568c9c5500825db54123d44b48e4ad4 react-native-slider: 12bd76d3d568c9c5500825db54123d44b48e4ad4
react-native-splash-screen: 200d11d188e2e78cea3ad319964f6142b6384865 react-native-splash-screen: 200d11d188e2e78cea3ad319964f6142b6384865
react-native-status: 45dbf1302ce3c258b459dfab137cd1c2c68c295d react-native-status: 45dbf1302ce3c258b459dfab137cd1c2c68c295d
react-native-status-keycard: eb84554a23315510948613a9467e7e3481be340c react-native-status-keycard: 961d01ca190889ddf220206822fd752f8f4f3f7a
react-native-webview: af9990b21a9aeafa8e8347746eb4116c0de086af react-native-webview: 28a8636d97ee641f2ee8f20492d7a6c269c1d703
React-RCTActionSheet: 89a0ca9f4a06c1f93c26067af074ccdce0f40336 React-RCTActionSheet: 89a0ca9f4a06c1f93c26067af074ccdce0f40336
React-RCTAnimation: 1bde3ecc0c104c55df246eda516e0deb03c4e49b React-RCTAnimation: 1bde3ecc0c104c55df246eda516e0deb03c4e49b
React-RCTBlob: a97d378b527740cc667e03ebfa183a75231ab0f0 React-RCTBlob: a97d378b527740cc667e03ebfa183a75231ab0f0
@@ -688,8 +712,8 @@ SPEC CHECKSUMS:
SDWebImageWebPCoder: f93010f3f6c031e2f8fb3081ca4ee6966c539815 SDWebImageWebPCoder: f93010f3f6c031e2f8fb3081ca4ee6966c539815
secp256k1: f61d67e6fdcb85fd727acf1bf35ace6036db540c secp256k1: f61d67e6fdcb85fd727acf1bf35ace6036db540c
SQLCipher: f9fcf29b2e59ced7defc2a2bdd0ebe79b40d4990 SQLCipher: f9fcf29b2e59ced7defc2a2bdd0ebe79b40d4990
SSZipArchive: e7b4f3d9e780c2acc1764cd88fbf2de28f26e5b2 SSZipArchive: fe6a26b2a54d5a0890f2567b5cc6de5caa600aef
TOCropViewController: 3105367e808b7d3d886a74ff59bf4804e7d3ab38 TOCropViewController: edfd4f25713d56905ad1e0b9f5be3fbe0f59c863
TouchID: ba4c656d849cceabc2e4eef722dea5e55959ecf4 TouchID: ba4c656d849cceabc2e4eef722dea5e55959ecf4
Yoga: 4bd86afe9883422a7c4028c00e34790f560923d6 Yoga: 4bd86afe9883422a7c4028c00e34790f560923d6
+72 -4
View File
@@ -19,10 +19,23 @@
#import <React/RCTBridge.h> #import <React/RCTBridge.h>
#import <React/RCTBundleURLProvider.h> #import <React/RCTBundleURLProvider.h>
#import <React/RCTHTTPRequestHandler.h>
#import <UserNotifications/UserNotifications.h> #import <UserNotifications/UserNotifications.h>
#import <RNCPushNotificationIOS.h> #import <RNCPushNotificationIOS.h>
#import <SDWebImage/SDWebImageDownloaderConfig.h>
#import <SDWebImage/SDWebImageDownloaderOperation.h>
#import <Security/Security.h>
//TODO: properly import the framework
extern NSString* StatusgoImageServerTLSCert();
@interface StatusDownloaderOperation : SDWebImageDownloaderOperation
+ (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition disposition, NSURLCredential *credential))completionHandler;
@end
/* /*
#if DEBUG #if DEBUG
#import <FlipperKit/FlipperClient.h> #import <FlipperKit/FlipperClient.h>
@@ -45,7 +58,7 @@ static void InitializeFlipper(UIApplication *application) {
#endif #endif
*/ */
@implementation AppDelegate @implementation AppDelegate
{ {
UIView *_blankView; UIView *_blankView;
} }
@@ -84,6 +97,8 @@ static void InitializeFlipper(UIApplication *application) {
UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter]; UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
center.delegate = self; center.delegate = self;
SDWebImageDownloaderConfig.defaultDownloaderConfig.operationClass = [StatusDownloaderOperation class];
return YES; return YES;
} }
@@ -124,7 +139,7 @@ static void InitializeFlipper(UIApplication *application) {
[UIView animateWithDuration:0.5 animations:^{ [UIView animateWithDuration:0.5 animations:^{
_blankView.alpha = 1; _blankView.alpha = 1;
}]; }];
} }
} }
- (void)applicationDidBecomeActive:(UIApplication *)application { - (void)applicationDidBecomeActive:(UIApplication *)application {
@@ -169,14 +184,67 @@ didReceiveNotificationResponse:(UNNotificationResponse *)response
- (void)userNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions options))completionHandler - (void)userNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions options))completionHandler
{ {
NSDictionary *userInfo = notification.request.content.userInfo; NSDictionary *userInfo = notification.request.content.userInfo;
NSString *notificationType = userInfo[@"notificationType"]; // check your notification type NSString *notificationType = userInfo[@"notificationType"]; // check your notification type
if (![notificationType isEqual: @"local-notification"]) { // we silence all notifications which are not local if (![notificationType isEqual: @"local-notification"]) { // we silence all notifications which are not local
completionHandler(UNNotificationPresentationOptionNone); completionHandler(UNNotificationPresentationOptionNone);
return; return;
} }
completionHandler(UNAuthorizationOptionSound | UNAuthorizationOptionAlert | UNAuthorizationOptionBadge); completionHandler(UNAuthorizationOptionSound | UNAuthorizationOptionAlert | UNAuthorizationOptionBadge);
} }
@end @end
@implementation StatusDownloaderOperation
+ (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition disposition, NSURLCredential *credential))completionHandler {
NSURLSessionAuthChallengeDisposition disposition = NSURLSessionAuthChallengeCancelAuthenticationChallenge;
__block NSURLCredential *credential = nil;
NSString *pemCert = StatusgoImageServerTLSCert();
pemCert = [pemCert stringByReplacingOccurrencesOfString:@"-----BEGIN CERTIFICATE-----\n" withString:@""];
pemCert = [pemCert stringByReplacingOccurrencesOfString:@"\n-----END CERTIFICATE-----" withString:@""];
NSData *derCert = [[NSData alloc] initWithBase64EncodedString:pemCert options:NSDataBase64DecodingIgnoreUnknownCharacters];
SecCertificateRef certRef = SecCertificateCreateWithData(NULL, (__bridge_retained CFDataRef) derCert);
CFArrayRef certArrayRef = CFArrayCreate(NULL, (void *)&certRef, 1, NULL);
SecTrustSetAnchorCertificates(challenge.protectionSpace.serverTrust, certArrayRef);
SecTrustResultType trustResult;
SecTrustEvaluate(challenge.protectionSpace.serverTrust, &trustResult);
if ((trustResult == kSecTrustResultProceed) || (trustResult == kSecTrustResultUnspecified)) {
disposition = NSURLSessionAuthChallengeUseCredential;
credential = [NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust];
}
if (completionHandler) {
completionHandler(disposition, credential);
}
}
- (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition disposition, NSURLCredential *credential))completionHandler {
if ([challenge.protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust] &&
[challenge.protectionSpace.host isEqualToString:@"localhost"]) {
[StatusDownloaderOperation URLSession:session task:task didReceiveChallenge:challenge completionHandler:completionHandler];
} else {
[super URLSession:session task:task didReceiveChallenge:challenge completionHandler:completionHandler];
}
}
@end
@implementation RCTHTTPRequestHandler (SelfSigned)
- (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition disposition, NSURLCredential *credential))completionHandler {
if ([challenge.protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust] &&
[challenge.protectionSpace.host isEqualToString:@"localhost"]) {
[StatusDownloaderOperation URLSession:session task:task didReceiveChallenge:challenge completionHandler:completionHandler];
} else {
if (completionHandler) {
completionHandler(NSURLSessionAuthChallengePerformDefaultHandling, [NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust]);
}
}
}
@end
+3
View File
@@ -13,4 +13,7 @@ module.exports = {
}, },
}), }),
}, },
resolver: {
extraNodeModules: require('node-libs-react-native'),
},
}; };
@@ -1011,6 +1011,25 @@ class StatusModule extends ReactContextBaseJavaModule implements LifecycleEventL
StatusThreadPoolExecutor.getInstance().execute(r); StatusThreadPoolExecutor.getInstance().execute(r);
} }
@ReactMethod
public void recover(final String rpcParams, final Callback callback) {
Log.d(TAG, "recover");
if (!checkAvailability()) {
callback.invoke(false);
return;
}
Runnable r = new Runnable() {
@Override
public void run() {
String res = Statusgo.recover(rpcParams);
callback.invoke(res);
}
};
StatusThreadPoolExecutor.getInstance().execute(r);
}
@ReactMethod @ReactMethod
public void signTypedData(final String data, final String account, final String password, final Callback callback) { public void signTypedData(final String data, final String account, final String password, final Callback callback) {
Log.d(TAG, "signTypedData"); Log.d(TAG, "signTypedData");
@@ -10,10 +10,16 @@ import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import statusgo.Statusgo;
public class StatusPackage implements ReactPackage { public class StatusPackage implements ReactPackage {
private boolean rootedDevice; private boolean rootedDevice;
public static String getImageTLSCert() {
return Statusgo.imageServerTLSCert();
}
public StatusPackage(boolean rootedDevice) { public StatusPackage(boolean rootedDevice) {
this.rootedDevice = rootedDevice; this.rootedDevice = rootedDevice;
} }
@@ -124,6 +124,11 @@ public class PushNotification extends ReactContextBaseJavaModule implements Acti
} }
} }
@ReactMethod
public void clearAllMessageNotifications() {
pushNotificationHelper.clearAllMessageNotifications();
}
@ReactMethod @ReactMethod
public void enableNotifications() { public void enableNotifications() {
this.started = true; this.started = true;
@@ -199,6 +199,10 @@ public class PushNotificationHelper {
cleanGroup(conversationId); cleanGroup(conversationId);
} }
public void clearAllMessageNotifications() {
notificationManager.cancelAll();
}
public void sendToNotificationCentreWithPicture(final Bundle bundle, Bitmap largeIconBitmap, Bitmap bigPictureBitmap) { public void sendToNotificationCentreWithPicture(final Bundle bundle, Bitmap largeIconBitmap, Bitmap bigPictureBitmap) {
try { try {
@@ -662,6 +662,18 @@ RCT_EXPORT_METHOD(signMessage:(NSString *)message
callback(@[result]); callback(@[result]);
} }
////////////////////////////////////////////////////////////////////
#pragma mark - Recover
//////////////////////////////////////////////////////////////////// recover
RCT_EXPORT_METHOD(recover:(NSString *)message
callback:(RCTResponseSenderBlock)callback) {
#if DEBUG
NSLog(@"Recover() method called");
#endif
NSString *result = StatusgoRecover(message);
callback(@[result]);
}
//////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////
#pragma mark - SignTypedData #pragma mark - SignTypedData
//////////////////////////////////////////////////////////////////// signTypedData //////////////////////////////////////////////////////////////////// signTypedData
+2992 -174
View File
File diff suppressed because it is too large Load Diff
+81
View File
@@ -60,6 +60,7 @@ androidx.savedstate:savedstate:1.0.0
androidx.slidingpanelayout:slidingpanelayout:1.0.0 androidx.slidingpanelayout:slidingpanelayout:1.0.0
androidx.swiperefreshlayout:swiperefreshlayout:1.0.0 androidx.swiperefreshlayout:swiperefreshlayout:1.0.0
androidx.swiperefreshlayout:swiperefreshlayout:1.1.0 androidx.swiperefreshlayout:swiperefreshlayout:1.1.0
androidx.test:monitor:1.2.0
androidx.test:monitor:1.3.0-rc03 androidx.test:monitor:1.3.0-rc03
androidx.transition:transition:1.2.0 androidx.transition:transition:1.2.0
androidx.transition:transition:1.2.0-rc01 androidx.transition:transition:1.2.0-rc01
@@ -71,6 +72,9 @@ androidx.versionedparcelable:versionedparcelable:1.0.0
androidx.versionedparcelable:versionedparcelable:1.1.0 androidx.versionedparcelable:versionedparcelable:1.1.0
androidx.viewpager2:viewpager2:1.0.0 androidx.viewpager2:viewpager2:1.0.0
androidx.viewpager:viewpager:1.0.0 androidx.viewpager:viewpager:1.0.0
androidx.webkit:webkit:1.4.0
backport-util-concurrent:backport-util-concurrent:3.1
classworlds:classworlds:1.1-alpha-2
commons-codec:commons-codec:1.4 commons-codec:commons-codec:1.4
commons-codec:commons-codec:1.6 commons-codec:commons-codec:1.6
commons-codec:commons-codec:1.9 commons-codec:commons-codec:1.9
@@ -350,14 +354,26 @@ com.github.wix-playground:reflow-animator:1.0.6
com.github.yalantis:ucrop:2.2.6-native com.github.yalantis:ucrop:2.2.6-native
com.googlecode.json-simple:json-simple:1.1 com.googlecode.json-simple:json-simple:1.1
com.googlecode.juniversalchardet:juniversalchardet:1.0.3 com.googlecode.juniversalchardet:juniversalchardet:1.0.3
com.google.android.apps.common.testing.accessibility.framework:accessibility-test-framework:2.1
com.google.android.datatransport:transport-api:2.2.1
com.google.android.datatransport:transport-api:3.0.0
com.google.android.datatransport:transport-backend-cct:2.3.3
com.google.android.datatransport:transport-backend-cct:3.0.0
com.google.android.datatransport:transport-runtime:2.2.5
com.google.android.datatransport:transport-runtime:3.0.0
com.google.android.gms:play-services-basement:17.0.0 com.google.android.gms:play-services-basement:17.0.0
com.google.android.gms:play-services-base:17.0.0 com.google.android.gms:play-services-base:17.0.0
com.google.android.gms:play-services-cloud-messaging:16.0.0
com.google.android.gms:play-services-cloud-messaging:17.0.0
com.google.android.gms:play-services-iid:17.0.0 com.google.android.gms:play-services-iid:17.0.0
com.google.android.gms:play-services-stats:17.0.0 com.google.android.gms:play-services-stats:17.0.0
com.google.android.gms:play-services-tasks:17.0.0 com.google.android.gms:play-services-tasks:17.0.0
com.google.android.gms:strict-version-matcher-plugin:1.2.2
com.google.android.material:material:1.2.0-alpha03 com.google.android.material:material:1.2.0-alpha03
com.google.auto.service:auto-service:1.0-rc4
com.google.auto.value:auto-value-annotations:1.6.2 com.google.auto.value:auto-value-annotations:1.6.2
com.google.auto.value:auto-value:1.5.2 com.google.auto.value:auto-value:1.5.2
com.google.auto:auto-common:0.8
com.google.code.findbugs:jsr305:1.3.9 com.google.code.findbugs:jsr305:1.3.9
com.google.code.findbugs:jsr305:3.0.2 com.google.code.findbugs:jsr305:3.0.2
com.google.code.gson:gson:2.2.4 com.google.code.gson:gson:2.2.4
@@ -370,6 +386,28 @@ com.google.errorprone:error_prone_annotations:2.0.18
com.google.errorprone:error_prone_annotations:2.1.2 com.google.errorprone:error_prone_annotations:2.1.2
com.google.errorprone:error_prone_annotations:2.2.0 com.google.errorprone:error_prone_annotations:2.2.0
com.google.errorprone:error_prone_annotations:2.3.1 com.google.errorprone:error_prone_annotations:2.3.1
com.google.firebase:firebase-annotations:16.0.0
com.google.firebase:firebase-common:19.5.0
com.google.firebase:firebase-common:20.0.0
com.google.firebase:firebase-components:16.1.0
com.google.firebase:firebase-components:17.0.0
com.google.firebase:firebase-datatransport:17.0.10
com.google.firebase:firebase-datatransport:18.0.0
com.google.firebase:firebase-encoders-json:17.1.0
com.google.firebase:firebase-encoders-json:18.0.0
com.google.firebase:firebase-encoders:16.1.0
com.google.firebase:firebase-encoders:17.0.0
com.google.firebase:firebase-iid-interop:17.1.0
com.google.firebase:firebase-iid:21.1.0
com.google.firebase:firebase-installations-interop:16.0.1
com.google.firebase:firebase-installations-interop:17.0.0
com.google.firebase:firebase-installations:16.3.5
com.google.firebase:firebase-installations:17.0.0
com.google.firebase:firebase-measurement-connector:18.0.0
com.google.firebase:firebase-measurement-connector:19.0.0
com.google.firebase:firebase-messaging:21.1.0
com.google.firebase:firebase-messaging:23.0.0
com.google.gms:google-services:4.3.10
com.google.guava:failureaccess:1.0.1 com.google.guava:failureaccess:1.0.1
com.google.guava:guava:17.0 com.google.guava:guava:17.0
com.google.guava:guava:22.0 com.google.guava:guava:22.0
@@ -380,6 +418,7 @@ com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava
com.google.j2objc:j2objc-annotations:1.1 com.google.j2objc:j2objc-annotations:1.1
com.google.jimfs:jimfs:1.1 com.google.jimfs:jimfs:1.1
com.google.protobuf:protobuf-java-util:3.4.0 com.google.protobuf:protobuf-java-util:3.4.0
com.google.protobuf:protobuf-java:2.6.1
com.google.protobuf:protobuf-java:3.0.0 com.google.protobuf:protobuf-java:3.0.0
com.google.protobuf:protobuf-java:3.4.0 com.google.protobuf:protobuf-java:3.4.0
com.google.zxing:core:3.3.0 com.google.zxing:core:3.3.0
@@ -389,6 +428,7 @@ com.nhaarman.mockitokotlin2:mockito-kotlin:2.2.0
com.parse.bolts:bolts-applinks:1.4.0 com.parse.bolts:bolts-applinks:1.4.0
com.parse.bolts:bolts-tasks:1.4.0 com.parse.bolts:bolts-tasks:1.4.0
com.squareup.assertj:assertj-android:1.1.1 com.squareup.assertj:assertj-android:1.1.1
com.squareup.okhttp3:okhttp-tls:3.12.12
com.squareup.okhttp3:okhttp-urlconnection:3.12.12 com.squareup.okhttp3:okhttp-urlconnection:3.12.12
com.squareup.okhttp3:okhttp:3.12.12 com.squareup.okhttp3:okhttp:3.12.12
com.squareup.okio:okio:1.15.0 com.squareup.okio:okio:1.15.0
@@ -408,6 +448,8 @@ javax.inject:javax.inject:1
javax.xml.bind:jaxb-api:2.2.12-b140109.1041 javax.xml.bind:jaxb-api:2.2.12-b140109.1041
junit:junit:4.12 junit:junit:4.12
me.zhanghai.android.materialprogressbar:library:1.4.2 me.zhanghai.android.materialprogressbar:library:1.4.2
nekohtml:nekohtml:1.9.6.2
nekohtml:xercesMinimal:1.9.6.2
net.bytebuddy:byte-buddy-agent:1.9.10 net.bytebuddy:byte-buddy-agent:1.9.10
net.bytebuddy:byte-buddy-agent:1.10.18 net.bytebuddy:byte-buddy-agent:1.10.18
net.bytebuddy:byte-buddy:1.9.10 net.bytebuddy:byte-buddy:1.9.10
@@ -428,6 +470,8 @@ org.antlr:antlr4-runtime:4.5.2-1
org.antlr:antlr4:4.5.3 org.antlr:antlr4:4.5.3
org.antlr:antlr-runtime:3.5.2 org.antlr:antlr-runtime:3.5.2
org.antlr:antlr:3.5.2 org.antlr:antlr:3.5.2
org.apache.ant:ant-launcher:1.8.0
org.apache.ant:ant:1.8.0
org.apache.commons:commons-compress:1.8.1 org.apache.commons:commons-compress:1.8.1
org.apache.commons:commons-compress:1.12 org.apache.commons:commons-compress:1.12
org.apache.commons:commons-lang3:3.3.2 org.apache.commons:commons-lang3:3.3.2
@@ -445,11 +489,26 @@ org.apache.httpcomponents:httpcore:4.4.10
org.apache.httpcomponents:httpmime:4.1 org.apache.httpcomponents:httpmime:4.1
org.apache.httpcomponents:httpmime:4.5.2 org.apache.httpcomponents:httpmime:4.5.2
org.apache.httpcomponents:httpmime:4.5.6 org.apache.httpcomponents:httpmime:4.5.6
org.apache.maven.wagon:wagon-file:1.0-beta-6
org.apache.maven.wagon:wagon-http-lightweight:1.0-beta-6
org.apache.maven.wagon:wagon-http-shared:1.0-beta-6
org.apache.maven.wagon:wagon-provider-api:1.0-beta-6
org.apache.maven:maven-ant-tasks:2.1.3
org.apache.maven:maven-artifact-manager:2.2.1
org.apache.maven:maven-artifact:2.2.1
org.apache.maven:maven-error-diagnostics:2.2.1
org.apache.maven:maven-model:2.2.1
org.apache.maven:maven-plugin-registry:2.2.1
org.apache.maven:maven-profile:2.2.1
org.apache.maven:maven-project:2.2.1
org.apache.maven:maven-repository-metadata:2.2.1
org.apache.maven:maven-settings:2.2.1
org.apiguardian:apiguardian-api:1.1.0 org.apiguardian:apiguardian-api:1.1.0
org.assertj:assertj-core:3.8.0 org.assertj:assertj-core:3.8.0
org.bouncycastle:bcpkix-jdk15on:1.48 org.bouncycastle:bcpkix-jdk15on:1.48
org.bouncycastle:bcpkix-jdk15on:1.56 org.bouncycastle:bcpkix-jdk15on:1.56
org.bouncycastle:bcprov-jdk15on:1.48 org.bouncycastle:bcprov-jdk15on:1.48
org.bouncycastle:bcprov-jdk15on:1.52
org.bouncycastle:bcprov-jdk15on:1.56 org.bouncycastle:bcprov-jdk15on:1.56
org.bouncycastle:bcprov-jdk15on:1.60 org.bouncycastle:bcprov-jdk15on:1.60
org.bouncycastle:bcprov-jdk15on:1.65 org.bouncycastle:bcprov-jdk15on:1.65
@@ -457,6 +516,9 @@ org.checkerframework:checker-qual:2.5.2
org.codehaus.groovy:groovy-all:2.4.15 org.codehaus.groovy:groovy-all:2.4.15
org.codehaus.mojo:animal-sniffer-annotations:1.14 org.codehaus.mojo:animal-sniffer-annotations:1.14
org.codehaus.mojo:animal-sniffer-annotations:1.17 org.codehaus.mojo:animal-sniffer-annotations:1.17
org.codehaus.plexus:plexus-container-default:1.0-alpha-9-stable-1
org.codehaus.plexus:plexus-interpolation:1.11
org.codehaus.plexus:plexus-utils:1.5.15
org.conscrypt:conscrypt-android:2.0.0 org.conscrypt:conscrypt-android:2.0.0
org.eclipse.jdt.core.compiler:ecj:4.4 org.eclipse.jdt.core.compiler:ecj:4.4
org.eclipse.jdt.core.compiler:ecj:4.4.2 org.eclipse.jdt.core.compiler:ecj:4.4.2
@@ -465,6 +527,7 @@ org.glassfish.jaxb:jaxb-core:2.2.11
org.glassfish.jaxb:jaxb-runtime:2.2.11 org.glassfish.jaxb:jaxb-runtime:2.2.11
org.glassfish.jaxb:txw2:2.2.11 org.glassfish.jaxb:txw2:2.2.11
org.hamcrest:hamcrest-core:1.3 org.hamcrest:hamcrest-core:1.3
org.hamcrest:hamcrest-library:1.3
org.jacoco:org.jacoco.core:0.7.4.201502262128 org.jacoco:org.jacoco.core:0.7.4.201502262128
org.jacoco:org.jacoco.report:0.7.4.201502262128 org.jacoco:org.jacoco.report:0.7.4.201502262128
org.jdom:jdom2:2.0.6 org.jdom:jdom2:2.0.6
@@ -518,10 +581,12 @@ org.jetbrains.kotlin:kotlin-stdlib-common:1.4.31
org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.2.71 org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.2.71
org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.20 org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.20
org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.50 org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.50
org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.4.10
org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.4.31 org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.4.31
org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.2.71 org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.2.71
org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.20 org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.20
org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.50 org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.50
org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.4.10
org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.4.31 org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.4.31
org.jetbrains.kotlin:kotlin-stdlib-jre7:1.2.0 org.jetbrains.kotlin:kotlin-stdlib-jre7:1.2.0
org.jetbrains.kotlin:kotlin-stdlib-jre8:1.2.0 org.jetbrains.kotlin:kotlin-stdlib-jre8:1.2.0
@@ -549,30 +614,46 @@ org.opentest4j:opentest4j:1.2.0
org.ow2.asm:asm-analysis:5.0.3 org.ow2.asm:asm-analysis:5.0.3
org.ow2.asm:asm-analysis:5.1 org.ow2.asm:asm-analysis:5.1
org.ow2.asm:asm-analysis:6.0 org.ow2.asm:asm-analysis:6.0
org.ow2.asm:asm-analysis:7.0
org.ow2.asm:asm-analysis:7.2 org.ow2.asm:asm-analysis:7.2
org.ow2.asm:asm-commons:5.1 org.ow2.asm:asm-commons:5.1
org.ow2.asm:asm-commons:6.0 org.ow2.asm:asm-commons:6.0
org.ow2.asm:asm-commons:7.0
org.ow2.asm:asm-commons:7.2 org.ow2.asm:asm-commons:7.2
org.ow2.asm:asm-debug-all:5.0.1 org.ow2.asm:asm-debug-all:5.0.1
org.ow2.asm:asm-tree:5.0.3 org.ow2.asm:asm-tree:5.0.3
org.ow2.asm:asm-tree:5.1 org.ow2.asm:asm-tree:5.1
org.ow2.asm:asm-tree:6.0 org.ow2.asm:asm-tree:6.0
org.ow2.asm:asm-tree:7.0
org.ow2.asm:asm-tree:7.2 org.ow2.asm:asm-tree:7.2
org.ow2.asm:asm-util:5.1 org.ow2.asm:asm-util:5.1
org.ow2.asm:asm-util:6.0 org.ow2.asm:asm-util:6.0
org.ow2.asm:asm-util:7.0
org.ow2.asm:asm-util:7.2 org.ow2.asm:asm-util:7.2
org.ow2.asm:asm:5.0.3 org.ow2.asm:asm:5.0.3
org.ow2.asm:asm:5.1 org.ow2.asm:asm:5.1
org.ow2.asm:asm:6.0 org.ow2.asm:asm:6.0
org.ow2.asm:asm:7.0
org.ow2.asm:asm:7.2 org.ow2.asm:asm:7.2
org.robolectric:annotations:4.3
org.robolectric:annotations:4.4 org.robolectric:annotations:4.4
org.robolectric:junit:4.3
org.robolectric:junit:4.4 org.robolectric:junit:4.4
org.robolectric:pluginapi:4.3
org.robolectric:pluginapi:4.4 org.robolectric:pluginapi:4.4
org.robolectric:plugins-maven-dependency-resolver:4.3
org.robolectric:plugins-maven-dependency-resolver:4.4 org.robolectric:plugins-maven-dependency-resolver:4.4
org.robolectric:resources:4.3
org.robolectric:resources:4.4 org.robolectric:resources:4.4
org.robolectric:robolectric:4.3
org.robolectric:robolectric:4.4 org.robolectric:robolectric:4.4
org.robolectric:sandbox:4.3
org.robolectric:sandbox:4.4 org.robolectric:sandbox:4.4
org.robolectric:shadowapi:4.3
org.robolectric:shadowapi:4.4 org.robolectric:shadowapi:4.4
org.robolectric:shadows-framework:4.3
org.robolectric:shadows-framework:4.4 org.robolectric:shadows-framework:4.4
org.robolectric:utils-reflector:4.3
org.robolectric:utils-reflector:4.4 org.robolectric:utils-reflector:4.4
org.robolectric:utils:4.3
org.robolectric:utils:4.4 org.robolectric:utils:4.4
+246 -25
View File
@@ -67,6 +67,7 @@ https://dl.google.com/dl/android/maven2/androidx/savedstate/savedstate/1.0.0/sav
https://dl.google.com/dl/android/maven2/androidx/slidingpanelayout/slidingpanelayout/1.0.0/slidingpanelayout-1.0.0.pom https://dl.google.com/dl/android/maven2/androidx/slidingpanelayout/slidingpanelayout/1.0.0/slidingpanelayout-1.0.0.pom
https://dl.google.com/dl/android/maven2/androidx/swiperefreshlayout/swiperefreshlayout/1.0.0/swiperefreshlayout-1.0.0.pom https://dl.google.com/dl/android/maven2/androidx/swiperefreshlayout/swiperefreshlayout/1.0.0/swiperefreshlayout-1.0.0.pom
https://dl.google.com/dl/android/maven2/androidx/swiperefreshlayout/swiperefreshlayout/1.1.0/swiperefreshlayout-1.1.0.pom https://dl.google.com/dl/android/maven2/androidx/swiperefreshlayout/swiperefreshlayout/1.1.0/swiperefreshlayout-1.1.0.pom
https://dl.google.com/dl/android/maven2/androidx/test/monitor/1.2.0/monitor-1.2.0.pom
https://dl.google.com/dl/android/maven2/androidx/test/monitor/1.3.0-rc03/monitor-1.3.0-rc03.pom https://dl.google.com/dl/android/maven2/androidx/test/monitor/1.3.0-rc03/monitor-1.3.0-rc03.pom
https://dl.google.com/dl/android/maven2/androidx/transition/transition/1.0.0/transition-1.0.0.pom https://dl.google.com/dl/android/maven2/androidx/transition/transition/1.0.0/transition-1.0.0.pom
https://dl.google.com/dl/android/maven2/androidx/transition/transition/1.2.0-rc01/transition-1.2.0-rc01.pom https://dl.google.com/dl/android/maven2/androidx/transition/transition/1.2.0-rc01/transition-1.2.0-rc01.pom
@@ -80,6 +81,7 @@ https://dl.google.com/dl/android/maven2/androidx/versionedparcelable/versionedpa
https://dl.google.com/dl/android/maven2/androidx/versionedparcelable/versionedparcelable/1.1.0/versionedparcelable-1.1.0.pom https://dl.google.com/dl/android/maven2/androidx/versionedparcelable/versionedparcelable/1.1.0/versionedparcelable-1.1.0.pom
https://dl.google.com/dl/android/maven2/androidx/viewpager2/viewpager2/1.0.0/viewpager2-1.0.0.pom https://dl.google.com/dl/android/maven2/androidx/viewpager2/viewpager2/1.0.0/viewpager2-1.0.0.pom
https://dl.google.com/dl/android/maven2/androidx/viewpager/viewpager/1.0.0/viewpager-1.0.0.pom https://dl.google.com/dl/android/maven2/androidx/viewpager/viewpager/1.0.0/viewpager-1.0.0.pom
https://dl.google.com/dl/android/maven2/androidx/webkit/webkit/1.4.0/webkit-1.4.0.pom
https://dl.google.com/dl/android/maven2/android/arch/core/common/1.0.0/common-1.0.0.pom https://dl.google.com/dl/android/maven2/android/arch/core/common/1.0.0/common-1.0.0.pom
https://dl.google.com/dl/android/maven2/android/arch/lifecycle/common/1.0.0/common-1.0.0.pom https://dl.google.com/dl/android/maven2/android/arch/lifecycle/common/1.0.0/common-1.0.0.pom
https://dl.google.com/dl/android/maven2/android/arch/lifecycle/runtime/1.0.0/runtime-1.0.0.pom https://dl.google.com/dl/android/maven2/android/arch/lifecycle/runtime/1.0.0/runtime-1.0.0.pom
@@ -102,6 +104,7 @@ https://dl.google.com/dl/android/maven2/com/android/support/support-annotations/
https://dl.google.com/dl/android/maven2/com/android/support/support-annotations/26.0.2/support-annotations-26.0.2.pom https://dl.google.com/dl/android/maven2/com/android/support/support-annotations/26.0.2/support-annotations-26.0.2.pom
https://dl.google.com/dl/android/maven2/com/android/support/support-annotations/26.1.0/support-annotations-26.1.0.pom https://dl.google.com/dl/android/maven2/com/android/support/support-annotations/26.1.0/support-annotations-26.1.0.pom
https://dl.google.com/dl/android/maven2/com/android/support/support-annotations/27.0.1/support-annotations-27.0.1.pom https://dl.google.com/dl/android/maven2/com/android/support/support-annotations/27.0.1/support-annotations-27.0.1.pom
https://dl.google.com/dl/android/maven2/com/android/support/support-annotations/28.0.0/support-annotations-28.0.0.pom
https://dl.google.com/dl/android/maven2/com/android/support/support-compat/26.0.2/support-compat-26.0.2.pom https://dl.google.com/dl/android/maven2/com/android/support/support-compat/26.0.2/support-compat-26.0.2.pom
https://dl.google.com/dl/android/maven2/com/android/support/support-compat/27.0.1/support-compat-27.0.1.pom https://dl.google.com/dl/android/maven2/com/android/support/support-compat/27.0.1/support-compat-27.0.1.pom
https://dl.google.com/dl/android/maven2/com/android/support/support-core-ui/26.0.2/support-core-ui-26.0.2.pom https://dl.google.com/dl/android/maven2/com/android/support/support-core-ui/26.0.2/support-core-ui-26.0.2.pom
@@ -265,22 +268,52 @@ https://dl.google.com/dl/android/maven2/com/android/tools/sdk-common/26.1.4/sdk-
https://dl.google.com/dl/android/maven2/com/android/tools/sdk-common/26.2.1/sdk-common-26.2.1.pom https://dl.google.com/dl/android/maven2/com/android/tools/sdk-common/26.2.1/sdk-common-26.2.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/sdk-common/26.3.1/sdk-common-26.3.1.pom https://dl.google.com/dl/android/maven2/com/android/tools/sdk-common/26.3.1/sdk-common-26.3.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/sdk-common/26.5.4/sdk-common-26.5.4.pom https://dl.google.com/dl/android/maven2/com/android/tools/sdk-common/26.5.4/sdk-common-26.5.4.pom
https://dl.google.com/dl/android/maven2/com/google/android/datatransport/transport-api/2.2.0/transport-api-2.2.0.pom
https://dl.google.com/dl/android/maven2/com/google/android/datatransport/transport-api/2.2.1/transport-api-2.2.1.pom
https://dl.google.com/dl/android/maven2/com/google/android/datatransport/transport-api/3.0.0/transport-api-3.0.0.pom
https://dl.google.com/dl/android/maven2/com/google/android/datatransport/transport-backend-cct/2.3.3/transport-backend-cct-2.3.3.pom
https://dl.google.com/dl/android/maven2/com/google/android/datatransport/transport-backend-cct/3.0.0/transport-backend-cct-3.0.0.pom
https://dl.google.com/dl/android/maven2/com/google/android/datatransport/transport-runtime/2.2.0/transport-runtime-2.2.0.pom
https://dl.google.com/dl/android/maven2/com/google/android/datatransport/transport-runtime/2.2.5/transport-runtime-2.2.5.pom
https://dl.google.com/dl/android/maven2/com/google/android/datatransport/transport-runtime/3.0.0/transport-runtime-3.0.0.pom
https://dl.google.com/dl/android/maven2/com/google/android/gms/play-services-basement/17.0.0/play-services-basement-17.0.0.pom https://dl.google.com/dl/android/maven2/com/google/android/gms/play-services-basement/17.0.0/play-services-basement-17.0.0.pom
https://dl.google.com/dl/android/maven2/com/google/android/gms/play-services-base/17.0.0/play-services-base-17.0.0.pom https://dl.google.com/dl/android/maven2/com/google/android/gms/play-services-base/17.0.0/play-services-base-17.0.0.pom
https://dl.google.com/dl/android/maven2/com/google/android/gms/play-services-cloud-messaging/16.0.0/play-services-cloud-messaging-16.0.0.pom
https://dl.google.com/dl/android/maven2/com/google/android/gms/play-services-cloud-messaging/17.0.0/play-services-cloud-messaging-17.0.0.pom
https://dl.google.com/dl/android/maven2/com/google/android/gms/play-services-iid/17.0.0/play-services-iid-17.0.0.pom https://dl.google.com/dl/android/maven2/com/google/android/gms/play-services-iid/17.0.0/play-services-iid-17.0.0.pom
https://dl.google.com/dl/android/maven2/com/google/android/gms/play-services-stats/17.0.0/play-services-stats-17.0.0.pom https://dl.google.com/dl/android/maven2/com/google/android/gms/play-services-stats/17.0.0/play-services-stats-17.0.0.pom
https://dl.google.com/dl/android/maven2/com/google/android/gms/play-services-tasks/17.0.0/play-services-tasks-17.0.0.pom https://dl.google.com/dl/android/maven2/com/google/android/gms/play-services-tasks/17.0.0/play-services-tasks-17.0.0.pom
https://dl.google.com/dl/android/maven2/com/google/android/gms/strict-version-matcher-plugin/1.2.2/strict-version-matcher-plugin-1.2.2.pom
https://dl.google.com/dl/android/maven2/com/google/android/material/material/1.0.0/material-1.0.0.pom https://dl.google.com/dl/android/maven2/com/google/android/material/material/1.0.0/material-1.0.0.pom
https://dl.google.com/dl/android/maven2/com/google/android/material/material/1.2.0-alpha03/material-1.2.0-alpha03.pom https://dl.google.com/dl/android/maven2/com/google/android/material/material/1.2.0-alpha03/material-1.2.0-alpha03.pom
https://dl.google.com/dl/android/maven2/com/google/firebase/firebase-annotations/16.0.0/firebase-annotations-16.0.0.pom
https://dl.google.com/dl/android/maven2/com/google/firebase/firebase-common/19.5.0/firebase-common-19.5.0.pom
https://dl.google.com/dl/android/maven2/com/google/firebase/firebase-common/20.0.0/firebase-common-20.0.0.pom
https://dl.google.com/dl/android/maven2/com/google/firebase/firebase-components/16.1.0/firebase-components-16.1.0.pom
https://dl.google.com/dl/android/maven2/com/google/firebase/firebase-components/17.0.0/firebase-components-17.0.0.pom
https://dl.google.com/dl/android/maven2/com/google/firebase/firebase-datatransport/17.0.10/firebase-datatransport-17.0.10.pom
https://dl.google.com/dl/android/maven2/com/google/firebase/firebase-datatransport/18.0.0/firebase-datatransport-18.0.0.pom
https://dl.google.com/dl/android/maven2/com/google/firebase/firebase-encoders-json/17.1.0/firebase-encoders-json-17.1.0.pom
https://dl.google.com/dl/android/maven2/com/google/firebase/firebase-encoders-json/18.0.0/firebase-encoders-json-18.0.0.pom
https://dl.google.com/dl/android/maven2/com/google/firebase/firebase-encoders/16.1.0/firebase-encoders-16.1.0.pom
https://dl.google.com/dl/android/maven2/com/google/firebase/firebase-encoders/17.0.0/firebase-encoders-17.0.0.pom
https://dl.google.com/dl/android/maven2/com/google/firebase/firebase-iid-interop/17.1.0/firebase-iid-interop-17.1.0.pom
https://dl.google.com/dl/android/maven2/com/google/firebase/firebase-iid/21.1.0/firebase-iid-21.1.0.pom
https://dl.google.com/dl/android/maven2/com/google/firebase/firebase-installations-interop/16.0.1/firebase-installations-interop-16.0.1.pom
https://dl.google.com/dl/android/maven2/com/google/firebase/firebase-installations-interop/17.0.0/firebase-installations-interop-17.0.0.pom
https://dl.google.com/dl/android/maven2/com/google/firebase/firebase-installations/16.3.5/firebase-installations-16.3.5.pom
https://dl.google.com/dl/android/maven2/com/google/firebase/firebase-installations/17.0.0/firebase-installations-17.0.0.pom
https://dl.google.com/dl/android/maven2/com/google/firebase/firebase-measurement-connector/18.0.0/firebase-measurement-connector-18.0.0.pom
https://dl.google.com/dl/android/maven2/com/google/firebase/firebase-measurement-connector/19.0.0/firebase-measurement-connector-19.0.0.pom
https://dl.google.com/dl/android/maven2/com/google/firebase/firebase-messaging/21.1.0/firebase-messaging-21.1.0.pom
https://dl.google.com/dl/android/maven2/com/google/firebase/firebase-messaging/23.0.0/firebase-messaging-23.0.0.pom
https://dl.google.com/dl/android/maven2/com/google/gms/google-services/4.3.10/google-services-4.3.10.pom
https://jitpack.io/com/github/status-im/function/0.0.1/function-0.0.1.pom https://jitpack.io/com/github/status-im/function/0.0.1/function-0.0.1.pom
https://jitpack.io/com/github/status-im/status-keycard-java/android/3.0.4/android-3.0.4.pom https://jitpack.io/com/github/status-im/status-keycard-java/android/3.0.4/android-3.0.4.pom
https://jitpack.io/com/github/status-im/status-keycard-java/lib/3.0.4/lib-3.0.4.pom https://jitpack.io/com/github/status-im/status-keycard-java/lib/3.0.4/lib-3.0.4.pom
https://jitpack.io/com/github/wix-playground/ahbottomnavigation/3.3.0/ahbottomnavigation-3.3.0.pom https://jitpack.io/com/github/wix-playground/ahbottomnavigation/3.3.0/ahbottomnavigation-3.3.0.pom
https://jitpack.io/com/github/wix-playground/reflow-animator/1.0.6/reflow-animator-1.0.6.pom https://jitpack.io/com/github/wix-playground/reflow-animator/1.0.6/reflow-animator-1.0.6.pom
https://jitpack.io/com/github/yalantis/ucrop/2.2.6-native/ucrop-2.2.6-native.pom https://jitpack.io/com/github/yalantis/ucrop/2.2.6-native/ucrop-2.2.6-native.pom
https://plugins.gradle.org/m2/com/facebook/fbjni/fbjni-java-only/0.0.3/fbjni-java-only-0.0.3.pom
https://plugins.gradle.org/m2/com/facebook/flipper/flipper-fresco-plugin/0.54.0/flipper-fresco-plugin-0.54.0.pom
https://plugins.gradle.org/m2/com/facebook/flipper/flipper/0.54.0/flipper-0.54.0.pom
https://plugins.gradle.org/m2/com/facebook/fresco/drawee/2.2.0/drawee-2.2.0.pom https://plugins.gradle.org/m2/com/facebook/fresco/drawee/2.2.0/drawee-2.2.0.pom
https://plugins.gradle.org/m2/com/facebook/fresco/fbcore/2.2.0/fbcore-2.2.0.pom https://plugins.gradle.org/m2/com/facebook/fresco/fbcore/2.2.0/fbcore-2.2.0.pom
https://plugins.gradle.org/m2/com/facebook/fresco/fresco/2.2.0/fresco-2.2.0.pom https://plugins.gradle.org/m2/com/facebook/fresco/fresco/2.2.0/fresco-2.2.0.pom
@@ -290,15 +323,22 @@ https://plugins.gradle.org/m2/com/facebook/fresco/memory-type-java/2.2.0/memory-
https://plugins.gradle.org/m2/com/facebook/fresco/memory-type-native/2.2.0/memory-type-native-2.2.0.pom https://plugins.gradle.org/m2/com/facebook/fresco/memory-type-native/2.2.0/memory-type-native-2.2.0.pom
https://plugins.gradle.org/m2/com/facebook/fresco/nativeimagefilters/2.2.0/nativeimagefilters-2.2.0.pom https://plugins.gradle.org/m2/com/facebook/fresco/nativeimagefilters/2.2.0/nativeimagefilters-2.2.0.pom
https://plugins.gradle.org/m2/com/facebook/fresco/stetho/2.2.0/stetho-2.2.0.pom https://plugins.gradle.org/m2/com/facebook/fresco/stetho/2.2.0/stetho-2.2.0.pom
https://plugins.gradle.org/m2/com/facebook/yoga/proguard-annotations/1.14.1/proguard-annotations-1.14.1.pom
https://repo.maven.apache.org/maven2/antlr/antlr/2.7.7/antlr-2.7.7.pom https://repo.maven.apache.org/maven2/antlr/antlr/2.7.7/antlr-2.7.7.pom
https://repo.maven.apache.org/maven2/aopalliance/aopalliance/1.0/aopalliance-1.0.pom
https://repo.maven.apache.org/maven2/backport-util-concurrent/backport-util-concurrent/3.1/backport-util-concurrent-3.1.pom
https://repo.maven.apache.org/maven2/classworlds/classworlds/1.1-alpha-2/classworlds-1.1-alpha-2.pom
https://repo.maven.apache.org/maven2/commons-cli/commons-cli/1.2/commons-cli-1.2.pom https://repo.maven.apache.org/maven2/commons-cli/commons-cli/1.2/commons-cli-1.2.pom
https://repo.maven.apache.org/maven2/commons-codec/commons-codec/1.2/commons-codec-1.2.pom
https://repo.maven.apache.org/maven2/commons-codec/commons-codec/1.4/commons-codec-1.4.pom https://repo.maven.apache.org/maven2/commons-codec/commons-codec/1.4/commons-codec-1.4.pom
https://repo.maven.apache.org/maven2/commons-codec/commons-codec/1.6/commons-codec-1.6.pom https://repo.maven.apache.org/maven2/commons-codec/commons-codec/1.6/commons-codec-1.6.pom
https://repo.maven.apache.org/maven2/commons-codec/commons-codec/1.9/commons-codec-1.9.pom https://repo.maven.apache.org/maven2/commons-codec/commons-codec/1.9/commons-codec-1.9.pom
https://repo.maven.apache.org/maven2/commons-codec/commons-codec/1.10/commons-codec-1.10.pom https://repo.maven.apache.org/maven2/commons-codec/commons-codec/1.10/commons-codec-1.10.pom
https://repo.maven.apache.org/maven2/commons-codec/commons-codec/1.15/commons-codec-1.15.pom https://repo.maven.apache.org/maven2/commons-codec/commons-codec/1.15/commons-codec-1.15.pom
https://repo.maven.apache.org/maven2/commons-httpclient/commons-httpclient/3.1/commons-httpclient-3.1.pom
https://repo.maven.apache.org/maven2/commons-io/commons-io/2.4/commons-io-2.4.pom https://repo.maven.apache.org/maven2/commons-io/commons-io/2.4/commons-io-2.4.pom
https://repo.maven.apache.org/maven2/commons-io/commons-io/2.6/commons-io-2.6.pom
https://repo.maven.apache.org/maven2/commons-io/commons-io/2.11.0/commons-io-2.11.0.pom
https://repo.maven.apache.org/maven2/commons-logging/commons-logging/1.0.4/commons-logging-1.0.4.pom
https://repo.maven.apache.org/maven2/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.pom https://repo.maven.apache.org/maven2/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.pom
https://repo.maven.apache.org/maven2/commons-logging/commons-logging/1.2/commons-logging-1.2.pom https://repo.maven.apache.org/maven2/commons-logging/commons-logging/1.2/commons-logging-1.2.pom
https://repo.maven.apache.org/maven2/com/adobe/xmp/xmpcore/5.1.2/xmpcore-5.1.2.pom https://repo.maven.apache.org/maven2/com/adobe/xmp/xmpcore/5.1.2/xmpcore-5.1.2.pom
@@ -362,7 +402,10 @@ https://repo.maven.apache.org/maven2/com/android/tools/sdk-common/24.3.1/sdk-com
https://repo.maven.apache.org/maven2/com/android/tools/sdk-common/24.5.0/sdk-common-24.5.0.pom https://repo.maven.apache.org/maven2/com/android/tools/sdk-common/24.5.0/sdk-common-24.5.0.pom
https://repo.maven.apache.org/maven2/com/drewnoakes/metadata-extractor/2.9.1/metadata-extractor-2.9.1.pom https://repo.maven.apache.org/maven2/com/drewnoakes/metadata-extractor/2.9.1/metadata-extractor-2.9.1.pom
https://repo.maven.apache.org/maven2/com/facebook/conceal/conceal/1.1.3/conceal-1.1.3.pom https://repo.maven.apache.org/maven2/com/facebook/conceal/conceal/1.1.3/conceal-1.1.3.pom
https://repo.maven.apache.org/maven2/com/facebook/fbjni/fbjni-java-only/0.0.3/fbjni-java-only-0.0.3.pom
https://repo.maven.apache.org/maven2/com/facebook/fbjni/fbjni/0.0.2/fbjni-0.0.2.pom https://repo.maven.apache.org/maven2/com/facebook/fbjni/fbjni/0.0.2/fbjni-0.0.2.pom
https://repo.maven.apache.org/maven2/com/facebook/flipper/flipper-fresco-plugin/0.54.0/flipper-fresco-plugin-0.54.0.pom
https://repo.maven.apache.org/maven2/com/facebook/flipper/flipper/0.54.0/flipper-0.54.0.pom
https://repo.maven.apache.org/maven2/com/facebook/fresco/animated-base/2.2.0/animated-base-2.2.0.pom https://repo.maven.apache.org/maven2/com/facebook/fresco/animated-base/2.2.0/animated-base-2.2.0.pom
https://repo.maven.apache.org/maven2/com/facebook/fresco/animated-drawable/2.2.0/animated-drawable-2.2.0.pom https://repo.maven.apache.org/maven2/com/facebook/fresco/animated-drawable/2.2.0/animated-drawable-2.2.0.pom
https://repo.maven.apache.org/maven2/com/facebook/fresco/animated-gif/2.2.0/animated-gif-2.2.0.pom https://repo.maven.apache.org/maven2/com/facebook/fresco/animated-gif/2.2.0/animated-gif-2.2.0.pom
@@ -390,6 +433,7 @@ https://repo.maven.apache.org/maven2/com/facebook/soloader/soloader/0.6.0/soload
https://repo.maven.apache.org/maven2/com/facebook/soloader/soloader/0.8.2/soloader-0.8.2.pom https://repo.maven.apache.org/maven2/com/facebook/soloader/soloader/0.8.2/soloader-0.8.2.pom
https://repo.maven.apache.org/maven2/com/facebook/soloader/soloader/0.9.0/soloader-0.9.0.pom https://repo.maven.apache.org/maven2/com/facebook/soloader/soloader/0.9.0/soloader-0.9.0.pom
https://repo.maven.apache.org/maven2/com/facebook/stetho/stetho/1.3.1/stetho-1.3.1.pom https://repo.maven.apache.org/maven2/com/facebook/stetho/stetho/1.3.1/stetho-1.3.1.pom
https://repo.maven.apache.org/maven2/com/facebook/yoga/proguard-annotations/1.14.1/proguard-annotations-1.14.1.pom
https://repo.maven.apache.org/maven2/com/github/bumptech/glide/annotations/4.12.0/annotations-4.12.0.pom https://repo.maven.apache.org/maven2/com/github/bumptech/glide/annotations/4.12.0/annotations-4.12.0.pom
https://repo.maven.apache.org/maven2/com/github/bumptech/glide/compiler/4.12.0/compiler-4.12.0.pom https://repo.maven.apache.org/maven2/com/github/bumptech/glide/compiler/4.12.0/compiler-4.12.0.pom
https://repo.maven.apache.org/maven2/com/github/bumptech/glide/disklrucache/4.12.0/disklrucache-4.12.0.pom https://repo.maven.apache.org/maven2/com/github/bumptech/glide/disklrucache/4.12.0/disklrucache-4.12.0.pom
@@ -400,12 +444,16 @@ https://repo.maven.apache.org/maven2/com/github/clans/fab/1.6.4/fab-1.6.4.pom
https://repo.maven.apache.org/maven2/com/github/gundy/semver4j/0.16.4/semver4j-0.16.4.pom https://repo.maven.apache.org/maven2/com/github/gundy/semver4j/0.16.4/semver4j-0.16.4.pom
https://repo.maven.apache.org/maven2/com/googlecode/json-simple/json-simple/1.1/json-simple-1.1.pom https://repo.maven.apache.org/maven2/com/googlecode/json-simple/json-simple/1.1/json-simple-1.1.pom
https://repo.maven.apache.org/maven2/com/googlecode/juniversalchardet/juniversalchardet/1.0.3/juniversalchardet-1.0.3.pom https://repo.maven.apache.org/maven2/com/googlecode/juniversalchardet/juniversalchardet/1.0.3/juniversalchardet-1.0.3.pom
https://repo.maven.apache.org/maven2/com/google/android/apps/common/testing/accessibility/framework/accessibility-test-framework/2.1/accessibility-test-framework-2.1.pom
https://repo.maven.apache.org/maven2/com/google/auto/auto-common/0.8/auto-common-0.8.pom
https://repo.maven.apache.org/maven2/com/google/auto/auto-parent/3/auto-parent-3.pom https://repo.maven.apache.org/maven2/com/google/auto/auto-parent/3/auto-parent-3.pom
https://repo.maven.apache.org/maven2/com/google/auto/auto-parent/5/auto-parent-5.pom
https://repo.maven.apache.org/maven2/com/google/auto/auto-parent/6/auto-parent-6.pom https://repo.maven.apache.org/maven2/com/google/auto/auto-parent/6/auto-parent-6.pom
https://repo.maven.apache.org/maven2/com/google/auto/service/auto-service/1.0-rc4/auto-service-1.0-rc4.pom
https://repo.maven.apache.org/maven2/com/google/auto/value/auto-value-annotations/1.6.2/auto-value-annotations-1.6.2.pom https://repo.maven.apache.org/maven2/com/google/auto/value/auto-value-annotations/1.6.2/auto-value-annotations-1.6.2.pom
https://repo.maven.apache.org/maven2/com/google/auto/value/auto-value-annotations/1.8.2/auto-value-annotations-1.8.2.pom https://repo.maven.apache.org/maven2/com/google/auto/value/auto-value-annotations/1.9/auto-value-annotations-1.9.pom
https://repo.maven.apache.org/maven2/com/google/auto/value/auto-value-parent/1.6.2/auto-value-parent-1.6.2.pom https://repo.maven.apache.org/maven2/com/google/auto/value/auto-value-parent/1.6.2/auto-value-parent-1.6.2.pom
https://repo.maven.apache.org/maven2/com/google/auto/value/auto-value-parent/1.8.2/auto-value-parent-1.8.2.pom https://repo.maven.apache.org/maven2/com/google/auto/value/auto-value-parent/1.9/auto-value-parent-1.9.pom
https://repo.maven.apache.org/maven2/com/google/auto/value/auto-value/1.5.2/auto-value-1.5.2.pom https://repo.maven.apache.org/maven2/com/google/auto/value/auto-value/1.5.2/auto-value-1.5.2.pom
https://repo.maven.apache.org/maven2/com/google/code/findbugs/jsr305/1.3.9/jsr305-1.3.9.pom https://repo.maven.apache.org/maven2/com/google/code/findbugs/jsr305/1.3.9/jsr305-1.3.9.pom
https://repo.maven.apache.org/maven2/com/google/code/findbugs/jsr305/2.0.1/jsr305-2.0.1.pom https://repo.maven.apache.org/maven2/com/google/code/findbugs/jsr305/2.0.1/jsr305-2.0.1.pom
@@ -421,17 +469,19 @@ https://repo.maven.apache.org/maven2/com/google/code/gson/gson/2.7/gson-2.7.pom
https://repo.maven.apache.org/maven2/com/google/code/gson/gson/2.8.0/gson-2.8.0.pom https://repo.maven.apache.org/maven2/com/google/code/gson/gson/2.8.0/gson-2.8.0.pom
https://repo.maven.apache.org/maven2/com/google/code/gson/gson/2.8.5/gson-2.8.5.pom https://repo.maven.apache.org/maven2/com/google/code/gson/gson/2.8.5/gson-2.8.5.pom
https://repo.maven.apache.org/maven2/com/google/code/gson/gson/2.8.6/gson-2.8.6.pom https://repo.maven.apache.org/maven2/com/google/code/gson/gson/2.8.6/gson-2.8.6.pom
https://repo.maven.apache.org/maven2/com/google/dagger/dagger/2.24/dagger-2.24.pom
https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_annotations/2.0.18/error_prone_annotations-2.0.18.pom https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_annotations/2.0.18/error_prone_annotations-2.0.18.pom
https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_annotations/2.1.2/error_prone_annotations-2.1.2.pom https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_annotations/2.1.2/error_prone_annotations-2.1.2.pom
https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_annotations/2.2.0/error_prone_annotations-2.2.0.pom https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_annotations/2.2.0/error_prone_annotations-2.2.0.pom
https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_annotations/2.3.1/error_prone_annotations-2.3.1.pom https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_annotations/2.3.1/error_prone_annotations-2.3.1.pom
https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_annotations/2.10.0/error_prone_annotations-2.10.0.pom https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_annotations/2.11.0/error_prone_annotations-2.11.0.pom
https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_parent/2.0.18/error_prone_parent-2.0.18.pom https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_parent/2.0.18/error_prone_parent-2.0.18.pom
https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_parent/2.1.2/error_prone_parent-2.1.2.pom https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_parent/2.1.2/error_prone_parent-2.1.2.pom
https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_parent/2.2.0/error_prone_parent-2.2.0.pom https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_parent/2.2.0/error_prone_parent-2.2.0.pom
https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_parent/2.3.1/error_prone_parent-2.3.1.pom https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_parent/2.3.1/error_prone_parent-2.3.1.pom
https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_parent/2.10.0/error_prone_parent-2.10.0.pom https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_parent/2.11.0/error_prone_parent-2.11.0.pom
https://repo.maven.apache.org/maven2/com/google/google/1/google-1.pom https://repo.maven.apache.org/maven2/com/google/google/1/google-1.pom
https://repo.maven.apache.org/maven2/com/google/google/5/google-5.pom
https://repo.maven.apache.org/maven2/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.pom https://repo.maven.apache.org/maven2/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.pom
https://repo.maven.apache.org/maven2/com/google/guava/guava-parent/17.0/guava-parent-17.0.pom https://repo.maven.apache.org/maven2/com/google/guava/guava-parent/17.0/guava-parent-17.0.pom
https://repo.maven.apache.org/maven2/com/google/guava/guava-parent/22.0/guava-parent-22.0.pom https://repo.maven.apache.org/maven2/com/google/guava/guava-parent/22.0/guava-parent-22.0.pom
@@ -448,12 +498,15 @@ https://repo.maven.apache.org/maven2/com/google/guava/guava/26.0-jre/guava-26.0-
https://repo.maven.apache.org/maven2/com/google/guava/guava/27.0.1-jre/guava-27.0.1-jre.pom https://repo.maven.apache.org/maven2/com/google/guava/guava/27.0.1-jre/guava-27.0.1-jre.pom
https://repo.maven.apache.org/maven2/com/google/guava/guava/31.0.1-jre/guava-31.0.1-jre.pom https://repo.maven.apache.org/maven2/com/google/guava/guava/31.0.1-jre/guava-31.0.1-jre.pom
https://repo.maven.apache.org/maven2/com/google/guava/listenablefuture/9999.0-empty-to-avoid-conflict-with-guava/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.pom https://repo.maven.apache.org/maven2/com/google/guava/listenablefuture/9999.0-empty-to-avoid-conflict-with-guava/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.pom
https://repo.maven.apache.org/maven2/com/google/inject/guice-parent/5.1.0/guice-parent-5.1.0.pom
https://repo.maven.apache.org/maven2/com/google/inject/guice/5.1.0/guice-5.1.0.pom
https://repo.maven.apache.org/maven2/com/google/j2objc/j2objc-annotations/1.1/j2objc-annotations-1.1.pom https://repo.maven.apache.org/maven2/com/google/j2objc/j2objc-annotations/1.1/j2objc-annotations-1.1.pom
https://repo.maven.apache.org/maven2/com/google/j2objc/j2objc-annotations/1.3/j2objc-annotations-1.3.pom https://repo.maven.apache.org/maven2/com/google/j2objc/j2objc-annotations/1.3/j2objc-annotations-1.3.pom
https://repo.maven.apache.org/maven2/com/google/jimfs/jimfs-parent/1.1/jimfs-parent-1.1.pom https://repo.maven.apache.org/maven2/com/google/jimfs/jimfs-parent/1.1/jimfs-parent-1.1.pom
https://repo.maven.apache.org/maven2/com/google/jimfs/jimfs/1.1/jimfs-1.1.pom https://repo.maven.apache.org/maven2/com/google/jimfs/jimfs/1.1/jimfs-1.1.pom
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-bom/4.0.0-rc-2/protobuf-bom-4.0.0-rc-2.pom https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-bom/4.0.0-rc-2/protobuf-bom-4.0.0-rc-2.pom
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-java-util/3.4.0/protobuf-java-util-3.4.0.pom https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-java-util/3.4.0/protobuf-java-util-3.4.0.pom
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-java/2.6.1/protobuf-java-2.6.1.pom
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-java/3.0.0/protobuf-java-3.0.0.pom https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-java/3.0.0/protobuf-java-3.0.0.pom
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-java/3.4.0/protobuf-java-3.4.0.pom https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-java/3.4.0/protobuf-java-3.4.0.pom
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-java/4.0.0-rc-2/protobuf-java-4.0.0-rc-2.pom https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-java/4.0.0-rc-2/protobuf-java-4.0.0-rc-2.pom
@@ -472,17 +525,17 @@ https://repo.maven.apache.org/maven2/com/parse/bolts/bolts-tasks/1.4.0/bolts-tas
https://repo.maven.apache.org/maven2/com/squareup/assertj/assertj-android/1.1.1/assertj-android-1.1.1.pom https://repo.maven.apache.org/maven2/com/squareup/assertj/assertj-android/1.1.1/assertj-android-1.1.1.pom
https://repo.maven.apache.org/maven2/com/squareup/javapoet/1.8.0/javapoet-1.8.0.pom https://repo.maven.apache.org/maven2/com/squareup/javapoet/1.8.0/javapoet-1.8.0.pom
https://repo.maven.apache.org/maven2/com/squareup/javawriter/2.5.0/javawriter-2.5.0.pom https://repo.maven.apache.org/maven2/com/squareup/javawriter/2.5.0/javawriter-2.5.0.pom
https://repo.maven.apache.org/maven2/com/squareup/okhttp3/okhttp-tls/3.12.12/okhttp-tls-3.12.12.pom
https://repo.maven.apache.org/maven2/com/squareup/okhttp3/okhttp-urlconnection/3.12.12/okhttp-urlconnection-3.12.12.pom https://repo.maven.apache.org/maven2/com/squareup/okhttp3/okhttp-urlconnection/3.12.12/okhttp-urlconnection-3.12.12.pom
https://repo.maven.apache.org/maven2/com/squareup/okhttp3/okhttp/3.9.1/okhttp-3.9.1.pom https://repo.maven.apache.org/maven2/com/squareup/okhttp3/okhttp/3.9.1/okhttp-3.9.1.pom
https://repo.maven.apache.org/maven2/com/squareup/okhttp3/okhttp/3.12.1/okhttp-3.12.1.pom https://repo.maven.apache.org/maven2/com/squareup/okhttp3/okhttp/3.12.1/okhttp-3.12.1.pom
https://repo.maven.apache.org/maven2/com/squareup/okhttp3/okhttp/3.12.12/okhttp-3.12.12.pom https://repo.maven.apache.org/maven2/com/squareup/okhttp3/okhttp/3.12.12/okhttp-3.12.12.pom
https://repo.maven.apache.org/maven2/com/squareup/okhttp3/okhttp/5.0.0-alpha.2/okhttp-5.0.0-alpha.2.pom https://repo.maven.apache.org/maven2/com/squareup/okhttp3/okhttp/5.0.0-alpha.5/okhttp-5.0.0-alpha.5.pom
https://repo.maven.apache.org/maven2/com/squareup/okhttp3/parent/3.9.1/parent-3.9.1.pom https://repo.maven.apache.org/maven2/com/squareup/okhttp3/parent/3.9.1/parent-3.9.1.pom
https://repo.maven.apache.org/maven2/com/squareup/okhttp3/parent/3.12.1/parent-3.12.1.pom https://repo.maven.apache.org/maven2/com/squareup/okhttp3/parent/3.12.1/parent-3.12.1.pom
https://repo.maven.apache.org/maven2/com/squareup/okhttp3/parent/3.12.12/parent-3.12.12.pom https://repo.maven.apache.org/maven2/com/squareup/okhttp3/parent/3.12.12/parent-3.12.12.pom
https://repo.maven.apache.org/maven2/com/squareup/okio/okio-parent/1.15.0/okio-parent-1.15.0.pom https://repo.maven.apache.org/maven2/com/squareup/okio/okio-parent/1.15.0/okio-parent-1.15.0.pom
https://repo.maven.apache.org/maven2/com/squareup/okio/okio/1.15.0/okio-1.15.0.pom https://repo.maven.apache.org/maven2/com/squareup/okio/okio/1.15.0/okio-1.15.0.pom
https://repo.maven.apache.org/maven2/com/squareup/okio/okio/2.9.0/okio-2.9.0.pom
https://repo.maven.apache.org/maven2/com/squareup/okio/okio/3.0.0/okio-3.0.0.pom https://repo.maven.apache.org/maven2/com/squareup/okio/okio/3.0.0/okio-3.0.0.pom
https://repo.maven.apache.org/maven2/com/sun/activation/all/1.2.0/all-1.2.0.pom https://repo.maven.apache.org/maven2/com/sun/activation/all/1.2.0/all-1.2.0.pom
https://repo.maven.apache.org/maven2/com/sun/activation/all/2.0.1/all-2.0.1.pom https://repo.maven.apache.org/maven2/com/sun/activation/all/2.0.1/all-2.0.1.pom
@@ -513,20 +566,28 @@ https://repo.maven.apache.org/maven2/com/tunnelvisionlabs/antlr4/4.5/antlr4-4.5.
https://repo.maven.apache.org/maven2/de/undercouch/gradle-download-task/3.4.3/gradle-download-task-3.4.3.pom https://repo.maven.apache.org/maven2/de/undercouch/gradle-download-task/3.4.3/gradle-download-task-3.4.3.pom
https://repo.maven.apache.org/maven2/de/undercouch/gradle-download-task/4.0.2/gradle-download-task-4.0.2.pom https://repo.maven.apache.org/maven2/de/undercouch/gradle-download-task/4.0.2/gradle-download-task-4.0.2.pom
https://repo.maven.apache.org/maven2/it/unimi/dsi/fastutil/7.2.0/fastutil-7.2.0.pom https://repo.maven.apache.org/maven2/it/unimi/dsi/fastutil/7.2.0/fastutil-7.2.0.pom
https://repo.maven.apache.org/maven2/jakarta/activation/jakarta.activation-api/2.1.0-RC1/jakarta.activation-api-2.1.0-RC1.pom https://repo.maven.apache.org/maven2/jakarta/activation/jakarta.activation-api/2.1.0/jakarta.activation-api-2.1.0.pom
https://repo.maven.apache.org/maven2/jakarta/xml/bind/jakarta.xml.bind-api-parent/4.0.0-RC2/jakarta.xml.bind-api-parent-4.0.0-RC2.pom https://repo.maven.apache.org/maven2/jakarta/xml/bind/jakarta.xml.bind-api-parent/4.0.0-RC3/jakarta.xml.bind-api-parent-4.0.0-RC3.pom
https://repo.maven.apache.org/maven2/jakarta/xml/bind/jakarta.xml.bind-api/4.0.0-RC2/jakarta.xml.bind-api-4.0.0-RC2.pom https://repo.maven.apache.org/maven2/jakarta/xml/bind/jakarta.xml.bind-api/4.0.0-RC3/jakarta.xml.bind-api-4.0.0-RC3.pom
https://repo.maven.apache.org/maven2/javax/activation/activation/1.1/activation-1.1.pom https://repo.maven.apache.org/maven2/javax/activation/activation/1.1/activation-1.1.pom
https://repo.maven.apache.org/maven2/javax/activation/javax.activation-api/1.2.0/javax.activation-api-1.2.0.pom https://repo.maven.apache.org/maven2/javax/activation/javax.activation-api/1.2.0/javax.activation-api-1.2.0.pom
https://repo.maven.apache.org/maven2/javax/annotation/javax.annotation-api/1.2/javax.annotation-api-1.2.pom
https://repo.maven.apache.org/maven2/javax/annotation/javax.annotation-api/1.3.2/javax.annotation-api-1.3.2.pom https://repo.maven.apache.org/maven2/javax/annotation/javax.annotation-api/1.3.2/javax.annotation-api-1.3.2.pom
https://repo.maven.apache.org/maven2/javax/el/javax.el-api/3.0.1-b06/javax.el-api-3.0.1-b06.pom
https://repo.maven.apache.org/maven2/javax/enterprise/cdi-api/1.2/cdi-api-1.2.pom
https://repo.maven.apache.org/maven2/javax/enterprise/cdi-api/2.0-PFD2/cdi-api-2.0-PFD2.pom
https://repo.maven.apache.org/maven2/javax/inject/javax.inject/1/javax.inject-1.pom https://repo.maven.apache.org/maven2/javax/inject/javax.inject/1/javax.inject-1.pom
https://repo.maven.apache.org/maven2/javax/interceptor/javax.interceptor-api/1.2.2/javax.interceptor-api-1.2.2.pom
https://repo.maven.apache.org/maven2/javax/xml/bind/jaxb-api-parent/2.4.0-b180830.0359/jaxb-api-parent-2.4.0-b180830.0359.pom https://repo.maven.apache.org/maven2/javax/xml/bind/jaxb-api-parent/2.4.0-b180830.0359/jaxb-api-parent-2.4.0-b180830.0359.pom
https://repo.maven.apache.org/maven2/javax/xml/bind/jaxb-api/2.2.12-b140109.1041/jaxb-api-2.2.12-b140109.1041.pom https://repo.maven.apache.org/maven2/javax/xml/bind/jaxb-api/2.2.12-b140109.1041/jaxb-api-2.2.12-b140109.1041.pom
https://repo.maven.apache.org/maven2/javax/xml/bind/jaxb-api/2.4.0-b180830.0359/jaxb-api-2.4.0-b180830.0359.pom https://repo.maven.apache.org/maven2/javax/xml/bind/jaxb-api/2.4.0-b180830.0359/jaxb-api-2.4.0-b180830.0359.pom
https://repo.maven.apache.org/maven2/javax/xml/stream/stax-api/1.0-2/stax-api-1.0-2.pom https://repo.maven.apache.org/maven2/javax/xml/stream/stax-api/1.0-2/stax-api-1.0-2.pom
https://repo.maven.apache.org/maven2/junit/junit/3.8.1/junit-3.8.1.pom
https://repo.maven.apache.org/maven2/junit/junit/4.12/junit-4.12.pom https://repo.maven.apache.org/maven2/junit/junit/4.12/junit-4.12.pom
https://repo.maven.apache.org/maven2/junit/junit/4.13.2/junit-4.13.2.pom https://repo.maven.apache.org/maven2/junit/junit/4.13.2/junit-4.13.2.pom
https://repo.maven.apache.org/maven2/me/zhanghai/android/materialprogressbar/library/1.4.2/library-1.4.2.pom https://repo.maven.apache.org/maven2/me/zhanghai/android/materialprogressbar/library/1.4.2/library-1.4.2.pom
https://repo.maven.apache.org/maven2/nekohtml/nekohtml/1.9.6.2/nekohtml-1.9.6.2.pom
https://repo.maven.apache.org/maven2/nekohtml/xercesMinimal/1.9.6.2/xercesMinimal-1.9.6.2.pom
https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy-agent/1.9.0/byte-buddy-agent-1.9.0.pom https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy-agent/1.9.0/byte-buddy-agent-1.9.0.pom
https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy-agent/1.9.10/byte-buddy-agent-1.9.10.pom https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy-agent/1.9.10/byte-buddy-agent-1.9.10.pom
https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy-agent/1.10.18/byte-buddy-agent-1.10.18.pom https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy-agent/1.10.18/byte-buddy-agent-1.10.18.pom
@@ -569,18 +630,27 @@ https://repo.maven.apache.org/maven2/org/antlr/antlr-master/3.5.2/antlr-master-3
https://repo.maven.apache.org/maven2/org/antlr/antlr-runtime/3.5.2/antlr-runtime-3.5.2.pom https://repo.maven.apache.org/maven2/org/antlr/antlr-runtime/3.5.2/antlr-runtime-3.5.2.pom
https://repo.maven.apache.org/maven2/org/antlr/antlr/3.5.2/antlr-3.5.2.pom https://repo.maven.apache.org/maven2/org/antlr/antlr/3.5.2/antlr-3.5.2.pom
https://repo.maven.apache.org/maven2/org/antlr/stringtemplate/3.2.1/stringtemplate-3.2.1.pom https://repo.maven.apache.org/maven2/org/antlr/stringtemplate/3.2.1/stringtemplate-3.2.1.pom
https://repo.maven.apache.org/maven2/org/apache/ant/ant-launcher/1.8.0/ant-launcher-1.8.0.pom
https://repo.maven.apache.org/maven2/org/apache/ant/ant-parent/1.8.0/ant-parent-1.8.0.pom
https://repo.maven.apache.org/maven2/org/apache/ant/ant/1.8.0/ant-1.8.0.pom
https://repo.maven.apache.org/maven2/org/apache/apache/1/apache-1.pom
https://repo.maven.apache.org/maven2/org/apache/apache/3/apache-3.pom
https://repo.maven.apache.org/maven2/org/apache/apache/4/apache-4.pom https://repo.maven.apache.org/maven2/org/apache/apache/4/apache-4.pom
https://repo.maven.apache.org/maven2/org/apache/apache/5/apache-5.pom
https://repo.maven.apache.org/maven2/org/apache/apache/9/apache-9.pom https://repo.maven.apache.org/maven2/org/apache/apache/9/apache-9.pom
https://repo.maven.apache.org/maven2/org/apache/apache/13/apache-13.pom https://repo.maven.apache.org/maven2/org/apache/apache/13/apache-13.pom
https://repo.maven.apache.org/maven2/org/apache/apache/15/apache-15.pom https://repo.maven.apache.org/maven2/org/apache/apache/15/apache-15.pom
https://repo.maven.apache.org/maven2/org/apache/apache/16/apache-16.pom https://repo.maven.apache.org/maven2/org/apache/apache/16/apache-16.pom
https://repo.maven.apache.org/maven2/org/apache/apache/18/apache-18.pom https://repo.maven.apache.org/maven2/org/apache/apache/18/apache-18.pom
https://repo.maven.apache.org/maven2/org/apache/apache/19/apache-19.pom
https://repo.maven.apache.org/maven2/org/apache/apache/21/apache-21.pom https://repo.maven.apache.org/maven2/org/apache/apache/21/apache-21.pom
https://repo.maven.apache.org/maven2/org/apache/apache/23/apache-23.pom https://repo.maven.apache.org/maven2/org/apache/apache/23/apache-23.pom
https://repo.maven.apache.org/maven2/org/apache/commons/commons-compress/1.8.1/commons-compress-1.8.1.pom https://repo.maven.apache.org/maven2/org/apache/commons/commons-compress/1.8.1/commons-compress-1.8.1.pom
https://repo.maven.apache.org/maven2/org/apache/commons/commons-compress/1.12/commons-compress-1.12.pom https://repo.maven.apache.org/maven2/org/apache/commons/commons-compress/1.12/commons-compress-1.12.pom
https://repo.maven.apache.org/maven2/org/apache/commons/commons-lang3/3.3.2/commons-lang3-3.3.2.pom https://repo.maven.apache.org/maven2/org/apache/commons/commons-lang3/3.3.2/commons-lang3-3.3.2.pom
https://repo.maven.apache.org/maven2/org/apache/commons/commons-lang3/3.8.1/commons-lang3-3.8.1.pom
https://repo.maven.apache.org/maven2/org/apache/commons/commons-lang3/3.9/commons-lang3-3.9.pom https://repo.maven.apache.org/maven2/org/apache/commons/commons-lang3/3.9/commons-lang3-3.9.pom
https://repo.maven.apache.org/maven2/org/apache/commons/commons-lang3/3.12.0/commons-lang3-3.12.0.pom
https://repo.maven.apache.org/maven2/org/apache/commons/commons-parent/5/commons-parent-5.pom https://repo.maven.apache.org/maven2/org/apache/commons/commons-parent/5/commons-parent-5.pom
https://repo.maven.apache.org/maven2/org/apache/commons/commons-parent/11/commons-parent-11.pom https://repo.maven.apache.org/maven2/org/apache/commons/commons-parent/11/commons-parent-11.pom
https://repo.maven.apache.org/maven2/org/apache/commons/commons-parent/22/commons-parent-22.pom https://repo.maven.apache.org/maven2/org/apache/commons/commons-parent/22/commons-parent-22.pom
@@ -590,8 +660,13 @@ https://repo.maven.apache.org/maven2/org/apache/commons/commons-parent/33/common
https://repo.maven.apache.org/maven2/org/apache/commons/commons-parent/34/commons-parent-34.pom https://repo.maven.apache.org/maven2/org/apache/commons/commons-parent/34/commons-parent-34.pom
https://repo.maven.apache.org/maven2/org/apache/commons/commons-parent/35/commons-parent-35.pom https://repo.maven.apache.org/maven2/org/apache/commons/commons-parent/35/commons-parent-35.pom
https://repo.maven.apache.org/maven2/org/apache/commons/commons-parent/39/commons-parent-39.pom https://repo.maven.apache.org/maven2/org/apache/commons/commons-parent/39/commons-parent-39.pom
https://repo.maven.apache.org/maven2/org/apache/commons/commons-parent/42/commons-parent-42.pom
https://repo.maven.apache.org/maven2/org/apache/commons/commons-parent/47/commons-parent-47.pom
https://repo.maven.apache.org/maven2/org/apache/commons/commons-parent/48/commons-parent-48.pom https://repo.maven.apache.org/maven2/org/apache/commons/commons-parent/48/commons-parent-48.pom
https://repo.maven.apache.org/maven2/org/apache/commons/commons-parent/52/commons-parent-52.pom https://repo.maven.apache.org/maven2/org/apache/commons/commons-parent/52/commons-parent-52.pom
https://repo.maven.apache.org/maven2/org/apache/geronimo/genesis/genesis-default-flava/2.3/genesis-default-flava-2.3.pom
https://repo.maven.apache.org/maven2/org/apache/geronimo/genesis/genesis-java8-flava/2.3/genesis-java8-flava-2.3.pom
https://repo.maven.apache.org/maven2/org/apache/geronimo/genesis/genesis/2.3/genesis-2.3.pom
https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpclient/4.1.1/httpclient-4.1.1.pom https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpclient/4.1.1/httpclient-4.1.1.pom
https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpclient/4.2.6/httpclient-4.2.6.pom https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpclient/4.2.6/httpclient-4.2.6.pom
https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpclient/4.5.2/httpclient-4.5.2.pom https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpclient/4.5.2/httpclient-4.5.2.pom
@@ -610,7 +685,7 @@ https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpcomponents-co
https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpcomponents-core/4.4.5/httpcomponents-core-4.4.5.pom https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpcomponents-core/4.4.5/httpcomponents-core-4.4.5.pom
https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpcomponents-core/4.4.6/httpcomponents-core-4.4.6.pom https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpcomponents-core/4.4.6/httpcomponents-core-4.4.6.pom
https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpcomponents-core/4.4.10/httpcomponents-core-4.4.10.pom https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpcomponents-core/4.4.10/httpcomponents-core-4.4.10.pom
https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpcomponents-core/4.4.14/httpcomponents-core-4.4.14.pom https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpcomponents-core/4.4.15/httpcomponents-core-4.4.15.pom
https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpcomponents-parent/10/httpcomponents-parent-10.pom https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpcomponents-parent/10/httpcomponents-parent-10.pom
https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpcomponents-parent/11/httpcomponents-parent-11.pom https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpcomponents-parent/11/httpcomponents-parent-11.pom
https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpcore/4.1/httpcore-4.1.pom https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpcore/4.1/httpcore-4.1.pom
@@ -618,12 +693,64 @@ https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpcore/4.2.5/ht
https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpcore/4.4.5/httpcore-4.4.5.pom https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpcore/4.4.5/httpcore-4.4.5.pom
https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpcore/4.4.6/httpcore-4.4.6.pom https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpcore/4.4.6/httpcore-4.4.6.pom
https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpcore/4.4.10/httpcore-4.4.10.pom https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpcore/4.4.10/httpcore-4.4.10.pom
https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpcore/4.4.14/httpcore-4.4.14.pom https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpcore/4.4.15/httpcore-4.4.15.pom
https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpmime/4.1/httpmime-4.1.pom https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpmime/4.1/httpmime-4.1.pom
https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpmime/4.5.2/httpmime-4.5.2.pom https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpmime/4.5.2/httpmime-4.5.2.pom
https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpmime/4.5.6/httpmime-4.5.6.pom https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpmime/4.5.6/httpmime-4.5.6.pom
https://repo.maven.apache.org/maven2/org/apache/httpcomponents/project/4.1.1/project-4.1.1.pom https://repo.maven.apache.org/maven2/org/apache/httpcomponents/project/4.1.1/project-4.1.1.pom
https://repo.maven.apache.org/maven2/org/apache/httpcomponents/project/7/project-7.pom https://repo.maven.apache.org/maven2/org/apache/httpcomponents/project/7/project-7.pom
https://repo.maven.apache.org/maven2/org/apache/maven/maven-ant-tasks/2.1.3/maven-ant-tasks-2.1.3.pom
https://repo.maven.apache.org/maven2/org/apache/maven/maven-artifact-manager/2.2.1/maven-artifact-manager-2.2.1.pom
https://repo.maven.apache.org/maven2/org/apache/maven/maven-artifact/2.2.1/maven-artifact-2.2.1.pom
https://repo.maven.apache.org/maven2/org/apache/maven/maven-artifact/3.8.4/maven-artifact-3.8.4.pom
https://repo.maven.apache.org/maven2/org/apache/maven/maven-builder-support/3.8.4/maven-builder-support-3.8.4.pom
https://repo.maven.apache.org/maven2/org/apache/maven/maven-compat/3.8.4/maven-compat-3.8.4.pom
https://repo.maven.apache.org/maven2/org/apache/maven/maven-core/3.8.4/maven-core-3.8.4.pom
https://repo.maven.apache.org/maven2/org/apache/maven/maven-error-diagnostics/2.2.1/maven-error-diagnostics-2.2.1.pom
https://repo.maven.apache.org/maven2/org/apache/maven/maven-model-builder/3.8.4/maven-model-builder-3.8.4.pom
https://repo.maven.apache.org/maven2/org/apache/maven/maven-model/2.2.1/maven-model-2.2.1.pom
https://repo.maven.apache.org/maven2/org/apache/maven/maven-model/3.8.4/maven-model-3.8.4.pom
https://repo.maven.apache.org/maven2/org/apache/maven/maven-parent/10/maven-parent-10.pom
https://repo.maven.apache.org/maven2/org/apache/maven/maven-parent/11/maven-parent-11.pom
https://repo.maven.apache.org/maven2/org/apache/maven/maven-parent/19/maven-parent-19.pom
https://repo.maven.apache.org/maven2/org/apache/maven/maven-parent/34/maven-parent-34.pom
https://repo.maven.apache.org/maven2/org/apache/maven/maven-plugin-api/3.8.4/maven-plugin-api-3.8.4.pom
https://repo.maven.apache.org/maven2/org/apache/maven/maven-plugin-registry/2.2.1/maven-plugin-registry-2.2.1.pom
https://repo.maven.apache.org/maven2/org/apache/maven/maven-profile/2.2.1/maven-profile-2.2.1.pom
https://repo.maven.apache.org/maven2/org/apache/maven/maven-project-builder/3.0-alpha-2/maven-project-builder-3.0-alpha-2.pom
https://repo.maven.apache.org/maven2/org/apache/maven/maven-project/2.2.1/maven-project-2.2.1.pom
https://repo.maven.apache.org/maven2/org/apache/maven/maven-project/3.0-alpha-2/maven-project-3.0-alpha-2.pom
https://repo.maven.apache.org/maven2/org/apache/maven/maven-repository-metadata/2.2.1/maven-repository-metadata-2.2.1.pom
https://repo.maven.apache.org/maven2/org/apache/maven/maven-repository-metadata/3.8.4/maven-repository-metadata-3.8.4.pom
https://repo.maven.apache.org/maven2/org/apache/maven/maven-resolver-provider/3.8.4/maven-resolver-provider-3.8.4.pom
https://repo.maven.apache.org/maven2/org/apache/maven/maven-settings-builder/3.8.4/maven-settings-builder-3.8.4.pom
https://repo.maven.apache.org/maven2/org/apache/maven/maven-settings/2.2.1/maven-settings-2.2.1.pom
https://repo.maven.apache.org/maven2/org/apache/maven/maven-settings/3.8.4/maven-settings-3.8.4.pom
https://repo.maven.apache.org/maven2/org/apache/maven/maven/2.2.1/maven-2.2.1.pom
https://repo.maven.apache.org/maven2/org/apache/maven/maven/3.0-alpha-2/maven-3.0-alpha-2.pom
https://repo.maven.apache.org/maven2/org/apache/maven/maven/3.8.4/maven-3.8.4.pom
https://repo.maven.apache.org/maven2/org/apache/maven/resolver/maven-resolver-api/1.7.3/maven-resolver-api-1.7.3.pom
https://repo.maven.apache.org/maven2/org/apache/maven/resolver/maven-resolver-impl/1.7.3/maven-resolver-impl-1.7.3.pom
https://repo.maven.apache.org/maven2/org/apache/maven/resolver/maven-resolver-named-locks/1.7.3/maven-resolver-named-locks-1.7.3.pom
https://repo.maven.apache.org/maven2/org/apache/maven/resolver/maven-resolver-spi/1.7.3/maven-resolver-spi-1.7.3.pom
https://repo.maven.apache.org/maven2/org/apache/maven/resolver/maven-resolver-util/1.7.3/maven-resolver-util-1.7.3.pom
https://repo.maven.apache.org/maven2/org/apache/maven/resolver/maven-resolver/1.7.3/maven-resolver-1.7.3.pom
https://repo.maven.apache.org/maven2/org/apache/maven/shared/maven-shared-components/34/maven-shared-components-34.pom
https://repo.maven.apache.org/maven2/org/apache/maven/shared/maven-shared-utils/3.3.4/maven-shared-utils-3.3.4.pom
https://repo.maven.apache.org/maven2/org/apache/maven/wagon/wagon-file/1.0-beta-6/wagon-file-1.0-beta-6.pom
https://repo.maven.apache.org/maven2/org/apache/maven/wagon/wagon-file/3.5.1/wagon-file-3.5.1.pom
https://repo.maven.apache.org/maven2/org/apache/maven/wagon/wagon-http-lightweight/1.0-beta-6/wagon-http-lightweight-1.0-beta-6.pom
https://repo.maven.apache.org/maven2/org/apache/maven/wagon/wagon-http-lightweight/3.5.1/wagon-http-lightweight-3.5.1.pom
https://repo.maven.apache.org/maven2/org/apache/maven/wagon/wagon-http-shared/1.0-beta-6/wagon-http-shared-1.0-beta-6.pom
https://repo.maven.apache.org/maven2/org/apache/maven/wagon/wagon-http-shared/3.5.1/wagon-http-shared-3.5.1.pom
https://repo.maven.apache.org/maven2/org/apache/maven/wagon/wagon-providers/1.0-beta-6/wagon-providers-1.0-beta-6.pom
https://repo.maven.apache.org/maven2/org/apache/maven/wagon/wagon-providers/3.5.1/wagon-providers-3.5.1.pom
https://repo.maven.apache.org/maven2/org/apache/maven/wagon/wagon-provider-api/1.0-beta-6/wagon-provider-api-1.0-beta-6.pom
https://repo.maven.apache.org/maven2/org/apache/maven/wagon/wagon-provider-api/3.5.1/wagon-provider-api-3.5.1.pom
https://repo.maven.apache.org/maven2/org/apache/maven/wagon/wagon/1.0-beta-6/wagon-1.0-beta-6.pom
https://repo.maven.apache.org/maven2/org/apache/maven/wagon/wagon/3.5.1/wagon-3.5.1.pom
https://repo.maven.apache.org/maven2/org/apache/xbean/xbean-reflect/4.20/xbean-reflect-4.20.pom
https://repo.maven.apache.org/maven2/org/apache/xbean/xbean/4.20/xbean-4.20.pom
https://repo.maven.apache.org/maven2/org/apiguardian/apiguardian-api/1.1.0/apiguardian-api-1.1.0.pom https://repo.maven.apache.org/maven2/org/apiguardian/apiguardian-api/1.1.0/apiguardian-api-1.1.0.pom
https://repo.maven.apache.org/maven2/org/assertj/assertj-core/1.7.1/assertj-core-1.7.1.pom https://repo.maven.apache.org/maven2/org/assertj/assertj-core/1.7.1/assertj-core-1.7.1.pom
https://repo.maven.apache.org/maven2/org/assertj/assertj-core/3.8.0/assertj-core-3.8.0.pom https://repo.maven.apache.org/maven2/org/assertj/assertj-core/3.8.0/assertj-core-3.8.0.pom
@@ -632,22 +759,63 @@ https://repo.maven.apache.org/maven2/org/assertj/assertj-parent-pom/2.1.6/assert
https://repo.maven.apache.org/maven2/org/bouncycastle/bcpkix-jdk15on/1.48/bcpkix-jdk15on-1.48.pom https://repo.maven.apache.org/maven2/org/bouncycastle/bcpkix-jdk15on/1.48/bcpkix-jdk15on-1.48.pom
https://repo.maven.apache.org/maven2/org/bouncycastle/bcpkix-jdk15on/1.56/bcpkix-jdk15on-1.56.pom https://repo.maven.apache.org/maven2/org/bouncycastle/bcpkix-jdk15on/1.56/bcpkix-jdk15on-1.56.pom
https://repo.maven.apache.org/maven2/org/bouncycastle/bcprov-jdk15on/1.48/bcprov-jdk15on-1.48.pom https://repo.maven.apache.org/maven2/org/bouncycastle/bcprov-jdk15on/1.48/bcprov-jdk15on-1.48.pom
https://repo.maven.apache.org/maven2/org/bouncycastle/bcprov-jdk15on/1.52/bcprov-jdk15on-1.52.pom
https://repo.maven.apache.org/maven2/org/bouncycastle/bcprov-jdk15on/1.56/bcprov-jdk15on-1.56.pom https://repo.maven.apache.org/maven2/org/bouncycastle/bcprov-jdk15on/1.56/bcprov-jdk15on-1.56.pom
https://repo.maven.apache.org/maven2/org/bouncycastle/bcprov-jdk15on/1.60/bcprov-jdk15on-1.60.pom https://repo.maven.apache.org/maven2/org/bouncycastle/bcprov-jdk15on/1.60/bcprov-jdk15on-1.60.pom
https://repo.maven.apache.org/maven2/org/bouncycastle/bcprov-jdk15on/1.65/bcprov-jdk15on-1.65.pom https://repo.maven.apache.org/maven2/org/bouncycastle/bcprov-jdk15on/1.65/bcprov-jdk15on-1.65.pom
https://repo.maven.apache.org/maven2/org/bouncycastle/bcprov-jdk15on/1.70/bcprov-jdk15on-1.70.pom
https://repo.maven.apache.org/maven2/org/checkerframework/checker-qual/2.5.2/checker-qual-2.5.2.pom https://repo.maven.apache.org/maven2/org/checkerframework/checker-qual/2.5.2/checker-qual-2.5.2.pom
https://repo.maven.apache.org/maven2/org/checkerframework/checker-qual/3.19.0/checker-qual-3.19.0.pom https://repo.maven.apache.org/maven2/org/checkerframework/checker-qual/3.21.2/checker-qual-3.21.2.pom
https://repo.maven.apache.org/maven2/org/codehaus/codehaus-parent/4/codehaus-parent-4.pom https://repo.maven.apache.org/maven2/org/codehaus/codehaus-parent/4/codehaus-parent-4.pom
https://repo.maven.apache.org/maven2/org/codehaus/groovy/groovy-all/2.4.15/groovy-all-2.4.15.pom https://repo.maven.apache.org/maven2/org/codehaus/groovy/groovy-all/2.4.15/groovy-all-2.4.15.pom
https://repo.maven.apache.org/maven2/org/codehaus/mojo/animal-sniffer-annotations/1.14/animal-sniffer-annotations-1.14.pom https://repo.maven.apache.org/maven2/org/codehaus/mojo/animal-sniffer-annotations/1.14/animal-sniffer-annotations-1.14.pom
https://repo.maven.apache.org/maven2/org/codehaus/mojo/animal-sniffer-annotations/1.17/animal-sniffer-annotations-1.17.pom https://repo.maven.apache.org/maven2/org/codehaus/mojo/animal-sniffer-annotations/1.17/animal-sniffer-annotations-1.17.pom
https://repo.maven.apache.org/maven2/org/codehaus/mojo/animal-sniffer-annotations/1.20/animal-sniffer-annotations-1.20.pom https://repo.maven.apache.org/maven2/org/codehaus/mojo/animal-sniffer-annotations/1.21/animal-sniffer-annotations-1.21.pom
https://repo.maven.apache.org/maven2/org/codehaus/mojo/animal-sniffer-parent/1.14/animal-sniffer-parent-1.14.pom https://repo.maven.apache.org/maven2/org/codehaus/mojo/animal-sniffer-parent/1.14/animal-sniffer-parent-1.14.pom
https://repo.maven.apache.org/maven2/org/codehaus/mojo/animal-sniffer-parent/1.17/animal-sniffer-parent-1.17.pom https://repo.maven.apache.org/maven2/org/codehaus/mojo/animal-sniffer-parent/1.17/animal-sniffer-parent-1.17.pom
https://repo.maven.apache.org/maven2/org/codehaus/mojo/animal-sniffer-parent/1.20/animal-sniffer-parent-1.20.pom https://repo.maven.apache.org/maven2/org/codehaus/mojo/animal-sniffer-parent/1.21/animal-sniffer-parent-1.21.pom
https://repo.maven.apache.org/maven2/org/codehaus/mojo/mojo-parent/34/mojo-parent-34.pom https://repo.maven.apache.org/maven2/org/codehaus/mojo/mojo-parent/34/mojo-parent-34.pom
https://repo.maven.apache.org/maven2/org/codehaus/mojo/mojo-parent/40/mojo-parent-40.pom https://repo.maven.apache.org/maven2/org/codehaus/mojo/mojo-parent/40/mojo-parent-40.pom
https://repo.maven.apache.org/maven2/org/codehaus/mojo/mojo-parent/61/mojo-parent-61.pom https://repo.maven.apache.org/maven2/org/codehaus/mojo/mojo-parent/65/mojo-parent-65.pom
https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-cipher/2.0/plexus-cipher-2.0.pom
https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-classworlds/2.4/plexus-classworlds-2.4.pom
https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-classworlds/2.5.2/plexus-classworlds-2.5.2.pom
https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-classworlds/2.6.0/plexus-classworlds-2.6.0.pom
https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-components/1.1.14/plexus-components-1.1.14.pom
https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-component-annotations/1.5.5/plexus-component-annotations-1.5.5.pom
https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-component-annotations/1.5.6/plexus-component-annotations-1.5.6.pom
https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-component-annotations/1.6/plexus-component-annotations-1.6.pom
https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-component-annotations/2.1.0/plexus-component-annotations-2.1.0.pom
https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-component-annotations/2.1.1/plexus-component-annotations-2.1.1.pom
https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-containers/1.0.3/plexus-containers-1.0.3.pom
https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-containers/1.5.5/plexus-containers-1.5.5.pom
https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-containers/1.5.6/plexus-containers-1.5.6.pom
https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-containers/1.6/plexus-containers-1.6.pom
https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-containers/2.1.0/plexus-containers-2.1.0.pom
https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-containers/2.1.1/plexus-containers-2.1.1.pom
https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-container-default/1.0-alpha-9-stable-1/plexus-container-default-1.0-alpha-9-stable-1.pom
https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-container-default/2.1.1/plexus-container-default-2.1.1.pom
https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-interpolation/1.11/plexus-interpolation-1.11.pom
https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-interpolation/1.26/plexus-interpolation-1.26.pom
https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-sec-dispatcher/2.0/plexus-sec-dispatcher-2.0.pom
https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-utils/1.0.4/plexus-utils-1.0.4.pom
https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-utils/1.5.15/plexus-utils-1.5.15.pom
https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-utils/2.0.5/plexus-utils-2.0.5.pom
https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-utils/3.0.18/plexus-utils-3.0.18.pom
https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-utils/3.0.24/plexus-utils-3.0.24.pom
https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-utils/3.4.1/plexus-utils-3.4.1.pom
https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus/1.0.4/plexus-1.0.4.pom
https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus/2.0.2/plexus-2.0.2.pom
https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus/2.0.6/plexus-2.0.6.pom
https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus/2.0.7/plexus-2.0.7.pom
https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus/3.3.1/plexus-3.3.1.pom
https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus/3.3.2/plexus-3.3.2.pom
https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus/4.0/plexus-4.0.pom
https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus/5.1/plexus-5.1.pom
https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus/6.5/plexus-6.5.pom
https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus/8/plexus-8.pom
https://repo.maven.apache.org/maven2/org/codehaus/woodstox/wstx-asl/3.2.6/wstx-asl-3.2.6.pom
https://repo.maven.apache.org/maven2/org/codehaus/woodstox/wstx-asl/4.0.6/wstx-asl-4.0.6.pom
https://repo.maven.apache.org/maven2/org/conscrypt/conscrypt-android/2.0.0/conscrypt-android-2.0.0.pom https://repo.maven.apache.org/maven2/org/conscrypt/conscrypt-android/2.0.0/conscrypt-android-2.0.0.pom
https://repo.maven.apache.org/maven2/org/easymock/easymockclassextension/3.2/easymockclassextension-3.2.pom https://repo.maven.apache.org/maven2/org/easymock/easymockclassextension/3.2/easymockclassextension-3.2.pom
https://repo.maven.apache.org/maven2/org/easymock/easymock-parent/3.2/easymock-parent-3.2.pom https://repo.maven.apache.org/maven2/org/easymock/easymock-parent/3.2/easymock-parent-3.2.pom
@@ -658,6 +826,10 @@ https://repo.maven.apache.org/maven2/org/eclipse/ee4j/project/1.0.7/project-1.0.
https://repo.maven.apache.org/maven2/org/eclipse/jdt/core/compiler/ecj/4.4.2/ecj-4.4.2.pom https://repo.maven.apache.org/maven2/org/eclipse/jdt/core/compiler/ecj/4.4.2/ecj-4.4.2.pom
https://repo.maven.apache.org/maven2/org/eclipse/jdt/core/compiler/ecj/4.4/ecj-4.4.pom https://repo.maven.apache.org/maven2/org/eclipse/jdt/core/compiler/ecj/4.4/ecj-4.4.pom
https://repo.maven.apache.org/maven2/org/eclipse/jdt/core/compiler/ecj/4.6.1/ecj-4.6.1.pom https://repo.maven.apache.org/maven2/org/eclipse/jdt/core/compiler/ecj/4.6.1/ecj-4.6.1.pom
https://repo.maven.apache.org/maven2/org/eclipse/sisu/org.eclipse.sisu.inject/0.3.5/org.eclipse.sisu.inject-0.3.5.pom
https://repo.maven.apache.org/maven2/org/eclipse/sisu/org.eclipse.sisu.plexus/0.3.5/org.eclipse.sisu.plexus-0.3.5.pom
https://repo.maven.apache.org/maven2/org/eclipse/sisu/sisu-inject/0.3.5/sisu-inject-0.3.5.pom
https://repo.maven.apache.org/maven2/org/eclipse/sisu/sisu-plexus/0.3.5/sisu-plexus-0.3.5.pom
https://repo.maven.apache.org/maven2/org/glassfish/jaxb/jaxb-bom/2.2.11/jaxb-bom-2.2.11.pom https://repo.maven.apache.org/maven2/org/glassfish/jaxb/jaxb-bom/2.2.11/jaxb-bom-2.2.11.pom
https://repo.maven.apache.org/maven2/org/glassfish/jaxb/jaxb-bom/3.0.2/jaxb-bom-3.0.2.pom https://repo.maven.apache.org/maven2/org/glassfish/jaxb/jaxb-bom/3.0.2/jaxb-bom-3.0.2.pom
https://repo.maven.apache.org/maven2/org/glassfish/jaxb/jaxb-core/2.2.11/jaxb-core-2.2.11.pom https://repo.maven.apache.org/maven2/org/glassfish/jaxb/jaxb-core/2.2.11/jaxb-core-2.2.11.pom
@@ -667,6 +839,7 @@ https://repo.maven.apache.org/maven2/org/glassfish/jaxb/txw2/2.2.11/txw2-2.2.11.
https://repo.maven.apache.org/maven2/org/glassfish/jaxb/txw2/3.0.2/txw2-3.0.2.pom https://repo.maven.apache.org/maven2/org/glassfish/jaxb/txw2/3.0.2/txw2-3.0.2.pom
https://repo.maven.apache.org/maven2/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.pom https://repo.maven.apache.org/maven2/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.pom
https://repo.maven.apache.org/maven2/org/hamcrest/hamcrest-core/2.2/hamcrest-core-2.2.pom https://repo.maven.apache.org/maven2/org/hamcrest/hamcrest-core/2.2/hamcrest-core-2.2.pom
https://repo.maven.apache.org/maven2/org/hamcrest/hamcrest-library/1.3/hamcrest-library-1.3.pom
https://repo.maven.apache.org/maven2/org/hamcrest/hamcrest-parent/1.3/hamcrest-parent-1.3.pom https://repo.maven.apache.org/maven2/org/hamcrest/hamcrest-parent/1.3/hamcrest-parent-1.3.pom
https://repo.maven.apache.org/maven2/org/hamcrest/hamcrest/2.2/hamcrest-2.2.pom https://repo.maven.apache.org/maven2/org/hamcrest/hamcrest/2.2/hamcrest-2.2.pom
https://repo.maven.apache.org/maven2/org/jacoco/org.jacoco.build/0.7.4.201502262128/org.jacoco.build-0.7.4.201502262128.pom https://repo.maven.apache.org/maven2/org/jacoco/org.jacoco.build/0.7.4.201502262128/org.jacoco.build-0.7.4.201502262128.pom
@@ -674,6 +847,8 @@ https://repo.maven.apache.org/maven2/org/jacoco/org.jacoco.build/0.8.7/org.jacoc
https://repo.maven.apache.org/maven2/org/jacoco/org.jacoco.core/0.7.4.201502262128/org.jacoco.core-0.7.4.201502262128.pom https://repo.maven.apache.org/maven2/org/jacoco/org.jacoco.core/0.7.4.201502262128/org.jacoco.core-0.7.4.201502262128.pom
https://repo.maven.apache.org/maven2/org/jacoco/org.jacoco.core/0.8.7/org.jacoco.core-0.8.7.pom https://repo.maven.apache.org/maven2/org/jacoco/org.jacoco.core/0.8.7/org.jacoco.core-0.8.7.pom
https://repo.maven.apache.org/maven2/org/jacoco/org.jacoco.report/0.7.4.201502262128/org.jacoco.report-0.7.4.201502262128.pom https://repo.maven.apache.org/maven2/org/jacoco/org.jacoco.report/0.7.4.201502262128/org.jacoco.report-0.7.4.201502262128.pom
https://repo.maven.apache.org/maven2/org/jboss/weld/weld-parent/26/weld-parent-26.pom
https://repo.maven.apache.org/maven2/org/jboss/weld/weld-parent/36/weld-parent-36.pom
https://repo.maven.apache.org/maven2/org/jdom/jdom2/2.0.6/jdom2-2.0.6.pom https://repo.maven.apache.org/maven2/org/jdom/jdom2/2.0.6/jdom2-2.0.6.pom
https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.pom https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.pom
https://repo.maven.apache.org/maven2/org/jetbrains/intellij/deps/trove4j/1.0.20181211/trove4j-1.0.20181211.pom https://repo.maven.apache.org/maven2/org/jetbrains/intellij/deps/trove4j/1.0.20181211/trove4j-1.0.20181211.pom
@@ -728,17 +903,19 @@ https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.3.50/kotlin-stdlib-common-1.3.50.pom https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.3.50/kotlin-stdlib-common-1.3.50.pom
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.3.71/kotlin-stdlib-common-1.3.71.pom https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.3.71/kotlin-stdlib-common-1.3.71.pom
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.4.10/kotlin-stdlib-common-1.4.10.pom https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.4.10/kotlin-stdlib-common-1.4.10.pom
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.4.21/kotlin-stdlib-common-1.4.21.pom
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.4.30/kotlin-stdlib-common-1.4.30.pom https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.4.30/kotlin-stdlib-common-1.4.30.pom
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.4.31/kotlin-stdlib-common-1.4.31.pom https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.4.31/kotlin-stdlib-common-1.4.31.pom
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.5.31/kotlin-stdlib-common-1.5.31.pom https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.5.31/kotlin-stdlib-common-1.5.31.pom
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.6.10/kotlin-stdlib-common-1.6.10.pom
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.2.71/kotlin-stdlib-jdk7-1.2.71.pom https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.2.71/kotlin-stdlib-jdk7-1.2.71.pom
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.3.20/kotlin-stdlib-jdk7-1.3.20.pom https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.3.20/kotlin-stdlib-jdk7-1.3.20.pom
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.3.50/kotlin-stdlib-jdk7-1.3.50.pom https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.3.50/kotlin-stdlib-jdk7-1.3.50.pom
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.4.10/kotlin-stdlib-jdk7-1.4.10.pom
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.4.31/kotlin-stdlib-jdk7-1.4.31.pom https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.4.31/kotlin-stdlib-jdk7-1.4.31.pom
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.2.71/kotlin-stdlib-jdk8-1.2.71.pom https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.2.71/kotlin-stdlib-jdk8-1.2.71.pom
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.3.20/kotlin-stdlib-jdk8-1.3.20.pom https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.3.20/kotlin-stdlib-jdk8-1.3.20.pom
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.3.50/kotlin-stdlib-jdk8-1.3.50.pom https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.3.50/kotlin-stdlib-jdk8-1.3.50.pom
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.4.10/kotlin-stdlib-jdk8-1.4.10.pom
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.4.31/kotlin-stdlib-jdk8-1.4.31.pom https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.4.31/kotlin-stdlib-jdk8-1.4.31.pom
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jre7/1.2.0/kotlin-stdlib-jre7-1.2.0.pom https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jre7/1.2.0/kotlin-stdlib-jre7-1.2.0.pom
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jre8/1.2.0/kotlin-stdlib-jre8-1.2.0.pom https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jre8/1.2.0/kotlin-stdlib-jre8-1.2.0.pom
@@ -752,7 +929,6 @@ https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.3.31/k
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.3.50/kotlin-stdlib-1.3.50.pom https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.3.50/kotlin-stdlib-1.3.50.pom
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.3.71/kotlin-stdlib-1.3.71.pom https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.3.71/kotlin-stdlib-1.3.71.pom
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.4.10/kotlin-stdlib-1.4.10.pom https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.4.10/kotlin-stdlib-1.4.10.pom
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.4.21/kotlin-stdlib-1.4.21.pom
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.4.30/kotlin-stdlib-1.4.30.pom https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.4.30/kotlin-stdlib-1.4.30.pom
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.4.31/kotlin-stdlib-1.4.31.pom https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.4.31/kotlin-stdlib-1.4.31.pom
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-test-common/1.4.31/kotlin-test-common-1.4.31.pom https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-test-common/1.4.31/kotlin-test-common-1.4.31.pom
@@ -762,6 +938,9 @@ https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-util-io/1.4.31/
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-util-klib/1.4.31/kotlin-util-klib-1.4.31.pom https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-util-klib/1.4.31/kotlin-util-klib-1.4.31.pom
https://repo.maven.apache.org/maven2/org/jetbrains/trove4j/trove4j/20160824/trove4j-20160824.pom https://repo.maven.apache.org/maven2/org/jetbrains/trove4j/trove4j/20160824/trove4j-20160824.pom
https://repo.maven.apache.org/maven2/org/junit/junit-bom/5.7.0/junit-bom-5.7.0.pom https://repo.maven.apache.org/maven2/org/junit/junit-bom/5.7.0/junit-bom-5.7.0.pom
https://repo.maven.apache.org/maven2/org/junit/junit-bom/5.7.1/junit-bom-5.7.1.pom
https://repo.maven.apache.org/maven2/org/junit/junit-bom/5.7.2/junit-bom-5.7.2.pom
https://repo.maven.apache.org/maven2/org/junit/junit-bom/5.8.2/junit-bom-5.8.2.pom
https://repo.maven.apache.org/maven2/org/junit/jupiter/junit-jupiter-api/5.7.0/junit-jupiter-api-5.7.0.pom https://repo.maven.apache.org/maven2/org/junit/jupiter/junit-jupiter-api/5.7.0/junit-jupiter-api-5.7.0.pom
https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-commons/1.7.0/junit-platform-commons-1.7.0.pom https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-commons/1.7.0/junit-platform-commons-1.7.0.pom
https://repo.maven.apache.org/maven2/org/jvnet/staxex/stax-ex/1.7.7/stax-ex-1.7.7.pom https://repo.maven.apache.org/maven2/org/jvnet/staxex/stax-ex/1.7.7/stax-ex-1.7.7.pom
@@ -779,10 +958,12 @@ https://repo.maven.apache.org/maven2/org/opentest4j/opentest4j/1.2.0/opentest4j-
https://repo.maven.apache.org/maven2/org/ow2/asm/asm-analysis/5.0.3/asm-analysis-5.0.3.pom https://repo.maven.apache.org/maven2/org/ow2/asm/asm-analysis/5.0.3/asm-analysis-5.0.3.pom
https://repo.maven.apache.org/maven2/org/ow2/asm/asm-analysis/5.1/asm-analysis-5.1.pom https://repo.maven.apache.org/maven2/org/ow2/asm/asm-analysis/5.1/asm-analysis-5.1.pom
https://repo.maven.apache.org/maven2/org/ow2/asm/asm-analysis/6.0/asm-analysis-6.0.pom https://repo.maven.apache.org/maven2/org/ow2/asm/asm-analysis/6.0/asm-analysis-6.0.pom
https://repo.maven.apache.org/maven2/org/ow2/asm/asm-analysis/7.0/asm-analysis-7.0.pom
https://repo.maven.apache.org/maven2/org/ow2/asm/asm-analysis/7.2/asm-analysis-7.2.pom https://repo.maven.apache.org/maven2/org/ow2/asm/asm-analysis/7.2/asm-analysis-7.2.pom
https://repo.maven.apache.org/maven2/org/ow2/asm/asm-analysis/9.2/asm-analysis-9.2.pom https://repo.maven.apache.org/maven2/org/ow2/asm/asm-analysis/9.2/asm-analysis-9.2.pom
https://repo.maven.apache.org/maven2/org/ow2/asm/asm-commons/5.1/asm-commons-5.1.pom https://repo.maven.apache.org/maven2/org/ow2/asm/asm-commons/5.1/asm-commons-5.1.pom
https://repo.maven.apache.org/maven2/org/ow2/asm/asm-commons/6.0/asm-commons-6.0.pom https://repo.maven.apache.org/maven2/org/ow2/asm/asm-commons/6.0/asm-commons-6.0.pom
https://repo.maven.apache.org/maven2/org/ow2/asm/asm-commons/7.0/asm-commons-7.0.pom
https://repo.maven.apache.org/maven2/org/ow2/asm/asm-commons/7.2/asm-commons-7.2.pom https://repo.maven.apache.org/maven2/org/ow2/asm/asm-commons/7.2/asm-commons-7.2.pom
https://repo.maven.apache.org/maven2/org/ow2/asm/asm-commons/9.2/asm-commons-9.2.pom https://repo.maven.apache.org/maven2/org/ow2/asm/asm-commons/9.2/asm-commons-9.2.pom
https://repo.maven.apache.org/maven2/org/ow2/asm/asm-debug-all/5.0.1/asm-debug-all-5.0.1.pom https://repo.maven.apache.org/maven2/org/ow2/asm/asm-debug-all/5.0.1/asm-debug-all-5.0.1.pom
@@ -795,33 +976,73 @@ https://repo.maven.apache.org/maven2/org/ow2/asm/asm-parent/6.0_BETA/asm-parent-
https://repo.maven.apache.org/maven2/org/ow2/asm/asm-tree/5.0.3/asm-tree-5.0.3.pom https://repo.maven.apache.org/maven2/org/ow2/asm/asm-tree/5.0.3/asm-tree-5.0.3.pom
https://repo.maven.apache.org/maven2/org/ow2/asm/asm-tree/5.1/asm-tree-5.1.pom https://repo.maven.apache.org/maven2/org/ow2/asm/asm-tree/5.1/asm-tree-5.1.pom
https://repo.maven.apache.org/maven2/org/ow2/asm/asm-tree/6.0/asm-tree-6.0.pom https://repo.maven.apache.org/maven2/org/ow2/asm/asm-tree/6.0/asm-tree-6.0.pom
https://repo.maven.apache.org/maven2/org/ow2/asm/asm-tree/7.0/asm-tree-7.0.pom
https://repo.maven.apache.org/maven2/org/ow2/asm/asm-tree/7.2/asm-tree-7.2.pom https://repo.maven.apache.org/maven2/org/ow2/asm/asm-tree/7.2/asm-tree-7.2.pom
https://repo.maven.apache.org/maven2/org/ow2/asm/asm-tree/9.2/asm-tree-9.2.pom https://repo.maven.apache.org/maven2/org/ow2/asm/asm-tree/9.2/asm-tree-9.2.pom
https://repo.maven.apache.org/maven2/org/ow2/asm/asm-util/5.1/asm-util-5.1.pom https://repo.maven.apache.org/maven2/org/ow2/asm/asm-util/5.1/asm-util-5.1.pom
https://repo.maven.apache.org/maven2/org/ow2/asm/asm-util/6.0/asm-util-6.0.pom https://repo.maven.apache.org/maven2/org/ow2/asm/asm-util/6.0/asm-util-6.0.pom
https://repo.maven.apache.org/maven2/org/ow2/asm/asm-util/7.0/asm-util-7.0.pom
https://repo.maven.apache.org/maven2/org/ow2/asm/asm-util/7.2/asm-util-7.2.pom https://repo.maven.apache.org/maven2/org/ow2/asm/asm-util/7.2/asm-util-7.2.pom
https://repo.maven.apache.org/maven2/org/ow2/asm/asm/5.0.3/asm-5.0.3.pom https://repo.maven.apache.org/maven2/org/ow2/asm/asm/5.0.3/asm-5.0.3.pom
https://repo.maven.apache.org/maven2/org/ow2/asm/asm/5.1/asm-5.1.pom https://repo.maven.apache.org/maven2/org/ow2/asm/asm/5.1/asm-5.1.pom
https://repo.maven.apache.org/maven2/org/ow2/asm/asm/6.0/asm-6.0.pom https://repo.maven.apache.org/maven2/org/ow2/asm/asm/6.0/asm-6.0.pom
https://repo.maven.apache.org/maven2/org/ow2/asm/asm/7.0/asm-7.0.pom
https://repo.maven.apache.org/maven2/org/ow2/asm/asm/7.2/asm-7.2.pom https://repo.maven.apache.org/maven2/org/ow2/asm/asm/7.2/asm-7.2.pom
https://repo.maven.apache.org/maven2/org/ow2/asm/asm/9.2/asm-9.2.pom https://repo.maven.apache.org/maven2/org/ow2/asm/asm/9.2/asm-9.2.pom
https://repo.maven.apache.org/maven2/org/ow2/ow2/1.3/ow2-1.3.pom https://repo.maven.apache.org/maven2/org/ow2/ow2/1.3/ow2-1.3.pom
https://repo.maven.apache.org/maven2/org/ow2/ow2/1.5/ow2-1.5.pom https://repo.maven.apache.org/maven2/org/ow2/ow2/1.5/ow2-1.5.pom
https://repo.maven.apache.org/maven2/org/robolectric/annotations/4.3/annotations-4.3.pom
https://repo.maven.apache.org/maven2/org/robolectric/annotations/4.4/annotations-4.4.pom https://repo.maven.apache.org/maven2/org/robolectric/annotations/4.4/annotations-4.4.pom
https://repo.maven.apache.org/maven2/org/robolectric/junit/4.3/junit-4.3.pom
https://repo.maven.apache.org/maven2/org/robolectric/junit/4.4/junit-4.4.pom https://repo.maven.apache.org/maven2/org/robolectric/junit/4.4/junit-4.4.pom
https://repo.maven.apache.org/maven2/org/robolectric/pluginapi/4.3/pluginapi-4.3.pom
https://repo.maven.apache.org/maven2/org/robolectric/pluginapi/4.4/pluginapi-4.4.pom https://repo.maven.apache.org/maven2/org/robolectric/pluginapi/4.4/pluginapi-4.4.pom
https://repo.maven.apache.org/maven2/org/robolectric/plugins-maven-dependency-resolver/4.3/plugins-maven-dependency-resolver-4.3.pom
https://repo.maven.apache.org/maven2/org/robolectric/plugins-maven-dependency-resolver/4.4/plugins-maven-dependency-resolver-4.4.pom https://repo.maven.apache.org/maven2/org/robolectric/plugins-maven-dependency-resolver/4.4/plugins-maven-dependency-resolver-4.4.pom
https://repo.maven.apache.org/maven2/org/robolectric/resources/4.3/resources-4.3.pom
https://repo.maven.apache.org/maven2/org/robolectric/resources/4.4/resources-4.4.pom https://repo.maven.apache.org/maven2/org/robolectric/resources/4.4/resources-4.4.pom
https://repo.maven.apache.org/maven2/org/robolectric/robolectric/4.3/robolectric-4.3.pom
https://repo.maven.apache.org/maven2/org/robolectric/robolectric/4.4/robolectric-4.4.pom https://repo.maven.apache.org/maven2/org/robolectric/robolectric/4.4/robolectric-4.4.pom
https://repo.maven.apache.org/maven2/org/robolectric/sandbox/4.3/sandbox-4.3.pom
https://repo.maven.apache.org/maven2/org/robolectric/sandbox/4.4/sandbox-4.4.pom https://repo.maven.apache.org/maven2/org/robolectric/sandbox/4.4/sandbox-4.4.pom
https://repo.maven.apache.org/maven2/org/robolectric/shadowapi/4.3/shadowapi-4.3.pom
https://repo.maven.apache.org/maven2/org/robolectric/shadowapi/4.4/shadowapi-4.4.pom https://repo.maven.apache.org/maven2/org/robolectric/shadowapi/4.4/shadowapi-4.4.pom
https://repo.maven.apache.org/maven2/org/robolectric/shadows-framework/4.3/shadows-framework-4.3.pom
https://repo.maven.apache.org/maven2/org/robolectric/shadows-framework/4.4/shadows-framework-4.4.pom https://repo.maven.apache.org/maven2/org/robolectric/shadows-framework/4.4/shadows-framework-4.4.pom
https://repo.maven.apache.org/maven2/org/robolectric/utils-reflector/4.3/utils-reflector-4.3.pom
https://repo.maven.apache.org/maven2/org/robolectric/utils-reflector/4.4/utils-reflector-4.4.pom https://repo.maven.apache.org/maven2/org/robolectric/utils-reflector/4.4/utils-reflector-4.4.pom
https://repo.maven.apache.org/maven2/org/robolectric/utils/4.3/utils-4.3.pom
https://repo.maven.apache.org/maven2/org/robolectric/utils/4.4/utils-4.4.pom https://repo.maven.apache.org/maven2/org/robolectric/utils/4.4/utils-4.4.pom
https://repo.maven.apache.org/maven2/org/slf4j/jcl-over-slf4j/2.0.0-alpha5/jcl-over-slf4j-2.0.0-alpha5.pom https://repo.maven.apache.org/maven2/org/slf4j/jcl-over-slf4j/2.0.0-alpha6/jcl-over-slf4j-2.0.0-alpha6.pom
https://repo.maven.apache.org/maven2/org/slf4j/slf4j-api/2.0.0-alpha5/slf4j-api-2.0.0-alpha5.pom https://repo.maven.apache.org/maven2/org/slf4j/jul-to-slf4j/2.0.0-alpha6/jul-to-slf4j-2.0.0-alpha6.pom
https://repo.maven.apache.org/maven2/org/slf4j/slf4j-jdk14/2.0.0-alpha5/slf4j-jdk14-2.0.0-alpha5.pom https://repo.maven.apache.org/maven2/org/slf4j/slf4j-api/2.0.0-alpha6/slf4j-api-2.0.0-alpha6.pom
https://repo.maven.apache.org/maven2/org/slf4j/slf4j-parent/2.0.0-alpha5/slf4j-parent-2.0.0-alpha5.pom https://repo.maven.apache.org/maven2/org/slf4j/slf4j-jdk14/2.0.0-alpha6/slf4j-jdk14-2.0.0-alpha6.pom
https://repo.maven.apache.org/maven2/org/slf4j/slf4j-parent/2.0.0-alpha6/slf4j-parent-2.0.0-alpha6.pom
https://repo.maven.apache.org/maven2/org/slf4j/slf4j-simple/2.0.0-alpha6/slf4j-simple-2.0.0-alpha6.pom
https://repo.maven.apache.org/maven2/org/sonatype/buildsupport/buildsupport/5/buildsupport-5.pom
https://repo.maven.apache.org/maven2/org/sonatype/buildsupport/buildsupport/12/buildsupport-12.pom
https://repo.maven.apache.org/maven2/org/sonatype/buildsupport/public-parent/5/public-parent-5.pom
https://repo.maven.apache.org/maven2/org/sonatype/buildsupport/public-parent/12/public-parent-12.pom
https://repo.maven.apache.org/maven2/org/sonatype/forge/forge-parent/3/forge-parent-3.pom
https://repo.maven.apache.org/maven2/org/sonatype/forge/forge-parent/6/forge-parent-6.pom
https://repo.maven.apache.org/maven2/org/sonatype/forge/forge-parent/10/forge-parent-10.pom
https://repo.maven.apache.org/maven2/org/sonatype/forge/forge-parent/38/forge-parent-38.pom
https://repo.maven.apache.org/maven2/org/sonatype/oss/oss-parent/4/oss-parent-4.pom https://repo.maven.apache.org/maven2/org/sonatype/oss/oss-parent/4/oss-parent-4.pom
https://repo.maven.apache.org/maven2/org/sonatype/oss/oss-parent/7/oss-parent-7.pom https://repo.maven.apache.org/maven2/org/sonatype/oss/oss-parent/7/oss-parent-7.pom
https://repo.maven.apache.org/maven2/org/sonatype/oss/oss-parent/9/oss-parent-9.pom https://repo.maven.apache.org/maven2/org/sonatype/oss/oss-parent/9/oss-parent-9.pom
https://repo.maven.apache.org/maven2/org/sonatype/sisu/inject/cglib/3.1.1/cglib-3.1.1.pom
https://repo.maven.apache.org/maven2/org/sonatype/sisu/inject/guice-parent/2.9.4/guice-parent-2.9.4.pom
https://repo.maven.apache.org/maven2/org/sonatype/sisu/inject/guice-parent/4.2.0/guice-parent-4.2.0.pom
https://repo.maven.apache.org/maven2/org/sonatype/sisu/inject/wrappers/2.6.0/wrappers-2.6.0.pom
https://repo.maven.apache.org/maven2/org/sonatype/sisu/sisu-guice/2.9.4/sisu-guice-2.9.4.pom
https://repo.maven.apache.org/maven2/org/sonatype/sisu/sisu-guice/4.2.0/sisu-guice-4.2.0.pom
https://repo.maven.apache.org/maven2/org/sonatype/sisu/sisu-inject-bean/2.6.0/sisu-inject-bean-2.6.0.pom
https://repo.maven.apache.org/maven2/org/sonatype/sisu/sisu-inject-plexus/2.6.0/sisu-inject-plexus-2.6.0.pom
https://repo.maven.apache.org/maven2/org/sonatype/sisu/sisu-inject/2.6.0/sisu-inject-2.6.0.pom
https://repo.maven.apache.org/maven2/org/sonatype/sisu/sisu-parent/2.6.0/sisu-parent-2.6.0.pom
https://repo.maven.apache.org/maven2/org/sonatype/spice/model-builder/1.10/model-builder-1.10.pom
https://repo.maven.apache.org/maven2/org/sonatype/spice/spice-parent/10/spice-parent-10.pom
https://repo.maven.apache.org/maven2/org/sonatype/spice/spice-parent/17/spice-parent-17.pom
https://repo.maven.apache.org/maven2/stax/stax-api/1.0.1/stax-api-1.0.1.pom
https://repo.maven.apache.org/maven2/xerces/xercesImpl/2.8.1/xercesImpl-2.8.1.pom
https://repo.maven.apache.org/maven2/xml-apis/xml-apis/1.3.03/xml-apis-1.3.03.pom
+2
View File
@@ -1,5 +1,6 @@
app app
react-native-background-timer react-native-background-timer
react-native-blob-util
react-native-camera-kit react-native-camera-kit
react-native-community_async-storage react-native-community_async-storage
react-native-community_audio-toolkit react-native-community_audio-toolkit
@@ -24,6 +25,7 @@ react-native-linear-gradient
react-native-mail react-native-mail
react-native-navigation react-native-navigation
react-native-nfc-manager react-native-nfc-manager
react-native-notifications
react-native-permissions react-native-permissions
react-native-reanimated react-native-reanimated
react-native-safe-area-context react-native-safe-area-context
+11 -4
View File
@@ -13,6 +13,7 @@
"dependencies": { "dependencies": {
"@react-native-community/async-storage": "^1.11.0", "@react-native-community/async-storage": "^1.11.0",
"@react-native-community/audio-toolkit": "git+https://github.com/tbenr/react-native-audio-toolkit.git#v2.0.3-status-v6", "@react-native-community/audio-toolkit": "git+https://github.com/tbenr/react-native-audio-toolkit.git#v2.0.3-status-v6",
"@react-native-community/blur": "^3.6.0",
"@react-native-community/cameraroll": "git+https://github.com/status-im/react-native-cameraroll.git#v4.0.4-status.0", "@react-native-community/cameraroll": "git+https://github.com/status-im/react-native-cameraroll.git#v4.0.4-status.0",
"@react-native-community/clipboard": "^1.2.2", "@react-native-community/clipboard": "^1.2.2",
"@react-native-community/hooks": "^2.5.1", "@react-native-community/hooks": "^2.5.1",
@@ -20,6 +21,7 @@
"@react-native-community/netinfo": "^4.4.0", "@react-native-community/netinfo": "^4.4.0",
"@react-native-community/push-notification-ios": "^1.4.1", "@react-native-community/push-notification-ios": "^1.4.1",
"@react-native-community/slider": "^3.0.0", "@react-native-community/slider": "^3.0.0",
"@walletconnect/client": "^2.0.0-beta.23",
"bignumber.js": "git+https://github.com/status-im/bignumber.js.git#v4.0.2-status", "bignumber.js": "git+https://github.com/status-im/bignumber.js.git#v4.0.2-status",
"buffer": "^5.4.2", "buffer": "^5.4.2",
"chance": "^1.1.0", "chance": "^1.1.0",
@@ -27,32 +29,37 @@
"emojilib": "^2.4.0", "emojilib": "^2.4.0",
"eth-phishing-detect": "^1.1.13", "eth-phishing-detect": "^1.1.13",
"functional-red-black-tree": "^1.0.1", "functional-red-black-tree": "^1.0.1",
"hermes-engine": "0.5.2-rc1",
"hi-base32": "^0.5.0", "hi-base32": "^0.5.0",
"i18n-js": "^3.3.0", "i18n-js": "^3.3.0",
"node-libs-react-native": "^1.2.1",
"qrcode": "^1.4.1", "qrcode": "^1.4.1",
"react": "16.13.1", "react": "16.13.1",
"react-dom": "^16.4.2", "react-dom": "^16.4.2",
"react-native": "0.63.4", "react-native": "0.63.4",
"react-native-background-timer": "^2.1.1", "react-native-background-timer": "^2.1.1",
"react-native-blob-util": "^0.13.18",
"react-native-camera-kit": "^8.0.4", "react-native-camera-kit": "^8.0.4",
"react-native-config": "git+https://github.com/status-im/react-native-config.git#v1.4.2-status", "react-native-config": "git+https://github.com/status-im/react-native-config.git#v1.4.2-status",
"react-native-dark-mode": "^0.2.2",
"react-native-device-info": "^7.4.0", "react-native-device-info": "^7.4.0",
"react-native-dialogs": "^1.0.4", "react-native-dialogs": "^1.0.4",
"react-native-fast-image": "8.5.11", "react-native-draggable-flatlist": "^3.0.3",
"react-native-fast-image": "^8.5.11",
"react-native-fetch-polyfill": "^1.1.2", "react-native-fetch-polyfill": "^1.1.2",
"react-native-fs": "^2.14.1", "react-native-fs": "^2.14.1",
"react-native-gesture-handler": "^1.8.0", "react-native-gesture-handler": "^1.8.0",
"react-native-haptic-feedback": "^1.9.0", "react-native-haptic-feedback": "^1.9.0",
"react-native-image-crop-picker": "git+https://github.com/status-im/react-native-image-crop-picker.git#v0.36.2-status.0", "react-native-image-crop-picker": "git+https://github.com/status-im/react-native-image-crop-picker.git#v0.36.2-status.0",
"react-native-image-resizer": "^1.2.3", "react-native-image-resizer": "^1.2.3",
"react-native-image-viewing": "git+https://github.com/Ferossgp/react-native-image-viewing.git#v0.2.1", "react-native-image-viewing": "git+https://github.com/status-im/react-native-image-viewing.git#v0.2.1.status",
"react-native-keychain": "git+https://github.com/status-im/react-native-keychain.git#v.3.0.0-5-status", "react-native-keychain": "git+https://github.com/status-im/react-native-keychain.git#v.3.0.0-5-status",
"react-native-languages": "^3.0.2", "react-native-languages": "^3.0.2",
"react-native-linear-gradient": "^2.5.6", "react-native-linear-gradient": "^2.5.6",
"react-native-mail": "^6.1.1", "react-native-mail": "^6.1.1",
"react-native-navigation": "^7.13.0", "react-native-navigation": "^7.13.0",
"react-native-notifications": "^4.1.3",
"react-native-permissions": "^2.1.5", "react-native-permissions": "^2.1.5",
"react-native-randombytes": "^3.6.1",
"react-native-reanimated": "^2.1.0", "react-native-reanimated": "^2.1.0",
"react-native-redash": "^16.0.11", "react-native-redash": "^16.0.11",
"react-native-safe-area-context": "^2.0.0", "react-native-safe-area-context": "^2.0.0",
@@ -62,7 +69,7 @@
"react-native-status-keycard": "git+https://github.com/status-im/react-native-status-keycard.git#v2.5.37", "react-native-status-keycard": "git+https://github.com/status-im/react-native-status-keycard.git#v2.5.37",
"react-native-svg": "^9.8.4", "react-native-svg": "^9.8.4",
"react-native-touch-id": "^4.4.1", "react-native-touch-id": "^4.4.1",
"react-native-webview": "git+https://github.com/status-im/react-native-webview.git#v11.3.0-status", "react-native-webview": "git+https://github.com/status-im/react-native-webview.git#v11.16.0-status",
"rn-emoji-keyboard": "git+https://github.com/status-im/rn-emoji-keyboard.git#v0.4.2", "rn-emoji-keyboard": "git+https://github.com/status-im/rn-emoji-keyboard.git#v0.4.2",
"tdigest": "^0.1.1", "tdigest": "^0.1.1",
"web3-utils": "^1.2.1" "web3-utils": "^1.2.1"
+5
View File
@@ -22,5 +22,10 @@ module.exports = {
ios: null, ios: null,
}, },
}, },
'@react-native-community/blur': {
platforms: {
android: null,
},
},
}, },
}; };
Binary file not shown.

After

Width:  |  Height:  |  Size: 469 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 637 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 386 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 539 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 338 B

After

Width:  |  Height:  |  Size: 249 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 467 B

After

Width:  |  Height:  |  Size: 323 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 338 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 467 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 527 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 899 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 196 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 250 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

+2
View File
@@ -107,6 +107,7 @@
} }
else else
{ {
if (window.statusAppDebug) { console.log("resolve " + callback.method + " :" + JSON.stringify(data.result.result)); }
callback.resolve(data.result.result); callback.resolve(data.result.result);
} }
} }
@@ -239,6 +240,7 @@
return new Promise(function (resolve, reject) { return new Promise(function (resolve, reject) {
callbacks[messageId] = {beta: true, callbacks[messageId] = {beta: true,
method: method,
resolve: resolve, resolve: resolve,
reject: reject}; reject: reject};
}); });
+10
View File
@@ -0,0 +1,10 @@
#!/usr/bin/env bash
set -e
# Used by Clojure to condition code and Gradle to make dependencies optional
sed -i -e '$aGOOGLE_FREE=1' .env.release
# remove react-native-notifications(uses google dependencies) and google-services.json for the fdroid-build
yarn remove react-native-notifications
rm android/app/google-services.json
+21
View File
@@ -0,0 +1,21 @@
#!/usr/bin/env bash
set -euo pipefail
if [[ -z $(git diff --cached --name-only -r | grep status-go-version.json) ]]; then
exit 0 # No status-go-version.json changes found.
fi
MERGE_BASE=$(git merge-base -a develop "$(git rev-parse --abbrev-ref HEAD)" develop)
GO_COMMIT_MERGE_BASE=$(git show "${MERGE_BASE}":status-go-version.json | jq -r '."commit-sha1"')
GO_COMMIT_CURRENT=$(jq -r '."commit-sha1"' status-go-version.json)
GITHUB_LINK_PREFIX="https://github.com/status-im/status-go/compare/"
# Link to the current StatusGo changelog being updated.
GITHUB_LINK="${GITHUB_LINK_PREFIX}${GO_COMMIT_MERGE_BASE}...${GO_COMMIT_CURRENT}"
COMMIT_MSG_FILE=$1
# Check if the commit message already contains the link (rebase) and update otherwise insert into line2
if ! grep -qF "${GITHUB_LINK_PREFIX}" "${COMMIT_MSG_FILE}" >/dev/null; then
sed -in "2i${GITHUB_LINK}\n" "${COMMIT_MSG_FILE}"
else
sed -in "s;^${GITHUB_LINK_PREFIX}.*$;${GITHUB_LINK};" "${COMMIT_MSG_FILE}"
fi
+6
View File
@@ -52,6 +52,12 @@ fi
if [[ -n "${INFURA_TOKEN}" ]]; then if [[ -n "${INFURA_TOKEN}" ]]; then
append_env_export 'INFURA_TOKEN' append_env_export 'INFURA_TOKEN'
fi fi
# Used by Clojure at compile time for remove import of react-native-notifications for fdroid release
if [[ -n "${READER_FEATURES}" ]]; then
append_env_export 'READER_FEATURES'
fi
# If no secrets were passed there's no need to pass the 'secretsFile'. # If no secrets were passed there's no need to pass the 'secretsFile'.
if [[ -s "${SECRETS_FILE_PATH}" ]]; then if [[ -s "${SECRETS_FILE_PATH}" ]]; then
nixOpts+=("--argstr" "secretsFile" "${SECRETS_FILE_PATH}") nixOpts+=("--argstr" "secretsFile" "${SECRETS_FILE_PATH}")
+2 -1
View File
@@ -64,7 +64,8 @@
:static-fns true :static-fns true
:fn-invoke-direct true :fn-invoke-direct true
:optimizations :advanced :optimizations :advanced
:js-options {:js-provider :closure}}}} :js-options {:js-provider :closure}
:reader-features #{#shadow/env ["READER_FEATURES" :as :keyword :default :cljs]}}}}
;; the tests are ran with node, react-native dependencies are mocked ;; the tests are ran with node, react-native dependencies are mocked
;; by using node --require override.js, which uses the node-library ;; by using node --require override.js, which uses the node-library
;; produced by the target :mocks below and redefines node require ;; produced by the target :mocks below and redefines node require
+23 -3
View File
@@ -67,7 +67,9 @@
:Properties #{} :Properties #{}
:create (fn []) :create (fn [])
:configureNext (fn [])} :configureNext (fn [])}
:requireNativeComponent (fn [] {:propTypes ""})})) :requireNativeComponent (fn [] {:propTypes ""})
:Appearance {:getColorScheme (fn [])
:addChangeListener (fn [])}}))
(set! js/ReactNative react-native) (set! js/ReactNative react-native)
@@ -100,7 +102,6 @@
(def safe-area-context (clj->js {:SafeAreaProvider {:_reactNativeIphoneXHelper {:getStatusBarHeight (fn [])}} (def safe-area-context (clj->js {:SafeAreaProvider {:_reactNativeIphoneXHelper {:getStatusBarHeight (fn [])}}
:SafeAreaInsetsContext {:Consumer (fn [])} :SafeAreaInsetsContext {:Consumer (fn [])}
:SafeAreaView {}})) :SafeAreaView {}}))
(def react-native-dark-mode #js {"eventEmitter" {} "initialMode" {}})
(def back-handler #js {:addEventListener identity (def back-handler #js {:addEventListener identity
:removeEventListener identity}) :removeEventListener identity})
@@ -206,6 +207,22 @@
(def rn-emoji-keyboard (def rn-emoji-keyboard
#js {:EmojiKeyboard #js {}}) #js {:EmojiKeyboard #js {}})
(def react-native-draggable-flatlist
#js {:default #js {}})
(def react-native-notifications
#js {:Notifications #js {}})
(def react-native-blur
(clj->js {:BlurView {}}))
(def wallet-connect-client #js {:default #js {}
:CLIENT_EVENTS #js {:session #js {:request nil
:created nil
:deleted nil
:proposal nil
:updated nil}}})
;; Update i18n_resources.cljs ;; Update i18n_resources.cljs
(defn mock [module] (defn mock [module]
(case module (case module
@@ -215,7 +232,6 @@
"react-native-gesture-handler" react-native-gesture-handler "react-native-gesture-handler" react-native-gesture-handler
"react-native-safe-area-context" safe-area-context "react-native-safe-area-context" safe-area-context
"react-native-config" config "react-native-config" config
"react-native-dark-mode" react-native-dark-mode
"react-native-iphone-x-helper" (clj->js {:getStatusBarHeight (fn []) "react-native-iphone-x-helper" (clj->js {:getStatusBarHeight (fn [])
:getBottomSpace (fn [])}) :getBottomSpace (fn [])})
"react-native-screens" (clj->js {}) "react-native-screens" (clj->js {})
@@ -237,10 +253,14 @@
"react-native-linear-gradient" react-native-gradien "react-native-linear-gradient" react-native-gradien
"react-native-navigation" react-native-navigation "react-native-navigation" react-native-navigation
"@react-native-community/push-notification-ios" push-notification-ios "@react-native-community/push-notification-ios" push-notification-ios
"@react-native-community/blur" react-native-blur
"react-native-camera-kit" react-native-camera-kit "react-native-camera-kit" react-native-camera-kit
"rn-emoji-keyboard" rn-emoji-keyboard "rn-emoji-keyboard" rn-emoji-keyboard
"react-native-notifications" react-native-notifications
"react-native-draggable-flatlist" react-native-draggable-flatlist
"./fleets.js" default-fleets "./fleets.js" default-fleets
"./chats.js" default-chats "./chats.js" default-chats
"@walletconnect/client" wallet-connect-client
"../translations/ar.json" (js/JSON.parse (slurp "./translations/ar.json")) "../translations/ar.json" (js/JSON.parse (slurp "./translations/ar.json"))
"../translations/de.json" (js/JSON.parse (slurp "./translations/de.json")) "../translations/de.json" (js/JSON.parse (slurp "./translations/de.json"))
"../translations/en.json" (js/JSON.parse (slurp "./translations/en.json")) "../translations/en.json" (js/JSON.parse (slurp "./translations/en.json"))
+5 -1
View File
@@ -57,6 +57,8 @@
(defn pressable-hooks [props] (defn pressable-hooks [props]
(let [{background-color :bgColor (let [{background-color :bgColor
border-radius :borderRadius border-radius :borderRadius
border-color :borderColor
border-width :borderWidth
type :type type :type
disabled :disabled disabled :disabled
on-press :onPress on-press :onPress
@@ -121,7 +123,9 @@
[animated/view {:style (merge absolute-fill [animated/view {:style (merge absolute-fill
background background
{:background-color background-color {:background-color background-color
:border-radius border-radius})}] :border-radius border-radius
:border-color border-color
:border-width border-width})}]
(into [animated/view {:style foreground}] (into [animated/view {:style foreground}]
(react/get-children children))]]]]))) (react/get-children children))]]]])))
+29 -22
View File
@@ -28,27 +28,31 @@
(defn themes [theme] (defn themes [theme]
(case theme (case theme
:main {:icon-color (:icon-04 @colors/theme) :main {:icon-color (:icon-04 @colors/theme)
:background-color (:interactive-02 @colors/theme) :background-color (:interactive-02 @colors/theme)
:text-color (:text-04 @colors/theme)} :text-color (:text-04 @colors/theme)}
:icon {:icon-color (:icon-01 @colors/theme) :icon {:icon-color (:icon-01 @colors/theme)
:background-color (:interactive-02 @colors/theme) :background-color (:interactive-02 @colors/theme)
:text-color (:text-01 @colors/theme)} :text-color (:text-01 @colors/theme)}
:negative {:icon-color (:negative-01 @colors/theme) :negative {:icon-color (:negative-01 @colors/theme)
:background-color (:negative-02 @colors/theme) :background-color (:negative-02 @colors/theme)
:text-color (:negative-01 @colors/theme)} :text-color (:negative-01 @colors/theme)}
:positive {:icon-color (:positive-01 @colors/theme) :positive {:icon-color (:positive-01 @colors/theme)
:background-color (:positive-02 @colors/theme) :background-color (:positive-02 @colors/theme)
:text-color (:positive-01 @colors/theme)} :text-color (:positive-01 @colors/theme)}
:accent {:icon-color (:icon-05 @colors/theme) :accent {:icon-color (:icon-05 @colors/theme)
:background-color (:interactive-01 @colors/theme) :background-color (:interactive-01 @colors/theme)
:text-color (:text-05 @colors/theme)} :text-color (:text-05 @colors/theme)}
:secondary {:icon-color (:icon-02 @colors/theme) :secondary {:icon-color (:icon-02 @colors/theme)
:background-color (:interactive-02 @colors/theme) :background-color (:interactive-02 @colors/theme)
:text-color (:text-02 @colors/theme)} :text-color (:text-02 @colors/theme)}
:disabled {:icon-color (:icon-02 @colors/theme) :disabled {:icon-color (:icon-02 @colors/theme)
:background-color (:ui-01 @colors/theme) :background-color (:ui-01 @colors/theme)
:text-color (:text-02 @colors/theme)})) :text-color (:text-02 @colors/theme)}
:monocromatic {:icon-color (:icon-01 @colors/theme)
:background-color (:ui-background @colors/theme)
:text-color (:text-01 @colors/theme)
:border-color (:ui-01 @colors/theme)}))
(defn button [{:keys [on-press disabled type theme before after (defn button [{:keys [on-press disabled type theme before after
haptic-feedback haptic-type on-long-press on-press-start haptic-feedback haptic-type on-long-press on-press-start
@@ -62,7 +66,7 @@
(let [theme' (cond (let [theme' (cond
disabled :disabled disabled :disabled
:else theme) :else theme)
{:keys [icon-color background-color text-color]} {:keys [icon-color background-color text-color border-color]}
(themes theme') (themes theme')
optional-haptic (fn [] optional-haptic (fn []
@@ -73,6 +77,9 @@
:type type :type type
:disabled disabled :disabled disabled
:accessibility-label accessibility-label} :accessibility-label accessibility-label}
(when border-color
{:border-color border-color
:border-width 1})
(when on-press (when on-press
{:on-press (fn [] {:on-press (fn []
(optional-haptic) (optional-haptic)
+14 -12
View File
@@ -55,13 +55,13 @@
:small :base :small :base
:large)) :large))
(defn container [{:keys [size]} & children] (defn container [{:keys [size container-style]} & children]
(into [rn/view {:style (merge (:tiny spacing/padding-horizontal) (into [rn/view {:style (merge (:tiny spacing/padding-horizontal)
{:min-height (size->container-size size) {:min-height (size->container-size size)
:padding-vertical 8 :padding-vertical 8
:flex-direction :row :flex-direction :row
:align-items :center :align-items :center
:justify-content :space-between})}] :justify-content :space-between} container-style)}]
children)) children))
(defn icon-column (defn icon-column
@@ -197,17 +197,19 @@
left-side-alignment icon-color icon-bg-color left-side-alignment icon-color icon-bg-color
title subtitle subtitle-secondary active on-press on-long-press chevron size text-size title subtitle subtitle-secondary active on-press on-long-press chevron size text-size
accessory-text accessibility-label title-accessibility-label accessory-style accessory-text accessibility-label title-accessibility-label accessory-style
haptic-feedback haptic-type error animated animated-accessory? title-text-weight] haptic-feedback haptic-type error animated animated-accessory? title-text-weight container-style
:or {subtitle-max-lines 1 active-background-enabled]
theme :main :or {subtitle-max-lines 1
haptic-feedback true theme :main
animated platform/ios? haptic-feedback true
haptic-type :selection}}] animated platform/ios?
active-background-enabled true
haptic-type :selection}}]
(let [theme (if disabled :disabled theme) (let [theme (if disabled :disabled theme)
{:keys [text-color active-background passive-background]} {:keys [text-color active-background passive-background]}
(themes theme) (themes theme)
icon-color (or icon-color (:icon-color (themes theme))) icon-color (or icon-color (:icon-color (themes theme)))
icon-bg-color (or icon-bg-color (:icon-bg-color (themes theme))) icon-bg-color (or icon-bg-color (:icon-bg-color (themes theme)))
optional-haptic (fn [] optional-haptic (fn []
(when haptic-feedback (when haptic-feedback
(haptic/trigger haptic-type))) (haptic/trigger haptic-type)))
@@ -223,7 +225,7 @@
[component [component
(merge {:type :list-item (merge {:type :list-item
:disabled disabled :disabled disabled
:bg-color active-background :bg-color (when active-background-enabled active-background)
:accessibility-label accessibility-label} :accessibility-label accessibility-label}
(when on-press (when on-press
{:on-press (fn [] {:on-press (fn []
@@ -233,7 +235,7 @@
{:on-long-press (fn [] {:on-long-press (fn []
(optional-haptic) (optional-haptic)
(on-long-press))})) (on-long-press))}))
[container {:size size} [container {:size size :container-style container-style}
[left-side {:icon-color icon-color [left-side {:icon-color icon-color
:text-color (if on-press :text-color (if on-press
text-color text-color
+6 -2
View File
@@ -20,6 +20,7 @@
(def light-theme (def light-theme
{:positive-01 "rgba(68,208,88,1)" ; Primary Positive, text, icons color {:positive-01 "rgba(68,208,88,1)" ; Primary Positive, text, icons color
:positive-02 "rgba(78,188,96,0.1)" ; Secondary Positive, Supporting color for success illustrations :positive-02 "rgba(78,188,96,0.1)" ; Secondary Positive, Supporting color for success illustrations
:positive-03 "rgba(78,188,96,1)" ; Lighter Positive, Supporting color for success illustrations
:negative-01 "rgba(255,45,85,1)" ; Primary Negative, text, icons color :negative-01 "rgba(255,45,85,1)" ; Primary Negative, text, icons color
:negative-02 "rgba(255,45,85,0.1))" ; Secondary Negative, Supporting color for errors illustrations :negative-02 "rgba(255,45,85,0.1))" ; Secondary Negative, Supporting color for errors illustrations
:warning-01 "rgba(255, 202, 15, 1)" :warning-01 "rgba(255, 202, 15, 1)"
@@ -46,11 +47,13 @@
:backdrop "rgba(0,0,0,0.4)" ; Backdrop for modals and bottom sheet :backdrop "rgba(0,0,0,0.4)" ; Backdrop for modals and bottom sheet
:border-01 "rgba(238,242,245,1)" :border-01 "rgba(238,242,245,1)"
:border-02 "rgba(67, 96, 223, 0.1)" :border-02 "rgba(67, 96, 223, 0.1)"
:highlight "rgba(67,96,223,0.4)"}) :highlight "rgba(67,96,223,0.4)"
:blurred-bg "rgba(255,255,255,0.3)"})
(def dark-theme (def dark-theme
{:positive-01 "rgba(68,208,88,1)" {:positive-01 "rgba(68,208,88,1)"
:positive-02 "rgba(78,188,96,0.1)" :positive-02 "rgba(78,188,96,0.1)"
:positive-03 "rgba(78,188,96,1)"
:negative-01 "rgba(252,95,95,1)" :negative-01 "rgba(252,95,95,1)"
:negative-02 "rgba(252,95,95,0.1)" :negative-02 "rgba(252,95,95,0.1)"
:warning-01 "rgba(255, 202, 15, 1)" :warning-01 "rgba(255, 202, 15, 1)"
@@ -77,7 +80,8 @@
:backdrop "rgba(0,0,0,0.4)" :backdrop "rgba(0,0,0,0.4)"
:border-01 "rgba(37,37,40,1)" :border-01 "rgba(37,37,40,1)"
:border-02 "rgba(97,119,229,0.1)" :border-02 "rgba(97,119,229,0.1)"
:highlight "rgba(67,96,223,0.4)"}) :highlight "rgba(67,96,223,0.4)"
:blurred-bg "rgba(0,0,0,0.3)"})
(def theme (reagent/atom light-theme)) (def theme (reagent/atom light-theme))
+23 -10
View File
@@ -5,7 +5,10 @@
["react-native" :as rn] ["react-native" :as rn]
["@react-native-community/hooks" :as hooks] ["@react-native-community/hooks" :as hooks]
["react-native-navigation" :refer (Navigation)] ["react-native-navigation" :refer (Navigation)]
["rn-emoji-keyboard" :refer (EmojiKeyboard)])) ["rn-emoji-keyboard" :refer (EmojiKeyboard)]
["react-native-draggable-flatlist" :default DraggableFlatList]))
(def rn-draggable-flatlist (reagent/adapt-react-class DraggableFlatList))
(def emoji-keyboard (reagent/adapt-react-class EmojiKeyboard)) (def emoji-keyboard (reagent/adapt-react-class EmojiKeyboard))
@@ -107,7 +110,13 @@
(defn- wrap-render-fn [f render-data] (defn- wrap-render-fn [f render-data]
(fn [data] (fn [data]
(reagent/as-element [f (.-item ^js data) (.-index ^js data) (.-separators ^js data) render-data]))) (reagent/as-element [f (.-item ^js data) (.-index ^js data)
(.-separators ^js data) render-data
(.-isActive ^js data) (.-drag ^js data)])))
(defn- wrap-on-drag-end-fn [f]
(fn [data]
(f (.-from ^js data) (.-to ^js data) (.-data ^js data))))
(defn- wrap-key-fn [f] (defn- wrap-key-fn [f]
(fn [data index] (fn [data index]
@@ -115,19 +124,23 @@
(f data index))) (f data index)))
(defn base-list-props (defn base-list-props
[{:keys [key-fn render-fn empty-component header footer separator data render-data] :as props}] [{:keys [key-fn render-fn empty-component header footer separator data render-data on-drag-end-fn] :as props}]
(merge {:data (to-array data)} (merge {:data (to-array data)}
(when key-fn {:keyExtractor (wrap-key-fn key-fn)}) (when key-fn {:keyExtractor (wrap-key-fn key-fn)})
(when render-fn {:renderItem (wrap-render-fn render-fn render-data)}) (when render-fn {:renderItem (wrap-render-fn render-fn render-data)})
(when separator {:ItemSeparatorComponent (fn [] (reagent/as-element separator))}) (when separator {:ItemSeparatorComponent (fn [] (reagent/as-element separator))})
(when empty-component {:ListEmptyComponent (fn [] (reagent/as-element empty-component))}) (when empty-component {:ListEmptyComponent (fn [] (reagent/as-element empty-component))})
(when header {:ListHeaderComponent (reagent/as-element header)}) (when header {:ListHeaderComponent (reagent/as-element header)})
(when footer {:ListFooterComponent (reagent/as-element footer)}) (when footer {:ListFooterComponent (reagent/as-element footer)})
(dissoc props :data :header :footer :empty-component :separator :render-fn :key-fn))) (when on-drag-end-fn {:onDragEnd (wrap-on-drag-end-fn on-drag-end-fn)})
(dissoc props :data :header :footer :empty-component :separator :render-fn :key-fn :on-drag-end-fn)))
(defn flat-list [props] (defn flat-list [props]
[rn-flat-list (base-list-props props)]) [rn-flat-list (base-list-props props)])
(defn draggable-flat-list [props]
[rn-draggable-flatlist (base-list-props props)])
(defn animated-flat-list [props] (defn animated-flat-list [props]
[animated-flat-list-class (base-list-props props)]) [animated-flat-list-class (base-list-props props)])
;; Hooks ;; Hooks
+9 -3
View File
@@ -1,8 +1,14 @@
(ns quo.theme (ns quo.theme
(:require [quo.design-system.colors :as colors])) (:require [quo.design-system.colors :as colors]))
(defn set-theme [theme] (def theme (atom nil))
(reset! colors/theme (case theme
(defn get-theme []
@theme)
(defn set-theme [value]
(reset! theme value)
(reset! colors/theme (case value
:dark colors/dark-theme :dark colors/dark-theme
colors/light-theme)) colors/light-theme))
(colors/set-legacy-theme-type theme)) (colors/set-legacy-theme-type value))
+144
View File
@@ -0,0 +1,144 @@
(ns quo2.components.button
(:require [quo.react-native :as rn]
[status-im.ui.components.icons.icons :as icons]
[quo2.foundations.colors :as colors]
[quo2.components.text :as text]
[quo.theme :as theme]
[reagent.core :as reagent]))
(def themes {:light {:primary {:icon-color colors/white
:label {:style {:color colors/white}}
:background-color {:default colors/primary-50
:pressed colors/primary-70
:disabled colors/primary-50}}
:secondary {:icon-color colors/primary-50
:label {:style {:color colors/primary-50}}
:background-color {:default colors/primary-50-opa-20
:pressed colors/primary-50-opa-40
:disabled colors/primary-50-opa-20}}
:grey {:icon-color colors/neutral-50
:label {:style {:color colors/black}}
:background-color {:default colors/neutral-40
:pressed colors/neutral-30
:disabled colors/neutral-20}}
:outline {:icon-color colors/neutral-50
:label {:style {:color colors/black}}
:border-color {:default colors/neutral-30
:pressed colors/neutral-40}}
:ghost {:icon-color colors/neutral-50
:label {:style {:color colors/black}}
:background-color {:pr:pressedess colors/neutral-10}}
:danger {:icon-color colors/white
:label {:style {:color colors/white}}
:background-color {:default colors/danger-50
:pressed colors/danger-60
:disabled colors/danger-50}}}
:dark {:primary {:icon-color colors/white
:label {:style {:color colors/white}}
:background-color {:default colors/primary-60
:pressed colors/primary-40
:disabled colors/primary-60}}
:secondary {:icon-color colors/primary-50
:label {:style {:color colors/primary-50}}
:background-color {:default colors/primary-50-opa-20
:pressed colors/primary-50-opa-30
:disabled colors/primary-50-opa-20}}
:grey {:icon-color colors/neutral-40
:label {:style {:color colors/white}}
:background-color {:default colors/neutral-80
:pressed colors/neutral-60
:disabled colors/neutral-80}}
:outline {:icon-color colors/neutral-40
:label {:style {:color colors/white}}
:border-color {:default colors/neutral-70
:pressed colors/neutral-60}}
:ghost {:icon-color colors/neutral-40
:label {:style {:color colors/white}}
:background-color {:pressed colors/neutral-80}}
:danger {:icon-color colors/white
:label {:style {:color colors/white}}
:background-color {:default colors/danger-50
:pressed colors/danger-40
:disabled colors/danger-50}}}})
(defn style-container [type size disabled background-color border-color icon above]
(merge {:height size
:align-items :center
:justify-content :center
:flex-direction (if above :column :row)
:border-radius (if (and icon (#{:primary :secondary :danger} type))
24
(case size
56 12
40 12
32 10
24 8))
:background-color background-color
:padding-horizontal (if icon 0 (case size 56 16 40 16 32 12 24 8))}
(when icon
{:width size})
(when border-color
{:border-color border-color
:border-width 1})
(when disabled
{:opacity 0.3})))
(defn button
"with label
[button opts \"label\"]
opts
{:type :primary/:secondary/:grey/:outline/:ghost/:danger
:size 40/32/24
:icon true/false
:before :icon-keyword
:after :icon-keyword}
only icon
[button {:icon true} :main-icons/close-circle]"
[_ _]
(let [pressed (reagent/atom false)]
(fn [{:keys [on-press disabled type size before after above
on-long-press accessibility-label icon]
:or {type :primary
size 40}}
children]
(let [{:keys [icon-color background-color label border-color]}
(get-in themes [(theme/get-theme) type])
state (cond disabled :disabled @pressed :pressed :else :default)]
[rn/touchable-without-feedback (merge {:disabled disabled
:accessibility-label accessibility-label}
(when on-press
{:on-press (fn []
(on-press))})
(when on-long-press
{:on-long-press (fn []
(on-long-press))})
{:on-press-in (fn []
(reset! pressed true))}
{:on-press-out (fn []
(reset! pressed nil))})
[rn/view {:style (style-container type size disabled (get background-color state) (get border-color state) icon above)}
(when above
[rn/view
[icons/icon above {:color icon-color}]])
(when before
[rn/view
[icons/icon before {:color icon-color}]])
[rn/view
(cond
icon
[icons/icon children {:color icon-color}]
(string? children)
[text/text (merge {:size (when (#{56 24} size) :paragraph-2)
:weight :medium
:number-of-lines 1}
label)
children]
(vector? children)
children)]
(when after
[rn/view
[icons/icon after {:color icon-color}]])]]))))
@@ -0,0 +1,35 @@
(ns quo2.components.segmented-control
(:require [reagent.core :as reagent]
[quo.react-native :as rn]
[quo2.components.tab :as tab]
[quo2.foundations.colors :as colors]
[quo.theme :as theme]))
(def themes {:light {:background-color colors/neutral-20}
:dark {:background-color colors/neutral-80}})
(defn segmented-control [{:keys [default-active on-change]}]
(let [active-tab-id (reagent/atom default-active)]
(fn [{:keys [data size]}]
(let [active-id @active-tab-id]
[rn/view {:flex-direction :row
:background-color (get-in themes [(theme/get-theme) :background-color])
:border-radius (case size
32 10
28 8
24 8
20 6)
:padding 2}
(for [[indx {:keys [label id]}] (map-indexed vector data)]
^{:key id}
[rn/view {:margin-left (if (= 0 indx) 0 2)
:flex 1}
[tab/tab
{:id id
:segmented true
:size size
:active (= id active-id)
:on-press #(do (reset! active-tab-id %)
(when on-change
(on-change %)))}
label]])]))))
+75
View File
@@ -0,0 +1,75 @@
(ns quo2.components.tab
(:require [quo2.foundations.colors :as colors]
[quo.react-native :as rn]
[quo.theme :as theme]
[status-im.ui.components.icons.icons :as icons]
[quo2.components.text :as text]))
(def themes {:light {:default {:background-color colors/neutral-20
:icon-color colors/neutral-50
:label {:style {:color colors/black}}}
:active {:background-color colors/neutral-50
:icon-color colors/white
:label {:style {:color colors/white}}}
:disabled {:background-color colors/neutral-20
:icon-color colors/neutral-50
:label {:style {:color colors/black}}}}
:dark {:default {:background-color colors/neutral-80
:icon-color colors/neutral-40
:label {:style {:color colors/white}}}
:active {:background-color colors/neutral-60
:icon-color colors/white
:label {:style {:color colors/white}}}
:disabled {:background-color colors/neutral-80
:icon-color colors/neutral-40
:label {:style {:color colors/white}}}}})
(defn style-container [size disabled background-color]
(merge {:height size
:align-items :center
:justify-content :center
:flex-direction :row
:border-radius (case size
32 10
28 8
24 8
20 6)
:background-color background-color
:padding-horizontal (case size 32 12 28 12 24 8 20 8)}
(when disabled
{:opacity 0.3})))
(defn tab
"[tab opts \"label\"]
opts
{:type :primary/:secondary/:grey/:outline/:ghost/:danger
:size 40/32/24
:icon true/false
:before :icon-keyword
:after :icon-keyword}"
[_ _]
(fn [{:keys [id on-press disabled size before active accessibility-label]
:or {size 32}}
children]
(let [state (cond disabled :disabled active :active :else :default)
{:keys [icon-color background-color label]}
(get-in themes [(theme/get-theme) state])]
[rn/touchable-without-feedback (merge {:disabled disabled
:accessibility-label accessibility-label}
(when on-press
{:on-press (fn []
(on-press id))}))
[rn/view {:style (style-container size disabled background-color)}
(when before
[rn/view
[icons/icon before {:color icon-color}]])
[rn/view
(cond
(string? children)
[text/text (merge {:size (case size 24 :paragraph-2 20 :label nil)
:weight :medium
:number-of-lines 1}
label)
children]
(vector? children)
children)]]])))
+21
View File
@@ -0,0 +1,21 @@
(ns quo2.components.tabs
(:require [reagent.core :as reagent]
[quo.react-native :as rn]
[quo2.components.tab :as tab]))
(defn tabs [{:keys [default-active on-change]}]
(let [active-tab-id (reagent/atom default-active)]
(fn [{:keys [data size]}]
(let [active-id @active-tab-id]
[rn/view {:flex-direction :row}
(for [{:keys [label id]} data]
^{:key id}
[rn/view {:margin-right (if (= size 32) 12 8)}
[tab/tab
{:id id
:size size
:active (= id active-id)
:on-press #(do (reset! active-tab-id %)
(when on-change
(on-change %)))}
label]])]))))
+33
View File
@@ -0,0 +1,33 @@
(ns quo2.components.text
(:require [quo.react-native :as rn]
[reagent.core :as reagent]
[quo.theme :as theme]
[quo2.foundations.colors :as colors]
[quo2.foundations.typography :as typography]))
(defn text-style [{:keys [size align weight style]}]
(merge (case (or weight :regular)
:regular typography/font-regular
:medium typography/font-medium
:semi-bold typography/font-semi-bold
:bold typography/font-bold
:monospace typography/monospace
:inherit nil)
(case (or size :paragraph-1)
:label typography/label
:paragraph-2 typography/paragraph-2
:paragraph-1 typography/paragraph-1
:heading-2 typography/heading-2
:heading-1 typography/heading-1
:inherit nil)
{:text-align (or align :auto)}
(if (:color style)
style
(assoc style :color (if (= (theme/get-theme) :dark) colors/white colors/black)))))
(defn text []
(let [this (reagent/current-component)
props (reagent/props this)
style (text-style props)]
(into [rn/text {:style style}]
(reagent/children this))))
+176
View File
@@ -0,0 +1,176 @@
(ns quo2.foundations.colors
(:require [clojure.string :as string]))
(defn alpha [value opacity]
(if (string/starts-with? value "#")
(let [hex (string/replace value #"#" "")
r (js/parseInt (subs hex 0 2) 16)
g (js/parseInt (subs hex 2 4) 16)
b (js/parseInt (subs hex 4 6) 16)]
(str "rgba(" r "," g "," b "," opacity ")"))
(let [rgb (string/split value #",")]
(str (string/join "," (butlast rgb)) "," opacity ")"))))
;;;;Neutral
;;Solid
(def neutral-5 "#F5F6F8")
(def neutral-10 "#F0F2F5")
(def neutral-20 "#ECEEF1")
(def neutral-30 "#E7EAEE")
(def neutral-40 "#A1ABBD")
(def neutral-50 "#647084")
(def neutral-60 "#303D55")
(def neutral-70 "#192438")
(def neutral-80 "#131D2F")
(def neutral-90 "#0D1625")
(def neutral-95 "#09101C")
;;50 with transparency
(def neutral-50-opa-5 (alpha neutral-50 0.05))
(def neutral-50-opa-10 (alpha neutral-50 0.1))
(def neutral-50-opa-20 (alpha neutral-50 0.2))
(def neutral-50-opa-30 (alpha neutral-50 0.3))
(def neutral-50-opa-40 (alpha neutral-50 0.4))
;;80 with transparency
(def neutral-80-opa-60 (alpha neutral-80 0.6))
(def neutral-80-opa-70 (alpha neutral-80 0.7))
(def neutral-80-opa-80 (alpha neutral-80 0.8))
(def neutral-80-opa-90 (alpha neutral-80 0.9))
(def neutral-80-opa-95 (alpha neutral-80 0.95))
;;95 with transparency
(def neutral-95-opa-60 (alpha neutral-95 0.6))
(def neutral-95-opa-70 (alpha neutral-95 0.7))
(def neutral-95-opa-80 (alpha neutral-95 0.8))
(def neutral-95-opa-90 (alpha neutral-95 0.9))
(def neutral-95-opa-95 (alpha neutral-95 0.95))
;;;;Black
(def black "#000000")
(def black-opa-5 (alpha black 0.05))
(def black-opa-10 (alpha black 0.1))
(def black-opa-20 (alpha black 0.2))
(def black-opa-30 (alpha black 0.3))
(def black-opa-40 (alpha black 0.4))
(def black-opa-50 (alpha black 0.5))
(def black-opa-60 (alpha black 0.6))
(def black-opa-70 (alpha black 0.7))
(def black-opa-80 (alpha black 0.8))
(def black-opa-90 (alpha black 0.9))
(def black-opa-95 (alpha black 0.95))
;;;;White
(def white "#ffffff")
(def white-opa-5 (alpha white 0.05))
(def white-opa-10 (alpha white 0.1))
(def white-opa-20 (alpha white 0.2))
(def white-opa-30 (alpha white 0.3))
(def white-opa-40 (alpha white 0.4))
(def white-opa-50 (alpha white 0.5))
(def white-opa-60 (alpha white 0.6))
(def white-opa-70 (alpha white 0.7))
(def white-opa-80 (alpha white 0.8))
(def white-opa-90 (alpha white 0.9))
(def white-opa-95 (alpha white 0.95))
;;;;Primary
;;Solid
(def primary-10 "#F8F9FE")
(def primary-20 "#D9DFF9")
(def primary-30 "#ACB9F1")
(def primary-40 "#7F93E9")
(def primary-50 "#4360DF")
(def primary-60 "#3851BB")
(def primary-70 "#2E4198")
(def primary-80 "#233274")
(def primary-90 "#182350")
;;50 with transparency
(def primary-50-opa-5 (alpha primary-50 0.05))
(def primary-50-opa-10 (alpha primary-50 0.1))
(def primary-50-opa-20 (alpha primary-50 0.2))
(def primary-50-opa-30 (alpha primary-50 0.3))
(def primary-50-opa-40 (alpha primary-50 0.4))
;;;;Success
;;Solid
(def success-10 "#F6FBFB")
(def success-20 "#D4EDEB")
(def success-30 "#9FD8D3")
(def success-40 "#6BC2BA")
(def success-50 "#26A69A")
(def success-60 "#208B81")
(def success-70 "#1A7169")
(def success-80 "#145650")
(def success-90 "#08211F")
;;50 with transparency
(def success-50-opa-5 (alpha success-50 0.05))
(def success-50-opa-10 (alpha success-50 0.1))
(def success-50-opa-20 (alpha success-50 0.2))
(def success-50-opa-30 (alpha success-50 0.3))
(def success-50-opa-40 (alpha success-50 0.4))
;;;;Warning
;;Solid
(def warning-10 "#FFFBF9")
(def warning-20 "#FEE9DF")
(def warning-30 "#FDCEBA")
(def warning-40 "#FCB394")
(def warning-50 "#FB8F61")
(def warning-60 "#D37851")
(def warning-70 "#AB6142")
(def warning-80 "#824A32")
(def warning-90 "#5A3323")
;;50 with transparency
(def warning-50-opa-5 (alpha warning-50 0.05))
(def warning-50-opa-10 (alpha warning-50 0.1))
(def warning-50-opa-20 (alpha warning-50 0.2))
(def warning-50-opa-30 (alpha warning-50 0.3))
(def warning-50-opa-40 (alpha warning-50 0.4))
;;;;Danger
;;Solid
(def danger-10 "#FEF9F9")
(def danger-20 "#FADFDE")
(def danger-30 "#F4B9B7")
(def danger-40 "#EE9290")
(def danger-50 "#E65F5C")
(def danger-60 "#C1504D")
(def danger-70 "#9C413F")
(def danger-80 "#783130")
(def danger-90 "#532221")
;;50 with transparency
(def danger-50-opa-5 (alpha danger-50 0.05))
(def danger-50-opa-10 (alpha danger-50 0.1))
(def danger-50-opa-20 (alpha danger-50 0.2))
(def danger-50-opa-30 (alpha danger-50 0.3))
(def danger-50-opa-40 (alpha danger-50 0.4))
;;;;Info
;;Solid
(def info-10 "#F6FCFD")
(def info-20 "#D2EEF4")
(def info-30 "#9DD9E6")
(def info-40 "#67C4D8")
(def info-50 "#20A8C6")
(def info-60 "#1B8DA6")
(def info-70 "#167287")
(def info-80 "#115767")
(def info-90 "#0C3C47")
;;50 with transparency
(def info-50-opa-5 (alpha info-50 0.05))
(def info-50-opa-10 (alpha info-50 0.1))
(def info-50-opa-20 (alpha info-50 0.2))
(def info-50-opa-30 (alpha info-50 0.3))
(def info-50-opa-40 (alpha info-50 0.4))
+31
View File
@@ -0,0 +1,31 @@
(ns quo2.foundations.typography)
(def heading-1 {:font-size 27
:line-height 32.4
:letter-spacing -2.1})
(def heading-2 {:font-size 19
:line-height 25.65
:letter-spacing -1.6})
(def paragraph-1 {:font-size 15
:line-height 21.75
:letter-spacing -0.9})
(def paragraph-2 {:font-size 13
:line-height 18.2
:letter-spacing -0.3})
(def label {:font-size 11
:line-height 15.62
:letter-spacing 0.5})
(def font-regular {:font-family "Inter-Regular"}) ; 400
(def font-medium {:font-family "Inter-Medium"}) ; 500 ff
(def font-semi-bold {:font-family "Inter-SemiBold"}) ; 600
(def font-bold {:font-family "Inter-Bold"}) ; 700
(def monospace {:font-family "InterStatus-Regular"})
+86
View File
@@ -0,0 +1,86 @@
(ns quo2.screens.button
(:require [reagent.core :as reagent]
[quo.react-native :as rn]
[quo.previews.preview :as preview]
[quo.design-system.colors :as colors]
[quo2.components.button :as quo2]))
(def descriptor [{:label "Type:"
:key :type
:type :select
:options [{:key :primary
:value "Primary"}
{:key :secondary
:value "Secondary"}
{:key :grey
:value "Grey"}
{:key :outline
:value "Outline"}
{:key :ghost
:value "Ghost"}
{:key :danger
:value "Danger"}]}
{:label "Size:"
:key :size
:type :select
:options [{:key 56
:value "56"}
{:key 40
:value "40"}
{:key 32
:value "32"}
{:key 24
:value "24"}]}
{:label "Icon:"
:key :icon
:type :boolean}
{:label "Above icon:"
:key :above
:type :boolean}
{:label "After icon:"
:key :after
:type :boolean}
{:label "Before icon:"
:key :before
:type :boolean}
{:label "Disabled:"
:key :disabled
:type :boolean}
{:label "Label"
:key :label
:type :text}])
(defn cool-preview []
(let [state (reagent/atom {:label "Press Me"
:size 40})
label (reagent/cursor state [:label])
before (reagent/cursor state [:before])
after (reagent/cursor state [:after])
above (reagent/cursor state [:above])
icon (reagent/cursor state [:icon])]
(fn []
[rn/view {:margin-bottom 50
:padding 16}
[rn/view {:flex 1}
[preview/customizer state descriptor]]
[rn/view {:padding-vertical 60
:flex-direction :row
:justify-content :center}
[quo2/button (merge (dissoc @state
:theme :before :after)
{:on-press #(println "Hello world!")}
(when @above
{:above :main-icons/close-circle})
(when @before
{:before :main-icons/back})
(when @after
{:after :main-icons/next}))
(if @icon :main-icons/close-circle @label)]]])))
(defn preview-button []
[rn/view {:background-color (:ui-background @colors/theme)
:flex 1}
[rn/flat-list {:flex 1
:keyboardShouldPersistTaps :always
:header [cool-preview]
:key-fn str}]])
+63
View File
@@ -0,0 +1,63 @@
(ns quo2.screens.main
(:require [quo.react-native :as rn]
[quo.theme :as theme]
[quo.design-system.colors :as colors]
[re-frame.core :as re-frame]
[quo2.screens.button :as button]
[quo2.screens.text :as text]
[quo2.screens.tabs :as tabs]
[quo2.screens.segmented :as segmented]
[quo.core :as quo]))
(def screens [{:name :quo2-texts
:insets {:top false}
:component text/preview-text}
{:name :quo2-button
:insets {:top false}
:component button/preview-button}
{:name :quo2-tabs
:insets {:top false}
:component tabs/preview-tabs}
{:name :quo2-segmented
:insets {:top false}
:component segmented/preview-segmented}])
(defn theme-switcher []
[rn/view {:style {:flex-direction :row
:margin-vertical 8
:border-radius 4
:background-color (:ui-01 @colors/theme)
:border-width 1
:border-color (:ui-02 @colors/theme)}}
[rn/touchable-opacity {:style {:padding 8
:flex 1
:justify-content :center
:align-items :center}
:on-press #(theme/set-theme :light)}
[quo/text "Set light theme"]]
[rn/view {:width 1
:margin-vertical 4
:background-color (:ui-02 @colors/theme)}]
[rn/touchable-opacity {:style {:padding 8
:flex 1
:justify-content :center
:align-items :center}
:on-press #(theme/set-theme :dark)}
[quo/text "Set dark theme"]]])
(defn main-screen []
[rn/scroll-view {:flex 1
:padding-vertical 8
:padding-horizontal 16
:background-color (:ui-background @colors/theme)}
[theme-switcher]
[rn/view
(for [{:keys [name]} screens]
^{:key name}
[rn/touchable-opacity {:on-press #(re-frame/dispatch [:navigate-to name])}
[rn/view {:style {:padding-vertical 8}}
[quo/text (str "Preview " name)]]])]])
(def main-screens [{:name :quo2-preview
:insets {:top false}
:component main-screen}])
+48
View File
@@ -0,0 +1,48 @@
(ns quo2.screens.segmented
(:require [quo.react-native :as rn]
[quo.design-system.colors :as colors]
[quo.previews.preview :as preview]
[quo2.components.segmented-control :as quo2]
[reagent.core :as reagent]))
(def descriptor [{:label "Size:"
:key :size
:type :select
:options [{:key 32
:value "32"}
{:key 28
:value "28"}
{:key 24
:value "24"}
{:key 20
:value "20"}]}])
(defn cool-preview []
(let [state (reagent/atom {:size 32})]
(fn []
[rn/view {:margin-bottom 50
:padding 16}
[rn/view {:flex 1}
[preview/customizer state descriptor]]
[rn/view {:padding-vertical 60}
[quo2/segmented-control (merge @state
{:default-active 1
:data [{:id 1 :label "Tab 1"}
{:id 2 :label "Tab 2"}
{:id 3 :label "Tab 3"}
{:id 4 :label "Tab 4"}]
:on-change #(println "Active tab" %)})]]
[rn/view {:padding-vertical 60}
[quo2/segmented-control (merge @state
{:default-active 1
:data [{:id 1 :label "Tab 1"}
{:id 2 :label "Tab 2"}]
:on-change #(println "Active tab" %)})]]])))
(defn preview-segmented []
[rn/view {:background-color (:ui-background @colors/theme)
:flex 1}
[rn/flat-list {:flex 1
:keyboardShouldPersistTaps :always
:header [cool-preview]
:key-fn str}]])
+44
View File
@@ -0,0 +1,44 @@
(ns quo2.screens.tabs
(:require [quo.react-native :as rn]
[quo.design-system.colors :as colors]
[quo.previews.preview :as preview]
[quo2.components.tabs :as quo2]
[reagent.core :as reagent]))
(def descriptor [{:label "Size:"
:key :size
:type :select
:options [{:key 32
:value "32"}
{:key 28
:value "28"}
{:key 24
:value "24"}
{:key 20
:value "20"}]}])
(defn cool-preview []
(let [state (reagent/atom {:size 32})]
(fn []
[rn/view {:margin-bottom 50
:padding 16}
[rn/view {:flex 1}
[preview/customizer state descriptor]]
[rn/view {:padding-vertical 60
:flex-direction :row
:justify-content :center}
[quo2/tabs (merge @state
{:default-active 1
:data [{:id 1 :label "Tab 1"}
{:id 2 :label "Tab 2"}
{:id 3 :label "Tab 3"}
{:id 4 :label "Tab 4"}]
:on-change #(println "Active tab" %)})]]])))
(defn preview-tabs []
[rn/view {:background-color (:ui-background @colors/theme)
:flex 1}
[rn/flat-list {:flex 1
:keyboardShouldPersistTaps :always
:header [cool-preview]
:key-fn str}]])
+51
View File
@@ -0,0 +1,51 @@
(ns quo2.screens.text
(:require [quo.react-native :as rn]
[quo.previews.preview :as preview]
[reagent.core :as reagent]
[quo2.components.text :as quo2]
[quo.design-system.colors :as colors]))
(def descriptor [{:label "Size:"
:key :size
:type :select
:options [{:key :heading-1
:value "Heading 1"}
{:key :heading-2
:value "Heading 2"}
{:key :paragraph-1
:value "Paragraph 1"}
{:key :paragraph-2
:value "Paragraph 2"}
{:key :label
:value "Label"}]}
{:label "Weight:"
:key :weight
:type :select
:options [{:key :regular
:value "Regular"}
{:key :medium
:value "Medium"}
{:key :semi-bold
:value "Semi-bold"}
{:key :bold
:value "Bold"}
{:key :monospace
:value "Monospace"}]}])
(defn cool-preview []
(let [state (reagent/atom {})]
(fn []
[rn/view {:margin-bottom 50
:padding 16}
[preview/customizer state descriptor]
[rn/view {:padding-vertical 60}
[quo2/text @state
"The quick brown fox jumped over the lazy dog."]]])))
(defn preview-text []
[rn/view {:background-color (:ui-background @colors/theme)
:flex 1}
[rn/flat-list {:flex 1
:keyboardShouldPersistTaps :always
:header [cool-preview]
:key-fn str}]])
+7 -8
View File
@@ -101,23 +101,22 @@
(re-frame/reg-fx (re-frame/reg-fx
::resolve-contract ::resolve-contract
(fn [{:keys [chain contract on-success]}] (fn [{:keys [chain-id contract on-success]}]
(let [register (get ens/ens-registries chain)] (when contract
(when contract (if (string/starts-with? contract "0x")
(if (string/starts-with? contract "0x") (on-success contract)
(on-success contract) (ens/address chain-id contract on-success)))))
(ens/get-addr register contract on-success))))))
(fx/defn create [{:keys [db]}] (fx/defn create [{:keys [db]}]
(when-not config/google-free (when-not config/google-free
{::resolve-contract {:chain (ethereum/chain-keyword db) {::resolve-contract {:chain (ethereum/chain-id db)
:contract (contracts/get-address db :status/acquisition) :contract (contracts/get-address db :status/acquisition)
:on-success #(re-frame/dispatch [:set-in [:acquisition :contract] %])} :on-success #(re-frame/dispatch [:set-in [:acquisition :contract] %])}
::get-referrer nil})) ::get-referrer nil}))
(fx/defn login [{:keys [db]}] (fx/defn login [{:keys [db]}]
(when-not config/google-free (when-not config/google-free
{::resolve-contract {:chain (ethereum/chain-keyword db) {::resolve-contract {:chain (ethereum/chain-id db)
:contract (contracts/get-address db :status/acquisition) :contract (contracts/get-address db :status/acquisition)
:on-success #(re-frame/dispatch [:set-in [:acquisition :contract] %])} :on-success #(re-frame/dispatch [:set-in [:acquisition :contract] %])}
::check-referrer nil})) ::check-referrer nil}))
+42 -40
View File
@@ -3,7 +3,6 @@
[re-frame.core :as re-frame] [re-frame.core :as re-frame]
[status-im.ethereum.core :as ethereum] [status-im.ethereum.core :as ethereum]
[status-im.ethereum.ens :as ens] [status-im.ethereum.ens :as ens]
[status-im.ethereum.resolver :as resolver]
[status-im.add-new.db :as db] [status-im.add-new.db :as db]
[status-im.utils.random :as random] [status-im.utils.random :as random]
[status-im.utils.utils :as utils] [status-im.utils.utils :as utils]
@@ -12,14 +11,15 @@
[status-im.i18n.i18n :as i18n] [status-im.i18n.i18n :as i18n]
[status-im.contact.core :as contact] [status-im.contact.core :as contact]
[status-im.router.core :as router] [status-im.router.core :as router]
[status-im.navigation :as navigation])) [status-im.navigation :as navigation]
[status-im.ethereum.stateofus :as stateofus]
[status-im.utils.db :as utils.db]))
(re-frame/reg-fx (re-frame/reg-fx
:resolve-public-key :resolve-public-key
(fn [{:keys [chain contact-identity cb]}] (fn [{:keys [chain-id contact-identity cb]}]
(let [registry (get ens/ens-registries chain) (let [ens-name (stateofus/ens-name-parse contact-identity)]
ens-name (resolver/ens-name-parse contact-identity)] (ens/pubkey chain-id ens-name cb))))
(resolver/pubkey registry ens-name cb))))
;;NOTE we want to handle only last resolve ;;NOTE we want to handle only last resolve
(def resolve-last-id (atom nil)) (def resolve-last-id (atom nil))
@@ -27,37 +27,39 @@
(fx/defn new-chat-set-new-identity (fx/defn new-chat-set-new-identity
{:events [:new-chat/set-new-identity]} {:events [:new-chat/set-new-identity]}
[{db :db} new-identity-raw new-ens-name id] [{db :db} new-identity-raw new-ens-name id]
(when (or (not id) (= id @resolve-last-id)) (let [ens-error (and (= new-identity-raw "0x") (not (string/blank? new-ens-name)))]
(let [new-identity (utils/safe-trim new-identity-raw) (when (or (not id) (= id @resolve-last-id))
is-public-key? (and (string? new-identity) (if ens-error
(string/starts-with? new-identity "0x")) {:db (assoc-in db [:contacts/new-identity :state] :error)}
is-ens? (and (not is-public-key?) (let [new-identity (utils/safe-trim new-identity-raw)
(ens/valid-eth-name-prefix? new-identity)) is-public-key? (and (string? new-identity)
error (db/validate-pub-key db new-identity)] (utils.db/valid-public-key? new-identity))
(reset! resolve-last-id nil) is-ens? (and (not is-public-key?)
(merge {:db (assoc db (ens/valid-eth-name-prefix? new-identity))
:contacts/new-identity error (db/validate-pub-key db new-identity)]
{:public-key new-identity (reset! resolve-last-id nil)
:state (cond is-ens? (merge {:db (assoc db
:searching :contacts/new-identity
(and (string/blank? new-identity) (not new-ens-name)) {:public-key new-identity
:empty :state (cond is-ens?
error :searching
:error (and (string/blank? new-identity) (not new-ens-name))
:else :empty
:valid) error
:error error :error
:ens-name (resolver/ens-name-parse new-ens-name)})} :else
(when is-ens? :valid)
(reset! resolve-last-id (random/id)) :error error
(let [chain (ethereum/chain-keyword db)] :ens-name (stateofus/ens-name-parse new-ens-name)})}
{:resolve-public-key (when is-ens?
{:chain chain (reset! resolve-last-id (random/id))
:contact-identity new-identity {:resolve-public-key
:cb #(re-frame/dispatch [:new-chat/set-new-identity {:chain-id (ethereum/chain-id db)
% :contact-identity new-identity
new-identity :cb #(re-frame/dispatch [:new-chat/set-new-identity
@resolve-last-id])}})))))) %
new-identity
@resolve-last-id])}})))))))
(fx/defn clear-new-identity (fx/defn clear-new-identity
{:events [::clear-new-identity ::new-chat-focus]} {:events [::clear-new-identity ::new-chat-focus]}
@@ -66,7 +68,7 @@
(fx/defn qr-code-handled (fx/defn qr-code-handled
{:events [::qr-code-handled]} {:events [::qr-code-handled]}
[{:keys [db] :as cofx} {:keys [type public-key chat-id data]} {:keys [new-contact?] :as opts}] [{:keys [db] :as cofx} {:keys [type public-key chat-id data ens-name]} {:keys [new-contact?] :as opts}]
(let [public-key? (and (string? data) (let [public-key? (and (string? data)
(string/starts-with? data "0x")) (string/starts-with? data "0x"))
chat-key (cond chat-key (cond
@@ -78,9 +80,9 @@
(if-not validation-result (if-not validation-result
(if new-contact? (if new-contact?
(fx/merge cofx (fx/merge cofx
(contact/add-contact chat-key nil nil) (contact/add-contact chat-key nil ens-name)
(navigation/navigate-to-cofx :contacts-list {})) (navigation/navigate-to-cofx :contacts-list {}))
(chat/start-chat cofx chat-key nil)) (chat/start-chat cofx chat-key ens-name))
{:utils/show-popup {:title (i18n/label :t/unable-to-read-this-code) {:utils/show-popup {:title (i18n/label :t/unable-to-read-this-code)
:content (case validation-result :content (case validation-result
:invalid :invalid
+57 -65
View File
@@ -6,7 +6,6 @@
[status-im.ethereum.core :as ethereum] [status-im.ethereum.core :as ethereum]
[status-im.ethereum.ens :as ens] [status-im.ethereum.ens :as ens]
[status-im.ethereum.json-rpc :as json-rpc] [status-im.ethereum.json-rpc :as json-rpc]
[status-im.ethereum.resolver :as resolver]
[status-im.i18n.i18n :as i18n] [status-im.i18n.i18n :as i18n]
[status-im.native-module.core :as status] [status-im.native-module.core :as status]
[status-im.ui.components.list-selection :as list-selection] [status-im.ui.components.list-selection :as list-selection]
@@ -14,7 +13,6 @@
[status-im.utils.contenthash :as contenthash] [status-im.utils.contenthash :as contenthash]
[status-im.utils.fx :as fx] [status-im.utils.fx :as fx]
[status-im.utils.http :as http] [status-im.utils.http :as http]
[status-im.utils.multihash :as multihash]
[status-im.utils.platform :as platform] [status-im.utils.platform :as platform]
[status-im.utils.random :as random] [status-im.utils.random :as random]
[status-im.utils.types :as types] [status-im.utils.types :as types]
@@ -73,22 +71,10 @@
(let [history-host (http/url-host (try (nth history history-index) (catch js/Error _)))] (let [history-host (http/url-host (try (nth history history-index) (catch js/Error _)))]
(cond-> browser history-host (assoc :unsafe? (eth-phishing-detect history-host))))) (cond-> browser history-host (assoc :unsafe? (eth-phishing-detect history-host)))))
(defn- content->hash [hex] (defn resolve-ens-contenthash-callback [url]
(when (and hex (not= hex "0x")) (if (not (string/blank? url))
;; TODO(julien) Remove once our ENS DApp are migrated (re-frame/dispatch [:browser.callback/resolve-ens-multihash-success url])
(multihash/base58 (multihash/create :sha2-256 (subs hex 2))))) (re-frame/dispatch [:browser.callback/resolve-ens-multihash-error])))
(defn resolve-ens-content-callback [hex]
(let [hash (content->hash hex)]
(if (and hash (not= hash resolver/default-hash))
(re-frame/dispatch [:browser.callback/resolve-ens-multihash-success {:namespace :ipfs :hash hash}])
(re-frame/dispatch [:browser.callback/resolve-ens-contenthash]))))
(defn resolve-ens-contenthash-callback [hex]
(let [{:keys [hash] :as m} (contenthash/decode hex)]
(if (and hash (not= hash resolver/default-hash))
(re-frame/dispatch [:browser.callback/resolve-ens-multihash-success m])
(re-frame/dispatch [:browser.callback/resolve-ens-multihash-error]))))
(fx/defn resolve-url (fx/defn resolve-url
[{:keys [db]} {:keys [error? resolved-url]}] [{:keys [db]} {:keys [error? resolved-url]}]
@@ -96,26 +82,12 @@
(let [current-url (get-current-url (get-current-browser db)) (let [current-url (get-current-url (get-current-browser db))
host (http/url-host current-url)] host (http/url-host current-url)]
(if (and (not resolved-url) (ens/is-valid-eth-name? host)) (if (and (not resolved-url) (ens/is-valid-eth-name? host))
(let [chain (ethereum/chain-keyword db)] {:db (update db :browser/options assoc :resolving? true)
{:db (update db :browser/options assoc :resolving? true) :browser/resolve-ens-contenthash {:chain-id (ethereum/chain-id db)
:browser/resolve-ens-content {:registry (get ens/ens-registries :ens-name host
chain) :cb resolve-ens-contenthash-callback}}
:ens-name host
:cb resolve-ens-content-callback}})
{:db (update db :browser/options assoc :url (or resolved-url current-url) :resolving? false)})))) {:db (update db :browser/options assoc :url (or resolved-url current-url) :resolving? false)}))))
(fx/defn resolve-ens-contenthash
{:events [:browser.callback/resolve-ens-contenthash]}
[{:keys [db]}]
(let [current-url (get-current-url (get-current-browser db))
host (http/url-host current-url)
chain (ethereum/chain-keyword db)]
{:db (update db :browser/options assoc :resolving? true)
:browser/resolve-ens-contenthash {:registry (get ens/ens-registries
chain)
:ens-name host
:cb resolve-ens-contenthash-callback}}))
(fx/defn update-browser (fx/defn update-browser
[{:keys [db]} [{:keys [db]}
{:keys [browser-id] :as browser}] {:keys [browser-id] :as browser}]
@@ -135,28 +107,37 @@
{:keys [url] :as bookmark}] {:keys [url] :as bookmark}]
{:db (assoc-in db [:bookmarks/bookmarks url] bookmark) {:db (assoc-in db [:bookmarks/bookmarks url] bookmark)
::json-rpc/call [{:method "browsers_storeBookmark" ::json-rpc/call [{:method "browsers_storeBookmark"
:params [bookmark]
:on-success #(re-frame/dispatch [:browser/sync-bookmark %1])}]})
(fx/defn sync-bookmark
{:events [:browser/sync-bookmark]}
[_ bookmark]
{::json-rpc/call [{:method "wakuext_syncBookmark"
:params [bookmark] :params [bookmark]
:on-success #()}]}) :on-success #()}]})
(fx/defn update-bookmark (fx/defn update-bookmark
{:events [:browser/update-bookmark]} {:events [:browser/update-bookmark]}
[{:keys [db]} [{:keys [db] :as cofx}
{:keys [url] :as bookmark}] {:keys [url] :as bookmark}]
{:db (update-in db (let [old-bookmark (get-in db [:bookmarks/bookmarks url])
[:bookmarks/bookmarks url] new-bookmark (merge old-bookmark bookmark)]
merge bookmark) (fx/merge cofx {:db (assoc-in db [:bookmarks/bookmarks url] new-bookmark)
::json-rpc/call [{:method "browsers_updateBookmark" ::json-rpc/call [{:method "browsers_updateBookmark"
:params [url bookmark] :params [url bookmark]
:on-success #()}]}) :on-success #(re-frame/dispatch [:browser/sync-bookmark new-bookmark])}]})))
(fx/defn delete-bookmark (fx/defn delete-bookmark
{:events [:browser/delete-bookmark]} {:events [:browser/delete-bookmark]}
[{:keys [db]} [{:keys [db] :as cofx}
url] url]
{:db (update db :bookmarks/bookmarks dissoc url) (let [old-bookmark (get-in db [:bookmarks/bookmarks url])
::json-rpc/call [{:method "browsers_deleteBookmark" removed-bookmark (merge old-bookmark {:removed true})]
:params [url] (fx/merge cofx {:db (update db :bookmarks/bookmarks dissoc url)
:on-success #()}]}) ::json-rpc/call [{:method "browsers_removeBookmark"
:params [url]
:on-success #(re-frame/dispatch [:browser/sync-bookmark removed-bookmark])}]})))
(defn can-go-back? [{:keys [history-index]}] (defn can-go-back? [{:keys [history-index]}]
(pos? history-index)) (pos? history-index))
@@ -217,11 +198,11 @@
(fx/defn resolve-ens-multihash-success (fx/defn resolve-ens-multihash-success
{:events [:browser.callback/resolve-ens-multihash-success]} {:events [:browser.callback/resolve-ens-multihash-success]}
[{:keys [db] :as cofx} m] [{:keys [db] :as cofx} url]
(let [current-url (get-current-url (get-current-browser db)) (let [current-url (get-current-url (get-current-browser db))
host (http/url-host current-url) host (http/url-host current-url)
path (subs current-url (+ (.indexOf ^js current-url host) (count host))) path (subs current-url (+ (.indexOf ^js current-url host) (count host)))
gateway (storage-gateway m)] gateway url]
(fx/merge cofx (fx/merge cofx
{:db (-> (update db :browser/options {:db (-> (update db :browser/options
assoc assoc
@@ -418,12 +399,19 @@
:result {:jsonrpc "2.0" :result {:jsonrpc "2.0"
:id (int id) :id (int id)
:result (if (= method "eth_coinbase") dapps-address [dapps-address])}}) :result (if (= method "eth_coinbase") dapps-address [dapps-address])}})
{:browser/call-rpc [payload (if (= method "personal_ecRecover")
#(re-frame/dispatch [:browser.callback/call-rpc {:signing.fx/recover-message {:params {:message (first params)
{:type constants/web3-send-async-callback :signature (second params)}
:messageId message-id :on-completed #(re-frame/dispatch [:browser.callback/call-rpc
:error %1 {:type constants/web3-send-async-callback
:result %2}])]})))) :messageId message-id
:result (types/json->clj %)}])}}
{:browser/call-rpc [payload
#(re-frame/dispatch [:browser.callback/call-rpc
{:type constants/web3-send-async-callback
:messageId message-id
:error %1
:result %2}])]})))))
(fx/defn handle-no-permissions [cofx {:keys [method id]} message-id] (fx/defn handle-no-permissions [cofx {:keys [method id]} message-id]
(if (= method "eth_accounts") (if (= method "eth_accounts")
@@ -490,23 +478,18 @@
(= type constants/api-request) (= type constants/api-request)
(browser.permissions/process-permission cofx dapp-name permission messageId params)))) (browser.permissions/process-permission cofx dapp-name permission messageId params))))
(re-frame/reg-fx
:browser/resolve-ens-content
(fn [{:keys [registry ens-name cb]}]
(resolver/content registry ens-name cb)))
(re-frame/reg-fx (re-frame/reg-fx
:browser/resolve-ens-contenthash :browser/resolve-ens-contenthash
(fn [{:keys [registry ens-name cb]}] (fn [{:keys [chain-id ens-name cb]}]
(resolver/contenthash registry ens-name cb))) (ens/resource-url chain-id ens-name cb)))
(re-frame/reg-fx (re-frame/reg-fx
:browser/send-to-bridge :browser/send-to-bridge
(fn [message] (fn [message]
(let [^js webview @webview-ref/webview-ref (let [^js webview @webview-ref/webview-ref
msg (str "ReactNativeWebView.onMessage('" msg (str "(function() { var __send = function() { if (ReactNativeWebView.onMessage) { ReactNativeWebView.onMessage('"
(types/clj->json message) (types/clj->json message)
"');")] "');} else {setTimeout(__send, 0)}}; __send();})();")]
(when (and message webview) (when (and message webview)
(.injectJavaScript webview msg))))) (.injectJavaScript webview msg)))))
@@ -584,3 +567,12 @@
{:events [:browser/loading-started]} {:events [:browser/loading-started]}
[cofx] [cofx]
(update-browser-options cofx {:error? false :loading? true})) (update-browser-options cofx {:error? false :loading? true}))
(fx/defn handle-bookmarks
[{:keys [db]} bookmarks]
(let [changed-bookmarks (reduce (fn [acc {:keys [url] :as bookmark}]
(assoc acc url bookmark))
{}
bookmarks)
stored-bookmarks (get-in db [:bookmarks/bookmarks])]
{:db (assoc-in db [:bookmarks/bookmarks] (merge stored-bookmarks changed-bookmarks))}))
+4 -2
View File
@@ -387,12 +387,14 @@
(fx/defn show-profile (fx/defn show-profile
{:events [:chat.ui/show-profile]} {:events [:chat.ui/show-profile]}
[{:keys [db] :as cofx} identity] [{:keys [db] :as cofx} identity ens-name]
(let [my-public-key (get-in db [:multiaccount :public-key])] (let [my-public-key (get-in db [:multiaccount :public-key])]
(when (not= my-public-key identity) (when (not= my-public-key identity)
(fx/merge (fx/merge
cofx cofx
{:db (assoc db :contacts/identity identity)} {:db (-> db
(assoc :contacts/identity identity)
(assoc :contacts/ens-name ens-name))}
(start-profile-chat identity true))))) (start-profile-chat identity true)))))
(fx/defn clear-history-pressed (fx/defn clear-history-pressed
+14 -16
View File
@@ -2,6 +2,7 @@
(:require [re-frame.core :as re-frame] (:require [re-frame.core :as re-frame]
[status-im.utils.fx :as fx] [status-im.utils.fx :as fx]
["@react-native-community/cameraroll" :as CameraRoll] ["@react-native-community/cameraroll" :as CameraRoll]
["react-native-blob-util" :default ReactNativeBlobUtil]
[status-im.utils.types :as types] [status-im.utils.types :as types]
[status-im.utils.config :as config] [status-im.utils.config :as config]
[status-im.ui.components.permissions :as permissions] [status-im.ui.components.permissions :as permissions]
@@ -12,6 +13,7 @@
[status-im.i18n.i18n :as i18n] [status-im.i18n.i18n :as i18n]
[status-im.utils.utils :as utils] [status-im.utils.utils :as utils]
[status-im.utils.platform :as platform] [status-im.utils.platform :as platform]
[status-im.utils.fs :as fs]
[status-im.chat.models :as chat])) [status-im.chat.models :as chat]))
(def maximum-image-size-px 2000) (def maximum-image-size-px 2000)
@@ -37,31 +39,27 @@
(.-localIdentifier result) (.-localIdentifier result)
(.-path result))) (.-path result)))
(defn android-save-image-to-gallery [base64-uri] (def temp-image-url (str (fs/cache-dir) "/StatusIm_Image.jpeg"))
(react/image-get-size
base64-uri (defn download-image-http [base64-uri on-success]
(fn [width height] (-> (.config ReactNativeBlobUtil (clj->js {:trusty platform/ios?
(image-processing/resize :path temp-image-url}))
base64-uri (.fetch "GET" base64-uri)
width (.then #(on-success (.path %)))
height (.catch #(log/error "could not save image"))))
100
(fn [^js resized-image] (defn save-to-gallery [path] (.save CameraRoll path))
(let [path (.-path resized-image)
path (if (string/starts-with? path "file") path (str "file://" path))]
(.save CameraRoll path)))
#(log/error "could not resize image" %)))))
(re-frame/reg-fx (re-frame/reg-fx
::save-image-to-gallery ::save-image-to-gallery
(fn [base64-uri] (fn [base64-uri]
(if platform/ios? (if platform/ios?
(-> (.save CameraRoll base64-uri) (-> (download-image-http base64-uri save-to-gallery)
(.catch #(utils/show-popup (i18n/label :t/error) (.catch #(utils/show-popup (i18n/label :t/error)
(i18n/label :t/external-storage-denied)))) (i18n/label :t/external-storage-denied))))
(permissions/request-permissions (permissions/request-permissions
{:permissions [:write-external-storage] {:permissions [:write-external-storage]
:on-allowed #(android-save-image-to-gallery base64-uri) :on-allowed #(download-image-http base64-uri save-to-gallery)
:on-denied (fn [] :on-denied (fn []
(utils/set-timeout (utils/set-timeout
#(utils/show-popup (i18n/label :t/error) #(utils/show-popup (i18n/label :t/error)
+3 -3
View File
@@ -174,7 +174,7 @@
{:chat-id chat-id {:chat-id chat-id
:content-type constants/content-type-image :content-type constants/content-type-image
:image-path (utils/safe-replace uri #"file://" "") :image-path (utils/safe-replace uri #"file://" "")
:text (i18n/label :t/update-to-see-image)}) :text (i18n/label :t/update-to-see-image {"locale" "en"})})
images))) images)))
(fx/defn clean-input [{:keys [db] :as cofx} current-chat-id] (fx/defn clean-input [{:keys [db] :as cofx} current-chat-id]
@@ -227,7 +227,7 @@
:content-type constants/content-type-audio :content-type constants/content-type-audio
:audio-path audio-path :audio-path audio-path
:audio-duration-ms duration :audio-duration-ms duration
:text (i18n/label :t/update-to-listen-audio)}))) :text (i18n/label :t/update-to-listen-audio {"locale" "en"})})))
(fx/defn send-sticker-message (fx/defn send-sticker-message
[cofx {:keys [hash pack]} current-chat-id] [cofx {:keys [hash pack]} current-chat-id]
@@ -236,7 +236,7 @@
:content-type constants/content-type-sticker :content-type constants/content-type-sticker
:sticker {:hash hash :sticker {:hash hash
:pack pack} :pack pack}
:text (i18n/label :t/update-to-see-sticker)}))) :text (i18n/label :t/update-to-see-sticker {"locale" "en"})})))
(fx/defn send-edited-message [{:keys [db] :as cofx} text {:keys [message-id]}] (fx/defn send-edited-message [{:keys [db] :as cofx} text {:keys [message-id]}]
(fx/merge (fx/merge
+5 -4
View File
@@ -42,11 +42,15 @@
[{:keys [db]} community-id] [{:keys [db]} community-id]
{:db (community-failed-to-resolve db community-id)}) {:db (community-failed-to-resolve db community-id)})
(defn community-link [id]
(str "https://join.status.im/c/" id))
(fx/defn handle-community-resolved (fx/defn handle-community-resolved
{:events [::community-resolved]} {:events [::community-resolved]}
[{:keys [db] :as cofx} community-id community] [{:keys [db] :as cofx} community-id community]
(fx/merge cofx (fx/merge cofx
{:db (community-resolved db community-id)} {:db (community-resolved db community-id)
:dispatch [::cache-link-preview-data (community-link community-id) community]}
(models.communities/handle-community community))) (models.communities/handle-community community)))
(fx/defn resolve-community-info (fx/defn resolve-community-info
@@ -78,9 +82,6 @@
:link-previews-cache :link-previews-cache
(assoc (get multiaccount :link-previews-cache {}) site data))) (assoc (get multiaccount :link-previews-cache {}) site data)))
(defn community-link [id]
(str "https://join.status.im/c/" id))
(defn cache-community-preview-data (defn cache-community-preview-data
[{:keys [id] :as community}] [{:keys [id] :as community}]
(re-frame/dispatch [::cache-link-preview-data (re-frame/dispatch [::cache-link-preview-data
+86 -62
View File
@@ -9,7 +9,8 @@
[status-im.utils.utils :as utils] [status-im.utils.utils :as utils]
[status-im.native-module.core :as status] [status-im.native-module.core :as status]
[quo.react-native :as rn] [quo.react-native :as rn]
[quo.react :as react])) [quo.react :as react]
[status-im.multiaccounts.core :as multiaccounts]))
(def at-sign "@") (def at-sign "@")
@@ -170,53 +171,83 @@
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defn get-mentionable-users (defn add-searchable-phrases
[{{:keys [current-chat-id] [{:keys [alias name nickname] :as user}]
:contacts/keys [contacts] :as db} :db}] (reduce
(let [{:keys [chat-type users] :as chat} (fn [user s]
(get-in db [:chats current-chat-id]) (if (nil? s)
chat-specific-suggestions user
(cond (let [new-words (concat
(= chat-type constants/private-group-chat-type) [s]
(let [{:keys [public-key]} (:multiaccount db) (rest (string/split s " ")))]
all-contacts (:contacts/contacts db) (update user :searchable-phrases (fnil concat []) new-words))))
group-contacts user
(contact.db/get-all-contacts-in-group-chat [alias name nickname]))
(disj (:contacts chat) public-key)
nil
all-contacts
nil)]
(reduce
(fn [acc {:keys [alias public-key identicon name]}]
(assoc acc public-key
{:alias alias
:identicon identicon
:public-key public-key
:name name}))
{}
group-contacts))
(= chat-type constants/one-to-one-chat-type)
(assoc users
current-chat-id
(contact.db/public-key->contact contacts current-chat-id))
:else users) (defn add-searchable-phrases-to-contact
{:keys [name preferred-name public-key]} [{:keys [alias name added? blocked? identicon public-key nickname]} community-chat?]
(:multiaccount db)] (when (and alias
(reduce (not (string/blank? alias))
(fn [acc [key {:keys [alias name identicon]}]] (or name
(let [name (utils/safe-replace name ".stateofus.eth" "")] nickname
(assoc acc key added?
{:alias alias community-chat?)
:name (or name alias) (not blocked?))
:identicon identicon (add-searchable-phrases
:public-key key}))) {:alias alias
(assoc chat-specific-suggestions :name (or (utils/safe-replace name ".stateofus.eth" "") alias)
public-key :identicon identicon
{:alias name :nickname nickname
:name (or preferred-name name) :public-key public-key})))
:public-key public-key})
contacts))) (defn mentionable-contacts [contacts]
(reduce
(fn [acc [key contact]]
(let [mentionable-contact (add-searchable-phrases-to-contact contact false)]
(if (nil? mentionable-contact)
acc
(assoc acc key mentionable-contact))))
{}
contacts))
(defn mentionable-contacts-from-identites [contacts my-public-key identities]
(reduce (fn [acc identity]
(let [contact (multiaccounts/contact-by-identity
contacts identity)
contact (if (string/blank? (:alias contact))
(assoc contact :alias
(get-in contact [:names :three-words-name]))
contact)
mentionable-contact (add-searchable-phrases-to-contact
contact true)]
(if (nil? mentionable-contact) acc
(assoc acc identity mentionable-contact))))
{}
(remove #(= my-public-key %) identities)))
(defn get-mentionable-users [chat all-contacts current-multiaccount community-members]
(let [{:keys [name preferred-name public-key]} current-multiaccount
{:keys [chat-id users contacts chat-type]} chat
mentionable-contacts (mentionable-contacts all-contacts)
mentionable-users (assoc users public-key {:alias name
:name (or preferred-name name)
:public-key public-key})]
(cond
(= chat-type constants/private-group-chat-type)
(merge mentionable-users
(mentionable-contacts-from-identites all-contacts public-key contacts))
(= chat-type constants/one-to-one-chat-type)
(assoc mentionable-users chat-id (get mentionable-contacts chat-id
(-> chat-id
contact.db/public-key->new-contact
contact.db/enrich-contact)))
(= chat-type constants/community-chat-type)
(merge mentionable-users
(mentionable-contacts-from-identites all-contacts public-key (keys community-members)))
:else (merge mentionable-users mentionable-contacts))))
(def ending-chars "[\\s\\.,;:]") (def ending-chars "[\\s\\.,;:]")
(def ending-chars-regex (re-pattern ending-chars)) (def ending-chars-regex (re-pattern ending-chars))
@@ -328,8 +359,14 @@
(recur new-text users (rest idxs) (recur new-text users (rest idxs)
(+ diff (- (count text) (count new-text))))))))))))) (+ diff (- (count text) (count new-text)))))))))))))
(defn check-mentions [cofx text] (defn check-mentions [{:keys [db]} text]
(replace-mentions text (get-mentionable-users cofx))) (let [current-chat-id (:current-chat-id db)
chat (get-in db [:chats current-chat-id])
all-contacts (:contacts/contacts db)
current-multiaccount (:multiaccount db)
community-members (get-in db [:communities (:community-id chat) :members])
mentionable-users (get-mentionable-users chat all-contacts current-multiaccount community-members)]
(replace-mentions text mentionable-users)))
(defn get-at-sign-idxs (defn get-at-sign-idxs
([text start] ([text start]
@@ -634,19 +671,6 @@
[_ ref cursor] [_ ref cursor]
{::reset-text-input-cursor [ref cursor]}) {::reset-text-input-cursor [ref cursor]})
(defn add-searchable-phrases
[{:keys [alias name nickname] :as user}]
(reduce
(fn [user s]
(if (nil? s)
user
(let [new-words (concat
[s]
(rest (string/split s " ")))]
(update user :searchable-phrases (fnil concat []) new-words))))
user
[alias name nickname]))
(defn is-valid-terminating-character? [c] (defn is-valid-terminating-character? [c]
(case c (case c
"\t" true ; tab "\t" true ; tab
+13
View File
@@ -222,3 +222,16 @@
:c2 {:m3 {:chat-id :c2 :message-id :m3} :c2 {:m3 {:chat-id :c2 :message-id :m3}
:m4 {:chat-id :c2 :message-id :m4}}}}} :m4 {:chat-id :c2 :message-id :m4}}}}}
[:m1 :m3])) [:m1 :m3]))
(defn remove-cleared-message [messages cleared-at]
(into {} (remove #(let [message-clock (:clock-value (second %))]
(<= message-clock cleared-at))
messages)))
(fx/defn handle-cleared-histories-messages
{:events [::handle-cleared-hisotories-messages]}
[{:keys [db]} cleared-histories]
{:db (reduce (fn [acc current]
(update-in acc [:messages (:chatId current)] remove-cleared-message (:clearedAt current)))
db
cleared-histories)})
+28 -7
View File
@@ -221,12 +221,10 @@
(fx/defn create (fx/defn create
{:events [::create-confirmation-pressed]} {:events [::create-confirmation-pressed]}
[{:keys [db]}] [{:keys [db]}]
(let [{:keys [name description image]} (get db :communities/create)] (let [{:keys [name description membership image]} (get db :communities/create)]
;; If access is ENS only, we set the access to require approval and set the rule
;; of ens only
(let [params {:name name (let [params {:name name
:description description :description description
:membership constants/community-on-request-access :membership membership
:color (rand-nth colors/chat-colors) :color (rand-nth colors/chat-colors)
:image (string/replace-first (str image) #"file://" "") :image (string/replace-first (str image) #"file://" "")
:imageAx 0 :imageAx 0
@@ -288,7 +286,7 @@
(fx/defn edit-channel (fx/defn edit-channel
{:events [::edit-channel-confirmation-pressed]} {:events [::edit-channel-confirmation-pressed]}
[{:keys [db] :as cofx}] [{:keys [db] :as cofx}]
(let [{:keys [name description color community-id emoji edit-channel-id category-id]} (let [{:keys [name description color community-id emoji edit-channel-id category-id position]}
(get db :communities/create-channel)] (get db :communities/create-channel)]
{::json-rpc/call [{:method "wakuext_editCommunityChat" {::json-rpc/call [{:method "wakuext_editCommunityChat"
:params [community-id :params [community-id
@@ -298,6 +296,7 @@
:color color :color color
:emoji emoji} :emoji emoji}
:category_id category-id :category_id category-id
:position position
:permissions {:access constants/community-channel-access-no-membership}}] :permissions {:access constants/community-channel-access-no-membership}}]
:js-response true :js-response true
:on-success #(re-frame/dispatch [::community-channel-edited %]) :on-success #(re-frame/dispatch [::community-channel-edited %])
@@ -345,7 +344,7 @@
(fx/defn edit-channel-pressed (fx/defn edit-channel-pressed
{:events [::edit-channel-pressed]} {:events [::edit-channel-pressed]}
[{:keys [db] :as cofx} community-id chat-name description color emoji chat-id category-id] [{:keys [db] :as cofx} community-id chat-name description color emoji chat-id category-id position]
(let [{:keys [color emoji]} (if (string/blank? emoji) (let [{:keys [color emoji]} (if (string/blank? emoji)
(rand-nth emoji-thumbnail-styles/emoji-picker-default-thumbnails) (rand-nth emoji-thumbnail-styles/emoji-picker-default-thumbnails)
{:color color :emoji emoji})] {:color color :emoji emoji})]
@@ -356,7 +355,8 @@
:community-id community-id :community-id community-id
:emoji emoji :emoji emoji
:edit-channel-id chat-id :edit-channel-id chat-id
:category-id category-id})} :category-id category-id
:position position})}
(navigation/open-modal :edit-community-channel nil)))) (navigation/open-modal :edit-community-channel nil))))
(fx/defn community-created (fx/defn community-created
@@ -564,6 +564,15 @@
:on-success #(re-frame/dispatch [:sanitize-messages-and-process-response %]) :on-success #(re-frame/dispatch [:sanitize-messages-and-process-response %])
:on-error #(log/error "failed to remove chat from community" %)}]})) :on-error #(log/error "failed to remove chat from community" %)}]}))
(fx/defn delete-community-chat
{:events [:delete-community-chat]}
[_ community-id chat-id]
{::json-rpc/call [{:method "wakuext_deleteCommunityChat"
:params [community-id chat-id]
:js-response true
:on-success #(re-frame/dispatch [:sanitize-messages-and-process-response %])
:on-error #(log/error "failed to delete community chat" %)}]})
(fx/defn delete-category (fx/defn delete-category
{:events [:delete-community-category]} {:events [:delete-community-category]}
[_ community-id category-id] [_ community-id category-id]
@@ -592,6 +601,18 @@
(navigation/navigate-back) (navigation/navigate-back)
(remove-chat-from-category community-id id categoryID)))) (remove-chat-from-category community-id id categoryID))))
(fx/defn reorder-category-chat
{:events [::reorder-community-category-chat]}
[_ community-id category-id chat-id new-position]
{::json-rpc/call [{:method "wakuext_reorderCommunityChat"
:params [{:communityId community-id
:categoryId category-id
:chatId chat-id
:position new-position}]
:js-response true
:on-success #(re-frame/dispatch [:sanitize-messages-and-process-response %])
:on-error #(log/error "failed to reorder community category chat" %)}]})
(fx/defn reorder-category (fx/defn reorder-category
{:events [::reorder-community-category]} {:events [::reorder-community-category]}
[_ community-id category-id new-position] [_ community-id category-id new-position]
+1
View File
@@ -146,6 +146,7 @@
(def ^:const timeline-chat-id "@timeline70bd746ddcc12beb96b2c9d572d0784ab137ffc774f5383e50585a932080b57cca0484b259e61cecbaa33a4c98a300a") (def ^:const timeline-chat-id "@timeline70bd746ddcc12beb96b2c9d572d0784ab137ffc774f5383e50585a932080b57cca0484b259e61cecbaa33a4c98a300a")
(def ^:const two-mins (* 2 60))
(def ^:const one-day (* 60 60 24)) (def ^:const one-day (* 60 60 24))
(def ^:const three-days (* one-day 3)) (def ^:const three-days (* one-day 3))
(def ^:const one-week (* one-day 7)) (def ^:const one-week (* one-day 7))
+2 -2
View File
@@ -9,9 +9,9 @@
(fx/defn send-message-pressed (fx/defn send-message-pressed
{:events [:contact.ui/send-message-pressed] {:events [:contact.ui/send-message-pressed]
:interceptors [(re-frame/inject-cofx :random-id-generator)]} :interceptors [(re-frame/inject-cofx :random-id-generator)]}
[cofx {:keys [public-key]}] [cofx {:keys [public-key ens-name]}]
(fx/merge cofx (fx/merge cofx
{:dispatch-later [{:ms 1000 :dispatch [:chat.ui/start-chat public-key]}]} {:dispatch-later [{:ms 1000 :dispatch [:chat.ui/start-chat public-key ens-name]}]}
(notification-center/accept-all-activity-center-notifications-from-chat public-key) (notification-center/accept-all-activity-center-notifications-from-chat public-key)
(navigation/pop-to-root-tab :chat-stack))) (navigation/pop-to-root-tab :chat-stack)))

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