Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0a617599b0 | ||
|
|
40f98f8238 | ||
|
|
2161c2e433 | ||
|
|
2983af67d6 | ||
|
|
4a8bb704bf | ||
|
|
e61702c8bb | ||
|
|
5b75e1dca6 | ||
|
|
97d4edcf30 | ||
|
|
1663848b7e | ||
|
|
113f9aaa81 | ||
|
|
6db24a4a6c | ||
|
|
8cac0e46b1 | ||
|
|
b38d2c1836 | ||
|
|
8948904a9b | ||
|
|
8111758ef7 | ||
|
|
bf7b86ccd5 | ||
|
|
96b88a427d | ||
|
|
cc6dcc3636 | ||
|
|
9d6b8609be | ||
|
|
16ab8f9357 | ||
|
|
ac186e27de | ||
|
|
917f10955a | ||
|
|
8638a2266d | ||
|
|
baab56946e | ||
|
|
d10a026908 | ||
|
|
2cb50fcbf6 | ||
|
|
449b2808e6 | ||
|
|
6bf1aecb6d | ||
|
|
4d26934949 | ||
|
|
0f6aa8d401 | ||
|
|
32ddf81a5e | ||
|
|
7b34a4fb1b | ||
|
|
215e516b2b | ||
|
|
eecd1d50e4 | ||
|
|
5a9279b232 | ||
|
|
6a5e718cd3 | ||
|
|
70009f80ab | ||
|
|
8e3031f106 | ||
|
|
3e0c31af9a | ||
|
|
e1bbefa60b | ||
|
|
4575f83f49 | ||
|
|
37232eee7e | ||
|
|
373ca6ec2d | ||
|
|
fe28f44d4b | ||
|
|
cd81519e9a | ||
|
|
d4a58ac2fb | ||
|
|
75280c4db6 | ||
|
|
9a52339ea7 | ||
|
|
d53bef385a | ||
|
|
35e71289dc | ||
|
|
0dfc8384e6 | ||
|
|
605e3a727d | ||
|
|
41e18993be | ||
|
|
ce3f2b5895 | ||
|
|
3b4cbfa4bc | ||
|
|
9a3cdc4f8b | ||
|
|
1d84c30de3 | ||
|
|
8133c4c5f0 | ||
|
|
e21ece0f8d | ||
|
|
89828ba7fd | ||
|
|
8215498ddb | ||
|
|
ae6205c874 | ||
|
|
328f9686c9 | ||
|
|
9f412577d7 | ||
|
|
11bd340a94 | ||
|
|
3c102b9797 | ||
|
|
bd4b7fc49d | ||
|
|
29252336cc | ||
|
|
4b5b4f9099 | ||
|
|
28da6f8bfc | ||
|
|
e0fe0d2dbd | ||
|
|
07cf34ad60 | ||
|
|
7c4c9a9fc0 | ||
|
|
59ceddbaad | ||
|
|
99ccbc3383 | ||
|
|
8c2d5398b0 | ||
|
|
67c83b13e3 | ||
|
|
11a84ba145 | ||
|
|
1f5bb579c9 | ||
|
|
4586f8007c | ||
|
|
55c620e59d | ||
|
|
525609f0af | ||
|
|
90653955a6 | ||
|
|
d27ab756d0 | ||
|
|
c6a1db6334 | ||
|
|
73777e052e | ||
|
|
a6d3fc3742 | ||
|
|
a671c70838 | ||
|
|
a45991b6dc | ||
|
|
2e9fa22e4f | ||
|
|
737d8c4d53 | ||
|
|
3aa7e103f7 | ||
|
|
c1d2d44da4 | ||
|
|
0fed8113d1 | ||
|
|
53c35cb554 | ||
|
|
be82365542 | ||
|
|
eae8a65597 | ||
|
|
fe54a25a3a | ||
|
|
15a4219ef4 | ||
|
|
2ffbdac89e | ||
|
|
402eb8397d | ||
|
|
ff88049a08 | ||
|
|
cee21241d4 | ||
|
|
60ad7c8a29 | ||
|
|
4989c92780 | ||
|
|
c6a63e30b2 | ||
|
|
07005f8ad5 | ||
|
|
3ab345563c | ||
|
|
cef1308b3a | ||
|
|
4b8a612df4 | ||
|
|
e4639c153f | ||
|
|
8597b899bd | ||
|
|
a5c8182461 | ||
|
|
89bb3ea5c3 | ||
|
|
3bb7c308e3 | ||
|
|
1a4987478c | ||
|
|
540094c229 | ||
|
|
08b65cbcb7 | ||
|
|
d623cc8444 | ||
|
|
4b7c906df2 | ||
|
|
3b446963ef | ||
|
|
cec46f985a | ||
|
|
06b2996167 | ||
|
|
02e24208db | ||
|
|
84b8943fd4 | ||
|
|
c52b3e457e | ||
|
|
21cc8a199a | ||
|
|
59374543ef | ||
|
|
9f84a7b912 | ||
|
|
2b0847ef76 | ||
|
|
97b19c5440 | ||
|
|
b3e88508ac | ||
|
|
7b09402fcb | ||
|
|
a912125ba9 | ||
|
|
2d0437dd5e | ||
|
|
43651ef0d0 | ||
|
|
13232dc7b7 | ||
|
|
93b5f7a918 | ||
|
|
4898d32243 | ||
|
|
588692e0eb | ||
|
|
bd9e440839 | ||
|
|
940edc2e53 | ||
|
|
5a93cd755e | ||
|
|
942c130d23 | ||
|
|
bb8aad3be8 | ||
|
|
ba76b9fd51 | ||
|
|
5f085e9cea | ||
|
|
12b8dcf1e7 | ||
|
|
0e6d59b312 | ||
|
|
087fcb1010 | ||
|
|
0de4c8cabb | ||
|
|
6553d5ca44 | ||
|
|
20b256b0d0 | ||
|
|
1c85b292f8 | ||
|
|
d2e975f6d9 | ||
|
|
721aa51d8d | ||
|
|
23c25d7715 | ||
|
|
54e4b597ed | ||
|
|
0b5dac0ad0 | ||
|
|
180065129f | ||
|
|
866b854ee0 | ||
|
|
072370b0d6 | ||
|
|
d74edff9b9 | ||
|
|
0a0591f67a | ||
|
|
7a8db689f4 | ||
|
|
311fde9409 | ||
|
|
f89b66f562 | ||
|
|
d179cbf59b | ||
|
|
7ff7e78691 | ||
|
|
6c352397ab | ||
|
|
3521421098 | ||
|
|
f70a743a8c | ||
|
|
a2178951d7 | ||
|
|
7774c4eac1 | ||
|
|
4c4a8b65d4 | ||
|
|
de6d9a6c3b | ||
|
|
da16d1f69e | ||
|
|
a13975f3f6 | ||
|
|
c473b8c9b1 | ||
|
|
1f333cc937 | ||
|
|
460aaedbca | ||
|
|
66639fc3ed | ||
|
|
2cc689a896 | ||
|
|
b4866ff728 | ||
|
|
eaa5016094 | ||
|
|
66f77e1467 | ||
|
|
d16c1a3c85 | ||
|
|
a049fd341e | ||
|
|
140fa3115c | ||
|
|
147676ae8c | ||
|
|
1e40d49369 | ||
|
|
b17f2892c7 | ||
|
|
b28a8e153e | ||
|
|
35a1905396 | ||
|
|
2e8776d0a6 | ||
|
|
99506c810d | ||
|
|
e83f6ff445 | ||
|
|
f51f52ec27 | ||
|
|
e58e2209bb | ||
|
|
8aa1cadc66 | ||
|
|
91c22df498 | ||
|
|
e221e23255 | ||
|
|
e8e05e58e0 | ||
|
|
ac4ffd83db | ||
|
|
b021b1e20a | ||
|
|
b650591e58 | ||
|
|
0581fc2f9d | ||
|
|
ef9cc55501 | ||
|
|
3b3a39e37b | ||
|
|
b255874e95 | ||
|
|
1c83916fc3 | ||
|
|
31acf51b1e | ||
|
|
424d2d4b5c | ||
|
|
0d9bedf11c | ||
|
|
3e268936f6 | ||
|
|
e92da6d24b | ||
|
|
34c95c42d1 | ||
|
|
1ee44259c4 | ||
|
|
112b69c1d6 | ||
|
|
3ce6a86e9b | ||
|
|
b005eb8181 | ||
|
|
4bd7abaace | ||
|
|
e2e8afb7b1 | ||
|
|
256f3f8f24 | ||
|
|
6931fd0052 | ||
|
|
136c3c0032 | ||
|
|
a92b50afea | ||
|
|
fd3a21a320 | ||
|
|
f93e372d18 | ||
|
|
0ed39a42ef | ||
|
|
ead51b7e7c | ||
|
|
9481890624 | ||
|
|
419e84db08 | ||
|
|
66785d01ec | ||
|
|
1cc4807336 | ||
|
|
141252e5a0 | ||
|
|
9d825ee04e | ||
|
|
fb84f105db | ||
|
|
f509d132f3 | ||
|
|
5ee5d70567 | ||
|
|
b5a09a334a | ||
|
|
1e703cdc81 | ||
|
|
fbc9b59a5e | ||
|
|
4e8f4698a6 | ||
|
|
68b3bb3089 | ||
|
|
f192648518 | ||
|
|
e9f98fcf85 | ||
|
|
f133cd3d5d | ||
|
|
f761d87b2a | ||
|
|
24b77811d8 | ||
|
|
d2f67ef46c | ||
|
|
88b97d1151 | ||
|
|
6a3794f380 | ||
|
|
686f6bdf5e | ||
|
|
8b424b0669 | ||
|
|
24068dad5c | ||
|
|
96d98c62ed | ||
|
|
435bf3dbd5 | ||
|
|
26c4a736ad | ||
|
|
aff4eb89cd | ||
|
|
60b3d01ceb | ||
|
|
dc335cc333 | ||
|
|
e0c7ecc6df | ||
|
|
d33648917a | ||
|
|
5f7d7254e7 | ||
|
|
df939bf85f | ||
|
|
874906b11f | ||
|
|
799bd1d4dc | ||
|
|
256c9f7b10 | ||
|
|
60e1783b36 | ||
|
|
3208ec1b28 | ||
|
|
8f75761ae9 | ||
|
|
af07205f20 | ||
|
|
672358fbce | ||
|
|
255ba9a862 | ||
|
|
4942238cae | ||
|
|
6a32006e6a | ||
|
|
b119860b81 | ||
|
|
6a7f04a5a8 | ||
|
|
f226f0db18 | ||
|
|
48f00f17a9 | ||
|
|
9f245ceb30 | ||
|
|
94e728bdf3 | ||
|
|
402e67d199 | ||
|
|
0d2869bfe0 | ||
|
|
3634edab42 | ||
|
|
712e67a62e | ||
|
|
d223151b93 | ||
|
|
9c7cb0fe93 | ||
|
|
a3e713bbf0 | ||
|
|
cedd4900d5 | ||
|
|
d43e8881ef | ||
|
|
75c8437cc5 | ||
|
|
f1310c7e6c | ||
|
|
d7530dfbee | ||
|
|
0d6bd9c15d | ||
|
|
2da6d9dffb | ||
|
|
879a4067e5 | ||
|
|
e1317f503f | ||
|
|
ec00ddf10e | ||
|
|
c0e10b7c6f | ||
|
|
da449bcd17 | ||
|
|
ab93088d93 | ||
|
|
b4a0e74a4a | ||
|
|
379ba87c16 | ||
|
|
901dddc603 | ||
|
|
9300377c6c | ||
|
|
9445363467 | ||
|
|
5bad8de886 | ||
|
|
577dc16188 | ||
|
|
00d288fb94 | ||
|
|
6ea39b5096 | ||
|
|
d7c66319aa | ||
|
|
5193f981f8 | ||
|
|
615ad2f02b | ||
|
|
0d6c553f3f | ||
|
|
55ec84a5c3 | ||
|
|
2c6ab52a1a | ||
|
|
93e2c31a8f | ||
|
|
541b2e0909 | ||
|
|
81cb058e29 | ||
|
|
24194fb34e | ||
|
|
039ad8d162 | ||
|
|
abc0da1f00 | ||
|
|
4ff73a8a6a | ||
|
|
86bbe2e8c7 | ||
|
|
aa159f53ef | ||
|
|
e04c7f449f | ||
|
|
dafab10582 | ||
|
|
c37a2a5d6f | ||
|
|
630be6685d | ||
|
|
36be518174 | ||
|
|
0e76e88a81 | ||
|
|
cb4ce20c98 | ||
|
|
c03d91bcb0 | ||
|
|
2ebe8fd4c9 | ||
|
|
382c810199 | ||
|
|
aa1a306294 | ||
|
|
2e61b56214 | ||
|
|
19be1382db | ||
|
|
5559599381 | ||
|
|
841a6140e3 | ||
|
|
7613de74ae | ||
|
|
139bd8feea | ||
|
|
c7088a7472 | ||
|
|
14181a23ee | ||
|
|
7d542cefb8 | ||
|
|
5c3f25e617 | ||
|
|
c3dc78648a | ||
|
|
76a61bc56c | ||
|
|
a63ea3290e | ||
|
|
47f6bda563 | ||
|
|
158ed083da | ||
|
|
cec4611507 | ||
|
|
2ceef5ced3 | ||
|
|
964d2b9478 | ||
|
|
8d1898ccc0 | ||
|
|
3d1c0c61f8 | ||
|
|
2fc5bed094 | ||
|
|
f7ea17b001 | ||
|
|
ca81bfebcd | ||
|
|
59f2eca75a | ||
|
|
de71df811b | ||
|
|
711bcb2507 | ||
|
|
52aaee0bd1 | ||
|
|
7e4f55450b | ||
|
|
3f3a8e22ba | ||
|
|
00a9555633 | ||
|
|
366fb7b174 | ||
|
|
bcd8f3ad16 | ||
|
|
777b2bb8da | ||
|
|
f17484f61b | ||
|
|
49a41f4787 | ||
|
|
f65c10502b | ||
|
|
e30ca97372 | ||
|
|
178d62bd27 | ||
|
|
4262d0e8ab | ||
|
|
6f3aa19a04 | ||
|
|
c398c85b0f | ||
|
|
3a728fb112 | ||
|
|
d2fb6c7ee0 | ||
|
|
2ffdeb1fa2 | ||
|
|
a0d9134f7b | ||
|
|
81977475c5 | ||
|
|
813e4ee730 | ||
|
|
5eba373c3c | ||
|
|
c19f170239 | ||
|
|
60ef4fab4b | ||
|
|
47b4ab923b | ||
|
|
05a09d1fa1 | ||
|
|
8bd1c8de95 | ||
|
|
e5ab94f1b2 | ||
|
|
ff82d9c39e | ||
|
|
e1210e90c0 | ||
|
|
ed88170c5d | ||
|
|
32123d2f69 | ||
|
|
a480df4ef5 | ||
|
|
b3361b7d89 | ||
|
|
f7163c748b | ||
|
|
34cf65bfc9 | ||
|
|
88afa09baf | ||
|
|
b358c06a31 | ||
|
|
389a730eff | ||
|
|
4cdbfb6cc6 | ||
|
|
8fe59a0998 | ||
|
|
d4e7e4cd52 | ||
|
|
3de86b09bd | ||
|
|
dc551031fe | ||
|
|
29b02a544c | ||
|
|
3e4cbfeb69 | ||
|
|
8038fc5ceb | ||
|
|
eb1db20161 | ||
|
|
d558c565b0 | ||
|
|
ea58e52dc1 | ||
|
|
624593ec35 | ||
|
|
9d302d8192 | ||
|
|
47428368fd | ||
|
|
4c84dd4a1b | ||
|
|
cfe9d6e539 | ||
|
|
afd92d2df1 | ||
|
|
ba3d4dd4ce | ||
|
|
d7f3946c06 | ||
|
|
e1408f2a5f | ||
|
|
b76395282d | ||
|
|
c70a2c9e9e | ||
|
|
649a316361 | ||
|
|
c05be0f2c2 | ||
|
|
db26a878c3 | ||
|
|
219ae0ccbe | ||
|
|
3e33ccb9ca | ||
|
|
d73c38a00c | ||
|
|
deb7bfe23c | ||
|
|
bd5fb0d407 | ||
|
|
22d63002b2 | ||
|
|
1817a86ffd | ||
|
|
052813e30e | ||
|
|
30715a69e1 | ||
|
|
05f381044c | ||
|
|
634dd74768 | ||
|
|
0145429852 | ||
|
|
8f0840e913 | ||
|
|
5ab97db795 | ||
|
|
f7505db6fd | ||
|
|
91c347f6f5 | ||
|
|
c87e981902 | ||
|
|
9421b12412 | ||
|
|
04eaf41889 | ||
|
|
8d4f1f9b38 | ||
|
|
5a6a0f7e3d | ||
|
|
e72e25c342 | ||
|
|
d658fcf3db | ||
|
|
16398dfd55 | ||
|
|
88df60958c | ||
|
|
947e2369d3 | ||
|
|
a6cd97482c | ||
|
|
112768d13a | ||
|
|
2a03282dd6 | ||
|
|
6be1adb40e | ||
|
|
006824e0ed | ||
|
|
33da4bfabc | ||
|
|
2618a55dbc | ||
|
|
439edc39a6 | ||
|
|
12515a4904 | ||
|
|
f50ca4606f | ||
|
|
22392464e0 | ||
|
|
225e3b1c2f | ||
|
|
037e71bc03 | ||
|
|
cb9a620f40 | ||
|
|
a481a44c72 | ||
|
|
a68b2f357d | ||
|
|
4f0a49f7bf | ||
|
|
c40853456b | ||
|
|
52a6f5c17d | ||
|
|
14aa9e1c20 | ||
|
|
2c5cc6cd08 | ||
|
|
8ad58bb364 | ||
|
|
ab191407ed | ||
|
|
3e5d758e92 | ||
|
|
7f40f410e7 | ||
|
|
497c95fd26 | ||
|
|
604eaccbbf | ||
|
|
842dbbbd8d | ||
|
|
10f5f9ec7d | ||
|
|
07fb3610d1 | ||
|
|
43951b9dfd | ||
|
|
834bf612ac | ||
|
|
161ba2713f | ||
|
|
245b3fcf57 | ||
|
|
90e5774dd6 | ||
|
|
be59785a1f | ||
|
|
45129b8244 | ||
|
|
0c6bb61ebe | ||
|
|
7ec77db666 | ||
|
|
b907881d59 | ||
|
|
0d7c2684ee | ||
|
|
5802097f5f | ||
|
|
5fc9722992 | ||
|
|
4eaf832b43 | ||
|
|
a9b4d86b00 | ||
|
|
8a24185ad6 | ||
|
|
355e144ef7 | ||
|
|
d8d1e030e4 | ||
|
|
9187ec25c1 | ||
|
|
de29c6f7d9 | ||
|
|
e6ee2714d7 | ||
|
|
25e3a56dba | ||
|
|
7b9f4983cb | ||
|
|
94ab27bcbb | ||
|
|
041ceda95e | ||
|
|
86c1dbd25d | ||
|
|
a094d218d5 | ||
|
|
3951b8a39c | ||
|
|
1757dc5d53 | ||
|
|
f942092a5e | ||
|
|
d4be3a6976 | ||
|
|
6037fe80c4 | ||
|
|
6a1fdc5b08 | ||
|
|
17f6a72590 | ||
|
|
aaf5b72675 | ||
|
|
a1490d414c | ||
|
|
8c26125e52 | ||
|
|
86fefc2e32 | ||
|
|
d8e3934a05 | ||
|
|
65b0d1cd17 | ||
|
|
b65ac2ab14 | ||
|
|
c00eb0d539 | ||
|
|
42e407fbcf | ||
|
|
e9c2d24cc3 | ||
|
|
d9aa885eb2 | ||
|
|
bd192b0f7d | ||
|
|
e8008d0aa9 | ||
|
|
2ec6a3ed06 | ||
|
|
8fc6f4776b | ||
|
|
cd54aa9b92 | ||
|
|
8aa586fe6e | ||
|
|
1e55827c4b | ||
|
|
03f813c957 | ||
|
|
6d6766dce1 | ||
|
|
ce3d32dc0a | ||
|
|
56ff84f475 | ||
|
|
cdb39452d7 | ||
|
|
3794742c8f | ||
|
|
9db49b8ca0 | ||
|
|
ce5ae1d191 | ||
|
|
3a5122a50c | ||
|
|
782d038fb0 | ||
|
|
e6f9932dc5 | ||
|
|
380603ddce | ||
|
|
9b550e4b82 | ||
|
|
6b5c807176 | ||
|
|
54b2e0e678 | ||
|
|
01a503f3bf | ||
|
|
696fedcca2 | ||
|
|
7a1c29899b | ||
|
|
9b2f6147b6 | ||
|
|
5c801331af | ||
|
|
96b09eb862 | ||
|
|
e104a9a935 | ||
|
|
34930a7136 | ||
|
|
e6f8df9a52 | ||
|
|
f873dfcde0 | ||
|
|
8034167750 | ||
|
|
702899a9cf | ||
|
|
59f536c479 | ||
|
|
8353c65602 | ||
|
|
1f967c6aa1 | ||
|
|
ca53bf7388 | ||
|
|
2e2104d4d1 | ||
|
|
ac48fbef44 | ||
|
|
8f67f38de9 | ||
|
|
ea4578b3e0 | ||
|
|
2b40a4d0c4 | ||
|
|
17afff272e | ||
|
|
3526355e23 | ||
|
|
f708cdcf50 | ||
|
|
3af4384e00 | ||
|
|
a6b19c021f | ||
|
|
a258717e83 | ||
|
|
a8395e51a4 | ||
|
|
db501b5efd | ||
|
|
44732e9736 | ||
|
|
d12c05aab6 | ||
|
|
4134d18cbc | ||
|
|
8600c1d3a5 | ||
|
|
570c62e30e | ||
|
|
549efdb77c | ||
|
|
8807a63989 | ||
|
|
c0be0b7670 | ||
|
|
6e854428f2 | ||
|
|
c81dd8e3e3 | ||
|
|
24f4c4a07e | ||
|
|
98762c74f1 | ||
|
|
f3aeddb53a | ||
|
|
f5fcc9f45e | ||
|
|
9aa9dc1b4c | ||
|
|
61974dae4d | ||
|
|
8b3e639abd | ||
|
|
7c901fa045 | ||
|
|
8a12ad3510 | ||
|
|
c8044cd2f2 | ||
|
|
6872d1a857 | ||
|
|
98d4969ca5 | ||
|
|
5412092ca1 | ||
|
|
a8695116e2 | ||
|
|
76773a4165 | ||
|
|
32fc7b14e8 | ||
|
|
82a8f9f44d | ||
|
|
8df72d0c29 | ||
|
|
794cd57961 | ||
|
|
6bc29088ab | ||
|
|
658f62e8ce | ||
|
|
e6b346ca32 | ||
|
|
00b0755a73 | ||
|
|
f8cc85f5e2 | ||
|
|
6ba89d0c6e | ||
|
|
2614131426 | ||
|
|
cfc43be3cc | ||
|
|
3164cc6a6c | ||
|
|
5badb5bdb5 | ||
|
|
292fd78ff8 | ||
|
|
c875fb33fa | ||
|
|
b5962fd83a | ||
|
|
1d1eae13a9 | ||
|
|
63a168b6f4 | ||
|
|
ce7912632c | ||
|
|
ec53f17897 | ||
|
|
7987e537c8 | ||
|
|
074a2b292d | ||
|
|
8b417524fa | ||
|
|
f6a433c818 | ||
|
|
4940341504 | ||
|
|
06aa4671b6 | ||
|
|
7eaa5f6bb1 | ||
|
|
d48f933502 | ||
|
|
14d76eb4d4 | ||
|
|
ae1f82f33c | ||
|
|
c5a3eea048 | ||
|
|
c847cb5d03 | ||
|
|
4e1851d53c | ||
|
|
edd1d0661d | ||
|
|
18fc168537 | ||
|
|
ca8b404e5b | ||
|
|
f98e5cf11f | ||
|
|
5aca098aa2 | ||
|
|
55a182f430 | ||
|
|
8e31dae33b | ||
|
|
ce69df19ac | ||
|
|
681bcbf726 | ||
|
|
aeef913f63 | ||
|
|
74e84644aa | ||
|
|
0e29149363 | ||
|
|
5fe28a2c9b | ||
|
|
5fba1dbfa3 | ||
|
|
32098d2548 | ||
|
|
60a4aa2f8e | ||
|
|
f8699c582a | ||
|
|
9ba6c6262e | ||
|
|
5fc23816a6 | ||
|
|
59513eae65 | ||
|
|
aead730d28 | ||
|
|
5bff89a58f | ||
|
|
e1177d20b5 | ||
|
|
0a6eaf1c12 | ||
|
|
d24eb96c9d | ||
|
|
3dfd9df935 | ||
|
|
d0374d9fd2 | ||
|
|
f0026b4d10 | ||
|
|
b9a02f707d | ||
|
|
d4e1b63ef7 | ||
|
|
e9b973196b | ||
|
|
74149c1ff0 | ||
|
|
288f57192a | ||
|
|
a52bc11592 | ||
|
|
354cda3be5 | ||
|
|
f114908c4d | ||
|
|
b0964eff64 | ||
|
|
b0d2e6e5d7 | ||
|
|
df0e9313da | ||
|
|
76bf8d365c | ||
|
|
41763689e0 | ||
|
|
a6a7ec8bc0 | ||
|
|
7e896979f6 | ||
|
|
68402ae669 | ||
|
|
8c67ce0b75 | ||
|
|
e2b9e12038 | ||
|
|
a03cc3c3ab | ||
|
|
da25280555 | ||
|
|
68e4cf3632 | ||
|
|
dd7795a8b8 | ||
|
|
feb875310e | ||
|
|
8b0681c44a | ||
|
|
9bbde035dc | ||
|
|
260a741b17 | ||
|
|
48789e8793 | ||
|
|
2dfb3ab838 | ||
|
|
e05d5000b1 | ||
|
|
3067b814b1 | ||
|
|
e9bbb34797 | ||
|
|
28aeb2dad0 | ||
|
|
fef3165f24 | ||
|
|
88d1a17a94 | ||
|
|
ed824bdb06 | ||
|
|
932fee2857 | ||
|
|
53874c8343 | ||
|
|
e6d9ef0298 | ||
|
|
4aee5af791 | ||
|
|
3ee004afab | ||
|
|
6c07fac28b | ||
|
|
98deaa4459 | ||
|
|
7de1f95054 | ||
|
|
9e71fc2d14 | ||
|
|
e44b29f3a6 | ||
|
|
e5ed5e624b | ||
|
|
f075cd0bdc | ||
|
|
1d44472aa6 | ||
|
|
495bc91989 | ||
|
|
bcf8e39e84 | ||
|
|
c86cdf9ac8 | ||
|
|
1948c11508 | ||
|
|
02d4618997 | ||
|
|
fd4d64c53e | ||
|
|
17b64ab3ba | ||
|
|
6a88a34d34 | ||
|
|
3be1532b32 | ||
|
|
44846c80c8 | ||
|
|
a405de62e6 | ||
|
|
06dc9ea1d3 | ||
|
|
32a4bb1153 | ||
|
|
418053b21e | ||
|
|
2528efb538 | ||
|
|
399da799a6 | ||
|
|
ebc12c36e4 | ||
|
|
c003db42ae | ||
|
|
a716f4e435 | ||
|
|
6f07e8022e | ||
|
|
38fcb0c1a0 | ||
|
|
0cc414d717 | ||
|
|
ad42882c5b | ||
|
|
ee35fd52f6 | ||
|
|
fba363d9ea | ||
|
|
51541f7f0a | ||
|
|
1e37765197 | ||
|
|
90913500b4 | ||
|
|
6d74d0396e | ||
|
|
fd24a80904 | ||
|
|
ab53450ba8 | ||
|
|
813d96df10 | ||
|
|
6363756c09 | ||
|
|
5854a473f0 | ||
|
|
c2f0060a47 | ||
|
|
0fdb599d93 | ||
|
|
ef5153f138 | ||
|
|
463e8a5eec | ||
|
|
40e6c44b99 | ||
|
|
fc801213ef | ||
|
|
9e5b8b5f9c | ||
|
|
772efa90d4 | ||
|
|
8fb42d2503 | ||
|
|
2295b01bc9 | ||
|
|
2ee7db9370 | ||
|
|
27407b9cbb | ||
|
|
01a881523f | ||
|
|
3b5afb5d60 | ||
|
|
e5cee4b640 | ||
|
|
7948582e46 | ||
|
|
6c5242b3e0 | ||
|
|
60d6a5c3cc | ||
|
|
049822b5bb | ||
|
|
02c7460a24 | ||
|
|
10c6bf7156 | ||
|
|
d0d7310e82 | ||
|
|
219dd7cb46 | ||
|
|
9da0559b15 | ||
|
|
aa7db8b883 | ||
|
|
a06c5fdc02 | ||
|
|
2a515a82ce | ||
|
|
69294b196f | ||
|
|
58606dc87c | ||
|
|
bccf0f8d11 | ||
|
|
aab62dd19e | ||
|
|
fa9645d6dd | ||
|
|
614b03d701 | ||
|
|
e26d3a856d | ||
|
|
98cdf00276 | ||
|
|
eb379791c9 | ||
|
|
6bda54266b | ||
|
|
1a8bca56e0 | ||
|
|
296d868797 | ||
|
|
e002fab376 | ||
|
|
4fa9a27cd9 | ||
|
|
dbcdb18818 | ||
|
|
2009199c25 | ||
|
|
103c4b4653 | ||
|
|
0828e9aa55 | ||
|
|
0efdea6962 | ||
|
|
d4c8e48441 | ||
|
|
2931ae84ee | ||
|
|
637efa24cf | ||
|
|
c57e5cd6db | ||
|
|
604e232bda | ||
|
|
e4997a2088 | ||
|
|
459bf1621a | ||
|
|
ca9346a931 | ||
|
|
7065f4abd2 | ||
|
|
e283a72454 | ||
|
|
3c6923963d | ||
|
|
7a6714eeb2 | ||
|
|
b3bebe1859 | ||
|
|
ad546f9f14 | ||
|
|
3145ecd6bf | ||
|
|
669a232ad9 | ||
|
|
29e69c54bd | ||
|
|
5fd0b27589 | ||
|
|
7d6b2ac87a | ||
|
|
93f488e61a | ||
|
|
f7498ef81f | ||
|
|
f1834c6a15 | ||
|
|
ffcca1aea3 | ||
|
|
0937da9e50 | ||
|
|
33e637ff71 | ||
|
|
a538e2896e | ||
|
|
c02cc5d391 | ||
|
|
613e48ece3 | ||
|
|
f788d7bc85 | ||
|
|
7415ebdc78 | ||
|
|
58e9ae0334 | ||
|
|
e783deb5af | ||
|
|
e771d056a0 | ||
|
|
62f68ff44b | ||
|
|
5d1e1f8005 | ||
|
|
191c876f47 | ||
|
|
0be66e28c1 | ||
|
|
fcdd6c5a79 | ||
|
|
27e177f18b | ||
|
|
f8cd14296f | ||
|
|
851eb6ea8f | ||
|
|
7754460acc | ||
|
|
7d55c98e0a | ||
|
|
0e9847f2c3 | ||
|
|
1aef3106bd | ||
|
|
a4b973970b | ||
|
|
abd2b43ce6 | ||
|
|
ac78dea8ef | ||
|
|
b1f0d1c3d7 | ||
|
|
da22063308 | ||
|
|
c15084fffa | ||
|
|
d637f69a45 | ||
|
|
05a810b051 | ||
|
|
7db35a3cc8 | ||
|
|
1301bbc0d9 | ||
|
|
5f4d4bfc11 | ||
|
|
26dd51c5da | ||
|
|
bd7ced5f25 | ||
|
|
61f8c51d85 | ||
|
|
781b83d13d | ||
|
|
b7bffb3bd3 | ||
|
|
047e45d2a3 | ||
|
|
acc6a3c072 | ||
|
|
7171c7085d | ||
|
|
6d227b61e1 | ||
|
|
bf1a734c4e | ||
|
|
f8eee09d1b | ||
|
|
42d2690c85 | ||
|
|
b0133e97cf | ||
|
|
3c4f72c061 | ||
|
|
265b712fe3 | ||
|
|
13f87020eb | ||
|
|
4f5480e36f | ||
|
|
9fab422e0c | ||
|
|
6f8aa15b17 | ||
|
|
4469717cc1 | ||
|
|
5d00c09597 | ||
|
|
fee8ef5524 | ||
|
|
7e228d0e66 | ||
|
|
3c12ac870a | ||
|
|
321ff9257b | ||
|
|
28f43acb83 | ||
|
|
cfaed80066 | ||
|
|
fa9b53854b | ||
|
|
680bc33971 | ||
|
|
c7aa10c789 | ||
|
|
ae08cb161f | ||
|
|
ae75eaeb33 | ||
|
|
424bbc39c4 | ||
|
|
5a7bfc61cc | ||
|
|
50f6c1ef1b | ||
|
|
3c6b38aeea | ||
|
|
c44ba69676 | ||
|
|
f394fcc3d5 | ||
|
|
107f263fb1 | ||
|
|
678bc548ca | ||
|
|
d77033e346 | ||
|
|
8f85e3c726 | ||
|
|
ed427cf485 | ||
|
|
9362d12bbd | ||
|
|
bfed36d19f | ||
|
|
456ccb4c69 | ||
|
|
be2c697b7c | ||
|
|
b27f323dd7 | ||
|
|
a33e7f2e90 | ||
|
|
54d9e5ebeb | ||
|
|
49567596da | ||
|
|
2e23dc7ad7 | ||
|
|
dc53bddb66 | ||
|
|
10f9fe11db | ||
|
|
2e13cfc47f | ||
|
|
e6ea8ae9a9 | ||
|
|
834c0a3800 | ||
|
|
2c96c38339 | ||
|
|
1d2c01c16b | ||
|
|
8dc71f6432 | ||
|
|
25f9499454 | ||
|
|
42cab08553 | ||
|
|
83523b1923 | ||
|
|
f762cdcf9b | ||
|
|
357db52720 | ||
|
|
5fdaf0054d | ||
|
|
4e3ce54ac4 | ||
|
|
37be08d2d7 | ||
|
|
3c4d27b6ff | ||
|
|
c5df51d944 | ||
|
|
b1c467de19 | ||
|
|
c766d21296 | ||
|
|
e86faa0767 | ||
|
|
abe0342be0 | ||
|
|
6669c33e33 | ||
|
|
1351a54fd1 | ||
|
|
da192dcdb3 | ||
|
|
6e22e63158 | ||
|
|
d1f22cd2b8 | ||
|
|
9dacc9e8af | ||
|
|
9acf67dd5b | ||
|
|
ab73c7e56a | ||
|
|
f1db73d149 | ||
|
|
d78d7719cd | ||
|
|
e381998b19 | ||
|
|
025c38ae88 | ||
|
|
523a5809d0 | ||
|
|
505f2fe624 | ||
|
|
ac32de89f9 | ||
|
|
52a82fffab | ||
|
|
d1c8f6411d | ||
|
|
7b639f2ffe | ||
|
|
ae7ee33f00 | ||
|
|
c70646bd5c | ||
|
|
484ab919b1 | ||
|
|
052d88b531 | ||
|
|
0aba789b5c | ||
|
|
73450d736a | ||
|
|
cc63c8fff5 | ||
|
|
ef6027575f | ||
|
|
07feff60ec | ||
|
|
59c07050b2 | ||
|
|
431b6c36ca | ||
|
|
2e7a9c82ff | ||
|
|
32442945ee | ||
|
|
19ac0eea08 | ||
|
|
0964424a36 | ||
|
|
b6ce60eccf | ||
|
|
a6565b52ce | ||
|
|
154fbb156d | ||
|
|
9c884d1173 | ||
|
|
4dded72878 | ||
|
|
c7bf9f00b5 | ||
|
|
b6ddd8b5ff | ||
|
|
3f9cd3a688 | ||
|
|
675897c9ab | ||
|
|
df76881c90 | ||
|
|
e54932057d | ||
|
|
a95f2a0f52 | ||
|
|
38dbd6687e | ||
|
|
4633fc22ed | ||
|
|
7e31e028fa | ||
|
|
067b2d5afb | ||
|
|
e4ba0d3062 | ||
|
|
11e49c0cc3 |
@@ -1,4 +1,5 @@
|
|||||||
{:config-paths ["status-im"]
|
{:config-paths ["status-im"]
|
||||||
|
:output {:exclude-files ["src/user.cljs" "src/dev/user.cljs"]}
|
||||||
:lint-as {legacy.status-im.utils.views/defview clojure.core/defn
|
:lint-as {legacy.status-im.utils.views/defview clojure.core/defn
|
||||||
legacy.status-im.utils.views/letsubs clojure.core/let
|
legacy.status-im.utils.views/letsubs clojure.core/let
|
||||||
reagent.core/with-let clojure.core/let
|
reagent.core/with-let clojure.core/let
|
||||||
@@ -9,25 +10,31 @@
|
|||||||
legacy.status-im.utils.styles/def clojure.core/def
|
legacy.status-im.utils.styles/def clojure.core/def
|
||||||
legacy.status-im.utils.styles/defn clojure.core/defn
|
legacy.status-im.utils.styles/defn clojure.core/defn
|
||||||
test-helpers.unit/deftest-sub clojure.core/defn
|
test-helpers.unit/deftest-sub clojure.core/defn
|
||||||
|
test-helpers.unit/deftest-event clojure.core/defn
|
||||||
|
|
||||||
taoensso.tufte/defnp clojure.core/defn}
|
taoensso.tufte/defnp clojure.core/defn}
|
||||||
:linters {:case-duplicate-test {:level :error}
|
:linters {:case-duplicate-test {:level :error}
|
||||||
:case-quoted-test {:level :error}
|
:case-quoted-test {:level :error}
|
||||||
:case-symbol-test {:level :error}
|
:case-symbol-test {:level :error}
|
||||||
:clj-kondo-config {:level :error}
|
:clj-kondo-config {:level :error}
|
||||||
:cond-else {:level :error}
|
:cond-else {:level :error}
|
||||||
|
:condition-always-true {:level :error}
|
||||||
|
:conflicting-alias {:level :error}
|
||||||
:consistent-alias {:level :error
|
:consistent-alias {:level :error
|
||||||
:aliases {clojure.set set
|
:aliases {clojure.set set
|
||||||
clojure.string string
|
clojure.string string
|
||||||
clojure.walk walk
|
clojure.walk walk
|
||||||
malli.core malli
|
malli.core malli
|
||||||
malli.dev.pretty malli.pretty
|
malli.dev.pretty malli.pretty
|
||||||
malli.dev.virhe malli.virhe
|
malli.dev.virhe malli.virhe
|
||||||
malli.error malli.error
|
malli.error malli.error
|
||||||
malli.generator malli.generator
|
malli.generator malli.generator
|
||||||
malli.transform malli.transform
|
malli.transform malli.transform
|
||||||
malli.util malli.util
|
malli.util malli.util
|
||||||
schema.core schema
|
promesa.core promesa
|
||||||
taoensso.timbre log}}
|
schema.core schema
|
||||||
|
status-im.feature-flags ff
|
||||||
|
taoensso.timbre log}}
|
||||||
:deprecated-namespace {:level :warning}
|
:deprecated-namespace {:level :warning}
|
||||||
:docstring-blank {:level :error}
|
:docstring-blank {:level :error}
|
||||||
:equals-true {:level :error}
|
:equals-true {:level :error}
|
||||||
@@ -40,11 +47,13 @@
|
|||||||
:missing-body-in-when {:level :error}
|
:missing-body-in-when {:level :error}
|
||||||
:missing-clause-in-try {:level :error}
|
:missing-clause-in-try {:level :error}
|
||||||
:missing-else-branch {:level :error}
|
:missing-else-branch {:level :error}
|
||||||
|
:multiple-async-in-deftest {:level :error}
|
||||||
:not-empty? {:level :error}
|
:not-empty? {:level :error}
|
||||||
:plus-one {:level :error}
|
:plus-one {:level :error}
|
||||||
:redundant-do {:level :error}
|
:redundant-do {:level :error}
|
||||||
:redundant-let {:level :error}
|
:redundant-let {:level :error}
|
||||||
:refer-all {:level :error}
|
:refer-all {:level :error}
|
||||||
|
:shadowed-fn-param {:level :error}
|
||||||
:shadowed-var {:level :error
|
:shadowed-var {:level :error
|
||||||
;; We temporarily use :include to define an
|
;; We temporarily use :include to define an
|
||||||
;; allowlist of core Clojure vars. In the
|
;; allowlist of core Clojure vars. In the
|
||||||
@@ -52,9 +61,11 @@
|
|||||||
;; vars, we should be able to delete this
|
;; vars, we should be able to delete this
|
||||||
;; option and lint all vars.
|
;; option and lint all vars.
|
||||||
:exclude [type name]}
|
:exclude [type name]}
|
||||||
|
:self-requiring-namespace {:level :error}
|
||||||
:single-operand-comparison {:level :error}
|
:single-operand-comparison {:level :error}
|
||||||
:syntax {:level :error}
|
:syntax {:level :error}
|
||||||
:unbound-destructuring-default {:level :error}
|
:unbound-destructuring-default {:level :error}
|
||||||
|
:underscore-in-namespace {:level :error}
|
||||||
:uninitialized-var {:level :error}
|
:uninitialized-var {:level :error}
|
||||||
:unknown-require-option {:level :error}
|
:unknown-require-option {:level :error}
|
||||||
:unreachable-code {:level :error}
|
:unreachable-code {:level :error}
|
||||||
@@ -63,7 +74,8 @@
|
|||||||
;; https://github.com/borkdude/clj-kondo/issues/867
|
;; https://github.com/borkdude/clj-kondo/issues/867
|
||||||
:unresolved-symbol {:exclude [PersistentPriorityMap.EMPTY
|
:unresolved-symbol {:exclude [PersistentPriorityMap.EMPTY
|
||||||
number
|
number
|
||||||
legacy.status-im.test-helpers/restore-app-db]}
|
legacy.status-im.test-helpers/restore-app-db
|
||||||
|
(cljs.test/is [match-strict?])]}
|
||||||
:unresolved-var {:level :error}
|
:unresolved-var {:level :error}
|
||||||
:unsorted-required-namespaces {:level :error}
|
:unsorted-required-namespaces {:level :error}
|
||||||
:unused-alias {:level :warning}
|
:unused-alias {:level :warning}
|
||||||
|
|||||||
@@ -0,0 +1,9 @@
|
|||||||
|
{:lint-as {promesa.core/-> clojure.core/->
|
||||||
|
promesa.core/->> clojure.core/->>
|
||||||
|
promesa.core/as-> clojure.core/as->
|
||||||
|
promesa.core/let clojure.core/let
|
||||||
|
promesa.core/plet clojure.core/let
|
||||||
|
promesa.core/loop clojure.core/loop
|
||||||
|
promesa.core/recur clojure.core/recur
|
||||||
|
promesa.core/with-redefs clojure.core/with-redefs
|
||||||
|
promesa.core/doseq clojure.core/doseq}}
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
(ns cljs.test
|
||||||
|
(:require [clj-kondo.hooks-api :as hooks]))
|
||||||
|
|
||||||
|
(defn deftest
|
||||||
|
"Verify test name passed to `cljs.test/deftest` is suffixed with -test and not
|
||||||
|
prefixed with test-."
|
||||||
|
[{:keys [node]}]
|
||||||
|
(let [[_ test-name-node & _] (:children node)
|
||||||
|
test-name (str (hooks/sexpr test-name-node))]
|
||||||
|
(when (and (hooks/token-node? test-name-node)
|
||||||
|
(or (not (re-find #"^.*-test$" test-name))
|
||||||
|
(re-find #"^test-.*$" test-name)))
|
||||||
|
(hooks/reg-finding! (assoc (meta test-name-node)
|
||||||
|
:message "Test name should be suffixed with -test"
|
||||||
|
:type :status-im.linter/inconsistent-test-name)))))
|
||||||
|
|
||||||
|
(comment
|
||||||
|
;; Invalid
|
||||||
|
(deftest {:node (hooks/parse-string "(deftest foo-tes (println :hello))")})
|
||||||
|
(deftest {:node (hooks/parse-string "(deftest test-foo-test (println :hello))")})
|
||||||
|
)
|
||||||
@@ -4,5 +4,8 @@
|
|||||||
test-helpers.component/get-all-by-translation-text utils.i18n/label
|
test-helpers.component/get-all-by-translation-text utils.i18n/label
|
||||||
test-helpers.component/get-by-translation-text utils.i18n/label
|
test-helpers.component/get-by-translation-text utils.i18n/label
|
||||||
test-helpers.component/query-all-by-translation-text utils.i18n/label
|
test-helpers.component/query-all-by-translation-text utils.i18n/label
|
||||||
test-helpers.component/query-by-translation-text utils.i18n/label}}
|
test-helpers.component/query-by-translation-text utils.i18n/label
|
||||||
:linters {:status-im.linter/invalid-translation-keyword {:level :error}}}
|
|
||||||
|
cljs.test/deftest cljs.test/deftest}}
|
||||||
|
:linters {:status-im.linter/invalid-translation-keyword {:level :error}
|
||||||
|
:status-im.linter/inconsistent-test-name {:level :error}}}
|
||||||
|
|||||||
@@ -4,7 +4,6 @@ DEFAULT_NETWORK=mainnet_rpc
|
|||||||
DEV_BUILD=1
|
DEV_BUILD=1
|
||||||
ETHEREUM_DEV_CLUSTER=1
|
ETHEREUM_DEV_CLUSTER=1
|
||||||
EXTENSIONS=0
|
EXTENSIONS=0
|
||||||
FLEET=status.prod
|
|
||||||
GROUP_CHATS_ENABLED=1
|
GROUP_CHATS_ENABLED=1
|
||||||
LOG_LEVEL=info
|
LOG_LEVEL=info
|
||||||
MAILSERVER_CONFIRMATIONS_ENABLED=1
|
MAILSERVER_CONFIRMATIONS_ENABLED=1
|
||||||
@@ -26,7 +25,6 @@ APN_TOPIC=im.status.ethereum.pr
|
|||||||
COMMUNITIES_ENABLED=1
|
COMMUNITIES_ENABLED=1
|
||||||
DATABASE_MANAGEMENT_ENABLED=1
|
DATABASE_MANAGEMENT_ENABLED=1
|
||||||
DELETE_MESSAGE_ENABLED=1
|
DELETE_MESSAGE_ENABLED=1
|
||||||
COLLECTIBLES_ENABLED=1
|
|
||||||
COMMANDS_ENABLED=1
|
COMMANDS_ENABLED=1
|
||||||
TWO_MINUTES_SYNCING=1
|
TWO_MINUTES_SYNCING=1
|
||||||
SWAP_ENABLED=1
|
SWAP_ENABLED=1
|
||||||
@@ -34,3 +32,7 @@ STICKERS_TEST_ENABLED=1
|
|||||||
LOCAL_PAIRING_ENABLED=1
|
LOCAL_PAIRING_ENABLED=1
|
||||||
TEST_STATEOFUS=1
|
TEST_STATEOFUS=1
|
||||||
FAST_CREATE_COMMUNITY_ENABLED=1
|
FAST_CREATE_COMMUNITY_ENABLED=1
|
||||||
|
TEST_NETWORKS_ENABLED=1
|
||||||
|
SHOW_NOT_IMPLEMENTED_FEATURES=0
|
||||||
|
ENABLE_ALERT_BANNER=0
|
||||||
|
FLAG_WALLET_CONNECT_ENABLED=1
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ DEBUG_WEBVIEW=1
|
|||||||
DEFAULT_NETWORK=goerli_rpc
|
DEFAULT_NETWORK=goerli_rpc
|
||||||
ETHEREUM_DEV_CLUSTER=1
|
ETHEREUM_DEV_CLUSTER=1
|
||||||
EXTENSIONS=0
|
EXTENSIONS=0
|
||||||
FLEET=status.prod
|
FLEET=status.staging
|
||||||
GROUP_CHATS_ENABLED=1
|
GROUP_CHATS_ENABLED=1
|
||||||
LOG_LEVEL=debug
|
LOG_LEVEL=debug
|
||||||
MAILSERVER_CONFIRMATIONS_ENABLED=0
|
MAILSERVER_CONFIRMATIONS_ENABLED=0
|
||||||
@@ -33,3 +33,10 @@ TWO_MINUTES_SYNCING=1
|
|||||||
STICKERS_TEST_ENABLED=1
|
STICKERS_TEST_ENABLED=1
|
||||||
LOCAL_PAIRING_ENABLED=1
|
LOCAL_PAIRING_ENABLED=1
|
||||||
FAST_CREATE_COMMUNITY_ENABLED=1
|
FAST_CREATE_COMMUNITY_ENABLED=1
|
||||||
|
TEST_NETWORKS_ENABLED=1
|
||||||
|
SHOW_NOT_IMPLEMENTED_FEATURES=1
|
||||||
|
DELETE_MESSAGE_FOR_ME_UNDO_TIME_LIMIT=10000
|
||||||
|
DELETE_MESSAGE_UNDO_TIME_LIMIT=10000
|
||||||
|
ENABLE_ALERT_BANNER=0
|
||||||
|
FLAG_WALLET_CONNECT_ENABLED=1
|
||||||
|
MOBILE_DATA_SYNCING_TOGGLE_ENABLE=0
|
||||||
|
|||||||
@@ -3,7 +3,6 @@ DEBUG_WEBVIEW=1
|
|||||||
DEFAULT_NETWORK=goerli_rpc
|
DEFAULT_NETWORK=goerli_rpc
|
||||||
ETHEREUM_DEV_CLUSTER=1
|
ETHEREUM_DEV_CLUSTER=1
|
||||||
EXTENSIONS=0
|
EXTENSIONS=0
|
||||||
FLEET=status.prod
|
|
||||||
GROUP_CHATS_ENABLED=1
|
GROUP_CHATS_ENABLED=1
|
||||||
LOG_LEVEL=debug
|
LOG_LEVEL=debug
|
||||||
MAILSERVER_CONFIRMATIONS_ENABLED=1
|
MAILSERVER_CONFIRMATIONS_ENABLED=1
|
||||||
@@ -35,3 +34,6 @@ ENABLE_QUO_PREVIEW=1
|
|||||||
STICKERS_TEST_ENABLED=1
|
STICKERS_TEST_ENABLED=1
|
||||||
LOCAL_PAIRING_ENABLED=1
|
LOCAL_PAIRING_ENABLED=1
|
||||||
FAST_CREATE_COMMUNITY_ENABLED=1
|
FAST_CREATE_COMMUNITY_ENABLED=1
|
||||||
|
TEST_NETWORKS_ENABLED=1
|
||||||
|
ENABLE_ALERT_BANNER=1
|
||||||
|
FLAG_WALLET_CONNECT_ENABLED=1
|
||||||
|
|||||||
@@ -2,7 +2,6 @@ DEBUG_WEBVIEW=1
|
|||||||
DEFAULT_NETWORK=mainnet_rpc
|
DEFAULT_NETWORK=mainnet_rpc
|
||||||
ETHEREUM_DEV_CLUSTER=1
|
ETHEREUM_DEV_CLUSTER=1
|
||||||
EXTENSIONS=0
|
EXTENSIONS=0
|
||||||
FLEET=status.prod
|
|
||||||
GROUP_CHATS_ENABLED=1
|
GROUP_CHATS_ENABLED=1
|
||||||
LOG_LEVEL=info
|
LOG_LEVEL=info
|
||||||
MAILSERVER_CONFIRMATIONS_ENABLED=1
|
MAILSERVER_CONFIRMATIONS_ENABLED=1
|
||||||
@@ -22,3 +21,6 @@ COMMUNITIES_ENABLED=1
|
|||||||
DATABASE_MANAGEMENT_ENABLED=1
|
DATABASE_MANAGEMENT_ENABLED=1
|
||||||
DELETE_MESSAGE_ENABLED=1
|
DELETE_MESSAGE_ENABLED=1
|
||||||
FAST_CREATE_COMMUNITY_ENABLED=0
|
FAST_CREATE_COMMUNITY_ENABLED=0
|
||||||
|
TEST_NETWORKS_ENABLED=0
|
||||||
|
ENABLE_ALERT_BANNER=1
|
||||||
|
FLAG_WALLET_CONNECT_ENABLED=1
|
||||||
|
|||||||
@@ -2,7 +2,6 @@ DEBUG_WEBVIEW=0
|
|||||||
DEFAULT_NETWORK=mainnet_rpc
|
DEFAULT_NETWORK=mainnet_rpc
|
||||||
ETHEREUM_DEV_CLUSTER=0
|
ETHEREUM_DEV_CLUSTER=0
|
||||||
EXTENSIONS=0
|
EXTENSIONS=0
|
||||||
FLEET=status.prod
|
|
||||||
GROUP_CHATS_ENABLED=1
|
GROUP_CHATS_ENABLED=1
|
||||||
LOG_LEVEL=
|
LOG_LEVEL=
|
||||||
MAILSERVER_CONFIRMATIONS_ENABLED=1
|
MAILSERVER_CONFIRMATIONS_ENABLED=1
|
||||||
@@ -18,5 +17,7 @@ PARTITIONED_TOPIC=0
|
|||||||
ENABLE_ROOT_ALERT=1
|
ENABLE_ROOT_ALERT=1
|
||||||
MAX_IMAGES_BATCH=1
|
MAX_IMAGES_BATCH=1
|
||||||
DELETE_MESSAGE_ENABLED=1
|
DELETE_MESSAGE_ENABLED=1
|
||||||
COLLECTIBLES_ENABLED=1
|
|
||||||
FAST_CREATE_COMMUNITY_ENABLED=0
|
FAST_CREATE_COMMUNITY_ENABLED=0
|
||||||
|
TEST_NETWORKS_ENABLED=0
|
||||||
|
STATUS_PROXY_STAGE_NAME=prod
|
||||||
|
FLAG_WALLET_CONNECT_ENABLED=1
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
---
|
---
|
||||||
name: MVPBug Report
|
name: Bug Report
|
||||||
about: MVPBug Report
|
about: Bug Report
|
||||||
title: ''
|
title: ''
|
||||||
labels: 'E:Mobile Bug MVP'
|
labels: ['bug', ':1234: low prio']
|
||||||
assignees: ''
|
assignees: ''
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|||||||
@@ -70,3 +70,19 @@ Documentation change PR (review please): https://github.com/status-im/status.im/
|
|||||||
| Please embed Image/Video here of the before and after. | Please embed Image/Video here of the before and after. | Please embed Image/Video here of the before and after. |
|
| Please embed Image/Video here of the before and after. | Please embed Image/Video here of the before and after. | Please embed Image/Video here of the before and after. |
|
||||||
|
|
||||||
status: ready <!-- Can be ready or wip -->
|
status: ready <!-- Can be ready or wip -->
|
||||||
|
|
||||||
|
<!-- Uncomment this section for status-go upgrade/dogfooding pull requests
|
||||||
|
|
||||||
|
- Specify potentially impacted user flows in _Areas that maybe impacted*.
|
||||||
|
- Ensure that _Steps to test_ is filled in.
|
||||||
|
|
||||||
|
### Risk
|
||||||
|
|
||||||
|
Described potential risks and worst case scenarios.
|
||||||
|
|
||||||
|
Tick **one**:
|
||||||
|
- [ ] Low risk: 2 devs MUST perform testing as specified above and attach their results as comments to this PR **before** merging.
|
||||||
|
- [ ] High risk: QA team MUST perform additional testing in the specified affected areas **before** merging.
|
||||||
|
|
||||||
|
|
||||||
|
-->
|
||||||
|
|||||||
@@ -83,6 +83,9 @@ shim.js
|
|||||||
figwheel_server.log
|
figwheel_server.log
|
||||||
.nrepl-port
|
.nrepl-port
|
||||||
|
|
||||||
|
# FlowStorm (Clojure debugger)
|
||||||
|
repl-client-debug
|
||||||
|
|
||||||
# Lein
|
# Lein
|
||||||
#
|
#
|
||||||
.lein-failures
|
.lein-failures
|
||||||
@@ -127,6 +130,8 @@ fastlane/README.md
|
|||||||
# Clj
|
# Clj
|
||||||
|
|
||||||
.cpcache/
|
.cpcache/
|
||||||
|
src/user.cljs
|
||||||
|
src/dev/user.cljs
|
||||||
|
|
||||||
# emacs
|
# emacs
|
||||||
.dir-locals.el
|
.dir-locals.el
|
||||||
@@ -194,3 +199,6 @@ test/appium/tests/users.py
|
|||||||
|
|
||||||
## git hooks
|
## git hooks
|
||||||
lefthook.yml
|
lefthook.yml
|
||||||
|
|
||||||
|
## build time logs
|
||||||
|
/logs/*.log
|
||||||
|
|||||||
@@ -1,10 +1,15 @@
|
|||||||
*
|
/*
|
||||||
|
|
||||||
|
# Format top-level js files.
|
||||||
!*.js
|
!*.js
|
||||||
!*/
|
|
||||||
*.clj-kondo
|
# Ignore all except src/js/**/*.js
|
||||||
*.shadow-cljs
|
!/src/
|
||||||
modules
|
/src/*
|
||||||
result
|
!/src/js
|
||||||
target
|
!/src/js/**/*.js
|
||||||
component-spec
|
|
||||||
/app
|
# Ignore all except translations/en.json
|
||||||
|
!/translations/
|
||||||
|
/translations/*
|
||||||
|
!/translations/en.json
|
||||||
|
|||||||
@@ -6,4 +6,8 @@ module.exports = {
|
|||||||
tabWidth: 2,
|
tabWidth: 2,
|
||||||
trailingComma: 'all',
|
trailingComma: 'all',
|
||||||
useTabs: false,
|
useTabs: false,
|
||||||
|
|
||||||
|
// JSON sorting
|
||||||
|
jsonSortOrder: '{ "/.*/": "caseInsensitiveLexical" } ',
|
||||||
|
plugins: ['prettier-plugin-sort-json'],
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -22,34 +22,38 @@
|
|||||||
:multi-lhs-hang]
|
:multi-lhs-hang]
|
||||||
|
|
||||||
:fn-map
|
:fn-map
|
||||||
{"reg-sub" :arg1-pair
|
{"reg-sub" :arg1-pair
|
||||||
"h/describe" :arg1-body
|
"h/describe" :arg1-body
|
||||||
"h/describe-skip" :arg1-body
|
"h/describe-skip" :arg1-body
|
||||||
"h/describe-only" :arg1-body
|
"h/describe-only" :arg1-body
|
||||||
"h/test" :arg1-body
|
"h/test" :arg1-body
|
||||||
"h/test-skip" :arg1-body
|
"h/test-skip" :arg1-body
|
||||||
"h/test-only" :arg1-body
|
"h/test-only" :arg1-body
|
||||||
"global.describe" :arg1-body
|
"test/async" :arg1-body
|
||||||
"global.test" :arg1-body
|
"test/use-fixtures" :arg1-body
|
||||||
"list-comp" :binding
|
"global.describe" :arg1-body
|
||||||
"defview" :arg1-body
|
"global.test" :arg1-body
|
||||||
"letsubs" :binding
|
"list-comp" :binding
|
||||||
"with-let" "let"
|
"defview" :arg1-body
|
||||||
"reg-event-fx" :arg1-pair
|
"letsubs" :binding
|
||||||
"reg-fx" :arg1-pair
|
"with-let" "let"
|
||||||
"testing" :arg1-body
|
"reg-event-fx" :arg1-pair
|
||||||
"deftest-sub" :arg1-body
|
"reg-fx" :arg1-pair
|
||||||
"wait-for" :arg1-body
|
"testing" :arg1-body
|
||||||
"with-deps-check" :arg1-body
|
"deftest-sub" :arg1-body
|
||||||
"schema/=>" :arg1-body
|
"deftest-event" :arg1-body
|
||||||
"->" [:noarg1-body
|
"test-async" :arg1-body
|
||||||
{:list {:constant-pair? false :force-nl? false}
|
"wait-for" :arg1-body
|
||||||
:next-inner-restore [[:list :constant-pair?]]}]
|
"with-deps-check" :arg1-body
|
||||||
"set!" "reset!"
|
"schema/=>" :arg1-body
|
||||||
"assoc-when" "assoc"
|
"->" [:noarg1-body
|
||||||
"assoc-some" "assoc"
|
{:list {:constant-pair? false :force-nl? false}
|
||||||
"conj-when" "conj"
|
:next-inner-restore [[:list :constant-pair?]]}]
|
||||||
"conj-some" "conj"}
|
"set!" "reset!"
|
||||||
|
"assoc-when" "assoc"
|
||||||
|
"assoc-some" "assoc"
|
||||||
|
"conj-when" "conj"
|
||||||
|
"conj-some" "conj"}
|
||||||
|
|
||||||
:style-map
|
:style-map
|
||||||
{:no-comma {:map {:comma? false}}
|
{:no-comma {:map {:comma? false}}
|
||||||
|
|||||||
@@ -32,10 +32,12 @@ ifndef BUILD_TAG
|
|||||||
export BUILD_TAG := $(shell git rev-parse --short HEAD)
|
export BUILD_TAG := $(shell git rev-parse --short HEAD)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# We don't want to use /run/user/$UID because it runs out of space too easilly.
|
# We don't want to use /run/user/$UID because it runs out of space too easily.
|
||||||
export TMPDIR = /tmp/tmp-status-mobile-$(BUILD_TAG)
|
export TMPDIR = /tmp/tmp-status-mobile-$(BUILD_TAG)
|
||||||
# This has to be specified for both the Node.JS server process and the Qt process.
|
# This has to be specified for both the Node.JS server process and the Qt process.
|
||||||
export REACT_SERVER_PORT ?= 5001
|
export REACT_SERVER_PORT ?= 5001
|
||||||
|
# Default metro port used by scripts/run-android.sh.
|
||||||
|
export RCT_METRO_PORT ?= 8081
|
||||||
# Fix for ERR_OSSL_EVP_UNSUPPORTED error.
|
# Fix for ERR_OSSL_EVP_UNSUPPORTED error.
|
||||||
export NODE_OPTIONS += --openssl-legacy-provider
|
export NODE_OPTIONS += --openssl-legacy-provider
|
||||||
# The path can be anything, but home is usually safest.
|
# The path can be anything, but home is usually safest.
|
||||||
@@ -44,7 +46,7 @@ export KEYSTORE_PATH ?= $(HOME)/.gradle/status-im.keystore
|
|||||||
# Our custom config is located in nix/nix.conf
|
# Our custom config is located in nix/nix.conf
|
||||||
export NIX_USER_CONF_FILES = $(PWD)/nix/nix.conf
|
export NIX_USER_CONF_FILES = $(PWD)/nix/nix.conf
|
||||||
# Location of symlinks to derivations that should not be garbage collected
|
# Location of symlinks to derivations that should not be garbage collected
|
||||||
export _NIX_GCROOTS = /nix/var/nix/gcroots/per-user/$(USER)/status-mobile
|
export _NIX_GCROOTS = ./.nix-gcroots
|
||||||
# Defines which variables will be kept for Nix pure shell, use semicolon as divider
|
# Defines which variables will be kept for Nix pure shell, use semicolon as divider
|
||||||
export _NIX_KEEP ?= TMPDIR,BUILD_ENV,\
|
export _NIX_KEEP ?= TMPDIR,BUILD_ENV,\
|
||||||
BUILD_TYPE,BUILD_NUMBER,COMMIT_HASH,\
|
BUILD_TYPE,BUILD_NUMBER,COMMIT_HASH,\
|
||||||
@@ -54,12 +56,6 @@ export _NIX_KEEP ?= TMPDIR,BUILD_ENV,\
|
|||||||
# Useful for Android release builds
|
# Useful for Android release builds
|
||||||
TMP_BUILD_NUMBER := $(shell ./scripts/version/gen_build_no.sh | cut -c1-10)
|
TMP_BUILD_NUMBER := $(shell ./scripts/version/gen_build_no.sh | cut -c1-10)
|
||||||
|
|
||||||
# MacOS root is read-only, read nix/README.md for details
|
|
||||||
UNAME_S := $(shell uname -s)
|
|
||||||
ifeq ($(UNAME_S),Darwin)
|
|
||||||
export NIX_IGNORE_SYMLINK_STORE=1
|
|
||||||
endif
|
|
||||||
|
|
||||||
#----------------
|
#----------------
|
||||||
# Nix targets
|
# Nix targets
|
||||||
#----------------
|
#----------------
|
||||||
@@ -143,7 +139,7 @@ _install-hooks: ##@prepare Create prepare-commit-msg git hook symlink
|
|||||||
|
|
||||||
# Remove directories and ignored files
|
# Remove directories and ignored files
|
||||||
clean: SHELL := /bin/sh
|
clean: SHELL := /bin/sh
|
||||||
clean: _fix-node-perms _tmpdir-rm ##@prepare Remove all output folders
|
clean: _fix-node-perms _tmpdir-rm ios-clean android-clean ##@prepare Remove all output folders
|
||||||
git clean -dXf
|
git clean -dXf
|
||||||
|
|
||||||
# Remove directories, ignored and non-ignored files
|
# Remove directories, ignored and non-ignored files
|
||||||
@@ -160,10 +156,12 @@ pod-install: export TARGET := ios
|
|||||||
pod-install: ##@prepare Run 'pod install' to install podfiles and update Podfile.lock
|
pod-install: ##@prepare Run 'pod install' to install podfiles and update Podfile.lock
|
||||||
cd ios && pod install; cd --
|
cd ios && pod install; cd --
|
||||||
|
|
||||||
|
FLEETS_FILE := ./resources/config/fleets.json
|
||||||
update-fleets: ##@prepare Download up-to-date JSON file with current fleets state
|
update-fleets: ##@prepare Download up-to-date JSON file with current fleets state
|
||||||
curl -s https://fleets.status.im/ \
|
curl -s https://fleets.status.im/ \
|
||||||
| sed 's/"warning": "/"warning": "DO NOT EDIT! /' \
|
| sed 's/"warning": "/"warning": "DO NOT EDIT! /' \
|
||||||
> resources/config/fleets.json
|
> $(FLEETS_FILE)
|
||||||
|
echo >> $(FLEETS_FILE)
|
||||||
|
|
||||||
$(KEYSTORE_PATH): export TARGET := keytool
|
$(KEYSTORE_PATH): export TARGET := keytool
|
||||||
$(KEYSTORE_PATH):
|
$(KEYSTORE_PATH):
|
||||||
@@ -198,6 +196,10 @@ xcode-clean: XCODE_HOME := $(HOME)/Library/Developer/Xcode
|
|||||||
xcode-clean: ##@prepare Clean XCode derived data and archives
|
xcode-clean: ##@prepare Clean XCode derived data and archives
|
||||||
rm -fr $(XCODE_HOME)/DerivedData/StatusIm-* $(XCODE_HOME)/Archives/*/StatusIm*
|
rm -fr $(XCODE_HOME)/DerivedData/StatusIm-* $(XCODE_HOME)/Archives/*/StatusIm*
|
||||||
|
|
||||||
|
ios-simulator-cache-clean: SHELL := /bin/sh
|
||||||
|
ios-simulator-cache-clean: ##@prepare Clean iOS Simulator Caches
|
||||||
|
rm -rf ~/Library/Developer/CoreSimulator/Cache
|
||||||
|
|
||||||
#----------------
|
#----------------
|
||||||
# Release builds
|
# Release builds
|
||||||
#----------------
|
#----------------
|
||||||
@@ -212,16 +214,14 @@ build-fdroid: ##@build Build release for F-Droid
|
|||||||
|
|
||||||
build-android: export BUILD_ENV ?= prod
|
build-android: export BUILD_ENV ?= prod
|
||||||
build-android: export BUILD_TYPE ?= nightly
|
build-android: export BUILD_TYPE ?= nightly
|
||||||
build-android: export BUILD_NUMBER ?= $(TMP_BUILD_NUMBER)
|
build-android: export ORG_GRADLE_PROJECT_versionCode ?= $(TMP_BUILD_NUMBER)
|
||||||
build-android: export ANDROID_ABI_SPLIT ?= false
|
|
||||||
build-android: export ANDROID_ABI_INCLUDE ?= armeabi-v7a;arm64-v8a;x86
|
|
||||||
build-android: ##@build Build unsigned Android APK
|
build-android: ##@build Build unsigned Android APK
|
||||||
@scripts/build-android.sh
|
@scripts/build-android.sh
|
||||||
|
|
||||||
release-android: export TARGET := keytool
|
release-android: export TARGET := keytool
|
||||||
release-android: export KEYSTORE_PATH ?= $(HOME)/.gradle/status-im.keystore
|
release-android: export KEYSTORE_PATH ?= $(HOME)/.gradle/status-im.keystore
|
||||||
release-android: keystore build-android ##@build Build signed Android APK
|
release-android: keystore build-android ##@build Build signed Android APK
|
||||||
@scripts/sign-android.sh result/app-release-unsigned.apk
|
@scripts/sign-android.sh result/app-arm64-v8a-release-unsigned.apk
|
||||||
|
|
||||||
release-ios: export TARGET := ios
|
release-ios: export TARGET := ios
|
||||||
release-ios: export IOS_STATUS_GO_TARGETS := ios/arm64
|
release-ios: export IOS_STATUS_GO_TARGETS := ios/arm64
|
||||||
@@ -265,7 +265,7 @@ run-clojure: ##@run Watch for and build Clojure changes for mobile
|
|||||||
|
|
||||||
run-metro: export TARGET := clojure
|
run-metro: export TARGET := clojure
|
||||||
run-metro: ##@run Start Metro to build React Native changes
|
run-metro: ##@run Start Metro to build React Native changes
|
||||||
@scripts/start-react-native.sh
|
@scripts/run-metro.sh
|
||||||
|
|
||||||
run-re-frisk: export TARGET := clojure
|
run-re-frisk: export TARGET := clojure
|
||||||
run-re-frisk: ##@run Start re-frisk server
|
run-re-frisk: ##@run Start re-frisk server
|
||||||
@@ -273,22 +273,18 @@ run-re-frisk: ##@run Start re-frisk server
|
|||||||
|
|
||||||
# TODO: Migrate this to a Nix recipe, much the same way as nix/mobile/android/targets/release-android.nix
|
# TODO: Migrate this to a Nix recipe, much the same way as nix/mobile/android/targets/release-android.nix
|
||||||
run-android: export TARGET := android
|
run-android: export TARGET := android
|
||||||
# INFO: If it's empty (no devices attached, parsing issues, script error) - for Nix it's the same as not set.
|
# Disabled for debug builds to avoid 'maximum call stack exceeded' errors.
|
||||||
run-android: export ANDROID_ABI_INCLUDE ?= $(shell ./scripts/adb_devices_abis.sh)
|
# https://github.com/status-im/status-mobile/issues/18493
|
||||||
|
run-android: export ORG_GRADLE_PROJECT_hermesEnabled := false
|
||||||
run-android: ##@run Build Android APK and start it on the device
|
run-android: ##@run Build Android APK and start it on the device
|
||||||
npx react-native run-android --appIdSuffix debug
|
@scripts/run-android.sh
|
||||||
|
|
||||||
SIMULATOR=iPhone 13
|
SIMULATOR=iPhone 13
|
||||||
# TODO: fix IOS_STATUS_GO_TARGETS to be either amd64 or arm64 when RN is upgraded
|
# TODO: fix IOS_STATUS_GO_TARGETS to be either amd64 or arm64 when RN is upgraded
|
||||||
run-ios: export TARGET := ios
|
run-ios: export TARGET := ios
|
||||||
run-ios: export IOS_STATUS_GO_TARGETS := ios/arm64;iossimulator/amd64
|
run-ios: export IOS_STATUS_GO_TARGETS := ios/arm64;iossimulator/amd64
|
||||||
run-ios: export XCBeautify=$(shell which xcbeautify) # for react-native-cli to pick this up and to auto format output
|
run-ios: ##@run Build iOS app and start it in on the simulator
|
||||||
run-ios: ##@run Build iOS app and start it in a simulator/device
|
@scripts/run-ios.sh "${SIMULATOR}"
|
||||||
ifneq ("$(SIMULATOR)", "")
|
|
||||||
npx react-native run-ios --simulator="$(SIMULATOR)"
|
|
||||||
else
|
|
||||||
npx react-native run-ios
|
|
||||||
endif
|
|
||||||
|
|
||||||
show-ios-devices: ##@other shows connected ios device and its name
|
show-ios-devices: ##@other shows connected ios device and its name
|
||||||
xcrun xctrace list devices
|
xcrun xctrace list devices
|
||||||
@@ -296,11 +292,8 @@ show-ios-devices: ##@other shows connected ios device and its name
|
|||||||
# TODO: fix IOS_STATUS_GO_TARGETS to be either amd64 or arm64 when RN is upgraded
|
# TODO: fix IOS_STATUS_GO_TARGETS to be either amd64 or arm64 when RN is upgraded
|
||||||
run-ios-device: export TARGET := ios
|
run-ios-device: export TARGET := ios
|
||||||
run-ios-device: export IOS_STATUS_GO_TARGETS := ios/arm64;iossimulator/amd64
|
run-ios-device: export IOS_STATUS_GO_TARGETS := ios/arm64;iossimulator/amd64
|
||||||
run-ios-device: ##@run iOS app and start it on a connected device by its name
|
run-ios-device: ##@run iOS app and start it on the first connected iPhone
|
||||||
ifndef DEVICE_NAME
|
@scripts/run-ios-device.sh
|
||||||
$(error Usage: make run-ios-device DEVICE_NAME=your-device-name)
|
|
||||||
endif
|
|
||||||
react-native run-ios --device "$(DEVICE_NAME)"
|
|
||||||
|
|
||||||
#--------------
|
#--------------
|
||||||
# Tests
|
# Tests
|
||||||
@@ -322,7 +315,7 @@ lint: ##@test Run code style checks
|
|||||||
scripts/lint/translations.clj && \
|
scripts/lint/translations.clj && \
|
||||||
zprint '{:search-config? true}' -sfc $$ALL_CLOJURE_FILES && \
|
zprint '{:search-config? true}' -sfc $$ALL_CLOJURE_FILES && \
|
||||||
sh scripts/lint/trailing-newline.sh && \
|
sh scripts/lint/trailing-newline.sh && \
|
||||||
node_modules/.bin/prettier --write .
|
node_modules/.bin/prettier --check .
|
||||||
|
|
||||||
# NOTE: We run the linter twice because of https://github.com/kkinnear/zprint/issues/271
|
# NOTE: We run the linter twice because of https://github.com/kkinnear/zprint/issues/271
|
||||||
lint-fix: export TARGET := clojure
|
lint-fix: export TARGET := clojure
|
||||||
@@ -340,13 +333,14 @@ shadow-server:##@ Start shadow-cljs in server mode for watching
|
|||||||
|
|
||||||
_test-clojure: export TARGET := clojure
|
_test-clojure: export TARGET := clojure
|
||||||
_test-clojure: export WATCH ?= false
|
_test-clojure: export WATCH ?= false
|
||||||
|
_test-clojure: status-go-library
|
||||||
_test-clojure:
|
_test-clojure:
|
||||||
ifeq ($(WATCH), true)
|
ifeq ($(WATCH), true)
|
||||||
yarn install && \
|
yarn node-pre-gyp rebuild && \
|
||||||
yarn shadow-cljs compile mocks && \
|
yarn shadow-cljs compile mocks && \
|
||||||
nodemon --exec "yarn shadow-cljs compile test && node --require ./test-resources/override.js $$SHADOW_OUTPUT_TO" -e cljs
|
nodemon --exec "yarn shadow-cljs compile test && node --require ./test-resources/override.js $$SHADOW_OUTPUT_TO" -e cljs
|
||||||
else
|
else
|
||||||
yarn install && \
|
yarn node-pre-gyp rebuild && \
|
||||||
yarn shadow-cljs compile mocks && \
|
yarn shadow-cljs compile mocks && \
|
||||||
yarn shadow-cljs compile test && \
|
yarn shadow-cljs compile test && \
|
||||||
node --require ./test-resources/override.js "$$SHADOW_OUTPUT_TO"
|
node --require ./test-resources/override.js "$$SHADOW_OUTPUT_TO"
|
||||||
@@ -357,50 +351,69 @@ test: export SHADOW_NS_REGEXP := .*-test$$
|
|||||||
test: ##@test Run all Clojure tests
|
test: ##@test Run all Clojure tests
|
||||||
test: _test-clojure
|
test: _test-clojure
|
||||||
|
|
||||||
|
# Note: we need to override the :output-to and :ns-regexp options because
|
||||||
|
# shadow-cljs has a bug where it will not read from the env vars to expand the
|
||||||
|
# configuration when the shadow-cljs mobile target is already running.
|
||||||
|
test-watch-for-repl: export TARGET := default
|
||||||
test-watch-for-repl: export SHADOW_OUTPUT_TO := target/test/test.js
|
test-watch-for-repl: export SHADOW_OUTPUT_TO := target/test/test.js
|
||||||
test-watch-for-repl: export SHADOW_NS_REGEXP := .*-test$$
|
test-watch-for-repl: export SHADOW_NS_REGEXP := .*-test$$
|
||||||
test-watch-for-repl: ##@test Watch all Clojure tests and support REPL connections
|
test-watch-for-repl: ##@test Watch all Clojure tests and support REPL connections
|
||||||
yarn install
|
rm -f "$$SHADOW_OUTPUT_TO" && \
|
||||||
rm -f target/test/test.js
|
yarn install && shadow-cljs compile mocks && \
|
||||||
yarn shadow-cljs compile mocks && \
|
|
||||||
concurrently --kill-others --prefix-colors 'auto' --names 'build,repl' \
|
concurrently --kill-others --prefix-colors 'auto' --names 'build,repl' \
|
||||||
'yarn shadow-cljs watch test --verbose' \
|
"yarn shadow-cljs watch test --verbose --config-merge '{:output-to \"$(SHADOW_OUTPUT_TO)\" :ns-regexp \"$(SHADOW_NS_REGEXP)\"}'" \
|
||||||
"until [ -f $$SHADOW_OUTPUT_TO ] ; do sleep 1 ; done ; node --require ./test-resources/override.js $$SHADOW_OUTPUT_TO --repl"
|
"until [ -f $$SHADOW_OUTPUT_TO ] ; do sleep 1 ; done ; node --require ./test-resources/override.js $$SHADOW_OUTPUT_TO --repl"
|
||||||
|
|
||||||
test-unit: export SHADOW_OUTPUT_TO := target/unit_test/test.js
|
test-unit: export SHADOW_OUTPUT_TO := target/unit_test/test.js
|
||||||
test-unit: export SHADOW_NS_REGEXP := ^(?!status-im\.integration-test).*-test$$
|
test-unit: export SHADOW_NS_REGEXP := ^(?!tests\.integration-test)(?!tests\.contract-test).*-test$$
|
||||||
test-unit: ##@test Run unit tests
|
test-unit: ##@test Run unit tests
|
||||||
test-unit: _test-clojure
|
test-unit: _test-clojure
|
||||||
|
|
||||||
test-integration: export SHADOW_OUTPUT_TO := target/integration_test/test.js
|
test-integration: export SHADOW_OUTPUT_TO := target/integration_test/test.js
|
||||||
test-integration: export SHADOW_NS_REGEXP := ^status-im\.integration-test.*$$
|
test-integration: export SHADOW_NS_REGEXP := ^tests\.integration-test.*$$
|
||||||
test-integration: ##@test Run integration tests
|
test-integration: ##@test Run integration tests
|
||||||
test-integration: _test-clojure
|
test-integration: _test-clojure
|
||||||
|
|
||||||
android-test: jsbundle
|
test-contract: export SHADOW_OUTPUT_TO := target/contract_test/test.js
|
||||||
android-test: export TARGET := android
|
test-contract: export SHADOW_NS_REGEXP := ^tests\.contract-test.*$$
|
||||||
android-test:
|
test-contract: ##@test Run contract tests
|
||||||
|
test-contract: _test-clojure
|
||||||
|
|
||||||
|
test-android: jsbundle
|
||||||
|
test-android: export TARGET := android
|
||||||
|
test-android: ##@test Android Gradle test
|
||||||
cd android && ./gradlew test
|
cd android && ./gradlew test
|
||||||
|
|
||||||
component-test-watch: export TARGET := clojure
|
test-component-watch: export TARGET := clojure
|
||||||
component-test-watch: export COMPONENT_TEST := true
|
test-component-watch: export COMPONENT_TEST := true
|
||||||
component-test-watch: export BABEL_ENV := test
|
test-component-watch: export BABEL_ENV := test
|
||||||
component-test-watch: export JEST_USE_SILENT_REPORTER := false
|
test-component-watch: export JEST_USE_SILENT_REPORTER := false
|
||||||
component-test-watch: ##@ Watch tests and re-run no changes to cljs files
|
test-component-watch: ##@ Watch tests and re-run no changes to cljs files
|
||||||
@scripts/check-metro-shadow-process.sh
|
@scripts/check-metro-shadow-process.sh
|
||||||
rm -rf ./component-spec
|
rm -rf ./component-spec
|
||||||
nodemon --exec 'yarn shadow-cljs compile component-test && jest --config=test/jest/jest.config.js --testEnvironment node ' -e cljs
|
nodemon --exec 'yarn shadow-cljs compile component-test && jest --config=test/jest/jest.config.js --testEnvironment node ' -e cljs
|
||||||
|
|
||||||
component-test: export TARGET := clojure
|
test-component: export TARGET := clojure
|
||||||
component-test: export COMPONENT_TEST := true
|
test-component: export COMPONENT_TEST := true
|
||||||
component-test: export BABEL_ENV := test
|
test-component: export BABEL_ENV := test
|
||||||
component-test: export JEST_USE_SILENT_REPORTER := false
|
test-component: export JEST_USE_SILENT_REPORTER := false
|
||||||
component-test: ##@test Run component tests once in NodeJS
|
test-component: ##@test Run component tests once in NodeJS
|
||||||
@scripts/check-metro-shadow-process.sh
|
@scripts/check-metro-shadow-process.sh
|
||||||
rm -rf ./component-spec
|
rm -rf ./component-spec
|
||||||
yarn shadow-cljs compile component-test && \
|
yarn shadow-cljs compile component-test && \
|
||||||
jest --clearCache && jest --config=test/jest/jest.config.js --testEnvironment node
|
jest --clearCache && jest --config=test/jest/jest.config.js --testEnvironment node
|
||||||
|
|
||||||
|
# Reference: https://flow-storm.github.io/flow-storm-debugger/user_guide.html#_debugging_react_native_applications
|
||||||
|
run-flow-storm: export SHADOW_CLJS_BUILD_ID := :mobile
|
||||||
|
run-flow-storm: export TARGET := clojure
|
||||||
|
run-flow-storm: export GDK_DPI_SCALE := 1.0
|
||||||
|
run-flow-storm: ##@run Start FlowStorm debugger
|
||||||
|
clj -Sforce -Sdeps '{:deps {com.github.jpmonettas/flow-storm-dbg {:mvn/version "3.7.5"}}}' \
|
||||||
|
-X flow-storm.debugger.main/start-debugger \
|
||||||
|
:port 7888 \
|
||||||
|
:repl-type :shadow \
|
||||||
|
:build-id $(SHADOW_CLJS_BUILD_ID)
|
||||||
|
|
||||||
#--------------
|
#--------------
|
||||||
# Other
|
# Other
|
||||||
#--------------
|
#--------------
|
||||||
@@ -411,25 +424,48 @@ geth-connect: ##@other Connect to Geth on the device
|
|||||||
build/bin/geth attach http://localhost:8545
|
build/bin/geth attach http://localhost:8545
|
||||||
|
|
||||||
ios-clean: SHELL := /bin/sh
|
ios-clean: SHELL := /bin/sh
|
||||||
|
ios-clean: ios-simulator-cache-clean
|
||||||
ios-clean: ##@prepare Clean iOS build artifacts
|
ios-clean: ##@prepare Clean iOS build artifacts
|
||||||
git clean -dxf -f target/ios
|
git clean -dxf -f target/ios
|
||||||
|
|
||||||
android-clean: export TARGET := gradle
|
android-clean: SHELL := /bin/sh
|
||||||
android-clean: ##@prepare Clean Gradle state
|
android-clean: ##@prepare Clean Gradle state
|
||||||
git clean -dxf -f ./android/app/build; \
|
git clean -dxf -f ./android/app/build; \
|
||||||
[[ -d android/.gradle ]] && cd android && ./gradlew clean
|
rm -rf android/.gradle \
|
||||||
|
rm -rf android/build \
|
||||||
|
rm -rf ~/.gradle
|
||||||
|
|
||||||
|
|
||||||
|
android-ports: export FLOWSTORM_PORT ?= 7722
|
||||||
android-ports: export TARGET := android-sdk
|
android-ports: export TARGET := android-sdk
|
||||||
|
android-ports: export RCT_METRO_PORT ?= 8081
|
||||||
android-ports: ##@other Add proxies to Android Device/Simulator
|
android-ports: ##@other Add proxies to Android Device/Simulator
|
||||||
adb reverse tcp:8081 tcp:8081 && \
|
adb reverse tcp:$(RCT_METRO_PORT) tcp:$(RCT_METRO_PORT) && \
|
||||||
adb reverse tcp:3449 tcp:3449 && \
|
adb reverse tcp:3449 tcp:3449 && \
|
||||||
adb reverse tcp:4567 tcp:4567 && \
|
adb reverse tcp:4567 tcp:4567 && \
|
||||||
|
adb reverse tcp:$(FLOWSTORM_PORT) tcp:$(FLOWSTORM_PORT) && \
|
||||||
adb forward tcp:5561 tcp:5561
|
adb forward tcp:5561 tcp:5561
|
||||||
|
|
||||||
android-devices: export TARGET := android-sdk
|
android-devices: export TARGET := android-sdk
|
||||||
android-devices: ##@other Invoke adb devices
|
android-devices: ##@other Invoke adb devices
|
||||||
adb devices
|
adb devices
|
||||||
|
|
||||||
|
android-pull-geth: export TARGET := android-sdk
|
||||||
|
android-pull-geth: export VERSION ?= debug
|
||||||
|
android-pull-geth:
|
||||||
|
adb pull "/storage/emulated/0/Android/data/im.status.ethereum$$( [ "$(VERSION)" = "release" ] || echo ".$(VERSION)" )/files/Download/geth.log"
|
||||||
|
|
||||||
|
android-tail-geth: export TARGET := android-sdk
|
||||||
|
android-tail-geth: export VERSION ?= debug
|
||||||
|
android-tail-geth:
|
||||||
|
adb shell 'while true; do cat; sleep 1; done < /storage/emulated/0/Android/data/im.status.ethereum$$( [ "$(VERSION)" = "release" ] || echo ".$(VERSION)" )/files/Download/geth.log'
|
||||||
|
|
||||||
|
android-clean-geth: export TARGET := android-sdk
|
||||||
|
android-clean-geth: export VERSION ?= debug
|
||||||
|
android-clean-geth:
|
||||||
|
adb shell 'rm /storage/emulated/0/Android/data/im.status.ethereum$$( [ "$(VERSION)" = "release" ] || echo ".$(VERSION)" )/files/Download/geth.log'
|
||||||
|
|
||||||
|
|
||||||
android-logcat: export TARGET := android-sdk
|
android-logcat: export TARGET := android-sdk
|
||||||
android-logcat: ##@other Read status-mobile logs from Android phone using adb
|
android-logcat: ##@other Read status-mobile logs from Android phone using adb
|
||||||
adb logcat | grep -e RNBootstrap -e ReactNativeJS -e ReactNative -e StatusModule -e StatusNativeLogs -e 'F DEBUG :' -e 'Go :' -e 'GoLog :' -e 'libc :'
|
adb logcat | grep -e RNBootstrap -e ReactNativeJS -e ReactNative -e StatusModule -e StatusNativeLogs -e 'F DEBUG :' -e 'Go :' -e 'GoLog :' -e 'libc :'
|
||||||
@@ -443,6 +479,10 @@ _list: SHELL := /bin/sh
|
|||||||
_list:
|
_list:
|
||||||
@$(MAKE) -pRrq -f $(lastword $(MAKEFILE_LIST)) : 2>/dev/null | awk -v RS= -F: '/^# File/,/^# Finished Make data base/ {if ($$1 !~ "^[#.]") {print $$1}}' | sort | egrep -v -e '^[^[:alnum:]]' -e '^$@$$'
|
@$(MAKE) -pRrq -f $(lastword $(MAKEFILE_LIST)) : 2>/dev/null | awk -v RS= -F: '/^# File/,/^# Finished Make data base/ {if ($$1 !~ "^[#.]") {print $$1}}' | sort | egrep -v -e '^[^[:alnum:]]' -e '^$@$$'
|
||||||
|
|
||||||
|
patch-file: export TARGET := default
|
||||||
|
patch-file: ##@other Generates patch file for npm deps
|
||||||
|
@scripts/patch-npm-lib.sh
|
||||||
|
|
||||||
#--------------
|
#--------------
|
||||||
# REPLs
|
# REPLs
|
||||||
#--------------
|
#--------------
|
||||||
@@ -452,3 +492,18 @@ repl-clojure: ##@repl Start Clojure repl for mobile App
|
|||||||
yarn shadow-cljs cljs-repl mobile
|
yarn shadow-cljs cljs-repl mobile
|
||||||
|
|
||||||
repl-nix: nix-repl ##@repl Start an interactive Nix REPL
|
repl-nix: nix-repl ##@repl Start an interactive Nix REPL
|
||||||
|
|
||||||
|
#--------------
|
||||||
|
# Dev Automation Flows
|
||||||
|
#--------------
|
||||||
|
|
||||||
|
auto-login: export TARGET := default
|
||||||
|
auto-login: ##@auto runs flow for login or onboarding app on simulator/emulator
|
||||||
|
maestro test "maestro/create-account-or-login.yaml"
|
||||||
|
|
||||||
|
auto-custom: export TARGET := default
|
||||||
|
auto-custom: ##@auto runs any custom maestro automation flow on simulator/emulator
|
||||||
|
ifndef FLOW
|
||||||
|
$(error Usage: make automate FLOW=your-maestro-flow-file.yaml)
|
||||||
|
endif
|
||||||
|
maestro test "$(FLOW)"
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ project dependencies, coding guidelines and testing procedures.
|
|||||||
Check out our [coding guidelines](doc/new-guidelines.md).
|
Check out our [coding guidelines](doc/new-guidelines.md).
|
||||||
|
|
||||||
- **Community Management**
|
- **Community Management**
|
||||||
Metcalfe's law states that the value of a network is proportional to the square of the number of connected users of the system - without community Status is meaningless. We're looking to create a positive, fun environment to explore new ideas, experiment and grow the Status community. Building a community takes a lot of work but the people you'll meet and the long-lasting relationships you form will be well worth it, check out our [Mission and Community Principles](https://status.im/about)
|
Metcalfe's law states that the value of a network is proportional to the square of the number of connected users of the system - without community Status is meaningless. We're looking to create a positive, fun environment to explore new ideas, experiment and grow the Status community. Building a community takes a lot of work but the people you'll meet and the long-lasting relationships you form will be well worth it, check out our [Mission and Community Principles](https://status.app/manifesto)
|
||||||
|
|
||||||
- **Specification / Documentation**
|
- **Specification / Documentation**
|
||||||
John Dewey once said, "Education is not preparation for life; education is life *itself* ". Developers and Designers need guidance and it all starts from documentation and specifications. Our software is only as good as its documentation, check out our [docs](doc/) and see how you can improve what we have.
|
John Dewey once said, "Education is not preparation for life; education is life *itself* ". Developers and Designers need guidance and it all starts from documentation and specifications. Our software is only as good as its documentation, check out our [docs](doc/) and see how you can improve what we have.
|
||||||
@@ -53,10 +53,10 @@ Status is a visual interface to make permanent changes on the Blockchain, it han
|
|||||||
|
|
||||||
- **Evangelism**
|
- **Evangelism**
|
||||||
Help us spread the word! Tell a friend *right now*, in fact, tell **everyone** - yell from a mountain if you have to, every person counts! If you've got a great story to tell or have some interesting way you've spread the word about Status let us know about it in our [chat](https://join.status.im/chat/public/status)
|
Help us spread the word! Tell a friend *right now*, in fact, tell **everyone** - yell from a mountain if you have to, every person counts! If you've got a great story to tell or have some interesting way you've spread the word about Status let us know about it in our [chat](https://join.status.im/chat/public/status)
|
||||||
|
|
||||||
## Give me Binaries!
|
## Give me Binaries!
|
||||||
|
|
||||||
You can get our Beta builds for both Android and iOS on our [website](https://status.im), through our [nightly builds](https://status.im/nightly/), or by [building it yourself](https://status.im/technical/build_status/).
|
You can get our Beta builds for both Android and iOS on our [website](https://status.app), through our [nightly builds](https://status.im/nightly/), or by [building it yourself](doc/starting-guide.md).
|
||||||
|
|
||||||
## Core Contributors
|
## Core Contributors
|
||||||
|
|
||||||
|
|||||||
@@ -59,7 +59,7 @@ react {
|
|||||||
/**
|
/**
|
||||||
* Set this to true to Run Proguard on Release builds to minify the Java bytecode.
|
* Set this to true to Run Proguard on Release builds to minify the Java bytecode.
|
||||||
*/
|
*/
|
||||||
def enableProguardInReleaseBuilds = false
|
def enableProguardInReleaseBuilds = true
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The preferred build flavor of JavaScriptCore (JSC)
|
* The preferred build flavor of JavaScriptCore (JSC)
|
||||||
@@ -83,7 +83,6 @@ def jscFlavor = 'org.webkit:android-jsc:+'
|
|||||||
*/
|
*/
|
||||||
def enableHermes = hermesEnabled.toBoolean();
|
def enableHermes = hermesEnabled.toBoolean();
|
||||||
|
|
||||||
|
|
||||||
def getCommitHash = { ->
|
def getCommitHash = { ->
|
||||||
if (project.hasProperty("commitHash")) {
|
if (project.hasProperty("commitHash")) {
|
||||||
return project.commitHash
|
return project.commitHash
|
||||||
@@ -138,11 +137,24 @@ def getEnvOrConfig = { varName ->
|
|||||||
android {
|
android {
|
||||||
ndkVersion rootProject.ext.ndkVersion
|
ndkVersion rootProject.ext.ndkVersion
|
||||||
|
|
||||||
compileSdkVersion rootProject.ext.compileSdkVersion
|
buildToolsVersion rootProject.ext.buildToolsVersion
|
||||||
|
compileSdk rootProject.ext.compileSdkVersion
|
||||||
|
|
||||||
|
kotlinOptions {
|
||||||
|
jvmTarget = JavaVersion.VERSION_17
|
||||||
|
}
|
||||||
|
|
||||||
|
// https://developer.android.com/studio/projects/install-ndk#vanilla_cmake
|
||||||
|
externalNativeBuild {
|
||||||
|
cmake {
|
||||||
|
// This version must match cmakeVersions inside nix/pkgs/android-sdk/compose.nix
|
||||||
|
version "3.22.1"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
compileOptions {
|
compileOptions {
|
||||||
sourceCompatibility JavaVersion.VERSION_11
|
sourceCompatibility JavaVersion.VERSION_17
|
||||||
targetCompatibility JavaVersion.VERSION_11
|
targetCompatibility JavaVersion.VERSION_17
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace "im.status.ethereum"
|
namespace "im.status.ethereum"
|
||||||
@@ -194,16 +206,12 @@ android {
|
|||||||
doNotStrip '*/mips/*.so'
|
doNotStrip '*/mips/*.so'
|
||||||
doNotStrip '*/mips64/*.so'
|
doNotStrip '*/mips64/*.so'
|
||||||
}
|
}
|
||||||
dexOptions {
|
|
||||||
jumboMode true
|
|
||||||
javaMaxHeapSize "8g"
|
|
||||||
}
|
|
||||||
splits {
|
splits {
|
||||||
abi {
|
abi {
|
||||||
reset()
|
reset()
|
||||||
enable getEnvOrConfig('ANDROID_ABI_SPLIT').toBoolean()
|
enable getEnvOrConfig('ANDROID_ABI_SPLIT').toBoolean()
|
||||||
include getEnvOrConfig('ANDROID_ABI_INCLUDE').split(";")
|
include getEnvOrConfig('ANDROID_ABI_INCLUDE').split(";")
|
||||||
universalApk true
|
universalApk false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
signingConfigs {
|
signingConfigs {
|
||||||
@@ -224,6 +232,7 @@ android {
|
|||||||
}
|
}
|
||||||
release {
|
release {
|
||||||
minifyEnabled enableProguardInReleaseBuilds
|
minifyEnabled enableProguardInReleaseBuilds
|
||||||
|
shrinkResources enableProguardInReleaseBuilds
|
||||||
proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
|
proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
|
||||||
signingConfig null
|
signingConfig null
|
||||||
}
|
}
|
||||||
@@ -231,10 +240,10 @@ android {
|
|||||||
initWith release
|
initWith release
|
||||||
applicationIdSuffix ".pr"
|
applicationIdSuffix ".pr"
|
||||||
versionNameSuffix ".pr"
|
versionNameSuffix ".pr"
|
||||||
debuggable false
|
debuggable false
|
||||||
matchingFallbacks = ["release"]
|
matchingFallbacks = ["release"]
|
||||||
// necessary to make react-native-config's code generation work
|
// necessary to make react-native-config's code generation work
|
||||||
resValue "string", "build_config_package", "im.status.ethereum"
|
resValue "string", "build_config_package", "im.status.ethereum"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -267,26 +276,29 @@ android {
|
|||||||
dependencies {
|
dependencies {
|
||||||
// The version of react-native is set by the React Native Gradle Plugin
|
// The version of react-native is set by the React Native Gradle Plugin
|
||||||
implementation("com.facebook.react:react-android")
|
implementation("com.facebook.react:react-android")
|
||||||
implementation "androidx.core:core-splashscreen:1.0.0"
|
implementation("androidx.core:core-splashscreen:1.0.0")
|
||||||
|
|
||||||
if (hermesEnabled.toBoolean()) {
|
if (enableHermes) {
|
||||||
implementation("com.facebook.react:hermes-android")
|
implementation("com.facebook.react:hermes-android")
|
||||||
} else {
|
} else {
|
||||||
implementation jscFlavor
|
// https://github.com/status-im/status-mobile/issues/18493
|
||||||
|
// we don't use hermes for debug builds because it crashes too often
|
||||||
|
implementation(jscFlavor)
|
||||||
}
|
}
|
||||||
|
|
||||||
// react-native-screens
|
// react-native-screens
|
||||||
implementation 'androidx.appcompat:appcompat:1.1.0-rc01'
|
implementation("androidx.appcompat:appcompat:1.1.0-rc01")
|
||||||
implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0-alpha02'
|
implementation("androidx.swiperefreshlayout:swiperefreshlayout:1.1.0-alpha02")
|
||||||
implementation 'androidx.multidex:multidex:2.0.1' // required by status-mobile/android/app/src/main/java/im/status/ethereum/MainApplication.java
|
implementation("androidx.multidex:multidex:2.0.1") // required by status-mobile/android/app/src/main/java/im/status/ethereum/MainApplication.java
|
||||||
implementation project(':react-native-blur')
|
implementation project(':react-native-blur')
|
||||||
implementation project(':react-native-status')
|
implementation project(':react-native-status')
|
||||||
implementation project(':react-native-status-keycard')
|
implementation project(':react-native-status-keycard')
|
||||||
implementation 'com.github.status-im:function:0.0.1'
|
implementation("com.github.status-im:function:0.0.1")
|
||||||
implementation 'com.facebook.fresco:fresco:2.5.0'
|
implementation("com.facebook.fresco:fresco:2.5.0")
|
||||||
implementation 'com.facebook.fresco:animated-gif:2.5.0'
|
implementation("com.facebook.fresco:animated-gif:2.5.0")
|
||||||
implementation "com.squareup.okhttp3:okhttp-tls:4.9.2"
|
implementation("com.squareup.okhttp3:okhttp-tls:4.11.0")
|
||||||
implementation("com.google.prefab:cli:2.0.0")
|
implementation("com.google.prefab:cli:2.0.0")
|
||||||
|
implementation("com.android.tools.build:aapt2:8.1.1-10154469")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -58,6 +58,9 @@
|
|||||||
-keep interface okhttp3.** { *; }
|
-keep interface okhttp3.** { *; }
|
||||||
-dontwarn okhttp3.**
|
-dontwarn okhttp3.**
|
||||||
|
|
||||||
|
# to fix : java.security.KeyStoreException: BKS not found
|
||||||
|
-keep class org.bouncycastle.** { *; }
|
||||||
|
|
||||||
# okio
|
# okio
|
||||||
|
|
||||||
-keep class sun.misc.Unsafe { *; }
|
-keep class sun.misc.Unsafe { *; }
|
||||||
@@ -75,4 +78,13 @@
|
|||||||
-keep public enum com.bumptech.glide.load.ImageHeaderParser$** {
|
-keep public enum com.bumptech.glide.load.ImageHeaderParser$** {
|
||||||
**[] $VALUES;
|
**[] $VALUES;
|
||||||
public *;
|
public *;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# react-native-config
|
||||||
|
# https://github.com/lugg/react-native-config?tab=readme-ov-file#problems-with-proguard
|
||||||
|
-keep class im.status.ethereum.BuildConfig {*;}
|
||||||
|
|
||||||
|
# react-native-navigation
|
||||||
|
# to fix : java.lang.ClassCastException: java.lang.Class cannot be cast to java.lang.reflect.ParameterizedType
|
||||||
|
# at com.reactnativenavigation.views.element.animators.PropertyAnimatorCreator.getChildClass(Unknown Source:13)
|
||||||
|
-keep class com.reactnativenavigation.** {*;}
|
||||||
|
|||||||
@@ -3,11 +3,9 @@
|
|||||||
xmlns:tools="http://schemas.android.com/tools">
|
xmlns:tools="http://schemas.android.com/tools">
|
||||||
|
|
||||||
<!-- These are added by React Native for debug mode, but actually aren't needed in release mode -->
|
<!-- These are added by React Native for debug mode, but actually aren't needed in release mode -->
|
||||||
<uses-permission tools:node="remove" android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
|
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
|
||||||
<!-- Remove licensing permission since we don't license our app and it blocks F-Droid submissions. -->
|
<!-- Remove licensing permission since we don't license our app and it blocks F-Droid submissions. -->
|
||||||
<uses-permission tools:node="remove" android:name="com.android.vending.CHECK_LICENSE"/>
|
<uses-permission tools:node="remove" android:name="com.android.vending.CHECK_LICENSE"/>
|
||||||
|
|
||||||
<application tools:targetApi="28" tools:ignore="GoogleAppIndexingWarning" android:usesCleartextTraffic="true" >
|
<application tools:targetApi="28" tools:ignore="GoogleAppIndexingWarning" android:usesCleartextTraffic="true" />
|
||||||
<activity android:name="com.facebook.react.devsupport.DevSettingsActivity" android:exported="false" />
|
|
||||||
</application>
|
|
||||||
</manifest>
|
</manifest>
|
||||||
|
|||||||
@@ -2,8 +2,16 @@
|
|||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:installLocation="auto">
|
android:installLocation="auto">
|
||||||
|
|
||||||
|
<queries>
|
||||||
|
<intent>
|
||||||
|
<action android:name="android.intent.action.SEND_MULTIPLE" />
|
||||||
|
<data android:mimeType="*/*" />
|
||||||
|
</intent>
|
||||||
|
</queries>
|
||||||
|
|
||||||
<!-- non-dangerous permissions -->
|
<!-- non-dangerous permissions -->
|
||||||
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
|
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
|
||||||
|
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_SPECIAL_USE"/>
|
||||||
<uses-permission android:name="android.permission.INTERNET"/>
|
<uses-permission android:name="android.permission.INTERNET"/>
|
||||||
<uses-permission android:name="android.permission.NFC"/>
|
<uses-permission android:name="android.permission.NFC"/>
|
||||||
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
|
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
|
||||||
@@ -28,6 +36,7 @@
|
|||||||
android:allowBackup="false"
|
android:allowBackup="false"
|
||||||
android:label="@string/app_name"
|
android:label="@string/app_name"
|
||||||
android:icon="@mipmap/ic_launcher"
|
android:icon="@mipmap/ic_launcher"
|
||||||
|
android:roundIcon="@mipmap/ic_launcher_round"
|
||||||
android:theme="@style/Theme.AppSplash"
|
android:theme="@style/Theme.AppSplash"
|
||||||
android:name=".MainApplication"
|
android:name=".MainApplication"
|
||||||
android:largeHeap="true"
|
android:largeHeap="true"
|
||||||
@@ -62,8 +71,30 @@
|
|||||||
<action android:name="android.intent.action.VIEW" />
|
<action android:name="android.intent.action.VIEW" />
|
||||||
<category android:name="android.intent.category.DEFAULT" />
|
<category android:name="android.intent.category.DEFAULT" />
|
||||||
<category android:name="android.intent.category.BROWSABLE" />
|
<category android:name="android.intent.category.BROWSABLE" />
|
||||||
|
<!-- Handles http and https URLs for status.app -->
|
||||||
<data android:scheme="http" android:host="status.app" />
|
<data android:scheme="http" android:host="status.app" />
|
||||||
<data android:scheme="https" android:host="status.app" />
|
<data android:scheme="https" android:host="status.app" />
|
||||||
|
<!-- Community paths -->
|
||||||
|
<data android:pathPattern="/c/.*" android:host="status.app" android:scheme="http" />
|
||||||
|
<data android:pathPattern="/c/.*" android:host="status.app" android:scheme="https" />
|
||||||
|
<!-- Community channel paths -->
|
||||||
|
<data android:pathPattern="/cc/.*" android:host="status.app" android:scheme="http" />
|
||||||
|
<data android:pathPattern="/cc/.*" android:host="status.app" android:scheme="https" />
|
||||||
|
<!-- User paths -->
|
||||||
|
<data android:pathPattern="/u/.*" android:host="status.app" android:scheme="http" />
|
||||||
|
<data android:pathPattern="/u/.*" android:host="status.app" android:scheme="https" />
|
||||||
|
<!-- Private chat paths -->
|
||||||
|
<data android:pathPattern="/p/.*" android:host="status.app" android:scheme="http" />
|
||||||
|
<data android:pathPattern="/p/.*" android:host="status.app" android:scheme="https" />
|
||||||
|
<!-- Community request paths -->
|
||||||
|
<data android:pathPattern="/cr/.*" android:host="status.app" android:scheme="http" />
|
||||||
|
<data android:pathPattern="/cr/.*" android:host="status.app" android:scheme="https" />
|
||||||
|
<!-- Group chat paths -->
|
||||||
|
<data android:pathPattern="/g/.*" android:host="status.app" android:scheme="http" />
|
||||||
|
<data android:pathPattern="/g/.*" android:host="status.app" android:scheme="https" />
|
||||||
|
<!-- Wallet paths -->
|
||||||
|
<data android:pathPattern="/wallet/.*" android:host="status.app" android:scheme="http" />
|
||||||
|
<data android:pathPattern="/wallet/.*" android:host="status.app" android:scheme="https" />
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
<intent-filter android:autoVerify="true">
|
<intent-filter android:autoVerify="true">
|
||||||
<action android:name="android.intent.action.VIEW" />
|
<action android:name="android.intent.action.VIEW" />
|
||||||
@@ -74,7 +105,13 @@
|
|||||||
</intent-filter>
|
</intent-filter>
|
||||||
</activity>
|
</activity>
|
||||||
<activity android:name="com.facebook.react.devsupport.DevSettingsActivity"/>
|
<activity android:name="com.facebook.react.devsupport.DevSettingsActivity"/>
|
||||||
<service android:name="im.status.ethereum.pushnotifications.ForegroundService"></service>
|
<service
|
||||||
|
android:name="im.status.ethereum.pushnotifications.ForegroundService"
|
||||||
|
android:foregroundServiceType="specialUse">
|
||||||
|
<property
|
||||||
|
android:name="android.app.PROPERTY_SPECIAL_USE_FGS_SUBTYPE"
|
||||||
|
android:value="local notifications"/>
|
||||||
|
</service>
|
||||||
<provider
|
<provider
|
||||||
android:name="androidx.core.content.FileProvider"
|
android:name="androidx.core.content.FileProvider"
|
||||||
android:authorities="${applicationId}.provider"
|
android:authorities="${applicationId}.provider"
|
||||||
|
|||||||
@@ -99,7 +99,7 @@ class MainActivity : NavigationActivity(), ActivityCompat.OnRequestPermissionsRe
|
|||||||
|
|
||||||
private fun tryToEmit(eventName: String, event: WritableMap) {
|
private fun tryToEmit(eventName: String, event: WritableMap) {
|
||||||
try {
|
try {
|
||||||
(getApplication() as MainApplication).getReactNativeHost()
|
(getApplication() as MainApplication).reactNativeHost
|
||||||
.getReactInstanceManager()
|
.getReactInstanceManager()
|
||||||
.getCurrentReactContext()
|
.getCurrentReactContext()
|
||||||
?.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter::class.java)
|
?.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter::class.java)
|
||||||
|
|||||||
@@ -25,14 +25,13 @@ class MainApplication : NavigationApplication() {
|
|||||||
return BuildConfig.DEBUG
|
return BuildConfig.DEBUG
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getPackages(): List<ReactPackage> {
|
override fun getPackages(): List<ReactPackage> =
|
||||||
val statusPackage = StatusPackage(RootUtil.isDeviceRooted())
|
PackageList(this).packages.apply {
|
||||||
val packages = PackageList(this).getPackages()
|
// Packages that cannot be autolinked yet can be added manually here
|
||||||
packages.add(statusPackage)
|
add(StatusPackage(RootUtil.isDeviceRooted()))
|
||||||
packages.add(RNStatusKeycardPackage())
|
add(RNStatusKeycardPackage())
|
||||||
packages.add(PushNotificationPackage())
|
add(PushNotificationPackage())
|
||||||
packages.add(BlurViewPackage())
|
add(BlurViewPackage())
|
||||||
return packages
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getJSMainModuleName(): String = "index"
|
override fun getJSMainModuleName(): String = "index"
|
||||||
@@ -42,9 +41,8 @@ class MainApplication : NavigationApplication() {
|
|||||||
override val isHermesEnabled: Boolean = BuildConfig.IS_HERMES_ENABLED
|
override val isHermesEnabled: Boolean = BuildConfig.IS_HERMES_ENABLED
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getReactNativeHost(): ReactNativeHost {
|
override val reactNativeHost: ReactNativeHost
|
||||||
return mReactNativeHost
|
get() = mReactNativeHost
|
||||||
}
|
|
||||||
|
|
||||||
override fun onCreate() {
|
override fun onCreate() {
|
||||||
super.onCreate()
|
super.onCreate()
|
||||||
|
|||||||
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 4.1 KiB After Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 92 B After Width: | Height: | Size: 9.8 KiB |
|
Before Width: | Height: | Size: 498 B After Width: | Height: | Size: 940 B |
|
Before Width: | Height: | Size: 2.5 KiB |
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 272 B After Width: | Height: | Size: 266 B |
|
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 2.6 KiB |
|
Before Width: | Height: | Size: 100 B After Width: | Height: | Size: 33 KiB |
|
Before Width: | Height: | Size: 972 B After Width: | Height: | Size: 2.1 KiB |
|
Before Width: | Height: | Size: 4.8 KiB |
|
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 34 KiB |
|
Before Width: | Height: | Size: 495 B After Width: | Height: | Size: 452 B |
|
Before Width: | Height: | Size: 5.3 KiB After Width: | Height: | Size: 5.0 KiB |
|
Before Width: | Height: | Size: 108 B After Width: | Height: | Size: 74 KiB |
|
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 3.0 KiB |
|
Before Width: | Height: | Size: 7.3 KiB |
|
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 64 KiB |
|
Before Width: | Height: | Size: 826 B After Width: | Height: | Size: 824 B |
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 2.7 KiB |
|
Before Width: | Height: | Size: 118 B After Width: | Height: | Size: 122 KiB |
|
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 9.5 KiB |
|
Before Width: | Height: | Size: 4.0 KiB After Width: | Height: | Size: 86 KiB |
|
Before Width: | Height: | Size: 826 B After Width: | Height: | Size: 825 B |
|
Before Width: | Height: | Size: 4.2 KiB After Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 69 KiB After Width: | Height: | Size: 123 KiB |
@@ -2,4 +2,5 @@
|
|||||||
<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_background"/>
|
<background android:drawable="@mipmap/ic_background"/>
|
||||||
<foreground android:drawable="@mipmap/ic_foreground"/>
|
<foreground android:drawable="@mipmap/ic_foreground"/>
|
||||||
</adaptive-icon>
|
<monochrome android:drawable="@mipmap/ic_launcher_monochrome" />
|
||||||
|
</adaptive-icon>
|
||||||
|
|||||||
@@ -2,4 +2,5 @@
|
|||||||
<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_background"/>
|
<background android:drawable="@mipmap/ic_background"/>
|
||||||
<foreground android:drawable="@mipmap/ic_foreground"/>
|
<foreground android:drawable="@mipmap/ic_foreground"/>
|
||||||
</adaptive-icon>
|
<monochrome android:drawable="@mipmap/ic_launcher_monochrome" />
|
||||||
|
</adaptive-icon>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 374 B After Width: | Height: | Size: 20 KiB |
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 4.6 KiB |
|
After Width: | Height: | Size: 1.9 KiB |
|
Before Width: | Height: | Size: 3.3 KiB After Width: | Height: | Size: 4.8 KiB |
|
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 1.9 KiB |
|
After Width: | Height: | Size: 2.6 KiB |
|
Before Width: | Height: | Size: 239 B After Width: | Height: | Size: 9.8 KiB |
|
Before Width: | Height: | Size: 678 B After Width: | Height: | Size: 737 B |
|
Before Width: | Height: | Size: 970 B After Width: | Height: | Size: 2.6 KiB |
|
After Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 3.2 KiB |
|
Before Width: | Height: | Size: 517 B After Width: | Height: | Size: 33 KiB |
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.7 KiB |
|
Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 6.8 KiB |
|
After Width: | Height: | Size: 2.5 KiB |
|
Before Width: | Height: | Size: 4.7 KiB After Width: | Height: | Size: 8.4 KiB |
|
Before Width: | Height: | Size: 905 B After Width: | Height: | Size: 74 KiB |
|
Before Width: | Height: | Size: 2.6 KiB After Width: | Height: | Size: 2.4 KiB |
|
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 3.7 KiB |
|
Before Width: | Height: | Size: 7.3 KiB After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 122 KiB |
|
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 4.1 KiB After Width: | Height: | Size: 19 KiB |
|
After Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 25 KiB |
@@ -15,6 +15,8 @@ ext {
|
|||||||
supportLibVersion = project.supportLibVersion
|
supportLibVersion = project.supportLibVersion
|
||||||
gradlePluginVersion = project.gradlePluginVersion
|
gradlePluginVersion = project.gradlePluginVersion
|
||||||
kotlinVersion = project.kotlinPluginVersion
|
kotlinVersion = project.kotlinPluginVersion
|
||||||
|
kotlinPluginVersion = project.kotlinPluginVersion
|
||||||
|
kotlinToolsVersion = project.kotlinPluginVersion
|
||||||
ndkVersion = "25.2.9519653"
|
ndkVersion = "25.2.9519653"
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -28,6 +30,7 @@ buildscript {
|
|||||||
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:${project.ext.kotlinPluginVersion}"
|
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:${project.ext.kotlinPluginVersion}"
|
||||||
classpath("com.android.tools.build:gradle")
|
classpath("com.android.tools.build:gradle")
|
||||||
classpath("com.facebook.react:react-native-gradle-plugin")
|
classpath("com.facebook.react:react-native-gradle-plugin")
|
||||||
|
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -41,11 +44,30 @@ subprojects {
|
|||||||
defaultConfig {
|
defaultConfig {
|
||||||
targetSdkVersion rootProject.ext.targetSdkVersion
|
targetSdkVersion rootProject.ext.targetSdkVersion
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Speed up Tests Stage
|
||||||
|
tasks.withType(Test).configureEach {
|
||||||
|
// https://docs.gradle.org/current/userguide/performance.html#execute_tests_in_parallel
|
||||||
|
maxParallelForks = Runtime.runtime.availableProcessors().intdiv(2) ?: 1
|
||||||
|
// https://docs.gradle.org/current/userguide/performance.html#fork_tests_into_multiple_processes
|
||||||
|
forkEvery = 100
|
||||||
|
// https://docs.gradle.org/current/userguide/performance.html#disable_reports
|
||||||
|
reports.html.required = false
|
||||||
|
reports.junitXml.required = false
|
||||||
|
}
|
||||||
|
// Speed up Java Compile Stage
|
||||||
|
// https://docs.gradle.org/current/userguide/performance.html#run_the_compiler_as_a_separate_process
|
||||||
|
tasks.withType(JavaCompile).configureEach {
|
||||||
|
options.fork = true
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
apply plugin: "com.facebook.react.rootproject"
|
||||||
|
|
||||||
allprojects {
|
allprojects {
|
||||||
beforeEvaluate {
|
beforeEvaluate {
|
||||||
if (System.env.STATUS_GO_ANDROID_LIBDIR == null || System.env.STATUS_GO_ANDROID_LIBDIR == "") {
|
if (System.env.STATUS_GO_ANDROID_LIBDIR == null || System.env.STATUS_GO_ANDROID_LIBDIR == "") {
|
||||||
|
|||||||
@@ -22,9 +22,9 @@
|
|||||||
|
|
||||||
# Version requirements used throughout the Gradle scripts
|
# Version requirements used throughout the Gradle scripts
|
||||||
minSdkVersion=24
|
minSdkVersion=24
|
||||||
compileSdkVersion=33
|
compileSdkVersion=34
|
||||||
targetSdkVersion=33
|
targetSdkVersion=34
|
||||||
buildToolsVersion=33.0.0
|
buildToolsVersion=34.0.0
|
||||||
supportLibVersion=28.0.0
|
supportLibVersion=28.0.0
|
||||||
# This should match version from nix/pkgs/aapt2/default.nix
|
# This should match version from nix/pkgs/aapt2/default.nix
|
||||||
gradlePluginVersion=7.4.2
|
gradlePluginVersion=7.4.2
|
||||||
@@ -38,12 +38,12 @@ KEYSTORE_PASSWORD=password
|
|||||||
KEYSTORE_ALIAS=status
|
KEYSTORE_ALIAS=status
|
||||||
KEYSTORE_KEY_PASSWORD=password
|
KEYSTORE_KEY_PASSWORD=password
|
||||||
|
|
||||||
# By default we build a mostly universal APK
|
# Splitting by CPU Architecture produces smaller APKs.
|
||||||
ANDROID_ABI_SPLIT=false
|
ANDROID_ABI_SPLIT=true
|
||||||
# Some platforms are excluded though
|
# By default its better to only build apk for most recent devices.
|
||||||
ANDROID_ABI_INCLUDE=armeabi-v7a;arm64-v8a;x86;x86_64
|
ANDROID_ABI_INCLUDE=arm64-v8a
|
||||||
|
|
||||||
org.gradle.jvmargs=-Xmx8704M
|
org.gradle.jvmargs=-Xmx8704M -XX:+UseParallelGC
|
||||||
|
|
||||||
versionCode=9999
|
versionCode=9999
|
||||||
commitHash=unknown
|
commitHash=unknown
|
||||||
@@ -57,4 +57,6 @@ newArchEnabled=false
|
|||||||
|
|
||||||
# Use this property to enable or disable the Hermes JS engine.
|
# Use this property to enable or disable the Hermes JS engine.
|
||||||
# If set to false, you will be using JSC instead.
|
# If set to false, you will be using JSC instead.
|
||||||
hermesEnabled=true
|
# Disabled for debug builds to avoid 'maximum call stack exceeded' errors.
|
||||||
|
# https://github.com/status-im/status-mobile/issues/18493
|
||||||
|
hermesEnabled=false
|
||||||
|
|||||||
@@ -1,19 +1,4 @@
|
|||||||
module.exports = {
|
module.exports = {
|
||||||
presets: ['module:metro-react-native-babel-preset'],
|
presets: ['module:@react-native/babel-preset'],
|
||||||
plugins: ['react-native-reanimated/plugin', '@babel/plugin-transform-named-capturing-groups-regex'],
|
plugins: ['react-native-reanimated/plugin', '@babel/plugin-transform-named-capturing-groups-regex'],
|
||||||
env: {
|
|
||||||
test: {
|
|
||||||
presets: [
|
|
||||||
'@babel/preset-react',
|
|
||||||
[
|
|
||||||
'@babel/preset-env',
|
|
||||||
{
|
|
||||||
targets: {
|
|
||||||
node: 'current',
|
|
||||||
},
|
|
||||||
},
|
|
||||||
],
|
|
||||||
],
|
|
||||||
},
|
|
||||||
},
|
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
#!/usr/bin/env groovy
|
#!/usr/bin/env groovy
|
||||||
library 'status-jenkins-lib@v1.8.4'
|
library 'status-jenkins-lib@v1.9.8'
|
||||||
|
|
||||||
/* Options section can't access functions in objects. */
|
/* Options section can't access functions in objects. */
|
||||||
def isPRBuild = utils.isPRBuild()
|
def isPRBuild = utils.isPRBuild()
|
||||||
|
|
||||||
pipeline {
|
pipeline {
|
||||||
agent { label 'linux && x86_64 && nix-2.14' }
|
agent { label 'linux && x86_64 && nix-2.19' }
|
||||||
|
|
||||||
options {
|
options {
|
||||||
timestamps()
|
timestamps()
|
||||||
@@ -15,7 +15,7 @@ pipeline {
|
|||||||
buildDiscarder(logRotator(
|
buildDiscarder(logRotator(
|
||||||
numToKeepStr: '10',
|
numToKeepStr: '10',
|
||||||
daysToKeepStr: '20',
|
daysToKeepStr: '20',
|
||||||
artifactNumToKeepStr: '10',
|
artifactNumToKeepStr: '1',
|
||||||
))
|
))
|
||||||
/* Allows combined build to copy */
|
/* Allows combined build to copy */
|
||||||
copyArtifactPermission('/status-mobile/*')
|
copyArtifactPermission('/status-mobile/*')
|
||||||
@@ -34,10 +34,10 @@ pipeline {
|
|||||||
}
|
}
|
||||||
|
|
||||||
environment {
|
environment {
|
||||||
LANG = "en_US.UTF-8"
|
LANG = 'en_US.UTF-8'
|
||||||
LC_ALL = "en_US.UTF-8"
|
LC_ALL = 'en_US.UTF-8'
|
||||||
LANGUAGE = "en_US.UTF-8"
|
LANGUAGE = 'en_US.UTF-8'
|
||||||
TARGET = "android${utils.isE2EBuild() ? "-e2e" : ""}"
|
PLATFORM = "android${utils.isE2EBuild() ? "-e2e" : ""}"
|
||||||
BUILD_ENV = 'prod'
|
BUILD_ENV = 'prod'
|
||||||
NIX_CONF_DIR = "${env.WORKSPACE}/nix"
|
NIX_CONF_DIR = "${env.WORKSPACE}/nix"
|
||||||
FASTLANE_DISABLE_COLORS = 1
|
FASTLANE_DISABLE_COLORS = 1
|
||||||
@@ -71,12 +71,8 @@ pipeline {
|
|||||||
}
|
}
|
||||||
stage('Upload') {
|
stage('Upload') {
|
||||||
steps { script {
|
steps { script {
|
||||||
def urls = apks.collect { s3.uploadArtifact(it) }
|
def urls = apks.collect { s5cmd.upload(it) }
|
||||||
if (urls.size() > 1) { /* Return only the universal APK. */
|
env.PKG_URL = urls.first()
|
||||||
env.PKG_URL = urls.find { it.contains('universal') }
|
|
||||||
} else { /* If no universal is available pick first. */
|
|
||||||
env.PKG_URL = urls.first()
|
|
||||||
}
|
|
||||||
jenkins.setBuildDesc(APK: env.PKG_URL)
|
jenkins.setBuildDesc(APK: env.PKG_URL)
|
||||||
} }
|
} }
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
#!/usr/bin/env groovy
|
#!/usr/bin/env groovy
|
||||||
library 'status-jenkins-lib@v1.8.4'
|
library 'status-jenkins-lib@v1.9.8'
|
||||||
|
|
||||||
|
import groovy.json.JsonBuilder
|
||||||
|
|
||||||
pipeline {
|
pipeline {
|
||||||
agent { label 'linux' }
|
agent { label 'linux' }
|
||||||
@@ -13,7 +15,7 @@ pipeline {
|
|||||||
buildDiscarder(logRotator(
|
buildDiscarder(logRotator(
|
||||||
numToKeepStr: '10',
|
numToKeepStr: '10',
|
||||||
daysToKeepStr: '30',
|
daysToKeepStr: '30',
|
||||||
artifactNumToKeepStr: '10',
|
artifactNumToKeepStr: '1',
|
||||||
))
|
))
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -35,8 +37,6 @@ pipeline {
|
|||||||
stage('Prep') {
|
stage('Prep') {
|
||||||
steps { script {
|
steps { script {
|
||||||
println("Current JOB: ${env.JOB_NAME}")
|
println("Current JOB: ${env.JOB_NAME}")
|
||||||
/* just for a shorter access */
|
|
||||||
btype = utils.getBuildType()
|
|
||||||
} }
|
} }
|
||||||
}
|
}
|
||||||
stage('Build') {
|
stage('Build') {
|
||||||
@@ -74,7 +74,7 @@ pipeline {
|
|||||||
iOS: utils.pkgUrl(ios),
|
iOS: utils.pkgUrl(ios),
|
||||||
Diawi: utils.getEnv(ios, 'DIAWI_URL'),
|
Diawi: utils.getEnv(ios, 'DIAWI_URL'),
|
||||||
/* upload the sha256 checksums file too */
|
/* upload the sha256 checksums file too */
|
||||||
SHA: s3.uploadArtifact(sha),
|
SHA: s5cmd.upload(sha),
|
||||||
]
|
]
|
||||||
/* add URLs to the build description */
|
/* add URLs to the build description */
|
||||||
jenkins.setBuildDesc(urls)
|
jenkins.setBuildDesc(urls)
|
||||||
@@ -83,11 +83,9 @@ pipeline {
|
|||||||
stage('Publish') {
|
stage('Publish') {
|
||||||
when { expression { params.PUBLISH } }
|
when { expression { params.PUBLISH } }
|
||||||
steps { script {
|
steps { script {
|
||||||
switch (btype) {
|
switch (utils.getBuildType()) {
|
||||||
case 'nightly':
|
case 'nightly': /* Create JSON file with newest build URLs */
|
||||||
/* Create JSON file with newest build URLs */
|
updateBucketJSON(urls, 'latest.json');
|
||||||
s3.updateBucketJSON(urls, 'latest.json');
|
|
||||||
build(job: 'website/status.im', wait: false);
|
|
||||||
break;
|
break;
|
||||||
case 'release':
|
case 'release':
|
||||||
github.publishReleaseFiles(repo: 'status-mobile');
|
github.publishReleaseFiles(repo: 'status-mobile');
|
||||||
@@ -118,3 +116,22 @@ def Boolean getPublishDefault(Boolean previousValue) {
|
|||||||
if (previousValue != null) { return previousValue }
|
if (previousValue != null) { return previousValue }
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Helper for updating JSON with newest builds. */
|
||||||
|
def updateBucketJSON(urls, fileName) {
|
||||||
|
/* latest.json has slightly different key names */
|
||||||
|
def content = [
|
||||||
|
DIAWI: urls.Diawi,
|
||||||
|
APK: urls.Apk, IOS: urls.iOS,
|
||||||
|
APP: urls.App, MAC: urls.Mac,
|
||||||
|
WIN: urls.Win, SHA: urls.SHA
|
||||||
|
]
|
||||||
|
def filePath = "${pwd()}/pkg/${fileName}"
|
||||||
|
/* it might not exist */
|
||||||
|
sh "mkdir -p ${pwd()}/pkg"
|
||||||
|
def contentJson = new JsonBuilder(content).toPrettyString()
|
||||||
|
println "${filePath}:\n${contentJson}"
|
||||||
|
writeFile(file: filePath, text: contentJson)
|
||||||
|
return s5cmd.upload(filePath)
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
#!/usr/bin/env groovy
|
#!/usr/bin/env groovy
|
||||||
library 'status-jenkins-lib@v1.8.4'
|
library 'status-jenkins-lib@v1.9.8'
|
||||||
|
|
||||||
pipeline {
|
pipeline {
|
||||||
agent { label 'linux' }
|
agent { label 'linux' }
|
||||||
|
|
||||||
triggers {
|
triggers {
|
||||||
// Nightly at 2am
|
// Nightly at 0am
|
||||||
cron 'H 2 * * *'
|
cron 'H 0 * * *'
|
||||||
}
|
}
|
||||||
|
|
||||||
parameters {
|
parameters {
|
||||||
@@ -23,6 +23,7 @@ pipeline {
|
|||||||
buildDiscarder(logRotator(
|
buildDiscarder(logRotator(
|
||||||
numToKeepStr: '10',
|
numToKeepStr: '10',
|
||||||
daysToKeepStr: '30',
|
daysToKeepStr: '30',
|
||||||
|
artifactNumToKeepStr: '1',
|
||||||
))
|
))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
#!/usr/bin/env groovy
|
#!/usr/bin/env groovy
|
||||||
library 'status-jenkins-lib@v1.8.4'
|
library 'status-jenkins-lib@v1.9.8'
|
||||||
|
|
||||||
/* Options section can't access functions in objects. */
|
/* Options section can't access functions in objects. */
|
||||||
def isPRBuild = utils.isPRBuild()
|
def isPRBuild = utils.isPRBuild()
|
||||||
|
|
||||||
pipeline {
|
pipeline {
|
||||||
agent { label 'macos && arm64 && nix-2.14 && xcode-15.1' }
|
agent { label 'macos && arm64 && nix-2.19 && xcode-15.1' }
|
||||||
|
|
||||||
parameters {
|
parameters {
|
||||||
string(
|
string(
|
||||||
@@ -23,7 +23,7 @@ pipeline {
|
|||||||
buildDiscarder(logRotator(
|
buildDiscarder(logRotator(
|
||||||
numToKeepStr: '10',
|
numToKeepStr: '10',
|
||||||
daysToKeepStr: '20',
|
daysToKeepStr: '20',
|
||||||
artifactNumToKeepStr: '10',
|
artifactNumToKeepStr: '1',
|
||||||
))
|
))
|
||||||
/* Allows combined build to copy */
|
/* Allows combined build to copy */
|
||||||
copyArtifactPermission('/status-mobile/*')
|
copyArtifactPermission('/status-mobile/*')
|
||||||
@@ -34,13 +34,11 @@ pipeline {
|
|||||||
}
|
}
|
||||||
|
|
||||||
environment {
|
environment {
|
||||||
LANG = "en_US.UTF-8"
|
LANG = 'en_US.UTF-8'
|
||||||
LC_ALL = "en_US.UTF-8"
|
LC_ALL = 'en_US.UTF-8'
|
||||||
LANGUAGE = "en_US.UTF-8"
|
LANGUAGE = 'en_US.UTF-8'
|
||||||
TARGET = 'ios'
|
PLATFORM = 'ios'
|
||||||
NIX_CONF_DIR = "${env.WORKSPACE}/nix"
|
NIX_CONF_DIR = "${env.WORKSPACE}/nix"
|
||||||
/* See nix/README.md */
|
|
||||||
NIX_IGNORE_SYMLINK_STORE = 1
|
|
||||||
FASTLANE_DISABLE_COLORS = 1
|
FASTLANE_DISABLE_COLORS = 1
|
||||||
BUNDLE_PATH = "${HOME}/.bundle"
|
BUNDLE_PATH = "${HOME}/.bundle"
|
||||||
}
|
}
|
||||||
@@ -65,7 +63,7 @@ pipeline {
|
|||||||
}
|
}
|
||||||
post {
|
post {
|
||||||
failure {
|
failure {
|
||||||
archiveArtifacts 'ios/logs/*'
|
archiveArtifacts 'logs/*'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,21 +1,21 @@
|
|||||||
#!/usr/bin/env groovy
|
#!/usr/bin/env groovy
|
||||||
library 'status-jenkins-lib@v1.8.4'
|
library 'status-jenkins-lib@v1.9.8'
|
||||||
|
|
||||||
/* Options section can't access functions in objects. */
|
/* Options section can't access functions in objects. */
|
||||||
def isPRBuild = utils.isPRBuild()
|
def isPRBuild = utils.isPRBuild()
|
||||||
|
|
||||||
pipeline {
|
pipeline {
|
||||||
agent { label 'linux && x86_64 && nix-2.14' }
|
agent { label 'linux && x86_64 && nix-2.19' }
|
||||||
|
|
||||||
options {
|
options {
|
||||||
timestamps()
|
timestamps()
|
||||||
/* Prevent Jenkins jobs from running forever */
|
/* Prevent Jenkins jobs from running forever */
|
||||||
timeout(time: 15, unit: 'MINUTES')
|
timeout(time: 20, unit: 'MINUTES')
|
||||||
/* Limit builds retained */
|
/* Limit builds retained */
|
||||||
buildDiscarder(logRotator(
|
buildDiscarder(logRotator(
|
||||||
numToKeepStr: '10',
|
numToKeepStr: '10',
|
||||||
daysToKeepStr: '20',
|
daysToKeepStr: '20',
|
||||||
artifactNumToKeepStr: '10',
|
artifactNumToKeepStr: '1',
|
||||||
))
|
))
|
||||||
/* Abort old PR builds. */
|
/* Abort old PR builds. */
|
||||||
disableConcurrentBuilds(
|
disableConcurrentBuilds(
|
||||||
@@ -29,59 +29,53 @@ pipeline {
|
|||||||
description: 'Specify build type. Values: pr / e2e / nightly / release',
|
description: 'Specify build type. Values: pr / e2e / nightly / release',
|
||||||
defaultValue: 'pr',
|
defaultValue: 'pr',
|
||||||
)
|
)
|
||||||
|
booleanParam(
|
||||||
|
name: 'RUN_CONTRACT_TESTS',
|
||||||
|
description: 'Whether to run optional and slow contract tests.',
|
||||||
|
defaultValue: false,
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
environment {
|
environment {
|
||||||
LANG = "en_US.UTF-8"
|
LANG = 'en_US.UTF-8'
|
||||||
LC_ALL = "en_US.UTF-8"
|
LC_ALL = 'en_US.UTF-8'
|
||||||
LANGUAGE = "en_US.UTF-8"
|
LANGUAGE = 'en_US.UTF-8'
|
||||||
TARGET = 'tests'
|
PLATFORM = 'tests'
|
||||||
BUILD_ENV = 'prod'
|
BUILD_ENV = 'prod'
|
||||||
NIX_CONF_DIR = "${env.WORKSPACE}/nix"
|
NIX_CONF_DIR = "${env.WORKSPACE}/nix"
|
||||||
LOG_FILE = utils.pkgFilename(ext: 'log', arch: 'tests')
|
LOG_FILE = utils.pkgFilename(ext: 'log', arch: 'tests')
|
||||||
|
CLJ_LINTER_PRINT_WARNINGS = 'true'
|
||||||
}
|
}
|
||||||
|
|
||||||
stages {
|
stages {
|
||||||
stage('Checks') {
|
stage('Test') {
|
||||||
parallel {
|
parallel {
|
||||||
stage('Lint') {
|
stage('Lint') {
|
||||||
steps {
|
steps { make('lint') }
|
||||||
sh """#!/bin/bash
|
|
||||||
set -eo pipefail
|
|
||||||
make lint CLJ_LINTER_PRINT_WARNINGS=true 2>&1 | tee ${LOG_FILE}
|
|
||||||
"""
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
stage('Unit Tests') {
|
stage('Unit') {
|
||||||
steps {
|
steps { make('test-unit') }
|
||||||
sh """#!/bin/bash
|
}
|
||||||
set -eo pipefail
|
stage('Component') {
|
||||||
make test-unit 2>&1 | tee -a ${LOG_FILE}
|
steps { make('test-component') }
|
||||||
"""
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
stage('Integration Tests') {
|
stage('Heavy Test') {
|
||||||
steps {
|
parallel {
|
||||||
sh """#!/bin/bash
|
stage('Contract') {
|
||||||
set -eo pipefail
|
when { expression { params.RUN_CONTRACT_TESTS } }
|
||||||
make test-integration 2>&1 | tee -a ${LOG_FILE}
|
steps { make('test-contract') }
|
||||||
"""
|
}
|
||||||
}
|
stage('Integration') {
|
||||||
}
|
steps { make('test-integration') }
|
||||||
stage('Component Tests') {
|
}
|
||||||
steps {
|
|
||||||
sh """#!/bin/bash
|
|
||||||
set -eo pipefail
|
|
||||||
make component-test 2>&1 | tee -a ${LOG_FILE}
|
|
||||||
"""
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
stage('Upload') {
|
stage('Upload') {
|
||||||
steps {
|
steps {
|
||||||
script {
|
script {
|
||||||
env.PKG_URL = s3.uploadArtifact(LOG_FILE)
|
env.PKG_URL = s5cmd.upload(LOG_FILE)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -92,3 +86,10 @@ pipeline {
|
|||||||
always { sh 'make purge' }
|
always { sh 'make purge' }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def make(target) {
|
||||||
|
sh """#!/bin/bash
|
||||||
|
set -eo pipefail
|
||||||
|
make ${target} 2>&1 | tee -a ${LOG_FILE}
|
||||||
|
"""
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#!/usr/bin/env groovy
|
#!/usr/bin/env groovy
|
||||||
library 'status-jenkins-lib@v1.7.15'
|
library 'status-jenkins-lib@v1.9.8'
|
||||||
|
|
||||||
pipeline {
|
pipeline {
|
||||||
|
|
||||||
@@ -29,6 +29,17 @@ pipeline {
|
|||||||
|
|
||||||
options {
|
options {
|
||||||
disableConcurrentBuilds()
|
disableConcurrentBuilds()
|
||||||
|
buildDiscarder(logRotator(
|
||||||
|
numToKeepStr: '10',
|
||||||
|
daysToKeepStr: '30',
|
||||||
|
artifactNumToKeepStr: '1',
|
||||||
|
))
|
||||||
|
}
|
||||||
|
|
||||||
|
environment {
|
||||||
|
/* Avoid race conditions with other builds using virtualenv. */
|
||||||
|
VIRTUAL_ENV = "${WORKSPACE_TMP}/venv"
|
||||||
|
PATH = "${VIRTUAL_ENV}/bin:${PATH}"
|
||||||
}
|
}
|
||||||
|
|
||||||
stages {
|
stages {
|
||||||
@@ -47,7 +58,8 @@ pipeline {
|
|||||||
stage('Setup') {
|
stage('Setup') {
|
||||||
steps { script {
|
steps { script {
|
||||||
dir('test/appium') {
|
dir('test/appium') {
|
||||||
sh 'pip3 install --user -r requirements.txt'
|
sh "python3 -m venv ${VIRTUAL_ENV}"
|
||||||
|
sh 'pip3 install -r requirements.txt'
|
||||||
}
|
}
|
||||||
} }
|
} }
|
||||||
}
|
}
|
||||||
@@ -87,7 +99,7 @@ pipeline {
|
|||||||
--rerun_count=2 \
|
--rerun_count=2 \
|
||||||
--testrail_report=True \
|
--testrail_report=True \
|
||||||
-m testrail_id \
|
-m testrail_id \
|
||||||
-m \"new_ui_critical or new_ui_medium\" \
|
-m \"nightly\" \
|
||||||
-k \"${params.KEYWORD_EXPRESSION}\" \
|
-k \"${params.KEYWORD_EXPRESSION}\" \
|
||||||
--apk=${params.APK_URL ?: apk_path}
|
--apk=${params.APK_URL ?: apk_path}
|
||||||
"""
|
"""
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#!/usr/bin/env groovy
|
#!/usr/bin/env groovy
|
||||||
library 'status-jenkins-lib@v1.7.15'
|
library 'status-jenkins-lib@v1.9.8'
|
||||||
|
|
||||||
pipeline {
|
pipeline {
|
||||||
|
|
||||||
@@ -35,18 +35,27 @@ pipeline {
|
|||||||
description: 'OBSOLETE ARGUMENT TO BE REMOVED',
|
description: 'OBSOLETE ARGUMENT TO BE REMOVED',
|
||||||
defaultValue: 'DUMMY',
|
defaultValue: 'DUMMY',
|
||||||
)
|
)
|
||||||
/* Commented to use TEST_MARKERS values from job params
|
|
||||||
string(
|
string(
|
||||||
name: 'TEST_MARKERS',
|
name: 'TEST_MARKERS',
|
||||||
description: 'Marker expression for matching tests to run.',
|
description: 'Marker expression for matching tests to run.',
|
||||||
defaultValue: 'new_ui_critical',
|
defaultValue: 'smoke',
|
||||||
)
|
)
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
options {
|
options {
|
||||||
disableConcurrentBuilds()
|
disableConcurrentBuilds()
|
||||||
timeout(time: 90, unit: 'MINUTES')
|
timeout(time: 90, unit: 'MINUTES')
|
||||||
|
buildDiscarder(logRotator(
|
||||||
|
numToKeepStr: '10',
|
||||||
|
daysToKeepStr: '30',
|
||||||
|
artifactNumToKeepStr: '1',
|
||||||
|
))
|
||||||
|
}
|
||||||
|
|
||||||
|
environment {
|
||||||
|
/* Avoid race conditions with other builds using virtualenv. */
|
||||||
|
VIRTUAL_ENV = "${WORKSPACE_TMP}/venv"
|
||||||
|
PATH = "${VIRTUAL_ENV}/bin:${PATH}"
|
||||||
}
|
}
|
||||||
|
|
||||||
stages {
|
stages {
|
||||||
@@ -74,7 +83,8 @@ pipeline {
|
|||||||
stage('Setup') {
|
stage('Setup') {
|
||||||
steps { script {
|
steps { script {
|
||||||
dir('test/appium') {
|
dir('test/appium') {
|
||||||
sh 'pip3 install --user -r requirements.txt'
|
sh "python3 -m venv ${VIRTUAL_ENV}"
|
||||||
|
sh 'pip3 install -r requirements.txt'
|
||||||
}
|
}
|
||||||
} }
|
} }
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#!/usr/bin/env groovy
|
#!/usr/bin/env groovy
|
||||||
library 'status-jenkins-lib@v1.7.15'
|
library 'status-jenkins-lib@v1.9.8'
|
||||||
|
|
||||||
pipeline {
|
pipeline {
|
||||||
|
|
||||||
@@ -28,8 +28,18 @@ pipeline {
|
|||||||
|
|
||||||
options {
|
options {
|
||||||
disableConcurrentBuilds()
|
disableConcurrentBuilds()
|
||||||
|
buildDiscarder(logRotator(
|
||||||
|
numToKeepStr: '10',
|
||||||
|
daysToKeepStr: '30',
|
||||||
|
artifactNumToKeepStr: '1',
|
||||||
|
))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
environment {
|
||||||
|
/* Avoid race conditions with other builds using virtualenv. */
|
||||||
|
VIRTUAL_ENV = "${WORKSPACE_TMP}/venv"
|
||||||
|
PATH = "${VIRTUAL_ENV}/bin:${PATH}"
|
||||||
|
}
|
||||||
|
|
||||||
stages {
|
stages {
|
||||||
stage('Prep') {
|
stage('Prep') {
|
||||||
@@ -46,7 +56,8 @@ pipeline {
|
|||||||
stage('Setup') {
|
stage('Setup') {
|
||||||
steps { script {
|
steps { script {
|
||||||
dir('test/appium') {
|
dir('test/appium') {
|
||||||
sh 'pip3 install --user -r requirements.txt'
|
sh "python3 -m venv ${VIRTUAL_ENV}"
|
||||||
|
sh 'pip3 install -r requirements.txt'
|
||||||
}
|
}
|
||||||
} }
|
} }
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,17 +1,15 @@
|
|||||||
#!/usr/bin/env groovy
|
#!/usr/bin/env groovy
|
||||||
library 'status-jenkins-lib@v1.7.15'
|
library 'status-jenkins-lib@v1.9.8'
|
||||||
|
|
||||||
pipeline {
|
pipeline {
|
||||||
agent { label 'macos' }
|
agent { label 'macos' }
|
||||||
|
|
||||||
environment {
|
environment {
|
||||||
LANG = 'en_US.UTF-8'
|
LANG = 'en_US.UTF-8'
|
||||||
LANGUAGE = 'en_US.UTF-8'
|
LANGUAGE = 'en_US.UTF-8'
|
||||||
LC_ALL = 'en_US.UTF-8'
|
LC_ALL = 'en_US.UTF-8'
|
||||||
TARGET = 'ios'
|
PLATFORM = 'ios'
|
||||||
FASTLANE_DISABLE_COLORS = 1
|
FASTLANE_DISABLE_COLORS = 1
|
||||||
/* See nix/README.md */
|
|
||||||
NIX_IGNORE_SYMLINK_STORE = 1
|
|
||||||
/* avoid writing to r/o /nix */
|
/* avoid writing to r/o /nix */
|
||||||
GEM_HOME = '~/.rubygems'
|
GEM_HOME = '~/.rubygems'
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#!/usr/bin/env groovy
|
#!/usr/bin/env groovy
|
||||||
library 'status-jenkins-lib@v1.7.15'
|
library 'status-jenkins-lib@v1.9.8'
|
||||||
|
|
||||||
pipeline {
|
pipeline {
|
||||||
agent { label params.AGENT_LABEL }
|
agent { label params.AGENT_LABEL }
|
||||||
@@ -18,8 +18,6 @@ pipeline {
|
|||||||
}
|
}
|
||||||
|
|
||||||
environment {
|
environment {
|
||||||
/* See nix/README.md */
|
|
||||||
NIX_IGNORE_SYMLINK_STORE = 1
|
|
||||||
/* we source .bash_profile to be able to use nix-store */
|
/* we source .bash_profile to be able to use nix-store */
|
||||||
NIX_SSHOPTS = "-oStrictHostKeyChecking=no"
|
NIX_SSHOPTS = "-oStrictHostKeyChecking=no"
|
||||||
NIX_CONF_DIR = "${env.WORKSPACE}/nix"
|
NIX_CONF_DIR = "${env.WORKSPACE}/nix"
|
||||||
@@ -36,6 +34,7 @@ pipeline {
|
|||||||
buildDiscarder(logRotator(
|
buildDiscarder(logRotator(
|
||||||
numToKeepStr: '20',
|
numToKeepStr: '20',
|
||||||
daysToKeepStr: '30',
|
daysToKeepStr: '30',
|
||||||
|
artifactNumToKeepStr: '1',
|
||||||
))
|
))
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -82,7 +81,7 @@ pipeline {
|
|||||||
env.NIXPKGS_SYSTEM_OVERRIDE = nixSysOverride(os, arch, 'android')
|
env.NIXPKGS_SYSTEM_OVERRIDE = nixSysOverride(os, arch, 'android')
|
||||||
/* Build/fetch deps required to build android release. */
|
/* Build/fetch deps required to build android release. */
|
||||||
nix.build(
|
nix.build(
|
||||||
attr: 'targets.mobile.android.release.buildInputs',
|
attr: 'targets.mobile.android.build.buildInputs',
|
||||||
sandbox: false,
|
sandbox: false,
|
||||||
pure: false,
|
pure: false,
|
||||||
link: false
|
link: false
|
||||||
@@ -124,7 +123,6 @@ pipeline {
|
|||||||
post {
|
post {
|
||||||
always { script {
|
always { script {
|
||||||
nix.shell('nix-store --optimize', pure: false)
|
nix.shell('nix-store --optimize', pure: false)
|
||||||
nix.shell('nix/scripts/clean.sh', pure: false)
|
|
||||||
} }
|
} }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,17 +1,15 @@
|
|||||||
#!/usr/bin/env groovy
|
#!/usr/bin/env groovy
|
||||||
library 'status-jenkins-lib@v1.7.15'
|
library 'status-jenkins-lib@v1.9.8'
|
||||||
|
|
||||||
pipeline {
|
pipeline {
|
||||||
agent { label 'linux' }
|
agent { label 'linux' }
|
||||||
|
|
||||||
environment {
|
environment {
|
||||||
LANG = 'en_US.UTF-8'
|
LANG = 'en_US.UTF-8'
|
||||||
LANGUAGE = 'en_US.UTF-8'
|
LANGUAGE = 'en_US.UTF-8'
|
||||||
LC_ALL = 'en_US.UTF-8'
|
LC_ALL = 'en_US.UTF-8'
|
||||||
TARGET = 'ios'
|
PLATFORM = 'ios'
|
||||||
FASTLANE_DISABLE_COLORS = 1
|
FASTLANE_DISABLE_COLORS = 1
|
||||||
/* See nix/README.md */
|
|
||||||
NIX_IGNORE_SYMLINK_STORE = 1
|
|
||||||
/* avoid writing to r/o /nix */
|
/* avoid writing to r/o /nix */
|
||||||
GEM_HOME = '~/.rubygems'
|
GEM_HOME = '~/.rubygems'
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#!/usr/bin/env groovy
|
#!/usr/bin/env groovy
|
||||||
library 'status-jenkins-lib@v1.7.15'
|
library 'status-jenkins-lib@v1.9.8'
|
||||||
|
|
||||||
pipeline {
|
pipeline {
|
||||||
agent {
|
agent {
|
||||||
|
|||||||
@@ -1,63 +1,43 @@
|
|||||||
## Getting Started
|
## Getting Started
|
||||||
|
|
||||||
[Starting Guide](starting-guide.md)
|
|
||||||
|
|
||||||
[IDE Setup](ide-setup.md)
|
|
||||||
|
|
||||||
|
|
||||||
|
- [Starting Guide](starting-guide.md)
|
||||||
|
- [IDE Setup](ide-setup.md)
|
||||||
|
|
||||||
## Development Process
|
## Development Process
|
||||||
|
|
||||||
[Coding guidelines](new-guidelines.md)
|
- [Coding guidelines](new-guidelines.md)
|
||||||
|
- [UI components coding guidelines](ui-guidelines.md)
|
||||||
[Release Checklist](release-checklist.md)
|
- [Release Checklist](release-checklist.md)
|
||||||
|
- [Release Guide](release-guide.md)
|
||||||
[Release Guide](release-guide.md)
|
- [Merging PR process](merging-pr-process.md)
|
||||||
|
- [PR Review Policy](pr-review-policy.md)
|
||||||
[Merging PR process](merging-pr-process.md)
|
- [Working on PR together with QA team](pipeline_process.md)
|
||||||
|
- [Debugging](debugging.md)
|
||||||
[PR Review Policy](pr-review-policy.md)
|
- [Patching](patching.md)
|
||||||
|
- [Creating a pixel perfect UI](pixel-perfection.md)
|
||||||
[Working on PR together with QA team](pipeline_process.md)
|
- [Contributing to status-go](status-go-changes.md)
|
||||||
|
- [Malli schemas (recorded demo)](https://www.youtube.com/watch?v=SlRio70aYVI) ([slides](files/forging-code-with-schemas-sep-2023-slides.pdf))
|
||||||
[Debugging](debugging.md)
|
|
||||||
|
|
||||||
[Patching](patching.md)
|
|
||||||
|
|
||||||
[Creating a pixel perfect UI](pixel-perfection.md)
|
|
||||||
|
|
||||||
[Contributing to status-go](status-go-changes.md)
|
|
||||||
|
|
||||||
## Testing
|
## Testing
|
||||||
|
|
||||||
[How to run local tests](testing.md)
|
- [Overview](tests/tests-overview.md)
|
||||||
|
- [How to run local tests](tests/how-to-run-local-tests.md)
|
||||||
[End-to-end tests (e2e) overview](how-to-launch-e2e.md)
|
- [End-to-end tests (e2e) overview](tests/how-to-launch-e2e.md)
|
||||||
|
- [Component tests (jest) overview](tests/component-tests-overview.md)
|
||||||
[Component tests (jest) overview](component-tests-overview.md)
|
|
||||||
|
|
||||||
|
|
||||||
## Project details
|
## Project details
|
||||||
|
|
||||||
[status-go introduction (recorded meeting)](https://drive.google.com/file/d/1B7TljmTZ8fHkqJH8ChU1Cp4FGDFM03gq/view)
|
- [status-go introduction (recorded meeting)](https://drive.google.com/file/d/1B7TljmTZ8fHkqJH8ChU1Cp4FGDFM03gq/view)
|
||||||
|
- [re-frame usage (recorded meeting)](https://drive.google.com/file/d/1qv_E0CEGzQpu_zGXD0gCTU5EvhC2k8Jy/view)
|
||||||
[re-frame usage (recorded meeting)](https://drive.google.com/file/d/1qv_E0CEGzQpu_zGXD0gCTU5EvhC2k8Jy/view)
|
- [status app functionality demo](https://drive.google.com/file/u/0/d/1PmwsMLTLDNNIdv5_6wvMOwoj2PfT50c6/view)
|
||||||
|
|
||||||
[status app functionality demo](https://drive.google.com/file/u/0/d/1PmwsMLTLDNNIdv5_6wvMOwoj2PfT50c6/view)
|
|
||||||
|
|
||||||
## Misc
|
## Misc
|
||||||
|
|
||||||
[Importing icons from Figma into project](export-icons.md)
|
- [Importing icons from Figma into project](export-icons.md)
|
||||||
|
- [Updating Status APK builds for the F-Droid Android application catalogue](fdroid.md)
|
||||||
[Updating Status APK builds for the F-Droid Android application catalogue](fdroid.md)
|
- [Troubleshooting for known errors](troubleshooting.md)
|
||||||
|
|
||||||
[Troubleshooting for known errors](troubleshooting.md)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## Outdated:
|
## Outdated:
|
||||||
|
|
||||||
[Old guidelines](codebase-structure-and-guidelines.md)
|
- [Old guidelines](codebase-structure-and-guidelines.md)
|
||||||
|
- [Post mortem analysis](post-mortem.md)
|
||||||
[Post mortem analysis](post-mortem.md)
|
|
||||||
|
|
||||||
|
|||||||
@@ -20,6 +20,39 @@ A server will be started at http://localhost:4567. It might show "not connected"
|
|||||||
|
|
||||||
More details about re-frisk are on the [project page](https://github.com/flexsurfer/re-frisk).
|
More details about re-frisk are on the [project page](https://github.com/flexsurfer/re-frisk).
|
||||||
|
|
||||||
|
## Debugging with FlowStorm
|
||||||
|
|
||||||
|
[FlowStorm](http://www.flow-storm.org/) is a free and open-source time-travel
|
||||||
|
debugger for Clojure and ClojureScript. It is capable of recording almost any
|
||||||
|
code execution path in the Status' mobile app.
|
||||||
|
|
||||||
|
FlowStorm is independent of editor/IDE, but a tighter [integration with
|
||||||
|
Emacs](https://github.com/jpmonettas/cider-storm) is available.
|
||||||
|
|
||||||
|
If you are developing with Android, run `make android-ports` first. If you are
|
||||||
|
behind a firewall, allow TCP traffic on port `7722`, then:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
make run-flow-storm
|
||||||
|
```
|
||||||
|
|
||||||
|
You will know FlowStorm is correctly running if you see the status bar with
|
||||||
|
green `REPL` and `RUNTIME` indicators.
|
||||||
|
|
||||||
|
With FlowStorm running, you can now add `#trace` on any top-level form, reload
|
||||||
|
the code, or evaluate the traced form in the REPL, and FlowStorm will start
|
||||||
|
recording data. Avoid `#rtrace` (with `r`) because it can cause massive spikes
|
||||||
|
in CPU which will make the app hang and you might need to forcefully kill
|
||||||
|
processes.
|
||||||
|
|
||||||
|
```clojure
|
||||||
|
#trace ; => Add this line to tell FlowStorm to instrument the function.
|
||||||
|
(defn say-hello []
|
||||||
|
(str "Hello world"))
|
||||||
|
```
|
||||||
|
|
||||||
|
There are other ways to debug, but this is a good start.
|
||||||
|
|
||||||
## Enabling debug logs
|
## Enabling debug logs
|
||||||
Calls to `log/debug` will not be printed to the console by default. It can be enabled under "Advanced settings" in the app:
|
Calls to `log/debug` will not be printed to the console by default. It can be enabled under "Advanced settings" in the app:
|
||||||
|
|
||||||
|
|||||||
@@ -20,12 +20,6 @@ required by bignumber.js otherwise there is a compilation error
|
|||||||
|
|
||||||
used to generate guids and random values in `status-im.utils.random`
|
used to generate guids and random values in `status-im.utils.random`
|
||||||
|
|
||||||
## "create-react-class": "15.6.2"
|
|
||||||
|
|
||||||
fixed version because even bugfix update causes compilation error with current version of react-native (0.59)
|
|
||||||
|
|
||||||
internal react library, used by figwheel for instance but also probably react
|
|
||||||
|
|
||||||
## "emojilib": "^2.4.0"
|
## "emojilib": "^2.4.0"
|
||||||
|
|
||||||
used for emojis
|
used for emojis
|
||||||
@@ -113,11 +107,6 @@ used for profile picture
|
|||||||
used for storing password when user saves password
|
used for storing password when user saves password
|
||||||
TODO: check if fork is necessary, merge with upstream?
|
TODO: check if fork is necessary, merge with upstream?
|
||||||
|
|
||||||
## "react-native-languages": "^3.0.2"
|
|
||||||
|
|
||||||
TODO DEPRECATED, should be replaced with https://github.com/react-native-community/react-native-localize
|
|
||||||
used to get user language and interact with i18n.js
|
|
||||||
|
|
||||||
## "react-native-mail": "git+https://github.com/status-im/react-native-mail.git#v3.0.8_status"
|
## "react-native-mail": "git+https://github.com/status-im/react-native-mail.git#v3.0.8_status"
|
||||||
|
|
||||||
used to send email to support when phone is shaked
|
used to send email to support when phone is shaked
|
||||||
@@ -131,6 +120,7 @@ TODO: update once bug is fixed for Android that causes crash when app is back fr
|
|||||||
## "react-native-shake": "^3.3.1"
|
## "react-native-shake": "^3.3.1"
|
||||||
|
|
||||||
used to send email to support when phone is shaked
|
used to send email to support when phone is shaked
|
||||||
|
|
||||||
## "react-native-lottie-splash-screen": "^1.0.1"
|
## "react-native-lottie-splash-screen": "^1.0.1"
|
||||||
|
|
||||||
used to make splash screen with lottie animation during initial loading for android, also used as replacement of "react-native-splash-screen" for iOS
|
used to make splash screen with lottie animation during initial loading for android, also used as replacement of "react-native-splash-screen" for iOS
|
||||||
@@ -157,10 +147,10 @@ used for browser
|
|||||||
used for native navigation
|
used for native navigation
|
||||||
fixed because even bugfix version upgrade causes runtime errors with current version of react-native
|
fixed because even bugfix version upgrade causes runtime errors with current version of react-native
|
||||||
|
|
||||||
## "rn-emoji-keyboard": "https://github.com/status-im/rn-emoji-keyboard"
|
|
||||||
|
|
||||||
Used for taking emoji input, for custom emoji thumbnails for community channels
|
|
||||||
|
|
||||||
## "react-native-draggable-flatlist": "https://github.com/computerjazz/react-native-draggable-flatlist"
|
## "react-native-draggable-flatlist": "https://github.com/computerjazz/react-native-draggable-flatlist"
|
||||||
|
|
||||||
A drag-and-drop-enabled FlatList component for React Native
|
A drag-and-drop-enabled FlatList component for React Native
|
||||||
|
|
||||||
|
## "react-native-shadow-2": "https://github.com/SrBrahma/react-native-shadow-2"
|
||||||
|
|
||||||
|
A shadow component that is consistent across both platforms
|
||||||
|
|||||||