Compare commits

..

287 Commits

Author SHA1 Message Date
sk
12599db0ff change dev versioning 2022-05-02 23:00:55 +02:00
sk
c751c85c1c add version number for upstream changes 2022-05-02 22:43:05 +02:00
sk
f1331a0f6d start fork versioning 2022-05-02 21:35:51 +02:00
sk
c75c9b60f9 add fork readme 2022-05-02 21:35:42 +02:00
sk
eb3adf1dfd Merge branch 'feature/add-federated-timeline' into fork 2022-05-02 21:35:14 +02:00
sk
6533163fd0 Merge branch 'master' into fork 2022-05-02 21:17:04 +02:00
Gregory K
fa75570254 Merge pull request #112 from sk22/fix/space-in-empty-reply
Fix compose containing a wrong space as initial reply text
2022-05-02 22:06:12 +03:00
sk
1406ea376d fix space as reply initial text 2022-05-02 20:59:22 +02:00
sk
1becad6016 Merge branch 'feature/enable-unlisted-as-default' into fork 2022-05-02 19:32:26 +02:00
sk
d34653750e set unlisted as default visibility 2022-05-02 19:31:43 +02:00
sk
705592aefd set unlisted as default 2022-05-02 19:17:25 +02:00
sk
583325d6e8 add unlisted visibility option 2022-05-02 19:16:53 +02:00
sk
318d271127 add federation tab and change tab order 2022-05-02 18:31:29 +02:00
Grishka
5562bf936e toot -> post 2022-05-02 05:49:59 +03:00
Grishka
02a1f2ef8c Add following/followers lists
closes #25
2022-05-02 05:45:51 +03:00
Grishka
7b26649521 Probably fix #95 2022-05-02 01:20:07 +03:00
Grishka
8059120136 Better account switcher 2022-05-01 00:44:28 +03:00
Grishka
ec38210dde Fix #99 2022-04-30 20:30:29 +03:00
Grishka
38eadca4e2 Report fixes 2022-04-30 00:02:13 +03:00
Grishka
31cb17d549 Update readme 2022-04-29 20:39:19 +03:00
Grishka
10a5bf0a82 Fix notification policy layout for long strings 2022-04-29 17:38:48 +03:00
Grishka
a58a279e8c Client-side filtering is annoying 2022-04-29 17:25:32 +03:00
Grishka
0fe58e49b6 Display more relationship states + locked accounts
closes #85, #73, #30
2022-04-29 17:11:23 +03:00
Grishka
089e297656 fix #93 2022-04-29 15:17:29 +03:00
Grishka
2a65bdb08f Add strings for follow states 2022-04-29 03:45:41 +03:00
Grishka
93fbc52f6a More crash fixes 2022-04-29 03:37:18 +03:00
Grishka
4e4b5fcfe4 Probably a crash fix 2022-04-29 03:06:06 +03:00
Grishka
620bc2285c Fix notification settings getting reset on app update 2022-04-28 23:32:43 +03:00
Grishka
f73849dbb7 Home timeline auto-refresh
close #32
2022-04-28 23:22:55 +03:00
Grishka
e8eb12532a Fixes 2022-04-28 01:35:20 +03:00
Grishka
9a0c383da8 Change community -> server 2022-04-28 00:54:35 +03:00
Grishka
ed79cebc57 Merge remote-tracking branch 'origin/l10n_master' 2022-04-26 00:58:50 +03:00
Grishka
8e65459cb5 bump version 2022-04-26 00:58:33 +03:00
Eugen Rochko
e32063fa09 New translations strings.xml (Vietnamese) 2022-04-25 22:26:35 +02:00
Eugen Rochko
d979389715 New translations strings.xml (Italian) 2022-04-25 22:26:19 +02:00
Eugen Rochko
d0f2af2913 New translations strings.xml (Galician) 2022-04-25 22:26:19 +02:00
Eugen Rochko
309ccc0a70 New translations strings.xml (Turkish) 2022-04-25 22:26:18 +02:00
Grishka
89c7a13c59 Add info banners in discover sub-tabs 2022-04-25 22:27:18 +03:00
Eugen Rochko
ea4d520e23 New translations strings.xml (Italian) 2022-04-25 21:24:49 +02:00
Eugen Rochko
d6a42d0d6b New translations strings.xml (Galician) 2022-04-25 18:35:42 +02:00
Eugen Rochko
025458ce8c New translations strings.xml (Chinese Simplified) 2022-04-25 06:31:05 +02:00
Eugen Rochko
650822f3b3 New translations short_description.txt (Chinese Simplified) 2022-04-25 05:20:18 +02:00
Eugen Rochko
0422a8c590 New translations full_description.txt (Chinese Simplified) 2022-04-25 05:20:17 +02:00
Eugen Rochko
b640f6c68d New translations strings.xml (Chinese Simplified) 2022-04-25 05:20:16 +02:00
Eugen Rochko
a4b89b8a52 New translations strings.xml (Turkish) 2022-04-24 19:39:46 +02:00
Grishka
3c9670bbaa Fix notification background 2022-04-24 19:33:57 +03:00
Eugen Rochko
22d27b13e7 New translations strings.xml (Vietnamese) 2022-04-24 15:37:22 +02:00
Eugen Rochko
233f87d90b New translations strings.xml (Portuguese, Brazilian) 2022-04-24 15:37:20 +02:00
Grishka
0dd5e5af8d Fix #71 2022-04-24 15:41:15 +03:00
Grishka
61d537779b Local timeline 2022-04-24 13:51:03 +03:00
Eugen Rochko
faa6ed336d New translations strings.xml (Italian) 2022-04-23 22:37:59 +02:00
Grishka
f499444a86 Fix pre-upload image resizing 2022-04-23 22:25:58 +03:00
Eugen Rochko
d6202d005f New translations strings.xml (Turkish) 2022-04-23 16:15:22 +02:00
Eugen Rochko
2df42396c3 New translations short_description.txt (Croatian) 2022-04-23 01:17:53 +02:00
Eugen Rochko
73002a8dbf New translations full_description.txt (Croatian) 2022-04-23 01:17:52 +02:00
Eugen Rochko
a50a14492f New translations strings.xml (Croatian) 2022-04-23 01:17:51 +02:00
Eugen Rochko
d896402d39 New translations full_description.txt (Croatian) 2022-04-23 00:13:04 +02:00
Eugen Rochko
571e593041 New translations full_description.txt (Croatian) 2022-04-22 22:45:29 +02:00
Eugen Rochko
b7a6d5313d New translations strings.xml (French) 2022-04-22 20:29:34 +02:00
Eugen Rochko
c6ea07e43e New translations full_description.txt (Croatian) 2022-04-22 19:27:27 +02:00
Eugen Rochko
1d33f476d6 New translations full_description.txt (Polish) 2022-04-22 19:27:26 +02:00
Eugen Rochko
9dca538f96 New translations strings.xml (Polish) 2022-04-22 19:27:25 +02:00
Eugen Rochko
823a6d7905 New translations full_description.txt (Croatian) 2022-04-22 18:31:47 +02:00
Eugen Rochko
4b12adc0f8 New translations strings.xml (Polish) 2022-04-22 18:31:46 +02:00
Eugen Rochko
1720665212 New translations strings.xml (Galician) 2022-04-22 16:28:34 +02:00
Eugen Rochko
83e6bb2ced New translations strings.xml (Turkish) 2022-04-22 15:31:26 +02:00
Eugen Rochko
78342fbe74 New translations strings.xml (German) 2022-04-22 13:24:00 +02:00
Eugen Rochko
0cb502b244 New translations full_description.txt (Croatian) 2022-04-22 13:23:48 +02:00
Grishka
559835d849 Crash fixes 2022-04-22 14:15:52 +03:00
Eugen Rochko
fd4854adae New translations strings.xml (Russian) 2022-04-22 11:59:26 +02:00
Eugen Rochko
2b7d9e5536 New translations strings.xml (Portuguese) 2022-04-22 11:59:25 +02:00
Eugen Rochko
15d73ab9a2 New translations strings.xml (Portuguese) 2022-04-22 11:03:22 +02:00
Eugen Rochko
05a7dd9636 New translations strings.xml (Vietnamese) 2022-04-22 05:27:52 +02:00
Eugen Rochko
899e016594 New translations strings.xml (Vietnamese) 2022-04-22 04:30:12 +02:00
Eugen Rochko
2b752be6d0 New translations strings.xml (Croatian) 2022-04-22 02:50:55 +02:00
Eugen Rochko
0dd42a07dc New translations full_description.txt (French) 2022-04-22 02:50:54 +02:00
Eugen Rochko
9e527d9ab1 New translations strings.xml (French) 2022-04-22 02:50:53 +02:00
Eugen Rochko
3ee0782a61 New translations strings.xml (Croatian) 2022-04-22 01:35:49 +02:00
Eugen Rochko
2721f43e23 New translations full_description.txt (French) 2022-04-22 01:35:48 +02:00
Eugen Rochko
622b76e27e New translations strings.xml (French) 2022-04-22 01:35:47 +02:00
Eugen Rochko
805b2120d6 New translations strings.xml (Croatian) 2022-04-22 00:39:41 +02:00
Eugen Rochko
161be10c4b New translations strings.xml (Croatian) 2022-04-21 23:39:09 +02:00
Eugen Rochko
95be6ece9d New translations strings.xml (Occitan) 2022-04-21 23:39:08 +02:00
Eugen Rochko
1e73ffdba8 New translations strings.xml (French) 2022-04-21 23:39:07 +02:00
Eugen Rochko
7b07fe0ead New translations short_description.txt (French) 2022-04-21 22:43:29 +02:00
Eugen Rochko
64c91c7df6 New translations full_description.txt (French) 2022-04-21 22:43:28 +02:00
Eugen Rochko
1a36440c9a New translations strings.xml (French) 2022-04-21 22:43:27 +02:00
Eugen Rochko
b3b9d848c9 New translations full_description.txt (Turkish) 2022-04-21 21:24:33 +02:00
Eugen Rochko
acb898ae1f New translations strings.xml (Turkish) 2022-04-21 21:24:32 +02:00
Eugen Rochko
2fd3240aca New translations full_description.txt (Galician) 2022-04-21 20:28:43 +02:00
Eugen Rochko
12945a9da2 New translations short_description.txt (Turkish) 2022-04-21 20:28:42 +02:00
Eugen Rochko
2e3fc22185 New translations full_description.txt (Turkish) 2022-04-21 20:28:41 +02:00
Eugen Rochko
9925c3ac75 New translations strings.xml (Turkish) 2022-04-21 20:28:40 +02:00
Eugen Rochko
30d767441f New translations full_description.txt (Galician) 2022-04-21 19:15:06 +02:00
Eugen Rochko
3df196181f New translations strings.xml (Basque) 2022-04-21 19:15:05 +02:00
Eugen Rochko
1ba447db33 New translations strings.xml (French) 2022-04-21 19:15:03 +02:00
Eugen Rochko
8b8fcfcd8c New translations strings.xml (French) 2022-04-21 18:18:39 +02:00
Eugen Rochko
6a1e7ef866 New translations strings.xml (Vietnamese) 2022-04-21 16:54:57 +02:00
Grishka
ed8128fb72 Bump version 2022-04-21 17:32:15 +03:00
Grishka
b71e57a07e Fix layout 2022-04-21 17:06:56 +03:00
Grishka
51405b2bae Merge remote-tracking branch 'origin/l10n_master'
# Conflicts:
#	mastodon/src/main/res/values-de-rDE/strings.xml
#	mastodon/src/main/res/values-tr-rTR/strings.xml
2022-04-21 17:03:15 +03:00
Grishka
3bb4f80dc6 Crash fix 2022-04-21 16:52:25 +03:00
Eugen Rochko
daac3c5b52 New translations short_description.txt (Vietnamese) 2022-04-21 15:25:12 +02:00
Eugen Rochko
47f449000a New translations full_description.txt (Vietnamese) 2022-04-21 15:25:11 +02:00
Eugen Rochko
65d1491df3 New translations strings.xml (Vietnamese) 2022-04-21 15:25:10 +02:00
Eugen Rochko
14b9d91645 New translations strings.xml (Vietnamese) 2022-04-21 14:11:39 +02:00
Eugen Rochko
9367eca556 New translations title.txt (Vietnamese) 2022-04-21 12:30:18 +02:00
Eugen Rochko
2dee95b688 New translations short_description.txt (Vietnamese) 2022-04-21 12:30:17 +02:00
Eugen Rochko
303c729a27 New translations full_description.txt (Vietnamese) 2022-04-21 12:30:16 +02:00
Eugen Rochko
657761f432 New translations strings.xml (Vietnamese) 2022-04-21 12:30:15 +02:00
Eugen Rochko
60ac581838 New translations strings.xml (Galician) 2022-04-21 12:30:14 +02:00
Eugen Rochko
55e704ca15 New translations strings.xml (Galician) 2022-04-21 11:24:25 +02:00
Eugen Rochko
57dcab65f1 New translations short_description.txt (Italian) 2022-04-21 10:22:19 +02:00
Eugen Rochko
753dec4445 New translations full_description.txt (Italian) 2022-04-21 10:22:18 +02:00
Eugen Rochko
d0e6646cca New translations strings.xml (Italian) 2022-04-21 10:22:16 +02:00
Eugen Rochko
59b5bbb60e New translations short_description.txt (Galician) 2022-04-21 09:00:43 +02:00
Eugen Rochko
3c19b5754b New translations full_description.txt (Galician) 2022-04-21 09:00:42 +02:00
Eugen Rochko
8cddeef1fe New translations strings.xml (Galician) 2022-04-21 09:00:41 +02:00
Eugen Rochko
53b3943f10 New translations strings.xml (Italian) 2022-04-21 09:00:39 +02:00
Eugen Rochko
f63c71dd8f New translations title.txt (Galician) 2022-04-21 07:51:59 +02:00
Eugen Rochko
2274ac642d New translations short_description.txt (Galician) 2022-04-21 07:51:58 +02:00
Eugen Rochko
e56cecd267 New translations full_description.txt (Galician) 2022-04-21 07:51:57 +02:00
Eugen Rochko
590f6ac797 New translations strings.xml (Galician) 2022-04-21 07:51:56 +02:00
Eugen Rochko
24f8a1014c New translations title.txt (Italian) 2022-04-21 07:51:55 +02:00
Eugen Rochko
a9f2f49876 New translations short_description.txt (Italian) 2022-04-21 07:51:54 +02:00
Eugen Rochko
4602b77d43 New translations full_description.txt (Italian) 2022-04-21 07:51:54 +02:00
Eugen Rochko
65b6022a1e New translations strings.xml (Italian) 2022-04-21 07:51:53 +02:00
Eugen Rochko
3fa77ad412 New translations strings.xml (German) 2022-04-21 07:51:50 +02:00
Eugen Rochko
6b0a17ef2c New translations strings.xml (Ukrainian) 2022-04-21 04:15:57 +02:00
Eugen Rochko
e5a72b9699 New translations title.txt (Ukrainian) 2022-04-21 03:15:13 +02:00
Eugen Rochko
50e32862be New translations short_description.txt (Ukrainian) 2022-04-21 03:15:12 +02:00
Eugen Rochko
d58d07fd01 New translations full_description.txt (Ukrainian) 2022-04-21 03:15:11 +02:00
Eugen Rochko
7fabb924b9 New translations strings.xml (Ukrainian) 2022-04-21 03:15:10 +02:00
Eugen Rochko
02d9f743c1 New translations title.txt (Croatian) 2022-04-21 01:06:06 +02:00
Eugen Rochko
8af8214d4c New translations short_description.txt (Croatian) 2022-04-21 01:06:05 +02:00
Eugen Rochko
70abeddcc6 New translations full_description.txt (Croatian) 2022-04-21 01:06:04 +02:00
Eugen Rochko
c023f46172 New translations strings.xml (Croatian) 2022-04-21 01:06:03 +02:00
Eugen Rochko
142c6be4eb New translations short_description.txt (Basque) 2022-04-21 01:06:02 +02:00
Eugen Rochko
da3cb055c6 New translations full_description.txt (Basque) 2022-04-21 01:06:01 +02:00
Eugen Rochko
1fa2fbd9ba New translations strings.xml (Basque) 2022-04-21 01:06:00 +02:00
Eugen Rochko
c79e85eda5 New translations strings.xml (French) 2022-04-21 01:05:59 +02:00
Eugen Rochko
ea2474e5f8 New translations short_description.txt (Polish) 2022-04-20 23:42:16 +02:00
Eugen Rochko
c0b2e3a9fc New translations full_description.txt (Polish) 2022-04-20 23:42:15 +02:00
Eugen Rochko
82c6d99bb5 New translations strings.xml (Bosnian) 2022-04-20 23:42:14 +02:00
Eugen Rochko
1412432d32 New translations strings.xml (Polish) 2022-04-20 23:42:13 +02:00
Eugen Rochko
8e314146f2 New translations short_description.txt (Bosnian) 2022-04-20 22:46:11 +02:00
Eugen Rochko
9695a5a4de New translations short_description.txt (German) 2022-04-20 22:46:10 +02:00
Eugen Rochko
31d4ab18e2 New translations full_description.txt (Bosnian) 2022-04-20 22:46:09 +02:00
Eugen Rochko
005c07875d New translations full_description.txt (German) 2022-04-20 22:46:08 +02:00
Eugen Rochko
eb167bd217 New translations strings.xml (Bosnian) 2022-04-20 22:46:07 +02:00
Eugen Rochko
fc86407eac New translations strings.xml (French) 2022-04-20 22:46:05 +02:00
Eugen Rochko
1ec97650b0 New translations full_description.txt (German) 2022-04-20 21:50:25 +02:00
Eugen Rochko
dffbdfccc2 New translations full_description.txt (Catalan) 2022-04-20 21:50:24 +02:00
Eugen Rochko
111b499b04 New translations full_description.txt (Spanish) 2022-04-20 21:50:23 +02:00
Eugen Rochko
b71bbddf35 New translations strings.xml (Bosnian) 2022-04-20 21:50:21 +02:00
Eugen Rochko
d4cb5f82e1 New translations strings.xml (Russian) 2022-04-20 21:50:19 +02:00
Eugen Rochko
ab66dcaafb New translations strings.xml (Catalan) 2022-04-20 21:50:17 +02:00
Eugen Rochko
5e7bf73851 New translations short_description.txt (Catalan) 2022-04-20 21:50:15 +02:00
Eugen Rochko
066b131d95 New translations short_description.txt (Spanish) 2022-04-20 21:50:09 +02:00
Eugen Rochko
1caa17305e New translations short_description.txt (Russian) 2022-04-20 21:50:08 +02:00
Eugen Rochko
04f5f89cca New translations strings.xml (French) 2022-04-20 21:50:03 +02:00
Grishka
1ee55a643e Crash fixes 2022-04-20 22:38:20 +03:00
Eugen Rochko
1fa726178f New translations title.txt (Occitan) 2022-04-20 20:39:47 +02:00
Eugen Rochko
32f240188c New translations short_description.txt (Chinese Simplified) 2022-04-20 20:39:46 +02:00
Eugen Rochko
a6af059671 New translations short_description.txt (Chinese Traditional) 2022-04-20 20:39:45 +02:00
Eugen Rochko
007881f358 New translations short_description.txt (Portuguese, Brazilian) 2022-04-20 20:39:44 +02:00
Eugen Rochko
485f2821f2 New translations short_description.txt (Bosnian) 2022-04-20 20:39:43 +02:00
Eugen Rochko
2dcc622def New translations short_description.txt (Occitan) 2022-04-20 20:39:41 +02:00
Eugen Rochko
1bbfe4507e New translations title.txt (French) 2022-04-20 20:39:41 +02:00
Eugen Rochko
6d43dfd255 New translations title.txt (Spanish) 2022-04-20 20:39:40 +02:00
Eugen Rochko
c4f3b9f54d New translations title.txt (Catalan) 2022-04-20 20:39:39 +02:00
Eugen Rochko
0064e4d6f4 New translations title.txt (German) 2022-04-20 20:39:38 +02:00
Eugen Rochko
fe1e6d0c46 New translations title.txt (Greek) 2022-04-20 20:39:37 +02:00
Eugen Rochko
40bb3777d4 New translations title.txt (Basque) 2022-04-20 20:39:36 +02:00
Eugen Rochko
162343bee8 New translations short_description.txt (Turkish) 2022-04-20 20:39:35 +02:00
Eugen Rochko
733c18f6e2 New translations title.txt (Hebrew) 2022-04-20 20:39:34 +02:00
Eugen Rochko
10663b0a6f New translations title.txt (Korean) 2022-04-20 20:39:33 +02:00
Eugen Rochko
e8dca89de6 New translations title.txt (Polish) 2022-04-20 20:39:32 +02:00
Eugen Rochko
2923cf452f New translations title.txt (Portuguese) 2022-04-20 20:39:31 +02:00
Eugen Rochko
56b388700a New translations title.txt (Russian) 2022-04-20 20:39:30 +02:00
Eugen Rochko
0ec9632606 New translations title.txt (Swedish) 2022-04-20 20:39:29 +02:00
Eugen Rochko
680e729541 New translations title.txt (Turkish) 2022-04-20 20:39:28 +02:00
Eugen Rochko
f8ba72c242 New translations title.txt (Chinese Simplified) 2022-04-20 20:39:27 +02:00
Eugen Rochko
fcfad690de New translations title.txt (Chinese Traditional) 2022-04-20 20:39:26 +02:00
Eugen Rochko
1734501144 New translations title.txt (Portuguese, Brazilian) 2022-04-20 20:39:25 +02:00
Eugen Rochko
0904b82f4d New translations title.txt (Bosnian) 2022-04-20 20:39:25 +02:00
Eugen Rochko
8058a1fa56 New translations title.txt (Japanese) 2022-04-20 20:39:23 +02:00
Eugen Rochko
1eafdc9ed1 New translations short_description.txt (Swedish) 2022-04-20 20:39:23 +02:00
Eugen Rochko
65077dc7cc New translations short_description.txt (Russian) 2022-04-20 20:39:22 +02:00
Eugen Rochko
2764de76a5 New translations full_description.txt (Greek) 2022-04-20 20:39:21 +02:00
Eugen Rochko
4545c7ae0b New translations full_description.txt (German) 2022-04-20 20:39:20 +02:00
Eugen Rochko
1d458168e9 New translations full_description.txt (Catalan) 2022-04-20 20:39:19 +02:00
Eugen Rochko
7c6fbe45fd New translations full_description.txt (Spanish) 2022-04-20 20:39:18 +02:00
Eugen Rochko
4b408612fc New translations full_description.txt (French) 2022-04-20 20:39:17 +02:00
Eugen Rochko
f017ab078f New translations strings.xml (Bosnian) 2022-04-20 20:39:16 +02:00
Eugen Rochko
6cb4292feb New translations full_description.txt (Basque) 2022-04-20 20:39:13 +02:00
Eugen Rochko
f509f1009f New translations strings.xml (Turkish) 2022-04-20 20:39:12 +02:00
Eugen Rochko
3d795a3474 New translations strings.xml (Russian) 2022-04-20 20:39:11 +02:00
Eugen Rochko
b4fce77971 New translations strings.xml (German) 2022-04-20 20:39:07 +02:00
Eugen Rochko
9f01164d18 New translations strings.xml (Catalan) 2022-04-20 20:39:06 +02:00
Eugen Rochko
85fd234f15 New translations strings.xml (Spanish) 2022-04-20 20:39:04 +02:00
Eugen Rochko
630e925c4c New translations full_description.txt (Hebrew) 2022-04-20 20:39:03 +02:00
Eugen Rochko
9063049d73 New translations full_description.txt (Korean) 2022-04-20 20:39:02 +02:00
Eugen Rochko
3d81084ef2 New translations short_description.txt (Portuguese) 2022-04-20 20:39:01 +02:00
Eugen Rochko
002efcf02f New translations short_description.txt (Polish) 2022-04-20 20:39:00 +02:00
Eugen Rochko
315955243a New translations short_description.txt (Korean) 2022-04-20 20:38:59 +02:00
Eugen Rochko
a191b38592 New translations short_description.txt (Japanese) 2022-04-20 20:38:58 +02:00
Eugen Rochko
1b1eeb76e1 New translations short_description.txt (Hebrew) 2022-04-20 20:38:57 +02:00
Eugen Rochko
c6740f8a7e New translations short_description.txt (Basque) 2022-04-20 20:38:56 +02:00
Eugen Rochko
4b475b3680 New translations short_description.txt (Greek) 2022-04-20 20:38:55 +02:00
Eugen Rochko
3027a18c69 New translations short_description.txt (German) 2022-04-20 20:38:54 +02:00
Eugen Rochko
862cf42827 New translations short_description.txt (Catalan) 2022-04-20 20:38:53 +02:00
Eugen Rochko
b795f2a3f5 New translations short_description.txt (Spanish) 2022-04-20 20:38:53 +02:00
Eugen Rochko
429c543fd3 New translations full_description.txt (Japanese) 2022-04-20 20:38:52 +02:00
Eugen Rochko
0eeeb7a4c8 New translations short_description.txt (French) 2022-04-20 20:38:51 +02:00
Eugen Rochko
09872ab1a9 New translations full_description.txt (Bosnian) 2022-04-20 20:38:50 +02:00
Eugen Rochko
9b02b8aa6a New translations full_description.txt (Portuguese, Brazilian) 2022-04-20 20:38:49 +02:00
Eugen Rochko
d1807b886b New translations full_description.txt (Chinese Traditional) 2022-04-20 20:38:48 +02:00
Eugen Rochko
b5b4c1a760 New translations full_description.txt (Chinese Simplified) 2022-04-20 20:38:47 +02:00
Eugen Rochko
e692caac0c New translations full_description.txt (Turkish) 2022-04-20 20:38:46 +02:00
Eugen Rochko
d93cdec7a5 New translations full_description.txt (Swedish) 2022-04-20 20:38:45 +02:00
Eugen Rochko
a487eeb235 New translations full_description.txt (Russian) 2022-04-20 20:38:44 +02:00
Eugen Rochko
4b0c13c64d New translations full_description.txt (Portuguese) 2022-04-20 20:38:43 +02:00
Eugen Rochko
1f65236c11 New translations full_description.txt (Polish) 2022-04-20 20:38:42 +02:00
Eugen Rochko
ca4a6f83fb New translations full_description.txt (Occitan) 2022-04-20 20:38:41 +02:00
Grishka
5eb5a42465 Update crowdin.yml (please work this time) 2022-04-20 21:26:11 +03:00
Eugen Rochko
17474d63f7 New translations strings.xml (Occitan) 2022-04-20 20:18:54 +02:00
Eugen Rochko
5c5e0feb75 New translations strings.xml (German) 2022-04-20 20:18:53 +02:00
Eugen Rochko
b76783dc75 New translations strings.xml (Japanese) 2022-04-20 20:18:52 +02:00
Eugen Rochko
2f4568f59e New translations strings.xml (Portuguese) 2022-04-20 20:18:51 +02:00
Eugen Rochko
4862ad8584 New translations strings.xml (Russian) 2022-04-20 20:18:50 +02:00
Eugen Rochko
5caeb951b7 New translations strings.xml (Swedish) 2022-04-20 20:18:49 +02:00
Eugen Rochko
6fae00811e New translations strings.xml (Turkish) 2022-04-20 20:18:48 +02:00
Eugen Rochko
6e132ab8fb New translations strings.xml (Portuguese, Brazilian) 2022-04-20 20:18:47 +02:00
Eugen Rochko
95b5020e06 New translations strings.xml (Spanish) 2022-04-20 20:18:46 +02:00
Eugen Rochko
a4cd77b1df New translations strings.xml (Catalan) 2022-04-20 20:18:45 +02:00
Eugen Rochko
345a051fdd New translations strings.xml (Basque) 2022-04-20 20:18:44 +02:00
Eugen Rochko
840eea1980 New translations strings.xml (Hebrew) 2022-04-20 20:18:43 +02:00
Eugen Rochko
abb6d4bcc4 New translations strings.xml (Korean) 2022-04-20 20:18:42 +02:00
Eugen Rochko
b4329442b9 New translations strings.xml (Polish) 2022-04-20 20:18:41 +02:00
Eugen Rochko
293f3766c6 New translations strings.xml (Chinese Simplified) 2022-04-20 20:18:39 +02:00
Eugen Rochko
f6bd184a90 New translations strings.xml (Chinese Traditional) 2022-04-20 20:18:38 +02:00
Eugen Rochko
d9e89e58a0 New translations strings.xml (Bosnian) 2022-04-20 20:18:37 +02:00
Eugen Rochko
38d9483f06 New translations strings.xml (Greek) 2022-04-20 20:18:36 +02:00
Eugen Rochko
525c8fa8d6 New translations strings.xml (French) 2022-04-20 20:18:35 +02:00
Grishka
c9f54fb6cf Fix string 2022-04-20 21:18:04 +03:00
Grishka
6d2b391ba6 Remove string 2022-04-20 19:40:17 +03:00
Gregory K
6785885ebb Merge pull request #61 from mastodon/chore-crowdin-fastlane
Add fastlane metadata to Crowdin configuration
2022-04-20 19:30:11 +03:00
Grishka
f399f33a41 Fix Turkish and German strings 2022-04-20 19:29:47 +03:00
Eugen Rochko
9017cb42da Add fastlane metadata to Crowdin configuration 2022-04-20 18:20:58 +02:00
Gregory K
c274864419 Merge pull request #17 from EmirLogas/master
Add Turkish language
2022-04-20 19:12:42 +03:00
Gregory K
5c06b75a4d Merge pull request #13 from koyuawsmbrtn/master
Add German translation
2022-04-20 19:12:30 +03:00
Eugen Rochko
37f10f4db9 New translations strings.xml (Portuguese, Brazilian) 2022-04-20 18:01:59 +02:00
Eugen Rochko
77c2e8d6ac New translations strings.xml (Turkish) 2022-04-20 18:01:57 +02:00
Eugen Rochko
54476fabdc New translations strings.xml (Swedish) 2022-04-20 18:01:57 +02:00
Eugen Rochko
43ae3aa090 New translations strings.xml (Russian) 2022-04-20 18:01:54 +02:00
Eugen Rochko
fb050c5c20 New translations strings.xml (Portuguese) 2022-04-20 18:01:53 +02:00
Eugen Rochko
90fd49dbf7 New translations strings.xml (Japanese) 2022-04-20 18:01:51 +02:00
Eugen Rochko
2331710263 New translations strings.xml (German) 2022-04-20 18:01:50 +02:00
Eugen Rochko
287ddc388d New translations strings.xml (Spanish) 2022-04-20 18:01:49 +02:00
Eugen Rochko
ac8cbcdf39 New translations strings.xml (French) 2022-04-20 18:01:48 +02:00
Grishka
a294ad43d3 Add crowdin.yml 2022-04-20 18:57:48 +03:00
Grishka
07fe859e35 Fix compose autocomplete for emojis 2022-04-20 18:37:04 +03:00
Grishka
ad825d6803 Fix #43 2022-04-20 15:43:25 +03:00
Grishka
94c864c8ac Photo viewer & video player UI 2022-04-20 15:23:52 +03:00
Grishka
2e1f08a096 Accessibility improvements, close #39 2022-04-19 17:03:32 +03:00
Grishka
9276214433 Improve instance sorting 2022-04-19 15:51:23 +03:00
Grishka
957f3a2afd I'm dumb again 2022-04-19 07:58:38 +03:00
Grishka
b57df8e175 Use pattern-matching instanceof 2022-04-19 07:32:33 +03:00
Grishka
94b6189f36 Fix #34 2022-04-19 07:07:03 +03:00
Grishka
f267f68245 Crash fix 2022-04-19 07:03:35 +03:00
Grishka
5fff86a0c2 Update readme 2022-04-18 12:54:05 +03:00
Grishka
c6ff84ce10 Update gradle plugin, remove build tools version, set source to 17 2022-04-18 12:14:55 +03:00
Grishka
34ebd35fc0 Make instance catalog work if joinmastodon.org is unavailable 2022-04-15 17:12:12 +03:00
Grishka
19d0af01fd Show invite-only instances for login 2022-04-15 15:23:52 +03:00
Grishka
3928eee1df Onboarding/signup improvements, also fixes #14 2022-04-15 08:19:59 +03:00
Grishka
3a9be88ce6 Fix #18 2022-04-15 06:20:39 +03:00
Grishka
ced762e420 Open local statuses from links
Closes #10
2022-04-15 04:04:53 +03:00
Grishka
25a3135de8 Fixes 2022-04-15 03:53:30 +03:00
Grishka
886ae789f4 Renew FCM token on app update (#12) 2022-04-15 03:50:40 +03:00
Grishka
4566edcc4e Keep screen on during video playback (#7) 2022-04-15 02:14:03 +03:00
Emir
782ccf2633 Add Turkish language
Add Turkish language
2022-04-15 02:03:18 +03:00
Grishka
91ed70f8ba Fix #16 2022-04-15 01:24:28 +03:00
koyu
3715a400c3 Add German translation 2022-04-14 17:48:51 +02:00
Gregory K
801dc9c842 Merge pull request #6 from kyori19/fix-notification
Fix notification crashes caused by unknown notification type
2022-04-14 03:47:44 +03:00
kyori19
7f62470b9e Fix notification crashes caused by unknown notification type 2022-04-14 09:39:32 +09:00
Grishka
beb11bfb70 Add fastlane metadata (closes #2) 2022-04-13 23:23:22 +03:00
216 changed files with 8159 additions and 389 deletions

View File

@@ -1,14 +1,20 @@
# Mastodon for Android
# Forked Mastodon for Android
[![Crowdin](https://badges.crowdin.net/mastodon-for-android/localized.svg)](https://crowdin.com/project/mastodon-for-android)
<a href="https://play.google.com/store/apps/details?id=org.joinmastodon.android"><img src="img/google-play-badge.png" height="50"></a>
This is the repository for the official Android app for Mastodon.
This is the repository for an officially forked Android app for Mastodon.
Learn more about this app in the [blog post](https://blog.joinmastodon.org/2022/02/official-mastodon-for-android-app-is-coming-soon/).
## Changes
* [Enable "Unlisted" as a visibility option](https://github.com/sk22/mastodon-android-fork/tree/feature/enable-unlisted)
([Pull request](https://github.com/mastodon/mastodon-android/pull/103)) and
[set as default](https://github.com/sk22/mastodon-android-fork/tree/feature/enable-unlisted-as-default)
* [Add "Federation" tab and change Discover tab order](https://github.com/sk22/mastodon-android-fork/tree/feature/add-federated-timeline)
## Building
As this app is using Java 15 features, you need JDK 15 or newer to build it. Other than that, everything is pretty standard. You can either import the project into Android Studio and build it from there, or run the following command in the project directory:
As this app is using Java 17 features, you need JDK 17 or newer to build it. Other than that, everything is pretty standard. You can either import the project into Android Studio and build it from there, or run the following command in the project directory:
```
./gradlew assembleRelease

View File

@@ -5,7 +5,7 @@ buildscript {
mavenCentral()
}
dependencies {
classpath "com.android.tools.build:gradle:7.0.4"
classpath "com.android.tools.build:gradle:7.1.3"
classpath "com.google.android.libraries.mapsplatform.secrets-gradle-plugin:secrets-gradle-plugin:2.0.1"
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files

5
crowdin.yml Normal file
View File

@@ -0,0 +1,5 @@
files:
- source: /mastodon/src/main/res/values/strings.xml
translation: /mastodon/src/main/res/values-%android_code%/strings.xml
- source: /fastlane/metadata/android/en-US/*.txt
translation: /fastlane/metadata/android/%locale%/%original_file_name%

View File

@@ -0,0 +1,16 @@
Mastodon je največa decentralizovana socijalna mreža na internetu. Umjesto jednog websajta, ovo je netvork od nekoliko miliona korisnika na zasebnim platformama / zajednicama koje komuniciraju medjusobno i prenose podatke. Bez obzira čime se bavite, uvijek možete naći osobe sa slićnim interesima na Mastodonu!
Učlani se i napravi svoj profil. Potraži i prati osobe koje te zanimaju i gledaj njihove objave bez reklama. Izrazi svoja osjećanja odadtno koristeći smajlije, slike, GIF-ove, videa ili audio snimke. Limit je 500 znakova. Komentiraj ili prenesi objave na svoj profil od bilo koga ako vam se dopada sadrzaj. Potraži nove osobe ili popularne haštagove da obogatiš svoj netvork.
Mastodon je gradjen sa ciljem za bolju sigurnost i privatnost. Odluči da li objavljuješ nešto javno, samo prijateljima, samo osobama koje spomeneš ili cijelom svijetu. Napomene o osjetljivom sadrzaju vas obavjestavaju i pitaju za odobrenje ako zelite da ih vidite. Svaka platforma / zajednica ima svoja zasebna pravila koristenja i moderatore koji cuvaju platformu sigurnom,. Uz to imate opcije za blokadu bilo koga ili bilo cega sto vam se ne svidja.
Vise opcija:
Tamna pozadina: Citajte objave u svijetloj, tamnoj ili crnoj varijanti
Ankete: Pitajte pratioce za njihova misljenja i ocijene glasanjem
Izvidi: Hastagovi i korisnici su vam samo jedan klik udaljeni
Obavijesti: Primajte obavijesti o novim pratiocima, komentarima ili re-objavama
Dijeljenje: Objavljujte na Mastodonu sa bilo koje kompatibilne aplikacije
Ljepota: Nasa maskota je slon i vidjet cete ga s vremena na vrijeme
Mastodon je registrovan kao neprofitabilan i dalje finansiranje razvijanja direkntno zavisi od donacija. Nema reklamnog sadrzaja, nema monetizacije. Sve je besplatno i tako treba i da ostane.

View File

@@ -0,0 +1 @@
Decentralizovana socijalna mreža

View File

@@ -0,0 +1 @@
Mastodon

View File

@@ -0,0 +1,16 @@
Mastodon és la xarxa social descentralitzada més gran d'Internet. En lloc d'un únic lloc web, és una xarxa de milions d'usuaris en comunitats independents que poden interactuar entre ells sense problemes. No importa quines siguin la teva afició, pots conèixer gent apassionada que publica sobre ella a Mastodon!
Uneix-te a una comunitat i crea el teu perfil. Troba i segueix gent fascinant i llegeix les seves publicacions en una línia de temps cronològica sense anuncis. Expressa't amb emojis, imatges, GIF, vídeos i àudio personalitzats en publicacions de 500 caràcters. Respon als fils i impulsa les publicacions de qualsevol persona per compartir coses fantàstiques. Troba nous comptes per seguir i etiquetes en tendència per ampliar la teva xarxa.
Mastodon està construït amb un enfocament en la privadesa i la seguretat. Decideix si les teves publicacions es comparteixen amb els teus seguidors, només amb les persones que esmentes o amb tot el món. Els advertiments de contingut et permeten amagar publicacions que continguin material sensible o amagar-les fins que estiguis llest per consultar-les. Cada comunitat té les seves pròpies directrius i moderadors per mantenir els seus membres segurs, i les eines de bloqueig i informació robustes ajuden a prevenir l'abús.
Més funcionalitats:
• Mode fosc: Llegir entrades en mode clar, fosc o veritablement negre
• Enquestes: Pregunta als teus seguidors la seva opinió i compta els vots
• Explora: Etiquetes en tendència i comptes són a un sol toc
• Notificacions: Rep notificacions sobre nous seguidors, respostes i impulsos
• Compartir: Publica directament a Mastodon des de qualsevol full compartit de qualsevol aplicació
• Tendresa: La nostra mascota és un elefant adorable i veuràs que apareix de tant en tant
Mastodon és una organització sense ànim de lucre registrada i el desenvolupament se sosté directament amb les teves donacions. No hi ha publicitat, cap monetització i cap capital de risc, i planegem mantenir-ho així.

View File

@@ -0,0 +1 @@
Xarxa social descentralitzada

View File

@@ -0,0 +1 @@
Mastodon

View File

@@ -0,0 +1,16 @@
Mastodon ist das größte dezentralisierte soziale Netzwerk im Internet. Statt einer einzigen Website ist es ein Netzwerk von Millionen von Benutzer*innen in unabhängigen Gemeinschaften, die alle miteinander interagieren können. Egal was dich interessiert, auf Mastodon kannst du interessierte Leute treffen, die darüber schreiben!
Trete einer Gemeinschaft bei und erstelle dein Profil. Finde und verfolge faszinierende Leute und lese ihre Beiträge in einer werbefreien, chronologischen Zeitachse. Drücke dich mit benutzerdefinierten Emojis, Bilderns, GIFs, Videos und Audio in 500-Zeichen Beiträgen aus. Antworte auf Threads und teile Beiträge von anderen um großartige Sachen zu verbreiten. Finde neue Accounts zum Folgen und angesagte Hashtags, um dein Netzwerk zu erweitern.
Mastodon wurde mit einem Schwerpunkt auf Privatsphäre und Sicherheit gebaut. Entscheide, ob du deine Beiträge mit deinen Followern, nur mit den Menschen, die du erwähnst, oder mit der ganzen Welt teilen möchtest. Mit Inhaltswarnungen kannst du Beiträge mit sensiblem oder triggerndem Inhalt ausblenden, bis du bereit bist, dich damit auseinanderzusetzen. Jede Gemeinschaft hat ihre eigenen Regeln und Moderator*innen, um die Sicherheit ihrer Mitglieder zu gewährleisten, sowie robuste Sperr- und Meldewerkzeuge um Missbrauch vorzubeugen.
Weitere Funktionen:
• Dunkler Modus: Beiträge im hellen, dunklen oder schwarzen Modus lesen
• Umfragen: Frage deine Follower nach ihrer Meinung und zähle die Stimmen
• Entdecken: Trending Hashtags und Accounts sind nur einen Fingertipp entfernt
• Benachrichtigungen: Erhalte Benachrichtigungen über neue Follower, Antworten und geteilte Beiträge
• Teilen: Veröffentliche auf Mastodon aus jeder beliebigen anderen App
• Niedlichkeit: Unser Maskottchen ist ein entzückender Elefant und du wirst ihn von Zeit zu Zeit auftauchen sehen
Mastodon ist eine eingetragene gemeinnützige Organisation und die Entwicklung wird direkt durch deine Spenden unterstützt. Es gibt keine Werbung, keine Monetisierung und kein Venture-Capital, und wir planen es so zu erhalten.

View File

@@ -0,0 +1 @@
Dezentrales soziales Netzwerk

View File

@@ -0,0 +1 @@
Mastodon

View File

@@ -0,0 +1,16 @@
Mastodon is the largest decentralized social network on the internet. Instead of a single website, its a network of millions of users in independent communities that can all interact with one another, seamlessly. No matter what youre into, you can meet passionate people posting about it on Mastodon!
Join a community and create your profile. Find and and follow fascinating folks and read their posts in an ad-free, chronological timeline. Express yourself with custom emoji, images, GIFs, videos, and audio in 500-character posts. Reply to threads and reblog posts from anyone to share great stuff. Find new accounts to follow and trending hashtags to expand your network.
Mastodon is built with a focus on privacy and safety. Decide whether your posts are shared with your followers, just the people you mention, or the whole world. Content warnings let you hide posts containing sensitive or triggering material until you're ready to engage with them. Each community has its own guidelines and moderators to keep its members safe, and robust blocking and reporting tools help prevent abuse.
More features:
• Dark Mode: Read posts in light, dark, or true black mode
• Polls: Ask followers for their opinion and tally the votes
• Explore: Trending hashtags and accounts are a tap away
• Notifications: Get notified about new follows, replies, and reblogs
• Sharing: Post directly to Mastodon from any share sheet in any app
• Cuteness: Our mascot is an adorable elephant, and you'll see them pop up from time to time
Mastodon is a registered nonprofit and development is supported directly by your donations. Theres no advertising, no monetization, and no venture capital, and we plan to keep it that way.

View File

@@ -0,0 +1 @@
Decentralized social network

View File

@@ -0,0 +1 @@
Mastodon

View File

@@ -0,0 +1,16 @@
Mastodon is the largest decentralized social network on the internet. Instead of a single website, its a network of millions of users in independent communities that can all interact with one another, seamlessly. No matter what youre into, you can meet passionate people posting about it on Mastodon!
Join a community and create your profile. Find and and follow fascinating folks and read their posts in an ad-free, chronological timeline. Express yourself with custom emoji, images, GIFs, videos, and audio in 500-character posts. Reply to threads and reblog posts from anyone to share great stuff. Find new accounts to follow and trending hashtags to expand your network.
Mastodon is built with a focus on privacy and safety. Decide whether your posts are shared with your followers, just the people you mention, or the whole world. Content warnings let you hide posts containing sensitive or triggering material until you're ready to engage with them. Each community has its own guidelines and moderators to keep its members safe, and robust blocking and reporting tools help prevent abuse.
More features:
• Dark Mode: Read posts in light, dark, or true black mode
• Polls: Ask followers for their opinion and tally the votes
• Explore: Trending hashtags and accounts are a tap away
• Notifications: Get notified about new follows, replies, and reblogs
• Sharing: Post directly to Mastodon from any share sheet in any app
• Cuteness: Our mascot is an adorable elephant, and you'll see them pop up from time to time
Mastodon is a registered nonprofit and development is supported directly by your donations. Theres no advertising, no monetization, and no venture capital, and we plan to keep it that way.

Binary file not shown.

After

Width:  |  Height:  |  Size: 377 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 213 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 844 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 776 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 790 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

View File

@@ -0,0 +1 @@
Decentralized social network

View File

@@ -0,0 +1 @@
Mastodon

View File

@@ -0,0 +1,16 @@
Mastodon es la red social descentralizada más grande de internet. En lugar de ser una sola web, es una red de millones de usuarios en comunidades independientes que pueden interactuar entre ellas de forma transparente. No importa qué es lo que hagas, podrás encontrar gente apasionada escribiendo sobre ello en Mastodon!
Únete a una comunidad y crea tu perfil. Encuentra y sigue a gente fascinante y lee sus publicaciones sin anuncios y de forma cronológica. Exprésate con emoticonos personalizados, imágenes, GIFs, vídeos y audio en publicaciónes de 500 caracteres. Responde a hilos e impulsa publicaciones de cualquiera para compartir contenido genial. Encuentra nuevas cuentas para seguir y los hashtags de actualidad para expandir tu red.
Mastodon está construída con un enfoque en la privacidad y la seguridad. Decide si tus publicaciones se comparten con tus seguidores, solo a la gente que menciones, o a todo el mundo. Las advertencias de contenido te permiten esconder publicaciones con contenido sensible o limitarlas de tu visión hasta que estés listo para interactuar con ellas. Cada comunidad tiene sus propias reglas y moderadores para mantener a salvo a sus miembros, además de herramientas robustas para bloquear y reportar contenido para prevenir el abuso.
Más características:
• Modo oscuro: Lee las publicaciones en modo claro, oscuro o negro real
• Encuestas: Pide opinión a tus seguidores y cuenta los votos
• Explora: Hashtags y cuentas en tendencia a un solo toque
• Notificaciones: Recibe notificaciones sobre nuevos seguidores, respuestas e impulsos
• Compartir: Publica directamente a Mastodon desde cualquier hoja de acción en cualquier aplicación
• Preciosidad: Nuestra mascota es un elefante adorable, y verás que aparece de vez en cuando
Mastodon es una organización sin ánimo de lucro registrada y su desarrollo se financia directamente con tus donaciones. No hay publicidad, ni monetización, ni capital de riesgo, y tenemos previsto mantenerlo así.

View File

@@ -0,0 +1 @@
Red social descentralizada

View File

@@ -0,0 +1 @@
Mastodon

View File

@@ -0,0 +1,16 @@
Mastodon Interneteko sare sozial deszentralizatu handiena da. Webgune bakar bat izan ordez, beren artean elkarreragin dezaketen komunitate independenteetako milioika erabiltzailek osatutako sarea da. Zure interesak direnak direla ere, jende interesgarria aurkituko duzu Mastodonen!
Batu komunitate batera eta sortu zure profila. Bilatu eta jarraitu jende zoragarria eta irakurri beren bidalketak, publizitaterik gabeko denbora-lerro kronologikoan. Adierazi nahi duzuna 500 karaktereko bidalketetan emoji pertsonalizatuak, irudiak, GIFak, bideoak eta audioak erabiliz. Erantzun edozeinen hariak eta eman bultzada bidalketei edukiak partekatzeko. Bilatu jarraitzeko kontu berriak eta traolen joerak zure sarea zabaltzeko.
Mastodon pribatutasunean eta segurtasunean arreta jarriz eraikia dago. Erabaki zure bidalketak norekin partekatu: zure jarraitzaileekin, aipatzen dituzunekin edo mundu osoarekin. Edukiaren abisuek aukera ematen dute eduki sentibera edo zuregan eragina izan dezaketen bidalketak zuk erabaki arte ezkutatzeko. Komunitate bakoitzak bere gidalerro eta moderatzaileak ditu, bertako kideak seguru mantentzeko. Baita blokeatzeko eta salatzeko tresna sendoak ere abusuak galarazteko.
Ezaugarri gehiago:
• Modu iluna: Irakurri bidalketak modu argi, ilun edo benetako beltzean
• Inkestak: Galdetu jarraitzaileei beren iritzia eta zenbatu botoak
• Esploratu: Traolen joerak eta kontuak erraz aurkitu
• Jakinarazpenak: Jarraitzaile berrien, erantzunen edo bultzaden berri jaso
• Partekatzea: Argitaratu zuzenean Mastodonen edozein aplikaziotako partekatze-orritik
• Edertasuna: Gure maskota elefante maitagarri bat da eta tarteka agertuko zaizu
Mastodon erregistratutako irabazi asmorik gabeko elkartea da eta zure dohaintzen bidez babesten da garapena. Ez dago iragarkirik, irabazi asmorik eta inbertsio kapitalik, eta horrela jarraitzeko asmoa dugu.

View File

@@ -0,0 +1 @@
Sare sozial deszentralizatua

View File

@@ -0,0 +1 @@
Mastodon

View File

@@ -0,0 +1,16 @@
Mastodon est le plus grand réseau social décentralisé sur Internet. Au lieu dun site Web unique, cest un réseau de millions dutilisateurs dans des communautés indépendantes qui peuvent tous interagir les uns avec les autres, de manière transparente. Peu importe ce que vous êtes, vous pouvez rencontrer des gens passionnés qui publient à ce sujet sur Mastodon !
Rejoignez une communauté et créez votre profil. Trouvez et suivez des gens fascinants et lisez leurs messages dans une chronologie chronologique sans publicité. Exprimez-vous avec des émojis personnalisés, des images, des GIFs, des vidéos et de laudio dans des messages de 500 caractères. Répondez aux sujets de discussions et aux reblogues de nimporte qui pour partager des choses géniales. Trouvez de nouveaux comptes à suivre et des hashtags tendance pour étendre votre réseau.
Mastodon est construit en mettant laccent sur la vie privée et la sécurité. Décidez si vos messages sont partagés avec vos abonnés, les personnes que vous mentionnez, ou le monde entier. Les avertissements de contenu vous permettent de masquer les messages au contenu sensible jusquà ce que vous soyez prêt à vous engager avec eux. Chaque communauté a ses propres directives et modérateurs pour assurer la sécurité de ses membres, et de solides outils de blocage et de signalement aident à prévenir les abus.
Plus de fonctionnalités :
• Mode Sombre : Lisez les messages en mode clair, sombre ou vrai noir
• Sondages : Demandez lopinion à vos abonnés et comptez les votes
• Explorer : Les hashtags et les comptes tendance sont à portée de main
• Notifications : Soyez informé des nouveaux abonnements, réponses et reblogs
• Partage : Publiez directement sur Mastodon à partir de nimporte quelle feuille de partage dans nimporte quelle application
• Cuteness : Notre mascotte est un adorable éléphant, et vous la verrez apparaître de temps en temps
Mastodon est un organisme sans but lucratif enregistré et le développement est soutenu directement par vos dons. Il ny a pas de publicité, pas de monétisation, pas de capital-risque, et nous prévoyons de continuer ainsi.

View File

@@ -0,0 +1 @@
Réseau social décentralisé

View File

@@ -0,0 +1 @@
Mastodon

View File

@@ -0,0 +1,16 @@
Mastodon é a rede social descentralizada máis grande de internet. Non é unha soa web, é unha rede de millóns de persoas en comunidades independentes que poden interactuar entre elas, sen problema. Sexan cales fosen os teus intereses, podes atopar persoas comentando ese tema en Mastodon!
Únete a unha comunidade e crea un perfil. Atopa e segue a persoas interesantes e le o que publican, nunha cronoloxía limpa de publicidade e ordenada. Exprésate usando emojis personalizados, imaxes, GIFs, vídeos e audio con publicacións de 500 caracteres. Responde aos fíos e promove publicacións doutras persoas que creas relevantes. Atopa novas contas e segue os cancelos en voga para facer medrar a túa rede.
Mastodon está creado pensando na privacidade e seguridade. Decide con quen compartes as túas publicacións, só coas seguidoras ou persoas que mencionas, ou con todo o mundo. Os avisos sobre o contido permiten agochar contido sensible ou material que podería crear ansiedade ata que estás preparada para velo. Cada comunidade ten as súas normas e a moderación coida da seguridade das persoas da instancia, con ferramentas para denunciar e bloquear e así evitar abusos.
Máis características:
• Modo Escuro: ler publicacións en modo claro, escuro ou negro verdadeiro
• Enquisas: pregúntalle ás seguidoras a súa opinión e recolle os votos
• Explorar: Cancelos e contas en voga facilmente accesibles
• Notificacións: recibe notificacións sobre seguimentos, respostas e promocións
• Compartir: publica directamente en Mastodon desde o menú de calquera app
• Fermosura: a nosa mascota é un elefante moi feitiño, que verás a miúdo por aquí
Mastodon é unha organización rexistrada sen ánimo de lucro cuxo desenvolvemento está financiado por doazóns. Non hai publicidade, nen monetización, sen inversións de capital risco, e pretendemos seguir así.

View File

@@ -0,0 +1 @@
Rede social descentralizada

View File

@@ -0,0 +1 @@
Mastodon

View File

@@ -0,0 +1,16 @@
Mastodon is the largest decentralized social network on the internet. Instead of a single website, its a network of millions of users in independent communities that can all interact with one another, seamlessly. No matter what youre into, you can meet passionate people posting about it on Mastodon!
Join a community and create your profile. Find and and follow fascinating folks and read their posts in an ad-free, chronological timeline. Express yourself with custom emoji, images, GIFs, videos, and audio in 500-character posts. Reply to threads and reblog posts from anyone to share great stuff. Find new accounts to follow and trending hashtags to expand your network.
Mastodon is built with a focus on privacy and safety. Decide whether your posts are shared with your followers, just the people you mention, or the whole world. Content warnings let you hide posts containing sensitive or triggering material until you're ready to engage with them. Each community has its own guidelines and moderators to keep its members safe, and robust blocking and reporting tools help prevent abuse.
More features:
• Dark Mode: Read posts in light, dark, or true black mode
• Polls: Ask followers for their opinion and tally the votes
• Explore: Trending hashtags and accounts are a tap away
• Notifications: Get notified about new follows, replies, and reblogs
• Sharing: Post directly to Mastodon from any share sheet in any app
• Cuteness: Our mascot is an adorable elephant, and you'll see them pop up from time to time
Mastodon is a registered nonprofit and development is supported directly by your donations. Theres no advertising, no monetization, and no venture capital, and we plan to keep it that way.

View File

@@ -0,0 +1 @@
Decentralized social network

View File

@@ -0,0 +1 @@
Mastodon

View File

@@ -0,0 +1,16 @@
Mastodon je najveća decentralizirana društvena mreža na internetu. Umjesto jedne web stranice, to je mreža milijuna korisnika u neovisnim zajednicama koje sve mogu međusobno komunicirati. Bez obzira na to što te zanima, možeš upoznati strastvene ljude koji o tome objavljuju na Mastodonu!
Pridruži se zajednici i kreiraj svoj profil. Pronađi i prati fascinantne ljude i čitaj njihove postove u kronološkoj vremenskoj liniji bez oglasa. Izrazi se prilagođenim emojijima, slikama, GIF-ovima, videozapisima i zvukom u objavama od 500 znakova. Odgovori na teme i reblogaj postove od bilo koga da podijeliš sjajne stvari. Pronađi nove račune koje ćeš pratiti i popularne hashtagove kako bi proširio/la svoju mrežu.
Mastodon je izgrađen s fokusom na privatnost i sigurnost. Odluči hoće li se tvoje objave dijeliti s tvojim sljedbenicima, samo s osobama koje spominjete ili s cijelim svijetom. Upozorenja o sadržaju omogućuju ti da sakriješ postove koji sadrže osjetljivi ili izazovni materijal dok ne budeš spreman za interakciju s njima. Svaka zajednica ima vlastite smjernice i moderatore kako bi zaštitili svoje članove, a robusni alati za blokiranje i prijavljivanje pomažu u sprječavanju zlouporabe.
Više značajki:
• Tamni način rada: čitaj postove u svijetlom, tamnom ili stvarno crnom načinu
• Ankete: Pitaj sljedbenike za mišljenje i zbroji glasove
• Istraži: popularni hashtagovi i računi udaljeni su samo jedan dodir
• Obavijesti: primaj obavijesti o novim pratiteljima, odgovorima i reblogovima
• Dijeljenje: objavi izravno na Mastodonu s bilo kojeg lista za dijeljenje u bilo kojoj aplikaciji
• Slatkoća: Naša maskota je ljupki slon i vidjet ćeš ih kako iskaču s vremena na vrijeme
Mastodon je registrirana neprofitna organizacija i razvoj je podržan izravno vašim donacijama. Nema oglašavanja, nema monetizacije i rizičnog kapitala, a planiramo takvi i ostati.

View File

@@ -0,0 +1 @@
Decentralizirana društvena mreža

View File

@@ -0,0 +1 @@
Mastodon

View File

@@ -0,0 +1,16 @@
Mastodon è il più grande social network decentralizzato su Internet. Invece di un singolo sito web, è una rete di milioni di utenti in comunità indipendenti che possono interagire tra loro, senza soluzione di continuità. Non importa cosa ti piaccia, puoi incontrare persone appassionate pubblicando a riguardo su Mastodon!
Unisciti a una comunità e crea il tuo profilo. Trova e segui persone affascinanti e leggi i loro messaggi in una timeline cronologica senza pubblicità. Esprimiti con emoji personalizzate, immagini, GIF, filmati e audio in 500 caratteri. Rispondi a thread e post condivisi da chiunque per condividere grandi cose. Trova nuovi account da seguire e hashtags in tendenza per espandere la tua rete.
Mastodon è costruito con attenzione sulla privacy e sulla sicurezza. Decidi se i tuoi post saranno visibili solo ai tuoi seguaci, alle persone che menzioni o al mondo intero. Gli avvertimenti sul contenuto ti permettono di nascondere i post contenenti materiale sensibile o provocatorio fino a quando non sarai pronto a interagire con loro. Ogni comunità ha le proprie linee guida e moderatori per mantenere i propri membri sicuri. Robusti strumenti di blocco e segnalazione aiutano a prevenire gli abusi.
Altre caratteristiche:
• Modalità Scura: Leggi i post in modo chiaro, scuro o in nero
• Sondaggi: Chiedi ai seguaci il loro parere e conteggia i voti
• Esplora: hashtags di tendenza e account sono a portata di tocco
• Notifiche: Ricevi una notifica su nuovi seguaci, risposte e condivisioni
• Condivisione: Pubblica direttamente su Mastodon da qualsiasi foglio di condivisione in qualsiasi app
• Bellezza: La nostra mascotte è un elefante adorabile, e lo vedrete apparire di tanto in tanto
Mastodon è una no-profit registrata e lo sviluppo è supportato direttamente dalle vostre donazioni. Non c'è pubblicità, monetizzazione e capitale di rischio, e abbiamo intenzione di mantenerlo in quel modo.

View File

@@ -0,0 +1 @@
Social network decentralizzato

View File

@@ -0,0 +1 @@
Mastodon

View File

@@ -0,0 +1,16 @@
Mastodon is the largest decentralized social network on the internet. Instead of a single website, its a network of millions of users in independent communities that can all interact with one another, seamlessly. No matter what youre into, you can meet passionate people posting about it on Mastodon!
Join a community and create your profile. Find and and follow fascinating folks and read their posts in an ad-free, chronological timeline. Express yourself with custom emoji, images, GIFs, videos, and audio in 500-character posts. Reply to threads and reblog posts from anyone to share great stuff. Find new accounts to follow and trending hashtags to expand your network.
Mastodon is built with a focus on privacy and safety. Decide whether your posts are shared with your followers, just the people you mention, or the whole world. Content warnings let you hide posts containing sensitive or triggering material until you're ready to engage with them. Each community has its own guidelines and moderators to keep its members safe, and robust blocking and reporting tools help prevent abuse.
More features:
• Dark Mode: Read posts in light, dark, or true black mode
• Polls: Ask followers for their opinion and tally the votes
• Explore: Trending hashtags and accounts are a tap away
• Notifications: Get notified about new follows, replies, and reblogs
• Sharing: Post directly to Mastodon from any share sheet in any app
• Cuteness: Our mascot is an adorable elephant, and you'll see them pop up from time to time
Mastodon is a registered nonprofit and development is supported directly by your donations. Theres no advertising, no monetization, and no venture capital, and we plan to keep it that way.

View File

@@ -0,0 +1 @@
Decentralized social network

View File

@@ -0,0 +1 @@
Mastodon

View File

@@ -0,0 +1,16 @@
Mastodon is the largest decentralized social network on the internet. Instead of a single website, its a network of millions of users in independent communities that can all interact with one another, seamlessly. No matter what youre into, you can meet passionate people posting about it on Mastodon!
Join a community and create your profile. Find and and follow fascinating folks and read their posts in an ad-free, chronological timeline. Express yourself with custom emoji, images, GIFs, videos, and audio in 500-character posts. Reply to threads and reblog posts from anyone to share great stuff. Find new accounts to follow and trending hashtags to expand your network.
Mastodon is built with a focus on privacy and safety. Decide whether your posts are shared with your followers, just the people you mention, or the whole world. Content warnings let you hide posts containing sensitive or triggering material until you're ready to engage with them. Each community has its own guidelines and moderators to keep its members safe, and robust blocking and reporting tools help prevent abuse.
More features:
• Dark Mode: Read posts in light, dark, or true black mode
• Polls: Ask followers for their opinion and tally the votes
• Explore: Trending hashtags and accounts are a tap away
• Notifications: Get notified about new follows, replies, and reblogs
• Sharing: Post directly to Mastodon from any share sheet in any app
• Cuteness: Our mascot is an adorable elephant, and you'll see them pop up from time to time
Mastodon is a registered nonprofit and development is supported directly by your donations. Theres no advertising, no monetization, and no venture capital, and we plan to keep it that way.

View File

@@ -0,0 +1 @@
Decentralized social network

View File

@@ -0,0 +1 @@
Mastodon

View File

@@ -0,0 +1,16 @@
Mastodon is the largest decentralized social network on the internet. Instead of a single website, its a network of millions of users in independent communities that can all interact with one another, seamlessly. No matter what youre into, you can meet passionate people posting about it on Mastodon!
Join a community and create your profile. Find and and follow fascinating folks and read their posts in an ad-free, chronological timeline. Express yourself with custom emoji, images, GIFs, videos, and audio in 500-character posts. Reply to threads and reblog posts from anyone to share great stuff. Find new accounts to follow and trending hashtags to expand your network.
Mastodon is built with a focus on privacy and safety. Decide whether your posts are shared with your followers, just the people you mention, or the whole world. Content warnings let you hide posts containing sensitive or triggering material until you're ready to engage with them. Each community has its own guidelines and moderators to keep its members safe, and robust blocking and reporting tools help prevent abuse.
More features:
• Dark Mode: Read posts in light, dark, or true black mode
• Polls: Ask followers for their opinion and tally the votes
• Explore: Trending hashtags and accounts are a tap away
• Notifications: Get notified about new follows, replies, and reblogs
• Sharing: Post directly to Mastodon from any share sheet in any app
• Cuteness: Our mascot is an adorable elephant, and you'll see them pop up from time to time
Mastodon is a registered nonprofit and development is supported directly by your donations. Theres no advertising, no monetization, and no venture capital, and we plan to keep it that way.

View File

@@ -0,0 +1 @@
Decentralized social network

View File

@@ -0,0 +1 @@
Mastodon

View File

@@ -0,0 +1,16 @@
Mastodon to największa zdecentralizowana sieć społecznościowa w Internecie. Zamiast jednej strony internetowej, jest to sieć milionów użytkowników w niezależnych społecznościach, które mogą ze sobą wchodzić w interakcje. Niezależnie od swoich zainteresowań, momżesz poznać interesujących ludzi piszących o nich na Mastodonie!
Dołącz do społeczności i utwórz swój profil. Poznaj i obserwuj fascynujących ludzi i czytaj ich wpisy w chronologicznym osi czasu. Wyrażaj siebie za pomocą niestandardowych emoji, obrazów, GIFów, filmów i audio w 500-znakowych wpisach. Odpowiadaj na wątki i podawaj dalej posty od każdego, aby dzielić się wspaniałymi rzeczami. Find new accounts to follow and trending hashtags to expand your network.
Mastodon został zaprojektowany z myślą o prywatności i bezpieczeństwie. Decide whether your posts are shared with your followers, just the people you mention, or the whole world. Ostrzeżenia dotyczące zawartości pozwalają ukrywać posty zawierające wrażliwe lub wyzywające materiały, dopóki nie będziesz gotów się z nimi pogodzić. Each community has its own guidelines and moderators to keep its members safe, and robust blocking and reporting tools help prevent abuse.
Więcej funkcji:
• Tryb ciemny: Czytaj wpisy w jasnym, ciemnym lub czarnym trybie
• Ankiety: Poproś obserwujących o ich opinię i poznaj ich głosy
• Explore: Trending hashtags and accounts are a tap away
• Powiadomienia: Otrzymuj powiadomienia o nowych obserwacjach, odpowiedziach i udostępnieniach
• Sharing: Post directly to Mastodon from any share sheet in any app
• Cuteness: Our mascot is an adorable elephant, and you'll see them pop up from time to time
Mastodon is a registered nonprofit and development is supported directly by your donations. Theres no advertising, no monetization, and no venture capital, and we plan to keep it that way.

View File

@@ -0,0 +1 @@
Zdecentralizowana sieć społecznościowa

View File

@@ -0,0 +1 @@
Mastodon

View File

@@ -0,0 +1,16 @@
Mastodon is the largest decentralized social network on the internet. Instead of a single website, its a network of millions of users in independent communities that can all interact with one another, seamlessly. No matter what youre into, you can meet passionate people posting about it on Mastodon!
Join a community and create your profile. Find and and follow fascinating folks and read their posts in an ad-free, chronological timeline. Express yourself with custom emoji, images, GIFs, videos, and audio in 500-character posts. Reply to threads and reblog posts from anyone to share great stuff. Find new accounts to follow and trending hashtags to expand your network.
Mastodon is built with a focus on privacy and safety. Decide whether your posts are shared with your followers, just the people you mention, or the whole world. Content warnings let you hide posts containing sensitive or triggering material until you're ready to engage with them. Each community has its own guidelines and moderators to keep its members safe, and robust blocking and reporting tools help prevent abuse.
More features:
• Dark Mode: Read posts in light, dark, or true black mode
• Polls: Ask followers for their opinion and tally the votes
• Explore: Trending hashtags and accounts are a tap away
• Notifications: Get notified about new follows, replies, and reblogs
• Sharing: Post directly to Mastodon from any share sheet in any app
• Cuteness: Our mascot is an adorable elephant, and you'll see them pop up from time to time
Mastodon is a registered nonprofit and development is supported directly by your donations. Theres no advertising, no monetization, and no venture capital, and we plan to keep it that way.

View File

@@ -0,0 +1 @@
Decentralized social network

View File

@@ -0,0 +1 @@
Mastodon

View File

@@ -0,0 +1,16 @@
Mastodon is the largest decentralized social network on the internet. Instead of a single website, its a network of millions of users in independent communities that can all interact with one another, seamlessly. No matter what youre into, you can meet passionate people posting about it on Mastodon!
Join a community and create your profile. Find and and follow fascinating folks and read their posts in an ad-free, chronological timeline. Express yourself with custom emoji, images, GIFs, videos, and audio in 500-character posts. Reply to threads and reblog posts from anyone to share great stuff. Find new accounts to follow and trending hashtags to expand your network.
Mastodon is built with a focus on privacy and safety. Decide whether your posts are shared with your followers, just the people you mention, or the whole world. Content warnings let you hide posts containing sensitive or triggering material until you're ready to engage with them. Each community has its own guidelines and moderators to keep its members safe, and robust blocking and reporting tools help prevent abuse.
More features:
• Dark Mode: Read posts in light, dark, or true black mode
• Polls: Ask followers for their opinion and tally the votes
• Explore: Trending hashtags and accounts are a tap away
• Notifications: Get notified about new follows, replies, and reblogs
• Sharing: Post directly to Mastodon from any share sheet in any app
• Cuteness: Our mascot is an adorable elephant, and you'll see them pop up from time to time
Mastodon is a registered nonprofit and development is supported directly by your donations. Theres no advertising, no monetization, and no venture capital, and we plan to keep it that way.

View File

@@ -0,0 +1 @@
Decentralized social network

View File

@@ -0,0 +1 @@
Mastodon

View File

@@ -0,0 +1,16 @@
Mastodon is the largest decentralized social network on the internet. Instead of a single website, its a network of millions of users in independent communities that can all interact with one another, seamlessly. No matter what youre into, you can meet passionate people posting about it on Mastodon!
Join a community and create your profile. Find and and follow fascinating folks and read their posts in an ad-free, chronological timeline. Express yourself with custom emoji, images, GIFs, videos, and audio in 500-character posts. Reply to threads and reblog posts from anyone to share great stuff. Find new accounts to follow and trending hashtags to expand your network.
Mastodon is built with a focus on privacy and safety. Decide whether your posts are shared with your followers, just the people you mention, or the whole world. Content warnings let you hide posts containing sensitive or triggering material until you're ready to engage with them. Each community has its own guidelines and moderators to keep its members safe, and robust blocking and reporting tools help prevent abuse.
More features:
• Dark Mode: Read posts in light, dark, or true black mode
• Polls: Ask followers for their opinion and tally the votes
• Explore: Trending hashtags and accounts are a tap away
• Notifications: Get notified about new follows, replies, and reblogs
• Sharing: Post directly to Mastodon from any share sheet in any app
• Cuteness: Our mascot is an adorable elephant, and you'll see them pop up from time to time
Mastodon is a registered nonprofit and development is supported directly by your donations. Theres no advertising, no monetization, and no venture capital, and we plan to keep it that way.

View File

@@ -0,0 +1 @@
Распределённая социальная сеть

View File

@@ -0,0 +1 @@
Mastodon

View File

@@ -0,0 +1,16 @@
Mastodon is the largest decentralized social network on the internet. Instead of a single website, its a network of millions of users in independent communities that can all interact with one another, seamlessly. No matter what youre into, you can meet passionate people posting about it on Mastodon!
Join a community and create your profile. Find and and follow fascinating folks and read their posts in an ad-free, chronological timeline. Express yourself with custom emoji, images, GIFs, videos, and audio in 500-character posts. Reply to threads and reblog posts from anyone to share great stuff. Find new accounts to follow and trending hashtags to expand your network.
Mastodon is built with a focus on privacy and safety. Decide whether your posts are shared with your followers, just the people you mention, or the whole world. Content warnings let you hide posts containing sensitive or triggering material until you're ready to engage with them. Each community has its own guidelines and moderators to keep its members safe, and robust blocking and reporting tools help prevent abuse.
More features:
• Dark Mode: Read posts in light, dark, or true black mode
• Polls: Ask followers for their opinion and tally the votes
• Explore: Trending hashtags and accounts are a tap away
• Notifications: Get notified about new follows, replies, and reblogs
• Sharing: Post directly to Mastodon from any share sheet in any app
• Cuteness: Our mascot is an adorable elephant, and you'll see them pop up from time to time
Mastodon is a registered nonprofit and development is supported directly by your donations. Theres no advertising, no monetization, and no venture capital, and we plan to keep it that way.

View File

@@ -0,0 +1 @@
Decentralized social network

View File

@@ -0,0 +1 @@
Mastodon

View File

@@ -0,0 +1,16 @@
Mastodon, internetteki merkezi olmayan en büyük sosyal ağdır. Tek bir web siteye bağlı kalmaksızın, milyonlarca kullanıcının bağımsız olarak birbiri ile kolayca etkileşebileceği bir ağdır. Hangi konuyla ilgili olduğun önemli değil, Mastodon'da onunla ilgili gönderi paylaşan tutkulu insanlarla tanışabilirsin!
Bir topluluğa katıl ve profilini oluştur. Olağanüstü kişileri bul ve takip et, gönderilerini kronolojik ve reklamsız sunan bir akışta oku. Gönderilerinde 500 karakter sınırlamasıyla kendini emojiler, görseller, GIFler, videolar ve sesler ile ifade et. Harika içerikler paylaşmak için başlıklara yanıt yaz, insanların gönderilerini yeniden paylaş. Ağınızı genişletmek için takip edilecek yeni hesaplar ve hashtagler bul.
Mastodon gizlilik ve güvenlik odaklı yapılmıştır. Her postunuz için takipçilerinizle mi, bahsettiğiniz kişilerle mi ya da tüm dünyayla mı paylaşılacağına karar verin. Gönderi uyarıları, hassas ve tetikleyici olabilecek içerikleri kişi görmeyi hazır olana kadar gizler. Her topluluk, üyelerini güvende tutmak için kendi kurallarına ve moderatörlerine; istismarı önlemek için de güçlü engelleme ve bildirme araçlarına sahiptir.
Diğer özellikler:
• Koyu Mod: Gönderileri aydınlık, karanlık ya da gerçek karanlık modunda okuyabilirsin
• Anketler: Takipçilerine görüşlerini sor ve oylarını gör
• Keşfet: Trend hashtagler ve hesaplar bir tık uzağında
• Bildirimler: Yeni takipçilerden, yanıtlardan ve yeniden paylaşımlardan haberin olsun
• Paylaşım: Doğrudan Mastodon'a herhangi bir tipte gönderi paylaş
• Sevimlilik: Maskotumuz şirin bir fil ve onu uygulamada zaman zaman göreceksin
Mastodon kar amacı gütmeyen bir kuruluştur ve geliştirilmesi doğrudan bağışlarınızla sağlanmaktadır. Reklam, para kazanma amacı, risk sermayesi yoktur ve bunu böyle tutmayı planlıyoruz.

View File

@@ -0,0 +1 @@
Merkezsizleştirilmiş sosyal ağ

View File

@@ -0,0 +1 @@
Mastodon

View File

@@ -0,0 +1,16 @@
Mastodon is the largest decentralized social network on the internet. Instead of a single website, its a network of millions of users in independent communities that can all interact with one another, seamlessly. No matter what youre into, you can meet passionate people posting about it on Mastodon!
Join a community and create your profile. Find and and follow fascinating folks and read their posts in an ad-free, chronological timeline. Express yourself with custom emoji, images, GIFs, videos, and audio in 500-character posts. Reply to threads and reblog posts from anyone to share great stuff. Find new accounts to follow and trending hashtags to expand your network.
Mastodon is built with a focus on privacy and safety. Decide whether your posts are shared with your followers, just the people you mention, or the whole world. Content warnings let you hide posts containing sensitive or triggering material until you're ready to engage with them. Each community has its own guidelines and moderators to keep its members safe, and robust blocking and reporting tools help prevent abuse.
More features:
• Dark Mode: Read posts in light, dark, or true black mode
• Polls: Ask followers for their opinion and tally the votes
• Explore: Trending hashtags and accounts are a tap away
• Notifications: Get notified about new follows, replies, and reblogs
• Sharing: Post directly to Mastodon from any share sheet in any app
• Cuteness: Our mascot is an adorable elephant, and you'll see them pop up from time to time
Mastodon is a registered nonprofit and development is supported directly by your donations. Theres no advertising, no monetization, and no venture capital, and we plan to keep it that way.

View File

@@ -0,0 +1 @@
Decentralized social network

View File

@@ -0,0 +1 @@
Mastodon

View File

@@ -0,0 +1,16 @@
Mastodon là mạng xã hội liên hợp lớn nhất trên internet. Thay vì một trang web duy nhất, nó là một mạng lưới hàng triệu người dùng trong các cộng đồng độc lập, tất cả đều có thể tương tác với nhau một cách liền mạch. Bất kể bạn thích gì, bạn đều có thể gặp gỡ những người đăng tút về nó trên Mastodon!
Tham gia một cộng đồng và tạo trang hồ sơ của bạn. Tìm, theo dõi những người thú vị và đọc tút của họ theo trình tự thời gian, không có quảng cáo. Thể hiện bản thân bằng emoji, hình ảnh, GIF, video và âm thanh trong tút tối đa 500 ký tự. Trả lời tút và đăng lại tút từ bất kỳ ai để chia sẻ những điều tuyệt vời. Tìm những người dùng mới để theo dõi và các hashtag xu hướng để mở rộng mạng lưới của bạn.
Mastodon được xây dựng tập trung vào sự riêng tư và an toàn. Quyết định xem tút của bạn được chia sẻ với những người theo dõi, chỉ những người bạn nhắc đến hay cả thế giới. Nội dung ẩn cho phép bạn ẩn các tút chứa nội dung nhạy cảm hoặc chơi chữ cho đến khi bạn sẵn sàng tương tác với chúng. Mỗi cộng đồng có các nguyên tắc riêng và kiểm duyệt viên riêng để giữ an toàn cho các thành viên, song song với các công cụ chặn và báo cáo mạnh mẽ giúp ngăn chặn hành vi bậy.
Tính năng khác:
• Chế độ Tối: Đọc tút ở chế độ sáng, tối hoặc đen
• Bình chọn: Hỏi cộng đồng về ý kiến của họ và đếm lượt bình chọn
• Khám phá: Xem hashtag xu hướng và tài khoản chỉ bằng một nhấn
• Thông báo: Nhận thông báo về người theo dõi, lượt trả lời và đăng lại mới
• Chia sẻ: Đăng trực tiếp lên Mastodon từ bất kỳ ứng dụng nào
• Đáng yêu: Linh vật của chúng tôi là một chú voi ma mút và bạn sẽ thấy anh ấy thỉnh thoảng xuất hiện
Mastodon là một tổ chức phi lợi nhuận đã đăng ký và được hỗ trợ trực tiếp bởi các khoản đóng góp của bạn. Không có quảng cáo, không kiếm tiền và không có vốn đầu tư mạo hiểm và chúng tôi dự định sẽ giữ nguyên như vậy.

View File

@@ -0,0 +1 @@
Mạng xã hội liên hợp

View File

@@ -0,0 +1 @@
Mastodon

View File

@@ -0,0 +1,16 @@
Mastodon 是互联网上最大的去中心化社交网络。 它不是一个网站,而是由独立社区节点及其数以百万计的用户组成的网络,所有这些用户都能够无缝地相互交流。 无论你进入哪一个节点,你都可以与所有在 Mastodon 的人之间进行交流。
加入一个社区节点并创建你的账户。 寻找并关注感兴趣的同好,无广告地浏览他们的时间线。 用自定义表情、图像、GIF、视频和音频在 500 个字符的帖子里写下你的想法。 回复及转发其他人的帖子来共同分享美好的事物。 寻找新的账户以及热门的话题来拓展你的网络。
Mastodon 以隐私和安全为首要目标。 自由选择你的帖子是分享给关注者,或是你提到的人,亦或是整个世界。 内容警告允许让你隐藏可能剧透的内容,让其他人在交互之前做好充分准备。 每个社区都有自己的规则和管理员,让其用户保持安全。通过强有力的屏蔽和举报工具防止滥用。
更多功能:
• 暗色模式:以浅色、深色、纯黑模式下进行阅读
• 投票:询问关注者的意见并统计他们的投票
• 探索:热门的话题以及账号
• 通知:获得新关注、回复和转发的通知
• 分享:从其他应用中的分享菜单中直接发布到 Mastodon
• 吉祥物:你会不时地看到我们可爱的长毛象
Mastodon 是一个注册的非营利开发项目,直接由您的捐赠支持。 没有广告,没有商业化,也没有风险资本,我们计划保持这种方式。

View File

@@ -0,0 +1 @@
分布式社交网络

View File

@@ -0,0 +1 @@
Mastodon

View File

@@ -0,0 +1,16 @@
Mastodon is the largest decentralized social network on the internet. Instead of a single website, its a network of millions of users in independent communities that can all interact with one another, seamlessly. No matter what youre into, you can meet passionate people posting about it on Mastodon!
Join a community and create your profile. Find and and follow fascinating folks and read their posts in an ad-free, chronological timeline. Express yourself with custom emoji, images, GIFs, videos, and audio in 500-character posts. Reply to threads and reblog posts from anyone to share great stuff. Find new accounts to follow and trending hashtags to expand your network.
Mastodon is built with a focus on privacy and safety. Decide whether your posts are shared with your followers, just the people you mention, or the whole world. Content warnings let you hide posts containing sensitive or triggering material until you're ready to engage with them. Each community has its own guidelines and moderators to keep its members safe, and robust blocking and reporting tools help prevent abuse.
More features:
• Dark Mode: Read posts in light, dark, or true black mode
• Polls: Ask followers for their opinion and tally the votes
• Explore: Trending hashtags and accounts are a tap away
• Notifications: Get notified about new follows, replies, and reblogs
• Sharing: Post directly to Mastodon from any share sheet in any app
• Cuteness: Our mascot is an adorable elephant, and you'll see them pop up from time to time
Mastodon is a registered nonprofit and development is supported directly by your donations. Theres no advertising, no monetization, and no venture capital, and we plan to keep it that way.

View File

@@ -0,0 +1 @@
Decentralized social network

View File

@@ -0,0 +1 @@
Mastodon

View File

@@ -5,13 +5,12 @@ plugins {
android {
compileSdk 31
buildToolsVersion "33.0.0-rc1"
defaultConfig {
applicationId "org.joinmastodon.android"
minSdk 23
targetSdk 31
versionCode 27
versionName "1.0"
versionCode 3
versionName '1.0.4-dev+fork.1.1'
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
@@ -36,8 +35,8 @@ android {
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_15
targetCompatibility JavaVersion.VERSION_15
sourceCompatibility JavaVersion.VERSION_17
targetCompatibility JavaVersion.VERSION_17
coreLibraryDesugaringEnabled true
}
sourceSets{
@@ -59,7 +58,7 @@ dependencies {
implementation 'me.grishka.litex:dynamicanimation:1.1.0-alpha03'
implementation 'me.grishka.litex:viewpager:1.0.0'
implementation 'me.grishka.litex:viewpager2:1.0.0'
implementation 'me.grishka.appkit:appkit:1.2'
implementation 'me.grishka.appkit:appkit:1.2.6'
implementation 'com.google.code.gson:gson:2.8.9'
implementation 'org.jsoup:jsoup:1.14.3'
implementation 'com.squareup:otto:1.3.8'

View File

@@ -4,6 +4,7 @@
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="28"/>
<uses-permission android:name="${applicationId}.permission.C2D_MESSAGE"/>
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE"/>

View File

@@ -124,7 +124,7 @@ public class PushNotificationReceiver extends BroadcastReceiver{
.setContentText(pn.body)
.setStyle(new Notification.BigTextStyle().bigText(pn.body))
.setSmallIcon(R.drawable.ic_ntf_logo)
.setContentIntent(PendingIntent.getActivity(context, accountID.hashCode() & 0xFFFF, contentIntent, PendingIntent.FLAG_IMMUTABLE | PendingIntent.FLAG_CANCEL_CURRENT))
.setContentIntent(PendingIntent.getActivity(context, accountID.hashCode() & 0xFFFF, contentIntent, PendingIntent.FLAG_IMMUTABLE | PendingIntent.FLAG_UPDATE_CURRENT))
.setWhen(notification==null ? System.currentTimeMillis() : notification.createdAt.toEpochMilli())
.setShowWhen(true)
.setCategory(Notification.CATEGORY_SOCIAL)

View File

@@ -14,11 +14,13 @@ import org.joinmastodon.android.MastodonApp;
import org.joinmastodon.android.api.requests.notifications.GetNotifications;
import org.joinmastodon.android.api.requests.timelines.GetHomeTimeline;
import org.joinmastodon.android.api.session.AccountSessionManager;
import org.joinmastodon.android.model.CacheablePaginatedResponse;
import org.joinmastodon.android.model.Filter;
import org.joinmastodon.android.model.Notification;
import org.joinmastodon.android.model.PaginatedResponse;
import org.joinmastodon.android.model.SearchResult;
import org.joinmastodon.android.model.Status;
import org.joinmastodon.android.utils.StatusFilterPredicate;
import java.io.IOException;
import java.util.ArrayList;
@@ -41,6 +43,8 @@ public class CacheController{
private DatabaseHelper db;
private final Runnable databaseCloseRunnable=this::closeDatabase;
private static final int POST_FLAG_GAP_AFTER=1;
static{
databaseThread.start();
}
@@ -49,14 +53,14 @@ public class CacheController{
this.accountID=accountID;
}
public void getHomeTimeline(String maxID, int count, boolean forceReload, Callback<PaginatedResponse<List<Status>>> callback){
public void getHomeTimeline(String maxID, int count, boolean forceReload, Callback<CacheablePaginatedResponse<List<Status>>> callback){
cancelDelayedClose();
databaseThread.postRunnable(()->{
try{
List<Filter> filters=AccountSessionManager.getInstance().getAccount(accountID).wordFilters.stream().filter(f->f.context.contains(Filter.FilterContext.HOME)).collect(Collectors.toList());
if(!forceReload){
SQLiteDatabase db=getOrOpenDatabase();
try(Cursor cursor=db.query("home_timeline", new String[]{"json"}, maxID==null ? null : "`id`<?", maxID==null ? null : new String[]{maxID}, null, null, "`id` DESC", count+"")){
try(Cursor cursor=db.query("home_timeline", new String[]{"json", "flags"}, maxID==null ? null : "`id`<?", maxID==null ? null : new String[]{maxID}, null, null, "`id` DESC", count+"")){
if(cursor.getCount()==count){
ArrayList<Status> result=new ArrayList<>();
cursor.moveToFirst();
@@ -65,6 +69,8 @@ public class CacheController{
do{
Status status=MastodonAPIController.gson.fromJson(cursor.getString(0), Status.class);
status.postprocess();
int flags=cursor.getInt(1);
status.hasGapAfter=((flags & POST_FLAG_GAP_AFTER)!=0);
newMaxID=status.id;
for(Filter filter:filters){
if(filter.matches(status.getContentStatus().content))
@@ -73,25 +79,18 @@ public class CacheController{
result.add(status);
}while(cursor.moveToNext());
String _newMaxID=newMaxID;
uiHandler.post(()->callback.onSuccess(new PaginatedResponse<>(result, _newMaxID)));
uiHandler.post(()->callback.onSuccess(new CacheablePaginatedResponse<>(result, _newMaxID, true)));
return;
}
}catch(IOException x){
Log.w(TAG, "getHomeTimeline: corrupted status object in database", x);
}
}
new GetHomeTimeline(maxID, null, count)
new GetHomeTimeline(maxID, null, count, null)
.setCallback(new Callback<>(){
@Override
public void onSuccess(List<Status> result){
callback.onSuccess(new PaginatedResponse<>(result.stream().filter(post->{
for(Filter filter:filters){
if(filter.matches(post.getContentStatus().content)){
return false;
}
}
return true;
}).collect(Collectors.toList()), result.isEmpty() ? null : result.get(result.size()-1).id));
callback.onSuccess(new CacheablePaginatedResponse<>(result.stream().filter(new StatusFilterPredicate(filters)).collect(Collectors.toList()), result.isEmpty() ? null : result.get(result.size()-1).id, false));
putHomeTimeline(result, maxID==null);
}
@@ -110,14 +109,18 @@ public class CacheController{
}, 0);
}
private void putHomeTimeline(List<Status> posts, boolean clear){
public void putHomeTimeline(List<Status> posts, boolean clear){
runOnDbThread((db)->{
if(clear)
db.delete("home_timeline", null, null);
ContentValues values=new ContentValues(2);
ContentValues values=new ContentValues(3);
for(Status s:posts){
values.put("id", s.id);
values.put("json", MastodonAPIController.gson.toJson(s));
int flags=0;
if(s.hasGapAfter)
flags|=POST_FLAG_GAP_AFTER;
values.put("flags", flags);
db.insertWithOnConflict("home_timeline", null, values, SQLiteDatabase.CONFLICT_REPLACE);
}
});
@@ -195,6 +198,9 @@ public class CacheController{
db.delete(table, null, null);
ContentValues values=new ContentValues(3);
for(Notification n:notifications){
if(n.type==null){
continue;
}
values.put("id", n.id);
values.put("json", MastodonAPIController.gson.toJson(n));
values.put("type", n.type.ordinal());

View File

@@ -1,14 +1,10 @@
package org.joinmastodon.android.api;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.util.Log;
import com.google.gson.FieldNamingPolicy;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonIOException;
import com.google.gson.JsonObject;
@@ -16,11 +12,9 @@ import com.google.gson.JsonParser;
import com.google.gson.JsonSyntaxException;
import org.joinmastodon.android.BuildConfig;
import org.joinmastodon.android.MastodonApp;
import org.joinmastodon.android.api.gson.IsoInstantTypeAdapter;
import org.joinmastodon.android.api.gson.IsoLocalDateTypeAdapter;
import org.joinmastodon.android.api.session.AccountSession;
import org.joinmastodon.android.model.BaseModel;
import java.io.IOException;
import java.io.Reader;
@@ -144,7 +138,7 @@ public class MastodonAPIController{
}
try{
req.validateAndPostprocessResponse(respObj);
req.validateAndPostprocessResponse(respObj, response);
}catch(IOException x){
if(BuildConfig.DEBUG)
Log.w(TAG, "["+(session==null ? "no-auth" : session.getID())+"] "+response+" error post-processing or validating response", x);

View File

@@ -28,6 +28,7 @@ import me.grishka.appkit.api.Callback;
import me.grishka.appkit.api.ErrorResponse;
import okhttp3.Call;
import okhttp3.RequestBody;
import okhttp3.Response;
public abstract class MastodonAPIRequest<T> extends APIRequest<T>{
private static final String TAG="MastodonAPIRequest";
@@ -75,9 +76,14 @@ public abstract class MastodonAPIRequest<T> extends APIRequest<T>{
}
public MastodonAPIRequest<T> exec(String accountID){
account=AccountSessionManager.getInstance().getAccount(accountID);
domain=account.domain;
account.getApiController().submitRequest(this);
try{
account=AccountSessionManager.getInstance().getAccount(accountID);
domain=account.domain;
account.getApiController().submitRequest(this);
}catch(Exception x){
Log.e(TAG, "exec: this shouldn't happen, but it still did", x);
invokeErrorCallback(new MastodonErrorResponse(x.getLocalizedMessage(), -1));
}
return this;
}
@@ -153,7 +159,7 @@ public abstract class MastodonAPIRequest<T> extends APIRequest<T>{
}
@CallSuper
public void validateAndPostprocessResponse(T respObj) throws IOException{
public void validateAndPostprocessResponse(T respObj, Response httpResponse) throws IOException{
if(respObj instanceof BaseModel){
((BaseModel) respObj).postprocess();
}else if(respObj instanceof List){

View File

@@ -96,10 +96,12 @@ public class PushSubscriptionManager{
public static void tryRegisterFCM(){
deviceToken=getPrefs().getString("deviceToken", null);
if(!TextUtils.isEmpty(deviceToken)){
registerAllAccountsForPush();
int tokenVersion=getPrefs().getInt("version", 0);
if(!TextUtils.isEmpty(deviceToken) && tokenVersion==BuildConfig.VERSION_CODE){
registerAllAccountsForPush(false);
return;
}
Log.i(TAG, "tryRegisterFCM: no token found or app was updated. Trying to get push token...");
Intent intent = new Intent("com.google.iid.TOKEN_REQUEST");
intent.setPackage(GSF_PACKAGE);
intent.putExtra(EXTRA_APPLICATION_PENDING_INTENT,
@@ -119,10 +121,6 @@ public class PushSubscriptionManager{
return !TextUtils.isEmpty(deviceToken);
}
public void registerAccountForPush(){
registerAccountForPush(null);
}
public void registerAccountForPush(PushSubscription subscription){
if(TextUtils.isEmpty(deviceToken))
throw new IllegalStateException("No device push token available");
@@ -139,7 +137,9 @@ public class PushSubscriptionManager{
encodedPublicKey=Base64.encodeToString(serializeRawPublicKey(publicKey), Base64.URL_SAFE | Base64.NO_WRAP | Base64.NO_PADDING);
authKey=new byte[16];
new SecureRandom().nextBytes(authKey);
AccountSession session=AccountSessionManager.getInstance().getAccount(accountID);
AccountSession session=AccountSessionManager.getInstance().tryGetAccount(accountID);
if(session==null)
return;
session.pushPrivateKey=Base64.encodeToString(privateKey.getEncoded(), Base64.URL_SAFE | Base64.NO_WRAP | Base64.NO_PADDING);
session.pushPublicKey=Base64.encodeToString(publicKey.getEncoded(), Base64.URL_SAFE | Base64.NO_WRAP | Base64.NO_PADDING);
session.pushAuthKey=encodedAuthKey=Base64.encodeToString(authKey, Base64.URL_SAFE | Base64.NO_WRAP | Base64.NO_PADDING);
@@ -160,7 +160,9 @@ public class PushSubscriptionManager{
MastodonAPIController.runInBackground(()->{
serverKey=deserializeRawPublicKey(Base64.decode(result.serverKey, Base64.URL_SAFE));
AccountSession session=AccountSessionManager.getInstance().getAccount(accountID);
AccountSession session=AccountSessionManager.getInstance().tryGetAccount(accountID);
if(session==null)
return;
session.pushSubscription=result;
AccountSessionManager.getInstance().writeAccountsFile();
Log.d(TAG, "Successfully registered "+accountID+" for push notifications");
@@ -181,7 +183,9 @@ public class PushSubscriptionManager{
.setCallback(new Callback<>(){
@Override
public void onSuccess(PushSubscription result){
AccountSession session=AccountSessionManager.getInstance().getAccount(accountID);
AccountSession session=AccountSessionManager.getInstance().tryGetAccount(accountID);
if(session==null)
return;
if(result.policy!=subscription.policy)
result.policy=subscription.policy;
session.pushSubscription=result;
@@ -194,7 +198,9 @@ public class PushSubscriptionManager{
if(((MastodonErrorResponse)error).httpStatus==404){ // Not registered for push, register now
registerAccountForPush(subscription);
}else{
AccountSession session=AccountSessionManager.getInstance().getAccount(accountID);
AccountSession session=AccountSessionManager.getInstance().tryGetAccount(accountID);
if(session==null)
return;
session.needUpdatePushSettings=true;
session.pushSubscription=subscription;
AccountSessionManager.getInstance().writeAccountsFile();
@@ -354,10 +360,10 @@ public class PushSubscriptionManager{
return info.toByteArray();
}
private static void registerAllAccountsForPush(){
private static void registerAllAccountsForPush(boolean forceReRegister){
for(AccountSession session:AccountSessionManager.getInstance().getLoggedInAccounts()){
if(session.pushSubscription==null)
session.getPushSubscriptionManager().registerAccountForPush();
if(session.pushSubscription==null || forceReRegister)
session.getPushSubscriptionManager().registerAccountForPush(session.pushSubscription);
else if(session.needUpdatePushSettings)
session.getPushSubscriptionManager().updatePushSettings(session.pushSubscription);
}
@@ -371,9 +377,9 @@ public class PushSubscriptionManager{
deviceToken=intent.getStringExtra("registration_id");
if(deviceToken.startsWith(KID_VALUE))
deviceToken=deviceToken.substring(KID_VALUE.length()+1);
getPrefs().edit().putString("deviceToken", deviceToken).apply();
getPrefs().edit().putString("deviceToken", deviceToken).putInt("version", BuildConfig.VERSION_CODE).apply();
Log.i(TAG, "Successfully registered for FCM");
registerAllAccountsForPush();
registerAllAccountsForPush(true);
}else{
Log.e(TAG, "FCM registration intent did not contain registration_id: "+intent);
Bundle extras=intent.getExtras();

View File

@@ -60,7 +60,7 @@ public class ResizedImageRequestBody extends CountingRequestBody{
}
if(factor%1f!=0f){
Bitmap scaled=Bitmap.createBitmap(targetWidth, targetHeight, Bitmap.Config.ARGB_8888);
new Canvas(scaled).drawBitmap(bitmap, null, new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight()), new Paint(Paint.FILTER_BITMAP_FLAG));
new Canvas(scaled).drawBitmap(bitmap, null, new Rect(0, 0, targetWidth, targetHeight), new Paint(Paint.FILTER_BITMAP_FLAG));
bitmap=scaled;
}
if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.N){

View File

@@ -0,0 +1,57 @@
package org.joinmastodon.android.api.requests;
import android.net.Uri;
import android.text.TextUtils;
import com.google.gson.reflect.TypeToken;
import org.joinmastodon.android.api.MastodonAPIRequest;
import org.joinmastodon.android.model.HeaderPaginationList;
import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import okhttp3.Response;
public abstract class HeaderPaginationRequest<I> extends MastodonAPIRequest<HeaderPaginationList<I>>{
private static final Pattern LINK_HEADER_PATTERN=Pattern.compile("(?:(?:,\\s*)?<([^>]+)>|;\\s*(\\w+)=['\"](\\w+)['\"])");
public HeaderPaginationRequest(HttpMethod method, String path, Class<HeaderPaginationList<I>> respClass){
super(method, path, respClass);
}
public HeaderPaginationRequest(HttpMethod method, String path, TypeToken<HeaderPaginationList<I>> respTypeToken){
super(method, path, respTypeToken);
}
@Override
public void validateAndPostprocessResponse(HeaderPaginationList<I> respObj, Response httpResponse) throws IOException{
super.validateAndPostprocessResponse(respObj, httpResponse);
String link=httpResponse.header("Link");
if(!TextUtils.isEmpty(link)){
Matcher matcher=LINK_HEADER_PATTERN.matcher(link);
String url=null;
while(matcher.find()){
if(url==null){
String _url=matcher.group(1);
if(_url==null)
continue;
url=_url;
}else{
String paramName=matcher.group(2);
String paramValue=matcher.group(3);
if(paramName==null || paramValue==null)
return;
if("rel".equals(paramName)){
switch(paramValue){
case "next" -> respObj.nextPageUri=Uri.parse(url);
case "prev" -> respObj.prevPageUri=Uri.parse(url);
}
url=null;
}
}
}
}
}
}

View File

@@ -0,0 +1,16 @@
package org.joinmastodon.android.api.requests.accounts;
import com.google.gson.reflect.TypeToken;
import org.joinmastodon.android.api.requests.HeaderPaginationRequest;
import org.joinmastodon.android.model.Account;
public class GetAccountFollowers extends HeaderPaginationRequest<Account>{
public GetAccountFollowers(String id, String maxID, int limit){
super(HttpMethod.GET, "/accounts/"+id+"/followers", new TypeToken<>(){});
if(maxID!=null)
addQueryParameter("max_id", maxID);
if(limit>0)
addQueryParameter("limit", limit+"");
}
}

View File

@@ -0,0 +1,16 @@
package org.joinmastodon.android.api.requests.accounts;
import com.google.gson.reflect.TypeToken;
import org.joinmastodon.android.api.requests.HeaderPaginationRequest;
import org.joinmastodon.android.model.Account;
public class GetAccountFollowing extends HeaderPaginationRequest<Account>{
public GetAccountFollowing(String id, String maxID, int limit){
super(HttpMethod.GET, "/accounts/"+id+"/following", new TypeToken<>(){});
if(maxID!=null)
addQueryParameter("max_id", maxID);
if(limit>0)
addQueryParameter("limit", limit+"");
}
}

View File

@@ -8,12 +8,14 @@ import org.joinmastodon.android.model.Status;
import java.util.List;
public class GetHomeTimeline extends MastodonAPIRequest<List<Status>>{
public GetHomeTimeline(String maxID, String minID, int limit){
public GetHomeTimeline(String maxID, String minID, int limit, String sinceID){
super(HttpMethod.GET, "/timelines/home", new TypeToken<>(){});
if(maxID!=null)
addQueryParameter("max_id", maxID);
if(minID!=null)
addQueryParameter("min_id", minID);
if(sinceID!=null)
addQueryParameter("since_id", sinceID);
if(limit>0)
addQueryParameter("limit", ""+limit);
}

Some files were not shown because too many files have changed in this diff Show More