Compare commits

...
Author SHA1 Message Date
Samuel Hawksby-Robinson 5d245f721a Updated status-go version 2021-11-03 16:38:43 +00:00
andrey 21c9248536 [#10142] Add possibility to select wallet for ENS names
Signed-off-by: andrey <motor4ik@gmail.com>
2021-11-03 16:30:06 +01:00
andrey 9b3fb2ac69 fix custom fee bottom sheet
Signed-off-by: andrey <motor4ik@gmail.com>
2021-11-02 16:32:32 +01:00
andrey dd3ded8656 [#12530] Scrolling issues on the 'Max priority fee' bottom sheet 2021-11-02 16:32:24 +01:00
andrey 8dc6d8d467 fix status-bar on Android
Signed-off-by: andrey <motor4ik@gmail.com>
2021-11-02 12:19:21 +01:00
Roman Volosovskyi adca53f3ec [#12531 pairing] Sync read messages 2021-11-02 12:30:21 +02:00
Roman Volosovskyi 9035954f8b Export unencrypted db on iOS 2021-11-01 14:08:54 +02:00
Parvesh Monu 1034d542db Online Status Indicator (#12716) 2021-10-29 21:55:01 +05:30
Churikova Tetiana ec319974bd e2e: new checks and fixes
Signed-off-by: Churikova Tetiana <churikova.tm@gmail.com>
2021-10-29 15:21:49 +02:00
Samuel Hawksby-Robinson 0469419f9a Added release notes for 1.17
Signed-off-by: Samuel Hawksby-Robinson <samuel@samyoul.com>
2021-10-29 13:54:30 +01:00
Shivek Khurana b1daf12486 🙅🏻 Add warning and disable option if no profile pic added
Remove warning from list screen

Signed-off-by: Shivek Khurana <shivek@status.im>
2021-10-29 13:17:22 +05:30
andrey c6f041f0c5 [#12750] Show warning when adding ENS name for wallet account
Signed-off-by: andrey <motor4ik@gmail.com>
2021-10-28 16:23:47 +02:00
Parvesh Monu 9a2987da60 fix emoji keyboard height for ios devices (#12759) 2021-10-28 17:41:06 +05:30
jakub 3f7b985e1a nix: update gradle dependencies
Signed-off-by: Jakub Sokołowski <jakub@status.im>
2021-10-26 15:40:25 +02:00
jakub edb3ed4ed2 nix: upgrade go-maven-resolver to 1.1.2
Fixes and issue with HTML entity characters in POMs.

https://github.com/status-im/go-maven-resolver/pull/6
https://github.com/status-im/go-maven-resolver/releases/tag/v1.1.2

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2021-10-26 15:39:55 +02:00
jakub 200eb189ea nix: fix use of androidPkgs in gradle shell
Signed-off-by: Jakub Sokołowski <jakub@status.im>
2021-10-26 15:39:54 +02:00
Churikova Tetiana ed609674d3 e2e: improved logging in views
Signed-off-by: Churikova Tetiana <churikova.tm@gmail.com>
2021-10-25 18:06:12 +02:00
Brian Sztamfater 40b5c23b54 Fix react-native-share linking
Signed-off-by: Brian Sztamfater <brian@status.im>
2021-10-25 09:21:41 -03:00
andrey 77e593572f [#12744] Issue using app.ens in browsee
Signed-off-by: andrey <motor4ik@gmail.com>
2021-10-25 14:04:11 +02:00
andrey c4aac1478e fix chat toolbar
Signed-off-by: andrey <motor4ik@gmail.com>
2021-10-25 11:41:33 +02:00
Churikova Tetiana 3a7fecf5ce e2e: fixes and update
Signed-off-by: Churikova Tetiana <churikova.tm@gmail.com>
2021-10-22 19:29:07 +02:00
Parvesh Monu 7d6bee9099 Identify New Chats (#12654) 2021-10-22 14:48:58 +05:30
andrey 45c1896717 [#12599] Clicking on 3 word user name does nothing
Signed-off-by: andrey <motor4ik@gmail.com>
2021-10-21 14:38:46 +02:00
andrey cd30a04626 [#12731] Blank space in place of 1-1 chat with a blocked user on the home screen
Signed-off-by: andrey <motor4ik@gmail.com>
2021-10-21 14:31:35 +02:00
Roman Volosovskyi 8f5d3df215 [#12720] attempt to fix crash on accepting starter pack 2021-10-21 13:30:33 +03:00
Andrea Maria Piana 2ff4f5aba4 Hide transaction management
Signed-off-by: Andrea Maria Piana <andrea.maria.piana@gmail.com>
2021-10-20 19:28:09 +01:00
Andrea Maria Piana 84ccbbbdf7 Send profile pictures in private chats
Signed-off-by: Andrea Maria Piana <andrea.maria.piana@gmail.com>
2021-10-20 19:22:21 +01:00
andrey 760b021b8a [#12718] Endless spinner when signing TX with custom nonce (Keycard account only)
Signed-off-by: andrey <motor4ik@gmail.com>
2021-10-20 16:09:08 +02:00
andrey 7a7b365a00 [#12717] No preview for transaction messages in 1-1 chat
Signed-off-by: andrey <motor4ik@gmail.com>
2021-10-20 16:08:09 +02:00
jinhojang6 add5102bbf Update translations
Signed-off-by: andrey <motor4ik@gmail.com>
2021-10-20 12:42:31 +02:00
Vitaliy Vlasov 21e4885fc9 Fix field names related to Wakuv2 config
Signed-off-by: Andrea Maria Piana <andrea.maria.piana@gmail.com>
2021-10-20 10:01:32 +01:00
Samuel Hawksby-Robinson 6591611473 Bump VERSION to 1.17.0
Signed-off-by: Samuel Hawksby-Robinson <samuel@samyoul.com>
2021-10-15 12:00:14 +01:00
Churikova Tetiana b9d5220da6 e2e: fixes and collectibles
Signed-off-by: Churikova Tetiana <churikova.tm@gmail.com>
2021-10-15 12:45:39 +02:00
Roman Volosovskyi e2767ffce5 [#12709] Fix handling errors on eth_gasPrice 2021-10-15 11:49:38 +03:00
Shivek Khurana e1666aa169 Convert macro to fn
Signed-off-by: Shivek Khurana <shivek@status.im>
2021-10-14 16:27:36 +05:30
jinhojang6 933e74f1b3 Update translations
Signed-off-by: Churikova Tetiana <churikova.tm@gmail.com>
2021-10-14 12:29:21 +02:00
Shivek Khurana f63d73bad8 🚀 NFT Launch
Signed-off-by: Shivek Khurana <shivek@status.im>
2021-10-14 15:42:22 +05:30
Andrea Maria Piana 5c52854d11 fdroid: add script that automates submissions
This script fetches a specified APK and analyzes it for values like
version code or commit and then based on that creates a branchy and a
commit in `fdroiddata` repository that can be used to create a release PR.

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2021-10-13 12:13:38 +02:00
Shivek Khurana 389ce6695a NFT UI 🖼
New UI and re-frame handlers for setting pfp from url
Add fake chain-id, connect the pfp upload backend to UI
Add toast on setting pfp, new-new-new UI
Show assets based on selected network
Add horzontal padding to traits card
a11y ids and pr review changes
Added emoji in toast, fix chain id nill issue
Restore Podfile
Fix fix podfile
Add placeholder images for collections, hide option to set pfp when image url is empty or ends in mp4 or svg
Improvise missing designs
Fix paddings
New nu placeholders
Sort collections by name
Kinda fix issue 4
Fix lint

Signed-off-by: Shivek Khurana <shivek@status.im>
2021-10-13 14:35:44 +05:30
Andrea Maria Piana 84d3b562a4 [Fixes: #12697] Allow profile pictures from contacts 2021-10-12 16:50:01 +01:00
Andrea Maria Piana f50dcf53de [Fixes: #12680] Republish image on changing profile settings
Signed-off-by: Andrea Maria Piana <andrea.maria.piana@gmail.com>
2021-10-11 15:02:21 +01:00
andrey 8d0bdf7c7f [#12684] Messages disappear from Timeline if join public chat and open Timeline tab while public chat history is loading
Signed-off-by: andrey <motor4ik@gmail.com>
2021-10-08 15:46:36 +02:00
Du Cheng a9333ad52c Doubled the character limit on timeline posts
Now, you won't have to fight an arbitrary character limit on posts like Twitter, and you can pack more meaning into your messages without having to split them into multiple messages.

Signed-off-by: Andrea Maria Piana <andrea.maria.piana@gmail.com>
2021-10-08 14:37:26 +01:00
Roman Volosovskyi 12a99f40d2 [#12681] Enable UI for signing legacy txs on networks without eip1559 support 2021-10-08 11:30:20 +03:00
Andrea Maria Piana 1f357fd7c6 Add loading indicator when community is fetching
Signed-off-by: andrey <motor4ik@gmail.com>
2021-10-08 10:07:27 +02:00
andrey 675dd9664a remove println leftover 2021-10-08 09:44:54 +02:00
andrey e47f839bfb [#12687] Icons in public chats and corresponding icons (default ones) of users are different
Signed-off-by: andrey <motor4ik@gmail.com>
2021-10-08 09:43:43 +02:00
Brian Sztamfater 0afbe80c36 Fix profile image in push notiications
Signed-off-by: Brian Sztamfater <brian@status.im>
2021-10-07 11:29:47 -03:00
Roman Volosovskyi 61878376a3 [#12673] Do not add unblocked user to added contacts 2021-10-06 17:09:59 +03:00
Roman Volosovskyi fe00971399 [#12520] Sync deleted chats 2021-10-06 14:47:02 +03:00
andrey 0b2d0d45ed [#12649] Mention preview is displayed as @0x... instead of user name/ENS on the home screen and in the Activity center
Signed-off-by: andrey <motor4ik@gmail.com>
2021-10-06 13:27:32 +02:00
Churikova Tetiana cd35af4e00 e2e: emoji fixes 2021-10-06 12:41:09 +02:00
jinhojang6 1f10ad37d1 Update translations
Signed-off-by: andrey <motor4ik@gmail.com>
2021-10-06 09:58:55 +02:00
andrey de373d0511 [#12666] Allow overriding nonce when sending transaction
Signed-off-by: andrey <motor4ik@gmail.com>
2021-10-06 09:58:04 +02:00
Churikova Tetiana fe1cc2dc23 e2e: nightly fixes 2021-10-05 16:34:56 +02:00
Parvesh Monu eb5711e9bc Custom Emoji Thumbnails for Community Channels (#12594) 2021-10-04 19:08:39 +05:30
andrey 1bbebc9055 contacts performance
Signed-off-by: andrey <motor4ik@gmail.com>
2021-10-04 15:10:26 +02:00
jakub 074a18c18f update Podfile.lock and Cocoapods version in it
Signed-off-by: Jakub Sokołowski <jakub@status.im>
2021-10-01 13:50:22 +02:00
Roman Volosovskyi 943fc37543 [#12668] Fix gas estimation after using Set max 2021-10-01 09:54:41 +03:00
Roman Volosovskyi d0b3b4e293 [#12667] Fix broken subscription on add bootnode screen 2021-10-01 09:47:06 +03:00
Samuel Hawksby-Robinson 5108ae7972 Add private profile pictures 2021-09-30 13:05:33 +01:00
jakub 79be879306 ci: upgrade library and use of pkgFilename()
Depends on: https://github.com/status-im/status-jenkins-lib/pull/36

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2021-09-28 21:25:34 +02:00
Churikova Tetiana 8b0ddec8f9 Merge branch 'tests/nightly28-09-2021' into develop 2021-09-28 18:06:39 +02:00
Churikova Tetiana 0c48f1da88 e2e: fixes 2021-09-28 17:50:55 +02:00
Vitaliy Vlasov a0acdeca33 Use go-waku's connection status updates 2021-09-28 16:34:04 +03:00
Brian Sztamfater 5c0102c27b Add push notification on group invite chat
Signed-off-by: Brian Sztamfater <brian@status.im>
2021-09-28 09:06:47 -03:00
andrey 675515a655 [#12642] Can't send funds to multisig - Out of gas
Signed-off-by: andrey <motor4ik@gmail.com>
2021-09-27 15:58:41 +02:00
Roman Volosovskyi 70607a13ae [#12568] Fetch history on receiving pubchat installation 2021-09-27 12:39:55 +03:00
Roman Volosovskyi 750ea72043 [#12563] Allow retrieving of profile updates after removing contact 2021-09-27 11:11:36 +03:00
hesterbruikman d27f45bad4 fastlane/metadata: update app screenshots
Adding here so they can be populate on F-droid.

Signed-off-by: andrey <motor4ik@gmail.com>
2021-09-24 16:28:57 +02:00
Roman Volosovskyi 428236b4bb [#12585] Clear modal's dissmissing state after reopening app with enabled background service 2021-09-24 16:23:43 +03:00
Churikova Tetiana 76c5e7ce1e Merge branch 'tests/e2e-fixes230921' into develop 2021-09-24 13:09:26 +02:00
Churikova Tetiana 2373737684 e2e: sync contacts + fixes 2021-09-24 12:35:19 +02:00
Andrea Maria Piana 48af425c25 [Fixes: #12596] Fix timeline messages 2021-09-24 10:03:10 +01:00
Roman Volosovskyi 23a0ac9522 [#12517] Ensure that all necessary contact fields are synced 2021-09-23 13:19:11 +03:00
Brian Sztamfater 68ffddbb51 Add ability to Share image from Status
Signed-off-by: Brian Sztamfater <brian@status.im>
2021-09-22 10:07:08 -03:00
jakub 85348306ce drop scripts/generate-pull-request-report.sh
People on HackerOne keep reporting this file as containing a secret token.

The reality is that this token is no longer usable since it was
published to a public repo, which would have caused it to be revoked
automatically though GitHub automation:
https://docs.github.com/en/code-security/secret-scanning/about-secret-scanning

Other than that I'm pretty sure nobody is using this script.

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2021-09-21 20:04:39 +02:00
jakub e2c18ea151 add commit hash to app metadata for Android and iOS
This will make identifying installed software easier.
It can also be used to generate F-Droid RPs more easily.

Depends on:
https://github.com/status-im/status-jenkins-lib/pull/35

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2021-09-21 11:48:45 +02:00
andrey 82b640abe1 chats list performance
Signed-off-by: andrey <motor4ik@gmail.com>
2021-09-20 18:40:07 +02:00
Serhy 6387bba9f5 Update testrailreport and threads
Signed-off-by: Serhy <sergii@status.im>
2021-09-20 18:50:26 +03:00
Churikova Tetiana ca273faadd e2e: align with testrail API 2021-09-20 12:08:04 +02:00
Michele Balistreri 5b72e749e3 add mark all read for communities
Signed-off-by: Michele Balistreri <michele@bitgamma.com>
2021-09-20 09:38:41 +03:00
Churikova Tetiana 716e72fb5f ENSon Ropsten on PR and e2e builds 2021-09-18 13:59:07 +02:00
Churikova Tetiana 18606f548b e2e: ens ropsten 2021-09-17 18:20:47 +02:00
andrey c001688db9 [#12569] RPC URL is lower-cased when entered in URL field when adding a custom network
Signed-off-by: andrey <motor4ik@gmail.com>
2021-09-16 12:18:56 +02:00
Churikova Tetiana 995db1c332 e2e: collectibles + fixes
Signed-off-by: Churikova Tetiana <churikova.tm@gmail.com>
Signed-off-by: Serhy <sergii@status.im>
2021-09-16 09:59:17 +03:00
Andrea Maria Piana 8daf3df6b2 [Fixes: #12486] Fix delete of messages 2021-09-15 10:50:30 +01:00
jakub a76e4666de update-status-go: does not need to depend on make shell
The dependency on `make shell` is confusing and unnecessary since
`update-status-go.sh` script only requires availability of the
`nix-prefetch-url` utility to check SHA256 of the `status-go` verison.

Use of `make shell` with this script can also cause issues when running
`make run-android` if already in the shell, which prevents spawning a
new one and effectively stops changes to `status-go-verison.json` file
taking effect.

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2021-09-15 11:04:52 +02:00
Michele Balistreri 4f4651baac opening group/community chats clears related activity center entries
Signed-off-by: Michele Balistreri <michele@bitgamma.com>
2021-09-15 09:29:50 +03:00
jakub a1ede3528f nix: drop our gomobile in favor of one from nixpkgs
I've created PRs to include gomobile in official nixpkgs:

* https://github.com/NixOS/nixpkgs/pull/116747
* https://github.com/NixOS/nixpkgs/pull/131042

Hence I'm removing our own implementation to use that one.

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2021-09-14 11:31:17 +02:00
jakub 5e9c7da96c nix: upgrade nixpkgs, clean up android sdk config
Notable upgrades:

| Package        | Previous    | Current     |
|----------------|-------------|-------------|
| `glibc`        | `2.32`      | `2.33`      |
| `git`          | `2.31.1`    | `2.32.0`    |
| `clojure`      | `1.10.3.855`| `1.10.3.943`|
| `nodejs`       | `12.22.1`   | `12.22.6`   |
| `yarn`         | `1.22.10`   | `1.22.11`   |
| Platform Tools | `31.0.2`    | `31.0.3`    |
| Build Tools    | `30.0.3`    | `31.0.0`    |

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2021-09-14 10:53:36 +02:00
jakub 88dc152e73 nix: rafactor android-sdk to provide sdk/ndk outputs
This makes path shorter.

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2021-09-14 10:52:41 +02:00
Brian Sztamfater 2095b41eee Add release notes for 1.16
Signed-off-by: Brian Sztamfater <brian@status.im>
2021-09-13 14:23:29 -03:00
andrey 40919b53fb [#12556] Black font color of community categories in dark mode
Signed-off-by: andrey <motor4ik@gmail.com>
2021-09-13 13:39:31 +02:00
andrey af272abcbf [#12047] move colors to quo 2021-09-13 11:23:30 +02:00
andrey 52647b88a7 fix token-icon 2021-09-13 10:55:43 +02:00
Shivek Khurana e2ddf7517f 🎨 NFT Support via OpenSea
Baic skeleton 🦴
NFT Details page. The API is not returning properties
Add traits, add opensea link, fetch nfts when new account is added
Toggle privacy options
Hide NFT behind FF
Update sgv
Fix lint and rename opensea to collectibles

Signed-off-by: Shivek Khurana <shivek@status.im>
2021-09-13 14:14:07 +05:30
Michele Balistreri 5246617c69 target SDK 30
support scoped storage from Android 10

better permission handling on iOS 14

Signed-off-by: Michele Balistreri <michele@bitgamma.com>
2021-09-13 10:17:51 +03:00
jakub bcd497a48a fdroid: fix adding GOOGLE_FREE=1 with missing newline
Broke removing Google dependencies for F-Droid builds:
https://gitlab.com/fdroid/fdroiddata/-/merge_requests/9730#note_674501441

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2021-09-10 17:39:28 +02:00
andrey ee02b90774 [#12050] replace list-item usage by quo
Signed-off-by: andrey <motor4ik@gmail.com>
2021-09-09 13:08:08 +02:00
Churikova Tetiana c036469409 e2e: fee + fixes
Signed-off-by: Churikova Tetiana <churikova.tm@gmail.com>
Signed-off-by: Serhy <sergii@status.im>
2021-09-09 11:35:32 +03:00
Michele Balistreri 0a5abee780 make secure-text-entry always a boolean
Signed-off-by: Michele Balistreri <michele@bitgamma.com>
2021-09-09 09:40:55 +03:00
andrey 1e94a45339 [#12526] Connecting autofarm.network dapps with status wallet freezes browser
Signed-off-by: andrey <motor4ik@gmail.com>
2021-09-08 11:20:37 +02:00
Michele Balistreri 2bd4957569 - seed-phrase field should not enable autofill
- make hide/show password work on Android

Signed-off-by: Michele Balistreri <michele@bitgamma.com>
2021-09-07 14:05:01 +03:00
Parvesh Monu 08cae71390 Small UI Design Improvements (#12544) 2021-09-06 23:27:51 +05:30
Brian Sztamfater 112c5fde15 Fix unread indicator in activity center when delete message
Signed-off-by: Brian Sztamfater <brian@status.im>
2021-09-03 13:56:01 -03:00
Brian Sztamfater 4de24442eb Fix browser history sorting
Signed-off-by: Brian Sztamfater <brian@status.im>
2021-09-03 13:54:59 -03:00
Roman Volosovskyi efff6d3997 Fix clj kondo warnings in subs.cljs 2021-09-03 11:13:42 +03:00
Roman Volosovskyi 031d44c554 [#12476] Re-enable amount/fee validation on tx signing 2021-09-03 11:08:17 +03:00
Churikova Tetiana 1aa0d930fb e2e: delete message + tx tests
Signed-off-by: Churikova Tetiana <churikova.tm@gmail.com>
2021-09-02 18:06:30 +02:00
Churikova Tetiana 0451b152b3 Merge branch 'develop' of github.com:status-im/status-react into develop 2021-09-02 18:01:55 +02:00
Michele Balistreri ad29cc7e30 request permissions before saving images
Signed-off-by: Michele Balistreri <michele@bitgamma.com>
2021-09-02 15:26:18 +03:00
Roman Volosovskyi aaff386146 [#12332] Shown PNs on message with mention in community chats (iOS) 2021-09-02 11:03:52 +03:00
Michele Balistreri ff0068c5a7 activate commands on ropsten for PR builds
Signed-off-by: Michele Balistreri <michele@bitgamma.com>
2021-09-01 18:00:09 +03:00
Churikova Tetiana c65af97a52 update PAX Token
Signed-off-by: Churikova Tetiana <churikova.tm@gmail.com>
Signed-off-by: Serhy <sergii@status.im>
2021-09-01 13:27:28 +03:00
Churikova Tetiana 5e812e29bf update PAX Token
Signed-off-by: Churikova Tetiana <churikova.tm@gmail.com>
2021-09-01 12:23:58 +02:00
Churikova Tetiana bcaa54017e doc: add bump version to umbrella issue
Signed-off-by: Churikova Tetiana <churikova.tm@gmail.com>
2021-09-01 11:08:30 +02:00
Michele Balistreri fea2b9a9af don't show notifications from self
Signed-off-by: Michele Balistreri <michele@bitgamma.com>
2021-08-31 15:07:04 +03:00
Roman Volosovskyi a818dd4a2a [#12494] Update unviewed messages counter on message deletion 2021-08-31 12:15:02 +03:00
Pavlos Vinieratos e6c416c2c3 typo 2021-08-31 06:41:12 +02:00
andrey e21860563a [#12519] Add $RARE token to our default list
Signed-off-by: andrey <motor4ik@gmail.com>
2021-08-30 16:52:56 +02:00
Michele Balistreri eebbfe9346 better PIN/PUK retry counter handling
Signed-off-by: Michele Balistreri <michele@bitgamma.com>
2021-08-30 17:33:44 +03:00
Roman Volosovskyi 86fcdd47e4 [#11849] Move pull to refresh to the account overview screen 2021-08-30 14:28:46 +03:00
Churikova Tetiana 86e0da1da8 Bump release to 1.16.0
Signed-off-by: Churikova Tetiana <churikova.tm@gmail.com>
2021-08-30 11:12:03 +02:00
Churikova Tetiana 58c86144fc enable delete messages
Signed-off-by: Churikova Tetiana <churikova.tm@gmail.com>
2021-08-30 11:08:00 +02:00
Serhy bacc3f54ab Check notifications in AC for mentions in community and group
Signed-off-by: Serhy <sergii@status.im>
Signed-off-by: Churikova Tetiana <churikova.tm@gmail.com>
2021-08-30 11:01:11 +02:00
Roman Volosovskyi d9f3c49aec [#12511] Fix unread indicator after opening profile modal from chat 2021-08-27 14:25:45 +03:00
andrey 905a9d8c9a fix edit channel topbar
Signed-off-by: andrey <motor4ik@gmail.com>
2021-08-27 12:03:21 +02:00
andrey 5d66abdbd4 [#12052] move radio to quo
Signed-off-by: andrey <motor4ik@gmail.com>
2021-08-27 10:53:10 +02:00
391 changed files with 7905 additions and 4369 deletions
+2 -1
View File
@@ -29,4 +29,5 @@ APN_TOPIC=im.status.ethereum.pr
COMMUNITIES_ENABLED=1
DATABASE_MANAGEMENT_ENABLED=1
METRICS_ENABLED=0
EIP1559_ENABLED=1
DELETE_MESSAGE_ENABLED=1
COLLECTIBLES_ENABLED=1
+3 -1
View File
@@ -26,8 +26,10 @@ ENABLE_REFERRAL_INVITE=1
MAX_IMAGES_BATCH=5
APN_TOPIC=im.status.ethereum.pr
VERIFY_TRANSACTION_CHAIN_ID=3
VERIFY_ENS_CHAIN_ID=3
TEST_STATEOFUS=1
DATABASE_MANAGEMENT_ENABLED=1
COMMUNITIES_ENABLED=1
COMMUNITIES_MANAGEMENT_ENABLED=1
METRICS_ENABLED=0
EIP1559_ENABLED=1
DELETE_MESSAGE_ENABLED=1
+6 -2
View File
@@ -1,6 +1,6 @@
CACHED_WEBVIEWS_ENABLED=1
DEBUG_WEBVIEW=1
DEFAULT_NETWORK=mainnet_rpc
DEFAULT_NETWORK=testnet_rpc
ERC20_CONTRACT_WARNINGS=0
ETHEREUM_DEV_CLUSTER=1
EXTENSIONS=0
@@ -18,11 +18,15 @@ RPC_NETWORKS_ONLY=0
PARTITIONED_TOPIC=0
CONTRACT_NODES=1
STATUS_GO_ENABLE_NIMBUS=0
COMMANDS_ENABLED=1
KEYCARD_TEST_MENU=0
ENABLE_ROOT_ALERT=1
ENABLE_REFERRAL_INVITE=1
DISABLE_WALLET_ON_MOBILE_NETWORK=1
APN_TOPIC=im.status.ethereum.pr
VERIFY_TRANSACTION_CHAIN_ID=3
VERIFY_ENS_CHAIN_ID=3
TEST_STATEOFUS=1
BLANK_PREVIEW=0
MAX_IMAGES_BATCH=5
GOOGLE_FREE=0
@@ -30,4 +34,4 @@ DATABASE_MANAGEMENT_ENABLED=1
COMMUNITIES_ENABLED=1
COMMUNITIES_MANAGEMENT_ENABLED=1
METRICS_ENABLED=0
EIP1559_ENABLED=1
DELETE_MESSAGE_ENABLED=1
+1 -1
View File
@@ -23,4 +23,4 @@ BLANK_PREVIEW=0
COMMUNITIES_ENABLED=1
DATABASE_MANAGEMENT_ENABLED=1
METRICS_ENABLED=0
EIP1559_ENABLED=1
DELETE_MESSAGE_ENABLED=1
+2 -2
View File
@@ -19,5 +19,5 @@ ENABLE_ROOT_ALERT=1
MAX_IMAGES_BATCH=1
ENABLE_REFERRAL_INVITE=0
METRICS_ENABLED=0
EIP1559_ENABLED=1
DELETE_MESSAGE_ENABLED=0
DELETE_MESSAGE_ENABLED=1
COLLECTIBLES_ENABLED=1
+1 -1
View File
@@ -29,7 +29,7 @@ Upgrade (e2e):
- [ ] 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))
- [ ] 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 1.14.0 release branch and get successful builds (doc is [here](https://github.com/status-im/status-react/blob/develop/doc/RELEASE_GUIDE.md) 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)
- [ ] 6. Make sure that assets (screenshots, video) in stores are up to date. If should be updated, ask @cammellos for help
+8 -1
View File
@@ -171,6 +171,13 @@ fdroid-fix-tmp: ##@prepare Fix TMPDIR permissions so Vagrant user is the owner
fdroid-build-env: fdroid-max-watches fdroid-nix-dir fdroid-fix-tmp ##@prepare Setup build environment for F-Droud build
fdroid-pr: export TARGET := android
fdroid-pr: ##@prepare Create F-Droid release PR
ifndef APK
$(error APK env var not defined)
endif
scripts/fdroid-pr.sh "$(APK)"
xcode-clean: SHELL := /bin/sh
xcode-clean: XCODE_HOME := $(HOME)/Library/Developer/Xcode
xcode-clean: ##@prepare Clean XCode derived data and archives
@@ -197,7 +204,7 @@ release-fdroid: export ANDROID_APK_SIGNED = false
release-fdroid: export ANDROID_ABI_SPLIT = false
release-fdroid: export ANDROID_ABI_INCLUDE = armeabi-v7a;arm64-v8a;x86;x86_64
release-fdroid: ##@build Build release for F-Droid
echo "GOOGLE_FREE=1" >> .env.release
sed -i -e '$$aGOOGLE_FREE=1' .env.release
scripts/release-android.sh
release-ios: export TARGET := ios
+83
View File
@@ -1,3 +1,86 @@
## 1.17
### For iOS and Android
### Features
- 🖼️ Add ability to Share image from Status ([details](https://github.com/status-im/status-react/pull/12528))
- 🕵️ Private Profile Photos ([details](https://github.com/status-im/status-react/pull/11768))
- 🥥 Custom Emoji Thumbnails for Community Channels ([details](https://github.com/status-im/status-react/pull/12594))
- 🔄 Sync deleted chats ([details](https://github.com/status-im/status-react/pull/12662))
- 🔃 Sync removed/deleted/blocked contacts ([details](https://github.com/status-im/status-react/pull/12541))
- 💸 Allow overriding nonce when sending transaction ([details](https://github.com/status-im/status-react/pull/12679))
- 🗑️ Delete messages ([details](https://github.com/status-im/status-react/pull/12390))
- 🎨 NFT Support via OpenSea ([details](https://github.com/status-im/status-react/pull/12485))
- 🤳🏻 Enable collectibles and NFT as profile picture ([details](https://github.com/status-im/status-react/pull/12615))
### Improvements
- Move pull to refresh to the account overview screen ([details](https://github.com/status-im/status-react/pull/12479))
- Add $RARE token to our default list ([details](https://github.com/status-im/status-react/pull/12521))
- Small UI Design Improvements ([details](https://github.com/status-im/status-react/pull/12544))
- Chats list performance ([details](https://github.com/status-im/status-react/pull/12554))
- Add push notification on group chat invite ([details](https://github.com/status-im/status-react/pull/12440))
- Contacts performance ([details](https://github.com/status-im/status-react/pull/12643))
- Add profile image in push notifications ([details](https://github.com/status-im/status-react/pull/12427))
- Enable UI for signing legacy txs on networks without eip1559 ([details](https://github.com/status-im/status-react/pull/12692))
- Doubled the character limit on timeline posts ([details](https://github.com/status-im/status-react/commit/a9333ad52ca71f512d5306f802927d0c20d63944))
### Bugfixes
- Don't show notifications from self ([details](https://github.com/status-im/status-react/pull/12505))
- Request permissions before saving images ([details](https://github.com/status-im/status-react/pull/12516))
- Re-enable amount/fee validation on tx signing ([details](https://github.com/status-im/status-react/pull/12537))
- Fix browser history sorting ([details](https://github.com/status-im/status-react/pull/12497))
- Fix show/hide password on Android ([details](https://github.com/status-im/status-react/pull/12536))
- Fix connecting autofarm.network dapps with status wallet freezes ([details](https://github.com/status-im/status-react/pull/12529))
- RPC URL is lower-cased when entered in URL field when adding ([details](https://github.com/status-im/status-react/pull/12574))
- Allow retrieving of profile updates after removing contact ([details](https://github.com/status-im/status-react/pull/12581))
- Fetch history on receiving pubchat installation ([details](https://github.com/status-im/status-react/pull/12644))
- Can't send funds to multisig - Out of gas ([details](https://github.com/status-im/status-react/pull/12648))
- Fix handling errors on eth_gasPrice ([details](https://github.com/status-im/status-react/pull/12710))
## 1.16
### For iOS and Android
### Features
- EIP-1159 support ([#12369](https://github.com/status-im/status-react/pull/12369))
- Hide/show option for accounts in the wallet ([#12438](https://github.com/status-im/status-react/pull/12438))
- Delete accounts in wallet ([#12444](https://github.com/status-im/status-react/pull/12444))
- Enable keeping database when migrating account to keycard ([#12306](https://github.com/status-im/status-react/pull/12306))
- Replies from group chat in activity centre ([#12266](https://github.com/status-im/status-react/pull/12266))
### Improvements
- Remove clear history from non-public chats ([#12384](https://github.com/status-im/status-react/pull/12384))
- Clearing push notifications on read (Android) ([#12464](https://github.com/status-im/status-react/pull/12464))
- Enable migration to keycard from signed-in state ([#11778](https://github.com/status-im/status-react/issues/11778))
### Bug Fixes
#### Chat
- Fix Error when opening 1-1 chat in Activity center for blocked user ([#12399](https://github.com/status-im/status-react/pull/12399))
- Long press is long and it makes the message disappear entirely ([#12445](https://github.com/status-im/status-react/pull/12445))
- Sort pinned messages by time of pinning ([#12402](https://github.com/status-im/status-react/pull/12402))
- Screens with overlapping long usernames ([#12471](https://github.com/status-im/status-react/pull/12471))
#### Browser (Dapp)
- Fix some token swap errors in Uniswap ([#12417](https://github.com/status-im/status-react/pull/12417))
- Update react-native-webview for better SSL handling ([#12409](https://github.com/status-im/status-react/pull/12409))
#### Keycard
- App freezes until reopening when signing tx with frozen Keycard ([#12473](https://github.com/status-im/status-react/pull/12473))
#### Wallet
- Allow to add assets with same name ([#12466](https://github.com/status-im/status-react/pull/12466))
- Update DATAcoin name ([#12454](https://github.com/status-im/status-react/pull/12454))
## 1.15
### For iOS and Android
+1 -1
View File
@@ -1 +1 @@
1.15.0
1.17.0
+11 -3
View File
@@ -128,6 +128,13 @@ def enableHermes = project.ext.react.get("enableHermes", false);
*/
def googleFree = project.env.get("GOOGLE_FREE", false)
def getCommitHash = { ->
if (project.hasProperty("commitHash")) {
return project.commitHash
}
return "unknown"
}
def getVersionCode = { ->
new ByteArrayOutputStream().withStream { stdOut ->
if (project.hasProperty("versionCode")) {
@@ -184,6 +191,7 @@ android {
versionCode getVersionCode()
versionName getVersionName()
missingDimensionStrategy 'react-native-camera', 'general'
manifestPlaceholders = [commitHash: getCommitHash()]
/* this needs to be empty if we want APKs split by ABIs */
if (!getEnvOrConfig('ANDROID_ABI_SPLIT').toBoolean()) {
ndk {
@@ -348,8 +356,8 @@ dependencies {
implementation project(':react-native-status')
implementation project(':react-native-status-keycard')
implementation 'com.github.status-im:function:0.0.1'
implementation 'com.facebook.fresco:fresco:2.0.0'
implementation 'com.facebook.fresco:animated-gif:2.0.0'
implementation 'com.facebook.fresco:fresco:2.2.0'
implementation 'com.facebook.fresco:animated-gif:2.2.0'
}
def getLocalNDKDir = { ->
@@ -371,7 +379,7 @@ task hemroidBuild(type: Exec) {
def localNdkDir = getLocalNDKDir()
def ndkDir = System.env.ANDROID_NDK_ROOT
if (localNdkDir != null) {
ndkDir = localNdkDir
ndkDir = localNdkDir
}
def execPath = "$ndkDir/ndk-build"
+4 -5
View File
@@ -17,14 +17,13 @@
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
android:maxSdkVersion="28" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.USE_FINGERPRINT" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="com.android.vending.BILLING" />
<application
tools:replace="android:allowBackup"
android:allowBackup="false"
@@ -33,8 +32,8 @@
android:theme="@style/AppTheme"
android:name=".MainApplication"
android:largeHeap="true"
android:usesCleartextTraffic="true"
android:requestLegacyExternalStorage="true">
android:usesCleartextTraffic="true">
<meta-data android:name="commitHash" android:value="${commitHash}"/>
<activity
android:name=".MainActivity"
android:label="@string/app_name"
@@ -9,6 +9,7 @@ import com.facebook.react.PackageList;
import com.aakashns.reactnativedialogs.ReactNativeDialogsPackage;
import com.facebook.react.ReactApplication;
import cl.json.RNSharePackage;
import com.facebook.react.ReactNativeHost;
import com.reactnativenavigation.NavigationApplication;
import com.reactnativenavigation.react.NavigationReactNativeHost;
+5 -4
View File
@@ -23,12 +23,12 @@
# Version requirements used throughout the Gradle scripts
kotlinVersion=1.3.50
minSdkVersion=23
compileSdkVersion=29
targetSdkVersion=29
buildToolsVersion=30.0.3
compileSdkVersion=30
targetSdkVersion=30
buildToolsVersion=31.0.0
supportLibVersion=28.0.0
# This should match version from nix/mobile/android/maven-and-npm-deps/maven/default.nix
gradlePluginVersion=3.5.3
gradlePluginVersion=3.5.4
android.useAndroidX=true
android.enableJetifier=true
@@ -48,6 +48,7 @@ ANDROID_APK_SIGNED=true
org.gradle.jvmargs=-Xmx8704M
versionCode=9999
commitHash=unknown
# Flipper
FLIPPER_VERSION=0.54.0
+2
View File
@@ -1,4 +1,6 @@
pluginManagement {
include ':react-native-share'
project(':react-native-share').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-share/android')
repositories {
mavenLocal() // Let's prioritize local Maven repos so that Nix can provide them offline
gradlePluginPortal()
+1 -1
View File
@@ -1,4 +1,4 @@
library 'status-jenkins-lib@v1.2.18'
library 'status-jenkins-lib@v1.3.3'
pipeline {
agent { label 'linux' }
+2 -2
View File
@@ -1,4 +1,4 @@
library 'status-jenkins-lib@v1.2.18'
library 'status-jenkins-lib@v1.3.3'
pipeline {
agent { label 'linux' }
@@ -58,7 +58,7 @@ pipeline {
//jenkins.copyArts(iose2e)
jenkins.copyArts(apk)
jenkins.copyArts(apke2e)
sha = "pkg/${utils.pkgFilename('sha256')}"
sha = "pkg/${utils.pkgFilename(ext: 'sha256')}"
dir('pkg') {
/* generate sha256 checksums for upload */
sh "sha256sum * | tee ../${sha}"
+1 -1
View File
@@ -1,4 +1,4 @@
library 'status-jenkins-lib@v1.2.18'
library 'status-jenkins-lib@v1.3.3'
pipeline {
agent { label 'macos-xcode-12.5' }
+1 -1
View File
@@ -1,4 +1,4 @@
library 'status-jenkins-lib@v1.2.18'
library 'status-jenkins-lib@v1.3.3'
pipeline {
agent { label params.AGENT_LABEL }
+1 -1
View File
@@ -1,4 +1,4 @@
library 'status-jenkins-lib@v1.2.18'
library 'status-jenkins-lib@v1.3.3'
pipeline {
agent { label 'macos' }
+1 -1
View File
@@ -1,4 +1,4 @@
library 'status-jenkins-lib@v1.2.16'
library 'status-jenkins-lib@v1.3.3'
pipeline {
agent { label 'linux' }
+4
View File
@@ -160,3 +160,7 @@ fixed because even bugfix version upgrade causes runtime errors with current ver
## "web3-utils": "^1.2.1"
used for some abi encoding primitives
## "rn-emoji-keyboard": "https://github.com/status-im/rn-emoji-keyboard"
Used for taking emoji input, for custom emoji thumbnails for community channels
+35
View File
@@ -14,6 +14,38 @@ First release of Status app was merged in [fdroid/fdroiddata#7179](https://gitla
# Adding New Versions
There are two ways - automated and manual - described below.
## Automated
The script will analyze a provided APK, update the metadata file based on that information, and commit the change to [`fdroiddata`](https://gitlab.com/fdroid/fdroiddata) repo. The creation of merge request is manual.
#### Requirements:
- GitLab account
- Forked copy of the [`fdroiddata`](https://gitlab.com/fdroid/fdroiddata) repo
- Link to the release published
#### Steps
1. Use the F-Droid PR update script via `make`:
```sh
make fdroid-pr APK=StatusIm-Mobile-v1.16.0-ef34af.apk
```
The script also accepts a URL.
2. Add a fork repo:
```sh
git remote add john https://gitlab.com/john/fdroiddata.git
```
3. Push:
```sh
git push john status-im/v1.16.0
```
4. [Create a PR via the GitLab interface.](https://docs.gitlab.com/ee/user/project/merge_requests/creating_merge_requests.html)
## Manual
You can find our configuration file at [`metadata/im.status.ethereum.yml`](https://gitlab.com/fdroid/fdroiddata/-/blob/master/metadata/im.status.ethereum.yml)
The file defines all the necessary metadata like `SourceCode`, `Website`, or `License`, but the most important key is `Builds`, which looks like this:
@@ -42,6 +74,7 @@ It contains a list of objects defining each release of the application. In order
The `versionCode` should be the same as the one in build that was uploaded to Play Store.
It can be found in the build logs or by using:
```
> make shell TARGET=android
> apkanalyzer manifest version-code StatusIm-Mobile-v1.12.0.apk
2021022512
```
@@ -99,6 +132,8 @@ The original research was done in [#8512](https://github.com/status-im/status-re
Normally F-Droid server wants to run Gradle itself, but we do not specify the `gradle` key in order to run `make release-fdroid` ourselves in `build` step. We also add `android/build.gradle` to `scanignore` to avoid F-Droid trying to use Gradle directly.
The Android metadata like description or screenshots is [loaded from our repository](https://f-droid.org/en/docs/All_About_Descriptions_Graphics_and_Screenshots/#fastlane-structure) based on the Fastlane [`supply`](https://docs.fastlane.tools/actions/supply/) tool folder structure for updating Google Play store metadata.
Once the PR is merged it may take a few days for the F-Droid server farm to build and deploy the new version to their site and app. You can look up the current state of builds [here](https://f-droid.org/wiki/index.php?title=Special:RecentChanges&days=7&from=&hidebots=0&hideanons=1&hideliu=1&limit=500) and look for your App ID and a `deploy` change after it.
# F-Droid Build
Binary file not shown.

Before

Width:  |  Height:  |  Size: 534 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 389 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 458 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 450 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 508 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 878 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 262 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 928 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 670 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 583 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 552 KiB

+1
View File
@@ -25,6 +25,7 @@ abstract_target 'Status' do
pod 'secp256k1', git: "https://github.com/status-im/secp256k1.swift.git", submodules: true
target 'StatusIm' do
target 'StatusImTests' do
inherit! :complete
# Pods for testing
+25 -19
View File
@@ -2,7 +2,7 @@ PODS:
- boost-for-react-native (1.63.0)
- BVLinearGradient (2.5.6):
- React
- CryptoSwift (1.3.8)
- CryptoSwift (1.4.2)
- DoubleConversion (1.1.6)
- FBLazyVector (0.63.4)
- FBReactNativeSpec (0.63.4):
@@ -199,16 +199,16 @@ PODS:
- React
- react-native-camera-kit (8.0.4):
- React
- react-native-cameraroll (1.6.2):
- React
- react-native-cameraroll (4.0.4):
- React-Core
- react-native-config (1.4.2):
- react-native-config/App (= 1.4.2)
- react-native-config/App (1.4.2):
- React-Core
- react-native-image-resizer (1.2.3):
- React
- react-native-mail (4.0.0):
- React
- react-native-mail (6.1.1):
- React-Core
- react-native-netinfo (4.7.0):
- React
- react-native-safe-area-context (2.0.0):
@@ -224,7 +224,7 @@ PODS:
- react-native-status-keycard (2.5.35):
- Keycard
- React
- react-native-webview (10.9.2):
- react-native-webview (11.3.0):
- React-Core
- React-RCTActionSheet (0.63.4):
- React-Core/RCTActionSheetHeaders (= 0.63.4)
@@ -313,12 +313,12 @@ PODS:
- React
- RNGestureHandler (1.8.0):
- React
- RNImageCropPicker (0.31.1):
- RNImageCropPicker (0.36.2):
- React-Core
- React-RCTImage
- RNImageCropPicker/QBImagePickerController (= 0.31.1)
- RNImageCropPicker/QBImagePickerController (= 0.36.2)
- TOCropViewController
- RNImageCropPicker/QBImagePickerController (0.31.1):
- RNImageCropPicker/QBImagePickerController (0.36.2):
- React-Core
- React-RCTImage
- TOCropViewController
@@ -359,6 +359,8 @@ PODS:
- React-RCTVibration
- ReactCommon/turbomodule/core
- Yoga
- RNShare (7.0.1):
- React-Core
- RNSVG (9.13.6):
- React
- secp256k1 (0.1.6)
@@ -367,7 +369,7 @@ PODS:
- SQLCipher/common (3.4.2)
- SQLCipher/standard (3.4.2):
- SQLCipher/common
- SSZipArchive (2.2.3)
- SSZipArchive (2.4.2)
- TOCropViewController (2.6.0)
- TouchID (4.4.1):
- React
@@ -435,6 +437,7 @@ DEPENDENCIES:
- RNPermissions (from `../node_modules/react-native-permissions`)
- RNReactNativeHapticFeedback (from `../node_modules/react-native-haptic-feedback`)
- RNReanimated (from `../node_modules/react-native-reanimated`)
- RNShare (from `../node_modules/react-native-share`)
- RNSVG (from `../node_modules/react-native-svg`)
- secp256k1 (from `https://github.com/status-im/secp256k1.swift.git`)
- SQLCipher (~> 3.0)
@@ -569,6 +572,8 @@ EXTERNAL SOURCES:
:path: "../node_modules/react-native-haptic-feedback"
RNReanimated:
:path: "../node_modules/react-native-reanimated"
RNShare:
:path: "../node_modules/react-native-share"
RNSVG:
:path: "../node_modules/react-native-svg"
secp256k1:
@@ -591,12 +596,12 @@ CHECKOUT OPTIONS:
SPEC CHECKSUMS:
boost-for-react-native: 39c7adb57c4e60d6c5479dd8623128eb5b3f0f2c
BVLinearGradient: e3aad03778a456d77928f594a649e96995f1c872
CryptoSwift: 01b0f0cba1d5c212e5a335ff6c054fb75a204f00
CryptoSwift: a532e74ed010f8c95f611d00b8bbae42e9fe7c17
DoubleConversion: cde416483dac037923206447da6e1454df403714
FBLazyVector: 3bb422f41b18121b71783a905c10e58606f7dc3e
FBReactNativeSpec: f2c97f2529dd79c083355182cc158c9f98f4bd6e
Folly: b73c3869541e86821df3c387eb0af5f65addfab4
glog: 060ff9f5bfc2e5fc0ef1a3961cdf58307ce2086d
glog: 5bc68409594b19a3e5c5cbced7b1ecf61053b709
Keycard: dd96182888da0aacf4de821b641103143bbb26cc
Permission-Camera: afad27bf90337684d4a86f3825112d648c8c4d3b
Permission-Microphone: 0ffabc3fe1c75cfb260525ee3f529383c9f4368c
@@ -612,10 +617,10 @@ SPEC CHECKSUMS:
React-jsinspector: 58aef7155bc9a9683f5b60b35eccea8722a4f53a
react-native-background-timer: 1f7d560647b40e6a60b01c452ba29c54bf581fc4
react-native-camera-kit: 498a6d111a904834e0824e9073cfadef7303235f
react-native-cameraroll: ac69828fc43b9dbf92149714fd739577d38e4448
react-native-cameraroll: 88f4e62d9ecd0e1f253abe4f685474f2ea14bfa2
react-native-config: c98128a72bc2c3a1ca72caec0b021f0fa944aa29
react-native-image-resizer: 2f1577efa3bc762597681f530c8e8d05ce0ceeb3
react-native-mail: 7e37dfbe93ff0d4c7df346b738854dbed533e86f
react-native-mail: 8fdcd3aef007c33a6877a18eb4cf7447a1d4ce4a
react-native-netinfo: ddaca8bbb9e6e914b1a23787ccb879bc642931c9
react-native-safe-area-context: 60f654e00b6cc416573f6d5dbfce3839958eb57a
react-native-shake: de052eaa3eadc4a326b8ddd7ac80c06e8d84528c
@@ -623,7 +628,7 @@ SPEC CHECKSUMS:
react-native-splash-screen: 200d11d188e2e78cea3ad319964f6142b6384865
react-native-status: 45dbf1302ce3c258b459dfab137cd1c2c68c295d
react-native-status-keycard: de55c01648d24ff7c17a77f3aa29a0421f44143c
react-native-webview: 4e96d493f9f90ba4f03b28933f30b2964df07e39
react-native-webview: af9990b21a9aeafa8e8347746eb4116c0de086af
React-RCTActionSheet: 89a0ca9f4a06c1f93c26067af074ccdce0f40336
React-RCTAnimation: 1bde3ecc0c104c55df246eda516e0deb03c4e49b
React-RCTBlob: a97d378b527740cc667e03ebfa183a75231ab0f0
@@ -644,20 +649,21 @@ SPEC CHECKSUMS:
RNDeviceInfo: 9538a884f862fe4aa0d7cead9f34e292d41ba8f6
RNFS: 2bd9eb49dc82fa9676382f0585b992c424cd59df
RNGestureHandler: 7a5833d0f788dbd107fbb913e09aa0c1ff333c39
RNImageCropPicker: 38865ab4af1b0b2146ad66061196bc0184946855
RNImageCropPicker: 35a3ceb837446fa11547704709bb22b5fac6d584
RNKeychain: 216f37338fcb9e5c3a2530f1e3295f737a690cb1
RNLanguages: 962e562af0d34ab1958d89bcfdb64fafc37c513e
RNPermissions: ad71dd4f767ec254f2cd57592fbee02afee75467
RNReactNativeHapticFeedback: 2566b468cc8d0e7bb2f84b23adc0f4614594d071
RNReanimated: 70f662b5232dd5d19ccff581e919a54ea73df51c
RNShare: 2dc2fcac3f7321cfd6b60a23ed4bf4d549f86f5f
RNSVG: 8ba35cbeb385a52fd960fd28db9d7d18b4c2974f
secp256k1: f61d67e6fdcb85fd727acf1bf35ace6036db540c
SQLCipher: f9fcf29b2e59ced7defc2a2bdd0ebe79b40d4990
SSZipArchive: 62d4947b08730e4cda640473b0066d209ff033c9
SSZipArchive: e7b4f3d9e780c2acc1764cd88fbf2de28f26e5b2
TOCropViewController: 3105367e808b7d3d886a74ff59bf4804e7d3ab38
TouchID: ba4c656d849cceabc2e4eef722dea5e55959ecf4
Yoga: 4bd86afe9883422a7c4028c00e34790f560923d6
PODFILE CHECKSUM: 27b3929c4d7f0b5afd76276d0bd4ae289ec11f18
PODFILE CHECKSUM: 1a5b8878f89edd08eb4d37898a3a8721a7bb3388
COCOAPODS: 1.10.1
COCOAPODS: 1.11.0
+4
View File
@@ -4,6 +4,8 @@
<dict>
<key>CFBundleBuildUrl</key>
<string>????</string>
<key>CFBundleCommitHash</key>
<string>unknown</string>
<key>NSFaceIDUsageDescription</key>
<string>Enabling Face ID allows you quick and secure access to your account.</string>
<key>CFBundleDevelopmentRegion</key>
@@ -78,6 +80,8 @@
<string>Location access is required for some DApps to function properly.</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>Photos access is required to give you the ability to send images.</string>
<key>NSPhotoLibraryAddUsageDescription</key>
<string>Photos access is required to give you the ability to save images.</string>
<key>NSMicrophoneUsageDescription</key>
<string>Need microphone access for sending audio messages.</string>
<key>UIAppFonts</key>
+2
View File
@@ -83,6 +83,8 @@
<string>Location access is required for some DApps to function properly.</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>Photos access is required to give you the ability to send images.</string>
<key>NSPhotoLibraryAddUsageDescription</key>
<string>Photos access is required to give you the ability to save images.</string>
<key>NSMicrophoneUsageDescription</key>
<string>Need microphone access for sending audio messages.</string>
<key>UIAppFonts</key>
@@ -371,7 +371,7 @@ class StatusModule extends ReactContextBaseJavaModule implements LifecycleEventL
}
@ReactMethod
public void exportUnencryptedDatabase(final String accountData, final String password) {
public void exportUnencryptedDatabase(final String accountData, final String password, final Callback callback) {
Log.d(TAG, "login");
final File newFile = getExportDBFile();
@@ -693,7 +693,8 @@ class StatusModule extends ReactContextBaseJavaModule implements LifecycleEventL
final Boolean zipped = zip(new File[]{dbFile, gethLogFile, statusLogFile}, zipFile, errorList);
if (zipped && zipFile.exists()) {
zipFile.setReadable(true, false);
callback.invoke(zipFile.getAbsolutePath());
Uri extUri = FileProvider.getUriForFile(context, context.getPackageName() + ".provider", zipFile);
callback.invoke(extUri.toString());
} else {
Log.d(TAG, "File " + zipFile.getAbsolutePath() + " does not exist");
}
@@ -19,6 +19,12 @@ import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.PorterDuff;
import android.graphics.PorterDuffXfermode;
import android.graphics.Rect;
import android.graphics.RectF;
import android.media.AudioAttributes;
import android.media.RingtoneManager;
import android.net.Uri;
@@ -100,7 +106,9 @@ public class PushNotificationHelper {
//flags in this link:
//https://stackoverflow.com/questions/52390129/android-intent-setflags-issue
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.setData(Uri.parse(deepLink));
if (deepLink != null) {
intent.setData(Uri.parse(deepLink));
}
return intent;
}
@@ -354,7 +362,14 @@ public class PushNotificationHelper {
}
}
if (largeIconBitmap != null){
Bundle author = bundle.getBundle("notificationAuthor");
if (largeIconBitmap == null && author != null) {
String base64Image = author.getString("icon").split(",")[1];
byte[] decodedString = Base64.decode(base64Image, Base64.DEFAULT);
Bitmap decodedByte = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length);
notification.setLargeIcon(getCircleBitmap(decodedByte));
} else if (largeIconBitmap != null){
notification.setLargeIcon(largeIconBitmap);
}
@@ -647,6 +662,29 @@ public class PushNotificationHelper {
return false;
}
private Bitmap getCircleBitmap(Bitmap bitmap) {
final Bitmap output = Bitmap.createBitmap(bitmap.getWidth(),
bitmap.getHeight(), Bitmap.Config.ARGB_8888);
final Canvas canvas = new Canvas(output);
final int color = Color.RED;
final Paint paint = new Paint();
final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());
final RectF rectF = new RectF(rect);
paint.setAntiAlias(true);
canvas.drawARGB(0, 0, 0, 0);
paint.setColor(color);
canvas.drawOval(rectF, paint);
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
canvas.drawBitmap(bitmap, rect, rect, paint);
bitmap.recycle();
return output;
}
private Person getPerson(Bundle bundle) {
String base64Image = bundle.getString("icon").split(",")[1];
byte[] decodedString = Base64.decode(base64Image, Base64.DEFAULT);
@@ -654,7 +692,7 @@ public class PushNotificationHelper {
String name = bundle.getString("name");
return new Person.Builder().setIcon(IconCompat.createWithBitmap(decodedByte)).setName(name).build();
return new Person.Builder().setIcon(IconCompat.createWithBitmap(getCircleBitmap(decodedByte))).setName(name).build();
}
private StatusMessage createMessage(Bundle data) {
@@ -178,7 +178,7 @@ RCT_EXPORT_METHOD(sendLogs:(NSString *)dbJson
[SSZipArchive createZipFileAtPath:zipFile.path withContentsOfDirectory:logsFolderName.path];
[fileManager removeItemAtPath:logsFolderName.path error:nil];
callback(@[zipFile.path]);
callback(@[zipFile.absoluteString]);
}
//////////////////////////////////////////////////////////////////// addPeer
@@ -853,11 +853,16 @@ StatusgoStartLocalNotifications();
}
RCT_EXPORT_METHOD(exportUnencryptedDatabase:(NSString *)accountData
password:(NSString *)password) {
password:(NSString *)password
callback:(RCTResponseSenderBlock)callback) {
#if DEBUG
NSLog(@"exportUnencryptedDatabase() method called");
#endif
"";
NSString *filePath = [NSTemporaryDirectory() stringByAppendingPathComponent:@"export.db"];
StatusgoExportUnencryptedDatabase(accountData, password, filePath);
callback(@[filePath]);
}
RCT_EXPORT_METHOD(importUnencryptedDatabase:(NSString *)accountData
+1
View File
@@ -3,6 +3,7 @@
status-im = {
build-type = "pr"; # Build type (influences which .env file gets used for feature flags)
build-number = 9999; # Used for versionCode and CFBundleVersion in Android and iOS respectively
commit-hash = "unknown"; # Included in APK Manifest for easier identification.
android = {
gradle-opts = null; # Gradle options passed for Android builds
+295 -379
View File
File diff suppressed because it is too large Load Diff
+36 -36
View File
@@ -26,10 +26,10 @@ androidx.cursoradapter:cursoradapter:1.0.0
androidx.customview:customview:1.0.0
androidx.databinding:databinding-common:3.2.1
androidx.databinding:databinding-common:3.3.1
androidx.databinding:databinding-common:3.5.3
androidx.databinding:databinding-common:3.5.4
androidx.databinding:databinding-compiler-common:3.2.1
androidx.databinding:databinding-compiler-common:3.3.1
androidx.databinding:databinding-compiler-common:3.5.3
androidx.databinding:databinding-compiler-common:3.5.4
androidx.documentfile:documentfile:1.0.0
androidx.drawerlayout:drawerlayout:1.0.0
androidx.exifinterface:exifinterface:1.1.0-beta01
@@ -58,7 +58,7 @@ androidx.recyclerview:recyclerview:1.1.0
androidx.savedstate:savedstate:1.0.0
androidx.slidingpanelayout:slidingpanelayout:1.0.0
androidx.swiperefreshlayout:swiperefreshlayout:1.0.0
androidx.swiperefreshlayout:swiperefreshlayout:1.1.0-alpha02
androidx.swiperefreshlayout:swiperefreshlayout:1.1.0
androidx.test:monitor:1.3.0-rc03
androidx.transition:transition:1.2.0
androidx.transition:transition:1.2.0-rc01
@@ -87,7 +87,7 @@ com.android.databinding:baseLibrary:3.0.1
com.android.databinding:baseLibrary:3.1.4
com.android.databinding:baseLibrary:3.2.1
com.android.databinding:baseLibrary:3.3.1
com.android.databinding:baseLibrary:3.5.3
com.android.databinding:baseLibrary:3.5.4
com.android.databinding:compilerCommon:1.0-rc5
com.android.databinding:compilerCommon:3.0.0
com.android.databinding:compilerCommon:3.0.1
@@ -95,25 +95,25 @@ com.android.databinding:compilerCommon:3.1.4
com.android.installreferrer:installreferrer:1.1.2
com.android.tools.analytics-library:crash:26.2.1
com.android.tools.analytics-library:crash:26.3.1
com.android.tools.analytics-library:crash:26.5.3
com.android.tools.analytics-library:crash:26.5.4
com.android.tools.analytics-library:protos:26.0.0
com.android.tools.analytics-library:protos:26.0.1
com.android.tools.analytics-library:protos:26.1.4
com.android.tools.analytics-library:protos:26.2.1
com.android.tools.analytics-library:protos:26.3.1
com.android.tools.analytics-library:protos:26.5.3
com.android.tools.analytics-library:protos:26.5.4
com.android.tools.analytics-library:shared:26.0.0
com.android.tools.analytics-library:shared:26.0.1
com.android.tools.analytics-library:shared:26.1.4
com.android.tools.analytics-library:shared:26.2.1
com.android.tools.analytics-library:shared:26.3.1
com.android.tools.analytics-library:shared:26.5.3
com.android.tools.analytics-library:shared:26.5.4
com.android.tools.analytics-library:tracker:26.0.0
com.android.tools.analytics-library:tracker:26.0.1
com.android.tools.analytics-library:tracker:26.1.4
com.android.tools.analytics-library:tracker:26.2.1
com.android.tools.analytics-library:tracker:26.3.1
com.android.tools.analytics-library:tracker:26.5.3
com.android.tools.analytics-library:tracker:26.5.4
com.android.tools.build.jetifier:jetifier-core:1.0.0-alpha10
com.android.tools.build.jetifier:jetifier-core:1.0.0-beta02
com.android.tools.build.jetifier:jetifier-core:1.0.0-beta04
@@ -128,10 +128,10 @@ com.android.tools.build:apksig:3.0.1
com.android.tools.build:apksig:3.1.4
com.android.tools.build:apksig:3.2.1
com.android.tools.build:apksig:3.3.1
com.android.tools.build:apksig:3.5.3
com.android.tools.build:apksig:3.5.4
com.android.tools.build:apkzlib:3.2.1
com.android.tools.build:apkzlib:3.3.1
com.android.tools.build:apkzlib:3.5.3
com.android.tools.build:apkzlib:3.5.4
com.android.tools.build:builder-model:1.1.3
com.android.tools.build:builder-model:1.3.1
com.android.tools.build:builder-model:1.5.0
@@ -140,7 +140,7 @@ com.android.tools.build:builder-model:3.0.1
com.android.tools.build:builder-model:3.1.4
com.android.tools.build:builder-model:3.2.1
com.android.tools.build:builder-model:3.3.1
com.android.tools.build:builder-model:3.5.3
com.android.tools.build:builder-model:3.5.4
com.android.tools.build:builder-test-api:1.1.3
com.android.tools.build:builder-test-api:1.3.1
com.android.tools.build:builder-test-api:1.5.0
@@ -149,7 +149,7 @@ com.android.tools.build:builder-test-api:3.0.1
com.android.tools.build:builder-test-api:3.1.4
com.android.tools.build:builder-test-api:3.2.1
com.android.tools.build:builder-test-api:3.3.1
com.android.tools.build:builder-test-api:3.5.3
com.android.tools.build:builder-test-api:3.5.4
com.android.tools.build:builder:1.1.3
com.android.tools.build:builder:1.3.1
com.android.tools.build:builder:1.5.0
@@ -158,7 +158,7 @@ com.android.tools.build:builder:3.0.1
com.android.tools.build:builder:3.1.4
com.android.tools.build:builder:3.2.1
com.android.tools.build:builder:3.3.1
com.android.tools.build:builder:3.5.3
com.android.tools.build:builder:3.5.4
com.android.tools.build:bundletool:0.1.0-alpha01
com.android.tools.build:bundletool:0.5.0
com.android.tools.build:bundletool:0.6.0
@@ -168,7 +168,7 @@ com.android.tools.build:gradle-api:3.0.1
com.android.tools.build:gradle-api:3.1.4
com.android.tools.build:gradle-api:3.2.1
com.android.tools.build:gradle-api:3.3.1
com.android.tools.build:gradle-api:3.5.3
com.android.tools.build:gradle-api:3.5.4
com.android.tools.build:gradle-core:1.1.3
com.android.tools.build:gradle-core:1.3.1
com.android.tools.build:gradle-core:1.5.0
@@ -183,7 +183,7 @@ com.android.tools.build:gradle:3.0.1
com.android.tools.build:gradle:3.1.4
com.android.tools.build:gradle:3.2.1
com.android.tools.build:gradle:3.3.1
com.android.tools.build:gradle:3.5.3
com.android.tools.build:gradle:3.5.4
com.android.tools.build:manifest-merger:24.1.3
com.android.tools.build:manifest-merger:24.3.1
com.android.tools.build:manifest-merger:24.5.0
@@ -192,7 +192,7 @@ com.android.tools.build:manifest-merger:26.0.1
com.android.tools.build:manifest-merger:26.1.4
com.android.tools.build:manifest-merger:26.2.1
com.android.tools.build:manifest-merger:26.3.1
com.android.tools.build:manifest-merger:26.5.3
com.android.tools.build:manifest-merger:26.5.4
com.android.tools.build:transform-api:1.5.0
com.android.tools.build:transform-api:2.0.0-deprecated-use-gradle-api
com.android.tools.ddms:ddmlib:24.1.3
@@ -203,15 +203,15 @@ com.android.tools.ddms:ddmlib:26.0.1
com.android.tools.ddms:ddmlib:26.1.4
com.android.tools.ddms:ddmlib:26.2.1
com.android.tools.ddms:ddmlib:26.3.1
com.android.tools.ddms:ddmlib:26.5.3
com.android.tools.ddms:ddmlib:26.5.4
com.android.tools.external.com-intellij:intellij-core:26.0.0
com.android.tools.external.com-intellij:intellij-core:26.0.1
com.android.tools.external.com-intellij:intellij-core:26.5.3
com.android.tools.external.com-intellij:kotlin-compiler:26.5.3
com.android.tools.external.com-intellij:intellij-core:26.5.4
com.android.tools.external.com-intellij:kotlin-compiler:26.5.4
com.android.tools.external.lombok:lombok-ast:0.2.3
com.android.tools.external.org-jetbrains:uast:26.0.0
com.android.tools.external.org-jetbrains:uast:26.0.1
com.android.tools.external.org-jetbrains:uast:26.5.3
com.android.tools.external.org-jetbrains:uast:26.5.4
com.android.tools.jack:jack-api:0.9.0
com.android.tools.jill:jill-api:0.9.0
com.android.tools.layoutlib:layoutlib-api:24.1.3
@@ -222,30 +222,30 @@ com.android.tools.layoutlib:layoutlib-api:26.0.1
com.android.tools.layoutlib:layoutlib-api:26.1.4
com.android.tools.layoutlib:layoutlib-api:26.2.1
com.android.tools.layoutlib:layoutlib-api:26.3.1
com.android.tools.layoutlib:layoutlib-api:26.5.3
com.android.tools.layoutlib:layoutlib-api:26.5.4
com.android.tools.lint:lint-api:24.1.3
com.android.tools.lint:lint-api:24.3.1
com.android.tools.lint:lint-api:24.5.0
com.android.tools.lint:lint-api:26.0.0
com.android.tools.lint:lint-api:26.0.1
com.android.tools.lint:lint-api:26.5.3
com.android.tools.lint:lint-api:26.5.4
com.android.tools.lint:lint-checks:24.1.3
com.android.tools.lint:lint-checks:24.3.1
com.android.tools.lint:lint-checks:24.5.0
com.android.tools.lint:lint-checks:26.0.0
com.android.tools.lint:lint-checks:26.0.1
com.android.tools.lint:lint-checks:26.5.3
com.android.tools.lint:lint-checks:26.5.4
com.android.tools.lint:lint-gradle-api:26.1.4
com.android.tools.lint:lint-gradle-api:26.2.1
com.android.tools.lint:lint-gradle-api:26.3.1
com.android.tools.lint:lint-gradle-api:26.5.3
com.android.tools.lint:lint-gradle:26.5.3
com.android.tools.lint:lint-gradle-api:26.5.4
com.android.tools.lint:lint-gradle:26.5.4
com.android.tools.lint:lint:24.1.3
com.android.tools.lint:lint:24.3.1
com.android.tools.lint:lint:24.5.0
com.android.tools.lint:lint:26.0.0
com.android.tools.lint:lint:26.0.1
com.android.tools.lint:lint:26.5.3
com.android.tools.lint:lint:26.5.4
com.android.tools:annotations:24.1.3
com.android.tools:annotations:24.3.1
com.android.tools:annotations:24.5.0
@@ -254,7 +254,7 @@ com.android.tools:annotations:26.0.1
com.android.tools:annotations:26.1.4
com.android.tools:annotations:26.2.1
com.android.tools:annotations:26.3.1
com.android.tools:annotations:26.5.3
com.android.tools:annotations:26.5.4
com.android.tools:common:24.1.3
com.android.tools:common:24.3.1
com.android.tools:common:24.5.0
@@ -263,7 +263,7 @@ com.android.tools:common:26.0.1
com.android.tools:common:26.1.4
com.android.tools:common:26.2.1
com.android.tools:common:26.3.1
com.android.tools:common:26.5.3
com.android.tools:common:26.5.4
com.android.tools:dvlib:24.1.3
com.android.tools:dvlib:24.3.1
com.android.tools:dvlib:24.5.0
@@ -272,13 +272,13 @@ com.android.tools:dvlib:26.0.1
com.android.tools:dvlib:26.1.4
com.android.tools:dvlib:26.2.1
com.android.tools:dvlib:26.3.1
com.android.tools:dvlib:26.5.3
com.android.tools:dvlib:26.5.4
com.android.tools:repository:26.0.0
com.android.tools:repository:26.0.1
com.android.tools:repository:26.1.4
com.android.tools:repository:26.2.1
com.android.tools:repository:26.3.1
com.android.tools:repository:26.5.3
com.android.tools:repository:26.5.4
com.android.tools:sdklib:24.1.3
com.android.tools:sdklib:24.3.1
com.android.tools:sdklib:24.5.0
@@ -287,7 +287,7 @@ com.android.tools:sdklib:26.0.1
com.android.tools:sdklib:26.1.4
com.android.tools:sdklib:26.2.1
com.android.tools:sdklib:26.3.1
com.android.tools:sdklib:26.5.3
com.android.tools:sdklib:26.5.4
com.android.tools:sdk-common:24.1.3
com.android.tools:sdk-common:24.3.1
com.android.tools:sdk-common:24.5.0
@@ -296,15 +296,15 @@ com.android.tools:sdk-common:26.0.1
com.android.tools:sdk-common:26.1.4
com.android.tools:sdk-common:26.2.1
com.android.tools:sdk-common:26.3.1
com.android.tools:sdk-common:26.5.3
com.android.tools:sdk-common:26.5.4
com.drewnoakes:metadata-extractor:2.9.1
com.facebook.conceal:conceal:1.1.3
com.facebook.fbjni:fbjni-java-only:0.0.3
com.facebook.flipper:flipper-fresco-plugin:0.54.0
com.facebook.flipper:flipper:0.54.0
com.facebook.fresco:animated-base:2.0.0
com.facebook.fresco:animated-drawable:2.0.0
com.facebook.fresco:animated-gif:2.0.0
com.facebook.fresco:animated-base:2.2.0
com.facebook.fresco:animated-drawable:2.2.0
com.facebook.fresco:animated-gif:2.2.0
com.facebook.fresco:drawee:2.0.0
com.facebook.fresco:drawee:2.2.0
com.facebook.fresco:fbcore:2.0.0
@@ -340,7 +340,7 @@ com.github.status-im.status-keycard-java:lib:3.0.4
com.github.status-im:function:0.0.1
com.github.wix-playground:ahbottomnavigation:3.3.0
com.github.wix-playground:reflow-animator:1.0.6
com.github.yalantis:ucrop:2.2.5-native
com.github.yalantis:ucrop:2.2.6-native
com.googlecode.json-simple:json-simple:1.1
com.googlecode.juniversalchardet:juniversalchardet:1.0.3
com.google.android.gms:play-services-basement:17.0.0
+61 -67
View File
@@ -3,7 +3,6 @@ https://dl.google.com/dl/android/maven2/androidx/annotation/annotation-experimen
https://dl.google.com/dl/android/maven2/androidx/annotation/annotation/1.0.0/annotation-1.0.0.pom
https://dl.google.com/dl/android/maven2/androidx/annotation/annotation/1.0.1/annotation-1.0.1.pom
https://dl.google.com/dl/android/maven2/androidx/annotation/annotation/1.0.2/annotation-1.0.2.pom
https://dl.google.com/dl/android/maven2/androidx/annotation/annotation/1.1.0-rc01/annotation-1.1.0-rc01.pom
https://dl.google.com/dl/android/maven2/androidx/annotation/annotation/1.1.0/annotation-1.1.0.pom
https://dl.google.com/dl/android/maven2/androidx/appcompat/appcompat-resources/1.1.0/appcompat-resources-1.1.0.pom
https://dl.google.com/dl/android/maven2/androidx/appcompat/appcompat-resources/1.2.0/appcompat-resources-1.2.0.pom
@@ -26,7 +25,6 @@ https://dl.google.com/dl/android/maven2/androidx/coordinatorlayout/coordinatorla
https://dl.google.com/dl/android/maven2/androidx/core/core-ktx/1.3.2/core-ktx-1.3.2.pom
https://dl.google.com/dl/android/maven2/androidx/core/core/1.0.0/core-1.0.0.pom
https://dl.google.com/dl/android/maven2/androidx/core/core/1.0.1/core-1.0.1.pom
https://dl.google.com/dl/android/maven2/androidx/core/core/1.1.0-rc01/core-1.1.0-rc01.pom
https://dl.google.com/dl/android/maven2/androidx/core/core/1.1.0/core-1.1.0.pom
https://dl.google.com/dl/android/maven2/androidx/core/core/1.3.0/core-1.3.0.pom
https://dl.google.com/dl/android/maven2/androidx/core/core/1.3.1/core-1.3.1.pom
@@ -35,10 +33,10 @@ https://dl.google.com/dl/android/maven2/androidx/cursoradapter/cursoradapter/1.0
https://dl.google.com/dl/android/maven2/androidx/customview/customview/1.0.0/customview-1.0.0.pom
https://dl.google.com/dl/android/maven2/androidx/databinding/databinding-common/3.2.1/databinding-common-3.2.1.pom
https://dl.google.com/dl/android/maven2/androidx/databinding/databinding-common/3.3.1/databinding-common-3.3.1.pom
https://dl.google.com/dl/android/maven2/androidx/databinding/databinding-common/3.5.3/databinding-common-3.5.3.pom
https://dl.google.com/dl/android/maven2/androidx/databinding/databinding-common/3.5.4/databinding-common-3.5.4.pom
https://dl.google.com/dl/android/maven2/androidx/databinding/databinding-compiler-common/3.2.1/databinding-compiler-common-3.2.1.pom
https://dl.google.com/dl/android/maven2/androidx/databinding/databinding-compiler-common/3.3.1/databinding-compiler-common-3.3.1.pom
https://dl.google.com/dl/android/maven2/androidx/databinding/databinding-compiler-common/3.5.3/databinding-compiler-common-3.5.3.pom
https://dl.google.com/dl/android/maven2/androidx/databinding/databinding-compiler-common/3.5.4/databinding-compiler-common-3.5.4.pom
https://dl.google.com/dl/android/maven2/androidx/documentfile/documentfile/1.0.0/documentfile-1.0.0.pom
https://dl.google.com/dl/android/maven2/androidx/drawerlayout/drawerlayout/1.0.0/drawerlayout-1.0.0.pom
https://dl.google.com/dl/android/maven2/androidx/exifinterface/exifinterface/1.1.0-beta01/exifinterface-1.1.0-beta01.pom
@@ -67,7 +65,7 @@ https://dl.google.com/dl/android/maven2/androidx/recyclerview/recyclerview/1.1.0
https://dl.google.com/dl/android/maven2/androidx/savedstate/savedstate/1.0.0/savedstate-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.1.0-alpha02/swiperefreshlayout-1.1.0-alpha02.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.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.2.0-rc01/transition-1.2.0-rc01.pom
@@ -78,7 +76,6 @@ https://dl.google.com/dl/android/maven2/androidx/vectordrawable/vectordrawable/1
https://dl.google.com/dl/android/maven2/androidx/vectordrawable/vectordrawable/1.0.1/vectordrawable-1.0.1.pom
https://dl.google.com/dl/android/maven2/androidx/vectordrawable/vectordrawable/1.1.0/vectordrawable-1.1.0.pom
https://dl.google.com/dl/android/maven2/androidx/versionedparcelable/versionedparcelable/1.0.0/versionedparcelable-1.0.0.pom
https://dl.google.com/dl/android/maven2/androidx/versionedparcelable/versionedparcelable/1.1.0-rc01/versionedparcelable-1.1.0-rc01.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/viewpager/viewpager/1.0.0/viewpager-1.0.0.pom
@@ -90,7 +87,7 @@ https://dl.google.com/dl/android/maven2/com/android/databinding/baseLibrary/3.0.
https://dl.google.com/dl/android/maven2/com/android/databinding/baseLibrary/3.1.4/baseLibrary-3.1.4.pom
https://dl.google.com/dl/android/maven2/com/android/databinding/baseLibrary/3.2.1/baseLibrary-3.2.1.pom
https://dl.google.com/dl/android/maven2/com/android/databinding/baseLibrary/3.3.1/baseLibrary-3.3.1.pom
https://dl.google.com/dl/android/maven2/com/android/databinding/baseLibrary/3.5.3/baseLibrary-3.5.3.pom
https://dl.google.com/dl/android/maven2/com/android/databinding/baseLibrary/3.5.4/baseLibrary-3.5.4.pom
https://dl.google.com/dl/android/maven2/com/android/databinding/compilerCommon/3.0.0/compilerCommon-3.0.0.pom
https://dl.google.com/dl/android/maven2/com/android/databinding/compilerCommon/3.0.1/compilerCommon-3.0.1.pom
https://dl.google.com/dl/android/maven2/com/android/databinding/compilerCommon/3.1.4/compilerCommon-3.1.4.pom
@@ -118,31 +115,31 @@ https://dl.google.com/dl/android/maven2/com/android/support/support-vector-drawa
https://dl.google.com/dl/android/maven2/com/android/support/support-vector-drawable/27.0.1/support-vector-drawable-27.0.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/crash/26.2.1/crash-26.2.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/crash/26.3.1/crash-26.3.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/crash/26.5.3/crash-26.5.3.pom
https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/crash/26.5.4/crash-26.5.4.pom
https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/protos/26.0.0/protos-26.0.0.pom
https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/protos/26.0.1/protos-26.0.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/protos/26.1.4/protos-26.1.4.pom
https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/protos/26.2.1/protos-26.2.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/protos/26.3.1/protos-26.3.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/protos/26.5.3/protos-26.5.3.pom
https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/protos/26.5.4/protos-26.5.4.pom
https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/shared/26.0.0/shared-26.0.0.pom
https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/shared/26.0.1/shared-26.0.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/shared/26.1.4/shared-26.1.4.pom
https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/shared/26.2.1/shared-26.2.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/shared/26.3.1/shared-26.3.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/shared/26.5.3/shared-26.5.3.pom
https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/shared/26.5.4/shared-26.5.4.pom
https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/tracker/26.0.0/tracker-26.0.0.pom
https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/tracker/26.0.1/tracker-26.0.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/tracker/26.1.4/tracker-26.1.4.pom
https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/tracker/26.2.1/tracker-26.2.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/tracker/26.3.1/tracker-26.3.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/tracker/26.5.3/tracker-26.5.3.pom
https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/tracker/26.5.4/tracker-26.5.4.pom
https://dl.google.com/dl/android/maven2/com/android/tools/annotations/26.0.0/annotations-26.0.0.pom
https://dl.google.com/dl/android/maven2/com/android/tools/annotations/26.0.1/annotations-26.0.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/annotations/26.1.4/annotations-26.1.4.pom
https://dl.google.com/dl/android/maven2/com/android/tools/annotations/26.2.1/annotations-26.2.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/annotations/26.3.1/annotations-26.3.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/annotations/26.5.3/annotations-26.5.3.pom
https://dl.google.com/dl/android/maven2/com/android/tools/annotations/26.5.4/annotations-26.5.4.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/aapt2-proto/0.1.0/aapt2-proto-0.1.0.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/aapt2-proto/0.3.1/aapt2-proto-0.3.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/aapt2-proto/0.4.0/aapt2-proto-0.4.0.pom
@@ -151,28 +148,28 @@ https://dl.google.com/dl/android/maven2/com/android/tools/build/apksig/3.0.1/apk
https://dl.google.com/dl/android/maven2/com/android/tools/build/apksig/3.1.4/apksig-3.1.4.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/apksig/3.2.1/apksig-3.2.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/apksig/3.3.1/apksig-3.3.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/apksig/3.5.3/apksig-3.5.3.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/apksig/3.5.4/apksig-3.5.4.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/apkzlib/3.2.1/apkzlib-3.2.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/apkzlib/3.3.1/apkzlib-3.3.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/apkzlib/3.5.3/apkzlib-3.5.3.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/apkzlib/3.5.4/apkzlib-3.5.4.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/builder-model/3.0.0/builder-model-3.0.0.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/builder-model/3.0.1/builder-model-3.0.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/builder-model/3.1.4/builder-model-3.1.4.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/builder-model/3.2.1/builder-model-3.2.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/builder-model/3.3.1/builder-model-3.3.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/builder-model/3.5.3/builder-model-3.5.3.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/builder-model/3.5.4/builder-model-3.5.4.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/builder-test-api/3.0.0/builder-test-api-3.0.0.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/builder-test-api/3.0.1/builder-test-api-3.0.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/builder-test-api/3.1.4/builder-test-api-3.1.4.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/builder-test-api/3.2.1/builder-test-api-3.2.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/builder-test-api/3.3.1/builder-test-api-3.3.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/builder-test-api/3.5.3/builder-test-api-3.5.3.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/builder-test-api/3.5.4/builder-test-api-3.5.4.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/builder/3.0.0/builder-3.0.0.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/builder/3.0.1/builder-3.0.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/builder/3.1.4/builder-3.1.4.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/builder/3.2.1/builder-3.2.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/builder/3.3.1/builder-3.3.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/builder/3.5.3/builder-3.5.3.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/builder/3.5.4/builder-3.5.4.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/bundletool/0.1.0-alpha01/bundletool-0.1.0-alpha01.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/bundletool/0.5.0/bundletool-0.5.0.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/bundletool/0.6.0/bundletool-0.6.0.pom
@@ -182,7 +179,7 @@ https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle-api/3.0.1
https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle-api/3.1.4/gradle-api-3.1.4.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle-api/3.2.1/gradle-api-3.2.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle-api/3.3.1/gradle-api-3.3.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle-api/3.5.3/gradle-api-3.5.3.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle-api/3.5.4/gradle-api-3.5.4.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle-core/3.0.0/gradle-core-3.0.0.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle-core/3.0.1/gradle-core-3.0.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle-core/3.1.4/gradle-core-3.1.4.pom
@@ -191,7 +188,7 @@ https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle/3.0.1/gra
https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle/3.1.4/gradle-3.1.4.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle/3.2.1/gradle-3.2.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle/3.3.1/gradle-3.3.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle/3.5.3/gradle-3.5.3.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle/3.5.4/gradle-3.5.4.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/jetifier/jetifier-core/1.0.0-alpha10/jetifier-core-1.0.0-alpha10.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/jetifier/jetifier-core/1.0.0-beta02/jetifier-core-1.0.0-beta02.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/jetifier/jetifier-core/1.0.0-beta04/jetifier-core-1.0.0-beta04.pom
@@ -203,70 +200,70 @@ https://dl.google.com/dl/android/maven2/com/android/tools/build/manifest-merger/
https://dl.google.com/dl/android/maven2/com/android/tools/build/manifest-merger/26.1.4/manifest-merger-26.1.4.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/manifest-merger/26.2.1/manifest-merger-26.2.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/manifest-merger/26.3.1/manifest-merger-26.3.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/manifest-merger/26.5.3/manifest-merger-26.5.3.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/manifest-merger/26.5.4/manifest-merger-26.5.4.pom
https://dl.google.com/dl/android/maven2/com/android/tools/common/26.0.0/common-26.0.0.pom
https://dl.google.com/dl/android/maven2/com/android/tools/common/26.0.1/common-26.0.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/common/26.1.4/common-26.1.4.pom
https://dl.google.com/dl/android/maven2/com/android/tools/common/26.2.1/common-26.2.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/common/26.3.1/common-26.3.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/common/26.5.3/common-26.5.3.pom
https://dl.google.com/dl/android/maven2/com/android/tools/common/26.5.4/common-26.5.4.pom
https://dl.google.com/dl/android/maven2/com/android/tools/ddms/ddmlib/26.0.0/ddmlib-26.0.0.pom
https://dl.google.com/dl/android/maven2/com/android/tools/ddms/ddmlib/26.0.1/ddmlib-26.0.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/ddms/ddmlib/26.1.4/ddmlib-26.1.4.pom
https://dl.google.com/dl/android/maven2/com/android/tools/ddms/ddmlib/26.2.1/ddmlib-26.2.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/ddms/ddmlib/26.3.1/ddmlib-26.3.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/ddms/ddmlib/26.5.3/ddmlib-26.5.3.pom
https://dl.google.com/dl/android/maven2/com/android/tools/ddms/ddmlib/26.5.4/ddmlib-26.5.4.pom
https://dl.google.com/dl/android/maven2/com/android/tools/dvlib/26.0.0/dvlib-26.0.0.pom
https://dl.google.com/dl/android/maven2/com/android/tools/dvlib/26.0.1/dvlib-26.0.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/dvlib/26.1.4/dvlib-26.1.4.pom
https://dl.google.com/dl/android/maven2/com/android/tools/dvlib/26.2.1/dvlib-26.2.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/dvlib/26.3.1/dvlib-26.3.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/dvlib/26.5.3/dvlib-26.5.3.pom
https://dl.google.com/dl/android/maven2/com/android/tools/dvlib/26.5.4/dvlib-26.5.4.pom
https://dl.google.com/dl/android/maven2/com/android/tools/external/com-intellij/intellij-core/26.0.0/intellij-core-26.0.0.pom
https://dl.google.com/dl/android/maven2/com/android/tools/external/com-intellij/intellij-core/26.0.1/intellij-core-26.0.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/external/com-intellij/intellij-core/26.5.3/intellij-core-26.5.3.pom
https://dl.google.com/dl/android/maven2/com/android/tools/external/com-intellij/kotlin-compiler/26.5.3/kotlin-compiler-26.5.3.pom
https://dl.google.com/dl/android/maven2/com/android/tools/external/com-intellij/intellij-core/26.5.4/intellij-core-26.5.4.pom
https://dl.google.com/dl/android/maven2/com/android/tools/external/com-intellij/kotlin-compiler/26.5.4/kotlin-compiler-26.5.4.pom
https://dl.google.com/dl/android/maven2/com/android/tools/external/org-jetbrains/uast/26.0.0/uast-26.0.0.pom
https://dl.google.com/dl/android/maven2/com/android/tools/external/org-jetbrains/uast/26.0.1/uast-26.0.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/external/org-jetbrains/uast/26.5.3/uast-26.5.3.pom
https://dl.google.com/dl/android/maven2/com/android/tools/external/org-jetbrains/uast/26.5.4/uast-26.5.4.pom
https://dl.google.com/dl/android/maven2/com/android/tools/layoutlib/layoutlib-api/26.0.0/layoutlib-api-26.0.0.pom
https://dl.google.com/dl/android/maven2/com/android/tools/layoutlib/layoutlib-api/26.0.1/layoutlib-api-26.0.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/layoutlib/layoutlib-api/26.1.4/layoutlib-api-26.1.4.pom
https://dl.google.com/dl/android/maven2/com/android/tools/layoutlib/layoutlib-api/26.2.1/layoutlib-api-26.2.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/layoutlib/layoutlib-api/26.3.1/layoutlib-api-26.3.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/layoutlib/layoutlib-api/26.5.3/layoutlib-api-26.5.3.pom
https://dl.google.com/dl/android/maven2/com/android/tools/layoutlib/layoutlib-api/26.5.4/layoutlib-api-26.5.4.pom
https://dl.google.com/dl/android/maven2/com/android/tools/lint/lint-api/26.0.0/lint-api-26.0.0.pom
https://dl.google.com/dl/android/maven2/com/android/tools/lint/lint-api/26.0.1/lint-api-26.0.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/lint/lint-api/26.5.3/lint-api-26.5.3.pom
https://dl.google.com/dl/android/maven2/com/android/tools/lint/lint-api/26.5.4/lint-api-26.5.4.pom
https://dl.google.com/dl/android/maven2/com/android/tools/lint/lint-checks/26.0.0/lint-checks-26.0.0.pom
https://dl.google.com/dl/android/maven2/com/android/tools/lint/lint-checks/26.0.1/lint-checks-26.0.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/lint/lint-checks/26.5.3/lint-checks-26.5.3.pom
https://dl.google.com/dl/android/maven2/com/android/tools/lint/lint-checks/26.5.4/lint-checks-26.5.4.pom
https://dl.google.com/dl/android/maven2/com/android/tools/lint/lint-gradle-api/26.1.4/lint-gradle-api-26.1.4.pom
https://dl.google.com/dl/android/maven2/com/android/tools/lint/lint-gradle-api/26.2.1/lint-gradle-api-26.2.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/lint/lint-gradle-api/26.3.1/lint-gradle-api-26.3.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/lint/lint-gradle-api/26.5.3/lint-gradle-api-26.5.3.pom
https://dl.google.com/dl/android/maven2/com/android/tools/lint/lint-gradle/26.5.3/lint-gradle-26.5.3.pom
https://dl.google.com/dl/android/maven2/com/android/tools/lint/lint-gradle-api/26.5.4/lint-gradle-api-26.5.4.pom
https://dl.google.com/dl/android/maven2/com/android/tools/lint/lint-gradle/26.5.4/lint-gradle-26.5.4.pom
https://dl.google.com/dl/android/maven2/com/android/tools/lint/lint/26.0.0/lint-26.0.0.pom
https://dl.google.com/dl/android/maven2/com/android/tools/lint/lint/26.0.1/lint-26.0.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/lint/lint/26.5.3/lint-26.5.3.pom
https://dl.google.com/dl/android/maven2/com/android/tools/lint/lint/26.5.4/lint-26.5.4.pom
https://dl.google.com/dl/android/maven2/com/android/tools/repository/26.0.0/repository-26.0.0.pom
https://dl.google.com/dl/android/maven2/com/android/tools/repository/26.0.1/repository-26.0.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/repository/26.1.4/repository-26.1.4.pom
https://dl.google.com/dl/android/maven2/com/android/tools/repository/26.2.1/repository-26.2.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/repository/26.3.1/repository-26.3.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/repository/26.5.3/repository-26.5.3.pom
https://dl.google.com/dl/android/maven2/com/android/tools/repository/26.5.4/repository-26.5.4.pom
https://dl.google.com/dl/android/maven2/com/android/tools/sdklib/26.0.0/sdklib-26.0.0.pom
https://dl.google.com/dl/android/maven2/com/android/tools/sdklib/26.0.1/sdklib-26.0.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/sdklib/26.1.4/sdklib-26.1.4.pom
https://dl.google.com/dl/android/maven2/com/android/tools/sdklib/26.2.1/sdklib-26.2.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/sdklib/26.3.1/sdklib-26.3.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/sdklib/26.5.3/sdklib-26.5.3.pom
https://dl.google.com/dl/android/maven2/com/android/tools/sdklib/26.5.4/sdklib-26.5.4.pom
https://dl.google.com/dl/android/maven2/com/android/tools/sdk-common/26.0.0/sdk-common-26.0.0.pom
https://dl.google.com/dl/android/maven2/com/android/tools/sdk-common/26.0.1/sdk-common-26.0.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/sdk-common/26.1.4/sdk-common-26.1.4.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.5.3/sdk-common-26.5.3.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/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-iid/17.0.0/play-services-iid-17.0.0.pom
@@ -279,7 +276,7 @@ https://jitpack.io/com/github/status-im/status-keycard-java/android/3.0.4/androi
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/reflow-animator/1.0.6/reflow-animator-1.0.6.pom
https://jitpack.io/com/github/yalantis/ucrop/2.2.5-native/ucrop-2.2.5-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
@@ -365,9 +362,9 @@ https://repo.maven.apache.org/maven2/com/android/tools/sdk-common/24.5.0/sdk-com
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/fbjni/fbjni/0.0.2/fbjni-0.0.2.pom
https://repo.maven.apache.org/maven2/com/facebook/fresco/animated-base/2.0.0/animated-base-2.0.0.pom
https://repo.maven.apache.org/maven2/com/facebook/fresco/animated-drawable/2.0.0/animated-drawable-2.0.0.pom
https://repo.maven.apache.org/maven2/com/facebook/fresco/animated-gif/2.0.0/animated-gif-2.0.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-gif/2.2.0/animated-gif-2.2.0.pom
https://repo.maven.apache.org/maven2/com/facebook/fresco/drawee/2.0.0/drawee-2.0.0.pom
https://repo.maven.apache.org/maven2/com/facebook/fresco/fbcore/2.0.0/fbcore-2.0.0.pom
https://repo.maven.apache.org/maven2/com/facebook/fresco/flipper/2.2.0/flipper-2.2.0.pom
@@ -399,9 +396,9 @@ https://repo.maven.apache.org/maven2/com/googlecode/juniversalchardet/juniversal
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/6/auto-parent-6.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.1/auto-value-annotations-1.8.1.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-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.1/auto-value-parent-1.8.1.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/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/2.0.1/jsr305-2.0.1.pom
@@ -421,12 +418,12 @@ https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_annotatio
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.3.1/error_prone_annotations-2.3.1.pom
https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_annotations/2.7.1/error_prone_annotations-2.7.1.pom
https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_annotations/2.9.0/error_prone_annotations-2.9.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.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.3.1/error_prone_parent-2.3.1.pom
https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_parent/2.7.1/error_prone_parent-2.7.1.pom
https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_parent/2.9.0/error_prone_parent-2.9.0.pom
https://repo.maven.apache.org/maven2/com/google/google/1/google-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
@@ -435,14 +432,14 @@ https://repo.maven.apache.org/maven2/com/google/guava/guava-parent/23.0/guava-pa
https://repo.maven.apache.org/maven2/com/google/guava/guava-parent/26.0-android/guava-parent-26.0-android.pom
https://repo.maven.apache.org/maven2/com/google/guava/guava-parent/26.0-jre/guava-parent-26.0-jre.pom
https://repo.maven.apache.org/maven2/com/google/guava/guava-parent/27.0.1-jre/guava-parent-27.0.1-jre.pom
https://repo.maven.apache.org/maven2/com/google/guava/guava-parent/30.1.1-jre/guava-parent-30.1.1-jre.pom
https://repo.maven.apache.org/maven2/com/google/guava/guava-testlib/30.1.1-jre/guava-testlib-30.1.1-jre.pom
https://repo.maven.apache.org/maven2/com/google/guava/guava-parent/31.0.1-jre/guava-parent-31.0.1-jre.pom
https://repo.maven.apache.org/maven2/com/google/guava/guava-testlib/31.0.1-jre/guava-testlib-31.0.1-jre.pom
https://repo.maven.apache.org/maven2/com/google/guava/guava/17.0/guava-17.0.pom
https://repo.maven.apache.org/maven2/com/google/guava/guava/22.0/guava-22.0.pom
https://repo.maven.apache.org/maven2/com/google/guava/guava/23.0/guava-23.0.pom
https://repo.maven.apache.org/maven2/com/google/guava/guava/26.0-jre/guava-26.0-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/30.1.1-jre/guava-30.1.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/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
@@ -477,22 +474,22 @@ https://repo.maven.apache.org/maven2/com/squareup/okhttp3/parent/3.12.12/parent-
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/2.9.0/okio-2.9.0.pom
https://repo.maven.apache.org/maven2/com/squareup/okio/okio/3.0.0-alpha.6/okio-3.0.0-alpha.6.pom
https://repo.maven.apache.org/maven2/com/squareup/okio/okio/3.0.0-alpha.10/okio-3.0.0-alpha.10.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/jakarta.activation/2.0.1/jakarta.activation-2.0.1.pom
https://repo.maven.apache.org/maven2/com/sun/activation/javax.activation/1.2.0/javax.activation-1.2.0.pom
https://repo.maven.apache.org/maven2/com/sun/istack/istack-commons-runtime/2.21/istack-commons-runtime-2.21.pom
https://repo.maven.apache.org/maven2/com/sun/istack/istack-commons-runtime/4.0.1/istack-commons-runtime-4.0.1.pom
https://repo.maven.apache.org/maven2/com/sun/istack/istack-commons-runtime/4.1.0-M1/istack-commons-runtime-4.1.0-M1.pom
https://repo.maven.apache.org/maven2/com/sun/istack/istack-commons/2.21/istack-commons-2.21.pom
https://repo.maven.apache.org/maven2/com/sun/istack/istack-commons/4.0.1/istack-commons-4.0.1.pom
https://repo.maven.apache.org/maven2/com/sun/istack/istack-commons/4.1.0-M1/istack-commons-4.1.0-M1.pom
https://repo.maven.apache.org/maven2/com/sun/xml/bind/jaxb-bom-ext/2.2.11/jaxb-bom-ext-2.2.11.pom
https://repo.maven.apache.org/maven2/com/sun/xml/bind/jaxb-bom-ext/3.0.2-b01/jaxb-bom-ext-3.0.2-b01.pom
https://repo.maven.apache.org/maven2/com/sun/xml/bind/jaxb-bom-ext/3.0.2/jaxb-bom-ext-3.0.2.pom
https://repo.maven.apache.org/maven2/com/sun/xml/bind/mvn/jaxb-parent/2.2.11/jaxb-parent-2.2.11.pom
https://repo.maven.apache.org/maven2/com/sun/xml/bind/mvn/jaxb-parent/3.0.2-b01/jaxb-parent-3.0.2-b01.pom
https://repo.maven.apache.org/maven2/com/sun/xml/bind/mvn/jaxb-parent/3.0.2/jaxb-parent-3.0.2.pom
https://repo.maven.apache.org/maven2/com/sun/xml/bind/mvn/jaxb-runtime-parent/2.2.11/jaxb-runtime-parent-2.2.11.pom
https://repo.maven.apache.org/maven2/com/sun/xml/bind/mvn/jaxb-txw-parent/2.2.11/jaxb-txw-parent-2.2.11.pom
https://repo.maven.apache.org/maven2/com/sun/xml/bind/mvn/jaxb-txw-parent/3.0.2-b01/jaxb-txw-parent-3.0.2-b01.pom
https://repo.maven.apache.org/maven2/com/sun/xml/bind/mvn/jaxb-txw-parent/3.0.2/jaxb-txw-parent-3.0.2.pom
https://repo.maven.apache.org/maven2/com/sun/xml/fastinfoset/FastInfoset/1.2.13/FastInfoset-1.2.13.pom
https://repo.maven.apache.org/maven2/com/sun/xml/fastinfoset/FastInfoset/2.0.0/FastInfoset-2.0.0.pom
https://repo.maven.apache.org/maven2/com/sun/xml/fastinfoset/fastinfoset-project/1.2.13/fastinfoset-project-1.2.13.pom
@@ -507,8 +504,9 @@ 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/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/jakarta/xml/bind/jakarta.xml.bind-api-parent/3.0.1/jakarta.xml.bind-api-parent-3.0.1.pom
https://repo.maven.apache.org/maven2/jakarta/xml/bind/jakarta.xml.bind-api/3.0.1/jakarta.xml.bind-api-3.0.1.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/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/4.0.0-RC2/jakarta.xml.bind-api-4.0.0-RC2.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/annotation/javax.annotation-api/1.3.2/javax.annotation-api-1.3.2.pom
@@ -629,7 +627,7 @@ https://repo.maven.apache.org/maven2/org/bouncycastle/bcprov-jdk15on/1.56/bcprov
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/checkerframework/checker-qual/2.5.2/checker-qual-2.5.2.pom
https://repo.maven.apache.org/maven2/org/checkerframework/checker-qual/3.15.0/checker-qual-3.15.0.pom
https://repo.maven.apache.org/maven2/org/checkerframework/checker-qual/3.18.1/checker-qual-3.18.1.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/mojo/animal-sniffer-annotations/1.14/animal-sniffer-annotations-1.14.pom
@@ -652,12 +650,12 @@ https://repo.maven.apache.org/maven2/org/eclipse/jdt/core/compiler/ecj/4.4.2/ecj
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/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-b01/jaxb-bom-3.0.2-b01.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/3.0.2-b01/jaxb-core-3.0.2-b01.pom
https://repo.maven.apache.org/maven2/org/glassfish/jaxb/jaxb-core/3.0.2/jaxb-core-3.0.2.pom
https://repo.maven.apache.org/maven2/org/glassfish/jaxb/jaxb-runtime/2.2.11/jaxb-runtime-2.2.11.pom
https://repo.maven.apache.org/maven2/org/glassfish/jaxb/txw2/2.2.11/txw2-2.2.11.pom
https://repo.maven.apache.org/maven2/org/glassfish/jaxb/txw2/3.0.2-b01/txw2-3.0.2-b01.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/2.2/hamcrest-core-2.2.pom
https://repo.maven.apache.org/maven2/org/hamcrest/hamcrest-parent/1.3/hamcrest-parent-1.3.pom
@@ -721,19 +719,16 @@ 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.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.20/kotlin-stdlib-common-1.4.20.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.31/kotlin-stdlib-common-1.4.31.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.50/kotlin-stdlib-jdk7-1.3.50.pom
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.4.20/kotlin-stdlib-jdk7-1.4.20.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.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.4.20/kotlin-stdlib-jdk8-1.4.20.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-jre8/1.2.0/kotlin-stdlib-jre8-1.2.0.pom
@@ -747,7 +742,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.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.20/kotlin-stdlib-1.4.20.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.31/kotlin-stdlib-1.4.31.pom
@@ -761,7 +755,7 @@ https://repo.maven.apache.org/maven2/org/junit/junit-bom/5.7.0/junit-bom-5.7.0.p
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/jvnet/staxex/stax-ex/1.7.7/stax-ex-1.7.7.pom
https://repo.maven.apache.org/maven2/org/jvnet/staxex/stax-ex/2.0.1/stax-ex-2.0.1.pom
https://repo.maven.apache.org/maven2/org/jvnet/staxex/stax-ex/2.1.0-M1/stax-ex-2.1.0-M1.pom
https://repo.maven.apache.org/maven2/org/mockito/mockito-core/2.23.0/mockito-core-2.23.0.pom
https://repo.maven.apache.org/maven2/org/mockito/mockito-core/2.28.2/mockito-core-2.28.2.pom
https://repo.maven.apache.org/maven2/org/mockito/mockito-core/3.6.28/mockito-core-3.6.28.pom
@@ -814,10 +808,10 @@ https://repo.maven.apache.org/maven2/org/robolectric/shadowapi/4.4/shadowapi-4.4
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.4/utils-reflector-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-alpha1/jcl-over-slf4j-2.0.0-alpha1.pom
https://repo.maven.apache.org/maven2/org/slf4j/slf4j-api/2.0.0-alpha1/slf4j-api-2.0.0-alpha1.pom
https://repo.maven.apache.org/maven2/org/slf4j/slf4j-jdk14/2.0.0-alpha1/slf4j-jdk14-2.0.0-alpha1.pom
https://repo.maven.apache.org/maven2/org/slf4j/slf4j-parent/2.0.0-alpha1/slf4j-parent-2.0.0-alpha1.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/slf4j-api/2.0.0-alpha5/slf4j-api-2.0.0-alpha5.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-parent/2.0.0-alpha5/slf4j-parent-2.0.0-alpha5.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/9/oss-parent-9.pom
+1
View File
@@ -27,6 +27,7 @@ react-native-permissions
react-native-reanimated
react-native-safe-area-context
react-native-shake
react-native-share
react-native-splash-screen
react-native-status
react-native-status-keycard
+2 -2
View File
@@ -34,8 +34,8 @@ in {
];
shellHook = ''
export ANDROID_SDK_ROOT="${androidPkgs}"
export ANDROID_NDK_ROOT="${androidPkgs}/ndk-bundle"
export ANDROID_SDK_ROOT="${androidPkgs.sdk}"
export ANDROID_NDK_ROOT="${androidPkgs.ndk}"
export STATUS_NIX_MAVEN_REPO="${deps.gradle}"
+4 -2
View File
@@ -24,6 +24,7 @@ let
buildType = getConfig "build-type" "release";
buildNumber = getConfig "build-number" 9999;
commitHash = getConfig "commit-hash" "unknown";
gradleOpts = getConfig "android.gradle-opts" null;
# Used to detect end-to-end builds
androidAbiInclude = getConfig "android.abi-include" "armeabi-v7a;arm64-v8a;x86";
@@ -80,8 +81,8 @@ in stdenv.mkDerivation rec {
ANDROID_ABI_INCLUDE = androidAbiInclude;
# Android SDK/NDK for use by Gradle
ANDROID_SDK_ROOT = "${androidPkgs}";
ANDROID_NDK_ROOT = "${androidPkgs}/ndk-bundle";
ANDROID_SDK_ROOT = "${androidPkgs.sdk}";
ANDROID_NDK_ROOT = "${androidPkgs.ndk}";
# Used by the Android Gradle build script in android/build.gradle
STATUS_GO_ANDROID_LIBDIR = "${status-go}";
@@ -153,6 +154,7 @@ in stdenv.mkDerivation rec {
-Dorg.gradle.daemon=false \
-Dmaven.repo.local='${deps.gradle}' \
-PversionCode=${toString buildNumber} \
-PcommitHash=${commitHash} \
assemble${gradleBuildType} \
|| exit 1
popd > /dev/null
+5 -2
View File
@@ -7,7 +7,8 @@
self: super:
let inherit (super) stdenv stdenvNoCC callPackage;
let
inherit (super) stdenv stdenvNoCC callPackage;
in {
# Fix for MacOS
mkShell = super.mkShell.override { stdenv = stdenvNoCC; };
@@ -40,6 +41,9 @@ in {
version = "11.5";
allowHigher = true;
};
gomobile = super.gomobile.override {
androidPkgs = self.androidEnvCustom.compose;
};
# Android environement
androidEnvCustom = callPackage ./pkgs/android-sdk { };
@@ -48,7 +52,6 @@ in {
# Custom packages
aapt2 = callPackage ./pkgs/aapt2 { };
gomobile = callPackage ./pkgs/gomobile { };
patchMavenSources = callPackage ./pkgs/patch-maven-srcs { };
goMavenResolver = callPackage ./pkgs/go-maven-resolver { };
}
+2 -2
View File
@@ -13,8 +13,8 @@ let
name = "nixpkgs-source";
owner = "NixOS";
repo = "nixpkgs";
rev = "76f53eef48cc6c340ed063c117aac75c4652627c";
sha256 = "0a2wn0ryq0ngd3ybc3ag70dp9z1x4w1jgy6qr4dzfnzbnn3s5246";
rev = "65135081f63ca2f5eaa9b7b54bfc7bf31502cfd6";
sha256 = "074lyh19x8xs8xqf4wwwl64870rpml96g7dhx1y09i81w5k29aga";
# To get the compressed Nix sha256, use:
# nix-prefetch-url --unpack https://github.com/${ORG}/nixpkgs/archive/${REV}.tar.gz
};
+6 -6
View File
@@ -11,7 +11,7 @@ let
pname = "aapt2";
# Warning: This must be the same as gradlePluginVersion android/gradle.properties
version = "3.5.3-5435860";
version = "3.5.4-6197926";
pkgPath = "com/android/tools/build/aapt2";
repoUrl = "https://dl.google.com/dl/android/maven2";
@@ -30,20 +30,20 @@ let
jar = fetchurl {
url = "${repoUrl}/${pkgPath}/${version}/${filenames.jar}";
sha256 = getAttr platform {
linux = "05gln93wfj4l5b0zfn6ipkx0i9p0x928ygwkrcfyl58aslxg5gx2";
osx = "0nzc3hq3fm847a3rvwdz26ln3inh50x44ml0dq486yz45qv9f7cs";
linux = "0hrlbxdn6bkl6qr9y599mjs0dy72q0352j30vpkza4lbq5b7rj9v";
osx = "0hhvxyr0jxci01qqkcrn80h4qs3b43lqxpbss0xvrkd1nwdilmnb";
};
};
sha = fetchurl {
url = "${repoUrl}/${pkgPath}/${version}/${filenames.jar}.sha1";
sha256 = getAttr platform {
linux = "0rr7ly0f3w5jw0q985hmxmv8q2nlw1k72n6kl7kcmj4a7i479q90";
osx = "0k7j54x627jsnl8zdcfj62jj8z0c857yqs3iwyvn29hd02v1b78m";
linux = "0ipmkl911hf17g2pb39jjkwrbb07p0cd1qd10p2fl8d1icxf63sz";
osx = "156jbw4xm43902c0cqrag9l1s3fg6i1irsdz8m8659i9530ywwpx";
};
};
pom = fetchurl {
url = "${repoUrl}/${pkgPath}/${version}/${filenames.pom}";
sha256 = "1kdjfmrd4h2qljsdlqmyskin0564csg0q8j7bynag17w511bn4d3";
sha256 = "00ra1xz4x1sfcf0z6x9in3b1flpyvxjbhpvhacc32r8b58nfvqzp";
};
};
+6 -13
View File
@@ -5,25 +5,18 @@
{ stdenv, config, callPackage, androidenv, openjdk, mkShell }:
# The "android-sdk-license" license is accepted
# by setting android_sdk.accept_license = true.
androidenv.composeAndroidPackages {
toolsVersion = "26.1.1";
platformToolsVersion = "31.0.2";
buildToolsVersions = [ "30.0.3" ];
includeEmulator = false;
includeSources = false;
platformVersions = [ "29" ];
includeSystemImages = false;
systemImageTypes = [ "default" ];
platformToolsVersion = "31.0.3";
buildToolsVersions = [ "31.0.0" ];
platformVersions = [ "30" ];
cmakeVersions = [ "3.18.1" ];
includeNDK = true;
ndkVersion = "22.1.7171670";
useGoogleAPIs = false;
useGoogleTVAddOns = false;
includeNDK = true;
includeExtras = [
"extras;android;m2repository"
"extras;google;m2repository"
];
# The "android-sdk-license" license is accepted
# by setting android_sdk.accept_license = true.
extraLicenses = [];
}
+5 -5
View File
@@ -3,15 +3,15 @@
#
# This derivation simply symlinks some stuff to get
# shorter paths as libexec/android-sdk is quite the mouthful.
# With this you can just do `androidPkgs.sdk` and `androidPkgs.ndk`.
#
stdenv.mkDerivation {
name = "${compose.androidsdk.name}-mod";
phases = [ "symlinkPhase" ];
outputs = [ "out" "sdk" "ndk" ];
symlinkPhase = ''
mkdir -p $out
ln -s "${compose.androidsdk}/bin" $out/bin
for d in ${compose.androidsdk}/libexec/android-sdk/*; do
ln -s $d $out/$(basename $d)
done
ln -s ${compose.androidsdk} $out
ln -s ${compose.androidsdk}/libexec/android-sdk $sdk
ln -s ${compose.androidsdk}/libexec/android-sdk/ndk-bundle $ndk
'';
}
+3 -3
View File
@@ -5,9 +5,9 @@ mkShell {
shellHook = ''
export JAVA_HOME="${openjdk}"
export ANDROID_HOME="${androidPkgs}"
export ANDROID_SDK_ROOT="${androidPkgs}"
export ANDROID_NDK_ROOT="${androidPkgs}/ndk-bundle"
export ANDROID_HOME="${androidPkgs.sdk}"
export ANDROID_NDK_ROOT="${androidPkgs.ndk}"
export ANDROID_SDK_ROOT="$ANDROID_HOME"
export PATH="$ANDROID_HOME/bin:$PATH"
export PATH="$ANDROID_NDK_ROOT:$PATH"
+3 -3
View File
@@ -1,10 +1,10 @@
{ lib, buildGo116Package, fetchFromGitHub }:
{ lib, buildGo116Module, fetchFromGitHub }:
let
inherit (lib) strings;
in buildGo116Module rec {
pname = "go-maven-resolver";
version = "v1.1.1";
version = "v1.1.2";
vendorSha256 = "1p9pl33zpbw8zc85301mnp692lkr46ppm1q99wnqwynzi7x8hnkn";
@@ -13,6 +13,6 @@ in buildGo116Module rec {
owner = "status-im";
repo = pname;
rev = version;
sha256 = "0pjab7v4cq3w5z3h0g9bfahqfs4raqp8y9sxwsri4zgbvdllq11q";
sha256 = "0p3qz5w8spzdxs70m1sdfwi0ajv4ciw3f7fxligf45vj2fwp5dab";
};
}
-53
View File
@@ -1,53 +0,0 @@
{ stdenv, lib, fetchgit, buildGo116Module, zlib
, makeWrapper, xcodeWrapper, androidPkgs }:
buildGo116Module {
pname = "gomobile";
version = "2021-06-14";
vendorSha256 = "1irgkgv72rakg7snk1bnp10ibr64ykz9l40s59l4fnl63zsh12a0";
src = fetchgit {
rev = "7c8f154d100840bc5828285bb390bbae1cb5a98c";
name = "gomobile";
url = "https://go.googlesource.com/mobile";
sha256 = "1w9mra1mqf60iafp0ywvja5196fjsjyfhvz4yizqq4qkyll5qmj1";
};
subPackages = [ "bind" "cmd/gobind" "cmd/gomobile" ];
# Fails with: go: cannot find GOROOT directory
doCheck = false;
nativeBuildInputs = [ makeWrapper ]
++ lib.optional stdenv.isDarwin xcodeWrapper;
# Prevent a non-deterministic temporary directory from polluting the resulting object files
postPatch = ''
substituteInPlace cmd/gomobile/env.go --replace \
'tmpdir, err = ioutil.TempDir("", "gomobile-work-")' \
'tmpdir = filepath.Join(os.Getenv("NIX_BUILD_TOP"), "gomobile-work")' \
--replace '"io/ioutil"' ""
substituteInPlace cmd/gomobile/init.go --replace \
'tmpdir, err = ioutil.TempDir(gomobilepath, "work-")' \
'tmpdir = filepath.Join(os.Getenv("NIX_BUILD_TOP"), "work")'
'';
# Necessary for GOPATH when using gomobile.
postInstall = ''
mkdir -p $out/src/golang.org/x
ln -s $src $out/src/golang.org/x/mobile
wrapProgram $out/bin/gomobile \
--prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath [ zlib ]}" \
--prefix PATH : "${androidPkgs}/bin" \
--set ANDROID_NDK_HOME "${androidPkgs}/ndk-bundle" \
--set ANDROID_HOME "${androidPkgs}"
'';
meta = with lib; {
description = "A tool for building and running mobile apps written in Go";
homepage = "https://pkg.go.dev/golang.org/x/mobile/cmd/gomobile";
license = licenses.bsd3;
maintainers = with maintainers; [ jakubgs ];
};
}
+2 -3
View File
@@ -14,7 +14,6 @@ let
# Combines with many other shells
node-sh = mkShell {
buildInputs = [ pkgs.androidPkgs ];
shellHook = ''
export STATUS_REACT_HOME=$(git rev-parse --show-toplevel)
$STATUS_REACT_HOME/nix/scripts/node_modules.sh ${pkgs.deps.nodejs-patched}
@@ -52,8 +51,8 @@ let
shellHook = ''
export STATUS_GO_ANDROID_LIBDIR="DUMMY"
export STATUS_NIX_MAVEN_REPO="${pkgs.deps.gradle}"
export ANDROID_SDK_ROOT="${pkgs.androidPkgs}"
export ANDROID_NDK_ROOT="${pkgs.androidPkgs}/ndk-bundle"
export ANDROID_SDK_ROOT="${pkgs.androidPkgs.sdk}"
export ANDROID_NDK_ROOT="${pkgs.androidPkgs.ndk}"
'';
};
+2 -3
View File
@@ -46,10 +46,9 @@ in buildGo116Package {
export GO111MODULE=off
export GOPATH=${gomobile}:$GOPATH
export NIX_GOWORKDIR=${NIX_GOWORKDIR}
'' + optionalString (platform == "android") ''
export ANDROID_HOME=${androidPkgs}
export ANDROID_NDK_HOME=${androidPkgs}/ndk-bundle
export ANDROID_SDK_ROOT="${androidPkgs.sdk}"
export ANDROID_NDK_HOME="${androidPkgs.ndk}"
export PATH="${makeBinPath [ openjdk ]}:$PATH"
'';
+5 -3
View File
@@ -13,7 +13,7 @@
"dependencies": {
"@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/cameraroll": "^1.6.1",
"@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/hooks": "^2.5.1",
"@react-native-community/masked-view": "^0.1.6",
@@ -43,24 +43,26 @@
"react-native-fs": "^2.14.1",
"react-native-gesture-handler": "^1.8.0",
"react-native-haptic-feedback": "^1.9.0",
"react-native-image-crop-picker": "^0.31.1",
"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-viewing": "git+https://github.com/Ferossgp/react-native-image-viewing.git#v0.2.1",
"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-linear-gradient": "^2.5.6",
"react-native-mail": "git+https://github.com/status-im/react-native-mail.git#v4.0.0-status",
"react-native-mail": "^6.1.1",
"react-native-navigation": "^7.13.0",
"react-native-permissions": "^2.1.5",
"react-native-reanimated": "^2.1.0",
"react-native-redash": "^16.0.11",
"react-native-safe-area-context": "^2.0.0",
"react-native-shake": "^3.3.1",
"react-native-share": "^7.0.1",
"react-native-splash-screen": "^3.2.0",
"react-native-status-keycard": "git+https://github.com/status-im/react-native-status-keycard.git#v2.5.35",
"react-native-svg": "^9.8.4",
"react-native-touch-id": "^4.4.1",
"react-native-webview": "git+https://github.com/status-im/react-native-webview.git#v11.3.0-status",
"rn-emoji-keyboard": "git+https://github.com/status-im/rn-emoji-keyboard.git#v0.4.2",
"tdigest": "^0.1.1",
"web3-utils": "^1.2.1"
},
Binary file not shown.

After

Width:  |  Height:  |  Size: 442 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 647 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

+7 -1
View File
@@ -135,8 +135,10 @@
return web3Response(payload, [window.statusAppcurrentAccountAddress])
} else if (payload.method == "eth_coinbase" && (typeof window.statusAppcurrentAccountAddress !== "undefined")) {
return web3Response(payload, window.statusAppcurrentAccountAddress)
} else if (payload.method == "net_version" || payload.method == "eth_chainId"){
} else if (payload.method == "net_version"){
return web3Response(payload, window.statusAppNetworkId)
} else if (payload.method == "eth_chainId"){
return web3Response(payload, "0x" + window.statusAppNetworkId.toString(16))
} else if (payload.method == "eth_uninstallFilter"){
return web3Response(payload, true);
} else {
@@ -177,6 +179,10 @@
this._events[name] = this._events[name].filter(filterListeners);
}
EthereumProvider.prototype.removeAllListeners = function () {
this._events = {};
}
EthereumProvider.prototype.emit = function (name, data) {
if (!this._events[name]) {
return
+1
View File
@@ -4,6 +4,7 @@
export YLW='\033[1;33m'
export RED='\033[0;31m'
export GRN='\033[0;32m'
export BLU='\033[0;34m'
export BLD='\033[1m'
export RST='\033[0m'
+113
View File
@@ -0,0 +1,113 @@
#!/usr/bin/env bash
set -euo pipefail
GIT_ROOT=$(cd "${BASH_SOURCE%/*}" && git rev-parse --show-toplevel)
FDROIDATA_REPO_URL="https://gitlab.com/fdroid/fdroiddata.git"
WORKING_DIR="${HOME}/fdroid-release"
source "${GIT_ROOT}/scripts/colors.sh"
function log_info() { echo -e " ${GRN}>>>${RST} $@"; }
function log_data() { echo -e " ${BLU}===${RST} $@"; }
function log_notice() { echo -e " ${YLW}<<<${RST} $@"; }
function log_warning() { echo -e " ${RED}!!!${RST} $@"; }
if [[ $# -ne 1 ]]; then
echo "No release URL provided!" >&2
echo "Usage: fdroid-pr.sh https://.../release.apk" >&2
exit 1
fi
# URL of APK to identify release version code
RELEASE_APK="${1}"
log_info "Creating working dir..."
mkdir -p "${WORKING_DIR}"
APK_FILE="${WORKING_DIR}/status.apk"
if [[ -f "${RELEASE_APK}" ]]; then
log_info "Using: ${RELEASE_APK}"
APK_FILE="${RELEASE_APK}"
else
log_info "Fetching release..."
curl -s "${RELEASE_APK}" -o "${APK_FILE}"
fi
log_info "Parsing APK..."
VERSION_CODE=$(apkanalyzer manifest version-code "${APK_FILE}")
if [[ -n "${VERSION_CODE}" ]]; then
log_data "Version Code: ${VERSION_CODE}"
else
log_warning "Failed to find version code." >&2; exit 1
fi
VERSION_NAME=$(apkanalyzer manifest print "${APK_FILE}" | awk -F'"' '/android:versionName/{print $2}')
if [[ -n "${VERSION_NAME}" ]]; then
log_data "Version Code: ${VERSION_NAME}"
else
log_warning "Failed to find version name." >&2; exit 1
fi
COMMIT_HASH=$(apkanalyzer manifest print "${APK_FILE}" | awk -F'"' '/commitHash/{getline; print $2}')
if [[ -n "${COMMIT_HASH}" ]]; then
log_data "Commit Hash: ${COMMIT_HASH}"
else
log_warning "Failed to find commit hash." >&2; exit 1
fi
CLONE_DIR="${WORKING_DIR}/fdroidata"
METADATA_FILE="${CLONE_DIR}/metadata/im.status.ethereum.yml"
PREVIOUS_BRANCH=""
if [[ -d "${CLONE_DIR}" ]]; then
log_info "Fetching: ${FDROIDATA_REPO_URL}"
cd "${CLONE_DIR}"
PREVIOUS_BRANCH=$(git rev-parse --abbrev-ref HEAD)
git checkout master
git pull --force
else
log_info "Cloning: ${FDROIDATA_REPO_URL}"
git clone -q --depth=1 "${FDROIDATA_REPO_URL}" "${CLONE_DIR}"
cd "${CLONE_DIR}"
fi
BRANCH_NAME="status-im/v${VERSION_NAME}"
log_info "Checkout out branch: ${BRANCH_NAME}"
if [[ "${PREVIOUS_BRANCH}" == "${BRANCH_NAME}" ]]; then
log_warning "Removing previous branch: ${PREVIOUS_BRANCH}"
git branch -D "${BRANCH_NAME}"
fi
git switch -C "${BRANCH_NAME}"
log_info "Updating metadata file..."
# find line number of last "versionName" line
START_LINE=$(awk '/ versionCode:/{n=NR} END{print n}' "${METADATA_FILE}")
# find line number of last "build" line
END_LINE=$(awk '/ build:/{n=NR} END{print n}' "${METADATA_FILE}")
# Get the latest entry, excluding version info
BUILD_PARAMS=$(awk "NR >= $((START_LINE+2)) && NR <= ${END_LINE}" "${METADATA_FILE}")
# Build new entry
NEW_ENTRY="
- versionName: ${VERSION_NAME}
versionCode: ${VERSION_CODE}
commit: ${COMMIT_HASH}
${BUILD_PARAMS}"
# Insert new release build entry
sed -i "$((END_LINE+1))i\\${NEW_ENTRY//$'\n'/\\n}" "${METADATA_FILE}"
# Update current version values
sed -i "s/CurrentVersion: .*/CurrentVersion: ${VERSION_NAME}/" "${METADATA_FILE}"
sed -i "s/CurrentVersionCode: .*/CurrentVersionCode: ${VERSION_CODE}/" "${METADATA_FILE}"
log_info "Committing changes..."
# Add, commit and push
COMMIT_MESSAGE="Update Status to ${VERSION_NAME} (${VERSION_CODE})"
git add ${METADATA_FILE}
git commit -m "${COMMIT_MESSAGE}"
log_info "SUCCESS"
log_notice "Now add your fork of fdroidata as a remote to the repository and push."
log_notice "Then create a Merge Request from the branch in your fork."
log_notice "Repo path: ${BLD}${CLONE_DIR}${RST}"
-82
View File
@@ -1,82 +0,0 @@
#!/usr/bin/env bash
# Github Client Credentials
# Required to increase rate limits to a useable level.
GITHUB_CLIENT_ID=cae8611e191547e163bb
GITHUB_CLIENT_SECRET=ebcfe4e78a6bb96933a3e2476a6d1e8efa8d8b07
# Generates a markdown report for the pull requests given in STDIN
# The input format should match the output of list-pull-requests.sh:
# [pr #] [tab] [github pr api url] [tab] [comma separated list of commits]
usage() {
echo "DESCRIPTION"
echo ""
# Generates a markdown report for the pull requests given in STDIN
# The input format should match the output of list-pull-requests.sh:
# [pr #] [tab] [github pr api url] [tab] [comma separated list of commits]
echo ""
}
if [ "$1" = "-h" ] || [ "$1" = "--help" ]; then
usage
exit
fi
fatal() {
echo "FATAL: $@" >&2
exit 1
}
echo_json() {
local json=$1
local path=$2
echo -n "$json" | jq -r "$path"
}
check_pr_prereq() {
if ! command -v jq >/dev/null; then
fatal "jq(1) is not found, PR cannot be queried."
fi
if ! command -v curl >/dev/null; then
fatal "curl(1) is not found, PR cannot be queried."
fi
}
fetch() {
local url="$1?client_id=$GITHUB_CLIENT_ID&client_secret=$GITHUB_CLIENT_SECRET"
fetch_result=$(curl --fail -fsS "$url")
if [ $? -ne 0 ]; then fatal "Unable to get fetch from $1"; fi
}
process_stdin() {
while IFS= read -r line; do
local pr_url=`echo "$line" | cut -f 2`
echo_pull_request "$pr_url"
done
}
echo_pull_request() {
local pr_url=$1
fetch "$pr_url"
local pr=$fetch_result
echo "## $(echo_json "$pr" .title) (#$(echo_json "$pr" .number))
URL: $(echo_json "$pr" .html_url)
Creator: $(echo_json "$pr" .user.login)
Labels: $(echo_json "$pr" ' [.labels[].name] | join(", ") ' )
$(echo_json "$pr" .body)
"
}
check_pr_prereq
echo "# Pull Request Report
$( process_stdin )
"
+1
View File
@@ -32,6 +32,7 @@ fi
if [[ "${ANDROID_APK_SIGNED}" == "true" ]]; then
config+="status-im.android.keystore-path=\"$(must_get_env KEYSTORE_PATH)\";"
fi
config+="status-im.commit-hash=\"$(git rev-parse --verify HEAD)\";"
config+="status-im.build-type=\"$(must_get_env BUILD_TYPE)\";"
config+="status-im.build-number=\"$(must_get_env BUILD_NUMBER)\";"
config+="status-im.android.apk-signed=\"$(must_get_env ANDROID_APK_SIGNED)\";"
+16 -16
View File
@@ -1,31 +1,30 @@
#!/usr/bin/env bash
if [[ ! -x "$(command -v nix-prefetch-url)" ]] && [[ -z "${IN_NIX_SHELL}" ]]; then
echo "Remember to call 'make shell'!"
GIT_ROOT=$(cd "${BASH_SOURCE%/*}" && git rev-parse --show-toplevel)
source "${GIT_ROOT}/nix/scripts/source.sh"
if [[ ! -x "$(command -v nix-prefetch-url)" ]]; then
echo "No 'nix-prefetch-url' utility found!" >&2
exit 1
fi
set -ef
# urlencode <string>
urlencode() {
# urlencode <string>
old_lc_collate=$LC_COLLATE
LC_COLLATE=C
local length="${#1}"
for (( i = 0; i < length; i++ )); do
local c="${1:$i:1}"
case $c in
[a-zA-Z0-9.~_-]) printf '%s' "$c" ;;
*) printf '%%%02X' "'$c" ;;
old_lc_collate=$LC_COLLATE
LC_COLLATE=C
local length="${#1}"
for (( i = 0; i < length; i++ )); do
local c="${1:$i:1}"
case $c in
[a-zA-Z0-9.~_-]) printf '%s' "$c";;
*) printf '%%%02X' "'$c";;
esac
done
LC_COLLATE=$old_lc_collate
}
GIT_ROOT="$(cd "${BASH_SOURCE%/*}" && git rev-parse --show-toplevel)"
VERSION_FILE="${GIT_ROOT}/status-go-version.json"
SCRIPT_FILE="$(basename "$0")"
@@ -97,7 +96,8 @@ STATUS_GO_SHA256=$(nix-prefetch-url --unpack ${REPO_URL}/archive/$(urlencode ${S
cat << EOF > ${VERSION_FILE}
{
"_comment": "DO NOT EDIT THIS FILE BY HAND. USE 'scripts/update-status-go.sh <tag>' instead",
"_comment": "THIS SHOULD NOT BE EDITED BY HAND.",
"_comment": "Instead use: scripts/update-status-go.sh <rev>",
"owner": "${STATUS_GO_OWNER}",
"repo": "${STATUS_GO_REPO}",
"version": "${STATUS_GO_VERSION}",
+4
View File
@@ -203,6 +203,9 @@
(def push-notification-ios #js {})
(def rn-emoji-keyboard
#js {:EmojiKeyboard #js {}})
;; Update i18n_resources.cljs
(defn mock [module]
(case module
@@ -235,6 +238,7 @@
"react-native-navigation" react-native-navigation
"@react-native-community/push-notification-ios" push-notification-ios
"react-native-camera-kit" react-native-camera-kit
"rn-emoji-keyboard" rn-emoji-keyboard
"./fleets.js" default-fleets
"./chats.js" default-chats
"../translations/ar.json" (js/JSON.parse (slurp "./translations/ar.json"))
+1 -1
View File
@@ -33,7 +33,7 @@ To ensure consistency run [clj-kondo linter](https://github.com/borkdude/clj-kon
# Best practices
- Desing components atomically and compose them into bigger components.
- Design components atomically and compose them into bigger components.
- Do not export individual atoms, only components. This way we can limit design
system to be used in too many way which can creating disjointed experiences.
- Avoid external margins for atom components, it can be added on the wrapper
+5 -1
View File
@@ -44,7 +44,7 @@
offset (reagent/atom 0)
on-layout (fn [evt]
(reset! offset (oget evt "nativeEvent" "layout" "height")))]
(fn [{:keys [extended-header] :as props} children]
(fn [{:keys [extended-header refresh-control refreshing-sub refreshing-counter] :as props} children]
[animated/view {:flex 1
:pointer-events :box-none}
[animated/code {:key (str @offset)
@@ -67,6 +67,10 @@
:title-align :left}
(dissoc props :extended-header))]]
(into [animated/scroll-view {:on-scroll on-scroll
:refreshControl (when refresh-control
(refresh-control
(and @refreshing-sub
@refreshing-counter)))
:style {:z-index 1}
:scrollEventThrottle 16}
[animated/view {:pointer-events :box-none}
+5 -1
View File
@@ -47,7 +47,11 @@
{window-height :height} (rn/use-window-dimensions)
{:keys [keyboard-shown
keyboard-height]} (rn/use-keyboard)
keyboard-height-android-delta (if (and platform/android? keyboard-shown) (+ keyboard-height 20) 0)
safe-area (safe-area/use-safe-area)
window-height (- window-height (if platform/android?
(+ 50 keyboard-height-android-delta)
0))
min-height (+ (* styles/vertical-padding 2) (:bottom safe-area))
max-height (- window-height (:top safe-area) styles/margin-top)
visible (react/state false)
@@ -199,7 +203,7 @@
{:opacity opacity
:background-color (:backdrop @colors/theme)}))}]]
[animated/view {:style (merge (styles/content-container window-height)
{:transform [{:translateY translate-y}
{:transform [{:translateY (animated/add translate-y keyboard-height-android-delta)}
{:translateY (* window-height 2)}]})}
[gesture-handler/pan-gesture-handler (merge on-master-event
{:ref master-ref
+2 -2
View File
@@ -19,7 +19,7 @@
:border-radius 10
:opacity (animated/mix hold 1 0.6)
:transform [{:translateX (animated/mix state 0 24)}]
:background-color colors/white
:background-color colors/white-persist
:elevation 4
:shadow-opacity 1
:shadow-radius 16
@@ -43,7 +43,7 @@
:border-radius 6
:opacity (animated/mix hold 1 0.6)
:transform [{:scale (animated/mix state 0.0001 1)}]
:background-color colors/white
:background-color colors/white-persist
:elevation 4
:shadow-opacity 1
:shadow-radius 16
+4 -3
View File
@@ -194,7 +194,7 @@
(defn list-item
[{:keys [theme accessory disabled subtitle-max-lines icon icon-container-style
left-side-alignment
left-side-alignment icon-color icon-bg-color
title subtitle subtitle-secondary active on-press on-long-press chevron size text-size
accessory-text accessibility-label title-accessibility-label accessory-style
haptic-feedback haptic-type error animated animated-accessory? title-text-weight]
@@ -204,9 +204,10 @@
animated platform/ios?
haptic-type :selection}}]
(let [theme (if disabled :disabled theme)
{:keys [icon-color text-color icon-bg-color
active-background passive-background]}
{:keys [text-color active-background passive-background]}
(themes theme)
icon-color (or icon-color (:icon-color (themes theme)))
icon-bg-color (or icon-bg-color (:icon-bg-color (themes theme)))
optional-haptic (fn []
(when haptic-feedback
(haptic/trigger haptic-type)))
+22 -9
View File
@@ -146,7 +146,7 @@
(fn [{:keys [label multiline error style input-style keyboard-type before after
cancel-label on-focus on-blur show-cancel accessibility-label
bottom-value secure-text-entry container-style get-ref on-cancel
monospace]
monospace auto-complete-type auto-correct]
:or {cancel-label "Cancel"}
:as props}]
{:pre [(check-spec ::text-input props)]}
@@ -164,19 +164,30 @@
:on-press #(reset! visible true)}
:else after)
secure (and (true? secure-text-entry)
(or platform/android? (not @visible)))
secure (boolean (and secure-text-entry (not @visible))) ; must be a boolean to work on iOS
auto-complete (cond
(= keyboard-type :visible-password)
:off
secure-text-entry
:password
:else
auto-complete-type)
auto-correct (and (not= keyboard-type :visible-password) (not secure-text-entry) auto-correct)
on-cancel (fn []
(when on-cancel
(on-cancel))
(blur))
keyboard-type (cond
(and platform/ios? (= keyboard-type "visible-password"))
"default"
(and platform/ios? (= keyboard-type :visible-password))
:default
;; NOTE: Now switching dynamically brakes android input
(and platform/android? secure-text-entry @visible)
"visible-password"
; the correct approach on Android would be keep secure-text-entry on set keyboard type
; to visible-password. But until https://github.com/facebook/react-native/issues/27946
; is solved that's the second best way.
(and platform/android? secure-text-entry)
:default
:else
keyboard-type)]
@@ -200,6 +211,8 @@
:underline-color-android :transparent
:auto-capitalize :none
:secure-text-entry secure
:auto-correct auto-correct
:auto-complete-type auto-complete
:on-focus (fn [evt]
(when on-focus (on-focus evt))
(when show-cancel
@@ -215,7 +228,7 @@
{:clear-button-mode :while-editing})
(dissoc props
:style :keyboard-type :on-focus :on-blur
:secure-text-entry :ref :get-ref))]
:secure-text-entry :ref :get-ref :auto-correct :auto-complete-type))]
(when after
[accessory-element after])]
(when (and show-cancel
+143 -6
View File
@@ -1,13 +1,11 @@
(ns quo.design-system.colors
(:require [reagent.core :as reagent]))
(def white "#FFFFFF")
(def black "#000000")
(:require [reagent.core :as reagent]
[clojure.string :as string]))
;; Colors mapping from figma to code, note that theme is more extended and
;; one can follow the comments from the light theme to choose what to use in a component.
(comment
{"Accent blue, #4360DF" [:interactive-01 :text-04]
{"Accent blue, #4360DF" [:interactive-01 :text-04 :icon-04]
"Accent blue as background, #ECEFFC" [:interactive-02]
"Dark grey, #939BA1" [:text-02 :icon-02]
"Black" [:text-01 :icon-01]
@@ -16,7 +14,7 @@
"Main Red/Error, #FF2D55" [:negative-01]
"Shades 10% Red, #FFEAEE" [:negative-02]
"Light grey, #EEF2F5" [:ui-01]
"White, #FFFFFF" [:ui-background :icon-04]
"White, #FFFFFF" [:ui-background]
"Devider, 0.1 of black" [:ui-02]})
(def light-theme
@@ -85,3 +83,142 @@
(defn get-color [color]
(get @theme color))
;; LEGACY COLORS
(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 ")"))))
(def old-colors-mapping-light {:mentioned-background "#def6fc"
:mentioned-border "#b8ecf9"
:pin-background "#FFEECC"})
(def old-colors-mapping-dark {:mentioned-background "#2a4046"
:mentioned-border "#2a4046"
:pin-background "#34232B"})
(def old-colors-mapping-themes {:dark old-colors-mapping-dark :light old-colors-mapping-light})
;; WHITE
(def white (:ui-background light-theme))
(def white-persist (:ui-background light-theme)) ;; this doesn't with theme
(def white-transparent-10 (:interactive-03 light-theme)) ;; Used as icon background color for a dark foreground
(def white-transparent (:icon-03 light-theme)) ;; Used as icon color on dark background and input placeholder color
(def white-transparent-persist (:icon-03 light-theme))
(def white-transparent-70 (:text-03 light-theme))
(def white-transparent-70-persist (:text-03 light-theme))
(def mentioned-background (:mentioned-background old-colors-mapping-light))
(def mentioned-border (:mentioned-border old-colors-mapping-light))
(def red-light "#ffe5ea") ;; error tooltip TODO (andrey) should be white, but shadow needed
;; BLACK
(def black (:text-01 light-theme)) ;; Used as the default text color
(def black-persist (:ui-background dark-theme)) ;; this doesn't with theme
(def black-transparent (:ui-02 light-theme)) ;; Used as background color for rounded button on dark background and as background color for containers like "Backup recovery phrase"
(def black-transparent-20 (:backdrop light-theme)) ; accounts divider
(def black-transparent-40 (:backdrop light-theme))
(def black-transparent-40-persist (:backdrop light-theme))
(def black-transparent-50 (:backdrop light-theme))
(def black-light "#2d2d2d") ;; sign-with-keycard-button
(def black-transparent-86 (:ui-03 light-theme))
;; DARK GREY
(def gray (:text-02 light-theme)) ;; Dark grey, used as a background for a light foreground and as section header and secondary text color
(def gray-transparent-10 (alpha gray 0.1))
(def gray-transparent-40 (alpha gray 0.4))
;; LIGHT GREY
(def gray-lighter (:ui-01 light-theme)) ;; Light Grey, used as a background or shadow
;; ACCENT BLUE
(def blue (:interactive-01 light-theme)) ;; Accent blue, used as main wallet color, and ios home add button
(def blue-persist (:interactive-01 light-theme))
;; LIGHT BLUE
(def blue-light (:interactive-02 light-theme)) ;; Light Blue
(def blue-transparent-10 (alpha blue 0.1)) ;; unknown
;; RED
(def red (:negative-01 light-theme)) ;; Used to highlight errors or "dangerous" actions
(def red-transparent-10 (alpha red 0.1)) ;;action-row ;; ttt finish
(def red-audio-recorder "#fa6565")
;; GREEN
(def green "#44d058") ;; icon for successful inboud transaction
(def green-transparent-10 (alpha green 0.1)) ;; icon for successful inboud transaction
;; YELLOW
(def pin-background (:pin-background old-colors-mapping-light)) ;; Light yellow, used as background for pinned messages
(def purple "#887af9")
(def orange "#FE8F59")
(def chat-colors ["#fa6565"
"#7cda00"
purple
"#51d0f0"
orange
"#d37ef4"])
(def account-colors ["#9B832F"
"#D37EF4"
"#1D806F"
"#FA6565"
"#7CDA00"
purple
"#8B3131"])
(def mention-incoming "#0DA4C9")
(def mention-outgoing "#9EE8FA")
(def text black)
(def text-gray gray)
(def default-community-color "#773377")
(def default-chat-color "#a187d5") ;; legacy
;; THEME
(def theme-type (reagent/atom :light))
(defn dark? []
(= :dark @theme-type))
(defn set-legacy-theme-type [type]
(when-not (= type @theme-type)
(let [old-colors-mapping-colors (get old-colors-mapping-themes type)]
(set! white (:ui-background @theme))
(set! black (:text-01 @theme))
(set! gray-lighter (:ui-01 @theme))
(set! blue (:interactive-01 @theme))
(set! gray (:text-02 @theme))
(set! blue-light (:interactive-02 @theme))
(set! red (:negative-01 @theme))
(set! text black)
(set! mentioned-background (:mentioned-background old-colors-mapping-colors))
(set! mentioned-border (:mentioned-border old-colors-mapping-colors))
(set! white-transparent-10 (alpha white 0.1))
(set! white-transparent (alpha white 0.4))
(set! white-transparent-70 (alpha white 0.7))
(set! black-transparent (alpha black 0.1))
(set! black-transparent-20 (alpha black 0.2))
(set! black-transparent-40 (alpha black 0.4))
(set! black-transparent-50 (alpha black 0.5))
(set! gray-transparent-10 (alpha gray 0.1))
(set! gray-transparent-40 (alpha gray 0.4))
(set! green-transparent-10 (alpha green 0.1))
(set! red-transparent-10 (alpha red 0.1))
(set! blue-transparent-10 (alpha blue 0.1))
(set! pin-background (:pin-background old-colors-mapping-colors)))
(reset! theme-type type)))
;; Colors related to Visibility Status
(def color-online "#7CDA00")
(def color-dnd "#FA6565")
(def color-inactive "#939BA1")
+4 -1
View File
@@ -4,7 +4,10 @@
[quo.platform :as platform]
["react-native" :as rn]
["@react-native-community/hooks" :as hooks]
["react-native-navigation" :refer (Navigation)]))
["react-native-navigation" :refer (Navigation)]
["rn-emoji-keyboard" :refer (EmojiKeyboard)]))
(def emoji-keyboard (reagent/adapt-react-class EmojiKeyboard))
(def app-registry (.-AppRegistry rn))
+2 -1
View File
@@ -4,4 +4,5 @@
(defn set-theme [theme]
(reset! colors/theme (case theme
:dark colors/dark-theme
colors/light-theme)))
colors/light-theme))
(colors/set-legacy-theme-type theme))
+77 -49
View File
@@ -6,7 +6,7 @@
[status-im.data-store.chats :as chats-store]
[status-im.ethereum.json-rpc :as json-rpc]
[status-im.i18n.i18n :as i18n]
[status-im.ui.components.colors :as colors]
[quo.design-system.colors :as colors]
[status-im.constants :as constants]
[status-im.navigation :as navigation]
[status-im.utils.clocks :as utils.clocks]
@@ -15,7 +15,8 @@
[status-im.utils.types :as types]
[status-im.add-new.db :as new-public-chat.db]
[status-im.chat.models.loading :as loading]
[status-im.ui.screens.chat.state :as chat.state]))
[status-im.ui.screens.chat.state :as chat.state]
[clojure.set :as set]))
(defn chats []
(:chats (types/json->clj (js/require "./chats.js"))))
@@ -44,11 +45,9 @@
([cofx chat-id]
(community-chat? (get-chat cofx chat-id))))
(defn active-chat?
([chat]
(:is-active chat))
([cofx chat-id]
(active-chat? (get-chat cofx chat-id))))
(defn active-chat? [cofx chat-id]
(let [chat (get-chat cofx chat-id)]
(not (nil? chat))))
(defn foreground-chat?
[{{:keys [current-chat-id view-id]} :db} chat-id]
@@ -87,22 +86,10 @@
:color (rand-nth colors/chat-colors)
:chat-type constants/one-to-one-chat-type
:group-chat false
:is-active true
:timestamp now
:contacts #{chat-id}
:last-clock-value 0}))
(fx/defn ensure-chat
"Add chat to db and update"
[{:keys [db] :as cofx} {:keys [chat-id timeline?] :as chat-props}]
(let [chat (merge
(or (get (:chats db) chat-id)
(create-new-chat chat-id cofx))
chat-props)
new? (not (get-in db [:chats chat-id]))
public? (public-chat? chat)]
{:db (update-in db [:chats chat-id] merge chat)}))
(defn map-chats [{:keys [db] :as cofx}]
(fn [val]
(assoc
@@ -116,16 +103,37 @@
(fn [val]
(and (not (get-in db [:chats (:chat-id val)])) (:public? val))))
(fx/defn leave-removed-chat
[{{:keys [view-id current-chat-id chats]} :db
:as cofx}]
(when (and (= view-id :chat)
(not (contains? chats current-chat-id)))
(navigation/navigate-back cofx)))
(fx/defn ensure-chats
"Add chats to db and update"
[{:keys [db] :as cofx} chats]
(let [chats (map (map-chats cofx) chats)
filtered-chats (filter (filter-chats db) chats)]
{:db (update db :chats #(reduce
(fn [acc {:keys [chat-id] :as chat}]
(update acc chat-id merge chat))
%
chats))}))
(let [{:keys [all-chats chats-home-list removed-chats]}
(reduce (fn [acc {:keys [chat-id profile-public-key timeline? community-id active] :as chat}]
(if (not active)
(update acc :removed-chats conj chat-id)
(cond-> acc
(and (not profile-public-key) (not timeline?) (not community-id))
(update :chats-home-list conj chat-id)
:always
(assoc-in [:all-chats chat-id] chat))))
{:all-chats {}
:chats-home-list #{}
:removed-chats #{}}
(map (map-chats cofx) chats))]
(fx/merge
cofx
{:db (-> db
(update :chats merge all-chats)
(update :chats-home-list set/union chats-home-list)
(update :chats #(apply dissoc % removed-chats))
(update :chats-home-list set/difference removed-chats))}
leave-removed-chat)))
(fx/defn clear-history
"Clears history of the particular chat"
@@ -140,11 +148,14 @@
{:db (-> db
(assoc-in [:messages chat-id] {})
(update-in [:message-lists] dissoc chat-id)
(update-in [:chats chat-id] merge
{:last-message nil
:unviewed-messages-count 0
:unviewed-mentions-count 0
:deleted-at-clock-value last-message-clock-value}))}))
(update :chats (fn [chats]
(if (contains? chats chat-id)
(update chats chat-id merge
{:last-message nil
:unviewed-messages-count 0
:unviewed-mentions-count 0
:deleted-at-clock-value last-message-clock-value})
chats))))}))
(fx/defn clear-history-handler
"Clears history of the particular chat"
@@ -164,7 +175,8 @@
(fx/merge
cofx
{:db (-> db
(assoc-in [:chats chat-id :is-active] false)
(update :chats dissoc chat-id)
(update :chats-home-list disj chat-id)
(assoc-in [:current-chat-id] nil))
::json-rpc/call [{:method "wakuext_deactivateChat"
:params [{:id chat-id}]
@@ -175,10 +187,12 @@
(fx/defn offload-messages
{:events [:offload-messages]}
[{:keys [db]} chat-id]
{:db (-> db
(update :messages dissoc chat-id)
(update :message-lists dissoc chat-id)
(update :pagination-info dissoc chat-id))})
(merge {:db (-> db
(update :messages dissoc chat-id)
(update :message-lists dissoc chat-id)
(update :pagination-info dissoc chat-id))}
(when (and (= chat-id constants/timeline-chat-id) (= (:view-id db) :status))
{:dispatch [:init-timeline-chat]})))
(fx/defn close-chat
{:events [:close-chat]}
@@ -202,10 +216,16 @@
(when (not (= (:view-id db) :home))
(navigation/pop-to-root-tab :chat-stack))))
(fx/defn show-more-chats
{:events [:chat.ui/show-more-chats]}
[{:keys [db]}]
(when (< (:home-items-show-number db) (count (:chats db)))
{:db (update db :home-items-show-number + 40)}))
(fx/defn preload-chat-data
"Takes chat-id and coeffects map, returns effects necessary when navigating to chat"
{:events [:chat.ui/preload-chat-data]}
[{:keys [db] :as cofx} chat-id]
[cofx chat-id]
(loading/load-messages cofx chat-id))
(fx/defn navigate-to-chat
@@ -217,6 +237,8 @@
(fn [{:keys [db]}]
{:db (assoc db :current-chat-id chat-id :ignore-close-chat true)})
(preload-chat-data chat-id)
#(when (group-chat? cofx chat-id)
(loading/load-chat % chat-id))
#(when-not dont-reset?
(navigation/change-tab % :chat))
#(when-not dont-reset?
@@ -225,7 +247,7 @@
(fx/defn handle-clear-history-response
{:events [::history-cleared]}
[{:keys [db] :as cofx} chat-id response]
[{:keys [db]} chat-id response]
(let [chat (chats-store/<-rpc (first (:chats response)))]
{:db (assoc-in db [:chats chat-id] chat)}))
@@ -233,7 +255,9 @@
{:events [::one-to-one-chat-created]}
[{:keys [db]} chat-id response]
(let [chat (chats-store/<-rpc (first (:chats response)))]
{:db (assoc-in db [:chats chat-id] chat)
{:db (-> db
(assoc-in [:chats chat-id] chat)
(update :chats-home-list conj chat-id))
:dispatch [:chat.ui/navigate-to-chat chat-id]}))
(fx/defn navigate-to-user-pinned-messages
@@ -261,14 +285,16 @@
(fx/defn handle-public-chat-created
{:events [::public-chat-created]}
[{:keys [db] :as cofx} chat-id {:keys [dont-navigate?]} response]
[{:keys [db]} chat-id {:keys [dont-navigate?]} response]
(let [chat (chats-store/<-rpc (first (:chats response)))
db-with-chat {:db (assoc-in db [:chats chat-id] chat)}]
db-with-chat {:db (-> db
(assoc-in [:chats chat-id] chat)
(update :chats-home-list conj chat-id))}]
(if dont-navigate?
db-with-chat
(assoc db-with-chat :dispatch [:chat.ui/navigate-to-chat chat-id]))))
(fx/defn create-public-chat-go [cofx chat-id opts]
(fx/defn create-public-chat-go [_ chat-id opts]
{::json-rpc/call [{:method "wakuext_createPublicChat"
:params [{:id chat-id}]
:on-success #(re-frame/dispatch [::public-chat-created chat-id opts %])
@@ -434,10 +460,12 @@
(fx/defn decrease-unviewed-count
{:events [:chat/decrease-unviewed-count]}
[{:keys [db]} chat-id unseen-messages]
{:db (update-in db [:chats chat-id :unviewed-messages-count]
(fn [count]
;; There might be some other requests being fired,
;; so we need to make sure the count has not been set to
;; 0 in the meantime
(max (- count unseen-messages) 0)))})
[{:keys [db]} chat-id {:keys [count countWithMentions]}]
{:db (-> db
;; There might be some other requests being fired,
;; so we need to make sure the count has not been set to
;; 0 in the meantime
(update-in [:chats chat-id :unviewed-messages-count]
#(max (- % count) 0))
(update-in [:chats chat-id :unviewed-mentions-count]
#(max (- % countWithMentions) 0)))})
+28 -14
View File
@@ -9,6 +9,8 @@
[status-im.utils.image-processing :as image-processing]
[taoensso.timbre :as log]
[clojure.string :as string]
[status-im.i18n.i18n :as i18n]
[status-im.utils.utils :as utils]
[status-im.utils.platform :as platform]
[status-im.chat.models :as chat]))
@@ -35,24 +37,36 @@
(.-localIdentifier result)
(.-path result)))
(defn android-save-image-to-gallery [base64-uri]
(react/image-get-size
base64-uri
(fn [width height]
(image-processing/resize
base64-uri
width
height
100
(fn [^js resized-image]
(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
::save-image-to-gallery
(fn [base64-uri]
(if platform/ios?
(.saveToCameraRoll CameraRoll base64-uri)
(react/image-get-size
base64-uri
(fn [width height]
(image-processing/resize
base64-uri
width
height
100
(fn [^js resized-image]
(let [path (.-path resized-image)
path (if (string/starts-with? path "file") path (str "file://" path))]
(.saveToCameraRoll CameraRoll path)))
#(log/error "could not resize image" %)))))))
(-> (.save CameraRoll base64-uri)
(.catch #(utils/show-popup (i18n/label :t/error)
(i18n/label :t/external-storage-denied))))
(permissions/request-permissions
{:permissions [:write-external-storage]
:on-allowed #(android-save-image-to-gallery base64-uri)
:on-denied (fn []
(utils/set-timeout
#(utils/show-popup (i18n/label :t/error)
(i18n/label :t/external-storage-denied))
50))}))))
(re-frame/reg-fx
::chat-open-image-picker-camera
+29 -5
View File
@@ -3,6 +3,7 @@
[status-im.utils.fx :as fx]
[status-im.multiaccounts.update.core :as multiaccounts.update]
[status-im.ethereum.json-rpc :as json-rpc]
[status-im.communities.core :as models.communities]
[taoensso.timbre :as log]))
(fx/defn enable
@@ -27,13 +28,37 @@
#{})
{})))
(defn community-resolved [db community-id]
(update db :communities/resolve-community-info dissoc community-id))
(defn community-failed-to-resolve [db community-id]
(update db :communities/resolve-community-info dissoc community-id))
(defn community-resolving [db community-id]
(assoc-in db [:communities/resolve-community-info community-id] true))
(fx/defn handle-community-failed-to-resolve
{:events [::community-failed-to-resolve]}
[{:keys [db]} community-id]
{:db (community-failed-to-resolve db community-id)})
(fx/defn handle-community-resolved
{:events [::community-resolved]}
[{:keys [db] :as cofx} community-id community]
(fx/merge cofx
{:db (community-resolved db community-id)}
(models.communities/handle-community community)))
(fx/defn resolve-community-info
{:events [::resolve-community-info]}
[cofx community-id]
{::json-rpc/call [{:method (json-rpc/call-ext-method "requestCommunityInfoFromMailserver")
[{:keys [db]} community-id]
{:db (community-resolving db community-id)
::json-rpc/call [{:method (json-rpc/call-ext-method "requestCommunityInfoFromMailserver")
:params [community-id]
:on-success #()
:on-error #(log/error "Failed to request community info from mailserver")}]})
:on-success #(re-frame/dispatch [::community-resolved community-id %])
:on-error #(do
(re-frame/dispatch [::community-failed-to-resolve community-id])
(log/error "Failed to request community info from mailserver"))}]})
(fx/defn load-link-preview-data
{:events [::load-link-preview-data]}
@@ -82,4 +107,3 @@
[{:keys [db]} whitelist]
{:db (assoc db :link-previews-whitelist
whitelist)})
+54 -23
View File
@@ -7,7 +7,6 @@
[status-im.chat.models.message-list :as message-list]
[taoensso.timbre :as log]
[status-im.ethereum.json-rpc :as json-rpc]
[clojure.string :as string]
[status-im.chat.models.pin-message :as models.pin-message]))
(defn cursor->clock-value
@@ -21,22 +20,35 @@
(fx/defn update-chats-in-app-db
{:events [:chats-list/load-success]}
[{:keys [db]} new-chats]
(let [old-chats (:chats db)
chats (reduce (fn [acc {:keys [chat-id] :as chat}]
(assoc acc chat-id chat))
{}
new-chats)
chats (merge old-chats chats)]
{:db (assoc db :chats chats
[{:keys [db]} ^js new-chats-js]
(let [{:keys [all-chats chats-home-list]}
(reduce (fn [acc ^js chat-js]
(let [{:keys [chat-id profile-public-key timeline? community-id] :as chat}
(data-store.chats/<-rpc-js chat-js)]
(cond-> acc
(and (not profile-public-key) (not timeline?) (not community-id))
(update :chats-home-list conj chat-id)
:always
(assoc-in [:all-chats chat-id] chat))))
{:all-chats {}
:chats-home-list #{}}
new-chats-js)]
{:db (assoc db :chats all-chats
:chats-home-list chats-home-list
:chats/loading? false)}))
(fx/defn initialize-chats
"Initialize persisted chats on startup"
[cofx]
(data-store.chats/fetch-chats-rpc cofx {:on-success
#(re-frame/dispatch
[:chats-list/load-success %])}))
(fx/defn load-chat-success
{:events [:chats-list/load-chat-success]}
[{:keys [db]} ^js chat]
(let [{:keys [chat-id] :as chat} (data-store.chats/<-rpc chat)]
{:db (update-in db [:chats chat-id] merge chat)}))
(fx/defn load-chat
[_ chat-id]
{::json-rpc/call [{:method (json-rpc/call-ext-method "chat")
:params [chat-id]
:on-success #(re-frame/dispatch [:chats-list/load-chat-success %])
:on-failure #(log/error "failed to fetch chats" 0 -1 %)}]})
(fx/defn handle-failed-loading-messages
{:events [::failed-loading-messages]}
@@ -45,12 +57,22 @@
(when current-chat-id
{:db (assoc-in db [:pagination-info current-chat-id :loading-messages?] false)}))
(defn mark-chat-all-read
[db chat-id]
(update-in db [:chats chat-id] assoc
:unviewed-messages-count 0
:unviewed-mentions-count 0
:highlight false))
(fx/defn handle-mark-all-read-successful
{:events [::mark-all-read-successful]}
[{:keys [db]} chat-id]
{:db (update-in db [:chats chat-id] assoc
:unviewed-messages-count 0
:unviewed-mentions-count 0)})
{:db (mark-chat-all-read db chat-id)})
(fx/defn handle-mark-all-read-in-community-successful
{:events [::mark-all-read-in-community-successful]}
[{:keys [db]} chat-ids]
{:db (reduce mark-chat-all-read db chat-ids)})
(fx/defn handle-mark-all-read
{:events [:chat.ui/mark-all-read-pressed :chat/mark-all-as-read]}
@@ -60,6 +82,14 @@
:params [chat-id]
:on-success #(re-frame/dispatch [::mark-all-read-successful chat-id])}]})
(fx/defn handle-mark-mark-all-read-in-community
{:events [:chat.ui/mark-all-read-in-community-pressed]}
[_ community-id]
{:clear-message-notifications community-id
::json-rpc/call [{:method (json-rpc/call-ext-method "markAllReadInCommunity")
:params [community-id]
:on-success #(re-frame/dispatch [::mark-all-read-in-community-successful %])}]})
(fx/defn messages-loaded
"Loads more messages for current chat"
{:events [::messages-loaded]}
@@ -69,13 +99,12 @@
(get-in db [:pagination-info chat-id :messages-initialized?])))
(let [already-loaded-messages (get-in db [:messages chat-id])
;; We remove those messages that are already loaded, as we might get some duplicates
{:keys [all-messages new-messages senders]}
{:keys [all-messages new-messages senders contacts]}
(reduce (fn [{:keys [all-messages] :as acc}
{:keys [message-id alias from]
{:keys [message-id from]
:as message}]
(cond-> acc
(and (not (string/blank? alias))
(not (get-in db [:chats chat-id :users from])))
(not (get-in db [:chats chat-id :users from]))
(update :senders assoc from message)
(nil? (get all-messages message-id))
@@ -85,6 +114,7 @@
(update :all-messages assoc message-id message)))
{:all-messages already-loaded-messages
:senders {}
:contacts {}
:new-messages []}
messages)
current-clock-value (get-in db [:pagination-info chat-id :cursor-clock-value])
@@ -104,7 +134,8 @@
(assoc-in [:messages chat-id] all-messages)
(update-in [:message-lists chat-id] message-list/add-many new-messages)
(assoc-in [:pagination-info chat-id :all-loaded?]
(empty? cursor)))})))
(empty? cursor))
(update :contacts/contacts merge contacts))})))
(fx/defn load-more-messages
{:events [:chat.ui/load-more-messages]}
+18 -15
View File
@@ -10,11 +10,11 @@
[taoensso.timbre :as log]
[status-im.chat.models.mentions :as mentions]
[clojure.string :as string]
[status-im.contact.db :as contact.db]
[status-im.utils.types :as types]
[status-im.ui.screens.chat.state :as view.state]
[status-im.chat.models.loading :as chat.loading]
[status-im.utils.platform :as platform]))
[status-im.utils.platform :as platform]
[status-im.utils.gfycat.core :as gfycat]))
(defn- message-loaded?
[db chat-id message-id]
@@ -39,14 +39,17 @@
{:events [:chat/add-senders-to-chat-users]}
[{:keys [db]} messages]
(reduce (fn [acc {:keys [chat-id alias name identicon from]}]
(update-in acc [:db :chats chat-id :users] assoc
from
(mentions/add-searchable-phrases
{:alias alias
:name (or name alias)
:identicon identicon
:public-key from
:nickname (get-in db [:contacts/contacts from :nickname])})))
(let [alias (if (string/blank? alias)
(gfycat/generate-gfy from)
alias)]
(update-in acc [:db :chats chat-id :users] assoc
from
(mentions/add-searchable-phrases
{:alias alias
:name (or name alias)
:identicon identicon
:public-key from
:nickname (get-in db [:contacts/contacts from :nickname])}))))
{:db db}
messages))
@@ -56,14 +59,14 @@
(or
(= chat-id (chat-model/my-profile-chat-topic db))
(when-let [pub-key (get-in db [:chats chat-id :profile-public-key])]
(contact.db/added? db pub-key)))))
(get-in db [:contacts/contacts pub-key :added])))))
(defn get-timeline-message [db chat-id message-js]
(when (timeline-message? db chat-id)
(data-store.messages/<-rpc (types/js->clj message-js))))
(defn add-message [{:keys [db] :as acc} message-js chat-id message-id cursor-clock-value]
(let [{:keys [alias replace from clock-value] :as message}
(let [{:keys [replace from clock-value] :as message}
(data-store.messages/<-rpc (types/js->clj message-js))]
(if (message-loaded? db chat-id message-id)
;; If the message is already loaded, it means it's an update, that
@@ -83,8 +86,7 @@
:cursor-clock-value clock-value)
;;conj sender for add-sender-to-chat-users
(and (not (string/blank? alias))
(not (get-in db [:chats chat-id :users from])))
(not (get-in db [:chats chat-id :users from]))
(update :senders assoc from message)
(not (string/blank? replace))
@@ -209,7 +211,8 @@
{:db (reduce (fn [acc current]
(update-in acc [:messages (:chatId current)] dissoc (:messageId current)))
db removed-messages)
:dispatch [:get-activity-center-notifications]})]
:dispatch-n [[:get-activity-center-notifications]
[:get-activity-center-notifications-count]]})]
(apply fx/merge cofx (conj mark-as-seen-fx remove-messages-fx))))
(comment
+3 -6
View File
@@ -48,12 +48,9 @@
(testing "it deletes all the messages"
(let [actual (chat/remove-chat cofx chat-id)]
(is (= nil (get-in actual [:db :messages chat-id])))))
(testing "it sets a deleted-at-clock-value equal to the last message clock-value"
(let [actual (chat/remove-chat cofx chat-id)]
(is (= 10 (get-in actual [:db :chats chat-id :deleted-at-clock-value])))))
(testing "it sets the chat as inactive"
(let [actual (chat/remove-chat cofx chat-id)]
(is (= false (get-in actual [:db :chats chat-id :is-active])))))))
#_(testing "it sets a deleted-at-clock-value equal to the last message clock-value"
(let [actual (chat/remove-chat cofx chat-id)]
(is (= 10 (get-in actual [:db :chats chat-id :deleted-at-clock-value])))))))
(deftest multi-user-chat?
(let [chat-id "1"]
+35 -17
View File
@@ -11,8 +11,10 @@
[status-im.bottom-sheet.core :as bottom-sheet]
[status-im.utils.universal-links.core :as universal-links]
[status-im.ethereum.json-rpc :as json-rpc]
[status-im.ui.components.colors :as colors]
[status-im.navigation :as navigation]))
[quo.design-system.colors :as colors]
[status-im.navigation :as navigation]
[status-im.utils.handlers :refer [>evt]]
[status-im.ui.components.emoji-thumbnail.styles :as emoji-thumbnail-styles]))
(def crop-size 1000)
@@ -79,6 +81,10 @@
db
chat-ids)})
(fx/defn handle-community
[{:keys [db]} {:keys [id] :as community}]
{:db (assoc-in db [:communities id] (<-rpc community))})
(fx/defn handle-communities
{:events [::fetched]}
[{:keys [db]} communities]
@@ -259,12 +265,13 @@
{:events [::create-channel-confirmation-pressed]}
[{:keys [db] :as cofx}]
(let [community-id (fetch-community-id-input cofx)
{:keys [name description]} (get db :communities/create-channel)]
{:keys [name description color emoji]} (get db :communities/create-channel)]
{::json-rpc/call [{:method "wakuext_createCommunityChat"
:params [community-id
{:identity {:display_name name
:color (rand-nth colors/chat-colors)
:description description}
:description description
:color color
:emoji emoji}
:permissions {:access constants/community-channel-access-no-membership}}]
:js-response true
:on-success #(re-frame/dispatch [::community-channel-created %])
@@ -280,14 +287,14 @@
(fx/defn edit-channel
{:events [::edit-channel-confirmation-pressed]}
[{:keys [db] :as cofx}]
(let [{:keys [name description color community-id]} (get db :communities/create-channel)
chat-id (to-community-chat-id (get db :current-chat-id))]
(let [{:keys [name description color community-id emoji edit-channel-id]} (get db :communities/create-channel)]
{::json-rpc/call [{:method "wakuext_editCommunityChat"
:params [community-id
chat-id
edit-channel-id
{:identity {:display_name name
:description description
:color color}
:color color
:emoji emoji}
:permissions {:access constants/community-channel-access-no-membership}}]
:js-response true
:on-success #(re-frame/dispatch [::community-channel-edited %])
@@ -330,17 +337,23 @@
(fx/merge cofx
(reset-community-id-input id)
(reset-channel-info)
(>evt [::create-channel-fields (rand-nth emoji-thumbnail-styles/emoji-picker-default-thumbnails)])
(navigation/open-modal :create-community-channel {:community-id id})))
(fx/defn edit-channel-pressed
{:events [::edit-channel-pressed]}
[{:keys [db] :as cofx} community-id chat-name description color]
(fx/merge cofx
{:db (assoc db :communities/create-channel {:name chat-name
:description description
:color color
:community-id community-id})}
(navigation/open-modal :edit-community-channel nil)))
[{:keys [db] :as cofx} community-id chat-name description color emoji chat-id]
(let [{:keys [color emoji]} (if (string/blank? emoji)
(rand-nth emoji-thumbnail-styles/emoji-picker-default-thumbnails)
{:color color :emoji emoji})]
(fx/merge cofx
{:db (assoc db :communities/create-channel {:name chat-name
:description description
:color color
:community-id community-id
:emoji emoji
:edit-channel-id chat-id})}
(navigation/open-modal :edit-community-channel nil))))
(fx/defn community-created
{:events [::community-created]}
@@ -421,6 +434,11 @@
[{:keys [db]} field value]
{:db (assoc-in db [:communities/create-channel field] value)})
(fx/defn create-channel-fields
{:events [::create-channel-fields]}
[{:keys [db]} field-values]
{:db (update-in db [:communities/create-channel] merge field-values)})
(fx/defn member-banned
{:events [::member-banned]}
[cofx response-js]
@@ -567,4 +585,4 @@
:on-error #(log/error "failed to change community category" %)}]}
(fx/merge cofx
(navigation/navigate-back)
(remove-chat-from-category community-id id categoryID))))
(remove-chat-from-category community-id id categoryID))))
+10
View File
@@ -59,6 +59,10 @@
(def ^:const command-state-transaction-pending 6)
(def ^:const command-state-transaction-sent 7)
(def ^:const profile-pictures-show-to-contacts-only 1)
(def ^:const profile-pictures-show-to-everyone 2)
(def ^:const profile-pictures-show-to-none 3)
(def ^:const profile-pictures-visibility-contacts-only 1)
(def ^:const profile-pictures-visibility-everyone 2)
(def ^:const profile-pictures-visibility-none 3)
@@ -158,3 +162,9 @@
(def ^:const activity-center-notification-type-private-group-chat 2)
(def ^:const activity-center-notification-type-mention 3)
(def ^:const activity-center-notification-type-reply 4)
(def ^:const visibility-status-unknown 0)
(def ^:const visibility-status-automatic 1)
(def ^:const visibility-status-dnd 2)
(def ^:const visibility-status-always-online 3)
(def ^:const visibility-status-inactive 4)
+13 -9
View File
@@ -35,7 +35,13 @@
{:events [::contact-blocked]}
[{:keys [db] :as cofx} {:keys [public-key]} chats]
(let [fxs (map #(clean-up-chat public-key %) chats)]
(apply fx/merge cofx fxs)))
(apply fx/merge
cofx
{:db (-> db
(update :chats dissoc public-key)
(update :chats-home-list disj public-key)
(assoc-in [:contacts/contacts public-key :added] false))}
fxs)))
(fx/defn block-contact
{:events [:contact.ui/block-contact-confirmed]}
@@ -43,17 +49,16 @@
(let [contact (-> (contact.db/public-key->contact
(:contacts/contacts db)
public-key)
(assoc :last-updated now)
(update :system-tags (fnil conj #{}) :contact/blocked))
(assoc :last-updated now
:blocked true
:added false))
from-one-to-one-chat? (not (get-in db [:chats (:current-chat-id db) :group-chat]))]
(fx/merge cofx
{:db (-> db
;; add the contact to blocked contacts
(update :contacts/blocked (fnil conj #{}) public-key)
;; update the contact in contacts list
(assoc-in [:contacts/contacts public-key] contact)
;; remove the 1-1 chat if it exists
(update-in [:chats] dissoc public-key))}
(assoc-in [:contacts/contacts public-key] contact))}
(contacts-store/block contact #(do (re-frame/dispatch [::contact-blocked contact (map chats-store/<-rpc %)])
(re-frame/dispatch [:hide-popover])))
;; reset navigation to avoid going back to non existing one to one chat
@@ -62,11 +67,10 @@
(navigation/navigate-back)))))
(fx/defn unblock-contact
{:events [:contact.ui/unblock-contact-pressed]}
{:events [:contact.ui/unblock-contact-pressed ::contact-unblocked]}
[{:keys [db now] :as cofx} public-key]
(let [contact (-> (get-in db [:contacts/contacts public-key])
(assoc :last-updated now)
(update :system-tags disj :contact/blocked))]
(assoc :last-updated now :blocked false))]
(fx/merge cofx
{:db (-> db
(update :contacts/blocked disj public-key)
+41 -24
View File
@@ -8,7 +8,8 @@
[status-im.utils.fx :as fx]
[taoensso.timbre :as log]
[clojure.string :as string]
[status-im.constants :as constants]))
[status-im.constants :as constants]
[status-im.contact.block :as contact.block]))
(fx/defn load-contacts
{:events [::contacts-loaded]}
@@ -37,18 +38,38 @@
:address address}))
(fx/defn ensure-contacts
[{:keys [db]} contacts]
{:db (update db :contacts/contacts
#(reduce (fn [acc {:keys [public-key] :as contact}]
(-> acc
(update public-key merge contact)
(assoc-in [public-key :nickname] (:nickname contact))))
%
contacts))
:dispatch-n (map (fn [{:keys [public-key] :as contact}]
(when (contact.db/added? contact)
[:start-profile-chat public-key]))
contacts)})
[{:keys [db]} contacts chats]
(let [events
(reduce
(fn [acc {:keys [public-key] :as contact}]
(let [added (:added contact)
was-added (contact.db/added? db public-key)
blocked (:blocked contact)
was-blocked (contact.db/blocked? db public-key)]
(cond-> acc
(and added (not was-added))
(conj [:start-profile-chat public-key])
(and was-added (not added))
(conj nil)
(and blocked (not was-blocked))
(conj [::contact.block/contact-blocked contact chats])
(and was-blocked (not blocked))
(conj [::contact.block/contact-unblocked public-key]))))
[[:offload-messages constants/timeline-chat-id]]
contacts)]
(merge
{:db (update db :contacts/contacts
#(reduce (fn [acc {:keys [public-key] :as contact}]
(-> acc
(update public-key merge contact)
(assoc-in [public-key :nickname] (:nickname contact))))
%
contacts))}
(when (> (count events) 1)
{:dispatch-n events}))))
(fx/defn upsert-contact
[{:keys [db] :as cofx}
@@ -80,8 +101,7 @@
(and nickname (not (string/blank? nickname)))
(assoc :nickname nickname)
:else
(update :system-tags
(fnil #(conj % :contact/added) #{})))]
(assoc :added true))]
(fx/merge cofx
{:db (dissoc db :contacts/new-identity)
:dispatch-n [[:start-profile-chat public-key]
@@ -92,15 +112,12 @@
(fx/defn remove-contact
"Remove a contact from current account's contact list"
{:events [:contact.ui/remove-contact-pressed]}
[{:keys [db] :as cofx} {:keys [public-key] :as contact}]
(let [new-contact (update contact
:system-tags
(fnil #(disj % :contact/added) #{}))]
{:db (assoc-in db [:contacts/contacts public-key] new-contact)
::json-rpc/call [{:method "wakuext_removeContact"
:params [public-key]
:on-success #(log/debug "contact removed successfully")}]
:dispatch [:offload-messages constants/timeline-chat-id]}))
[{:keys [db]} {:keys [public-key]}]
{:db (assoc-in db [:contacts/contacts public-key :added] false)
::json-rpc/call [{:method "wakuext_removeContact"
:params [public-key]
:on-success #(log/debug "contact removed successfully")}]
:dispatch [:offload-messages constants/timeline-chat-id]})
(fx/defn create-contact
"Create entry in contacts"
+20 -46
View File
@@ -12,8 +12,7 @@
{:alias alias
:name alias
:identicon (identicon/identicon public-key)
:public-key public-key
:system-tags #{}}))
:public-key public-key}))
(defn public-key->contact
[contacts public-key]
@@ -74,64 +73,39 @@
(get-in db [:contacts/contacts public-key]))
(defn added?
([{:keys [system-tags]}]
(contains? system-tags :contact/added))
([contact]
(:added contact))
([db public-key]
(added? (get-in db [:contacts/contacts public-key]))))
(defn blocked?
([{:keys [system-tags]}]
(contains? system-tags :contact/blocked))
([contact]
(:blocked contact))
([db public-key]
(blocked? (get-in db [:contacts/contacts public-key]))))
(defn pending?
"Check if this is a pending? contact, meaning one side sent a contact request
but the other didn't respond to it yet"
([{:keys [system-tags] :as contact}]
(let [request-received? (contains? system-tags :contact/request-received)
added? (added? contact)]
(and (or request-received?
added?)
(not (and request-received? added?)))))
([db public-key]
(pending? (get-in db [:contacts/contacts public-key]))))
(defn legacy-pending?
"Would the :pending? field be true? for contacts sync payload sent to devices
running 0.11.0 or older?"
([{:keys [system-tags] :as contact}]
(let [request-received? (contains? system-tags :contact/request-received)
added? (added? contact)]
(and request-received?
(not added?))))
([db public-key]
(pending? (get-in db [:contacts/contacts public-key]))))
(defn active?
"Checks that the user is added to the contact and not blocked"
([contact]
(and (added? contact)
(not (blocked? contact))))
(and (:added contact)
(not (:blocked contact))))
([db public-key]
(active? (get-in db [:contacts/contacts public-key]))))
(defn enrich-contact
([contact] (enrich-contact contact nil nil))
([{:keys [system-tags public-key] :as contact} setting own-public-key]
(let [added? (contains? system-tags :contact/added)]
(cond-> (-> contact
(dissoc :ens-verified-at :ens-verification-retries)
(assoc :pending? (pending? contact)
:blocked? (blocked? contact)
:active? (active? contact)
:added? added?)
(multiaccounts/contact-with-names))
(and setting (not= public-key own-public-key)
(or (= setting constants/profile-pictures-visibility-none)
(and (= setting constants/profile-pictures-visibility-contacts-only)
(not added?))))
(dissoc :images)))))
([{:keys [added public-key] :as contact} setting own-public-key]
(cond-> (-> contact
(dissoc :ens-verified-at :ens-verification-retries)
(assoc :blocked? (:blocked contact)
:active? (active? contact)
:added? added)
(multiaccounts/contact-with-names))
(and setting (not= public-key own-public-key)
(or (= setting constants/profile-pictures-visibility-none)
(and (= setting constants/profile-pictures-visibility-contacts-only)
(not added))))
(dissoc :images))))
(defn enrich-contacts
[contacts profile-pictures-visibility own-public-key]
@@ -143,7 +117,7 @@
(defn get-blocked-contacts
[contacts]
(reduce (fn [acc {:keys [public-key] :as contact}]
(if (blocked? contact)
(if (:blocked contact)
(conj acc public-key)
acc))
#{}
+3 -6
View File
@@ -19,8 +19,7 @@
:identicon "photo1",
:last-online 0,
:public-key
"0x04985040682b77a32bb4bb58268a0719bd24ca4d07c255153fe1eb2ccd5883669627bd1a092d7cc76e8e4b9104327667b19dcda3ac469f572efabe588c38c1985f"
:system-tags #{}}}
"0x04985040682b77a32bb4bb58268a0719bd24ca4d07c255153fe1eb2ccd5883669627bd1a092d7cc76e8e4b9104327667b19dcda3ac469f572efabe588c38c1985f"}}
current-multiaccount {:last-updated 0,
:signed-up? true,
:sharing-usage-data? false,
@@ -36,8 +35,7 @@
:identicon "generated"
:alias "generated"
:admin? true
:public-key "0x04fcf40c526b09ff9fb22f4a5dbd08490ef9b64af700870f8a0ba2133f4251d5607ed83cd9047b8c2796576bc83fa0de23a13a4dced07654b8ff137fe744047917"
:system-tags #{}}
:public-key "0x04fcf40c526b09ff9fb22f4a5dbd08490ef9b64af700870f8a0ba2133f4251d5607ed83cd9047b8c2796576bc83fa0de23a13a4dced07654b8ff137fe744047917"}
{:alias "User A"
:identicon "photo2"
:public-key "0x048a2f8b80c60f89a91b4c1316e56f75b087f446e7b8701ceca06a40142d8efe1f5aa36bd0fee9e248060a8d5207b43ae98bef4617c18c71e66f920f324869c09f"}
@@ -45,5 +43,4 @@
:name "User B"
:identicon "photo1"
:last-online 0
:public-key "0x04985040682b77a32bb4bb58268a0719bd24ca4d07c255153fe1eb2ccd5883669627bd1a092d7cc76e8e4b9104327667b19dcda3ac469f572efabe588c38c1985f"
:system-tags #{}}]))))))
:public-key "0x04985040682b77a32bb4bb58268a0719bd24ca4d07c255153fe1eb2ccd5883669627bd1a092d7cc76e8e4b9104327667b19dcda3ac469f572efabe588c38c1985f"}]))))))
+1 -1
View File
@@ -1,7 +1,7 @@
(ns status-im.data-store.activities
(:require [status-im.data-store.messages :as messages]
[status-im.constants :as constants]
[status-im.ui.components.colors :as colors]
[quo.design-system.colors :as colors]
clojure.set))
(defn rpc->type [{:keys [type name] :as chat}]
+72 -40
View File
@@ -4,45 +4,48 @@
[status-im.ethereum.json-rpc :as json-rpc]
[status-im.constants :as constants]
[status-im.utils.fx :as fx]
[taoensso.timbre :as log]))
[taoensso.timbre :as log]
[status-im.utils.types :as types]))
(defn rpc->type [{:keys [chatType name] :as chat}]
(defn rpc->type [{:keys [chat-type name] :as chat}]
(cond
(or (= constants/public-chat-type chatType)
(= constants/profile-chat-type chatType)
(= constants/timeline-chat-type chatType)) (assoc chat
:chat-name (str "#" name)
:public? true
:group-chat true
:timeline? (= constants/timeline-chat-type chatType))
(= constants/community-chat-type chatType) (assoc chat
:chat-name name
:group-chat true)
(= constants/private-group-chat-type chatType) (assoc chat
:chat-name name
:public? false
:group-chat true)
(or (= constants/public-chat-type chat-type)
(= constants/profile-chat-type chat-type)
(= constants/timeline-chat-type chat-type)) (assoc chat
:chat-name (str "#" name)
:public? true
:group-chat true
:timeline? (= constants/timeline-chat-type chat-type))
(= constants/community-chat-type chat-type) (assoc chat
:chat-name name
:group-chat true)
(= constants/private-group-chat-type chat-type) (assoc chat
:chat-name name
:public? false
:group-chat true)
:else (assoc chat :public? false :group-chat false)))
(defn- unmarshal-members [{:keys [members chatType] :as chat}]
(defn members-reducer [acc member]
(cond-> acc
(:admin member)
(update :admins conj (:id member))
(:joined member)
(update :members-joined conj (:id member))
:always
(update :contacts conj (:id member))))
(defn- unmarshal-members [{:keys [members chat-type] :as chat}]
(cond
(= constants/public-chat-type chatType) (assoc chat
:contacts #{}
:admins #{}
:members-joined #{})
(= constants/private-group-chat-type chatType) (merge chat
(reduce (fn [acc member]
(cond-> acc
(:admin member)
(update :admins conj (:id member))
(:joined member)
(update :members-joined conj (:id member))
:always
(update :contacts conj (:id member))))
{:admins #{}
:members-joined #{}
:contacts #{}}
members))
(= constants/public-chat-type chat-type) (assoc chat
:contacts #{}
:admins #{}
:members-joined #{})
(= constants/private-group-chat-type chat-type) (merge chat
(reduce members-reducer
{:admins #{}
:members-joined #{}
:contacts #{}}
members))
:else
(assoc chat
:contacts #{(:id chat)}
@@ -51,8 +54,6 @@
(defn <-rpc [chat]
(-> chat
rpc->type
unmarshal-members
(clojure.set/rename-keys {:id :chat-id
:communityId :community-id
:syncedFrom :synced-from
@@ -63,15 +64,46 @@
:unviewedMessagesCount :unviewed-messages-count
:unviewedMentionsCount :unviewed-mentions-count
:lastMessage :last-message
:active :is-active
:lastClockValue :last-clock-value
:invitationAdmin :invitation-admin
:profile :profile-public-key})
rpc->type
unmarshal-members
(update :last-message #(when % (messages/<-rpc %)))
(dissoc :members)))
(fx/defn fetch-chats-rpc [cofx {:keys [on-success]}]
{::json-rpc/call [{:method (json-rpc/call-ext-method "chats")
(defn <-rpc-js [^js chat]
(-> {:name (.-name chat)
:description (.-description chat)
:color (.-color chat)
:emoji (.-emoji chat)
:timestamp (.-timestamp chat)
:alias (.-alias chat)
:identicon (.-identicon chat)
:muted (.-muted chat)
:joined (.-joined chat)
:chat-id (.-id chat)
:community-id (.-communityId chat)
:synced-from (.-syncedFrom chat)
:synced-to (.-syncedTo chat)
:deleted-at-clock-value (.-deletedAtClockValue chat)
:chat-type (.-chatType chat)
:unviewed-messages-count (.-unviewedMessagesCount chat)
:unviewed-mentions-count (.-unviewedMentionsCount chat)
:last-message {:content {:text (.-text chat)
:parsed-text (types/js->clj (.-parsedText chat))}
:content-type (.-contentType chat)
:community-id (.-contentCommunityId chat)}
:last-clock-value (.-lastClockValue chat)
:profile-public-key (.-profile chat)
:highlight (.-highlight chat)}
rpc->type
unmarshal-members))
(fx/defn fetch-chats-rpc [_ {:keys [on-success]}]
{::json-rpc/call [{:method (json-rpc/call-ext-method "chatsPreview")
:params []
:on-success #(on-success (map <-rpc %))
:js-response true
:on-success #(on-success ^js %)
:on-failure #(log/error "failed to fetch chats" 0 -1 %)}]})
-2
View File
@@ -22,7 +22,6 @@
:lastClockValue 10
:membershipUpdateEvents :events
:unviewedMessagesCount 2
:active true
:timestamp 2}
expected-chat {:public? false
:group-chat true
@@ -37,7 +36,6 @@
:name "name"
:membership-update-events :events
:unviewed-messages-count 2
:is-active true
:chat-id "chat-id"
:timestamp 2}]
(testing "from-rpc"
+17 -27
View File
@@ -5,42 +5,32 @@
[taoensso.timbre :as log]))
(defn <-rpc [contact]
(-> contact
(update :systemTags
#(reduce (fn [acc s]
(conj acc (keyword (subs s 1))))
#{}
%))
(clojure.set/rename-keys {:id :public-key
:ensVerifiedAt :ens-verified-at
:ensVerified :ens-verified
:ensVerificationRetries :ens-verification-retries
:lastENSClockValue :last-ens-clock-value
:systemTags :system-tags
:lastUpdated :last-updated
:localNickname :nickname})))
(clojure.set/rename-keys contact {:id :public-key
:ensVerifiedAt :ens-verified-at
:ensVerified :ens-verified
:ensVerificationRetries :ens-verification-retries
:lastENSClockValue :last-ens-clock-value
:lastUpdated :last-updated
:localNickname :nickname}))
(defn ->rpc [contact]
(-> contact
(update :system-tags #(mapv str %))
(clojure.set/rename-keys {:public-key :id
:ens-verified :ensVerified
:ens-verified-at :ensVerifiedAt
:last-ens-clock-value :lastENSClockValue
:ens-verification-retries :ensVerificationRetries
:system-tags :systemTags
:last-updated :lastUpdated
:nickname :localNickname})))
(clojure.set/rename-keys contact {:public-key :id
:ens-verified :ensVerified
:ens-verified-at :ensVerifiedAt
:last-ens-clock-value :lastENSClockValue
:ens-verification-retries :ensVerificationRetries
:last-updated :lastUpdated
:nickname :localNickname}))
(fx/defn fetch-contacts-rpc
[cofx on-success]
[_ on-success]
{::json-rpc/call [{:method (json-rpc/call-ext-method "contacts")
:params []
:on-success #(on-success (map <-rpc %))
:on-failure #(log/error "failed to fetch contacts" %)}]})
(fx/defn save-contact
[cofx {:keys [public-key] :as contact} on-success]
[_ {:keys [public-key] :as contact} on-success]
{::json-rpc/call [{:method (json-rpc/call-ext-method "saveContact")
:params [(->rpc contact)]
:on-success #(do
@@ -49,7 +39,7 @@
(on-success)))
:on-failure #(log/error "failed to save contact" public-key %)}]})
(fx/defn block [cofx contact on-success]
(fx/defn block [_ contact on-success]
{::json-rpc/call [{:method (json-rpc/call-ext-method "blockContact")
:params [(->rpc contact)]
:on-success on-success
+5 -12
View File
@@ -7,33 +7,26 @@
:address "address"
:name "name"
:identicon "identicon"
:last-updated 1
:system-tags #{:a :b}}
:last-updated 1}
expected-contact {:id "pk"
:address "address"
:name "name"
:identicon "identicon"
:lastUpdated 1
:systemTags #{":a" ":b"}}]
:lastUpdated 1}]
(testing "->rpc"
(is (= expected-contact (update
(c/->rpc contact)
:systemTags
#(into #{} %)))))))
(is (= expected-contact (c/->rpc contact))))))
(deftest contact<-rpc
(let [contact {:id "pk"
:address "address"
:name "name"
:identicon "identicon"
:lastUpdated 1
:systemTags [":a" ":b"]}
:lastUpdated 1}
expected-contact {:public-key "pk"
:address "address"
:name "name"
:identicon "identicon"
:last-updated 1
:system-tags #{:a :b}}]
:last-updated 1}]
(testing "<-rpc"
(is (= expected-contact (c/<-rpc contact))))))
+4 -2
View File
@@ -1,7 +1,8 @@
(ns status-im.data-store.settings
(:require
[status-im.utils.config :as config]
[status-im.ethereum.eip55 :as eip55]))
[status-im.ethereum.eip55 :as eip55]
[status-im.data-store.visibility-status-updates :as visibility-status-updates]))
(defn rpc->networks [networks]
(reduce (fn [acc {:keys [id] :as network}]
@@ -50,4 +51,5 @@
(update :link-previews-enabled-sites set)
(update :custom-bootnodes rpc->custom-bootnodes)
(update :custom-bootnodes-enabled? rpc->custom-bootnodes)
(update :currency keyword)))
(update :currency keyword)
(visibility-status-updates/<-rpc-settings)))
@@ -0,0 +1,24 @@
(ns status-im.data-store.visibility-status-updates
(:require [clojure.set :as clojure.set]
[re-frame.core :as re-frame]
[status-im.ethereum.json-rpc :as json-rpc]
[status-im.utils.fx :as fx]
[taoensso.timbre :as log]))
(defn <-rpc [visibility-status-update]
(clojure.set/rename-keys visibility-status-update {:publicKey :public-key
:statusType :status-type}))
(defn <-rpc-settings [settings]
(-> settings
(clojure.set/rename-keys
{:current-user-status :current-user-visibility-status})
(update :current-user-visibility-status <-rpc)))
(fx/defn fetch-visibility-status-updates-rpc [_]
{::json-rpc/call [{:method "wakuext_statusUpdates"
:params []
:on-success #(re-frame/dispatch
[:visibility-status-updates/visibility-status-updates-loaded
(:statusUpdates ^js %)])
:on-failure #(log/error
"failed to fetch visibility-status-updates" %)}]})

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