Compare commits
233 commits
Author | SHA1 | Date | |
---|---|---|---|
|
c2cca1ff37 | ||
|
5aeb6b7522 | ||
|
b3c20a5818 | ||
|
d0827dd39e | ||
|
900304d405 | ||
|
73588071ba | ||
|
1a5601f755 | ||
|
04c86c567f | ||
|
65bb917bfb | ||
|
af89603b81 | ||
|
4434ad7363 | ||
|
5082dc20f3 | ||
|
18c2ba9366 | ||
|
4b137bc968 | ||
|
21d5c51cc9 | ||
|
edaf485993 | ||
|
150becb679 | ||
|
c6cb48096d | ||
|
65402ba1eb | ||
|
17d99e5451 | ||
|
85d3e727e2 | ||
|
4fb2fc47ad | ||
|
a96b493b60 | ||
|
fe0c9ecc0e | ||
|
e5d0194f11 | ||
|
8457a45c2a | ||
|
b0edf1fe75 | ||
|
1d6e594e04 | ||
|
1134915920 | ||
|
418fdb62d3 | ||
|
d332377a2b | ||
|
b77c22b0df | ||
|
b79fb6af1f | ||
|
1fa1181c82 | ||
|
9a426ee5d4 | ||
|
c2b138c65c | ||
|
46a73de82e | ||
|
41fa97a203 | ||
|
2f2b45f844 | ||
|
eede8fa6c7 | ||
|
78bb170533 | ||
|
90aee053cd | ||
|
e03dcc7fe9 | ||
|
d342173239 | ||
|
df88914628 | ||
|
7b8ddf9685 | ||
|
e52bceda3a | ||
|
df20e22fae | ||
|
fd3158293e | ||
|
939e5d9279 | ||
|
1aac17676d | ||
|
d356d5bfcb | ||
|
773adfaaca | ||
|
b872b43b75 | ||
|
43808992ec | ||
|
79faeb98af | ||
|
dcaeac9b85 | ||
|
1e5568fc1b | ||
|
1c7dd02a53 | ||
|
914561716d | ||
|
c12daced40 | ||
|
bc52cf485e | ||
|
557e1c9839 | ||
|
66efce4d70 | ||
|
1b2e3f2ee1 | ||
|
40084ec532 | ||
|
ca8dbf3c81 | ||
|
ca2c953cf4 | ||
|
82e3ebf4fa | ||
|
4a08e18f00 | ||
|
e7fd1582a8 | ||
|
b4e16a05b1 | ||
|
b1fc9ba2e5 | ||
|
51a4954fcb | ||
|
b28ea4199c | ||
|
5b43cb5373 | ||
|
a9e05073a5 | ||
|
c6f9d12a8e | ||
|
cab4792388 | ||
|
b7473594cb | ||
|
cd0844dcc1 | ||
|
eccc94a019 | ||
|
a2294c4a06 | ||
|
dd8413bae2 | ||
|
cb257e1391 | ||
|
2a6dad2257 | ||
|
d4190cbb0f | ||
|
69c2e458d5 | ||
|
0e4c9bb138 | ||
|
4448adb49d | ||
|
b25cb527cb | ||
|
0188535eb9 | ||
|
da8a82a10f | ||
|
e527083871 | ||
|
d86c501fc5 | ||
|
10294e088a | ||
|
b5ba9385e8 | ||
|
02e74b5997 | ||
|
e6c9cf54fb | ||
|
526796e2d7 | ||
|
1b04619c2a | ||
|
698f0199d0 | ||
|
b4fcec3a01 | ||
|
6b95b7c6ac | ||
|
3e25be6dcf | ||
|
e4a89f4d1e | ||
|
e09d9aadfa | ||
|
53efdced68 | ||
|
ffe1c115fa | ||
|
66e1745ad9 | ||
|
0899b39ad9 | ||
|
f81957ed24 | ||
|
fe435d4e3b | ||
|
d9c01a5d07 | ||
|
b2d4698cdf | ||
|
77980496a8 | ||
|
b38892a19f | ||
|
ca564bc2e6 | ||
|
f574fa5e9b | ||
|
469373b780 | ||
|
87207c61ba | ||
|
5f4dc95ca5 | ||
|
990feb48ec | ||
|
ce12f517f4 | ||
|
a7376c3225 | ||
|
2f28ea3fb7 | ||
|
37ede52ea6 | ||
|
2445c2ae84 | ||
|
277dde4614 | ||
|
46a2664b73 | ||
|
c0283a37ee | ||
|
14549bcfe2 | ||
|
9b1ca4ea2e | ||
|
079480e3c9 | ||
|
6ed07a504e | ||
|
db051232ce | ||
|
ea9b87d480 | ||
|
3f25d69244 | ||
|
c1e9668b1e | ||
|
2b020c0c1b | ||
|
f58a5fb8fd | ||
|
494207290e | ||
|
b949584645 | ||
|
991dd87ac1 | ||
|
9fb30cc0fb | ||
|
29bc130562 | ||
|
7b27990e29 | ||
|
ea27a39e50 | ||
|
063edded3d | ||
|
2d693f46ff | ||
|
88ebba9236 | ||
|
9ac784db5c | ||
|
1289ccb3d3 | ||
|
21ba952746 | ||
|
fd16a099ea | ||
|
e842e818d9 | ||
|
4c892d3d0b | ||
|
24ec5fa7fd | ||
|
2b493ff6dc | ||
|
7a5999d90e | ||
|
23a47ed561 | ||
|
cbca4c9c77 | ||
|
27eaa1b1cc | ||
|
d318e9134c | ||
|
da2b3ce632 | ||
|
65e771cbbe | ||
|
7d34494800 | ||
|
b80afb1efe | ||
|
79fe9da6b7 | ||
|
d04e9c4efa | ||
|
14a577f9b5 | ||
|
27bfd85ba5 | ||
|
a49f1bc8c8 | ||
|
eab91de9f6 | ||
|
831e54498f | ||
|
40a0989956 | ||
|
7831b421b1 | ||
|
eb136efb27 | ||
|
48fa647a8c | ||
|
869c5a83cf | ||
|
b1e5d1503e | ||
|
c223510438 | ||
|
16b180add0 | ||
|
66d6fd478b | ||
|
3d0f66c0be | ||
|
be81042a06 | ||
|
3ec7d01c30 | ||
|
72184f5837 | ||
|
604432a66c | ||
|
78f0df1748 | ||
|
2cedd53d13 | ||
|
19f0c5b05e | ||
|
2f0cb28fb2 | ||
|
18049308df | ||
|
72e011ead0 | ||
|
36600dd82b | ||
|
0aa563ead7 | ||
|
13dc6de8dd | ||
|
102ab8dbe6 | ||
|
a085eff984 | ||
|
686580ff78 | ||
|
d44621e6c7 | ||
|
597a716f9d | ||
|
626e532fce | ||
|
00642e6027 | ||
|
5a09eecb01 | ||
|
a34cf24897 | ||
|
0ba54fa602 | ||
|
52a39e29d4 | ||
|
2c68c57d10 | ||
|
cec414e44b | ||
|
fee523cd81 | ||
|
b0269a7f14 | ||
|
dda3b49da6 | ||
|
6abefc25a7 | ||
|
9f3078740e | ||
|
0f301a71a2 | ||
|
1b5be705f6 | ||
|
1c29be7993 | ||
|
4f35cc9b0f | ||
|
4b03fc763f | ||
|
b387c6182a | ||
|
dcde3fd253 | ||
|
1c8af1afae | ||
|
1e4dbb5bc9 | ||
|
f781edd7cb | ||
|
c5f5d1dd4d | ||
|
1cb8651ffc | ||
|
be4e0d6ac8 | ||
|
8009ee061c | ||
|
e3e0845d8e | ||
|
068d6916b9 | ||
|
993dea82a9 |
1
.dockerignore
Normal file
|
@ -0,0 +1 @@
|
||||||
|
*
|
1
.github/pull_request_template.md
vendored
|
@ -11,3 +11,4 @@ Please include a summary of the changes and which issue is fixed / feature is ad
|
||||||
- [ ] Format code
|
- [ ] Format code
|
||||||
- [ ] Look for code duplication
|
- [ ] Look for code duplication
|
||||||
- [ ] Clear naming for variables and methods
|
- [ ] Clear naming for variables and methods
|
||||||
|
- [ ] Manual tests in accessibility mode (TalkBack on Android) passed
|
||||||
|
|
12
.github/workflows/automated_integration_test.yml
vendored
|
@ -12,7 +12,7 @@ on:
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
Automated_integration_test:
|
Automated_integration_test:
|
||||||
runs-on: ubuntu-20.04
|
runs-on: ubuntu-24.04
|
||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
|
@ -55,7 +55,7 @@ jobs:
|
||||||
- name: Flutter action
|
- name: Flutter action
|
||||||
uses: subosito/flutter-action@v1
|
uses: subosito/flutter-action@v1
|
||||||
with:
|
with:
|
||||||
flutter-version: "3.24.0"
|
flutter-version: "3.27.0"
|
||||||
channel: stable
|
channel: stable
|
||||||
|
|
||||||
- name: Install package dependencies
|
- name: Install package dependencies
|
||||||
|
@ -153,8 +153,8 @@ jobs:
|
||||||
echo "const shortKey = '${{ secrets.SHORT_KEY }}';" >> lib/.secrets.g.dart
|
echo "const shortKey = '${{ secrets.SHORT_KEY }}';" >> lib/.secrets.g.dart
|
||||||
echo "const backupSalt = '${{ secrets.BACKUP_SALT }}';" >> lib/.secrets.g.dart
|
echo "const backupSalt = '${{ secrets.BACKUP_SALT }}';" >> lib/.secrets.g.dart
|
||||||
echo "const backupKeychainSalt = '${{ secrets.BACKUP_KEY_CHAIN_SALT }}';" >> lib/.secrets.g.dart
|
echo "const backupKeychainSalt = '${{ secrets.BACKUP_KEY_CHAIN_SALT }}';" >> lib/.secrets.g.dart
|
||||||
echo "const changeNowApiKey = '${{ secrets.CHANGE_NOW_API_KEY }}';" >> lib/.secrets.g.dart
|
echo "const changeNowCakeWalletApiKey = '${{ secrets.CHANGE_NOW_API_KEY }}';" >> lib/.secrets.g.dart
|
||||||
echo "const changeNowApiKeyDesktop = '${{ secrets.CHANGE_NOW_API_KEY_DESKTOP }}';" >> lib/.secrets.g.dart
|
echo "const changeNowMoneroApiKey = '${{ secrets.CHANGE_NOW_API_KEY }}';" >> lib/.secrets.g.dart
|
||||||
echo "const wyreSecretKey = '${{ secrets.WYRE_SECRET_KEY }}';" >> lib/.secrets.g.dart
|
echo "const wyreSecretKey = '${{ secrets.WYRE_SECRET_KEY }}';" >> lib/.secrets.g.dart
|
||||||
echo "const wyreApiKey = '${{ secrets.WYRE_API_KEY }}';" >> lib/.secrets.g.dart
|
echo "const wyreApiKey = '${{ secrets.WYRE_API_KEY }}';" >> lib/.secrets.g.dart
|
||||||
echo "const wyreAccountId = '${{ secrets.WYRE_ACCOUNT_ID }}';" >> lib/.secrets.g.dart
|
echo "const wyreAccountId = '${{ secrets.WYRE_ACCOUNT_ID }}';" >> lib/.secrets.g.dart
|
||||||
|
@ -168,6 +168,7 @@ jobs:
|
||||||
echo "const ioniaClientId = '${{ secrets.IONIA_CLIENT_ID }}';" >> lib/.secrets.g.dart
|
echo "const ioniaClientId = '${{ secrets.IONIA_CLIENT_ID }}';" >> lib/.secrets.g.dart
|
||||||
echo "const twitterBearerToken = '${{ secrets.TWITTER_BEARER_TOKEN }}';" >> lib/.secrets.g.dart
|
echo "const twitterBearerToken = '${{ secrets.TWITTER_BEARER_TOKEN }}';" >> lib/.secrets.g.dart
|
||||||
echo "const trocadorApiKey = '${{ secrets.TROCADOR_API_KEY }}';" >> lib/.secrets.g.dart
|
echo "const trocadorApiKey = '${{ secrets.TROCADOR_API_KEY }}';" >> lib/.secrets.g.dart
|
||||||
|
echo "const trocadorMoneroApiKey = '${{ secrets.TROCADOR_API_KEY }}';" >> lib/.secrets.g.dart
|
||||||
echo "const trocadorExchangeMarkup = '${{ secrets.TROCADOR_EXCHANGE_MARKUP }}';" >> lib/.secrets.g.dart
|
echo "const trocadorExchangeMarkup = '${{ secrets.TROCADOR_EXCHANGE_MARKUP }}';" >> lib/.secrets.g.dart
|
||||||
echo "const anonPayReferralCode = '${{ secrets.ANON_PAY_REFERRAL_CODE }}';" >> lib/.secrets.g.dart
|
echo "const anonPayReferralCode = '${{ secrets.ANON_PAY_REFERRAL_CODE }}';" >> lib/.secrets.g.dart
|
||||||
echo "const fiatApiKey = '${{ secrets.FIAT_API_KEY }}';" >> lib/.secrets.g.dart
|
echo "const fiatApiKey = '${{ secrets.FIAT_API_KEY }}';" >> lib/.secrets.g.dart
|
||||||
|
@ -178,7 +179,8 @@ jobs:
|
||||||
echo "const etherScanApiKey = '${{ secrets.ETHER_SCAN_API_KEY }}';" >> cw_evm/lib/.secrets.g.dart
|
echo "const etherScanApiKey = '${{ secrets.ETHER_SCAN_API_KEY }}';" >> cw_evm/lib/.secrets.g.dart
|
||||||
echo "const moralisApiKey = '${{ secrets.MORALIS_API_KEY }}';" >> cw_evm/lib/.secrets.g.dart
|
echo "const moralisApiKey = '${{ secrets.MORALIS_API_KEY }}';" >> cw_evm/lib/.secrets.g.dart
|
||||||
echo "const chatwootWebsiteToken = '${{ secrets.CHATWOOT_WEBSITE_TOKEN }}';" >> lib/.secrets.g.dart
|
echo "const chatwootWebsiteToken = '${{ secrets.CHATWOOT_WEBSITE_TOKEN }}';" >> lib/.secrets.g.dart
|
||||||
echo "const exolixApiKey = '${{ secrets.EXOLIX_API_KEY }}';" >> lib/.secrets.g.dart
|
echo "const exolixCakeWalletApiKey = '${{ secrets.EXOLIX_API_KEY }}';" >> lib/.secrets.g.dart
|
||||||
|
echo "const exolixMoneroApiKey = '${{ secrets.EXOLIX_API_KEY }}';" >> lib/.secrets.g.dart
|
||||||
echo "const robinhoodApplicationId = '${{ secrets.ROBINHOOD_APPLICATION_ID }}';" >> lib/.secrets.g.dart
|
echo "const robinhoodApplicationId = '${{ secrets.ROBINHOOD_APPLICATION_ID }}';" >> lib/.secrets.g.dart
|
||||||
echo "const exchangeHelperApiKey = '${{ secrets.ROBINHOOD_CID_CLIENT_SECRET }}';" >> lib/.secrets.g.dart
|
echo "const exchangeHelperApiKey = '${{ secrets.ROBINHOOD_CID_CLIENT_SECRET }}';" >> lib/.secrets.g.dart
|
||||||
echo "const walletConnectProjectId = '${{ secrets.WALLET_CONNECT_PROJECT_ID }}';" >> lib/.secrets.g.dart
|
echo "const walletConnectProjectId = '${{ secrets.WALLET_CONNECT_PROJECT_ID }}';" >> lib/.secrets.g.dart
|
||||||
|
|
21
.github/workflows/no_http_imports.yaml
vendored
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
name: No http imports
|
||||||
|
|
||||||
|
on: [pull_request]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
PR_test_build:
|
||||||
|
runs-on: ubuntu-24.04
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- name: Check for http package usage
|
||||||
|
if: github.event_name == 'pull_request'
|
||||||
|
run: |
|
||||||
|
GIT_GREP_OUT="$(git grep package:http | (grep .dart: || test $? = 1) | (grep -v proxy_wrapper.dart || test $? = 1) | (grep -v very_insecure_http_do_not_use || test $? = 1) || true)"
|
||||||
|
[[ "x$GIT_GREP_OUT" == "x" ]] && exit 0
|
||||||
|
echo "$GIT_GREP_OUT"
|
||||||
|
echo "There are .dart files which use http imports"
|
||||||
|
echo "Using http package breaks proxy integration"
|
||||||
|
echo "Please use ProxyWrapper.getHttpClient() from package:cw_core/utils/proxy_wrapper.dart"
|
||||||
|
exit 1
|
||||||
|
|
10
.github/workflows/no_print_in_dart.yaml
vendored
|
@ -1,21 +1,19 @@
|
||||||
name: No print statements in dart files
|
name: No print statements in dart files
|
||||||
|
|
||||||
on:
|
on: [pull_request]
|
||||||
pull_request:
|
|
||||||
branches: [main]
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
PR_test_build:
|
PR_test_build:
|
||||||
runs-on: ubuntu-20.04
|
runs-on: ubuntu-24.04
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
- name: Check for print() statements in dart code (use printV() instead)
|
- name: Check for print() statements in dart code (use printV() instead)
|
||||||
if: github.event_name == 'pull_request'
|
if: github.event_name == 'pull_request'
|
||||||
run: |
|
run: |
|
||||||
GIT_GREP_OUT="$(git grep ' print(' | (grep .dart: || test $? = 1) | (grep -v print_verbose.dart || test $? = 1) || true)"
|
GIT_GREP_OUT="$(git grep ' print(' | (grep .dart: || test $? = 1) | (grep -v print_verbose.dart || test $? = 1) | (grep -v print_verbose_dummy.dart || test $? = 1) || true)"
|
||||||
[[ "x$GIT_GREP_OUT" == "x" ]] && exit 0
|
[[ "x$GIT_GREP_OUT" == "x" ]] && exit 0
|
||||||
echo "$GIT_GREP_OUT"
|
echo "$GIT_GREP_OUT"
|
||||||
echo "There are .dart files which use print() statements"
|
echo "There are .dart files which use print() statements"
|
||||||
echo "Please use printV from package: cw_core/utils/print_verbose.dart"
|
echo "Please use printV from package:cw_core/utils/print_verbose.dart"
|
||||||
exit 1
|
exit 1
|
||||||
|
|
47
.github/workflows/no_restricted_imports.yaml
vendored
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
name: No restricted imports in lib directory
|
||||||
|
|
||||||
|
on: [pull_request]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
check_restricted_imports:
|
||||||
|
runs-on: ubuntu-24.04
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- name: Check for restricted imports in lib directory
|
||||||
|
if: github.event_name == 'pull_request'
|
||||||
|
run: |
|
||||||
|
RESTRICTED_PACKAGES=(
|
||||||
|
"cw_bitcoin"
|
||||||
|
"cw_bitcoin_cash"
|
||||||
|
"cw_ethereum"
|
||||||
|
"cw_evm"
|
||||||
|
"cw_haven"
|
||||||
|
"cw_mweb"
|
||||||
|
"cw_nano"
|
||||||
|
"cw_polygon"
|
||||||
|
"cw_solana"
|
||||||
|
"cw_tron"
|
||||||
|
"cw_wownero"
|
||||||
|
"cw_zano"
|
||||||
|
)
|
||||||
|
|
||||||
|
FOUND_RESTRICTED=false
|
||||||
|
|
||||||
|
for package in "${RESTRICTED_PACKAGES[@]}"; do
|
||||||
|
GREP_RESULT=$(find lib -type f -name "*.dart" -exec grep -l "import.*package:$package" {} \; || true)
|
||||||
|
|
||||||
|
if [ -n "$GREP_RESULT" ]; then
|
||||||
|
echo "Found restricted import of '$package' in the following files:"
|
||||||
|
echo "$GREP_RESULT"
|
||||||
|
FOUND_RESTRICTED=true
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ "$FOUND_RESTRICTED" = true ]; then
|
||||||
|
echo "Error: Restricted package imports found in lib/ directory"
|
||||||
|
echo "Please remove these imports as they are not allowed in the lib/ directory"
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
echo "No restricted imports found. All good!"
|
||||||
|
fi
|
25
.github/workflows/pr_test_build_android.yml
vendored
|
@ -9,7 +9,7 @@ jobs:
|
||||||
PR_test_build:
|
PR_test_build:
|
||||||
runs-on: linux-amd64
|
runs-on: linux-amd64
|
||||||
container:
|
container:
|
||||||
image: ghcr.io/cake-tech/cake_wallet:main-linux
|
image: ghcr.io/cake-tech/cake_wallet:debian12-flutter3.27.0-go1.24.1-ruststablenightly
|
||||||
env:
|
env:
|
||||||
STORE_PASS: test@cake_wallet
|
STORE_PASS: test@cake_wallet
|
||||||
KEY_PASS: test@cake_wallet
|
KEY_PASS: test@cake_wallet
|
||||||
|
@ -47,6 +47,7 @@ jobs:
|
||||||
echo "message<<EOF" >> $GITHUB_ENV
|
echo "message<<EOF" >> $GITHUB_ENV
|
||||||
echo "$FULL_MESSAGE" >> $GITHUB_ENV
|
echo "$FULL_MESSAGE" >> $GITHUB_ENV
|
||||||
echo "EOF" >> $GITHUB_ENV
|
echo "EOF" >> $GITHUB_ENV
|
||||||
|
|
||||||
- name: Add secrets
|
- name: Add secrets
|
||||||
run: |
|
run: |
|
||||||
touch lib/.secrets.g.dart
|
touch lib/.secrets.g.dart
|
||||||
|
@ -97,8 +98,8 @@ jobs:
|
||||||
else
|
else
|
||||||
echo "const backupKeychainSalt = '${{ secrets.BACKUP_KEY_CHAIN_SALT }}';" >> lib/.secrets.g.dart
|
echo "const backupKeychainSalt = '${{ secrets.BACKUP_KEY_CHAIN_SALT }}';" >> lib/.secrets.g.dart
|
||||||
fi
|
fi
|
||||||
echo "const changeNowApiKey = '${{ secrets.CHANGE_NOW_API_KEY }}';" >> lib/.secrets.g.dart
|
echo "const changeNowCakeWalletApiKey = '${{ secrets.CHANGE_NOW_API_KEY }}';" >> lib/.secrets.g.dart
|
||||||
echo "const changeNowApiKeyDesktop = '${{ secrets.CHANGE_NOW_API_KEY_DESKTOP }}';" >> lib/.secrets.g.dart
|
echo "const changeNowMoneroApiKey = '${{ secrets.CHANGE_NOW_API_KEY }}';" >> lib/.secrets.g.dart
|
||||||
echo "const wyreSecretKey = '${{ secrets.WYRE_SECRET_KEY }}';" >> lib/.secrets.g.dart
|
echo "const wyreSecretKey = '${{ secrets.WYRE_SECRET_KEY }}';" >> lib/.secrets.g.dart
|
||||||
echo "const wyreApiKey = '${{ secrets.WYRE_API_KEY }}';" >> lib/.secrets.g.dart
|
echo "const wyreApiKey = '${{ secrets.WYRE_API_KEY }}';" >> lib/.secrets.g.dart
|
||||||
echo "const wyreAccountId = '${{ secrets.WYRE_ACCOUNT_ID }}';" >> lib/.secrets.g.dart
|
echo "const wyreAccountId = '${{ secrets.WYRE_ACCOUNT_ID }}';" >> lib/.secrets.g.dart
|
||||||
|
@ -112,6 +113,7 @@ jobs:
|
||||||
echo "const ioniaClientId = '${{ secrets.IONIA_CLIENT_ID }}';" >> lib/.secrets.g.dart
|
echo "const ioniaClientId = '${{ secrets.IONIA_CLIENT_ID }}';" >> lib/.secrets.g.dart
|
||||||
echo "const twitterBearerToken = '${{ secrets.TWITTER_BEARER_TOKEN }}';" >> lib/.secrets.g.dart
|
echo "const twitterBearerToken = '${{ secrets.TWITTER_BEARER_TOKEN }}';" >> lib/.secrets.g.dart
|
||||||
echo "const trocadorApiKey = '${{ secrets.TROCADOR_API_KEY }}';" >> lib/.secrets.g.dart
|
echo "const trocadorApiKey = '${{ secrets.TROCADOR_API_KEY }}';" >> lib/.secrets.g.dart
|
||||||
|
echo "const trocadorMoneroApiKey = '${{ secrets.TROCADOR_API_KEY }}';" >> lib/.secrets.g.dart
|
||||||
echo "const trocadorExchangeMarkup = '${{ secrets.TROCADOR_EXCHANGE_MARKUP }}';" >> lib/.secrets.g.dart
|
echo "const trocadorExchangeMarkup = '${{ secrets.TROCADOR_EXCHANGE_MARKUP }}';" >> lib/.secrets.g.dart
|
||||||
echo "const anonPayReferralCode = '${{ secrets.ANON_PAY_REFERRAL_CODE }}';" >> lib/.secrets.g.dart
|
echo "const anonPayReferralCode = '${{ secrets.ANON_PAY_REFERRAL_CODE }}';" >> lib/.secrets.g.dart
|
||||||
echo "const fiatApiKey = '${{ secrets.FIAT_API_KEY }}';" >> lib/.secrets.g.dart
|
echo "const fiatApiKey = '${{ secrets.FIAT_API_KEY }}';" >> lib/.secrets.g.dart
|
||||||
|
@ -123,7 +125,8 @@ jobs:
|
||||||
echo "const moralisApiKey = '${{ secrets.MORALIS_API_KEY }}';" >> cw_evm/lib/.secrets.g.dart
|
echo "const moralisApiKey = '${{ secrets.MORALIS_API_KEY }}';" >> cw_evm/lib/.secrets.g.dart
|
||||||
echo "const nowNodesApiKey = '${{ secrets.EVM_NOWNODES_API_KEY }}';" >> cw_evm/lib/.secrets.g.dart
|
echo "const nowNodesApiKey = '${{ secrets.EVM_NOWNODES_API_KEY }}';" >> cw_evm/lib/.secrets.g.dart
|
||||||
echo "const chatwootWebsiteToken = '${{ secrets.CHATWOOT_WEBSITE_TOKEN }}';" >> lib/.secrets.g.dart
|
echo "const chatwootWebsiteToken = '${{ secrets.CHATWOOT_WEBSITE_TOKEN }}';" >> lib/.secrets.g.dart
|
||||||
echo "const exolixApiKey = '${{ secrets.EXOLIX_API_KEY }}';" >> lib/.secrets.g.dart
|
echo "const exolixCakeWalletApiKey = '${{ secrets.EXOLIX_API_KEY }}';" >> lib/.secrets.g.dart
|
||||||
|
echo "const exolixMoneroApiKey = '${{ secrets.EXOLIX_API_KEY }}';" >> lib/.secrets.g.dart
|
||||||
echo "const robinhoodApplicationId = '${{ secrets.ROBINHOOD_APPLICATION_ID }}';" >> lib/.secrets.g.dart
|
echo "const robinhoodApplicationId = '${{ secrets.ROBINHOOD_APPLICATION_ID }}';" >> lib/.secrets.g.dart
|
||||||
echo "const exchangeHelperApiKey = '${{ secrets.ROBINHOOD_CID_CLIENT_SECRET }}';" >> lib/.secrets.g.dart
|
echo "const exchangeHelperApiKey = '${{ secrets.ROBINHOOD_CID_CLIENT_SECRET }}';" >> lib/.secrets.g.dart
|
||||||
echo "const walletConnectProjectId = '${{ secrets.WALLET_CONNECT_PROJECT_ID }}';" >> lib/.secrets.g.dart
|
echo "const walletConnectProjectId = '${{ secrets.WALLET_CONNECT_PROJECT_ID }}';" >> lib/.secrets.g.dart
|
||||||
|
@ -243,8 +246,20 @@ jobs:
|
||||||
./build_mwebd.sh --dont-install
|
./build_mwebd.sh --dont-install
|
||||||
popd
|
popd
|
||||||
|
|
||||||
|
- name: Build Decred
|
||||||
|
run: |
|
||||||
|
set -x -e
|
||||||
|
pushd scripts/android
|
||||||
|
./build_decred.sh
|
||||||
|
popd
|
||||||
|
|
||||||
- name: Build generated code
|
- name: Build generated code
|
||||||
run: |
|
run: |
|
||||||
|
flutter --version
|
||||||
|
flutter clean
|
||||||
|
rm -rf .dart_tool
|
||||||
|
rm pubspec.lock
|
||||||
|
flutter pub get
|
||||||
./model_generator.sh async
|
./model_generator.sh async
|
||||||
|
|
||||||
- name: Generate key properties
|
- name: Generate key properties
|
||||||
|
@ -266,7 +281,7 @@ jobs:
|
||||||
|
|
||||||
- name: Build
|
- name: Build
|
||||||
run: |
|
run: |
|
||||||
flutter build apk --release --split-per-abi
|
flutter build apk --dart-define=hasDevOptions=true --release --split-per-abi
|
||||||
|
|
||||||
- name: Rename apk file
|
- name: Rename apk file
|
||||||
run: |
|
run: |
|
||||||
|
|
19
.github/workflows/pr_test_build_linux.yml
vendored
|
@ -9,7 +9,7 @@ jobs:
|
||||||
PR_test_build:
|
PR_test_build:
|
||||||
runs-on: linux-amd64
|
runs-on: linux-amd64
|
||||||
container:
|
container:
|
||||||
image: ghcr.io/cake-tech/cake_wallet:main-linux
|
image: ghcr.io/cake-tech/cake_wallet:debian12-flutter3.27.0-go1.24.1-ruststablenightly
|
||||||
env:
|
env:
|
||||||
STORE_PASS: test@cake_wallet
|
STORE_PASS: test@cake_wallet
|
||||||
KEY_PASS: test@cake_wallet
|
KEY_PASS: test@cake_wallet
|
||||||
|
@ -22,9 +22,6 @@ jobs:
|
||||||
- /opt/cw_cache_linux/root/.pub-cache/:/root/.pub-cache
|
- /opt/cw_cache_linux/root/.pub-cache/:/root/.pub-cache
|
||||||
- /opt/cw_cache_linux/root/go/pkg:/root/go/pkg
|
- /opt/cw_cache_linux/root/go/pkg:/root/go/pkg
|
||||||
- /opt/cw_cache_linux/opt/generic_cache:/opt/generic_cache
|
- /opt/cw_cache_linux/opt/generic_cache:/opt/generic_cache
|
||||||
strategy:
|
|
||||||
matrix:
|
|
||||||
api-level: [29]
|
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Fix github actions messing up $HOME...
|
- name: Fix github actions messing up $HOME...
|
||||||
|
@ -32,6 +29,7 @@ jobs:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
ref: ${{ github.event.pull_request.head.sha }}
|
ref: ${{ github.event.pull_request.head.sha }}
|
||||||
|
repository: ${{ github.event.pull_request.head.repo.full_name }}
|
||||||
- name: configure git
|
- name: configure git
|
||||||
run: |
|
run: |
|
||||||
git config --global --add safe.directory '*'
|
git config --global --add safe.directory '*'
|
||||||
|
@ -93,8 +91,8 @@ jobs:
|
||||||
else
|
else
|
||||||
echo "const backupKeychainSalt = '${{ secrets.BACKUP_KEY_CHAIN_SALT }}';" >> lib/.secrets.g.dart
|
echo "const backupKeychainSalt = '${{ secrets.BACKUP_KEY_CHAIN_SALT }}';" >> lib/.secrets.g.dart
|
||||||
fi
|
fi
|
||||||
echo "const changeNowApiKey = '${{ secrets.CHANGE_NOW_API_KEY }}';" >> lib/.secrets.g.dart
|
echo "const changeNowCakeWalletApiKey = '${{ secrets.CHANGE_NOW_API_KEY }}';" >> lib/.secrets.g.dart
|
||||||
echo "const changeNowApiKeyDesktop = '${{ secrets.CHANGE_NOW_API_KEY_DESKTOP }}';" >> lib/.secrets.g.dart
|
echo "const changeNowMoneroApiKey = '${{ secrets.CHANGE_NOW_API_KEY }}';" >> lib/.secrets.g.dart
|
||||||
echo "const wyreSecretKey = '${{ secrets.WYRE_SECRET_KEY }}';" >> lib/.secrets.g.dart
|
echo "const wyreSecretKey = '${{ secrets.WYRE_SECRET_KEY }}';" >> lib/.secrets.g.dart
|
||||||
echo "const wyreApiKey = '${{ secrets.WYRE_API_KEY }}';" >> lib/.secrets.g.dart
|
echo "const wyreApiKey = '${{ secrets.WYRE_API_KEY }}';" >> lib/.secrets.g.dart
|
||||||
echo "const wyreAccountId = '${{ secrets.WYRE_ACCOUNT_ID }}';" >> lib/.secrets.g.dart
|
echo "const wyreAccountId = '${{ secrets.WYRE_ACCOUNT_ID }}';" >> lib/.secrets.g.dart
|
||||||
|
@ -108,6 +106,7 @@ jobs:
|
||||||
echo "const ioniaClientId = '${{ secrets.IONIA_CLIENT_ID }}';" >> lib/.secrets.g.dart
|
echo "const ioniaClientId = '${{ secrets.IONIA_CLIENT_ID }}';" >> lib/.secrets.g.dart
|
||||||
echo "const twitterBearerToken = '${{ secrets.TWITTER_BEARER_TOKEN }}';" >> lib/.secrets.g.dart
|
echo "const twitterBearerToken = '${{ secrets.TWITTER_BEARER_TOKEN }}';" >> lib/.secrets.g.dart
|
||||||
echo "const trocadorApiKey = '${{ secrets.TROCADOR_API_KEY }}';" >> lib/.secrets.g.dart
|
echo "const trocadorApiKey = '${{ secrets.TROCADOR_API_KEY }}';" >> lib/.secrets.g.dart
|
||||||
|
echo "const trocadorMoneroApiKey = '${{ secrets.TROCADOR_API_KEY }}';" >> lib/.secrets.g.dart
|
||||||
echo "const trocadorExchangeMarkup = '${{ secrets.TROCADOR_EXCHANGE_MARKUP }}';" >> lib/.secrets.g.dart
|
echo "const trocadorExchangeMarkup = '${{ secrets.TROCADOR_EXCHANGE_MARKUP }}';" >> lib/.secrets.g.dart
|
||||||
echo "const anonPayReferralCode = '${{ secrets.ANON_PAY_REFERRAL_CODE }}';" >> lib/.secrets.g.dart
|
echo "const anonPayReferralCode = '${{ secrets.ANON_PAY_REFERRAL_CODE }}';" >> lib/.secrets.g.dart
|
||||||
echo "const fiatApiKey = '${{ secrets.FIAT_API_KEY }}';" >> lib/.secrets.g.dart
|
echo "const fiatApiKey = '${{ secrets.FIAT_API_KEY }}';" >> lib/.secrets.g.dart
|
||||||
|
@ -119,7 +118,8 @@ jobs:
|
||||||
echo "const moralisApiKey = '${{ secrets.MORALIS_API_KEY }}';" >> cw_evm/lib/.secrets.g.dart
|
echo "const moralisApiKey = '${{ secrets.MORALIS_API_KEY }}';" >> cw_evm/lib/.secrets.g.dart
|
||||||
echo "const nowNodesApiKey = '${{ secrets.EVM_NOWNODES_API_KEY }}';" >> cw_evm/lib/.secrets.g.dart
|
echo "const nowNodesApiKey = '${{ secrets.EVM_NOWNODES_API_KEY }}';" >> cw_evm/lib/.secrets.g.dart
|
||||||
echo "const chatwootWebsiteToken = '${{ secrets.CHATWOOT_WEBSITE_TOKEN }}';" >> lib/.secrets.g.dart
|
echo "const chatwootWebsiteToken = '${{ secrets.CHATWOOT_WEBSITE_TOKEN }}';" >> lib/.secrets.g.dart
|
||||||
echo "const exolixApiKey = '${{ secrets.EXOLIX_API_KEY }}';" >> lib/.secrets.g.dart
|
echo "const exolixCakeWalletApiKey = '${{ secrets.EXOLIX_API_KEY }}';" >> lib/.secrets.g.dart
|
||||||
|
echo "const exolixMoneroApiKey = '${{ secrets.EXOLIX_API_KEY }}';" >> lib/.secrets.g.dart
|
||||||
echo "const robinhoodApplicationId = '${{ secrets.ROBINHOOD_APPLICATION_ID }}';" >> lib/.secrets.g.dart
|
echo "const robinhoodApplicationId = '${{ secrets.ROBINHOOD_APPLICATION_ID }}';" >> lib/.secrets.g.dart
|
||||||
echo "const exchangeHelperApiKey = '${{ secrets.ROBINHOOD_CID_CLIENT_SECRET }}';" >> lib/.secrets.g.dart
|
echo "const exchangeHelperApiKey = '${{ secrets.ROBINHOOD_CID_CLIENT_SECRET }}';" >> lib/.secrets.g.dart
|
||||||
echo "const walletConnectProjectId = '${{ secrets.WALLET_CONNECT_PROJECT_ID }}';" >> lib/.secrets.g.dart
|
echo "const walletConnectProjectId = '${{ secrets.WALLET_CONNECT_PROJECT_ID }}';" >> lib/.secrets.g.dart
|
||||||
|
@ -227,7 +227,7 @@ jobs:
|
||||||
|
|
||||||
- name: Build linux
|
- name: Build linux
|
||||||
run: |
|
run: |
|
||||||
flutter build linux --release
|
flutter build linux --dart-define=hasDevOptions=true --release
|
||||||
|
|
||||||
- name: Compress release
|
- name: Compress release
|
||||||
run: |
|
run: |
|
||||||
|
@ -285,6 +285,9 @@ jobs:
|
||||||
xmessage -timeout 30 "restore_wallet_through_seeds_flow_test" &
|
xmessage -timeout 30 "restore_wallet_through_seeds_flow_test" &
|
||||||
rm -rf ~/.local/share/com.example.cake_wallet/ ~/Documents/cake_wallet/ ~/cake_wallet
|
rm -rf ~/.local/share/com.example.cake_wallet/ ~/Documents/cake_wallet/ ~/cake_wallet
|
||||||
exec timeout --signal=SIGKILL 900 flutter drive --driver=test_driver/integration_test.dart --target=integration_test/test_suites/restore_wallet_through_seeds_flow_test.dart
|
exec timeout --signal=SIGKILL 900 flutter drive --driver=test_driver/integration_test.dart --target=integration_test/test_suites/restore_wallet_through_seeds_flow_test.dart
|
||||||
|
- name: Test [cw_monero]
|
||||||
|
timeout-minutes: 2
|
||||||
|
run: cd cw_monero && flutter test
|
||||||
- name: Stop screen recording, encrypt and upload
|
- name: Stop screen recording, encrypt and upload
|
||||||
if: always()
|
if: always()
|
||||||
run: |
|
run: |
|
||||||
|
|
51
.gitignore
vendored
|
@ -9,6 +9,7 @@
|
||||||
.history
|
.history
|
||||||
.svn/
|
.svn/
|
||||||
.fvm/
|
.fvm/
|
||||||
|
.fvmrc
|
||||||
|
|
||||||
# IntelliJ related
|
# IntelliJ related
|
||||||
*.iml
|
*.iml
|
||||||
|
@ -138,10 +139,30 @@ lib/solana/solana.dart
|
||||||
lib/tron/tron.dart
|
lib/tron/tron.dart
|
||||||
lib/wownero/wownero.dart
|
lib/wownero/wownero.dart
|
||||||
lib/zano/zano.dart
|
lib/zano/zano.dart
|
||||||
|
lib/decred/decred.dart
|
||||||
|
|
||||||
|
ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon@2x.png
|
||||||
|
ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon@2x~ipad.png
|
||||||
|
ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon@3x.png
|
||||||
|
ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon-20@2x.png
|
||||||
|
ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon-20@2x~ipad.png
|
||||||
|
ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon-20@3x.png
|
||||||
|
ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon-20~ipad.png
|
||||||
|
ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon-29.png
|
||||||
|
ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon-29@2x.png
|
||||||
|
ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon-29@2x~ipad.png
|
||||||
|
ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon-29@3x.png
|
||||||
|
ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon-29~ipad.png
|
||||||
|
ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon-40@2x.png
|
||||||
|
ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon-40@2x~ipad.png
|
||||||
|
ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon-40@3x.png
|
||||||
|
ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon-40~ipad.png
|
||||||
|
ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon-60@2x~car.png
|
||||||
|
ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon-60@3x~car.png
|
||||||
|
ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon-83.5@2x~ipad.png
|
||||||
|
ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon~ios-marketing.png
|
||||||
|
ios/Runner/Assets.xcassets/AppIcon.appiconset/AppIcon~ipad.png
|
||||||
|
|
||||||
ios/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_180.png
|
|
||||||
ios/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_120.png
|
|
||||||
ios/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png
|
|
||||||
ios/Runner/Info.plist
|
ios/Runner/Info.plist
|
||||||
android/app/src/main/res/mipmap-*
|
android/app/src/main/res/mipmap-*
|
||||||
android/app/src/main/res/drawable/ic_launcher.png
|
android/app/src/main/res/drawable/ic_launcher.png
|
||||||
|
@ -171,6 +192,7 @@ macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png
|
||||||
macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png
|
macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png
|
||||||
macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png
|
macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png
|
||||||
macos/Runner/Configs/AppInfo.xcconfig
|
macos/Runner/Configs/AppInfo.xcconfig
|
||||||
|
macos/Runner.xcodeproj/project.pbxproj
|
||||||
|
|
||||||
|
|
||||||
integration_test/playground.dart
|
integration_test/playground.dart
|
||||||
|
@ -182,3 +204,26 @@ ios/MoneroWallet.framework/MoneroWallet
|
||||||
ios/WowneroWallet.framework/WowneroWallet
|
ios/WowneroWallet.framework/WowneroWallet
|
||||||
ios/ZanoWallet.framework/ZanoWallet
|
ios/ZanoWallet.framework/ZanoWallet
|
||||||
*_libwallet2_api_c.dylib
|
*_libwallet2_api_c.dylib
|
||||||
|
|
||||||
|
.flatpak-builder
|
||||||
|
cake_wallet.flatpak
|
||||||
|
flatpak-build/
|
||||||
|
|
||||||
|
# macOS
|
||||||
|
**/Flutter/ephemeral/
|
||||||
|
**/Pods/
|
||||||
|
**/macos/Flutter/GeneratedPluginRegistrant.swift
|
||||||
|
**/macos/Flutter/ephemeral
|
||||||
|
**/xcuserdata/
|
||||||
|
|
||||||
|
# Windows
|
||||||
|
**/windows/flutter/ephemeral/
|
||||||
|
**/windows/flutter/generated_plugin_registrant.cc
|
||||||
|
**/windows/flutter/generated_plugin_registrant.h
|
||||||
|
**/windows/flutter/generated_plugins.cmake
|
||||||
|
|
||||||
|
# Linux
|
||||||
|
**/linux/flutter/ephemeral/
|
||||||
|
**/linux/flutter/generated_plugin_registrant.cc
|
||||||
|
**/linux/flutter/generated_plugin_registrant.h
|
||||||
|
**/linux/flutter/generated_plugins.cmake
|
||||||
|
|
190
Dockerfile
Normal file
|
@ -0,0 +1,190 @@
|
||||||
|
# docker buildx build --push --pull --platform linux/amd64,linux/arm64 . -f Dockerfile -t ghcr.io/cake-tech/cake_wallet:debian12-flutter3.27.0-go1.24.1-ruststablenightly
|
||||||
|
|
||||||
|
# Heavily inspired by cirrusci images
|
||||||
|
# https://github.com/cirruslabs/docker-images-android/blob/master/sdk/tools/Dockerfile
|
||||||
|
# https://github.com/cirruslabs/docker-images-android/blob/master/sdk/34/Dockerfile
|
||||||
|
# https://github.com/cirruslabs/docker-images-android/blob/master/sdk/34-ndk/Dockerfile
|
||||||
|
# https://github.com/cirruslabs/docker-images-flutter/blob/master/sdk/Dockerfile
|
||||||
|
|
||||||
|
FROM docker.io/debian:12
|
||||||
|
|
||||||
|
LABEL org.opencontainers.image.source=https://github.com/cake-tech/cake_wallet
|
||||||
|
|
||||||
|
# Set necessary environment variables
|
||||||
|
# Set Go version to latest known-working version
|
||||||
|
ENV GOLANG_VERSION=1.24.1
|
||||||
|
|
||||||
|
# Pin Flutter version to latest known-working version
|
||||||
|
ENV FLUTTER_VERSION=3.27.0
|
||||||
|
|
||||||
|
# Pin Android Studio, platform, and build tools versions to latest known-working version
|
||||||
|
# Comes from https://developer.android.com/studio/#command-tools
|
||||||
|
ENV ANDROID_SDK_TOOLS_VERSION=13114758
|
||||||
|
# Comes from https://developer.android.com/studio/releases/build-tools
|
||||||
|
ENV ANDROID_PLATFORM_VERSION=35
|
||||||
|
ENV ANDROID_BUILD_TOOLS_VERSION=34.0.0
|
||||||
|
|
||||||
|
# If we ever need to migrate the home directory...
|
||||||
|
RUN sed -i 's|^root:[^:]*:[^:]*:[^:]*:[^:]*:/root:|root:x:0:0:root:/root:|' /etc/passwd
|
||||||
|
# mkdir -p /root && rm -rf /root && cp -a /root /root
|
||||||
|
ENV HOME=/root
|
||||||
|
ENV ANDROID_HOME=/opt/android-sdk-linux \
|
||||||
|
LANG=en_US.UTF-8 \
|
||||||
|
LC_ALL=en_US.UTF-8 \
|
||||||
|
LANGUAGE=en_US:en
|
||||||
|
|
||||||
|
# Set Android SDK paths
|
||||||
|
ENV ANDROID_SDK_ROOT=$ANDROID_HOME \
|
||||||
|
PATH=${PATH}:${ANDROID_HOME}/cmdline-tools/latest/bin:${ANDROID_HOME}/platform-tools:${ANDROID_HOME}/emulator
|
||||||
|
|
||||||
|
# Upgrade base image
|
||||||
|
RUN apt-get update \
|
||||||
|
&& apt-get upgrade -y
|
||||||
|
|
||||||
|
# Install all build dependencies
|
||||||
|
RUN set -o xtrace \
|
||||||
|
&& cd /opt \
|
||||||
|
&& apt-get install -y --no-install-recommends --no-install-suggests \
|
||||||
|
# Core dependencies
|
||||||
|
bc build-essential curl default-jdk git jq lcov libglu1-mesa libpulse0 libsqlite3-dev libstdc++6 locales openssh-client ruby-bundler ruby-full software-properties-common sudo unzip wget zip \
|
||||||
|
# for x86 emulators
|
||||||
|
libatk-bridge2.0-0 libgdk-pixbuf2.0-0 libgtk-3-0 libnspr4 libnss3-dev libsqlite3-dev libxtst6 libxss1 lftp sqlite3 xxd \
|
||||||
|
# Linux desktop dependencies
|
||||||
|
clang cmake libgtk-3-dev ninja-build pkg-config \
|
||||||
|
# monero_c dependencies
|
||||||
|
autoconf automake build-essential ccache gperf libtool llvm \
|
||||||
|
# extra stuff for KVM
|
||||||
|
bridge-utils libvirt-clients libvirt-daemon-system qemu-kvm udev \
|
||||||
|
# Linux test dependencies
|
||||||
|
ffmpeg network-manager x11-utils xvfb psmisc \
|
||||||
|
# aarch64-linux-gnu dependencies
|
||||||
|
g++-aarch64-linux-gnu gcc-aarch64-linux-gnu \
|
||||||
|
# x86_64-linux-gnu dependencies
|
||||||
|
g++-x86-64-linux-gnu gcc-x86-64-linux-gnu \
|
||||||
|
# flatpak dependencies
|
||||||
|
flatpak flatpak-builder binutils elfutils patch unzip xz-utils zstd \
|
||||||
|
&& apt clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* \
|
||||||
|
&& sh -c 'echo "en_US.UTF-8 UTF-8" > /etc/locale.gen' \
|
||||||
|
&& locale-gen \
|
||||||
|
&& update-locale LANG=en_US.UTF-8
|
||||||
|
|
||||||
|
ENV FLATPAK_RUNTIME_VERSION=24.08
|
||||||
|
RUN flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo \
|
||||||
|
&& flatpak install -y flathub org.freedesktop.Platform//${FLATPAK_RUNTIME_VERSION} \
|
||||||
|
&& flatpak install -y flathub org.freedesktop.Sdk//${FLATPAK_RUNTIME_VERSION}
|
||||||
|
|
||||||
|
# Install nodejs for Github Actions
|
||||||
|
RUN curl -fsSL https://deb.nodesource.com/setup_23.x | bash - && \
|
||||||
|
apt-get install -y --no-install-recommends nodejs && \
|
||||||
|
apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
|
||||||
|
|
||||||
|
# Install Go
|
||||||
|
ENV PATH=${PATH}:/usr/local/go/bin:${HOME}/go/bin
|
||||||
|
ENV GOROOT=/usr/local/go
|
||||||
|
ENV GOPATH=${HOME}/go
|
||||||
|
RUN ARCH=$(uname -m) && \
|
||||||
|
if [ "$ARCH" = "x86_64" ]; then \
|
||||||
|
wget https://go.dev/dl/go${GOLANG_VERSION}.linux-amd64.tar.gz -O go.tar.gz; \
|
||||||
|
elif [ "$ARCH" = "aarch64" ]; then \
|
||||||
|
wget https://go.dev/dl/go${GOLANG_VERSION}.linux-arm64.tar.gz -O go.tar.gz; \
|
||||||
|
else \
|
||||||
|
echo "Unsupported architecture: $ARCH"; exit 1; \
|
||||||
|
fi && \
|
||||||
|
rm -rf /usr/local/go && \
|
||||||
|
tar -C /usr/local -xzf go.tar.gz && \
|
||||||
|
rm go.tar.gz && \
|
||||||
|
go install golang.org/x/mobile/cmd/gomobile@latest && \
|
||||||
|
gomobile init
|
||||||
|
|
||||||
|
RUN git config --global user.email "czarek@cakewallet.com" \
|
||||||
|
&& git config --global user.name "CakeWallet CI"
|
||||||
|
|
||||||
|
|
||||||
|
# Install Android SDK commandline tools and emulator
|
||||||
|
RUN ARCH=$(uname -m) && \
|
||||||
|
if [ "$ARCH" != "x86_64" ]; then exit 0; fi \
|
||||||
|
&& wget -q https://dl.google.com/android/repository/commandlinetools-linux-${ANDROID_SDK_TOOLS_VERSION}_latest.zip -O android-sdk-tools.zip \
|
||||||
|
&& mkdir -p ${ANDROID_HOME}/cmdline-tools/ \
|
||||||
|
&& unzip -q android-sdk-tools.zip -d ${ANDROID_HOME}/cmdline-tools/ \
|
||||||
|
&& mv ${ANDROID_HOME}/cmdline-tools/cmdline-tools ${ANDROID_HOME}/cmdline-tools/latest \
|
||||||
|
&& chown -R root:root $ANDROID_HOME \
|
||||||
|
&& rm android-sdk-tools.zip \
|
||||||
|
&& echo '%sudo ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers \
|
||||||
|
&& yes | sdkmanager --licenses \
|
||||||
|
&& wget -O /usr/bin/android-wait-for-emulator https://raw.githubusercontent.com/travis-ci/travis-cookbooks/master/community-cookbooks/android-sdk/files/default/android-wait-for-emulator \
|
||||||
|
&& chmod +x /usr/bin/android-wait-for-emulator \
|
||||||
|
&& sdkmanager platform-tools \
|
||||||
|
&& mkdir -p ${HOME}/.android \
|
||||||
|
&& touch ${HOME}/.android/repositories.cfg \
|
||||||
|
|
||||||
|
|
||||||
|
# Handle emulator not being available on linux/arm64 (https://issuetracker.google.com/issues/227219818)
|
||||||
|
RUN ARCH=$(uname -m) && \
|
||||||
|
if [ "$ARCH" != "x86_64" ]; then exit 0; fi \
|
||||||
|
&& sdkmanager emulator
|
||||||
|
|
||||||
|
# Pre-install extra Android SDK dependencies in order to not have to download them for each build
|
||||||
|
RUN ARCH=$(uname -m) && \
|
||||||
|
if [ "$ARCH" != "x86_64" ]; then exit 0; fi \
|
||||||
|
&& yes | sdkmanager \
|
||||||
|
"platforms;android-$ANDROID_PLATFORM_VERSION" \
|
||||||
|
"build-tools;$ANDROID_BUILD_TOOLS_VERSION" \
|
||||||
|
"platforms;android-33" \
|
||||||
|
"platforms;android-34" \
|
||||||
|
"platforms;android-35" \
|
||||||
|
"build-tools;33.0.2" \
|
||||||
|
"build-tools;33.0.1" \
|
||||||
|
"build-tools;33.0.0" \
|
||||||
|
"build-tools;35.0.0"
|
||||||
|
|
||||||
|
# Install extra NDK dependency for sp_scanner
|
||||||
|
ENV ANDROID_NDK_VERSION=27.2.12479018
|
||||||
|
RUN ARCH=$(uname -m) && \
|
||||||
|
if [ "$ARCH" != "x86_64" ]; then exit 0; fi \
|
||||||
|
&& yes | sdkmanager "ndk;$ANDROID_NDK_VERSION" \
|
||||||
|
"ndk;27.0.12077973"
|
||||||
|
|
||||||
|
# Install dependencies for tests
|
||||||
|
# Comes from https://github.com/ReactiveCircus/android-emulator-runner
|
||||||
|
RUN ARCH=$(uname -m) && \
|
||||||
|
if [ "$ARCH" != "x86_64" ]; then exit 0; fi \
|
||||||
|
&& yes | sdkmanager \
|
||||||
|
"system-images;android-29;default;x86_64" \
|
||||||
|
"system-images;android-31;default;x86_64" \
|
||||||
|
"platforms;android-29" \
|
||||||
|
"platforms;android-31"
|
||||||
|
|
||||||
|
# Fake the KVM status so the Android emulator doesn't complain (that much)
|
||||||
|
RUN (addgroup kvm || true) && \
|
||||||
|
adduser root kvm && \
|
||||||
|
mkdir -p /etc/udev/rules.d/ && \
|
||||||
|
echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | tee /etc/udev/rules.d/99-kvm4all.rules
|
||||||
|
|
||||||
|
# Install rustup, rust toolchains, and cargo-ndk
|
||||||
|
ENV PATH=${HOME}/.cargo/bin:${PATH}
|
||||||
|
RUN curl https://sh.rustup.rs -sSf | bash -s -- -y && \
|
||||||
|
cargo install cargo-ndk && \
|
||||||
|
for toolchain in stable nightly; \
|
||||||
|
do \
|
||||||
|
for target in aarch64-linux-android armv7-linux-androideabi i686-linux-android x86_64-linux-android x86_64-unknown-linux-gnu aarch64-unknown-linux-gnu aarch64-unknown-linux-gnu; \
|
||||||
|
do \
|
||||||
|
rustup target add --toolchain $toolchain $target; \
|
||||||
|
done \
|
||||||
|
done
|
||||||
|
|
||||||
|
# Download and install Flutter
|
||||||
|
ENV HOME=${HOME}
|
||||||
|
ENV FLUTTER_HOME=${HOME}/sdks/flutter/${FLUTTER_VERSION}
|
||||||
|
ENV FLUTTER_ROOT=$FLUTTER_HOME
|
||||||
|
ENV PATH=${PATH}:${FLUTTER_HOME}/bin:${FLUTTER_HOME}/bin/cache/dart-sdk/bin
|
||||||
|
|
||||||
|
RUN git clone --branch ${FLUTTER_VERSION} https://github.com/flutter/flutter.git ${FLUTTER_HOME} && \
|
||||||
|
cd ${FLUTTER_HOME} && \
|
||||||
|
git fetch -a
|
||||||
|
|
||||||
|
RUN yes | flutter doctor --android-licenses \
|
||||||
|
&& flutter doctor \
|
||||||
|
&& chown -R root:root ${FLUTTER_HOME}
|
||||||
|
|
||||||
|
# Download and pre-cache necessary Flutter artifacts to speed up builds
|
||||||
|
RUN flutter precache
|
11
README.md
|
@ -26,10 +26,13 @@ Cake Wallet includes support for several cryptocurrencies, including:
|
||||||
* Ethereum (ETH)
|
* Ethereum (ETH)
|
||||||
* Litecoin (LTC)
|
* Litecoin (LTC)
|
||||||
* Bitcoin Cash (BCH)
|
* Bitcoin Cash (BCH)
|
||||||
* Polygon (Pol)
|
* Polygon (POL)
|
||||||
* Solana (SOL)
|
* Solana (SOL)
|
||||||
|
* Tron (TRX)
|
||||||
* Nano (XNO)
|
* Nano (XNO)
|
||||||
* Haven (XHV)
|
* Zano (ZANO)
|
||||||
|
* Decred (DCR)
|
||||||
|
* Wownero (WOW)
|
||||||
|
|
||||||
## Features
|
## Features
|
||||||
|
|
||||||
|
@ -81,10 +84,6 @@ Cake Wallet includes support for several cryptocurrencies, including:
|
||||||
* Automatically generate new addresses
|
* Automatically generate new addresses
|
||||||
* Specify multiple recipients for batch sending
|
* Specify multiple recipients for batch sending
|
||||||
|
|
||||||
### Haven Specific Features
|
|
||||||
|
|
||||||
* Send, receive, and store XHV and all xAssets like xUSD, xEUR, xAG, etc.
|
|
||||||
|
|
||||||
# Monero.com by Cake Wallet for Android and iOS
|
# Monero.com by Cake Wallet for Android and iOS
|
||||||
|
|
||||||
## Open Source Monero-Only Wallet
|
## Open Source Monero-Only Wallet
|
||||||
|
|
|
@ -1,3 +1,9 @@
|
||||||
|
plugins {
|
||||||
|
id "com.android.application"
|
||||||
|
id "kotlin-android"
|
||||||
|
id "dev.flutter.flutter-gradle-plugin"
|
||||||
|
}
|
||||||
|
|
||||||
def localProperties = new Properties()
|
def localProperties = new Properties()
|
||||||
def localPropertiesFile = rootProject.file('local.properties')
|
def localPropertiesFile = rootProject.file('local.properties')
|
||||||
if (localPropertiesFile.exists()) {
|
if (localPropertiesFile.exists()) {
|
||||||
|
@ -6,11 +12,6 @@ if (localPropertiesFile.exists()) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
def flutterRoot = localProperties.getProperty('flutter.sdk')
|
|
||||||
if (flutterRoot == null) {
|
|
||||||
throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
|
|
||||||
}
|
|
||||||
|
|
||||||
def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
|
def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
|
||||||
if (flutterVersionCode == null) {
|
if (flutterVersionCode == null) {
|
||||||
flutterVersionCode = '1'
|
flutterVersionCode = '1'
|
||||||
|
@ -21,9 +22,6 @@ if (flutterVersionName == null) {
|
||||||
flutterVersionName = '1.0'
|
flutterVersionName = '1.0'
|
||||||
}
|
}
|
||||||
|
|
||||||
apply plugin: 'com.android.application'
|
|
||||||
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
|
|
||||||
|
|
||||||
def keystoreProperties = new Properties()
|
def keystoreProperties = new Properties()
|
||||||
def keystorePropertiesFile = rootProject.file('key.properties')
|
def keystorePropertiesFile = rootProject.file('key.properties')
|
||||||
if (keystorePropertiesFile.exists()) {
|
if (keystorePropertiesFile.exists()) {
|
||||||
|
@ -37,13 +35,21 @@ if (appPropertiesFile.exists()) {
|
||||||
}
|
}
|
||||||
|
|
||||||
android {
|
android {
|
||||||
compileSdkVersion 34
|
compileSdkVersion 35
|
||||||
buildToolsVersion "34.0.0"
|
buildToolsVersion "35.0.0"
|
||||||
|
|
||||||
lintOptions {
|
lintOptions {
|
||||||
disable 'InvalidPackage'
|
disable 'InvalidPackage'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compileOptions {
|
||||||
|
coreLibraryDesugaringEnabled true
|
||||||
|
|
||||||
|
sourceCompatibility JavaVersion.VERSION_17
|
||||||
|
targetCompatibility JavaVersion.VERSION_17
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
namespace "com.cakewallet.cake_wallet"
|
namespace "com.cakewallet.cake_wallet"
|
||||||
|
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
|
@ -75,12 +81,11 @@ android {
|
||||||
buildTypes {
|
buildTypes {
|
||||||
release {
|
release {
|
||||||
signingConfig signingConfigs.release
|
signingConfig signingConfigs.release
|
||||||
|
|
||||||
shrinkResources false
|
|
||||||
minifyEnabled false
|
|
||||||
|
|
||||||
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
|
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
|
||||||
}
|
}
|
||||||
|
debug {
|
||||||
|
signingConfig signingConfigs.release
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ndkVersion "27.0.12077973"
|
ndkVersion "27.0.12077973"
|
||||||
|
@ -94,6 +99,7 @@ dependencies {
|
||||||
testImplementation 'junit:junit:4.12'
|
testImplementation 'junit:junit:4.12'
|
||||||
androidTestImplementation 'androidx.test:runner:1.3.0'
|
androidTestImplementation 'androidx.test:runner:1.3.0'
|
||||||
androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
|
androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
|
||||||
|
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.1.5'
|
||||||
}
|
}
|
||||||
configurations {
|
configurations {
|
||||||
implementation.exclude module:'proto-google-common-protos'
|
implementation.exclude module:'proto-google-common-protos'
|
||||||
|
|
94
android/app/proguard-rules.pro
vendored
|
@ -6,3 +6,97 @@
|
||||||
-keep class io.flutter.** { *; }
|
-keep class io.flutter.** { *; }
|
||||||
-keep class io.flutter.plugins.** { *; }
|
-keep class io.flutter.plugins.** { *; }
|
||||||
-dontwarn io.flutter.embedding.**
|
-dontwarn io.flutter.embedding.**
|
||||||
|
-dontwarn com.google.android.play.core.splitcompat.SplitCompatApplication
|
||||||
|
|
||||||
|
# start reown
|
||||||
|
-dontwarn com.github.luben.zstd.BufferPool
|
||||||
|
-dontwarn com.github.luben.zstd.ZstdInputStream
|
||||||
|
-dontwarn com.github.luben.zstd.ZstdOutputStream
|
||||||
|
-dontwarn com.google.api.client.http.GenericUrl
|
||||||
|
-dontwarn com.google.api.client.http.HttpHeaders
|
||||||
|
-dontwarn com.google.api.client.http.HttpRequest
|
||||||
|
-dontwarn com.google.api.client.http.HttpRequestFactory
|
||||||
|
-dontwarn com.google.api.client.http.HttpResponse
|
||||||
|
-dontwarn com.google.api.client.http.HttpTransport
|
||||||
|
-dontwarn com.google.api.client.http.javanet.NetHttpTransport$Builder
|
||||||
|
-dontwarn com.google.api.client.http.javanet.NetHttpTransport
|
||||||
|
-dontwarn java.awt.Color
|
||||||
|
-dontwarn java.awt.Dimension
|
||||||
|
-dontwarn java.awt.Graphics2D
|
||||||
|
-dontwarn java.awt.Graphics
|
||||||
|
-dontwarn java.awt.Image
|
||||||
|
-dontwarn java.awt.Point
|
||||||
|
-dontwarn java.awt.Polygon
|
||||||
|
-dontwarn java.awt.Shape
|
||||||
|
-dontwarn java.awt.color.ColorSpace
|
||||||
|
-dontwarn java.awt.geom.AffineTransform
|
||||||
|
-dontwarn java.awt.image.BufferedImage
|
||||||
|
-dontwarn java.awt.image.ColorModel
|
||||||
|
-dontwarn java.awt.image.ComponentColorModel
|
||||||
|
-dontwarn java.awt.image.ComponentSampleModel
|
||||||
|
-dontwarn java.awt.image.DataBuffer
|
||||||
|
-dontwarn java.awt.image.DataBufferByte
|
||||||
|
-dontwarn java.awt.image.DataBufferInt
|
||||||
|
-dontwarn java.awt.image.DataBufferUShort
|
||||||
|
-dontwarn java.awt.image.ImageObserver
|
||||||
|
-dontwarn java.awt.image.MultiPixelPackedSampleModel
|
||||||
|
-dontwarn java.awt.image.Raster
|
||||||
|
-dontwarn java.awt.image.RenderedImage
|
||||||
|
-dontwarn java.awt.image.SampleModel
|
||||||
|
-dontwarn java.awt.image.SinglePixelPackedSampleModel
|
||||||
|
-dontwarn java.awt.image.WritableRaster
|
||||||
|
-dontwarn java.beans.BeanInfo
|
||||||
|
-dontwarn java.beans.FeatureDescriptor
|
||||||
|
-dontwarn java.beans.IntrospectionException
|
||||||
|
-dontwarn java.beans.Introspector
|
||||||
|
-dontwarn java.beans.PropertyDescriptor
|
||||||
|
-dontwarn java.lang.reflect.InaccessibleObjectException
|
||||||
|
-dontwarn javax.imageio.IIOImage
|
||||||
|
-dontwarn javax.imageio.ImageIO
|
||||||
|
-dontwarn javax.imageio.ImageWriteParam
|
||||||
|
-dontwarn javax.imageio.ImageWriter
|
||||||
|
-dontwarn javax.imageio.metadata.IIOMetadata
|
||||||
|
-dontwarn javax.imageio.stream.ImageOutputStream
|
||||||
|
-dontwarn javax.swing.JComponent
|
||||||
|
-dontwarn javax.swing.JFileChooser
|
||||||
|
-dontwarn javax.swing.JFrame
|
||||||
|
-dontwarn javax.swing.JPanel
|
||||||
|
-dontwarn javax.swing.ProgressMonitor
|
||||||
|
-dontwarn javax.swing.SwingUtilities
|
||||||
|
-dontwarn org.brotli.dec.BrotliInputStream
|
||||||
|
-dontwarn org.joda.time.Instant
|
||||||
|
-dontwarn org.objectweb.asm.AnnotationVisitor
|
||||||
|
-dontwarn org.objectweb.asm.Attribute
|
||||||
|
-dontwarn org.objectweb.asm.ClassReader
|
||||||
|
-dontwarn org.objectweb.asm.ClassVisitor
|
||||||
|
-dontwarn org.objectweb.asm.FieldVisitor
|
||||||
|
-dontwarn org.objectweb.asm.Label
|
||||||
|
-dontwarn org.objectweb.asm.MethodVisitor
|
||||||
|
-dontwarn org.objectweb.asm.Type
|
||||||
|
-dontwarn org.tukaani.xz.ARMOptions
|
||||||
|
-dontwarn org.tukaani.xz.ARMThumbOptions
|
||||||
|
-dontwarn org.tukaani.xz.DeltaOptions
|
||||||
|
-dontwarn org.tukaani.xz.FilterOptions
|
||||||
|
-dontwarn org.tukaani.xz.FinishableOutputStream
|
||||||
|
-dontwarn org.tukaani.xz.FinishableWrapperOutputStream
|
||||||
|
-dontwarn org.tukaani.xz.IA64Options
|
||||||
|
-dontwarn org.tukaani.xz.LZMA2InputStream
|
||||||
|
-dontwarn org.tukaani.xz.LZMA2Options
|
||||||
|
-dontwarn org.tukaani.xz.LZMAInputStream
|
||||||
|
-dontwarn org.tukaani.xz.LZMAOutputStream
|
||||||
|
-dontwarn org.tukaani.xz.MemoryLimitException
|
||||||
|
-dontwarn org.tukaani.xz.PowerPCOptions
|
||||||
|
-dontwarn org.tukaani.xz.SPARCOptions
|
||||||
|
-dontwarn org.tukaani.xz.SingleXZInputStream
|
||||||
|
-dontwarn org.tukaani.xz.UnsupportedOptionsException
|
||||||
|
-dontwarn org.tukaani.xz.X86Options
|
||||||
|
-dontwarn org.tukaani.xz.XZ
|
||||||
|
-dontwarn org.tukaani.xz.XZInputStream
|
||||||
|
-dontwarn org.tukaani.xz.XZOutputStream
|
||||||
|
-dontwarn us.hebi.matlab.mat.ejml.Mat5Ejml
|
||||||
|
-dontwarn us.hebi.matlab.mat.format.Mat5
|
||||||
|
-dontwarn us.hebi.matlab.mat.format.Mat5File
|
||||||
|
-dontwarn us.hebi.matlab.mat.types.Array
|
||||||
|
-dontwarn us.hebi.matlab.mat.types.MatFile$Entry
|
||||||
|
-dontwarn us.hebi.matlab.mat.types.MatFile
|
||||||
|
# end reown
|
|
@ -24,6 +24,10 @@
|
||||||
<uses-permission android:name="android.permission.BLUETOOTH_SCAN" android:usesPermissionFlags="neverForLocation" />
|
<uses-permission android:name="android.permission.BLUETOOTH_SCAN" android:usesPermissionFlags="neverForLocation" />
|
||||||
<uses-permission android:name="android.permission.BLUETOOTH_ADVERTISE" />
|
<uses-permission android:name="android.permission.BLUETOOTH_ADVERTISE" />
|
||||||
|
|
||||||
|
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
|
||||||
|
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
|
||||||
|
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
|
||||||
|
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_DATA_SYNC" />
|
||||||
|
|
||||||
<application
|
<application
|
||||||
android:name=".Application"
|
android:name=".Application"
|
||||||
|
@ -35,6 +39,10 @@
|
||||||
android:versionName="__versionName__"
|
android:versionName="__versionName__"
|
||||||
android:requestLegacyExternalStorage="true"
|
android:requestLegacyExternalStorage="true"
|
||||||
android:extractNativeLibs="true">
|
android:extractNativeLibs="true">
|
||||||
|
<service
|
||||||
|
android:name="androidx.work.impl.foreground.SystemForegroundService"
|
||||||
|
android:foregroundServiceType="dataSync"
|
||||||
|
android:exported="false" />
|
||||||
<activity
|
<activity
|
||||||
android:name=".MainActivity"
|
android:name=".MainActivity"
|
||||||
android:launchMode="singleInstance"
|
android:launchMode="singleInstance"
|
||||||
|
@ -92,6 +100,9 @@
|
||||||
<data android:scheme="zano" />
|
<data android:scheme="zano" />
|
||||||
<data android:scheme="zano-wallet" />
|
<data android:scheme="zano-wallet" />
|
||||||
<data android:scheme="zano_wallet" />
|
<data android:scheme="zano_wallet" />
|
||||||
|
<data android:scheme="decred" />
|
||||||
|
<data android:scheme="decred-wallet" />
|
||||||
|
<data android:scheme="decred_wallet" />
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
<!-- nano-gpt link scheme -->
|
<!-- nano-gpt link scheme -->
|
||||||
<intent-filter android:autoVerify="true">
|
<intent-filter android:autoVerify="true">
|
||||||
|
@ -100,10 +111,15 @@
|
||||||
<category android:name="android.intent.category.BROWSABLE" />
|
<category android:name="android.intent.category.BROWSABLE" />
|
||||||
<data android:scheme="nano-gpt" />
|
<data android:scheme="nano-gpt" />
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
|
|
||||||
|
<meta-data android:name="flutter_deeplinking_enabled" android:value="false" />
|
||||||
</activity>
|
</activity>
|
||||||
<meta-data
|
<meta-data
|
||||||
android:name="flutterEmbedding"
|
android:name="flutterEmbedding"
|
||||||
android:value="2" />
|
android:value="2" />
|
||||||
|
<meta-data
|
||||||
|
android:name="io.flutter.embedding.android.EnableImpeller"
|
||||||
|
android:value="false" />
|
||||||
<provider
|
<provider
|
||||||
android:name="com.pichillilorenzo.flutter_inappwebview_android.InAppWebViewFileProvider"
|
android:name="com.pichillilorenzo.flutter_inappwebview_android.InAppWebViewFileProvider"
|
||||||
android:authorities="${applicationId}.flutter_inappwebview_android.fileprovider"
|
android:authorities="${applicationId}.flutter_inappwebview_android.fileprovider"
|
||||||
|
|
|
@ -1,21 +1,8 @@
|
||||||
buildscript {
|
|
||||||
ext.kotlin_version = '2.0.21'
|
|
||||||
repositories {
|
|
||||||
google()
|
|
||||||
mavenCentral()
|
|
||||||
}
|
|
||||||
|
|
||||||
dependencies {
|
|
||||||
classpath 'com.android.tools.build:gradle:8.7.1'
|
|
||||||
classpath 'com.google.gms:google-services:4.3.8'
|
|
||||||
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
allprojects {
|
allprojects {
|
||||||
repositories {
|
repositories {
|
||||||
google()
|
google()
|
||||||
mavenCentral()
|
mavenCentral()
|
||||||
|
maven { url "https://jitpack.io" }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,15 +1,26 @@
|
||||||
include ':app'
|
pluginManagement {
|
||||||
|
def flutterSdkPath = {
|
||||||
|
def properties = new Properties()
|
||||||
|
file("local.properties").withInputStream { properties.load(it) }
|
||||||
|
def flutterSdkPath = properties.getProperty("flutter.sdk")
|
||||||
|
assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
|
||||||
|
return flutterSdkPath
|
||||||
|
}()
|
||||||
|
|
||||||
def flutterProjectRoot = rootProject.projectDir.parentFile.toPath()
|
includeBuild("$flutterSdkPath/packages/flutter_tools/gradle")
|
||||||
|
|
||||||
def plugins = new Properties()
|
repositories {
|
||||||
def pluginsFile = new File(flutterProjectRoot.toFile(), '.flutter-plugins')
|
google()
|
||||||
if (pluginsFile.exists()) {
|
mavenCentral()
|
||||||
pluginsFile.withReader('UTF-8') { reader -> plugins.load(reader) }
|
gradlePluginPortal()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
plugins.each { name, path ->
|
plugins {
|
||||||
def pluginDirectory = flutterProjectRoot.resolve(path).resolve('android').toFile()
|
id "dev.flutter.flutter-plugin-loader" version "1.0.0"
|
||||||
include ":$name"
|
id "com.android.application" version "8.7.1" apply false
|
||||||
project(":$name").projectDir = pluginDirectory
|
id "org.jetbrains.kotlin.android" version "2.0.21" apply false
|
||||||
|
id "com.google.gms.google-services" version "4.3.8" apply false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
include ":app"
|
6
assets/decred_node_list.yml
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
-
|
||||||
|
uri: default-spv-nodes
|
||||||
|
is_default: true
|
||||||
|
-
|
||||||
|
uri: dcrd.sethforprivacy.com:9108
|
||||||
|
useSSL: true
|
|
@ -13,7 +13,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"question" : "Co oznaczają słowa „seed” i „keys”?",
|
"question" : "Co oznaczają słowa „seed” i „keys”?",
|
||||||
"answer" : "Twoje klucze kodują prywatne informacje w twoim portfelu i pozwalają wydać monety i zobaczyć przychodzące transakcje.\nTwoje ziarno to tylko wersja twojego klucza prywatnego napisana w sposób, który łatwiej Ci zapisać. Wasze nasiona i klucze są w rzeczywistości takie same, tylko w różnych formach!\nNigdy nie dawaj nikomu swojego ziarna ani kluczy. Twoje fundusze zostaną skradzione, jeśli wydasz swoje nasiona lub klucze. Zapisz jednak swoje ziarno i przechowuj je w bezpiecznym miejscu (pozwoli to przywrócić portfel, jeśli zgubisz telefon).\n"
|
"answer" : "Twoje klucze i fraza seed zawierają prywatne informacje o twoim portfelu i pozwalają wysyłać kryptowalutę oraz zobaczyć przychodzące transakcje.\nFraza „seed” to wersja twojego klucza prywatnego napisana w sposób, który łatwiej Ci zapisać. Wasze frazy seed i klucze są w rzeczywistości takie same, tylko w różnych formach zapisu!\nNigdy nie dawaj nikomu swojej frazy seed ani swoich kluczy. Twoje fundusze zostaną skradzione, jeśli upublicznisz frazę seed lub klucze. Zapisz jednak swoją frazę seed i przechowuj ją w bezpiecznym miejscu (pozwoli to przywrócić portfel, jeśli zgubisz telefon).\n"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"question" : "Ile portfeli mogę utworzyć?",
|
"question" : "Ile portfeli mogę utworzyć?",
|
||||||
|
@ -24,11 +24,11 @@
|
||||||
"answer" : "Stuknij menu •••, wybierz „Portfele”, a następnie „Przywróć portfel”. Następnie wprowadź dane początkowe (lub klucze) i opcjonalnie wprowadź datę przed pierwszą transakcją w portfelu (przyspieszy to proces synchronizacji .) Może być konieczne pozostawienie aplikacji otwartej przez 15-30 minut, aby całkowicie przywrócić portfel.\n"
|
"answer" : "Stuknij menu •••, wybierz „Portfele”, a następnie „Przywróć portfel”. Następnie wprowadź dane początkowe (lub klucze) i opcjonalnie wprowadź datę przed pierwszą transakcją w portfelu (przyspieszy to proces synchronizacji .) Może być konieczne pozostawienie aplikacji otwartej przez 15-30 minut, aby całkowicie przywrócić portfel.\n"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"question" : "Co mogę zrobić, jeśli stracę nasiona?",
|
"question" : "Co mogę zrobić, jeśli zapomniałem frazę seed?",
|
||||||
"answer" : "Jeśli zapomniałeś o nasieniu, prawdopodobnie gdzieś je zapisałeś. Sprawdź swoje notatki i rozejrzyj się po komputerze. Jeśli nie możesz go nigdzie znaleźć, być może utworzono kopię zapasową Cake Wallet (w takim przypadku będziesz mógł przywrócić dane z tej kopii zapasowej). Jeśli żadna z tych czynności nie działa, niestety nic nie możemy zrobić.\n"
|
"answer" : "Jeśli zapomniałeś swoją frazę seed, prawdopodobnie gdzieś je zapisałeś. Sprawdź swoje notatki i rozejrzyj się po komputerze. Jeśli nie możesz go nigdzie znaleźć, być może utworzono kopię zapasową Cake Wallet (w takim przypadku będziesz mógł przywrócić dane z tej kopii zapasowej). Jeśli żadna z tych czynności nie działa, niestety nic nie możemy zrobić.\n"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"question" : "Czy zbierasz jakieś informacje o moim portfelu?",
|
"question" : "Czy zbieracie jakieś informacje o moim portfelu?",
|
||||||
"answer" : "Portfel Cake NIE gromadzi ani nie rejestruje żadnych informacji o Twoim portfelu. Dbamy o Twoją prywatność.\n"
|
"answer" : "Portfel Cake NIE gromadzi ani nie rejestruje żadnych informacji o Twoim portfelu. Dbamy o Twoją prywatność.\n"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -37,7 +37,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"question" : "Co to są „podadresy” i jak z nich korzystać?",
|
"question" : "Co to są „podadresy” i jak z nich korzystać?",
|
||||||
"answer" : "Podadres jest w zasadzie unikalnym adresem, który można wygenerować w dowolnym momencie. Monety wysłane do niego nadal będą pojawiać się w głównym portfelu, ale osoba wysyłająca monety nie może podać Twojego głównego adresu. Podadresy zawsze zaczynają się od „8”.\nMożesz utworzyć nowy podadres na ekranie Odbieranie, dotykając „+” obok przycisku Podadresy. Wprowadź nazwę podadresu i dotknij „Dodaj”. Następnie dotknij nazwy podadresu, gdy chcesz go użyć!\nJeśli jesteś paranoikiem, prawdopodobnie za każdym razem, gdy otrzymasz Monero, powinieneś utworzyć nowy podadres.\n"
|
"answer" : "Podadres jest w unikalnym adresem, który można wygenerować w dowolnym momencie. Monety wysłane do niego nadal będą pojawiać się w głównym portfelu, ale osoba wysyłająca monety nie zna Twojego głównego adresu. Podadresy zawsze zaczynają się od „8”.\nMożesz utworzyć nowy podadres na ekranie Odbieranie, dotykając „+” obok przycisku Podadresy. Wprowadź nazwę podadresu i dotknij „Dodaj”. Następnie dotknij nazwy podadresu, gdy chcesz go użyć!\nJeśli jesteś paranoikiem, prawdopodobnie za każdym razem, gdy otrzymasz Monero, powinieneś utworzyć nowy podadres.\n"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"question" : "Co to jest ID transakcji?",
|
"question" : "Co to jest ID transakcji?",
|
||||||
|
|
BIN
assets/images/2.0x/decred.png
Normal file
After Width: | Height: | Size: 2.1 KiB |
BIN
assets/images/2.0x/decred_menu.png
Normal file
After Width: | Height: | Size: 1.8 KiB |
BIN
assets/images/2fa.png
Normal file
After Width: | Height: | Size: 281 KiB |
86
assets/images/2fa_warning_dark.svg
Normal file
|
@ -0,0 +1,86 @@
|
||||||
|
<svg width="260" height="298" viewBox="0 0 260 298" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M119.655 6.27832C126.055 3.53578 133.272 3.45033 139.723 6.02148L140.345 6.27832L243.044 50.293C252.699 54.431 258.96 63.925 258.96 74.4297V128.542C258.96 175.815 236.309 220.2 198.085 247.94L197.18 248.593L145.264 285.676C136.276 292.096 124.25 292.197 115.167 285.978L114.736 285.676L62.8203 248.593C24.0499 220.899 1.04004 176.187 1.04004 128.542V74.4297C1.04004 64.0891 7.10644 54.7283 16.5059 50.4912L16.9561 50.293L119.655 6.27832Z" stroke="#708BF4" stroke-opacity="0.05" stroke-width="2.08"/>
|
||||||
|
<path d="M120.451 17.2793C126.358 14.7477 133.02 14.6687 138.975 17.042L139.549 17.2793L234.349 57.9082C243.261 61.7279 249.04 70.491 249.04 80.1875V130.138C249.04 173.775 228.131 214.745 192.848 240.352L192.012 240.954L144.089 275.185C135.792 281.111 124.692 281.204 116.308 275.463L115.911 275.185L67.9883 240.954C32.2001 215.391 10.96 174.118 10.96 130.138V80.1875C10.9601 70.6424 16.56 62.0019 25.2363 58.0908L25.6514 57.9082L120.451 17.2793Z" stroke="#708BF4" stroke-opacity="0.15" stroke-width="1.92"/>
|
||||||
|
<path d="M121.294 28.3906C126.68 26.0825 132.754 26.0099 138.183 28.1738L138.706 28.3906L225.605 65.6328C233.731 69.1153 239 77.1057 239 85.9463V131.733C239 171.381 220.152 208.625 188.301 232.109L186.774 233.218L142.846 264.596C135.282 269.999 125.161 270.083 117.517 264.849L117.154 264.596L73.2256 233.218C40.4513 209.807 21 172.01 21 131.733V85.9463C21 77.2438 26.1053 69.3657 34.0156 65.7998L34.3945 65.6328L121.294 28.3906Z" stroke="#708BF4" stroke-opacity="0.5" stroke-width="2"/>
|
||||||
|
<path d="M77.8584 226.327L117.794 254.852C125.096 260.068 134.904 260.068 142.206 254.852L182.141 226.327C212.176 204.874 230 170.238 230 133.329V91.7041C230 83.3035 224.994 75.7112 217.272 72.4021L138.272 38.5449C132.99 36.281 127.01 36.281 121.728 38.5449L42.7277 72.4021C35.0063 75.7112 30 83.3035 30 91.7041V133.329C30 170.238 47.8247 204.874 77.8584 226.327Z" fill="black"/>
|
||||||
|
<path d="M77.8584 226.327L117.794 254.852C125.096 260.068 134.904 260.068 142.206 254.852L182.141 226.327C212.176 204.874 230 170.238 230 133.329V91.7041C230 83.3035 224.994 75.7112 217.272 72.4021L138.272 38.5449C132.99 36.281 127.01 36.281 121.728 38.5449L42.7277 72.4021C35.0063 75.7112 30 83.3035 30 91.7041V133.329C30 170.238 47.8247 204.874 77.8584 226.327Z" fill="url(#paint0_linear_4774_13703)"/>
|
||||||
|
<path d="M123.479 42.6295C127.513 40.9005 132.063 40.8473 136.13 42.4684L136.521 42.6295L215.521 76.4869C221.609 79.0957 225.556 85.0812 225.556 91.7037V133.329C225.556 168.248 208.955 201.05 180.902 221.734L179.559 222.711L139.623 251.236C134.047 255.219 126.615 255.343 120.923 251.609L120.377 251.236L80.4414 222.711C51.5757 202.092 34.4443 168.802 34.4443 133.329V91.7037C34.4445 85.2882 38.1486 79.4709 43.9141 76.7418L44.4785 76.4869L123.479 42.6295Z" stroke="url(#paint1_linear_4774_13703)" stroke-width="8.88889"/>
|
||||||
|
<path d="M123.479 42.6295C127.513 40.9005 132.063 40.8473 136.13 42.4684L136.521 42.6295L215.521 76.4869C221.609 79.0957 225.556 85.0812 225.556 91.7037V133.329C225.556 168.248 208.955 201.05 180.902 221.734L179.559 222.711L139.623 251.236C134.047 255.219 126.615 255.343 120.923 251.609L120.377 251.236L80.4414 222.711C51.5757 202.092 34.4443 168.802 34.4443 133.329V91.7037C34.4445 85.2882 38.1486 79.4709 43.9141 76.7418L44.4785 76.4869L123.479 42.6295Z" stroke="url(#paint2_linear_4774_13703)" stroke-width="8.88889"/>
|
||||||
|
<path d="M123.479 42.6295C127.513 40.9005 132.063 40.8473 136.13 42.4684L136.521 42.6295L215.521 76.4869C221.609 79.0957 225.556 85.0812 225.556 91.7037V133.329C225.556 168.248 208.955 201.05 180.902 221.734L179.559 222.711L139.623 251.236C134.047 255.219 126.615 255.343 120.923 251.609L120.377 251.236L80.4414 222.711C51.5757 202.092 34.4443 168.802 34.4443 133.329V91.7037C34.4445 85.2882 38.1486 79.4709 43.9141 76.7418L44.4785 76.4869L123.479 42.6295Z" stroke="url(#paint3_linear_4774_13703)" stroke-width="8.88889"/>
|
||||||
|
<g filter="url(#filter0_ii_4774_13703)">
|
||||||
|
<path d="M77.8584 226.327L117.794 254.852C125.096 260.068 134.904 260.068 142.206 254.852L182.141 226.327C212.176 204.874 230 170.238 230 133.329V91.7041C230 83.3035 224.994 75.7112 217.272 72.4021L138.272 38.5449C132.99 36.281 127.01 36.281 121.728 38.5449L42.7277 72.4021C35.0063 75.7112 30 83.3035 30 91.7041V133.329C30 170.238 47.8247 204.874 77.8584 226.327Z" fill="black" fill-opacity="0.01"/>
|
||||||
|
</g>
|
||||||
|
<rect x="66.5" y="110.5" width="127" height="69.5833" rx="9.33333" fill="url(#paint4_linear_4774_13703)" fill-opacity="0.15" stroke="url(#paint5_linear_4774_13703)" stroke-width="3"/>
|
||||||
|
<g filter="url(#filter1_d_4774_13703)">
|
||||||
|
<path d="M85.027 155.008L85.4252 147.997L79.5392 151.857L77.4272 148.187L83.7113 145.037L77.4272 141.886L79.5392 138.216L85.4252 142.076L85.027 135.065H89.2338L88.8529 142.076L94.739 138.216L96.851 141.886L90.5495 145.037L96.851 148.187L94.739 151.857L88.8529 147.997L89.2338 155.008H85.027ZM113.447 155.008L113.845 147.997L107.959 151.857L105.847 148.187L112.131 145.037L105.847 141.886L107.959 138.216L113.845 142.076L113.447 135.065H117.654L117.273 142.076L123.159 138.216L125.271 141.886L118.969 145.037L125.271 148.187L123.159 151.857L117.273 147.997L117.654 155.008H113.447ZM141.866 155.008L142.265 147.997L136.379 151.857L134.267 148.187L140.551 145.037L134.267 141.886L136.379 138.216L142.265 142.076L141.866 135.065H146.073L145.692 142.076L151.578 138.216L153.69 141.886L147.389 145.037L153.69 148.187L151.578 151.857L145.692 147.997L146.073 155.008H141.866ZM170.286 155.008L170.684 147.997L164.798 151.857L162.686 148.187L168.971 145.037L162.686 141.886L164.798 138.216L170.684 142.076L170.286 135.065H174.493L174.112 142.076L179.998 138.216L182.11 141.886L175.809 145.037L182.11 148.187L179.998 151.857L174.112 147.997L174.493 155.008H170.286Z" fill="#EFEFF8"/>
|
||||||
|
</g>
|
||||||
|
<path d="M164.716 223.419H215.284C220.845 223.419 224.31 217.386 221.508 212.583L196.224 169.239C193.443 164.473 186.556 164.473 183.776 169.239L158.492 212.583C155.69 217.386 159.155 223.419 164.716 223.419Z" fill="#D9D9D9"/>
|
||||||
|
<path d="M164.716 223.419H215.284C220.845 223.419 224.31 217.386 221.508 212.583L196.224 169.239C193.443 164.473 186.556 164.473 183.776 169.239L158.492 212.583C155.69 217.386 159.155 223.419 164.716 223.419Z" fill="url(#paint6_linear_4774_13703)"/>
|
||||||
|
<path d="M164.716 223.419H215.284C220.845 223.419 224.31 217.386 221.508 212.583L196.224 169.239C193.443 164.473 186.556 164.473 183.776 169.239L158.492 212.583C155.69 217.386 159.155 223.419 164.716 223.419Z" stroke="#312938" stroke-width="3.25" stroke-linecap="round" stroke-linejoin="round"/>
|
||||||
|
<path d="M164.716 223.419H215.284C220.845 223.419 224.31 217.386 221.508 212.583L196.224 169.239C193.443 164.473 186.556 164.473 183.776 169.239L158.492 212.583C155.69 217.386 159.155 223.419 164.716 223.419Z" stroke="url(#paint7_linear_4774_13703)" stroke-width="3.25" stroke-linecap="round" stroke-linejoin="round"/>
|
||||||
|
<path d="M164.716 223.419H215.284C220.845 223.419 224.31 217.386 221.508 212.583L196.224 169.239C193.443 164.473 186.556 164.473 183.776 169.239L158.492 212.583C155.69 217.386 159.155 223.419 164.716 223.419Z" stroke="url(#paint8_linear_4774_13703)" stroke-width="3.25" stroke-linecap="round" stroke-linejoin="round"/>
|
||||||
|
<path d="M189.925 208.897H189.961M189.925 198.089V187.281" stroke="#312938" stroke-width="7.20545" stroke-linecap="round" stroke-linejoin="round"/>
|
||||||
|
<defs>
|
||||||
|
<filter id="filter0_ii_4774_13703" x="30" y="36.8469" width="200" height="221.917" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
|
||||||
|
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
|
||||||
|
<feBlend mode="normal" in="SourceGraphic" in2="BackgroundImageFix" result="shape"/>
|
||||||
|
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
|
||||||
|
<feOffset dy="2"/>
|
||||||
|
<feComposite in2="hardAlpha" operator="arithmetic" k2="-1" k3="1"/>
|
||||||
|
<feColorMatrix type="matrix" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0.5 0"/>
|
||||||
|
<feBlend mode="plus-lighter" in2="shape" result="effect1_innerShadow_4774_13703"/>
|
||||||
|
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
|
||||||
|
<feOffset dy="-2"/>
|
||||||
|
<feComposite in2="hardAlpha" operator="arithmetic" k2="-1" k3="1"/>
|
||||||
|
<feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.5 0"/>
|
||||||
|
<feBlend mode="normal" in2="effect1_innerShadow_4774_13703" result="effect2_innerShadow_4774_13703"/>
|
||||||
|
</filter>
|
||||||
|
<filter id="filter1_d_4774_13703" x="68.1106" y="125.748" width="123.316" height="38.5765" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
|
||||||
|
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
|
||||||
|
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
|
||||||
|
<feOffset/>
|
||||||
|
<feGaussianBlur stdDeviation="4.65833"/>
|
||||||
|
<feComposite in2="hardAlpha" operator="out"/>
|
||||||
|
<feColorMatrix type="matrix" values="0 0 0 0 0.937255 0 0 0 0 0.937255 0 0 0 0 0.972549 0 0 0 0.3 0"/>
|
||||||
|
<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_4774_13703"/>
|
||||||
|
<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_4774_13703" result="shape"/>
|
||||||
|
</filter>
|
||||||
|
<linearGradient id="paint0_linear_4774_13703" x1="130" y1="34.9996" x2="130" y2="263.571" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop stop-color="#19233C"/>
|
||||||
|
<stop offset="1" stop-color="#1647C3"/>
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient id="paint1_linear_4774_13703" x1="130" y1="34.9996" x2="130" y2="263.571" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop stop-color="#C1F2FF"/>
|
||||||
|
<stop offset="0.42" stop-color="#2077F8"/>
|
||||||
|
<stop offset="0.700262" stop-color="#000F4D"/>
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient id="paint2_linear_4774_13703" x1="130" y1="34.9996" x2="130" y2="263.571" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop stop-color="#C1F2FF"/>
|
||||||
|
<stop offset="0.700262" stop-color="#718CF5"/>
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient id="paint3_linear_4774_13703" x1="130" y1="34.9996" x2="130" y2="263.571" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop stop-color="#D8E3FF"/>
|
||||||
|
<stop offset="0.700262" stop-color="#718CF5"/>
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient id="paint4_linear_4774_13703" x1="130" y1="109" x2="130" y2="181.583" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop stop-color="#5590FF"/>
|
||||||
|
<stop offset="1" stop-color="#5590FF" stop-opacity="0.5"/>
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient id="paint5_linear_4774_13703" x1="190.695" y1="181.583" x2="69.3054" y2="109" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop stop-color="#EFEFF8" stop-opacity="0"/>
|
||||||
|
<stop offset="1" stop-color="#EFEFF8"/>
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient id="paint6_linear_4774_13703" x1="190" y1="165.664" x2="190.433" y2="233.264" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop stop-color="#FFC414"/>
|
||||||
|
<stop offset="1" stop-color="#FF9500"/>
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient id="paint7_linear_4774_13703" x1="190" y1="165.664" x2="190" y2="223.419" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop stop-color="#5C486E"/>
|
||||||
|
<stop offset="1" stop-color="#312938"/>
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient id="paint8_linear_4774_13703" x1="190" y1="165.664" x2="190" y2="223.419" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop stop-color="white"/>
|
||||||
|
<stop offset="1" stop-color="#EBD4FF"/>
|
||||||
|
</linearGradient>
|
||||||
|
</defs>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 11 KiB |
101
assets/images/2fa_warning_light.svg
Normal file
|
@ -0,0 +1,101 @@
|
||||||
|
<svg width="260" height="298" viewBox="0 0 260 298" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M119.655 6.2793C126.055 3.53675 133.272 3.4513 139.723 6.02246L140.345 6.2793L243.044 50.2939C252.699 54.432 258.96 63.9259 258.96 74.4307V128.543C258.96 175.816 236.309 220.201 198.085 247.941L197.18 248.594L145.264 285.677C136.276 292.097 124.25 292.198 115.167 285.979L114.736 285.677L62.8203 248.594C24.0499 220.9 1.04004 176.188 1.04004 128.543V74.4307C1.04004 64.09 7.10644 54.7293 16.5059 50.4922L16.9561 50.2939L119.655 6.2793Z" stroke="#4A98DC" stroke-opacity="0.05" stroke-width="2.08"/>
|
||||||
|
<path d="M120.451 17.2803C126.358 14.7487 133.02 14.6696 138.975 17.043L139.549 17.2803L234.349 57.9092C243.261 61.7289 249.04 70.492 249.04 80.1885V130.139C249.04 173.775 228.131 214.746 192.848 240.353L192.012 240.955L144.089 275.186C135.792 281.112 124.692 281.205 116.308 275.464L115.911 275.186L67.9883 240.955C32.2001 215.392 10.96 174.119 10.96 130.139V80.1885C10.9601 70.6434 16.56 62.0028 25.2363 58.0918L25.6514 57.9092L120.451 17.2803Z" stroke="#4B98DC" stroke-opacity="0.15" stroke-width="1.92"/>
|
||||||
|
<path d="M121.294 28.3916C126.68 26.0835 132.754 26.0109 138.183 28.1748L138.706 28.3916L225.605 65.6338C233.731 69.1163 239 77.1066 239 85.9473V131.734C239 171.382 220.152 208.626 188.301 232.11L186.774 233.219L142.846 264.597C135.282 270 125.161 270.084 117.517 264.85L117.154 264.597L73.2256 233.219C40.4513 209.808 21 172.011 21 131.734V85.9473C21 77.2448 26.1053 69.3666 34.0156 65.8008L34.3945 65.6338L121.294 28.3916Z" stroke="#4895DB" stroke-opacity="0.35" stroke-width="2"/>
|
||||||
|
<path d="M77.8584 226.328L117.794 254.853C125.096 260.069 134.904 260.069 142.206 254.853L182.141 226.328C212.176 204.875 230 170.239 230 133.33V91.7051C230 83.3045 224.994 75.7122 217.272 72.403L138.272 38.5459C132.99 36.2819 127.01 36.2819 121.728 38.5459L42.7277 72.403C35.0063 75.7122 30 83.3045 30 91.7051V133.33C30 170.239 47.8247 204.875 77.8584 226.328Z" fill="black"/>
|
||||||
|
<path d="M77.8584 226.328L117.794 254.853C125.096 260.069 134.904 260.069 142.206 254.853L182.141 226.328C212.176 204.875 230 170.239 230 133.33V91.7051C230 83.3045 224.994 75.7122 217.272 72.403L138.272 38.5459C132.99 36.2819 127.01 36.2819 121.728 38.5459L42.7277 72.403C35.0063 75.7122 30 83.3045 30 91.7051V133.33C30 170.239 47.8247 204.875 77.8584 226.328Z" fill="url(#paint0_linear_4774_13798)"/>
|
||||||
|
<path d="M77.8584 226.328L117.794 254.853C125.096 260.069 134.904 260.069 142.206 254.853L182.141 226.328C212.176 204.875 230 170.239 230 133.33V91.7051C230 83.3045 224.994 75.7122 217.272 72.403L138.272 38.5459C132.99 36.2819 127.01 36.2819 121.728 38.5459L42.7277 72.403C35.0063 75.7122 30 83.3045 30 91.7051V133.33C30 170.239 47.8247 204.875 77.8584 226.328Z" fill="url(#paint1_linear_4774_13798)"/>
|
||||||
|
<path d="M77.8584 226.328L117.794 254.853C125.096 260.069 134.904 260.069 142.206 254.853L182.141 226.328C212.176 204.875 230 170.239 230 133.33V91.7051C230 83.3045 224.994 75.7122 217.272 72.403L138.272 38.5459C132.99 36.2819 127.01 36.2819 121.728 38.5459L42.7277 72.403C35.0063 75.7122 30 83.3045 30 91.7051V133.33C30 170.239 47.8247 204.875 77.8584 226.328Z" fill="url(#paint2_linear_4774_13798)"/>
|
||||||
|
<path d="M77.8584 226.328L117.794 254.853C125.096 260.069 134.904 260.069 142.206 254.853L182.141 226.328C212.176 204.875 230 170.239 230 133.33V91.7051C230 83.3045 224.994 75.7122 217.272 72.403L138.272 38.5459C132.99 36.2819 127.01 36.2819 121.728 38.5459L42.7277 72.403C35.0063 75.7122 30 83.3045 30 91.7051V133.33C30 170.239 47.8247 204.875 77.8584 226.328Z" fill="url(#paint3_linear_4774_13798)"/>
|
||||||
|
<path d="M123.479 42.6305C127.513 40.9015 132.063 40.8482 136.13 42.4693L136.521 42.6305L215.521 76.4879C221.609 79.0967 225.556 85.0821 225.556 91.7047V133.33C225.556 168.249 208.955 201.051 180.902 221.735L179.559 222.712L139.623 251.237C134.047 255.22 126.615 255.344 120.923 251.61L120.377 251.237L80.4414 222.712C51.5757 202.093 34.4443 168.803 34.4443 133.33V91.7047C34.4445 85.2892 38.1486 79.4719 43.9141 76.7428L44.4785 76.4879L123.479 42.6305Z" stroke="url(#paint4_linear_4774_13798)" stroke-width="8.88889"/>
|
||||||
|
<path d="M123.479 42.6305C127.513 40.9015 132.063 40.8482 136.13 42.4693L136.521 42.6305L215.521 76.4879C221.609 79.0967 225.556 85.0821 225.556 91.7047V133.33C225.556 168.249 208.955 201.051 180.902 221.735L179.559 222.712L139.623 251.237C134.047 255.22 126.615 255.344 120.923 251.61L120.377 251.237L80.4414 222.712C51.5757 202.093 34.4443 168.803 34.4443 133.33V91.7047C34.4445 85.2892 38.1486 79.4719 43.9141 76.7428L44.4785 76.4879L123.479 42.6305Z" stroke="url(#paint5_linear_4774_13798)" stroke-width="8.88889"/>
|
||||||
|
<path d="M123.479 42.6305C127.513 40.9015 132.063 40.8482 136.13 42.4693L136.521 42.6305L215.521 76.4879C221.609 79.0967 225.556 85.0821 225.556 91.7047V133.33C225.556 168.249 208.955 201.051 180.902 221.735L179.559 222.712L139.623 251.237C134.047 255.22 126.615 255.344 120.923 251.61L120.377 251.237L80.4414 222.712C51.5757 202.093 34.4443 168.803 34.4443 133.33V91.7047C34.4445 85.2892 38.1486 79.4719 43.9141 76.7428L44.4785 76.4879L123.479 42.6305Z" stroke="url(#paint6_linear_4774_13798)" stroke-width="8.88889"/>
|
||||||
|
<path d="M123.479 42.6305C127.513 40.9015 132.063 40.8482 136.13 42.4693L136.521 42.6305L215.521 76.4879C221.609 79.0967 225.556 85.0821 225.556 91.7047V133.33C225.556 168.249 208.955 201.051 180.902 221.735L179.559 222.712L139.623 251.237C134.047 255.22 126.615 255.344 120.923 251.61L120.377 251.237L80.4414 222.712C51.5757 202.093 34.4443 168.803 34.4443 133.33V91.7047C34.4445 85.2892 38.1486 79.4719 43.9141 76.7428L44.4785 76.4879L123.479 42.6305Z" stroke="url(#paint7_linear_4774_13798)" stroke-width="8.88889"/>
|
||||||
|
<g filter="url(#filter0_ii_4774_13798)">
|
||||||
|
<path d="M77.8584 226.328L117.794 254.853C125.096 260.069 134.904 260.069 142.206 254.853L182.141 226.328C212.176 204.875 230 170.239 230 133.33V91.7051C230 83.3045 224.994 75.7122 217.272 72.403L138.272 38.5459C132.99 36.2819 127.01 36.2819 121.728 38.5459L42.7277 72.403C35.0063 75.7122 30 83.3045 30 91.7051V133.33C30 170.239 47.8247 204.875 77.8584 226.328Z" fill="black" fill-opacity="0.01"/>
|
||||||
|
</g>
|
||||||
|
<rect x="67" y="111" width="126" height="68.5833" rx="8.83333" fill="url(#paint8_linear_4774_13798)" stroke="url(#paint9_linear_4774_13798)" stroke-width="4"/>
|
||||||
|
<g filter="url(#filter1_d_4774_13798)">
|
||||||
|
<path d="M85.027 155.008L85.4252 147.997L79.5392 151.857L77.4272 148.187L83.7113 145.037L77.4272 141.886L79.5392 138.216L85.4252 142.076L85.027 135.065H89.2338L88.8529 142.076L94.739 138.216L96.851 141.886L90.5495 145.037L96.851 148.187L94.739 151.857L88.8529 147.997L89.2338 155.008H85.027ZM113.447 155.008L113.845 147.997L107.959 151.857L105.847 148.187L112.131 145.037L105.847 141.886L107.959 138.216L113.845 142.076L113.447 135.065H117.654L117.273 142.076L123.159 138.216L125.271 141.886L118.969 145.037L125.271 148.187L123.159 151.857L117.273 147.997L117.654 155.008H113.447ZM141.866 155.008L142.265 147.997L136.379 151.857L134.267 148.187L140.551 145.037L134.267 141.886L136.379 138.216L142.265 142.076L141.866 135.065H146.073L145.692 142.076L151.578 138.216L153.69 141.886L147.389 145.037L153.69 148.187L151.578 151.857L145.692 147.997L146.073 155.008H141.866ZM170.286 155.008L170.684 147.997L164.798 151.857L162.686 148.187L168.971 145.037L162.686 141.886L164.798 138.216L170.684 142.076L170.286 135.065H174.493L174.112 142.076L179.998 138.216L182.11 141.886L175.809 145.037L182.11 148.187L179.998 151.857L174.112 147.997L174.493 155.008H170.286Z" fill="#2C71CC"/>
|
||||||
|
</g>
|
||||||
|
<path d="M164.716 223.418H215.284C220.845 223.418 224.31 217.386 221.508 212.582L196.224 169.239C193.443 164.472 186.556 164.472 183.776 169.239L158.492 212.582C155.69 217.386 159.155 223.418 164.716 223.418Z" fill="#D9D9D9"/>
|
||||||
|
<path d="M164.716 223.418H215.284C220.845 223.418 224.31 217.386 221.508 212.582L196.224 169.239C193.443 164.472 186.556 164.472 183.776 169.239L158.492 212.582C155.69 217.386 159.155 223.418 164.716 223.418Z" fill="url(#paint10_linear_4774_13798)"/>
|
||||||
|
<path d="M164.716 223.418H215.284C220.845 223.418 224.31 217.386 221.508 212.582L196.224 169.239C193.443 164.472 186.556 164.472 183.776 169.239L158.492 212.582C155.69 217.386 159.155 223.418 164.716 223.418Z" stroke="#312938" stroke-width="3.25" stroke-linecap="round" stroke-linejoin="round"/>
|
||||||
|
<path d="M164.716 223.418H215.284C220.845 223.418 224.31 217.386 221.508 212.582L196.224 169.239C193.443 164.472 186.556 164.472 183.776 169.239L158.492 212.582C155.69 217.386 159.155 223.418 164.716 223.418Z" stroke="url(#paint11_linear_4774_13798)" stroke-width="3.25" stroke-linecap="round" stroke-linejoin="round"/>
|
||||||
|
<path d="M189.925 208.896H189.961M189.925 198.088V187.28" stroke="#312938" stroke-width="7.20545" stroke-linecap="round" stroke-linejoin="round"/>
|
||||||
|
<defs>
|
||||||
|
<filter id="filter0_ii_4774_13798" x="30" y="36.8479" width="200" height="221.917" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
|
||||||
|
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
|
||||||
|
<feBlend mode="normal" in="SourceGraphic" in2="BackgroundImageFix" result="shape"/>
|
||||||
|
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
|
||||||
|
<feOffset dy="2"/>
|
||||||
|
<feComposite in2="hardAlpha" operator="arithmetic" k2="-1" k3="1"/>
|
||||||
|
<feColorMatrix type="matrix" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0.5 0"/>
|
||||||
|
<feBlend mode="normal" in2="shape" result="effect1_innerShadow_4774_13798"/>
|
||||||
|
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
|
||||||
|
<feOffset dy="-2"/>
|
||||||
|
<feComposite in2="hardAlpha" operator="arithmetic" k2="-1" k3="1"/>
|
||||||
|
<feColorMatrix type="matrix" values="0 0 0 0 0.022328 0 0 0 0 0.298259 0 0 0 0 0.663462 0 0 0 1 0"/>
|
||||||
|
<feBlend mode="normal" in2="effect1_innerShadow_4774_13798" result="effect2_innerShadow_4774_13798"/>
|
||||||
|
</filter>
|
||||||
|
<filter id="filter1_d_4774_13798" x="68.1106" y="125.748" width="123.316" height="38.5765" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
|
||||||
|
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
|
||||||
|
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
|
||||||
|
<feOffset/>
|
||||||
|
<feGaussianBlur stdDeviation="4.65833"/>
|
||||||
|
<feComposite in2="hardAlpha" operator="out"/>
|
||||||
|
<feColorMatrix type="matrix" values="0 0 0 0 0.172549 0 0 0 0 0.443137 0 0 0 0 0.8 0 0 0 0.3 0"/>
|
||||||
|
<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_4774_13798"/>
|
||||||
|
<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_4774_13798" result="shape"/>
|
||||||
|
</filter>
|
||||||
|
<linearGradient id="paint0_linear_4774_13798" x1="130" y1="35.0006" x2="130" y2="263.572" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop stop-color="#002A52"/>
|
||||||
|
<stop offset="1" stop-color="#0652DF"/>
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient id="paint1_linear_4774_13798" x1="130" y1="35.0006" x2="130" y2="263.572" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop stop-color="#19233C"/>
|
||||||
|
<stop offset="1" stop-color="#144CD8"/>
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient id="paint2_linear_4774_13798" x1="130" y1="35.0006" x2="130" y2="263.572" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop stop-color="#19233C"/>
|
||||||
|
<stop offset="1" stop-color="#1647C3"/>
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient id="paint3_linear_4774_13798" x1="130" y1="35.0006" x2="130" y2="263.572" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop offset="0.144488" stop-color="#FAFAFA"/>
|
||||||
|
<stop offset="1" stop-color="#72AAFF"/>
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient id="paint4_linear_4774_13798" x1="130" y1="35.0006" x2="130" y2="263.572" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop stop-color="#C1F2FF"/>
|
||||||
|
<stop offset="0.42" stop-color="#2077F8"/>
|
||||||
|
<stop offset="0.700262" stop-color="#000F4D"/>
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient id="paint5_linear_4774_13798" x1="130" y1="35.0006" x2="130" y2="263.572" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop stop-color="#C1F2FF"/>
|
||||||
|
<stop offset="0.700262" stop-color="#718CF5"/>
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient id="paint6_linear_4774_13798" x1="130" y1="35.0006" x2="130" y2="263.572" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop stop-color="#D8E3FF"/>
|
||||||
|
<stop offset="0.700262" stop-color="#718CF5"/>
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient id="paint7_linear_4774_13798" x1="130" y1="35.0006" x2="130" y2="263.572" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop stop-color="#68BEEF"/>
|
||||||
|
<stop offset="0.700262" stop-color="#2C71CC"/>
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient id="paint8_linear_4774_13798" x1="147.5" y1="170" x2="69.5" y2="100" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop offset="0.0455724" stop-color="white" stop-opacity="0"/>
|
||||||
|
<stop offset="1" stop-color="white" stop-opacity="0.5"/>
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient id="paint9_linear_4774_13798" x1="65" y1="109" x2="195" y2="185.5" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop stop-color="#4794DA"/>
|
||||||
|
<stop offset="0.954879" stop-color="#72AAFF" stop-opacity="0.2"/>
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient id="paint10_linear_4774_13798" x1="190" y1="165.664" x2="190.433" y2="233.264" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop stop-color="#FFC414"/>
|
||||||
|
<stop offset="1" stop-color="#FF9500"/>
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient id="paint11_linear_4774_13798" x1="190" y1="165.664" x2="190" y2="223.418" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop stop-color="#5C486E"/>
|
||||||
|
<stop offset="1" stop-color="#312938"/>
|
||||||
|
</linearGradient>
|
||||||
|
</defs>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 13 KiB |
BIN
assets/images/3.0x/decred.png
Normal file
After Width: | Height: | Size: 2.8 KiB |
BIN
assets/images/3.0x/decred_menu.png
Normal file
After Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 3.9 KiB After Width: | Height: | Size: 151 KiB |
BIN
assets/images/btc_lock_dark.png
Normal file
After Width: | Height: | Size: 4.6 KiB |
BIN
assets/images/btc_lock_light.png
Normal file
After Width: | Height: | Size: 4.8 KiB |
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 2.4 KiB |
Before Width: | Height: | Size: 3 KiB After Width: | Height: | Size: 1.6 KiB |
3
assets/images/cake_logo_dark.svg
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
<svg width="28" height="37" viewBox="0 0 28 37" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M26.0117 0.00835344C26.0523 -0.000438375 26.0914 -0.00211226 26.1279 0.00249407C26.3832 0.0346771 26.5225 0.363833 26.3174 0.5689L11.9326 14.9625C11.4874 15.4075 11.2364 16.0124 11.2354 16.6421V35.7369C11.2354 35.8853 11.146 35.9965 11.0303 36.0445C10.9723 36.0685 10.9079 36.0769 10.8447 36.066C10.7815 36.055 10.7195 36.0247 10.667 35.9722L0.396484 25.7056C0.20853 25.5177 0.10361 25.2641 0.103516 24.9996V7.18218C0.103551 6.28774 0.727312 5.51391 1.60156 5.32378L26.0107 0.00835344H26.0117ZM27.1025 20.2906C27.1024 20.5551 26.9964 20.8079 26.8096 20.9947L12.9443 34.8316C12.9218 34.8541 12.8953 34.867 12.8682 34.8716C12.8413 34.8762 12.8137 34.873 12.7891 34.8628C12.7394 34.8423 12.7012 34.7942 12.7012 34.731L12.7031 27.6763L17.3975 23.0289C18.0656 22.4518 18.3422 22.2068 18.7549 22.1832C18.8235 22.1792 18.896 22.1822 18.9746 22.19C19.0532 22.1978 19.138 22.2106 19.2314 22.2291C19.6039 22.3026 19.9558 22.357 20.2842 22.3755C20.4156 22.3829 20.5432 22.3847 20.667 22.3794C21.2241 22.356 21.7026 22.1937 22.0898 21.7945C22.427 21.4466 22.853 20.8957 23.0713 19.4947C23.2236 18.5107 23.33 17.8883 23.5439 17.3169C23.7579 16.7456 24.0748 16.3552 24.4551 15.9761V15.9752L27.1201 13.2974L27.1025 20.2906ZM26.9834 7.87359C27.0584 7.90479 27.1162 7.97749 27.1162 8.07378L27.0967 11.2144L24.1006 14.3306C23.5194 14.8954 22.9476 15.67 22.6914 16.2759C22.4364 16.8808 22.1497 17.8845 22.0049 18.7476C21.8611 19.6097 21.8812 20.1323 21.1377 20.6011C20.9985 20.6888 20.8632 20.7369 20.7295 20.7574C20.6402 20.7711 20.5516 20.7729 20.4629 20.7652C20.0187 20.7267 19.5718 20.4629 19.0273 20.4019C18.973 20.3958 18.9177 20.3918 18.8613 20.3902L18.8604 20.3912C17.9582 20.3653 17.3076 21.023 17.3057 21.025L12.7021 25.6441V22.5533C12.7021 22.1752 12.8521 21.8114 13.1201 21.5435L26.749 7.92046C26.7832 7.88634 26.8233 7.86688 26.8643 7.85992C26.9048 7.85303 26.9462 7.85813 26.9834 7.87359ZM26.9277 2.16753C27.0287 2.17924 27.12 2.26134 27.1201 2.3814V5.49956H27.1211L12.7021 19.9498V16.8648C12.7022 16.4869 12.8522 16.1238 13.1201 15.856L26.752 2.22906C26.8026 2.17847 26.8672 2.16051 26.9277 2.16753Z" fill="#D7E2F7"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 2.2 KiB |
3
assets/images/cake_logo_light.svg
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
<svg width="28" height="37" viewBox="0 0 28 37" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M26.0117 0.00769167C26.0523 -0.00110449 26.0914 -0.00180576 26.1279 0.00280886C26.3831 0.0350288 26.5224 0.363182 26.3174 0.568239L11.9326 14.9618C11.4874 15.4069 11.2364 16.0127 11.2354 16.6425V35.7372C11.2353 35.8856 11.1461 35.9969 11.0303 36.0448C10.9724 36.0688 10.9078 36.0772 10.8447 36.0663C10.7815 36.0554 10.7195 36.025 10.667 35.9725L0.396484 25.7059C0.208445 25.518 0.103516 25.2635 0.103516 24.9989V7.1825C0.103516 6.28802 0.727287 5.51423 1.60156 5.3241L26.0107 0.00769167H26.0117ZM27.1025 20.2899C27.1025 20.5545 26.9964 20.8071 26.8096 20.994L12.9443 34.8319C12.9218 34.8543 12.8952 34.8674 12.8682 34.8719C12.8413 34.8765 12.8138 34.8724 12.7891 34.8622C12.7396 34.8417 12.7013 34.7944 12.7012 34.7313L12.7031 27.6757L17.3975 23.0282C18.0655 22.4511 18.3423 22.2071 18.7549 22.1835C18.8235 22.1795 18.896 22.1815 18.9746 22.1893C19.0532 22.1971 19.138 22.2109 19.2314 22.2294C19.6039 22.303 19.9558 22.3574 20.2842 22.3759C20.4155 22.3833 20.5432 22.385 20.667 22.3798C21.224 22.3563 21.7026 22.1939 22.0898 21.7948C22.427 21.447 22.853 20.896 23.0713 19.495C23.2236 18.5109 23.33 17.8887 23.5439 17.3173C23.7579 16.7458 24.0747 16.3556 24.4551 15.9764V15.9755L27.1201 13.2977L27.1025 20.2899ZM26.9834 7.8739C27.0584 7.90515 27.1162 7.97782 27.1162 8.0741L27.0967 11.2137L24.1006 14.3309C23.5192 14.8958 22.9476 15.6702 22.6914 16.2762C22.4364 16.8812 22.1497 17.8848 22.0049 18.7479C21.8611 19.61 21.8812 20.1316 21.1377 20.6005C20.9984 20.6882 20.8633 20.7372 20.7295 20.7577C20.6402 20.7714 20.5516 20.7722 20.4629 20.7645C20.0188 20.7261 19.5717 20.4632 19.0273 20.4022C18.973 20.3961 18.9177 20.3912 18.8613 20.3895L18.8604 20.3915C17.9569 20.3655 17.3057 21.0253 17.3057 21.0253L12.7021 25.6444V22.5526C12.7022 22.1746 12.8523 21.8117 13.1201 21.5438L26.749 7.92078C26.7832 7.88666 26.8233 7.8672 26.8643 7.86023C26.9049 7.85331 26.9462 7.85839 26.9834 7.8739ZM26.9277 2.16785C27.0288 2.17959 27.1201 2.2615 27.1201 2.38172V5.4989H27.1211L12.7021 19.9501V16.8651C12.7021 16.4872 12.8523 16.1242 13.1201 15.8563L26.752 2.22937C26.8026 2.17876 26.8671 2.16081 26.9277 2.16785Z" fill="#1C1B1C"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 2.2 KiB |
BIN
assets/images/cakewallet_android_icon.png
Executable file → Normal file
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 52 KiB |
|
@ -1,6 +1,6 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
|
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
<background android:drawable="@mipmap/ic_launcher_adaptive_back"/>
|
<background android:drawable="@mipmap/ic_launcher_background"/>
|
||||||
<foreground android:drawable="@mipmap/ic_launcher_adaptive_fore"/>
|
<foreground android:drawable="@mipmap/ic_launcher_foreground"/>
|
||||||
<monochrome android:drawable="@mipmap/ic_launcher_adaptive_mono"/>
|
<monochrome android:drawable="@mipmap/ic_launcher_monochrome"/>
|
||||||
</adaptive-icon>
|
</adaptive-icon>
|
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 5 KiB |
Before Width: | Height: | Size: 509 B |
Before Width: | Height: | Size: 3.6 KiB |
Before Width: | Height: | Size: 2.3 KiB |
After Width: | Height: | Size: 852 B |
After Width: | Height: | Size: 6.5 KiB |
After Width: | Height: | Size: 6.5 KiB |
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 2.9 KiB |
Before Width: | Height: | Size: 327 B |
Before Width: | Height: | Size: 2.2 KiB |
Before Width: | Height: | Size: 1.5 KiB |
After Width: | Height: | Size: 459 B |
After Width: | Height: | Size: 3.3 KiB |
After Width: | Height: | Size: 3.3 KiB |
Before Width: | Height: | Size: 3.1 KiB After Width: | Height: | Size: 6.7 KiB |
Before Width: | Height: | Size: 677 B |
Before Width: | Height: | Size: 5.4 KiB |
Before Width: | Height: | Size: 3.2 KiB |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 8.5 KiB |
After Width: | Height: | Size: 8.5 KiB |
Before Width: | Height: | Size: 5 KiB After Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 1,017 B |
Before Width: | Height: | Size: 9.2 KiB |
Before Width: | Height: | Size: 5.1 KiB |
After Width: | Height: | Size: 2.9 KiB |
After Width: | Height: | Size: 17 KiB |
After Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 7.1 KiB After Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 7.5 KiB |
After Width: | Height: | Size: 4.1 KiB |
After Width: | Height: | Size: 24 KiB |
After Width: | Height: | Size: 24 KiB |
Before Width: | Height: | Size: 30 KiB |
Before Width: | Height: | Size: 96 KiB After Width: | Height: | Size: 207 KiB |
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 6.2 KiB |
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 9.7 KiB |
Before Width: | Height: | Size: 128 KiB After Width: | Height: | Size: 206 KiB |
BIN
assets/images/contact.png
Normal file
After Width: | Height: | Size: 26 KiB |
3
assets/images/contact_icon.svg
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
<svg width="126" height="97" viewBox="0 0 126 97" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M7.56 0.640015C3.41578 0.640015 0 4.0558 0 8.20001V88.84C0 92.9842 3.41578 96.4 7.56 96.4H25.2V91.36H30.24V96.4H95.76V91.36H100.8V96.4H118.44C122.584 96.4 126 92.9842 126 88.84V18.28C126 14.1358 122.584 10.72 118.44 10.72H65.52V8.20001C65.52 4.0558 62.1042 0.640015 57.96 0.640015H7.56ZM7.56 5.68001H57.96C59.3775 5.68001 60.48 6.78251 60.48 8.20001V15.76H118.44C119.857 15.76 120.96 16.8625 120.96 18.28V88.84C120.96 90.2575 119.857 91.36 118.44 91.36H105.84V86.32H90.72V91.36H35.28V86.32H20.16V91.36H7.56C6.1425 91.36 5.04 90.2575 5.04 88.84V8.20001C5.04 6.78251 6.1425 5.68001 7.56 5.68001ZM33.9412 28.36C25.4756 28.5175 24.4519 34.9553 26.3025 42.3775C25.9777 42.5842 25.4559 43.3225 25.5938 44.5038C25.8497 46.6989 26.6962 47.2108 27.2475 47.26C27.4542 49.3075 28.7536 51.7586 29.4525 52.1425C29.4525 53.5994 29.5116 54.7117 29.3738 56.3163C27.7003 60.992 15.6417 59.6631 15.12 68.68H52.92C52.3983 59.6631 40.4184 60.992 38.745 56.3163C38.6072 54.7117 38.6662 53.5994 38.6662 52.1425C39.3652 51.7586 40.5759 49.3075 40.7925 47.26C41.3438 47.2108 42.1903 46.6989 42.4463 44.5038C42.5841 43.3225 42.0623 42.663 41.7375 42.4563C42.6234 39.6705 44.4445 30.9883 38.2725 30.0925C37.6327 28.931 36.0577 28.36 33.9412 28.36ZM65.52 38.44V43.48H110.88V38.44H65.52ZM65.52 51.04V56.08H110.88V51.04H65.52ZM65.52 63.64V68.68H110.88V63.64H65.52Z" fill="white"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 115 KiB After Width: | Height: | Size: 89 KiB |
BIN
assets/images/decred.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
assets/images/decred_icon.png
Normal file
After Width: | Height: | Size: 1.5 KiB |
BIN
assets/images/decred_menu.png
Normal file
After Width: | Height: | Size: 1.4 KiB |
BIN
assets/images/deuro_icon.png
Normal file
After Width: | Height: | Size: 132 KiB |
5
assets/images/hero/cw_welcome_dark.svg
Normal file
After Width: | Height: | Size: 10 KiB |
5
assets/images/hero/cw_welcome_light.svg
Normal file
After Width: | Height: | Size: 10 KiB |
10
assets/images/history.svg
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
<svg width="128" height="128" viewBox="0 0 128 128" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<g clip-path="url(#clip0_67_21)">
|
||||||
|
<path d="M70.4443 8.33334C101.173 8.33336 126 33.1598 126 63.889C126 94.6181 101.173 119.445 70.4443 119.445C53.0832 119.445 37.4581 111.458 27.3887 98.9583L37.2842 89.0628C44.7495 98.9587 56.9027 105.556 70.4443 105.556C93.361 105.556 112.111 86.8056 112.111 63.889C112.111 40.9723 93.361 22.222 70.4443 22.222C56.9027 22.222 44.7495 28.8193 37.2842 38.7152C33.1175 44.0971 30.3405 50.521 29.2988 57.639C28.9516 59.7223 28.7773 61.8057 28.7773 63.889H42.667L21.833 84.722L1 63.889H14.8887C14.8887 61.9793 14.8891 60.2431 15.2363 58.3333C15.7572 52.7778 17.146 47.5692 19.0557 42.5345C27.3891 22.5694 47.3542 8.33334 70.4443 8.33334ZM75.6523 35.4163V60.9378L93.708 78.9925L83.8125 88.889L61.7637 66.6663V35.4163H75.6523Z" fill="white"/>
|
||||||
|
</g>
|
||||||
|
<defs>
|
||||||
|
<clipPath id="clip0_67_21">
|
||||||
|
<rect width="128" height="128" fill="white"/>
|
||||||
|
</clipPath>
|
||||||
|
</defs>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 984 B |
6
assets/images/home_screen_setting_icon.svg
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
<svg width="45" height="46" viewBox="0 0 45 46" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<circle cx="22.5" cy="23" r="22.5" fill="#312938" fill-opacity="0.1"/>
|
||||||
|
<path d="M25.391 19.4402C24.7502 15.2551 21.1352 12.0498 16.7708 12.0498C11.9548 12.0498 8.04984 15.9548 8.04984 20.7708C8.04984 24.1914 10.0183 27.1505 12.8847 28.5797C13.9003 29.087 15.0296 29.401 16.2246 29.4738C16.405 29.4857 16.5874 29.4917 16.7708 29.4917C20.8542 29.4917 24.2807 26.686 25.2306 22.8977C25.401 22.2169 25.4917 21.5043 25.4917 20.7708C25.4917 20.3183 25.4568 19.8738 25.391 19.4402ZM16.7708 26.5017C16.4518 26.5017 16.1379 26.4757 15.8329 26.4249C14.7794 26.2505 13.8226 25.788 13.0452 25.1223C11.8183 24.0708 11.0399 22.51 11.0399 20.7708C11.0399 17.6113 13.6113 15.0399 16.7708 15.0399C19.1429 15.0399 21.1821 16.488 22.0512 18.5462C22.3412 19.2309 22.5017 19.9824 22.5017 20.7708C22.5017 21.0508 22.4817 21.3259 22.4429 21.595C22.0422 24.3658 19.6512 26.5017 16.7708 26.5017Z" fill="#312938"/>
|
||||||
|
<path d="M36.4551 15.7874H34.2126V13.5448C34.2126 12.7196 33.5429 12.0498 32.7176 12.0498C31.8924 12.0498 31.2226 12.7196 31.2226 13.5448V15.7874H28.9801C28.1548 15.7874 27.485 16.4571 27.485 17.2824C27.485 18.1076 28.1548 18.7774 28.9801 18.7774H31.2226V21.0199C31.2226 21.8452 31.8924 22.5149 32.7176 22.5149C33.5429 22.5149 34.2126 21.8452 34.2126 21.0199V18.7774H36.4551C37.2804 18.7774 37.9502 18.1076 37.9502 17.2824C37.9502 16.4571 37.2804 15.7874 36.4551 15.7874Z" fill="#312938"/>
|
||||||
|
<path d="M25.391 19.4402C25.4568 19.8738 25.4917 20.3183 25.4917 20.7708C25.4917 21.5043 25.401 22.2169 25.2306 22.8977C26.4575 23.9502 27.2359 25.511 27.2359 27.2492C27.2359 30.4096 24.6654 32.9801 21.505 32.9801C19.1339 32.9801 17.0937 31.5319 16.2246 29.4738C15.0296 29.401 13.9003 29.087 12.8847 28.5797C13.5256 32.7658 17.1415 35.9701 21.505 35.9701C26.3219 35.9701 30.2259 32.0661 30.2259 27.2492C30.2259 23.8296 28.2575 20.8684 25.391 19.4402Z" fill="#312938"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 1.9 KiB |
BIN
assets/images/ios_icons/cakewallet_ios_icons/AppIcon-20@2x.png
Normal file
After Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 1.4 KiB |
BIN
assets/images/ios_icons/cakewallet_ios_icons/AppIcon-20@3x.png
Normal file
After Width: | Height: | Size: 2.6 KiB |
BIN
assets/images/ios_icons/cakewallet_ios_icons/AppIcon-20~ipad.png
Normal file
After Width: | Height: | Size: 591 B |
BIN
assets/images/ios_icons/cakewallet_ios_icons/AppIcon-29.png
Normal file
After Width: | Height: | Size: 1,019 B |
BIN
assets/images/ios_icons/cakewallet_ios_icons/AppIcon-29@2x.png
Normal file
After Width: | Height: | Size: 2.5 KiB |
After Width: | Height: | Size: 2.5 KiB |
BIN
assets/images/ios_icons/cakewallet_ios_icons/AppIcon-29@3x.png
Normal file
After Width: | Height: | Size: 3.9 KiB |
BIN
assets/images/ios_icons/cakewallet_ios_icons/AppIcon-29~ipad.png
Normal file
After Width: | Height: | Size: 1,019 B |
BIN
assets/images/ios_icons/cakewallet_ios_icons/AppIcon-40@2x.png
Normal file
After Width: | Height: | Size: 3.5 KiB |
After Width: | Height: | Size: 3.5 KiB |
BIN
assets/images/ios_icons/cakewallet_ios_icons/AppIcon-40@3x.png
Normal file
After Width: | Height: | Size: 6.5 KiB |
BIN
assets/images/ios_icons/cakewallet_ios_icons/AppIcon-40~ipad.png
Normal file
After Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 6.5 KiB |
After Width: | Height: | Size: 10 KiB |