Compare commits
1145 Commits
fdroid-v0.
...
docs-addiO
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
acf978c302 | ||
|
|
26c35d997a | ||
|
|
85d6552943 | ||
|
|
56876e4a28 | ||
|
|
738128a7c5 | ||
|
|
eab1d98d2d | ||
|
|
7aa4f5bb16 | ||
|
|
27fa57f608 | ||
|
|
f135b65d31 | ||
|
|
9b09ebe3f0 | ||
|
|
9e64752677 | ||
|
|
563d65cc1d | ||
|
|
68132147e7 | ||
|
|
6979617d12 | ||
|
|
c4812abab3 | ||
|
|
f09ef7ae10 | ||
|
|
062bbdfa88 | ||
|
|
1f87ef8cb7 | ||
|
|
df14f18881 | ||
|
|
c4d8ddbf26 | ||
|
|
9132be591d | ||
|
|
2fa555163c | ||
|
|
643da1491a | ||
|
|
3b568bf914 | ||
|
|
fd325d0be5 | ||
|
|
8e158677f2 | ||
|
|
d8490ea4b1 | ||
|
|
01e258557c | ||
|
|
f9dbf0efea | ||
|
|
51ef7c60fa | ||
|
|
600736e70f | ||
|
|
ef3ccbd91b | ||
|
|
55a68f9d29 | ||
|
|
5918698366 | ||
|
|
d0b58b75c8 | ||
|
|
a72eb78e53 | ||
|
|
8d07b16e09 | ||
|
|
caadba3996 | ||
|
|
427cc9d414 | ||
|
|
d8995ef375 | ||
|
|
c3831230e0 | ||
|
|
76d8038899 | ||
|
|
ad0169b7e5 | ||
|
|
76887b2205 | ||
|
|
7249b25180 | ||
|
|
ffd2a55ca0 | ||
|
|
eaf576967b | ||
|
|
e6a9ccefe7 | ||
|
|
d0b25b31c8 | ||
|
|
3211e6afe6 | ||
|
|
a7cc5e7165 | ||
|
|
bea32ac7e3 | ||
|
|
3be7f7b55e | ||
|
|
4a833e0799 | ||
|
|
10a9ad02f8 | ||
|
|
ba79588090 | ||
|
|
3593a8e545 | ||
|
|
643a6cf413 | ||
|
|
dbb14f0a24 | ||
|
|
cba6676bb5 | ||
|
|
d43cf1fb86 | ||
|
|
f02974045b | ||
|
|
20268c236a | ||
|
|
0b7aa97db1 | ||
|
|
9a39298acd | ||
|
|
36e1e758c5 | ||
|
|
f74f13c7a8 | ||
|
|
eb9e61579e | ||
|
|
300b3c89a3 | ||
|
|
302d2af3d2 | ||
|
|
3feee66d3a | ||
|
|
b953d6d513 | ||
|
|
d88b39ec46 | ||
|
|
145e025eea | ||
|
|
13c36d9c40 | ||
|
|
dd807368b2 | ||
|
|
0f0790df5f | ||
|
|
9d2e1cd502 | ||
|
|
a640a430bf | ||
|
|
26cb6ad722 | ||
|
|
b114dd54b9 | ||
|
|
b8e3d88575 | ||
|
|
b3d5731731 | ||
|
|
84b880d7cf | ||
|
|
3900ee609f | ||
|
|
0ee496401a | ||
|
|
511c324bad | ||
|
|
51f2868f98 | ||
|
|
2a70327153 | ||
|
|
f29341ccb2 | ||
|
|
89b35f44c3 | ||
|
|
beeafe4aa6 | ||
|
|
4b631aa423 | ||
|
|
83729aced4 | ||
|
|
bbcfa865d1 | ||
|
|
4bf629a44c | ||
|
|
4e417e9490 | ||
|
|
b6aefd1845 | ||
|
|
a68f1e91c5 | ||
|
|
a3e8d3c1a3 | ||
|
|
15473d80d8 | ||
|
|
fa349caf0c | ||
|
|
920e26255c | ||
|
|
2a3466da63 | ||
|
|
c59da52f71 | ||
|
|
aa551463b3 | ||
|
|
949909631a | ||
|
|
de2b399941 | ||
|
|
6685c68c35 | ||
|
|
02f1ac4f2f | ||
|
|
573cc787e5 | ||
|
|
997b87bd26 | ||
|
|
ef013473fc | ||
|
|
df96f42a61 | ||
|
|
a144d39a47 | ||
|
|
70c98b8877 | ||
|
|
2a5f774423 | ||
|
|
4796d8a54a | ||
|
|
694a8a46dd | ||
|
|
61809889e9 | ||
|
|
981716fbcb | ||
|
|
be25081a73 | ||
|
|
8e3e741b1a | ||
|
|
a056cfd154 | ||
|
|
98987326e2 | ||
|
|
b9de012c28 | ||
|
|
50adfa7399 | ||
|
|
2d005a7d07 | ||
|
|
4faf938fbd | ||
|
|
3bb92e10e4 | ||
|
|
9f51c2ddae | ||
|
|
2a453ee321 | ||
|
|
a48505205e | ||
|
|
6697cca571 | ||
|
|
bfc0f785bc | ||
|
|
f3cc4f6fa0 | ||
|
|
781de2b60b | ||
|
|
dfe892b54e | ||
|
|
fce9c6d01e | ||
|
|
183000526c | ||
|
|
0b50d43d53 | ||
|
|
f48d97112c | ||
|
|
815009da9b | ||
|
|
e9e0b31b8a | ||
|
|
b72f65d44c | ||
|
|
5649ee7c03 | ||
|
|
74f301e936 | ||
|
|
03df527fb7 | ||
|
|
6c9887613b | ||
|
|
ca7ee5e147 | ||
|
|
c8dc9c9f46 | ||
|
|
7eaedfe138 | ||
|
|
30b23e6c3b | ||
|
|
b578c8f0de | ||
|
|
ba95d08cdd | ||
|
|
63faa29cd4 | ||
|
|
27ad9840d0 | ||
|
|
c96f2495ed | ||
|
|
b1c680cccd | ||
|
|
f487e64569 | ||
|
|
ae4e189848 | ||
|
|
5ab8169cd9 | ||
|
|
f52b6256b5 | ||
|
|
c03f63d2b2 | ||
|
|
e2aea63276 | ||
|
|
f590a43159 | ||
|
|
bc72ec1982 | ||
|
|
7050ba5f22 | ||
|
|
2e2cc7f3e7 | ||
|
|
2278b1f40e | ||
|
|
fcc249b989 | ||
|
|
ff82245293 | ||
|
|
4bd08f02f8 | ||
|
|
69852e436a | ||
|
|
3fe47dd4c4 | ||
|
|
9650d3865a | ||
|
|
a4f64a73cb | ||
|
|
16baa84cf0 | ||
|
|
db7f669198 | ||
|
|
5ec52541bf | ||
|
|
c7326c2efc | ||
|
|
904c93cf4e | ||
|
|
d98394272e | ||
|
|
1eed87e117 | ||
|
|
22cd3763b7 | ||
|
|
a18db13899 | ||
|
|
89d6ddf2c6 | ||
|
|
aff27e662a | ||
|
|
cc569eb192 | ||
|
|
8e1d931c1f | ||
|
|
abe313fff2 | ||
|
|
20095620c8 | ||
|
|
ec90db7b7d | ||
|
|
5ff494320c | ||
|
|
bb781e257e | ||
|
|
8902b99ae7 | ||
|
|
d49f9cc054 | ||
|
|
d5c9eea40f | ||
|
|
c432125113 | ||
|
|
4a8b130738 | ||
|
|
ed76b41392 | ||
|
|
270158dadc | ||
|
|
5ea4f8b897 | ||
|
|
e12a9aa800 | ||
|
|
b4a853acc5 | ||
|
|
6c748f6c87 | ||
|
|
f36666bd0a | ||
|
|
fb8f7901b1 | ||
|
|
32ceac423b | ||
|
|
d25e81282d | ||
|
|
7bbd432294 | ||
|
|
2d30ac4c46 | ||
|
|
49fe5f41e0 | ||
|
|
72ba881e26 | ||
|
|
1c8860d08e | ||
|
|
731c19d6a9 | ||
|
|
3ac937a244 | ||
|
|
74ff170672 | ||
|
|
1897285380 | ||
|
|
7d8683640b | ||
|
|
81e3593b74 | ||
|
|
21f87b7cba | ||
|
|
5e4862cc3c | ||
|
|
879f28599c | ||
|
|
11413ee77b | ||
|
|
bb6c2f1656 | ||
|
|
1bc8c44b54 | ||
|
|
8f8cdbb13f | ||
|
|
f3a079e734 | ||
|
|
c0b3b4b38e | ||
|
|
848ec03827 | ||
|
|
642320b1d9 | ||
|
|
6f8f997f93 | ||
|
|
fd13c737aa | ||
|
|
7fc96285f1 | ||
|
|
76efe1290c | ||
|
|
3d44700010 | ||
|
|
2541febb53 | ||
|
|
62222b0228 | ||
|
|
9072766169 | ||
|
|
12f5c1db87 | ||
|
|
60d3cad540 | ||
|
|
8e9eb79f2b | ||
|
|
ca276ba1fe | ||
|
|
349ef3263c | ||
|
|
7c1dae7c77 | ||
|
|
4fe12c46aa | ||
|
|
b363e3663f | ||
|
|
043d3324ca | ||
|
|
a9540307bf | ||
|
|
35b3dbe650 | ||
|
|
e376bf00e0 | ||
|
|
fd87d196ac | ||
|
|
bad8a9c9b8 | ||
|
|
9c5adfe7cb | ||
|
|
6676668c86 | ||
|
|
ca24541ea5 | ||
|
|
0e32e60dbd | ||
|
|
79ac17a742 | ||
|
|
2490b5ca4f | ||
|
|
72aab3f53c | ||
|
|
a9def0ccc1 | ||
|
|
8ac9751891 | ||
|
|
e2dceef8a4 | ||
|
|
6083992bfd | ||
|
|
9507c6f882 | ||
|
|
e01a2b7d65 | ||
|
|
5ef1a0d3f7 | ||
|
|
9ba2010293 | ||
|
|
ebab9fd1a0 | ||
|
|
017692d80f | ||
|
|
de2bd40401 | ||
|
|
50a0af23aa | ||
|
|
ba6b34be2a | ||
|
|
f41c12cde8 | ||
|
|
7d9e2eccd6 | ||
|
|
8792167986 | ||
|
|
dcf6d3a9e1 | ||
|
|
d9691ac089 | ||
|
|
610c1ffc9f | ||
|
|
35bdacdc56 | ||
|
|
2147e13af4 | ||
|
|
0c722171be | ||
|
|
1f18c65ff6 | ||
|
|
985d530aef | ||
|
|
23dc378888 | ||
|
|
fd5501882b | ||
|
|
b922bacb78 | ||
|
|
33cd46583e | ||
|
|
5a2be86524 | ||
|
|
62e55cfd96 | ||
|
|
4439d97f31 | ||
|
|
71b7589de3 | ||
|
|
e145da5a8b | ||
|
|
3f721abc4d | ||
|
|
7ce9cc7468 | ||
|
|
038692ad06 | ||
|
|
2dc71143b7 | ||
|
|
1eec079a85 | ||
|
|
1eddf1f75a | ||
|
|
0940b8b3be | ||
|
|
e459da3908 | ||
|
|
809fe6ab2c | ||
|
|
7b5ed1deaa | ||
|
|
d3d5aa5a8b | ||
|
|
5466d80da9 | ||
|
|
52aa997807 | ||
|
|
73efdbbf4d | ||
|
|
be6ca79c2d | ||
|
|
f2550bb253 | ||
|
|
3bf715fd46 | ||
|
|
28c19b8916 | ||
|
|
b4b5f834f7 | ||
|
|
ee41052eda | ||
|
|
8898ac7060 | ||
|
|
976634f8c7 | ||
|
|
137a5cd772 | ||
|
|
631257de3c | ||
|
|
f556950c07 | ||
|
|
f8e2714315 | ||
|
|
4b5618e1f2 | ||
|
|
e34b70a8f9 | ||
|
|
025fc46022 | ||
|
|
bcf49763e6 | ||
|
|
99b84fe4e7 | ||
|
|
2aa953d5b6 | ||
|
|
2d1e6312af | ||
|
|
0b110ecead | ||
|
|
dad6da26fb | ||
|
|
1d01b913e1 | ||
|
|
f37f1c3703 | ||
|
|
d49a90c616 | ||
|
|
0bfb48bde4 | ||
|
|
751e19abae | ||
|
|
36f90014a2 | ||
|
|
74051ad6bb | ||
|
|
c66adcb677 | ||
|
|
c7bc560d53 | ||
|
|
c6ea0f1fd7 | ||
|
|
8516d8364c | ||
|
|
5b88b2b563 | ||
|
|
2a5ba8480c | ||
|
|
19607d488f | ||
|
|
fcbba19129 | ||
|
|
f402fb3887 | ||
|
|
7355d99299 | ||
|
|
b20de9ed83 | ||
|
|
2859e02dac | ||
|
|
80859d91b0 | ||
|
|
acaf1939e7 | ||
|
|
d7587d12ed | ||
|
|
61779a6ca7 | ||
|
|
02a7024cdc | ||
|
|
9d61eaa04d | ||
|
|
a73e7af704 | ||
|
|
14bfaf97f3 | ||
|
|
cae5b2ad4d | ||
|
|
8050422313 | ||
|
|
4323ae9422 | ||
|
|
d3cec93c03 | ||
|
|
5adac095a6 | ||
|
|
dce95ad4f1 | ||
|
|
67dc1b77d4 | ||
|
|
de9cad09c4 | ||
|
|
df21d20dd0 | ||
|
|
374979894a | ||
|
|
49c0e32fff | ||
|
|
0f732c0b61 | ||
|
|
11a42e7ee3 | ||
|
|
398f39e2b0 | ||
|
|
09e65e8d00 | ||
|
|
103901bbd3 | ||
|
|
2cdd919c37 | ||
|
|
c1a2f226ef | ||
|
|
8e8610beda | ||
|
|
1605f71a54 | ||
|
|
a11ba4d14f | ||
|
|
eb7f0c0bed | ||
|
|
ffc1db7369 | ||
|
|
cea88b91d2 | ||
|
|
d98fbd6dc5 | ||
|
|
28d412a12b | ||
|
|
9d601a6b4e | ||
|
|
b851a30c18 | ||
|
|
ec11bc7092 | ||
|
|
093ba4895d | ||
|
|
502507abf5 | ||
|
|
15b49816cc | ||
|
|
15a4e3cd98 | ||
|
|
067e44e10a | ||
|
|
67206b013b | ||
|
|
df86904e6a | ||
|
|
66f43a9c9a | ||
|
|
561b0ea71e | ||
|
|
2fbc26c9eb | ||
|
|
b11636bfdf | ||
|
|
8e08a0d71d | ||
|
|
b35cd47c8a | ||
|
|
f49fcd7984 | ||
|
|
e75165d01e | ||
|
|
70abbeebc2 | ||
|
|
215ed6d6c8 | ||
|
|
e453f5bf36 | ||
|
|
e87d596b4c | ||
|
|
e9633e48ab | ||
|
|
0bfd355233 | ||
|
|
cf96c4dc44 | ||
|
|
0803ef4da6 | ||
|
|
daada5e1c8 | ||
|
|
a7ea2859fa | ||
|
|
8336589a22 | ||
|
|
074a4d96a6 | ||
|
|
e1d08899a5 | ||
|
|
5576f8379c | ||
|
|
42cb7902c6 | ||
|
|
11c7d5f0de | ||
|
|
c36cee2ed1 | ||
|
|
65614adc1a | ||
|
|
b06b8a5794 | ||
|
|
25935f6219 | ||
|
|
51effed5a3 | ||
|
|
7cecf84841 | ||
|
|
d50391ea13 | ||
|
|
9c6bfaa460 | ||
|
|
ee201ff24b | ||
|
|
7e10c077d3 | ||
|
|
75800f41e4 | ||
|
|
7d84ed3e8b | ||
|
|
d3acd79de6 | ||
|
|
89afa9fbc7 | ||
|
|
7fc03a71e7 | ||
|
|
06b84e8067 | ||
|
|
2919590b05 | ||
|
|
4e6e3e7abf | ||
|
|
24759a3923 | ||
|
|
1fba250f74 | ||
|
|
8099cbd990 | ||
|
|
b1ed3a6302 | ||
|
|
3a955f2b04 | ||
|
|
9b2af45f16 | ||
|
|
8fb463028d | ||
|
|
5307c1fda6 | ||
|
|
f96db9cfd3 | ||
|
|
afc8fbf7b2 | ||
|
|
833b564acc | ||
|
|
3013709540 | ||
|
|
cba85799f0 | ||
|
|
818fba9435 | ||
|
|
8ec75834e8 | ||
|
|
e32b23409c | ||
|
|
9103d73874 | ||
|
|
504a8bdab6 | ||
|
|
1be2286279 | ||
|
|
059275a486 | ||
|
|
c32974cf95 | ||
|
|
5e583da6f0 | ||
|
|
bb613cd384 | ||
|
|
359bbd2628 | ||
|
|
fb869b7f44 | ||
|
|
4455a3c793 | ||
|
|
d781adeba5 | ||
|
|
e7d0977346 | ||
|
|
488ca1f6d9 | ||
|
|
00939ff2b8 | ||
|
|
69488c2db6 | ||
|
|
c70fa4391c | ||
|
|
26c4481658 | ||
|
|
f487565398 | ||
|
|
96b9743270 | ||
|
|
42d2136d32 | ||
|
|
21247a892f | ||
|
|
33e7ccb9ae | ||
|
|
a157273b42 | ||
|
|
d0f30a1198 | ||
|
|
d5987dd882 | ||
|
|
1bd44351d9 | ||
|
|
930bd4ce2e | ||
|
|
3e527e3c41 | ||
|
|
847e647437 | ||
|
|
cd3bd1cdbb | ||
|
|
82082e2cbf | ||
|
|
7545047647 | ||
|
|
1c1fe7f1df | ||
|
|
cc2be30f53 | ||
|
|
9fc5483eb8 | ||
|
|
3468bdea7b | ||
|
|
bc23f1dec9 | ||
|
|
9327cb114c | ||
|
|
2fee6e87f9 | ||
|
|
052367cccb | ||
|
|
4afa486c19 | ||
|
|
4b03d1bd0c | ||
|
|
93108c45d8 | ||
|
|
3b1ec81db8 | ||
|
|
ebeeb189fd | ||
|
|
98ebf98d17 | ||
|
|
d494bb8d38 | ||
|
|
b688706935 | ||
|
|
d0ef4f234d | ||
|
|
0fa664a4cb | ||
|
|
c2833d11b0 | ||
|
|
ec594acafc | ||
|
|
8ce9baf920 | ||
|
|
1b1c5c0e7b | ||
|
|
81124566f2 | ||
|
|
0d42cc7b68 | ||
|
|
8fb5f44b62 | ||
|
|
908b0d9dc4 | ||
|
|
c0086efdbc | ||
|
|
49101bfddb | ||
|
|
83b322770d | ||
|
|
72bcd8e450 | ||
|
|
1e05c9d701 | ||
|
|
fdf4a3d336 | ||
|
|
e61d212ad0 | ||
|
|
837d2bbf77 | ||
|
|
f7f5e924aa | ||
|
|
1eed650812 | ||
|
|
b62f82c81e | ||
|
|
7b6fe4a9d7 | ||
|
|
38d207d28e | ||
|
|
05cec775aa | ||
|
|
19073951c8 | ||
|
|
0b56575939 | ||
|
|
e9c6ad39f7 | ||
|
|
655bbd36da | ||
|
|
d1a5e94886 | ||
|
|
840fc3c061 | ||
|
|
a5cb78bf95 | ||
|
|
5659b93555 | ||
|
|
f772a48bc0 | ||
|
|
fc429d88c5 | ||
|
|
55015f4a62 | ||
|
|
2ff97c29ff | ||
|
|
1c94807c36 | ||
|
|
e009151667 | ||
|
|
4a03e34a20 | ||
|
|
6aa6b667e3 | ||
|
|
99a579f7f3 | ||
|
|
5c64a1a5e5 | ||
|
|
3c902bc1c1 | ||
|
|
0fb8ccc029 | ||
|
|
ba000c2304 | ||
|
|
d9f15dad45 | ||
|
|
07fac1a354 | ||
|
|
3ae65e1de9 | ||
|
|
62471dad3e | ||
|
|
19ea1ad1f4 | ||
|
|
2ece083d4d | ||
|
|
53d71de31f | ||
|
|
3cf627a290 | ||
|
|
792353bb9e | ||
|
|
b0c17fee6d | ||
|
|
4db25b1b8f | ||
|
|
d0c93338fa | ||
|
|
af89a2202c | ||
|
|
6208531902 | ||
|
|
47539e93f9 | ||
|
|
15d77b7551 | ||
|
|
841de87a33 | ||
|
|
25ba019a57 | ||
|
|
1c8a796bec | ||
|
|
277c7e452a | ||
|
|
9ab110c4c3 | ||
|
|
7420eb5a66 | ||
|
|
37775b9ee5 | ||
|
|
7d5205d57d | ||
|
|
16246d8d58 | ||
|
|
4442b3af28 | ||
|
|
b67a33fcaf | ||
|
|
989708cf58 | ||
|
|
425954257b | ||
|
|
7725b14935 | ||
|
|
58fe69638e | ||
|
|
290ae40296 | ||
|
|
ebc310d742 | ||
|
|
28d04f7725 | ||
|
|
3c90b0dfca | ||
|
|
8de3619cf1 | ||
|
|
8036aae292 | ||
|
|
87555194fe | ||
|
|
6c67f11cc0 | ||
|
|
b9573c057e | ||
|
|
490a7221e7 | ||
|
|
1b98f782f1 | ||
|
|
a46a64e386 | ||
|
|
492ea61bb7 | ||
|
|
54d2813329 | ||
|
|
7175e1d43a | ||
|
|
8237229823 | ||
|
|
a36958503d | ||
|
|
19efbad336 | ||
|
|
9447f1c767 | ||
|
|
76b2a73f9a | ||
|
|
4bbe1ae0d2 | ||
|
|
b15b707600 | ||
|
|
454363d772 | ||
|
|
196fa2c8a4 | ||
|
|
4c3ca8a565 | ||
|
|
15aea42b96 | ||
|
|
29c7f587f6 | ||
|
|
5f0bb21491 | ||
|
|
c882ce0f98 | ||
|
|
02dde7f6a2 | ||
|
|
d268e1f309 | ||
|
|
245e78ac42 | ||
|
|
fa55bd88a2 | ||
|
|
11538236c0 | ||
|
|
09996f77ea | ||
|
|
3f512bc959 | ||
|
|
8b0990bd6c | ||
|
|
70ff886252 | ||
|
|
4314d42ab4 | ||
|
|
8abe6957d7 | ||
|
|
e0dd39dd95 | ||
|
|
386554ac70 | ||
|
|
e99bc335d9 | ||
|
|
48f6071f5c | ||
|
|
d6ec6809c2 | ||
|
|
8fe9b9571a | ||
|
|
d667cc4f98 | ||
|
|
34a672fb7c | ||
|
|
8a5cc0c221 | ||
|
|
5e6860f2cd | ||
|
|
10e675a81c | ||
|
|
98b890aa99 | ||
|
|
0d7f87381a | ||
|
|
d50171bf7f | ||
|
|
5806eb6e60 | ||
|
|
64712e5600 | ||
|
|
8a615c34ef | ||
|
|
8b94304754 | ||
|
|
8830deb619 | ||
|
|
9da79dc99a | ||
|
|
5e32e975df | ||
|
|
8633dabd92 | ||
|
|
c256f0a8c4 | ||
|
|
b150bbe15e | ||
|
|
7f69fa5d65 | ||
|
|
3968dd93e9 | ||
|
|
557bdd142b | ||
|
|
b89da99c96 | ||
|
|
e79050a3b6 | ||
|
|
5e4707b695 | ||
|
|
fd0c2866a2 | ||
|
|
69eee661d1 | ||
|
|
b09e911f18 | ||
|
|
c78578fce5 | ||
|
|
a0f103be9b | ||
|
|
04ede4326a | ||
|
|
7cb9bc3eb7 | ||
|
|
488402156f | ||
|
|
e80e602786 | ||
|
|
78a7ae7c5f | ||
|
|
5d553afea7 | ||
|
|
9a25356abf | ||
|
|
5625733429 | ||
|
|
61bb3ce16b | ||
|
|
d2dd08391a | ||
|
|
9d06db2b6b | ||
|
|
80049b11ba | ||
|
|
28160b04b9 | ||
|
|
02441239d5 | ||
|
|
2688ca446e | ||
|
|
80e86f6f65 | ||
|
|
760b50b417 | ||
|
|
d118e0e63e | ||
|
|
49f9caac90 | ||
|
|
ea875730dd | ||
|
|
e3b03db06f | ||
|
|
b030c4e182 | ||
|
|
1a39846d25 | ||
|
|
e44020f93a | ||
|
|
435621496c | ||
|
|
8379162716 | ||
|
|
e8d9f4f6cf | ||
|
|
bfe39be07e | ||
|
|
6724527c27 | ||
|
|
6b65a974b5 | ||
|
|
1b90fa93ee | ||
|
|
f907303c8b | ||
|
|
4317f819d8 | ||
|
|
587da41f53 | ||
|
|
3214031a0c | ||
|
|
0b1eee6c8e | ||
|
|
7c679cd38b | ||
|
|
3669b6be09 | ||
|
|
88b0ecf472 | ||
|
|
ee2f03adca | ||
|
|
3e6c253a24 | ||
|
|
708b17cef3 | ||
|
|
776b7488d3 | ||
|
|
371377d4d1 | ||
|
|
aad42b3c00 | ||
|
|
9ce0b43bfe | ||
|
|
f5ea565aa8 | ||
|
|
d41e177b3c | ||
|
|
bc742f20e1 | ||
|
|
898658f0ef | ||
|
|
1746db0d44 | ||
|
|
7743a4af98 | ||
|
|
d2764fe7e1 | ||
|
|
35601956d2 | ||
|
|
af676e6107 | ||
|
|
bc699b8f37 | ||
|
|
11c75dc5c8 | ||
|
|
82df23a3b2 | ||
|
|
00028e3a10 | ||
|
|
c5dab37dfa | ||
|
|
d20615002c | ||
|
|
b44f844513 | ||
|
|
09d390bd38 | ||
|
|
e439e4a5f7 | ||
|
|
3147800486 | ||
|
|
0a7984a0d2 | ||
|
|
189a3ebc40 | ||
|
|
c37deecb96 | ||
|
|
d2a4634f02 | ||
|
|
c0eeb7dd2f | ||
|
|
4f271887fc | ||
|
|
f46f063beb | ||
|
|
2275a47438 | ||
|
|
80ab0a308f | ||
|
|
ddb867d21f | ||
|
|
c63cf362b6 | ||
|
|
270a628478 | ||
|
|
3f358b9511 | ||
|
|
b5f850b3be | ||
|
|
77d16e275d | ||
|
|
098a4526ad | ||
|
|
957c333cf3 | ||
|
|
c480dd71f1 | ||
|
|
101a9d4b5d | ||
|
|
e3ef1e4628 | ||
|
|
fd133d4023 | ||
|
|
cdfdc83083 | ||
|
|
512cf3b395 | ||
|
|
8618babc11 | ||
|
|
87f2957e19 | ||
|
|
f4d73e683c | ||
|
|
cac846f0e2 | ||
|
|
ca28a3c595 | ||
|
|
5eba06a269 | ||
|
|
91017969b3 | ||
|
|
58c10ad204 | ||
|
|
321d3d6031 | ||
|
|
41e5cf03e4 | ||
|
|
22b91a164b | ||
|
|
4e6b86118f | ||
|
|
e222d091d8 | ||
|
|
d25e37e2ad | ||
|
|
7b902a607a | ||
|
|
68bc6fac38 | ||
|
|
82fdae9253 | ||
|
|
d78ffced78 | ||
|
|
664c40064d | ||
|
|
7035d3ca90 | ||
|
|
8920462b54 | ||
|
|
56f9f2a028 | ||
|
|
94a77b7df1 | ||
|
|
7fc42bed64 | ||
|
|
8eb34503ac | ||
|
|
2fe6df5d21 | ||
|
|
d59d3c3b07 | ||
|
|
503c2506aa | ||
|
|
e44405b46f | ||
|
|
cdaeec0e8e | ||
|
|
29671aa154 | ||
|
|
370299d433 | ||
|
|
38d42c67fb | ||
|
|
802ad184d2 | ||
|
|
55cff6f174 | ||
|
|
e5448685ca | ||
|
|
bde8a17cb4 | ||
|
|
fc3200af73 | ||
|
|
d21ea0a5a6 | ||
|
|
a1fda786f5 | ||
|
|
bc0980eb8d | ||
|
|
2cfc5d9c59 | ||
|
|
682710a8a8 | ||
|
|
ed50e5a36c | ||
|
|
f31a6f2401 | ||
|
|
239f08b516 | ||
|
|
8544f5e109 | ||
|
|
1eaaafb8df | ||
|
|
149196e7dd | ||
|
|
38a31b7492 | ||
|
|
b14ad92b91 | ||
|
|
872455cce2 | ||
|
|
65a5248338 | ||
|
|
fcf06cff57 | ||
|
|
13752654cd | ||
|
|
d5e8777e0d | ||
|
|
7de2a47c51 | ||
|
|
20bc84ca96 | ||
|
|
844f969f1c | ||
|
|
fd7c25029e | ||
|
|
764add95c8 | ||
|
|
8c3fc0a879 | ||
|
|
37c467eb86 | ||
|
|
931d7c8513 | ||
|
|
132962b92f | ||
|
|
a5c4d9cc18 | ||
|
|
39c31779a4 | ||
|
|
d09613a946 | ||
|
|
88e50982b2 | ||
|
|
ce5a8f0457 | ||
|
|
8c81a377c0 | ||
|
|
a0025ab09b | ||
|
|
324c156ea1 | ||
|
|
4b87c9f3ac | ||
|
|
dfda0c2c32 | ||
|
|
c1a53bdfce | ||
|
|
8ff8a0f0d2 | ||
|
|
0c8dc3af95 | ||
|
|
b3100f098b | ||
|
|
0e157a4e33 | ||
|
|
22e2d5edd9 | ||
|
|
04a5372f6e | ||
|
|
f47837f550 | ||
|
|
1af8d7481d | ||
|
|
af91adeb72 | ||
|
|
8fd90651b1 | ||
|
|
c3da41eee2 | ||
|
|
ac94dccb90 | ||
|
|
89881975f2 | ||
|
|
e715d582ac | ||
|
|
808c611a92 | ||
|
|
fe5146ead8 | ||
|
|
d398838742 | ||
|
|
717dc0996f | ||
|
|
00db3c0335 | ||
|
|
6ccca2114e | ||
|
|
0e3708ffdc | ||
|
|
36e7dae2ee | ||
|
|
9d76d93254 | ||
|
|
aab4bff6ff | ||
|
|
12a96b68ba | ||
|
|
a851caf78f | ||
|
|
4bbac0ca66 | ||
|
|
9298e22c5c | ||
|
|
8de380d4cf | ||
|
|
d874882866 | ||
|
|
bb2bbb5655 | ||
|
|
d36934ec0d | ||
|
|
f922df304e | ||
|
|
f6d949db38 | ||
|
|
e937027667 | ||
|
|
84aeb79412 | ||
|
|
6140f35e69 | ||
|
|
0eba6b9c98 | ||
|
|
fe86075868 | ||
|
|
78ca393760 | ||
|
|
e9d63dfea9 | ||
|
|
1c322a9c62 | ||
|
|
dc0450b155 | ||
|
|
8e90541d87 | ||
|
|
8df04b2363 | ||
|
|
43c0d8a6ad | ||
|
|
19976136ab | ||
|
|
5fd18807cc | ||
|
|
1fe6987acf | ||
|
|
dd52ee7763 | ||
|
|
387e4ae826 | ||
|
|
098ff4e664 | ||
|
|
00a04f18e4 | ||
|
|
b8304f0ec5 | ||
|
|
979fa5e6da | ||
|
|
91f356ceda | ||
|
|
a019aaf5fc | ||
|
|
a9df48ea5d | ||
|
|
be6ce6d639 | ||
|
|
9d421e79a7 | ||
|
|
d1d8144fd1 | ||
|
|
7302f1d4ab | ||
|
|
39788341db | ||
|
|
6c86fe0d53 | ||
|
|
30ed06cfda | ||
|
|
21788c28cf | ||
|
|
2969b5c9a5 | ||
|
|
aa74948f4a | ||
|
|
1bdbfe0580 | ||
|
|
cacf4212c7 | ||
|
|
8f540f23dc | ||
|
|
17d76e50da | ||
|
|
db26923d68 | ||
|
|
4670be9bba | ||
|
|
f8c2f4b9dd | ||
|
|
396065e80c | ||
|
|
5a755d851a | ||
|
|
286a968f65 | ||
|
|
efff97bc71 | ||
|
|
2a73de848c | ||
|
|
c7c8fd65b6 | ||
|
|
8d7eef99ad | ||
|
|
1605b44c6e | ||
|
|
578a92d4bc | ||
|
|
bf3ed6f478 | ||
|
|
92a9698df5 | ||
|
|
342ac3258a | ||
|
|
e4427d7605 | ||
|
|
6f729c01e1 | ||
|
|
0d7c319903 | ||
|
|
6d552f5190 | ||
|
|
06450a0ce0 | ||
|
|
72d6789739 | ||
|
|
3d2d0cc345 | ||
|
|
884246d2ab | ||
|
|
cf25cc40e4 | ||
|
|
7138510e48 | ||
|
|
15e7e0ae9d | ||
|
|
9dcced260f | ||
|
|
2d5dc734aa | ||
|
|
1d93d44180 | ||
|
|
e13b88881e | ||
|
|
0aeb9f0c82 | ||
|
|
183bbdd145 | ||
|
|
8d701d4fd5 | ||
|
|
c6f6041d24 | ||
|
|
f49ece10e6 | ||
|
|
d0f206741f | ||
|
|
87ff5c5c0b | ||
|
|
b931dac18b | ||
|
|
2b52616ba5 | ||
|
|
e66ee5bcb1 | ||
|
|
f18bcc71d3 | ||
|
|
43a7cb1223 | ||
|
|
ceb25651f2 | ||
|
|
8a8934eacd | ||
|
|
20fea517ce | ||
|
|
0d32bd55dd | ||
|
|
20bbdb131d | ||
|
|
1980cb035e | ||
|
|
bd00c27dc6 | ||
|
|
e8fa86e2ad | ||
|
|
baa72202b2 | ||
|
|
46658a26f3 | ||
|
|
6653b36764 | ||
|
|
c17d0d0087 | ||
|
|
b823a8d6a1 | ||
|
|
e06b20a566 | ||
|
|
8218bfba04 | ||
|
|
8df5831944 | ||
|
|
6e774d6758 | ||
|
|
981c74d3f1 | ||
|
|
18ee3b19f7 | ||
|
|
aa27191ddc | ||
|
|
0883fe1d05 | ||
|
|
17e59de59c | ||
|
|
bdb30d64f0 | ||
|
|
57881f34c3 | ||
|
|
6ef3c01030 | ||
|
|
d4ddc0f919 | ||
|
|
4736ec7e0a | ||
|
|
0840c66a34 | ||
|
|
eb2f6aec68 | ||
|
|
45074f85d9 | ||
|
|
c46c27d21d | ||
|
|
3ff8d04d7b | ||
|
|
437eb246b0 | ||
|
|
5e383f3844 | ||
|
|
9bce8dc878 | ||
|
|
a447d615e0 | ||
|
|
239e6a3158 | ||
|
|
9f06de3889 | ||
|
|
5a72d62555 | ||
|
|
7aa8f6f00f | ||
|
|
5b168021f4 | ||
|
|
a407b1baad | ||
|
|
3589cc5bbf | ||
|
|
0cef0656f3 | ||
|
|
3b3ba721a2 | ||
|
|
d899be6eac | ||
|
|
17c713d3de | ||
|
|
0e9153f4ab | ||
|
|
5484a95bf4 | ||
|
|
2a1c1a30e9 | ||
|
|
f902b7e75c | ||
|
|
ac9f4e3181 | ||
|
|
b68b1a97b5 | ||
|
|
b8de2bf736 | ||
|
|
d35975b26e | ||
|
|
c2ca87d3af | ||
|
|
a41c359ae4 | ||
|
|
e00cdee92b | ||
|
|
a4ade14794 | ||
|
|
b1ce7b6edb | ||
|
|
a5efee1ae3 | ||
|
|
33b56a2257 | ||
|
|
9abdfd2555 | ||
|
|
81ead3e4ce | ||
|
|
95d218b3a1 | ||
|
|
74db8767a2 | ||
|
|
1200dbb6a9 | ||
|
|
8a90eba39a | ||
|
|
562ead3202 | ||
|
|
2c92411596 | ||
|
|
2fd5c703c9 | ||
|
|
15d58e3446 | ||
|
|
677a473d7d | ||
|
|
fb0128369a | ||
|
|
bc4aa85eb1 | ||
|
|
b1d2de712b | ||
|
|
526b5da40f | ||
|
|
1c6efd4985 | ||
|
|
defd88050d | ||
|
|
9e12f35650 | ||
|
|
a7f31119fe | ||
|
|
40959cae09 | ||
|
|
f32874fb05 | ||
|
|
69f9bf35ac | ||
|
|
8204ac3070 | ||
|
|
115c2c7fb3 | ||
|
|
60b7ed52b8 | ||
|
|
e6f72ea1c3 | ||
|
|
967d8c0f3b | ||
|
|
b729b8f0ea | ||
|
|
e3323890df | ||
|
|
fe4b0ded71 | ||
|
|
566364191d | ||
|
|
c1dccf438b | ||
|
|
71e419ac20 | ||
|
|
de8fb95477 | ||
|
|
84c00d0d31 | ||
|
|
d9ed2b4c10 | ||
|
|
db308fa199 | ||
|
|
244599ba67 | ||
|
|
ee8ce50649 | ||
|
|
5f5632aac5 | ||
|
|
5f736aaa10 | ||
|
|
f003b4f8ac | ||
|
|
b933a89336 | ||
|
|
016a476895 | ||
|
|
94c4e1ff0d | ||
|
|
d7ee9615b7 | ||
|
|
bf89a0ca9e | ||
|
|
9f1b4fc23c | ||
|
|
f3feb4cdda | ||
|
|
0b7b4b72f3 | ||
|
|
0380a30705 | ||
|
|
ff72dae408 | ||
|
|
be7cbc2ba0 | ||
|
|
1b0d481b45 | ||
|
|
4ee6ef408e | ||
|
|
9eb887e511 | ||
|
|
5dd5f7e9c5 | ||
|
|
cd7183a9ad | ||
|
|
17b213e380 | ||
|
|
79712182af | ||
|
|
97362ddbf2 | ||
|
|
7621041ce0 | ||
|
|
d58c2a3d49 | ||
|
|
2d4e532186 | ||
|
|
3484f81546 | ||
|
|
54da181256 | ||
|
|
021b6ec9b4 | ||
|
|
b4e01d5ab5 | ||
|
|
78334d2e22 | ||
|
|
9496baaffc | ||
|
|
1feb43d3d4 | ||
|
|
5d6cc892f3 | ||
|
|
27070bbe4c | ||
|
|
556a0d1814 | ||
|
|
5c1d7a0315 | ||
|
|
5b1130ab24 | ||
|
|
96937041f1 | ||
|
|
6f0deba3ed | ||
|
|
ca31a422fa | ||
|
|
8c68af7772 | ||
|
|
42ac508fe7 | ||
|
|
2e52efb15f | ||
|
|
825a9df9fa | ||
|
|
f30e05389b | ||
|
|
e952aa80a5 | ||
|
|
f3d9595953 | ||
|
|
a57232c34b | ||
|
|
5c16ce3459 | ||
|
|
44c64c06a7 | ||
|
|
3bbfa71824 | ||
|
|
970da9f29c | ||
|
|
97bdc9362a | ||
|
|
4881f08790 | ||
|
|
d322f5e1bc | ||
|
|
b87b68e9d4 | ||
|
|
782688c1f7 | ||
|
|
38a35696a3 | ||
|
|
cea9fa84a1 | ||
|
|
bf4807da5b | ||
|
|
dc3f074588 | ||
|
|
282ecf763b | ||
|
|
218c652ed1 | ||
|
|
5b17711b55 | ||
|
|
b3d8e2e865 | ||
|
|
85bf3eebcb | ||
|
|
ceb3046a02 | ||
|
|
d3ebb3a50c | ||
|
|
4a9bc84375 | ||
|
|
2282db7800 | ||
|
|
5abd8b8f04 | ||
|
|
45f1549079 | ||
|
|
01aa679698 | ||
|
|
8da160b834 | ||
|
|
2947ca2e3c | ||
|
|
54d63c9969 | ||
|
|
77be0a18d4 | ||
|
|
627e170304 | ||
|
|
59e26779b9 | ||
|
|
dda46c0639 | ||
|
|
d0e9972547 | ||
|
|
1358087ee7 | ||
|
|
5a0d2ba922 | ||
|
|
d607d8a851 | ||
|
|
8d7950afea | ||
|
|
10ee5989f2 | ||
|
|
7509abd1a9 | ||
|
|
b0966e0cca | ||
|
|
d99d08e8ae | ||
|
|
0a19b8259a | ||
|
|
caf601b49b | ||
|
|
b453ffef85 | ||
|
|
12c472ef01 | ||
|
|
726c6dc8e6 | ||
|
|
5d0a15e9e5 | ||
|
|
8559dd8364 | ||
|
|
b6b724f64f | ||
|
|
c20dcdae76 | ||
|
|
5522121cf6 | ||
|
|
0a9e706b50 | ||
|
|
602881ee26 | ||
|
|
10079d4cb0 | ||
|
|
d363f37592 | ||
|
|
8922d7e663 | ||
|
|
d6a626fe0d | ||
|
|
f11803fd1f | ||
|
|
e3833044e9 | ||
|
|
edfd86628a | ||
|
|
99e5bc5050 | ||
|
|
252ae8169d | ||
|
|
3478720cb3 | ||
|
|
fea6d58bd4 | ||
|
|
e54027c5dd | ||
|
|
36c06d5501 | ||
|
|
701b7b8f37 | ||
|
|
1396ca57db | ||
|
|
5a639a9c60 |
11
.github/workflows/auth-internal-release.yml
vendored
@@ -40,7 +40,7 @@ jobs:
|
||||
|
||||
- name: Build PlayStore AAB
|
||||
run: |
|
||||
flutter build appbundle --release --flavor playstore --dart-define=app.flavor=playstore
|
||||
flutter build appbundle --dart-define=cronetHttpNoPlay=true --release --flavor playstore
|
||||
env:
|
||||
SIGNING_KEY_PATH: "/home/runner/work/_temp/keystore/ente_auth_key.jks"
|
||||
SIGNING_KEY_ALIAS: ${{ secrets.SIGNING_KEY_ALIAS }}
|
||||
@@ -54,3 +54,12 @@ jobs:
|
||||
packageName: io.ente.auth
|
||||
releaseFiles: auth/build/app/outputs/bundle/playstoreRelease/app-playstore-release.aab
|
||||
track: internal
|
||||
|
||||
- name: Notify Discord
|
||||
uses: sarisia/actions-status-discord@v1
|
||||
with:
|
||||
webhook: ${{ secrets.DISCORD_INTERNAL_RELEASE_WEBHOOK }}
|
||||
nodetail: true
|
||||
title: "🏆 Internal release available for Auth"
|
||||
description: "[Download](https://play.google.com/store/apps/details?id=io.ente.auth)"
|
||||
color: 0x800080
|
||||
|
||||
2
.github/workflows/auth-release.yml
vendored
@@ -68,7 +68,7 @@ jobs:
|
||||
|
||||
- name: Build independent APK
|
||||
run: |
|
||||
flutter build apk --release --flavor independent --dart-define=app.flavor=independent
|
||||
flutter build apk --dart-define=cronetHttpNoPlay=true --release --flavor independent
|
||||
mv build/app/outputs/flutter-apk/app-independent-release.apk artifacts/ente-${{ github.ref_name }}.apk
|
||||
env:
|
||||
SIGNING_KEY_PATH: "/home/runner/work/_temp/keystore/ente_auth_key.jks"
|
||||
|
||||
11
.github/workflows/mobile-internal-release.yml
vendored
@@ -40,7 +40,7 @@ jobs:
|
||||
|
||||
- name: Build PlayStore AAB
|
||||
run: |
|
||||
flutter build appbundle --release --flavor playstore
|
||||
flutter build appbundle --dart-define=cronetHttpNoPlay=true --release --flavor playstore
|
||||
env:
|
||||
SIGNING_KEY_PATH: "/home/runner/work/_temp/keystore/ente_photos_key.jks"
|
||||
SIGNING_KEY_ALIAS: ${{ secrets.SIGNING_KEY_ALIAS_PHOTOS }}
|
||||
@@ -54,3 +54,12 @@ jobs:
|
||||
packageName: io.ente.photos
|
||||
releaseFiles: mobile/build/app/outputs/bundle/playstoreRelease/app-playstore-release.aab
|
||||
track: internal
|
||||
|
||||
- name: Notify Discord
|
||||
uses: sarisia/actions-status-discord@v1
|
||||
with:
|
||||
webhook: ${{ secrets.DISCORD_INTERNAL_RELEASE_WEBHOOK }}
|
||||
nodetail: true
|
||||
title: "🏆 Internal release available for Photos"
|
||||
description: "[Download](https://play.google.com/store/apps/details?id=io.ente.photos)"
|
||||
color: 0x00ff00
|
||||
|
||||
2
.github/workflows/mobile-release.yml
vendored
@@ -45,7 +45,7 @@ jobs:
|
||||
|
||||
- name: Build independent APK
|
||||
run: |
|
||||
flutter build apk --release --flavor independent
|
||||
flutter build apk --dart-define=cronetHttpNoPlay=true --release --flavor independent
|
||||
mv build/app/outputs/flutter-apk/app-independent-release.apk build/app/outputs/flutter-apk/ente-${{ github.ref_name }}.apk
|
||||
env:
|
||||
SIGNING_KEY_PATH: "/home/runner/work/_temp/keystore/ente_photos_key.jks"
|
||||
|
||||
25
.github/workflows/server-publish.yml
vendored
@@ -1,27 +1,24 @@
|
||||
name: "Publish ghcr (server)"
|
||||
|
||||
on:
|
||||
# Run manually, providing it the commit.
|
||||
#
|
||||
# To obtain the commit from the currently deployed museum, do:
|
||||
# curl -s https://api.ente.io/ping | jq -r '.id'
|
||||
#
|
||||
# See server/docs/publish.md for more details.
|
||||
# Run automatically on 15th of every month, at 05:00 UTC.
|
||||
schedule:
|
||||
- cron: '0 5 15 * *'
|
||||
# Run manually if needed to publish out of schedule.
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
commit:
|
||||
description: "Commit to publish the image from"
|
||||
type: string
|
||||
required: true
|
||||
|
||||
jobs:
|
||||
publish:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Determine commit from prod museum
|
||||
run: |
|
||||
echo "museum_commit=$(curl -s https://api.ente.io/ping | jq -r .id)" >> $GITHUB_ENV
|
||||
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
ref: ${{ inputs.commit }}
|
||||
ref: ${{ env.museum_commit }}
|
||||
|
||||
- name: Build and push
|
||||
uses: mr-smithers-excellent/docker-build-push@v6
|
||||
@@ -34,8 +31,8 @@ jobs:
|
||||
enableBuildKit: true
|
||||
multiPlatform: true
|
||||
platform: linux/amd64,linux/arm64
|
||||
buildArgs: GIT_COMMIT=${{ inputs.commit }}
|
||||
tags: ${{ inputs.commit }}, latest
|
||||
buildArgs: GIT_COMMIT=${{ env.museum_commit }}
|
||||
tags: ${{ env.museum_commit }}, latest
|
||||
username: ${{ github.actor }}
|
||||
password: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
|
||||
2
.github/workflows/web-deploy-one.yml
vendored
@@ -26,8 +26,6 @@ jobs:
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: recursive
|
||||
|
||||
- name: Setup node and enable yarn caching
|
||||
uses: actions/setup-node@v4
|
||||
|
||||
2
.github/workflows/web-deploy-preview.yml
vendored
@@ -26,8 +26,6 @@ jobs:
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: recursive
|
||||
|
||||
- name: Setup node and enable yarn caching
|
||||
uses: actions/setup-node@v4
|
||||
|
||||
1
.github/workflows/web-deploy-staging.yml
vendored
@@ -34,7 +34,6 @@ jobs:
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
ref: ${{ steps.select-branch.outputs.branch }}
|
||||
submodules: recursive
|
||||
|
||||
- name: Setup node and enable yarn caching
|
||||
uses: actions/setup-node@v4
|
||||
|
||||
2
.github/workflows/web-deploy.yml
vendored
@@ -30,8 +30,6 @@ jobs:
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: recursive
|
||||
|
||||
- name: Setup node and enable yarn caching
|
||||
uses: actions/setup-node@v4
|
||||
|
||||
4
.gitmodules
vendored
@@ -9,7 +9,3 @@
|
||||
[submodule "auth/assets/simple-icons"]
|
||||
path = auth/assets/simple-icons
|
||||
url = https://github.com/simple-icons/simple-icons.git
|
||||
[submodule "web/apps/photos/thirdparty/photoswipe"]
|
||||
path = web/apps/photos/thirdparty/photoswipe
|
||||
url = https://github.com/ente-io/PhotoSwipe.git
|
||||
branch = single-thread
|
||||
|
||||
@@ -95,8 +95,8 @@ please see our [support guide](SUPPORT.md).
|
||||
<img src=".github/assets/ente-ducky.png" width=200 alt="Ente's Mascot, Ducky,
|
||||
inviting people to Ente's source code repository" />
|
||||
|
||||
Please visit our [community page](https://ente.io/community) for all the ways to
|
||||
connect with the community.
|
||||
Please visit the [community section](https://ente.io/about#community) for all the ways to
|
||||
connect with our community.
|
||||
|
||||
[](https://discord.gg/z2YVKkycX3)
|
||||
[](https://ente.io/blog/rss.xml)
|
||||
|
||||
@@ -35,9 +35,18 @@
|
||||
{
|
||||
"title": "Amazon"
|
||||
},
|
||||
{
|
||||
"title": "Ankama",
|
||||
"slug": "ankama"
|
||||
},
|
||||
{
|
||||
"title": "Anycoin Direct",
|
||||
"slug": "anycoindirect"
|
||||
},
|
||||
{
|
||||
"title": "Aruba",
|
||||
"slug": "aruba",
|
||||
"hex": "ef8a33"
|
||||
},
|
||||
{
|
||||
"title": "AscendEX"
|
||||
@@ -199,6 +208,10 @@
|
||||
{
|
||||
"title": "Bugzilla"
|
||||
},
|
||||
{
|
||||
"title": "ButterflyMX",
|
||||
"slug": "butterflymx"
|
||||
},
|
||||
{
|
||||
"title": "Bybit"
|
||||
},
|
||||
@@ -297,6 +310,9 @@
|
||||
{
|
||||
"title": "Discourse"
|
||||
},
|
||||
{
|
||||
"title": "Deloitte"
|
||||
},
|
||||
{
|
||||
"title": "DMarket"
|
||||
},
|
||||
@@ -352,9 +368,25 @@
|
||||
{
|
||||
"title": "Estateguru"
|
||||
},
|
||||
{
|
||||
"title": "EVEOnline",
|
||||
"slug": "eve_online",
|
||||
"altNames": [
|
||||
"EVE Online"
|
||||
],
|
||||
"hex": "858585"
|
||||
},
|
||||
{
|
||||
"title": "Fastmail"
|
||||
},
|
||||
{
|
||||
"title": "Federal Student Aid",
|
||||
"slug": "federal_student_aid",
|
||||
"altNames": [
|
||||
"FSA",
|
||||
"FAFSA"
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Fidelity",
|
||||
"slug": "fidelity",
|
||||
@@ -376,9 +408,17 @@
|
||||
{
|
||||
"title": "ForUsAll"
|
||||
},
|
||||
{
|
||||
"title": "FreeTaxUSA",
|
||||
"slug": "freetaxusa"
|
||||
},
|
||||
{
|
||||
"title": "G2A"
|
||||
},
|
||||
{
|
||||
"title": "Gate.io",
|
||||
"slug": "gateio.svg"
|
||||
},
|
||||
{
|
||||
"title": "GitHub"
|
||||
},
|
||||
@@ -451,6 +491,9 @@
|
||||
"title": "IceDrive",
|
||||
"slug": "ice_drive"
|
||||
},
|
||||
{
|
||||
"title": "ICONOMI"
|
||||
},
|
||||
{
|
||||
"title": "ID.me",
|
||||
"slug": "id_me"
|
||||
@@ -561,6 +604,11 @@
|
||||
{
|
||||
"title": "Letterboxd"
|
||||
},
|
||||
{
|
||||
"title": "LinkedIn",
|
||||
"slug": "linkedin",
|
||||
"hex": "2596be"
|
||||
},
|
||||
{
|
||||
"title": "Linux.Do",
|
||||
"slug": "linux_do",
|
||||
@@ -582,6 +630,14 @@
|
||||
"title": "Login.gov",
|
||||
"slug": "login_gov"
|
||||
},
|
||||
{
|
||||
"title": "Luma",
|
||||
"slug": "luma",
|
||||
"altNames": [
|
||||
"luma",
|
||||
"lu.ma"
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Marketplace.tf",
|
||||
"slug": "marketplacedottf"
|
||||
@@ -611,6 +667,9 @@
|
||||
"MercadoLivre"
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "MEXC"
|
||||
},
|
||||
{
|
||||
"title": "microsoft"
|
||||
},
|
||||
@@ -717,7 +776,8 @@
|
||||
{
|
||||
"title": "nintendo",
|
||||
"altNames": [
|
||||
"任天堂"
|
||||
"任天堂",
|
||||
"Nintendo Account"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -734,6 +794,15 @@
|
||||
{
|
||||
"title": "Notesnook"
|
||||
},
|
||||
{
|
||||
"title": "NoIp",
|
||||
"slug": "noip",
|
||||
"altNames": [
|
||||
"No IP",
|
||||
"No-IP",
|
||||
"noip.com"
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Notion"
|
||||
},
|
||||
@@ -760,6 +829,11 @@
|
||||
"altNames": [
|
||||
"欧易"
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "OnShape",
|
||||
"slug": "onshape",
|
||||
"hex": "7abb5e"
|
||||
},
|
||||
{
|
||||
"title": "Parqet",
|
||||
@@ -814,6 +888,13 @@
|
||||
"PostScanMail"
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Prey Project",
|
||||
"slug": "prey_project",
|
||||
"altNames": [
|
||||
"PreyProject"
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Privacy Guides",
|
||||
"slug": "privacyguides"
|
||||
@@ -857,6 +938,11 @@
|
||||
{
|
||||
"title": "RealMe",
|
||||
"slug": "realme"
|
||||
},
|
||||
{
|
||||
"title": "RealVNC",
|
||||
"slug": "realvnc",
|
||||
"hex": "488aec"
|
||||
},
|
||||
{
|
||||
"title": "Registro br",
|
||||
@@ -893,6 +979,10 @@
|
||||
{
|
||||
"title": "RuneMate"
|
||||
},
|
||||
{
|
||||
"title": "RuneScape Wiki",
|
||||
"slug": "runescape_wiki"
|
||||
},
|
||||
{
|
||||
"title": "Rust Language Forum",
|
||||
"slug": "rust_language_forum",
|
||||
@@ -901,6 +991,10 @@
|
||||
{
|
||||
"title": "Samsung"
|
||||
},
|
||||
{
|
||||
"title": "Seafile",
|
||||
"slug": "seafile"
|
||||
},
|
||||
{
|
||||
"title": "Sendgrid"
|
||||
},
|
||||
@@ -1138,6 +1232,9 @@
|
||||
{
|
||||
"title": "Wolvesville"
|
||||
},
|
||||
{
|
||||
"title": "Workflowy"
|
||||
},
|
||||
{
|
||||
"title": "WorkOS",
|
||||
"altNames": [
|
||||
@@ -1179,6 +1276,12 @@
|
||||
},
|
||||
{
|
||||
"title": "Zoom"
|
||||
},
|
||||
{
|
||||
"title": "BingX"
|
||||
},
|
||||
{
|
||||
"title": "CoinSpot"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
5
auth/assets/custom-icons/icons/ankama.svg
Normal file
@@ -0,0 +1,5 @@
|
||||
<svg version="1.2" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 720 720" width="720" height="720">
|
||||
<title>ankama</title>
|
||||
<path class="s0" d="m572.3 253.3c-0.3-1.4-0.5-3-1.1-4.4-15.1-46-59.7-76.2-107.9-71.5-31.2 3-55.6 18.9-73.4 44.7-3.8 5.7-7.1 12-10.1 18.4-9.4 19.5-19.5 38.7-24.7 59.7-0.5 1.6-1.1 3.5-1.9 4.9-2.5 4.6-5.5 6.3-10.1 4.1-11.7-5.7-23.8-5.2-36.1-4.4-20.3 1.1-37.9-5.7-52.9-19.5-36.1-33.1-35.3-91 1.9-123 26.8-23.3 43.3-52.1 49.3-86.8 3-16.5 3.3-33.4 0-49.9-0.5-2.7-0.8-5.5-1.4-8.7 7.4-1.4 14.3 0 20.8 2.2 42.8 12.4 69.3 40.6 81.6 82.7 0.5 2.2 1.1 4.4 1.6 6.8 0.8 3 2.7 4.9 5.7 5.5 3.3 0.5 6.3-0.5 7.9-3.5 3-6.3 5.7-12.7 8.2-19.2 3.3-9.7 3.8-10.5 14.3-10.6 58.3-0.8 111.7 15.4 159.4 49 60.5 42.9 98.4 101.4 115.7 173.4 0.8 3.5 0.8 7.6 0.5 11.6-4.6 68-26.8 129.6-68.8 183.5-49 63.1-112.4 104.4-190.7 121.4-72.6 15.8-141.7 4.9-207.1-30.1-1.4-0.8-2.7-1.6-3.8-2.5-0.3 0-0.5-0.8-1.6-2.2 8.7 3 17 5.5 24.7 8.6 13.9 5.7 28.5 8.7 43.6 8.6 14.3 0 28.2 0.8 42.5 0 63.9-3.8 119.5-27.4 166.2-70.7 23.6-21.9 32.8-50.7 30.7-82.4-1.9-32.3-16.5-58.6-42.2-78.3-18.9-14.6-32-33.1-38-56.4-4.1-15.8-4.6-32-0.8-48.2 5.7-24.7 27.7-41.7 52.3-40.6 17 0.8 29.6 9 39.5 22.5 1.4 1.9 2.7 4.1 4.1 6.3 0.5 0 0.8-0.5 1.4-0.8l0.8 0.3v-0.5zm-263.5-55.1c-14.7 0-26.3 12.4-26.3 27.7 0 15.3 11.6 27.4 26.6 27.4 15 0 26-12.4 26-27.1 0-14.7-12-27.9-26.3-27.9v-0.2z"/>
|
||||
<path class="s0" d="m168.2 314.5c7.4 1.6 14.7 3.3 22.5 4.9 10.9 2.2 14.3 6.8 12 18.1-1.6 8.2-3 16.2-4.9 24.1-0.8 3.5 0 5.7 2.5 8.2 22.8 23.6 50.1 38.4 83.8 43.6-2.2-1.4-3-2.2-4.1-2.7-19.5-10.1-27.7-25.2-25.2-46.6 1.1-9.8 0-19.2-6-27.4-3.8-5.5-9-9.7-13.9-14.3-1.6-1.6-3.8-2.5-6-4.1 5.2-3.3 10.5-3.3 15.4-3 7.4 0.3 14.7 1.4 22.2 3 11.6 2.5 21.7 8.2 30.4 16.2 6.5 6 12.4 12.4 18.7 18.4 13.9 13.6 25.2 12.8 37.2-2.7 7.6-9.8 12.4-21.4 15.8-33.1 3.8-12.7 8.2-24.9 15.4-36.1 7.4-11.6 16.5-21.7 27.4-30.1 9.7-7.4 19.7-6.8 30.7-3.3v9.7c-1.1 27.1 5.2 52.6 19.5 75.9 1.1 1.9 2.2 4.1 3.5 6 4.1 6.3 3.3 12-0.5 18.1-5.5 8.7-13.5 13.2-23.8 13.5h-6.3c-12.7 0-23.3 8.2-26.8 20.6-3 10.9 1.9 23.3 11.7 29.6 10.9 6.8 24.1 5.7 33.4-3 10.1-9.8 16.5-21.7 18.9-35.7 0.3-1.9 0.8-4.1 1.1-6 17.3-0.3 39.8 16.6 48.2 37.2 10.1 24.1 6.3 46.6-10.1 68.8-0.8-5.2-1.4-9.4-2.2-12.8-2.2-9.7-8.6-15.7-18.1-17.7-6.8-1.6-9.8 0-13.6 5.7-1.9 3-3.5 6.3-5.2 9.7-2.5 4.9-4.6 9.8-7.1 14.6-13.6 27.1-34.9 45.8-63.2 55.6-27.1 9.7-55.2 13.2-83.5 10.1-16.5-1.6-29.3-10.5-39.8-23.6 1.9-1.4 3.3-2.7 4.9-3.8 7.4-5.5 12.8-12.7 16.6-20.8 1.1-2.2 1.6-4.9 1.9-7.4 0.5-5.2-2.7-9.4-7.6-9.8-4.6-0.5-8.7 2.5-10.1 7.6-0.8 3.3-1.1 6.5-2.5 9.7-3.8 7.1-9.7 12.8-16.5 17-7.4 4.4-14.6 3.8-20-1.4-5.5-5.5-6-11.7-1.9-19.7 0.3-0.5 0.5-1.4 1.4-3-2.5 1.1-4.1 1.4-5.5 2.2-17.7 10.6-25.8 31.5-19.2 51.5 18.7 56.7-6 119.5-54 151-3.3 2.2-7.1 4.1-11.6 6.8 0-3-0.5-5.2-0.5-7.4-2.5-57.8-30.1-98.9-82.4-122.8-32.8-14.7-53.7-39.5-62.1-74-12.4-50.1 13.9-102.2 61.2-122.8 1.9-0.8 4.1-1.4 7.6-2.7-15.1 28.8-18.7 57.2-9.4 86.8 5.5 17.3 14.7 32 29 45.5 0.3-12.4-0.8-23.6 7.6-33.4 2.7 6.3 5.5 12 8.2 17.7 4.9 10.9 12.7 19.5 23.3 24.9 12 6.3 24.1 6.8 36.5 1.1 8.6-3.8 15.8-9.4 22.2-16.2 8.6-9 8.6-24.9 0.3-35.7-5.5-7.1-8.6-14.7-7.4-23.6 1.9-15.4 15.1-26.8 32-28.2 4.6-0.3 9.4 0 13.6 0.5 4.1 0.8 8.2 2.5 12.7 3.3-3.5-3.8-7.9-6.5-12.7-8.2-8.2-2.7-16.6-3.3-25.2-1.6-14.7 3.3-24.9 16.2-26.3 33.4-0.5 6.3 0 12.8 1.1 19.2 3 16.5-0.8 30.4-13.2 42.8-1.9-1.6-3.8-2.7-5.7-4.4-43.9-37.6-69.6-84.6-75.6-142.2-10.1-95.9 42.5-184.9 130.9-223 28.5-12.4 46-33.8 53.4-63.9 0.3-1.4 0.8-2.7 1.9-3.8 1.9 10.1 1.4 20.3-1.1 30.1-6 24.1-19.5 42.8-41.4 55.3-21.4 12.4-38.4 29-51.5 50.1-2.5 4.1-2.7 7.1 0 10.9 2.7 3.5 5.2 7.6 7.6 11.6 4.4 7.4 3 13.9-4.1 18.9-6.3 4.4-13.2 8.2-19.5 12.7-1.6 1.1-3.5 3.3-3.8 5.2-1.6 18.7-0.5 36.9 5.5 55.3l1.4-0.3-0.2-0.2zm192.8 132c14.3 0 25.8-11.3 25.5-25.2 0-13.6-12-25.8-25.5-25.8-13.5 0-25.2 11.3-25.5 25.5 0 14.3 11.3 25.5 25.2 25.5z"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.7 KiB |
4
auth/assets/custom-icons/icons/aruba.svg
Normal file
@@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||
<svg width="800px" height="800px" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||
<path fill="#FF8300" fill-rule="evenodd" d="M12.1099561,17.3015551 C9.03598293,17.3015551 6.50849391,14.8423766 6.50849391,11.836714 C6.50849391,8.83105139 9.03598293,6.37187289 12.1099561,6.37187289 C15.1839292,6.37187289 17.7114182,8.83105139 17.7114182,11.836714 C17.7114182,14.8423766 15.1839292,17.3015551 12.1099561,17.3015551 L12.1099561,17.3015551 Z M12.1099561,2 C6.50849391,2 2,6.4401834 2,11.836714 C2,17.3015551 6.50849391,21.673428 12.1099561,21.673428 C14.4325135,21.673428 16.5501395,20.9220123 18.2579023,19.6241126 C19.28256,21.3318754 22.2199121,21.673428 22.2199121,21.673428 L22.2199121,11.836714 C22.2199121,6.4401834 17.7114182,2 12.1099561,2 L12.1099561,2 Z"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 901 B |
1
auth/assets/custom-icons/icons/bingx.svg
Normal file
@@ -0,0 +1 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?><svg id="a" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 150 150"><defs><style>.e{fill:#2a54ff;}.f{fill:url(#d);}.g{fill:none;}</style><linearGradient id="d" x1="17.68" y1="116.45" x2="132.14" y2="32.11" gradientTransform="matrix(1, 0, 0, 1, 0, 0)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#2a54ff"/><stop offset=".52" stop-color="#2143cb"/><stop offset="1" stop-color="#2a54ff"/></linearGradient></defs><g id="b"><path id="c" class="g" d="M0,0H150V150H0V0Z"/></g><path class="f" d="M140.2,22.33c-25.18-.09-49.79,10.83-66.63,29.47-6.06,6.27-10.1,13.95-14.96,21.06-11.64,15.93-29.81,25.14-49.5,25.13h0v28.65h0c25.17,.1,49.78-10.86,66.63-29.5,6.03-6.27,10.13-13.94,14.96-21.06,11.64-15.91,29.81-25.12,49.5-25.11V22.33h0Z"/><path class="e" d="M140.2,97.99c-19.68,0-37.86-9.2-49.5-25.11-4.81-7.12-8.92-14.78-14.94-21.06C58.95,33.18,34.3,22.24,9.13,22.35h0v28.65h0c21.8-.11,42.05,11.62,53.01,30.46,3.22,5.62,7.06,10.9,11.45,15.74,16.83,18.63,41.46,29.59,66.63,29.5l-.02-28.7h0Z"/></svg>
|
||||
|
After Width: | Height: | Size: 1.1 KiB |
27
auth/assets/custom-icons/icons/butterflymx.svg
Normal file
@@ -0,0 +1,27 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="462px" height="404px" viewBox="0 0 462 404" version="1.1">
|
||||
<defs>
|
||||
<linearGradient id="linear0" gradientUnits="userSpaceOnUse" x1="464.529999" y1="-2595.189941" x2="1224.150024" y2="-2986.919922" gradientTransform="matrix(0.249968,0,0,-0.249968,150.980393,-561.725816)">
|
||||
<stop offset="0" style="stop-color:rgb(100%,92.156863%,18.039216%);stop-opacity:1;"/>
|
||||
<stop offset="0.92" style="stop-color:rgb(99.607843%,56.470591%,18.82353%);stop-opacity:1;"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="linear1" gradientUnits="userSpaceOnUse" x1="-580.880005" y1="-2987.179932" x2="121.110001" y2="-2623.179932" gradientTransform="matrix(0.249968,0,0,-0.249968,150.980393,-561.725816)">
|
||||
<stop offset="0.06" style="stop-color:rgb(0%,40.784314%,89.803922%);stop-opacity:1;"/>
|
||||
<stop offset="1" style="stop-color:rgb(3.921569%,85.09804%,100%);stop-opacity:1;"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="linear2" gradientUnits="userSpaceOnUse" x1="1063.689941" y1="-3644.949951" x2="436.269989" y2="-3207.530029" gradientTransform="matrix(0.249968,0,0,-0.249968,150.980393,-561.725816)">
|
||||
<stop offset="0" style="stop-color:rgb(93.725491%,3.921569%,21.176471%);stop-opacity:1;"/>
|
||||
<stop offset="1" style="stop-color:rgb(100%,59.215689%,54.11765%);stop-opacity:1;"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="linear3" gradientUnits="userSpaceOnUse" x1="-389.76001" y1="-3622.02002" x2="266.369995" y2="-3164.639893" gradientTransform="matrix(0.249968,0,0,-0.249968,150.980393,-561.725816)">
|
||||
<stop offset="0" style="stop-color:rgb(47.450981%,7.843138%,93.725491%);stop-opacity:1;"/>
|
||||
<stop offset="1" style="stop-color:rgb(85.882354%,41.176471%,100%);stop-opacity:1;"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<g id="surface1">
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear0);" d="M 437.566406 160.457031 C 437.566406 192.628906 411.488281 218.730469 379.324219 218.730469 L 239.71875 218.730469 C 239.71875 116.257812 317.625 31.976562 417.445312 21.886719 C 428.53125 20.769531 437.585938 29.886719 437.585938 41.027344 Z M 437.566406 160.457031 "/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear1);" d="M 24.640625 160.457031 C 24.640625 192.628906 50.722656 218.730469 82.882812 218.730469 L 222.492188 218.730469 C 222.492188 116.257812 144.589844 31.976562 44.777344 21.886719 C 33.695312 20.769531 24.640625 29.886719 24.640625 41.027344 Z M 24.640625 160.457031 "/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear2);" d="M 269.425781 338.792969 C 249.960938 308.039062 239.65625 272.375 239.71875 235.976562 L 381.667969 235.976562 C 412.507812 235.976562 437.574219 260.675781 437.574219 291.0625 C 437.566406 380.972656 317.730469 415.246094 269.425781 338.792969 Z M 269.425781 338.792969 "/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear3);" d="M 192.78125 338.792969 C 212.25 308.039062 222.554688 272.375 222.492188 235.976562 L 80.546875 235.976562 C 49.707031 235.976562 24.640625 260.675781 24.640625 291.0625 C 24.640625 380.972656 144.480469 415.246094 192.78125 338.792969 Z M 192.78125 338.792969 "/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.1 KiB |
130
auth/assets/custom-icons/icons/coinspot.svg
Normal file
@@ -0,0 +1,130 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 27.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 30 30" style="enable-background:new 0 0 30 30;" xml:space="preserve">
|
||||
<style type="text/css">
|
||||
.st0{fill:#C5C8CA;}
|
||||
.st1{fill:#9DA4A8;}
|
||||
.st2{fill:#B7BBBD;}
|
||||
.st3{fill:#CBCFD1;}
|
||||
.st4{fill:#BBBFC2;}
|
||||
.st5{fill:#CACDCE;}
|
||||
.st6{fill:#BFC3C5;}
|
||||
.st7{fill:#BCC0C2;}
|
||||
.st8{fill:#BDC1C4;}
|
||||
.st9{fill:#C7CACC;}
|
||||
.st10{fill:url(#SVGID_1_);}
|
||||
.st11{fill:#FFFFFF;}
|
||||
.st12{fill:#B8BCBF;}
|
||||
.st13{fill:#C4C7C9;}
|
||||
.st14{fill:#C1C5C7;}
|
||||
.st15{fill:url(#SVGID_00000003093454306001190100000011813141018663887528_);}
|
||||
.st16{fill:url(#SVGID_00000017503418065689336600000007511615486600436881_);}
|
||||
.st17{fill:url(#SVGID_00000057845154053127761930000017803385842445649033_);}
|
||||
.st18{fill:url(#SVGID_00000156571711195124538550000006687723982713171592_);}
|
||||
.st19{fill:#DF3030;}
|
||||
.st20{fill:url(#SVGID_00000001636660173574603980000008731795684331757470_);}
|
||||
.st21{fill:#17181C;}
|
||||
.st22{fill:url(#SVGID_00000180343933242210086490000003762167186865041053_);}
|
||||
.st23{fill:url(#SVGID_00000015338415700440354440000005681408021599925436_);}
|
||||
</style>
|
||||
<g>
|
||||
<path class="st0" d="M14.4,29.5c0.1,0,0.1,0,0.2,0c0.1,0,0.2,0,0.2,0H14.4z"/>
|
||||
<path class="st1" d="M15.3,29.5h0.1c0,0,0,0,0,0c0,0,0,0,0,0c0,0,0,0,0,0c0,0,0,0,0,0c0,0,0,0,0,0L15.3,29.5
|
||||
C15.2,29.5,15.3,29.5,15.3,29.5z"/>
|
||||
<path class="st2" d="M15.3,29.5L15.3,29.5l-0.2,0C15.2,29.5,15.2,29.5,15.3,29.5z"/>
|
||||
<path class="st3" d="M15.5,29.5L15.5,29.5L15.5,29.5L15.5,29.5L15.5,29.5z"/>
|
||||
<path class="st0" d="M14.1,29.5c0.1,0,0.1,0,0.2,0H14.1z"/>
|
||||
<path class="st4" d="M13.9,29.5C13.9,29.5,14,29.5,13.9,29.5c0.1,0,0.1,0,0.2,0H13.9z"/>
|
||||
<path class="st5" d="M13.6,29.5C13.6,29.5,13.6,29.5,13.6,29.5c0.1,0,0.1,0,0.1,0H13.6z"/>
|
||||
<path class="st6" d="M13.7,29.5C13.8,29.5,13.8,29.5,13.7,29.5c0.1,0,0.1,0,0.1,0H13.7z"/>
|
||||
<path class="st7" d="M13.3,29.4C13.3,29.4,13.3,29.4,13.3,29.4C13.4,29.4,13.4,29.4,13.3,29.4L13.3,29.4z"/>
|
||||
<path class="st8" d="M13.4,29.5C13.4,29.4,13.5,29.4,13.4,29.5C13.5,29.4,13.5,29.4,13.4,29.5L13.4,29.5z"/>
|
||||
<path class="st8" d="M13.1,29.4C13.1,29.4,13.1,29.4,13.1,29.4C13.1,29.4,13.1,29.4,13.1,29.4L13.1,29.4z"/>
|
||||
<path class="st9" d="M13.2,29.4C13.2,29.4,13.2,29.4,13.2,29.4C13.2,29.4,13.2,29.4,13.2,29.4C13.2,29.4,13.2,29.4,13.2,29.4
|
||||
C13.3,29.4,13.3,29.4,13.2,29.4L13.2,29.4z"/>
|
||||
|
||||
<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="21.8812" y1="-88.078" x2="8.2545" y2="-104.6955" gradientTransform="matrix(1 0 0 -1 0 -81.48)">
|
||||
<stop offset="0" style="stop-color:#020037"/>
|
||||
<stop offset="1" style="stop-color:#050F62"/>
|
||||
</linearGradient>
|
||||
<path class="st10" d="M15,0.4C11.1,0.4,7.5,2,4.7,4.7C2,7.4,0.5,11.1,0.5,15c0,1.7,0.3,3.4,0.9,5.1c0.3,0,0.5,0,0.8,0
|
||||
c2.9,0,5.8,0.9,8.2,2.6c2.4,1.7,4.2,4.1,5.1,6.9c3.8-0.1,7.4-1.7,10-4.4c2.6-2.7,4.1-6.4,4.1-10.1c0-3.9-1.5-7.6-4.3-10.3
|
||||
C22.6,2,18.9,0.4,15,0.4"/>
|
||||
<path class="st11" d="M20.7,22.5C20.7,22.5,20.7,22.5,20.7,22.5L20.7,22.5c0,0.4,0.1,0.8,0.3,1c0.2,0.2,0.6,0.3,1,0.3c0,0,0,0,0,0
|
||||
c0,0,0,0,0,0c0,0,0,0,0,0c0,0,0,0,0,0c0,0,0,0,0,0l0,0c-0.4,0-0.7,0.1-1,0.3c-0.2,0.2-0.3,0.6-0.3,1c0,0,0,0,0,0c0,0,0,0,0,0
|
||||
c0,0,0,0,0,0c0,0,0,0,0,0h0l0,0c0-0.4-0.1-0.7-0.3-1c-0.2-0.2-0.6-0.3-1-0.3c0,0,0,0,0,0l0,0c0,0,0,0,0,0s0,0,0,0c0,0,0,0,0,0
|
||||
c0,0,0,0,0,0c0.4,0,0.7-0.1,1-0.3S20.7,22.9,20.7,22.5C20.7,22.5,20.7,22.5,20.7,22.5C20.7,22.5,20.7,22.5,20.7,22.5z"/>
|
||||
<path class="st11" d="M6.9,15.5C6.9,15.5,6.9,15.5,6.9,15.5L6.9,15.5c0,0.4,0.1,0.8,0.3,1c0.2,0.2,0.6,0.3,1,0.3c0,0,0,0,0,0
|
||||
c0,0,0,0,0,0c0,0,0,0,0,0c0,0,0,0,0,0c0,0,0,0,0,0l0,0c-0.4,0-0.7,0.1-1,0.3c-0.2,0.2-0.3,0.6-0.3,1c0,0,0,0,0,0c0,0,0,0,0,0
|
||||
c0,0,0,0,0,0c0,0,0,0,0,0h0l0,0c0-0.4-0.1-0.7-0.3-1c-0.2-0.2-0.6-0.3-1-0.3c0,0,0,0,0,0l0,0c0,0,0,0,0,0c0,0,0,0,0,0c0,0,0,0,0,0
|
||||
c0,0,0,0,0,0c0.4,0,0.7-0.1,1-0.3C6.8,16.2,6.9,15.9,6.9,15.5C6.9,15.5,6.9,15.5,6.9,15.5C6.9,15.5,6.9,15.5,6.9,15.5z"/>
|
||||
<path class="st11" d="M10.6,4.1L10.6,4.1C10.7,4.1,10.7,4.1,10.6,4.1c0,0.3,0.1,0.5,0.3,0.7c0.2,0.2,0.4,0.3,0.7,0.2h0v0l0,0l0,0
|
||||
l0,0l0,0c-0.3,0-0.5,0.1-0.7,0.2c-0.2,0.2-0.3,0.4-0.2,0.7l0,0l0,0l0,0l0,0h0v0c0-0.3-0.1-0.5-0.2-0.7C10.2,5.1,10,5,9.7,5.1h0v0v0
|
||||
h0C10,5,10.2,5,10.4,4.8C10.6,4.6,10.7,4.3,10.6,4.1C10.6,4.1,10.6,4.1,10.6,4.1C10.6,4.1,10.6,4.1,10.6,4.1z"/>
|
||||
<path class="st12" d="M12.8,29.4C12.8,29.4,12.8,29.4,12.8,29.4C12.8,29.4,12.8,29.4,12.8,29.4C12.8,29.4,12.8,29.4,12.8,29.4
|
||||
C12.8,29.4,12.8,29.4,12.8,29.4L12.8,29.4z"/>
|
||||
<path class="st13" d="M13,29.4C13,29.4,13,29.4,13,29.4C13,29.4,13,29.4,13,29.4L13,29.4z"/>
|
||||
<path class="st14" d="M12.9,29.4C12.9,29.4,12.9,29.4,12.9,29.4C12.9,29.4,12.9,29.4,12.9,29.4L12.9,29.4z"/>
|
||||
|
||||
<linearGradient id="SVGID_00000173122186048074043340000017421439166240502921_" gradientUnits="userSpaceOnUse" x1="19.2457" y1="-89.3156" x2="22.9553" y2="-91.7188" gradientTransform="matrix(1 0 0 -1 0 -81.48)">
|
||||
<stop offset="0" style="stop-color:#E5E5E5"/>
|
||||
<stop offset="1" style="stop-color:#B7B8C1"/>
|
||||
</linearGradient>
|
||||
<path style="fill:url(#SVGID_00000173122186048074043340000017421439166240502921_);" d="M21.8,1.2c-1.4,0.7-3,1.9-4.4,4.2
|
||||
c-2.5,3.9-3.2,7.4-3.2,7.4L16,14l0.3,0.2l1.9,1.2c0,0,2.9-2,5.4-5.9c1.5-2.3,2-4.3,2-5.8c-0.8-0.1-1.5-0.4-2.2-0.8
|
||||
C22.8,2.5,22.2,1.9,21.8,1.2z"/>
|
||||
|
||||
<linearGradient id="SVGID_00000127763695479642710240000017533313096818365313_" gradientUnits="userSpaceOnUse" x1="21.2378" y1="-99.9826" x2="19.0472" y2="-97.8815" gradientTransform="matrix(1 0 0 -1 0 -81.48)">
|
||||
<stop offset="0" style="stop-color:#EC4F4F"/>
|
||||
<stop offset="1" style="stop-color:#A91919"/>
|
||||
</linearGradient>
|
||||
<path style="fill:url(#SVGID_00000127763695479642710240000017533313096818365313_);" d="M20.8,16.8c0.9-1.4,0.3-3.2,0-3.8
|
||||
c-0.7,0.8-1.5,1.5-2.3,2.1c0.1,0.4,0.3,0.8,0.3,1.2c0,0.1,0,0.2-0.1,0.3c-0.4,0.6-0.8,1.3-1.1,2c-0.1,0.1-0.1,0.2-0.1,0.3
|
||||
c-0.1,0.2-0.1,0.3,0,0.5c0,0.3,0.2,0.5,0.3,0.8c0,0,0.1,0.1,0.1,0.1c0.1,0,0.1,0.1,0.2,0.1s0.1,0,0.2-0.1c0.1-0.1,0.3-0.2,0.4-0.4
|
||||
C19.5,19,19.8,18.5,20.8,16.8z"/>
|
||||
|
||||
<linearGradient id="SVGID_00000060717637781723915790000002744012061535479481_" gradientUnits="userSpaceOnUse" x1="11.3158" y1="-99.2586" x2="14.8122" y2="-101.5237" gradientTransform="matrix(1 0 0 -1 0 -81.48)">
|
||||
<stop offset="0" style="stop-color:#F2A518"/>
|
||||
<stop offset="1" style="stop-color:#F4E23E"/>
|
||||
</linearGradient>
|
||||
<path style="fill:url(#SVGID_00000060717637781723915790000002744012061535479481_);" d="M15.1,15.7l-1.7-1.1c-2,3.1-3.3,7-2.4,7.5
|
||||
c0.9,0.6,3.9-2.2,5.9-5.3L15.1,15.7z"/>
|
||||
|
||||
<linearGradient id="SVGID_00000070084874335106853820000008402293642909580433_" gradientUnits="userSpaceOnUse" x1="-4386.2534" y1="747.6443" x2="-4497.9517" y2="769.0099" gradientTransform="matrix(1 0 0 -1 0 -81.48)">
|
||||
<stop offset="0" style="stop-color:#EC4F4F"/>
|
||||
<stop offset="1" style="stop-color:#A91919"/>
|
||||
</linearGradient>
|
||||
<path style="fill:url(#SVGID_00000070084874335106853820000008402293642909580433_);" d="M15.2,9.5c-0.7-0.1-2.5,0.1-3.4,1.5
|
||||
c-1.1,1.6-1.5,2.1-2,3.2c-0.1,0.2-0.1,0.3-0.2,0.5c0,0.1,0,0.1,0,0.2C9.6,15,9.7,15,9.7,15c0,0,0.1,0,0.2,0.1c0.3,0.1,0.6,0,0.8,0
|
||||
c0.2,0,0.3-0.1,0.4-0.2c0.1-0.1,0.2-0.2,0.3-0.3c0.5-0.6,0.9-1.2,1.3-1.8c0.1-0.1,0.2-0.2,0.3-0.2c0.4-0.1,0.8-0.1,1.2-0.2l0,0
|
||||
C14.5,11.4,14.8,10.4,15.2,9.5z"/>
|
||||
<path class="st19" d="M25,0.6c-0.2-0.1-1.5-0.2-3.2,0.7c0.4,0.7,1,1.2,1.6,1.7c0.7,0.4,1.4,0.7,2.2,0.8C25.7,1.9,25.1,0.7,25,0.6z"
|
||||
/>
|
||||
<path class="st19" d="M18.4,15.5L14,12.7c-0.1,0-0.1,0-0.2,0l-0.9,1.4c0,0.1,0,0.1,0,0.2l4.4,2.8c0.1,0,0.1,0,0.2,0l0.9-1.4
|
||||
C18.4,15.6,18.4,15.6,18.4,15.5z"/>
|
||||
|
||||
<linearGradient id="SVGID_00000044894753735506851200000013592864944465274029_" gradientUnits="userSpaceOnUse" x1="14.9436" y1="-95.9217" x2="16.3716" y2="-96.8468" gradientTransform="matrix(1 0 0 -1 0 -81.48)">
|
||||
<stop offset="0" style="stop-color:#B71E1E"/>
|
||||
<stop offset="0.44" style="stop-color:#DF3030"/>
|
||||
<stop offset="1" style="stop-color:#C51D1D"/>
|
||||
</linearGradient>
|
||||
<path style="fill:url(#SVGID_00000044894753735506851200000013592864944465274029_);" d="M17.8,11.6c-0.4-0.2-2.1,1.6-3.2,3.3
|
||||
c-0.8,1.2-1.4,3-1.1,3.2c0.4,0.2,1.7-1,2.5-2.3C17.1,14.2,18.1,11.9,17.8,11.6z"/>
|
||||
<path class="st21" d="M21.2,8.6c1.3,0,2.3-1,2.3-2.3s-1-2.3-2.3-2.3c-1.3,0-2.3,1-2.3,2.3S20,8.6,21.2,8.6z"/>
|
||||
|
||||
<linearGradient id="SVGID_00000090987122570624474440000002432161440392897685_" gradientUnits="userSpaceOnUse" x1="20.068" y1="-87.0655" x2="22.3556" y2="-88.5473" gradientTransform="matrix(1 0 0 -1 0 -81.48)">
|
||||
<stop offset="0" style="stop-color:#CED1EC"/>
|
||||
<stop offset="1" style="stop-color:#FFFFFF"/>
|
||||
</linearGradient>
|
||||
<path style="fill:url(#SVGID_00000090987122570624474440000002432161440392897685_);" d="M21.2,7.7c0.8,0,1.4-0.6,1.4-1.4
|
||||
S22,5,21.2,5c-0.8,0-1.4,0.6-1.4,1.4S20.5,7.7,21.2,7.7z"/>
|
||||
|
||||
<linearGradient id="SVGID_00000044151119195171880090000016489263670362291109_" gradientUnits="userSpaceOnUse" x1="14.4192" y1="-110.4727" x2="2.0973" y2="-101.7197" gradientTransform="matrix(1 0 0 -1 0 -81.48)">
|
||||
<stop offset="0" style="stop-color:#B7B7BD"/>
|
||||
<stop offset="0.68" style="stop-color:#EFEFEF"/>
|
||||
</linearGradient>
|
||||
<path style="fill:url(#SVGID_00000044151119195171880090000016489263670362291109_);" d="M2.1,20c-0.3,0-0.5,0-0.8,0
|
||||
c1,2.8,2.9,5.2,5.3,6.9s5.3,2.6,8.3,2.6c0.1,0,0.3,0,0.4,0c-0.9-2.8-2.7-5.2-5.1-6.9C7.9,20.9,5.1,20,2.1,20z"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 9.2 KiB |
15
auth/assets/custom-icons/icons/deloitte.svg
Normal file
@@ -0,0 +1,15 @@
|
||||
<svg version="1.2" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1545 1333" width="1545" height="1333">
|
||||
<title>Deloitte-svg</title>
|
||||
<style>
|
||||
.s0 { fill: #86bc24 }
|
||||
.s1 { fill: #0f0b0b }
|
||||
</style>
|
||||
<g id="layer1">
|
||||
<g id="g3359">
|
||||
<g id="g3371">
|
||||
<path id="path3356" class="s0" d="m1354.4 1332.5c-105.1 0-190-84.8-190-189.6 0-104.9 84.9-189.6 190-189.6 105 0 189.9 84.7 189.9 189.6 0 104.8-84.9 189.6-189.9 189.6z"/>
|
||||
<path id="path3360" fill-rule="evenodd" class="s1" d="m1089.4 628.2q0 328.2-176.7 505.8-176.8 177.6-497.1 177.6h-414.9v-1311.1h443.9q308.8 0 476.8 161.4c112 107.6 168 263 168 466.3zm-359.7 12.5q0-180.1-69.7-267.2c-46.6-58-117.1-87-211.9-87h-100.9v734.5h77.2c105.3 0 182.5-31.2 231.6-93.8 49.1-62.4 73.7-157.9 73.7-286.5z"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 785 B |
3
auth/assets/custom-icons/icons/eve_online.svg
Normal file
@@ -0,0 +1,3 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" version="1.1" width="198.4" height="198.4" xml:space="preserve">
|
||||
<path transform="translate(0, 60)" d="M 0,0 0,13.88 10.97,13.88 10.97,10.31 60.69,10.31 60.69,0 0,0 z M 65.84,0 99.22,58.09 132.6,0 120.7,0 C 120.7,0 100.5,34.91 99.22,37.16 97.92,34.91 77.75,0 77.75,0 L 65.84,0 z M 137.8,0 137.8,13.88 148.7,13.88 148.7,10.31 198.4,10.31 198.4,0 137.8,0 z M 0,19.12 0,29.47 60.69,29.47 60.69,19.12 0,19.12 z M 137.8,19.12 137.8,29.47 198.4,29.47 198.4,19.12 137.8,19.12 z M 0,34.66 0,48.59 60.69,48.59 60.69,38.25 10.97,38.25 10.97,34.66 0,34.66 z M 137.8,34.66 137.8,48.59 198.4,48.59 198.4,38.25 148.7,38.25 148.7,34.66 137.8,34.66 z M 42.19,69.72 C 41.32,69.72 40.71,69.89 40.41,70.19 40.1,70.49 39.97,71.03 39.97,71.84 L 39.97,76.56 C 39.97,77.38 40.1,77.93 40.41,78.22 40.71,78.52 41.32,78.66 42.19,78.66 L 48.72,78.66 C 49.59,78.66 50.19,78.52 50.5,78.22 50.8,77.93 50.97,77.38 50.97,76.56 L 50.97,71.84 C 50.97,71.03 50.8,70.49 50.5,70.19 50.19,69.89 49.59,69.72 48.72,69.72 L 42.19,69.72 z M 64.37,69.72 64.37,78.66 66.25,78.66 66.25,73.84 C 66.25,73.66 66.23,73.43 66.22,73.19 66.2,72.94 66.18,72.69 66.16,72.41 66.26,72.53 66.38,72.67 66.5,72.78 66.62,72.89 66.75,73.01 66.91,73.16 L 73.47,78.66 74.88,78.66 74.88,69.72 73.03,69.72 73.03,74.41 C 73.03,74.52 73.05,74.7 73.06,74.91 73.07,75.11 73.09,75.47 73.12,75.97 72.99,75.81 72.82,75.66 72.66,75.5 72.49,75.35 72.31,75.18 72.09,75 L 65.81,69.72 64.37,69.72 z M 88.53,69.72 88.53,78.66 97.31,78.66 97.31,77 90.59,77 90.59,69.72 88.53,69.72 z M 109.4,69.72 109.4,78.66 111.5,78.66 111.5,69.72 109.4,69.72 z M 125.1,69.72 125.1,78.66 127,78.66 127,73.84 C 127,73.66 127,73.43 126.9,73.19 126.9,72.94 126.9,72.69 126.9,72.41 127,72.53 127.1,72.67 127.2,72.78 127.3,72.89 127.5,73.01 127.6,73.16 L 134.2,78.66 135.6,78.66 135.6,69.72 133.8,69.72 133.8,74.41 C 133.8,74.52 133.8,74.7 133.8,74.91 133.8,75.11 133.8,75.47 133.8,75.97 133.7,75.81 133.6,75.66 133.4,75.5 133.2,75.35 133,75.18 132.8,75 L 126.5,69.72 125.1,69.72 z M 149.3,69.72 149.3,78.66 158.5,78.66 158.5,77 151.3,77 151.3,74.78 155.4,74.78 155.4,73.25 151.3,73.25 151.3,71.25 158.4,71.25 158.4,69.72 149.3,69.72 z M 42.03,71.31 48.87,71.31 48.87,77 42.03,77 42.03,71.31 z" /></svg>
|
||||
|
After Width: | Height: | Size: 2.4 KiB |
6
auth/assets/custom-icons/icons/federal_student_aid.svg
Normal file
|
After Width: | Height: | Size: 8.9 KiB |
1
auth/assets/custom-icons/icons/freetaxusa.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg clip-rule="evenodd" fill-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="2" viewBox="0 0 560 400" xmlns="http://www.w3.org/2000/svg"><g transform="matrix(2.51518 0 0 2.51518 30 162.272)"><path d="m136.108 5.893 6.356 23.513h-4.7l-1.218-5.334h-6.587l-1.284 5.334h-4.545l6.52-23.513h5.468zm-2.833 4.107-2.436 10.242h4.806zm-65.8 1.7c2.02 0 3.508.522 4.463 1.563s1.432 2.674 1.432 4.9v11.263h-3.95v-1.9c-.505.746-1.114 1.323-1.828 1.73-.706.405-1.508.615-2.322.61-1.405 0-2.502-.45-3.294-1.35s-1.176-2.182-1.176-3.786c0-1.734.577-3.1 1.73-4.1s2.804-1.586 4.956-1.762l1.78-.132v-1.02c0-1.03-.153-1.788-.462-2.27s-.8-.725-1.482-.725c-.615 0-1.086.187-1.415.56s-.56.966-.7 1.78l-3.887-.33c.264-1.713.9-2.98 1.9-3.804s2.427-1.235 4.25-1.235zm1.78 9.78-1.317.132c-.988.088-1.752.373-2.3.856s-.808 1.13-.808 1.943c0 .724.153 1.28.463 1.662s.756.577 1.35.577c.748.022 1.459-.331 1.894-.939.472-.626.708-1.476.708-2.553v-1.68zm-25.26-9.78c2.064 0 3.617.714 4.66 2.14s1.563 3.535 1.563 6.323v1.68h-8.825c.044 3.338.9 5.005 2.536 5.005.66 0 1.152-.202 1.482-.608s.548-1.092.66-2.06h4.084c-.177 1.888-.797 3.322-1.86 4.298s-2.542 1.465-4.43 1.465c-2.282 0-3.972-.73-5.07-2.2s-1.647-3.716-1.647-6.768c0-3.03.58-5.334 1.745-6.915s2.869-2.36 5.107-2.36zm-.133 3.03c-.8 0-1.372.346-1.744 1.038s-.604 1.84-.7 3.442h4.676c0-1.56-.18-2.695-.544-3.4s-.927-1.07-1.696-1.07zm-14.29-3.03c2.064 0 3.617.714 4.66 2.14s1.563 3.535 1.563 6.323v1.68h-8.825c.044 3.338.9 5.005 2.536 5.005.66 0 1.152-.202 1.482-.608s.55-1.092.66-2.06h4.084c-.177 1.888-.797 3.322-1.86 4.298s-2.542 1.465-4.43 1.465c-2.282 0-3.972-.73-5.07-2.2s-1.647-3.716-1.647-6.768c0-3.03.58-5.334 1.745-6.915s2.867-2.37 5.105-2.37zm-.133 3.03c-.8 0-1.372.346-1.744 1.038s-.604 1.84-.7 3.442h4.676c0-1.56-.18-2.695-.544-3.4s-.927-1.07-1.696-1.07zm-29.439-8.8v23.513h4.645v-9.55h7.3v-4.15h-7.3v-5.665h7.837v-4.148zm13.7 23.477v-17.2h4.215v2.306c.46-.834 1-1.477 1.647-1.927s1.305-.675 2-.675c.352 0 .747.054 1.185.165l-.493 3.952c-.33-.087-.757-.132-1.285-.132-.792-.018-1.554.306-2.09.89-.56.594-.84 1.33-.84 2.206v10.406h-4.339zm39.813 0v-19.364h-5.335v-4.15h15.315v4.15h-5.336v19.365zm30.792 0-2.832-5.665-2.7 5.665h-4.28l4.84-8.727-4.545-8.464h4.6l2.47 5.204 2.536-5.204h4.282l-4.676 8.234 4.908 8.957zm17.652-23.514h4.644v15.083c0 2.92-.68 5.155-2.04 6.702s-3.328 2.322-5.897 2.322-4.533-.773-5.896-2.322-2.04-3.78-2.04-6.702v-15.083h4.644v15.413c0 1.537.27 2.68.807 3.424s1.366 1.12 2.486 1.12 1.948-.373 2.487-1.12.807-1.887.807-3.424v-15.413zm12.118 13.14c-1.865-.548-3.237-1.377-4.116-2.486s-1.318-2.564-1.318-4.364c0-2.085.682-3.754 2.042-5.005s3.163-1.878 5.4-1.878c2.13 0 3.788.538 4.973 1.614s1.93 2.733 2.24 4.972l-4.414.594c-.22-1.23-.548-2.103-.987-2.62s-1.087-.774-1.943-.774-1.515.247-1.977.74-.7 1.224-.7 2.2c0 .813.175 1.444.527 1.894s.955.806 1.812 1.07l2.503.8c1.338.418 2.415.94 3.227 1.564.783.594 1.397 1.384 1.78 2.29.376.9.56 1.977.56 3.228 0 2.196-.675 3.936-2.025 5.22s-3.179 1.908-5.507 1.908c-4.897 0-7.5-2.547-7.84-7.64h4.612c.1 1.34.422 2.316.938 2.93s1.3.922 2.355.922c.9 0 1.597-.27 2.1-.807s.74-1.312.74-2.322c0-.9-.203-1.614-.6-2.14s-1.048-.92-1.926-1.185l-2.438-.724z" fill="#212f63"/><path d="m140.638 5.893 1.207 4.25h49.07v-4.25zm2.7 9.463 1.213 4.25 46.373-.007v-4.25zm2.79 9.802 1.208 4.25h43.6v-4.25z" fill="#bf2032"/><path d="m195.992 2.462h.33c.364 0 .546-.143.546-.432.005-.113-.036-.223-.115-.304-.076-.076-.212-.115-.406-.115h-.354v.85zm-.52 1.295v-2.577h.964c.27 0 .502.06.698.183s.29.336.29.64c0 .153-.042.294-.126.425s-.2.223-.343.273l.584 1.053h-.584l-.444-.89h-.52v.89h-.52zm.913.774c.255.001.508-.049.743-.147.232-.097.433-.234.6-.412.174-.185.31-.402.4-.64.1-.265.15-.547.147-.831.002-.28-.048-.558-.147-.819-.098-.25-.23-.465-.4-.648-.169-.181-.374-.326-.601-.425-.234-.1-.48-.153-.743-.153-.257-.002-.512.05-.748.153-.224.099-.426.244-.591.425-.169.191-.302.41-.394.648-.097.25-.145.522-.145.82-.004.284.046.565.145.831.098.25.23.462.394.64s.363.316.59.412c.237.1.491.15.748.147zm0 .47c-.318.003-.634-.06-.927-.184-.288-.122-.538-.293-.754-.514-.221-.227-.396-.494-.515-.787-.127-.304-.19-.643-.19-1.015s.062-.71.19-1.016c.12-.293.295-.56.515-.787.215-.22.471-.394.754-.514.288-.123.596-.184.927-.184.32-.002.637.061.933.184.293.123.545.293.76.514s.388.483.515.787.2.643.2 1.016-.063.71-.2 1.015-.298.568-.515.787-.468.392-.76.514c-.295.124-.613.186-.933.184z" fill="#212f63"/></g></svg>
|
||||
|
After Width: | Height: | Size: 4.3 KiB |
15
auth/assets/custom-icons/icons/gateio.svg
Normal file
@@ -0,0 +1,15 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg xmlns:xodm="http://www.corel.com/coreldraw/odm/2003" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="Layer_1" x="0px" y="0px" viewBox="0 0 2500 2500" style="enable-background:new 0 0 2500 2500;" xml:space="preserve">
|
||||
<style type="text/css">
|
||||
.st0{fill:none;}
|
||||
.st1{fill-rule:evenodd;clip-rule:evenodd;fill:#2354E6;}
|
||||
.st2{fill-rule:evenodd;clip-rule:evenodd;fill:#17E6A1;}
|
||||
</style>
|
||||
<g id="Layer_x0020_1">
|
||||
<rect y="0" class="st0" width="2500" height="2500"></rect>
|
||||
<g id="_2500576017504">
|
||||
<path id="Fill-3" class="st1" d="M1250,1937.5c-379.7,0-687.5-307.8-687.5-687.5c0-379.7,307.8-687.5,687.5-687.5V0 C559.6,0,0,559.6,0,1250c0,690.3,559.6,1250,1250,1250c690.3,0,1250-559.6,1250-1250h-562.5 C1937.5,1629.7,1629.7,1937.5,1250,1937.5z"></path>
|
||||
<polygon id="Fill-4" class="st2" points="1250,1250 1937.5,1250 1937.5,562.5 1250,562.5 "></polygon>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 965 B |
1
auth/assets/custom-icons/icons/iconomi.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 35 30" version="1.1" style="zoom: 16;" visibility="visible"><g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" visibility="visible"><g id="Group-8"><g id="Group-7" fill="#3A79F2"><rect id="Rectangle-Copy-20" x="9" y="0" width="6" height="30" rx="3"></rect><rect id="Rectangle-Copy-21" x="27" y="12" width="6" height="9" rx="3"></rect><rect id="Rectangle-Copy-22" x="18" y="12" width="6" height="18" rx="3" visibility="visible"></rect><rect id="Rectangle-Copy-23" x="0" y="21" width="6" height="9" rx="3" visibility="visible"></rect><circle id="Oval-Copy-13" cx="21" cy="6" r="3" visibility="visible"></circle></g></g></g></svg>
|
||||
|
After Width: | Height: | Size: 750 B |
1
auth/assets/custom-icons/icons/linkedin.svg
Normal file
@@ -0,0 +1 @@
|
||||
<?xml version="1.0" ?><svg height="72" viewBox="0 0 72 72" width="72" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd"><path d="M8,72 L64,72 C68.418278,72 72,68.418278 72,64 L72,8 C72,3.581722 68.418278,-8.11624501e-16 64,0 L8,0 C3.581722,8.11624501e-16 -5.41083001e-16,3.581722 0,8 L0,64 C5.41083001e-16,68.418278 3.581722,72 8,72 Z" fill="#007EBB"/><path d="M62,62 L51.315625,62 L51.315625,43.8021149 C51.315625,38.8127542 49.4197917,36.0245323 45.4707031,36.0245323 C41.1746094,36.0245323 38.9300781,38.9261103 38.9300781,43.8021149 L38.9300781,62 L28.6333333,62 L28.6333333,27.3333333 L38.9300781,27.3333333 L38.9300781,32.0029283 C38.9300781,32.0029283 42.0260417,26.2742151 49.3825521,26.2742151 C56.7356771,26.2742151 62,30.7644705 62,40.051212 L62,62 Z M16.349349,22.7940133 C12.8420573,22.7940133 10,19.9296567 10,16.3970067 C10,12.8643566 12.8420573,10 16.349349,10 C19.8566406,10 22.6970052,12.8643566 22.6970052,16.3970067 C22.6970052,19.9296567 19.8566406,22.7940133 16.349349,22.7940133 Z M11.0325521,62 L21.769401,62 L21.769401,27.3333333 L11.0325521,27.3333333 L11.0325521,62 Z" fill="#FFF"/></g></svg>
|
||||
|
After Width: | Height: | Size: 1.1 KiB |
4
auth/assets/custom-icons/icons/luma.svg
Normal file
@@ -0,0 +1,4 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 724 264">
|
||||
<path
|
||||
d="M38.53 260.65H.43V27.86h38.1zm86.46 2.77c-42.25 0-66.48-22.96-66.48-63V89.33h38.1v108.28c0 23.61 8.7 32.39 32.12 32.39 30.35 0 42.73-14.54 42.73-50.17v-90.5h38.1v171.33h-36.54v-29.91c-4.99 22.98-27.12 32.67-48.03 32.67zm347.2-2.77H434.4V149.87c0-22.5-7.01-30.87-25.88-30.87-24.28 0-37.11 14.45-37.11 41.79v99.86h-37.79V149.87c0-21.93-7.23-30.87-24.94-30.87-31.59 0-38.05 32.96-38.05 41.79v99.86h-38.1V89.33h36.54v29.96c6.49-21.02 27.02-33.71 47.72-33.71 20.69 0 38.09 7.9 45.64 33.71 10.13-26.76 28.35-33.71 50.15-33.71 37.88 0 59.61 18.88 59.61 51.81v123.26h0zm76.65 2.77c-52.62 0-61.55-33.45-61.55-50.52 0-20.1 8.83-38.21 27.93-45.55 8.41-3.11 16.52-5.43 24.84-7.1 7.33-1.47 18.64-3.03 26.91-4.17l2.73-.38c14.38-2 29.67-9.21 29.67-18.62 0-16-20.51-18.39-32.74-18.39-13.87 0-23.64 3.57-27.53 10.05-3.49 6.46-3.73 7.97-4.62 13.6l-.62 4.43h-38.1l.68-5.61c1.35-11.14 3.41-19.03 6.48-24.83 10.54-20.39 31.77-30.75 63.08-30.75 26.11 0 44.63 8.23 53.26 15.94 5.31 4.6 9.1 9.84 11.89 16.46 5.84 12.36 6.32 20.63 6.32 29.4v86.43c0 8.07.78 14.97 2.31 20.5l1.76 6.35h-38.91l-.7-4.19c-.5-2.96-.67-19.75-.88-26.23-8.99 23.61-28.27 33.18-52.21 33.18zm50.53-93.72c-7.97 6.11-20.47 9.6-38.62 13.23-31.27 5.78-36.54 13.06-36.54 27.22 0 12.5 10.63 20.26 27.75 20.26 33.23 0 47.41-15.48 47.41-51.77v-8.94zm124.2-105.51C688.46 64.19 660 35.73 660 .62c0 35.11-28.46 63.57-63.57 63.57h0c35.11 0 63.57 28.46 63.57 63.57h0c0-35.11 28.46-63.57 63.57-63.57z" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.5 KiB |
15
auth/assets/custom-icons/icons/mexc.svg
Normal file
@@ -0,0 +1,15 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg xmlns:xodm="http://www.corel.com/coreldraw/odm/2003" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="Layer_1" x="0px" y="0px" viewBox="0 450 2500 1650" style="enable-background:new 0 0 2500 2500;" xml:space="preserve">
|
||||
<rect y="250" width="2500" height="1650" style="fill:none;"></rect>
|
||||
<g id="_2500406570000">
|
||||
<path d="M2459.7,1566.6l-540.6-937.7c-118.5-195.5-407.5-197.5-521.9,8.3l-567.6,975.2c-106,178.8,25,403.3,237.1,403.3H2204C2418.1,2015.7,2578.2,1784.9,2459.7,1566.6z" style="fill:#3156AA;"></path>
|
||||
<path d="M1680,1639.4l-33.3-58.2c-31.2-54.1-99.8-170.5-99.8-170.5l-457.4-794.3C971,439.7,690.3,425.1,571.8,647.6L39.5,1568.7c-110.2,193.4,20.8,444.9,259.9,447h1131.1h482.4h286.9C1906.7,2017.8,1813.1,1866,1680,1639.4L1680,1639.4z" style="fill:#1972E2;"></path>
|
||||
|
||||
<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="703.637" y1="1211.6566" x2="1935.647" y2="727.2267" gradientTransform="matrix(1 0 0 -1 0 2497.8899)">
|
||||
<stop offset="0" style="stop-color:#264CA2;stop-opacity:0;"></stop>
|
||||
<stop offset="1" style="stop-color:#234588;"></stop>
|
||||
</linearGradient>
|
||||
|
||||
<path d="M1680.1,1639.4l-33.3-58.2c-31.2-54.1-99.8-170.5-99.8-170.5l-295.3-519.8l-424.2,723.6c-106,178.8,25,403.4,237,403.4h363.9h482.4h289C1904.6,2015.7,1813.1,1866,1680.1,1639.4L1680.1,1639.4z" style="fill:url(#SVGID_1_);"></path>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.5 KiB |
22
auth/assets/custom-icons/icons/noip.svg
Normal file
@@ -0,0 +1,22 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="Layer_1" x="0px" y="0px" width="100%" viewBox="0 0 200 200" enable-background="new 0 0 200 200" xml:space="preserve">
|
||||
<path fill="#E9EAE8" opacity="1.000000" stroke="none" d=" M1.000001,121.000000 C1.000000,107.979103 1.000000,94.958214 1.330396,81.781845 C2.105629,80.808945 2.781408,80.039177 2.961370,79.167091 C6.970184,59.740398 16.508305,43.142090 30.377947,29.382053 C43.761433,16.104332 59.986267,7.182058 78.573097,2.942371 C79.482437,2.734949 80.195526,1.667158 81.000000,1.000001 C94.020897,1.000000 107.041786,1.000000 120.216652,1.335631 C126.713715,3.778750 133.179947,5.577904 139.376389,8.052591 C156.703827,14.972685 171.012131,25.956200 181.986893,41.089684 C190.099167,52.275986 196.134094,64.470306 199.117294,78.069069 C199.211044,78.496483 200.348892,78.694855 201.000000,79.000000 C201.000000,93.354225 201.000000,107.708458 200.669632,122.218155 C199.894424,123.189087 199.220856,123.956680 199.038727,124.827095 C195.802597,140.292557 188.666824,153.987869 178.511795,165.781891 C164.123367,182.492554 146.476486,194.499832 124.422401,199.082748 C123.840591,199.203659 123.469414,200.338181 123.000000,201.000000 C108.645775,201.000000 94.291542,201.000000 79.781174,200.674042 C78.977226,199.905136 78.385597,199.219894 77.673386,199.054794 C61.298405,195.258774 46.725803,187.667160 34.294682,176.602264 C18.003170,162.101318 7.102591,144.135208 2.914476,122.432388 C2.802733,121.853340 1.661271,121.473000 1.000001,121.000000 M162.957382,65.141830 C157.650208,70.691360 152.343033,76.240898 146.301605,81.755386 C145.732269,82.047028 145.042847,82.218056 144.611099,82.647896 C132.762451,94.444138 120.925987,106.252800 109.147583,118.119026 C108.427895,118.844093 108.202583,120.059868 107.093681,121.126122 C94.730469,133.412537 82.367249,145.698959 69.317253,158.025375 C62.966175,164.528809 56.615101,171.032227 49.973309,177.833344 C51.968117,178.908905 53.966496,179.986389 56.373127,181.619629 C60.931099,183.466125 65.489067,185.312622 70.530418,187.664200 C78.728378,189.429962 86.926338,191.195740 96.041878,193.048172 C135.589554,194.037872 165.346161,177.209564 183.339188,142.206635 C198.044006,113.600494 197.050034,84.312935 180.956207,55.283768 C179.868546,53.520458 178.780869,51.757149 177.222046,49.229988 C172.345459,54.885849 167.967255,59.963684 162.957382,65.141830 M108.466240,57.866222 C108.959000,57.471405 109.451752,57.076591 110.380226,56.193321 C112.081604,54.903320 113.950760,53.783173 115.456879,52.295490 C124.572472,43.291451 133.611420,34.209698 142.658142,25.136135 C143.883804,23.906826 145.009445,22.577780 146.408920,21.045849 C134.481003,14.180294 122.154709,10.443705 109.110474,9.413567 C92.088882,8.069327 75.690033,10.494845 59.889217,19.071775 C52.575058,24.411427 45.260902,29.751078 37.284908,35.186230 C4.630878,65.629463 1.719374,115.370926 21.645718,146.481766 C27.512495,140.245255 33.273243,134.121445 39.623917,127.697594 C47.726917,119.475052 55.829922,111.252510 64.624794,103.006409 C66.467079,100.992920 68.309372,98.979439 70.717163,96.651299 C82.356544,85.062904 94.022423,73.500809 105.590721,61.841888 C106.646294,60.778049 107.076263,59.093464 107.883652,57.776287 C107.883652,57.776287 107.786400,57.842323 108.466240,57.866222 z"/>
|
||||
<path fill="#ffffff" opacity="1.000000" stroke="none" d=" M80.531342,1.000001 C80.195526,1.667158 79.482437,2.734949 78.573097,2.942371 C59.986267,7.182058 43.761433,16.104332 30.377947,29.382053 C16.508305,43.142090 6.970184,59.740398 2.961370,79.167091 C2.781408,80.039177 2.105629,80.808945 1.330396,81.313187 C1.000000,54.406445 1.000000,27.812887 1.000000,1.000000 C27.353823,1.000000 53.708252,1.000000 80.531342,1.000001 z"/>
|
||||
<path fill="#ffffff" opacity="1.000000" stroke="none" d=" M201.000000,78.531342 C200.348892,78.694855 199.211044,78.496483 199.117294,78.069069 C196.134094,64.470306 190.099167,52.275986 181.986893,41.089684 C171.012131,25.956200 156.703827,14.972685 139.376389,8.052591 C133.179947,5.577904 126.713715,3.778750 120.685310,1.335631 C147.592621,1.000000 174.185257,1.000000 201.000000,1.000000 C201.000000,26.687134 201.000000,52.374908 201.000000,78.531342 z"/>
|
||||
<path fill="#ffffff" opacity="1.000000" stroke="none" d=" M1.000001,121.468658 C1.661271,121.473000 2.802733,121.853340 2.914476,122.432388 C7.102591,144.135208 18.003170,162.101318 34.294682,176.602264 C46.725803,187.667160 61.298405,195.258774 77.673386,199.054794 C78.385597,199.219894 78.977226,199.905136 79.312515,200.674042 C53.072189,201.000000 27.144375,201.000000 1.000000,201.000000 C1.000000,174.646164 1.000000,148.291748 1.000001,121.468658 z"/>
|
||||
<path fill="#ffffff" opacity="1.000000" stroke="none" d=" M123.468658,201.000000 C123.469414,200.338181 123.840591,199.203659 124.422401,199.082748 C146.476486,194.499832 164.123367,182.492554 178.511795,165.781891 C188.666824,153.987869 195.802597,140.292557 199.038727,124.827095 C199.220856,123.956680 199.894424,123.189087 200.669632,122.686813 C201.000000,148.926880 201.000000,174.853760 201.000000,201.000000 C175.312851,201.000000 149.625092,201.000000 123.468658,201.000000 z"/>
|
||||
<path fill="#90BF02" opacity="1.000000" stroke="none" d=" M70.151657,96.965950 C68.309372,98.979439 66.467079,100.992920 64.276588,102.547241 C63.928383,86.369431 63.928383,70.650787 63.928383,54.871948 C55.257160,54.871948 47.224957,54.871948 39.033997,54.871948 C39.033997,79.516510 39.033997,103.757080 39.033997,127.997643 C33.273243,134.121445 27.512495,140.245255 21.645718,146.481766 C1.719374,115.370926 4.630878,65.629463 37.719608,35.462364 C39.135883,36.852516 39.984581,38.130096 41.121098,39.053391 C47.414471,44.166069 58.368134,43.270470 63.330196,37.318970 C67.946770,31.781837 66.780022,24.056263 60.570244,19.044075 C75.690033,10.494845 92.088882,8.069327 109.110474,9.413567 C122.154709,10.443705 134.481003,14.180294 146.408920,21.045849 C145.009445,22.577780 143.883804,23.906826 142.658142,25.136135 C133.611420,34.209698 124.572472,43.291451 115.456879,52.295490 C113.950760,53.783173 112.081604,54.903320 109.848991,56.507885 C108.807304,57.162407 108.296852,57.502369 107.786400,57.842323 C107.786400,57.842323 107.883652,57.776287 107.499512,57.814442 C103.123413,60.609695 99.131447,63.366795 95.061790,66.177551 C94.532784,62.603703 94.002762,59.023003 93.451675,55.299969 C85.547775,55.299969 77.881607,55.299969 70.151657,55.299969 C70.151657,69.433502 70.151657,83.199722 70.151657,96.965950 z"/>
|
||||
<path fill="#90BE02" opacity="1.000000" stroke="none" d=" M181.064896,55.965897 C197.050034,84.312935 198.044006,113.600494 183.339188,142.206635 C165.346161,177.209564 135.589554,194.037872 95.558487,192.539490 C95.011642,175.365601 94.948189,158.700363 94.957329,141.656860 C95.029930,139.761459 95.029930,138.244339 95.029930,136.217133 C96.400269,137.088867 97.162216,137.573578 98.053833,138.371689 C101.904762,140.815338 105.425377,143.476242 109.385910,144.973618 C120.098732,149.023911 131.263062,149.217529 142.344849,146.892456 C159.790939,143.232071 172.455902,133.383316 177.684326,116.021088 C182.850937,98.864090 180.467819,82.760155 167.840240,68.827202 C167.809296,68.599007 167.711411,68.148964 168.030243,67.993683 C172.587692,63.880894 176.826294,59.923397 181.064896,55.965897 z"/>
|
||||
<path fill="#FFFFFF" opacity="1.000000" stroke="none" d=" M39.328957,127.847618 C39.033997,103.757080 39.033997,79.516510 39.033997,54.871948 C47.224957,54.871948 55.257160,54.871948 63.928383,54.871948 C63.928383,70.650787 63.928383,86.369431 63.930653,102.559021 C55.829922,111.252510 47.726917,119.475052 39.328957,127.847618 z"/>
|
||||
<path fill="#FFFFFF" opacity="1.000000" stroke="none" d=" M94.884727,142.035141 C94.948189,158.700363 95.011642,175.365601 95.099701,192.496170 C86.926338,191.195740 78.728378,189.429962 70.271156,186.931229 C69.954536,179.802521 69.897171,173.406799 69.921326,166.764832 C70.056465,166.354218 70.110100,166.189819 70.436935,165.848373 C78.768333,157.792603 86.826530,149.913879 94.884727,142.035141 z"/>
|
||||
<path fill="#FFFFFE" opacity="1.000000" stroke="none" d=" M70.434410,96.808624 C70.151657,83.199722 70.151657,69.433502 70.151657,55.299969 C77.881607,55.299969 85.547775,55.299969 93.451675,55.299969 C94.002762,59.023003 94.532784,62.603703 95.061790,66.177551 C99.131447,63.366795 103.123413,60.609695 107.456062,57.774864 C107.076263,59.093464 106.646294,60.778049 105.590721,61.841888 C94.022423,73.500809 82.356544,85.062904 70.434410,96.808624 z"/>
|
||||
<path fill="#FEFEFD" opacity="1.000000" stroke="none" d=" M60.229729,19.057926 C66.780022,24.056263 67.946770,31.781837 63.330196,37.318970 C58.368134,43.270470 47.414471,44.166069 41.121098,39.053391 C39.984581,38.130096 39.135883,36.852516 38.050526,35.414612 C45.260902,29.751078 52.575058,24.411427 60.229729,19.057926 z"/>
|
||||
<path fill="#E5E5E4" opacity="1.000000" stroke="none" d=" M94.957329,141.656860 C86.826530,149.913879 78.768333,157.792603 70.368210,165.406586 C70.018867,162.756363 70.011452,160.370865 70.004036,157.985382 C82.367249,145.698959 94.730469,133.412537 107.756348,121.164223 C109.639374,121.798706 110.859749,122.395088 112.115219,123.158279 C112.150314,123.325104 112.155739,123.666389 112.012955,123.992271 C107.221497,128.898193 102.572823,133.478241 97.924149,138.058289 C97.162216,137.573578 96.400269,137.088867 95.029930,136.217133 C95.029930,138.244339 95.029930,139.761459 94.957329,141.656860 z"/>
|
||||
<path fill="#81AB00" opacity="1.000000" stroke="none" d=" M112.080116,122.991463 C110.859749,122.395088 109.639374,121.798706 108.083130,121.124825 C108.202583,120.059868 108.427895,118.844093 109.147583,118.119026 C120.925987,106.252800 132.762451,94.444138 144.611099,82.647896 C145.042847,82.218056 145.732269,82.047028 146.827606,82.054634 C148.247528,83.549278 149.141449,84.744675 149.880432,86.239487 C138.292679,98.049911 126.875618,109.576714 115.395844,121.040718 C114.517334,121.918007 113.195747,122.351624 112.080116,122.991463 z"/>
|
||||
<path fill="#90BE03" opacity="1.000000" stroke="none" d=" M69.839813,167.011063 C69.897171,173.406799 69.954536,179.802521 70.029465,186.678680 C65.489067,185.312622 60.931099,183.466125 56.322063,181.041183 C60.793938,175.978851 65.316872,171.494949 69.839813,167.011063 z"/>
|
||||
<path fill="#82AC01" opacity="1.000000" stroke="none" d=" M69.921326,166.764832 C65.316872,171.494949 60.793938,175.978851 56.117935,180.763306 C53.966496,179.986389 51.968117,178.908905 49.973309,177.833344 C56.615101,171.032227 62.966175,164.528809 69.660645,158.005371 C70.011452,160.370865 70.018867,162.756363 70.095001,165.583633 C70.110100,166.189819 70.056465,166.354218 69.921326,166.764832 z"/>
|
||||
<path fill="#E3E4E0" opacity="1.000000" stroke="none" d=" M150.035370,85.940079 C149.141449,84.744675 148.247528,83.549278 147.194733,82.072159 C152.343033,76.240898 157.650208,70.691360 163.580933,65.209869 C165.373459,66.234924 166.542435,67.191940 167.711411,68.148964 C167.711411,68.148964 167.809296,68.599007 167.557053,68.983429 C161.830566,74.973953 156.356323,80.580055 150.670471,86.124481 C150.458832,86.062805 150.035370,85.940079 150.035370,85.940079 z"/>
|
||||
<path fill="#82AC02" opacity="1.000000" stroke="none" d=" M168.030243,67.993683 C166.542435,67.191940 165.373459,66.234924 163.896759,65.159714 C167.967255,59.963684 172.345459,54.885849 177.222046,49.229988 C178.780869,51.757149 179.868546,53.520458 181.010559,55.624832 C176.826294,59.923397 172.587692,63.880894 168.030243,67.993683 z"/>
|
||||
<path fill="#FFFFFE" opacity="1.000000" stroke="none" d=" M108.126320,57.854275 C108.296852,57.502369 108.807304,57.162407 109.631134,56.752113 C109.451752,57.076591 108.959000,57.471405 108.126320,57.854275 z"/>
|
||||
<path fill="#FEFEFC" opacity="1.000000" stroke="none" d=" M150.882095,86.186157 C156.356323,80.580055 161.830566,74.973953 167.587982,69.211624 C180.467819,82.760155 182.850937,98.864090 177.684326,116.021088 C172.455902,133.383316 159.790939,143.232071 142.344849,146.892456 C131.263062,149.217529 120.098732,149.023911 109.385910,144.973618 C105.425377,143.476242 101.904762,140.815338 98.053833,138.371689 C102.572823,133.478241 107.221497,128.898193 112.397583,124.067833 C114.508804,124.310890 116.064545,124.938728 117.680908,125.276192 C129.675720,127.780441 140.746811,126.206741 149.044968,116.391853 C156.985992,106.999374 156.451813,96.634232 150.882095,86.186157 z"/>
|
||||
<path fill="#90BF02" opacity="1.000000" stroke="none" d=" M150.670471,86.124481 C156.451813,96.634232 156.985992,106.999374 149.044968,116.391853 C140.746811,126.206741 129.675720,127.780441 117.680908,125.276192 C116.064545,124.938728 114.508804,124.310890 112.540359,123.741951 C112.155739,123.666389 112.150314,123.325104 112.115219,123.158279 C113.195747,122.351624 114.517334,121.918007 115.395844,121.040718 C126.875618,109.576714 138.292679,98.049911 149.880432,86.239487 C150.035370,85.940079 150.458832,86.062805 150.670471,86.124481 z"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 13 KiB |
1
auth/assets/custom-icons/icons/prey_project.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg enable-background="new 0 0 512 512" height="512" viewBox="0 0 512 512" width="512" xmlns="http://www.w3.org/2000/svg"><path d="m256.024 29.736-80.851 46.679 53.892 31.112 26.887-15.556 27.017 15.548 53.881-31.119z" fill="#3c77b9"/><path d="m256.036 512 202.079-116.681-.006-124.454-53.912 31.115.019 62.224-148.204 85.569-148.221-85.586-.005-62.221-53.871-31.102v124.442z" fill="#3c77b9"/><path d="m215.607 301.986-53.91 31.117 94.318 54.433 94.288-54.443-53.879-31.118 188.657-108.927-.041-62.184 26.96-15.564-.021-77.759-229.045 132.233-26.929-15.554-26.949 15.554-229.056-132.222v77.789l26.98 15.574-.01 62.153z" fill="#1f2938"/></svg>
|
||||
|
After Width: | Height: | Size: 643 B |
1
auth/assets/custom-icons/icons/realvnc.svg
Normal file
|
After Width: | Height: | Size: 18 KiB |
7
auth/assets/custom-icons/icons/runescape_wiki.svg
Normal file
@@ -0,0 +1,7 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="35" height="35" viewBox="0 0 35 35">
|
||||
<g fill="#438ab5" fill-rule="evenodd" transform="translate(4 1)">
|
||||
<path d="M11.7311354 23.0557769L9.91249858 23.0557769 8.79846449 26.6069057 6.97030597 23 6.79891611 23 4.98027925 26.6347942 3.85672349 23.0557769 2 23.0557769 4.54228294 29.9814077 4.75175943 30 6.86556772 25.9189907 9.00794098 30 9.22693914 29.9814077 11.7311354 23.0557769zM14.3322795 29.8698539L14.3322795 23.0557769 12.7135975 23.0557769 12.7135975 29.8698539 14.3322795 29.8698539zM22.2084227 29.8698539L19.1900568 26.3001328 22.0560762 23.0557769 20.1422227 23.0557769 17.6951564 26.0212483 17.6951564 23.0557769 16.0764744 23.0557769 16.0764744 29.8698539 17.6951564 29.8698539 17.6951564 26.6812749 20.2564826 29.8698539 22.2084227 29.8698539zM25 29.8698539L25 23.0557769 23.381318 23.0557769 23.381318 29.8698539 25 29.8698539zM24.4742178 8.98009586L24.4742178 5.59616787C24.4732494 5.5136357 24.4163953 5.44228159 24.3362569 5.42252065 23.0272354 5.11977548 21.7162784 4.97854841 20.4033857 4.99883944 18.3648587 5.0303453 15.6405277 6.73541461 15.8150159 9.26543298 15.9313414 10.9521119 16.9379659 12.3146739 18.8348893 13.3531189 21.1050121 14.6587079 22.1112168 16.0505228 21.8535034 17.5285637 21.4669332 19.7456249 19.4833026 20.2699349 18.2011186 20.9636596 19.8933668 21.0568854 21.1108284 20.9541788 21.8535034 20.6555398 23.5576643 19.970275 24.621281 18.4776117 24.8765595 17.2814785 25.5814 13.9788769 23.0921699 12.4640398 21.8535034 11.6272857 20.6148368 10.7905315 18.5555838 9.39712448 18.5555838 8.2423436 18.5555838 7.08756273 19.0354769 6.19945178 20.606059 5.98878728 22.2560942 5.76746561 23.8084838 6.80552306 24.0666162 8.65926511 24.1000214 8.89915966 24.2358886 9.00610324 24.4742178 8.98009586z"/>
|
||||
<path d="M12.1896778,5.73473633 C12.2458703,5.76929923 12.2836806,5.79287044 12.3031088,5.80544997 C13.8305405,6.79444234 14.5459886,7.96859313 14.4494531,9.32790236 C14.3458984,10.7860487 13.4278718,12.1833682 11.6953731,13.5198609 C11.995423,13.6024263 13.0716006,15.2517434 14.923906,18.4678119 C15.9400176,19.5870375 17.2645126,20.0440386 18.8973912,19.8388151 C17.7166822,20.6938532 16.5941307,21.0918329 15.5297368,21.032754 C13.9331458,20.9441357 12.5153495,20.0153267 11.6953731,18.9752651 C10.8753968,17.9352035 9.17647457,14.3916396 8.02078511,13.3656207 C9.24887971,13.3176267 10.0712516,13.0717507 10.4879009,12.6279929 C11.0163711,12.0651387 11.4324817,11.1727564 11.3052905,9.86386602 C11.242381,9.21648063 10.8576813,8.46000935 10.2600254,7.66096138 C10.1677374,7.53757512 10.1984144,7.42387917 10.3520565,7.31987355 C10.8366434,7.01067102 11.3224095,6.50739801 11.8093549,5.81005452 L11.8102004,5.81066099 C11.8971472,5.68944809 12.0629706,5.65600737 12.1900999,5.73404867 Z"/>
|
||||
<path d="M5.46922112,0 C5.93751334,0 6.45488645,0.251926659 6.49405028,0.821037745 C6.52015951,1.20044514 6.40971704,1.46961432 6.16272288,1.62854529 L6.36548563,4.50160863 L9.73880697,4.59010439 C9.80515586,4.59184498 9.86880672,4.61673544 9.91873596,4.66046503 L10.8936611,5.51433494 C11.0118247,5.61782632 11.0237189,5.79751318 10.9202275,5.91567678 C10.9171724,5.91916507 10.9140324,5.92257811 10.9108103,5.92591286 L10.3160188,6.541511 C10.2118589,6.64931459 10.0419078,6.65776756 9.92756462,6.56083181 L9.4018415,6.11514401 L9.4018415,6.11514401 L7.33749093,6.11514401 C6.98986751,6.27375711 6.78712075,6.48688034 6.72925065,6.75451369 C6.67138054,7.02214704 6.66841118,9.38843602 6.72034254,13.8533806 C6.72034254,15.5011837 6.88214839,17.3116009 7.20576008,19.2846324 L5.58460752,21.9888272 L3.70958016,19.2846324 C4.08537518,17.1566151 4.27327269,15.282922 4.27327269,13.6635531 L3.43377358,12.9035744 L4.28218079,12.0252455 C4.31100967,8.71955904 4.31100967,6.96264844 4.28218079,6.75451369 C4.23893746,6.44231156 4.03865152,6.30830705 3.71848826,6.11514401 L1.69132923,6.11514401 L1.15474102,6.5615377 C1.03891569,6.65789407 0.868043682,6.64720638 0.765127903,6.53716821 L0.191996049,5.92437216 C0.0855950374,5.81060756 0.0905023165,5.63241981 0.203003442,5.52468375 L1.09677655,4.66876709 C1.14782548,4.61988037 1.2152487,4.59175365 1.28590527,4.58986886 L4.5946007,4.50160863 L4.5946007,4.50160863 L4.76223107,1.62854529 C4.55067524,1.43081789 4.44489732,1.16164871 4.44489732,0.821037745 C4.44489732,0.310121294 5.0009289,0 5.46922112,0 Z"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 4.3 KiB |
13
auth/assets/custom-icons/icons/seafile.svg
Normal file
@@ -0,0 +1,13 @@
|
||||
<svg version="1.2" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 180 120" width="180" height="120">
|
||||
<title>seafile</title>
|
||||
<defs>
|
||||
<linearGradient id="g1" x2="1" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0,114.369,-177.525,0,89.989,2.834)">
|
||||
<stop offset="0" stop-color="#fad956"/>
|
||||
<stop offset="1" stop-color="#ffa10f"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<style>
|
||||
.s0 { fill: url(#g1) }
|
||||
</style>
|
||||
<path class="s0" d="m1.2 52.8c0-3 2.4-5.4 5.4-5.4 1.4 0 2.7 0.6 3.6 1.5q0-0.7 0-1.4c0-9.9 8-17.9 17.9-17.9 2.5 0 4.9 0.5 7.1 1.5q0-0.8 0-1.5c0-14.8 12-26.8 26.8-26.8 14.7 0 26.6 11.9 26.8 26.6-4.8 4.2-8.7 9.6-11.2 15.7-4.8-3-10.4-4.8-16.5-4.8-12.4 0-23.2 7.1-28.3 17.8h-19.1-7.1c-3 0-5.4-2.4-5.4-5.3zm141.2-16c-6.6-6.7-15.8-10.8-25.9-10.8-18.5 0-33.8 13.7-36.3 31.5-4.5-6.1-11.8-10-20-10-13.8 0-25 11.2-25 25 0 4 0.9 7.8 2.6 11.2-8.7 1.7-15.1 8.5-15.1 16.5 0 9.4 8.8 17 19.7 17 4.7 0 9.1-1.5 12.6-4l40.2-39.5c4.4-4.1 10.3-6.6 16.8-6.6 13.6 0 24.7 10.9 25.1 24.4q0 0-0.1-0.1c0.2 4-1.8 8.1-5.7 10.3-5.3 3.1-12 1.4-15-3.7-2.9-5.1-1-11.7 4.4-14.8q1.9-1.1 3.9-1.4-1.8-0.4-3.6-0.4c-9.9 0-17.9 8-17.9 17.9 0 9.9 8 17.9 17.9 17.9q0.6 0 1.3-0.1l0.5-0.1h35.1v0.2c10.7-0.5 20.9-10.4 20.9-22.5 0-12.3-10.6-22.4-22.9-22.4q-0.1 0-0.1 0c-2 3.6-4.4 5.7-7.1 7.9 2.8-5.2 4.5-11.2 4.5-17.6-0.1-10.1-4.2-19.2-10.8-25.8z"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.3 KiB |
8
auth/assets/custom-icons/icons/workflowy.svg
Normal file
@@ -0,0 +1,8 @@
|
||||
<svg width="34" height="34" viewBox="0 0 34 34" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M6.625 2.77295H30.3256C31.8396 2.77295 33.0669 3.99814 33.0669 5.5095C33.0669 7.02087 31.8396 8.24604 30.3256 8.24604H6.625V2.77295Z" fill="#B2CADB"/>
|
||||
<path d="M12.4502 14.5747H30.3256C31.8396 14.5747 33.0669 15.7999 33.0669 17.3113C33.0669 18.8226 31.8396 20.0478 30.3256 20.0478H12.4502V14.5747Z" fill="#B2CADB"/>
|
||||
<path d="M6.625 26.376H30.3256C31.8396 26.376 33.0669 27.6012 33.0669 29.1125C33.0669 30.6239 31.8396 31.8491 30.3256 31.8491H6.625V26.376Z" fill="#B2CADB"/>
|
||||
<path d="M4.74009 10.2417C7.35797 10.2417 9.48018 8.12317 9.48018 5.50979C9.48018 2.8964 7.35797 0.777832 4.74009 0.777832C2.12221 0.777832 0 2.8964 0 5.50979C0 8.12317 2.12221 10.2417 4.74009 10.2417Z" fill="#47525B"/>
|
||||
<path d="M13.4208 22.043C16.0387 22.043 18.1609 19.9244 18.1609 17.3111C18.1609 14.6977 16.0387 12.5791 13.4208 12.5791C10.8029 12.5791 8.68066 14.6977 8.68066 17.3111C8.68066 19.9244 10.8029 22.043 13.4208 22.043Z" fill="#47525B"/>
|
||||
<path d="M4.74009 33.8448C7.35797 33.8448 9.48018 31.7262 9.48018 29.1128C9.48018 26.4994 7.35797 24.3809 4.74009 24.3809C2.12221 24.3809 0 26.4994 0 29.1128C0 31.7262 2.12221 33.8448 4.74009 33.8448Z" fill="#47525B"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.2 KiB |
@@ -8,6 +8,7 @@ import 'package:ente_auth/utils/package_info_util.dart';
|
||||
import 'package:ente_auth/utils/platform_util.dart';
|
||||
import 'package:fk_user_agent/fk_user_agent.dart';
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:native_dio_adapter/native_dio_adapter.dart';
|
||||
import 'package:uuid/uuid.dart';
|
||||
|
||||
int kConnectTimeout = 15000;
|
||||
@@ -50,6 +51,10 @@ class Network {
|
||||
},
|
||||
),
|
||||
);
|
||||
|
||||
_dio.httpClientAdapter = NativeAdapter();
|
||||
_enteDio.httpClientAdapter = NativeAdapter();
|
||||
|
||||
_setupInterceptors(endpoint);
|
||||
|
||||
Bus.instance.on<EndpointUpdatedEvent>().listen((event) {
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
import 'package:ente_auth/events/event.dart';
|
||||
|
||||
class OpenedSettingsEvent extends Event {}
|
||||
@@ -1,17 +0,0 @@
|
||||
import 'dart:typed_data';
|
||||
|
||||
import "package:json_annotation/json_annotation.dart";
|
||||
|
||||
class Uint8ListConverter implements JsonConverter<Uint8List, List<int>> {
|
||||
const Uint8ListConverter();
|
||||
|
||||
@override
|
||||
Uint8List fromJson(List<int>? json) {
|
||||
return json == null ? Uint8List(0) : Uint8List.fromList(json);
|
||||
}
|
||||
|
||||
@override
|
||||
List<int> toJson(Uint8List object) {
|
||||
return object.toList();
|
||||
}
|
||||
}
|
||||
@@ -482,7 +482,6 @@
|
||||
"importFailureDescNew": "تعذر إعراب الملف المنتقى.",
|
||||
"duplicateCodes": "رموز مكررة",
|
||||
"noDuplicates": "✨ لا تكرارات",
|
||||
"youveNoDuplicateCodesThatCanBeCleared": "ليس لديك رموز مكررة يمكن مسحها",
|
||||
"deselectAll": "ألغِ تحديد الكل",
|
||||
"selectAll": "حدد الكل",
|
||||
"deleteDuplicates": "احذف التكرار"
|
||||
|
||||
@@ -499,10 +499,11 @@
|
||||
"appLockOfflineModeWarning": "Избрахте да продължите без резервни копия. Ако забравите паролата на приложението си, ще бъдете заключени от достъп до вашите данни.",
|
||||
"duplicateCodes": "Повтарящи се кодове",
|
||||
"noDuplicates": "✨ Няма дубликати",
|
||||
"youveNoDuplicateCodesThatCanBeCleared": "Нямате повтарящи се кодове, които могат да бъдат изчистени",
|
||||
"deduplicateCodes": "Премахване на повтарящи се кодове",
|
||||
"deselectAll": "Демаркиране на всички",
|
||||
"selectAll": "Избиране на всички",
|
||||
"deleteDuplicates": "Изтриване на дубликатите",
|
||||
"plainHTML": "Обикновен HTML"
|
||||
"plainHTML": "Обикновен HTML",
|
||||
"tellUsWhatYouThink": "Кажете ни какво мислите",
|
||||
"freeStorageOfferDescription": "Използвайте промокод „AUTH“, за да получите 10% отстъпка през първата година"
|
||||
}
|
||||
@@ -88,6 +88,8 @@
|
||||
"useRecoveryKey": "Usa la clau de recuperació",
|
||||
"incorrectPasswordTitle": "Contrasenya incorrecta",
|
||||
"welcomeBack": "Benvingut de nou!",
|
||||
"emailAlreadyRegistered": "El correu electrònic ja està registrat.",
|
||||
"emailNotRegistered": "El correu electrònic no està registrat.",
|
||||
"madeWithLoveAtPrefix": "fet amb ❤️ a ",
|
||||
"supportDevs": "Subscriu-te a <bold-green>ente</bold-green> per donar-nos suport",
|
||||
"supportDiscount": "Usa el codi de descompte \"AUTH\" per obtenir un 10% de descompte el primer any",
|
||||
@@ -497,10 +499,17 @@
|
||||
"appLockOfflineModeWarning": "Has triat procedir sense còpies de seguretat. Si oblides el bloqueig de l'aplicació, no podràs accedir a les teves dades.",
|
||||
"duplicateCodes": "Codis duplicats",
|
||||
"noDuplicates": "✨ Sense duplicats",
|
||||
"youveNoDuplicateCodesThatCanBeCleared": "No teniu codis duplicats que es puguin esborrar",
|
||||
"deduplicateCodes": "Desduplica codis",
|
||||
"deselectAll": "Desselecciona-ho tot",
|
||||
"selectAll": "Seleccionar-ho tot",
|
||||
"deleteDuplicates": "Elimina duplicats",
|
||||
"plainHTML": "HTML pla"
|
||||
"plainHTML": "HTML pla",
|
||||
"tellUsWhatYouThink": "Digueu-nos què us sembla",
|
||||
"dropReview": "Deixa una ressenya a l'App/Play Store",
|
||||
"supportEnte": "Donar suport a <bold-green>ente</bold-green>",
|
||||
"giveUsAStarOnGithub": "Dona'ns una estrella a Github",
|
||||
"free5GB": "5 GB gratuïts a <bold-green>ente</bold-green> Photos",
|
||||
"loginWithAuthAccount": "Inicieu sessió amb el vostre compte Auth",
|
||||
"freeStorageOffer": "10% de descompte a <bold-green>ente</bold-green> photos",
|
||||
"freeStorageOfferDescription": "Utilitzeu el codi \"AUTH\" per obtenir un 10% de descompte el primer any"
|
||||
}
|
||||
@@ -495,7 +495,6 @@
|
||||
"appLockOfflineModeWarning": "Zvolili jste si pokračování bez zálohování. Pokud zapomenete heslo do aplikace, přístup k datům bude uzamčen.",
|
||||
"duplicateCodes": "Duplikovat kódy",
|
||||
"noDuplicates": "✨ Žádné duplikáty",
|
||||
"youveNoDuplicateCodesThatCanBeCleared": "Nemáte žádné duplicitní kódy k odstranění",
|
||||
"deduplicateCodes": "Deduplikovat kódy",
|
||||
"deselectAll": "Zrušit výběr všech položek",
|
||||
"selectAll": "Vybrat vše",
|
||||
|
||||
@@ -88,6 +88,8 @@
|
||||
"useRecoveryKey": "Wiederherstellungsschlüssel verwenden",
|
||||
"incorrectPasswordTitle": "Falsches Passwort",
|
||||
"welcomeBack": "Willkommen zurück!",
|
||||
"emailAlreadyRegistered": "E-Mail ist bereits registriert.",
|
||||
"emailNotRegistered": "E-Mail-Adresse nicht registriert.",
|
||||
"madeWithLoveAtPrefix": "gemacht mit ❤️ bei ",
|
||||
"supportDevs": "Bei <bold-green>ente</bold-green> registrieren, um das Projekt zu unterstützen",
|
||||
"supportDiscount": "Benutzen Sie den Rabattcode \"AUTH\" für 10 % Rabatt im ersten Jahr",
|
||||
@@ -145,6 +147,7 @@
|
||||
"leaveFamily": "Familie verlassen",
|
||||
"leaveFamilyMessage": "Sind Sie sicher, dass Sie den Familien-Plan verlassen wollen?",
|
||||
"inFamilyPlanMessage": "Sie haben einen Familien-Plan!",
|
||||
"hintForDesktop": "Klicken Sie mit der rechten Maustaste auf einen Code zum Bearbeiten oder Entfernen.",
|
||||
"scan": "Scannen",
|
||||
"scanACode": "Scan einen Code",
|
||||
"verify": "Überprüfen Sie",
|
||||
@@ -154,6 +157,7 @@
|
||||
"twoFactorAuthTitle": "Zwei-Faktor-Authentifizierung",
|
||||
"passkeyAuthTitle": "Passkey Authentifizierung",
|
||||
"verifyPasskey": "Passkey verifizieren",
|
||||
"loginWithTOTP": "Mit TOTP anmelden",
|
||||
"recoverAccount": "Konto wiederherstellen",
|
||||
"enterRecoveryKeyHint": "Geben Sie Ihren Wiederherstellungsschlüssel ein",
|
||||
"recover": "Wiederherstellen",
|
||||
@@ -255,6 +259,10 @@
|
||||
"areYouSureYouWantToLogout": "Sind sie sicher, dass sie sich ausloggen möchten?",
|
||||
"yesLogout": "Ja ausloggen",
|
||||
"exit": "Schließen",
|
||||
"theme": "Theme",
|
||||
"lightTheme": "Hell",
|
||||
"darkTheme": "Dunkel",
|
||||
"systemTheme": "System",
|
||||
"verifyingRecoveryKey": "Verifiziere Wiederherstellungsschlüssel...",
|
||||
"recoveryKeyVerified": "Wiederherstellungsschlüssel verifiziert",
|
||||
"recoveryKeySuccessBody": "Großartig! Ihr Wiederherstellungsschlüssel ist gültig. Vielen Dank für die Verifizierung.\n\nBitte denken sie daran, dass sie ihren Wiederherstellungsschlüssel sicher aufbewahren.",
|
||||
@@ -325,6 +333,10 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"manualSort": "Benutzerdefiniert",
|
||||
"editOrder": "Reihenfolge bearbeiten",
|
||||
"mostFrequentlyUsed": "Häufig verwendet",
|
||||
"mostRecentlyUsed": "Zuletzt verwendet",
|
||||
"activeSessions": "Aktive Sitzungen",
|
||||
"somethingWentWrongPleaseTryAgain": "Ein Fehler ist aufgetreten, bitte versuche es erneut",
|
||||
"thisWillLogYouOutOfThisDevice": "Dadurch wirst du von diesem Gerät abgemeldet!",
|
||||
@@ -444,6 +456,7 @@
|
||||
"customEndpoint": "Mit {endpoint} verbunden",
|
||||
"pinText": "Anpinnen",
|
||||
"unpinText": "Lösen",
|
||||
"pinned": "Angeheftet",
|
||||
"tags": "Tags",
|
||||
"createNewTag": "Neuen Tag erstellen",
|
||||
"tag": "Tag",
|
||||
@@ -478,5 +491,16 @@
|
||||
"setNewPin": "Neue PIN festlegen",
|
||||
"importFailureDescNew": "Die ausgewählte Datei konnte nicht verarbeitet werden.",
|
||||
"appLockNotEnabled": "App-Sperre nicht aktiviert",
|
||||
"appLockNotEnabledDescription": "Bitte aktivieren Sie die App-Sperre über Security > App-Sperre"
|
||||
"appLockNotEnabledDescription": "Bitte aktivieren Sie die App-Sperre über Security > App-Sperre",
|
||||
"authToViewPasskey": "Bitte authentifizieren, um deinen Passkey zu sehen",
|
||||
"duplicateCodes": "Doppelte Codes",
|
||||
"noDuplicates": "✨ Keine Duplikate",
|
||||
"deselectAll": "Alle abwählen",
|
||||
"selectAll": "Alles auswählen",
|
||||
"deleteDuplicates": "Duplikate löschen",
|
||||
"plainHTML": "Reines HTML",
|
||||
"tellUsWhatYouThink": "Sagen Sie uns, was Sie denken",
|
||||
"dropReview": "Eine Bewertung im App/Play Store ablegen",
|
||||
"giveUsAStarOnGithub": "Gib uns einen Stern auf Github",
|
||||
"loginWithAuthAccount": "Mit Ihrem Auth Account anmelden"
|
||||
}
|
||||
@@ -499,7 +499,7 @@
|
||||
"appLockOfflineModeWarning": "You have chosen to proceed without backups. If you forget your applock, you will be locked out from accessing your data.",
|
||||
"duplicateCodes": "Duplicate codes",
|
||||
"noDuplicates": "✨ No duplicates",
|
||||
"youveNoDuplicateCodesThatCanBeCleared": "You've no duplicate codes that can be cleared",
|
||||
"youveNoDuplicateCodesThatCanBeCleared": "You don't have any duplicate codes that can be cleared",
|
||||
"deduplicateCodes": "Deduplicate codes",
|
||||
"deselectAll": "Deselect all",
|
||||
"selectAll": "Select all",
|
||||
|
||||
@@ -504,5 +504,13 @@
|
||||
"deselectAll": "Deseleccionar todo",
|
||||
"selectAll": "Seleccionar todo",
|
||||
"deleteDuplicates": "Eliminar duplicados",
|
||||
"plainHTML": "HTML plano"
|
||||
"plainHTML": "HTML plano",
|
||||
"tellUsWhatYouThink": "Cuéntanos cuál es su opinión",
|
||||
"dropReview": "Danos una reseña en la App/Play Store",
|
||||
"supportEnte": "Apoya a <bold-green>ente</bold-green>",
|
||||
"giveUsAStarOnGithub": "Danos una estrella en GitHub",
|
||||
"free5GB": "5 GB gratis en <bold-green>ente</bold-green> Fotos",
|
||||
"loginWithAuthAccount": "Inicia sesión con tu cuenta de Auth",
|
||||
"freeStorageOffer": "10% de descuento en <bold-green>ente</bold-green> fotos",
|
||||
"freeStorageOfferDescription": "Usa el cupón \"AUTH\" para obtener un 10% de descuento en el primer año"
|
||||
}
|
||||
@@ -499,7 +499,6 @@
|
||||
"appLockOfflineModeWarning": "Vous avez choisi de fonctionner sans sauvegardes. Si vous oubliez votre outil Applock, vous serez bloqué dans l'accès à vos données.",
|
||||
"duplicateCodes": "Codes dupliqués",
|
||||
"noDuplicates": "✨ Pas de doublons",
|
||||
"youveNoDuplicateCodesThatCanBeCleared": "Vous n'avez aucun code en doublon pouvant être supprimé",
|
||||
"deduplicateCodes": "Codes dédupliqués",
|
||||
"deselectAll": "Tout désélectionner",
|
||||
"selectAll": "Tout sélectionner",
|
||||
|
||||
@@ -6,12 +6,15 @@
|
||||
"@counterAppBarTitle": {
|
||||
"description": "Text shown in the AppBar of the Counter Page"
|
||||
},
|
||||
"onBoardingBody": "अपने 2FA कोड का सुरक्षित रूप से बैकअप लें",
|
||||
"onBoardingGetStarted": "प्रारंभ करें",
|
||||
"setupFirstAccount": "अपना पहला अकाउंट सेटअप करें",
|
||||
"importScanQrCode": "एक QR कोड स्कैन करें",
|
||||
"qrCode": "QR कोड",
|
||||
"importEnterSetupKey": "",
|
||||
"importAccountPageTitle": "अकाउंट विवरण डालें",
|
||||
"secretCanNotBeEmpty": "सीक्रेट खाली नहीं हो सकता है",
|
||||
"bothIssuerAndAccountCanNotBeEmpty": "दोनों इश्यूअर और अकाउंट ख़ाली नहीं हो सकते है",
|
||||
"incorrectDetails": "ग़लत विवरण",
|
||||
"pleaseVerifyDetails": "कृपया विवरण सत्यापित करें और पुनः प्रयास करें",
|
||||
"codeIssuerHint": "ज़ारीकर्ता",
|
||||
@@ -32,18 +35,24 @@
|
||||
},
|
||||
"codeAccountHint": "अकाउंट (you@domain.com)",
|
||||
"codeTagHint": "टैग",
|
||||
"accountKeyType": "की का प्रकार",
|
||||
"sessionExpired": "सत्र की अवधि समाप्त",
|
||||
"@sessionExpired": {
|
||||
"description": "Title of the dialog when the users current session is invalid/expired"
|
||||
},
|
||||
"pleaseLoginAgain": "कृपया फिर से लॉगिन करें",
|
||||
"loggingOut": "लॉग आउट हो रहा है...",
|
||||
"timeBasedKeyType": "समय आधारित (TOTP)",
|
||||
"counterBasedKeyType": "काउंटर आधारित (HOTP)",
|
||||
"saveAction": "सेव करें",
|
||||
"nextTotpTitle": "अगला",
|
||||
"deleteCodeTitle": "कोड डिलीट करें?",
|
||||
"deleteCodeMessage": "क्या आप वाकई इस कोड को हटाना चाहते हैं? इस क्रिया को वापस नहीं किया जा सकता",
|
||||
"trashCode": "?",
|
||||
"trashCodeMessage": "क्या आप वाकई {account} के लिए कोड नष्ट करना चाहते हैं?",
|
||||
"trash": "नष्ट करें",
|
||||
"viewLogsAction": "लॉग देखें",
|
||||
"sendLogsDescription": "यह आपकी समस्या को सुलझाने में हमारी सहायता के लिए लॉग भेजेगा। हालाँकि हम यह सुनिश्चित करने के लिए सावधानी बरतते हैं कि संवेदनशील जानकारी लॉग न हो, हम आपको इन लॉग को साझा करने से पहले देखने के लिए प्रोत्साहित करते हैं।",
|
||||
"preparingLogsTitle": "लॉग तैयार किये जा रहे हैं...",
|
||||
"emailLogsTitle": "लॉग ईमेल करें",
|
||||
"emailLogsMessage": "कृपया {email} पर लॉग ईमेल करें",
|
||||
@@ -57,6 +66,7 @@
|
||||
"copyEmailAction": "ईमेल कॉपी करें",
|
||||
"exportLogsAction": "लॉग एक्सपोर्ट करें",
|
||||
"reportABug": "बग रिपोर्ट करें",
|
||||
"crashAndErrorReporting": "क्रैश एवं त्रुटि रिपोर्टिंग",
|
||||
"reportBug": "बग रिपोर्ट करें",
|
||||
"emailUsMessage": "कृपया हमें {email} पर ईमेल करें",
|
||||
"@emailUsMessage": {
|
||||
@@ -69,14 +79,37 @@
|
||||
"contactSupport": "सपोर्ट टीम से संपर्क करें",
|
||||
"rateUsOnStore": "हमें {storeName} पर रेट करें",
|
||||
"blog": "ब्लॉग",
|
||||
"merchandise": "मर्चेंडाइज़",
|
||||
"verifyPassword": "पासवर्ड सत्यापित करें",
|
||||
"pleaseWait": "कृपया प्रतीक्षा करें...",
|
||||
"generatingEncryptionKeysTitle": "एन्क्रिप्शन कुंजियाँ उत्पन्न हो रही हैं...",
|
||||
"recreatePassword": "पासवर्ड दोबारा बनाएं",
|
||||
"recreatePasswordMessage": "वर्तमान डिवाइस आपके पासवर्ड को सत्यापित करने के लिए पर्याप्त शक्तिशाली नहीं है, इसलिए हमें इसे सभी डिवाइसों के साथ काम करने वाले तरीके से एक बार पुन: उत्पन्न करने की आवश्यकता है। \n\nकृपया अपनी पुनर्प्राप्ति कुंजी का उपयोग करके लॉगिन करें और अपना पासवर्ड पुनः बनाएं (यदि आप चाहें तो उसी का दोबारा उपयोग कर सकते हैं)।",
|
||||
"useRecoveryKey": "रिकवरी कुंजी का उपयोग करें",
|
||||
"incorrectPasswordTitle": "ग़लत पासवर्ड",
|
||||
"welcomeBack": "आपका पुनः स्वागत है!",
|
||||
"emailAlreadyRegistered": "ईमेल पहले से ही पंजीकृत है।",
|
||||
"emailNotRegistered": "ईमेल पंजीकृत नहीं है।",
|
||||
"madeWithLoveAtPrefix": " ❤️ से बनाया गया ",
|
||||
"supportDevs": "हमें समर्थन देने के लिए <bold-green>ente</bold-green> की सदस्यता लें",
|
||||
"supportDiscount": "पहले साल 10% छूट पाने के लिए कूपन कोड \"AUTH\" का उपयोग करें",
|
||||
"changeEmail": "ईमेल बदलें",
|
||||
"changePassword": "पासवर्ड बदलें",
|
||||
"data": "डेटा",
|
||||
"importCodes": "कोड आयात करें",
|
||||
"importTypePlainText": "साधारण टेक्स्ट",
|
||||
"importTypeEnteEncrypted": "Ente द्वारा एनक्रिप्टेड टेक्स्ट",
|
||||
"passwordForDecryptingExport": "डीक्रिप्ट करने के लिए पासवर्ड",
|
||||
"passwordEmptyError": "पासवर्ड रिक्त नहीं हो सकता है",
|
||||
"importFromApp": "{appName} से कोड इंपोर्ट करें",
|
||||
"importGoogleAuthGuide": "ट्रांसफर अकाउंट्स\" विकल्प का उपयोग करके अपने खातों को Google प्रमाणक से एक क्यूआर कोड में निर्यात करें। फिर किसी अन्य डिवाइस का उपयोग करके QR कोड को स्कैन करें।\n\nटिप: क्यूआर कोड की तस्वीर लेने के लिए आप अपने लैपटॉप के वेबकैम का उपयोग कर सकते हैं।",
|
||||
"importSelectJsonFile": "JSON फाइल चुनें",
|
||||
"importSelectAppExport": "{appName} की निर्यात फ़ाइल का चयन करें",
|
||||
"importEnteEncGuide": "Ente से निर्यात की गई एन्क्रिप्टेड JSON फ़ाइल का चयन करें",
|
||||
"importRaivoGuide": "Raivo की सेटिंग्स में \"एक्सपोर्ट ओटीपी टू जिप आर्काइव\" विकल्प का उपयोग करें।\n\nज़िप फ़ाइल निकालें और JSON फ़ाइल आयात करें।",
|
||||
"importBitwardenGuide": "बिटवर्डन टूल्स के भीतर \"एक्सपोर्ट वॉल्ट\" विकल्प का उपयोग करें और अनएन्क्रिप्टेड JSON फ़ाइल आयात करें।",
|
||||
"importAegisGuide": "Aegis की सेटिंग्स में \"एक्सपोर्ट द वॉल्ट\" विकल्प का उपयोग करें।\n\nयदि आपकी वॉल्ट एन्क्रिप्टेड है, तो आपको वॉल्ट को डिक्रिप्ट करने के लिए वॉल्ट पासवर्ड दर्ज करना होगा।",
|
||||
"import2FasGuide": "2FAS में \"सेटिंग्स->बैकअप-एक्सपोर्ट\" विकल्प का उपयोग करें।\n\nयदि आपका बैकअप एन्क्रिप्टेड है, तो आपको बैकअप को डिक्रिप्ट करने के लिए पासवर्ड दर्ज करना होगा",
|
||||
"importLabel": "इंपोर्ट",
|
||||
"selectFile": "फ़ाइल का चयन करें",
|
||||
"emailVerificationToggle": "ईमेल सत्यापन",
|
||||
|
||||
@@ -499,10 +499,17 @@
|
||||
"appLockOfflineModeWarning": "Úgy döntött, hogy biztonsági mentés nélkül folytatja. Ha elfelejti az alkalmazászárat, akkor nem férhet hozzá adataihoz.",
|
||||
"duplicateCodes": "Ismétlődő kódok",
|
||||
"noDuplicates": "✨Nincs ismétlődés",
|
||||
"youveNoDuplicateCodesThatCanBeCleared": "Nincsenek ismétlődő kódjai, amelyeket törölni lehetne",
|
||||
"deduplicateCodes": "Ismétlődő kódok",
|
||||
"deselectAll": "Összes kijelölés megszüntetése",
|
||||
"selectAll": "Összes kijelölése",
|
||||
"deleteDuplicates": "Ismétlődések törlése",
|
||||
"plainHTML": "Sima HTML kód"
|
||||
"plainHTML": "Sima HTML kód",
|
||||
"tellUsWhatYouThink": "Mondja el mit gondol",
|
||||
"dropReview": "Írjon véleményt az App/Play Store-ban",
|
||||
"supportEnte": "Támogassa <bold-green>ente <bold-green>",
|
||||
"giveUsAStarOnGithub": "Adj nekünk egy csillagot a Githubon",
|
||||
"free5GB": "5GB ingyen <bold-green>ente <bold-green> Photos",
|
||||
"loginWithAuthAccount": "Jelentkezzen be Auth fiókjával",
|
||||
"freeStorageOffer": "10% kedvezmény on <bold-green>ente<bold-green> photos",
|
||||
"freeStorageOfferDescription": "Használja az \"AUTH\" kódot, hogy 10% kedvezményt kapjon az első évben"
|
||||
}
|
||||
@@ -497,7 +497,6 @@
|
||||
"appLockOfflineModeWarning": "Anda telah memilih untuk mengunci aplikasi tanpa cadangan apa pun. Jika Anda lupa kode Pengunci Apl Anda, Anda tidak akan dapat mengakses data-data Anda.",
|
||||
"duplicateCodes": "Kode duplikat",
|
||||
"noDuplicates": "✨ Tak ada duplikat",
|
||||
"youveNoDuplicateCodesThatCanBeCleared": "Kamu tidak memiliki kode duplikat yang dapat dihapus",
|
||||
"deduplicateCodes": "Hapus kode duplikat",
|
||||
"deselectAll": "Batalkan semua pilihan",
|
||||
"selectAll": "Pilih semua",
|
||||
|
||||
@@ -499,7 +499,18 @@
|
||||
"appLockOfflineModeWarning": "バックアップなしで進むことを選択しました。アプリロックを忘れると、データにアクセスできなくなります。",
|
||||
"duplicateCodes": "重複コード",
|
||||
"noDuplicates": "✨ 重複なし",
|
||||
"youveNoDuplicateCodesThatCanBeCleared": "削除できる重複コードはありません",
|
||||
"deduplicateCodes": "重複コード",
|
||||
"deselectAll": "すべての選択を解除",
|
||||
"selectAll": "すべて選択",
|
||||
"deleteDuplicates": "重複を削除",
|
||||
"plainHTML": "Plain HTML",
|
||||
"tellUsWhatYouThink": "ご意見をお聞かせください",
|
||||
"loginWithAuthAccount": "認証アカウントでログイン"
|
||||
"dropReview": "App/Playストアにレビューを投稿する",
|
||||
"supportEnte": "<bold-green>ente</bold-green>をサポートする",
|
||||
"giveUsAStarOnGithub": "Githubで星をつける",
|
||||
"free5GB": "<bold-green>ente</bold-green>フォトで5GB無料",
|
||||
"loginWithAuthAccount": "認証アカウントでログイン",
|
||||
"freeStorageOffer": "<bold-green>ente</bold-green>の写真が10%オフ",
|
||||
"freeStorageOfferDescription": "クーポンコード \"AUTH\" の使用で初年度が10%オフになります"
|
||||
}
|
||||
@@ -499,7 +499,6 @@
|
||||
"appLockOfflineModeWarning": "백업 없이 진행하는 것을 선택하셨습니다. App 잠금 방법을 잊어버리신 경우, 데이터에 접근하실 수 없게 됩니다.",
|
||||
"duplicateCodes": "중복된 코드",
|
||||
"noDuplicates": "✨ 중복 없음",
|
||||
"youveNoDuplicateCodesThatCanBeCleared": "지울 수 있는 중복 코드가 없습니다",
|
||||
"deduplicateCodes": "중복된 코드 제거",
|
||||
"deselectAll": "모두 선택 해제",
|
||||
"selectAll": "모두 선택",
|
||||
|
||||
@@ -505,5 +505,10 @@
|
||||
"selectAll": "Pasirinkti viską",
|
||||
"deleteDuplicates": "Ištrinti dublikatus",
|
||||
"plainHTML": "Grynasis HTML",
|
||||
"tellUsWhatYouThink": "Pasakykite mums, ką manote",
|
||||
"giveUsAStarOnGithub": "Suteikite mums žvaigždutę platformoje „Github“",
|
||||
"free5GB": "5 GB nemokami programai „<bold-green>ente</bold-green>“ nuotraukos",
|
||||
"loginWithAuthAccount": "Prisijungti su jūsų „Auth“ paskyra",
|
||||
"freeStorageOffer": "10 % nuolaida programai „<bold-green>ente</bold-green>“ nuotraukos",
|
||||
"freeStorageOfferDescription": "Naudokite kodą „AUTH“, kad gautumėte 10 % nuolaida pirmiesiems metams. "
|
||||
}
|
||||
@@ -1 +1,31 @@
|
||||
{}
|
||||
{
|
||||
"account": "അക്കൗണ്ട്",
|
||||
"unlock": "അൺലോക്ക്",
|
||||
"qrCode": "QR കോഡ്",
|
||||
"blog": "ബ്ലോഗ്",
|
||||
"verifyPassword": "പാസ്വേഡ് സ്ഥിരീകരിക്കുക",
|
||||
"recreatePassword": "പാസ്വേഡ് പുനഃസൃഷ്ടിക്കുക",
|
||||
"incorrectPasswordTitle": "തെറ്റായ പാസ്വേഡ്",
|
||||
"welcomeBack": "വീണ്ടും സ്വാഗതം!",
|
||||
"emailAlreadyRegistered": "ഇമെയിൽ ഇതിനകം രജിസ്റ്റർ ചെയ്തിട്ടുണ്ട്.",
|
||||
"emailNotRegistered": "ഇമെയിൽ രജിസ്റ്റർ ചെയ്തിട്ടില്ല.",
|
||||
"changeEmail": "ഇമെയിൽ മാറ്റുക",
|
||||
"changePassword": "പാസ്സ്വേർഡ് മാറ്റുക",
|
||||
"ok": "ശരി",
|
||||
"cancel": "റദ്ദാക്കുക",
|
||||
"yes": "അതെ",
|
||||
"no": "അല്ല",
|
||||
"email": "ഇമെയിൽ",
|
||||
"somethingWentWrongMessage": "എന്തോ കുഴപ്പമുണ്ടായി, ദയവായി വീണ്ടും ശ്രമിക്കുക",
|
||||
"inFamilyPlanMessage": "നിങ്ങൾ ഒരു ഫാമിലി പ്ലാനിലാണ്!",
|
||||
"scan": "സ്കാൻ ചെയ്യുക",
|
||||
"scanACode": "കോഡ് സ്കാൻ ചെയ്യുക",
|
||||
"verify": "പരിശോധിക്കുക",
|
||||
"verifyEmail": "ഇമെയിൽ സ്ഥിരീകരിക്കുക",
|
||||
"enterCodeHint": "നിങ്ങളുടെ ഓതന്റിക്കേറ്റർ ആപ്പിൽ നിന്നുള്ള 6 അക്ക കോഡ് നൽകുക",
|
||||
"twoFactorAuthTitle": "ടു-ഫാക്ടർ ആധികാരികത",
|
||||
"createNewAccount": "പുതിയ അക്കൗണ്ട് സൃഷ്ടിക്കുക",
|
||||
"confirmPassword": "പാസ്വേഡ് സ്ഥിരീകരിക്കുക",
|
||||
"language": "ഭാഷ",
|
||||
"security": "സുരക്ഷ"
|
||||
}
|
||||
@@ -499,7 +499,6 @@
|
||||
"appLockOfflineModeWarning": "Je hebt ervoor gekozen om verder te gaan zonder backups. Als je jouw applock vergeet, wordt je uitgesloten van toegang tot je gegevens.",
|
||||
"duplicateCodes": "Dubbele codes",
|
||||
"noDuplicates": "✨ Geen dubbele",
|
||||
"youveNoDuplicateCodesThatCanBeCleared": "Je hebt geen dubbele codes die kunnen worden gewist",
|
||||
"deduplicateCodes": "Dubbele codes",
|
||||
"deselectAll": "Alles deselecteren",
|
||||
"selectAll": "Alles selecteren",
|
||||
|
||||
@@ -499,7 +499,7 @@
|
||||
"appLockOfflineModeWarning": "Wybrano kontynuowanie bez kopii zapasowych. Jeśli zapomnisz blokady aplikacji, utracisz dostęp do swoich danych.",
|
||||
"duplicateCodes": "Zduplikowane kody",
|
||||
"noDuplicates": "✨ Brak duplikatów",
|
||||
"youveNoDuplicateCodesThatCanBeCleared": "Nie masz duplikatów kodów, które mogą być wyczyszczone",
|
||||
"youveNoDuplicateCodesThatCanBeCleared": "Nie masz żadnych duplikatów kodów do usunięcia",
|
||||
"deduplicateCodes": "Deduplikuj kody",
|
||||
"deselectAll": "Odznacz wszystko",
|
||||
"selectAll": "Zaznacz wszystko",
|
||||
|
||||
@@ -499,7 +499,7 @@
|
||||
"appLockOfflineModeWarning": "Você prosseguiu sem cópias de segurança. Caso, se esqueça de seu aplicativo de bloqueio, você não poderá mais acessar seus dados.",
|
||||
"duplicateCodes": "Duplicar códigos",
|
||||
"noDuplicates": "✨ Sem duplicados",
|
||||
"youveNoDuplicateCodesThatCanBeCleared": "Você não possui códigos duplicados para limpar",
|
||||
"youveNoDuplicateCodesThatCanBeCleared": "Você não possui códigos duplicados que possam ser excluídos",
|
||||
"deduplicateCodes": "Desduplicar códigos",
|
||||
"deselectAll": "Deselecionar tudo",
|
||||
"selectAll": "Selecionar tudo",
|
||||
|
||||
@@ -88,6 +88,8 @@
|
||||
"useRecoveryKey": "Uporabi ključ za obnovo",
|
||||
"incorrectPasswordTitle": "Nepravilno geslo",
|
||||
"welcomeBack": "Dobrodošli nazaj!",
|
||||
"emailAlreadyRegistered": "E-poštni naslov je že registriran.",
|
||||
"emailNotRegistered": "E-poštni naslov ni registriran.",
|
||||
"madeWithLoveAtPrefix": "ustvarjeno s ❤️pri ",
|
||||
"supportDevs": "Naročite se na <bold-green>ente</bold-green>, da nas podprete",
|
||||
"supportDiscount": "Uporabite kupon \"AUTH\" za 10% popusta za prvo leto",
|
||||
@@ -156,6 +158,7 @@
|
||||
"twoFactorAuthTitle": "Dvojno preverjanja pristnosti",
|
||||
"passkeyAuthTitle": "Potrditev ključa za dostop (passkey)",
|
||||
"verifyPasskey": "Potrdite ključ za dostop (passkey)",
|
||||
"loginWithTOTP": "Prijava z TOTP",
|
||||
"recoverAccount": "Obnovi račun",
|
||||
"enterRecoveryKeyHint": "Vnesite vaš ključ za obnovitev",
|
||||
"recover": "Obnovi",
|
||||
@@ -257,6 +260,10 @@
|
||||
"areYouSureYouWantToLogout": "Ali ste prepričani, da se želite odjaviti?",
|
||||
"yesLogout": "Ja, odjavi se",
|
||||
"exit": "Izhod",
|
||||
"theme": "Tema",
|
||||
"lightTheme": "Svetla",
|
||||
"darkTheme": "Temna",
|
||||
"systemTheme": "Sistemska",
|
||||
"verifyingRecoveryKey": "Preverjanje ključa za obnovitev",
|
||||
"recoveryKeyVerified": "Ključ za obnovitev preverjen",
|
||||
"recoveryKeySuccessBody": "Odlično! Vaš ključ za obnovitev je veljaven. Hvala za preverjanje.\n\nNe pozabite shraniti varnostno kopijo obnovitvenega ključa.",
|
||||
@@ -327,6 +334,8 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"manualSort": "Po meri",
|
||||
"editOrder": "Uredi vrstni red",
|
||||
"mostFrequentlyUsed": "Pogosto uporabljeni",
|
||||
"mostRecentlyUsed": "Nedavno uporabljeno",
|
||||
"activeSessions": "Aktivne seje",
|
||||
@@ -448,6 +457,8 @@
|
||||
"customEndpoint": "Povezano na {endpoint}",
|
||||
"pinText": "Pripni",
|
||||
"unpinText": "Odpni",
|
||||
"pinnedCodeMessage": "{code} je bila pripeta",
|
||||
"unpinnedCodeMessage": "{code} je bila odpeta",
|
||||
"pinned": "Pripeto",
|
||||
"tags": "Oznake",
|
||||
"createNewTag": "Ustvari novo oznako",
|
||||
@@ -485,5 +496,21 @@
|
||||
"appLockNotEnabled": "Zaklepanje aplikacije ni omogočeno",
|
||||
"appLockNotEnabledDescription": "Prosimo, omogočite zaklepanje aplikacije v Nastavitve > Zaklepanje Aplikacije (Security > App Lock)",
|
||||
"authToViewPasskey": "Da vidite passkey, se overite",
|
||||
"appLockOfflineModeWarning": "Odločili ste se, da boste nadaljevali brez varnostnih kopij. Če boste pozabili geslo za odklepanje aplikacije, bo dostop do vaših podatkov onemogočen."
|
||||
"appLockOfflineModeWarning": "Odločili ste se, da boste nadaljevali brez varnostnih kopij. Če boste pozabili geslo za odklepanje aplikacije, bo dostop do vaših podatkov onemogočen.",
|
||||
"duplicateCodes": "Podvojene kode",
|
||||
"noDuplicates": "✨ Ni duplikatov",
|
||||
"youveNoDuplicateCodesThatCanBeCleared": "Nimate nobenih podvojenih kod, ki bi jih bilo mogoče izbrisati",
|
||||
"deduplicateCodes": "Dedupliciraj kode",
|
||||
"deselectAll": "Prekliči celoten izbor",
|
||||
"selectAll": "Izberi vse",
|
||||
"deleteDuplicates": "Izbriši dvojnike",
|
||||
"plainHTML": "Navadni HTML",
|
||||
"tellUsWhatYouThink": "Povejte nam kaj mislite",
|
||||
"dropReview": "Napišite oceno v trgovini App/Play Store",
|
||||
"supportEnte": "Podpiraj <bold-green>ente</bold-green>",
|
||||
"giveUsAStarOnGithub": "Dajte nam zvezdico na Githubu",
|
||||
"free5GB": "5 GB zastonj na <bold-green>ente</bold-green> fotografije",
|
||||
"loginWithAuthAccount": "Prijavite se s svojim Auth računom",
|
||||
"freeStorageOffer": "10 % popust na <bold-green>ente</bold-green> fotografije",
|
||||
"freeStorageOfferDescription": "Uporabite kupon \"AUTH\" za 10% popusta za prvo leto"
|
||||
}
|
||||
@@ -267,7 +267,9 @@
|
||||
"verifyingRecoveryKey": "Verifierar återställningsnyckel...",
|
||||
"recoveryKeyVerified": "Återställningsnyckel verifierad",
|
||||
"recoveryKeySuccessBody": "Grymt! Din återställningsnyckel är giltig. Tack för att du verifierade.\n\nKom ihåg att hålla din återställningsnyckel säker med backups.",
|
||||
"invalidRecoveryKey": "Återställningsnyckeln du angav är inte giltig. Kontrollera att den innehåller 24 ord och kontrollera stavningen av varje ord.\n\nOm du har angett en äldre återställningskod, se till att den är 64 tecken lång, och kontrollera var och en av bokstäverna.",
|
||||
"recreatePasswordTitle": "Återskapa lösenord",
|
||||
"recreatePasswordBody": "Denna enhet är inte tillräckligt kraftfull för att verifiera ditt lösenord, men vi kan återskapa det på ett sätt som fungerar med alla enheter.\n\nLogga in med din återställningsnyckel och återskapa ditt lösenord (du kan använda samma igen om du vill).",
|
||||
"invalidKey": "Ogiltig nyckel",
|
||||
"tryAgain": "Försök igen",
|
||||
"viewRecoveryKey": "Visa återställningsnyckel",
|
||||
@@ -279,6 +281,10 @@
|
||||
"copyEmailAddress": "Kopiera e-postadress",
|
||||
"exportLogs": "Exportera loggar",
|
||||
"enterYourRecoveryKey": "Ange din återställningsnyckel",
|
||||
"tempErrorContactSupportIfPersists": "Det ser ut som om något gick fel. Försök igen efter en stund. Om felet kvarstår, vänligen kontakta vår support.",
|
||||
"networkHostLookUpErr": "Det gick inte att ansluta till Ente, kontrollera dina nätverksinställningar och kontakta supporten om felet kvarstår.",
|
||||
"networkConnectionRefusedErr": "Det gick inte att ansluta till Ente, försök igen om en stund. Om felet kvarstår, vänligen kontakta support.",
|
||||
"itLooksLikeSomethingWentWrongPleaseRetryAfterSome": "Det ser ut som om något gick fel. Försök igen efter en stund. Om felet kvarstår, vänligen kontakta vår support.",
|
||||
"about": "Om",
|
||||
"weAreOpenSource": "Vi är öppen källkod!",
|
||||
"privacy": "Sekretess",
|
||||
@@ -292,6 +298,7 @@
|
||||
"checking": "Kontrollerar ...",
|
||||
"youAreOnTheLatestVersion": "Du är på den senaste versionen",
|
||||
"warning": "Varning",
|
||||
"exportWarningDesc": "Den exporterade filen innehåller känslig information. Förvara den på ett säkert sätt.",
|
||||
"iUnderStand": "Jag förstår",
|
||||
"@iUnderStand": {
|
||||
"description": "Text for the button to confirm the user understands the warning"
|
||||
@@ -309,28 +316,46 @@
|
||||
}
|
||||
},
|
||||
"sorry": "Tyvärr",
|
||||
"importFailureDesc": "Det gick inte att tolka den valda filen.\nSkriv till support@ente.io om du behöver hjälp!",
|
||||
"pendingSyncs": "Varning",
|
||||
"pendingSyncsWarningBody": "En del av dina koder har inte säkerhetskopierats.\n\nSe till att du har en säkerhetskopia för dessa koder innan du loggar ut.",
|
||||
"checkInboxAndSpamFolder": "Vänligen kontrollera din inkorg (och skräppost) för att slutföra verifieringen",
|
||||
"tapToEnterCode": "Tryck för att ange kod",
|
||||
"resendEmail": "Skicka e-post igen",
|
||||
"weHaveSendEmailTo": "Vi har skickat ett mail till <green>{email}</green>",
|
||||
"@weHaveSendEmailTo": {
|
||||
"description": "Text to indicate that we have sent a mail to the user",
|
||||
"placeholders": {
|
||||
"email": {
|
||||
"description": "The email address of the user",
|
||||
"type": "String",
|
||||
"example": "example@ente.io"
|
||||
}
|
||||
}
|
||||
},
|
||||
"manualSort": "Anpassad",
|
||||
"editOrder": "Redigera ordning",
|
||||
"mostFrequentlyUsed": "Ofta använd",
|
||||
"mostRecentlyUsed": "Senast använd",
|
||||
"activeSessions": "Aktiva sessioner",
|
||||
"somethingWentWrongPleaseTryAgain": "Något gick fel, vänligen försök igen",
|
||||
"thisWillLogYouOutOfThisDevice": "Detta kommer att logga ut dig från den här enheten!",
|
||||
"thisWillLogYouOutOfTheFollowingDevice": "Detta kommer att logga ut dig från följande enhet:",
|
||||
"terminateSession": "Avsluta session?",
|
||||
"terminate": "Avsluta",
|
||||
"thisDevice": "Den här enheten",
|
||||
"toResetVerifyEmail": "För att återställa ditt lösenord måste du först bekräfta din e-postadress.",
|
||||
"thisEmailIsAlreadyInUse": "Denna e-postadress används redan",
|
||||
"verificationFailedPleaseTryAgain": "Verifiering misslyckades, vänligen försök igen",
|
||||
"yourVerificationCodeHasExpired": "Din verifieringskod har upphört att gälla",
|
||||
"incorrectCode": "Felaktig kod",
|
||||
"sorryTheCodeYouveEnteredIsIncorrect": "Tyvärr, den kod som du har angett är felaktig",
|
||||
"emailChangedTo": "E-post ändrad till {newEmail}",
|
||||
"authenticationFailedPleaseTryAgain": "Autentisering misslyckades, vänligen försök igen",
|
||||
"authenticationSuccessful": "Autentisering lyckades!",
|
||||
"twofactorAuthenticationSuccessfullyReset": "Tvåfaktorsautentisering återställd",
|
||||
"incorrectRecoveryKey": "Felaktig återställningsnyckel",
|
||||
"theRecoveryKeyYouEnteredIsIncorrect": "Återställningsnyckeln du angav är felaktig",
|
||||
"enterPassword": "Ange lösenord",
|
||||
"selectExportFormat": "Välj exportformat",
|
||||
"encrypted": "Krypterad",
|
||||
@@ -343,6 +368,7 @@
|
||||
"showLargeIcons": "Visa stora ikoner",
|
||||
"compactMode": "Kompakt läge",
|
||||
"shouldHideCode": "Dölj koder",
|
||||
"doubleTapToViewHiddenCode": "Du kan dubbeltrycka på en post för att visa koden",
|
||||
"focusOnSearchBar": "Fokusera på sök vid appstart",
|
||||
"minimizeAppOnCopy": "Minimera appen vid kopiering",
|
||||
"editCodeAuthMessage": "Autentisera för att redigera kod",
|
||||
@@ -451,7 +477,6 @@
|
||||
"appLockOfflineModeWarning": "Du har valt att fortsätta utan säkerhetskopior. Om du glömmer ditt applås, kommer du att bli utelåst från att komma åt dina data.",
|
||||
"duplicateCodes": "Dubblettkoder",
|
||||
"noDuplicates": "✨ Inga dubbletter",
|
||||
"youveNoDuplicateCodesThatCanBeCleared": "Du har inga dubblettkoder som kan rensas bort",
|
||||
"deduplicateCodes": "Deduplicera koder",
|
||||
"deselectAll": "Avmarkera alla",
|
||||
"selectAll": "Markera alla",
|
||||
|
||||
@@ -499,7 +499,6 @@
|
||||
"appLockOfflineModeWarning": "Yedekleme olmadan devam etmeyi seçtiniz. Eğer uygulama parolanızı unutursanız, verilerinize erişiminiz engellenir.",
|
||||
"duplicateCodes": "Yinelenen kodlar",
|
||||
"noDuplicates": "✨ Yinelenen yok",
|
||||
"youveNoDuplicateCodesThatCanBeCleared": "Temizlenebilecek yinelenen kodunuz yok",
|
||||
"deduplicateCodes": "Kodları tekilleştir",
|
||||
"deselectAll": "Tümünün seçimini kaldır",
|
||||
"selectAll": "Tümünü seç",
|
||||
|
||||
@@ -497,7 +497,6 @@
|
||||
"appLockOfflineModeWarning": "Ви обрали продовжити без резервних копій. Якщо ви забудете свій пароль, доступ до ваших даних буде заблоковано.",
|
||||
"duplicateCodes": "Дублікати кодів",
|
||||
"noDuplicates": "✨ Немає дублікатів",
|
||||
"youveNoDuplicateCodesThatCanBeCleared": "У вас немає дублікатів кодів, які можна очистити",
|
||||
"deduplicateCodes": "Дедуплікувати коди",
|
||||
"deselectAll": "Зняти виділення",
|
||||
"selectAll": "Вибрати все",
|
||||
|
||||
@@ -499,7 +499,6 @@
|
||||
"appLockOfflineModeWarning": "Bạn đã chọn tiếp tục mà không có bản sao lưu. Nếu bạn quên khóa ứng dụng, bạn sẽ bị khóa khỏi việc truy cập dữ liệu của mình.",
|
||||
"duplicateCodes": "Mã trùng lặp",
|
||||
"noDuplicates": "✨ Không có trùng lặp",
|
||||
"youveNoDuplicateCodesThatCanBeCleared": "Bạn không có mã trùng lặp nào có thể được xóa",
|
||||
"deduplicateCodes": "Loại bỏ mã trùng lặp",
|
||||
"deselectAll": "Bỏ chọn tất cả",
|
||||
"selectAll": "Chọn tất cả",
|
||||
|
||||
@@ -499,7 +499,6 @@
|
||||
"appLockOfflineModeWarning": "您已选择继续而不备份。如果您忘记了应用锁,您将无法访问数据。",
|
||||
"duplicateCodes": "重复代码",
|
||||
"noDuplicates": "✨ 没有重复",
|
||||
"youveNoDuplicateCodesThatCanBeCleared": "您没有可清除的重复代码",
|
||||
"deduplicateCodes": "删除重复代码",
|
||||
"deselectAll": "取消全选",
|
||||
"selectAll": "全选",
|
||||
|
||||
@@ -112,8 +112,9 @@ class Code {
|
||||
String issuer,
|
||||
String secret,
|
||||
CodeDisplay? display,
|
||||
int digits,
|
||||
) {
|
||||
int digits, {
|
||||
Algorithm algorithm = Algorithm.sha1,
|
||||
}) {
|
||||
final String encodedIssuer = Uri.encodeQueryComponent(issuer);
|
||||
return Code(
|
||||
account,
|
||||
@@ -121,10 +122,10 @@ class Code {
|
||||
digits,
|
||||
defaultPeriod,
|
||||
secret,
|
||||
Algorithm.sha1,
|
||||
algorithm,
|
||||
type,
|
||||
0,
|
||||
"otpauth://${type.name}/$issuer:$account?algorithm=SHA1&digits=$digits&issuer=$encodedIssuer&period=30&secret=$secret",
|
||||
"otpauth://${type.name}/$issuer:$account?algorithm=${algorithm.name.toUpperCase()}&digits=$digits&issuer=$encodedIssuer&period=30&secret=$secret",
|
||||
display: display ?? CodeDisplay(),
|
||||
);
|
||||
}
|
||||
|
||||
@@ -1,73 +0,0 @@
|
||||
import 'dart:convert';
|
||||
|
||||
const visibilityVisible = 0;
|
||||
const visibilityArchive = 1;
|
||||
|
||||
const magicKeyVisibility = 'visibility';
|
||||
|
||||
const pubMagicKeyEditedTime = 'editedTime';
|
||||
const pubMagicKeyEditedName = 'editedName';
|
||||
|
||||
class MagicMetadata {
|
||||
// 0 -> visible
|
||||
// 1 -> archived
|
||||
// 2 -> hidden etc?
|
||||
int visibility;
|
||||
|
||||
MagicMetadata({required this.visibility});
|
||||
|
||||
factory MagicMetadata.fromEncodedJson(String encodedJson) =>
|
||||
MagicMetadata.fromJson(jsonDecode(encodedJson));
|
||||
|
||||
factory MagicMetadata.fromJson(dynamic json) => MagicMetadata.fromMap(json);
|
||||
|
||||
static fromMap(Map<String, dynamic>? map) {
|
||||
if (map == null) return null;
|
||||
return MagicMetadata(
|
||||
visibility: map[magicKeyVisibility] ?? visibilityVisible,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
class PubMagicMetadata {
|
||||
int? editedTime;
|
||||
String? editedName;
|
||||
|
||||
PubMagicMetadata({this.editedTime, this.editedName});
|
||||
|
||||
factory PubMagicMetadata.fromEncodedJson(String encodedJson) =>
|
||||
PubMagicMetadata.fromJson(jsonDecode(encodedJson));
|
||||
|
||||
factory PubMagicMetadata.fromJson(dynamic json) =>
|
||||
PubMagicMetadata.fromMap(json);
|
||||
|
||||
static fromMap(Map<String, dynamic>? map) {
|
||||
if (map == null) return null;
|
||||
return PubMagicMetadata(
|
||||
editedTime: map[pubMagicKeyEditedTime],
|
||||
editedName: map[pubMagicKeyEditedName],
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
class CollectionMagicMetadata {
|
||||
// 0 -> visible
|
||||
// 1 -> archived
|
||||
// 2 -> hidden etc?
|
||||
int visibility;
|
||||
|
||||
CollectionMagicMetadata({required this.visibility});
|
||||
|
||||
factory CollectionMagicMetadata.fromEncodedJson(String encodedJson) =>
|
||||
CollectionMagicMetadata.fromJson(jsonDecode(encodedJson));
|
||||
|
||||
factory CollectionMagicMetadata.fromJson(dynamic json) =>
|
||||
CollectionMagicMetadata.fromMap(json);
|
||||
|
||||
static fromMap(Map<String, dynamic>? map) {
|
||||
if (map == null) return null;
|
||||
return CollectionMagicMetadata(
|
||||
visibility: map[magicKeyVisibility] ?? visibilityVisible,
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -1,6 +0,0 @@
|
||||
class PublicKey {
|
||||
final String email;
|
||||
final String publicKey;
|
||||
|
||||
PublicKey(this.email, this.publicKey);
|
||||
}
|
||||
@@ -13,6 +13,7 @@ import 'package:ente_auth/onboarding/view/common/field_label.dart';
|
||||
import 'package:ente_auth/onboarding/view/common/tag_chip.dart';
|
||||
import 'package:ente_auth/store/code_display_store.dart';
|
||||
import 'package:ente_auth/theme/ente_theme.dart';
|
||||
import 'package:ente_auth/ui/algorithm_selector_widget.dart';
|
||||
import 'package:ente_auth/ui/components/buttons/button_widget.dart';
|
||||
import 'package:ente_auth/ui/components/custom_icon_widget.dart';
|
||||
import 'package:ente_auth/ui/components/models/button_result.dart';
|
||||
@@ -38,10 +39,12 @@ class _SetupEnterSecretKeyPageState extends State<SetupEnterSecretKeyPage> {
|
||||
final Logger _logger = Logger('_SetupEnterSecretKeyPageState');
|
||||
final int _notesLimit = 500;
|
||||
final int _otherTextLimit = 200;
|
||||
final int defaultDigits = 6;
|
||||
late TextEditingController _issuerController;
|
||||
late TextEditingController _accountController;
|
||||
late TextEditingController _secretController;
|
||||
late TextEditingController _notesController;
|
||||
late TextEditingController _digitsController;
|
||||
late bool _secretKeyObscured;
|
||||
late List<String> selectedTags = [...?widget.code?.display.tags];
|
||||
List<String> allTags = [];
|
||||
@@ -49,6 +52,7 @@ class _SetupEnterSecretKeyPageState extends State<SetupEnterSecretKeyPage> {
|
||||
bool isCustomIcon = false;
|
||||
String _customIconID = "";
|
||||
late IconType _iconSrc;
|
||||
late Algorithm _algorithm;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
@@ -65,6 +69,12 @@ class _SetupEnterSecretKeyPageState extends State<SetupEnterSecretKeyPage> {
|
||||
_notesController = TextEditingController(
|
||||
text: widget.code?.display.note,
|
||||
);
|
||||
_digitsController = TextEditingController(
|
||||
text: widget.code != null
|
||||
? widget.code!.digits.toString()
|
||||
: defaultDigits.toString(),
|
||||
);
|
||||
|
||||
_secretKeyObscured = widget.code != null;
|
||||
_loadTags();
|
||||
_streamSubscription = Bus.instance.on<CodesUpdatedEvent>().listen((event) {
|
||||
@@ -101,6 +111,8 @@ class _SetupEnterSecretKeyPageState extends State<SetupEnterSecretKeyPage> {
|
||||
? IconType.simpleIcon
|
||||
: IconType.customIcon;
|
||||
|
||||
_algorithm = widget.code == null ? Algorithm.sha1 : widget.code!.algorithm;
|
||||
|
||||
super.initState();
|
||||
}
|
||||
|
||||
@@ -121,6 +133,7 @@ class _SetupEnterSecretKeyPageState extends State<SetupEnterSecretKeyPage> {
|
||||
_issuerController.dispose();
|
||||
_accountController.dispose();
|
||||
_notesController.dispose();
|
||||
_digitsController.dispose();
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
@@ -268,6 +281,79 @@ class _SetupEnterSecretKeyPageState extends State<SetupEnterSecretKeyPage> {
|
||||
],
|
||||
),
|
||||
const SizedBox(height: 12),
|
||||
widget.code == null
|
||||
? Theme(
|
||||
data: Theme.of(context).copyWith(
|
||||
splashColor: Colors.transparent,
|
||||
highlightColor: Colors.transparent,
|
||||
hoverColor: Colors.transparent,
|
||||
),
|
||||
child: ExpansionTile(
|
||||
shape: RoundedRectangleBorder(
|
||||
borderRadius: BorderRadius.circular(8.0),
|
||||
),
|
||||
collapsedShape: RoundedRectangleBorder(
|
||||
borderRadius: BorderRadius.circular(8.0),
|
||||
),
|
||||
collapsedBackgroundColor: Colors.transparent,
|
||||
tilePadding: EdgeInsets.zero,
|
||||
title: Text(
|
||||
"Advanced",
|
||||
style: getEnteTextTheme(context).small,
|
||||
),
|
||||
children: <Widget>[
|
||||
Row(
|
||||
children: [
|
||||
const FieldLabel("Digits"),
|
||||
Expanded(
|
||||
child: TextFormField(
|
||||
keyboardType: TextInputType.number,
|
||||
// The validator receives the text that the user has entered.
|
||||
validator: (value) {
|
||||
if (value == null || value.isEmpty) {
|
||||
return "Please enter a number";
|
||||
}
|
||||
final intValue = int.tryParse(value);
|
||||
if (intValue == null) {
|
||||
return "Only integers are allowed";
|
||||
}
|
||||
if (intValue < 1 || intValue > 10) {
|
||||
return "OTP digits must be between 1 and 10";
|
||||
}
|
||||
return null;
|
||||
},
|
||||
maxLines: 1,
|
||||
decoration: const InputDecoration(
|
||||
contentPadding: EdgeInsets.symmetric(
|
||||
vertical: 12.0,
|
||||
),
|
||||
),
|
||||
style: getEnteTextTheme(context).small,
|
||||
controller: _digitsController,
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
const SizedBox(height: 22),
|
||||
Row(
|
||||
children: [
|
||||
const FieldLabel("Algorithm"),
|
||||
AlgorithmSelectorWidget(
|
||||
currentAlgorithm: _algorithm,
|
||||
onSelected: (newAlgorithm) async {
|
||||
setState(() {
|
||||
_algorithm = newAlgorithm;
|
||||
});
|
||||
},
|
||||
),
|
||||
],
|
||||
),
|
||||
const SizedBox(height: 12),
|
||||
],
|
||||
),
|
||||
)
|
||||
: const SizedBox.shrink(),
|
||||
const SizedBox(height: 12),
|
||||
Wrap(
|
||||
spacing: 12,
|
||||
alignment: WrapAlignment.start,
|
||||
@@ -322,12 +408,29 @@ class _SetupEnterSecretKeyPageState extends State<SetupEnterSecretKeyPage> {
|
||||
padding: const EdgeInsets.symmetric(vertical: 8),
|
||||
),
|
||||
onPressed: () async {
|
||||
final digits =
|
||||
int.tryParse(_digitsController.text.trim());
|
||||
if (digits != null && (digits < 1 || digits > 10)) {
|
||||
String message = "Digits must be between 1 and 10";
|
||||
_showIncorrectDetailsDialog(
|
||||
context,
|
||||
message: message,
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
if ((_accountController.text.trim().isEmpty &&
|
||||
_issuerController.text.trim().isEmpty) ||
|
||||
_secretController.text.trim().isEmpty) {
|
||||
_secretController.text.trim().isEmpty ||
|
||||
_digitsController.text.trim().isEmpty ||
|
||||
digits == null) {
|
||||
String message;
|
||||
if (_secretController.text.trim().isEmpty) {
|
||||
message = context.l10n.secretCanNotBeEmpty;
|
||||
} else if (_digitsController.text.isEmpty) {
|
||||
message = "Digits cannot be empty";
|
||||
} else if (digits == null) {
|
||||
message = "Digits is not a integer";
|
||||
} else {
|
||||
message =
|
||||
context.l10n.bothIssuerAndAccountCanNotBeEmpty;
|
||||
@@ -358,6 +461,8 @@ class _SetupEnterSecretKeyPageState extends State<SetupEnterSecretKeyPage> {
|
||||
final issuer = _issuerController.text.trim();
|
||||
final secret = _secretController.text.trim().replaceAll(' ', '');
|
||||
final notes = _notesController.text.trim();
|
||||
final digits = int.tryParse(_digitsController.text.trim());
|
||||
|
||||
final isStreamCode = issuer.toLowerCase() == "steam" ||
|
||||
issuer.toLowerCase().contains('steampowered.com');
|
||||
final CodeDisplay display =
|
||||
@@ -398,14 +503,18 @@ class _SetupEnterSecretKeyPageState extends State<SetupEnterSecretKeyPage> {
|
||||
issuer,
|
||||
secret,
|
||||
display,
|
||||
isStreamCode ? Code.steamDigits : Code.defaultDigits,
|
||||
isStreamCode ? Code.steamDigits : digits!,
|
||||
algorithm: _algorithm,
|
||||
)
|
||||
: widget.code!.copyWith(
|
||||
account: account,
|
||||
issuer: issuer,
|
||||
secret: secret,
|
||||
display: display,
|
||||
algorithm: _algorithm,
|
||||
digits: digits!,
|
||||
);
|
||||
|
||||
// Verify the validity of the code
|
||||
getOTP(newCode);
|
||||
Navigator.of(context).pop(newCode);
|
||||
|
||||
@@ -1,23 +0,0 @@
|
||||
import 'package:ente_auth/core/configuration.dart';
|
||||
import 'package:flutter/foundation.dart';
|
||||
|
||||
class FeatureFlagService {
|
||||
FeatureFlagService._privateConstructor();
|
||||
static final FeatureFlagService instance =
|
||||
FeatureFlagService._privateConstructor();
|
||||
|
||||
static final _internalUserIDs = const String.fromEnvironment(
|
||||
"internal_user_ids",
|
||||
defaultValue: "1,2,3,4,191,125,1580559962388044,1580559962392434,10000025",
|
||||
).split(",").map((element) {
|
||||
return int.parse(element);
|
||||
}).toSet();
|
||||
|
||||
bool isInternalUserOrDebugBuild() {
|
||||
final String? email = Configuration.instance.getEmail();
|
||||
final userID = Configuration.instance.getUserID();
|
||||
return (email != null && email.endsWith("@ente.io")) ||
|
||||
_internalUserIDs.contains(userID) ||
|
||||
kDebugMode;
|
||||
}
|
||||
}
|
||||
@@ -6,7 +6,7 @@ import 'package:shared_preferences/shared_preferences.dart';
|
||||
import 'package:window_manager/window_manager.dart';
|
||||
|
||||
class WindowListenerService {
|
||||
static const double minWindowHeight = 320.0;
|
||||
static const double minWindowHeight = 600.0;
|
||||
static const double minWindowWidth = 800.0;
|
||||
static const double maxWindowHeight = 8192.0;
|
||||
static const double maxWindowWidth = 8192.0;
|
||||
|
||||
@@ -1,14 +0,0 @@
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
|
||||
class UserStore {
|
||||
UserStore._privateConstructor();
|
||||
|
||||
// ignore: unused_field
|
||||
late SharedPreferences _preferences;
|
||||
|
||||
static final UserStore instance = UserStore._privateConstructor();
|
||||
|
||||
Future<void> init() async {
|
||||
_preferences = await SharedPreferences.getInstance();
|
||||
}
|
||||
}
|
||||
@@ -113,7 +113,7 @@ class _LoginPasswordVerificationPageState
|
||||
);
|
||||
} else {
|
||||
_logger.severe('API failure during SRP login', e, s);
|
||||
if (e.type == DioExceptionType.unknown) {
|
||||
if (e.type == DioExceptionType.connectionError) {
|
||||
await _showContactSupportDialog(
|
||||
context,
|
||||
context.l10n.noInternetConnection,
|
||||
|
||||
72
auth/lib/ui/algorithm_selector_widget.dart
Normal file
@@ -0,0 +1,72 @@
|
||||
import 'package:ente_auth/models/code.dart';
|
||||
import 'package:ente_auth/theme/ente_theme.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
class AlgorithmSelectorWidget extends StatelessWidget {
|
||||
final Algorithm currentAlgorithm;
|
||||
final void Function(Algorithm) onSelected;
|
||||
const AlgorithmSelectorWidget({
|
||||
super.key,
|
||||
required this.currentAlgorithm,
|
||||
required this.onSelected,
|
||||
});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
Text algorithmOptionText(Algorithm algorithm) {
|
||||
return Text(
|
||||
algorithm.name.toUpperCase(),
|
||||
style: getEnteTextTheme(context).small,
|
||||
);
|
||||
}
|
||||
|
||||
return GestureDetector(
|
||||
onTapDown: (TapDownDetails details) async {
|
||||
final int? selectedValue = await showMenu<int>(
|
||||
context: context,
|
||||
position: RelativeRect.fromLTRB(
|
||||
details.globalPosition.dx,
|
||||
details.globalPosition.dy,
|
||||
details.globalPosition.dx,
|
||||
details.globalPosition.dy + 300,
|
||||
),
|
||||
items: List.generate(Algorithm.values.length, (index) {
|
||||
return PopupMenuItem(
|
||||
value: index,
|
||||
child: Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
algorithmOptionText(Algorithm.values[index]),
|
||||
if (Algorithm.values[index] == currentAlgorithm)
|
||||
Icon(
|
||||
Icons.check,
|
||||
color: Theme.of(context).iconTheme.color,
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
}),
|
||||
);
|
||||
if (selectedValue != null) {
|
||||
onSelected(Algorithm.values[selectedValue]);
|
||||
}
|
||||
},
|
||||
child: Container(
|
||||
padding: const EdgeInsets.only(bottom: 4),
|
||||
decoration: BoxDecoration(
|
||||
border: Border(
|
||||
bottom: BorderSide(color: Theme.of(context).dividerColor),
|
||||
),
|
||||
),
|
||||
child: Row(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
children: [
|
||||
algorithmOptionText(currentAlgorithm),
|
||||
const SizedBox(width: 8),
|
||||
const Icon(Icons.arrow_drop_down),
|
||||
],
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -1,25 +0,0 @@
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
class BottomShadowWidget extends StatelessWidget {
|
||||
final double offsetDy;
|
||||
final Color? shadowColor;
|
||||
const BottomShadowWidget({this.offsetDy = 28, this.shadowColor, super.key});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Container(
|
||||
height: 8,
|
||||
decoration: BoxDecoration(
|
||||
color: Colors.transparent,
|
||||
boxShadow: [
|
||||
BoxShadow(
|
||||
color: shadowColor ?? Theme.of(context).colorScheme.surface,
|
||||
spreadRadius: 42,
|
||||
blurRadius: 42,
|
||||
offset: Offset(0, offsetDy), // changes position of shadow
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -1,49 +0,0 @@
|
||||
import 'package:ente_auth/ente_theme_data.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
class LinearProgressDialog extends StatefulWidget {
|
||||
final String message;
|
||||
|
||||
const LinearProgressDialog(this.message, {super.key});
|
||||
|
||||
@override
|
||||
LinearProgressDialogState createState() => LinearProgressDialogState();
|
||||
}
|
||||
|
||||
class LinearProgressDialogState extends State<LinearProgressDialog> {
|
||||
double? _progress;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
_progress = 0;
|
||||
super.initState();
|
||||
}
|
||||
|
||||
void setProgress(double progress) {
|
||||
setState(() {
|
||||
_progress = progress;
|
||||
});
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return PopScope(
|
||||
canPop: false,
|
||||
child: AlertDialog(
|
||||
title: Text(
|
||||
widget.message,
|
||||
style: const TextStyle(
|
||||
fontSize: 16,
|
||||
),
|
||||
textAlign: TextAlign.center,
|
||||
),
|
||||
content: LinearProgressIndicator(
|
||||
value: _progress,
|
||||
valueColor: AlwaysStoppedAnimation<Color>(
|
||||
Theme.of(context).colorScheme.alternativeColor,
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -1,98 +0,0 @@
|
||||
|
||||
|
||||
import 'package:ente_auth/utils/dialog_util.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
class RenameDialog extends StatefulWidget {
|
||||
final String name;
|
||||
final String type;
|
||||
final int maxLength;
|
||||
|
||||
const RenameDialog(this.name, this.type, {super.key, this.maxLength = 100});
|
||||
|
||||
@override
|
||||
State<RenameDialog> createState() => _RenameDialogState();
|
||||
}
|
||||
|
||||
class _RenameDialogState extends State<RenameDialog> {
|
||||
String? _newName;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
_newName = widget.name;
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return AlertDialog(
|
||||
title: const Text("Enter a new name"),
|
||||
content: SingleChildScrollView(
|
||||
child: Column(
|
||||
mainAxisAlignment: MainAxisAlignment.start,
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
TextFormField(
|
||||
decoration: InputDecoration(
|
||||
hintText: '${widget.type} name',
|
||||
hintStyle: const TextStyle(
|
||||
color: Colors.white30,
|
||||
),
|
||||
contentPadding: const EdgeInsets.all(12),
|
||||
),
|
||||
onChanged: (value) {
|
||||
setState(() {
|
||||
_newName = value;
|
||||
});
|
||||
},
|
||||
autocorrect: false,
|
||||
keyboardType: TextInputType.text,
|
||||
initialValue: _newName,
|
||||
autofocus: true,
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
actions: [
|
||||
TextButton(
|
||||
child: const Text(
|
||||
"Cancel",
|
||||
style: TextStyle(
|
||||
color: Colors.redAccent,
|
||||
),
|
||||
),
|
||||
onPressed: () {
|
||||
Navigator.of(context).pop(null);
|
||||
},
|
||||
),
|
||||
TextButton(
|
||||
child: Text(
|
||||
"Rename",
|
||||
style: TextStyle(
|
||||
color: Theme.of(context).colorScheme.onSurface,
|
||||
),
|
||||
),
|
||||
onPressed: () {
|
||||
if (_newName!.trim().isEmpty) {
|
||||
showErrorDialog(
|
||||
context,
|
||||
"Empty name",
|
||||
"${widget.type} name cannot be empty",
|
||||
);
|
||||
return;
|
||||
}
|
||||
if (_newName!.trim().length > widget.maxLength) {
|
||||
showErrorDialog(
|
||||
context,
|
||||
"Name too large",
|
||||
"${widget.type} name should be less than ${widget.maxLength} characters",
|
||||
);
|
||||
return;
|
||||
}
|
||||
Navigator.of(context).pop(_newName!.trim());
|
||||
},
|
||||
),
|
||||
],
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -1,41 +0,0 @@
|
||||
import 'package:ente_auth/core/event_bus.dart';
|
||||
import 'package:ente_auth/events/opened_settings_event.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
class HomeHeaderWidget extends StatefulWidget {
|
||||
final Widget centerWidget;
|
||||
const HomeHeaderWidget({required this.centerWidget, super.key});
|
||||
|
||||
@override
|
||||
State<HomeHeaderWidget> createState() => _HomeHeaderWidgetState();
|
||||
}
|
||||
|
||||
class _HomeHeaderWidgetState extends State<HomeHeaderWidget> {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final hasNotch = View.of(context).viewPadding.top > 65;
|
||||
return Padding(
|
||||
padding: EdgeInsets.fromLTRB(4, hasNotch ? 4 : 8, 4, 4),
|
||||
child: Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
IconButton(
|
||||
visualDensity: const VisualDensity(horizontal: -2, vertical: -2),
|
||||
onPressed: () {
|
||||
Scaffold.of(context).openDrawer();
|
||||
Bus.instance.fire(OpenedSettingsEvent());
|
||||
},
|
||||
splashColor: Colors.transparent,
|
||||
icon: const Icon(
|
||||
Icons.menu_outlined,
|
||||
),
|
||||
),
|
||||
AnimatedSwitcher(
|
||||
duration: const Duration(milliseconds: 250),
|
||||
child: widget.centerWidget,
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -1,69 +0,0 @@
|
||||
import 'package:ente_auth/l10n/l10n.dart';
|
||||
import 'package:ente_auth/services/user_service.dart';
|
||||
import 'package:ente_auth/theme/ente_theme.dart';
|
||||
import 'package:ente_auth/ui/account/delete_account_page.dart';
|
||||
import 'package:ente_auth/ui/components/captioned_text_widget.dart';
|
||||
import 'package:ente_auth/ui/components/expandable_menu_item_widget.dart';
|
||||
import 'package:ente_auth/ui/components/menu_item_widget.dart';
|
||||
import 'package:ente_auth/ui/settings/common_settings.dart';
|
||||
import 'package:ente_auth/utils/dialog_util.dart';
|
||||
import 'package:ente_auth/utils/navigation_util.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
class DangerSectionWidget extends StatelessWidget {
|
||||
const DangerSectionWidget({super.key});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return ExpandableMenuItemWidget(
|
||||
title: context.l10n.exit,
|
||||
selectionOptionsWidget: _getSectionOptions(context),
|
||||
leadingIcon: Icons.logout_outlined,
|
||||
);
|
||||
}
|
||||
|
||||
Widget _getSectionOptions(BuildContext context) {
|
||||
return Column(
|
||||
children: [
|
||||
sectionOptionSpacing,
|
||||
MenuItemWidget(
|
||||
captionedTextWidget: CaptionedTextWidget(
|
||||
title: context.l10n.logout,
|
||||
),
|
||||
pressedColor: getEnteColorScheme(context).fillFaint,
|
||||
trailingIcon: Icons.chevron_right_outlined,
|
||||
trailingIconIsMuted: true,
|
||||
onTap: () async {
|
||||
_onLogoutTapped(context);
|
||||
},
|
||||
),
|
||||
sectionOptionSpacing,
|
||||
MenuItemWidget(
|
||||
captionedTextWidget: CaptionedTextWidget(
|
||||
title: context.l10n.deleteAccount,
|
||||
),
|
||||
pressedColor: getEnteColorScheme(context).fillFaint,
|
||||
trailingIcon: Icons.chevron_right_outlined,
|
||||
trailingIconIsMuted: true,
|
||||
onTap: () async {
|
||||
// ignore: unawaited_futures
|
||||
routeToPage(context, const DeleteAccountPage());
|
||||
},
|
||||
),
|
||||
sectionOptionSpacing,
|
||||
],
|
||||
);
|
||||
}
|
||||
|
||||
void _onLogoutTapped(BuildContext context) {
|
||||
showChoiceActionSheet(
|
||||
context,
|
||||
title: context.l10n.areYouSureYouWantToLogout,
|
||||
firstButtonLabel: context.l10n.yesLogout,
|
||||
isCritical: true,
|
||||
firstButtonOnTap: () async {
|
||||
await UserService.instance.logout(context);
|
||||
},
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -1,94 +0,0 @@
|
||||
import 'package:ente_auth/core/configuration.dart';
|
||||
import 'package:ente_auth/l10n/l10n.dart';
|
||||
import 'package:ente_auth/ui/settings/common_settings.dart';
|
||||
import 'package:ente_auth/ui/settings/settings_section_title.dart';
|
||||
import 'package:ente_auth/ui/settings/settings_text_item.dart';
|
||||
import 'package:ente_crypto_dart/ente_crypto_dart.dart';
|
||||
import 'package:expandable/expandable.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
class DebugSectionWidget extends StatelessWidget {
|
||||
const DebugSectionWidget({super.key});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
// This is a debug only section not shown to end users, so these strings are
|
||||
// not translated.
|
||||
return ExpandablePanel(
|
||||
header: const SettingsSectionTitle("Debug"),
|
||||
collapsed: Container(),
|
||||
expanded: _getSectionOptions(context),
|
||||
theme: getExpandableTheme(),
|
||||
);
|
||||
}
|
||||
|
||||
Widget _getSectionOptions(BuildContext context) {
|
||||
return Column(
|
||||
children: [
|
||||
GestureDetector(
|
||||
behavior: HitTestBehavior.translucent,
|
||||
onTap: () async {
|
||||
_showKeyAttributesDialog(context);
|
||||
},
|
||||
child: const SettingsTextItem(
|
||||
text: "Key attributes",
|
||||
icon: Icons.navigate_next,
|
||||
),
|
||||
),
|
||||
],
|
||||
);
|
||||
}
|
||||
|
||||
void _showKeyAttributesDialog(BuildContext context) {
|
||||
final l10n = context.l10n;
|
||||
final keyAttributes = Configuration.instance.getKeyAttributes()!;
|
||||
final AlertDialog alert = AlertDialog(
|
||||
title: const Text("key attributes"),
|
||||
content: SingleChildScrollView(
|
||||
child: Column(
|
||||
children: [
|
||||
const Text(
|
||||
"Key",
|
||||
style: TextStyle(fontWeight: FontWeight.bold),
|
||||
),
|
||||
Text(CryptoUtil.bin2base64(Configuration.instance.getKey()!)),
|
||||
const Padding(padding: EdgeInsets.all(12)),
|
||||
const Text(
|
||||
"Encrypted Key",
|
||||
style: TextStyle(fontWeight: FontWeight.bold),
|
||||
),
|
||||
Text(keyAttributes.encryptedKey),
|
||||
const Padding(padding: EdgeInsets.all(12)),
|
||||
const Text(
|
||||
"Key Decryption Nonce",
|
||||
style: TextStyle(fontWeight: FontWeight.bold),
|
||||
),
|
||||
Text(keyAttributes.keyDecryptionNonce),
|
||||
const Padding(padding: EdgeInsets.all(12)),
|
||||
const Text(
|
||||
"KEK Salt",
|
||||
style: TextStyle(fontWeight: FontWeight.bold),
|
||||
),
|
||||
Text(keyAttributes.kekSalt),
|
||||
const Padding(padding: EdgeInsets.all(12)),
|
||||
],
|
||||
),
|
||||
),
|
||||
actions: [
|
||||
TextButton(
|
||||
child: Text(l10n.ok),
|
||||
onPressed: () {
|
||||
Navigator.of(context, rootNavigator: true).pop('dialog');
|
||||
},
|
||||
),
|
||||
],
|
||||
);
|
||||
|
||||
showDialog(
|
||||
context: context,
|
||||
builder: (BuildContext context) {
|
||||
return alert;
|
||||
},
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -1,34 +0,0 @@
|
||||
import 'package:ente_auth/l10n/l10n.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:url_launcher/url_launcher.dart';
|
||||
|
||||
class MadeWithLoveWidget extends StatelessWidget {
|
||||
const MadeWithLoveWidget({
|
||||
super.key,
|
||||
});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final l10n = context.l10n;
|
||||
return GestureDetector(
|
||||
onTap: () {
|
||||
launchUrl(Uri.parse("https://ente.io"));
|
||||
},
|
||||
child: RichText(
|
||||
text: TextSpan(
|
||||
text: l10n.madeWithLoveAtPrefix,
|
||||
style: DefaultTextStyle.of(context).style,
|
||||
children: const <TextSpan>[
|
||||
TextSpan(
|
||||
text: 'ente.io',
|
||||
style: TextStyle(
|
||||
fontWeight: FontWeight.bold,
|
||||
color: Colors.green,
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -1,35 +0,0 @@
|
||||
|
||||
|
||||
import 'dart:io';
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
class SettingsTextItem extends StatelessWidget {
|
||||
final String text;
|
||||
final IconData icon;
|
||||
const SettingsTextItem({
|
||||
super.key,
|
||||
required this.text,
|
||||
required this.icon,
|
||||
});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Column(
|
||||
children: [
|
||||
Padding(padding: EdgeInsets.all(Platform.isIOS ? 4 : 6)),
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
Align(
|
||||
alignment: Alignment.centerLeft,
|
||||
child: Text(text, style: Theme.of(context).textTheme.titleMedium),
|
||||
),
|
||||
Icon(icon),
|
||||
],
|
||||
),
|
||||
Padding(padding: EdgeInsets.all(Platform.isIOS ? 4 : 6)),
|
||||
],
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -1,83 +0,0 @@
|
||||
import 'package:dotted_border/dotted_border.dart';
|
||||
import 'package:ente_auth/core/configuration.dart';
|
||||
import 'package:ente_auth/l10n/l10n.dart';
|
||||
import 'package:ente_auth/models/subscription.dart';
|
||||
import 'package:ente_auth/services/billing_service.dart';
|
||||
import 'package:ente_auth/theme/ente_theme.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:styled_text/styled_text.dart';
|
||||
import 'package:url_launcher/url_launcher.dart';
|
||||
|
||||
class SupportDevWidget extends StatelessWidget {
|
||||
const SupportDevWidget({
|
||||
super.key,
|
||||
});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final l10n = context.l10n;
|
||||
|
||||
// fetch
|
||||
if (Configuration.instance.hasConfiguredAccount()) {
|
||||
return FutureBuilder<Subscription>(
|
||||
future: BillingService.instance.getSubscription(),
|
||||
builder: (context, snapshot) {
|
||||
if (snapshot.hasData) {
|
||||
final subscription = snapshot.data;
|
||||
if (subscription != null && subscription.productID == "free") {
|
||||
return buildWidget(l10n, context);
|
||||
}
|
||||
}
|
||||
return const SizedBox.shrink();
|
||||
},
|
||||
);
|
||||
} else {
|
||||
return buildWidget(l10n, context);
|
||||
}
|
||||
}
|
||||
|
||||
Widget buildWidget(AppLocalizations l10n, BuildContext context) {
|
||||
return GestureDetector(
|
||||
onTap: () {
|
||||
launchUrl(Uri.parse("https://ente.io"));
|
||||
},
|
||||
child: DottedBorder(
|
||||
borderType: BorderType.RRect,
|
||||
radius: const Radius.circular(12),
|
||||
padding: const EdgeInsets.all(6),
|
||||
dashPattern: const <double>[3, 3],
|
||||
color: getEnteColorScheme(context).primaryGreen,
|
||||
child: ClipRRect(
|
||||
borderRadius: const BorderRadius.all(Radius.circular(12)),
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.symmetric(vertical: 12.0, horizontal: 6),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
StyledText(
|
||||
text: l10n.supportDevs,
|
||||
style: getEnteTextTheme(context).large,
|
||||
tags: {
|
||||
'bold-green': StyledTextTag(
|
||||
style: TextStyle(
|
||||
fontWeight: FontWeight.bold,
|
||||
color: getEnteColorScheme(context).primaryGreen,
|
||||
),
|
||||
),
|
||||
},
|
||||
),
|
||||
const Padding(padding: EdgeInsets.all(6)),
|
||||
Text(
|
||||
l10n.supportDiscount,
|
||||
style: const TextStyle(
|
||||
color: Colors.grey,
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -1 +0,0 @@
|
||||
// TODO Implement this library.
|
||||
@@ -113,12 +113,12 @@ String parseErrorForUI(
|
||||
if (dioError.response?.data["code"] != null) {
|
||||
errorInfo = "Reason: ${dioError.response!.data["code"]}";
|
||||
} else {
|
||||
errorInfo = "Reason: ${dioError.response!.data}";
|
||||
errorInfo = "Reason: ${dioError.response!.data.toString()}";
|
||||
}
|
||||
} else if (dioError.type == DioExceptionType.unknown) {
|
||||
errorInfo = "Reason: $dioError.error";
|
||||
} else if (dioError.type == DioExceptionType.badCertificate) {
|
||||
errorInfo = "Reason: ${dioError.error.toString()}";
|
||||
} else {
|
||||
errorInfo = "Reason: $dioError.type";
|
||||
errorInfo = "Reason: ${dioError.type.toString()}";
|
||||
}
|
||||
} else {
|
||||
if (kDebugMode) {
|
||||
|
||||
@@ -250,10 +250,10 @@ packages:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: collection
|
||||
sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a
|
||||
sha256: a1ace0a119f20aabc852d165077c036cd864315bd99b7eaa10a60100341941bf
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.18.0"
|
||||
version: "1.19.0"
|
||||
confetti:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
@@ -286,6 +286,14 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.1.1"
|
||||
cronet_http:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: cronet_http
|
||||
sha256: "3af9c4d57bf07ef4b307e77b22be4ad61bea19ee6ff65e62184863f3a09f1415"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.3.2"
|
||||
cross_file:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -310,6 +318,14 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.0.0"
|
||||
cupertino_http:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: cupertino_http
|
||||
sha256: "6fcf79586ad872ddcd6004d55c8c2aab3cdf0337436e8f99837b1b6c30665d0c"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.0.2"
|
||||
dart_style:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -346,10 +362,10 @@ packages:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: dio
|
||||
sha256: "5598aa796bbf4699afd5c67c0f5f6e2ed542afc956884b9cd58c306966efc260"
|
||||
sha256: "253a18bbd4851fecba42f7343a1df3a9a4c1d31a2c1b37e221086b4fa8c8dbc9"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "5.7.0"
|
||||
version: "5.8.0+1"
|
||||
dio_web_adapter:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -861,6 +877,14 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "4.0.2"
|
||||
http_profile:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: http_profile
|
||||
sha256: "7e679e355b09aaee2ab5010915c932cce3f2d1c11c3b2dc177891687014ffa78"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.1.0"
|
||||
image:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -885,6 +909,14 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.0.4"
|
||||
jni:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: jni
|
||||
sha256: f377c585ea9c08d48b427dc2e03780af2889d1bb094440da853c6883c1acba4b
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.10.1"
|
||||
js:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -1061,6 +1093,14 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.0.2"
|
||||
native_dio_adapter:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: native_dio_adapter
|
||||
sha256: "7420bc9517b2abe09810199a19924617b45690a44ecfb0616ac9babc11875c03"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.4.0"
|
||||
nested:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -1077,6 +1117,14 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.5.0"
|
||||
objective_c:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: objective_c
|
||||
sha256: "62e79ab8c3ed6f6a340ea50dd48d65898f5d70425d404f0d99411f6e56e04584"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "4.1.0"
|
||||
otp:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
|
||||
@@ -21,7 +21,7 @@ dependencies:
|
||||
connectivity_plus: ^6.0.5
|
||||
convert: ^3.1.1
|
||||
device_info_plus: ^9.1.1
|
||||
dio: ^5.4.0
|
||||
dio: ^5.8.0+1
|
||||
dotted_border: ^2.0.0+2
|
||||
dropdown_button2: ^2.3.9
|
||||
email_validator: ^3.0.0
|
||||
@@ -72,6 +72,7 @@ dependencies:
|
||||
logging: ^1.0.1
|
||||
modal_bottom_sheet: ^3.0.0
|
||||
move_to_background: ^1.0.2
|
||||
native_dio_adapter: ^1.4.0
|
||||
otp: ^3.1.1
|
||||
package_info_plus: ^8.0.2
|
||||
password_strength: ^0.2.0
|
||||
|
||||
48
cli/main.go
@@ -15,7 +15,7 @@ import (
|
||||
"strings"
|
||||
)
|
||||
|
||||
var AppVersion = "0.2.2"
|
||||
var AppVersion = "0.2.3"
|
||||
|
||||
func main() {
|
||||
cliConfigDir, err := GetCLIConfigDir()
|
||||
@@ -50,18 +50,21 @@ func main() {
|
||||
}
|
||||
}
|
||||
|
||||
// Define a set of commands that do not require KeyHolder initialisation.
|
||||
skipKeyHolderCommands := map[string]struct{}{"version": {}, "docs": {}, "help": {}}
|
||||
// Define a set of commands that do not require KeyHolder or cli initialisation.
|
||||
skipInitCommands := map[string]struct{}{"version": {}, "docs": {}, "help": {}}
|
||||
|
||||
var keyHolder *secrets.KeyHolder
|
||||
|
||||
// Only initialise KeyHolder if the command isn't in the skip list.
|
||||
shouldInit := len(os.Args) > 1
|
||||
if len(os.Args) > 1 {
|
||||
if _, skip := skipKeyHolderCommands[os.Args[1]]; !skip {
|
||||
keyHolder = secrets.NewKeyHolder(secrets.GetOrCreateClISecret())
|
||||
if _, skip := skipInitCommands[os.Args[1]]; skip {
|
||||
shouldInit = false
|
||||
}
|
||||
}
|
||||
|
||||
if shouldInit {
|
||||
keyHolder = secrets.NewKeyHolder(secrets.GetOrCreateClISecret())
|
||||
}
|
||||
ctrl := pkg.ClICtrl{
|
||||
Client: api.NewClient(api.Params{
|
||||
Debug: viper.GetBool("log.http"),
|
||||
@@ -71,16 +74,10 @@ func main() {
|
||||
KeyHolder: keyHolder,
|
||||
}
|
||||
|
||||
err = ctrl.Init()
|
||||
if err != nil {
|
||||
panic(err)
|
||||
if len(os.Args) == 1 {
|
||||
// If no arguments are passed, show help
|
||||
os.Args = append(os.Args, "help")
|
||||
}
|
||||
defer func() {
|
||||
if err := db.Close(); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}()
|
||||
|
||||
if len(os.Args) == 2 && os.Args[1] == "docs" {
|
||||
log.Println("Generating docs")
|
||||
err = cmd.GenerateDocs()
|
||||
@@ -89,9 +86,16 @@ func main() {
|
||||
}
|
||||
return
|
||||
}
|
||||
if len(os.Args) == 1 {
|
||||
// If no arguments are passed, show help
|
||||
os.Args = append(os.Args, "help")
|
||||
if shouldInit {
|
||||
err = ctrl.Init()
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
defer func() {
|
||||
if err := db.Close(); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}()
|
||||
}
|
||||
if os.Args[1] == "version" && viper.GetString("endpoint.api") != constants.EnteApiUrl {
|
||||
log.Printf("Custom endpoint: %s\n", viper.GetString("endpoint.api"))
|
||||
@@ -120,10 +124,10 @@ func initConfig(cliConfigDir string) {
|
||||
func GetCLIConfigDir() (string, error) {
|
||||
var configDir = os.Getenv("ENTE_CLI_CONFIG_DIR")
|
||||
|
||||
if configDir == "" {
|
||||
// for backward compatibility, check for ENTE_CLI_CONFIG_PATH
|
||||
configDir = os.Getenv("ENTE_CLI_CONFIG_PATH")
|
||||
}
|
||||
if configDir == "" {
|
||||
// for backward compatibility, check for ENTE_CLI_CONFIG_PATH
|
||||
configDir = os.Getenv("ENTE_CLI_CONFIG_PATH")
|
||||
}
|
||||
|
||||
if configDir != "" {
|
||||
// remove trailing slash (for all OS)
|
||||
|
||||
@@ -45,7 +45,6 @@ jobs:
|
||||
"${{ startsWith(github.ref, 'refs/tags/v') &&
|
||||
format('photosd-{0}', github.ref_name) || ( inputs.source
|
||||
|| 'main' ) }}"
|
||||
submodules: recursive
|
||||
|
||||
- name: Setup node
|
||||
uses: actions/setup-node@v4
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"tabWidth": 4,
|
||||
"proseWrap": "always",
|
||||
"objectWrap": "collapse",
|
||||
"plugins": [
|
||||
"prettier-plugin-organize-imports",
|
||||
"prettier-plugin-packagejson"
|
||||
|
||||
@@ -1,11 +1,22 @@
|
||||
# CHANGELOG
|
||||
|
||||
## v1.7.9 (Unreleased)
|
||||
## v1.7.11 (Unreleased)
|
||||
|
||||
- Improved file viewer.
|
||||
- Improved live photo experience.
|
||||
- .
|
||||
|
||||
## v1.7.10
|
||||
|
||||
- Speed up selection for large libraries.
|
||||
- Support Japanese translations.
|
||||
- Fix video thumbnail generation on drag and drop.
|
||||
|
||||
## v1.7.9
|
||||
|
||||
- Light mode.
|
||||
- Faster and more stable thumbnail generation.
|
||||
- Support `.supplemental-metadata` JSON files in Google Takeout.
|
||||
- .
|
||||
|
||||
## v1.7.8
|
||||
|
||||
|
||||
@@ -10,19 +10,21 @@ To know more about Ente, see [our main README](../README.md) or visit
|
||||
|
||||
## Building from source
|
||||
|
||||
Fetch submodules
|
||||
Clone this repository and change to this directory
|
||||
|
||||
```sh
|
||||
git submodule update --init --recursive
|
||||
git clone https://github.com/ente-io/ente
|
||||
cd ente/desktop
|
||||
```
|
||||
|
||||
Install dependencies
|
||||
Install dependencies (requires Yarn v1):
|
||||
|
||||
```sh
|
||||
yarn install
|
||||
```
|
||||
|
||||
Run in development mode (supports hot reload for the renderer process)
|
||||
Now you can run in development mode (supports hot reload for the renderer
|
||||
process)
|
||||
|
||||
```sh
|
||||
yarn dev
|
||||
|
||||
@@ -38,8 +38,8 @@
|
||||
</branding>
|
||||
|
||||
<releases>
|
||||
<release version="1.7.8" date="2025-01-13">
|
||||
<url type="details">https://github.com/ente-io/photos-desktop/releases/tag/v1.7.8</url>
|
||||
<release version="1.7" date="2025-01-13">
|
||||
<url type="details">https://github.com/ente-io/photos-desktop/releases</url>
|
||||
</release>
|
||||
</releases>
|
||||
</component>
|
||||
|
||||
@@ -27,23 +27,17 @@ export default ts.config(
|
||||
// Allow numbers to be used in template literals.
|
||||
"@typescript-eslint/restrict-template-expressions": [
|
||||
"error",
|
||||
{
|
||||
allowNumber: true,
|
||||
},
|
||||
{ allowNumber: true },
|
||||
],
|
||||
// Allow void expressions as the entire body of an arrow function.
|
||||
"@typescript-eslint/no-confusing-void-expression": [
|
||||
"error",
|
||||
{
|
||||
ignoreArrowShorthand: true,
|
||||
},
|
||||
{ ignoreArrowShorthand: true },
|
||||
],
|
||||
// Allow free standing ternary expressions.
|
||||
"@typescript-eslint/no-unused-expressions": [
|
||||
"error",
|
||||
{
|
||||
allowTernary: true,
|
||||
},
|
||||
{ allowTernary: true },
|
||||
],
|
||||
},
|
||||
},
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "ente",
|
||||
"version": "1.7.9-beta",
|
||||
"version": "1.7.11-beta",
|
||||
"private": true,
|
||||
"description": "Desktop client for Ente Photos",
|
||||
"repository": "github:ente-io/photos-desktop",
|
||||
@@ -8,11 +8,11 @@
|
||||
"main": "app/main.js",
|
||||
"scripts": {
|
||||
"build": "yarn build-renderer && yarn build-main",
|
||||
"build:ci": "yarn build-renderer && tsc",
|
||||
"build:quick": "yarn build-renderer && yarn build-main:quick",
|
||||
"build-main": "tsc && electron-builder",
|
||||
"build-main:quick": "tsc && electron-builder --dir --config.compression=store --config.mac.identity=null",
|
||||
"build-renderer": "cross-env-shell _ENTE_IS_DESKTOP=1 \"cd ../web && yarn install && yarn build:photos && cd ../desktop && shx rm -rf out && shx cp -r ../web/apps/photos/out out\"",
|
||||
"build:ci": "yarn build-renderer && tsc",
|
||||
"build:quick": "yarn build-renderer && yarn build-main:quick",
|
||||
"dev": "concurrently --kill-others --success first --names 'main,rndr' \"yarn dev-main\" \"yarn dev-renderer\"",
|
||||
"dev-main": "tsc && electron .",
|
||||
"dev-renderer": "cross-env-shell _ENTE_IS_DESKTOP=1 \"cd ../web && yarn install && yarn workspace photos next dev -p 3008\"",
|
||||
@@ -31,7 +31,7 @@
|
||||
"clip-bpe-js": "^0.0.6",
|
||||
"comlink": "^4.4.2",
|
||||
"compare-versions": "^6.1.1",
|
||||
"electron-log": "^5.3.0",
|
||||
"electron-log": "^5.3.2",
|
||||
"electron-store": "^8.2.0",
|
||||
"electron-updater": "^6.4.0",
|
||||
"ffmpeg-static": "^5.2.0",
|
||||
@@ -41,23 +41,22 @@
|
||||
"onnxruntime-node": "^1.20.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@eslint/js": "^9.19.0",
|
||||
"@eslint/js": "^9.21.0",
|
||||
"@tsconfig/node20": "^20.1.4",
|
||||
"@types/auto-launch": "^5.0.5",
|
||||
"@types/eslint__js": "^8.42.3",
|
||||
"@types/ffmpeg-static": "^3.0.3",
|
||||
"ajv": "^8.17.1",
|
||||
"concurrently": "^9.1.2",
|
||||
"cross-env": "^7.0.3",
|
||||
"electron": "^34.1.1",
|
||||
"electron": "^34.3.1",
|
||||
"electron-builder": "^26.0.0",
|
||||
"eslint": "^9",
|
||||
"prettier": "3.4.2",
|
||||
"prettier": "3.5.3",
|
||||
"prettier-plugin-organize-imports": "^4.1.0",
|
||||
"prettier-plugin-packagejson": "^2.5.8",
|
||||
"prettier-plugin-packagejson": "^2.5.10",
|
||||
"shx": "^0.3.4",
|
||||
"typescript": "^5.7.2",
|
||||
"typescript-eslint": "^8.23.0"
|
||||
"typescript": "^5.8.2",
|
||||
"typescript-eslint": "^8.26.0"
|
||||
},
|
||||
"packageManager": "yarn@1.22.22",
|
||||
"productName": "ente"
|
||||
|
||||
@@ -247,12 +247,7 @@ const registerPrivilegedSchemes = () => {
|
||||
corsEnabled: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
scheme: "stream",
|
||||
privileges: {
|
||||
supportFetchAPI: true,
|
||||
},
|
||||
},
|
||||
{ scheme: "stream", privileges: { supportFetchAPI: true } },
|
||||
]);
|
||||
};
|
||||
|
||||
@@ -362,8 +357,18 @@ const createMainWindow = () => {
|
||||
// do it (Step 2) unconditionally (i.e., on macOS too).
|
||||
//
|
||||
// https://www.electronjs.org/docs/latest/tutorial/custom-title-bar#create-a-custom-title-bar
|
||||
//
|
||||
// Note that by default on Windows, the color of the WCO title bar
|
||||
// overlay (three buttons - minimize, maximize, close - on the top
|
||||
// right) is static, and unlike Linux, doesn't adapt to the theme /
|
||||
// content. Explicitly choosing a dark background, while it won't work
|
||||
// always (if the user's theme is light), is better than picking a light
|
||||
// background since the main image viewer is always dark.
|
||||
titleBarStyle: "hidden",
|
||||
titleBarOverlay: true,
|
||||
titleBarOverlay:
|
||||
process.platform == "win32"
|
||||
? { color: "black", symbolColor: "#cdcdcd" }
|
||||
: true,
|
||||
// The color to show in the window until the web content gets loaded.
|
||||
// https://www.electronjs.org/docs/latest/api/browser-window#setting-the-backgroundcolor-property
|
||||
//
|
||||
|
||||
@@ -41,6 +41,7 @@ import {
|
||||
fsRm,
|
||||
fsRmdir,
|
||||
fsWriteFile,
|
||||
fsWriteFileViaBackup,
|
||||
} from "./services/fs";
|
||||
import { convertToJPEG, generateImageThumbnail } from "./services/image";
|
||||
import { logout } from "./services/logout";
|
||||
@@ -154,6 +155,12 @@ export const attachIPCHandlers = () => {
|
||||
fsWriteFile(path, contents),
|
||||
);
|
||||
|
||||
ipcMain.handle(
|
||||
"fsWriteFileViaBackup",
|
||||
(_, path: string, contents: string) =>
|
||||
fsWriteFileViaBackup(path, contents),
|
||||
);
|
||||
|
||||
ipcMain.handle("fsIsDir", (_, dirPath: string) => fsIsDir(dirPath));
|
||||
|
||||
ipcMain.handle("fsFindFiles", (_, folderPath: string) =>
|
||||
|
||||
@@ -36,17 +36,9 @@ export const createApplicationMenu = (mainWindow: BrowserWindow) => {
|
||||
{
|
||||
label: "Ente Photos",
|
||||
submenu: [
|
||||
...macOSOnly([
|
||||
{
|
||||
label: "About Ente",
|
||||
role: "about",
|
||||
},
|
||||
]),
|
||||
...macOSOnly([{ label: "About Ente", role: "about" }]),
|
||||
{ type: "separator" },
|
||||
{
|
||||
label: "Check for Updates...",
|
||||
click: handleCheckForUpdates,
|
||||
},
|
||||
{ label: "Check for Updates...", click: handleCheckForUpdates },
|
||||
{ type: "separator" },
|
||||
|
||||
...macOSOnly([
|
||||
@@ -65,20 +57,11 @@ export const createApplicationMenu = (mainWindow: BrowserWindow) => {
|
||||
|
||||
{ type: "separator" },
|
||||
...macOSOnly([
|
||||
{
|
||||
label: "Hide Ente",
|
||||
role: "hide",
|
||||
},
|
||||
{
|
||||
label: "Hide Others",
|
||||
role: "hideOthers",
|
||||
},
|
||||
{ label: "Hide Ente", role: "hide" },
|
||||
{ label: "Hide Others", role: "hideOthers" },
|
||||
{ type: "separator" },
|
||||
]),
|
||||
{
|
||||
label: "Quit",
|
||||
role: "quit",
|
||||
},
|
||||
{ label: "Quit", role: "quit" },
|
||||
],
|
||||
},
|
||||
{
|
||||
@@ -96,14 +79,8 @@ export const createApplicationMenu = (mainWindow: BrowserWindow) => {
|
||||
{
|
||||
label: "Speech",
|
||||
submenu: [
|
||||
{
|
||||
role: "startSpeaking",
|
||||
label: "Start Speaking",
|
||||
},
|
||||
{
|
||||
role: "stopSpeaking",
|
||||
label: "Stop Speaking",
|
||||
},
|
||||
{ role: "startSpeaking", label: "Start Speaking" },
|
||||
{ role: "stopSpeaking", label: "Stop Speaking" },
|
||||
],
|
||||
},
|
||||
]),
|
||||
@@ -132,15 +109,7 @@ export const createApplicationMenu = (mainWindow: BrowserWindow) => {
|
||||
]),
|
||||
],
|
||||
},
|
||||
{
|
||||
label: "Help",
|
||||
submenu: [
|
||||
{
|
||||
label: "Ente Help",
|
||||
click: handleHelp,
|
||||
},
|
||||
],
|
||||
},
|
||||
{ label: "Help", submenu: [{ label: "Ente Help", click: handleHelp }] },
|
||||
]);
|
||||
};
|
||||
|
||||
@@ -159,13 +128,7 @@ export const createTrayContextMenu = (mainWindow: BrowserWindow) => {
|
||||
};
|
||||
|
||||
return Menu.buildFromTemplate([
|
||||
{
|
||||
label: "Open Ente",
|
||||
click: handleOpen,
|
||||
},
|
||||
{
|
||||
label: "Quit Ente",
|
||||
click: handleClose,
|
||||
},
|
||||
{ label: "Open Ente", click: handleOpen },
|
||||
{ label: "Quit Ente", click: handleClose },
|
||||
]);
|
||||
};
|
||||
|
||||
@@ -10,10 +10,7 @@ class AutoLauncher {
|
||||
|
||||
constructor() {
|
||||
if (process.platform != "darwin") {
|
||||
this.autoLaunch = new AutoLaunch({
|
||||
name: "ente",
|
||||
isHidden: true,
|
||||
});
|
||||
this.autoLaunch = new AutoLaunch({ name: "ente", isHidden: true });
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -24,6 +24,12 @@ export const fsReadTextFile = async (filePath: string) =>
|
||||
export const fsWriteFile = (path: string, contents: string) =>
|
||||
fs.writeFile(path, contents, { flush: true });
|
||||
|
||||
export const fsWriteFileViaBackup = async (path: string, contents: string) => {
|
||||
const backupPath = path + ".backup";
|
||||
await fs.writeFile(backupPath, contents, { flush: true });
|
||||
return fs.rename(backupPath, path);
|
||||
};
|
||||
|
||||
export const fsIsDir = async (dirPath: string) => {
|
||||
if (!existsSync(dirPath)) return false;
|
||||
const stat = await fs.stat(dirPath);
|
||||
|
||||
@@ -247,9 +247,7 @@ export const computeCLIPImageEmbedding = async (
|
||||
) => {
|
||||
const session = await cachedCLIPImageSession();
|
||||
const inputArray = new Uint8Array(input.buffer);
|
||||
const feeds = {
|
||||
input: new ort.Tensor("uint8", inputArray, inputShape),
|
||||
};
|
||||
const feeds = { input: new ort.Tensor("uint8", inputArray, inputShape) };
|
||||
const t = Date.now();
|
||||
const results = await session.run(feeds);
|
||||
log.debugString(`ONNX/CLIP image embedding took ${Date.now() - t} ms`);
|
||||
@@ -292,9 +290,7 @@ export const computeCLIPTextEmbeddingIfAvailable = async (text: string) => {
|
||||
const session = sessionOrSkip;
|
||||
const tokenizer = getTokenizer();
|
||||
const tokenizedText = Int32Array.from(tokenizer.encodeForCLIP(text));
|
||||
const feeds = {
|
||||
input: new ort.Tensor("int32", tokenizedText, [1, 77]),
|
||||
};
|
||||
const feeds = { input: new ort.Tensor("int32", tokenizedText, [1, 77]) };
|
||||
|
||||
const t = Date.now();
|
||||
const results = await session.run(feeds);
|
||||
@@ -316,9 +312,7 @@ export const detectFaces = async (
|
||||
) => {
|
||||
const session = await cachedFaceDetectionSession();
|
||||
const inputArray = new Uint8Array(input.buffer);
|
||||
const feeds = {
|
||||
input: new ort.Tensor("uint8", inputArray, inputShape),
|
||||
};
|
||||
const feeds = { input: new ort.Tensor("uint8", inputArray, inputShape) };
|
||||
const t = Date.now();
|
||||
const results = await session.run(feeds);
|
||||
log.debugString(`ONNX/YOLO face detection took ${Date.now() - t} ms`);
|
||||
|
||||
@@ -84,11 +84,7 @@ export const pendingUploads = async (): Promise<PendingUploads | undefined> => {
|
||||
|
||||
if (filePaths.length == 0 && zipItems.length == 0) return undefined;
|
||||
|
||||
return {
|
||||
collectionName,
|
||||
filePaths,
|
||||
zipItems,
|
||||
};
|
||||
return { collectionName, filePaths, zipItems };
|
||||
};
|
||||
|
||||
/**
|
||||
|
||||
@@ -5,9 +5,7 @@ interface SafeStorageStore {
|
||||
}
|
||||
|
||||
const safeStorageSchema: Schema<SafeStorageStore> = {
|
||||
encryptionKey: {
|
||||
type: "string",
|
||||
},
|
||||
encryptionKey: { type: "string" },
|
||||
};
|
||||
|
||||
export const safeStorageStore = new Store({
|
||||
|
||||
@@ -22,30 +22,13 @@ export interface UploadStatusStore {
|
||||
}
|
||||
|
||||
const uploadStatusSchema: Schema<UploadStatusStore> = {
|
||||
collectionName: {
|
||||
type: "string",
|
||||
},
|
||||
filePaths: {
|
||||
type: "array",
|
||||
items: {
|
||||
type: "string",
|
||||
},
|
||||
},
|
||||
collectionName: { type: "string" },
|
||||
filePaths: { type: "array", items: { type: "string" } },
|
||||
zipItems: {
|
||||
type: "array",
|
||||
items: {
|
||||
type: "array",
|
||||
items: {
|
||||
type: "string",
|
||||
},
|
||||
},
|
||||
},
|
||||
zipPaths: {
|
||||
type: "array",
|
||||
items: {
|
||||
type: "string",
|
||||
},
|
||||
items: { type: "array", items: { type: "string" } },
|
||||
},
|
||||
zipPaths: { type: "array", items: { type: "string" } },
|
||||
};
|
||||
|
||||
export const uploadStatusStore = new Store({
|
||||
|
||||
@@ -23,12 +23,7 @@ interface UserPreferences {
|
||||
* the app is not maximized (when the app was maximized when it was being
|
||||
* quit then {@link isWindowMaximized} will be set instead).
|
||||
*/
|
||||
windowBounds?: {
|
||||
x: number;
|
||||
y: number;
|
||||
width: number;
|
||||
height: number;
|
||||
};
|
||||
windowBounds?: { x: number; y: number; width: number; height: number };
|
||||
/**
|
||||
* `true` if the app's main window is maximized the last time it was closed.
|
||||
*/
|
||||
|
||||