Compare commits
1743 Commits
Author | SHA1 | Date |
---|---|---|
|
7bcef6fe1d | |
|
6f27785a12 | |
|
5cec5e8084 | |
|
7b63150e73 | |
|
997a267b89 | |
|
41c09d4ae9 | |
|
a70dce9780 | |
|
d16178abc9 | |
|
fa8d7ed47e | |
|
9f8064ded4 | |
|
c3aba848a5 | |
|
f64135a6df | |
|
1de8a40cda | |
|
c5c616e3dc | |
|
34043fc1b3 | |
|
5b031b40c0 | |
|
7b6c9d5130 | |
|
da623dac56 | |
|
0a99669af6 | |
|
cdd80250d1 | |
|
09bc6c30af | |
|
8b3ca21ac9 | |
|
6e5b06f3a7 | |
|
f7729f33db | |
|
f2b275d815 | |
|
0e64350df8 | |
|
760c8b4c68 | |
|
f1ba7ce377 | |
|
3154540bba | |
|
93b3ac1618 | |
|
4b2b701cea | |
|
33709f8fa6 | |
|
1375bc95cd | |
|
23a8e5cd19 | |
|
c5eb1591f8 | |
|
96c219e3f9 | |
|
a940ed4cf3 | |
|
c1e9c738c5 | |
|
4f9e9e7a14 | |
|
df7eb26057 | |
|
a8243adf51 | |
|
8aeeb1d806 | |
|
05958b66f6 | |
|
141d5916fd | |
|
ff14f086a7 | |
|
46a30585a7 | |
|
48e51530b1 | |
|
63c4ffbabf | |
|
40274ef28c | |
|
21200a7758 | |
|
5b670f5d13 | |
|
36202028f9 | |
|
cde5a14cab | |
|
a4152a5bb6 | |
|
91596a46c4 | |
|
d3f75cfc22 | |
|
93b53ec158 | |
|
016ea33e26 | |
|
824730bc40 | |
|
7a5464e38a | |
|
768a27d37c | |
|
6ed54c3f16 | |
|
79fc0c814c | |
|
e74a73fbd7 | |
|
20152790f5 | |
|
0fc68e56d3 | |
|
6c1eba0de7 | |
|
a1361570a5 | |
|
b308932e74 | |
|
521d8f75fc | |
|
86e502afdd | |
|
aa469c1174 | |
|
0d8fdf5740 | |
|
0ca2047f89 | |
|
3238f44867 | |
|
c698ba84e6 | |
|
288a5f12da | |
|
791edcc342 | |
|
bfe37db9b6 | |
|
b5ddebe123 | |
|
4977e91b66 | |
|
5b640879f0 | |
|
a0b3b38d8d | |
|
f78693eee8 | |
|
4e620f8987 | |
|
f8a3b56b11 | |
|
63900c4338 | |
|
1df73b070a | |
|
173d4248d8 | |
|
0db7f0c40a | |
|
921d6e1f4b | |
|
43d2601660 | |
|
97fb5b8e6d | |
|
af991fdc56 | |
|
6e8cefd7c2 | |
|
5c461c0cd1 | |
|
6dee67a4de | |
|
abf3d41780 | |
|
f58b2af631 | |
|
0450019cac | |
|
4ce3ce58ab | |
|
c44482aa75 | |
|
120641b95e | |
|
71e0c88cc2 | |
|
702ecef243 | |
|
f505f78193 | |
|
292fb42a22 | |
|
216a736860 | |
|
8b721e1d2e | |
|
de7e39a332 | |
|
4269c1d9d1 | |
|
35eb7ba765 | |
|
45c54db617 | |
|
1bff79ed4a | |
|
ca2e1e07ec | |
|
04a56edcf4 | |
|
b1a796d3f1 | |
|
73e4bdb290 | |
|
d2eb7156a4 | |
|
9b0f07fbf1 | |
|
542dfe4723 | |
|
3b9369b509 | |
|
8b8a540105 | |
|
001267b9c7 | |
|
718870e3e9 | |
|
86e7edb963 | |
|
ad04eff7ce | |
|
3b4b6d2f67 | |
|
c0798a2e0c | |
|
29d5a1508d | |
|
ea54f91f29 | |
|
6a8663f9ed | |
|
71e3bce422 | |
|
781752ee91 | |
|
a78fe5ffe8 | |
|
e37a95408c | |
|
d3cf0edbc9 | |
|
79a92b5df7 | |
|
4a340fca8e | |
|
398f34d95d | |
|
3eec9d1af0 | |
|
127978da79 | |
|
441090ab28 | |
|
242c75079a | |
|
b679c0760f | |
|
fcc53672fa | |
|
620dcfccdb | |
|
2de5a251ce | |
|
2097dceda7 | |
|
eecd871d65 | |
|
4864f6cd5c | |
|
0185335138 | |
|
48481a4cd5 | |
|
724cd76647 | |
|
11ac2bd51d | |
|
d1ed8a0d2a | |
|
9259ee2995 | |
|
c1ebde8fe9 | |
|
8775a0cb25 | |
|
0b3d206190 | |
|
fd114ed0f0 | |
|
f98b8946dc | |
|
be2c223142 | |
|
5d1459eba6 | |
|
1dd64c4e19 | |
|
9f6e7738bf | |
|
adddae9d72 | |
|
db41e85d07 | |
|
e225c5b6bf | |
|
7c7c96bc42 | |
|
242ecf76c0 | |
|
2a774a5516 | |
|
5ec49739fc | |
|
3545c13ae9 | |
|
74badd94cb | |
|
2d9f7a90cc | |
|
90c8e4cba8 | |
|
2c96991ca0 | |
|
0dacd5ec89 | |
|
88d4de98c2 | |
|
78b6834c3f | |
|
e60535cd1c | |
|
5d3f773a2a | |
|
968a3266c2 | |
|
c21e99909d | |
|
624c1f172c | |
|
602e010cfc | |
|
49c51b4af2 | |
|
574dbd3258 | |
|
dc893b0d5d | |
|
4aa96ba2bd | |
|
646b539949 | |
|
7559196e42 | |
|
57efc4c868 | |
|
f219371243 | |
|
5551cd0e12 | |
|
90b0178f5d | |
|
d1714fab26 | |
|
aee206fc95 | |
|
062e6825b5 | |
|
83cd5d4eb0 | |
|
aba239188f | |
|
5c3e490112 | |
|
ebe57be674 | |
|
752d33d5b3 | |
|
e447a91cfb | |
|
8c87841fed | |
|
95a99ef7cd | |
|
3451a021e9 | |
|
eff1f97b14 | |
|
40522595d0 | |
|
af5273d216 | |
|
023f66895d | |
|
738194d108 | |
|
aa5a607666 | |
|
7d5c9e906a | |
|
05a46f23b9 | |
|
4b8885ef2c | |
|
922d7c7917 | |
|
653b588c29 | |
|
e8eb62e2d0 | |
|
2a806695ca | |
|
e417532d60 | |
|
d73857eef4 | |
|
2d91d1f7fb | |
|
9d9c16df06 | |
|
ebc6d03c6a | |
|
82928f8611 | |
|
f1b162a020 | |
|
47d5b02468 | |
|
613cf1365c | |
|
5cd83ae055 | |
|
fb6a111c55 | |
|
d93c77c4ca | |
|
a131b1277c | |
|
c2a180f4f5 | |
|
adb7a765b4 | |
|
196f51bfca | |
|
74e794a215 | |
|
18ad22302d | |
|
261987cac9 | |
|
e97eff25c5 | |
|
3883c0307a | |
|
34c0bbf4bb | |
|
b52b529550 | |
|
f10d52cebc | |
|
86c3e91439 | |
|
9a289489fa | |
|
8814161e0e | |
|
0efb7e5b70 | |
|
e5744aba06 | |
|
e7ca5ba63d | |
|
57f1ed62b5 | |
|
26d2c78517 | |
|
e5e74410d0 | |
|
58c96c4c08 | |
|
fa066daa59 | |
|
bebf4c7101 | |
|
81b810496b | |
|
2a19e1fc2a | |
|
a37f66d080 | |
|
03fd770a41 | |
|
02a90e84f3 | |
|
50f95900b6 | |
|
c7602df08c | |
|
7f97908e23 | |
|
76d4bc754b | |
|
30be3cdb15 | |
|
01c27d6a99 | |
|
e31ce3772a | |
|
f93fe09783 | |
|
def4c5424e | |
|
8610be1caf | |
|
3de4212a65 | |
|
1918274ec9 | |
|
d68ec113c6 | |
|
89e2b46792 | |
|
a4e6540b50 | |
|
a4e97ccb1c | |
|
b9c4b139f5 | |
|
be772f905d | |
|
cd7e740ab1 | |
|
1025d85ae5 | |
|
1b2d9d144f | |
|
215534d0c8 | |
|
cfa637b23d | |
|
a3b5a132c5 | |
|
43c0447418 | |
|
59a2d932e3 | |
|
972ae46d45 | |
|
4cadeb6a6f | |
|
0b1fdf59ca | |
|
cc6740a7c0 | |
|
6ce78e94f8 | |
|
9e0e8db82a | |
|
fb3f2e82d6 | |
|
2d9dc00683 | |
|
d6d0cc0d03 | |
|
7db8b26dd9 | |
|
44f8900902 | |
|
50332773c3 | |
|
fb9b7486d0 | |
|
23a8c03be2 | |
|
88528f5293 | |
|
1704c0401c | |
|
ea02561cdb | |
|
70d57ed830 | |
|
c2aa78fef8 | |
|
5ce7d50f8f | |
|
3cac12fb9e | |
|
c7a472124c | |
|
8406a57143 | |
|
bd3046cc2f | |
|
c83a74d1c3 | |
|
feadcc019c | |
|
bb9fa0c752 | |
|
06324ee51a | |
|
62a6594f91 | |
|
092bc5013a | |
|
ba5bc35a05 | |
|
bd5e92cab3 | |
|
6b73485aae | |
|
0bcd0c1725 | |
|
b067b9bdb1 | |
|
4c6b8f0959 | |
|
6dafbc96af | |
|
62df29a479 | |
|
f3e1741629 | |
|
2705b4b804 | |
|
56d1090ca9 | |
|
ced71d6611 | |
|
ac9738d358 | |
|
554825a9ea | |
|
13303c4269 | |
|
eb385b8872 | |
|
65e9f41a3b | |
|
f0734e52e7 | |
|
7ccfdc7562 | |
|
4a25feb346 | |
|
b677c4b7ce | |
|
49a0e6d63e | |
|
0de7e84f58 | |
|
e13669af56 | |
|
ca7309b862 | |
|
14b23ac480 | |
|
1029cb6a67 | |
|
a77e495b6b | |
|
43a98be2d9 | |
|
c6aff79055 | |
|
53ea661d9a | |
|
892e6c6131 | |
|
2a40043b2e | |
|
4cddbb9bad | |
|
1ea6aff328 | |
|
71ccb4a93c | |
|
a40f0d9f82 | |
|
34f7218c34 | |
|
21d6baa70d | |
|
f3b46b7e9c | |
|
ea5705a6de | |
|
e1f951eb8c | |
|
219358cf54 | |
|
e27bf7407b | |
|
b6045e5121 | |
|
1e0e8842db | |
|
64b367a247 | |
|
3594500b3e | |
|
f3c40e9486 | |
|
57e1206faf | |
|
e32125ad17 | |
|
b388853429 | |
|
39ab9059d9 | |
|
fb7111d771 | |
|
fbdb5ed0db | |
|
10f7d74600 | |
|
5e90a0d8f3 | |
|
a0bfb6cb24 | |
|
b36863337e | |
|
852095f5cf | |
|
047464a9c1 | |
|
e95f1e8157 | |
|
54c99eb054 | |
|
4e8b4c0e95 | |
|
2ac1d49f9f | |
|
dab2ca060d | |
|
bb02fadc16 | |
|
5a77801188 | |
|
ca629befc9 | |
|
29a092a925 | |
|
6e7ebef99a | |
|
f37f9e857d | |
|
72fa8c4fcf | |
|
ed71f86983 | |
|
5967fff318 | |
|
533ff1d549 | |
|
61967f4420 | |
|
4bd11e2246 | |
|
bace3b85de | |
|
50b07fc5eb | |
|
d26d8f3c14 | |
|
71bea470e0 | |
|
fea45e66bc | |
|
909fed0644 | |
|
96a448d602 | |
|
2c7772d4c2 | |
|
c0aad41047 | |
|
1bd3e150af | |
|
47feac174a | |
|
a236adfb57 | |
|
b1f00ce99b | |
|
fea2e82bdd | |
|
b76d3f50df | |
|
a5315501fd | |
|
ef80ab895e | |
|
c59690fcb9 | |
|
3691b19a87 | |
|
44aff1f283 | |
|
4725287554 | |
|
8b20e186de | |
|
7b3fa6d1bc | |
|
ac6de3ebf1 | |
|
be4eaa93ee | |
|
d3d2202caa | |
|
41acc776ac | |
|
3c178e9f82 | |
|
063f993882 | |
|
78dba4ae1a | |
|
e09e2da1b7 | |
|
0e348dcef1 | |
|
2f3e398d70 | |
|
3d2339c2b5 | |
|
a4cd24f313 | |
|
c4316804fc | |
|
9f680c2a2a | |
|
c90c8ee8d4 | |
|
4a35e910c1 | |
|
7f8a8de898 | |
|
6e8515d820 | |
|
17d4245cd9 | |
|
96497aad25 | |
|
91be219ff3 | |
|
6936e8009a | |
|
dee4e2810a | |
|
24ccee8afa | |
|
306bc45e33 | |
|
acca2683af | |
|
c18089bf8a | |
|
e542f0a52e | |
|
73eb695cfc | |
|
44379504eb | |
|
1ece7b3fe3 | |
|
36bbe5bdbd | |
|
213328ef1a | |
|
bdbacf579e | |
|
357c4039cb | |
|
b449d50b78 | |
|
88312e4df5 | |
|
748351026f | |
|
1a069d5acc | |
|
e7fb9ed452 | |
|
1b58bcad3e | |
|
44f83e44b9 | |
|
4a28d47b41 | |
|
7a14c89e5b | |
|
d6b3eabb18 | |
|
3e081ab377 | |
|
3345692719 | |
|
705c1d0ad0 | |
|
c89612d875 | |
|
5239fb83c6 | |
|
1f2e34e9da | |
|
c4f825e087 | |
|
5338720106 | |
|
53b38004c3 | |
|
210b34304c | |
|
db6ef36278 | |
|
51489e8e26 | |
|
c6e27d6d88 | |
|
955478c605 | |
|
2516b9753b | |
|
a901fdb9ff | |
|
3d590d836d | |
|
e2e5e80aaf | |
|
cb7762d18c | |
|
b70ca924a1 | |
|
fc06e4c629 | |
|
35bf588b75 | |
|
580ed84d67 | |
|
79246ff821 | |
|
8d0a58b975 | |
|
24d57704b9 | |
|
413bb4b76f | |
|
196fb05dea | |
|
c79caa6dc7 | |
|
e1e700543f | |
|
6146ecf712 | |
|
7faa4b5044 | |
|
277d114b27 | |
|
7096c0e2cb | |
|
b3441d6edb | |
|
52ece9a2eb | |
|
be30ec3e3c | |
|
9f76fa08a8 | |
|
d8bff02136 | |
|
dab09369cb | |
|
8a7e78485d | |
|
7421ffd1bc | |
|
0fd3fcfd3f | |
|
507ecf5eeb | |
|
20a55efb9c | |
|
6a9f951dba | |
|
ddfd3a830d | |
|
29fd36a581 | |
|
267fa2194d | |
|
a3a0bf523f | |
|
f619d1bb6a | |
|
0cc1cdd4b6 | |
|
bb3ddd2779 | |
|
de7498b218 | |
|
75800598c2 | |
|
eda77fd7fc | |
|
b80c84f181 | |
|
d5c65af44c | |
|
c60de7a5a1 | |
|
0a5fea1194 | |
|
0e9ef0ec40 | |
|
bd750da9d5 | |
|
6c17123fe3 | |
|
a9d40079cc | |
|
a0c440be5e | |
|
9b40a605b4 | |
|
a631966952 | |
|
39bda959e3 | |
|
8a8b95180b | |
|
c07522f68b | |
|
51165e47ea | |
|
bfd9e8d50c | |
|
4f329d7724 | |
|
e8b3187f9e | |
|
668a1dc6a6 | |
|
c6bdc08d0f | |
|
18e7262f6f | |
|
fbfae52627 | |
|
bf8826fec4 | |
|
f1e424e919 | |
|
6939010ffd | |
|
ce0adeeb66 | |
|
e91a1e3eff | |
|
3038127fcc | |
|
5907d43eb2 | |
|
aa5ad5cd4e | |
|
94c4c7c942 | |
|
1b2e651117 | |
|
64762d4670 | |
|
92b28660ef | |
|
0d39f25f39 | |
|
0f6a28abc5 | |
|
925ba2e263 | |
|
83090397ec | |
|
f11d3abe98 | |
|
95f0c5859b | |
|
b196d87cb1 | |
|
6a90557d2b | |
|
dc83818e90 | |
|
641e1f0cdc | |
|
f2de56f602 | |
|
c8c3adf088 | |
|
4d7606cd53 | |
|
026ee9ce6d | |
|
d6a2ae5e56 | |
|
1ae7cc7038 | |
|
72917c21f6 | |
|
beb7ba9dc2 | |
|
3207fc3b58 | |
|
6d6dd1a21c | |
|
020ad6be34 | |
|
d4be002016 | |
|
28028c8aab | |
|
6dcf0f0d7d | |
|
543d345ea5 | |
|
abff63eef0 | |
|
a0eac3bc01 | |
|
7063d30219 | |
|
c75bf73a94 | |
|
9ec6f7331d | |
|
7ef88c735b | |
|
0d9992107c | |
|
4b1d628c5e | |
|
43c5f98529 | |
|
534bfcaf78 | |
|
32cd53310c | |
|
cc3d5b14e5 | |
|
fa0d28acd1 | |
|
4f22e4bd78 | |
|
c75ecefb09 | |
|
b6b27a821e | |
|
5f53f66004 | |
|
5c255ffa6d | |
|
9863e13e43 | |
|
15fded8c6e | |
|
7a5735acd7 | |
|
bf10e15445 | |
|
da1ea314a4 | |
|
eb5940b85d | |
|
8a67fbb29c | |
|
badca62765 | |
|
7655d313a7 | |
|
16574c7d6d | |
|
ba5012134f | |
|
30ca455634 | |
|
9a17d7de96 | |
|
ab0adb7c2b | |
|
82be585a5b | |
|
24528b3bb5 | |
|
d203c00279 | |
|
10e22f9d4a | |
|
a8cd620cbb | |
|
8bc59d3932 | |
|
73e4497a38 | |
|
ec32054c8c | |
|
ea89bfcc9d | |
|
4b39525c82 | |
|
8aaa9bafb7 | |
|
e5f750c3c8 | |
|
db6b5e4e70 | |
|
852948fd23 | |
|
b9cb66535c | |
|
1dc91c160d | |
|
950bda6cb9 | |
|
e605a35e3a | |
|
757e5bb52f | |
|
5f6be99657 | |
|
b00f4c47fe | |
|
a62f0f14d1 | |
|
87fa16c0be | |
|
f6a4a7056c | |
|
d2272d5d30 | |
|
35c585fb81 | |
|
34d02c9ca3 | |
|
52c44c600c | |
|
bd970ec287 | |
|
f5bd5cf232 | |
|
f38e1317cc | |
|
7217887cb4 | |
|
bcc14c7c20 | |
|
ddb3aef0eb | |
|
f6d6964d1d | |
|
8d8707cc39 | |
|
1308b274c5 | |
|
660ddfc6ac | |
|
9a1f64468e | |
|
7b109a02d9 | |
|
ef92901d52 | |
|
05ffe75e2a | |
|
74d904a440 | |
|
398f37d599 | |
|
8744665fda | |
|
08cd1d2c51 | |
|
ca0403e730 | |
|
fcce92a33a | |
|
63baddff48 | |
|
c1f116c77b | |
|
3541bedf6d | |
|
a3e233a91d | |
|
7d9056b562 | |
|
8ef2b89a09 | |
|
fb5585daf2 | |
|
ac093f42eb | |
|
ba1ad2682b | |
|
800ebe989d | |
|
c23e317022 | |
|
838dfdb4a3 | |
|
bfad8fbe7c | |
|
29e9d24542 | |
|
05a8e87ff2 | |
|
45caae7083 | |
|
a0bb964355 | |
|
5b35951424 | |
|
d21afeca53 | |
|
ac10482bc8 | |
|
9203381382 | |
|
7ec7f85893 | |
|
fb3cfa0db1 | |
|
b44370d3ec | |
|
2df23a8a2e | |
|
7282434e69 | |
|
725a061e78 | |
|
8a054f2205 | |
|
ef6eec5351 | |
|
535268c680 | |
|
29b39ea5ac | |
|
ddd1879e48 | |
|
9b4b575291 | |
|
969d4abe0e | |
|
b537c38e9c | |
|
9bc1c878ab | |
|
79a488c84a | |
|
1bf9a1336f | |
|
6929d5d167 | |
|
471f3f3391 | |
|
8dcddd0792 | |
|
d1a737eb51 | |
|
1bcdc9fa93 | |
|
1507059241 | |
|
16dfcec9f2 | |
|
15f22d4c31 | |
|
88bafcc1e0 | |
|
0894b4106b | |
|
2c65dca811 | |
|
9ed6343eb7 | |
|
f1c04d8c85 | |
|
244eda3d12 | |
|
3853066330 | |
|
886b6d6cf7 | |
|
1620963863 | |
|
aba8a38329 | |
|
3e9585fcb7 | |
|
2b84dd5a36 | |
|
0260fc26eb | |
|
a480c11a26 | |
|
70c90b6a47 | |
|
ae295d902c | |
|
d0bdb08bbe | |
|
4531fb4655 | |
|
4561312709 | |
|
608a15a4b8 | |
|
fc33ded4b3 | |
|
38805d7612 | |
|
2def45a6b9 | |
|
3312a67211 | |
|
c7a8cb3951 | |
|
938e74e1b2 | |
|
a3480d6b71 | |
|
d02e45a72c | |
|
c125382965 | |
|
d0becef5bf | |
|
42528caf09 | |
|
c6e7063929 | |
|
46c864f7f9 | |
|
4835ac291a | |
|
51ac36768d | |
|
034208fbe1 | |
|
397c6a2f44 | |
|
262ec9e9b1 | |
|
a2721d21c0 | |
|
dba43e248b | |
|
9f17f95a98 | |
|
a68ed6ea1b | |
|
6b6481f9ac | |
|
9f70cef94f | |
|
8041b2309d | |
|
e2ba4660df | |
|
99b38f421c | |
|
28b5a2e17e | |
|
33d8a97efb | |
|
6ad59c9c3a | |
|
3a3ee95c5f | |
|
38ca647e29 | |
|
053d438466 | |
|
98850d4a59 | |
|
522afb42ba | |
|
81a4b60ab4 | |
|
fc5be8acc9 | |
|
bbd3bf7d85 | |
|
25e82f46d4 | |
|
5907bba2f0 | |
|
4812605aaf | |
|
2421a6c1ee | |
|
9f546312b2 | |
|
b9cf0ceb6b | |
|
51a2ff012a | |
|
621ed3561d | |
|
87ff05d132 | |
|
249320a3b5 | |
|
6f774d8c13 | |
|
c457141e10 | |
|
239de22116 | |
|
0f8befc89c | |
|
29977b6c9e | |
|
41d85bf738 | |
|
ca810065f8 | |
|
869524eb84 | |
|
1ebf732679 | |
|
778ff18457 | |
|
24d179eee7 | |
|
544910f0ed | |
|
16eaba14aa | |
|
d5104bf6f8 | |
|
8d0fc94303 | |
|
3cbcb6b3f9 | |
|
04d2f5fa98 | |
|
1ca41e5b14 | |
|
e396953ac8 | |
|
df80135226 | |
|
7c0bcbeb06 | |
|
04813cbc78 | |
|
236ccbe45d | |
|
85039db137 | |
|
3b7104a892 | |
|
043be76a01 | |
|
936c5874f5 | |
|
7edbe5f798 | |
|
cf29c7c13b | |
|
e66074ea70 | |
|
443eb49ff5 | |
|
bf021cd02f | |
|
34be881ade | |
|
d0412bcbaf | |
|
a1bfd58985 | |
|
38b112c143 | |
|
b46a3432b5 | |
|
c7cf3d52f1 | |
|
b0c040aed7 | |
|
6a5c39b8dd | |
|
9479775351 | |
|
eff1ee5e6d | |
|
aeb3ed8493 | |
|
421ad874db | |
|
0fbae13fdb | |
|
4d003de83f | |
|
36ece75480 | |
|
52b8414b7e | |
|
7adc09f624 | |
|
9fd7cf489f | |
|
72eee3600f | |
|
be4fb53d03 | |
|
f238413232 | |
|
6644ca64d7 | |
|
0864f7373a | |
|
b3cdc0964f | |
|
db46ccc3d8 | |
|
e33e8550f6 | |
|
b5a5ce01a3 | |
|
bd5a0948cf | |
|
a70e1af535 | |
|
315990ee6c | |
|
50c8e149c6 | |
|
e37d5991cf | |
|
6f414d38be | |
|
55053e73f8 | |
|
dcfc87a2d3 | |
|
d9019b787b | |
|
901ba2de98 | |
|
af6679ceb4 | |
|
ff5aa45a90 | |
|
78ad95a9cb | |
|
0991d50240 | |
|
23bc9aa5f3 | |
|
faebd555e8 | |
|
baec474c5f | |
|
0cf7d0daf2 | |
|
b18ccc5490 | |
|
c0d2da3f65 | |
|
b13ae5dafe | |
|
fc8fdec12f | |
|
84deb2ba58 | |
|
d6768c0f6f | |
|
d2cb1774b4 | |
|
a56f8c4026 | |
|
7c48b31241 | |
|
8915fcbd89 | |
|
84cd0186b7 | |
|
1fb359110d | |
|
bfa91676b1 | |
|
7ba8c34c24 | |
|
7ff43c06ee | |
|
5d788be27a | |
|
6a1f8b3c73 | |
|
1eaa1eaecf | |
|
e38a45ffb2 | |
|
77deb3fdef | |
|
31a3e87963 | |
|
f6f078dc1a | |
|
9b109ba1bb | |
|
8a458b2023 | |
|
c4ef26d02a | |
|
75c1806342 | |
|
bee856fa34 | |
|
bc0ae827ad | |
|
316096cf57 | |
|
5ba3290254 | |
|
8b01ab0fd9 | |
|
102bc31add | |
|
62d014d2a8 | |
|
f81bd58d61 | |
|
4efd87861d | |
|
56469d41ed | |
|
f85606a4d5 | |
|
b6efe3eba7 | |
|
2c2fc6efee | |
|
213e343aa9 | |
|
7678857e5d | |
|
fe0a2532f1 | |
|
a9e36d4a9c | |
|
68178f7f31 | |
|
af0756cef2 | |
|
98f5830ab6 | |
|
acf845acc8 | |
|
2416a90bb5 | |
|
792a33a497 | |
|
cec0ac4dff | |
|
29db4d0d46 | |
|
a221beb6f2 | |
|
c94ef1882b | |
|
6b4c2d18ec | |
|
242b11761b | |
|
1b559c89f4 | |
|
4c4bb3422e | |
|
5df4e6c81b | |
|
355fe966c8 | |
|
a17e57eb45 | |
|
02b34370c0 | |
|
82d767bfda | |
|
ea6f4d3fbf | |
|
d0ddccffe8 | |
|
27b995aa67 | |
|
618620d443 | |
|
cda72a396a | |
|
b6cb4eb6f9 | |
|
f7d3433b74 | |
|
e864f5bcb1 | |
|
d8a7b78c30 | |
|
cc47261788 | |
|
091b89d712 | |
|
748339732c | |
|
8658451195 | |
|
af6731f702 | |
|
903f53f61d | |
|
b5716b5425 | |
|
538624eafb | |
|
c106b1899a | |
|
1885869f8a | |
|
5ce0a87695 | |
|
ddad0947cd | |
|
d922619205 | |
|
6bf62d02ff | |
|
18deaaaa0b | |
|
1b4e594ae2 | |
|
ae214e0960 | |
|
1a1fe5e190 | |
|
de82ab7f32 | |
|
bdf7da120f | |
|
4398e520ed | |
|
5a23b73f69 | |
|
398201cc54 | |
|
a686f7d3a7 | |
|
7c84a0ca09 | |
|
61dab1a2bd | |
|
628841ef91 | |
|
2fd215e9a8 | |
|
bf6fff9d1e | |
|
f62e1eb7b7 | |
|
b88bad674d | |
|
bfdf9e5054 | |
|
42e444c31f | |
|
0e5eacae58 | |
|
2692832cd4 | |
|
d1b43e0fce | |
|
67b15f75f5 | |
|
72704b6eac | |
|
1438536cab | |
|
c61290483c | |
|
9cdad96190 | |
|
abadd610f3 | |
|
17141af4d1 | |
|
bda0d3157b | |
|
5ef6d64f52 | |
|
028d0b95e9 | |
|
ffc45080e3 | |
|
e1a706d714 | |
|
b55fde1cd4 | |
|
2765265624 | |
|
8194bae5bd | |
|
fa51e8d035 | |
|
c9802d160f | |
|
9fdb0bbce7 | |
|
bc3d434e1b | |
|
ad78e0373a | |
|
ceb631f611 | |
|
e74499aea4 | |
|
6dad65631f | |
|
0479e2fc9f | |
|
4dcc561cbf | |
|
051dc7be8c | |
|
8a1ccdb305 | |
|
02360c443f | |
|
4b3b222582 | |
|
5d615174cb | |
|
94e9e023e3 | |
|
f7e8d90f1a | |
|
028ee92d64 | |
|
a6135adb17 | |
|
46bab1593f | |
|
9c1d18c7f0 | |
|
d0aa55d021 | |
|
6dc518c7ea | |
|
c2a537b929 | |
|
00b0ad3ac5 | |
|
36d1ee9fef | |
|
1853741a58 | |
|
b407d66758 | |
|
265db6abce | |
|
de495d26d7 | |
|
b4365ddf9c | |
|
c8153773e9 | |
|
824314faad | |
|
2362bfa53a | |
|
d119bb6f50 | |
|
d898d0bf12 | |
|
28c1a89a78 | |
|
f956d37ea9 | |
|
cb791fef45 | |
|
428669c6bb | |
|
7bde66db6d | |
|
c5d6718d0e | |
|
77a902de48 | |
|
d41cd0afdb | |
|
5e4aef3937 | |
|
a7913d063d | |
|
31090f6ccc | |
|
040b985103 | |
|
c66d63f25b | |
|
254244fb73 | |
|
285b2038ff | |
|
bc5f3628dc | |
|
1d210de26a | |
|
59fd07206d | |
|
de815205bc | |
|
e46285ccf0 | |
|
3df10d3805 | |
|
15b686a9a6 | |
|
76edfd90dc | |
|
81ac727c01 | |
|
4d822ee471 | |
|
70ac435c91 | |
|
9b86e6161a | |
|
b82f5b04e1 | |
|
356b99f510 | |
|
f40b4a036f | |
|
cec0eeafb3 | |
|
ec853d04a6 | |
|
7d1a8c5148 | |
|
d958d85df3 | |
|
b61820b83d | |
|
f9335add5f | |
|
f37b3b0828 | |
|
964cc9968e | |
|
67b1ffa126 | |
|
03c48a5403 | |
|
34e01f8598 | |
|
3ee8349155 | |
|
7fa955449f | |
|
60f75b3cac | |
|
8e40dc0d57 | |
|
788585ff03 | |
|
75a545e66d | |
|
95313d06a4 | |
|
088396ce9b | |
|
19236520ac | |
|
2b9abe9a4a | |
|
9d1db80ec9 | |
|
16390ed560 | |
|
34d2d86c9c | |
|
c5af0b3cb7 | |
|
0e069fdba7 | |
|
ca7cdb768c | |
|
dde33ad1ad | |
|
b94af5d8bb | |
|
9c3e8f58b0 | |
|
932c816951 | |
|
cd6f984a17 | |
|
ee2f23c972 | |
|
c105b36b3d | |
|
2d155144e9 | |
|
282ba1267d | |
|
67f1513829 | |
|
e119b5768a | |
|
56887fec85 | |
|
dfb1e32fc8 | |
|
14af578680 | |
|
a728871ac6 | |
|
bb4a18f8a2 | |
|
3c1522b210 | |
|
b71757671b | |
|
714efa3db1 | |
|
2ba8461b97 | |
|
a2b1c07dfc | |
|
4b020897f7 | |
|
35eceac8cc | |
|
d9e1530b8b | |
|
1d6790c76e | |
|
3d5b2279a5 | |
|
8c2dcf2e7d | |
|
4c9f93497d | |
|
08a1978a6a | |
|
12a4c93a76 | |
|
94d87d67c3 | |
|
5bc75e480b | |
|
7192b97770 | |
|
edb332bb26 | |
|
8c2004fe6c | |
|
ed531d7371 | |
|
8f8b7b41b9 | |
|
1ef1594c0a | |
|
ea0b85365e | |
|
7c48c61c99 | |
|
8caf315894 | |
|
4503fb991b | |
|
b7e66425c8 | |
|
66301b177c | |
|
be8fce8185 | |
|
b8abd8db8a | |
|
cb20d05ffe | |
|
a73356c7e6 | |
|
dce3e95010 | |
|
b2043d884f | |
|
235404dc02 | |
|
c9eba052c2 | |
|
3fc861200d | |
|
02c78d5f68 | |
|
fe2e7b4372 | |
|
ad38b5244f | |
|
3612d06b86 | |
|
a519ddea22 | |
|
0274a26212 | |
|
16f096fda6 | |
|
37a99fd64f | |
|
509ac7c992 | |
|
b84b59f39f | |
|
7ee882c5ec | |
|
09ba2ec0a7 | |
|
0d57c7f2d8 | |
|
f385ac8b30 | |
|
74024ffb8f | |
|
50614cfa0f | |
|
7e76124bdd | |
|
f4071ec2d0 | |
|
9adfbfb2b1 | |
|
d7d01f1300 | |
|
b7b3622963 | |
|
43c2297387 | |
|
fba192bdb2 | |
|
932ce924ef | |
|
8a92699f5e | |
|
00e81cc85b | |
|
10d3fade62 | |
|
4624b4a37f | |
|
48438ae5f9 | |
|
150e07f4f8 | |
|
03b219862d | |
|
689b68494a | |
|
f6088ff725 | |
|
c2a53bcf48 | |
|
49464f7c7f | |
|
382ab638e4 | |
|
829a25b76b | |
|
902d4e6c3a | |
|
dc91f3edeb | |
|
546847fd9a | |
|
d23f454148 | |
|
2aba971eb9 | |
|
855f50f9ee | |
|
293447f65c | |
|
f93d6f7db8 | |
|
d4f91a5756 | |
|
95ec76f411 | |
|
bceb70e805 | |
|
1995f32dfd | |
|
8aeb32fd61 | |
|
86b3661c74 | |
|
bd22379d2c | |
|
a9b374302a | |
|
a4373471c5 | |
|
55e775eaeb | |
|
a445eaf7f7 | |
|
05555c3455 | |
|
85c51167b5 | |
|
d4a16a4003 | |
|
3916d75291 | |
|
ae986db208 | |
|
8a7437aafe | |
|
c63b174f43 | |
|
082fcf0fbc | |
|
5c1c6bc1c6 | |
|
d3f9d0003f | |
|
8226ee405b | |
|
8333e68a63 | |
|
34adf956b8 | |
|
30b2ea458c | |
|
1a40c5fce4 | |
|
aa739a595f | |
|
a085182682 | |
|
b6aa610017 | |
|
0435661c10 | |
|
8e00cdcdea | |
|
bff05ae933 | |
|
543d80bf70 | |
|
e19fdc5201 | |
|
747b8cca45 | |
|
89fcdb2068 | |
|
bece2a37fd | |
|
00533c4308 | |
|
1429652460 | |
|
0a35aff8ef | |
|
46386cb579 | |
|
44374ce091 | |
|
83c3a82f36 | |
|
6e3f964b79 | |
|
176a753875 | |
|
e619677660 | |
|
6654adc50c | |
|
31eba0d95b | |
|
a0321291aa | |
|
1c4245bad6 | |
|
8f75bbb4b3 | |
|
3f7c85a41a | |
|
bb7dca988e | |
|
b2772b1d65 | |
|
e78f8263da | |
|
dd7b9cd6a2 | |
|
d4637d85e2 | |
|
ca6cdab285 | |
|
c08077d1c1 | |
|
bf49c03c06 | |
|
fb8bb54989 | |
|
06db0580cd | |
|
e388ce7626 | |
|
f873e12bcc | |
|
ca4594328f | |
|
f7c79edac1 | |
|
be6913c830 | |
|
f38995bf3f | |
|
9e4189c522 | |
|
5ab988585b | |
|
48e6fb52e3 | |
|
047438104f | |
|
7163ce7d77 | |
|
eb87fe689b | |
|
e8fa5f2acb | |
|
51189ad947 | |
|
3a7eec53ec | |
|
50815bc1c1 | |
|
ca3c9c14a7 | |
|
ba7c31c4e7 | |
|
c6d3514fa2 | |
|
6f0c318d06 | |
|
50141b2963 | |
|
bf42a715cd | |
|
c8b73f47f1 | |
|
930b5e4b34 | |
|
a457e9e78e | |
|
9936f6c921 | |
|
182826d047 | |
|
ee71733676 | |
|
b1565ee240 | |
|
c068f9934f | |
|
14766b4f74 | |
|
4832501282 | |
|
44d1f6fbed | |
|
f96e9af7b9 | |
|
98186e1f2b | |
|
1fbdd2ab89 | |
|
7e08e491d3 | |
|
d5a551a2a5 | |
|
d11e8bd356 | |
|
be0f54d7c1 | |
|
70fbf076f9 | |
|
0c5fd9efba | |
|
c3be690a7d | |
|
c3eb1039d4 | |
|
be23f827f5 | |
|
92e8dc6ef7 | |
|
a986ea8c23 | |
|
425799cabe | |
|
e118a29219 | |
|
c381d0cd0f | |
|
30c4d8a6a3 | |
|
2c151428ff | |
|
33c6308468 | |
|
1dd9474d49 | |
|
6e406db703 | |
|
49c67da6de | |
|
243151864d | |
|
311020285d | |
|
751c7f0186 | |
|
11c22907af | |
|
76bf2e693c | |
|
d9d4e8c949 | |
|
6651f86eaa | |
|
0c70cc26a6 | |
|
5fea788b38 | |
|
7bf428f179 | |
|
e35d18c969 | |
|
1a4948c025 | |
|
cfc315ea8f | |
|
25321dbfd5 | |
|
e8ddeea922 | |
|
9624a40aac | |
|
f1e7e05a1d | |
|
545d4151aa | |
|
ad0e55ffec | |
|
10994988b2 | |
|
26e5f592e1 | |
|
1d1e3ac9af | |
|
9c9c7b83af | |
|
b68dca7363 | |
|
911a4e02ee | |
|
8fbe5d2cad | |
|
81a017b3a2 | |
|
54ab16670a | |
|
c32789b772 | |
|
fb34f64d1f | |
|
aa72a6de64 | |
|
0d433d64bf | |
|
4333c5ada0 | |
|
bcd8ae6da7 | |
|
33be34fb97 | |
|
9a22dc9204 | |
|
5a748173d2 | |
|
ec5dba69e4 | |
|
610f6eb580 | |
|
860d7ca68b | |
|
9f94d06759 | |
|
3eac51e685 | |
|
7515b5be1e | |
|
36aa5c9cdb | |
|
b6685b8a5a | |
|
2a676a8167 | |
|
e7aba92f7c | |
|
4694002b92 | |
|
55b7b0b0cd | |
|
0860cd1f84 | |
|
548ef9a05c | |
|
e238c09c6a | |
|
9acb8b856b | |
|
018bf56798 | |
|
14f2cf3632 | |
|
2211de5eb3 | |
|
4ea4e39759 | |
|
bc0c07e785 | |
|
1730030189 | |
|
29505e5ace | |
|
16b9376d1a | |
|
8ed89abe5e | |
|
f5f52185f7 | |
|
107994ab9b | |
|
46f5cd893d | |
|
75ac60f789 | |
|
79dbba7f08 | |
|
5ddc370588 | |
|
20d1cd4f8f | |
|
59d78e3c84 | |
|
23341a5b9f | |
|
fbd9288a98 | |
|
401f32e223 | |
|
d08c1bf7ac | |
|
8d1ff50950 | |
|
46bd9186fa | |
|
d6550386b4 | |
|
60f0a838cc | |
|
bd49caa52a | |
|
45ba984ea3 | |
|
0cbf08ed82 | |
|
9a41dd2191 | |
|
0b4a8ead84 | |
|
4e4bfc12ed | |
|
15c861b283 | |
|
1a021eee37 | |
|
68282e3aac | |
|
c990d8196f | |
|
387a574b0d | |
|
e92a7907e6 | |
|
fe5ec93d46 | |
|
e3c84f6146 | |
|
65d54f73ec | |
|
0c5882f2b0 | |
|
3a4733316a | |
|
271ae63dac | |
|
255307b748 | |
|
013d55aee2 | |
|
22af0bf828 | |
|
a0dcbd050f | |
|
47822c0aa7 | |
|
c443359fc1 | |
|
cb46dedd71 | |
|
414119a7e3 | |
|
b08e24e233 | |
|
b3a3c67775 | |
|
d5ea813ebe | |
|
248238dda8 | |
|
5ec3733369 | |
|
8bcf06fb16 | |
|
89316b3b67 | |
|
d238b829d6 | |
|
200a3e4741 | |
|
80d2e46efc | |
|
9b4f23e61f | |
|
fbddcd2940 | |
|
8c9dfb839b | |
|
ad6c6a98b6 | |
|
ace530c5bd | |
|
dc46c441e3 | |
|
4e693d3903 | |
|
d9228da7d7 | |
|
47e6ca5e59 | |
|
d8703148f0 | |
|
049774d7c2 | |
|
9e4482a642 | |
|
fc7e018602 | |
|
a84a3731c8 | |
|
e2c5e173d5 | |
|
d2ce0aafe8 | |
|
91816599b1 | |
|
6c6dc0ce6a | |
|
f24a4d094d | |
|
3d481624ad | |
|
dbabacc202 | |
|
e2a5235ccb | |
|
a8f932f6dc | |
|
0c28ea6b0c | |
|
7ac789c18c | |
|
98dd7b2b46 | |
|
9a69759e5a | |
|
a3b32b35e7 | |
|
0eca124ed2 | |
|
e8db471131 | |
|
42d822352f | |
|
70084fee33 | |
|
119c8c301e | |
|
43d21ba417 | |
|
40a5c36bb0 | |
|
50151f75f6 | |
|
c7d0977861 | |
|
4fa9b1aec2 | |
|
79b2bc76cc | |
|
8affd1ccdc | |
|
4a736242b5 | |
|
b96a1ca49b | |
|
567a09d6c6 | |
|
83433dd434 | |
|
b004ebd741 | |
|
34e9b5be7f | |
|
fe5faa5df2 | |
|
c56136a410 | |
|
5f50662008 | |
|
92c6f977fd | |
|
2aae9cfec7 | |
|
082602c881 | |
|
3b4ea0bd70 | |
|
1bedc9bfca | |
|
57bdd64ab4 | |
|
99b3447e1c | |
|
ffcba75fd9 | |
|
d4e1b00100 | |
|
904b4c988e | |
|
a158fa93d8 | |
|
b3b8cf1dad | |
|
57ecb5fac4 | |
|
fa9757fb1d | |
|
1880dd62d1 | |
|
371830ff19 | |
|
122dae7404 | |
|
6575a787f6 | |
|
44ec3e5b87 | |
|
74359a9592 | |
|
4bd0234346 | |
|
552c0702be | |
|
b821fc4d16 | |
|
1739c309d6 | |
|
492b77b1bb | |
|
bc72e637bb | |
|
9c4ad3bab6 | |
|
dc65bb8c3a | |
|
d16dd56506 | |
|
24cd305003 | |
|
78060daf26 | |
|
4b3855ab28 | |
|
d2bf27a85a | |
|
32c6112f3f | |
|
f571fdf66d | |
|
6488a8f7bd | |
|
ac293f28c1 | |
|
0245a5c0e3 | |
|
fdba05e702 | |
|
927e7df4e9 | |
|
f3abcf640c | |
|
d32458689b | |
|
0be23da843 | |
|
d7e8c7260d | |
|
04bce7bf36 | |
|
c72f26c260 | |
|
9d26053cce | |
|
b7e66bfe18 | |
|
95562f1f30 | |
|
a8ff69952e | |
|
94d6b24cac | |
|
26a9a56e52 | |
|
751de9ff30 | |
|
4f3acb8853 | |
|
2757d9a0c6 | |
|
8f2b72c303 | |
|
74b2c948ea | |
|
c4ce1bc44a | |
|
2e541529f6 | |
|
a023ad58f1 | |
|
8aa84f7568 | |
|
ecb9ce0c3a | |
|
8df45475d8 | |
|
8fa458a74d | |
|
20e4ef69ea | |
|
b4b15c3740 | |
|
8a3f335d37 | |
|
98cc328570 | |
|
8a56e3a4f0 | |
|
8934291bc3 | |
|
926bce8f58 | |
|
82ce3ae083 | |
|
949efe657e | |
|
cf2209969e | |
|
79064a6139 | |
|
a073f7e5c9 | |
|
55401988c7 | |
|
64cb47f7ab | |
|
f8366bb777 | |
|
61459cd2d2 | |
|
0190b35b57 | |
|
0517d2fae2 | |
|
67d3589f30 | |
|
2b838601d5 | |
|
fd1a6b3415 | |
|
5bb77d0114 | |
|
4499bb8bae | |
|
d4c93750c7 | |
|
87343989cf | |
|
db577076f7 | |
|
32f5af9f95 | |
|
30ad3399f9 | |
|
57b3ef6ea2 | |
|
3dbba38151 | |
|
1e77df95cd | |
|
8e0d499ed8 | |
|
720dd7a837 | |
|
95dda58956 | |
|
7cc1d50d03 | |
|
e64af4f66c | |
|
378097e4f5 | |
|
01bc70b954 | |
|
4103bce880 | |
|
27a9f9fdc0 | |
|
bfa821a36d | |
|
7a3874787f | |
|
7ffc0c7dc6 | |
|
c0dfc30dec | |
|
33e235ae8b | |
|
7da8297b46 | |
|
11b84eb139 | |
|
7fb7c762ac | |
|
76e8e6fec2 | |
|
35c98a1ae0 | |
|
cfba6416cb | |
|
0ca4490b90 | |
|
b5c60a2ce2 | |
|
9658b0cb71 | |
|
46b63b33d6 | |
|
0b659913dc | |
|
006edd5c87 | |
|
57bcbfbdaa | |
|
dd4a9671ba | |
|
eca5349635 | |
|
77ab184b32 | |
|
84b36e0f9c | |
|
f8fe496c33 | |
|
0941fb04e9 | |
|
1ee9b7d91d | |
|
251695cc46 | |
|
7a12792393 | |
|
292101ab30 | |
|
c9964f8d1f | |
|
3e52f175b7 | |
|
58a4b9953f | |
|
28a7f468c8 | |
|
fa9315ee0e | |
|
3955989ab4 | |
|
b8f5da1092 | |
|
2163fbbabb | |
|
1bf096c7f6 | |
|
4a641b895b | |
|
d572f55360 | |
|
6efcd7c316 | |
|
11645c6419 | |
|
5264c17d99 | |
|
b1a0aede1b | |
|
15f2cdc54f | |
|
341cb11723 | |
|
2064ebb5ad | |
|
80c6b1fe26 | |
|
4df121e01a | |
|
a53515dec3 | |
|
81ffaabcdc | |
|
df606e8cdc | |
|
dd811fa311 | |
|
933324a2d8 | |
|
de05a8a877 | |
|
52fd0fff42 | |
|
192d2558c0 | |
|
388d357e51 | |
|
24df6a46d1 | |
|
d4b28df091 | |
|
9258f4b934 | |
|
cf33c52e49 | |
|
5a45e1d0dc | |
|
ff4de793fd | |
|
965bab4822 | |
|
0644c51a7a | |
|
850bcf4f41 | |
|
d7f1c87c9b | |
|
4be0fb5a5f | |
|
c4ec88609e | |
|
9229a0256f | |
|
16dcbc6860 | |
|
4dba96af98 | |
|
8dbe179835 | |
|
aab3d8d94d | |
|
267832dd15 | |
|
396ed8a80c | |
|
edc0a1874c | |
|
df1a334bb8 | |
|
80e23d8a31 | |
|
516bb1e67d | |
|
b0b7a7567b | |
|
f776b477f0 | |
|
d490cae955 | |
|
e14d679f33 | |
|
d80d864bc5 | |
|
f3852025ba | |
|
3727f0e252 | |
|
98a24ce1d6 | |
|
b07db55573 | |
|
7eb5cdd523 | |
|
6da2f545f6 | |
|
544af1936c | |
|
a4fff0b59e | |
|
63e8fb00e4 | |
|
543ac86d03 | |
|
d15e8cb652 | |
|
dd345871f8 | |
|
2825e76dad | |
|
69999dadb6 | |
|
ec0faf7e7f | |
|
f1ee62f918 | |
|
3607a2799b | |
|
6f0a0c43fe | |
|
15cf29d952 | |
|
e620754c15 | |
|
d3f4b85515 | |
|
73d6703e56 | |
|
5243f71c8c | |
|
f9f9b783e3 | |
|
e1f95ea2b2 | |
|
29289821d5 | |
|
e672b3e9b8 | |
|
9416a614cf | |
|
0f0edc16bf | |
|
ab1ef0c9e8 | |
|
caa0c707ee | |
|
6c5814cf33 | |
|
86acfe48ab | |
|
03b312fefe | |
|
d03d5600ec | |
|
bcb55254f9 | |
|
d2addd1b11 | |
|
7329c7038b | |
|
17b198c958 | |
|
e6adbf6986 | |
|
7e1916989d | |
|
458bdbcc78 | |
|
a23f98842f | |
|
b21f1b5a0e | |
|
5fe6cd59f9 | |
|
32a7d23dc9 | |
|
bde6c77cc1 | |
|
2620ec52bb | |
|
cca0ca7032 | |
|
edcd86cba7 | |
|
00ee3e808e | |
|
83d472bc4a | |
|
b21194ca5a | |
|
a366687ec6 | |
|
1b23e3f0f3 | |
|
4319e83bb9 | |
|
8a49c92c79 | |
|
9c3a300972 | |
|
5281de63a6 | |
|
7d797bb401 | |
|
fa3c298b8a | |
|
4afdaf84c1 | |
|
e1e4aace78 | |
|
f127fc3a1a | |
|
6b048e4b2a | |
|
e5effd6b65 | |
|
960634ec0b | |
|
4cf7b79f83 | |
|
83048450e8 | |
|
17f15a199c | |
|
89ca588116 | |
|
ed9a58355a | |
|
cc02626adb | |
|
a4a6e9316b | |
|
ea018a71fa | |
|
82cefdc80c | |
|
32aaf08574 | |
|
b20b75f22e | |
|
78898059cb | |
|
4eea2bf58c | |
|
f3fa6bc662 | |
|
45681fc1f5 | |
|
9fdf3ab640 | |
|
80dfd47d8b | |
|
d287e2d0f6 | |
|
796b0544c4 | |
|
13efb56324 | |
|
a9326c381a | |
|
0c76fb642d | |
|
4c8003b533 | |
|
d2aec8d590 | |
|
6b58bf24e4 | |
|
50ed350af9 | |
|
3303864394 | |
|
313b7af4a8 | |
|
9979d0e9e0 | |
|
d1bddc696a | |
|
a40a645337 | |
|
c46888acab | |
|
1f4108c2d4 | |
|
b842458626 | |
|
383ebc2775 | |
|
f5414412d4 | |
|
01d4e6a5b9 | |
|
dd4234199b | |
|
560d11643b | |
|
03dc94c7c9 | |
|
700b9ad433 | |
|
561bb49cdf |
|
@ -0,0 +1,26 @@
|
|||
export ENVIRONMENT="development"
|
||||
|
||||
export SENTRY_ORGANIZATION=""
|
||||
export SENTRY_PROJECT=""
|
||||
export SENTRY_AUTH_TOKEN=""
|
||||
|
||||
# Fastlane start
|
||||
export LC_ALL=""
|
||||
export LANG=""
|
||||
|
||||
export FASTLANE_USER=""
|
||||
|
||||
export MATCH_PASSWORD=""
|
||||
export MATCH_GIT_URL=""
|
||||
export MATCH_GIT_BASIC_AUTHORIZATION=""
|
||||
|
||||
export APP_STORE_CONNECT_API_KEY_KEY_ID=""
|
||||
export APP_STORE_CONNECT_API_KEY_ISSUER_ID=""
|
||||
export APP_STORE_CONNECT_API_KEY_KEY=""
|
||||
|
||||
export ANDROID_KEYSTORE=""
|
||||
export ANDROID_KEYSTORE_PASSWORD=""
|
||||
export ANDROID_KEYSTORE_ALIAS=""
|
||||
export ANDROID_KEYSTORE_KEY_PASSWORD=""
|
||||
export SUPPLY_JSON_KEY_DATA=""
|
||||
# Fastlane end
|
|
@ -0,0 +1 @@
|
|||
custom: ['https://www.buymeacoffee.com/xmflsct']
|
|
@ -0,0 +1,99 @@
|
|||
name: build
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- candidate
|
||||
- release
|
||||
|
||||
jobs:
|
||||
build-ios:
|
||||
runs-on: macos-14
|
||||
steps:
|
||||
- uses: tj-actions/branch-names@v8
|
||||
id: branch
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version-file: '.nvmrc'
|
||||
- run: corepack enable
|
||||
- run: yarn install
|
||||
- run: bundle install
|
||||
- run: yarn app:build ios
|
||||
env:
|
||||
DEVELOPER_DIR: /Applications/Xcode_15.2.app/Contents/Developer
|
||||
ENVIRONMENT: ${{ steps.branch.outputs.current_branch }}
|
||||
SENTRY_ENVIRONMENT: ${{ steps.branch.outputs.current_branch }}
|
||||
LC_ALL: en_US.UTF-8
|
||||
LANG: en_US.UTF-8
|
||||
SENTRY_ORGANIZATION: ${{ secrets.SENTRY_ORGANIZATION }}
|
||||
SENTRY_PROJECT: ${{ secrets.SENTRY_PROJECT }}
|
||||
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
|
||||
FASTLANE_USER: ${{ secrets.FASTLANE_USER }}
|
||||
MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }}
|
||||
MATCH_GIT_URL: ${{ secrets.MATCH_GIT_URL }}
|
||||
MATCH_GIT_BASIC_AUTHORIZATION: ${{ secrets.MATCH_GIT_BASIC_AUTHORIZATION }}
|
||||
APP_STORE_CONNECT_API_KEY_KEY_ID: ${{ secrets.APP_STORE_CONNECT_API_KEY_KEY_ID }}
|
||||
APP_STORE_CONNECT_API_KEY_ISSUER_ID: ${{ secrets.APP_STORE_CONNECT_API_KEY_ISSUER_ID }}
|
||||
APP_STORE_CONNECT_API_KEY_KEY: ${{ secrets.APP_STORE_CONNECT_API_KEY_KEY }}
|
||||
GH_PAT_GET_RELEASE: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
build-android:
|
||||
runs-on: macos-14
|
||||
steps:
|
||||
- uses: tj-actions/branch-names@v8
|
||||
id: branch
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version-file: '.nvmrc'
|
||||
- uses: actions/setup-java@v4
|
||||
with:
|
||||
distribution: 'zulu'
|
||||
java-version: '17'
|
||||
- run: corepack enable
|
||||
- run: yarn install
|
||||
- run: bundle install
|
||||
- run: yarn app:build android
|
||||
env:
|
||||
ENVIRONMENT: ${{ steps.branch.outputs.current_branch }}
|
||||
SENTRY_ENVIRONMENT: ${{ steps.branch.outputs.current_branch }}
|
||||
LC_ALL: en_US.UTF-8
|
||||
LANG: en_US.UTF-8
|
||||
ANDROID_KEYSTORE: ${{ secrets.ANDROID_KEYSTORE }}
|
||||
ANDROID_KEYSTORE_PASSWORD: ${{ secrets.ANDROID_KEYSTORE_PASSWORD }}
|
||||
ANDROID_KEYSTORE_ALIAS: ${{ secrets.ANDROID_KEYSTORE_ALIAS }}
|
||||
ANDROID_KEYSTORE_KEY_PASSWORD: ${{ secrets.ANDROID_KEYSTORE_KEY_PASSWORD }}
|
||||
SUPPLY_JSON_KEY_DATA: ${{ secrets.SUPPLY_JSON_KEY_DATA }}
|
||||
GH_PAT_GET_RELEASE: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
create-release:
|
||||
runs-on: macos-14
|
||||
needs: [build-ios, build-android]
|
||||
steps:
|
||||
- uses: tj-actions/branch-names@v8
|
||||
id: branch
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version-file: '.nvmrc'
|
||||
- uses: actions/setup-java@v4
|
||||
with:
|
||||
distribution: 'zulu'
|
||||
java-version: '17'
|
||||
- run: corepack enable
|
||||
- run: yarn install
|
||||
- run: bundle install
|
||||
- run: yarn app:build release
|
||||
env:
|
||||
ENVIRONMENT: ${{ steps.branch.outputs.current_branch }}
|
||||
SENTRY_ENVIRONMENT: ${{ steps.branch.outputs.current_branch }}
|
||||
LC_ALL: en_US.UTF-8
|
||||
LANG: en_US.UTF-8
|
||||
SENTRY_ORGANIZATION: ${{ secrets.SENTRY_ORGANIZATION }}
|
||||
SENTRY_PROJECT: ${{ secrets.SENTRY_PROJECT }}
|
||||
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
|
||||
ANDROID_KEYSTORE: ${{ secrets.ANDROID_KEYSTORE }}
|
||||
ANDROID_KEYSTORE_PASSWORD: ${{ secrets.ANDROID_KEYSTORE_PASSWORD }}
|
||||
ANDROID_KEYSTORE_ALIAS: ${{ secrets.ANDROID_KEYSTORE_ALIAS }}
|
||||
ANDROID_KEYSTORE_KEY_PASSWORD: ${{ secrets.ANDROID_KEYSTORE_KEY_PASSWORD }}
|
||||
FL_GITHUB_RELEASE_API_BEARER: ${{ secrets.GITHUB_TOKEN }}
|
|
@ -1,31 +0,0 @@
|
|||
name: Publish production
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- production
|
||||
jobs:
|
||||
publish:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: -- Step 1 -- Checkout code
|
||||
uses: actions/checkout@v2
|
||||
- name: -- Step 2 -- Setup node
|
||||
uses: actions/setup-node@v2
|
||||
with:
|
||||
node-version: 14.x
|
||||
- name: -- Step 3 -- Use Expo action
|
||||
uses: expo/expo-github-action@v5
|
||||
with:
|
||||
expo-version: 4.x
|
||||
expo-username: ${{ secrets.EXPO_USERNAME }}
|
||||
expo-token: ${{ secrets.EXPO_TOKEN }}
|
||||
- name: -- Step 4 -- Install dependencies
|
||||
run: yarn install
|
||||
- name: -- Step 5 -- Publish
|
||||
env:
|
||||
SENTRY_ORGANIZATION: ${{ secrets.SENTRY_ORGANIZATION }}
|
||||
SENTRY_PROJECT: ${{ secrets.SENTRY_PROJECT }}
|
||||
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
|
||||
SENTRY_DSN: ${{ secrets.SENTRY_DSN }}
|
||||
SENTRY_DEPLOY_ENV: production
|
||||
run: expo publish --release-channel=${GITHUB_REF#refs/heads/}
|
|
@ -1,50 +0,0 @@
|
|||
name: Build staging
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- staging
|
||||
jobs:
|
||||
build:
|
||||
runs-on: macos-latest
|
||||
steps:
|
||||
- name: -- Step 1 -- Checkout code
|
||||
uses: actions/checkout@v2
|
||||
- name: -- Step 2 -- Setup node
|
||||
uses: actions/setup-node@v2
|
||||
with:
|
||||
node-version: 14.x
|
||||
- name: -- Step 3 -- Use Expo action
|
||||
uses: expo/expo-github-action@v5
|
||||
with:
|
||||
expo-version: 4.x
|
||||
expo-username: ${{ secrets.EXPO_USERNAME }}
|
||||
expo-token: ${{ secrets.EXPO_TOKEN }}
|
||||
- name: -- Step 4 -- Install node dependencies
|
||||
run: yarn install
|
||||
- name: -- Step 5 -- Install native dependencies
|
||||
run: npx pod-install
|
||||
- name: -- Step 6 -- Install ruby dependencies
|
||||
run: bundle install
|
||||
- name: -- Step 7 -- Run fastlane
|
||||
env:
|
||||
TOOOT_ENVIRONMENT: staging
|
||||
SENTRY_ORGANIZATION: ${{ secrets.SENTRY_ORGANIZATION }}
|
||||
SENTRY_PROJECT: ${{ secrets.SENTRY_PROJECT }}
|
||||
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
|
||||
SENTRY_DSN: ${{ secrets.SENTRY_DSN }}
|
||||
LC_ALL: en_US.UTF-8
|
||||
LANG: en_US.UTF-8
|
||||
FASTLANE_USER: ${{ secrets.FASTLANE_USER }}
|
||||
MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }}
|
||||
MATCH_GIT_URL: ${{ secrets.MATCH_GIT_URL }}
|
||||
MATCH_GIT_BASIC_AUTHORIZATION: ${{ secrets.MATCH_GIT_BASIC_AUTHORIZATION }}
|
||||
APP_STORE_CONNECT_API_KEY_KEY_ID: ${{ secrets.APP_STORE_CONNECT_API_KEY_KEY_ID }}
|
||||
APP_STORE_CONNECT_API_KEY_ISSUER_ID: ${{ secrets.APP_STORE_CONNECT_API_KEY_ISSUER_ID }}
|
||||
APP_STORE_CONNECT_API_KEY_KEY: ${{ secrets.APP_STORE_CONNECT_API_KEY_KEY }}
|
||||
ANDROID_KEYSTORE: ${{ secrets.ANDROID_KEYSTORE }}
|
||||
ANDROID_KEYSTORE_PASSWORD: ${{ secrets.ANDROID_KEYSTORE_PASSWORD }}
|
||||
ANDROID_KEYSTORE_ALIAS: ${{ secrets.ANDROID_KEYSTORE_ALIAS }}
|
||||
ANDROID_KEYSTORE_KEY_PASSWORD: ${{ secrets.ANDROID_KEYSTORE_KEY_PASSWORD }}
|
||||
SUPPLY_JSON_KEY_DATA: ${{ secrets.SUPPLY_JSON_KEY_DATA }}
|
||||
FL_GITHUB_RELEASE_API_BEARER: ${{ secrets.GITHUB_TOKEN }}
|
||||
run: yarn app:build
|
|
@ -5,29 +5,74 @@
|
|||
coverage/
|
||||
builds/
|
||||
|
||||
# @generated expo-cli sync-28e2ab0e9ece60556eaf932abe52d017ec33db50
|
||||
# @generated expo-cli sync-e7dcf75f4e856f7b6f3239b3f3a7dd614ee755a8
|
||||
# The following patterns were generated by expo-cli
|
||||
|
||||
# OSX
|
||||
#
|
||||
.DS_Store
|
||||
|
||||
# Xcode
|
||||
#
|
||||
build/
|
||||
*.pbxuser
|
||||
!default.pbxuser
|
||||
*.mode1v3
|
||||
!default.mode1v3
|
||||
*.mode2v3
|
||||
!default.mode2v3
|
||||
*.perspectivev3
|
||||
!default.perspectivev3
|
||||
xcuserdata
|
||||
*.xccheckout
|
||||
*.moved-aside
|
||||
DerivedData
|
||||
*.hmap
|
||||
*.ipa
|
||||
*.xcuserstate
|
||||
project.xcworkspace
|
||||
ios/.xcode.env.local
|
||||
ios/containers
|
||||
|
||||
# Android/IntelliJ
|
||||
#
|
||||
build/
|
||||
.idea
|
||||
.gradle
|
||||
local.properties
|
||||
*.iml
|
||||
*.hprof
|
||||
.cxx/
|
||||
*.keystore
|
||||
!debug.keystore
|
||||
|
||||
# node.js
|
||||
#
|
||||
node_modules/
|
||||
npm-debug.log
|
||||
yarn-error.log
|
||||
|
||||
# BUCK
|
||||
buck-out/
|
||||
\.buckd/
|
||||
*.keystore
|
||||
!debug.keystore
|
||||
|
||||
# Bundle artifacts
|
||||
*.jsbundle
|
||||
|
||||
# Expo
|
||||
.expo/*
|
||||
.expo-shared/*
|
||||
web-build/
|
||||
# CocoaPods
|
||||
/ios/Pods/
|
||||
|
||||
# @end expo-cli
|
||||
# Expo
|
||||
.expo/
|
||||
web-build/
|
||||
dist/
|
||||
|
||||
# Temporary files created by Metro to check the health of the file watcher
|
||||
.metro-health-check*
|
||||
|
||||
# @end expo-cli
|
||||
|
||||
# yarn 3
|
||||
.pnp.*
|
||||
.yarn/*
|
||||
!.yarn/patches
|
||||
!.yarn/plugins
|
||||
!.yarn/releases
|
||||
!.yarn/sdks
|
||||
!.yarn/versions
|
|
@ -0,0 +1,34 @@
|
|||
diff --git a/index.d.ts b/index.d.ts
|
||||
index f52822c8bed928f387baf90fdb7342c7416a775a..6d9d480d18342832c4b07af2b10f4a63ff538e7b 100755
|
||||
--- a/index.d.ts
|
||||
+++ b/index.d.ts
|
||||
@@ -5,11 +5,9 @@
|
||||
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
|
||||
// Minimum TypeScript Version: 3.7
|
||||
|
||||
-export interface ShareData {
|
||||
- mimeType: string;
|
||||
- data: string | string[];
|
||||
- extraData?: object | undefined;
|
||||
-}
|
||||
+export type ShareData = {
|
||||
+ data: {mimeType: string; data: string}[];
|
||||
+} | {mimeType: string; data: string | string[]}
|
||||
|
||||
export type ShareCallback = (share?: ShareData) => void;
|
||||
|
||||
@@ -25,10 +23,10 @@ interface ShareMenu {
|
||||
}
|
||||
|
||||
interface ShareMenuReactView {
|
||||
- dismissExtension(error?: string): void;
|
||||
- openApp(): void;
|
||||
- continueInApp(extraData?: object): void;
|
||||
- data(): Promise<{mimeType: string, data: string}>;
|
||||
+ dismissExtension(error?: string): void
|
||||
+ openApp(): void
|
||||
+ continueInApp(extraData?: object): void
|
||||
+ data(): Promise<{ data: { mimeType: string; data: string }[] }>
|
||||
}
|
||||
|
||||
export const ShareMenuReactView: ShareMenuReactView;
|
|
@ -0,0 +1,64 @@
|
|||
diff --git a/ios/Sources/Common/AutoLayoutWrapperView.swift b/ios/Sources/Common/AutoLayoutWrapperView.swift
|
||||
index e2b9be9c129c66eed3eaebb4e33f5456ce98f5da..ef6a0087f524c8d228b7fee31e54fc3dba769ffa 100644
|
||||
--- a/ios/Sources/Common/AutoLayoutWrapperView.swift
|
||||
+++ b/ios/Sources/Common/AutoLayoutWrapperView.swift
|
||||
@@ -18,7 +18,11 @@ class AutoLayoutWrapperView: UIView {
|
||||
|
||||
override func addSubview(_ view: UIView) {
|
||||
if let detachedView = view as? RNIDetachedView {
|
||||
- detachedView.updateBounds(newSize: self.bounds.size);
|
||||
+ do {
|
||||
+ try detachedView.updateBounds(newSize: self.bounds.size);
|
||||
+ } catch {
|
||||
+ print("Error: \(error)");
|
||||
+ };
|
||||
};
|
||||
|
||||
super.addSubview(view);
|
||||
@@ -37,7 +41,11 @@ class AutoLayoutWrapperView: UIView {
|
||||
func updateSizeOfSubviews(newSize: CGSize? = nil){
|
||||
self.subviews.forEach {
|
||||
guard let detachedView = $0 as? RNIDetachedView else { return };
|
||||
- detachedView.updateBounds(newSize: newSize ?? self.bounds.size);
|
||||
+ do {
|
||||
+ try detachedView.updateBounds(newSize: newSize ?? self.bounds.size);
|
||||
+ } catch {
|
||||
+ print("Error: \(error)");
|
||||
+ };
|
||||
};
|
||||
};
|
||||
};
|
||||
diff --git a/ios/Sources/RNIContextMenuView/RNIContextMenuPreviewController.swift b/ios/Sources/RNIContextMenuView/RNIContextMenuPreviewController.swift
|
||||
index 2b4dc6287c68c88d6652b963ac2cc5f59251ffa9..7c8472e90dac8359f6b40ce2c096323fcf388249 100644
|
||||
--- a/ios/Sources/RNIContextMenuView/RNIContextMenuPreviewController.swift
|
||||
+++ b/ios/Sources/RNIContextMenuView/RNIContextMenuPreviewController.swift
|
||||
@@ -63,7 +63,11 @@ class RNIContextMenuPreviewController: UIViewController {
|
||||
case .STRETCH:
|
||||
guard let menuCustomPreviewView = self.menuCustomPreviewView else { return };
|
||||
|
||||
- menuCustomPreviewView.updateBounds(newSize: self.view.bounds.size);
|
||||
+ do {
|
||||
+ try menuCustomPreviewView.updateBounds(newSize: self.view.bounds.size);
|
||||
+ } catch {
|
||||
+ print("Error: \(error)");
|
||||
+ };
|
||||
self.preferredContentSize = .zero;
|
||||
|
||||
case .INHERIT:
|
||||
diff --git a/ios/Sources/RNIContextMenuView/RNIContextMenuView.swift b/ios/Sources/RNIContextMenuView/RNIContextMenuView.swift
|
||||
index affabcdee8303681f1438c6cfdb9d90d6a105ba6..7c470229e06250f4bd80d3133e381b91ff4f61c5 100644
|
||||
--- a/ios/Sources/RNIContextMenuView/RNIContextMenuView.swift
|
||||
+++ b/ios/Sources/RNIContextMenuView/RNIContextMenuView.swift
|
||||
@@ -307,7 +307,11 @@ public class RNIContextMenuView:
|
||||
.init(with: detachedView)
|
||||
);
|
||||
|
||||
- detachedView.detach();
|
||||
+ do {
|
||||
+ try detachedView.detach();
|
||||
+ } catch {
|
||||
+ print("Error: \(error)");
|
||||
+ };
|
||||
};
|
||||
|
||||
#if DEBUG
|
|
@ -0,0 +1,38 @@
|
|||
diff --git a/src/zoom.tsx b/src/zoom.tsx
|
||||
index 70ce1c8d6a43e711f06b93d1eda3b44a3ad9a659..cdc2713470f2d332b8bf3e9c97e38fd9b78281df 100644
|
||||
--- a/src/zoom.tsx
|
||||
+++ b/src/zoom.tsx
|
||||
@@ -4,6 +4,7 @@ import Animated, {
|
||||
useSharedValue,
|
||||
useAnimatedStyle,
|
||||
useDerivedValue,
|
||||
+ withDecay,
|
||||
withTiming,
|
||||
cancelAnimation,
|
||||
runOnJS,
|
||||
@@ -120,11 +121,22 @@ export function Zoom(props: Props) {
|
||||
}
|
||||
}
|
||||
})
|
||||
- .onEnd(() => {
|
||||
+ .onEnd((event) => {
|
||||
if (isPinching.value || !isZoomed.value) return;
|
||||
|
||||
- panTranslateX.value = 0;
|
||||
- panTranslateY.value = 0;
|
||||
+ const maxTranslateX = (viewWidth.value / 2) * scale.value - viewWidth.value / 2;
|
||||
+ const minTranslateX = -maxTranslateX;
|
||||
+ translationX.value = withDecay({
|
||||
+ velocity: event.velocityX,
|
||||
+ clamp: [minTranslateX, maxTranslateX]
|
||||
+ });
|
||||
+
|
||||
+ const maxTranslateY = (viewHeight.value / 2) * scale.value - viewHeight.value / 2;
|
||||
+ const minTranslateY = -maxTranslateY;
|
||||
+ translationY.value = withDecay({
|
||||
+ velocity: event.velocityY,
|
||||
+ clamp: [minTranslateY, maxTranslateY]
|
||||
+ });
|
||||
});
|
||||
|
||||
const pinch = Gesture.Pinch()
|
|
@ -0,0 +1,89 @@
|
|||
diff --git a/android/build.gradle b/android/build.gradle
|
||||
index 9557fdbf2fbf97b7f7aeaf7ce86d301a8ced213d..ebdeb6f4de7846d3241101001755595c52a4b05e 100644
|
||||
--- a/android/build.gradle
|
||||
+++ b/android/build.gradle
|
||||
@@ -1,12 +1,12 @@
|
||||
apply plugin: 'com.android.library'
|
||||
|
||||
android {
|
||||
- compileSdkVersion 29
|
||||
- buildToolsVersion "29.0.2"
|
||||
+ compileSdkVersion 31
|
||||
+ buildToolsVersion "31.0.0"
|
||||
|
||||
defaultConfig {
|
||||
- minSdkVersion 16
|
||||
- targetSdkVersion 29
|
||||
+ minSdkVersion 21
|
||||
+ targetSdkVersion 31
|
||||
versionCode 1
|
||||
versionName "1.0"
|
||||
ndk {
|
||||
diff --git a/ios/ReactShareViewController.swift b/ios/ReactShareViewController.swift
|
||||
index f42bce6ce7e3f48a7ddc83f3366b68fd0664b1a0..ee360622b1d03cc9661c78c6f210b84c3b19a725 100644
|
||||
--- a/ios/ReactShareViewController.swift
|
||||
+++ b/ios/ReactShareViewController.swift
|
||||
@@ -13,7 +13,7 @@ class ReactShareViewController: ShareViewController, RCTBridgeDelegate, ReactSha
|
||||
func sourceURL(for bridge: RCTBridge!) -> URL! {
|
||||
#if DEBUG
|
||||
return RCTBundleURLProvider.sharedSettings()?
|
||||
- .jsBundleURL(forBundleRoot: "index.share", fallbackResource: nil)
|
||||
+ .jsBundleURL(forBundleRoot: "index.share")
|
||||
#else
|
||||
return Bundle.main.url(forResource: "main", withExtension: "jsbundle")
|
||||
#endif
|
||||
diff --git a/ios/ShareViewController.swift b/ios/ShareViewController.swift
|
||||
index 12d8c92dda20fabd9e7b55fec57b3d867414063c..8a1db0de285b18a9358a10b2ca8293a8c7d56a8e 100644
|
||||
--- a/ios/ShareViewController.swift
|
||||
+++ b/ios/ShareViewController.swift
|
||||
@@ -19,8 +19,8 @@ class ShareViewController: SLComposeServiceViewController {
|
||||
var hostAppUrlScheme: String?
|
||||
var sharedItems: [Any] = []
|
||||
|
||||
- override func viewDidLoad() {
|
||||
- super.viewDidLoad()
|
||||
+ override func viewWillAppear(_ animated: Bool) {
|
||||
+ super.viewWillAppear(animated)
|
||||
|
||||
if let hostAppId = Bundle.main.object(forInfoDictionaryKey: HOST_APP_IDENTIFIER_INFO_PLIST_KEY) as? String {
|
||||
self.hostAppId = hostAppId
|
||||
@@ -33,6 +33,13 @@ class ShareViewController: SLComposeServiceViewController {
|
||||
} else {
|
||||
print("Error: \(NO_INFO_PLIST_URL_SCHEME_ERROR)")
|
||||
}
|
||||
+
|
||||
+ guard let items = extensionContext?.inputItems as? [NSExtensionItem] else {
|
||||
+ cancelRequest()
|
||||
+ return
|
||||
+ }
|
||||
+
|
||||
+ handlePost(items)
|
||||
}
|
||||
|
||||
override func isContentValid() -> Bool {
|
||||
@@ -40,16 +47,6 @@ class ShareViewController: SLComposeServiceViewController {
|
||||
return true
|
||||
}
|
||||
|
||||
- override func didSelectPost() {
|
||||
- // This is called after the user selects Post. Do the upload of contentText and/or NSExtensionContext attachments.
|
||||
- guard let items = extensionContext?.inputItems as? [NSExtensionItem] else {
|
||||
- cancelRequest()
|
||||
- return
|
||||
- }
|
||||
-
|
||||
- handlePost(items)
|
||||
- }
|
||||
-
|
||||
override func configurationItems() -> [Any]! {
|
||||
// To add configuration options via table cells at the bottom of the sheet, return an array of SLComposeSheetConfigurationItem here.
|
||||
return []
|
||||
@@ -238,7 +235,7 @@ class ShareViewController: SLComposeServiceViewController {
|
||||
|
||||
func completeRequest() {
|
||||
// Inform the host that we're done, so it un-blocks its UI. Note: Alternatively you could call super's -didSelectPost, which will similarly complete the extension context.
|
||||
- extensionContext!.completeRequest(returningItems: [], completionHandler: nil)
|
||||
+ extensionContext!.completeRequest(returningItems: nil, completionHandler: nil)
|
||||
}
|
||||
|
||||
func cancelRequest() {
|
|
@ -0,0 +1,7 @@
|
|||
compressionLevel: mixed
|
||||
|
||||
enableGlobalCache: false
|
||||
|
||||
nodeLinker: node-modules
|
||||
|
||||
yarnPath: .yarn/releases/yarn-4.1.0.cjs
|
8
Gemfile
|
@ -1,5 +1,13 @@
|
|||
source "https://rubygems.org"
|
||||
|
||||
# You may use http://rbenv.org/ or https://rvm.io/ to install and use this version
|
||||
ruby ">= 2.6.10"
|
||||
|
||||
# Cocoapods 1.15 introduced a bug which break the build. We will remove the upper
|
||||
# bound in the template on Cocoapods with next React Native release.
|
||||
gem 'cocoapods', '>= 1.13', '< 1.15'
|
||||
gem 'activesupport', '>= 6.1.7.5', '< 7.1.0'
|
||||
|
||||
gem "fastlane"
|
||||
plugins_path = File.join(File.dirname(__FILE__), 'fastlane', 'Pluginfile')
|
||||
eval_gemfile(plugins_path) if File.exist?(plugins_path)
|
||||
|
|
298
Gemfile.lock
|
@ -1,62 +1,128 @@
|
|||
GEM
|
||||
remote: https://rubygems.org/
|
||||
specs:
|
||||
CFPropertyList (3.0.3)
|
||||
addressable (2.7.0)
|
||||
public_suffix (>= 2.0.2, < 5.0)
|
||||
CFPropertyList (3.0.6)
|
||||
rexml
|
||||
activesupport (7.0.4.2)
|
||||
concurrent-ruby (~> 1.0, >= 1.0.2)
|
||||
i18n (>= 1.6, < 2)
|
||||
minitest (>= 5.1)
|
||||
tzinfo (~> 2.0)
|
||||
addressable (2.8.6)
|
||||
public_suffix (>= 2.0.2, < 6.0)
|
||||
algoliasearch (1.27.5)
|
||||
httpclient (~> 2.8, >= 2.8.3)
|
||||
json (>= 1.5.1)
|
||||
artifactory (3.0.15)
|
||||
atomos (0.1.3)
|
||||
aws-eventstream (1.1.0)
|
||||
aws-partitions (1.422.0)
|
||||
aws-sdk-core (3.112.0)
|
||||
aws-eventstream (~> 1, >= 1.0.2)
|
||||
aws-partitions (~> 1, >= 1.239.0)
|
||||
aws-eventstream (1.3.0)
|
||||
aws-partitions (1.887.0)
|
||||
aws-sdk-core (3.191.0)
|
||||
aws-eventstream (~> 1, >= 1.3.0)
|
||||
aws-partitions (~> 1, >= 1.651.0)
|
||||
aws-sigv4 (~> 1.8)
|
||||
jmespath (~> 1, >= 1.6.1)
|
||||
aws-sdk-kms (1.77.0)
|
||||
aws-sdk-core (~> 3, >= 3.191.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
jmespath (~> 1.0)
|
||||
aws-sdk-kms (1.42.0)
|
||||
aws-sdk-core (~> 3, >= 3.112.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
aws-sdk-s3 (1.88.0)
|
||||
aws-sdk-core (~> 3, >= 3.112.0)
|
||||
aws-sdk-s3 (1.143.0)
|
||||
aws-sdk-core (~> 3, >= 3.191.0)
|
||||
aws-sdk-kms (~> 1)
|
||||
aws-sigv4 (~> 1.1)
|
||||
aws-sigv4 (1.2.2)
|
||||
aws-sigv4 (~> 1.8)
|
||||
aws-sigv4 (1.8.0)
|
||||
aws-eventstream (~> 1, >= 1.0.2)
|
||||
babosa (1.0.4)
|
||||
claide (1.0.3)
|
||||
claide (1.1.0)
|
||||
cocoapods (1.14.3)
|
||||
addressable (~> 2.8)
|
||||
claide (>= 1.0.2, < 2.0)
|
||||
cocoapods-core (= 1.14.3)
|
||||
cocoapods-deintegrate (>= 1.0.3, < 2.0)
|
||||
cocoapods-downloader (>= 2.1, < 3.0)
|
||||
cocoapods-plugins (>= 1.0.0, < 2.0)
|
||||
cocoapods-search (>= 1.0.0, < 2.0)
|
||||
cocoapods-trunk (>= 1.6.0, < 2.0)
|
||||
cocoapods-try (>= 1.1.0, < 2.0)
|
||||
colored2 (~> 3.1)
|
||||
escape (~> 0.0.4)
|
||||
fourflusher (>= 2.3.0, < 3.0)
|
||||
gh_inspector (~> 1.0)
|
||||
molinillo (~> 0.8.0)
|
||||
nap (~> 1.0)
|
||||
ruby-macho (>= 2.3.0, < 3.0)
|
||||
xcodeproj (>= 1.23.0, < 2.0)
|
||||
cocoapods-core (1.14.3)
|
||||
activesupport (>= 5.0, < 8)
|
||||
addressable (~> 2.8)
|
||||
algoliasearch (~> 1.0)
|
||||
concurrent-ruby (~> 1.1)
|
||||
fuzzy_match (~> 2.0.4)
|
||||
nap (~> 1.0)
|
||||
netrc (~> 0.11)
|
||||
public_suffix (~> 4.0)
|
||||
typhoeus (~> 1.0)
|
||||
cocoapods-deintegrate (1.0.5)
|
||||
cocoapods-downloader (2.1)
|
||||
cocoapods-plugins (1.0.0)
|
||||
nap
|
||||
cocoapods-search (1.0.1)
|
||||
cocoapods-trunk (1.6.0)
|
||||
nap (>= 0.8, < 2.0)
|
||||
netrc (~> 0.11)
|
||||
cocoapods-try (1.2.0)
|
||||
colored (1.2)
|
||||
colored2 (3.1.2)
|
||||
commander-fastlane (4.4.6)
|
||||
highline (~> 1.7.2)
|
||||
commander (4.6.0)
|
||||
highline (~> 2.0.0)
|
||||
concurrent-ruby (1.2.2)
|
||||
declarative (0.0.20)
|
||||
declarative-option (0.1.0)
|
||||
digest-crc (0.6.3)
|
||||
digest-crc (0.6.5)
|
||||
rake (>= 12.0.0, < 14.0.0)
|
||||
domain_name (0.5.20190701)
|
||||
unf (>= 0.0.5, < 1.0.0)
|
||||
dotenv (2.7.6)
|
||||
emoji_regex (3.2.1)
|
||||
excon (0.79.0)
|
||||
faraday (1.3.0)
|
||||
domain_name (0.6.20240107)
|
||||
dotenv (2.8.1)
|
||||
emoji_regex (3.2.3)
|
||||
escape (0.0.4)
|
||||
ethon (0.16.0)
|
||||
ffi (>= 1.15.0)
|
||||
excon (0.109.0)
|
||||
faraday (1.10.3)
|
||||
faraday-em_http (~> 1.0)
|
||||
faraday-em_synchrony (~> 1.0)
|
||||
faraday-excon (~> 1.1)
|
||||
faraday-httpclient (~> 1.0)
|
||||
faraday-multipart (~> 1.0)
|
||||
faraday-net_http (~> 1.0)
|
||||
multipart-post (>= 1.2, < 3)
|
||||
ruby2_keywords
|
||||
faraday-net_http_persistent (~> 1.0)
|
||||
faraday-patron (~> 1.0)
|
||||
faraday-rack (~> 1.0)
|
||||
faraday-retry (~> 1.0)
|
||||
ruby2_keywords (>= 0.0.4)
|
||||
faraday-cookie_jar (0.0.7)
|
||||
faraday (>= 0.8.0)
|
||||
http-cookie (~> 1.0.0)
|
||||
faraday-em_http (1.0.0)
|
||||
faraday-em_synchrony (1.0.0)
|
||||
faraday-excon (1.1.0)
|
||||
faraday-httpclient (1.0.1)
|
||||
faraday-multipart (1.0.4)
|
||||
multipart-post (~> 2)
|
||||
faraday-net_http (1.0.1)
|
||||
faraday_middleware (1.0.0)
|
||||
faraday-net_http_persistent (1.2.0)
|
||||
faraday-patron (1.0.0)
|
||||
faraday-rack (1.0.0)
|
||||
faraday-retry (1.0.3)
|
||||
faraday_middleware (1.2.0)
|
||||
faraday (~> 1.0)
|
||||
fastimage (2.2.2)
|
||||
fastlane (2.173.0)
|
||||
fastimage (2.3.0)
|
||||
fastlane (2.219.0)
|
||||
CFPropertyList (>= 2.3, < 4.0.0)
|
||||
addressable (>= 2.3, < 3.0.0)
|
||||
addressable (>= 2.8, < 3.0.0)
|
||||
artifactory (~> 3.0)
|
||||
aws-sdk-s3 (~> 1.0)
|
||||
babosa (>= 1.0.3, < 2.0.0)
|
||||
bundler (>= 1.12.0, < 3.0.0)
|
||||
colored
|
||||
commander-fastlane (>= 4.4.6, < 5.0.0)
|
||||
commander (~> 4.6)
|
||||
dotenv (>= 2.1.1, < 3.0.0)
|
||||
emoji_regex (>= 0.1, < 4.0)
|
||||
excon (>= 0.71.0, < 1.0.0)
|
||||
|
@ -65,143 +131,159 @@ GEM
|
|||
faraday_middleware (~> 1.0)
|
||||
fastimage (>= 2.1.0, < 3.0.0)
|
||||
gh_inspector (>= 1.1.2, < 2.0.0)
|
||||
google-api-client (>= 0.37.0, < 0.39.0)
|
||||
google-cloud-storage (>= 1.15.0, < 2.0.0)
|
||||
highline (>= 1.7.2, < 2.0.0)
|
||||
google-apis-androidpublisher_v3 (~> 0.3)
|
||||
google-apis-playcustomapp_v1 (~> 0.1)
|
||||
google-cloud-env (>= 1.6.0, < 2.0.0)
|
||||
google-cloud-storage (~> 1.31)
|
||||
highline (~> 2.0)
|
||||
http-cookie (~> 1.0.5)
|
||||
json (< 3.0.0)
|
||||
jwt (>= 2.1.0, < 3)
|
||||
mini_magick (>= 4.9.4, < 5.0.0)
|
||||
multipart-post (~> 2.0.0)
|
||||
multipart-post (>= 2.0.0, < 3.0.0)
|
||||
naturally (~> 2.2)
|
||||
optparse (>= 0.1.1)
|
||||
plist (>= 3.1.0, < 4.0.0)
|
||||
rubyzip (>= 2.0.0, < 3.0.0)
|
||||
security (= 0.1.3)
|
||||
simctl (~> 1.6.3)
|
||||
slack-notifier (>= 2.0.0, < 3.0.0)
|
||||
terminal-notifier (>= 2.0.0, < 3.0.0)
|
||||
terminal-table (>= 1.4.5, < 2.0.0)
|
||||
terminal-table (~> 3)
|
||||
tty-screen (>= 0.6.3, < 1.0.0)
|
||||
tty-spinner (>= 0.8.0, < 1.0.0)
|
||||
word_wrap (~> 1.0.0)
|
||||
xcodeproj (>= 1.13.0, < 2.0.0)
|
||||
xcpretty (~> 0.3.0)
|
||||
xcpretty-travis-formatter (>= 0.0.3)
|
||||
fastlane-plugin-json (1.0.0)
|
||||
fastlane-plugin-versioning_android (0.1.0)
|
||||
fastlane-plugin-json (1.1.0)
|
||||
fastlane-plugin-sentry (1.15.0)
|
||||
os (~> 1.1, >= 1.1.4)
|
||||
fastlane-plugin-versioning_android (0.1.1)
|
||||
fastlane-plugin-yarn (1.2)
|
||||
ffi (1.16.3)
|
||||
fourflusher (2.3.1)
|
||||
fuzzy_match (2.0.4)
|
||||
gh_inspector (1.1.3)
|
||||
google-api-client (0.38.0)
|
||||
google-apis-androidpublisher_v3 (0.54.0)
|
||||
google-apis-core (>= 0.11.0, < 2.a)
|
||||
google-apis-core (0.11.3)
|
||||
addressable (~> 2.5, >= 2.5.1)
|
||||
googleauth (~> 0.9)
|
||||
httpclient (>= 2.8.1, < 3.0)
|
||||
googleauth (>= 0.16.2, < 2.a)
|
||||
httpclient (>= 2.8.1, < 3.a)
|
||||
mini_mime (~> 1.0)
|
||||
representable (~> 3.0)
|
||||
retriable (>= 2.0, < 4.0)
|
||||
signet (~> 0.12)
|
||||
google-apis-core (0.2.1)
|
||||
addressable (~> 2.5, >= 2.5.1)
|
||||
googleauth (~> 0.14)
|
||||
httpclient (>= 2.8.1, < 3.0)
|
||||
mini_mime (~> 1.0)
|
||||
representable (~> 3.0)
|
||||
retriable (>= 2.0, < 4.0)
|
||||
retriable (>= 2.0, < 4.a)
|
||||
rexml
|
||||
signet (~> 0.14)
|
||||
webrick
|
||||
google-apis-iamcredentials_v1 (0.1.0)
|
||||
google-apis-core (~> 0.1)
|
||||
google-apis-storage_v1 (0.1.0)
|
||||
google-apis-core (~> 0.1)
|
||||
google-cloud-core (1.5.0)
|
||||
google-cloud-env (~> 1.0)
|
||||
google-apis-iamcredentials_v1 (0.17.0)
|
||||
google-apis-core (>= 0.11.0, < 2.a)
|
||||
google-apis-playcustomapp_v1 (0.13.0)
|
||||
google-apis-core (>= 0.11.0, < 2.a)
|
||||
google-apis-storage_v1 (0.31.0)
|
||||
google-apis-core (>= 0.11.0, < 2.a)
|
||||
google-cloud-core (1.6.1)
|
||||
google-cloud-env (>= 1.0, < 3.a)
|
||||
google-cloud-errors (~> 1.0)
|
||||
google-cloud-env (1.4.0)
|
||||
faraday (>= 0.17.3, < 2.0)
|
||||
google-cloud-errors (1.0.1)
|
||||
google-cloud-storage (1.30.0)
|
||||
addressable (~> 2.5)
|
||||
google-cloud-env (1.6.0)
|
||||
faraday (>= 0.17.3, < 3.0)
|
||||
google-cloud-errors (1.3.1)
|
||||
google-cloud-storage (1.47.0)
|
||||
addressable (~> 2.8)
|
||||
digest-crc (~> 0.4)
|
||||
google-apis-iamcredentials_v1 (~> 0.1)
|
||||
google-apis-storage_v1 (~> 0.1)
|
||||
google-cloud-core (~> 1.2)
|
||||
googleauth (~> 0.9)
|
||||
google-apis-storage_v1 (~> 0.31.0)
|
||||
google-cloud-core (~> 1.6)
|
||||
googleauth (>= 0.16.2, < 2.a)
|
||||
mini_mime (~> 1.0)
|
||||
googleauth (0.15.0)
|
||||
faraday (>= 0.17.3, < 2.0)
|
||||
googleauth (1.8.1)
|
||||
faraday (>= 0.17.3, < 3.a)
|
||||
jwt (>= 1.4, < 3.0)
|
||||
memoist (~> 0.16)
|
||||
multi_json (~> 1.11)
|
||||
os (>= 0.9, < 2.0)
|
||||
signet (~> 0.14)
|
||||
highline (1.7.10)
|
||||
http-cookie (1.0.3)
|
||||
signet (>= 0.16, < 2.a)
|
||||
highline (2.0.3)
|
||||
http-cookie (1.0.5)
|
||||
domain_name (~> 0.5)
|
||||
httpclient (2.8.3)
|
||||
jmespath (1.4.0)
|
||||
json (2.5.1)
|
||||
jwt (2.2.2)
|
||||
memoist (0.16.2)
|
||||
mini_magick (4.11.0)
|
||||
mini_mime (1.0.2)
|
||||
i18n (1.12.0)
|
||||
concurrent-ruby (~> 1.0)
|
||||
jmespath (1.6.2)
|
||||
json (2.7.1)
|
||||
jwt (2.7.1)
|
||||
mini_magick (4.12.0)
|
||||
mini_mime (1.1.5)
|
||||
minitest (5.18.0)
|
||||
molinillo (0.8.0)
|
||||
multi_json (1.15.0)
|
||||
multipart-post (2.0.0)
|
||||
multipart-post (2.3.0)
|
||||
nanaimo (0.3.0)
|
||||
nap (1.1.0)
|
||||
naturally (2.2.1)
|
||||
os (1.1.1)
|
||||
plist (3.6.0)
|
||||
public_suffix (4.0.6)
|
||||
rake (13.0.3)
|
||||
representable (3.0.4)
|
||||
netrc (0.11.0)
|
||||
optparse (0.4.0)
|
||||
os (1.1.4)
|
||||
plist (3.7.1)
|
||||
public_suffix (4.0.7)
|
||||
rake (13.1.0)
|
||||
representable (3.2.0)
|
||||
declarative (< 0.1.0)
|
||||
declarative-option (< 0.2.0)
|
||||
trailblazer-option (>= 0.1.1, < 0.2.0)
|
||||
uber (< 0.2.0)
|
||||
retriable (3.1.2)
|
||||
rexml (3.2.4)
|
||||
rexml (3.2.6)
|
||||
rouge (2.0.7)
|
||||
ruby2_keywords (0.0.4)
|
||||
rubyzip (2.3.0)
|
||||
ruby-macho (2.5.1)
|
||||
ruby2_keywords (0.0.5)
|
||||
rubyzip (2.3.2)
|
||||
security (0.1.3)
|
||||
signet (0.14.1)
|
||||
addressable (~> 2.3)
|
||||
faraday (>= 0.17.3, < 2.0)
|
||||
signet (0.18.0)
|
||||
addressable (~> 2.8)
|
||||
faraday (>= 0.17.5, < 3.a)
|
||||
jwt (>= 1.5, < 3.0)
|
||||
multi_json (~> 1.10)
|
||||
simctl (1.6.8)
|
||||
simctl (1.6.10)
|
||||
CFPropertyList
|
||||
naturally
|
||||
slack-notifier (2.3.2)
|
||||
terminal-notifier (2.0.0)
|
||||
terminal-table (1.8.0)
|
||||
unicode-display_width (~> 1.1, >= 1.1.1)
|
||||
terminal-table (3.0.2)
|
||||
unicode-display_width (>= 1.1.1, < 3)
|
||||
trailblazer-option (0.1.2)
|
||||
tty-cursor (0.7.1)
|
||||
tty-screen (0.8.1)
|
||||
tty-screen (0.8.2)
|
||||
tty-spinner (0.9.3)
|
||||
tty-cursor (~> 0.7)
|
||||
typhoeus (1.4.1)
|
||||
ethon (>= 0.9.0)
|
||||
tzinfo (2.0.6)
|
||||
concurrent-ruby (~> 1.0)
|
||||
uber (0.1.0)
|
||||
unf (0.1.4)
|
||||
unf_ext
|
||||
unf_ext (0.0.7.7)
|
||||
unicode-display_width (1.7.0)
|
||||
webrick (1.7.0)
|
||||
unicode-display_width (2.5.0)
|
||||
word_wrap (1.0.0)
|
||||
xcodeproj (1.19.0)
|
||||
xcodeproj (1.24.0)
|
||||
CFPropertyList (>= 2.3.3, < 4.0)
|
||||
atomos (~> 0.1.3)
|
||||
claide (>= 1.0.2, < 2.0)
|
||||
colored2 (~> 3.1)
|
||||
nanaimo (~> 0.3.0)
|
||||
rexml (~> 3.2.4)
|
||||
xcpretty (0.3.0)
|
||||
rouge (~> 2.0.7)
|
||||
xcpretty-travis-formatter (1.0.1)
|
||||
xcpretty (~> 0.2, >= 0.0.7)
|
||||
|
||||
PLATFORMS
|
||||
ruby
|
||||
arm64-darwin-22
|
||||
|
||||
DEPENDENCIES
|
||||
activesupport (>= 6.1.7.5, < 7.1.0)
|
||||
cocoapods (>= 1.13, < 1.15)
|
||||
fastlane
|
||||
fastlane-plugin-json
|
||||
fastlane-plugin-sentry
|
||||
fastlane-plugin-versioning_android
|
||||
fastlane-plugin-yarn
|
||||
|
||||
RUBY VERSION
|
||||
ruby 3.1.2p20
|
||||
|
||||
BUNDLED WITH
|
||||
2.2.8
|
||||
2.3.24
|
||||
|
|
31
README.md
|
@ -1 +1,30 @@
|
|||
<a rel="me" href="https://social.xmflsct.com/@tooot">@tooot@xmflsct.com</a>
|
||||
# [tooot](https://tooot.app/) app for Mastodon compatible platforms
|
||||
|
||||
[![GPL-3.0](https://img.shields.io/github/license/tooot-app/push)](LICENSE) ![GitHub issues](https://img.shields.io/github/issues/tooot-app/app) ![GitHub release (latest by date including pre-releases)](https://img.shields.io/github/v/release/tooot-app/app?include_prereleases) [![Crowdin](https://badges.crowdin.net/tooot/localized.svg)](https://crowdin.tooot.app/project/tooot)
|
||||
|
||||
![GitHub Workflow Status (candidate)](https://img.shields.io/github/actions/workflow/status/tooot-app/app/build.yml?branch=candidate&label=build%20candidate) ![GitHub Workflow Status (release)](https://img.shields.io/github/actions/workflow/status/tooot-app/app/build.yml?branch=release&label=build%20release)
|
||||
|
||||
## Contribute to translation
|
||||
|
||||
Please **do not** create a pull request to update translation. tooot's translation is managed through [https://crowdin.tooot.app/](https://crowdin.tooot.app/) and Crowdin struggles to properly sync two ways. If there is a minor update and you do not want to register an account on Crowdin, please open an issue.
|
||||
|
||||
## Special thanks
|
||||
|
||||
- [@a_mento](https://crowdin.com/profile/a_mento) for Basques translation
|
||||
- [@dzmitry.zubialevich](https://crowdin.com/profile/dzmitry.zubialevich) for Belarusian translation
|
||||
- [@amrtf](https://crowdin.com/profile/amrtf) for Catalan and Spanish translation
|
||||
- [@pat](https://piaille.fr/@pat) for French translation
|
||||
- [@forenta](https://github.com/forenta) for German translation
|
||||
- [@heracl.es](https://heracl.es/) for Greek translation
|
||||
- [@andrigamerita](https://github.com/andrigamerita) for Italian translation
|
||||
- [@Hikaru](https://github.com/Hikali-47041) and [@la_la](https://mstdn.jp/@la_la_la) for Japanese translation
|
||||
- [@hellojaccc](https://github.com/hellojaccc) for Korean translation
|
||||
- [@jan-vandenberg](https://crowdin.com/profile/jan-vandenberg) for Dutch translation
|
||||
- [@gaute](https://gauteweb.net/) for Norwegian translation
|
||||
- [@MStankiewiczOfficial](https://crowdin.com/profile/MStankiewiczOfficial) for Polish translation
|
||||
- [@luizpicolo](https://github.com/luizpicolo) for Brazilian Portuguese
|
||||
- [@janlindblom](https://github.com/janlindblom) for Swedish
|
||||
- [@ihoryan](https://crowdin.com/profile/ihoryan) for Ukrainian
|
||||
- [@duy@mas.to](https://mas.to/@duy) for Vietnamese translation
|
||||
- [@jimmyorz](https://github.com/jimmyorz) for Traditional Chinese translation
|
||||
- [@jk@mastodon.social](https://mastodon.social/@jk) for the famous Mastodon boop sound
|
||||
|
|
|
@ -1,30 +0,0 @@
|
|||
## Major releases - App Store
|
||||
|
||||
"Major releases" are artifacts published as `x.?.?`:
|
||||
* An artifact must be released as `x.?.?` if native modules have been changed or updated, including upgrading Expo SDK version.
|
||||
* A new app store version has to be submitted.
|
||||
* Outdated versions in principle do not receive further OTA updates.
|
||||
|
||||
## Minor releases - App Store and OTA
|
||||
|
||||
"Minor releases" are artifacts published as `?.y.?`:
|
||||
* An artifact can be released as `?.y.?` when there is no change nor update made to the native modules.
|
||||
* A new app store version can be submitted for better first launch experience.
|
||||
* All these versions that are not part of above mentioned outdates versions receive also OTA updates.
|
||||
|
||||
## Patch releases - OTA
|
||||
|
||||
"Patch releases" are artifacts published as `?.?.z`:
|
||||
* An artifact must be release as `?.?.z` when there is no major change to the functionalities.
|
||||
* No new app store version will be submitted.
|
||||
* All these versions that are not part of above mentioned outdates versions receive also OTA updates.
|
||||
|
||||
## OTA release channels
|
||||
|
||||
* `MAJOR-environment`. Environments include `production`, `staging` and `development`.
|
||||
|
||||
## Major versions mapping to native module versions
|
||||
|
||||
| Major version | Native module version |
|
||||
| :-----------: | :-------------------: |
|
||||
| `0` | `210201` |
|
|
@ -1,96 +0,0 @@
|
|||
import React from 'react'
|
||||
import {
|
||||
toBeDisabled,
|
||||
toHaveStyle,
|
||||
toHaveTextContent
|
||||
} from '@testing-library/jest-native'
|
||||
import { cleanup, fireEvent, render } from '@testing-library/react-native/pure'
|
||||
|
||||
import Button from '@components/Button'
|
||||
|
||||
expect.extend({ toBeDisabled, toHaveStyle, toHaveTextContent })
|
||||
|
||||
describe('Testing component button', () => {
|
||||
afterEach(cleanup)
|
||||
|
||||
describe('static button', () => {
|
||||
it('with text only', () => {
|
||||
const onPress = jest.fn()
|
||||
const { getByTestId, toJSON } = render(
|
||||
<Button type='text' content='Test Button' onPress={onPress} />
|
||||
)
|
||||
fireEvent.press(getByTestId('base'))
|
||||
|
||||
expect(onPress).toHaveBeenCalled()
|
||||
expect(onPress).toHaveBeenCalledTimes(1)
|
||||
expect(getByTestId('text')).toHaveTextContent('Test Button')
|
||||
expect(toJSON()).toMatchSnapshot()
|
||||
})
|
||||
|
||||
it('with icon only', () => {
|
||||
const onPress = jest.fn()
|
||||
const { getByTestId, toJSON } = render(
|
||||
<Button type='icon' content='X' onPress={onPress} />
|
||||
)
|
||||
fireEvent.press(getByTestId('base'))
|
||||
|
||||
expect(onPress).toHaveBeenCalled()
|
||||
expect(onPress).toHaveBeenCalledTimes(1)
|
||||
expect(toJSON()).toMatchSnapshot()
|
||||
})
|
||||
|
||||
it('loading state', () => {
|
||||
const { getByTestId, toJSON } = render(
|
||||
<Button type='text' content='test' onPress={jest.fn()} loading />
|
||||
)
|
||||
|
||||
expect(getByTestId('base')).toBeDisabled()
|
||||
expect(toJSON()).toMatchSnapshot()
|
||||
})
|
||||
|
||||
it('disabled state', () => {
|
||||
const { getByTestId, toJSON } = render(
|
||||
<Button type='text' content='test' onPress={jest.fn()} disabled />
|
||||
)
|
||||
|
||||
expect(getByTestId('base')).toBeDisabled()
|
||||
expect(toJSON()).toMatchSnapshot()
|
||||
})
|
||||
|
||||
it('apply custom styling', () => {
|
||||
const { getByTestId, toJSON } = render(
|
||||
<Button
|
||||
type='text'
|
||||
content='test'
|
||||
onPress={jest.fn()}
|
||||
style={{ backgroundColor: 'black' }}
|
||||
/>
|
||||
)
|
||||
|
||||
expect(getByTestId('base')).toHaveStyle({ backgroundColor: 'black' })
|
||||
expect(toJSON()).toMatchSnapshot()
|
||||
})
|
||||
})
|
||||
|
||||
describe('dynamic button', () => {
|
||||
it('from default to loading', () => {
|
||||
const onPress = jest.fn()
|
||||
const { getByTestId, rerender } = render(
|
||||
<Button type='text' content='test' onPress={onPress} />
|
||||
)
|
||||
rerender(<Button type='text' content='test' onPress={onPress} loading />)
|
||||
|
||||
expect(getByTestId('base')).toBeDisabled()
|
||||
})
|
||||
|
||||
it('from default to disabled', () => {
|
||||
const onPress = jest.fn()
|
||||
const { getByTestId, rerender } = render(
|
||||
<Button type='text' content='test' onPress={onPress} />
|
||||
)
|
||||
rerender(<Button type='text' content='test' onPress={onPress} disabled />)
|
||||
|
||||
expect(getByTestId('base')).toBeDisabled()
|
||||
})
|
||||
})
|
||||
})
|
|
@ -1,15 +0,0 @@
|
|||
import React from 'react'
|
||||
import { cleanup, render } from '@testing-library/react-native/pure'
|
||||
|
||||
import MenuHeader from '@components/Menu/Header'
|
||||
|
||||
describe('Testing component menu header', () => {
|
||||
afterEach(cleanup)
|
||||
|
||||
it('with text only', () => {
|
||||
const { getByText, toJSON } = render(<MenuHeader heading='test' />)
|
||||
|
||||
getByText('test')
|
||||
expect(toJSON()).toMatchSnapshot()
|
||||
})
|
||||
})
|
|
@ -1,50 +0,0 @@
|
|||
import React from 'react'
|
||||
import { toBeDisabled } from '@testing-library/jest-native'
|
||||
import { cleanup, fireEvent, render } from '@testing-library/react-native'
|
||||
|
||||
import MenuRow from '@components/Menu/Row'
|
||||
|
||||
expect.extend({ toBeDisabled })
|
||||
|
||||
describe('Testing component menu row', () => {
|
||||
afterEach(cleanup)
|
||||
|
||||
it('with title only', () => {
|
||||
const { getByText, toJSON } = render(<MenuRow title='test title' />)
|
||||
getByText('test title')
|
||||
expect(toJSON()).toMatchSnapshot()
|
||||
})
|
||||
|
||||
it('with title and content', () => {
|
||||
const { getByText, toJSON } = render(
|
||||
<MenuRow title='test title' content='test content' />
|
||||
)
|
||||
getByText('test title')
|
||||
getByText('test content')
|
||||
expect(toJSON()).toMatchSnapshot()
|
||||
})
|
||||
|
||||
it('on press event', () => {
|
||||
const onPress = jest.fn()
|
||||
const { getByTestId, toJSON } = render(
|
||||
<MenuRow title='test' onPress={onPress} />
|
||||
)
|
||||
fireEvent.press(getByTestId('base'))
|
||||
|
||||
expect(onPress).toHaveBeenCalled()
|
||||
expect(onPress).toHaveBeenCalledTimes(1)
|
||||
expect(toJSON()).toMatchSnapshot()
|
||||
})
|
||||
|
||||
it('loading state', () => {
|
||||
const onPress = jest.fn()
|
||||
const { getByTestId, toJSON } = render(
|
||||
<MenuRow title='test' loading onPress={onPress} />
|
||||
)
|
||||
fireEvent.press(getByTestId('base'))
|
||||
|
||||
expect(onPress).toHaveBeenCalledTimes(0)
|
||||
expect(getByTestId('base')).toBeDisabled()
|
||||
expect(toJSON()).toMatchSnapshot()
|
||||
})
|
||||
})
|
|
@ -1,30 +0,0 @@
|
|||
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
||||
|
||||
exports[`Testing component menu header with text only 1`] = `
|
||||
<View
|
||||
style={
|
||||
Object {
|
||||
"paddingBottom": 8,
|
||||
"paddingLeft": 16,
|
||||
"paddingRight": 16,
|
||||
}
|
||||
}
|
||||
>
|
||||
<Text
|
||||
style={
|
||||
Array [
|
||||
Object {
|
||||
"fontSize": 14,
|
||||
"fontWeight": "600",
|
||||
"lineHeight": 20,
|
||||
},
|
||||
Object {
|
||||
"color": "rgb(135, 135, 135)",
|
||||
},
|
||||
]
|
||||
}
|
||||
>
|
||||
test
|
||||
</Text>
|
||||
</View>
|
||||
`;
|
|
@ -1,302 +0,0 @@
|
|||
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
||||
|
||||
exports[`Testing component menu row loading state 1`] = `
|
||||
<View
|
||||
accessible={true}
|
||||
focusable={true}
|
||||
onBlur={[Function]}
|
||||
onClick={[Function]}
|
||||
onFocus={[Function]}
|
||||
onResponderGrant={[Function]}
|
||||
onResponderMove={[Function]}
|
||||
onResponderRelease={[Function]}
|
||||
onResponderTerminate={[Function]}
|
||||
onResponderTerminationRequest={[Function]}
|
||||
onStartShouldSetResponder={[Function]}
|
||||
style={
|
||||
Object {
|
||||
"minHeight": 50,
|
||||
}
|
||||
}
|
||||
testID="base"
|
||||
>
|
||||
<View
|
||||
style={
|
||||
Object {
|
||||
"flex": 1,
|
||||
"flexDirection": "row",
|
||||
"paddingLeft": 16,
|
||||
"paddingRight": 16,
|
||||
}
|
||||
}
|
||||
>
|
||||
<View
|
||||
style={
|
||||
Object {
|
||||
"alignItems": "center",
|
||||
"flex": 2,
|
||||
"flexDirection": "row",
|
||||
}
|
||||
}
|
||||
>
|
||||
<View
|
||||
style={
|
||||
Object {
|
||||
"flex": 1,
|
||||
}
|
||||
}
|
||||
>
|
||||
<Text
|
||||
numberOfLines={1}
|
||||
style={
|
||||
Array [
|
||||
Object {
|
||||
"fontSize": 16,
|
||||
"lineHeight": 22,
|
||||
},
|
||||
Object {
|
||||
"color": "rgb(18, 18, 18)",
|
||||
},
|
||||
]
|
||||
}
|
||||
>
|
||||
test
|
||||
</Text>
|
||||
</View>
|
||||
</View>
|
||||
</View>
|
||||
</View>
|
||||
`;
|
||||
|
||||
exports[`Testing component menu row on press event 1`] = `
|
||||
<View
|
||||
accessible={true}
|
||||
focusable={true}
|
||||
onBlur={[Function]}
|
||||
onClick={[Function]}
|
||||
onFocus={[Function]}
|
||||
onResponderGrant={[Function]}
|
||||
onResponderMove={[Function]}
|
||||
onResponderRelease={[Function]}
|
||||
onResponderTerminate={[Function]}
|
||||
onResponderTerminationRequest={[Function]}
|
||||
onStartShouldSetResponder={[Function]}
|
||||
style={
|
||||
Object {
|
||||
"minHeight": 50,
|
||||
}
|
||||
}
|
||||
testID="base"
|
||||
>
|
||||
<View
|
||||
style={
|
||||
Object {
|
||||
"flex": 1,
|
||||
"flexDirection": "row",
|
||||
"paddingLeft": 16,
|
||||
"paddingRight": 16,
|
||||
}
|
||||
}
|
||||
>
|
||||
<View
|
||||
style={
|
||||
Object {
|
||||
"alignItems": "center",
|
||||
"flex": 2,
|
||||
"flexDirection": "row",
|
||||
}
|
||||
}
|
||||
>
|
||||
<View
|
||||
style={
|
||||
Object {
|
||||
"flex": 1,
|
||||
}
|
||||
}
|
||||
>
|
||||
<Text
|
||||
numberOfLines={1}
|
||||
style={
|
||||
Array [
|
||||
Object {
|
||||
"fontSize": 16,
|
||||
"lineHeight": 22,
|
||||
},
|
||||
Object {
|
||||
"color": "rgb(18, 18, 18)",
|
||||
},
|
||||
]
|
||||
}
|
||||
>
|
||||
test
|
||||
</Text>
|
||||
</View>
|
||||
</View>
|
||||
</View>
|
||||
</View>
|
||||
`;
|
||||
|
||||
exports[`Testing component menu row with title and content 1`] = `
|
||||
<View
|
||||
accessible={true}
|
||||
focusable={true}
|
||||
onBlur={[Function]}
|
||||
onClick={[Function]}
|
||||
onFocus={[Function]}
|
||||
onResponderGrant={[Function]}
|
||||
onResponderMove={[Function]}
|
||||
onResponderRelease={[Function]}
|
||||
onResponderTerminate={[Function]}
|
||||
onResponderTerminationRequest={[Function]}
|
||||
onStartShouldSetResponder={[Function]}
|
||||
style={
|
||||
Object {
|
||||
"minHeight": 50,
|
||||
}
|
||||
}
|
||||
testID="base"
|
||||
>
|
||||
<View
|
||||
style={
|
||||
Object {
|
||||
"flex": 1,
|
||||
"flexDirection": "row",
|
||||
"paddingLeft": 16,
|
||||
"paddingRight": 16,
|
||||
}
|
||||
}
|
||||
>
|
||||
<View
|
||||
style={
|
||||
Object {
|
||||
"alignItems": "center",
|
||||
"flex": 2,
|
||||
"flexDirection": "row",
|
||||
}
|
||||
}
|
||||
>
|
||||
<View
|
||||
style={
|
||||
Object {
|
||||
"flex": 1,
|
||||
}
|
||||
}
|
||||
>
|
||||
<Text
|
||||
numberOfLines={1}
|
||||
style={
|
||||
Array [
|
||||
Object {
|
||||
"fontSize": 16,
|
||||
"lineHeight": 22,
|
||||
},
|
||||
Object {
|
||||
"color": "rgb(18, 18, 18)",
|
||||
},
|
||||
]
|
||||
}
|
||||
>
|
||||
test title
|
||||
</Text>
|
||||
</View>
|
||||
</View>
|
||||
<View
|
||||
style={
|
||||
Object {
|
||||
"alignItems": "center",
|
||||
"flex": 1,
|
||||
"flexDirection": "row",
|
||||
"justifyContent": "flex-end",
|
||||
"marginLeft": 16,
|
||||
}
|
||||
}
|
||||
>
|
||||
<Text
|
||||
numberOfLines={1}
|
||||
style={
|
||||
Array [
|
||||
Object {
|
||||
"fontSize": 16,
|
||||
"lineHeight": 22,
|
||||
},
|
||||
Object {
|
||||
"color": "rgb(135, 135, 135)",
|
||||
"opacity": 1,
|
||||
},
|
||||
]
|
||||
}
|
||||
>
|
||||
test content
|
||||
</Text>
|
||||
</View>
|
||||
</View>
|
||||
</View>
|
||||
`;
|
||||
|
||||
exports[`Testing component menu row with title only 1`] = `
|
||||
<View
|
||||
accessible={true}
|
||||
focusable={true}
|
||||
onBlur={[Function]}
|
||||
onClick={[Function]}
|
||||
onFocus={[Function]}
|
||||
onResponderGrant={[Function]}
|
||||
onResponderMove={[Function]}
|
||||
onResponderRelease={[Function]}
|
||||
onResponderTerminate={[Function]}
|
||||
onResponderTerminationRequest={[Function]}
|
||||
onStartShouldSetResponder={[Function]}
|
||||
style={
|
||||
Object {
|
||||
"minHeight": 50,
|
||||
}
|
||||
}
|
||||
testID="base"
|
||||
>
|
||||
<View
|
||||
style={
|
||||
Object {
|
||||
"flex": 1,
|
||||
"flexDirection": "row",
|
||||
"paddingLeft": 16,
|
||||
"paddingRight": 16,
|
||||
}
|
||||
}
|
||||
>
|
||||
<View
|
||||
style={
|
||||
Object {
|
||||
"alignItems": "center",
|
||||
"flex": 2,
|
||||
"flexDirection": "row",
|
||||
}
|
||||
}
|
||||
>
|
||||
<View
|
||||
style={
|
||||
Object {
|
||||
"flex": 1,
|
||||
}
|
||||
}
|
||||
>
|
||||
<Text
|
||||
numberOfLines={1}
|
||||
style={
|
||||
Array [
|
||||
Object {
|
||||
"fontSize": 16,
|
||||
"lineHeight": 22,
|
||||
},
|
||||
Object {
|
||||
"color": "rgb(18, 18, 18)",
|
||||
},
|
||||
]
|
||||
}
|
||||
>
|
||||
test title
|
||||
</Text>
|
||||
</View>
|
||||
</View>
|
||||
</View>
|
||||
</View>
|
||||
`;
|
|
@ -1,59 +0,0 @@
|
|||
import React from 'react'
|
||||
import {
|
||||
toBeDisabled,
|
||||
toContainElement,
|
||||
toHaveStyle,
|
||||
toHaveTextContent
|
||||
} from '@testing-library/jest-native'
|
||||
import { cleanup, render } from '@testing-library/react-native/pure'
|
||||
|
||||
import Card from '@components/Timelines/Timeline/Shared/Card'
|
||||
|
||||
expect.extend({
|
||||
toBeDisabled,
|
||||
toContainElement,
|
||||
toHaveStyle,
|
||||
toHaveTextContent
|
||||
})
|
||||
|
||||
describe('Testing component timeline card', () => {
|
||||
afterEach(cleanup)
|
||||
|
||||
it('with text only', () => {
|
||||
const { getByTestId, queryByTestId, toJSON } = render(
|
||||
<Card
|
||||
card={{
|
||||
url: 'http://example.com',
|
||||
title: 'Title'
|
||||
}}
|
||||
/>
|
||||
)
|
||||
|
||||
expect(queryByTestId('image')).toBeNull()
|
||||
expect(getByTestId('base')).toContainElement(getByTestId('title'))
|
||||
expect(queryByTestId('description')).toBeNull()
|
||||
|
||||
expect(getByTestId('title')).toHaveTextContent('Title')
|
||||
expect(toJSON()).toMatchSnapshot()
|
||||
})
|
||||
|
||||
it('with text and description', () => {
|
||||
const { getByTestId, queryByTestId, toJSON } = render(
|
||||
<Card
|
||||
card={{
|
||||
url: 'http://example.com',
|
||||
title: 'Title',
|
||||
description: 'Description'
|
||||
}}
|
||||
/>
|
||||
)
|
||||
|
||||
expect(queryByTestId('image')).toBeNull()
|
||||
expect(getByTestId('base')).toContainElement(getByTestId('title'))
|
||||
expect(getByTestId('base')).toContainElement(getByTestId('description'))
|
||||
|
||||
expect(getByTestId('title')).toHaveTextContent('Title')
|
||||
expect(getByTestId('description')).toHaveTextContent('Description')
|
||||
expect(toJSON()).toMatchSnapshot()
|
||||
})
|
||||
})
|
|
@ -1,155 +0,0 @@
|
|||
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
||||
|
||||
exports[`Testing component timeline card with text and description 1`] = `
|
||||
<View
|
||||
accessible={true}
|
||||
focusable={true}
|
||||
onBlur={[Function]}
|
||||
onClick={[Function]}
|
||||
onFocus={[Function]}
|
||||
onResponderGrant={[Function]}
|
||||
onResponderMove={[Function]}
|
||||
onResponderRelease={[Function]}
|
||||
onResponderTerminate={[Function]}
|
||||
onResponderTerminationRequest={[Function]}
|
||||
onStartShouldSetResponder={[Function]}
|
||||
style={
|
||||
Array [
|
||||
Object {
|
||||
"borderRadius": 6,
|
||||
"borderWidth": 0.5,
|
||||
"flex": 1,
|
||||
"flexDirection": "row",
|
||||
"height": 104,
|
||||
"marginTop": 16,
|
||||
},
|
||||
Object {
|
||||
"borderColor": "rgba(18, 18, 18, 0.3)",
|
||||
},
|
||||
]
|
||||
}
|
||||
testID="base"
|
||||
>
|
||||
<View
|
||||
style={
|
||||
Object {
|
||||
"flex": 1,
|
||||
"padding": 8,
|
||||
}
|
||||
}
|
||||
>
|
||||
<Text
|
||||
numberOfLines={2}
|
||||
style={
|
||||
Array [
|
||||
Object {
|
||||
"fontWeight": "600",
|
||||
"marginBottom": 4,
|
||||
},
|
||||
Object {
|
||||
"color": "rgb(18, 18, 18)",
|
||||
},
|
||||
]
|
||||
}
|
||||
testID="title"
|
||||
>
|
||||
Title
|
||||
</Text>
|
||||
<Text
|
||||
numberOfLines={1}
|
||||
style={
|
||||
Array [
|
||||
Object {
|
||||
"marginBottom": 4,
|
||||
},
|
||||
Object {
|
||||
"color": "rgb(18, 18, 18)",
|
||||
},
|
||||
]
|
||||
}
|
||||
testID="description"
|
||||
>
|
||||
Description
|
||||
</Text>
|
||||
<Text
|
||||
numberOfLines={1}
|
||||
style={
|
||||
Object {
|
||||
"color": "rgb(135, 135, 135)",
|
||||
}
|
||||
}
|
||||
>
|
||||
http://example.com
|
||||
</Text>
|
||||
</View>
|
||||
</View>
|
||||
`;
|
||||
|
||||
exports[`Testing component timeline card with text only 1`] = `
|
||||
<View
|
||||
accessible={true}
|
||||
focusable={true}
|
||||
onBlur={[Function]}
|
||||
onClick={[Function]}
|
||||
onFocus={[Function]}
|
||||
onResponderGrant={[Function]}
|
||||
onResponderMove={[Function]}
|
||||
onResponderRelease={[Function]}
|
||||
onResponderTerminate={[Function]}
|
||||
onResponderTerminationRequest={[Function]}
|
||||
onStartShouldSetResponder={[Function]}
|
||||
style={
|
||||
Array [
|
||||
Object {
|
||||
"borderRadius": 6,
|
||||
"borderWidth": 0.5,
|
||||
"flex": 1,
|
||||
"flexDirection": "row",
|
||||
"height": 104,
|
||||
"marginTop": 16,
|
||||
},
|
||||
Object {
|
||||
"borderColor": "rgba(18, 18, 18, 0.3)",
|
||||
},
|
||||
]
|
||||
}
|
||||
testID="base"
|
||||
>
|
||||
<View
|
||||
style={
|
||||
Object {
|
||||
"flex": 1,
|
||||
"padding": 8,
|
||||
}
|
||||
}
|
||||
>
|
||||
<Text
|
||||
numberOfLines={2}
|
||||
style={
|
||||
Array [
|
||||
Object {
|
||||
"fontWeight": "600",
|
||||
"marginBottom": 4,
|
||||
},
|
||||
Object {
|
||||
"color": "rgb(18, 18, 18)",
|
||||
},
|
||||
]
|
||||
}
|
||||
testID="title"
|
||||
>
|
||||
Title
|
||||
</Text>
|
||||
<Text
|
||||
numberOfLines={1}
|
||||
style={
|
||||
Object {
|
||||
"color": "rgb(135, 135, 135)",
|
||||
}
|
||||
}
|
||||
>
|
||||
http://example.com
|
||||
</Text>
|
||||
</View>
|
||||
</View>
|
||||
`;
|
|
@ -1,474 +0,0 @@
|
|||
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
||||
|
||||
exports[`Testing component button static button apply custom styling 1`] = `
|
||||
<View>
|
||||
<View
|
||||
accessible={true}
|
||||
focusable={true}
|
||||
onBlur={[Function]}
|
||||
onClick={[Function]}
|
||||
onFocus={[Function]}
|
||||
onResponderGrant={[Function]}
|
||||
onResponderMove={[Function]}
|
||||
onResponderRelease={[Function]}
|
||||
onResponderTerminate={[Function]}
|
||||
onResponderTerminationRequest={[Function]}
|
||||
onStartShouldSetResponder={[Function]}
|
||||
style={
|
||||
Array [
|
||||
Object {
|
||||
"alignItems": "center",
|
||||
"borderRadius": 100,
|
||||
"flexDirection": "row",
|
||||
"justifyContent": "center",
|
||||
},
|
||||
Object {
|
||||
"backgroundColor": "rgb(250, 250, 250)",
|
||||
"borderColor": "rgb(18, 18, 18)",
|
||||
"borderWidth": 1,
|
||||
"paddingHorizontal": 16,
|
||||
"paddingVertical": 8,
|
||||
},
|
||||
Object {
|
||||
"backgroundColor": "black",
|
||||
},
|
||||
]
|
||||
}
|
||||
testID="base"
|
||||
>
|
||||
<Text
|
||||
style={
|
||||
Object {
|
||||
"color": "rgb(18, 18, 18)",
|
||||
"fontSize": 16,
|
||||
"fontWeight": undefined,
|
||||
"opacity": 1,
|
||||
}
|
||||
}
|
||||
testID="text"
|
||||
>
|
||||
test
|
||||
</Text>
|
||||
</View>
|
||||
</View>
|
||||
`;
|
||||
|
||||
exports[`Testing component button static button disabled state 1`] = `
|
||||
<View>
|
||||
<View
|
||||
accessible={true}
|
||||
focusable={true}
|
||||
onBlur={[Function]}
|
||||
onClick={[Function]}
|
||||
onFocus={[Function]}
|
||||
onResponderGrant={[Function]}
|
||||
onResponderMove={[Function]}
|
||||
onResponderRelease={[Function]}
|
||||
onResponderTerminate={[Function]}
|
||||
onResponderTerminationRequest={[Function]}
|
||||
onStartShouldSetResponder={[Function]}
|
||||
style={
|
||||
Array [
|
||||
Object {
|
||||
"alignItems": "center",
|
||||
"borderRadius": 100,
|
||||
"flexDirection": "row",
|
||||
"justifyContent": "center",
|
||||
},
|
||||
Object {
|
||||
"backgroundColor": "rgb(250, 250, 250)",
|
||||
"borderColor": "rgb(135, 135, 135)",
|
||||
"borderWidth": 1,
|
||||
"paddingHorizontal": 16,
|
||||
"paddingVertical": 8,
|
||||
},
|
||||
undefined,
|
||||
]
|
||||
}
|
||||
testID="base"
|
||||
>
|
||||
<Text
|
||||
style={
|
||||
Object {
|
||||
"color": "rgb(135, 135, 135)",
|
||||
"fontSize": 16,
|
||||
"fontWeight": undefined,
|
||||
"opacity": 1,
|
||||
}
|
||||
}
|
||||
testID="text"
|
||||
>
|
||||
test
|
||||
</Text>
|
||||
</View>
|
||||
</View>
|
||||
`;
|
||||
|
||||
exports[`Testing component button static button loading state 1`] = `
|
||||
<View>
|
||||
<View
|
||||
accessible={true}
|
||||
focusable={true}
|
||||
onBlur={[Function]}
|
||||
onClick={[Function]}
|
||||
onFocus={[Function]}
|
||||
onResponderGrant={[Function]}
|
||||
onResponderMove={[Function]}
|
||||
onResponderRelease={[Function]}
|
||||
onResponderTerminate={[Function]}
|
||||
onResponderTerminationRequest={[Function]}
|
||||
onStartShouldSetResponder={[Function]}
|
||||
style={
|
||||
Array [
|
||||
Object {
|
||||
"alignItems": "center",
|
||||
"borderRadius": 100,
|
||||
"flexDirection": "row",
|
||||
"justifyContent": "center",
|
||||
},
|
||||
Object {
|
||||
"backgroundColor": "rgb(250, 250, 250)",
|
||||
"borderColor": "rgb(135, 135, 135)",
|
||||
"borderWidth": 1,
|
||||
"paddingHorizontal": 16,
|
||||
"paddingVertical": 8,
|
||||
},
|
||||
undefined,
|
||||
]
|
||||
}
|
||||
testID="base"
|
||||
>
|
||||
<Text
|
||||
style={
|
||||
Object {
|
||||
"color": "rgb(18, 18, 18)",
|
||||
"fontSize": 16,
|
||||
"fontWeight": undefined,
|
||||
"opacity": 0,
|
||||
}
|
||||
}
|
||||
testID="text"
|
||||
>
|
||||
test
|
||||
</Text>
|
||||
<View
|
||||
style={
|
||||
Object {
|
||||
"position": "absolute",
|
||||
}
|
||||
}
|
||||
>
|
||||
<View
|
||||
style={
|
||||
Object {
|
||||
"alignItems": "center",
|
||||
"height": 16,
|
||||
"justifyContent": "center",
|
||||
"opacity": 1,
|
||||
"transform": Array [
|
||||
Object {
|
||||
"rotate": "0deg",
|
||||
},
|
||||
],
|
||||
"width": 16,
|
||||
}
|
||||
}
|
||||
>
|
||||
<View
|
||||
style={
|
||||
Object {
|
||||
"backgroundColor": "rgb(135, 135, 135)",
|
||||
"borderRadius": 2,
|
||||
"height": 4,
|
||||
"position": "absolute",
|
||||
"transform": Array [
|
||||
Object {
|
||||
"rotate": "73.27536734311887deg",
|
||||
},
|
||||
Object {
|
||||
"translateY": -6,
|
||||
},
|
||||
Object {
|
||||
"scale": 0.7,
|
||||
},
|
||||
],
|
||||
"width": 4,
|
||||
}
|
||||
}
|
||||
/>
|
||||
<View
|
||||
style={
|
||||
Object {
|
||||
"backgroundColor": "rgb(135, 135, 135)",
|
||||
"borderRadius": 2,
|
||||
"height": 4,
|
||||
"position": "absolute",
|
||||
"transform": Array [
|
||||
Object {
|
||||
"rotate": "46.49829517703514deg",
|
||||
},
|
||||
Object {
|
||||
"translateY": -6,
|
||||
},
|
||||
Object {
|
||||
"scale": 0.8008696779414123,
|
||||
},
|
||||
],
|
||||
"width": 4,
|
||||
}
|
||||
}
|
||||
/>
|
||||
<View
|
||||
style={
|
||||
Object {
|
||||
"backgroundColor": "rgb(135, 135, 135)",
|
||||
"borderRadius": 2,
|
||||
"height": 4,
|
||||
"position": "absolute",
|
||||
"transform": Array [
|
||||
Object {
|
||||
"rotate": "25.743213498935145deg",
|
||||
},
|
||||
Object {
|
||||
"translateY": -6,
|
||||
},
|
||||
Object {
|
||||
"scale": 0.8875624559768125,
|
||||
},
|
||||
],
|
||||
"width": 4,
|
||||
}
|
||||
}
|
||||
/>
|
||||
<View
|
||||
style={
|
||||
Object {
|
||||
"backgroundColor": "rgb(135, 135, 135)",
|
||||
"borderRadius": 2,
|
||||
"height": 4,
|
||||
"position": "absolute",
|
||||
"transform": Array [
|
||||
Object {
|
||||
"rotate": "11.201058030774364deg",
|
||||
},
|
||||
Object {
|
||||
"translateY": -6,
|
||||
},
|
||||
Object {
|
||||
"scale": 0.9510040862404615,
|
||||
},
|
||||
],
|
||||
"width": 4,
|
||||
}
|
||||
}
|
||||
/>
|
||||
<View
|
||||
style={
|
||||
Object {
|
||||
"backgroundColor": "rgb(135, 135, 135)",
|
||||
"borderRadius": 2,
|
||||
"height": 4,
|
||||
"position": "absolute",
|
||||
"transform": Array [
|
||||
Object {
|
||||
"rotate": "2.731234791722257deg",
|
||||
},
|
||||
Object {
|
||||
"translateY": -6,
|
||||
},
|
||||
Object {
|
||||
"scale": 0.9881665278710133,
|
||||
},
|
||||
],
|
||||
"width": 4,
|
||||
}
|
||||
}
|
||||
/>
|
||||
<View
|
||||
style={
|
||||
Object {
|
||||
"backgroundColor": "rgb(135, 135, 135)",
|
||||
"borderRadius": 2,
|
||||
"height": 4,
|
||||
"position": "absolute",
|
||||
"transform": Array [
|
||||
Object {
|
||||
"rotate": "0deg",
|
||||
},
|
||||
Object {
|
||||
"translateY": -6,
|
||||
},
|
||||
Object {
|
||||
"scale": 1,
|
||||
},
|
||||
],
|
||||
"width": 4,
|
||||
}
|
||||
}
|
||||
/>
|
||||
</View>
|
||||
</View>
|
||||
</View>
|
||||
</View>
|
||||
`;
|
||||
|
||||
exports[`Testing component button static button with icon only 1`] = `
|
||||
<View>
|
||||
<View
|
||||
accessible={true}
|
||||
focusable={true}
|
||||
onBlur={[Function]}
|
||||
onClick={[Function]}
|
||||
onFocus={[Function]}
|
||||
onResponderGrant={[Function]}
|
||||
onResponderMove={[Function]}
|
||||
onResponderRelease={[Function]}
|
||||
onResponderTerminate={[Function]}
|
||||
onResponderTerminationRequest={[Function]}
|
||||
onStartShouldSetResponder={[Function]}
|
||||
style={
|
||||
Array [
|
||||
Object {
|
||||
"alignItems": "center",
|
||||
"borderRadius": 100,
|
||||
"flexDirection": "row",
|
||||
"justifyContent": "center",
|
||||
},
|
||||
Object {
|
||||
"backgroundColor": "rgb(250, 250, 250)",
|
||||
"borderColor": "rgb(18, 18, 18)",
|
||||
"borderWidth": 1,
|
||||
"paddingHorizontal": 16,
|
||||
"paddingVertical": 8,
|
||||
},
|
||||
undefined,
|
||||
]
|
||||
}
|
||||
testID="base"
|
||||
>
|
||||
<View
|
||||
style={
|
||||
Array [
|
||||
Object {
|
||||
"opacity": 1,
|
||||
},
|
||||
Object {
|
||||
"alignItems": "center",
|
||||
"height": 16,
|
||||
"justifyContent": "center",
|
||||
"width": 16,
|
||||
},
|
||||
]
|
||||
}
|
||||
>
|
||||
<RNSVGSvgView
|
||||
align="xMidYMid"
|
||||
bbHeight={16}
|
||||
bbWidth={16}
|
||||
className=""
|
||||
color={4279374354}
|
||||
focusable={false}
|
||||
height={16}
|
||||
meetOrSlice={0}
|
||||
minX={0}
|
||||
minY={0}
|
||||
stroke="currentColor"
|
||||
strokeLinecap="round"
|
||||
strokeLinejoin="round"
|
||||
strokeWidth={2}
|
||||
style={
|
||||
Array [
|
||||
Object {
|
||||
"backgroundColor": "transparent",
|
||||
"borderWidth": 0,
|
||||
},
|
||||
Object {
|
||||
"flex": 0,
|
||||
"height": 16,
|
||||
"width": 16,
|
||||
},
|
||||
]
|
||||
}
|
||||
tintColor={4279374354}
|
||||
vbHeight={24}
|
||||
vbWidth={24}
|
||||
width={16}
|
||||
>
|
||||
<RNSVGGroup
|
||||
propList={
|
||||
Array [
|
||||
"stroke",
|
||||
"strokeWidth",
|
||||
"strokeLinecap",
|
||||
"strokeLinejoin",
|
||||
]
|
||||
}
|
||||
stroke={
|
||||
Array [
|
||||
2,
|
||||
]
|
||||
}
|
||||
strokeLinecap={1}
|
||||
strokeLinejoin={1}
|
||||
strokeWidth={2}
|
||||
>
|
||||
<RNSVGPath
|
||||
d="M18 6L6 18M6 6l12 12"
|
||||
/>
|
||||
</RNSVGGroup>
|
||||
</RNSVGSvgView>
|
||||
</View>
|
||||
</View>
|
||||
</View>
|
||||
`;
|
||||
|
||||
exports[`Testing component button static button with text only 1`] = `
|
||||
<View>
|
||||
<View
|
||||
accessible={true}
|
||||
focusable={true}
|
||||
onBlur={[Function]}
|
||||
onClick={[Function]}
|
||||
onFocus={[Function]}
|
||||
onResponderGrant={[Function]}
|
||||
onResponderMove={[Function]}
|
||||
onResponderRelease={[Function]}
|
||||
onResponderTerminate={[Function]}
|
||||
onResponderTerminationRequest={[Function]}
|
||||
onStartShouldSetResponder={[Function]}
|
||||
style={
|
||||
Array [
|
||||
Object {
|
||||
"alignItems": "center",
|
||||
"borderRadius": 100,
|
||||
"flexDirection": "row",
|
||||
"justifyContent": "center",
|
||||
},
|
||||
Object {
|
||||
"backgroundColor": "rgb(250, 250, 250)",
|
||||
"borderColor": "rgb(18, 18, 18)",
|
||||
"borderWidth": 1,
|
||||
"paddingHorizontal": 16,
|
||||
"paddingVertical": 8,
|
||||
},
|
||||
undefined,
|
||||
]
|
||||
}
|
||||
testID="base"
|
||||
>
|
||||
<Text
|
||||
style={
|
||||
Object {
|
||||
"color": "rgb(18, 18, 18)",
|
||||
"fontSize": 16,
|
||||
"fontWeight": undefined,
|
||||
"opacity": 1,
|
||||
}
|
||||
}
|
||||
testID="text"
|
||||
>
|
||||
Test Button
|
||||
</Text>
|
||||
</View>
|
||||
</View>
|
||||
`;
|
|
@ -1,55 +0,0 @@
|
|||
# To learn about Buck see [Docs](https://buckbuild.com/).
|
||||
# To run your application with Buck:
|
||||
# - install Buck
|
||||
# - `npm start` - to start the packager
|
||||
# - `cd android`
|
||||
# - `keytool -genkey -v -keystore keystores/debug.keystore -storepass android -alias androiddebugkey -keypass android -dname "CN=Android Debug,O=Android,C=US"`
|
||||
# - `./gradlew :app:copyDownloadableDepsToLibs` - make all Gradle compile dependencies available to Buck
|
||||
# - `buck install -r android/app` - compile, install and run application
|
||||
#
|
||||
|
||||
load(":build_defs.bzl", "create_aar_targets", "create_jar_targets")
|
||||
|
||||
lib_deps = []
|
||||
|
||||
create_aar_targets(glob(["libs/*.aar"]))
|
||||
|
||||
create_jar_targets(glob(["libs/*.jar"]))
|
||||
|
||||
android_library(
|
||||
name = "all-libs",
|
||||
exported_deps = lib_deps,
|
||||
)
|
||||
|
||||
android_library(
|
||||
name = "app-code",
|
||||
srcs = glob([
|
||||
"src/main/java/**/*.java",
|
||||
]),
|
||||
deps = [
|
||||
":all-libs",
|
||||
":build_config",
|
||||
":res",
|
||||
],
|
||||
)
|
||||
|
||||
android_build_config(
|
||||
name = "build_config",
|
||||
package = "com.xmflsct.app.tooot",
|
||||
)
|
||||
|
||||
android_resource(
|
||||
name = "res",
|
||||
package = "com.xmflsct.app.tooot",
|
||||
res = "src/main/res",
|
||||
)
|
||||
|
||||
android_binary(
|
||||
name = "app",
|
||||
keystore = "//android/keystores:debug",
|
||||
manifest = "src/main/AndroidManifest.xml",
|
||||
package_type = "debug",
|
||||
deps = [
|
||||
":app-code",
|
||||
],
|
||||
)
|
|
@ -1,154 +1,91 @@
|
|||
apply plugin: "com.android.application"
|
||||
|
||||
import com.android.build.OutputFile
|
||||
apply plugin: "org.jetbrains.kotlin.android"
|
||||
apply plugin: "com.facebook.react"
|
||||
apply plugin: 'com.google.gms.google-services'
|
||||
|
||||
/**
|
||||
* The react.gradle file registers a task for each build variant (e.g. bundleDebugJsAndAssets
|
||||
* and bundleReleaseJsAndAssets).
|
||||
* These basically call `react-native bundle` with the correct arguments during the Android build
|
||||
* cycle. By default, bundleDebugJsAndAssets is skipped, as in debug/dev mode we prefer to load the
|
||||
* bundle directly from the development server. Below you can see all the possible configurations
|
||||
* and their defaults. If you decide to add a configuration block, make sure to add it before the
|
||||
* `apply from: "../../node_modules/react-native/react.gradle"` line.
|
||||
*
|
||||
* project.ext.react = [
|
||||
* // the name of the generated asset file containing your JS bundle
|
||||
* bundleAssetName: "index.android.bundle",
|
||||
*
|
||||
* // the entry file for bundle generation. If none specified and
|
||||
* // "index.android.js" exists, it will be used. Otherwise "index.js" is
|
||||
* // default. Can be overridden with ENTRY_FILE environment variable.
|
||||
* entryFile: "index.android.js",
|
||||
*
|
||||
* // https://reactnative.dev/docs/performance#enable-the-ram-format
|
||||
* bundleCommand: "ram-bundle",
|
||||
*
|
||||
* // whether to bundle JS and assets in debug mode
|
||||
* bundleInDebug: false,
|
||||
*
|
||||
* // whether to bundle JS and assets in release mode
|
||||
* bundleInRelease: true,
|
||||
*
|
||||
* // whether to bundle JS and assets in another build variant (if configured).
|
||||
* // See http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Build-Variants
|
||||
* // The configuration property can be in the following formats
|
||||
* // 'bundleIn${productFlavor}${buildType}'
|
||||
* // 'bundleIn${buildType}'
|
||||
* // bundleInFreeDebug: true,
|
||||
* // bundleInPaidRelease: true,
|
||||
* // bundleInBeta: true,
|
||||
*
|
||||
* // whether to disable dev mode in custom build variants (by default only disabled in release)
|
||||
* // for example: to disable dev mode in the staging build type (if configured)
|
||||
* devDisabledInStaging: true,
|
||||
* // The configuration property can be in the following formats
|
||||
* // 'devDisabledIn${productFlavor}${buildType}'
|
||||
* // 'devDisabledIn${buildType}'
|
||||
*
|
||||
* // the root of your project, i.e. where "package.json" lives
|
||||
* root: "../../",
|
||||
*
|
||||
* // where to put the JS bundle asset in debug mode
|
||||
* jsBundleDirDebug: "$buildDir/intermediates/assets/debug",
|
||||
*
|
||||
* // where to put the JS bundle asset in release mode
|
||||
* jsBundleDirRelease: "$buildDir/intermediates/assets/release",
|
||||
*
|
||||
* // where to put drawable resources / React Native assets, e.g. the ones you use via
|
||||
* // require('./image.png')), in debug mode
|
||||
* resourcesDirDebug: "$buildDir/intermediates/res/merged/debug",
|
||||
*
|
||||
* // where to put drawable resources / React Native assets, e.g. the ones you use via
|
||||
* // require('./image.png')), in release mode
|
||||
* resourcesDirRelease: "$buildDir/intermediates/res/merged/release",
|
||||
*
|
||||
* // by default the gradle tasks are skipped if none of the JS files or assets change; this means
|
||||
* // that we don't look at files in android/ or ios/ to determine whether the tasks are up to
|
||||
* // date; if you have any other folders that you want to ignore for performance reasons (gradle
|
||||
* // indexes the entire tree), add them here. Alternatively, if you have JS files in android/
|
||||
* // for example, you might want to remove it from here.
|
||||
* inputExcludes: ["android/**", "ios/**"],
|
||||
*
|
||||
* // override which node gets called and with what additional arguments
|
||||
* nodeExecutableAndArgs: ["node"],
|
||||
*
|
||||
* // supply additional arguments to the packager
|
||||
* extraPackagerArgs: []
|
||||
* ]
|
||||
* This is the configuration block to customize your React Native Android app.
|
||||
* By default you don't need to apply any configuration, just uncomment the lines you need.
|
||||
*/
|
||||
|
||||
project.ext.react = [
|
||||
enableHermes: true
|
||||
]
|
||||
|
||||
apply from: '../../node_modules/react-native-unimodules/gradle.groovy'
|
||||
apply from: "../../node_modules/react-native/react.gradle"
|
||||
apply from: "../../node_modules/expo-constants/scripts/get-app-config-android.gradle"
|
||||
apply from: "../../node_modules/expo-updates/scripts/create-manifest-android.gradle"
|
||||
react {
|
||||
/* Folders */
|
||||
// The root of your project, i.e. where "package.json" lives. Default is '..'
|
||||
// root = file("../")
|
||||
// The folder where the react-native NPM package is. Default is ../node_modules/react-native
|
||||
// reactNativeDir = file("../node_modules/react-native")
|
||||
// The folder where the react-native Codegen package is. Default is ../node_modules/@react-native/codegen
|
||||
// codegenDir = file("../node_modules/@react-native/codegen")
|
||||
// The cli.js file which is the React Native CLI entrypoint. Default is ../node_modules/react-native/cli.js
|
||||
// cliFile = file("../node_modules/react-native/cli.js")
|
||||
/* Variants */
|
||||
// The list of variants to that are debuggable. For those we're going to
|
||||
// skip the bundling of the JS bundle and the assets. By default is just 'debug'.
|
||||
// If you add flavors like lite, prod, etc. you'll have to list your debuggableVariants.
|
||||
// debuggableVariants = ["liteDebug", "prodDebug"]
|
||||
/* Bundling */
|
||||
// A list containing the node command and its flags. Default is just 'node'.
|
||||
// nodeExecutableAndArgs = ["node"]
|
||||
//
|
||||
// The command to run when bundling. By default is 'bundle'
|
||||
// bundleCommand = "ram-bundle"
|
||||
//
|
||||
// The path to the CLI configuration file. Default is empty.
|
||||
// bundleConfig = file(../rn-cli.config.js)
|
||||
//
|
||||
// The name of the generated asset file containing your JS bundle
|
||||
// bundleAssetName = "MyApplication.android.bundle"
|
||||
//
|
||||
// The entry file for bundle generation. Default is 'index.android.js' or 'index.js'
|
||||
// entryFile = file("../js/MyApplication.android.js")
|
||||
//
|
||||
// A list of extra flags to pass to the 'bundle' commands.
|
||||
// See https://github.com/react-native-community/cli/blob/main/docs/commands.md#bundle
|
||||
// extraPackagerArgs = []
|
||||
/* Hermes Commands */
|
||||
// The hermes compiler command to run. By default it is 'hermesc'
|
||||
// hermesCommand = "$rootDir/my-custom-hermesc/bin/hermesc"
|
||||
//
|
||||
// The list of flags to pass to the Hermes compiler. By default is "-O", "-output-source-map"
|
||||
// hermesFlags = ["-O", "-output-source-map"]
|
||||
}
|
||||
|
||||
/**
|
||||
* Set this to true to create two separate APKs instead of one:
|
||||
* - An APK that only works on ARM devices
|
||||
* - An APK that only works on x86 devices
|
||||
* The advantage is the size of the APK is reduced by about 4MB.
|
||||
* Upload all the APKs to the Play Store and people will download
|
||||
* the correct one based on the CPU architecture of their device.
|
||||
*/
|
||||
def enableSeparateBuildPerCPUArchitecture = false
|
||||
|
||||
/**
|
||||
* Run Proguard to shrink the Java bytecode in release builds.
|
||||
* Set this to true to Run Proguard on Release builds to minify the Java bytecode.
|
||||
*/
|
||||
def enableProguardInReleaseBuilds = false
|
||||
|
||||
/**
|
||||
* The preferred build flavor of JavaScriptCore.
|
||||
* The preferred build flavor of JavaScriptCore (JSC)
|
||||
*
|
||||
* For example, to use the international variant, you can use:
|
||||
* `def jscFlavor = 'org.webkit:android-jsc-intl:+'`
|
||||
*
|
||||
* The international variant includes ICU i18n library and necessary data
|
||||
* allowing to use e.g. `Date.toLocaleString` and `String.localeCompare` that
|
||||
* give correct results when using with locales other than en-US. Note that
|
||||
* give correct results when using with locales other than en-US. Note that
|
||||
* this variant is about 6MiB larger per architecture than default.
|
||||
*/
|
||||
def jscFlavor = 'org.webkit:android-jsc:+'
|
||||
|
||||
/**
|
||||
* Whether to enable the Hermes VM.
|
||||
*
|
||||
* This should be set on project.ext.react and mirrored here. If it is not set
|
||||
* on project.ext.react, JavaScript will not be compiled to Hermes Bytecode
|
||||
* and the benefits of using Hermes will therefore be sharply reduced.
|
||||
*/
|
||||
def enableHermes = project.ext.react.get("enableHermes", false);
|
||||
|
||||
android {
|
||||
compileSdkVersion rootProject.ext.compileSdkVersion
|
||||
ndkVersion rootProject.ext.ndkVersion
|
||||
|
||||
buildToolsVersion rootProject.ext.buildToolsVersion
|
||||
compileSdk rootProject.ext.compileSdkVersion
|
||||
|
||||
compileOptions {
|
||||
sourceCompatibility JavaVersion.VERSION_1_8
|
||||
targetCompatibility JavaVersion.VERSION_1_8
|
||||
}
|
||||
|
||||
namespace "com.xmflsct.app.tooot"
|
||||
defaultConfig {
|
||||
applicationId 'com.xmflsct.app.tooot'
|
||||
minSdkVersion rootProject.ext.minSdkVersion
|
||||
targetSdkVersion rootProject.ext.targetSdkVersion
|
||||
versionCode 50
|
||||
versionName "0.2"
|
||||
manifestPlaceholders = [
|
||||
expoSDK: project.hasProperty('expoSDK') ? project.property('expoSDK') : "",
|
||||
releaseChannel: project.hasProperty('releaseChannel') ? project.property('releaseChannel') : "default"
|
||||
]
|
||||
}
|
||||
splits {
|
||||
abi {
|
||||
reset()
|
||||
enable enableSeparateBuildPerCPUArchitecture
|
||||
universalApk false // If true, also generate a universal APK
|
||||
include "armeabi-v7a", "x86", "arm64-v8a", "x86_64"
|
||||
}
|
||||
}
|
||||
signingConfigs {
|
||||
debug {
|
||||
|
@ -170,56 +107,44 @@ android {
|
|||
proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
|
||||
}
|
||||
}
|
||||
|
||||
// applicationVariants are e.g. debug, release
|
||||
applicationVariants.all { variant ->
|
||||
variant.outputs.each { output ->
|
||||
// For each separate APK per architecture, set a unique version code as described here:
|
||||
// https://developer.android.com/studio/build/configure-apk-splits.html
|
||||
def versionCodes = ["armeabi-v7a": 1, "x86": 2, "arm64-v8a": 3, "x86_64": 4]
|
||||
def abi = output.getFilter(OutputFile.ABI)
|
||||
if (abi != null) { // null for the universal-debug, universal-release variants
|
||||
output.versionCodeOverride =
|
||||
versionCodes.get(abi) * 1048576 + defaultConfig.versionCode
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation fileTree(dir: "libs", include: ["*.jar"])
|
||||
//noinspection GradleDynamicVersion
|
||||
implementation "com.facebook.react:react-native:+" // From node_modules
|
||||
implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.0.0"
|
||||
debugImplementation("com.facebook.flipper:flipper:${FLIPPER_VERSION}") {
|
||||
exclude group:'com.facebook.fbjni'
|
||||
}
|
||||
debugImplementation("com.facebook.flipper:flipper-network-plugin:${FLIPPER_VERSION}") {
|
||||
exclude group:'com.facebook.flipper'
|
||||
exclude group:'com.squareup.okhttp3', module:'okhttp'
|
||||
}
|
||||
debugImplementation("com.facebook.flipper:flipper-fresco-plugin:${FLIPPER_VERSION}") {
|
||||
exclude group:'com.facebook.flipper'
|
||||
}
|
||||
addUnimodulesDependencies()
|
||||
def isGifEnabled = (findProperty('expo.gif.enabled') ?: "") == "true";
|
||||
def isWebpEnabled = (findProperty('expo.webp.enabled') ?: "") == "true";
|
||||
def isWebpAnimatedEnabled = (findProperty('expo.webp.animated') ?: "") == "true";
|
||||
|
||||
if (enableHermes) {
|
||||
def hermesPath = "../../node_modules/hermes-engine/android/";
|
||||
debugImplementation files(hermesPath + "hermes-debug.aar")
|
||||
releaseImplementation files(hermesPath + "hermes-release.aar")
|
||||
// If your app supports Android versions before Ice Cream Sandwich (API level 14)
|
||||
// All fresco packages should use the same version
|
||||
if (isGifEnabled || isWebpEnabled) {
|
||||
implementation 'com.facebook.fresco:fresco:2.0.0'
|
||||
implementation 'com.facebook.fresco:imagepipeline-okhttp3:2.0.0'
|
||||
}
|
||||
|
||||
if (isGifEnabled) {
|
||||
// For animated gif support
|
||||
implementation 'com.facebook.fresco:animated-gif:2.0.0'
|
||||
}
|
||||
|
||||
if (isWebpEnabled) {
|
||||
// For webp support
|
||||
implementation 'com.facebook.fresco:webpsupport:2.0.0'
|
||||
if (isWebpAnimatedEnabled) {
|
||||
// Animated webp support
|
||||
implementation 'com.facebook.fresco:animated-webp:2.0.0'
|
||||
}
|
||||
}
|
||||
|
||||
// The version of react-native is set by the React Native Gradle Plugin
|
||||
implementation("com.facebook.react:react-android")
|
||||
implementation("com.facebook.react:flipper-integration")
|
||||
|
||||
if (hermesEnabled.toBoolean()) {
|
||||
implementation("com.facebook.react:hermes-android")
|
||||
} else {
|
||||
implementation jscFlavor
|
||||
}
|
||||
}
|
||||
|
||||
// Run this once to be able to run the application with BUCK
|
||||
// puts all compile dependencies into folder libs for BUCK to use
|
||||
task copyDownloadableDepsToLibs(type: Copy) {
|
||||
from configurations.compile
|
||||
into 'libs'
|
||||
}
|
||||
|
||||
apply from: file("../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesAppBuildGradle(project)
|
||||
|
||||
apply plugin: 'com.google.gms.google-services'
|
||||
apply from: new File(["node", "--print", "require.resolve('@react-native-community/cli-platform-android/package.json')"].execute().text.trim(), "../native_modules.gradle");
|
||||
applyNativeModulesAppBuildGradle(project)
|
||||
|
|
|
@ -1,19 +0,0 @@
|
|||
"""Helper definitions to glob .aar and .jar targets"""
|
||||
|
||||
def create_aar_targets(aarfiles):
|
||||
for aarfile in aarfiles:
|
||||
name = "aars__" + aarfile[aarfile.rindex("/") + 1:aarfile.rindex(".aar")]
|
||||
lib_deps.append(":" + name)
|
||||
android_prebuilt_aar(
|
||||
name = name,
|
||||
aar = aarfile,
|
||||
)
|
||||
|
||||
def create_jar_targets(jarfiles):
|
||||
for jarfile in jarfiles:
|
||||
name = "jars__" + jarfile[jarfile.rindex("/") + 1:jarfile.rindex(".jar")]
|
||||
lib_deps.append(":" + name)
|
||||
prebuilt_jar(
|
||||
name = name,
|
||||
binary_jar = jarfile,
|
||||
)
|
|
@ -13,6 +13,14 @@
|
|||
}
|
||||
},
|
||||
"oauth_client": [
|
||||
{
|
||||
"client_id": "661638997772-erabggnp958v10r0tvsrh3pg880qnvqn.apps.googleusercontent.com",
|
||||
"client_type": 1,
|
||||
"android_info": {
|
||||
"package_name": "com.xmflsct.app.tooot",
|
||||
"certificate_hash": "53162f104230ee8b7b1372e4f378e2b9607ca16f"
|
||||
}
|
||||
},
|
||||
{
|
||||
"client_id": "661638997772-6aiqk97aema0rt280i7nfar3ha2mlgno.apps.googleusercontent.com",
|
||||
"client_type": 3
|
||||
|
@ -31,10 +39,11 @@
|
|||
"client_type": 3
|
||||
},
|
||||
{
|
||||
"client_id": "661638997772-sqa4raeghhrieqt9guljhcul9b51dvna.apps.googleusercontent.com",
|
||||
"client_id": "661638997772-65g8ce369ugck3ii4ulk6jhb3ijg51kl.apps.googleusercontent.com",
|
||||
"client_type": 2,
|
||||
"ios_info": {
|
||||
"bundle_id": "com.xmflsct.app.mastodon"
|
||||
"bundle_id": "com.xmflsct.app.tooot",
|
||||
"app_store_id": "1549772269"
|
||||
}
|
||||
}
|
||||
]
|
||||
|
|
|
@ -1,7 +1,9 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools">
|
||||
|
||||
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
|
||||
|
||||
<application android:usesCleartextTraffic="true" tools:targetApi="28" tools:ignore="GoogleAppIndexingWarning" />
|
||||
</manifest>
|
||||
<application
|
||||
android:usesCleartextTraffic="true"
|
||||
tools:targetApi="28"
|
||||
tools:ignore="GoogleAppIndexingWarning"/>
|
||||
</manifest>
|
|
@ -1,69 +0,0 @@
|
|||
/**
|
||||
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||
*
|
||||
* <p>This source code is licensed under the MIT license found in the LICENSE file in the root
|
||||
* directory of this source tree.
|
||||
*/
|
||||
package com.tooot;
|
||||
|
||||
import android.content.Context;
|
||||
import com.facebook.flipper.android.AndroidFlipperClient;
|
||||
import com.facebook.flipper.android.utils.FlipperUtils;
|
||||
import com.facebook.flipper.core.FlipperClient;
|
||||
import com.facebook.flipper.plugins.crashreporter.CrashReporterPlugin;
|
||||
import com.facebook.flipper.plugins.databases.DatabasesFlipperPlugin;
|
||||
import com.facebook.flipper.plugins.fresco.FrescoFlipperPlugin;
|
||||
import com.facebook.flipper.plugins.inspector.DescriptorMapping;
|
||||
import com.facebook.flipper.plugins.inspector.InspectorFlipperPlugin;
|
||||
import com.facebook.flipper.plugins.network.FlipperOkhttpInterceptor;
|
||||
import com.facebook.flipper.plugins.network.NetworkFlipperPlugin;
|
||||
import com.facebook.flipper.plugins.react.ReactFlipperPlugin;
|
||||
import com.facebook.flipper.plugins.sharedpreferences.SharedPreferencesFlipperPlugin;
|
||||
import com.facebook.react.ReactInstanceManager;
|
||||
import com.facebook.react.bridge.ReactContext;
|
||||
import com.facebook.react.modules.network.NetworkingModule;
|
||||
import okhttp3.OkHttpClient;
|
||||
|
||||
public class ReactNativeFlipper {
|
||||
public static void initializeFlipper(Context context, ReactInstanceManager reactInstanceManager) {
|
||||
if (FlipperUtils.shouldEnableFlipper(context)) {
|
||||
final FlipperClient client = AndroidFlipperClient.getInstance(context);
|
||||
client.addPlugin(new InspectorFlipperPlugin(context, DescriptorMapping.withDefaults()));
|
||||
client.addPlugin(new ReactFlipperPlugin());
|
||||
client.addPlugin(new DatabasesFlipperPlugin(context));
|
||||
client.addPlugin(new SharedPreferencesFlipperPlugin(context));
|
||||
client.addPlugin(CrashReporterPlugin.getInstance());
|
||||
NetworkFlipperPlugin networkFlipperPlugin = new NetworkFlipperPlugin();
|
||||
NetworkingModule.setCustomClientBuilder(
|
||||
new NetworkingModule.CustomClientBuilder() {
|
||||
@Override
|
||||
public void apply(OkHttpClient.Builder builder) {
|
||||
builder.addNetworkInterceptor(new FlipperOkhttpInterceptor(networkFlipperPlugin));
|
||||
}
|
||||
});
|
||||
client.addPlugin(networkFlipperPlugin);
|
||||
client.start();
|
||||
// Fresco Plugin needs to ensure that ImagePipelineFactory is initialized
|
||||
// Hence we run if after all native modules have been initialized
|
||||
ReactContext reactContext = reactInstanceManager.getCurrentReactContext();
|
||||
if (reactContext == null) {
|
||||
reactInstanceManager.addReactInstanceEventListener(
|
||||
new ReactInstanceManager.ReactInstanceEventListener() {
|
||||
@Override
|
||||
public void onReactContextInitialized(ReactContext reactContext) {
|
||||
reactInstanceManager.removeReactInstanceEventListener(this);
|
||||
reactContext.runOnNativeModulesQueueThread(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
client.addPlugin(new FrescoFlipperPlugin());
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
} else {
|
||||
client.addPlugin(new FrescoFlipperPlugin());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" package="com.xmflsct.app.tooot">
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<uses-permission android:name="android.permission.INTERNET"/>
|
||||
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
|
||||
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
|
||||
|
@ -8,30 +8,12 @@
|
|||
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
|
||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
|
||||
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
|
||||
<application
|
||||
android:name=".MainApplication"
|
||||
android:label="@string/app_name"
|
||||
android:icon="@mipmap/ic_launcher"
|
||||
android:roundIcon="@mipmap/ic_launcher_round"
|
||||
android:allowBackup="true"
|
||||
android:theme="@style/AppTheme"
|
||||
android:requestLegacyExternalStorage="true"
|
||||
>
|
||||
<meta-data android:name="expo.modules.updates.EXPO_UPDATE_URL" android:value="https://exp.host/@xmflsct/tooot"/>
|
||||
<meta-data android:name="expo.modules.updates.EXPO_SDK_VERSION" android:value="${expoSDK}"/>
|
||||
<meta-data android:name="expo.modules.updates.EXPO_RELEASE_CHANNEL" android:value="${releaseChannel}"/>
|
||||
<meta-data android:name="expo.modules.updates.ENABLED" android:value="true"/>
|
||||
<meta-data android:name="expo.modules.updates.EXPO_UPDATES_CHECK_ON_LAUNCH" android:value="ALWAYS"/>
|
||||
<meta-data android:name="expo.modules.updates.EXPO_UPDATES_LAUNCH_WAIT_MS" android:value="0"/>
|
||||
<activity
|
||||
android:name=".MainActivity"
|
||||
android:label="@string/app_name"
|
||||
android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode"
|
||||
android:launchMode="singleTask"
|
||||
android:windowSoftInputMode="adjustResize"
|
||||
android:theme="@style/Theme.App.SplashScreen"
|
||||
android:screenOrientation="portrait"
|
||||
>
|
||||
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
|
||||
<application android:name=".MainApplication" android:label="@string/app_name" android:icon="@mipmap/ic_launcher" android:roundIcon="@mipmap/ic_launcher_round" android:allowBackup="true" android:theme="@style/AppTheme" android:requestLegacyExternalStorage="true">
|
||||
<!-- [Custom] Expo Notifications -->
|
||||
<meta-data android:name="expo.modules.notifications.default_notification_icon" android:resource="@drawable/ic_stat_notifications" />
|
||||
<!-- [Custom] End Expo Notifications -->
|
||||
<activity android:name=".MainActivity" android:label="@string/app_name" android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|screenSize|smallestScreenSize|uiMode" android:launchMode="singleTask" android:windowSoftInputMode="adjustResize" android:exported="true" android:theme="@style/Theme.App.SplashScreen" android:documentLaunchMode="never">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN"/>
|
||||
<category android:name="android.intent.category.LAUNCHER"/>
|
||||
|
@ -43,7 +25,31 @@
|
|||
<data android:scheme="tooot"/>
|
||||
<data android:scheme="com.xmflsct.app.tooot"/>
|
||||
</intent-filter>
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.SEND_MULTIPLE" />
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
<data android:mimeType="image/*" />
|
||||
</intent-filter>
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.SEND_MULTIPLE" />
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
<data android:mimeType="text/plain" />
|
||||
</intent-filter>
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.SEND" />
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
<data android:mimeType="text/plain" />
|
||||
</intent-filter>
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.SEND" />
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
<data android:mimeType="image/*" />
|
||||
</intent-filter>
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.SEND" />
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
<data android:mimeType="video/*"/>
|
||||
</intent-filter>
|
||||
</activity>
|
||||
<activity android:name="com.facebook.react.devsupport.DevSettingsActivity"/>
|
||||
</application>
|
||||
</manifest>
|
||||
|
|
|
@ -1,54 +0,0 @@
|
|||
package com.xmflsct.app.tooot;
|
||||
import android.content.res.Configuration;
|
||||
import android.content.Intent;
|
||||
|
||||
import android.os.Bundle;
|
||||
|
||||
import com.facebook.react.ReactActivity;
|
||||
import com.facebook.react.ReactActivityDelegate;
|
||||
import com.facebook.react.ReactRootView;
|
||||
import com.swmansion.gesturehandler.react.RNGestureHandlerEnabledRootView;
|
||||
|
||||
import expo.modules.splashscreen.singletons.SplashScreen;
|
||||
import expo.modules.splashscreen.SplashScreenImageResizeMode;
|
||||
|
||||
|
||||
public class MainActivity extends ReactActivity {
|
||||
|
||||
// Added automatically by Expo Config
|
||||
@Override
|
||||
public void onConfigurationChanged(Configuration newConfig) {
|
||||
super.onConfigurationChanged(newConfig);
|
||||
Intent intent = new Intent("onConfigurationChanged");
|
||||
intent.putExtra("newConfig", newConfig);
|
||||
sendBroadcast(intent);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
// SplashScreen.show(...) has to be called after super.onCreate(...)
|
||||
// Below line is handled by '@expo/configure-splash-screen' command and it's discouraged to modify it manually
|
||||
SplashScreen.show(this, SplashScreenImageResizeMode.CONTAIN, ReactRootView.class, false);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Returns the name of the main component registered from JavaScript.
|
||||
* This is used to schedule rendering of the component.
|
||||
*/
|
||||
@Override
|
||||
protected String getMainComponentName() {
|
||||
return "main";
|
||||
}
|
||||
|
||||
@Override
|
||||
protected ReactActivityDelegate createReactActivityDelegate() {
|
||||
return new ReactActivityDelegate(this, getMainComponentName()) {
|
||||
@Override
|
||||
protected ReactRootView createRootView() {
|
||||
return new RNGestureHandlerEnabledRootView(MainActivity.this);
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
|
@ -0,0 +1,61 @@
|
|||
package com.xmflsct.app.tooot;
|
||||
|
||||
import android.os.Build
|
||||
import android.os.Bundle
|
||||
|
||||
import com.facebook.react.ReactActivity
|
||||
import com.facebook.react.ReactActivityDelegate
|
||||
import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.fabricEnabled
|
||||
import com.facebook.react.defaults.DefaultReactActivityDelegate
|
||||
|
||||
import expo.modules.ReactActivityDelegateWrapper
|
||||
|
||||
class MainActivity : ReactActivity() {
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
// Set the theme to AppTheme BEFORE onCreate to support
|
||||
// coloring the background, status bar, and navigation bar.
|
||||
// This is required for expo-splash-screen.
|
||||
setTheme(R.style.AppTheme);
|
||||
super.onCreate(null)
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the name of the main component registered from JavaScript. This is used to schedule
|
||||
* rendering of the component.
|
||||
*/
|
||||
override fun getMainComponentName(): String = "main"
|
||||
|
||||
/**
|
||||
* Returns the instance of the [ReactActivityDelegate]. We use [DefaultReactActivityDelegate]
|
||||
* which allows you to enable New Architecture with a single boolean flags [fabricEnabled]
|
||||
*/
|
||||
override fun createReactActivityDelegate(): ReactActivityDelegate {
|
||||
return ReactActivityDelegateWrapper(
|
||||
this,
|
||||
BuildConfig.IS_NEW_ARCHITECTURE_ENABLED,
|
||||
object : DefaultReactActivityDelegate(
|
||||
this,
|
||||
mainComponentName,
|
||||
fabricEnabled
|
||||
){})
|
||||
}
|
||||
|
||||
/**
|
||||
* Align the back button behavior with Android S
|
||||
* where moving root activities to background instead of finishing activities.
|
||||
* @see <a href="https://developer.android.com/reference/android/app/Activity#onBackPressed()">onBackPressed</a>
|
||||
*/
|
||||
override fun invokeDefaultOnBackPressed() {
|
||||
if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.R) {
|
||||
if (!moveTaskToBack(false)) {
|
||||
// For non-root activities, use the default implementation to finish them.
|
||||
super.invokeDefaultOnBackPressed()
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// Use the default back button implementation on Android S
|
||||
// because it's doing more than [Activity.moveTaskToBack] in fact.
|
||||
super.invokeDefaultOnBackPressed()
|
||||
}
|
||||
}
|
|
@ -1,128 +0,0 @@
|
|||
package com.xmflsct.app.tooot;
|
||||
|
||||
import android.app.Application;
|
||||
import android.content.Context;
|
||||
import android.net.Uri;
|
||||
|
||||
import com.facebook.react.PackageList;
|
||||
import com.facebook.react.ReactApplication;
|
||||
import com.facebook.react.ReactInstanceManager;
|
||||
import com.facebook.react.ReactNativeHost;
|
||||
import com.facebook.react.ReactPackage;
|
||||
import com.facebook.react.shell.MainReactPackage;
|
||||
import com.facebook.soloader.SoLoader;
|
||||
import com.xmflsct.app.tooot.generated.BasePackageList;
|
||||
|
||||
import org.unimodules.adapters.react.ReactAdapterPackage;
|
||||
import org.unimodules.adapters.react.ModuleRegistryAdapter;
|
||||
import org.unimodules.adapters.react.ReactModuleRegistryProvider;
|
||||
import org.unimodules.core.interfaces.Package;
|
||||
import org.unimodules.core.interfaces.SingletonModule;
|
||||
import expo.modules.constants.ConstantsPackage;
|
||||
import expo.modules.permissions.PermissionsPackage;
|
||||
import expo.modules.filesystem.FileSystemPackage;
|
||||
import expo.modules.updates.UpdatesController;
|
||||
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
import com.facebook.react.bridge.JSIModulePackage; // <- react-native-reanimated-v2
|
||||
import com.swmansion.reanimated.ReanimatedJSIModulePackage; // <- react-native-reanimated-v2
|
||||
|
||||
public class MainApplication extends Application implements ReactApplication {
|
||||
private final ReactModuleRegistryProvider mModuleRegistryProvider = new ReactModuleRegistryProvider(
|
||||
new BasePackageList().getPackageList()
|
||||
);
|
||||
|
||||
private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) {
|
||||
@Override
|
||||
public boolean getUseDeveloperSupport() {
|
||||
return BuildConfig.DEBUG;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<ReactPackage> getPackages() {
|
||||
List<ReactPackage> packages = new PackageList(this).getPackages();
|
||||
packages.add(new ModuleRegistryAdapter(mModuleRegistryProvider));
|
||||
return packages;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getJSMainModuleName() {
|
||||
return "index";
|
||||
}
|
||||
|
||||
@Override // <- react-native-reanimated-v2
|
||||
protected JSIModulePackage getJSIModulePackage() {
|
||||
return new ReanimatedJSIModulePackage();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected @Nullable String getJSBundleFile() {
|
||||
if (BuildConfig.DEBUG) {
|
||||
return super.getJSBundleFile();
|
||||
} else {
|
||||
return UpdatesController.getInstance().getLaunchAssetFile();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected @Nullable String getBundleAssetName() {
|
||||
if (BuildConfig.DEBUG) {
|
||||
return super.getBundleAssetName();
|
||||
} else {
|
||||
return UpdatesController.getInstance().getBundleAssetName();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@Override
|
||||
public ReactNativeHost getReactNativeHost() {
|
||||
return mReactNativeHost;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreate() {
|
||||
super.onCreate();
|
||||
SoLoader.init(this, /* native exopackage */ false);
|
||||
|
||||
if (!BuildConfig.DEBUG) {
|
||||
UpdatesController.initialize(this);
|
||||
}
|
||||
|
||||
initializeFlipper(this, getReactNativeHost().getReactInstanceManager());
|
||||
}
|
||||
|
||||
/**
|
||||
* Loads Flipper in React Native templates. Call this in the onCreate method with something like
|
||||
* initializeFlipper(this, getReactNativeHost().getReactInstanceManager());
|
||||
*
|
||||
* @param context
|
||||
* @param reactInstanceManager
|
||||
*/
|
||||
private static void initializeFlipper(
|
||||
Context context, ReactInstanceManager reactInstanceManager) {
|
||||
if (BuildConfig.DEBUG) {
|
||||
try {
|
||||
/*
|
||||
We use reflection here to pick up the class that initializes Flipper,
|
||||
since Flipper library is not available in release mode
|
||||
*/
|
||||
Class<?> aClass = Class.forName("com.xmflsct.app.tooot.ReactNativeFlipper");
|
||||
aClass
|
||||
.getMethod("initializeFlipper", Context.class, ReactInstanceManager.class)
|
||||
.invoke(null, context, reactInstanceManager);
|
||||
} catch (ClassNotFoundException e) {
|
||||
e.printStackTrace();
|
||||
} catch (NoSuchMethodException e) {
|
||||
e.printStackTrace();
|
||||
} catch (IllegalAccessException e) {
|
||||
e.printStackTrace();
|
||||
} catch (InvocationTargetException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,58 @@
|
|||
package com.xmflsct.app.tooot;
|
||||
|
||||
import android.app.Application
|
||||
import android.content.res.Configuration
|
||||
import androidx.annotation.NonNull
|
||||
|
||||
import com.facebook.react.PackageList
|
||||
import com.facebook.react.ReactApplication
|
||||
import com.facebook.react.ReactHost
|
||||
import com.facebook.react.ReactNativeHost
|
||||
import com.facebook.react.ReactPackage
|
||||
import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.load
|
||||
import com.facebook.react.defaults.DefaultReactHost.getDefaultReactHost
|
||||
import com.facebook.react.defaults.DefaultReactNativeHost
|
||||
import com.facebook.react.flipper.ReactNativeFlipper
|
||||
import com.facebook.soloader.SoLoader
|
||||
|
||||
import expo.modules.ApplicationLifecycleDispatcher
|
||||
import expo.modules.ReactNativeHostWrapper
|
||||
|
||||
class MainApplication : Application(), ReactApplication {
|
||||
|
||||
override val reactNativeHost: ReactNativeHost = ReactNativeHostWrapper(
|
||||
this,
|
||||
object : DefaultReactNativeHost(this) {
|
||||
override fun getPackages(): List<ReactPackage> {
|
||||
// Packages that cannot be autolinked yet can be added manually here, for example:
|
||||
// packages.add(new MyReactNativePackage());
|
||||
return PackageList(this).packages
|
||||
}
|
||||
|
||||
override fun getJSMainModuleName(): String = "index"
|
||||
|
||||
override fun getUseDeveloperSupport(): Boolean = BuildConfig.DEBUG
|
||||
|
||||
override val isNewArchEnabled: Boolean = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED
|
||||
override val isHermesEnabled: Boolean = BuildConfig.IS_HERMES_ENABLED
|
||||
}
|
||||
)
|
||||
|
||||
override val reactHost: ReactHost
|
||||
get() = getDefaultReactHost(this.applicationContext, reactNativeHost)
|
||||
|
||||
override fun onCreate() {
|
||||
super.onCreate()
|
||||
SoLoader.init(this, false)
|
||||
if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {
|
||||
// If you opted-in for the New Architecture, we load the native entry point for this app.
|
||||
load()
|
||||
}
|
||||
ApplicationLifecycleDispatcher.onApplicationCreate(this)
|
||||
}
|
||||
|
||||
override fun onConfigurationChanged(newConfig: Configuration) {
|
||||
super.onConfigurationChanged(newConfig)
|
||||
ApplicationLifecycleDispatcher.onConfigurationChanged(this, newConfig)
|
||||
}
|
||||
}
|
|
@ -1,37 +0,0 @@
|
|||
package com.xmflsct.app.tooot.generated;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import org.unimodules.core.interfaces.Package;
|
||||
|
||||
public class BasePackageList {
|
||||
public List<Package> getPackageList() {
|
||||
return Arrays.<Package>asList(
|
||||
new expo.modules.application.ApplicationPackage(),
|
||||
new expo.modules.av.AVPackage(),
|
||||
new expo.modules.constants.ConstantsPackage(),
|
||||
new expo.modules.crypto.CryptoPackage(),
|
||||
new expo.modules.device.DevicePackage(),
|
||||
new expo.modules.errorrecovery.ErrorRecoveryPackage(),
|
||||
new expo.modules.filesystem.FileSystemPackage(),
|
||||
new expo.modules.firebase.analytics.FirebaseAnalyticsPackage(),
|
||||
new expo.modules.firebase.core.FirebaseCorePackage(),
|
||||
new expo.modules.font.FontLoaderPackage(),
|
||||
new expo.modules.haptics.HapticsPackage(),
|
||||
new expo.modules.imageloader.ImageLoaderPackage(),
|
||||
new expo.modules.imagepicker.ImagePickerPackage(),
|
||||
new expo.modules.keepawake.KeepAwakePackage(),
|
||||
new expo.modules.lineargradient.LinearGradientPackage(),
|
||||
new expo.modules.localization.LocalizationPackage(),
|
||||
new expo.modules.location.LocationPackage(),
|
||||
new expo.modules.permissions.PermissionsPackage(),
|
||||
new expo.modules.securestore.SecureStorePackage(),
|
||||
new expo.modules.splashscreen.SplashScreenPackage(),
|
||||
new expo.modules.sqlite.SQLitePackage(),
|
||||
new expo.modules.storereview.StoreReviewPackage(),
|
||||
new expo.modules.updates.UpdatesPackage(),
|
||||
new expo.modules.videothumbnails.VideoThumbnailsPackage(),
|
||||
new expo.modules.webbrowser.WebBrowserPackage()
|
||||
);
|
||||
}
|
||||
}
|
After Width: | Height: | Size: 577 B |
After Width: | Height: | Size: 379 B |
Before Width: | Height: | Size: 68 KiB After Width: | Height: | Size: 68 KiB |
After Width: | Height: | Size: 892 B |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 1.8 KiB |
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 3.0 KiB |
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 4.9 KiB |
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 5.2 KiB |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 2.8 KiB |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 3.0 KiB |
Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 3.3 KiB |
Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 5.8 KiB |
Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 5.9 KiB |
Before Width: | Height: | Size: 4.1 KiB After Width: | Height: | Size: 7.0 KiB |
Before Width: | Height: | Size: 4.1 KiB After Width: | Height: | Size: 25 KiB |
Before Width: | Height: | Size: 4.1 KiB After Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 5.0 KiB After Width: | Height: | Size: 7.5 KiB |
Before Width: | Height: | Size: 5.0 KiB After Width: | Height: | Size: 29 KiB |
Before Width: | Height: | Size: 5.0 KiB After Width: | Height: | Size: 13 KiB |
|
@ -1,5 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<!-- Below line is handled by '@expo/configure-splash-screen' command and it's discouraged to modify it manually -->
|
||||
<color name="splashscreen_background">#191919</color>
|
||||
<color name="splashscreen_background">#121212</color>
|
||||
</resources>
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
?>
|
||||
<resources>
|
||||
<!-- Below line is handled by '@expo/configure-splash-screen' command and it's discouraged to modify it manually -->
|
||||
<color name="iconBackground">#FFFFFF</color>
|
||||
<color name="splashscreen_background">#FAFAFA</color>
|
||||
<color name="iconBackground">#FFFFFF</color>
|
||||
<color name="colorPrimary">#023c69</color>
|
||||
</resources>
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<resources>
|
||||
<string name="app_name">tooot</string>
|
||||
<string name="expo_splash_screen_resize_mode">contain</string>
|
||||
<string name="expo_splash_screen_status_bar_translucent">false</string>
|
||||
</resources>
|
|
@ -4,12 +4,12 @@
|
|||
standalone="yes"
|
||||
?>
|
||||
<resources>
|
||||
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
|
||||
<style name="AppTheme" parent="Theme.AppCompat.DayNight.NoActionBar">
|
||||
<item name="android:textColor">#000000</item>
|
||||
<item name="colorPrimary">@color/colorPrimary</item>
|
||||
<item name="android:windowTranslucentStatus">true</item>
|
||||
</style>
|
||||
<style name="Theme.App.SplashScreen" parent="Theme.AppCompat.Light.NoActionBar">
|
||||
<style name="Theme.App.SplashScreen" parent="Theme.AppCompat.DayNight.NoActionBar">
|
||||
<!-- Below line is handled by '@expo/configure-splash-screen' command and it's discouraged to modify it manually -->
|
||||
<item name="android:windowBackground">@drawable/splashscreen</item>
|
||||
<item name="android:windowFullscreen">true</item>
|
||||
|
|
|
@ -1,39 +1,23 @@
|
|||
// Top-level build file where you can add configuration options common to all sub-projects/modules.
|
||||
|
||||
buildscript {
|
||||
ext {
|
||||
buildToolsVersion = "29.0.2"
|
||||
buildToolsVersion = "34.0.0"
|
||||
minSdkVersion = 21
|
||||
compileSdkVersion = 29
|
||||
targetSdkVersion = 29
|
||||
compileSdkVersion = 34
|
||||
targetSdkVersion = 34
|
||||
ndkVersion = "25.1.8937393"
|
||||
kotlinVersion = '1.8.0'
|
||||
}
|
||||
repositories {
|
||||
google()
|
||||
mavenCentral()
|
||||
jcenter()
|
||||
}
|
||||
dependencies {
|
||||
classpath 'com.google.gms:google-services:4.3.3'
|
||||
classpath("com.android.tools.build:gradle:3.5.3")
|
||||
|
||||
// NOTE: Do not place your application dependencies here; they belong
|
||||
// in the individual module build.gradle files
|
||||
classpath("com.android.tools.build:gradle")
|
||||
classpath("com.facebook.react:react-native-gradle-plugin")
|
||||
classpath 'com.google.gms:google-services:4.3.14'
|
||||
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin")
|
||||
}
|
||||
}
|
||||
|
||||
allprojects {
|
||||
repositories {
|
||||
mavenLocal()
|
||||
maven {
|
||||
// All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
|
||||
url("$rootDir/../node_modules/react-native/android")
|
||||
}
|
||||
maven {
|
||||
// Android JSC is installed from npm
|
||||
url("$rootDir/../node_modules/jsc-android/dist")
|
||||
}
|
||||
|
||||
google()
|
||||
jcenter()
|
||||
maven { url 'https://www.jitpack.io' }
|
||||
}
|
||||
}
|
||||
apply plugin: "com.facebook.react.rootproject"
|
||||
|
|
|
@ -25,10 +25,34 @@ android.useAndroidX=true
|
|||
# Automatically convert third-party libraries to use AndroidX
|
||||
android.enableJetifier=true
|
||||
|
||||
# Version of flipper SDK to use with React Native
|
||||
FLIPPER_VERSION=0.54.0
|
||||
# Use this property to specify which architecture you want to build.
|
||||
# You can also override it from the CLI using
|
||||
# ./gradlew <task> -PreactNativeArchitectures=x86_64
|
||||
reactNativeArchitectures=armeabi-v7a,arm64-v8a,x86,x86_64
|
||||
# Use this property to enable support to the new architecture.
|
||||
# This will allow you to use TurboModules and the Fabric render in
|
||||
# your application. You should enable this flag either if you want
|
||||
# to write custom TurboModules/Fabric components OR use libraries that
|
||||
# are providing them.
|
||||
newArchEnabled=false
|
||||
|
||||
org.gradle.jvmargs=-Xmx4096m -XX:MaxPermSize=4096m -XX:+HeapDumpOnOutOfMemoryError
|
||||
org.gradle.daemon=true
|
||||
org.gradle.parallel=true
|
||||
org.gradle.configureondemand=true
|
||||
# Use this property to enable or disable the Hermes JS engine.
|
||||
# If set to false, you will be using JSC instead.
|
||||
hermesEnabled=true
|
||||
|
||||
org.gradle.jvmargs=-Xmx2048m -XX:MaxMetaspaceSize=512m
|
||||
# org.gradle.daemon=true
|
||||
# org.gradle.parallel=true
|
||||
# org.gradle.configureondemand=true
|
||||
|
||||
# The hosted JavaScript engine
|
||||
# Supported values: expo.jsEngine = "hermes" | "jsc"
|
||||
expo.jsEngine=hermes
|
||||
|
||||
# Enable GIF support in React Native images (~200 B increase)
|
||||
expo.gif.enabled=true
|
||||
# Enable webp support in React Native images (~85 KB increase)
|
||||
expo.webp.enabled=true
|
||||
# Enable animated webp support (~3.4 MB increase)
|
||||
# Disabled by default because iOS doesn't support animated webp
|
||||
expo.webp.animated=false
|
|
@ -1,5 +1,7 @@
|
|||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-6.3-all.zip
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.3-all.zip
|
||||
networkTimeout=10000
|
||||
validateDistributionUrl=true
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#!/usr/bin/env sh
|
||||
#!/bin/sh
|
||||
|
||||
#
|
||||
# Copyright 2015 the original author or authors.
|
||||
# Copyright © 2015-2021 the original authors.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
|
@ -17,78 +17,110 @@
|
|||
#
|
||||
|
||||
##############################################################################
|
||||
##
|
||||
## Gradle start up script for UN*X
|
||||
##
|
||||
#
|
||||
# Gradle start up script for POSIX generated by Gradle.
|
||||
#
|
||||
# Important for running:
|
||||
#
|
||||
# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is
|
||||
# noncompliant, but you have some other compliant shell such as ksh or
|
||||
# bash, then to run this script, type that shell name before the whole
|
||||
# command line, like:
|
||||
#
|
||||
# ksh Gradle
|
||||
#
|
||||
# Busybox and similar reduced shells will NOT work, because this script
|
||||
# requires all of these POSIX shell features:
|
||||
# * functions;
|
||||
# * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
|
||||
# «${var#prefix}», «${var%suffix}», and «$( cmd )»;
|
||||
# * compound commands having a testable exit status, especially «case»;
|
||||
# * various built-in commands including «command», «set», and «ulimit».
|
||||
#
|
||||
# Important for patching:
|
||||
#
|
||||
# (2) This script targets any POSIX shell, so it avoids extensions provided
|
||||
# by Bash, Ksh, etc; in particular arrays are avoided.
|
||||
#
|
||||
# The "traditional" practice of packing multiple parameters into a
|
||||
# space-separated string is a well documented source of bugs and security
|
||||
# problems, so this is (mostly) avoided, by progressively accumulating
|
||||
# options in "$@", and eventually passing that to Java.
|
||||
#
|
||||
# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS,
|
||||
# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly;
|
||||
# see the in-line comments for details.
|
||||
#
|
||||
# There are tweaks for specific operating systems such as AIX, CygWin,
|
||||
# Darwin, MinGW, and NonStop.
|
||||
#
|
||||
# (3) This script is generated from the Groovy template
|
||||
# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
|
||||
# within the Gradle project.
|
||||
#
|
||||
# You can find Gradle at https://github.com/gradle/gradle/.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
# Attempt to set APP_HOME
|
||||
|
||||
# Resolve links: $0 may be a link
|
||||
PRG="$0"
|
||||
# Need this for relative symlinks.
|
||||
while [ -h "$PRG" ] ; do
|
||||
ls=`ls -ld "$PRG"`
|
||||
link=`expr "$ls" : '.*-> \(.*\)$'`
|
||||
if expr "$link" : '/.*' > /dev/null; then
|
||||
PRG="$link"
|
||||
else
|
||||
PRG=`dirname "$PRG"`"/$link"
|
||||
fi
|
||||
app_path=$0
|
||||
|
||||
# Need this for daisy-chained symlinks.
|
||||
while
|
||||
APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path
|
||||
[ -h "$app_path" ]
|
||||
do
|
||||
ls=$( ls -ld "$app_path" )
|
||||
link=${ls#*' -> '}
|
||||
case $link in #(
|
||||
/*) app_path=$link ;; #(
|
||||
*) app_path=$APP_HOME$link ;;
|
||||
esac
|
||||
done
|
||||
SAVED="`pwd`"
|
||||
cd "`dirname \"$PRG\"`/" >/dev/null
|
||||
APP_HOME="`pwd -P`"
|
||||
cd "$SAVED" >/dev/null
|
||||
|
||||
APP_NAME="Gradle"
|
||||
APP_BASE_NAME=`basename "$0"`
|
||||
|
||||
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
|
||||
APP_BASE_NAME=${0##*/}
|
||||
# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
|
||||
APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit
|
||||
|
||||
# Use the maximum available, or set MAX_FD != -1 to use that value.
|
||||
MAX_FD="maximum"
|
||||
MAX_FD=maximum
|
||||
|
||||
warn () {
|
||||
echo "$*"
|
||||
}
|
||||
} >&2
|
||||
|
||||
die () {
|
||||
echo
|
||||
echo "$*"
|
||||
echo
|
||||
exit 1
|
||||
}
|
||||
} >&2
|
||||
|
||||
# OS specific support (must be 'true' or 'false').
|
||||
cygwin=false
|
||||
msys=false
|
||||
darwin=false
|
||||
nonstop=false
|
||||
case "`uname`" in
|
||||
CYGWIN* )
|
||||
cygwin=true
|
||||
;;
|
||||
Darwin* )
|
||||
darwin=true
|
||||
;;
|
||||
MINGW* )
|
||||
msys=true
|
||||
;;
|
||||
NONSTOP* )
|
||||
nonstop=true
|
||||
;;
|
||||
case "$( uname )" in #(
|
||||
CYGWIN* ) cygwin=true ;; #(
|
||||
Darwin* ) darwin=true ;; #(
|
||||
MSYS* | MINGW* ) msys=true ;; #(
|
||||
NONSTOP* ) nonstop=true ;;
|
||||
esac
|
||||
|
||||
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
|
||||
|
||||
|
||||
# Determine the Java command to use to start the JVM.
|
||||
if [ -n "$JAVA_HOME" ] ; then
|
||||
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
|
||||
# IBM's JDK on AIX uses strange locations for the executables
|
||||
JAVACMD="$JAVA_HOME/jre/sh/java"
|
||||
JAVACMD=$JAVA_HOME/jre/sh/java
|
||||
else
|
||||
JAVACMD="$JAVA_HOME/bin/java"
|
||||
JAVACMD=$JAVA_HOME/bin/java
|
||||
fi
|
||||
if [ ! -x "$JAVACMD" ] ; then
|
||||
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
|
||||
|
@ -97,87 +129,119 @@ Please set the JAVA_HOME variable in your environment to match the
|
|||
location of your Java installation."
|
||||
fi
|
||||
else
|
||||
JAVACMD="java"
|
||||
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
||||
JAVACMD=java
|
||||
if ! command -v java >/dev/null 2>&1
|
||||
then
|
||||
die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
||||
|
||||
Please set the JAVA_HOME variable in your environment to match the
|
||||
location of your Java installation."
|
||||
fi
|
||||
fi
|
||||
|
||||
# Increase the maximum file descriptors if we can.
|
||||
if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
|
||||
MAX_FD_LIMIT=`ulimit -H -n`
|
||||
if [ $? -eq 0 ] ; then
|
||||
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
|
||||
MAX_FD="$MAX_FD_LIMIT"
|
||||
fi
|
||||
ulimit -n $MAX_FD
|
||||
if [ $? -ne 0 ] ; then
|
||||
warn "Could not set maximum file descriptor limit: $MAX_FD"
|
||||
fi
|
||||
else
|
||||
warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
|
||||
fi
|
||||
fi
|
||||
|
||||
# For Darwin, add options to specify how the application appears in the dock
|
||||
if $darwin; then
|
||||
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
|
||||
fi
|
||||
|
||||
# For Cygwin or MSYS, switch paths to Windows format before running java
|
||||
if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
|
||||
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
|
||||
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
|
||||
JAVACMD=`cygpath --unix "$JAVACMD"`
|
||||
|
||||
# We build the pattern for arguments to be converted via cygpath
|
||||
ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
|
||||
SEP=""
|
||||
for dir in $ROOTDIRSRAW ; do
|
||||
ROOTDIRS="$ROOTDIRS$SEP$dir"
|
||||
SEP="|"
|
||||
done
|
||||
OURCYGPATTERN="(^($ROOTDIRS))"
|
||||
# Add a user-defined pattern to the cygpath arguments
|
||||
if [ "$GRADLE_CYGPATTERN" != "" ] ; then
|
||||
OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
|
||||
fi
|
||||
# Now convert the arguments - kludge to limit ourselves to /bin/sh
|
||||
i=0
|
||||
for arg in "$@" ; do
|
||||
CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
|
||||
CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
|
||||
|
||||
if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
|
||||
eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
|
||||
else
|
||||
eval `echo args$i`="\"$arg\""
|
||||
fi
|
||||
i=`expr $i + 1`
|
||||
done
|
||||
case $i in
|
||||
0) set -- ;;
|
||||
1) set -- "$args0" ;;
|
||||
2) set -- "$args0" "$args1" ;;
|
||||
3) set -- "$args0" "$args1" "$args2" ;;
|
||||
4) set -- "$args0" "$args1" "$args2" "$args3" ;;
|
||||
5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
|
||||
6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
|
||||
7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
|
||||
8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
|
||||
9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
|
||||
if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
|
||||
case $MAX_FD in #(
|
||||
max*)
|
||||
# In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
|
||||
# shellcheck disable=SC3045
|
||||
MAX_FD=$( ulimit -H -n ) ||
|
||||
warn "Could not query maximum file descriptor limit"
|
||||
esac
|
||||
case $MAX_FD in #(
|
||||
'' | soft) :;; #(
|
||||
*)
|
||||
# In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
|
||||
# shellcheck disable=SC3045
|
||||
ulimit -n "$MAX_FD" ||
|
||||
warn "Could not set maximum file descriptor limit to $MAX_FD"
|
||||
esac
|
||||
fi
|
||||
|
||||
# Escape application args
|
||||
save () {
|
||||
for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
|
||||
echo " "
|
||||
}
|
||||
APP_ARGS=`save "$@"`
|
||||
# Collect all arguments for the java command, stacking in reverse order:
|
||||
# * args from the command line
|
||||
# * the main class name
|
||||
# * -classpath
|
||||
# * -D...appname settings
|
||||
# * --module-path (only if needed)
|
||||
# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.
|
||||
|
||||
# Collect all arguments for the java command, following the shell quoting and substitution rules
|
||||
eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
|
||||
# For Cygwin or MSYS, switch paths to Windows format before running java
|
||||
if "$cygwin" || "$msys" ; then
|
||||
APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
|
||||
CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" )
|
||||
|
||||
exec "$JAVACMD" "$@"
|
||||
JAVACMD=$( cygpath --unix "$JAVACMD" )
|
||||
|
||||
# Now convert the arguments - kludge to limit ourselves to /bin/sh
|
||||
for arg do
|
||||
if
|
||||
case $arg in #(
|
||||
-*) false ;; # don't mess with options #(
|
||||
/?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath
|
||||
[ -e "$t" ] ;; #(
|
||||
*) false ;;
|
||||
esac
|
||||
then
|
||||
arg=$( cygpath --path --ignore --mixed "$arg" )
|
||||
fi
|
||||
# Roll the args list around exactly as many times as the number of
|
||||
# args, so each arg winds up back in the position where it started, but
|
||||
# possibly modified.
|
||||
#
|
||||
# NB: a `for` loop captures its iteration list before it begins, so
|
||||
# changing the positional parameters here affects neither the number of
|
||||
# iterations, nor the values presented in `arg`.
|
||||
shift # remove old arg
|
||||
set -- "$@" "$arg" # push replacement arg
|
||||
done
|
||||
fi
|
||||
|
||||
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
|
||||
|
||||
# Collect all arguments for the java command;
|
||||
# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of
|
||||
# shell script including quotes and variable substitutions, so put them in
|
||||
# double quotes to make sure that they get re-expanded; and
|
||||
# * put everything else in single quotes, so that it's not re-expanded.
|
||||
|
||||
set -- \
|
||||
"-Dorg.gradle.appname=$APP_BASE_NAME" \
|
||||
-classpath "$CLASSPATH" \
|
||||
org.gradle.wrapper.GradleWrapperMain \
|
||||
"$@"
|
||||
|
||||
# Stop when "xargs" is not available.
|
||||
if ! command -v xargs >/dev/null 2>&1
|
||||
then
|
||||
die "xargs is not available"
|
||||
fi
|
||||
|
||||
# Use "xargs" to parse quoted args.
|
||||
#
|
||||
# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
|
||||
#
|
||||
# In Bash we could simply go:
|
||||
#
|
||||
# readarray ARGS < <( xargs -n1 <<<"$var" ) &&
|
||||
# set -- "${ARGS[@]}" "$@"
|
||||
#
|
||||
# but POSIX shell has neither arrays nor command substitution, so instead we
|
||||
# post-process each arg (as a line of input to sed) to backslash-escape any
|
||||
# character that might be a shell metacharacter, then use eval to reverse
|
||||
# that process (while maintaining the separation between arguments), and wrap
|
||||
# the whole thing up as a single "set" statement.
|
||||
#
|
||||
# This will of course break if any of these variables contains a newline or
|
||||
# an unmatched quote.
|
||||
#
|
||||
|
||||
eval "set -- $(
|
||||
printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" |
|
||||
xargs -n1 |
|
||||
sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' |
|
||||
tr '\n' ' '
|
||||
)" '"$@"'
|
||||
|
||||
exec "$JAVACMD" "$@"
|
|
@ -14,7 +14,7 @@
|
|||
@rem limitations under the License.
|
||||
@rem
|
||||
|
||||
@if "%DEBUG%" == "" @echo off
|
||||
@if "%DEBUG%"=="" @echo off
|
||||
@rem ##########################################################################
|
||||
@rem
|
||||
@rem Gradle startup script for Windows
|
||||
|
@ -25,7 +25,7 @@
|
|||
if "%OS%"=="Windows_NT" setlocal
|
||||
|
||||
set DIRNAME=%~dp0
|
||||
if "%DIRNAME%" == "" set DIRNAME=.
|
||||
if "%DIRNAME%"=="" set DIRNAME=.
|
||||
set APP_BASE_NAME=%~n0
|
||||
set APP_HOME=%DIRNAME%
|
||||
|
||||
|
@ -40,7 +40,7 @@ if defined JAVA_HOME goto findJavaFromJavaHome
|
|||
|
||||
set JAVA_EXE=java.exe
|
||||
%JAVA_EXE% -version >NUL 2>&1
|
||||
if "%ERRORLEVEL%" == "0" goto init
|
||||
if %ERRORLEVEL% equ 0 goto execute
|
||||
|
||||
echo.
|
||||
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
||||
|
@ -54,7 +54,7 @@ goto fail
|
|||
set JAVA_HOME=%JAVA_HOME:"=%
|
||||
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
|
||||
|
||||
if exist "%JAVA_EXE%" goto init
|
||||
if exist "%JAVA_EXE%" goto execute
|
||||
|
||||
echo.
|
||||
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
|
||||
|
@ -64,40 +64,28 @@ echo location of your Java installation.
|
|||
|
||||
goto fail
|
||||
|
||||
:init
|
||||
@rem Get command-line arguments, handling Windows variants
|
||||
|
||||
if not "%OS%" == "Windows_NT" goto win9xME_args
|
||||
|
||||
:win9xME_args
|
||||
@rem Slurp the command line arguments.
|
||||
set CMD_LINE_ARGS=
|
||||
set _SKIP=2
|
||||
|
||||
:win9xME_args_slurp
|
||||
if "x%~1" == "x" goto execute
|
||||
|
||||
set CMD_LINE_ARGS=%*
|
||||
|
||||
:execute
|
||||
@rem Setup the command line
|
||||
|
||||
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
|
||||
|
||||
|
||||
@rem Execute Gradle
|
||||
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
|
||||
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
|
||||
|
||||
:end
|
||||
@rem End local scope for the variables with windows NT shell
|
||||
if "%ERRORLEVEL%"=="0" goto mainEnd
|
||||
if %ERRORLEVEL% equ 0 goto mainEnd
|
||||
|
||||
:fail
|
||||
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
|
||||
rem the _cmd.exe /c_ return code!
|
||||
if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
|
||||
exit /b 1
|
||||
set EXIT_CODE=%ERRORLEVEL%
|
||||
if %EXIT_CODE% equ 0 set EXIT_CODE=1
|
||||
if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
|
||||
exit /b %EXIT_CODE%
|
||||
|
||||
:mainEnd
|
||||
if "%OS%"=="Windows_NT" endlocal
|
||||
|
||||
:omega
|
||||
:omega
|
|
@ -0,0 +1,3 @@
|
|||
defaults.url=https://sentry.io/
|
||||
defaults.org=tooot
|
||||
defaults.project=app
|
|
@ -1,9 +1,10 @@
|
|||
rootProject.name = 'tooot'
|
||||
|
||||
apply from: '../node_modules/react-native-unimodules/gradle.groovy'
|
||||
includeUnimodulesProjects()
|
||||
apply from: new File(["node", "--print", "require.resolve('expo/package.json')"].execute(null, rootDir).text.trim(), "../scripts/autolinking.gradle");
|
||||
useExpoModules()
|
||||
|
||||
apply from: file("../node_modules/@react-native-community/cli-platform-android/native_modules.gradle");
|
||||
apply from: new File(["node", "--print", "require.resolve('@react-native-community/cli-platform-android/package.json')"].execute(null, rootDir).text.trim(), "../native_modules.gradle");
|
||||
applyNativeModulesSettingsGradle(settings)
|
||||
|
||||
include ':app'
|
||||
includeBuild(new File(["node", "--print", "require.resolve('@react-native/gradle-plugin/package.json')"].execute(null, rootDir).text.trim()).getParentFile())
|
||||
|
|
|
@ -1,43 +1,31 @@
|
|||
import { ExpoConfig } from '@expo/config'
|
||||
import { versions } from './package.json'
|
||||
import { version } from './package.json'
|
||||
import 'dotenv/config'
|
||||
|
||||
const toootVersion = `${versions.major}.${versions.minor}.${versions.patch}`
|
||||
|
||||
export default (): ExpoConfig => ({
|
||||
name: 'tooot',
|
||||
description: 'tooot for Mastodon',
|
||||
slug: 'tooot',
|
||||
version: toootVersion,
|
||||
sdkVersion: versions.expo,
|
||||
scheme: 'tooot',
|
||||
version,
|
||||
// @ts-ignore
|
||||
extra: { environment: process.env.ENVIRONMENT },
|
||||
privacy: 'hidden',
|
||||
assetBundlePatterns: ['assets/*'],
|
||||
extra: {
|
||||
toootEnvironment: process.env.TOOOT_ENVIRONMENT,
|
||||
sentryDSN: process.env.SENTRY_DSN
|
||||
},
|
||||
hooks: {
|
||||
postPublish: [
|
||||
{
|
||||
file: 'sentry-expo/upload-sourcemaps',
|
||||
config: {
|
||||
organization: process.env.SENTRY_ORGANIZATION,
|
||||
project: process.env.SENTRY_PROJECT,
|
||||
authToken: process.env.SENTRY_AUTH_TOKEN,
|
||||
setCommits: process.env.GITHUB_SHA || undefined,
|
||||
deployEnv: process.env.TOOOT_ENVIRONMENT
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
locales: {
|
||||
en: './src/i18n/en/system.json',
|
||||
zh: './src/i18n/zh-Hans/system.json'
|
||||
ios: {
|
||||
bundleIdentifier: 'com.xmflsct.app.tooot'
|
||||
},
|
||||
android: {
|
||||
versionCode: 4,
|
||||
package: 'com.xmflsct.app.tooot',
|
||||
googleServicesFile: './configs/google-services.json',
|
||||
permissions: ['CAMERA', 'VIBRATE']
|
||||
}
|
||||
permissions: ['NOTIFICATIONS', 'CAMERA', 'VIBRATE'],
|
||||
blockedPermissions: ['USE_BIOMETRIC', 'USE_FINGERPRINT'],
|
||||
googleServicesFile: './android/app/google-services.json'
|
||||
},
|
||||
plugins: [
|
||||
[
|
||||
'expo-notifications',
|
||||
{
|
||||
sounds: ['./assets/sounds/boop.mp3']
|
||||
}
|
||||
]
|
||||
]
|
||||
})
|
||||
|
|
Before Width: | Height: | Size: 383 KiB After Width: | Height: | Size: 383 KiB |
|
@ -1,5 +1,6 @@
|
|||
module.exports = function (api) {
|
||||
api.cache(true)
|
||||
api.cache(false)
|
||||
|
||||
return {
|
||||
presets: ['babel-preset-expo'],
|
||||
plugins: [
|
||||
|
@ -9,16 +10,18 @@ module.exports = function (api) {
|
|||
{
|
||||
root: ['./'],
|
||||
alias: {
|
||||
'@assets': './assets',
|
||||
'@root': './src',
|
||||
'@api': './src/api',
|
||||
'@components': './src/components',
|
||||
'@i18n': './src/i18n',
|
||||
'@screens': './src/screens',
|
||||
'@utils': './src/utils'
|
||||
}
|
||||
}
|
||||
],
|
||||
'react-native-reanimated/plugin'
|
||||
]
|
||||
]
|
||||
].concat(
|
||||
process.env.NODE_ENV === 'production' || process.env.BABEL_ENV === 'production'
|
||||
? ['transform-remove-console']
|
||||
: [],
|
||||
['react-native-reanimated/plugin']
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,34 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CLIENT_ID</key>
|
||||
<string>661638997772-65g8ce369ugck3ii4ulk6jhb3ijg51kl.apps.googleusercontent.com</string>
|
||||
<key>REVERSED_CLIENT_ID</key>
|
||||
<string>com.googleusercontent.apps.661638997772-65g8ce369ugck3ii4ulk6jhb3ijg51kl</string>
|
||||
<key>API_KEY</key>
|
||||
<string>AIzaSyAOS1Yq_uNVctG89LB6Dl1PVhb_FAQRbRg</string>
|
||||
<key>GCM_SENDER_ID</key>
|
||||
<string>661638997772</string>
|
||||
<key>PLIST_VERSION</key>
|
||||
<string>1</string>
|
||||
<key>BUNDLE_ID</key>
|
||||
<string>com.xmflsct.app.tooot</string>
|
||||
<key>PROJECT_ID</key>
|
||||
<string>xmflsct-mastodon-app</string>
|
||||
<key>STORAGE_BUCKET</key>
|
||||
<string>xmflsct-mastodon-app.appspot.com</string>
|
||||
<key>IS_ADS_ENABLED</key>
|
||||
<false></false>
|
||||
<key>IS_ANALYTICS_ENABLED</key>
|
||||
<false></false>
|
||||
<key>IS_APPINVITE_ENABLED</key>
|
||||
<true></true>
|
||||
<key>IS_GCM_ENABLED</key>
|
||||
<true></true>
|
||||
<key>IS_SIGNIN_ENABLED</key>
|
||||
<true></true>
|
||||
<key>GOOGLE_APP_ID</key>
|
||||
<string>1:661638997772:ios:c8d2e09264a344b09f8b29</string>
|
||||
</dict>
|
||||
</plist>
|
|
@ -1,46 +0,0 @@
|
|||
{
|
||||
"project_info": {
|
||||
"project_number": "661638997772",
|
||||
"project_id": "xmflsct-mastodon-app",
|
||||
"storage_bucket": "xmflsct-mastodon-app.appspot.com"
|
||||
},
|
||||
"client": [
|
||||
{
|
||||
"client_info": {
|
||||
"mobilesdk_app_id": "1:661638997772:android:4fd02851f757f8fa9f8b29",
|
||||
"android_client_info": {
|
||||
"package_name": "com.xmflsct.app.tooot"
|
||||
}
|
||||
},
|
||||
"oauth_client": [
|
||||
{
|
||||
"client_id": "661638997772-6aiqk97aema0rt280i7nfar3ha2mlgno.apps.googleusercontent.com",
|
||||
"client_type": 3
|
||||
}
|
||||
],
|
||||
"api_key": [
|
||||
{
|
||||
"current_key": "AIzaSyDUw4s-mhQsHvs4hdIsldsi68ZIygM5MC4"
|
||||
}
|
||||
],
|
||||
"services": {
|
||||
"appinvite_service": {
|
||||
"other_platform_oauth_client": [
|
||||
{
|
||||
"client_id": "661638997772-6aiqk97aema0rt280i7nfar3ha2mlgno.apps.googleusercontent.com",
|
||||
"client_type": 3
|
||||
},
|
||||
{
|
||||
"client_id": "661638997772-sqa4raeghhrieqt9guljhcul9b51dvna.apps.googleusercontent.com",
|
||||
"client_type": 2,
|
||||
"ios_info": {
|
||||
"bundle_id": "com.xmflsct.app.mastodon"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"configuration_version": "1"
|
||||
}
|
|
@ -0,0 +1,5 @@
|
|||
files:
|
||||
- source: /src/i18n/en/**/*.json
|
||||
translation: /src/i18n/%osx_locale%/**/%original_file_name%
|
||||
ignore:
|
||||
- '*.ts'
|
After Width: | Height: | Size: 382 KiB |
After Width: | Height: | Size: 311 KiB |
After Width: | Height: | Size: 317 KiB |
After Width: | Height: | Size: 116 KiB |
After Width: | Height: | Size: 312 KiB |
After Width: | Height: | Size: 113 KiB |
After Width: | Height: | Size: 97 KiB |
After Width: | Height: | Size: 109 KiB |
After Width: | Height: | Size: 214 KiB |
After Width: | Height: | Size: 271 KiB |
After Width: | Height: | Size: 177 KiB |
After Width: | Height: | Size: 199 KiB |
After Width: | Height: | Size: 211 KiB |
After Width: | Height: | Size: 236 KiB |
After Width: | Height: | Size: 113 KiB |
After Width: | Height: | Size: 103 KiB |
After Width: | Height: | Size: 248 KiB |
After Width: | Height: | Size: 249 KiB |
After Width: | Height: | Size: 403 KiB |
After Width: | Height: | Size: 344 KiB |
After Width: | Height: | Size: 164 KiB |
After Width: | Height: | Size: 356 KiB |