Compare commits

...
Author SHA1 Message Date
Michele Balistreri 1a8da76617 fix security exception in keycard 2023-02-23 11:18:39 +01:00
Andrea Maria Piana 8f9e6bdc6e Bump version to 1.20.3 2022-11-23 09:18:01 +00:00
Audrius Molis 9ec1115a3b Migrate to API 31 for android (#14032) 2022-11-23 09:15:27 +00:00
Andrea Maria Piana f5bb45bf15 Fix case in styles 2022-09-30 16:27:57 +01:00
Andrea Maria Piana 2ea81b2561 Bump version to 1.20.2 2022-09-30 12:02:15 +01:00
Andrea Maria Piana f741ac3e3f Default case for contact request 2022-09-30 11:47:30 +01:00
Andrea Maria Piana 19911b97eb Fix logout 2022-09-28 13:36:27 +01:00
Andrea Maria Piana a41ca82957 Remove torrent support 2022-09-28 12:42:34 +01:00
Andrea Maria Piana 01727c7cce Update privacy policy 2022-09-28 10:26:33 +01:00
Felicio Mununga 70884845ee Add waku-v2 fleets 2022-09-28 10:26:25 +01:00
andrey 46b40d0b72 1.20.1 2022-09-23 13:09:35 +02:00
jakub 34c640d048 nix: patch gomobile to sanitize xcrun output
This resolves issues with weird `status-go` build errors like:
```
cgo: C compiler "2022-09-07" not found: exec: "2022-09-07": executable file not found in $PATH
```
Such errors are caused by `xcrun` spewing warnings to `stdout`. The PR
to fix this issue permanently has been created but it might take a while
before it's merged.

Fix PR: https://github.com/golang/mobile/pull/84
Resolves: https://github.com/status-im/status-mobile/issues/13949

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2022-09-22 13:26:17 +02:00
Parvesh Monu ef988517f6 Add expire time to ens banner (#14057)
(cherry picked from e582ba4169)
2022-09-22 15:04:22 +05:30
jakub 9338bf71ee ci: add wait for GitHub release to appear
Because somtimes upload is attempted so fast release doesn't exist yet:
```
+ github-release upload -u status-im -r status-mobile -t 1.20.0 -n StatusIm-Mobile-v1.20.0-cbe19b-arm64-v8a.apk -f pkg/StatusIm-Mobile-v1.20.0-cbe19b-arm64-v8a.apk
error: could not find the release corresponding to tag 1.20.0
```
https://ci.infra.status.im/job/status-mobile/job/release/job/release%252F1.20.x/

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

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2022-09-20 12:43:38 +02:00
jakub f027b6024a ci: drop commonPrep function, call individual ones
This function did too many things, some of them unnecessary.

Requires: https://github.com/status-im/status-jenkins-lib/pull/48

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2022-09-20 12:43:29 +02:00
jakub c147b807ef nix: drop KEYSTORE_PATH from extra-sandbox-paths
This is no longer necessary as we sign APKs in a separate step using the
`scripts/sign-android.sh` script, and this causes issues for F-Droid builds.

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2022-09-20 12:23:07 +02:00
Andrea Maria Piana 7d0e734450 Update status-go 2022-09-15 13:00:03 +01:00
Andrea Maria Piana cbe19bb3e4 Fix group chats & tenor 2022-09-14 15:32:04 +01:00
Roman Volosovskyi c73bcbc089 [#13855] Fix contact request decision status on Sync All 2022-09-09 14:18:55 +02:00
jakub f714112b7e ci: do not upload release builds to Diawi
Otherwise the upload fails with `400 Bad Request` due to size:
```
bundler: failed to load command: fastlane (/Users/jenkins/.bundle/ruby/2.7.0/bin/fastlane)
/Users/jenkins/.bundle/ruby/2.7.0/gems/rest-client-2.1.0/lib/restclient/abstract_response.rb:249:in `exception_with_response': 400 Bad Request (RestClient::BadRequest)
```
Because release builds are over 100 MB:
```
 > ls -l StatusIm-Mobile-v1.20.0-59567a.ipa
-rw-r--r-- 1 jakubgs jakubgs 104M Sep  7 15:50 StatusIm-Mobile-v1.20.0-59567a.ip
```
And the Diawi free account limit is 75 MB:
https://www.diawi.com/features-services

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2022-09-08 10:13:31 +02:00
Jinho Jang 59567a7c97 Update translation (#13938)
(cherry picked from commit 402496b4dc)
2022-09-07 14:05:16 +02:00
Audrius Molis c0ffb8e4f2 Reduce recording time to 1 minute (#13944)
Signed-off-by: Audrius Molis <masta@dr.com>

Signed-off-by: Audrius Molis <masta@dr.com>
(cherry picked from commit f524b47b8c)
2022-09-07 14:05:11 +02:00
Roman Volosovskyi 175cea6222 [#13894] Update activity indicator on removed contact request
nhttps://github.com/status-im/status-go/compare/e5408fa9...e5408fa9

(cherry picked from commit 8b01a4ac6c)
2022-09-07 14:05:00 +02:00
Roman Volosovskyi 21b6aeff50 [#13894] Update activity indicator on removed contact request
(cherry picked from commit b9015c529b)
2022-09-07 14:04:52 +02:00
Parvesh Monu 1037209f5d fix ios keycard recovery pin error (#13924)
(cherry picked from commit 409f81a6f5)
2022-09-06 03:55:06 +05:30
jakub 5487868078 ci: tests build does not save any artifacts
Signed-off-by: Jakub Sokołowski <jakub@status.im>
2022-09-01 16:30:37 +02:00
jakub 1e37ff91db ci: disable sandbox for status-go iOS builds
Otherwise we get weird failures like these:
```
clang-11: error: cannot use 'cpp-output' output with multiple -arch options
clang-11: error: invalid argument '-mmacos-version-min=10.12' not allowed with '-miphoneos-version-min=8.0'
clang-11: error: invalid argument '-mmacos-version-min=10.12' not allowed with '-miphoneos-version-min=8.0'
```
Depends on: https://github.com/status-im/status-jenkins-lib/pull/47

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2022-09-01 16:30:24 +02:00
Roman Volosovskyi 896ce9507a nhttps://github.com/status-im/status-go/compare/86054875...b87ecb20
[#13889] Ignore group chat color when not specified

(cherry picked from commit 916d29e5c5)
2022-09-01 10:37:16 +02:00
Parvesh Monu 775cfca185 fix Adding/removing user from contacts duplicating their messages in profile (#13897)
(cherry picked from commit bc57298e07)
2022-08-31 21:11:00 +05:30
Parvesh Monu f6d15bd470 fix no icon for ETH in 1-1 transaction messages (#13898)
(cherry picked from commit 698e548c6d)
2022-08-31 20:51:10 +05:30
Churikova Tetiana a01de55704 notes: updated release notes
(cherry picked from commit 327d456f69)
2022-08-31 12:55:37 +02:00
flexsurfer dc449b511e fix old stickers (#13901)
(cherry picked from commit 5d9bcb3adb)
2022-08-31 12:55:15 +02:00
andrey c56ebf74c1 1.20.0 release notes 2022-08-29 12:37:00 +02:00
andrey 1b77e15570 1.20.0 2022-08-29 11:23:05 +02:00
Jinho Jang c80f45b4a1 Update translation for 1.20 (#13729)
* Update translations

* temporary remove some translations for f-droid
2022-08-29 10:56:32 +02:00
Ibrahem KhalilandIbrahem Khalil 8352f622d6 [13562] Wallet user avatar component (#13681)
* wallet user avatar component

Conflicto

Clean

Mergo

* linting

Clean

* rename is-theme-dark?

* Conflicts resolve

Clean

* Linting

* comments

Clean

* rename colors

* Clean

* Lint

* Remove whitespace

* Clean

* Clen

* Improve colors and used quo2.text

Rebase

* Consistent coloring

Coloring

* Rebase

Rebase

* [13565] icon-avatar component (#13692)

* icon-avatar component

Rebase

* Add more colors

Clean

Clean

* Linting

Rebase

* clean podfile.lock

* Revert podfile

* Conflicto solvado

Add 20% opacity colors

* Comments

* Refactor to another folder

* Improve colors

* Lint

* Merge develop

Co-authored-by: Ibrahem Khalil <33176106+vampirekiddo@users.noreply.github.com>

Clean

Merge

Co-authored-by: Ibrahem Khalil <33176106+vampirekiddo@users.noreply.github.com>
2022-08-27 12:12:24 +02:00
Ibrahem KhalilandIbrahem Khalil 43861e0c15 [13565] icon-avatar component (#13692)
* icon-avatar component

Rebase

* Add more colors

Clean

Clean

* Linting

Rebase

* clean podfile.lock

* Revert podfile

* Conflicto solvado

Add 20% opacity colors

* Comments

* Refactor to another folder

* Improve colors

* Lint

* Merge develop

Co-authored-by: Ibrahem Khalil <33176106+vampirekiddo@users.noreply.github.com>
2022-08-27 11:16:04 +02:00
jakub 5df202753f drop unused coveralls configuration and CI steps
Depends on: https://github.com/status-im/status-jenkins-lib/pull/45

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2022-08-26 21:37:59 +02:00
jakub 1b8aea87b2 ci: use different IPFS gateway for release builds
https://github.com/status-im/status-go/compare/f43f43cc...86054875

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

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2022-08-26 20:02:27 +02:00
jakub 0a4d181477 ci: extrac Lint and Tests to separate job
This way we can make PRs depend only on successful tests, and not whole
builds for all platforms, which take 10 minutes or more.

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2022-08-26 15:47:32 +02:00
Jamie Caprani 47a31ae0aa feat: add token tag component (#13599) (#13644) 2022-08-25 06:48:29 -07:00
Churikova Tetiana 976f58606c e2e: fixes 2022-08-25 13:29:41 +02:00
Roman Volosovskyi cdcaa68395 [#13835] Fix Generate keys button 2022-08-25 12:23:20 +02:00
Ibrahem Khalil 2b3d59e8c1 Issue-13813: Use new endpoints for browser (#13827)
* Bump browswer endpoints

https://github.com/status-im/status-go/compare/f43f43cc...924820c1

Rebase

Rebase

* Bump endpoints

* Bump status-go

https://github.com/status-im/status-go/compare/f43f43cc...f43f43cc

Rebase

* typo
2022-08-24 23:31:20 +02:00
Roman Volosovskyi 8e3258769e [#13672] Sync contact request decision 2022-08-24 17:11:23 +02:00
Siddarth Kumar 8f7c89ba33 upgrade async storage version (#13846) 2022-08-24 19:51:49 +05:30
Churikova Tetiana 62a4c40afa e2e: report fixes 2022-08-24 12:07:10 +02:00
Jamie Caprani 53770725e5 feat: add token overview component (status-im#13555) (#13767) 2022-08-23 21:14:46 +05:30
Parvesh Monu 53008b17a6 fix quo2 preview in release builds (#13829) 2022-08-22 15:58:45 +05:30
Andrea Maria Piana 526835fcf0 Use test dir 2022-08-19 16:50:22 +01:00
Siddarth Kumar be8db33349 refactor to accept background-color property (#13764)
Refactoring copyable-text component to accept background-color property.

Fix case of nil

Trying to sign
2022-08-19 20:50:45 +05:30
siddarthkay 2c1bfcd092 Add management for wallet connect sessions 2022-08-19 12:35:13 +01:00
diana 78b0bf0bda e2e:fix nightly 18/08 2022-08-18 17:15:10 +02:00
Erik Seppanen 0f23346172 Fix indentation
Signed-off-by: Erik Seppanen <esep@protonmail.com>
2022-08-17 08:18:22 -04:00
Erik Seppanen 94f73d2673 [#13791] Extend integration tests to create a new wallet account
Signed-off-by: Erik Seppanen <esep@protonmail.com>
2022-08-16 14:00:03 -04:00
Brian Sztamfater 51ab735e57 feat: edit message redesign
Signed-off-by: Brian Sztamfater <brian@status.im>
2022-08-16 13:01:59 -03:00
Roman Volosovskyi 24ef84b890 Fix disappearing of the last notification when paired 2022-08-15 13:05:13 +02:00
Erik Seppanen 959df25c02 [#13687] Extend integration tests to create a community 2022-08-12 14:18:49 +01:00
Parvesh Monu f1f9fa105c Implement ENS Banner View
Signed-off-by: Parvesh Monu <parvesh.dhullmonu@gmail.com>
2022-08-11 22:07:16 +05:30
Parvesh Monu c1ca92959c Information box component 2022-08-11 21:48:05 +05:30
Parvesh Monu 230005fd1b Info message component 2022-08-11 02:45:41 +05:30
Roman Volosovskyi b06d63d200 Remove contact request notification from activity center when request is canceled 2022-08-10 13:44:05 +02:00
Andrea Maria Piana 901081a4cf Allow running multiple integration tests 2022-08-10 12:11:22 +01:00
jakub 95af16f6ae generate-keystore: fix Permission denied error
MacOS permissions are stupid:
```
 > ls -l /dev/stderr
lr-xr-xr-x  1 root  wheel  0 Jun 20 20:45 /dev/stderr -> fd/2
```

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2022-08-10 02:21:13 +02:00
jakub 5903cf73fb nix: stop passing watchman socket to Nix builds
This passing of Watchman socket was implemented in order to avoid this:
```
Error: EMFILE: too many open files, watch
    at FSEvent.FSWatcher._handle.onchange (node:internal/fs/watchers:204:21)
Emitted 'error' event on NodeWatcher instance at:
    at NodeWatcher.checkedEmitError (/private/tmp/nix-build-status-mobile-build-nightly-android.drv-0/node_modules/sane/src/node_watcher.js:143:12)
    at FSWatcher.emit (node:events:527:28)
    at FSEvent.FSWatcher._handle.onchange (node:internal/fs/watchers:210:12) {
  errno: -24,
  syscall: 'watch',
  code: 'EMFILE',
  filename: null
}
```
Which is caused by `jest-haste-map` used by `metro` starting to watch
the filesystem for file changes, which is pointless when doing a
one-off build using Nix.

But by setting `CI=true` we can make `metro` not start this waching of
files in the first place, removing the need for use of Watchman entirely.

By entirely dropping use of Watchman we also fix the following issue:
```
[cli] unable to talk to your watchman on /tmp/tmp-status-mobile-ABC/jenkins-state/sock! (Permission denied)
```
Which happens on multi-user Nix installations becuase the user that the
Nix build is executed as is not the same as the user that starts
Watchman and creates the socket file.

Issue: https://github.com/status-im/status-mobile/issues/13783

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2022-08-10 02:21:12 +02:00
pavloburykh b565cbf85e e2e: fixed system back button click 2022-08-09 17:51:35 +03:00
Parvesh Monu a94797710a fix send button remains active in chats after sending reply containing a mention (#13774) 2022-08-08 22:18:59 +05:30
Andrea Maria Piana 6fb4969a0d Add context tags 2022-08-08 10:59:52 +01:00
phrohdoh d664535e65 fix: quo haptic impact light key (#13772) 2022-08-08 10:21:17 +02:00
166 changed files with 2910 additions and 831 deletions
+1 -6
View File
@@ -298,23 +298,18 @@ shadow-server:##@ Start shadow-cljs in server mode for watching
yarn shadow-cljs server
test-watch: export TARGET := clojure
test-watch: status-go-library
test-watch: ##@ Watch tests and re-run no changes to cljs files
yarn install
nodemon --exec 'yarn shadow-cljs compile mocks && yarn shadow-cljs compile test && node --require ./test-resources/override.js target/test/test.js' -e cljs
test: export TARGET := clojure
test: status-go-library ##@test Run tests once in NodeJS
test: ##@test Run tests once in NodeJS
# Here we creates the gyp bindings for nodejs
yarn install
yarn shadow-cljs compile mocks && \
yarn shadow-cljs compile test && \
node --require ./test-resources/override.js target/test/test.js
coverage: ##@test Run tests once in NodeJS generating coverage
@scripts/run-coverage.sh
#--------------
# Other
#--------------
+76
View File
@@ -1,3 +1,79 @@
## 1.20 Release notes
### Features
* Add session management for wallet connect by @cammellos in https://github.com/status-im/status-mobile/pull/13799
* [#13181] Cannot delete images or audio messages by @flexsurfer in https://github.com/status-im/status-mobile/pull/13210
* [#13230] Show default syncing interval by @rasom in https://github.com/status-im/status-mobile/pull/13234
* Add support for mutual contact requests by @cammellos in https://github.com/status-im/status-mobile/pull/13054
* Implement Information box and ens banner view by @Parveshdhull in https://github.com/status-im/status-mobile/pull/13753
* Profile picture sync by @siphiuel in https://github.com/status-im/status-mobile/commit/fbfab9fd3bdbcfa6cdd9a24a6bce526da8252fd3
### Improvements
* Improve notifications life-cycle by @Parveshdhull in https://github.com/status-im/status-mobile/pull/13248
* Simpledapp on Goerli by @churik in https://github.com/status-im/status-mobile/pull/13732
* Include share action on longpress image menu by @jo-mut in https://github.com/status-im/status-mobile/pull/13359
* fast image loading indicator by @flexsurfer in https://github.com/status-im/status-mobile/pull/13431
* [#13355] Long time (5-15 sec) for loading chat messages by @flexsurfer in https://github.com/status-im/status-mobile/pull/13425
* [Fixes: #13416] resize image in status-go as well, alert user if fails by @cammellos in https://github.com/status-im/status-mobile/pull/13422
* [#12566] Remove legacy dependency on mailserver password by @erikseppanen in https://github.com/status-im/status-mobile/pull/13511
* Wallet sync for generated accounts by @siphiuel in https://github.com/status-im/status-mobile/pull/13487
* feat: lottie splash screen by @yqrashawn in https://github.com/status-im/status-mobile/pull/13714
* [#13647] Update all settings on pairing with a new wallet account by @rasom in https://github.com/status-im/status-mobile/pull/13742
* Improve ethereum.send by @qfrank in https://github.com/status-im/status-mobile/pull/13724
### Redesign
* Quo2, Switcher Navigation by @Parveshdhull in https://github.com/status-im/status-mobile/pull/13167
* Switcher and Bottom Tabs Animations and UI Performance Improvements by @Parveshdhull in https://github.com/status-im/status-mobile/pull/13470
* feat: add token tag component (#13599) by @J-Son89 in https://github.com/status-im/status-mobile/pull/13644
* [13565] icon-avatar component by @ibrkhalil in https://github.com/status-im/status-mobile/pull/13692
* [13562] Wallet user avatar component by @ibrkhalil in https://github.com/status-im/status-mobile/pull/13681
* Reply component in chat input & quoted messages redesign by @briansztamfater in https://github.com/status-im/status-mobile/pull/13706
* Wallet redesign by @flexsurfer in https://github.com/status-im/status-mobile/pull/13172
* [Potential: #13596] Add status-tags component by @cammellos in https://github.com/status-im/status-mobile/pull/13597
* Chat views redesign by @briansztamfater in https://github.com/status-im/status-mobile/pull/13184
* Implementation of React Native Blur view for android by @Parveshdhull in https://github.com/status-im/status-mobile/pull/13663
* feat: add token overview component (status-im#13555) by @J-Son89 in https://github.com/status-im/status-mobile/pull/13767
### Bug Fixes
* fix screen orientation on android by @Parveshdhull in https://github.com/status-im/status-mobile/pull/13218
* Don't unmute contact while adding by @Parveshdhull in https://github.com/status-im/status-mobile/pull/13237
* fix chat image long press issue by @Parveshdhull in https://github.com/status-im/status-mobile/pull/13371
* [#13149] Timeline images stretch off screen by @siddarthkay in https://github.com/status-im/status-mobile/pull/13211
* [#13233] Proper message after clearing history in pubchat by @rasom in https://github.com/status-im/status-mobile/pull/13241
* [#13235] Fix opening of the last shown chat with local notifications by @rasom in https://github.com/status-im/status-mobile/pull/13252
* [#13201] Fix handling of favourits syncing by @rasom in https://github.com/status-im/status-mobile/pull/13253
* [#13257] Fix sync devices sorting by @rasom in https://github.com/status-im/status-mobile/pull/13282
* [#13283] Fix syncing of adding contact after removal by @rasom in https://github.com/status-im/status-mobile/pull/13292
* [#13263] Fix for ENS warning showing on custom domains by @daferna in https://github.com/status-im/status-mobile/pull/13312
* fix can't share deep link from profile on ios by @Parveshdhull in https://github.com/status-im/status-mobile/pull/13420
* Fix sending logs from iOS by @bitgamma in https://github.com/status-im/status-mobile/pull/13619
* fix #13642: Cannot sign in on claim.lens.xyz by @qfrank in https://github.com/status-im/status-mobile/pull/13668
* [#13493] Can not switch to xDai chain by @flexsurfer in https://github.com/status-im/status-mobile/pull/13709
* fix bookmarks not syncing by @Parveshdhull in https://github.com/status-im/status-mobile/pull/13727
* fix: set max option not work when send from qrcode by @yqrashawn in https://github.com/status-im/status-mobile/pull/13733
* [#13835] Fix Generate keys button by @rasom in https://github.com/status-im/status-mobile/pull/13841
* Fix disappearing of the last notification when paired by @rasom in https://github.com/status-im/status-mobile/pull/13796
* [#13766] custom networkid fix by @ flexsurfer in https://github.com/status-im/status-mobile/pull/13765
## New Contributors
* @siddarthkay made their first contribution in https://github.com/status-im/status-mobile/pull/13185
* @daferna made their first contribution in https://github.com/status-im/status-mobile/pull/13312
* @smohamedjavid made their first contribution in https://github.com/status-im/status-mobile/pull/13364
* @ibrkhalil made their first contribution in https://github.com/status-im/status-mobile/pull/13450
* @PEZ made their first contribution in https://github.com/status-im/status-mobile/pull/13494
* @erikseppanen made their first contribution in https://github.com/status-im/status-mobile/pull/13511
* @Rende11 made their first contribution in https://github.com/status-im/status-mobile/pull/13609
* @yqrashawn made their first contribution in https://github.com/status-im/status-mobile/pull/13739
* @ilmotta made their first contribution in https://github.com/status-im/status-mobile/pull/13747
* @phrohdoh made their first contribution in https://github.com/status-im/status-mobile/pull/13772
* @J-Son89 made their first contribution in https://github.com/status-im/status-mobile/pull/13767
**Full Changelog**: https://github.com/status-im/status-mobile/compare/1.19.0...1.20.0
## 1.19 Release notes
### Features
+1 -1
View File
@@ -1 +1 @@
1.19.0
1.20.3
+1
View File
@@ -36,6 +36,7 @@
<meta-data android:name="commitHash" android:value="${commitHash}"/>
<activity
android:name=".MainActivity"
android:exported="true"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:windowSoftInputMode="adjustResize"
+2 -2
View File
@@ -23,8 +23,8 @@
# Version requirements used throughout the Gradle scripts
kotlinVersion=1.3.50
minSdkVersion=23
compileSdkVersion=30
targetSdkVersion=30
compileSdkVersion=31
targetSdkVersion=31
buildToolsVersion=31.0.0
supportLibVersion=28.0.0
# This should match version from nix/mobile/android/maven-and-npm-deps/maven/default.nix
+30 -67
View File
@@ -1,10 +1,10 @@
library 'status-jenkins-lib@v1.5.0'
library 'status-jenkins-lib@v1.5.5'
/* Options section can't access functions in objects. */
def isPRBuild = utils.isPRBuild()
pipeline {
agent { label 'linux && x86_64 && nix-2.8' }
agent { label 'linux && x86_64 && nix-2.11' }
options {
timestamps()
@@ -49,50 +49,20 @@ pipeline {
stage('Prep') {
steps {
script {
btype = utils.getBuildType()
print "Running ${btype} build!"
/* Cleanup and Prep */
commonPrep(btype)
utils.doGitRebasePR()
utils.symlinkEnv()
println("Build Number: ${utils.genBuildNumber()}")
}
}
}
stage('Parallel Assemble') {
parallel {
stage('Checks') { stages {
stage('Lint') {
steps {
script {
/* We want the build result to be uploaded */
catchError(
message: 'Linting check failed!',
buildResult: 'FAILURE',
stageResult: 'FAILURE'
) {
sh 'make lint'
}
}
}
}
stage('Tests') {
steps {
script {
sh 'make test'
}
}
}
} }
stage('Build') { stages {
stage('Bundle') {
steps {
script { apks = android.bundle() }
}
}
stage('Sign') {
steps {
script { apks = android.sign(apks) }
}
}
} }
stage('Bundle') {
steps {
script { apks = android.bundle() }
}
}
stage('Sign') {
steps {
script { apks = android.sign(apks) }
}
}
stage('Parallel Upload') {
@@ -103,37 +73,30 @@ pipeline {
} }
}
stage('Upload') {
steps {
script {
def urls = apks.collect { s3.uploadArtifact(it) }
/* return only the universal APK */
if (urls.size() > 1) {
env.PKG_URL = urls.find { it.contains('universal') }
} else { /* if no universal is available pick first */
env.PKG_URL = urls.first()
}
jenkins.setBuildDesc(APK: env.PKG_URL)
/* e2e builds get tested in SauceLabs */
if (utils.isE2EBuild()) {
env.SAUCE_URL = android.uploadToSauceLabs()
}
if (utils.isNightlyBuild()) {
env.DIAWI_URL = android.uploadToDiawi()
}
steps { script {
def urls = apks.collect { s3.uploadArtifact(it) }
/* return only the universal APK */
if (urls.size() > 1) {
env.PKG_URL = urls.find { it.contains('universal') }
} else { /* if no universal is available pick first */
env.PKG_URL = urls.first()
}
}
jenkins.setBuildDesc(APK: env.PKG_URL)
/* e2e builds get tested in SauceLabs */
if (utils.isE2EBuild()) {
env.SAUCE_URL = android.uploadToSauceLabs()
}
if (utils.isNightlyBuild()) {
env.DIAWI_URL = android.uploadToDiawi()
}
} }
}
}
}
stage('Cleanup') {
steps {
sh 'make purge'
}
}
}
post {
success { script { github.notifyPR(true) } }
failure { script { github.notifyPR(false) } }
always { sh 'make _fix-node-perms' }
always { sh 'make purge' }
}
}
+6 -3
View File
@@ -1,4 +1,4 @@
library 'status-jenkins-lib@v1.5.0'
library 'status-jenkins-lib@v1.5.5'
pipeline {
agent { label 'linux' }
@@ -33,7 +33,7 @@ pipeline {
stages {
stage('Prep') {
steps { script {
println "Current JOB: ${env.JOB_NAME}"
println("Current JOB: ${env.JOB_NAME}")
/* just for a shorter access */
btype = utils.getBuildType()
} }
@@ -49,6 +49,9 @@ pipeline {
stage('Android e2e') { steps { script {
apke2e = jenkins.Build('status-mobile/platforms/android-e2e')
} } }
stage('Tests') { steps { script {
jenkins.Build('status-mobile/platforms/tests')
} } }
}
}
stage('Archive') {
@@ -73,7 +76,7 @@ pipeline {
/* mobile */
Apk: utils.pkgUrl(apk), Apke2e: utils.pkgUrl(apke2e),
iOS: utils.pkgUrl(ios), /*iOSe2e: utils.pkgUrl(iose2e),*/
Diawi: utils.utils.getEnv(ios, 'DIAWI_URL'),
Diawi: utils.getEnv(ios, 'DIAWI_URL'),
/* upload the sha256 checksums file too */
SHA: s3.uploadArtifact(sha),
]
+23 -61
View File
@@ -1,10 +1,10 @@
library 'status-jenkins-lib@v1.5.0'
library 'status-jenkins-lib@v1.5.5'
/* Options section can't access functions in objects. */
def isPRBuild = utils.isPRBuild()
pipeline {
agent { label 'macos && x86_64 && nix-2.8 && xcode-13.3' }
agent { label 'macos && x86_64 && nix-2.11 && xcode-14.2' }
parameters {
string(
@@ -48,50 +48,20 @@ pipeline {
stage('Prep') {
steps {
script {
btype = utils.getBuildType()
print "Running ${btype} build!"
/* Cleanup and Prep */
commonPrep(btype)
utils.doGitRebasePR()
utils.symlinkEnv()
println("Build Number: ${utils.genBuildNumber()}")
}
}
}
stage('Parallel Assemble') {
parallel {
stage('Checks') { stages {
stage('Lint') {
steps {
script {
/* We want the build result to be uploaded */
catchError(
message: 'Linting check failed!',
buildResult: 'FAILURE',
stageResult: 'FAILURE'
) {
sh 'make lint'
}
}
}
}
stage('Tests') {
steps {
script {
sh 'make test'
}
}
}
} }
stage('Build') { stages {
stage('JSBundle') {
steps {
script { ios.jsbundle() }
}
}
stage('Bundle') {
steps {
script { api = ios.bundle() }
}
}
} }
stage('JSBundle') {
steps {
script { ios.jsbundle() }
}
}
stage('Bundle') {
steps {
script { api = ios.bundle() }
}
}
stage('Parallel Upload') {
@@ -102,31 +72,23 @@ pipeline {
}
}
stage('Upload') {
steps {
script {
env.PKG_URL = s3.uploadArtifact(api)
jenkins.setBuildDesc(IPA: env.PKG_URL)
/* e2e builds get tested in SauceLabs */
if (utils.isE2EBuild()) {
env.SAUCE_URL = ios.uploadToSauceLabs()
} else {
env.DIAWI_URL = ios.uploadToDiawi()
}
steps { script {
env.PKG_URL = s3.uploadArtifact(api)
jenkins.setBuildDesc(IPA: env.PKG_URL)
/* e2e builds get tested in SauceLabs */
if (utils.isE2EBuild()) {
env.SAUCE_URL = ios.uploadToSauceLabs()
} else if (!utils.isReleaseBuild()) {
env.DIAWI_URL = ios.uploadToDiawi()
}
}
} }
}
}
}
stage('Cleanup') {
steps {
sh 'make watchman-clean'
sh 'make purge'
}
}
}
post {
success { script { github.notifyPR(true) } }
failure { script { github.notifyPR(false) } }
always { sh 'make _fix-node-perms' }
always { sh 'make purge' }
}
}
+1 -1
View File
@@ -1,4 +1,4 @@
library 'status-jenkins-lib@v1.5.0'
library 'status-jenkins-lib@v1.5.5'
pipeline {
agent { label params.AGENT_LABEL }
+74
View File
@@ -0,0 +1,74 @@
library 'status-jenkins-lib@v1.5.5'
/* Options section can't access functions in objects. */
def isPRBuild = utils.isPRBuild()
pipeline {
agent { label 'linux && x86_64 && nix-2.11' }
options {
timestamps()
/* Prevent Jenkins jobs from running forever */
timeout(time: 10, unit: 'MINUTES')
/* Limit builds retained */
buildDiscarder(logRotator(
numToKeepStr: '10',
daysToKeepStr: '20',
artifactNumToKeepStr: '10',
))
/* Abort old PR builds. */
disableConcurrentBuilds(
abortPrevious: isPRBuild
)
}
parameters {
string(
name: 'BUILD_TYPE',
description: 'Specify build type. Values: pr / e2e / nightly / release',
defaultValue: 'pr',
)
}
environment {
LANG = "en_US.UTF-8"
LC_ALL = "en_US.UTF-8"
LANGUAGE = "en_US.UTF-8"
TARGET = 'tests'
BUILD_ENV = 'prod'
NIX_CONF_DIR = "${env.WORKSPACE}/nix"
LOG_FILE = utils.pkgFilename(ext: 'log', arch: 'tests')
}
stages {
stage('Prep') {
steps {
script {
utils.doGitRebasePR()
}
}
}
stage('Checks') {
parallel {
stage('Lint') {
steps { sh "make lint > ${LOG_FILE}" }
}
stage('Tests') {
steps { sh "make test >> ${LOG_FILE}" }
}
}
}
stage('Upload') {
steps {
script {
env.PKG_URL = s3.uploadArtifact(LOG_FILE)
}
}
}
}
post {
success { script { github.notifyPR(true) } }
failure { script { github.notifyPR(false) } }
always { sh 'make purge' }
}
}
+1 -1
View File
@@ -1,4 +1,4 @@
library 'status-jenkins-lib@v1.5.0'
library 'status-jenkins-lib@v1.5.5'
pipeline {
+1 -1
View File
@@ -1,4 +1,4 @@
library 'status-jenkins-lib@v1.5.0'
library 'status-jenkins-lib@v1.5.5'
pipeline {
agent { label 'macos' }
+1 -1
View File
@@ -1,4 +1,4 @@
library 'status-jenkins-lib@v1.5.0'
library 'status-jenkins-lib@v1.5.5'
pipeline {
agent { label 'linux' }
@@ -1 +0,0 @@
Wallet für Kryptowährungen, Privater Messenger und Ethereum DApp Browser - Alles in Einem
@@ -1 +0,0 @@
Billetera de Criptomonedas, Mensajería Privada y Navegador Ethereum de DApps, todo en uno
@@ -1 +0,0 @@
Status: Criptobilletera, Mensajería, Navegador Ethereum
@@ -1 +0,0 @@
Billetera de Criptomonedas, Mensajería Privada y Navegador Ethereum de DApps, Todo en uno
@@ -1 +0,0 @@
Status: Criptobilletera, Mensajero, Navegador Ethereum
@@ -1 +0,0 @@
Monedero de Criptomonedas, Mensajería Privada y Navegador Ethereum de DApps, todo en uno
@@ -1 +0,0 @@
Status: Monedero Crypto, Mensajería, Navegador Ethereum
-1
View File
@@ -1 +0,0 @@
Status: Crypto Wallet, Messenger at Ethereum Browser
@@ -1 +0,0 @@
Portefeuille de cryptomonnaie, messagerie privée et navigateur Ethereum DApp, tout en un
@@ -1 +0,0 @@
Status: portefeuille crypto, messagerie, navigateur Ethereum
@@ -1 +0,0 @@
Portafoglio di criptovalute, App di messaggistica sicura e Browser per Dapp Ethereum in un unica soluzione integrata
@@ -1 +0,0 @@
Status: Portafoglio di criptovalute, App di messaggistica e Browser Ethereum
@@ -1 +0,0 @@
Status: Carteira de Criptomoedas, Messenger, Browser Ethereum
@@ -1 +0,0 @@
Крипто-кошелек, приватный мессенджер и децентрализованный Web3-браузер, и все это в одном приложении
@@ -1 +0,0 @@
Status: Kripto Cüzdanı, Messenger, Ethereum Tarayıcısı
@@ -1 +0,0 @@
Криптовалютний гаманець, приватний месенджер та Ethereum DApp браузер - все в одному
-1
View File
@@ -1 +0,0 @@
Status: Крипто-гаманець, Месенджер, Ethereum-браузер
+6 -6
View File
@@ -316,8 +316,8 @@ PODS:
- React-Core
- React-RCTImage
- React-RCTText
- RNCAsyncStorage (1.11.0):
- React
- RNCAsyncStorage (1.17.9):
- React-Core
- RNCClipboard (1.2.2):
- React
- RNCMaskedView (0.1.9):
@@ -450,7 +450,7 @@ DEPENDENCIES:
- ReactCommon/turbomodule/core (from `../node_modules/react-native/ReactCommon`)
- "ReactNativeAudioToolkit (from `../node_modules/@react-native-community/audio-toolkit`)"
- ReactNativeNavigation (from `../node_modules/react-native-navigation`)
- "RNCAsyncStorage (from `../node_modules/@react-native-community/async-storage`)"
- "RNCAsyncStorage (from `../node_modules/@react-native-async-storage/async-storage`)"
- "RNCClipboard (from `../node_modules/@react-native-community/clipboard`)"
- "RNCMaskedView (from `../node_modules/@react-native-community/masked-view`)"
- "RNCPushNotificationIOS (from `../node_modules/@react-native-community/push-notification-ios`)"
@@ -581,7 +581,7 @@ EXTERNAL SOURCES:
ReactNativeNavigation:
:path: "../node_modules/react-native-navigation"
RNCAsyncStorage:
:path: "../node_modules/@react-native-community/async-storage"
:path: "../node_modules/@react-native-async-storage/async-storage"
RNCClipboard:
:path: "../node_modules/@react-native-community/clipboard"
RNCMaskedView:
@@ -680,7 +680,7 @@ SPEC CHECKSUMS:
ReactCommon: 73d79c7039f473b76db6ff7c6b159c478acbbb3b
ReactNativeAudioToolkit: de9610f323e855ac6574be8c99621f3d57c5df06
ReactNativeNavigation: 94979dd1572a3f093fc85d4599360530a1bed8c8
RNCAsyncStorage: d059c3ee71738c39834a627476322a5a8cd5bf36
RNCAsyncStorage: b2489b49e38c85e10ed45a888d13a2a4c7b32ea1
RNCClipboard: 8148e21ac347c51fd6cd4b683389094c216bb543
RNCMaskedView: 71fc32d971f03b7f03d6ab6b86b730c4ee64f5b6
RNCPushNotificationIOS: c145c6253ea016e5efeff604f2720736b4a596f7
@@ -706,4 +706,4 @@ SPEC CHECKSUMS:
PODFILE CHECKSUM: a1de9468266e7f0b5273acea713782ab759690f1
COCOAPODS: 1.11.3
COCOAPODS: 1.11.2
+137 -137
View File
@@ -11,7 +11,6 @@
13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; };
13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; };
25DC9C9DC25846BD8D084888 /* libc++.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 8B9A886A2CB448B1ABA0EB62 /* libc++.tbd */; };
2A07EDA1125DA22A92726FC0 /* libPods-Status-StatusIm.a in Frameworks */ = {isa = PBXBuildFile; fileRef = C0510EB5858D3D294B797E09 /* libPods-Status-StatusIm.a */; };
3870E1E692E24133A80B07DE /* Inter-SemiBold.otf in Resources */ = {isa = PBXBuildFile; fileRef = 693A62DB37BC4CD5A30E5C96 /* Inter-SemiBold.otf */; };
393D26E3080B443A998F4A2F /* Inter-Italic.otf in Resources */ = {isa = PBXBuildFile; fileRef = B07176ACDAA1422E8F0A3D6B /* Inter-Italic.otf */; };
3A2626CF245C3F2200D5F94B /* Dummy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3A2626CE245C3F2200D5F94B /* Dummy.swift */; };
@@ -43,16 +42,17 @@
70ADBB5ECF934DCF8A0E4919 /* Inter-Regular.otf in Resources */ = {isa = PBXBuildFile; fileRef = 1426DF592BA248FC81D955CB /* Inter-Regular.otf */; };
74B758FC20D7C00B003343C3 /* launch-image-universal.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 74B758FB20D7C00B003343C3 /* launch-image-universal.storyboard */; };
8391E8E0E93C41A98AAA6631 /* Inter-SemiBoldItalic.otf in Resources */ = {isa = PBXBuildFile; fileRef = A4F2BBE8D4DD4140A6CCAC39 /* Inter-SemiBoldItalic.otf */; };
A122CDB24EF6B1E42B71A48B /* libPods-Status-StatusImPR.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 50B9F3C20B5A8201A67B2461 /* libPods-Status-StatusImPR.a */; };
9C09CF1637E5B604C826811E /* libPods-Status-StatusIm.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 41228EB76A4FE8153D12618A /* libPods-Status-StatusIm.a */; };
B24FC7FD1DE7195700D694FF /* Social.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B24FC7FC1DE7195700D694FF /* Social.framework */; };
B24FC7FF1DE7195F00D694FF /* MessageUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B24FC7FE1DE7195F00D694FF /* MessageUI.framework */; };
B2F2D1BC1D9D531B00B7B453 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = B2F2D1BB1D9D531B00B7B453 /* Images.xcassets */; };
BA68A2377A20496EA737000D /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 4E586E1B0E544F64AA9F5BD1 /* libz.tbd */; };
C618C89C2E7CB91857DC65F3 /* libPods-Status-StatusImPR.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 076D2651B036C7A864592557 /* libPods-Status-StatusImPR.a */; };
CE4E31B31D8695250033ED64 /* Statusgo.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = CE4E31B21D8695250033ED64 /* Statusgo.xcframework */; };
D1786306E0184916B11F4C37 /* Inter-Medium.otf in Resources */ = {isa = PBXBuildFile; fileRef = B2A38FC3D3954DE7B2B171F8 /* Inter-Medium.otf */; };
D84616FB563A48EBB1678699 /* Inter-Bold.otf in Resources */ = {isa = PBXBuildFile; fileRef = CD4A2C27D6D5473184DC1F7E /* Inter-Bold.otf */; };
D99C50E5E18942A39C8DDF61 /* Inter-BoldItalic.otf in Resources */ = {isa = PBXBuildFile; fileRef = B321D25F4493470980039457 /* Inter-BoldItalic.otf */; };
E2265D5FDBF5A21A6BDE1191 /* libPods-Status-StatusIm-StatusImTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2F29F465BCAD3B84325F4621 /* libPods-Status-StatusIm-StatusImTests.a */; };
F23C0CA3FC47B628E45E5885 /* libPods-Status-StatusIm-StatusImTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0D96BA27B72120492714A13A /* libPods-Status-StatusIm-StatusImTests.a */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
@@ -100,48 +100,48 @@
00E356EE1AD99517003FC87E /* StatusImTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = StatusImTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
00E356F11AD99517003FC87E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
00E356F21AD99517003FC87E /* StatusImTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = StatusImTests.m; sourceTree = "<group>"; };
076D2651B036C7A864592557 /* libPods-Status-StatusImPR.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Status-StatusImPR.a"; sourceTree = BUILT_PRODUCTS_DIR; };
0D96BA27B72120492714A13A /* libPods-Status-StatusIm-StatusImTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Status-StatusIm-StatusImTests.a"; sourceTree = BUILT_PRODUCTS_DIR; };
13B07F961A680F5B00A75B9A /* StatusIm.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = StatusIm.app; sourceTree = BUILT_PRODUCTS_DIR; };
13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = StatusIm/AppDelegate.h; sourceTree = "<group>"; };
13B07FB01A68108700A75B9A /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AppDelegate.m; path = StatusIm/AppDelegate.m; sourceTree = "<group>"; };
13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = StatusIm/Info.plist; sourceTree = "<group>"; };
13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = StatusIm/main.m; sourceTree = "<group>"; };
1426DF592BA248FC81D955CB /* Inter-Regular.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Inter-Regular.otf"; path = "../resources/fonts/Inter-Regular.otf"; sourceTree = "<group>"; };
2F29F465BCAD3B84325F4621 /* libPods-Status-StatusIm-StatusImTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Status-StatusIm-StatusImTests.a"; sourceTree = BUILT_PRODUCTS_DIR; };
3A2626CE245C3F2200D5F94B /* Dummy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Dummy.swift; sourceTree = "<group>"; };
3A6406FB24A3ADF90046ED37 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
3A8F8EA924A4D31600BF206D /* GameKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GameKit.framework; path = System/Library/Frameworks/GameKit.framework; sourceTree = SDKROOT; };
3AAD2ADC24A3A60E0075D594 /* Status PR.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Status PR.app"; sourceTree = BUILT_PRODUCTS_DIR; };
3AB1C3AD245C043900098F67 /* StatusIm-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "StatusIm-Bridging-Header.h"; sourceTree = "<group>"; };
3FAB1F2F36B849E5B8857315 /* Pods-Status-StatusIm-StatusImTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Status-StatusIm-StatusImTests.debug.xcconfig"; path = "Target Support Files/Pods-Status-StatusIm-StatusImTests/Pods-Status-StatusIm-StatusImTests.debug.xcconfig"; sourceTree = "<group>"; };
408BDE11899C27DF75C1D945 /* Pods-Status-StatusIm.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Status-StatusIm.release.xcconfig"; path = "Target Support Files/Pods-Status-StatusIm/Pods-Status-StatusIm.release.xcconfig"; sourceTree = "<group>"; };
41228EB76A4FE8153D12618A /* libPods-Status-StatusIm.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Status-StatusIm.a"; sourceTree = BUILT_PRODUCTS_DIR; };
4C16DE0B1F89508700AA10DB /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; };
4E586E1B0E544F64AA9F5BD1 /* libz.tbd */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; };
50B9F3C20B5A8201A67B2461 /* libPods-Status-StatusImPR.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Status-StatusImPR.a"; sourceTree = BUILT_PRODUCTS_DIR; };
5ADD5BA519FD778A6E40F420 /* Pods-Status-StatusImPR.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Status-StatusImPR.debug.xcconfig"; path = "Target Support Files/Pods-Status-StatusImPR/Pods-Status-StatusImPR.debug.xcconfig"; sourceTree = "<group>"; };
65F693BD2578002500A45E76 /* CoreNFC.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreNFC.framework; path = System/Library/Frameworks/CoreNFC.framework; sourceTree = SDKROOT; };
65F693BF2578003600A45E76 /* CoreNFC.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreNFC.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.0.sdk/System/iOSSupport/System/Library/Frameworks/CoreNFC.framework; sourceTree = DEVELOPER_DIR; };
65F6941725780A4E00A45E76 /* StatusImTests-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "StatusImTests-Bridging-Header.h"; sourceTree = "<group>"; };
65F6941825780A4F00A45E76 /* Bridge.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Bridge.swift; sourceTree = "<group>"; };
693A62DB37BC4CD5A30E5C96 /* Inter-SemiBold.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Inter-SemiBold.otf"; path = "../resources/fonts/Inter-SemiBold.otf"; sourceTree = "<group>"; };
74B758FB20D7C00B003343C3 /* launch-image-universal.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = "launch-image-universal.storyboard"; sourceTree = "<group>"; };
84D21E61C8973B39D0D4E4E1 /* Pods-Status-StatusIm.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Status-StatusIm.debug.xcconfig"; path = "Target Support Files/Pods-Status-StatusIm/Pods-Status-StatusIm.debug.xcconfig"; sourceTree = "<group>"; };
8B9A886A2CB448B1ABA0EB62 /* libc++.tbd */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = "libc++.tbd"; path = "usr/lib/libc++.tbd"; sourceTree = SDKROOT; };
8EB2CA54138E544D35CE8D5D /* Pods-Status-StatusImPR.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Status-StatusImPR.release.xcconfig"; path = "Target Support Files/Pods-Status-StatusImPR/Pods-Status-StatusImPR.release.xcconfig"; sourceTree = "<group>"; };
922C4CA61F4D5F8B0033C753 /* StatusIm.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; name = StatusIm.entitlements; path = StatusIm/StatusIm.entitlements; sourceTree = "<group>"; };
939106EBC85FEFE90CF1AC42 /* Pods-Status-StatusIm-StatusImTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Status-StatusIm-StatusImTests.debug.xcconfig"; path = "Target Support Files/Pods-Status-StatusIm-StatusImTests/Pods-Status-StatusIm-StatusImTests.debug.xcconfig"; sourceTree = "<group>"; };
9C76AF5A418D4D65A4CAD1D9 /* InterStatus-Regular.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "InterStatus-Regular.otf"; path = "../resources/fonts/InterStatus-Regular.otf"; sourceTree = "<group>"; };
9EC0135C1E06FB1900155B5C /* RCTWKWebView.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTWKWebView.xcodeproj; path = "../node_modules/react-native-wkwebview-reborn/ios/RCTWKWebView.xcodeproj"; sourceTree = "<group>"; };
A4395A6F5F7571204DB9415C /* Pods-Status-StatusIm.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Status-StatusIm.release.xcconfig"; path = "Target Support Files/Pods-Status-StatusIm/Pods-Status-StatusIm.release.xcconfig"; sourceTree = "<group>"; };
A4F2BBE8D4DD4140A6CCAC39 /* Inter-SemiBoldItalic.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Inter-SemiBoldItalic.otf"; path = "../resources/fonts/Inter-SemiBoldItalic.otf"; sourceTree = "<group>"; };
A645F73DAF7DFA71CEE08821 /* Pods-Status-StatusIm-StatusImTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Status-StatusIm-StatusImTests.release.xcconfig"; path = "Target Support Files/Pods-Status-StatusIm-StatusImTests/Pods-Status-StatusIm-StatusImTests.release.xcconfig"; sourceTree = "<group>"; };
B07176ACDAA1422E8F0A3D6B /* Inter-Italic.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Inter-Italic.otf"; path = "../resources/fonts/Inter-Italic.otf"; sourceTree = "<group>"; };
B24FC7FC1DE7195700D694FF /* Social.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Social.framework; path = System/Library/Frameworks/Social.framework; sourceTree = SDKROOT; };
B24FC7FE1DE7195F00D694FF /* MessageUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MessageUI.framework; path = System/Library/Frameworks/MessageUI.framework; sourceTree = SDKROOT; };
B2A38FC3D3954DE7B2B171F8 /* Inter-Medium.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Inter-Medium.otf"; path = "../resources/fonts/Inter-Medium.otf"; sourceTree = "<group>"; };
B2F2D1BB1D9D531B00B7B453 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = StatusIm/Images.xcassets; sourceTree = "<group>"; };
B321D25F4493470980039457 /* Inter-BoldItalic.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Inter-BoldItalic.otf"; path = "../resources/fonts/Inter-BoldItalic.otf"; sourceTree = "<group>"; };
C0510EB5858D3D294B797E09 /* libPods-Status-StatusIm.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Status-StatusIm.a"; sourceTree = BUILT_PRODUCTS_DIR; };
C64AC3132D007A4AB8C9F4CB /* Pods-Status-StatusImPR.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Status-StatusImPR.debug.xcconfig"; path = "Target Support Files/Pods-Status-StatusImPR/Pods-Status-StatusImPR.debug.xcconfig"; sourceTree = "<group>"; };
C6B1215047604CD59A4C74D6 /* Inter-MediumItalic.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Inter-MediumItalic.otf"; path = "../resources/fonts/Inter-MediumItalic.otf"; sourceTree = "<group>"; };
CD4A2C27D6D5473184DC1F7E /* Inter-Bold.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Inter-Bold.otf"; path = "../resources/fonts/Inter-Bold.otf"; sourceTree = "<group>"; };
CE4E31B21D8695250033ED64 /* Statusgo.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = Statusgo.xcframework; path = "../modules/react-native-status/ios/RCTStatus/Statusgo.xcframework"; sourceTree = "<group>"; };
DC87E36448F992EDC41968DD /* Pods-Status-StatusImPR.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Status-StatusImPR.release.xcconfig"; path = "Target Support Files/Pods-Status-StatusImPR/Pods-Status-StatusImPR.release.xcconfig"; sourceTree = "<group>"; };
E0D1BA0C92B5A18D2460BD29 /* Pods-Status-StatusIm.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Status-StatusIm.debug.xcconfig"; path = "Target Support Files/Pods-Status-StatusIm/Pods-Status-StatusIm.debug.xcconfig"; sourceTree = "<group>"; };
F9FAC9E62FB2985E658D4347 /* Pods-Status-StatusIm-StatusImTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Status-StatusIm-StatusImTests.release.xcconfig"; path = "Target Support Files/Pods-Status-StatusIm-StatusImTests/Pods-Status-StatusIm-StatusImTests.release.xcconfig"; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
@@ -149,7 +149,7 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
E2265D5FDBF5A21A6BDE1191 /* libPods-Status-StatusIm-StatusImTests.a in Frameworks */,
F23C0CA3FC47B628E45E5885 /* libPods-Status-StatusIm-StatusImTests.a in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -162,7 +162,7 @@
CE4E31B31D8695250033ED64 /* Statusgo.xcframework in Frameworks */,
25DC9C9DC25846BD8D084888 /* libc++.tbd in Frameworks */,
BA68A2377A20496EA737000D /* libz.tbd in Frameworks */,
2A07EDA1125DA22A92726FC0 /* libPods-Status-StatusIm.a in Frameworks */,
9C09CF1637E5B604C826811E /* libPods-Status-StatusIm.a in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -176,7 +176,7 @@
3AAD2AC224A3A60E0075D594 /* Statusgo.xcframework in Frameworks */,
3AAD2AC524A3A60E0075D594 /* libc++.tbd in Frameworks */,
3AAD2AC624A3A60E0075D594 /* libz.tbd in Frameworks */,
A122CDB24EF6B1E42B71A48B /* libPods-Status-StatusImPR.a in Frameworks */,
C618C89C2E7CB91857DC65F3 /* libPods-Status-StatusImPR.a in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -200,20 +200,6 @@
name = "Supporting Files";
sourceTree = "<group>";
};
0D5DF49E2C847110AB303179 /* Pods */ = {
isa = PBXGroup;
children = (
84D21E61C8973B39D0D4E4E1 /* Pods-Status-StatusIm.debug.xcconfig */,
A4395A6F5F7571204DB9415C /* Pods-Status-StatusIm.release.xcconfig */,
939106EBC85FEFE90CF1AC42 /* Pods-Status-StatusIm-StatusImTests.debug.xcconfig */,
A645F73DAF7DFA71CEE08821 /* Pods-Status-StatusIm-StatusImTests.release.xcconfig */,
5ADD5BA519FD778A6E40F420 /* Pods-Status-StatusImPR.debug.xcconfig */,
DC87E36448F992EDC41968DD /* Pods-Status-StatusImPR.release.xcconfig */,
);
name = Pods;
path = Pods;
sourceTree = "<group>";
};
13B07FAE1A68108700A75B9A /* StatusIm */ = {
isa = PBXGroup;
children = (
@@ -275,7 +261,7 @@
A97BA941B2FB44B4B66EE6D3 /* Frameworks */,
1E7837547A9A40E18AD63CF3 /* Resources */,
65F6941725780A4E00A45E76 /* StatusImTests-Bridging-Header.h */,
0D5DF49E2C847110AB303179 /* Pods */,
92C1A65005F0328427BBC404 /* Pods */,
);
indentWidth = 2;
sourceTree = "<group>";
@@ -292,6 +278,20 @@
name = Products;
sourceTree = "<group>";
};
92C1A65005F0328427BBC404 /* Pods */ = {
isa = PBXGroup;
children = (
E0D1BA0C92B5A18D2460BD29 /* Pods-Status-StatusIm.debug.xcconfig */,
408BDE11899C27DF75C1D945 /* Pods-Status-StatusIm.release.xcconfig */,
3FAB1F2F36B849E5B8857315 /* Pods-Status-StatusIm-StatusImTests.debug.xcconfig */,
F9FAC9E62FB2985E658D4347 /* Pods-Status-StatusIm-StatusImTests.release.xcconfig */,
C64AC3132D007A4AB8C9F4CB /* Pods-Status-StatusImPR.debug.xcconfig */,
8EB2CA54138E544D35CE8D5D /* Pods-Status-StatusImPR.release.xcconfig */,
);
name = Pods;
path = Pods;
sourceTree = "<group>";
};
9EC0135D1E06FB1900155B5C /* Products */ = {
isa = PBXGroup;
children = (
@@ -312,9 +312,9 @@
CE4E31B21D8695250033ED64 /* Statusgo.xcframework */,
8B9A886A2CB448B1ABA0EB62 /* libc++.tbd */,
4E586E1B0E544F64AA9F5BD1 /* libz.tbd */,
C0510EB5858D3D294B797E09 /* libPods-Status-StatusIm.a */,
2F29F465BCAD3B84325F4621 /* libPods-Status-StatusIm-StatusImTests.a */,
50B9F3C20B5A8201A67B2461 /* libPods-Status-StatusImPR.a */,
41228EB76A4FE8153D12618A /* libPods-Status-StatusIm.a */,
0D96BA27B72120492714A13A /* libPods-Status-StatusIm-StatusImTests.a */,
076D2651B036C7A864592557 /* libPods-Status-StatusImPR.a */,
);
name = Frameworks;
sourceTree = "<group>";
@@ -326,11 +326,11 @@
isa = PBXNativeTarget;
buildConfigurationList = 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "StatusImTests" */;
buildPhases = (
3AB641D13115B7C6B34BB054 /* [CP] Check Pods Manifest.lock */,
A72A8244CB57DBC7645AAF0D /* [CP] Check Pods Manifest.lock */,
00E356EA1AD99517003FC87E /* Sources */,
00E356EB1AD99517003FC87E /* Frameworks */,
00E356EC1AD99517003FC87E /* Resources */,
83A1E8F5776A9F52E8BD6A68 /* [CP] Copy Pods Resources */,
EBC8CF0E83E97791F7AB312E /* [CP] Copy Pods Resources */,
);
buildRules = (
);
@@ -346,14 +346,14 @@
isa = PBXNativeTarget;
buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "StatusIm" */;
buildPhases = (
22531717531B01E2F7210822 /* [CP] Check Pods Manifest.lock */,
8BA446099353E57F70208B75 /* [CP] Check Pods Manifest.lock */,
13B07F871A680F5B00A75B9A /* Sources */,
13B07F8C1A680F5B00A75B9A /* Frameworks */,
13B07F8E1A680F5B00A75B9A /* Resources */,
00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */,
20B6B6891D92C42700CC5C6A /* Embed Frameworks */,
E3914A731DF919ED00EBB515 /* Run Script */,
B2402FD9EA3589C610462AF8 /* [CP] Copy Pods Resources */,
53FAA2017B5D29FC0917AA4B /* [CP] Copy Pods Resources */,
);
buildRules = (
);
@@ -368,14 +368,14 @@
isa = PBXNativeTarget;
buildConfigurationList = 3AAD2AD924A3A60E0075D594 /* Build configuration list for PBXNativeTarget "StatusImPR" */;
buildPhases = (
A2ECD4CF7F72018438C96FB6 /* [CP] Check Pods Manifest.lock */,
5ACA5CF6272837C6B30A98D7 /* [CP] Check Pods Manifest.lock */,
3AAD2ABB24A3A60E0075D594 /* Sources */,
3AAD2ABF24A3A60E0075D594 /* Frameworks */,
3AAD2AC924A3A60E0075D594 /* Resources */,
3AAD2AD524A3A60E0075D594 /* Bundle React Native code and images */,
3AAD2AD624A3A60E0075D594 /* Embed Frameworks */,
3AAD2AD724A3A60E0075D594 /* Run Script */,
2F1A2E8EDE05667228FD339D /* [CP] Copy Pods Resources */,
4B2DAD2ACFFE6DE4379DEA3E /* [CP] Copy Pods Resources */,
);
buildRules = (
);
@@ -523,50 +523,6 @@
shellPath = /bin/sh;
shellScript = "set -o errexit\nexport NODE_BINARY=\"node\"\nexport NODE_ARGS=\" --max-old-space-size=16384 \"\n\nbash -x ../node_modules/react-native/scripts/react-native-xcode.sh > ./react-native-xcode.log 2>&1";
};
22531717531B01E2F7210822 /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
);
inputPaths = (
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
"${PODS_ROOT}/Manifest.lock",
);
name = "[CP] Check Pods Manifest.lock";
outputFileListPaths = (
);
outputPaths = (
"$(DERIVED_FILE_DIR)/Pods-Status-StatusIm-checkManifestLockResult.txt",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
showEnvVarsInLog = 0;
};
2F1A2E8EDE05667228FD339D /* [CP] Copy Pods Resources */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
"${PODS_ROOT}/Target Support Files/Pods-Status-StatusImPR/Pods-Status-StatusImPR-resources.sh",
"${PODS_CONFIGURATION_BUILD_DIR}/RNImageCropPicker/QBImagePicker.bundle",
"${PODS_CONFIGURATION_BUILD_DIR}/React-Core/AccessibilityResources.bundle",
"${PODS_CONFIGURATION_BUILD_DIR}/TOCropViewController/TOCropViewControllerBundle.bundle",
);
name = "[CP] Copy Pods Resources";
outputPaths = (
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/QBImagePicker.bundle",
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AccessibilityResources.bundle",
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/TOCropViewControllerBundle.bundle",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Status-StatusImPR/Pods-Status-StatusImPR-resources.sh\"\n";
showEnvVarsInLog = 0;
};
3AAD2AD524A3A60E0075D594 /* Bundle React Native code and images */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
@@ -595,35 +551,13 @@
shellPath = /bin/sh;
shellScript = "\"${PROJECT_DIR}/scripts/set_xcode_version.sh\" > ./set_xcode_version.log 2>&1";
};
3AB641D13115B7C6B34BB054 /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
);
inputPaths = (
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
"${PODS_ROOT}/Manifest.lock",
);
name = "[CP] Check Pods Manifest.lock";
outputFileListPaths = (
);
outputPaths = (
"$(DERIVED_FILE_DIR)/Pods-Status-StatusIm-StatusImTests-checkManifestLockResult.txt",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
showEnvVarsInLog = 0;
};
83A1E8F5776A9F52E8BD6A68 /* [CP] Copy Pods Resources */ = {
4B2DAD2ACFFE6DE4379DEA3E /* [CP] Copy Pods Resources */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
"${PODS_ROOT}/Target Support Files/Pods-Status-StatusIm-StatusImTests/Pods-Status-StatusIm-StatusImTests-resources.sh",
"${PODS_ROOT}/Target Support Files/Pods-Status-StatusImPR/Pods-Status-StatusImPR-resources.sh",
"${PODS_CONFIGURATION_BUILD_DIR}/RNImageCropPicker/QBImagePicker.bundle",
"${PODS_CONFIGURATION_BUILD_DIR}/React-Core/AccessibilityResources.bundle",
"${PODS_CONFIGURATION_BUILD_DIR}/TOCropViewController/TOCropViewControllerBundle.bundle",
@@ -636,32 +570,10 @@
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Status-StatusIm-StatusImTests/Pods-Status-StatusIm-StatusImTests-resources.sh\"\n";
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Status-StatusImPR/Pods-Status-StatusImPR-resources.sh\"\n";
showEnvVarsInLog = 0;
};
A2ECD4CF7F72018438C96FB6 /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
);
inputPaths = (
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
"${PODS_ROOT}/Manifest.lock",
);
name = "[CP] Check Pods Manifest.lock";
outputFileListPaths = (
);
outputPaths = (
"$(DERIVED_FILE_DIR)/Pods-Status-StatusImPR-checkManifestLockResult.txt",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
showEnvVarsInLog = 0;
};
B2402FD9EA3589C610462AF8 /* [CP] Copy Pods Resources */ = {
53FAA2017B5D29FC0917AA4B /* [CP] Copy Pods Resources */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
@@ -683,6 +595,72 @@
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Status-StatusIm/Pods-Status-StatusIm-resources.sh\"\n";
showEnvVarsInLog = 0;
};
5ACA5CF6272837C6B30A98D7 /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
);
inputPaths = (
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
"${PODS_ROOT}/Manifest.lock",
);
name = "[CP] Check Pods Manifest.lock";
outputFileListPaths = (
);
outputPaths = (
"$(DERIVED_FILE_DIR)/Pods-Status-StatusImPR-checkManifestLockResult.txt",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
showEnvVarsInLog = 0;
};
8BA446099353E57F70208B75 /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
);
inputPaths = (
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
"${PODS_ROOT}/Manifest.lock",
);
name = "[CP] Check Pods Manifest.lock";
outputFileListPaths = (
);
outputPaths = (
"$(DERIVED_FILE_DIR)/Pods-Status-StatusIm-checkManifestLockResult.txt",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
showEnvVarsInLog = 0;
};
A72A8244CB57DBC7645AAF0D /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
);
inputPaths = (
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
"${PODS_ROOT}/Manifest.lock",
);
name = "[CP] Check Pods Manifest.lock";
outputFileListPaths = (
);
outputPaths = (
"$(DERIVED_FILE_DIR)/Pods-Status-StatusIm-StatusImTests-checkManifestLockResult.txt",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
showEnvVarsInLog = 0;
};
E3914A731DF919ED00EBB515 /* Run Script */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 8;
@@ -697,6 +675,28 @@
shellPath = /bin/sh;
shellScript = "\"${PROJECT_DIR}/scripts/set_xcode_version.sh\" > ./set_xcode_version.log 2>&1";
};
EBC8CF0E83E97791F7AB312E /* [CP] Copy Pods Resources */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
"${PODS_ROOT}/Target Support Files/Pods-Status-StatusIm-StatusImTests/Pods-Status-StatusIm-StatusImTests-resources.sh",
"${PODS_CONFIGURATION_BUILD_DIR}/RNImageCropPicker/QBImagePicker.bundle",
"${PODS_CONFIGURATION_BUILD_DIR}/React-Core/AccessibilityResources.bundle",
"${PODS_CONFIGURATION_BUILD_DIR}/TOCropViewController/TOCropViewControllerBundle.bundle",
);
name = "[CP] Copy Pods Resources";
outputPaths = (
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/QBImagePicker.bundle",
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AccessibilityResources.bundle",
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/TOCropViewControllerBundle.bundle",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Status-StatusIm-StatusImTests/Pods-Status-StatusIm-StatusImTests-resources.sh\"\n";
showEnvVarsInLog = 0;
};
/* End PBXShellScriptBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
@@ -744,7 +744,7 @@
/* Begin XCBuildConfiguration section */
00E356F61AD99517003FC87E /* Debug */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 939106EBC85FEFE90CF1AC42 /* Pods-Status-StatusIm-StatusImTests.debug.xcconfig */;
baseConfigurationReference = 3FAB1F2F36B849E5B8857315 /* Pods-Status-StatusIm-StatusImTests.debug.xcconfig */;
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
BUNDLE_ID_SUFFIX = .debug;
@@ -777,7 +777,7 @@
};
00E356F71AD99517003FC87E /* Release */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = A645F73DAF7DFA71CEE08821 /* Pods-Status-StatusIm-StatusImTests.release.xcconfig */;
baseConfigurationReference = F9FAC9E62FB2985E658D4347 /* Pods-Status-StatusIm-StatusImTests.release.xcconfig */;
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
BUNDLE_ID_SUFFIX = "";
@@ -806,7 +806,7 @@
};
13B07F941A680F5B00A75B9A /* Debug */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 84D21E61C8973B39D0D4E4E1 /* Pods-Status-StatusIm.debug.xcconfig */;
baseConfigurationReference = E0D1BA0C92B5A18D2460BD29 /* Pods-Status-StatusIm.debug.xcconfig */;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = "AppIcon$(BUNDLE_ID_SUFFIX)";
BUNDLE_ID_SUFFIX = .debug;
@@ -876,7 +876,7 @@
};
13B07F951A680F5B00A75B9A /* Release */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = A4395A6F5F7571204DB9415C /* Pods-Status-StatusIm.release.xcconfig */;
baseConfigurationReference = 408BDE11899C27DF75C1D945 /* Pods-Status-StatusIm.release.xcconfig */;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = "AppIcon$(BUNDLE_ID_SUFFIX)";
BUNDLE_ID_SUFFIX = "";
@@ -936,7 +936,7 @@
};
3AAD2ADA24A3A60E0075D594 /* Debug */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 5ADD5BA519FD778A6E40F420 /* Pods-Status-StatusImPR.debug.xcconfig */;
baseConfigurationReference = C64AC3132D007A4AB8C9F4CB /* Pods-Status-StatusImPR.debug.xcconfig */;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = "AppIcon$(BUNDLE_ID_SUFFIX)";
BUNDLE_ID_SUFFIX = .debug;
@@ -1001,7 +1001,7 @@
};
3AAD2ADB24A3A60E0075D594 /* Release */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = DC87E36448F992EDC41968DD /* Pods-Status-StatusImPR.release.xcconfig */;
baseConfigurationReference = 8EB2CA54138E544D35CE8D5D /* Pods-Status-StatusImPR.release.xcconfig */;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = "AppIconPR$(BUNDLE_ID_SUFFIX)";
BUNDLE_ID_SUFFIX = "";
@@ -78,9 +78,10 @@ public class ForegroundService extends Service {
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, 0);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_MUTABLE);
Intent stopIntent = new Intent(PushNotificationHelper.ACTION_TAP_STOP);
PendingIntent stopPendingIntent = PendingIntent.getBroadcast(context, 0, stopIntent, PendingIntent.FLAG_CANCEL_CURRENT);
PendingIntent stopPendingIntent = PendingIntent.getBroadcast(context, 0, stopIntent,
PendingIntent.FLAG_CANCEL_CURRENT | PendingIntent.FLAG_MUTABLE);
Notification notification = new NotificationCompat.Builder(context, CHANNEL_ID)
.setSmallIcon(R.drawable.ic_stat_notify_status)
@@ -522,7 +522,7 @@ public class PushNotificationHelper {
actionIntent.setPackage(packageName);
PendingIntent pendingActionIntent = PendingIntent.getBroadcast(context, notificationID, actionIntent,
PendingIntent.FLAG_UPDATE_CURRENT);
PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_MUTABLE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
notification.addAction(new NotificationCompat.Action.Builder(icon, action, pendingActionIntent).build());
@@ -708,26 +708,30 @@ public class PushNotificationHelper {
Intent intent = new Intent(ACTION_DELETE_NOTIFICATION);
intent.putExtra("im.status.ethereum.deepLink", deepLink);
intent.putExtra("im.status.ethereum.groupId", groupId);
return PendingIntent.getBroadcast(context.getApplicationContext(), notificationId, intent, PendingIntent.FLAG_CANCEL_CURRENT);
return PendingIntent.getBroadcast(context.getApplicationContext(), notificationId, intent,
PendingIntent.FLAG_CANCEL_CURRENT | PendingIntent.FLAG_MUTABLE);
}
private PendingIntent createGroupOnTapIntent(Context context, int notificationId, String groupId, String deepLink) {
Intent intent = new Intent(ACTION_TAP_NOTIFICATION);
intent.putExtra("im.status.ethereum.deepLink", deepLink);
intent.putExtra("im.status.ethereum.groupId", groupId);
return PendingIntent.getBroadcast(context.getApplicationContext(), notificationId, intent, PendingIntent.FLAG_CANCEL_CURRENT);
return PendingIntent.getBroadcast(context.getApplicationContext(), notificationId, intent,
PendingIntent.FLAG_CANCEL_CURRENT | PendingIntent.FLAG_MUTABLE);
}
private PendingIntent createOnTapIntent(Context context, int notificationId, String deepLink) {
Intent intent = new Intent(ACTION_TAP_NOTIFICATION);
intent.putExtra("im.status.ethereum.deepLink", deepLink);
return PendingIntent.getBroadcast(context.getApplicationContext(), notificationId, intent, PendingIntent.FLAG_CANCEL_CURRENT);
return PendingIntent.getBroadcast(context.getApplicationContext(), notificationId, intent,
PendingIntent.FLAG_CANCEL_CURRENT | PendingIntent.FLAG_MUTABLE);
}
private PendingIntent createOnDismissedIntent(Context context, int notificationId, String deepLink) {
Intent intent = new Intent(ACTION_DELETE_NOTIFICATION);
intent.putExtra("im.status.ethereum.deepLink", deepLink);
return PendingIntent.getBroadcast(context.getApplicationContext(), notificationId, intent, PendingIntent.FLAG_CANCEL_CURRENT);
return PendingIntent.getBroadcast(context.getApplicationContext(), notificationId, intent,
PendingIntent.FLAG_CANCEL_CURRENT | PendingIntent.FLAG_MUTABLE);
}
public void removeStatusMessage(Bundle bundle) {
+4 -1
View File
@@ -12,7 +12,10 @@
abi-include = "armeabi-v7a;arm64-v8a;x86"; # Android architectures to build for
};
status-go = { src-override = null; };
status-go = {
src-override = null;
ipfs-gateway-url = "https://ipfs.status.im/";
};
};
# Android SDK requires an accepted license
+10 -10
View File
@@ -3990,30 +3990,30 @@
},
{
"path": "com/github/status-im/status-keycard-java/android/3.0.4/android-3.0.4",
"path": "com/github/status-im/status-keycard-java/android/3.1.1/android-3.1.1",
"host": "https://jitpack.io",
"type": "jar",
"pom": {
"sha1": "e6e1933d85ac05b51953effc21ab893679f5864b",
"sha256": "1y9kqp3qgx3kqaf6vm6iwphdj8caqd9x6kncjsnp6f0nirp5ijzq"
"sha1": "ac7e6699628e329dfc028345f32bc41c5d6c2f33",
"sha256": "12qh5qwncj2gbv6g1whz32rliap34mv2kxlyqv2ivg5jc6yfvyhj"
},
"jar": {
"sha1": "dca6e47e087a649643bbad1c1feb4b0b5e1aaf45",
"sha256": "0krxjj5h5zmap4645llscwkmyszm8qyngwg8vi8ds1mf2kp0jaz1"
"sha1": "26118061c0996fff357ae30cc360e5928c8dd455",
"sha256": "15m0h4ri0ny7jz4vvl25blw5s65iivlv5gchw0j5n0jblr1wr270"
}
},
{
"path": "com/github/status-im/status-keycard-java/lib/3.0.4/lib-3.0.4",
"path": "com/github/status-im/status-keycard-java/lib/3.1.1/lib-3.1.1",
"host": "https://jitpack.io",
"type": "jar",
"pom": {
"sha1": "718d3d286d53186552a84cee1a1283e0975da789",
"sha256": "0s2mbx1638qig4m802rf0ill9bghgga8w3ld0vpcz6x7h2kmvv6g"
"sha1": "63c7bbd55ddbf88d1b89941f78158aa07fb46873",
"sha256": "1x0n0xq6zgg5qj6s6j9sjpy3zbggfznr64pb6sjh2882y4d1j6qi"
},
"jar": {
"sha1": "b2afa2711a9898d9aeb188195edde53c00984543",
"sha256": "16c7r0667pbgljx1p8zmvahv1igcnway1qjqprbn0n4ny1vy2imm"
"sha1": "07f0374f17160c8731350316226ffe0de50f6f31",
"sha256": "1bfvb0ynxa0ws46cqmyx6d960pyg7hjxv3xwx7mg0xw03xk2bam1"
}
},
+2 -2
View File
@@ -354,8 +354,8 @@ com.github.bumptech.glide:glide:4.12.0
com.github.bumptech.glide:okhttp3-integration:4.12.0
com.github.clans:fab:1.6.4
com.github.gundy:semver4j:0.16.4
com.github.status-im.status-keycard-java:android:3.0.4
com.github.status-im.status-keycard-java:lib:3.0.4
com.github.status-im.status-keycard-java:android:3.1.1
com.github.status-im.status-keycard-java:lib:3.1.1
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
+2 -2
View File
@@ -283,8 +283,8 @@ https://dl.google.com/dl/android/maven2/com/android/tools/sdk-common/26.5.4/sdk-
https://dl.google.com/dl/android/maven2/com/google/android/material/material/1.0.0/material-1.0.0.pom
https://dl.google.com/dl/android/maven2/com/google/android/material/material/1.2.0-alpha03/material-1.2.0-alpha03.pom
https://jitpack.io/com/github/status-im/function/0.0.1/function-0.0.1.pom
https://jitpack.io/com/github/status-im/status-keycard-java/android/3.0.4/android-3.0.4.pom
https://jitpack.io/com/github/status-im/status-keycard-java/lib/3.0.4/lib-3.0.4.pom
https://jitpack.io/com/github/status-im/status-keycard-java/android/3.1.1/android-3.1.1.pom
https://jitpack.io/com/github/status-im/status-keycard-java/lib/3.1.1/lib-3.1.1.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.6-native/ucrop-2.2.6-native.pom
+1 -8
View File
@@ -5,14 +5,7 @@ let
# Import a jsbundle compiled out of clojure codebase
jsbundle = callPackage ./jsbundle { };
# Import a patched version of watchman (important for sandboxed builds on macOS)
watchmanFactory = callPackage ./watchman.nix { };
# TARGETS
release = callPackage ./release.nix {
inherit jsbundle status-go watchmanFactory;
};
release = callPackage ./release.nix { inherit jsbundle status-go; };
in {
# TARGETS
inherit release jsbundle;
+11 -15
View File
@@ -1,4 +1,4 @@
{ stdenv, pkgs, deps, lib, watchmanFactory
{ stdenv, pkgs, deps, lib
, androidPkgs, patchMavenSources, jsbundle, status-go }:
{
@@ -6,13 +6,8 @@
buildEnv ? "prod",
# Path to the file containing secret environment variables
secretsFile ? "",
# Path to the socket file exposed by an external watchman instance
# (workaround needed for building Android on macOS)
watchmanSockPath ? "",
}:
assert (lib.stringLength watchmanSockPath) > 0 -> stdenv.isDarwin;
let
inherit (lib) toLower optionalString stringLength getConfig makeLibraryPath elem;
@@ -26,8 +21,8 @@ let
# Used to detect end-to-end builds
androidAbiInclude = getConfig "android.abi-include" "armeabi-v7a;arm64-v8a;x86";
envFileName =
if androidAbiInclude == "x86" then ".env.e2e"
envFileName =
if androidAbiInclude == "x86" then ".env.e2e"
else if (elem buildType ["release" "nightly"]) then ".env.${buildType}"
else if (elem buildType ["pr" "manual"]) then ".env.jenkins"
else ".env";
@@ -36,7 +31,6 @@ let
gradleBuildType = if buildType == "pr" then "Pr" else "Release";
apksPath = "./android/app/build/outputs/apk/${toLower gradleBuildType}";
patchedWatchman = watchmanFactory watchmanSockPath;
baseName = "${buildType}-android";
in stdenv.mkDerivation rec {
@@ -54,15 +48,17 @@ in stdenv.mkDerivation rec {
"package.json" "yarn.lock" "metro.config.js" ".babelrc"
"resources/.*" "translations/.*" "src/js/worklet_factory.js"
"modules/react-native-status/android.*" "android/.*"
envFileName "VERSION" ".watchmanconfig"
"status-go-version.json" "react-native.config.js"
envFileName "VERSION" "status-go-version.json" "react-native.config.js"
];
};
};
buildInputs = with pkgs; [ nodejs openjdk ];
nativeBuildInputs = with pkgs; [ bash gradle unzip ]
++ lib.optionals stdenv.isDarwin [ file gnumake patchedWatchman ];
++ lib.optionals stdenv.isDarwin [ file gnumake ];
# Disable metro watching for file changes. (#13783)
CI = true;
# Used by Clojure at compile time to include JS modules
BUILD_ENV = buildEnv;
@@ -92,8 +88,8 @@ in stdenv.mkDerivation rec {
# Ensure we have the right .env file
cp -bf ./${envFileName} ./.env
# Export all vars from .env file
export $(cut -d= -f1 .env)
# Export all vars from .env file
export $(cut -d= -f1 .env)
# Copy index.js and app/ input files
cp -ra --no-preserve=ownership ${builtJsBundle}/* ./
@@ -121,7 +117,7 @@ in stdenv.mkDerivation rec {
buildPhase = let
adhocEnvVars = optionalString stdenv.isLinux
"LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${makeLibraryPath [ pkgs.zlib ]}";
in
in
assert ANDROID_ABI_SPLIT != null && ANDROID_ABI_SPLIT != "";
assert stringLength ANDROID_ABI_INCLUDE > 0;
''
-18
View File
@@ -1,18 +0,0 @@
{ stdenv, runCommand, makeWrapper,
watchman }:
let
patchedWatchmanFactory = watchmanSockPath:
assert (builtins.stringLength watchmanSockPath) > 0 -> stdenv.isDarwin;
if stdenv.isDarwin then
assert (builtins.stringLength watchmanSockPath) > 0;
# Create a wrapper to watchman that includes the --sockname flag
runCommand "patched-watchman" { nativeBuildInputs = [ makeWrapper ]; } ''
mkdir -p $out/bin
makeWrapper ${watchman}/bin/watchman \
$out/bin/watchman \
--add-flags "--sockname=${watchmanSockPath}"
'' else watchman;
in patchedWatchmanFactory
+2 -2
View File
@@ -9,7 +9,7 @@ max-jobs = auto
# Helps avoid removing currently used dependencies via garbage collection
keep-derivations = true
keep-outputs = true
# Extra isolation for network and filesystem, doesn't work on MacOS
build-use-sandbox = false
# Some builds on MacOS have issue with sandbox so they are disabled with __noChroot.
sandbox = relaxed
# Enable Nix v2 interface.
experimental-features = nix-command
+6 -1
View File
@@ -43,7 +43,12 @@ in {
go = super.pkgs.go_1_17;
buildGoPackage = super.pkgs.buildGo117Package;
buildGoModule = super.pkgs.buildGo117Module;
gomobile = super.gomobile.override {
gomobile = (super.gomobile.overrideAttrs (old: {
patches = self.pkgs.fetchurl { # https://github.com/golang/mobile/pull/84
url = "https://github.com/golang/mobile/commit/f20e966e05b8f7e06bed500fa0da81cf6ebca307.patch";
sha256 = "sha256-TZ/Yhe8gMRQUZFAs9G5/cf2b9QGtTHRSObBFD5Pbh7Y=";
};
})).override {
# FIXME: No Android SDK packages for aarch64-darwin.
withAndroidPkgs = stdenv.system != "aarch64-darwin";
androidPkgs = self.androidEnvCustom.compose;
+1 -1
View File
@@ -11,7 +11,7 @@ androidenv.composeAndroidPackages {
toolsVersion = "26.1.1";
platformToolsVersion = "33.0.1";
buildToolsVersions = [ "31.0.0" ];
platformVersions = [ "30" ];
platformVersions = [ "31" ];
cmakeVersions = [ "3.18.1" ];
ndkVersion = "22.1.7171670";
includeNDK = true;
+3 -1
View File
@@ -1,7 +1,7 @@
{ lib, callPackage, mkShell }:
let
inherit (lib) attrValues mapAttrs;
inherit (lib) getConfig attrValues mapAttrs;
# Metadata common to all builds of status-go
meta = {
@@ -17,6 +17,8 @@ let
goBuildParams = {
GitCommit = source.rev;
Version = source.cleanVersion;
# FIXME: This should be moved to status-go config.
IpfsGatewayURL = getConfig "status-go.ipfs-gateway-url" "https://ipfs.status.im/";
};
# These are necessary for status-go to show correct version
+4
View File
@@ -18,6 +18,10 @@ in buildGoPackage {
inherit meta;
inherit (source) src goPackagePath;
# Sandbox causes Xcode issues on MacOS. Requires sandbox=relaxed.
# https://github.com/status-im/status-mobile/pull/13912
__noChroot = (platform == "ios");
extraSrcPaths = [ gomobile ];
nativeBuildInputs = [ gomobile removeReferencesTo ]
++ optional (platform == "android") openjdk
+2 -3
View File
@@ -14,7 +14,7 @@
},
"dependencies": {
"@babel/preset-typescript": "^7.17.12",
"@react-native-community/async-storage": "^1.11.0",
"@react-native-async-storage/async-storage": "^1.17.9",
"@react-native-community/audio-toolkit": "git+https://github.com/tbenr/react-native-audio-toolkit.git#refs/tags/v2.0.3-status-v6",
"@react-native-community/blur": "git+https://github.com/Kureev/react-native-blur#refs/tags/v3.6.1",
"@react-native-community/cameraroll": "git+https://github.com/status-im/react-native-cameraroll.git#refs/tags/v4.0.4-status.0",
@@ -67,7 +67,7 @@
"react-native-safe-area-context": "^2.0.0",
"react-native-shake": "^3.3.1",
"react-native-share": "^7.0.1",
"react-native-status-keycard": "git+https://github.com/status-im/react-native-status-keycard.git#refs/tags/v2.5.37",
"react-native-status-keycard": "git+https://github.com/status-im/react-native-status-keycard.git#refs/tags/v2.5.39",
"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#refs/tags/v11.16.0-status",
@@ -83,7 +83,6 @@
"@babel/register": "7.0.0",
"@mapbox/node-pre-gyp": "^1.0.9",
"clj-kondo": "^2020.1.13",
"coveralls": "^3.0.4",
"jest": "^25.1.0",
"nodemon": "^2.0.16",
"nyc": "^14.1.1",
+17 -10
View File
@@ -99,16 +99,28 @@
"node-01.gc-us-central1-a.eth.test": "enode://f593a27731bc0f8eb088e2d39222c2d59dfb9bf0b3950d7a828d51e8ab9e08fffbd9916a82fd993c1a080c57c2bd70ed6c36f489a969de697aff93088dbee1a9@35.194.31.108:443"
}
},
"status.prod": {
"waku": {
"node-01.ac-cn-hongkong-c.status.prod": "/dns4/node-01.ac-cn-hongkong-c.status.prod.statusim.net/tcp/30303/p2p/16Uiu2HAkvEZgh3KLwhLwXg95e5ojM8XykJ4Kxi2T7hk22rnA7pJC",
"node-01.do-ams3.status.prod": "/dns4/node-01.do-ams3.status.prod.statusim.net/tcp/30303/p2p/16Uiu2HAm6HZZr7aToTvEBPpiys4UxajCTU97zj5v7RNR2gbniy1D",
"node-01.gc-us-central1-a.status.prod": "/dns4/node-01.gc-us-central1-a.status.prod.statusim.net/tcp/30303/p2p/16Uiu2HAkwBp8T6G77kQXSNMnxgaMky1JeyML5yqoTHRM8dbeCBNb",
"node-02.ac-cn-hongkong-c.status.prod": "/dns4/node-02.ac-cn-hongkong-c.status.prod.statusim.net/tcp/30303/p2p/16Uiu2HAmFy8BrJhCEmCYrUfBdSNkrPw6VHExtv4rRp1DSBnCPgx8",
"node-02.do-ams3.status.prod": "/dns4/node-02.do-ams3.status.prod.statusim.net/tcp/30303/p2p/16Uiu2HAmSve7tR5YZugpskMv2dmJAsMUKmfWYEKRXNUxRaTCnsXV",
"node-02.gc-us-central1-a.status.prod": "/dns4/node-02.gc-us-central1-a.status.prod.statusim.net/tcp/30303/p2p/16Uiu2HAmDQugwDHM3YeUp86iGjrUvbdw3JPRgikC7YoGBsT2ymMg"
}
},
"status.test": {
"waku": {
"node-01.ac-cn-hongkong-c.status.test": "/dns4/node-01.ac-cn-hongkong-c.status.test.statusim.net/tcp/30303/p2p/16Uiu2HAm2BjXxCp1sYFJQKpLLbPbwd5juxbsYofu3TsS3auvT9Yi",
"node-01.do-ams3.status.test": "/dns4/node-01.do-ams3.status.test.statusim.net/tcp/30303/p2p/16Uiu2HAkukebeXjTQ9QDBeNDWuGfbaSg79wkkhK4vPocLgR6QFDf",
"node-01.gc-us-central1-a.status.test": "/dns4/node-01.gc-us-central1-a.status.test.statusim.net/tcp/30303/p2p/16Uiu2HAmGDX3iAFox93PupVYaHa88kULGqMpJ7AEHGwj3jbMtt76"
}
},
"wakuv2.prod": {
"waku": {
"node-01.ac-cn-hongkong-c.wakuv2.prod": "/ip4/8.210.222.231/tcp/30303/p2p/16Uiu2HAm4v86W3bmT1BiH6oSPzcsSr24iDQpSN5Qa992BCjjwgrD",
"node-01.do-ams3.wakuv2.prod": "/ip4/188.166.135.145/tcp/30303/p2p/16Uiu2HAmL5okWopX7NqZWBUKVqW8iUxCEmd5GMHLVPwCgzYzQv3e",
"node-01.gc-us-central1-a.wakuv2.prod": "/ip4/34.121.100.108/tcp/30303/p2p/16Uiu2HAmVkKntsECaYfefR1V2yCR79CegLATuTPE6B9TxgxBiiiA"
},
"waku-websocket": {
"node-01.ac-cn-hongkong-c.wakuv2.prod": "/dns4/node-01.ac-cn-hongkong-c.wakuv2.prod.statusim.net/tcp/443/wss/p2p/16Uiu2HAm4v86W3bmT1BiH6oSPzcsSr24iDQpSN5Qa992BCjjwgrD",
"node-01.do-ams3.wakuv2.prod": "/dns4/node-01.do-ams3.wakuv2.prod.statusim.net/tcp/443/wss/p2p/16Uiu2HAmL5okWopX7NqZWBUKVqW8iUxCEmd5GMHLVPwCgzYzQv3e",
"node-01.gc-us-central1-a.wakuv2.prod": "/dns4/node-01.gc-us-central1-a.wakuv2.prod.statusim.net/tcp/443/wss/p2p/16Uiu2HAmVkKntsECaYfefR1V2yCR79CegLATuTPE6B9TxgxBiiiA"
}
},
"wakuv2.test": {
@@ -116,11 +128,6 @@
"node-01.ac-cn-hongkong-c.wakuv2.test": "/ip4/47.242.210.73/tcp/30303/p2p/16Uiu2HAkvWiyFsgRhuJEb9JfjYxEkoHLgnUQmr1N5mKWnYjxYRVm",
"node-01.do-ams3.wakuv2.test": "/ip4/134.209.139.210/tcp/30303/p2p/16Uiu2HAmPLe7Mzm8TsYUubgCAW1aJoeFScxrLj8ppHFivPo97bUZ",
"node-01.gc-us-central1-a.wakuv2.test": "/ip4/104.154.239.128/tcp/30303/p2p/16Uiu2HAmJb2e28qLXxT5kZxVUUoJt72EMzNGXB47Rxx5hw3q4YjS"
},
"waku-websocket": {
"node-01.ac-cn-hongkong-c.wakuv2.test": "/dns4/node-01.ac-cn-hongkong-c.wakuv2.test.statusim.net/tcp/443/wss/p2p/16Uiu2HAkvWiyFsgRhuJEb9JfjYxEkoHLgnUQmr1N5mKWnYjxYRVm",
"node-01.do-ams3.wakuv2.test": "/dns4/node-01.do-ams3.wakuv2.test.statusim.net/tcp/443/wss/p2p/16Uiu2HAmPLe7Mzm8TsYUubgCAW1aJoeFScxrLj8ppHFivPo97bUZ",
"node-01.gc-us-central1-a.wakuv2.test": "/dns4/node-01.gc-us-central1-a.wakuv2.test.statusim.net/tcp/443/wss/p2p/16Uiu2HAmJb2e28qLXxT5kZxVUUoJt72EMzNGXB47Rxx5hw3q4YjS"
}
}
},
Binary file not shown.

Before

Width:  |  Height:  |  Size: 335 B

After

Width:  |  Height:  |  Size: 225 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 468 B

After

Width:  |  Height:  |  Size: 271 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 525 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 759 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 358 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 570 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 861 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 888 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 862 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 629 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 806 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 262 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 336 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 384 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 582 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 488 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 684 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 597 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 842 B

+5 -12
View File
@@ -45,26 +45,19 @@ if [[ -n "${OPENSEA_API_KEY}" ]]; then append_env_export 'OPENSEA_API_KEY'; fi
# If no secrets were passed there's no need to pass the 'secretsFile'.
if [[ -s "${SECRETS_FILE_PATH}" ]]; then
nixOpts+=("--option" "extra-sandbox-paths" "${SECRETS_FILE_PATH}")
nixOpts+=("--argstr" "secretsFile" "${SECRETS_FILE_PATH}")
fi
# Used by Clojure at compile time to include JS modules
nixOpts+=("--argstr" "buildEnv" "$(must_get_env BUILD_ENV)")
# On Darwin we hit a sandbox serialization limit of 65535.
# https://github.com/NixOS/nix/issues/4119
if [[ "$(uname -s)" =~ Darwin ]]; then
# Start a watchman instance if not started already and store its socket path.
# In order to get access to the right versions of watchman and jq,
# we start an ad-hoc nix-shell that imports the packages from nix/nixpkgs-bootstrap.
WATCHMAN_SOCKFILE=$(watchman get-sockname --no-pretty | jq -r .sockname)
nixOpts+=(
"--argstr" "watchmanSockPath" "${WATCHMAN_SOCKFILE}"
"--option" "extra-sandbox-paths" "${KEYSTORE_PATH} ${SECRETS_FILE_PATH} ${WATCHMAN_SOCKFILE}"
)
nixOpts+=("--option" "build-use-sandbox" "false")
else
nixOpts+=(
"--option" "build-use-sandbox" "true"
"--option" "extra-sandbox-paths" "${KEYSTORE_PATH} ${SECRETS_FILE_PATH}"
)
nixOpts+=("--option" "build-use-sandbox" "true")
fi
nixOpts+=("--arg" "config" "{${config}}")
+1 -1
View File
@@ -50,4 +50,4 @@ exec keytool -genkey -v \
-alias "${KEYSTORE_ALIAS}" \
-storepass "${KEYSTORE_PASSWORD}" \
-keypass "${KEYSTORE_KEY_PASSWORD}" \
> /dev/stderr
>&2
-51
View File
@@ -1,51 +0,0 @@
#!/usr/bin/env bash
# Fail on first error
set -e
TEST_JS=target/test/test.js
COVERAGE_REPORT=coverage-report/lcov.info
rm -rf "${COVERAGE_REPORT}"
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m'
if [ ! -f "$TEST_JS" ]; then
echo -e "${YELLOW}test suite not found, compiling and running...${NC}"
make test
else
echo -e "${YELLOW}test suite found.${NC}"
fi
echo -e "${YELLOW}running test suite with coverage...${NC}"
nyc node target/test/test.js
echo -e "${GREEN}DONE.${NC}"
if [ ! -f "$COVERAGE_REPORT" ]; then
echo -e "${RED}coverage report not generated! check nyc configuration file .nycrc${NC}"
exit 1
fi
## COVERALLS ENV ##
# COVERALLS_REPO_TOKEN (the secret repo token from coveralls.io)
# optionals ENV
# COVERALLS_SERVICE_NAME (the name of your build system, "jenkins"
# COVERALLS_SERVICE_JOB_ID
if [ -z "$COVERALLS_REPO_TOKEN" ]; then
echo -e "${RED}COVERALLS_REPO_TOKEN not set!${NC}"
exit 1
fi
echo -e "${YELLOW}uploading coverage to coveralls...${NC}"
cat coverage-report/lcov.info | coveralls
echo -e "${GREEN}DONE.${NC}"
+6 -2
View File
@@ -100,6 +100,8 @@
:clearInterval js/clearInterval}}))
(def keychain #js {:setGenericPassword (constantly (.resolve js/Promise true))
:setInternetCredentials #(js/Promise.resolve)
:resetInternetCredentials #(js/Promise.resolve)
"ACCESSIBLE" {}
"ACCESS_CONTROL" {}})
@@ -133,7 +135,9 @@
(def react-native-navigation #js {:Navigation #js {:constants (fn [] #js {:then identity})
:setDefaultOptions identity
:setRoot identity
:dismissOverlay #(js/Promise.resolve)
:setLazyComponentRegistrator identity
:pop identity
:push identity
:registerComponent identity
:events
@@ -238,7 +242,7 @@
(def react-native-permissions #js {:default #js {}})
(def push-notification-ios #js {})
(def push-notification-ios #js {:default #js {:abandonPermissions identity}})
(def rn-emoji-keyboard
#js {:EmojiKeyboard #js {}})
@@ -306,7 +310,7 @@
"@react-native-community/audio-toolkit" react-native-audio-toolkit
"react-native-image-viewing" react-native-image-viewing
"react-native-share" react-native-share
"@react-native-community/async-storage" async-storage
"@react-native-async-storage/async-storage" async-storage
"react-native-svg" react-native-svg
"../src/js/worklet_factory.js" worklet-factory
"./fleets.js" default-fleets
+1 -1
View File
@@ -3,7 +3,7 @@
(def haptic-methods
{:selection "selection"
:impacet-light "impactLight"
:impact-light "impactLight"
:impact-medium "impactMedium"
:impact-heavy "impactHeavy"
:notification-success "notificationSuccess"
+81
View File
@@ -0,0 +1,81 @@
(ns quo2.components.activity-logs
(:require [quo.react-native :as rn]
[quo2.foundations.colors :as colors]
[quo2.components.status-tags :as status-tags]
[quo2.components.button :as quo2.button]
[quo2.components.text :as text]
[quo2.components.icon :as quo2.icons]))
(defn activity-logs [_]
(fn [{:keys [title
button-1
button-2
icon
unread
status
message
timestamp]}]
[rn/view {:flex-direction :row
:flex 1
:border-radius 16
:padding-top 8
:padding-horizontal 12
:padding-bottom 12
:background-color (when unread
colors/primary-50-opa-10)}
[rn/view {:height 32
:width 32
:border-radius 100
:margin-top 8
:background-color colors/neutral-80-opa-60
:flex-direction :column
:align-items :center
:justify-content :center}
[quo2.icons/icon icon {:color colors/white}]]
[rn/view {:flex-direction :column
:padding-left 8
:flex 1}
[rn/view {:flex 1
:flex-wrap :wrap}
[rn/view {:flex-direction :row}
[text/text {:weight :semi-bold
:style {:color colors/white}
:size :paragraph-1}
title]
[rn/view {:margin-left 8
:margin-top 5}
[text/text {:size :label
:style {:text-transform :none
:color colors/neutral-40}} timestamp]]]]
(when message
[rn/view {:border-radius 12
:margin-top 13
:padding-horizontal 12
:padding-vertical 8
:background-color :red}
[text/text {:style {:color colors/white}
:size :paragraph-1}
message]])
(when status
[rn/view {:padding-top 10
:align-items :flex-start}
[status-tags/status-tag {:size :small
:override-theme :dark
:status status}]])
(when (or button-1 button-2)
[rn/view {:padding-top 10
:flex 1
:flex-direction :row
:align-items :flex-start}
(when button-1
[quo2.button/button
(assoc button-1
:override-them :dark
:style {:margin-right 8})
(:label button-1)])
(when button-2
[quo2.button/button
(assoc button-2
:override-theme
:dark)
(:label button-2)])])]]))
@@ -0,0 +1,51 @@
(ns quo2.components.avatar.avatar-themes
(:require [quo2.foundations.colors :as colors]))
(def themes {:light {:primary {:icon-color colors/primary-50
:background-color colors/primary-20}
:purple {:icon-color colors/purple-50
:background-color colors/purple-20}
:indigo {:icon-color colors/indigo-50
:background-color colors/indigo-20}
:turquoise {:icon-color colors/turquoise-50
:background-color colors/turquoise-20}
:blue {:icon-color colors/blue-50
:background-color colors/blue-20}
:green {:icon-color colors/green-50
:background-color colors/green-20}
:yellow {:icon-color colors/yellow-50
:background-color colors/yellow-20}
:orange {:icon-color colors/orange-50
:background-color colors/orange-20}
:red {:icon-color colors/red-50
:background-color colors/red-20}
:pink {:icon-color colors/pink-50
:background-color colors/pink-20}
:brown {:icon-color colors/brown-50
:background-color colors/brown-20}
:beige {:icon-color colors/beige-50
:background-color colors/beige-20}}
:dark {:primary {:icon-color colors/primary-60
:background-color colors/primary-50-opa-20}
:purple {:icon-color colors/purple-60
:background-color colors/purple-20}
:indigo {:icon-color colors/indigo-60
:background-color colors/indigo-20}
:turquoise {:icon-color colors/turquoise-60
:background-color colors/turquoise-20}
:blue {:icon-color colors/blue-60
:background-color colors/blue-20}
:green {:icon-color colors/green-60
:background-color colors/green-20}
:yellow {:icon-color colors/yellow-60
:background-color colors/yellow-20}
:orange {:icon-color colors/orange-60
:background-color colors/orange-20}
:red {:icon-color colors/red-60
:background-color colors/red-20}
:pink {:icon-color colors/pink-60
:background-color colors/pink-20}
:brown {:icon-color colors/brown-60
:background-color colors/brown-20}
:beige {:icon-color colors/beige-60
:background-color colors/beige-20}}})
+19 -2
View File
@@ -28,6 +28,11 @@
:ghost {:icon-color colors/neutral-50
:label {:style {:color colors/black}}
:background-color {:pr:pressedess colors/neutral-10}}
:success {:icon-color colors/white
:label {:style {:color colors/white}}
:background-color {:default colors/success-50
:pressed colors/success-70
:disabled colors/success-50}}
:danger {:icon-color colors/white
:label {:style {:color colors/white}}
:background-color {:default colors/danger-50
@@ -55,6 +60,11 @@
:ghost {:icon-color colors/neutral-40
:label {:style {:color colors/white}}
:background-color {:pressed colors/neutral-80}}
:success {:icon-color colors/white
:label {:style {:color colors/white}}
:background-color {:default colors/success-60
:pressed colors/success-40
:disabled colors/success-60}}
:danger {:icon-color colors/white
:label {:style {:color colors/white}}
:background-color {:default colors/danger-50
@@ -79,7 +89,11 @@
:padding-left (when-not (or icon before)
(case size 56 16 40 16 32 12 24 8))
:padding-right (when-not (or icon after)
(case size 56 16 40 16 32 12 24 8))}
(case size 56 16 40 16 32 12 24 8))
:padding-top (when-not (or icon before after)
(case size 56 0 40 9 32 5 24 3))
:padding-bottom (when-not (or icon before after)
(case size 56 0 40 9 32 5 24 4))}
(when width
{:width width})
(when icon
@@ -105,12 +119,15 @@
[_ _]
(let [pressed (reagent/atom false)]
(fn [{:keys [on-press disabled type size before after above width
override-theme
on-long-press accessibility-label icon style]
:or {type :primary
size 40}}
children]
(let [{:keys [icon-color background-color label border-color]}
(get-in themes [(theme/get-theme) type])
(get-in themes [(or
override-theme
(theme/get-theme)) type])
state (cond disabled :disabled @pressed :pressed :else :default)
icon-size (when (= 24 size) 12)]
[rn/touchable-without-feedback (merge {:disabled disabled
+61
View File
@@ -0,0 +1,61 @@
(ns quo2.components.context-tags
(:require [quo2.foundations.colors :as colors]
[quo.theme :as quo.theme]
[re-frame.core :as re-frame]
[quo2.components.text :as text]
[quo2.components.group-avatar :as group-avatar]
[quo.react-native :as rn]))
(defn padding-left-for-type [type]
(case type
:group-avatar 3
8))
(defn trim-public-key [pk]
(str (subs pk 0 6) "..." (subs pk (- (count pk) 3))))
(defn base-tag [_ _]
(fn [{:keys [override-theme style]} & children]
(let [theme (or override-theme (quo.theme/get-theme))]
(into
[rn/view
(merge
{:border-radius 100
:padding-vertical 3
:flex-direction :row
:padding-right 8
:padding-left 8
:background-color (if (= theme :light)
colors/neutral-10
colors/neutral-80)} style)]
children))))
(defn group-avatar-tag [_ _]
(fn [label opts]
[base-tag {:style {:padding-left 3}}
[group-avatar/group-avatar opts]
[text/text {:weight :medium
:size :paragraph-2}
(str " " label)]]))
(defn public-key-tag [_ _]
(fn [params public-key]
[base-tag params
[text/text {:weight :monospace
:size :paragraph-2}
(trim-public-key public-key)]]))
(defn user-avatar-tag [_ _]
(fn [params public-key]
(let [{:keys [name photo]} @(re-frame/subscribe [:contacts/name-and-photo public-key])]
[base-tag (assoc-in params [:style :padding-left] 3)
[rn/image {:style {:width 20
:border-radius 10
:background-color :white
:height 20}
:source {:uri photo}}]
[text/text {:weight :medium
:size :paragraph-2}
(str " " name)]])))
+27
View File
@@ -0,0 +1,27 @@
(ns quo2.components.group-avatar
(:require [quo2.foundations.colors :as colors]
[quo.theme :as quo.theme]
[quo2.components.icon :as icon]
[quo.react-native :as rn]))
(def sizes
{:icon {:small 12
:medium 16
:large 20}
:container {:small 20
:medium 32
:large 48}})
(defn group-avatar [_]
(fn [{:keys [color size override-theme]}]
(let [theme (or override-theme (quo.theme/get-theme))
container-size (get-in sizes [:container size])
icon-size (get-in sizes [:icon size])]
[rn/view {:width container-size
:height container-size
:align-items :center
:justify-content :center
:border-radius (/ container-size 2)
:background-color (colors/custom-color color theme)}
[icon/icon :total-members {:size icon-size
:color colors/white-opa-70}]])))
+10 -4
View File
@@ -10,11 +10,17 @@
[icons/icon (str (name icon-name) size) (merge props
{:width size
:height size})])))
(defn icon-for-theme
([icon-name theme]
(icon-for-theme icon-name theme nil))
([icon-name theme props]
(let [theme-icon-name (if (= theme :dark)
(str (name icon-name) "-dark")
icon-name)]
(icon theme-icon-name props))))
(defn theme-icon
([icon-name]
(theme-icon icon-name nil))
([icon-name props]
(let [theme-icon-name (if (theme/dark?)
(str (name icon-name) "-dark")
icon-name)]
(icon theme-icon-name props))))
(icon-for-theme icon-name (theme/get-theme) props)))
+30
View File
@@ -0,0 +1,30 @@
(ns quo2.components.icon-avatar
(:require [quo.react-native :as rn]
[quo.theme :as theme]
[quo2.components.avatar.avatar-themes :refer [themes]]
[status-im.ui.components.icons.icons :as icons]))
(def sizes
{:big 48
:medium 32
:small 20})
(defn icon-avatar
[{:keys [size icon color]}]
(let [component-size (size sizes)
theme (theme/get-theme)
circle-color (get-in themes [theme color :background-color])
icon-color (get-in themes [theme color :icon-color])
icon-size (case size
:big 20
:medium 16
:small 12)]
[rn/view {:style {:width component-size
:height component-size
:border-radius component-size
:background-color circle-color
:justify-content :center
:align-items :center}}
[icons/icon icon {:container-style {:width icon-size
:height icon-size}
:color icon-color}]]))
+40
View File
@@ -0,0 +1,40 @@
(ns quo2.components.info-message
(:require [quo.theme :as theme]
[quo.react-native :as rn]
[quo2.components.text :as text]
[quo2.foundations.colors :as colors]
[quo2.components.icon :as quo2.icons]))
(def themes
{:light {:default colors/neutral-40
:success colors/success-50
:error colors/danger-50}
:dark {:default colors/neutral-60
:success colors/success-60
:error colors/danger-60}})
(defn get-color [key]
(get-in themes [(theme/get-theme) key]))
(defn info-message
"[info-message opts \"message\"]
opts
{:type :default/:success/:error
:size :default/:tiny
:icon :main-icons/info ;; info message icon
:text-color colors/white ;; text color override
:icon-color colors/white ;; icon color override"
[{:keys [type size icon text-color icon-color]} message]
(let [weight (if (= size :default) :regular :medium)
size (if (= size :default) :paragraph-2 :label)
text-color (or text-color (get-color type))
icon-color (or icon-color text-color)]
[rn/view {:style {:flex-direction :row
:flex 1}}
[quo2.icons/icon icon {:color icon-color
:size 12
:container-style {:margin-top 3}}]
[text/text {:size size
:weight weight
:style {:color text-color
:margin-horizontal 8}} message]]))
+91
View File
@@ -0,0 +1,91 @@
(ns quo2.components.information-box
(:require [quo.theme :as theme]
[quo.react-native :as rn]
[clojure.string :as string]
[quo2.foundations.colors :as colors]
[quo2.components.icon :as quo2.icons]
[quo2.components.button :as quo2.button]
[quo2.components.info-message :as info-message]))
(def themes
{:light {:default {:bg colors/white
:border colors/neutral-20
:icon colors/neutral-50
:text colors/black}
:informative {:bg colors/primary-50-opa-5
:border colors/primary-50-opa-10
:icon colors/primary-50
:text colors/black}
:error {:bg colors/danger-50-opa-5
:border colors/danger-50-opa-10
:icon colors/danger-50
:text colors/danger-50}
:close-button colors/black}
:dark {:default {:bg colors/neutral-90
:border colors/neutral-70
:icon colors/neutral-40
:text colors/white}
:informative {:bg colors/primary-50-opa-5
:border colors/primary-50-opa-10
:icon colors/white
:text colors/white}
:error {:bg colors/danger-50-opa-5
:border colors/danger-50-opa-10
:icon colors/danger-50
:text colors/danger-50}
:close-button colors/white}})
(defn get-color [key]
(get-in themes [(theme/get-theme) key]))
(defn get-color-by-type [type key]
(get-in themes [(theme/get-theme) type key]))
(defn information-box
"[information-box opts \"message\"]
opts
{:type :default/:informative/:error
:closable? true/false ;; allow information box to be closed?
:closed? true/false ;; information box's state
:id :information-box-id ;; unique id (required for closable? information box)
:icon :main-icons/info ;; information box icon
:style style
:button-label \"PressMe\" ;; add action button with label
:on-button-press action ;; (required for information box with button-label)
:on-close on-close ;; (optional on-close call)"
[{:keys [type closable? closed? id icon style button-label on-button-press on-close]} message]
(let [background-color (get-color-by-type type :bg)
border-color (get-color-by-type type :border)
icon-color (get-color-by-type type :icon)
text-color (get-color-by-type type :text)
include-button? (not (string/blank? button-label))]
(when-not closed?
[rn/view {:accessibility-label (or id :information-box)
:style (merge {:background-color background-color
:border-color border-color
:border-width 1
:border-radius 12
:padding-top (if include-button? 10 11)
:padding-bottom (if include-button? 12 11)
:padding-horizontal 16} style)}
[rn/view {:style {:flex-direction :row
:align-self :flex-start}}
[info-message/info-message {:size :default
:icon icon
:text-color text-color
:icon-color icon-color} message]
(when closable?
[rn/touchable-opacity
{:on-press on-close
:accessibility-label (str (or id "information-box") "-close-button")}
[quo2.icons/icon :main-icons2/close {:size 12
:color (get-color :close-button)
:container-style {:margin-top 4
:margin-left 8}}]])]
(when include-button?
[quo2.button/button {:type :primary
:size 24
:on-press on-button-press
:style {:margin-left 20
:margin-top 8
:align-self :flex-start}} button-label])])))
+39 -24
View File
@@ -1,6 +1,7 @@
(ns quo2.components.status-tags
(:require [status-im.i18n.i18n :as i18n]
[quo2.foundations.colors :as colors]
[quo.theme :as quo.theme]
[quo2.components.icon :as icon]
[quo2.components.text :as text]
[quo.react-native :as rn]))
@@ -24,6 +25,7 @@
border-color
background-color
icon
theme
text-color
label]}]
(let [paragraph-size (if (= size :small) :paragraph-2 :paragraph-1)]
@@ -31,49 +33,62 @@
(assoc (if (= size :small)
small-container-style
large-container-style)
:border-width 1
:border-color border-color
:background-color background-color)
[text/text {:size paragraph-size}
[icon/theme-icon icon {:color :none
:size 12}]
[rn/view {:flex-direction :row
:flex 1}
[rn/view {:style {:justify-content :center
:align-items :center}}
[icon/icon-for-theme
icon
theme
{:no-color true
:size 12}]]
[text/text {:size paragraph-size
:style {:color text-color}} (str " " label)]]])))
:weight :medium
:style {:padding-left 5
:color text-color}} label]]])))
(defn positive [_]
(fn [size]
(defn positive [_ _]
(fn [size theme]
[base-tag {:size size
:background-color colors/success-50-opa-10
:icon :verified
:border-color colors/success-50-opa-20
:text-color (colors/theme-colors colors/success-50
colors/success-60)
:text-color (if (= theme :light) colors/success-50
colors/success-60)
:label (i18n/label :positive)}]))
(defn negative [_]
(fn [size]
(defn negative [_ _]
(fn [size theme]
[base-tag {:size size
:icon :untrustworthy
:background-color colors/danger-50-opa-10
:border-color colors/danger-50-opa-20
:text-color (colors/theme-colors colors/danger-50
colors/danger-60)
:text-color (if (= theme :light)
colors/danger-50
colors/danger-60)
:label (i18n/label :negative)}]))
(defn pending [_]
(fn [size]
(defn pending [_ _]
(fn [size theme]
[base-tag {:size size
:icon :pending
:background-color (colors/theme-colors colors/neutral-10
colors/neutral-80)
:border-color (colors/theme-colors colors/neutral-20
colors/neutral-70)
:background-color (if (= theme :light)
colors/neutral-10
colors/neutral-80)
:border-color (if (= theme :light)
colors/neutral-20
colors/neutral-70)
:text-color colors/neutral-50
:label (i18n/label :pending)}]))
(defn status-tag [_]
(fn [{:keys [status size]}]
[(case status
:positive positive
:negative negative
:pending pending
nil) size]))
(fn [{:keys [status size override-theme]}]
(let [theme (or override-theme (quo.theme/get-theme))]
[(case status
:positive positive
:negative negative
:pending pending
nil) size theme])))
+51
View File
@@ -0,0 +1,51 @@
(ns quo2.components.tag
(:require [quo.react-native :as rn]
[quo2.foundations.colors :as colors]
[quo.theme :as theme]
[quo2.components.text :as text]))
(def themes {:light {:background-color colors/neutral-20}
:dark {:background-color colors/neutral-80}})
(defn get-value-from-size [size big-option small-option]
(if (= size :big) big-option small-option))
(defn tag-container [size]
{:height (get-value-from-size size 32 24)
:align-items :center
:flex-direction :row
:border-radius 20})
(defn tag "[tag opts \"label\"]]
opts
{
:size :small/:big
:token-img-src :token-img-src
:token-img-style {}
:border-color :color
:overlay child-elements
}"
[_ _]
(fn [{:keys [size token-img-src token-img-style border-color overlay]
:or {size :small}} label]
[rn/view
{:style (when border-color
{:border-color border-color
:border-radius 20
:border-width 1})}
[rn/view
{:style (merge (tag-container size) (get themes (theme/get-theme)))}
[rn/image
{:source token-img-src
:style (merge
{:height (get-value-from-size size 28 20)
:width (get-value-from-size size 28 20)
:margin-left 2
:margin-right (get-value-from-size size 8 6)} token-img-style)}]
[text/text
{:weight :medium
:number-of-lines 1
:style
{:margin-right (get-value-from-size size 12 11)}
:size (get-value-from-size size :paragraph-2 :label)} label]
overlay]]))
+107
View File
@@ -0,0 +1,107 @@
(ns quo2.components.token-overview
(:require
[quo2.foundations.colors :as colors]
[status-im.i18n.i18n :as i18n]
[quo.react-native :as rn]
[clojure.string :as string]
[status-im.utils.currency :as currencies]
[status-im.ui.components.icons.icons :as icons]
[quo2.components.text :as text]))
(def container-style {:display :flex :width "100%" :padding-left 20 :padding-right 20 :padding-top 12 :padding-bottom 12})
(defn price-direction [price-change increase decrease neutral]
(cond
(pos? price-change) increase
(neg? price-change) decrease
:else neutral))
(defn price-color [direction]
(price-direction direction colors/success-50 colors/danger-50 colors/neutral-50))
(defn divider [direction]
[rn/view {:style {:height 10
:margin-left 4
:margin-right 4
:width 1
:background-color (price-direction direction colors/success-50-opa-40 colors/danger-50-opa-40 colors/divider-light)}}])
(defn get-direction [percentage-change]
(if (zero? (js/parseInt percentage-change)) 0
(/ (js/parseInt percentage-change) (js/Math.abs (js/parseInt percentage-change)))))
(defn trim-minus [percentage-change] (if (= (first percentage-change) "-") (string/join (rest percentage-change)) percentage-change))
(defn token-price
"[token-price opts \"label\"]
opts
{
:currency :currency-key
:price :string
:percentage-change :string
}"
[]
(fn
[{:keys [currency price percentage-change] :or {currency :usd price "0.00" percentage-change "0.0"}}]
(let [direction (get-direction percentage-change)]
[rn/view {:style container-style}
[text/text {:number-of-lines 1
:size :paragraph-2} (i18n/label :token-price)]
[text/text {:style {:margin-top 4}
:weight :semi-bold
:number-of-lines 1
:size :heading-2} (str (get-in currencies/currencies [currency :symbol]) price)]
[rn/view {:style {:display :flex :flex-direction :row :margin-top 6 :align-items :center}}
(when (not (zero? direction)) [icons/icon (if (>= direction 0) :main-icons2/price-increase12 :main-icons2/price-decrease12)
{:no-color true
:width 14
:height 14
:container-style {:margin-right 4}}])
[text/text {:number-of-lines 1
:weight :medium
:size :paragraph-2
:style {:color (price-color direction)}}
(str (trim-minus percentage-change) "%")]]])))
(defn token-balance
"[token-balance opts \"label\"]
opts
{
:token string
:token-img-src :token-img-src
:currency :currency-key
:account-balance :string
:price :string
:percentage-change :string
}"
[]
(fn [{:keys [token token-img-src currency account-balance price percentage-change] :or {currency :usd account-balance "0.00" price "0.00" percentage-change "0.0"}}]
(let [direction (get-direction percentage-change)]
[rn/view {:style container-style}
[text/text {:weight :regular
:number-of-lines 1
:size :paragraph-1} (str "Account " token " Balance")]
[rn/view {:style {:display :flex :flex-direction :row :flex 1 :justify-content :space-between}}
[text/text {:number-of-lines 1
:weight :semi-bold
:size :heading-1} (str (get-in currencies/currencies [currency :symbol]) account-balance)]
[rn/image {:source token-img-src
:style {:height 32
:width 32}}]]
[rn/view {:style {:display :flex :flex-direction :row :margin-top 6 :align-items :center}}
(when (not (zero? direction)) [icons/icon (if (pos? direction) :main-icons2/price-increase12 :main-icons2/price-decrease12)
{:no-color true
:width 12
:height 12
:container-style {:margin-right 4}}])
[text/text {:number-of-lines 1
:weight :medium
:size :paragraph-2
:style {:color (price-color direction)}} (str (get-in currencies/currencies [currency :symbol]) price)]
[divider direction]
[text/text {:number-of-lines 1
:weight :medium
:size :paragraph-2
:style {:color (price-color direction)}} (str (trim-minus percentage-change) "%")]]])))
+55
View File
@@ -0,0 +1,55 @@
(ns quo2.components.token-tag
(:require [quo2.foundations.colors :as colors]
[quo.react-native :as rn]
[quo.theme :as theme]
[status-im.ui.components.icons.icons :as icons]
[quo2.components.tag :as tag]))
(defn get-value-from-size [size big-option small-option]
(if (= size :big) big-option small-option))
(def icon-container-styles
{:display :flex
:align-items :center
:justify-content :center
:position :absolute
:border-radius 20
:margin-left 2})
(defn token-tag
"[token-tag opts]
opts
{
:token string
:value string
:size :small/:big
:token-img-src :token-img-src
:border-color :color
:is-required true/false
:is-purchasable true/false
}"
[_ _]
(fn [{:keys [token value size token-img-src border-color is-required is-purchasable]
:or
{size :small border-color (if (= (theme/get-theme) :dark) colors/purple-60 colors/purple-50)}}]
[tag/tag {:size size
:token-img-src token-img-src
:border-color (when is-required border-color)
:overlay
(when (or is-required is-purchasable)
[rn/view
{:style (merge icon-container-styles
{:width 15.5
:height 15.5
:background-color border-color
:border-color (if (= (theme/get-theme) :dark) colors/black colors/white)
:border-width 1
:right (get-value-from-size size -3.75 -5.75)
:bottom (get-value-from-size size (- 32 7.75 4) (- 24 7.75 2)) ; (- height (icon-height/2) spacing)
})}
[icons/icon (if is-required :main-icons2/required-checkmark12 :main-icons2/purchasable12)
{:no-color true
:width 13.5
:height 13.5}]])}
(str value " " token)]))
+102
View File
@@ -0,0 +1,102 @@
(ns quo2.components.wallet-user-avatar
(:require [quo.react-native :as rn]
[quo2.foundations.colors :as colors]
[quo2.components.text :as text]
[clojure.string :as clojure-string]))
(def themes {:light {:primary {:text-color colors/primary-50
:background-color colors/primary-20}
:purple {:text-color colors/purple-50
:background-color colors/purple-20}
:indigo {:text-color colors/indigo-50
:background-color colors/indigo-20}
:turquoise {:text-color colors/turquoise-50
:background-color colors/turquoise-20}
:blue {:text-color colors/blue-50
:background-color colors/blue-20}
:green {:text-color colors/green-50
:background-color colors/green-20}
:yellow {:text-color colors/yellow-50
:background-color colors/yellow-20}
:orange {:text-color colors/orange-50
:background-color colors/orange-20}
:red {:text-color colors/red-50
:background-color colors/red-20}
:pink {:text-color colors/pink-50
:background-color colors/pink-20}
:brown {:text-color colors/brown-50
:background-color colors/brown-20}
:beige {:text-color colors/beige-50
:background-color colors/beige-20}}
:dark {:primary {:text-color colors/primary-60
:background-color colors/primary-50-opa-20}
:purple {:text-color colors/purple-60
:background-color colors/purple-20}
:indigo {:text-color colors/indigo-60
:background-color colors/indigo-20}
:turquoise {:text-color colors/turquoise-60
:background-color colors/turquoise-20}
:blue {:text-color colors/blue-60
:background-color colors/blue-20}
:green {:text-color colors/green-60
:background-color colors/green-20}
:yellow {:text-color colors/yellow-60
:background-color colors/yellow-20}
:orange {:text-color colors/orange-60
:background-color colors/orange-20}
:red {:text-color colors/red-60
:background-color colors/red-20}
:pink {:text-color colors/pink-60
:background-color colors/pink-20}
:brown {:text-color colors/brown-60
:background-color colors/brown-20}
:beige {:text-color colors/beige-60
:background-color colors/beige-20}}})
(def circle-sizes {:small 20
:medium 32
:large 48
:x-large 80})
(def font-sizes {:small :label
:medium :paragraph-2
:large :paragraph-1
:x-large :heading-1})
(def font-weights {:small :medium
:medium :semi-bold
:large :semi-bold
:x-large :medium})
(defn wallet-user-avatar
"params, first name, last name, color, size
and if it's dark or not!"
[{:keys [f-name l-name color size] :or {f-name "John"
l-name "Doe"
color :red
size :x-large}}]
(let [circle-size (size circle-sizes)
dark? (colors/dark?)
small? (= size :small)
f-name-initial (-> f-name
clojure-string/upper-case
(subs 0 1))
l-name-initial (-> l-name
clojure-string/upper-case
(subs 0 1))
theme (if dark? :dark :light)
circle-color (get-in themes [theme color :background-color])
text-color (get-in themes [theme color :text-color])]
[rn/view {:style {:width circle-size
:height circle-size
:border-radius circle-size
:text-align :center
:justify-content :center
:align-items :center
:background-color circle-color}}
[text/text {:size (size font-sizes)
:weight (size font-weights)
:style {:color text-color}}
(if small?
(str f-name-initial)
(str f-name-initial l-name-initial))]]))
+77
View File
@@ -183,6 +183,79 @@
(def info-50-opa-30 (alpha info-50 0.3))
(def info-50-opa-40 (alpha info-50 0.4))
;; Customization
(def purple-20 (alpha "#8661C1" 0.2))
(def purple-50 "#8661C1")
(def purple-60 (alpha "#8661C1" 0.6))
(def indigo-20 (alpha "#496289" 0.2))
(def indigo-50 "#496289")
(def indigo-60 (alpha "#496289" 0.6))
(def turquoise-20 (alpha "#448EA2" 0.2))
(def turquoise-50 "#448EA2")
(def turquoise-60 (alpha "#448EA2" 0.6))
(def blue-20 (alpha "#4CB4EF" 0.2))
(def blue-50 "#4CB4EF")
(def blue-60 (alpha "#4CB4EF" 0.6))
(def green-20 (alpha "#5BCC95" 0.2))
(def green-50 "#5BCC95")
(def green-60 (alpha "#5BCC95" 0.6))
(def yellow-20 (alpha "#FFCB53" 0.2))
(def yellow-50 "#FFCB53")
(def yellow-60 (alpha "#FFCB53" 0.6))
(def orange-20 (alpha "#FB8F61" 0.2))
(def orange-50 "#FB8F61")
(def orange-60 (alpha "#FB8F61" 0.6))
(def red-20 (alpha "#F46666" 0.2))
(def red-50 "#F46666")
(def red-60 (alpha "#F46666" 0.6))
(def pink-20 (alpha "#FC7BAB" 0.2))
(def pink-50 "#FC7BAB")
(def pink-60 (alpha "#FC7BAB" 0.6))
(def brown-20 (alpha "#99604D" 0.2))
(def brown-50 "#99604D")
(def brown-60 (alpha "#805141" 0.6))
(def beige-20 (alpha "#CAAE93" 0.2))
(def beige-50 "#CAAE93")
(def beige-60 (alpha "#CAAE93" 0.6))
(def customization
{:dark {:purple purple-60
:indigo indigo-60
:turquoise turquoise-60
:blue blue-60
:green green-60
:yellow yellow-60
:orange orange-60
:red red-60
:pink pink-60
:brown brown-60
:beige beige-60}
:light {:purple purple-50
:indigo indigo-50
:turquoise turquoise-50
:blue blue-50
:green green-50
:yellow yellow-50
:orange orange-50
:red red-50
:pink pink-50
:brown brown-50
:beige beige-50}})
(defn custom-color [color theme]
(get-in customization [theme color]))
;;;;Switcher
(def switcher-background "#040B14")
;;switcher-screen with transparency
(def switcher-background-opa-60 (alpha switcher-background 0.6))
(def switcher-background-opa-70 (alpha switcher-background 0.7))
(def switcher-background-opa-80 (alpha switcher-background 0.8))
(def switcher-background-opa-90 (alpha switcher-background 0.9))
(def switcher-background-opa-95 (alpha switcher-background 0.95))
;;General
;; background
@@ -199,3 +272,7 @@
(defn theme-colors [light dark]
(if (theme/dark?) dark light))
(defn dark?
[]
(theme/dark?))
+17 -17
View File
@@ -1,25 +1,25 @@
(ns quo2.foundations.typography)
(def heading-1 {:font-size 27
:line-height 32.4
:letter-spacing -0.5})
;; Formulat for letter spacing from figma %: font-size*{figma-percentage}/100
(def heading-1 {:font-size 27
:line-height 32
:letter-spacing -0.567})
(def heading-2 {:font-size 19
:line-height 25.65
:letter-spacing -0.4})
(def heading-2 {:font-size 19
:line-height 25.65
:letter-spacing -0.304})
(def paragraph-1 {:font-size 15
:line-height 21.75
:letter-spacing -0.1})
(def paragraph-1 {:font-size 15
:line-height 21.75
:letter-spacing -0.135})
(def paragraph-2 {:font-size 13
:line-height 18.2
:letter-spacing 0})
(def paragraph-2 {:font-size 13
:line-height 18.2
:letter-spacing -0.039})
(def label {:font-size 11
:line-height 15.62
:letter-spacing -0.055
:text-transform :uppercase})
(def label {:font-size 11
:line-height 15.62
:letter-spacing -0.055})
(def font-regular {:font-family "Inter-Regular"}) ; 400
@@ -29,4 +29,4 @@
(def font-bold {:font-family "Inter-Bold"}) ; 700
(def monospace {:font-family "InterStatus-Regular"})
(def monospace {:font-family "InterStatus-Regular"})
+87
View File
@@ -0,0 +1,87 @@
(ns quo2.screens.activity-logs
(:require [reagent.core :as reagent]
[quo.react-native :as rn]
[quo.previews.preview :as preview]
[quo2.foundations.colors :as colors]
[quo2.screens.status-tags :as status-tags]
[quo2.components.activity-logs :as activity-logs]))
(def descriptor [{:label "Unread:"
:key :unread
:type :boolean}
{:label "Icon"
:key :icon
:type :select
:options [{:key :placeholder
:value :placeholder}]}
{:label "Title"
:key :title
:type :text}
{:label :message
:key :message
:type :text}
{:label "Timestamp"
:key :timestamp
:type :text}
{:label "Button 1 type"
:key :button-1-type
:type :select
:options [{:value "Danger"
:key :danger}
{:value "Primary"
:key :primary}
{:value "Success"
:key :success}]}
{:label "Button 1 label"
:key :button-1-label
:type :text}
{:label "Button 2 type"
:key :button-2-type
:type :select
:options [{:value "Danger"
:key :danger}
{:value "Primary"
:key :primary}
{:value "Success"
:key :success}]}
{:label "Button 2 label"
:key :button-2-label
:type :text}
status-tags/status-tags-options])
(defn preview []
(let [state (reagent/atom {:title "Activity Title"
:timestamp "Yesterday ∙ 10:41"
:message "Hello Alisher! Do you remember me from the web 3.0 conference in Porto?"
:icon :placeholder})]
(fn []
(let [{:keys [button-1-type
button-1-label
button-2-type
button-2-label]} @state
props (cond-> @state
(and (seq button-1-label)
button-1-type)
(assoc :button-1 {:label button-1-label
:type button-1-type})
(and (seq button-2-label)
button-2-type)
(assoc :button-2 {:label button-2-label
:type button-2-type}))]
[rn/view {:margin-bottom 50
:padding 16}
[rn/view {:flex 1}
[preview/customizer state descriptor]]
[rn/view {:padding-vertical 60
:background-color colors/neutral-95-opa-80
:flex-direction :row
:justify-content :center}
[activity-logs/activity-logs props]]]))))
(defn preview-activity-logs []
[rn/view {:flex 1}
[rn/flat-list {:flex 1
:keyboardShouldPersistTaps :always
:header [preview]
:key-fn str}]])
+70
View File
@@ -0,0 +1,70 @@
(ns quo2.screens.context-tags
(:require [reagent.core :as reagent]
[re-frame.core :as re-frame]
[status-im.multiaccounts.core :as multiaccounts]
[quo.react-native :as rn]
[quo.previews.preview :as preview]
[quo2.foundations.colors :as colors]
[quo2.components.context-tags :as quo2]))
(def group-avatar-default-params
{:size :small
:color :purple})
(def example-pk "0x04fcf40c526b09ff9fb22f4a5dbd08490ef9b64af700870f8a0ba2133f4251d5607ed83cd9047b8c2796576bc83fa0de23a13a4dced07654b8ff137fe744047917")
(def descriptor [{:label "Type"
:key :type
:type :select
:options [{:key :public-key
:value "Public key"}
{:key :avatar
:value "Avatar"}
{:key :group-avatar
:value "Group avatar"}]}])
(defn cool-preview []
(let [state (reagent/atom {:label "Name"
:type :group-avatar})]
(fn []
(let [contacts @(re-frame/subscribe [:contacts/contacts])
descriptor
(cond-> descriptor
(= (:type @state) :group-avatar)
(conj {:label "Label"
:key :label
:type :text})
(= (:type @state) :avatar)
(conj {:label "Contacts"
:key :contact
:type :select
:options
(map (fn [{:keys [public-key]}]
{:key public-key
:value (multiaccounts/displayed-name
(get contacts public-key))})
(vals contacts))}))]
[rn/view {:margin-bottom 50
:padding 16}
[rn/view {:flex 1}
[preview/customizer state descriptor]]
[rn/view {:padding-vertical 60
:flex-direction :row
:justify-content :center}
(case (:type @state)
:group-avatar
[quo2/group-avatar-tag (:label @state) group-avatar-default-params]
:public-key
[quo2/public-key-tag {} example-pk]
:avatar
[quo2/user-avatar-tag {} (:contact @state)])]]))))
(defn preview-context-tags []
[rn/view {:background-color (colors/theme-colors colors/white
colors/neutral-90)
:flex 1}
[rn/flat-list {:flex 1
:keyboardShouldPersistTaps :always
:header [cool-preview]
:key-fn str}]])
+50
View File
@@ -0,0 +1,50 @@
(ns quo2.screens.group-avatar
(:require [reagent.core :as reagent]
[quo.react-native :as rn]
[quo.previews.preview :as preview]
[quo2.foundations.colors :as colors]
[quo2.components.group-avatar :as quo2]))
(def descriptor [{:label "Size"
:key :size
:type :select
:options [{:key :small
:value "Small"}
{:key :medium
:value "Medium"}
{:key :large
:value "Large"}]}
{:label "Color"
:key :color
:type :select
:options
(map
(fn [c]
{:key c
:value c})
(-> colors/customization
:light
keys))}])
(defn cool-preview []
(let [state (reagent/atom {:theme :light
:color :purple
:size :small})]
(fn []
[rn/view {:margin-bottom 50
:padding 16}
[rn/view {:flex 1}
[preview/customizer state descriptor]]
[rn/view {:padding-vertical 60
:flex-direction :row
:justify-content :center}
[quo2/group-avatar @state]]])))
(defn preview-group-avatar []
[rn/view {:background-color (colors/theme-colors colors/white
colors/neutral-90)
:flex 1}
[rn/flat-list {:flex 1
:keyboardShouldPersistTaps :always
:header [cool-preview]
:key-fn str}]])
+72
View File
@@ -0,0 +1,72 @@
(ns quo2.screens.icon-avatar
(:require [reagent.core :as reagent]
[quo.react-native :as rn]
[quo.previews.preview :as preview]
[quo.design-system.colors :as colors]
[quo2.components.icon-avatar :as quo2]))
(def descriptor [{:label "Size"
:key :size
:type :select
:options [{:key :small
:value "Small"}
{:key :medium
:value "Medium"}
{:key :big
:value "Big"}]}
{:label "Icon"
:key :icon
:type :select
:options [{:key :main-icons/placeholder20
:value "Placeholder"}
{:key :main-icons/walelt
:value "Wallet"}
{:key :main-icons/play
:value "Play"}]}
{:label "Color"
:key :color
:type :select
:options [{:key :primary
:value "Primary"}
{:key :purple
:value "Purple"}
{:key :indigo
:value "Indigo"}
{:key :turquoise
:value "Turquoise"}
{:key :blue
:value "Blue"}
{:key :green
:value "Green"}
{:key :yellow
:value "yellow"}
{:key :orange
:value "Orange"}
{:key :red
:value "Red"}
{:key :pink
:value "Pink"}
{:key :brown
:value "Brown"}
{:key :beige
:value "Beige"}]}])
(defn cool-preview []
(let [state (reagent/atom {:size :big
:icon :main-icons/placeholder20
:color :primary})]
(fn []
[rn/view {:margin-bottom 50
:padding 16}
[preview/customizer state descriptor]
[rn/view {:padding-vertical 60
:align-items :center}
[quo2/icon-avatar @state]]])))
(defn preview-icon-avatar []
[rn/view {:background-color (:ui-background @colors/theme)
:flex 1}
[rn/flat-list {:flex 1
:keyboardShouldPersistTaps :always
:header [cool-preview]
:key-fn str}]])
+47
View File
@@ -0,0 +1,47 @@
(ns quo2.screens.info-message
(:require [quo.react-native :as rn]
[reagent.core :as reagent]
[quo.previews.preview :as preview]
[quo2.foundations.colors :as colors]
[quo2.components.info-message :as quo2]))
(def descriptor [{:label "Type:"
:key :type
:type :select
:options [{:key :default
:value "Default"}
{:key :success
:value "Success"}
{:key :error
:value "Error"}]}
{:label "Size:"
:key :size
:type :select
:options [{:key :default
:value "Default"}
{:key :tiny
:value "Tiny"}]}
{:label "Message"
:key :message
:type :text}])
(defn cool-preview []
(let [state (reagent/atom {:type :default
:size :default
:icon :main-icons2/placeholder
:message "This is a message"})]
(fn []
[rn/view {:margin-bottom 50
:padding 16}
[preview/customizer state descriptor]
[rn/view {:padding-vertical 60
:align-items :center}
[quo2/info-message @state (:message @state)]]])))
(defn preview-info-message []
[rn/view {:background-color (colors/theme-colors colors/white colors/neutral-90)
:flex 1}
[rn/flat-list {:flex 1
:keyboardShouldPersistTaps :always
:header [cool-preview]
:key-fn str}]])
+51
View File
@@ -0,0 +1,51 @@
(ns quo2.screens.information-box
(:require [quo.react-native :as rn]
[reagent.core :as reagent]
[quo.previews.preview :as preview]
[quo2.foundations.colors :as colors]
[quo2.components.information-box :as quo2]))
(def descriptor [{:label "Type:"
:key :type
:type :select
:options [{:key :default
:value "Default"}
{:key :informative
:value "Informative"}
{:key :error
:value "Error"}]}
{:label "Closable?:"
:key :closable?
:type :boolean}
{:label "Message"
:key :message
:type :text}
{:label "Button Label"
:key :button-label
:type :text}])
(defn cool-preview []
(let [state (reagent/atom {:type :default
:closable? true
:icon :main-icons2/placeholder
:message "This is an information box This is an information"
:button-label "Press Me"
:style {:width 335}
:id (keyword (str "id-" (rand-int 10000)))})
closed? (reagent/cursor state [:closed?])
on-close #(reset! closed? true)]
(fn []
[rn/view {:margin-bottom 50
:padding 16}
[preview/customizer state descriptor]
[rn/view {:padding-vertical 60
:align-items :center}
[quo2/information-box (merge @state {:on-close on-close}) (:message @state)]]])))
(defn preview-information-box []
[rn/view {:background-color (colors/theme-colors colors/white colors/neutral-90)
:flex 1}
[rn/flat-list {:flex 1
:keyboardShouldPersistTaps :always
:header [cool-preview]
:key-fn str}]])
+37 -1
View File
@@ -4,32 +4,68 @@
[quo.design-system.colors :as colors]
[re-frame.core :as re-frame]
[quo2.screens.button :as button]
[quo2.screens.token-overview :as token-overview]
[quo2.screens.text :as text]
[quo2.screens.tabs :as tabs]
[quo2.screens.status-tags :as status-tags]
[quo2.screens.context-tags :as context-tags]
[quo2.screens.group-avatar :as group-avatar]
[quo2.screens.activity-logs :as activity-logs]
[quo2.screens.token-tag :as token-tag]
[quo2.screens.counter :as counter]
[quo2.screens.wallet-user-avatar :as wallet-user-avatar]
[quo2.screens.icon-avatar :as icon-avatar]
[quo2.screens.segmented :as segmented]
[quo2.screens.info-message :as info-message]
[quo2.screens.information-box :as information-box]
[quo.components.safe-area :as safe-area]
[quo.core :as quo]))
(def screens [{:name :quo2-texts
:insets {:top false}
:component text/preview-text}
{:name :quo2-wallet-user-avatar
:insets {:top false}
:component wallet-user-avatar/preview-wallet-user-avatar}
{:name :quo2-button
:insets {:top false}
:component button/preview-button}
{:name :quo2-token-overview
:insets {:top false}
:component token-overview/preview-token-overview}
{:name :quo2-icon-avatar
:insets {:top false}
:component icon-avatar/preview-icon-avatar}
{:name :quo2-status-tags
:insets {:top false}
:component status-tags/preview-status-tags}
{:name :quo2-context-tags
:insets {:top false}
:component context-tags/preview-context-tags}
{:name :quo2-group-avatar
:insets {:top false}
:component group-avatar/preview-group-avatar}
{:name :quo2-activity-logs
:insets {:top false}
:component activity-logs/preview-activity-logs}
{:name :quo2-tabs
:insets {:top false}
:component tabs/preview-tabs}
{:name :quo2-token-tag
:insets {:top false}
:component token-tag/preview-token-tag}
{:name :quo2-segmented
:insets {:top false}
:component segmented/preview-segmented}
{:name :quo2-counter
:insets {:top false}
:component counter/preview-counter}])
:component counter/preview-counter}
{:name :info-message
:insets {:top false}
:component info-message/preview-info-message}
{:name :information-box
:insets {:top false}
:component information-box/preview-information-box}])
(defn theme-switcher []
[rn/view {:style {:flex-direction :row
+12 -9
View File
@@ -5,15 +5,18 @@
[quo2.foundations.colors :as colors]
[quo2.components.status-tags :as quo2]))
(def descriptor [{:label "Status"
:key :status
:type :select
:options [{:value "Positive"
:key :positive}
{:value "Negative"
:key :negative}
{:value "Pending"
:key :pending}]}
(def status-tags-options
{:label "Status"
:key :status
:type :select
:options [{:value "Positive"
:key :positive}
{:value "Negative"
:key :negative}
{:value "Pending"
:key :pending}]})
(def descriptor [status-tags-options
{:label "Size"
:key :size
:type :select
+55
View File
@@ -0,0 +1,55 @@
(ns quo2.screens.token-overview
(:require [quo.react-native :as rn]
[quo.previews.preview :as preview]
[reagent.core :as reagent]
[quo2.components.token-overview :as quo2]
[quo.design-system.colors :as colors]))
(def descriptor [{:label "Token:"
:key :token
:type :select
:options [{:key "SNT"
:value "SNT"}
{:key "ETH"
:value "ETH"}]}
{:label "Account Balance:"
:key :account-balance
:type :text}
{:label "Price:"
:key :price
:type :text}
{:label "Percentage-Increase:"
:key :percentage-change
:type :text}
{:label "Currency:"
:key :currency
:type :select
:options [{:key :usd
:value "$"}
{:key :eur
:value "€"}]}])
(def eth-token (js/require "../resources/images/tokens/mainnet/ETH.png"))
(def snt-token (js/require "../resources/images/tokens/mainnet/SNT.png"))
(defn cool-preview []
(let [state (reagent/atom {:token "ETH" :account-balance "3.00" :price "1.00" :percentage-change "-3.0" :currency :usd})]
(fn []
[rn/view {:margin-bottom 50 :padding 16}
[preview/customizer state descriptor]
[rn/view {:border :black
:border-width 1
:align-items :center}
[quo2/token-balance (assoc @state :token-img-src (if (= (:token @state) "ETH") eth-token snt-token))]
[rn/view {:padding-vertical 25
:align-items :center}]
[quo2/token-price (assoc @state :token-img-src (if (= (:token @state) "ETH") eth-token snt-token))]]])))
(defn preview-token-overview []
[rn/view {:background-color (:ui-background @colors/theme)
:flex 1}
[rn/flat-list {:flex 1
:keyboardShouldPersistTaps :always
:header [cool-preview]
:key-fn str}]])

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