Compare commits
604 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
275327c789 | ||
|
|
72471c74d0 | ||
|
|
b9f63f80f1 | ||
|
|
32cd2120ac | ||
|
|
7db9abf725 | ||
|
|
f09a939a7c | ||
|
|
f1c1c900bf | ||
|
|
a43143d01c | ||
|
|
7357b40ba1 | ||
|
|
ad6e34f3a4 | ||
|
|
daf30dcab8 | ||
|
|
0033ad749f | ||
|
|
62c249015d | ||
|
|
31fcca245f | ||
|
|
f4864cddc9 | ||
|
|
36db1105a2 | ||
|
|
364f62660c | ||
|
|
b67a1bca49 | ||
|
|
000911546b | ||
|
|
e26b8e7ebc | ||
|
|
f03935ad9a | ||
|
|
d91b75b8f8 | ||
|
|
4d4cf472c8 | ||
|
|
685c7a865e | ||
|
|
0551550e61 | ||
|
|
c3fab28e1c | ||
|
|
74db2167f9 | ||
|
|
cedd8fc546 | ||
|
|
db486e957c | ||
|
|
1c6f45d8d3 | ||
|
|
ba8bb2d50f | ||
|
|
ec6d6a78cf | ||
|
|
f10f3c08de | ||
|
|
39c1da6642 | ||
|
|
84ec2a5f74 | ||
|
|
5e3e9ba824 | ||
|
|
198528f79f | ||
|
|
8a5ad581b8 | ||
|
|
7dbf8ca1f4 | ||
|
|
df808df8d3 | ||
|
|
4fddaef112 | ||
|
|
2bdc204c47 | ||
|
|
6734f99ba8 | ||
|
|
af4e0178d0 | ||
|
|
65b62485be | ||
|
|
98b58c1168 | ||
|
|
ad13048cdc | ||
|
|
a753c1515b | ||
|
|
bd48e2fff2 | ||
|
|
88ad1be4c3 | ||
|
|
1f31d8032f | ||
|
|
b5f5aed119 | ||
|
|
213326a212 | ||
|
|
264e35a6a8 | ||
|
|
76137ca1cf | ||
|
|
e4323ecd26 | ||
|
|
b406e2b99b | ||
|
|
c1c49e8ddc | ||
|
|
41e414af37 | ||
|
|
2afb69e787 | ||
|
|
3e7d4af4a0 | ||
|
|
bc11c66777 | ||
|
|
7a95b38d3c | ||
|
|
334fd4e951 | ||
|
|
923e3ee808 | ||
|
|
3358673ba4 | ||
|
|
d28b9f10b4 | ||
|
|
6ebbca58e8 | ||
|
|
15697f4f2b | ||
|
|
2cb0651b04 | ||
|
|
1f3a3ec04b | ||
|
|
c1a0172822 | ||
|
|
593e76479c | ||
|
|
5d622b906e | ||
|
|
7e253314ec | ||
|
|
78a05768d8 | ||
|
|
ddf6514a90 | ||
|
|
3847b97f80 | ||
|
|
046bc03037 | ||
|
|
7ff5f81b88 | ||
|
|
fb444e7dd4 | ||
|
|
c4f0db5bc5 | ||
|
|
a866ba8cdd | ||
|
|
129d356909 | ||
|
|
7289292f02 | ||
|
|
638e88ec79 | ||
|
|
19ead551d9 | ||
|
|
fccaa587e1 | ||
|
|
1709fcd0df | ||
|
|
de1f222bac | ||
|
|
5e1f0e9f7f | ||
|
|
e3a14d432b | ||
|
|
2b013c108f | ||
|
|
0194687181 | ||
|
|
bb47f4659d | ||
|
|
2b580d29ae | ||
|
|
b7e52119bc | ||
|
|
fd633ecb49 | ||
|
|
9c77346f36 | ||
|
|
641e74763f | ||
|
|
2e71427427 | ||
|
|
95ec0633ed | ||
|
|
14e8b8fb91 | ||
|
|
d40951f068 | ||
|
|
ab85d18cc8 | ||
|
|
6becaaa953 | ||
|
|
26e8c29f40 | ||
|
|
47800ee02d | ||
|
|
12a24dd473 | ||
|
|
ad6321d3ae | ||
|
|
7e071c770f | ||
|
|
a62d1dfa63 | ||
|
|
b3eb1dbc14 | ||
|
|
3170a45158 | ||
|
|
32483fa13b | ||
|
|
9166a1c3a6 | ||
|
|
6fa0afff37 | ||
|
|
bc649af941 | ||
|
|
16ce5ef046 | ||
|
|
bb6fd4bc4d | ||
|
|
63e1731d7c | ||
|
|
b9b7d9e337 | ||
|
|
ef8c07e6eb | ||
|
|
20a13663a6 | ||
|
|
2f0aa6ef05 | ||
|
|
62bd1354dc | ||
|
|
be255f1d09 | ||
|
|
b8b02b2285 | ||
|
|
e0db0642bd | ||
|
|
e81465a54e | ||
|
|
6e67cfc7be | ||
|
|
c0db5ee98a | ||
|
|
372b3da09c | ||
|
|
79532954dc | ||
|
|
aff2be605e | ||
|
|
363c191a6e | ||
|
|
2949cdab61 | ||
|
|
7addcf2d25 | ||
|
|
a272807a99 | ||
|
|
c803603de4 | ||
|
|
e6c22ec1ca | ||
|
|
b3ae843f0e | ||
|
|
12a78c1f45 | ||
|
|
612b81ee87 | ||
|
|
e5b91d2f3d | ||
|
|
82293c98eb | ||
|
|
629da68cfc | ||
|
|
643ecd2c2c | ||
|
|
dd1cb00c62 | ||
|
|
2c4d8418c1 | ||
|
|
9fcb5d6f31 | ||
|
|
38fc6bfbb9 | ||
|
|
804991a69c | ||
|
|
7388f46adf | ||
|
|
10c427127e | ||
|
|
c6d034174b | ||
|
|
471831bcd6 | ||
|
|
b1e64419a5 | ||
|
|
e2f17f1131 | ||
|
|
ae4a73a15b | ||
|
|
a84ca00270 | ||
|
|
c16d820b88 | ||
|
|
ef614150d5 | ||
|
|
b46ca1ec17 | ||
|
|
d5a347ede7 | ||
|
|
72d5a9b3e0 | ||
|
|
e6d72b4861 | ||
|
|
3da51b1bc9 | ||
|
|
17b7db6219 | ||
|
|
8353180161 | ||
|
|
f675a8dcf7 | ||
|
|
493f1d69e2 | ||
|
|
331e8c3ec6 | ||
|
|
56bce70558 | ||
|
|
d82e48f8e4 | ||
|
|
97ecc57be8 | ||
|
|
25bd2b145b | ||
|
|
7111c92ae7 | ||
|
|
e066cf1589 | ||
|
|
6f328b2ef8 | ||
|
|
7a6c55bd8a | ||
|
|
b35d3f57fe | ||
|
|
eef65af173 | ||
|
|
bea715b41c | ||
|
|
7be68ca82c | ||
|
|
287d5a7413 | ||
|
|
1448cea01c | ||
|
|
768e8b457b | ||
|
|
05474f4a3f | ||
|
|
8acada9b0f | ||
|
|
a86e7f035f | ||
|
|
9caff93c35 | ||
|
|
e6ba85e112 | ||
|
|
046803dbed | ||
|
|
615f4b1d1c | ||
|
|
a11535806d | ||
|
|
34a7169b4f | ||
|
|
4f365c73ad | ||
|
|
705bd9693d | ||
|
|
a88770a8ec | ||
|
|
da423b5bd2 | ||
|
|
56080bd0e4 | ||
|
|
63f66a1369 | ||
|
|
ca1a30196e | ||
|
|
b2d8e2a1e6 | ||
|
|
2ab8bb13c5 | ||
|
|
3a2c5c6d0a | ||
|
|
ed13a325e9 | ||
|
|
f43f99cff2 | ||
|
|
a3b8397361 | ||
|
|
4fb03e532c | ||
|
|
645ad5e1bd | ||
|
|
9036e9e8e3 | ||
|
|
468d8b04d6 | ||
|
|
4b98ab1246 | ||
|
|
d33e3dc13a | ||
|
|
df16e7c00b | ||
|
|
225c0e0af3 | ||
|
|
5543927042 | ||
|
|
72b274a2bf | ||
|
|
ac15990b48 | ||
|
|
7387dfdd9c | ||
|
|
74a7e7d1b4 | ||
|
|
a0a9de1d18 | ||
|
|
360366ba9e | ||
|
|
0180fe9468 | ||
|
|
19f5d95a3c | ||
|
|
051ca51d3b | ||
|
|
2a6ff9203b | ||
|
|
2e0529bd9a | ||
|
|
e24ab4f1ab | ||
|
|
3dbadeb232 | ||
|
|
4cdd939028 | ||
|
|
c11f4efc5c | ||
|
|
e1c21b908c | ||
|
|
a6c1def6fe | ||
|
|
19ae76d8de | ||
|
|
56e28feb00 | ||
|
|
b259c566b7 | ||
|
|
18598f8dca | ||
|
|
11e4c45969 | ||
|
|
39658ffe52 | ||
|
|
2f03b9aa29 | ||
|
|
dc438cff23 | ||
|
|
18f5521be5 | ||
|
|
bae9af1076 | ||
|
|
8d2805f226 | ||
|
|
0ad18c8182 | ||
|
|
9046b2cafb | ||
|
|
3d994b58a0 | ||
|
|
4310c4978e | ||
|
|
01bfa46729 | ||
|
|
3510ca7184 | ||
|
|
8d7845daa1 | ||
|
|
cb5fdac0da | ||
|
|
78c8d0562b | ||
|
|
bb0280f096 | ||
|
|
566b53ce9f | ||
|
|
ec95db0945 | ||
|
|
a0d7d07543 | ||
|
|
fe73bf9053 | ||
|
|
49c9e08b6c | ||
|
|
abcf55c498 | ||
|
|
849ce310c4 | ||
|
|
a3e593b747 | ||
|
|
5433f95eda | ||
|
|
0459196982 | ||
|
|
6f1457d30d | ||
|
|
ce596e29c4 | ||
|
|
86b9d16747 | ||
|
|
06911ae42a | ||
|
|
af2cb9b757 | ||
|
|
6a28cd1a35 | ||
|
|
f4a09a9ca0 | ||
|
|
a35f020f56 | ||
|
|
3d48111368 | ||
|
|
39ed7d7f4c | ||
|
|
abe83ccb8f | ||
|
|
d1be7c1ff7 | ||
|
|
1c223e570a | ||
|
|
a37cbd7d05 | ||
|
|
7ffa9844e2 | ||
|
|
bdf5872f04 | ||
|
|
da1909cc1d | ||
|
|
a503197352 | ||
|
|
d9d9a8f49d | ||
|
|
f57e2edf2a | ||
|
|
a1e2e3d011 | ||
|
|
5e546d1198 | ||
|
|
90405f3ebc | ||
|
|
11b57ff7d3 | ||
|
|
fe06cd63ac | ||
|
|
6c9d5e1499 | ||
|
|
6ed910de9f | ||
|
|
a506b8b25c | ||
|
|
170ebb57c6 | ||
|
|
29dd574e22 | ||
|
|
72770aa76d | ||
|
|
7f1c319aee | ||
|
|
60805bd916 | ||
|
|
10272ee0cf | ||
|
|
7c44cda76e | ||
|
|
0152d2c48e | ||
|
|
c5febce548 | ||
|
|
129b07c2c0 | ||
|
|
47bf099b88 | ||
|
|
94f1d23788 | ||
|
|
84ce72ec7a | ||
|
|
3da8351522 | ||
|
|
542153d950 | ||
|
|
090fdfb458 | ||
|
|
77835a43a5 | ||
|
|
1a2a1f1c17 | ||
|
|
eaaa704fa4 | ||
|
|
7803f8e670 | ||
|
|
f36e3c213e | ||
|
|
6fb1e23ed5 | ||
|
|
86d0c49e44 | ||
|
|
9251e6faba | ||
|
|
8f8725e1af | ||
|
|
0ce6a4cbdb | ||
|
|
ad3f705f50 | ||
|
|
c5847caa91 | ||
|
|
8df6d9db7e | ||
|
|
a9c1970f41 | ||
|
|
c3f0d2ef31 | ||
|
|
0dcc439dda | ||
|
|
5b0cac47ad | ||
|
|
b39e78a4a9 | ||
|
|
690d52f7bc | ||
|
|
23883ed4a1 | ||
|
|
ea178862d8 | ||
|
|
09f07a7a9d | ||
|
|
f6f8eefaa0 | ||
|
|
ede6e18bc9 | ||
|
|
36cb28d5cf | ||
|
|
9464f4b095 | ||
|
|
b31d43cbed | ||
|
|
2a388ae4b2 | ||
|
|
d675e31a51 | ||
|
|
e32de38d04 | ||
|
|
154753c732 | ||
|
|
53b75c8ea4 | ||
|
|
776e80b4d6 | ||
|
|
b09cede008 | ||
|
|
e2a0483b9f | ||
|
|
aaaeea2979 | ||
|
|
91f8989f70 | ||
|
|
ae36019ba9 | ||
|
|
1e0002aa74 | ||
|
|
1061fb6c85 | ||
|
|
22f504ca21 | ||
|
|
a74c5ee719 | ||
|
|
ef04ed447f | ||
|
|
c678973119 | ||
|
|
587b07a648 | ||
|
|
7fa3c6f8e8 | ||
|
|
9957678fb7 | ||
|
|
971803803c | ||
|
|
8ab118a8e9 | ||
|
|
1da9df690f | ||
|
|
615ad85d26 | ||
|
|
e02b60d8fa | ||
|
|
3fc4030ca6 | ||
|
|
707146daed | ||
|
|
c0117e72ad | ||
|
|
3cdb528dfe | ||
|
|
d2164dc0d0 | ||
|
|
87acc921c3 | ||
|
|
5741bd9cca | ||
|
|
1e6fb202f0 | ||
|
|
8cbb1abff2 | ||
|
|
d21418cf04 | ||
|
|
d35c8232d2 | ||
|
|
139d1a9aa3 | ||
|
|
f95817861a | ||
|
|
3e968aecc8 | ||
|
|
2795af8c7f | ||
|
|
bb438880e3 | ||
|
|
8492b7144f | ||
|
|
5dd974f2ab | ||
|
|
d3cd3bb0a4 | ||
|
|
04acf08d34 | ||
|
|
4db885d8b4 | ||
|
|
8718d94e7d | ||
|
|
24c1151101 | ||
|
|
0b22e5928c | ||
|
|
3311a50750 | ||
|
|
1563a85fea | ||
|
|
586983eb9b | ||
|
|
1a7a906ced | ||
|
|
496247c1d8 | ||
|
|
2f07bb3973 | ||
|
|
9b0f3bedff | ||
|
|
c66b5b2490 | ||
|
|
a1264a6088 | ||
|
|
4e0d770d05 | ||
|
|
508119a127 | ||
|
|
341b9e4a29 | ||
|
|
57789c1272 | ||
|
|
3845a87f2e | ||
|
|
3c266b6dc4 | ||
|
|
32a3952524 | ||
|
|
9c52f245ac | ||
|
|
393d9e9f1f | ||
|
|
f28f498467 | ||
|
|
b5a7a351f6 | ||
|
|
a14c0f5253 | ||
|
|
a278aa0f89 | ||
|
|
479bb2a1d6 | ||
|
|
538934a88a | ||
|
|
5d2726036f | ||
|
|
778317e1b2 | ||
|
|
99dd5507bf | ||
|
|
490d9bc3ec | ||
|
|
796e09bf13 | ||
|
|
588624e7a9 | ||
|
|
a45a9e6515 | ||
|
|
a7df074b8f | ||
|
|
9941a46769 | ||
|
|
b0565f2188 | ||
|
|
8fb3e39881 | ||
|
|
d788f5afac | ||
|
|
20123fca7f | ||
|
|
7c7b962c6d | ||
|
|
68ded1a6e0 | ||
|
|
da7a796edb | ||
|
|
3b5814edae | ||
|
|
f439443fe5 | ||
|
|
280d69d346 | ||
|
|
ab74ed0fa7 | ||
|
|
0d740c21a2 | ||
|
|
f65bc7c0bd | ||
|
|
0dd1a4973a | ||
|
|
05a5e62327 | ||
|
|
66a47137a0 | ||
|
|
f240cbbda6 | ||
|
|
3d54f8ec49 | ||
|
|
6fe0c60204 | ||
|
|
f7d04d668b | ||
|
|
57bd0d2674 | ||
|
|
08ee25deb2 | ||
|
|
c82d7bd909 | ||
|
|
59663d6661 | ||
|
|
5e68dace9f | ||
|
|
fcc9e0b2db | ||
|
|
3a5b3ff3bd | ||
|
|
1e1a48865f | ||
|
|
b31c30b9b6 | ||
|
|
7886a2179f | ||
|
|
d1a995a863 | ||
|
|
85554d19e4 | ||
|
|
7f4d13c54a | ||
|
|
9f67b9ba2f | ||
|
|
5381fe5a1a | ||
|
|
0887348611 | ||
|
|
98ce91df39 | ||
|
|
191c35914f | ||
|
|
cf1d0677d1 | ||
|
|
3d97ea6f96 | ||
|
|
caa4c5428a | ||
|
|
90e572c8b1 | ||
|
|
b1795f8c5a | ||
|
|
962c64b33c | ||
|
|
bd827d844b | ||
|
|
ed70675e1d | ||
|
|
e07d53725c | ||
|
|
1b589a35cf | ||
|
|
439f8d0914 | ||
|
|
1d7dbc4d17 | ||
|
|
001b055ee8 | ||
|
|
8534d6d7d7 | ||
|
|
e7a7c2d267 | ||
|
|
8803dfcee6 | ||
|
|
887f10059d | ||
|
|
d3db52ce9c | ||
|
|
5fa89c22bd | ||
|
|
ea42f9545f | ||
|
|
8830fb70a4 | ||
|
|
0edf14f3a9 | ||
|
|
89c6bb163e | ||
|
|
8708598daa | ||
|
|
c71c24a6bc | ||
|
|
386fb07017 | ||
|
|
aad2961646 | ||
|
|
00a89883fd | ||
|
|
5509c1810b | ||
|
|
24498bc95f | ||
|
|
58caec8d05 | ||
|
|
ebe331a7e4 | ||
|
|
d481008fdb | ||
|
|
b97d243978 | ||
|
|
fd833dff35 | ||
|
|
d9ed3a7d3f | ||
|
|
b8ce79467f | ||
|
|
9d0457d208 | ||
|
|
fa02e521f9 | ||
|
|
d03d50ef0d | ||
|
|
58fcedab64 | ||
|
|
5e11c43f84 | ||
|
|
4b4de9d5aa | ||
|
|
f135676d36 | ||
|
|
cb9adad660 | ||
|
|
88dab47d2c | ||
|
|
d6e4613144 | ||
|
|
893c09c848 | ||
|
|
a0e0fd5b98 | ||
|
|
98abb3aa00 | ||
|
|
8982a49192 | ||
|
|
529eb4e954 | ||
|
|
846a6d8717 | ||
|
|
07ab875655 | ||
|
|
602b0b5d9b | ||
|
|
0e428aebdb | ||
|
|
4abc68ab1c | ||
|
|
2638ee2926 | ||
|
|
ddaf78828a | ||
|
|
6d5347472d | ||
|
|
82fda96ed8 | ||
|
|
55b2b04e2e | ||
|
|
393f330d15 | ||
|
|
f4ecfeaddd | ||
|
|
ad101dc8a0 | ||
|
|
24e9a3ea59 | ||
|
|
f1d8135e30 | ||
|
|
a1a415de82 | ||
|
|
77dc234b2d | ||
|
|
c3ca8c6258 | ||
|
|
9e18236b55 | ||
|
|
ded7aada52 | ||
|
|
a117c1ebf2 | ||
|
|
d3715cc362 | ||
|
|
3689e7dfbc | ||
|
|
59e53c1edf | ||
|
|
f2a54e3cbb | ||
|
|
20db635366 | ||
|
|
b955d32970 | ||
|
|
5a5d89c32c | ||
|
|
1f0ed3bb31 | ||
|
|
6c083e88a3 | ||
|
|
2e7323d484 | ||
|
|
461aebd7f3 | ||
|
|
73ca78215f | ||
|
|
200bb31e08 | ||
|
|
396f52b8ca | ||
|
|
a118d3d848 | ||
|
|
f6b9702b52 | ||
|
|
d92418dc6d | ||
|
|
fe4b853393 | ||
|
|
782556495a | ||
|
|
5c32423597 | ||
|
|
5c8e6c3012 | ||
|
|
5133f74f67 | ||
|
|
d5b23b5bde | ||
|
|
bf4b4ae936 | ||
|
|
458b990b8c | ||
|
|
e044753934 | ||
|
|
c0b612c457 | ||
|
|
9414ef5709 | ||
|
|
c9e566f8aa | ||
|
|
40bd37315a | ||
|
|
0410d05913 | ||
|
|
a888b8d846 | ||
|
|
eac5c39a96 | ||
|
|
202a4064a4 | ||
|
|
ddf2369774 | ||
|
|
48f70a8552 | ||
|
|
4685b889c2 | ||
|
|
3e373200b1 | ||
|
|
7913d2a82d | ||
|
|
e20770e256 | ||
|
|
d43f0be0da | ||
|
|
7b4adc2e60 | ||
|
|
1eeba65ddb | ||
|
|
1252accef7 | ||
|
|
5f7c3ae20e | ||
|
|
e1b55b560a | ||
|
|
315859bf7b | ||
|
|
0a87dbea68 | ||
|
|
5f3c380d56 | ||
|
|
8b62c37c34 | ||
|
|
fae10cfa6b | ||
|
|
f9069144e5 | ||
|
|
7755b70317 | ||
|
|
c46f34c677 | ||
|
|
5c428ca502 | ||
|
|
51d5b7bab6 | ||
|
|
f508ad5e75 | ||
|
|
f9299eee2a | ||
|
|
212259aae3 | ||
|
|
6d733bb566 | ||
|
|
125f856e67 | ||
|
|
672ad64e53 | ||
|
|
cd59f1d576 | ||
|
|
c4fc43ccc0 | ||
|
|
b20b3142a2 | ||
|
|
d67f25d726 | ||
|
|
d881019c3b | ||
|
|
abdfa4f785 | ||
|
|
5394717ddc | ||
|
|
c9d58d4259 | ||
|
|
dba9cada83 | ||
|
|
0ec5181566 | ||
|
|
886847f457 |
6
.github/dependabot.yml
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
version: 2
|
||||
updates:
|
||||
- package-ecosystem: "github-actions"
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: "weekly"
|
||||
@@ -1,32 +1,11 @@
|
||||
name: No Response
|
||||
name: Can't reproduce.
|
||||
|
||||
# Both `issue_comment` and `scheduled` event types are required for this Action
|
||||
# to work properly.
|
||||
on:
|
||||
issue_comment:
|
||||
types: [created]
|
||||
schedule:
|
||||
- cron: '0 0 * * *'
|
||||
- cron: '0 3 * * *'
|
||||
|
||||
jobs:
|
||||
waiting-for-answer:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: lee-dohm/no-response@v0.5.0
|
||||
with:
|
||||
token: ${{ github.token }}
|
||||
responseRequiredLabel: waiting for answer
|
||||
|
||||
needs-user-action:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: lee-dohm/no-response@v0.5.0
|
||||
with:
|
||||
token: ${{ github.token }}
|
||||
responseRequiredLabel: needs user action
|
||||
|
||||
cant-reproduce:
|
||||
if: github.event_name != 'issue_comment'
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: lee-dohm/no-response@v0.5.0
|
||||
4
.github/workflows/docker.yml
vendored
@@ -20,7 +20,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Clone.
|
||||
uses: actions/checkout@v3.1.0
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: recursive
|
||||
|
||||
@@ -31,7 +31,7 @@ jobs:
|
||||
echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u $ --password-stdin
|
||||
|
||||
- name: Free up some disk space.
|
||||
uses: jlumbroso/free-disk-space@f68fdb76e2ea636224182cfb7377ff9a1708f9b8
|
||||
uses: jlumbroso/free-disk-space@54081f138730dfa15788a46383842cd2f914a1be
|
||||
|
||||
- name: Docker image build.
|
||||
run: |
|
||||
|
||||
11
.github/workflows/linux.yml
vendored
@@ -49,17 +49,16 @@ jobs:
|
||||
defines:
|
||||
- ""
|
||||
- "DESKTOP_APP_DISABLE_X11_INTEGRATION"
|
||||
- "DESKTOP_APP_DISABLE_WAYLAND_INTEGRATION"
|
||||
|
||||
env:
|
||||
UPLOAD_ARTIFACT: "false"
|
||||
UPLOAD_ARTIFACT: "true"
|
||||
|
||||
steps:
|
||||
- name: Get repository name.
|
||||
run: echo "REPO_NAME=${GITHUB_REPOSITORY##*/}" >> $GITHUB_ENV
|
||||
|
||||
- name: Clone.
|
||||
uses: actions/checkout@v3.1.0
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: recursive
|
||||
path: ${{ env.REPO_NAME }}
|
||||
@@ -115,9 +114,9 @@ jobs:
|
||||
if: env.UPLOAD_ARTIFACT == 'true'
|
||||
run: |
|
||||
cd $REPO_NAME/out/Debug
|
||||
mkdir artifact
|
||||
mv {Telegram,Updater} artifact/
|
||||
- uses: actions/upload-artifact@master
|
||||
sudo mkdir artifact
|
||||
sudo mv {Telegram,Updater} artifact/
|
||||
- uses: actions/upload-artifact@v4
|
||||
if: env.UPLOAD_ARTIFACT == 'true'
|
||||
name: Upload artifact.
|
||||
with:
|
||||
|
||||
2
.github/workflows/lock.yml
vendored
@@ -8,7 +8,7 @@ jobs:
|
||||
lock:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: dessant/lock-threads@v3
|
||||
- uses: dessant/lock-threads@v5
|
||||
with:
|
||||
github-token: ${{ github.token }}
|
||||
issue-inactive-days: 45
|
||||
|
||||
15
.github/workflows/mac.yml
vendored
@@ -47,7 +47,7 @@ jobs:
|
||||
defines:
|
||||
- ""
|
||||
env:
|
||||
UPLOAD_ARTIFACT: "false"
|
||||
UPLOAD_ARTIFACT: "true"
|
||||
ONLY_CACHE: "false"
|
||||
PREPARE_PATH: "Telegram/build/prepare/prepare.py"
|
||||
|
||||
@@ -56,7 +56,7 @@ jobs:
|
||||
run: echo "REPO_NAME=${GITHUB_REPOSITORY##*/}" >> $GITHUB_ENV
|
||||
|
||||
- name: Clone.
|
||||
uses: actions/checkout@v3.1.0
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: recursive
|
||||
path: ${{ env.REPO_NAME }}
|
||||
@@ -64,7 +64,10 @@ jobs:
|
||||
- name: First set up.
|
||||
run: |
|
||||
sudo chown -R `whoami`:admin /usr/local/share
|
||||
brew install automake ninja pkg-config nasm meson
|
||||
|
||||
brew update
|
||||
brew upgrade || true
|
||||
brew install automake meson nasm ninja pkg-config
|
||||
|
||||
# Disable spotlight.
|
||||
sudo mdutil -a -i off
|
||||
@@ -73,7 +76,7 @@ jobs:
|
||||
|
||||
- name: ThirdParty cache.
|
||||
id: cache-third-party
|
||||
uses: actions/cache@v3.0.11
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: ThirdParty
|
||||
key: ${{ runner.OS }}-third-party-${{ hashFiles(format('{0}/{1}', env.REPO_NAME, env.PREPARE_PATH)) }}
|
||||
@@ -81,7 +84,7 @@ jobs:
|
||||
|
||||
- name: Libraries cache.
|
||||
id: cache-libs
|
||||
uses: actions/cache@v3.0.11
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: Libraries
|
||||
key: ${{ runner.OS }}-libs-${{ hashFiles(format('{0}/{1}', env.REPO_NAME, env.PREPARE_PATH)) }}
|
||||
@@ -131,7 +134,7 @@ jobs:
|
||||
mkdir artifact
|
||||
mv Telegram.app artifact/
|
||||
mv Updater artifact/
|
||||
- uses: actions/upload-artifact@master
|
||||
- uses: actions/upload-artifact@v4
|
||||
if: env.UPLOAD_ARTIFACT == 'true'
|
||||
name: Upload artifact.
|
||||
with:
|
||||
|
||||
12
.github/workflows/mac_packaged.yml
vendored
@@ -49,8 +49,8 @@ jobs:
|
||||
|
||||
env:
|
||||
GIT: "https://github.com"
|
||||
OPENALDIR: "/usr/local/opt/openal-soft"
|
||||
UPLOAD_ARTIFACT: "false"
|
||||
CMAKE_PREFIX_PATH: "/usr/local/opt/ffmpeg@6:/usr/local/opt/openal-soft"
|
||||
UPLOAD_ARTIFACT: "true"
|
||||
ONLY_CACHE: "false"
|
||||
MANUAL_CACHING: "1"
|
||||
AUTO_CACHING: "1"
|
||||
@@ -60,7 +60,7 @@ jobs:
|
||||
run: echo "REPO_NAME=${GITHUB_REPOSITORY##*/}" >> $GITHUB_ENV
|
||||
|
||||
- name: Clone.
|
||||
uses: actions/checkout@v3.1.0
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: recursive
|
||||
path: ${{ env.REPO_NAME }}
|
||||
@@ -69,7 +69,7 @@ jobs:
|
||||
run: |
|
||||
brew update
|
||||
brew upgrade || true
|
||||
brew install autoconf automake boost cmake ffmpeg openal-soft openssl opus ninja pkg-config python qt yasm xz
|
||||
brew install autoconf automake boost cmake ffmpeg@6 openal-soft openssl opus ninja pkg-config python qt yasm xz
|
||||
sudo xcode-select -s /Applications/Xcode.app/Contents/Developer
|
||||
|
||||
xcodebuild -version > CACHE_KEY.txt
|
||||
@@ -99,7 +99,7 @@ jobs:
|
||||
|
||||
- name: WebRTC cache.
|
||||
id: cache-webrtc
|
||||
uses: actions/cache@v3.0.11
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: ${{ env.LibrariesPath }}/tg_owt
|
||||
key: ${{ runner.OS }}-webrtc-${{ env.CACHE_KEY }}-${{ hashFiles('**/tg_owt-version.json') }}
|
||||
@@ -153,7 +153,7 @@ jobs:
|
||||
cd $REPO_NAME/build
|
||||
mkdir artifact
|
||||
mv Telegram.dmg artifact/
|
||||
- uses: actions/upload-artifact@master
|
||||
- uses: actions/upload-artifact@v4
|
||||
if: env.UPLOAD_ARTIFACT == 'true'
|
||||
name: Upload artifact.
|
||||
with:
|
||||
|
||||
2
.github/workflows/master_updater.yml
vendored
@@ -11,7 +11,7 @@ jobs:
|
||||
SKIP: "0"
|
||||
to_branch: "master"
|
||||
steps:
|
||||
- uses: actions/checkout@v4.1.0
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
if: env.SKIP == '0'
|
||||
|
||||
16
.github/workflows/needs-user-action.yml
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
name: Needs user action.
|
||||
|
||||
on:
|
||||
issue_comment:
|
||||
types: [created]
|
||||
schedule:
|
||||
- cron: '0 2 * * *'
|
||||
|
||||
jobs:
|
||||
needs-user-action:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: lee-dohm/no-response@v0.5.0
|
||||
with:
|
||||
token: ${{ github.token }}
|
||||
responseRequiredLabel: needs user action
|
||||
10
.github/workflows/snap.yml
vendored
@@ -43,11 +43,11 @@ jobs:
|
||||
runs-on: ubuntu-20.04
|
||||
|
||||
env:
|
||||
UPLOAD_ARTIFACT: "false"
|
||||
UPLOAD_ARTIFACT: "true"
|
||||
|
||||
steps:
|
||||
- name: Clone.
|
||||
uses: actions/checkout@v3.1.0
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
submodules: recursive
|
||||
@@ -61,10 +61,10 @@ jobs:
|
||||
sudo snap run lxd waitready
|
||||
|
||||
- name: Free up some disk space.
|
||||
uses: jlumbroso/free-disk-space@f68fdb76e2ea636224182cfb7377ff9a1708f9b8
|
||||
uses: jlumbroso/free-disk-space@54081f138730dfa15788a46383842cd2f914a1be
|
||||
|
||||
- name: Telegram Desktop snap build.
|
||||
run: sg lxd -c 'snap run snapcraft -v'
|
||||
run: sg lxd -c 'snap run snapcraft --verbosity=debug'
|
||||
|
||||
- name: Move artifact.
|
||||
if: env.UPLOAD_ARTIFACT == 'true'
|
||||
@@ -75,7 +75,7 @@ jobs:
|
||||
mkdir artifact
|
||||
mv $artifact_name artifact
|
||||
|
||||
- uses: actions/upload-artifact@master
|
||||
- uses: actions/upload-artifact@v4
|
||||
if: env.UPLOAD_ARTIFACT == 'true'
|
||||
name: Upload artifact.
|
||||
with:
|
||||
|
||||
2
.github/workflows/stale.yml
vendored
@@ -7,7 +7,7 @@ jobs:
|
||||
stale:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/stale@v5
|
||||
- uses: actions/stale@v9
|
||||
with:
|
||||
stale-issue-message: |
|
||||
Hey there!
|
||||
|
||||
16
.github/workflows/waiting-for-answer.yml
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
name: Waiting for answer.
|
||||
|
||||
on:
|
||||
issue_comment:
|
||||
types: [created]
|
||||
schedule:
|
||||
- cron: '30 0 * * *'
|
||||
|
||||
jobs:
|
||||
waiting-for-answer:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: lee-dohm/no-response@v0.5.0
|
||||
with:
|
||||
token: ${{ github.token }}
|
||||
responseRequiredLabel: waiting for answer
|
||||
10
.github/workflows/win.yml
vendored
@@ -50,7 +50,7 @@ jobs:
|
||||
generator: ["", "Ninja Multi-Config"]
|
||||
|
||||
env:
|
||||
UPLOAD_ARTIFACT: "false"
|
||||
UPLOAD_ARTIFACT: "true"
|
||||
ONLY_CACHE: "false"
|
||||
PREPARE_PATH: "Telegram/build/prepare/prepare.py"
|
||||
|
||||
@@ -69,13 +69,13 @@ jobs:
|
||||
shell: bash
|
||||
run: echo "REPO_NAME=${GITHUB_REPOSITORY##*/}" >> $GITHUB_ENV
|
||||
|
||||
- uses: ilammy/msvc-dev-cmd@v1.12.0
|
||||
- uses: ilammy/msvc-dev-cmd@v1.13.0
|
||||
name: Native Tools Command Prompt.
|
||||
with:
|
||||
arch: ${{ matrix.arch }}
|
||||
|
||||
- name: Clone.
|
||||
uses: actions/checkout@v3.1.0
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: recursive
|
||||
path: ${{ env.TBUILD }}\${{ env.REPO_NAME }}
|
||||
@@ -96,7 +96,7 @@ jobs:
|
||||
|
||||
- name: Libraries cache.
|
||||
id: cache-libs
|
||||
uses: actions/cache@v3.0.11
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: ${{ env.TBUILD }}\Libraries
|
||||
key: ${{ runner.OS }}-${{ matrix.arch }}-libs-${{ env.CACHE_KEY }}
|
||||
@@ -183,7 +183,7 @@ jobs:
|
||||
mkdir artifact
|
||||
move %OUT%\Telegram.exe artifact/
|
||||
move %OUT%\Updater.exe artifact/
|
||||
- uses: actions/upload-artifact@master
|
||||
- uses: actions/upload-artifact@v4
|
||||
name: Upload artifact.
|
||||
if: (env.UPLOAD_ARTIFACT == 'true') || (github.ref == 'refs/heads/nightly')
|
||||
with:
|
||||
|
||||
1
.gitignore
vendored
@@ -18,6 +18,7 @@ Release/
|
||||
*.xcodeproj
|
||||
ipch/
|
||||
.vs/
|
||||
.vscode/
|
||||
|
||||
/Telegram/log.txt
|
||||
/Telegram/data
|
||||
|
||||
12
.gitmodules
vendored
@@ -76,15 +76,12 @@
|
||||
[submodule "Telegram/lib_webview"]
|
||||
path = Telegram/lib_webview
|
||||
url = https://github.com/desktop-app/lib_webview.git
|
||||
[submodule "Telegram/ThirdParty/jemalloc"]
|
||||
path = Telegram/ThirdParty/jemalloc
|
||||
url = https://github.com/jemalloc/jemalloc
|
||||
[submodule "Telegram/ThirdParty/dispatch"]
|
||||
path = Telegram/ThirdParty/dispatch
|
||||
url = https://github.com/apple/swift-corelibs-libdispatch
|
||||
[submodule "Telegram/ThirdParty/plasma-wayland-protocols"]
|
||||
path = Telegram/ThirdParty/plasma-wayland-protocols
|
||||
url = https://github.com/KDE/plasma-wayland-protocols.git
|
||||
[submodule "Telegram/ThirdParty/wayland-protocols"]
|
||||
path = Telegram/ThirdParty/wayland-protocols
|
||||
url = https://github.com/gitlab-freedesktop-mirrors/wayland-protocols.git
|
||||
[submodule "Telegram/ThirdParty/kimageformats"]
|
||||
path = Telegram/ThirdParty/kimageformats
|
||||
url = https://github.com/KDE/kimageformats.git
|
||||
@@ -94,9 +91,6 @@
|
||||
[submodule "Telegram/ThirdParty/cld3"]
|
||||
path = Telegram/ThirdParty/cld3
|
||||
url = https://github.com/google/cld3.git
|
||||
[submodule "Telegram/ThirdParty/wayland"]
|
||||
path = Telegram/ThirdParty/wayland
|
||||
url = https://github.com/gitlab-freedesktop-mirrors/wayland.git
|
||||
[submodule "Telegram/ThirdParty/libprisma"]
|
||||
path = Telegram/ThirdParty/libprisma
|
||||
url = https://github.com/desktop-app/libprisma.git
|
||||
|
||||
@@ -60,14 +60,15 @@ include(cmake/options.cmake)
|
||||
|
||||
if (NOT DESKTOP_APP_USE_PACKAGED)
|
||||
if (WIN32)
|
||||
set(qt_version 5.15.12)
|
||||
set(qt_version 5.15.13)
|
||||
elseif (APPLE)
|
||||
set(qt_version 6.2.7)
|
||||
set(qt_version 6.2.8)
|
||||
endif()
|
||||
endif()
|
||||
include(cmake/external/qt/package.cmake)
|
||||
|
||||
set(desktop_app_skip_libs
|
||||
glibmm
|
||||
variant
|
||||
)
|
||||
|
||||
|
||||
@@ -43,7 +43,7 @@ Version **1.8.15** was the last that supports older systems
|
||||
## Third-party
|
||||
|
||||
* Qt 6 ([LGPL](http://doc.qt.io/qt-6/lgpl.html)) and Qt 5.15 ([LGPL](http://doc.qt.io/qt-5/lgpl.html)) slightly patched
|
||||
* OpenSSL 1.1.1 and 1.0.1 ([OpenSSL License](https://www.openssl.org/source/license.html))
|
||||
* OpenSSL 3.2.1 ([Apache License 2.0](https://www.openssl.org/source/apache-license-2.0.txt))
|
||||
* WebRTC ([New BSD License](https://github.com/desktop-app/tg_owt/blob/master/LICENSE))
|
||||
* zlib 1.2.11 ([zlib License](http://www.zlib.net/zlib_license.html))
|
||||
* LZMA SDK 9.20 ([public domain](http://www.7-zip.org/sdk.html))
|
||||
@@ -60,7 +60,6 @@ Version **1.8.15** was the last that supports older systems
|
||||
* Open Sans font ([Apache License 2.0](http://www.apache.org/licenses/LICENSE-2.0.html))
|
||||
* Vazir font ([SIL Open Font License 1.1](https://github.com/rastikerdar/vazir-font/blob/master/OFL.txt))
|
||||
* Emoji alpha codes ([MIT License](https://github.com/emojione/emojione/blob/master/extras/alpha-codes/LICENSE.md))
|
||||
* Catch test framework ([Boost License](https://github.com/philsquared/Catch/blob/master/LICENSE.txt))
|
||||
* xxHash ([BSD License](https://github.com/Cyan4973/xxHash/blob/dev/LICENSE))
|
||||
* QR Code generator ([MIT License](https://github.com/nayuki/QR-Code-generator#license))
|
||||
* CMake ([New BSD License](https://github.com/Kitware/CMake/blob/master/Copyright.txt))
|
||||
|
||||
@@ -30,8 +30,9 @@ include(cmake/lib_tgvoip.cmake)
|
||||
include(cmake/lib_tgcalls.cmake)
|
||||
include(cmake/lib_prisma.cmake)
|
||||
include(cmake/td_export.cmake)
|
||||
include(cmake/td_mtproto.cmake)
|
||||
include(cmake/td_iv.cmake)
|
||||
include(cmake/td_lang.cmake)
|
||||
include(cmake/td_mtproto.cmake)
|
||||
include(cmake/td_scheme.cmake)
|
||||
include(cmake/td_ui.cmake)
|
||||
include(cmake/generate_appdata_changelog.cmake)
|
||||
@@ -62,8 +63,9 @@ PRIVATE
|
||||
desktop-app::external_minizip
|
||||
|
||||
tdesktop::td_export
|
||||
tdesktop::td_mtproto
|
||||
tdesktop::td_iv
|
||||
tdesktop::td_lang
|
||||
tdesktop::td_mtproto
|
||||
tdesktop::td_scheme
|
||||
tdesktop::td_ui
|
||||
desktop-app::lib_webrtc
|
||||
@@ -108,6 +110,8 @@ PRIVATE
|
||||
api/api_chat_filters.h
|
||||
api/api_chat_invite.cpp
|
||||
api/api_chat_invite.h
|
||||
api/api_chat_links.cpp
|
||||
api/api_chat_links.h
|
||||
api/api_chat_participants.cpp
|
||||
api/api_chat_participants.h
|
||||
api/api_cloud_password.cpp
|
||||
@@ -116,6 +120,8 @@ PRIVATE
|
||||
api/api_common.h
|
||||
api/api_confirm_phone.cpp
|
||||
api/api_confirm_phone.h
|
||||
api/api_earn.cpp
|
||||
api/api_earn.h
|
||||
api/api_editing.cpp
|
||||
api/api_editing.h
|
||||
api/api_global_privacy.cpp
|
||||
@@ -267,6 +273,8 @@ PRIVATE
|
||||
boxes/local_storage_box.h
|
||||
boxes/max_invite_box.cpp
|
||||
boxes/max_invite_box.h
|
||||
boxes/moderate_messages_box.cpp
|
||||
boxes/moderate_messages_box.h
|
||||
boxes/peer_list_box.cpp
|
||||
boxes/peer_list_box.h
|
||||
boxes/peer_list_controllers.cpp
|
||||
@@ -390,8 +398,6 @@ PRIVATE
|
||||
chat_helpers/spellchecker_common.h
|
||||
chat_helpers/stickers_dice_pack.cpp
|
||||
chat_helpers/stickers_dice_pack.h
|
||||
chat_helpers/stickers_emoji_image_loader.cpp
|
||||
chat_helpers/stickers_emoji_image_loader.h
|
||||
chat_helpers/stickers_emoji_pack.cpp
|
||||
chat_helpers/stickers_emoji_pack.h
|
||||
chat_helpers/stickers_gift_box_pack.cpp
|
||||
@@ -456,6 +462,14 @@ PRIVATE
|
||||
data/business/data_business_info.h
|
||||
data/business/data_shortcut_messages.cpp
|
||||
data/business/data_shortcut_messages.h
|
||||
data/components/recent_peers.cpp
|
||||
data/components/recent_peers.h
|
||||
data/components/scheduled_messages.cpp
|
||||
data/components/scheduled_messages.h
|
||||
data/components/sponsored_messages.cpp
|
||||
data/components/sponsored_messages.h
|
||||
data/components/top_peers.cpp
|
||||
data/components/top_peers.h
|
||||
data/notify/data_notify_settings.cpp
|
||||
data/notify/data_notify_settings.h
|
||||
data/notify/data_peer_notify_settings.cpp
|
||||
@@ -573,14 +587,10 @@ PRIVATE
|
||||
data/data_send_action.h
|
||||
data/data_session.cpp
|
||||
data/data_session.h
|
||||
data/data_scheduled_messages.cpp
|
||||
data/data_scheduled_messages.h
|
||||
data/data_shared_media.cpp
|
||||
data/data_shared_media.h
|
||||
data/data_sparse_ids.cpp
|
||||
data/data_sparse_ids.h
|
||||
data/data_sponsored_messages.cpp
|
||||
data/data_sponsored_messages.h
|
||||
data/data_statistics.h
|
||||
data/data_stories.cpp
|
||||
data/data_stories.h
|
||||
@@ -604,6 +614,18 @@ PRIVATE
|
||||
data/data_wall_paper.h
|
||||
data/data_web_page.cpp
|
||||
data/data_web_page.h
|
||||
dialogs/ui/dialogs_layout.cpp
|
||||
dialogs/ui/dialogs_layout.h
|
||||
dialogs/ui/dialogs_message_view.cpp
|
||||
dialogs/ui/dialogs_message_view.h
|
||||
dialogs/ui/dialogs_stories_content.cpp
|
||||
dialogs/ui/dialogs_stories_content.h
|
||||
dialogs/ui/dialogs_suggestions.cpp
|
||||
dialogs/ui/dialogs_suggestions.h
|
||||
dialogs/ui/dialogs_topics_view.cpp
|
||||
dialogs/ui/dialogs_topics_view.h
|
||||
dialogs/ui/dialogs_video_userpic.cpp
|
||||
dialogs/ui/dialogs_video_userpic.h
|
||||
dialogs/dialogs_entry.cpp
|
||||
dialogs/dialogs_entry.h
|
||||
dialogs/dialogs_indexed_list.cpp
|
||||
@@ -626,16 +648,6 @@ PRIVATE
|
||||
dialogs/dialogs_search_tags.h
|
||||
dialogs/dialogs_widget.cpp
|
||||
dialogs/dialogs_widget.h
|
||||
dialogs/ui/dialogs_layout.cpp
|
||||
dialogs/ui/dialogs_layout.h
|
||||
dialogs/ui/dialogs_message_view.cpp
|
||||
dialogs/ui/dialogs_message_view.h
|
||||
dialogs/ui/dialogs_stories_content.cpp
|
||||
dialogs/ui/dialogs_stories_content.h
|
||||
dialogs/ui/dialogs_topics_view.cpp
|
||||
dialogs/ui/dialogs_topics_view.h
|
||||
dialogs/ui/dialogs_video_userpic.cpp
|
||||
dialogs/ui/dialogs_video_userpic.h
|
||||
editor/color_picker.cpp
|
||||
editor/color_picker.h
|
||||
editor/controllers/controllers.h
|
||||
@@ -676,6 +688,8 @@ PRIVATE
|
||||
history/view/controls/compose_controls_common.h
|
||||
history/view/controls/history_view_compose_controls.cpp
|
||||
history/view/controls/history_view_compose_controls.h
|
||||
history/view/controls/history_view_compose_media_edit_manager.cpp
|
||||
history/view/controls/history_view_compose_media_edit_manager.h
|
||||
history/view/controls/history_view_compose_search.cpp
|
||||
history/view/controls/history_view_compose_search.h
|
||||
history/view/controls/history_view_draft_options.cpp
|
||||
@@ -718,6 +732,8 @@ PRIVATE
|
||||
history/view/media/history_view_media.h
|
||||
history/view/media/history_view_media_common.cpp
|
||||
history/view/media/history_view_media_common.h
|
||||
history/view/media/history_view_media_generic.cpp
|
||||
history/view/media/history_view_media_generic.h
|
||||
history/view/media/history_view_media_grouped.cpp
|
||||
history/view/media/history_view_media_grouped.h
|
||||
history/view/media/history_view_media_spoiler.cpp
|
||||
@@ -857,14 +873,18 @@ PRIVATE
|
||||
history/history_view_highlight_manager.h
|
||||
history/history_widget.cpp
|
||||
history/history_widget.h
|
||||
info/boosts/giveaway/giveaway_list_controllers.cpp
|
||||
info/boosts/giveaway/giveaway_list_controllers.h
|
||||
info/boosts/create_giveaway_box.cpp
|
||||
info/boosts/create_giveaway_box.h
|
||||
info/boosts/info_boosts_inner_widget.cpp
|
||||
info/boosts/info_boosts_inner_widget.h
|
||||
info/boosts/info_boosts_widget.cpp
|
||||
info/boosts/info_boosts_widget.h
|
||||
info/channel_statistics/boosts/create_giveaway_box.cpp
|
||||
info/channel_statistics/boosts/create_giveaway_box.h
|
||||
info/channel_statistics/boosts/giveaway/giveaway_list_controllers.cpp
|
||||
info/channel_statistics/boosts/giveaway/giveaway_list_controllers.h
|
||||
info/channel_statistics/boosts/info_boosts_inner_widget.cpp
|
||||
info/channel_statistics/boosts/info_boosts_inner_widget.h
|
||||
info/channel_statistics/boosts/info_boosts_widget.cpp
|
||||
info/channel_statistics/boosts/info_boosts_widget.h
|
||||
info/channel_statistics/earn/info_earn_inner_widget.cpp
|
||||
info/channel_statistics/earn/info_earn_inner_widget.h
|
||||
info/channel_statistics/earn/info_earn_widget.cpp
|
||||
info/channel_statistics/earn/info_earn_widget.h
|
||||
info/common_groups/info_common_groups_inner_widget.cpp
|
||||
info/common_groups/info_common_groups_inner_widget.h
|
||||
info/common_groups/info_common_groups_widget.cpp
|
||||
@@ -995,6 +1015,10 @@ PRIVATE
|
||||
intro/intro_step.h
|
||||
intro/intro_widget.cpp
|
||||
intro/intro_widget.h
|
||||
iv/iv_delegate_impl.cpp
|
||||
iv/iv_delegate_impl.h
|
||||
iv/iv_instance.cpp
|
||||
iv/iv_instance.h
|
||||
lang/lang_cloud_manager.cpp
|
||||
lang/lang_cloud_manager.h
|
||||
lang/lang_instance.cpp
|
||||
@@ -1129,6 +1153,8 @@ PRIVATE
|
||||
menu/menu_mute.h
|
||||
menu/menu_send.cpp
|
||||
menu/menu_send.h
|
||||
menu/menu_sponsored.cpp
|
||||
menu/menu_sponsored.h
|
||||
menu/menu_ttl_validator.cpp
|
||||
menu/menu_ttl_validator.h
|
||||
mtproto/config_loader.cpp
|
||||
@@ -1183,13 +1209,6 @@ PRIVATE
|
||||
payments/payments_checkout_process.h
|
||||
payments/payments_form.cpp
|
||||
payments/payments_form.h
|
||||
platform/linux/linux_desktop_environment.cpp
|
||||
platform/linux/linux_desktop_environment.h
|
||||
platform/linux/linux_wayland_integration_dummy.cpp
|
||||
platform/linux/linux_wayland_integration.cpp
|
||||
platform/linux/linux_wayland_integration.h
|
||||
platform/linux/linux_xdp_open_with_dialog.cpp
|
||||
platform/linux/linux_xdp_open_with_dialog.h
|
||||
platform/linux/file_utilities_linux.cpp
|
||||
platform/linux/file_utilities_linux.h
|
||||
platform/linux/launcher_linux.cpp
|
||||
@@ -1291,6 +1310,10 @@ PRIVATE
|
||||
settings/business/settings_away_message.h
|
||||
settings/business/settings_shortcut_messages.cpp
|
||||
settings/business/settings_shortcut_messages.h
|
||||
settings/business/settings_chat_intro.cpp
|
||||
settings/business/settings_chat_intro.h
|
||||
settings/business/settings_chat_links.cpp
|
||||
settings/business/settings_chat_links.h
|
||||
settings/business/settings_chatbots.cpp
|
||||
settings/business/settings_chatbots.h
|
||||
settings/business/settings_greeting.cpp
|
||||
@@ -1441,8 +1464,6 @@ PRIVATE
|
||||
ui/image/image_location.h
|
||||
ui/image/image_location_factory.cpp
|
||||
ui/image/image_location_factory.h
|
||||
ui/widgets/level_meter.cpp
|
||||
ui/widgets/level_meter.h
|
||||
ui/countryinput.cpp
|
||||
ui/countryinput.h
|
||||
ui/dynamic_thumbnails.cpp
|
||||
@@ -1458,6 +1479,8 @@ PRIVATE
|
||||
ui/search_field_controller.h
|
||||
ui/text/format_song_document_name.cpp
|
||||
ui/text/format_song_document_name.h
|
||||
ui/widgets/label_with_custom_emoji.cpp
|
||||
ui/widgets/label_with_custom_emoji.h
|
||||
ui/unread_badge.cpp
|
||||
ui/unread_badge.h
|
||||
window/main_window.cpp
|
||||
@@ -1485,6 +1508,8 @@ PRIVATE
|
||||
window/window_lock_widgets.h
|
||||
window/window_main_menu.cpp
|
||||
window/window_main_menu.h
|
||||
window/window_main_menu_helpers.cpp
|
||||
window/window_main_menu_helpers.h
|
||||
window/window_media_preview.cpp
|
||||
window/window_media_preview.h
|
||||
window/window_peer_menu.cpp
|
||||
@@ -1493,8 +1518,6 @@ PRIVATE
|
||||
window/window_session_controller.cpp
|
||||
window/window_session_controller.h
|
||||
window/window_session_controller_link_info.h
|
||||
window/window_slide_animation.cpp
|
||||
window/window_slide_animation.h
|
||||
window/window_top_bar_wrap.h
|
||||
window/themes/window_theme.cpp
|
||||
window/themes/window_theme.h
|
||||
@@ -1538,16 +1561,6 @@ if (NOT build_winstore)
|
||||
)
|
||||
endif()
|
||||
|
||||
if (DESKTOP_APP_DISABLE_WAYLAND_INTEGRATION)
|
||||
remove_target_sources(Telegram ${src_loc}
|
||||
platform/linux/linux_wayland_integration.cpp
|
||||
)
|
||||
else()
|
||||
remove_target_sources(Telegram ${src_loc}
|
||||
platform/linux/linux_wayland_integration_dummy.cpp
|
||||
)
|
||||
endif()
|
||||
|
||||
if (DESKTOP_APP_USE_PACKAGED)
|
||||
remove_target_sources(Telegram ${src_loc}
|
||||
platform/mac/mac_iconv_helper.c
|
||||
@@ -1567,6 +1580,7 @@ PRIVATE
|
||||
qrc/emoji_preview.qrc
|
||||
qrc/telegram/animations.qrc
|
||||
qrc/telegram/export.qrc
|
||||
qrc/telegram/iv.qrc
|
||||
qrc/telegram/telegram.qrc
|
||||
qrc/telegram/sounds.qrc
|
||||
winrc/Telegram.rc
|
||||
@@ -1674,13 +1688,9 @@ elseif (APPLE)
|
||||
)
|
||||
endif()
|
||||
else()
|
||||
target_link_libraries(Telegram
|
||||
PRIVATE
|
||||
desktop-app::external_glibmm
|
||||
)
|
||||
|
||||
include(${cmake_helpers_loc}/external/glib/generate_dbus.cmake)
|
||||
generate_dbus(Telegram org.freedesktop.portal. XdpBackground ${third_party_loc}/xdg-desktop-portal/data/org.freedesktop.portal.Background.xml)
|
||||
generate_dbus(Telegram org.freedesktop. XdgNotifications ${src_loc}/platform/linux/org.freedesktop.Notifications.xml)
|
||||
|
||||
if (NOT DESKTOP_APP_DISABLE_X11_INTEGRATION)
|
||||
target_link_libraries(Telegram
|
||||
@@ -1688,19 +1698,6 @@ else()
|
||||
desktop-app::external_xcb
|
||||
)
|
||||
endif()
|
||||
|
||||
if (NOT DESKTOP_APP_DISABLE_WAYLAND_INTEGRATION)
|
||||
qt_generate_wayland_protocol_client_sources(Telegram
|
||||
FILES
|
||||
${third_party_loc}/wayland/protocol/wayland.xml
|
||||
${third_party_loc}/plasma-wayland-protocols/src/protocols/plasma-shell.xml
|
||||
)
|
||||
|
||||
target_link_libraries(Telegram
|
||||
PRIVATE
|
||||
desktop-app::external_wayland_client
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if (build_macstore)
|
||||
|
||||
BIN
Telegram/Resources/animations/chat_link.tgs
Normal file
BIN
Telegram/Resources/animations/collectible_phone.tgs
Normal file
BIN
Telegram/Resources/animations/collectible_username.tgs
Normal file
BIN
Telegram/Resources/animations/noresults.tgs
Normal file
BIN
Telegram/Resources/animations/search.tgs
Normal file
BIN
Telegram/Resources/icons/chat/live_location_long.png
Normal file
|
After Width: | Height: | Size: 416 B |
BIN
Telegram/Resources/icons/chat/live_location_long@2x.png
Normal file
|
After Width: | Height: | Size: 913 B |
BIN
Telegram/Resources/icons/chat/live_location_long@3x.png
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
BIN
Telegram/Resources/icons/dialogs/dialogs_pinned_shadow.png
Normal file
|
After Width: | Height: | Size: 754 B |
BIN
Telegram/Resources/icons/dialogs/dialogs_pinned_shadow@2x.png
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
BIN
Telegram/Resources/icons/dialogs/dialogs_pinned_shadow@3x.png
Normal file
|
After Width: | Height: | Size: 2.2 KiB |
BIN
Telegram/Resources/icons/filled_go_to_message.png
Normal file
|
After Width: | Height: | Size: 596 B |
BIN
Telegram/Resources/icons/filled_go_to_message@2x.png
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
Telegram/Resources/icons/filled_go_to_message@3x.png
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
BIN
Telegram/Resources/icons/menu/earn.png
Normal file
|
After Width: | Height: | Size: 568 B |
BIN
Telegram/Resources/icons/menu/earn@2x.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
Telegram/Resources/icons/menu/earn@3x.png
Normal file
|
After Width: | Height: | Size: 1.8 KiB |
BIN
Telegram/Resources/icons/menu/fonts.png
Normal file
|
After Width: | Height: | Size: 563 B |
BIN
Telegram/Resources/icons/menu/fonts@2x.png
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
Telegram/Resources/icons/menu/fonts@3x.png
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
|
After Width: | Height: | Size: 681 B |
|
After Width: | Height: | Size: 1.3 KiB |
|
After Width: | Height: | Size: 1.9 KiB |
|
After Width: | Height: | Size: 733 B |
|
After Width: | Height: | Size: 1.3 KiB |
|
After Width: | Height: | Size: 2.0 KiB |
|
After Width: | Height: | Size: 741 B |
|
After Width: | Height: | Size: 1.5 KiB |
|
After Width: | Height: | Size: 2.2 KiB |
|
After Width: | Height: | Size: 748 B |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 2.0 KiB |
|
After Width: | Height: | Size: 873 B |
|
After Width: | Height: | Size: 1.7 KiB |
|
After Width: | Height: | Size: 2.4 KiB |
|
After Width: | Height: | Size: 784 B |
|
After Width: | Height: | Size: 1.5 KiB |
|
After Width: | Height: | Size: 2.3 KiB |
|
After Width: | Height: | Size: 564 B |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 1.7 KiB |
|
After Width: | Height: | Size: 562 B |
|
After Width: | Height: | Size: 940 B |
|
After Width: | Height: | Size: 1.3 KiB |
|
After Width: | Height: | Size: 760 B |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 2.1 KiB |
|
After Width: | Height: | Size: 751 B |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 2.0 KiB |
BIN
Telegram/Resources/icons/sponsored/channel.png
Normal file
|
After Width: | Height: | Size: 642 B |
BIN
Telegram/Resources/icons/sponsored/channel@2x.png
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
Telegram/Resources/icons/sponsored/channel@3x.png
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
BIN
Telegram/Resources/icons/sponsored/large_about.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
Telegram/Resources/icons/sponsored/large_about@2x.png
Normal file
|
After Width: | Height: | Size: 2.2 KiB |
BIN
Telegram/Resources/icons/sponsored/large_about@3x.png
Normal file
|
After Width: | Height: | Size: 3.3 KiB |
BIN
Telegram/Resources/icons/sponsored/large_earn.png
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
BIN
Telegram/Resources/icons/sponsored/large_earn@2x.png
Normal file
|
After Width: | Height: | Size: 3.5 KiB |
BIN
Telegram/Resources/icons/sponsored/large_earn@3x.png
Normal file
|
After Width: | Height: | Size: 5.1 KiB |
BIN
Telegram/Resources/icons/sponsored/privacy_about.png
Normal file
|
After Width: | Height: | Size: 534 B |
BIN
Telegram/Resources/icons/sponsored/privacy_about@2x.png
Normal file
|
After Width: | Height: | Size: 928 B |
BIN
Telegram/Resources/icons/sponsored/privacy_about@3x.png
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
BIN
Telegram/Resources/icons/sponsored/remove_about.png
Normal file
|
After Width: | Height: | Size: 771 B |
BIN
Telegram/Resources/icons/sponsored/remove_about@2x.png
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
BIN
Telegram/Resources/icons/sponsored/remove_about@3x.png
Normal file
|
After Width: | Height: | Size: 2.1 KiB |
BIN
Telegram/Resources/icons/sponsored/revenue_split.png
Normal file
|
After Width: | Height: | Size: 651 B |
BIN
Telegram/Resources/icons/sponsored/revenue_split@2x.png
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
BIN
Telegram/Resources/icons/sponsored/revenue_split@3x.png
Normal file
|
After Width: | Height: | Size: 1.9 KiB |
BIN
Telegram/Resources/icons/sponsored/withdrawals.png
Normal file
|
After Width: | Height: | Size: 680 B |
BIN
Telegram/Resources/icons/sponsored/withdrawals@2x.png
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
BIN
Telegram/Resources/icons/sponsored/withdrawals@3x.png
Normal file
|
After Width: | Height: | Size: 2.0 KiB |
BIN
Telegram/Resources/icons/statistics/mini_currency_graph.png
Normal file
|
After Width: | Height: | Size: 388 B |
BIN
Telegram/Resources/icons/statistics/mini_currency_graph@2x.png
Normal file
|
After Width: | Height: | Size: 609 B |
BIN
Telegram/Resources/icons/statistics/mini_currency_graph@3x.png
Normal file
|
After Width: | Height: | Size: 893 B |
1
Telegram/Resources/iv_html/highlight.9.12.0.css
Normal file
@@ -0,0 +1 @@
|
||||
.hljs{display:block;overflow-x:auto;padding:0.5em;background:#F0F0F0}.hljs,.hljs-subst{color:#444}.hljs-comment{color:#888888}.hljs-keyword,.hljs-attribute,.hljs-selector-tag,.hljs-meta-keyword,.hljs-doctag,.hljs-name{font-weight:bold}.hljs-type,.hljs-string,.hljs-number,.hljs-selector-id,.hljs-selector-class,.hljs-quote,.hljs-template-tag,.hljs-deletion{color:#880000}.hljs-title,.hljs-section{color:#880000;font-weight:bold}.hljs-regexp,.hljs-symbol,.hljs-variable,.hljs-template-variable,.hljs-link,.hljs-selector-attr,.hljs-selector-pseudo{color:#BC6060}.hljs-literal{color:#78A960}.hljs-built_in,.hljs-bullet,.hljs-code,.hljs-addition{color:#397300}.hljs-meta{color:#1f7199}.hljs-meta-string{color:#4d99bf}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:bold}
|
||||
3
Telegram/Resources/iv_html/highlight.9.12.0.js
Normal file
1
Telegram/Resources/iv_html/morphdom-umd.min.2.7.2.js
Normal file
1145
Telegram/Resources/iv_html/page.css
Normal file
659
Telegram/Resources/iv_html/page.js
Normal file
@@ -0,0 +1,659 @@
|
||||
var IV = {
|
||||
notify: function(message) {
|
||||
if (window.external && window.external.invoke) {
|
||||
window.external.invoke(JSON.stringify(message));
|
||||
}
|
||||
},
|
||||
frameClickHandler: function(e) {
|
||||
var target = e.target;
|
||||
var context = '';
|
||||
while (target) {
|
||||
if (target.id == 'menu_page_blocker') {
|
||||
IV.notify({ event: 'menu_page_blocker_click' });
|
||||
IV.menuShown(false);
|
||||
return;
|
||||
}
|
||||
if (target.tagName == 'AUDIO' || target.tagName == 'VIDEO') {
|
||||
return;
|
||||
}
|
||||
if (context === ''
|
||||
&& target.hasAttribute
|
||||
&& target.hasAttribute('data-context')) {
|
||||
context = String(target.getAttribute('data-context'));
|
||||
}
|
||||
if (target.tagName == 'A') {
|
||||
break;
|
||||
}
|
||||
target = target.parentNode;
|
||||
}
|
||||
if (!target || (context === '' && !target.hasAttribute('href'))) {
|
||||
return;
|
||||
}
|
||||
var base = document.createElement('A');
|
||||
base.href = window.location.href;
|
||||
if (base.origin != target.origin
|
||||
|| base.pathname != target.pathname
|
||||
|| base.search != target.search) {
|
||||
IV.notify({
|
||||
event: 'link_click',
|
||||
url: target.href,
|
||||
context: context,
|
||||
});
|
||||
} else if (target.hash.length < 2) {
|
||||
IV.jumpToHash('');
|
||||
} else {
|
||||
IV.jumpToHash(decodeURIComponent(target.hash.substr(1)));
|
||||
}
|
||||
e.preventDefault();
|
||||
},
|
||||
getElementTop: function (element) {
|
||||
var top = 0;
|
||||
while (element && !element.classList.contains('page-scroll')) {
|
||||
top += element.offsetTop;
|
||||
element = element.offsetParent;
|
||||
}
|
||||
return top;
|
||||
},
|
||||
jumpToHash: function (hash, instant) {
|
||||
var current = IV.computeCurrentState();
|
||||
current.hash = hash;
|
||||
window.history.replaceState(
|
||||
current,
|
||||
'',
|
||||
'page' + IV.index + '.html');
|
||||
if (hash == '') {
|
||||
IV.scrollTo(0, instant);
|
||||
return;
|
||||
}
|
||||
|
||||
var element = document.getElementsByName(hash)[0];
|
||||
if (element) {
|
||||
IV.scrollTo(IV.getElementTop(element), instant);
|
||||
}
|
||||
},
|
||||
frameKeyDown: function (e) {
|
||||
const keyW = (e.key === 'w')
|
||||
|| (e.code === 'KeyW')
|
||||
|| (e.keyCode === 87);
|
||||
const keyQ = (e.key === 'q')
|
||||
|| (e.code === 'KeyQ')
|
||||
|| (e.keyCode === 81);
|
||||
const keyM = (e.key === 'm')
|
||||
|| (e.code === 'KeyM')
|
||||
|| (e.keyCode === 77);
|
||||
if ((e.metaKey || e.ctrlKey) && (keyW || keyQ || keyM)) {
|
||||
e.preventDefault();
|
||||
IV.notify({
|
||||
event: 'keydown',
|
||||
modifier: e.ctrlKey ? 'ctrl' : 'cmd',
|
||||
key: keyW ? 'w' : keyQ ? 'q' : 'm',
|
||||
});
|
||||
} else if (e.key === 'Escape' || e.keyCode === 27) {
|
||||
e.preventDefault();
|
||||
if (IV.position) {
|
||||
window.history.back();
|
||||
} else {
|
||||
IV.notify({
|
||||
event: 'keydown',
|
||||
key: 'escape',
|
||||
});
|
||||
}
|
||||
}
|
||||
},
|
||||
frameMouseEnter: function (e) {
|
||||
IV.notify({ event: 'mouseenter' });
|
||||
},
|
||||
frameMouseUp: function (e) {
|
||||
IV.notify({ event: 'mouseup' });
|
||||
},
|
||||
lastScrollTop: 0,
|
||||
frameScrolled: function (e) {
|
||||
const was = IV.lastScrollTop;
|
||||
IV.lastScrollTop = IV.findPageScroll().scrollTop;
|
||||
IV.updateJumpToTop(was < IV.lastScrollTop);
|
||||
IV.checkVideos();
|
||||
},
|
||||
updateJumpToTop: function (scrolledDown) {
|
||||
if (IV.lastScrollTop < 100) {
|
||||
document.getElementById('bottom_up').classList.add('hidden');
|
||||
} else if (scrolledDown && IV.lastScrollTop > 200) {
|
||||
document.getElementById('bottom_up').classList.remove('hidden');
|
||||
}
|
||||
},
|
||||
updateStyles: function (styles) {
|
||||
if (IV.styles !== styles) {
|
||||
IV.styles = styles;
|
||||
document.getElementsByTagName('html')[0].style = styles;
|
||||
}
|
||||
},
|
||||
toggleChannelJoined: function (id, joined) {
|
||||
IV.channelsJoined['channel' + id] = joined;
|
||||
IV.checkChannelButtons();
|
||||
},
|
||||
checkChannelButtons: function() {
|
||||
const channels = document.getElementsByClassName('channel');
|
||||
for (var i = 0; i < channels.length; ++i) {
|
||||
const channel = channels[i];
|
||||
const full = String(channel.getAttribute('data-context'));
|
||||
const value = IV.channelsJoined[full];
|
||||
if (value !== undefined) {
|
||||
channel.classList.toggle('joined', value);
|
||||
}
|
||||
}
|
||||
},
|
||||
slideshowSlide: function(el, delta) {
|
||||
var dir = window.getComputedStyle(el, null).direction || 'ltr';
|
||||
var marginProp = dir == 'rtl' ? 'marginRight' : 'marginLeft';
|
||||
if (delta) {
|
||||
var form = el.parentNode.firstChild;
|
||||
var s = form.s;
|
||||
const next = +s.value + delta;
|
||||
s.value = (next == s.length) ? 0 : (next == -1) ? (s.length - 1) : next;
|
||||
form.nextSibling.firstChild.style[marginProp] = (-100 * s.value) + '%';
|
||||
} else {
|
||||
el.form.nextSibling.firstChild.style[marginProp] = (-100 * el.value) + '%';
|
||||
}
|
||||
return false;
|
||||
},
|
||||
initPreBlocks: function() {
|
||||
if (!hljs) {
|
||||
return;
|
||||
}
|
||||
var pres = document.getElementsByTagName('pre');
|
||||
for (var i = 0; i < pres.length; i++) {
|
||||
if (pres[i].hasAttribute('data-language')) {
|
||||
hljs.highlightBlock(pres[i]);
|
||||
}
|
||||
}
|
||||
},
|
||||
initEmbedBlocks: function() {
|
||||
var iframes = document.getElementsByTagName('iframe');
|
||||
for (var i = 0; i < iframes.length; i++) {
|
||||
(function(iframe) {
|
||||
window.addEventListener('message', function(event) {
|
||||
if (event.source !== iframe.contentWindow ||
|
||||
event.origin != window.origin) {
|
||||
return;
|
||||
}
|
||||
try {
|
||||
var data = JSON.parse(event.data);
|
||||
} catch(e) {
|
||||
var data = {};
|
||||
}
|
||||
if (data.eventType == 'resize_frame') {
|
||||
if (data.eventData.height) {
|
||||
iframe.style.height = data.eventData.height + 'px';
|
||||
}
|
||||
}
|
||||
}, false);
|
||||
})(iframes[i]);
|
||||
}
|
||||
},
|
||||
addRipple: function (button, x, y) {
|
||||
const ripple = document.createElement('span');
|
||||
ripple.classList.add('ripple');
|
||||
|
||||
const inner = document.createElement('span');
|
||||
inner.classList.add('inner');
|
||||
x -= button.offsetLeft;
|
||||
y -= button.offsetTop;
|
||||
|
||||
const mx = button.clientWidth - x;
|
||||
const my = button.clientHeight - y;
|
||||
const sq1 = x * x + y * y;
|
||||
const sq2 = mx * mx + y * y;
|
||||
const sq3 = x * x + my * my;
|
||||
const sq4 = mx * mx + my * my;
|
||||
const radius = Math.sqrt(Math.max(sq1, sq2, sq3, sq4));
|
||||
|
||||
inner.style.width = inner.style.height = `${2 * radius}px`;
|
||||
inner.style.left = `${x - radius}px`;
|
||||
inner.style.top = `${y - radius}px`;
|
||||
inner.classList.add('inner');
|
||||
|
||||
ripple.addEventListener('animationend', function (e) {
|
||||
if (e.animationName === 'fadeOut') {
|
||||
ripple.remove();
|
||||
}
|
||||
});
|
||||
|
||||
ripple.appendChild(inner);
|
||||
button.appendChild(ripple);
|
||||
},
|
||||
stopRipples: function (button) {
|
||||
const id = button.id ? button.id : button;
|
||||
button = document.getElementById(id);
|
||||
const ripples = button.getElementsByClassName('ripple');
|
||||
for (var i = 0; i < ripples.length; ++i) {
|
||||
const ripple = ripples[i];
|
||||
if (!ripple.classList.contains('hiding')) {
|
||||
ripple.classList.add('hiding');
|
||||
}
|
||||
}
|
||||
},
|
||||
init: function () {
|
||||
var current = IV.computeCurrentState();
|
||||
window.history.replaceState(current, '', IV.pageUrl(0));
|
||||
IV.jumpToHash(current.hash, true);
|
||||
|
||||
IV.lastScrollTop = window.history.state.scroll;
|
||||
IV.findPageScroll().onscroll = IV.frameScrolled;
|
||||
|
||||
const buttons = document.getElementsByClassName('fixed_button');
|
||||
for (let i = 0; i < buttons.length; ++i) {
|
||||
const button = buttons[i];
|
||||
button.addEventListener('mousedown', function (e) {
|
||||
IV.addRipple(e.currentTarget, e.clientX, e.clientY);
|
||||
});
|
||||
button.addEventListener('mouseup', function (e) {
|
||||
const id = e.currentTarget.id;
|
||||
setTimeout(function () {
|
||||
IV.stopRipples(id);
|
||||
}, 0);
|
||||
});
|
||||
button.addEventListener('mouseleave', function (e) {
|
||||
IV.stopRipples(e.currentTarget);
|
||||
});
|
||||
}
|
||||
IV.initMedia();
|
||||
IV.notify({ event: 'ready' });
|
||||
|
||||
IV.forceScrollFocus();
|
||||
IV.frameScrolled();
|
||||
},
|
||||
initMedia: function () {
|
||||
var scroll = IV.findPageScroll();
|
||||
const photos = scroll.getElementsByClassName('photo');
|
||||
for (let i = 0; i < photos.length; ++i) {
|
||||
const photo = photos[i];
|
||||
if (photo.classList.contains('loaded')) {
|
||||
continue;
|
||||
}
|
||||
|
||||
const url = photo.style.backgroundImage;
|
||||
if (!url || url.length < 7) {
|
||||
continue;
|
||||
}
|
||||
var img = new Image();
|
||||
img.onload = function () {
|
||||
photo.classList.add('loaded');
|
||||
}
|
||||
img.src = url.substr(5, url.length - 7);
|
||||
if (img.complete) {
|
||||
photo.classList.add('loaded');
|
||||
IV.stopAnimations(photo);
|
||||
}
|
||||
}
|
||||
IV.videos = [];
|
||||
const videos = scroll.getElementsByClassName('video');
|
||||
for (let i = 0; i < videos.length; ++i) {
|
||||
const element = videos[i];
|
||||
IV.videos.push({
|
||||
element: element,
|
||||
src: String(element.getAttribute('data-src')),
|
||||
autoplay: (element.getAttribute('data-autoplay') == '1'),
|
||||
loop: (element.getAttribute('data-loop') == '1'),
|
||||
small: (element.getAttribute('data-small') == '1'),
|
||||
filled: (element.firstChild
|
||||
&& element.firstChild.tagName == 'VIDEO'),
|
||||
});
|
||||
}
|
||||
},
|
||||
checkVideos: function () {
|
||||
const visibleTop = IV.lastScrollTop;
|
||||
const visibleBottom = visibleTop + IV.findPageScroll().offsetHeight;
|
||||
const videos = IV.videos;
|
||||
for (let i = 0; i < videos.length; ++i) {
|
||||
const video = videos[i];
|
||||
const element = video.element;
|
||||
const wrap = element.offsetParent; // video-wrap
|
||||
const top = IV.getElementTop(wrap);
|
||||
const bottom = top + wrap.offsetHeight;
|
||||
if (top < visibleBottom && bottom > visibleTop) {
|
||||
if (!video.created) {
|
||||
video.created = new Date();
|
||||
video.loaded = false;
|
||||
element.innerHTML = '<video muted class="'
|
||||
+ (video.small ? 'video-small' : '')
|
||||
+ '"'
|
||||
+ (video.autoplay
|
||||
? ' preload="auto" autoplay'
|
||||
: (video.small
|
||||
? ''
|
||||
: ' controls'))
|
||||
+ (video.loop ? ' loop' : '')
|
||||
+ ' oncanplay="IV.checkVideos();"'
|
||||
+ ' onloadeddata="IV.checkVideos();">'
|
||||
+ '<source src="'
|
||||
+ video.src
|
||||
+ '" type="video/mp4" />'
|
||||
+ '</video>';
|
||||
var media = element.firstChild;
|
||||
media.oncontextmenu = function () { return false; };
|
||||
media.oncanplay = IV.checkVideos;
|
||||
media.onloadeddata = IV.checkVideos;
|
||||
}
|
||||
} else if (video.created && video.autoplay) {
|
||||
video.created = false;
|
||||
element.innerHTML = '';
|
||||
}
|
||||
if (video.created && !video.loaded) {
|
||||
var media = element.firstChild;
|
||||
const HAVE_CURRENT_DATA = 2;
|
||||
if (media && media.readyState >= HAVE_CURRENT_DATA) {
|
||||
video.loaded = true;
|
||||
media.classList.add('loaded');
|
||||
if ((new Date() - video.created) < 100) {
|
||||
IV.stopAnimations(media);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
showTooltip: function (text) {
|
||||
var toast = document.createElement('div');
|
||||
toast.classList.add('toast');
|
||||
toast.textContent = text;
|
||||
document.body.appendChild(toast);
|
||||
setTimeout(function () {
|
||||
toast.classList.add('hiding');
|
||||
}, 2000);
|
||||
setTimeout(function () {
|
||||
document.body.removeChild(toast);
|
||||
}, 3000);
|
||||
},
|
||||
scrollTo: function (y, instant) {
|
||||
if (y < 200) {
|
||||
document.getElementById('bottom_up').classList.add('hidden');
|
||||
}
|
||||
IV.findPageScroll().scrollTo({
|
||||
top: y || 0,
|
||||
behavior: instant ? 'instant' : 'smooth'
|
||||
});
|
||||
},
|
||||
computeCurrentState: function () {
|
||||
var now = IV.findPageScroll();
|
||||
return {
|
||||
position: IV.position,
|
||||
index: IV.index,
|
||||
hash: ((!window.history.state
|
||||
|| window.history.state.hash === undefined)
|
||||
? window.location.hash.substr(1)
|
||||
: window.history.state.hash),
|
||||
scroll: now ? now.scrollTop : 0
|
||||
};
|
||||
},
|
||||
pageUrl: function (index, hash) {
|
||||
var result = 'page' + index + '.html';
|
||||
if (hash) {
|
||||
result += '#' + hash;
|
||||
}
|
||||
return result;
|
||||
},
|
||||
navigateTo: function (index, hash) {
|
||||
if (!index && !IV.index) {
|
||||
IV.navigateToDOM(IV.index, hash);
|
||||
return;
|
||||
}
|
||||
IV.pending = [index, hash];
|
||||
if (!IV.cache[index]) {
|
||||
IV.loadPage(index);
|
||||
} else if (IV.cache[index].dom) {
|
||||
IV.navigateToDOM(index, hash);
|
||||
} else if (IV.cache[index].content) {
|
||||
IV.navigateToLoaded(index, hash);
|
||||
}
|
||||
},
|
||||
applyUpdatedContent: function (index) {
|
||||
if (IV.index != index) {
|
||||
IV.cache[index].contentUpdated = (IV.cache[index].dom !== undefined);
|
||||
return;
|
||||
}
|
||||
var data = JSON.parse(IV.cache[index].content);
|
||||
var article = function (el) {
|
||||
return el.getElementsByTagName('article')[0];
|
||||
};
|
||||
var footer = function (el) {
|
||||
return el.getElementsByClassName('page-footer')[0];
|
||||
};
|
||||
var from = IV.findPageScroll();
|
||||
var to = IV.makeScrolledContent(data.html);
|
||||
morphdom(article(from), article(to), {
|
||||
onBeforeElUpdated: function (fromEl, toEl) {
|
||||
if (fromEl.classList.contains('video')
|
||||
&& toEl.classList.contains('video')
|
||||
&& fromEl.hasAttribute('data-src')
|
||||
&& toEl.hasAttribute('data-src')
|
||||
&& (fromEl.getAttribute('data-src')
|
||||
== toEl.getAttribute('data-src'))) {
|
||||
return false;
|
||||
} else if (fromEl.tagName == 'SECTION'
|
||||
&& fromEl.classList.contains('channel')
|
||||
&& fromEl.hasAttribute('data-context')
|
||||
&& toEl.tagName == 'SECTION'
|
||||
&& toEl.classList.contains('channel')
|
||||
&& toEl.hasAttribute('data-context')
|
||||
&& (String(fromEl.getAttribute('data-context'))
|
||||
== String(toEl.getAttribute('data-context')))) {
|
||||
return false;
|
||||
} else if (fromEl.classList.contains('loaded')) {
|
||||
toEl.classList.add('loaded');
|
||||
}
|
||||
return !fromEl.isEqualNode(toEl);
|
||||
}
|
||||
});
|
||||
morphdom(footer(from), footer(to));
|
||||
IV.initMedia();
|
||||
eval(data.js);
|
||||
},
|
||||
loadPage: function (index) {
|
||||
if (!IV.cache[index]) {
|
||||
IV.cache[index] = {};
|
||||
}
|
||||
IV.cache[index].loading = true;
|
||||
|
||||
let xhr = new XMLHttpRequest();
|
||||
xhr.onload = function () {
|
||||
IV.cache[index].loading = false;
|
||||
IV.cache[index].content = xhr.responseText;
|
||||
IV.applyUpdatedContent(index);
|
||||
if (IV.pending && IV.pending[0] == index) {
|
||||
IV.navigateToLoaded(index, IV.pending[1]);
|
||||
}
|
||||
if (IV.cache[index].reloadPending) {
|
||||
IV.cache[index].reloadPending = false;
|
||||
IV.reloadPage(index);
|
||||
}
|
||||
}
|
||||
|
||||
xhr.open('GET', 'page' + index + '.json');
|
||||
xhr.send();
|
||||
},
|
||||
reloadPage: function (index) {
|
||||
if (IV.cache[index] && IV.cache[index].loading) {
|
||||
IV.cache[index].reloadPending = true;
|
||||
return;
|
||||
}
|
||||
IV.loadPage(index);
|
||||
},
|
||||
|
||||
makeScrolledContent: function (html) {
|
||||
var result = document.createElement('div');
|
||||
result.className = 'page-scroll';
|
||||
result.tabIndex = '-1';
|
||||
result.innerHTML = html.trim();
|
||||
result.onscroll = IV.frameScrolled;
|
||||
return result;
|
||||
},
|
||||
navigateToLoaded: function (index, hash) {
|
||||
if (IV.cache[index].dom) {
|
||||
IV.navigateToDOM(index, hash);
|
||||
} else {
|
||||
var data = JSON.parse(IV.cache[index].content);
|
||||
IV.cache[index].dom = IV.makeScrolledContent(data.html);
|
||||
|
||||
IV.navigateToDOM(index, hash);
|
||||
eval(data.js);
|
||||
}
|
||||
},
|
||||
navigateToDOM: function (index, hash) {
|
||||
IV.pending = null;
|
||||
if (IV.index == index) {
|
||||
IV.jumpToHash(hash);
|
||||
IV.forceScrollFocus();
|
||||
return;
|
||||
}
|
||||
window.history.replaceState(
|
||||
IV.computeCurrentState(),
|
||||
'',
|
||||
IV.pageUrl(IV.index));
|
||||
|
||||
IV.position = IV.position + 1;
|
||||
window.history.pushState(
|
||||
{ position: IV.position, index: index, hash: hash },
|
||||
'',
|
||||
IV.pageUrl(index));
|
||||
IV.showDOM(index, hash);
|
||||
},
|
||||
findPageScroll: function () {
|
||||
var all = document.getElementsByClassName('page-scroll');
|
||||
for (i = 0; i < all.length; ++i) {
|
||||
if (!all[i].classList.contains('hidden-left')
|
||||
&& !all[i].classList.contains('hidden-right')) {
|
||||
return all[i];
|
||||
}
|
||||
}
|
||||
return null;
|
||||
},
|
||||
showDOM: function (index, hash, scroll) {
|
||||
IV.pending = null;
|
||||
if (IV.index != index) {
|
||||
var initial = !window.history.state
|
||||
|| window.history.state.position === undefined;
|
||||
var back = initial
|
||||
|| IV.position > window.history.state.position;
|
||||
IV.position = initial ? 0 : window.history.state.position;
|
||||
|
||||
var now = IV.cache[index].dom;
|
||||
var was = IV.findPageScroll();
|
||||
if (!IV.cache[IV.index]) {
|
||||
IV.cache[IV.index] = {};
|
||||
}
|
||||
IV.cache[IV.index].dom = was;
|
||||
was.parentNode.appendChild(now);
|
||||
if (scroll !== undefined) {
|
||||
now.scrollTop = scroll;
|
||||
setTimeout(function () {
|
||||
// When returning by history.back to an URL with a hash
|
||||
// for the first time browser forces the scroll to the
|
||||
// hash instead of the saved scroll position.
|
||||
//
|
||||
// This workaround prevents incorrect scroll position.
|
||||
now.scrollTop = scroll;
|
||||
}, 0);
|
||||
}
|
||||
|
||||
now.classList.add(back ? 'hidden-left' : 'hidden-right');
|
||||
now.classList.remove(back ? 'hidden-right' : 'hidden-left');
|
||||
IV.stopAnimations(now.firstChild);
|
||||
|
||||
if (!was.listening) {
|
||||
was.listening = true;
|
||||
was.firstChild.addEventListener('transitionend', function (e) {
|
||||
if (was.classList.contains('hidden-left')
|
||||
|| was.classList.contains('hidden-right')) {
|
||||
if (was.parentNode) {
|
||||
was.parentNode.removeChild(was);
|
||||
var videos = was.getElementsByClassName('video');
|
||||
for (var i = 0; i < videos.length; ++i) {
|
||||
videos[i].innerHTML = '';
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
was.classList.add(back ? 'hidden-right' : 'hidden-left');
|
||||
now.classList.remove(back ? 'hidden-left' : 'hidden-right');
|
||||
|
||||
IV.index = index;
|
||||
IV.notify({
|
||||
event: 'location_change',
|
||||
index: IV.index,
|
||||
position: IV.position,
|
||||
hash: IV.computeCurrentState().hash,
|
||||
});
|
||||
if (IV.cache[index].contentUpdated) {
|
||||
IV.cache[index].contentUpdated = false;
|
||||
IV.applyUpdatedContent(index);
|
||||
} else {
|
||||
IV.initMedia();
|
||||
}
|
||||
IV.checkChannelButtons();
|
||||
if (scroll === undefined) {
|
||||
IV.jumpToHash(hash, true);
|
||||
} else {
|
||||
IV.lastScrollTop = scroll;
|
||||
IV.updateJumpToTop(true);
|
||||
}
|
||||
} else if (scroll !== undefined) {
|
||||
IV.scrollTo(scroll);
|
||||
IV.lastScrollTop = scroll;
|
||||
IV.updateJumpToTop(true);
|
||||
} else {
|
||||
IV.jumpToHash(hash);
|
||||
}
|
||||
|
||||
IV.forceScrollFocus();
|
||||
IV.frameScrolled();
|
||||
},
|
||||
forceScrollFocus: function () {
|
||||
IV.findPageScroll().focus();
|
||||
setTimeout(function () {
|
||||
// Doesn't work on #hash-ed pages in Windows WebView2 otherwise.
|
||||
IV.findPageScroll().focus();
|
||||
}, 100);
|
||||
},
|
||||
stopAnimations: function (element) {
|
||||
element.getAnimations().forEach(
|
||||
(animation) => animation.finish());
|
||||
},
|
||||
back: function () {
|
||||
window.history.back();
|
||||
},
|
||||
menuShown: function (shown) {
|
||||
var already = document.getElementById('menu_page_blocker');
|
||||
if (already && shown) {
|
||||
return;
|
||||
} else if (already) {
|
||||
document.body.removeChild(already);
|
||||
return;
|
||||
} else if (!shown) {
|
||||
return;
|
||||
}
|
||||
var blocker = document.createElement('div');
|
||||
blocker.id = 'menu_page_blocker';
|
||||
document.body.appendChild(blocker);
|
||||
},
|
||||
|
||||
videos: {},
|
||||
videosPlaying: {},
|
||||
|
||||
cache: {},
|
||||
channelsJoined: {},
|
||||
index: 0,
|
||||
position: 0
|
||||
};
|
||||
|
||||
document.onclick = IV.frameClickHandler;
|
||||
document.onkeydown = IV.frameKeyDown;
|
||||
document.onmouseenter = IV.frameMouseEnter;
|
||||
document.onmouseup = IV.frameMouseUp;
|
||||
document.onresize = IV.checkVideos;
|
||||
window.onmessage = IV.postMessageHandler;
|
||||
window.addEventListener('popstate', function (e) {
|
||||
if (e.state) {
|
||||
IV.showDOM(e.state.index, e.state.hash, e.state.scroll);
|
||||
}
|
||||
});
|
||||
document.addEventListener("DOMContentLoaded", IV.forceScrollFocus);
|
||||
@@ -19,6 +19,8 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||
"lng_menu_set_status" = "Set Emoji Status";
|
||||
"lng_menu_change_status" = "Change Emoji Status";
|
||||
"lng_menu_my_stories" = "My Stories";
|
||||
"lng_menu_my_groups" = "My Groups";
|
||||
"lng_menu_my_channels" = "My Channels";
|
||||
|
||||
"lng_disable_notifications_from_tray" = "Disable notifications";
|
||||
"lng_enable_notifications_from_tray" = "Enable notifications";
|
||||
@@ -307,7 +309,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||
"lng_edit_limit_reached#one" = "You've reached the message text limit. Please make the text shorter by {count} character.";
|
||||
"lng_edit_limit_reached#other" = "You've reached the message text limit. Please make the text shorter by {count} characters.";
|
||||
"lng_edit_message" = "Edit message";
|
||||
"lng_edit_message_text" = "New message text...";
|
||||
"lng_edit_message_text" = "Caption";
|
||||
"lng_deleted" = "Deleted Account";
|
||||
"lng_deleted_message" = "Deleted message";
|
||||
"lng_deleted_story" = "Deleted story";
|
||||
@@ -469,6 +471,14 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||
|
||||
"lng_bio_placeholder" = "Bio";
|
||||
|
||||
"lng_collectible_username_title" = "{username} is a collectible username that belongs to";
|
||||
"lng_collectible_username_info" = "This username was bought on **Fragment** on {date} for {price}";
|
||||
"lng_collectible_username_copy" = "Copy Link";
|
||||
"lng_collectible_phone_title" = "{phone} is a collectible phone number that belongs to";
|
||||
"lng_collectible_phone_info" = "This phone number was bought on **Fragment** on {date} for {price}";
|
||||
"lng_collectible_phone_copy" = "Copy Phone Number";
|
||||
"lng_collectible_learn_more" = "Learn More";
|
||||
|
||||
"lng_settings_section_info" = "My info";
|
||||
|
||||
"lng_settings_section_notify" = "Notifications";
|
||||
@@ -652,6 +662,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||
"lng_settings_messages_privacy" = "Messages";
|
||||
"lng_settings_voices_privacy" = "Voice messages";
|
||||
"lng_settings_bio_privacy" = "Bio";
|
||||
"lng_settings_birthday_privacy" = "Date of Birth";
|
||||
"lng_settings_privacy_premium" = "Only subscribers of {link} can restrict receiving voice messages.";
|
||||
"lng_settings_privacy_premium_link" = "Telegram Premium";
|
||||
"lng_settings_passcode_disable" = "Disable Passcode";
|
||||
@@ -664,6 +675,21 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||
"lng_settings_phone_label" = "Phone number";
|
||||
"lng_settings_username_add" = "Add username";
|
||||
"lng_settings_username_about" = "Username lets people contact you on Telegram without needing your phone number.";
|
||||
"lng_settings_birthday_label" = "Date of Birth";
|
||||
"lng_settings_birthday_add" = "Add";
|
||||
"lng_settings_birthday_about" = "Choose who can see your birthday in {link}.";
|
||||
"lng_settings_birthday_about_link" = "Settings";
|
||||
"lng_settings_birthday_contacts" = "Only your contacts can see your birthday. {link}";
|
||||
"lng_settings_birthday_contacts_link" = "Change >";
|
||||
"lng_settings_birthday_saved" = "Your date of birth was updated.";
|
||||
"lng_settings_birthday_reset" = "Remove";
|
||||
"lng_settings_channel_label" = "Personal channel";
|
||||
"lng_settings_channel_add" = "Add";
|
||||
"lng_settings_channel_remove" = "Remove";
|
||||
"lng_settings_channel_no_yet" = "You don't have any public channels yet.";
|
||||
"lng_settings_channel_start" = "Start a Channel";
|
||||
"lng_settings_channel_saved" = "Your personal channel was updated.";
|
||||
"lng_settings_channel_removed" = "Your personal channel was removed.";
|
||||
"lng_settings_add_account_about" = "You can add up to four accounts with different phone numbers.";
|
||||
"lng_settings_peer_to_peer_about" = "Disabling peer-to-peer will relay all calls through Telegram servers to avoid revealing your IP address, but may slightly decrease audio quality.";
|
||||
"lng_settings_advanced" = "Advanced";
|
||||
@@ -704,10 +730,18 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||
"lng_settings_angle_backend_d3d11on12" = "D3D11on12";
|
||||
"lng_settings_angle_backend_opengl" = "OpenGL";
|
||||
"lng_settings_angle_backend_disabled" = "Disabled";
|
||||
"lng_settings_top_peers_title" = "Frequent contacts";
|
||||
"lng_settings_top_peers_suggest" = "Suggest frequent contacts";
|
||||
"lng_settings_top_peers_about" = "Display people you message frequently at the top of the search section for quick access.";
|
||||
"lng_settings_sensitive_title" = "Sensitive content";
|
||||
"lng_settings_sensitive_disable_filtering" = "Disable filtering";
|
||||
"lng_settings_sensitive_about" = "Display sensitive media in public channels on all your Telegram devices.";
|
||||
"lng_settings_security_bots" = "Bots and websites";
|
||||
"lng_settings_file_confirmations" = "File open confirmations";
|
||||
"lng_settings_edit_extensions" = "Extensions whitelist";
|
||||
"lng_settings_edit_extensions_about" = "Open files with the following extensions without additional confirmation.";
|
||||
"lng_settings_edit_ip_confirm" = "IP reveal warning";
|
||||
"lng_settings_edit_ip_confirm_about" = "Show confirmation when opening files that may reveal your IP address.";
|
||||
"lng_settings_clear_payment_info" = "Clear Payment and Shipping Info";
|
||||
"lng_settings_logged_in" = "Connected websites";
|
||||
"lng_settings_logged_in_title" = "Logged in with Telegram";
|
||||
@@ -809,6 +843,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||
"lng_settings_auto_night_mode_on" = "System";
|
||||
"lng_settings_auto_night_warning" = "You have enabled auto-night mode. If you want to change the dark mode settings, you'll need to disable it first.";
|
||||
"lng_settings_auto_night_disable" = "Disable";
|
||||
"lng_settings_font_family" = "Font family";
|
||||
|
||||
"lng_settings_color_title" = "Color preview";
|
||||
"lng_settings_color_reply" = "Reply to your message";
|
||||
@@ -1042,6 +1077,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||
"lng_settings_faq_button" = "Go to FAQ";
|
||||
"lng_settings_ask_ok" = "Ask a Volunteer";
|
||||
"lng_settings_faq" = "Telegram FAQ";
|
||||
"lng_settings_faq_link" = "https://telegram.org/faq#general-questions";
|
||||
"lng_settings_features" = "Telegram Features";
|
||||
"lng_settings_logout" = "Log Out";
|
||||
"lng_sure_logout" = "Are you sure you want to log out?";
|
||||
@@ -1087,12 +1123,17 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||
"lng_edit_privacy_everyone" = "Everybody";
|
||||
"lng_edit_privacy_contacts" = "My contacts";
|
||||
"lng_edit_privacy_close_friends" = "Close friends";
|
||||
"lng_edit_privacy_contacts_and_premium" = "Contacts & Premium";
|
||||
"lng_edit_privacy_nobody" = "Nobody";
|
||||
"lng_edit_privacy_premium" = "Premium users";
|
||||
"lng_edit_privacy_exceptions" = "Add exceptions";
|
||||
"lng_edit_privacy_user_types" = "User types";
|
||||
"lng_edit_privacy_users_and_groups" = "Users and groups";
|
||||
"lng_edit_privacy_premium_status" = "all Telegram Premium subscribers";
|
||||
|
||||
"lng_edit_privacy_exceptions_count#one" = "{count} user";
|
||||
"lng_edit_privacy_exceptions_count#other" = "{count} users";
|
||||
"lng_edit_privacy_exceptions_premium_and" = "Premium & {users}";
|
||||
"lng_edit_privacy_exceptions_add" = "Add users or groups";
|
||||
|
||||
"lng_edit_privacy_phone_number_title" = "Phone number privacy";
|
||||
@@ -1136,6 +1177,16 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||
"lng_edit_privacy_about_always_title" = "Always allow";
|
||||
"lng_edit_privacy_about_never_title" = "Never allow";
|
||||
|
||||
"lng_edit_privacy_birthday_title" = "Date of birth privacy";
|
||||
"lng_edit_privacy_birthday_header" = "Who can see my date of birth";
|
||||
"lng_edit_privacy_birthday_always_empty" = "Always allow";
|
||||
"lng_edit_privacy_birthday_never_empty" = "Never allow";
|
||||
"lng_edit_privacy_birthday_exceptions" = "These users will or will not be able to see your date of birth regardless of the settings above.";
|
||||
"lng_edit_privacy_birthday_always_title" = "Always allow";
|
||||
"lng_edit_privacy_birthday_never_title" = "Never allow";
|
||||
"lng_edit_privacy_birthday_yet" = "You haven't entered your date of birth yet.\n{link}";
|
||||
"lng_edit_privacy_birthday_yet_link" = "Add my birthday >";
|
||||
|
||||
"lng_edit_privacy_calls_title" = "Voice calls privacy";
|
||||
"lng_edit_privacy_calls_header" = "Who can call you";
|
||||
"lng_edit_privacy_calls_always_empty" = "Always allow";
|
||||
@@ -1288,6 +1339,24 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||
"lng_profile_photo_by_you" = "photo set by you";
|
||||
"lng_profile_public_photo" = "public photo";
|
||||
|
||||
"lng_invite_upgrade_title" = "Upgrade to Premium";
|
||||
"lng_invite_upgrade_group_invite#one" = "{users} only accepts invitations to groups from Contacts and **Premium** users.";
|
||||
"lng_invite_upgrade_group_invite#other" = "{users} only accept invitations to groups from Contacts and **Premium** users.";
|
||||
"lng_invite_upgrade_group_write#one" = "{users} only accepts messages and invitations to groups from Contacts and **Premium** users.";
|
||||
"lng_invite_upgrade_group_write#other" = "{users} only accept messages and invitations to groups from Contacts and **Premium** users.";
|
||||
"lng_invite_upgrade_channel_invite#one" = "{users} only accepts invitations to channels from Contacts and **Premium** users.";
|
||||
"lng_invite_upgrade_channel_invite#other" = "{users} only accept invitations to channels from Contacts and **Premium** users.";
|
||||
"lng_invite_upgrade_channel_write#one" = "{users} only accepts messages and invitations to channels from Contacts and **Premium** users.";
|
||||
"lng_invite_upgrade_channel_write#other" = "{users} only accept messages and invitations to channels from Contacts and **Premium** users.";
|
||||
"lng_invite_upgrade_users_few" = "{users} and {last}";
|
||||
"lng_invite_upgrade_users_many#one" = "{users} and **{count}** more person";
|
||||
"lng_invite_upgrade_users_many#other" = "{users} and **{count}** more people";
|
||||
"lng_invite_upgrade_or" = "or";
|
||||
"lng_invite_upgrade_via_title" = "Invite via Link";
|
||||
"lng_invite_upgrade_via_group_about" = "You can send an invite link to the group in a private message instead.";
|
||||
"lng_invite_upgrade_via_channel_about" = "You can send an invite link to the channel in a private message instead.";
|
||||
"lng_invite_status_disabled" = "available only to Premium users";
|
||||
|
||||
"lng_via_link_group_one" = "**{user}** restricts adding them to groups.\nYou can send them an invite link as message instead.";
|
||||
"lng_via_link_group_many#one" = "**{count} user** restricts adding them to groups.\nYou can send them an invite link as message instead.";
|
||||
"lng_via_link_group_many#other" = "**{count} users** restrict adding them to groups.\nYou can send them an invite link as message instead.";
|
||||
@@ -1303,12 +1372,20 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||
"lng_via_link_shared_many#one" = "Link shared with **{count} user**.";
|
||||
"lng_via_link_shared_many#other" = "Link shared with **{count} users**.";
|
||||
|
||||
"lng_info_personal_channel_label" = "Channel";
|
||||
"lng_info_mobile_label" = "Mobile";
|
||||
"lng_info_mobile_context_menu_fragment_about" = "This number is not tied to a SIM card and was acquired on {link}.";
|
||||
"lng_info_mobile_context_menu_fragment_about_link" = "Fragment";
|
||||
"lng_info_mobile_hidden" = "Hidden";
|
||||
"lng_info_username_label" = "Username";
|
||||
"lng_info_usernames_label" = "also";
|
||||
"lng_info_birthday_label" = "Date of birth";
|
||||
"lng_info_birthday_years#one" = "{date} ({count} year old)";
|
||||
"lng_info_birthday_years#other" = "{date} ({count} years old)";
|
||||
"lng_info_birthday_today_years#one" = "{date}\n({count} year old)";
|
||||
"lng_info_birthday_today_years#other" = "{date}\n({count} years old)";
|
||||
"lng_info_birthday_today_label" = "Birthday today";
|
||||
"lng_info_birthday_today" = "{emoji} {date}";
|
||||
"lng_info_bio_label" = "Bio";
|
||||
"lng_info_link_label" = "Link";
|
||||
"lng_info_location_label" = "Location";
|
||||
@@ -1419,6 +1496,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||
"lng_manage_peer_reactions_none_about" = "Members of the group can't add any reactions to messages.";
|
||||
"lng_manage_peer_reactions_some_title" = "Only allow these reactions";
|
||||
"lng_manage_peer_reactions_available" = "Available reactions";
|
||||
"lng_manage_peer_reactions_available_ph" = "Add reactions...";
|
||||
"lng_manage_peer_reactions_own" = "You can also {link} emoji packs and use them as reactions.";
|
||||
"lng_manage_peer_reactions_own_link" = "create your own";
|
||||
"lng_manage_peer_reactions_level#one" = "Your channel needs to reach level **{count}** to use **{same_count}** custom reaction.";
|
||||
@@ -1427,6 +1505,11 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||
"lng_manage_peer_reactions_boost_link" = "here";
|
||||
"lng_manage_peer_reactions_limit" = "Channels can't have more custom reactions.";
|
||||
|
||||
"lng_manage_peer_reactions_max_title" = "Maximum number of reactions";
|
||||
"lng_manage_peer_reactions_max_slider#one" = "{count} reaction per post";
|
||||
"lng_manage_peer_reactions_max_slider#other" = "{count} reactions per post";
|
||||
"lng_manage_peer_reactions_max_about" = "Limit the number of different reactions that can be added to a post, including already published ones.";
|
||||
|
||||
"lng_manage_peer_antispam" = "Aggressive Anti-Spam";
|
||||
"lng_manage_peer_antispam_about" = "Telegram will filter more spam but may occasionally affect ordinary messages. You can report False Positives in Recent Actions.";
|
||||
"lng_manage_peer_antispam_not_enough#one" = "Aggressive filtering can be enabled only in groups with more than **{count} member**.";
|
||||
@@ -1540,6 +1623,11 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||
"lng_report_button" = "Report";
|
||||
"lng_report_thanks" = "Thank you! Your report will be reviewed by our team very soon.";
|
||||
|
||||
"lng_report_sponsored_hidden" = "Sponsored messages will be hidden.";
|
||||
"lng_report_sponsored_reported" = "We will review this ad to ensure it matches out {link}.";
|
||||
"lng_report_sponsored_reported_link" = "Ad Policies and Guidelines";
|
||||
"lng_report_sponsored_reported_learn" = "Learn more about our {link}.";
|
||||
|
||||
"lng_channel_add_members" = "Add members";
|
||||
"lng_channel_add_users" = "Add users";
|
||||
"lng_channel_add_removed" = "Remove user";
|
||||
@@ -1760,6 +1848,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||
"lng_action_giveaway_results_none" = "No winners of the giveaway could be selected.";
|
||||
"lng_action_boost_apply#one" = "{from} boosted the group";
|
||||
"lng_action_boost_apply#other" = "{from} boosted the group {count} times";
|
||||
"lng_action_set_chat_intro" = "{from} added the message below for all empty chats. How?";
|
||||
|
||||
"lng_similar_channels_title" = "Similar channels";
|
||||
"lng_similar_channels_view_all" = "View all";
|
||||
@@ -1919,6 +2008,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||
"lng_forwarded_imported" = "This message was imported from another app. It may not be real.";
|
||||
"lng_signed_author" = "Author: {user}";
|
||||
"lng_sponsored_message_title" = "Sponsored";
|
||||
"lng_sponsored_message_revenue_button" = "what's this?";
|
||||
"lng_recommended_message_title" = "Recommended";
|
||||
"lng_edited" = "edited";
|
||||
"lng_commented" = "commented";
|
||||
@@ -2185,6 +2275,15 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||
"lng_business_about_away_messages" = "Define messages that are automatically sent when you are off.";
|
||||
"lng_business_subtitle_chatbots" = "Chatbots";
|
||||
"lng_business_about_chatbots" = "Add any third party chatbots that will process customer interactions.";
|
||||
"lng_business_subtitle_chat_intro" = "Custom Intro";
|
||||
"lng_business_about_chat_intro" = "Customize the message people see before they start a chat with you.";
|
||||
"lng_business_subtitle_chat_links" = "Links to Chat";
|
||||
"lng_business_about_chat_links" = "Create links that start a chat with you, suggesting the first message.";
|
||||
"lng_business_subtitle_sponsored" = "Ads in Channels";
|
||||
"lng_business_button_sponsored" = "Do Not Hide Ads";
|
||||
"lng_business_about_sponsored" = "As a Premium subscriber, you don’t see any ads on Telegram, but you can turn them on, for example, to view your own ads that you launched on the {link}";
|
||||
"lng_business_about_sponsored_link" = "Telegram Ad Platform {emoji}";
|
||||
"lng_business_about_sponsored_url" = "https://ads.telegram.org";
|
||||
|
||||
"lng_location_title" = "Location";
|
||||
"lng_location_about" = "Display the location of your business on your account.";
|
||||
@@ -2286,8 +2385,52 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||
"lng_chatbots_reply_about" = "The bot will be able to view all new incoming messages, but not the messages that had been sent before you added the bot.";
|
||||
"lng_chatbots_remove" = "Remove Bot";
|
||||
"lng_chatbots_not_found" = "Chatbot not found.";
|
||||
"lng_chatbots_not_supported" = "This bot doesn't support Telegram Business yet.";
|
||||
"lng_chatbots_add" = "Add";
|
||||
"lng_chatbots_info_url" = "https://telegram.org/privacy";
|
||||
"lng_chatbot_status_can_reply" = "bot manages this chat";
|
||||
"lng_chatbot_status_paused" = "bot stopped";
|
||||
"lng_chatbot_status_views" = "bot has access to this chat";
|
||||
"lng_chatbot_button_pause" = "Stop";
|
||||
"lng_chatbot_button_resume" = "Start";
|
||||
"lng_chatbot_menu_manage" = "Manage bot";
|
||||
"lng_chatbot_menu_remove" = "Remove bot from this chat";
|
||||
"lng_chatbot_menu_revoke" = "Revoke access to this chat";
|
||||
|
||||
"lng_chat_intro_title" = "Custom Intro";
|
||||
"lng_chat_intro_subtitle" = "Customize your intro";
|
||||
"lng_chat_intro_default_title" = "No messages here yet...";
|
||||
"lng_chat_intro_default_message" = "Send a message or click on the greeting below";
|
||||
"lng_chat_intro_enter_title" = "Enter Title";
|
||||
"lng_chat_intro_enter_message" = "Enter Message";
|
||||
"lng_chat_intro_choose_sticker" = "Choose Sticker";
|
||||
"lng_chat_intro_random_sticker" = "Random";
|
||||
"lng_chat_intro_about" = "You can customize the message people see before they start a chat with you.";
|
||||
"lng_chat_intro_reset" = "Reset to Default";
|
||||
|
||||
"lng_chat_links_title" = "Links to Chat";
|
||||
"lng_chat_links_about" = "Give your customers short links that start a chat with you – and suggest the first message from them to you.";
|
||||
"lng_chat_links_create_link" = "Create a Link to Chat";
|
||||
"lng_chat_links_footer" = "You can also use a simple link for a chat with you – {links}";
|
||||
"lng_chat_links_footer_both" = "{username} or {link}";
|
||||
"lng_chat_links_no_clicks" = "no clicks";
|
||||
"lng_chat_links_clicks#one" = "{count} click";
|
||||
"lng_chat_links_clicks#other" = "{count} clicks";
|
||||
"lng_chat_link_new_title" = "New Link";
|
||||
"lng_chat_link_edit_title" = "Edit Link";
|
||||
"lng_chat_link_description" = "Add a message that will be entered in the message field for anyone who starts a chat with you using this link.";
|
||||
"lng_chat_link_placeholder" = "Add Preset Message";
|
||||
"lng_chat_link_saved" = "Chat link saved.";
|
||||
"lng_chat_link_copy" = "Copy";
|
||||
"lng_chat_link_share" = "Share";
|
||||
"lng_chat_link_rename" = "Rename";
|
||||
"lng_chat_link_delete" = "Delete";
|
||||
"lng_chat_link_name" = "Link Name (optional)";
|
||||
"lng_chat_link_name_about" = "Add a name for this link that only you will see.";
|
||||
"lng_chat_link_delete_sure" = "Are you sure you want to delete this chat link?";
|
||||
"lng_chat_link_qr_title" = "Chat Link QR Code";
|
||||
"lng_chat_link_qr_about" = "Everyone on Telegram can scan this code to contact you.";
|
||||
"lng_chat_link_copied" = "Chat link copied to clipboard.";
|
||||
|
||||
"lng_boost_channel_button" = "Boost Channel";
|
||||
"lng_boost_group_button" = "Boost Group";
|
||||
@@ -2387,6 +2530,10 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||
"lng_boost_channel_needs_level_reactions#one" = "Your channel needs to reach **Level {count}** to add **{same_count}** custom emoji as a reaction.";
|
||||
"lng_boost_channel_needs_level_reactions#other" = "Your channel needs to reach **Level {count}** to add **{same_count}** custom emoji as reactions.";
|
||||
|
||||
"lng_boost_channel_title_cpm" = "Boost Channel";
|
||||
"lng_boost_channel_needs_level_cpm#one" = "Your channel needs to reach **Level {count}** to switch off ads.";
|
||||
"lng_boost_channel_needs_level_cpm#other" = "Your channel needs to reach **Level {count}** to switch off ads.";
|
||||
|
||||
"lng_boost_group_title_emoji" = "Enable emoji pack";
|
||||
"lng_boost_group_needs_level_emoji#one" = "Your group needs to reach **Level {count}** to set emoji pack.";
|
||||
"lng_boost_group_needs_level_emoji#other" = "Your group needs to reach **Level {count}** to set emoji pack.";
|
||||
@@ -2593,6 +2740,9 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||
"lng_gift_link_also_send" = "You can also {link} to a friend as a gift.";
|
||||
"lng_gift_link_also_send_link" = "send this link";
|
||||
"lng_gift_link_use" = "Use Link";
|
||||
"lng_gift_link_already_title" = "You already have Telegram Premium";
|
||||
"lng_gift_link_already_about" = "You can activate this link after {date} or {link} to a friend.";
|
||||
"lng_gift_link_already_link" = "send the link";
|
||||
"lng_gift_link_used_title" = "Used Gift Link";
|
||||
"lng_gift_link_used_about" = "This link was used to activate\na **Telegram Premium** subscription.";
|
||||
"lng_gift_link_used_footer" = "This link was used on {date}.";
|
||||
@@ -2704,7 +2854,17 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||
"lng_in_dlg_audio_count#other" = "{count} audio";
|
||||
|
||||
"lng_ban_user" = "Ban User";
|
||||
"lng_ban_users" = "Ban users";
|
||||
"lng_restrict_users" = "Restrict users";
|
||||
"lng_delete_all_from_user" = "Delete all from {user}";
|
||||
"lng_delete_all_from_users" = "Delete all from users";
|
||||
"lng_restrict_user_part" = "Partially restrict this user {emoji}";
|
||||
"lng_restrict_users_part" = "Partially restrict users {emoji}";
|
||||
"lng_restrict_user_full" = "Fully ban this user {emoji}";
|
||||
"lng_restrict_users_full" = "Fully ban users {emoji}";
|
||||
"lng_restrict_users_part_single_header" = "What can this user do?";
|
||||
"lng_restrict_users_part_header#one" = "What can {count} selected user do?";
|
||||
"lng_restrict_users_part_header#other" = "What can {count} selected users do?";
|
||||
"lng_report_spam" = "Report Spam";
|
||||
"lng_report_spam_and_leave" = "Report spam and leave";
|
||||
"lng_report_spam_done" = "Thank you for your report.";
|
||||
@@ -2883,6 +3043,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||
"lng_bot_remove_from_side_menu_done" = "Bot removed from the main menu.";
|
||||
"lng_bot_settings" = "Settings";
|
||||
"lng_bot_open" = "Open Bot";
|
||||
"lng_bot_terms" = "Terms of Use";
|
||||
"lng_bot_reload_page" = "Reload Page";
|
||||
"lng_bot_add_to_menu" = "{bot} asks your permission to be added as an option to your attachments menu so you can access it from any chat.";
|
||||
"lng_bot_add_to_menu_done" = "Bot added to the menu.";
|
||||
@@ -2931,6 +3092,15 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||
"lng_unread_bar_some" = "Unread messages";
|
||||
|
||||
"lng_maps_point" = "Location";
|
||||
"lng_live_location" = "Live Location";
|
||||
"lng_live_location_now" = "updated just now";
|
||||
"lng_live_location_minutes#one" = "updated {count} minute ago";
|
||||
"lng_live_location_minutes#other" = "updated {count} minutes ago";
|
||||
"lng_live_location_hours#one" = "updated {count} hour ago";
|
||||
"lng_live_location_hours#other" = "updated {count} hours ago";
|
||||
"lng_live_location_today" = "updated today at {time}";
|
||||
"lng_live_location_yesterday" = "updated yesterday at {time}";
|
||||
"lng_live_location_date_time" = "updated {date} at {time}";
|
||||
"lng_save_photo" = "Save image";
|
||||
"lng_save_video" = "Save video";
|
||||
"lng_save_audio_file" = "Save audio file";
|
||||
@@ -3013,6 +3183,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||
"lng_context_delete_msg" = "Delete Message";
|
||||
"lng_context_auto_delete_in" = "auto-delete in {duration}";
|
||||
"lng_context_select_msg" = "Select Message";
|
||||
"lng_context_select_msg_bulk" = "Select up to this message";
|
||||
"lng_context_report_msg" = "Report Message";
|
||||
"lng_context_pin_msg" = "Pin Message";
|
||||
"lng_context_unpin_msg" = "Unpin Message";
|
||||
@@ -3273,6 +3444,17 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||
"lng_mediaview_forward" = "Forward";
|
||||
"lng_mediaview_delete" = "Delete";
|
||||
"lng_mediaview_save_to_profile" = "Save to Profile";
|
||||
"lng_mediaview_pin_story_done" = "Story pinned";
|
||||
"lng_mediaview_pin_story_about" = "Now it will be always shown on the top.";
|
||||
"lng_mediaview_pin_stories_done#one" = "{count} story pinned";
|
||||
"lng_mediaview_pin_stories_done#other" = "{count} stories pinned";
|
||||
"lng_mediaview_pin_stories_about#one" = "Now it will be always shown on the top.";
|
||||
"lng_mediaview_pin_stories_about#other" = "Now they will be always shown on the top.";
|
||||
"lng_mediaview_unpin_story_done" = "Story unpinned.";
|
||||
"lng_mediaview_unpin_stories_done#one" = "{count} story unpinned";
|
||||
"lng_mediaview_unpin_stories_done#other" = "{count} stories unpinned";
|
||||
"lng_mediaview_pin_limit#one" = "You can't pin more than {count} story.";
|
||||
"lng_mediaview_pin_limit#other" = "You can't pin more than {count} stories.";
|
||||
"lng_mediaview_archive_story" = "Archive Story";
|
||||
"lng_mediaview_photos_all" = "View all photos";
|
||||
"lng_mediaview_files_all" = "View all files";
|
||||
@@ -3511,6 +3693,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||
"lng_call_cancel" = "Cancel";
|
||||
|
||||
"lng_call_microphone_off" = "{user}'s microphone is off";
|
||||
"lng_call_battery_level_low" = "{user}'s battery level is low";
|
||||
|
||||
"lng_group_call_title" = "Voice Chat";
|
||||
"lng_group_call_title_channel" = "Live Stream";
|
||||
@@ -4347,10 +4530,14 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||
"lng_translate_settings_about" = "The 'Translate' button will appear when you open a context menu on a text message.";
|
||||
"lng_translate_settings_one" = "Please choose at least one language so that it can be used as the \"Translate to\" language.";
|
||||
|
||||
"lng_launch_exe_warning" = "This file has a {extension} extension.\nAre you sure you want to run it?";
|
||||
"lng_launch_exe_warning" = "This file has {extension} extension.\nAre you sure you want to run it?";
|
||||
"lng_launch_other_warning" = "This file has {extension} extension.\nAre you sure you want to open it?";
|
||||
"lng_launch_svg_warning" = "Opening this file can potentially expose your IP address to its sender. Continue?";
|
||||
"lng_launch_exe_sure" = "Run";
|
||||
"lng_launch_other_sure" = "Open";
|
||||
"lng_launch_exe_dont_ask" = "Don't ask me again";
|
||||
"lng_launch_dont_ask" = "Remember for this file type";
|
||||
"lng_launch_dont_ask_settings" = "You can later edit trusted file types in Settings > Privacy and Security > File open confirmations.";
|
||||
|
||||
"lng_polls_anonymous" = "Anonymous Poll";
|
||||
"lng_polls_public" = "Poll";
|
||||
@@ -4561,6 +4748,9 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||
"lng_view_button_external_link" = "Open link";
|
||||
"lng_view_button_boost" = "Boost";
|
||||
"lng_view_button_giftcode" = "Open";
|
||||
"lng_view_button_iv" = "Instant View";
|
||||
"lng_view_button_stickerset" = "View stickers";
|
||||
"lng_view_button_emojipack" = "View emoji";
|
||||
|
||||
"lng_sponsored_hide_ads" = "Hide";
|
||||
"lng_sponsored_title" = "What are sponsored messages?";
|
||||
@@ -4568,6 +4758,18 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||
"lng_sponsored_info_description2" = "Sponsored Messages are currently in test mode. Once they are fully launched and allow Telegram to cover its basic costs, we will start sharing ad revenue with the owners of public channels in which sponsored messages are displayed.\n\nOnline ads should no longer be synonymous with abuse of user privacy. Let us redefine how a tech company should operate – together.";
|
||||
"lng_sponsored_info_menu" = "About this ad";
|
||||
"lng_sponsored_info_submenu" = "Advertiser: {text}";
|
||||
"lng_sponsored_menu_revenued_about" = "About These Ads";
|
||||
"lng_sponsored_menu_revenued_report" = "Report Ad";
|
||||
"lng_sponsored_revenued_subtitle" = "Telegram Ads are very different from ads on other platforms. Ads such as this one:";
|
||||
"lng_sponsored_revenued_info1_title" = "Respect Your Privacy";
|
||||
"lng_sponsored_revenued_info1_description" = "Ads on Telegram do not use your personal information and are abased on the channel in which you see them.";
|
||||
"lng_sponsored_revenued_info2_title" = "Help the Channel Creator";
|
||||
"lng_sponsored_revenued_info2_description" = "50% of the revenue from Telegram Ads goes to the owner of the channel where they are displayed.";
|
||||
"lng_sponsored_revenued_info3_title" = "Can Be Removed";
|
||||
"lng_sponsored_revenued_info3_description#one" = "You can turn off ads by subscribing to {link}, and Level {count} channels can remove them for their subscribers.";
|
||||
"lng_sponsored_revenued_info3_description#other" = "You can turn off ads by subscribing to {link}, and Level {count} channels can remove them for their subscribers.";
|
||||
"lng_sponsored_revenued_footer_title" = "Can I Launch an Ad?";
|
||||
"lng_sponsored_revenued_footer_description" = "Anyone can create an ad to display in this channel — with minimal budgets. Check out the **Telegram Ad Platform** for details. {link}";
|
||||
|
||||
"lng_telegram_features_url" = "https://t.me/TelegramTips";
|
||||
|
||||
@@ -4863,9 +5065,102 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||
"lng_boosts_prepaid_giveaway_status#one" = "{count} subscription {duration}";
|
||||
"lng_boosts_prepaid_giveaway_status#other" = "{count} subscriptions {duration}";
|
||||
|
||||
"lng_channel_earn_title" = "Monetization";
|
||||
"lng_channel_earn_about" = "Telegram shares 50% of the revenue from ads displayed in your channel. {link}";
|
||||
"lng_channel_earn_about_link" = "Learn more {emoji}";
|
||||
"lng_channel_earn_overview_title" = "Proceeds overview";
|
||||
"lng_channel_earn_available" = "Balance available to withdraw";
|
||||
"lng_channel_earn_reward" = "Proceeds since last withdrawal";
|
||||
"lng_channel_earn_total" = "Total lifetime proceeds";
|
||||
"lng_channel_earn_balance_title" = "Available balance";
|
||||
"lng_channel_earn_balance_button" = "Withdraw";
|
||||
"lng_channel_earn_balance_password_title" = "Two-step verification";
|
||||
"lng_channel_earn_balance_password_description" = "Please enter your password to withdraw.";
|
||||
"lng_channel_earn_balance_about" = "Collect your reward using Fragment, a third-party platform used by the advertiser to pay for the ad. {link}";
|
||||
"lng_channel_earn_balance_about_temp" = "In the coming weeks you will be able to collect your reward using Fragment, a third-party platform used by advertisers to pay ads. {link}";
|
||||
"lng_channel_earn_transfer_sure_about1" = "Check the address of the recipient:";
|
||||
"lng_channel_earn_transfer_sure_about2" = "This action can not be undone. If the address above is incorrect you will lose your TON.";
|
||||
"lng_channel_earn_history_title" = "Transaction history";
|
||||
"lng_channel_earn_history_in" = "Proceeds from ads";
|
||||
"lng_channel_earn_history_in_about" = "Proceeds from ads displayed in";
|
||||
"lng_channel_earn_history_out" = "Withdrawal";
|
||||
"lng_channel_earn_history_out_failed" = "Not Completed";
|
||||
"lng_channel_earn_history_out_about_failed" = "Withdrawal failed";
|
||||
"lng_channel_earn_history_out_button" = "View in Blockchain Explorer";
|
||||
"lng_channel_earn_history_return" = "Refund";
|
||||
"lng_channel_earn_history_return_about" = "Refunded back";
|
||||
"lng_channel_earn_history_pending" = "Pending";
|
||||
"lng_channel_earn_history_show_more#one" = "Show {count} More Transaction";
|
||||
"lng_channel_earn_history_show_more#other" = "Show {count} More Transactions";
|
||||
"lng_channel_earn_off" = "Switch Off Ads";
|
||||
"lng_channel_earn_off_about" = "You will not be eligible for any rewards if you switch off ads.";
|
||||
"lng_channel_earn_cpm_min" = "No Ads";
|
||||
"lng_channel_earn_cpm#one" = "{emoji} {count} CPM";
|
||||
"lng_channel_earn_cpm#other" = "{emoji} {count} CPM";
|
||||
"lng_channel_earn_learn_title" = "Earn From Your Channel";
|
||||
"lng_channel_earn_learn_in_subtitle" = "Telegram Ads";
|
||||
"lng_channel_earn_learn_in_about" = "Telegram can display ads in your channel.";
|
||||
"lng_channel_earn_learn_split_subtitle" = "50:50 revenue split";
|
||||
"lng_channel_earn_learn_split_about" = "You can receive 50% of the ad revenue in TON.";
|
||||
"lng_channel_earn_learn_out_subtitle" = "Flexible withdrawals";
|
||||
"lng_channel_earn_learn_out_about" = "You can withdraw your TON any time.";
|
||||
"lng_channel_earn_learn_coin_title" = "What is {emoji} TON?";
|
||||
"lng_channel_earn_learn_coin_about" = "TON is a blockchain platform and cryptocurrency that Telegram uses for its high speed and low commissions on transactions. {link}";
|
||||
"lng_channel_earn_learn_close" = "Got it";
|
||||
"lng_channel_earn_learn_coin_link" = "https://telegram.org/blog/monetization-for-channels";
|
||||
"lng_channel_earn_chart_top_hours" = "Ad impressions";
|
||||
"lng_channel_earn_chart_revenue" = "Ad revenue";
|
||||
"lng_channel_earn_chart_overriden_detail_currency" = "Revenue in TON";
|
||||
"lng_channel_earn_chart_overriden_detail_usd" = "Revenue in USD";
|
||||
|
||||
"lng_contact_add" = "Add";
|
||||
"lng_contact_send_message" = "message";
|
||||
|
||||
"lng_iv_open_in_browser" = "Open in Browser";
|
||||
"lng_iv_share" = "Share";
|
||||
"lng_iv_join_channel" = "Join";
|
||||
"lng_iv_window_title" = "Instant View";
|
||||
"lng_iv_wrong_layout" = "Wrong layout?";
|
||||
|
||||
"lng_limit_download_title" = "Download speed limited";
|
||||
"lng_limit_download_subscribe" = "Subscribe to {link} and increase download speed {increase}.";
|
||||
"lng_limit_download_increase_times#one" = "**{count}** time";
|
||||
"lng_limit_download_increase_times#other" = "**{count}** times";
|
||||
"lng_limit_download_increase_speed" = "by **{percent}**";
|
||||
"lng_limit_download_subscribe_link" = "Telegram Premium";
|
||||
"lng_limit_upload_title" = "Upload speed limited";
|
||||
"lng_limit_upload_subscribe" = "Subscribe to {link} and increase upload speed {increase}.";
|
||||
"lng_limit_upload_increase_times#one" = "**{count}** time";
|
||||
"lng_limit_upload_increase_times#other" = "**{count}** times";
|
||||
"lng_limit_upload_increase_speed" = "by **{percent}**";
|
||||
"lng_limit_upload_subscribe_link" = "Telegram Premium";
|
||||
|
||||
"lng_recent_frequent" = "Frequent contacts";
|
||||
"lng_recent_frequent_all" = "Show all";
|
||||
"lng_recent_frequent_collapse" = "Collapse";
|
||||
"lng_recent_title" = "Recent";
|
||||
"lng_recent_clear" = "Clear";
|
||||
"lng_recent_clear_sure" = "Do you want to clear your search history?";
|
||||
"lng_recent_remove" = "Remove from Recent";
|
||||
"lng_recent_clear_all" = "Clear all";
|
||||
"lng_recent_hide_top" = "Remove all & Disable";
|
||||
"lng_recent_hide_sure" = "Are you sure you want to clear and disable frequent contacts list?\n\nYou can always turn this feature back on in Settings > Privacy > Suggest Frequent Contacts.";
|
||||
"lng_recent_hide_button" = "Hide";
|
||||
"lng_recent_none" = "Recent search results\nwill appear here.";
|
||||
"lng_recent_chats" = "Chats";
|
||||
"lng_recent_channels" = "Channels";
|
||||
"lng_channels_none_title" = "No channels yet...";
|
||||
"lng_channels_none_about" = "You are not currently subscribed to any channels.";
|
||||
"lng_channels_your_title" = "Channels you joined";
|
||||
"lng_channels_your_more" = "Show more";
|
||||
"lng_channels_your_less" = "Show less";
|
||||
"lng_channels_recommended" = "Recommended channels";
|
||||
|
||||
"lng_font_box_title" = "Choose font family";
|
||||
"lng_font_default" = "Default";
|
||||
"lng_font_system" = "System font";
|
||||
"lng_font_not_found" = "Font not found.";
|
||||
|
||||
// Wnd specific
|
||||
|
||||
"lng_wnd_choose_program_menu" = "Choose Default Program...";
|
||||
|
||||
@@ -21,5 +21,10 @@
|
||||
<file alias="writing.tgs">../../animations/writing.tgs</file>
|
||||
<file alias="hours.tgs">../../animations/hours.tgs</file>
|
||||
<file alias="phone.tgs">../../animations/phone.tgs</file>
|
||||
<file alias="chat_link.tgs">../../animations/chat_link.tgs</file>
|
||||
<file alias="collectible_username.tgs">../../animations/collectible_username.tgs</file>
|
||||
<file alias="collectible_phone.tgs">../../animations/collectible_phone.tgs</file>
|
||||
<file alias="search.tgs">../../animations/search.tgs</file>
|
||||
<file alias="noresults.tgs">../../animations/noresults.tgs</file>
|
||||
</qresource>
|
||||
</RCC>
|
||||
|
||||
9
Telegram/Resources/qrc/telegram/iv.qrc
Normal file
@@ -0,0 +1,9 @@
|
||||
<RCC>
|
||||
<qresource prefix="/iv">
|
||||
<file alias="page.css">../../iv_html/page.css</file>
|
||||
<file alias="page.js">../../iv_html/page.js</file>
|
||||
<file alias="highlight.css">../../iv_html/highlight.9.12.0.css</file>
|
||||
<file alias="highlight.js">../../iv_html/highlight.9.12.0.js</file>
|
||||
<file alias="morphdom.js">../../iv_html/morphdom-umd.min.2.7.2.js</file>
|
||||
</qresource>
|
||||
</RCC>
|
||||