Compare commits

...

3054 Commits

Author SHA1 Message Date
LucasGGamerM
03cb0b3c47 fix: fix missing app icon for stable builds 2023-09-29 17:14:39 -03:00
LucasGGamerM
53c454a59b build: fix oopsie where I forgot to increase the version code as well 2023-09-29 16:57:43 -03:00
LucasGGamerM
d21ae9d94e build: bump version 2023-09-29 16:35:23 -03:00
LucasGGamerM
453f082822 Merge remote-tracking branch 'megalodon_weblate/main'
# Conflicts:
#	mastodon/src/main/res/values-pt-rBR/strings_sk.xml
#	metadata/ar/short_description.txt
#	metadata/id/changelogs/67.txt
2023-09-29 16:29:16 -03:00
LucasGGamerM
23843e9002 fix: use built-in appkit empty view styles entry and remove hack to apply colors to the empty view texts 2023-09-29 16:23:33 -03:00
LucasGGamerM
232d2e7e6d build: upgrade to appkit 1.2.14 2023-09-29 16:23:33 -03:00
LucasGGamerM
e9d73cbe32 build(CI): use LucasGGamerM's appkit repo 2023-09-29 16:17:14 -03:00
LucasGGamerM
4bb0597edf Merge remote-tracking branch 'mastodon/master'
# Conflicts:
#	mastodon/build.gradle
2023-09-29 07:56:14 -03:00
Grishka
a00afd5d7f Same crash fix in 2 more places ugh 2023-09-29 03:20:58 +03:00
LucasGGamerM
796bdf2893 Merge pull request #264 from Xen4n/master
Posts divider brightness fix (now looks like in settings and profile)
2023-09-28 19:25:11 -03:00
Xen4n
5b7868b44e Posts divider brightness fix (now looks like in settings and profile) 2023-09-28 23:52:35 +02:00
LucasGGamerM
66e67231c8 build: revert appkit to 1.2.9 and gson to 2.9.0 for app stability's sake 2023-09-28 15:31:31 -03:00
LucasGGamerM
58be2214a4 Merge remote-tracking branch 'mastodon/master'
# Conflicts:
#	mastodon/build.gradle
#	mastodon/src/main/java/org/joinmastodon/android/fragments/ProfileFragment.java
2023-09-28 15:19:32 -03:00
LucasGGamerM
72a370aa84 fix(nord-theme): fix nord theme pill color 2023-09-28 14:20:14 -03:00
Grishka
9a41a2d6fb Merge branch 'l10n_master' 2023-09-28 20:14:21 +03:00
LucasGGamerM
2629e0039c chore: remove untested privacy settings category 2023-09-28 14:11:43 -03:00
Grishka
2cd98a6620 More crash fixes 2023-09-28 20:11:43 +03:00
LucasGGamerM
24048a677f fix: make app compile again (again) 2023-09-28 14:07:31 -03:00
Grishka
283b56be5b Finally fix the mysterious RecyclerView crash 2023-09-28 19:56:25 +03:00
LucasGGamerM
debf8c52a1 Merge remote-tracking branch 'mastodon/master'
# Conflicts:
#	fastlane/metadata/android/fi-FI/full_description.txt
#	fastlane/metadata/android/th-TH/full_description.txt
#	mastodon/build.gradle
#	mastodon/src/main/java/org/joinmastodon/android/PushNotificationReceiver.java
#	mastodon/src/main/java/org/joinmastodon/android/api/requests/statuses/TranslateStatus.java
#	mastodon/src/main/java/org/joinmastodon/android/api/session/AccountSession.java
#	mastodon/src/main/java/org/joinmastodon/android/api/session/AccountSessionManager.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/BaseStatusListFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/FeaturedHashtagsListFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/HashtagTimelineFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/ProfileFeaturedFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/ProfileFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/ThreadFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/discover/SearchFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/discover/SearchQueryFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/discover/TrendingHashtagsFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/settings/SettingsMainFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/model/Status.java
#	mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/HeaderStatusDisplayItem.java
#	mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/TextStatusDisplayItem.java
#	mastodon/src/main/java/org/joinmastodon/android/ui/text/HtmlParser.java
#	mastodon/src/main/java/org/joinmastodon/android/ui/text/LinkSpan.java
#	mastodon/src/main/java/org/joinmastodon/android/ui/utils/UiUtils.java
#	mastodon/src/main/java/org/joinmastodon/android/ui/viewcontrollers/ComposePollViewController.java
#	mastodon/src/main/res/layout/display_item_text.xml
#	mastodon/src/main/res/menu/post.xml
#	mastodon/src/main/res/values/styles.xml
2023-09-28 13:52:48 -03:00
LucasGGamerM
7fdea9710f fix: make app compile again 2023-09-28 13:52:04 -03:00
Grishka
d2de62ee55 Probably fix #703 2023-09-28 13:33:59 -03:00
Grishka
d706768112 Fix #682 2023-09-28 13:29:16 -03:00
Grishka
1614213aae Fix #683 2023-09-28 13:27:20 -03:00
Grishka
3045fe0357 Probably need to set this too 2023-09-28 13:27:20 -03:00
Grishka
5a35be0ebd Specify LED color for notifications
closes #695
2023-09-28 13:27:20 -03:00
Grishka
22b1cd0d0b Crash fixes 2023-09-28 13:26:06 -03:00
Eugen Rochko
49f10bacb3 New translations strings.xml (Turkish) 2023-09-28 13:24:59 -03:00
Eugen Rochko
2926e5096e New translations strings.xml (Chinese Traditional) 2023-09-28 13:24:59 -03:00
Eugen Rochko
361f27d5df New translations strings.xml (Filipino) 2023-09-28 13:24:59 -03:00
Grishka
d068093c5a Add a tool to detect invalid formatting in localized strings 2023-09-28 13:24:27 -03:00
Eugen Rochko
3bea1b7f3e New translations strings.xml (Filipino) 2023-09-28 13:24:26 -03:00
Eugen Rochko
5a34d9ffce New translations strings.xml (Greek) 2023-09-28 13:23:35 -03:00
Eugen Rochko
240754b70a New translations strings.xml (Turkish) 2023-09-28 13:23:34 -03:00
Eugen Rochko
7973ad7042 New translations strings.xml (Chinese Simplified) 2023-09-28 13:23:34 -03:00
Eugen Rochko
8446dbe05d New translations strings.xml (Japanese) 2023-09-28 13:23:34 -03:00
Eugen Rochko
7b0313cc69 New translations strings.xml (Japanese) 2023-09-28 13:23:23 -03:00
Grishka
994ae0242c Fix indexable setting 2023-09-28 13:23:22 -03:00
Eugen Rochko
fd34be3c66 New translations strings.xml (Russian) 2023-09-28 13:23:22 -03:00
Grishka
20785d53fe Fix custom emojis in names setting 2023-09-28 13:23:05 -03:00
Eugen Rochko
3cc1748231 New translations strings.xml (Slovenian) 2023-09-28 13:22:54 -03:00
Eugen Rochko
079112b905 New translations strings.xml (Japanese) 2023-09-28 13:22:54 -03:00
Eugen Rochko
38aa55b371 New translations strings.xml (Japanese) 2023-09-28 13:22:53 -03:00
Eugen Rochko
e07c01018b New translations strings.xml (Russian) 2023-09-28 13:22:53 -03:00
Eugen Rochko
08de4525eb New translations strings.xml (Italian) 2023-09-28 13:22:53 -03:00
Eugen Rochko
062dca6a77 New translations strings.xml (Thai) 2023-09-28 13:22:53 -03:00
Eugen Rochko
d9abb8dfa1 New translations strings.xml (Icelandic) 2023-09-28 13:22:53 -03:00
Eugen Rochko
5bcbe19435 New translations strings.xml (Persian) 2023-09-28 13:22:52 -03:00
Eugen Rochko
955b985d1a New translations strings.xml (Swedish) 2023-09-28 13:22:31 -03:00
Grishka
6d6ab789a3 Privacy settings 2023-09-28 13:22:30 -03:00
Grishka
ad8be2f7a3 Scroll profile tab views to top when tab is reselected 2023-09-28 13:13:33 -03:00
Eugen Rochko
64be55e406 New translations strings.xml (French) 2023-09-28 13:09:44 -03:00
Eugen Rochko
6230f32135 New translations strings.xml (Persian) 2023-09-28 13:09:43 -03:00
Eugen Rochko
30db82fc98 New translations strings.xml (Persian) 2023-09-28 13:09:43 -03:00
Eugen Rochko
921589b9bb New translations strings.xml (Vietnamese) 2023-09-28 13:09:43 -03:00
Eugen Rochko
0b0de7a4e3 New translations strings.xml (Italian) 2023-09-28 13:09:42 -03:00
Eugen Rochko
c790eaf9c0 New translations strings.xml (Finnish) 2023-09-28 13:09:42 -03:00
Grishka
2c7cef488b Paginate search results 2023-09-28 13:09:41 -03:00
Grishka
c26603e0ca Crash fixes 2023-09-28 13:08:40 -03:00
Grishka
e1e5c9b0bd Crash fix 2023-09-28 13:08:40 -03:00
Grishka
96f0817c20 Fix #690 2023-09-28 13:07:01 -03:00
Eugen Rochko
e0165a25f4 New translations strings.xml (Arabic) 2023-09-28 13:02:35 -03:00
Eugen Rochko
e465fb944a New translations strings.xml (Arabic) 2023-09-28 13:02:35 -03:00
Eugen Rochko
fb159b5a52 New translations strings.xml (Vietnamese) 2023-09-28 13:02:35 -03:00
Eugen Rochko
1a349f0bb8 New translations strings.xml (Chinese Traditional) 2023-09-28 13:02:31 -03:00
Eugen Rochko
034dfe551c New translations strings.xml (Chinese Traditional) 2023-09-28 13:02:30 -03:00
Eugen Rochko
1f713dc50e New translations strings.xml (Finnish) 2023-09-28 13:02:21 -03:00
Eugen Rochko
258df9546b New translations strings.xml (Thai) 2023-09-28 13:02:21 -03:00
Eugen Rochko
2daabd6a7e New translations strings.xml (Finnish) 2023-09-28 13:02:21 -03:00
Eugen Rochko
1e96b76b33 New translations strings.xml (Dutch) 2023-09-28 13:02:21 -03:00
Eugen Rochko
6dd944341e New translations strings.xml (Dutch) 2023-09-28 13:02:20 -03:00
Eugen Rochko
5dca70c657 New translations strings.xml (Urdu (India)) 2023-09-28 13:02:20 -03:00
Eugen Rochko
c6f2e8151f New translations strings.xml (Kabyle) 2023-09-28 13:02:20 -03:00
Eugen Rochko
99135ebdd6 New translations strings.xml (Igbo) 2023-09-28 13:02:20 -03:00
Eugen Rochko
53348be732 New translations strings.xml (Occitan) 2023-09-28 13:02:20 -03:00
Eugen Rochko
023c1d1598 New translations strings.xml (Scottish Gaelic) 2023-09-28 13:02:20 -03:00
Eugen Rochko
1d0c591cdb New translations strings.xml (Sinhala) 2023-09-28 13:02:20 -03:00
Eugen Rochko
a03482fa53 New translations strings.xml (Bosnian) 2023-09-28 13:02:19 -03:00
Eugen Rochko
bc5fd2530a New translations strings.xml (Filipino) 2023-09-28 13:02:19 -03:00
Eugen Rochko
0ca57c3d72 New translations strings.xml (Burmese) 2023-09-28 13:02:19 -03:00
Eugen Rochko
5d20697e07 New translations strings.xml (Hindi) 2023-09-28 13:02:19 -03:00
Eugen Rochko
2847a1fae0 New translations strings.xml (Croatian) 2023-09-28 13:02:19 -03:00
Eugen Rochko
4bd78f31f2 New translations strings.xml (Thai) 2023-09-28 13:02:19 -03:00
Eugen Rochko
e6281f9bb5 New translations strings.xml (Bengali) 2023-09-28 13:02:18 -03:00
Eugen Rochko
2c83b5aa02 New translations strings.xml (Persian) 2023-09-28 13:02:18 -03:00
Eugen Rochko
586d48c80e New translations strings.xml (Indonesian) 2023-09-28 13:02:18 -03:00
Eugen Rochko
fff2c5a3f5 New translations strings.xml (Portuguese, Brazilian) 2023-09-28 13:02:18 -03:00
Eugen Rochko
3411cf4e56 New translations strings.xml (Icelandic) 2023-09-28 13:02:17 -03:00
Eugen Rochko
e126858e7a New translations strings.xml (Galician) 2023-09-28 13:02:17 -03:00
Eugen Rochko
9e0b40d409 New translations strings.xml (Vietnamese) 2023-09-28 13:02:17 -03:00
Eugen Rochko
e362efb453 New translations strings.xml (Chinese Traditional) 2023-09-28 13:02:17 -03:00
Eugen Rochko
8095d3004a New translations strings.xml (Chinese Simplified) 2023-09-28 13:02:16 -03:00
Eugen Rochko
27f023863b New translations strings.xml (Ukrainian) 2023-09-28 13:02:16 -03:00
Eugen Rochko
af6fae4d86 New translations strings.xml (Turkish) 2023-09-28 13:02:15 -03:00
Eugen Rochko
8119049df1 New translations strings.xml (Swedish) 2023-09-28 13:02:13 -03:00
Eugen Rochko
b5c09a4398 New translations strings.xml (Slovenian) 2023-09-28 13:02:13 -03:00
Eugen Rochko
14df6c4e05 New translations strings.xml (Russian) 2023-09-28 13:02:11 -03:00
Eugen Rochko
5c34d38783 New translations strings.xml (Portuguese) 2023-09-28 13:02:11 -03:00
Eugen Rochko
cfce3595f6 New translations strings.xml (Polish) 2023-09-28 13:02:07 -03:00
Eugen Rochko
411b561a3a New translations strings.xml (Norwegian) 2023-09-28 13:02:04 -03:00
Eugen Rochko
ff9c211f3c New translations strings.xml (Dutch) 2023-09-28 13:02:03 -03:00
Eugen Rochko
c8a650acd4 New translations strings.xml (Korean) 2023-09-28 13:02:01 -03:00
Eugen Rochko
a8cca76392 New translations strings.xml (Japanese) 2023-09-28 13:02:00 -03:00
Eugen Rochko
5e2f653d30 New translations strings.xml (Italian) 2023-09-28 13:01:54 -03:00
Eugen Rochko
418f87999c New translations strings.xml (Armenian) 2023-09-28 13:01:52 -03:00
Eugen Rochko
c330428c07 New translations strings.xml (Hungarian) 2023-09-28 13:01:50 -03:00
Eugen Rochko
119537f45f New translations strings.xml (Hebrew) 2023-09-28 13:01:48 -03:00
Eugen Rochko
9f09b437ab New translations strings.xml (Irish) 2023-09-28 13:01:46 -03:00
Eugen Rochko
1141dd5875 New translations strings.xml (Finnish) 2023-09-28 13:01:45 -03:00
Eugen Rochko
a008a0ac9a New translations strings.xml (Basque) 2023-09-28 13:01:44 -03:00
Eugen Rochko
5cf5267e49 New translations strings.xml (Greek) 2023-09-28 13:01:42 -03:00
Eugen Rochko
df2246b71a New translations strings.xml (German) 2023-09-28 13:01:42 -03:00
Eugen Rochko
7862fefe94 New translations strings.xml (Danish) 2023-09-28 13:01:40 -03:00
Eugen Rochko
b59957bd90 New translations strings.xml (Czech) 2023-09-28 13:01:39 -03:00
Eugen Rochko
e307f1cca2 New translations strings.xml (Catalan) 2023-09-28 13:01:37 -03:00
Eugen Rochko
de185e5a27 New translations strings.xml (Belarusian) 2023-09-28 13:01:36 -03:00
Eugen Rochko
e1fbe2c96e New translations strings.xml (Arabic) 2023-09-28 13:01:36 -03:00
Eugen Rochko
d7babf1e4d New translations strings.xml (Spanish) 2023-09-28 13:01:36 -03:00
Eugen Rochko
1203de0015 New translations strings.xml (French) 2023-09-28 13:01:35 -03:00
Eugen Rochko
e7148acefb New translations strings.xml (Romanian) 2023-09-28 13:01:35 -03:00
Eugen Rochko
88741b0db4 New translations strings.xml (Portuguese, Brazilian) 2023-09-28 13:00:55 -03:00
Eugen Rochko
12f9a11f03 New translations strings.xml (Finnish) 2023-09-28 13:00:55 -03:00
Eugen Rochko
234972352d New translations strings.xml (Finnish) 2023-09-28 13:00:55 -03:00
Eugen Rochko
67448f9de5 New translations strings.xml (Indonesian) 2023-09-28 13:00:54 -03:00
Eugen Rochko
9681256a06 New translations strings.xml (Finnish) 2023-09-28 13:00:53 -03:00
Eugen Rochko
7f44c2ca49 New translations strings.xml (Finnish) 2023-09-28 13:00:53 -03:00
Eugen Rochko
f355919660 New translations strings.xml (Ukrainian) 2023-09-28 13:00:52 -03:00
Eugen Rochko
928f24b460 New translations strings.xml (Finnish) 2023-09-28 13:00:52 -03:00
Eugen Rochko
40e54b165b New translations strings.xml (Finnish) 2023-09-28 13:00:51 -03:00
Eugen Rochko
57d6b33b58 New translations strings.xml (Finnish) 2023-09-28 13:00:51 -03:00
Grishka
6b02a2df68 Fix #658, fix #620 2023-09-28 13:00:51 -03:00
Eugen Rochko
6d56771aba New translations strings.xml (Galician) 2023-09-28 16:51:59 +02:00
LucasGGamerM
56a83e66cd feat(notifications): readd account card for follow notifications 2023-09-28 08:31:21 -03:00
LucasGGamerM
9f17f1600a feat(profile): update unmute icon
This is to be consistent with the mute hashtag icon thingy
2023-09-28 07:43:22 -03:00
Grishka
1724d8a532 Probably fix #703 2023-09-27 19:50:59 +03:00
LucasGGamerM
7b4be83781 refactor(notification-headers): make only avatar and icon be clickable. Also fixes the ripple not being drawn correctly 2023-09-27 12:16:39 -03:00
butterflyoffire
52030b3b2d Translated using Weblate (Arabic)
Currently translated at 76.1% (294 of 386 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/ar/
2023-09-27 07:53:09 +00:00
CDN18
3b36434dff Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (34 of 34 strings)

Translation: Moshidon/metadata
Translate-URL: https://translate.codeberg.org/projects/moshidon/metadata/zh_Hans/
2023-09-26 17:16:44 +00:00
CDN18
f73be653ce Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (97 of 97 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/zh_Hans/
2023-09-26 17:16:44 +00:00
Oliebol
808c922637 Translated using Weblate (Dutch)
Currently translated at 86.5% (84 of 97 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/nl/
2023-09-26 17:16:44 +00:00
Andrewblasco
ceef155e03 Translated using Weblate (Spanish)
Currently translated at 100.0% (97 of 97 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/es/
2023-09-26 17:16:43 +00:00
dontobi
eb5a38d514 Translated using Weblate (German)
Currently translated at 100.0% (97 of 97 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/de/
2023-09-26 17:16:43 +00:00
LucasGGamerM
33d4e05e96 refactor(translations): remove blocks/mutes strings in favor of blocked accounts/muted accounts strings 2023-09-26 11:08:54 -03:00
LucasGGamerM
968668e38c Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (99 of 99 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/pt_BR/
2023-09-26 14:02:01 +00:00
butterflyoffire
097a18fa92 Translated using Weblate (Arabic (Algeria))
Currently translated at 90.5% (86 of 95 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/ar_DZ/
2023-09-26 13:56:53 +00:00
butterflyoffire
5a85420866 Translated using Weblate (Arabic (Algeria))
Currently translated at 63.7% (58 of 91 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/ar_DZ/
2023-09-26 13:56:53 +00:00
Parsa Ranjbar
50cee02191 Translated using Weblate (Persian)
Currently translated at 93.4% (85 of 91 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/fa/
2023-09-26 13:56:53 +00:00
butterflyoffire
e7dbb9fdf7 Translated using Weblate (French)
Currently translated at 93.4% (85 of 91 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/fr/
2023-09-26 13:56:52 +00:00
Parsa Ranjbar
e2b2361ad2 Translated using Weblate (Persian)
Currently translated at 92.3% (84 of 91 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/fa/
2023-09-26 13:56:52 +00:00
Andrewblasco
89fe1dc783 Translated using Weblate (Spanish)
Currently translated at 100.0% (91 of 91 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/es/
2023-09-26 13:56:52 +00:00
LucasGGamerM
eaadd80eeb refactor(translations): move blocks/mutes strings to strings_mo.xml while we wait for megalodon to merge sk22#821 2023-09-26 10:53:22 -03:00
LucasGGamerM
c8063e961e fix(mute-hashtag): clear the filter optional when successfully deleting the hashtag filter on the server 2023-09-26 07:56:20 -03:00
LucasGGamerM
3057546c55 fix(mute-hashtag): make the mute button follow the mute state of the hashtag 2023-09-26 07:54:18 -03:00
LucasGGamerM
f90e799caa Revert "fix(hashtag-timeline): (un)show mute button as action"
This reverts commit 72ca3d0204.
2023-09-26 07:37:35 -03:00
Eugen Rochko
b4cdf35d36 New translations strings.xml (Russian) 2023-09-25 23:39:42 +02:00
Eugen Rochko
cad0ad7a59 New translations strings.xml (Ukrainian) 2023-09-25 22:25:17 +02:00
Grishka
ca60003c39 Fix #682 2023-09-25 23:11:10 +03:00
Grishka
0f030e0bac Fix #683 2023-09-25 23:07:34 +03:00
Grishka
6d4f212a18 Probably need to set this too 2023-09-25 23:00:15 +03:00
Grishka
183b39bc24 Specify LED color for notifications
closes #695
2023-09-25 22:58:08 +03:00
Grishka
27ad0c6fcf Crash fixes 2023-09-25 22:52:51 +03:00
LucasGGamerM
9944185424 Merge pull request #263 from FineFindus/feat/mute-hashtag
fix(hashtag/mute): update state on unmute
2023-09-25 16:39:33 -03:00
LucasGGamerM
72ca3d0204 fix(hashtag-timeline): (un)show mute button as action
Lets wait until I have enough life force to actually update the icon of this thing
2023-09-25 16:26:03 -03:00
FineFindus
53204a9998 fix(hashtag/mute): update state on unmute 2023-09-25 21:15:45 +02:00
LucasGGamerM
c3624eddb3 feat(hashtag-timeline): show mute button as action 2023-09-25 16:09:37 -03:00
LucasGGamerM
e144d0ac6f Merge pull request #261 from FineFindus/feat/mute-hashtag
feat: add option to mute hashtag
2023-09-25 15:43:22 -03:00
FineFindus
ac8562aaa2 fix(hashtag/mute): mute hashtag with prefixed #-symbol 2023-09-25 20:31:29 +02:00
FineFindus
4f8c4c67d2 feat(hashtag): allow unmuting hashtag 2023-09-25 20:22:06 +02:00
Grishka
b5f661f1af I forgot to increment the version code 2023-09-25 19:25:59 +03:00
Grishka
0015f3f0bf Merge branch 'l10n_master' 2023-09-25 19:22:38 +03:00
Eugen Rochko
c5d0fdd645 New translations strings.xml (Turkish) 2023-09-25 18:20:56 +02:00
Grishka
2d09ad44fb Merge branch 'l10n_master' 2023-09-25 19:18:24 +03:00
Eugen Rochko
667fffd124 New translations strings.xml (Chinese Traditional) 2023-09-25 18:18:22 +02:00
Eugen Rochko
699233d8c7 New translations strings.xml (Filipino) 2023-09-25 18:18:05 +02:00
Grishka
56aabdc4a6 Fix empty view text style
closes #701
2023-09-25 19:12:04 +03:00
Grishka
443e2c7a6f Add a tool to detect invalid formatting in localized strings 2023-09-25 18:51:49 +03:00
Eugen Rochko
985b0f6e63 New translations strings.xml (Filipino) 2023-09-25 17:49:57 +02:00
Grishka
cc86edf276 Fix #700 2023-09-25 17:18:42 +03:00
Grishka
4071b9342d Update appkit 2023-09-25 17:13:59 +03:00
LucasGGamerM
c92ab11dcd fix(recycler-empty-view): make the textViews in the empty views follow the color themes 2023-09-25 11:10:37 -03:00
LucasGGamerM
f3a1e7cf58 fix(poll-options): fix poll options layout when screen is too small and there are multiple lines in a poll option
cc: @FineFindus
2023-09-25 08:41:14 -03:00
LucasGGamerM
ebcafbf90d Merge branch 'fix/long-poll-options' 2023-09-25 08:21:11 -03:00
LucasGGamerM
b5f7135e38 Merge branch 'fix/chipify' 2023-09-25 08:13:03 -03:00
LucasGGamerM
8a3df3657b fix(ProfileFragment): max out number of profile roles to 4 2023-09-25 07:18:46 -03:00
Eugen Rochko
f71d1bc5d3 New translations strings.xml (Greek) 2023-09-24 23:27:13 +02:00
FineFindus
f293619189 feat: add mute hashtag option
Fixes https://github.com/LucasGGamerM/moshidon/issues/260, by opening the create filter page
2023-09-24 12:33:17 +02:00
FineFindus
68ec3499ea fix: show individual chips 2023-09-24 12:18:55 +02:00
FineFindus
4b79d35854 feat(settings/filter): allow passing words 2023-09-24 11:47:42 +02:00
FineFindus
54ec1d781a fix: show multiline poll options 2023-09-24 10:57:23 +02:00
Andrewblasco
2b926ffa46 Translated using Weblate (Spanish)
Currently translated at 100.0% (386 of 386 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/es/
2023-09-24 08:53:08 +00:00
Eugen Rochko
6bcdbaba34 New translations strings.xml (Turkish) 2023-09-24 08:49:38 +02:00
Eugen Rochko
a2beead3a5 New translations strings.xml (Chinese Simplified) 2023-09-23 18:34:38 +02:00
Eugen Rochko
e7a25e353d New translations strings.xml (Japanese) 2023-09-23 14:15:37 +02:00
Eugen Rochko
af04a01130 New translations strings.xml (Japanese) 2023-09-23 13:16:04 +02:00
Grishka
fe1cfa1d7b Fix indexable setting 2023-09-22 21:33:21 +03:00
Eugen Rochko
b248797bb0 New translations strings.xml (Russian) 2023-09-22 20:28:14 +02:00
Grishka
f24eba08d3 Fix custom emojis in names setting 2023-09-22 21:27:30 +03:00
Eugen Rochko
0e89559a47 New translations strings.xml (Slovenian) 2023-09-22 19:30:53 +02:00
LucasGGamerM
d7ab019107 fix(ProfileFragment): hide lock/bot icons on enter edit mode 2023-09-22 10:13:36 -03:00
Espasant3
858657799f Translated using Weblate (Galician)
Currently translated at 98.1% (379 of 386 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/gl/
2023-09-22 12:53:08 +00:00
Eugen Rochko
d02a72e079 New translations strings.xml (Japanese) 2023-09-22 13:01:51 +02:00
Eugen Rochko
3be57d1b0b New translations strings.xml (Japanese) 2023-09-22 11:08:13 +02:00
Eugen Rochko
bed550e97c New translations strings.xml (Russian) 2023-09-22 09:19:11 +02:00
Eugen Rochko
7e2619ea75 New translations strings.xml (Italian) 2023-09-22 01:48:10 +02:00
Eugen Rochko
4b22f1d3a7 New translations strings.xml (Thai) 2023-09-21 21:39:59 +02:00
LucasGGamerM
885b3e3c60 refactor(ScheduledStatusListFragment): refactor the apply window insets method
This allows for a smoother experience in my views
2023-09-21 11:45:27 -03:00
Eugen Rochko
9dcc7e293f New translations strings.xml (Icelandic) 2023-09-21 15:39:27 +02:00
Eugen Rochko
6a68cf5e41 New translations strings.xml (Persian) 2023-09-21 13:13:31 +02:00
LucasGGamerM
1edcf847b5 fix(mute-conversation): don't show mute conversation toggle on scheduled posts 2023-09-21 07:48:24 -03:00
LucasGGamerM
f5aff4d262 fix(drafts): fix crash when editing a draft with a poll
Fixes #243
2023-09-21 07:32:24 -03:00
Grishka
29297be4a3 Merge branch 'l10n_master' 2023-09-20 22:43:16 +03:00
Eugen Rochko
90b87529e0 New translations strings.xml (Swedish) 2023-09-20 21:16:11 +02:00
Grishka
39af05524d Privacy settings 2023-09-20 21:44:28 +03:00
LucasGGamerM
2c8246341a fix(search): stop empty search queries from happening 2023-09-20 14:21:52 -03:00
LucasGGamerM
77e19b4d6f fix(compose): make 'This post will be saved as a draft' view work better on smaller screens
cc: @sk22
2023-09-20 10:31:59 -03:00
LucasGGamerM
18857e6233 refactor(compose): remove unnecessary drawables 2023-09-20 10:26:08 -03:00
LucasGGamerM
4aee67382b refactor(compose): move publish button icon coloring to compose_button.xml 2023-09-20 10:12:37 -03:00
LucasGGamerM
3656402277 fix(compose): fix bottom bar icons tint
This uses the action_bar_icons.xml color scheme to dictate the colors of the compose bottom bar items
2023-09-20 10:06:03 -03:00
Grishka
e3fb2cd03c Scroll profile tab views to top when tab is reselected 2023-09-20 14:47:25 +03:00
LucasGGamerM
56e752c0b3 feat(mute-conversations): also show mute conversation when your acct matches the mention acct
We all gotta love some edge cases
2023-09-20 08:42:52 -03:00
LucasGGamerM
de7bc49f85 feat(mute-conversations): also show mute conversation when your fully qualified name matches the username of the mention 2023-09-20 08:31:50 -03:00
LucasGGamerM
beeffdff91 fix(mute-conversations): fix NPE when the mention id is null
This fixes an issue causing the app to crash when there is a mention on a post from a remote timeline and you tap on the three dot menu on the post header
2023-09-20 08:20:54 -03:00
Gregory K
90f84d628a Merge pull request #694 from LucasGGamerM/mastodon-android
fix(compose): fix photoPicker not popping up when there is less than 2 spaces available for media
2023-09-20 14:10:26 +03:00
LucasGGamerM
b89e0b5c5a fix(compose): fix photoPicker not popping up when there is less than 2 spaces available for media 2023-09-20 07:55:23 -03:00
LucasGGamerM
2dd983c803 fix(compose): fix photoPicker not popping up when there is less than 2 spaces available for media 2023-09-20 07:46:39 -03:00
LucasGGamerM
bb895c88b2 Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (91 of 91 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/pt_BR/
2023-09-20 10:21:48 +00:00
LucasGGamerM
e33d0e692c Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (91 of 91 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/pt_BR/
2023-09-20 10:20:58 +00:00
Andrewblasco
133c941dc8 Translated using Weblate (Spanish)
Currently translated at 100.0% (91 of 91 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/es/
2023-09-20 10:20:58 +00:00
LucasGGamerM
62222cd1d9 feat(mute-conversations-toggle): Update mute/unmute confirmation dialog strings (again) 2023-09-20 07:20:41 -03:00
LucasGGamerM
5d358d79ff feat(mute-conversations-toggle): Update mute/unmute confirmation dialog strings 2023-09-20 07:12:17 -03:00
Espasant3
f724644d84 Translated using Weblate (Galician)
Currently translated at 89.6% (346 of 386 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/gl/
2023-09-19 21:53:09 +00:00
LucasGGamerM
f71c4b1374 Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (91 of 91 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/pt_BR/
2023-09-19 18:05:28 +00:00
Parsa Ranjbar
a921a925b0 Translated using Weblate (Persian)
Currently translated at 72.2% (60 of 83 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/fa/
2023-09-19 18:00:04 +00:00
butterflyoffire
0f08af8c03 Translated using Weblate (Arabic (Algeria))
Currently translated at 62.6% (52 of 83 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/ar_DZ/
2023-09-19 18:00:04 +00:00
butterflyoffire
d54a59dbee Translated using Weblate (French)
Currently translated at 98.7% (82 of 83 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/fr/
2023-09-19 18:00:04 +00:00
dontobi
c6cd3995b0 Translated using Weblate (German)
Currently translated at 100.0% (83 of 83 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/de/
2023-09-19 18:00:04 +00:00
edxkl
54d06b7a23 Translated using Weblate (Portuguese (Brazil))
Currently translated at 26.4% (9 of 34 strings)

Translation: Moshidon/metadata
Translate-URL: https://translate.codeberg.org/projects/moshidon/metadata/pt_BR/
2023-09-19 18:00:04 +00:00
Andrewblasco
1ec0505d52 Translated using Weblate (Spanish)
Currently translated at 100.0% (83 of 83 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/es/
2023-09-19 18:00:04 +00:00
LucasGGamerM
be225f8bb4 feat(mute-conversations-toggle): add success confirmation toast 2023-09-19 14:56:16 -03:00
LucasGGamerM
f5732fd2ae fix(mute-conversations-toggle): fix oversight where only the answers would get muted/unmuted on the conversion. This make the whole thread either muted or unmuted 2023-09-19 14:35:40 -03:00
LucasGGamerM
17fc14de97 refactor(mute-conversations-toggle): implement event for StatusMuteChanged 2023-09-19 14:26:46 -03:00
LucasGGamerM
7c9d11fab0 fix(thread-fragment): fixes crash when status.inReplyTo is null on getDirectDescendants 2023-09-19 14:25:03 -03:00
LucasGGamerM
24abf9d317 refactor(mute-conversations-toggle): remove unused method 2023-09-19 13:20:38 -03:00
LucasGGamerM
22bf8840d5 fix(mute-conversations-toggle): make unmute option work 2023-09-19 12:21:12 -03:00
LucasGGamerM
a1fbb733ce refactor(mute-conversations-toggle): move mute and unmute options to own menu group 2023-09-19 12:19:56 -03:00
LucasGGamerM
851fa70563 feat: add mute conversations menu item 2023-09-19 12:13:03 -03:00
LucasGGamerM
6cab15b4c6 fix(file-display-tem): fix title text padding 2023-09-19 11:44:08 -03:00
Eugen Rochko
aac89c354c New translations full_description.txt (Thai) 2023-09-18 20:35:41 +02:00
Eugen Rochko
a032f9af10 New translations strings.xml (French) 2023-09-18 20:34:32 +02:00
LucasGGamerM
ec3670d562 fix(reply-icon): fix reply icon side text coloring 2023-09-18 11:35:16 -03:00
LucasGGamerM
96c3bd890a fix(boost-icon): fixes coloring on boost icon (again)
why
2023-09-18 11:32:12 -03:00
LucasGGamerM
8a0852d1a4 fix(video-player): fixes coloring on video player items 2023-09-18 11:18:42 -03:00
LucasGGamerM
77e2c6c09f fix(video-player): fixes looping video Seekbar and timestamp going on indefinitely as video restarts 2023-09-18 10:36:32 -03:00
LucasGGamerM
af60c8ba4a fix(insets): fix window insets on video player 2023-09-18 07:37:47 -03:00
LucasGGamerM
70a2f1fc0b fix(themes): fix pink dark theme bottom bar pill color 2023-09-17 13:30:50 -03:00
LucasGGamerM
b7d06a47db fix(compose): fixes compose language button being too thin when
You can see its too thin by tapping on it and seeing the button shadow, which indicates its too thin
2023-09-17 13:03:18 -03:00
LucasGGamerM
f0a5799eea fix: fix warning status display item background being too bright 2023-09-17 12:50:10 -03:00
LucasGGamerM
f0b2a25dce fix(themes): fix purple light theme bottom bar pills being slightly off 2023-09-17 12:38:40 -03:00
LucasGGamerM
de1a3fb939 fix(strings): use correct "sk_settings_see_new_posts_button" instead of "sk_settings_show_new_posts_button" 2023-09-17 10:11:33 -03:00
LucasGGamerM
823344dfc0 Merge branch 'feat/mutes-list'
# Conflicts:
#	mastodon/src/main/res/menu/profile_own.xml
#	mastodon/src/main/res/values/strings_sk.xml
2023-09-17 10:09:02 -03:00
LucasGGamerM
a6e6143157 Merge branch 'fix/akkoma_media_issue_fix' 2023-09-17 10:02:14 -03:00
LucasGGamerM
b5feab89b4 Merge branch 'fix/gap-singular' 2023-09-17 09:59:15 -03:00
LucasGGamerM
c2c31de433 fix(notifications): make reply language equal to language of the status being replied to 2023-09-17 09:45:11 -03:00
LucasGGamerM
775f799968 fix(notifications): fix reply visibility being PUBLIC no matter the status being replied to 2023-09-17 09:41:58 -03:00
LucasGGamerM
5cda112129 refactor(PreviewlessMedia): move margin value to layout file 2023-09-17 09:26:33 -03:00
Eugen Rochko
642aaec6da New translations strings.xml (Persian) 2023-09-17 14:08:04 +02:00
LucasGGamerM
f69ae5e816 refactor(PreviewlessMediaItems): make FileStatusDisplayItem be used only for files 2023-09-17 08:41:32 -03:00
LucasGGamerM
91c7fc64bd refactor(PreviewlessMediaItems): remove unused class 2023-09-17 08:37:07 -03:00
LucasGGamerM
91211b7720 refactor: do some final adjustments to PreviewlessMediaGridStatusDisplayItem layout 2023-09-17 08:34:29 -03:00
Eugen Rochko
ff667d6aed New translations strings.xml (Persian) 2023-09-17 12:27:57 +02:00
Eugen Rochko
5e98496ea6 New translations strings.xml (Vietnamese) 2023-09-17 10:39:46 +02:00
Eugen Rochko
972fe1d15b New translations strings.xml (Italian) 2023-09-17 10:39:45 +02:00
Eugen Rochko
26eaa36faa New translations strings.xml (Finnish) 2023-09-17 10:39:44 +02:00
Grishka
c517f41595 Paginate search results 2023-09-17 11:20:12 +03:00
Grishka
56a6d7243f Crash fixes 2023-09-17 10:49:13 +03:00
Grishka
18e43dfc22 Crash fix 2023-09-17 10:32:59 +03:00
Grishka
816f6370ef Fix #690 2023-09-17 10:26:27 +03:00
LucasGGamerM
51ef732d50 fix: fix crashes on PreviewlessMediaGridStatusDisplayItem 2023-09-16 16:22:00 -03:00
LucasGGamerM
31a7aa9d40 refactor: start of refactor of previewless media status display item
Its crashing a lot, and has a lot to be done
2023-09-16 16:14:48 -03:00
butterflyoffire
30866a5292 Translated using Weblate (Arabic)
Currently translated at 71.5% (276 of 386 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/ar/
2023-09-16 08:53:08 +00:00
Espasant3
3e1403d18a Translated using Weblate (Galician)
Currently translated at 85.2% (329 of 386 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/gl/
2023-09-16 08:53:08 +00:00
Eugen Rochko
ebc2b2e59d New translations strings.xml (Arabic) 2023-09-15 11:51:46 +02:00
FineFindus
10c2ee9597 fix(timeline/gap): use plurals for time 2023-09-15 10:19:43 +02:00
Eugen Rochko
c9a796dbfe New translations strings.xml (Arabic) 2023-09-15 10:16:56 +02:00
Eugen Rochko
1ba185ea9c New translations strings.xml (Vietnamese) 2023-09-15 03:45:44 +02:00
EndermanCo
1a50c3ff5f Translated using Weblate (Persian)
Currently translated at 66.6% (12 of 18 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/fa/
2023-09-14 17:53:07 +00:00
EndermanCo
35a85c3247 Translated using Weblate (Persian)
Currently translated at 100.0% (386 of 386 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/fa/
2023-09-14 17:53:07 +00:00
GunChleoc
6a729fa97f Translated using Weblate (Gaelic)
Currently translated at 100.0% (386 of 386 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/gd/
2023-09-14 17:53:07 +00:00
kallekn
923639a329 Translated using Weblate (Finnish)
Currently translated at 94.5% (365 of 386 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/fi/
2023-09-14 17:53:07 +00:00
Jacocococo
fd99879ffc Revert "Fix media layout with unknown sizes"
This reverts commit a014fe9443.
2023-09-14 17:16:03 +02:00
Eugen Rochko
a78be8bc1d New translations strings.xml (Chinese Traditional) 2023-09-14 12:55:27 +02:00
Eugen Rochko
abfb497577 New translations strings.xml (Chinese Traditional) 2023-09-14 11:17:24 +02:00
Eugen Rochko
a10b184508 New translations full_description.txt (Finnish) 2023-09-13 21:32:19 +02:00
Eugen Rochko
f0ea6660e6 New translations strings.xml (Finnish) 2023-09-13 21:32:18 +02:00
Eugen Rochko
a829f25d56 New translations strings.xml (Thai) 2023-09-13 20:36:48 +02:00
Eugen Rochko
deff3dd8e0 New translations strings.xml (Finnish) 2023-09-13 20:36:47 +02:00
LucasGGamerM
ed6aa0725e Revert "fix: use better colors for true black mode"
This reverts commit 69272e891e.
2023-09-13 08:26:02 -03:00
LucasGGamerM
6fd9047a8e fix: use consistent coloring on boost icon 2023-09-13 07:57:19 -03:00
LucasGGamerM
48d7635a56 fix: unscrew the brown theme 2023-09-13 07:54:34 -03:00
LucasGGamerM
9515edea4b feat: make images scrollable in hidden preview mode 2023-09-13 07:43:00 -03:00
EndermanCo
dab596f527 Translated using Weblate (Persian)
Currently translated at 55.5% (10 of 18 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/fa/
2023-09-13 09:53:07 +00:00
EndermanCo
0c18ab2319 Translated using Weblate (Persian)
Currently translated at 95.5% (369 of 386 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/fa/
2023-09-13 09:53:07 +00:00
LucasGGamerM
652c5e1d16 fix: unscrew the black & white theme 2023-09-12 15:14:08 -03:00
LucasGGamerM
e1d9cc4add fix: unscrew the NORD theme 2023-09-12 15:11:33 -03:00
LucasGGamerM
d51cd2d497 fix: finally get the red theme right
THIS WAS PAINFUL. Please go fund me at github.com/sponsors/LucasGGamerM
2023-09-12 15:03:13 -03:00
LucasGGamerM
39d1b69014 fix: finally get the yellow theme right 2023-09-12 13:04:02 -03:00
LucasGGamerM
74a9e49190 fix: finally get the brown theme right 2023-09-12 11:27:43 -03:00
LucasGGamerM
b0763473c7 feat: rework colors blue and green. Brown WIP 2023-09-12 11:09:46 -03:00
LucasGGamerM
4e5bbe6f9b refactor(themes): start theme refactoring 2023-09-12 08:17:23 -03:00
Eugen Rochko
6c5fb5ea09 New translations strings.xml (Dutch) 2023-09-12 12:25:35 +02:00
Eugen Rochko
afe0c9e0db New translations strings.xml (Dutch) 2023-09-12 10:19:31 +02:00
Eugen Rochko
1f2213042f New translations strings.xml (Urdu (India)) 2023-09-12 06:51:43 +02:00
Eugen Rochko
5edd2466f9 New translations strings.xml (Kabyle) 2023-09-12 06:51:42 +02:00
Eugen Rochko
f3b3a1a577 New translations strings.xml (Igbo) 2023-09-12 06:51:41 +02:00
Eugen Rochko
068619b815 New translations strings.xml (Occitan) 2023-09-12 06:51:40 +02:00
Eugen Rochko
f121e94979 New translations strings.xml (Scottish Gaelic) 2023-09-12 06:51:39 +02:00
Eugen Rochko
b5b52529d4 New translations strings.xml (Sinhala) 2023-09-12 06:51:38 +02:00
Eugen Rochko
876bf73454 New translations strings.xml (Bosnian) 2023-09-12 06:51:37 +02:00
Eugen Rochko
522dbf6e4a New translations strings.xml (Filipino) 2023-09-12 06:51:36 +02:00
Eugen Rochko
ae685095ba New translations strings.xml (Burmese) 2023-09-12 06:51:35 +02:00
Eugen Rochko
30d5fe2f12 New translations strings.xml (Hindi) 2023-09-12 06:51:34 +02:00
Eugen Rochko
2bf27c561c New translations strings.xml (Croatian) 2023-09-12 06:51:33 +02:00
Eugen Rochko
bbdc72323d New translations strings.xml (Thai) 2023-09-12 06:51:31 +02:00
Eugen Rochko
6e335930f3 New translations strings.xml (Bengali) 2023-09-12 06:51:31 +02:00
Eugen Rochko
9b309939da New translations strings.xml (Persian) 2023-09-12 06:51:30 +02:00
Eugen Rochko
faf2e5115d New translations strings.xml (Indonesian) 2023-09-12 06:51:28 +02:00
Eugen Rochko
dc5d9412c8 New translations strings.xml (Portuguese, Brazilian) 2023-09-12 06:51:27 +02:00
Eugen Rochko
fc0680d66f New translations strings.xml (Icelandic) 2023-09-12 06:51:26 +02:00
Eugen Rochko
56c9a5433f New translations strings.xml (Galician) 2023-09-12 06:51:25 +02:00
Eugen Rochko
60e473ee55 New translations strings.xml (Vietnamese) 2023-09-12 06:51:24 +02:00
Eugen Rochko
ae34ecd5c3 New translations strings.xml (Chinese Traditional) 2023-09-12 06:51:23 +02:00
Eugen Rochko
fd1caa8729 New translations strings.xml (Chinese Simplified) 2023-09-12 06:51:22 +02:00
Eugen Rochko
1182e5c60c New translations strings.xml (Ukrainian) 2023-09-12 06:51:21 +02:00
Eugen Rochko
d99d515dfa New translations strings.xml (Turkish) 2023-09-12 06:51:20 +02:00
Eugen Rochko
70a15e7d9c New translations strings.xml (Swedish) 2023-09-12 06:51:19 +02:00
Eugen Rochko
1691382369 New translations strings.xml (Slovenian) 2023-09-12 06:51:18 +02:00
Eugen Rochko
b7da9c6d51 New translations strings.xml (Russian) 2023-09-12 06:51:17 +02:00
Eugen Rochko
3426538dca New translations strings.xml (Portuguese) 2023-09-12 06:51:16 +02:00
Eugen Rochko
63de2b200b New translations strings.xml (Polish) 2023-09-12 06:51:15 +02:00
Eugen Rochko
ff1ee766dc New translations strings.xml (Norwegian) 2023-09-12 06:51:14 +02:00
Eugen Rochko
f033411adf New translations strings.xml (Dutch) 2023-09-12 06:51:13 +02:00
Eugen Rochko
a738eaf8c0 New translations strings.xml (Korean) 2023-09-12 06:51:12 +02:00
Eugen Rochko
5074aadd6e New translations strings.xml (Japanese) 2023-09-12 06:51:11 +02:00
Eugen Rochko
0854961470 New translations strings.xml (Italian) 2023-09-12 06:51:10 +02:00
Eugen Rochko
227b077935 New translations strings.xml (Armenian) 2023-09-12 06:51:09 +02:00
Eugen Rochko
1e4358290a New translations strings.xml (Hungarian) 2023-09-12 06:51:08 +02:00
Eugen Rochko
925169eb31 New translations strings.xml (Hebrew) 2023-09-12 06:51:07 +02:00
Eugen Rochko
e1abeb9252 New translations strings.xml (Irish) 2023-09-12 06:51:07 +02:00
Eugen Rochko
cbe0add211 New translations strings.xml (Finnish) 2023-09-12 06:51:06 +02:00
Eugen Rochko
299b524d62 New translations strings.xml (Basque) 2023-09-12 06:51:05 +02:00
Eugen Rochko
31c094e696 New translations strings.xml (Greek) 2023-09-12 06:51:04 +02:00
Eugen Rochko
a8038a2863 New translations strings.xml (German) 2023-09-12 06:51:02 +02:00
Eugen Rochko
29933bb916 New translations strings.xml (Danish) 2023-09-12 06:51:01 +02:00
Eugen Rochko
5ec0c078d8 New translations strings.xml (Czech) 2023-09-12 06:51:00 +02:00
Eugen Rochko
e6287f1ff2 New translations strings.xml (Catalan) 2023-09-12 06:50:59 +02:00
Eugen Rochko
be9caf8905 New translations strings.xml (Belarusian) 2023-09-12 06:50:58 +02:00
Eugen Rochko
f375142084 New translations strings.xml (Arabic) 2023-09-12 06:50:57 +02:00
Eugen Rochko
fd3668d520 New translations strings.xml (Spanish) 2023-09-12 06:50:56 +02:00
Eugen Rochko
d5e03e9d9e New translations strings.xml (French) 2023-09-12 06:50:55 +02:00
Eugen Rochko
d62f094919 New translations strings.xml (Romanian) 2023-09-12 06:50:54 +02:00
Grishka
6d84f28600 Hashtag following
closes #684, closes #233
2023-09-12 07:49:14 +03:00
Grishka
209e603f2c oops 2023-09-12 06:05:45 +03:00
Grishka
1b4dc01c74 Post translation
closes #267, closes #671, closes #502
2023-09-12 06:00:40 +03:00
Andrewblasco
6aab8f6578 Translated using Weblate (Spanish)
Currently translated at 100.0% (386 of 386 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/es/
2023-09-12 02:43:45 +00:00
Grishka
645af12c3f Merge branch 'l10n_master' 2023-09-12 02:32:38 +03:00
Grishka
fadc42d72b New version 2023-09-12 02:32:23 +03:00
Eugen Rochko
fc831e7d42 New translations strings.xml (Portuguese, Brazilian) 2023-09-11 22:36:20 +02:00
LucasGGamerM
1ba30a4d28 Merge remote-tracking branch 'megalodon_main/main'
# Conflicts:
#	mastodon/build.gradle
#	mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/FooterStatusDisplayItem.java
#	mastodon/src/main/res/values-ar/strings_sk.xml
#	mastodon/src/main/res/values-fr-rFR/strings_sk.xml
#	mastodon/src/main/res/values-ja-rJP/strings_sk.xml
#	metadata/ar/short_description.txt
2023-09-11 16:47:24 -03:00
Eugen Rochko
2998ee9145 New translations strings.xml (Finnish) 2023-09-11 20:09:41 +02:00
Eugen Rochko
971c4e5879 New translations strings.xml (Finnish) 2023-09-11 19:00:28 +02:00
Linerly
48c53ee88b Translated using Weblate (Indonesian)
Currently translated at 100.0% (18 of 18 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/id/
2023-09-11 14:53:07 +00:00
Linerly
acf1fa15da Translated using Weblate (Indonesian)
Currently translated at 100.0% (386 of 386 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/id/
2023-09-11 14:53:07 +00:00
poesty
1c3b28f9d7 Translated using Weblate (Chinese (Simplified))
Currently translated at 99.7% (385 of 386 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/zh_Hans/
2023-09-11 14:53:07 +00:00
FineFindus
e274cf89c0 refactor: add query params 2023-09-10 21:31:06 +02:00
FineFindus
8929482466 feat: add blocks fragment 2023-09-10 21:29:40 +02:00
FineFindus
b570c8d946 feat: add mutes fragment 2023-09-10 21:19:50 +02:00
Eugen Rochko
b396ee7987 New translations strings.xml (Indonesian) 2023-09-10 15:07:27 +02:00
butterflyoffire
90856a414a Translated using Weblate (Arabic)
Currently translated at 16.6% (3 of 18 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/ar/
2023-09-09 20:53:07 +00:00
butterflyoffire
ea19925be6 Translated using Weblate (Arabic)
Currently translated at 69.1% (267 of 386 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/ar/
2023-09-09 20:53:07 +00:00
ihor_ck
03b3775843 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (386 of 386 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/uk/
2023-09-09 20:53:07 +00:00
edxkl
38b39751ae Translated using Weblate (Portuguese (Brazil))
Currently translated at 97.1% (375 of 386 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/pt_BR/
2023-09-09 20:53:07 +00:00
Oliebol
54a4b0fe41 Translated using Weblate (Dutch)
Currently translated at 81.8% (316 of 386 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/nl/
2023-09-09 20:53:07 +00:00
Choukajohn
3bf591c944 Translated using Weblate (French)
Currently translated at 100.0% (386 of 386 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/fr/
2023-09-09 20:53:06 +00:00
gallegonovato
584a6bbfa3 Translated using Weblate (Spanish)
Currently translated at 100.0% (386 of 386 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/es/
2023-09-09 20:53:06 +00:00
Eugen Rochko
0f803cd4fa New translations strings.xml (Finnish) 2023-09-09 20:30:25 +02:00
Eugen Rochko
167a14b8db New translations strings.xml (Finnish) 2023-09-09 19:29:29 +02:00
Eugen Rochko
81cbc2d10c New translations strings.xml (Ukrainian) 2023-09-09 15:40:28 +02:00
Eugen Rochko
9bd8aff99b New translations strings.xml (Finnish) 2023-09-09 12:08:15 +02:00
Eugen Rochko
a770828165 New translations strings.xml (Finnish) 2023-09-09 11:09:40 +02:00
Eugen Rochko
ab457035ff New translations strings.xml (Finnish) 2023-09-09 08:34:27 +02:00
Grishka
f886e4c1d2 Fix #658, fix #620 2023-09-09 03:39:27 +03:00
sk
380e4ff77e remove unused member 2023-09-09 01:48:49 +02:00
sk
58f0c07357 determine next display item using items list
closes sk22#815
2023-09-09 01:27:32 +02:00
sk
77dee59b9c fix string and tweak banner margin
closes sk22#812
2023-09-09 01:24:36 +02:00
edxkl
464dc93d99 Translated using Weblate (Portuguese (Brazil))
Currently translated at 95.8% (368 of 384 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/pt_BR/
2023-09-08 20:22:51 +00:00
gallegonovato
dcdfd3e5d3 Translated using Weblate (Spanish)
Currently translated at 100.0% (384 of 384 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/es/
2023-09-08 20:22:51 +00:00
sk
646f83ff0a boop verison 2023-09-08 22:19:41 +02:00
sk
fdf0414698 fix missing banner icons and wrong strings
closes sk22#805
2023-09-08 22:05:06 +02:00
sk
cc699a3f5e fix spacing stuff in report fragment 2023-09-08 21:58:08 +02:00
LucasGGamerM
12eaa8d5f1 fix: fix window insets on ScheduledStatusListFragment
cc: @sk22
2023-09-08 21:49:29 +02:00
sk22
70680e39c6 Translated using Weblate (German)
Currently translated at 100.0% (384 of 384 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/de/
2023-09-08 19:46:45 +00:00
sk
8bd8f90d58 remove unused strings 2023-09-08 21:44:31 +02:00
edxkl
54b53a266e Translated using Weblate (Portuguese (Brazil))
Currently translated at 93.2% (362 of 388 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/pt_BR/
2023-09-08 19:40:59 +00:00
sk22
66921e3b5a Translated using Weblate (German)
Currently translated at 97.1% (377 of 388 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/de/
2023-09-08 19:40:59 +00:00
sk22
9d7af3964b Translated using Weblate (English)
Currently translated at 100.0% (388 of 388 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/en/
2023-09-08 19:40:59 +00:00
ihor_ck
ec73687e9b Translated using Weblate (Ukrainian)
Currently translated at 100.0% (382 of 382 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/uk/
2023-09-08 19:17:03 +00:00
Choukajohn
c8af800b88 Translated using Weblate (French)
Currently translated at 100.0% (382 of 382 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/fr/
2023-09-08 19:17:02 +00:00
gallegonovato
e74ac5da56 Translated using Weblate (Spanish)
Currently translated at 99.4% (380 of 382 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/es/
2023-09-08 19:17:02 +00:00
sk
efa003a9a5 implement bidirectional missing posts gap 2023-09-08 21:16:42 +02:00
butterflyoffire
de5165434d Translated using Weblate (Arabic)
Currently translated at 16.6% (3 of 18 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/ar/
2023-09-08 15:43:13 +00:00
sk
be648cc5ab Merge remote-tracking branch 'upstream/l10n_master' 2023-09-08 17:42:47 +02:00
sk
90f1f464dc reset strings.xml to upstream 2023-09-08 17:41:30 +02:00
sk
734aa52816 Merge remote-tracking branch 'weblate/main' 2023-09-08 17:37:31 +02:00
sk
068d42175e Merge remote-tracking branch 'upstream/master' 2023-09-08 17:37:00 +02:00
sk
2314871246 temporary fix for pre-release users 2023-09-08 17:36:17 +02:00
butterflyoffire
e4f13c900b Translated using Weblate (Arabic)
Currently translated at 67.5% (250 of 370 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/ar/
2023-09-07 19:23:10 +00:00
ppnplus
4ddfa483d4 Translated using Weblate (Thai)
Currently translated at 23.5% (87 of 370 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/th/
2023-09-07 19:23:10 +00:00
butterflyoffire
20f41ce7c9 Translated using Weblate (Kabyle)
Currently translated at 0.5% (2 of 370 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/kab/
2023-09-07 19:23:10 +00:00
Arkxv
c8df9e085e Translated using Weblate (Japanese)
Currently translated at 78.3% (290 of 370 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/ja/
2023-09-07 19:23:10 +00:00
GunChleoc
0238aa4375 Translated using Weblate (Gaelic)
Currently translated at 84.3% (312 of 370 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/gd/
2023-09-07 19:23:09 +00:00
butterflyoffire
79d7873790 Translated using Weblate (French)
Currently translated at 100.0% (370 of 370 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/fr/
2023-09-07 19:23:09 +00:00
kallekn
996842489d Translated using Weblate (Finnish)
Currently translated at 100.0% (370 of 370 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/fi/
2023-09-07 19:23:09 +00:00
Andrewblasco
23c2c2b5e7 Translated using Weblate (Spanish)
Currently translated at 100.0% (370 of 370 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/es/
2023-09-07 19:23:08 +00:00
sk
9dd694ce2e Merge branch 'merge/load-more-direction' 2023-09-07 18:32:21 +02:00
FineFindus
f51f2a1197 fix: use random account id in notification endpoint (#806)
Closes https://github.com/sk22/megalodon/issues/803. This was due to registering with the actual accounId, whilst saving a random one. Once receiving a notification, the id could not be found.
2023-09-07 18:28:32 +02:00
LucasGGamerM
3020cab243 fix: fixes crashes when currentQuery is null and suicide prevention dialog is enabled (#807)
cc: @FineFindus
2023-09-07 10:03:22 +02:00
Eugen Rochko
be73c9e81c New translations strings.xml (Basque) 2023-09-07 02:28:42 +02:00
Eugen Rochko
1c2183bf1a New translations strings.xml (Slovenian) 2023-09-06 22:29:03 +02:00
LucasGGamerM
da54c93af1 Merge branch 'fix/notification-endpoint' 2023-09-06 14:34:27 -03:00
LucasGGamerM
777891ebe9 fix: fixes crashes when currentQuery is null and suicide prevention dialog is enabled
cc: @FineFindus
2023-09-06 11:24:50 -03:00
Andrewblasco
9836538562 Translated using Weblate (Spanish)
Currently translated at 100.0% (83 of 83 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/es/
2023-09-06 12:12:24 +00:00
GunChleoc
4a443d4826 Translated using Weblate (Gaelic)
Currently translated at 100.0% (83 of 83 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/gd/
2023-09-06 12:07:38 +00:00
butterflyoffire
1c93d1fa67 Translated using Weblate (French)
Currently translated at 90.3% (75 of 83 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/fr/
2023-09-06 12:07:38 +00:00
LucasGGamerM
0246059556 Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (83 of 83 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/pt_BR/
2023-09-06 12:07:38 +00:00
butterflyoffire
46382bd8b0 Translated using Weblate (Arabic (Algeria))
Currently translated at 62.1% (51 of 82 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/ar_DZ/
2023-09-06 12:07:38 +00:00
LucasGGamerM
090d2658dd feat: also hide link card image previews according to showMediaPreview setting 2023-09-06 09:06:14 -03:00
LucasGGamerM
e47fa4f8db Merge pull request #255
fix: update timeline when showMediaPreview changes
2023-09-06 09:00:16 -03:00
FineFindus
8338fff4e5 fix: use random account id in notification endpoint
Closes https://github.com/sk22/megalodon/issues/803. This was due to registering with the actual accounId, whilst saving a random one. Once receiving a notification, the id could not be found.
2023-09-06 09:44:03 +02:00
FineFindus
b2d09c2ab6 fix: update timeline when showMediaPreview changes 2023-09-06 09:05:51 +02:00
LucasGGamerM
0aa4493e5c Merge remote-tracking branch 'mastodon/master' 2023-09-05 20:51:12 -03:00
LucasGGamerM
6e2a5437e8 fix: apply correct showMediaPreview setting on threads and notifications 2023-09-05 20:46:56 -03:00
LucasGGamerM
ae61007d22 fix: use correct polarization in FLAG_NO_MEDIA_PREVIEW in StatusListFragment
Wtf is wrong with this
2023-09-05 20:29:57 -03:00
LucasGGamerM
20f3c7c9db fix: use correct polarization in FLAG_NO_MEDIA_PREVIEW 2023-09-05 19:52:59 -03:00
Gregory K
1789d90dc3 Merge pull request #685 from LucasGGamerM/mastodon-android
fix(editing-alt-text): fix small oversight on editing existing attachments without alt text
2023-09-06 01:42:41 +03:00
LucasGGamerM
57306ff7fe fix(editing-alt-text): fix small oversight on editing existing attachments without alt text
This makes the implementation hopefully bug free
2023-09-05 19:37:12 -03:00
LucasGGamerM
bbdd1c4aa9 fix(editing-alt-text): fix small oversight on editing existing attachments without alt text
This makes the implementation hopefully bug free
2023-09-05 19:00:16 -03:00
LucasGGamerM
81d13537e3 fix: fixes incorrect icon coloring on compose fragment relocated publish button 2023-09-05 15:19:46 -03:00
LucasGGamerM
b6c951c026 feat: add indicatives/hints of what type of media is on an media item without preview 2023-09-05 14:51:32 -03:00
LucasGGamerM
860cdb05e2 feat: add no alt text and sensitive media warning to images without preview 2023-09-05 14:25:20 -03:00
LucasGGamerM
e239600af6 feat: full implementation of not showing media preview in timelines 2023-09-05 11:56:56 -03:00
LucasGGamerM
d7bef67550 feat: initial steps for only show media preview setting
It contains settings, flags and settings. But no implementation just yet
2023-09-05 11:24:35 -03:00
LucasGGamerM
ad86a00fa7 fix: make changing showPostDividers setting restart the activity 2023-09-05 10:37:17 -03:00
LucasGGamerM
da13926269 Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (82 of 82 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/pt_BR/
2023-09-05 12:21:52 +00:00
LucasGGamerM
9da0173215 Translated using Weblate (Portuguese (Brazil))
Currently translated at 93.9% (77 of 82 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/pt_BR/
2023-09-05 12:16:25 +00:00
LucasGGamerM
cfeda06bf9 fix: make repo and donate links non-translatable 2023-09-05 09:16:07 -03:00
butterflyoffire
ca60ac6722 Translated using Weblate (Arabic (Algeria))
Currently translated at 2.9% (1 of 34 strings)

Translation: Moshidon/metadata
Translate-URL: https://translate.codeberg.org/projects/moshidon/metadata/ar_DZ/
2023-09-05 12:09:40 +00:00
butterflyoffire
80f70bd530 Translated using Weblate (Arabic (Algeria))
Currently translated at 44.0% (164 of 372 strings)

Translation: Moshidon/values_sk
Translate-URL: https://translate.codeberg.org/projects/moshidon/values_sk/ar_DZ/
2023-09-05 12:09:40 +00:00
butterflyoffire
3982fa4835 Translated using Weblate (Arabic)
Currently translated at 0.0% (0 of 34 strings)

Translation: Moshidon/metadata
Translate-URL: https://translate.codeberg.org/projects/moshidon/metadata/ar/
2023-09-05 12:09:40 +00:00
butterflyoffire
31e720690c Translated using Weblate (French)
Currently translated at 100.0% (372 of 372 strings)

Translation: Moshidon/values_sk
Translate-URL: https://translate.codeberg.org/projects/moshidon/values_sk/fr/
2023-09-05 12:09:40 +00:00
butterflyoffire
560c75c669 Translated using Weblate (Arabic (Algeria))
Currently translated at 13.4% (11 of 82 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/ar_DZ/
2023-09-05 12:09:40 +00:00
butterflyoffire
fb441b21e0 Translated using Weblate (Burmese)
Currently translated at 2.9% (1 of 34 strings)

Translation: Moshidon/metadata
Translate-URL: https://translate.codeberg.org/projects/moshidon/metadata/my/
2023-09-05 12:09:40 +00:00
butterflyoffire
e2f957f985 Translated using Weblate (Chinese (Traditional))
Currently translated at 5.8% (2 of 34 strings)

Translation: Moshidon/metadata
Translate-URL: https://translate.codeberg.org/projects/moshidon/metadata/zh_Hant/
2023-09-05 12:09:40 +00:00
butterflyoffire
a4f97a134b Translated using Weblate (Croatian)
Currently translated at 5.8% (2 of 34 strings)

Translation: Moshidon/metadata
Translate-URL: https://translate.codeberg.org/projects/moshidon/metadata/hr/
2023-09-05 12:09:40 +00:00
butterflyoffire
18ae9efad3 Translated using Weblate (French)
Currently translated at 2.9% (1 of 34 strings)

Translation: Moshidon/metadata
Translate-URL: https://translate.codeberg.org/projects/moshidon/metadata/fr/
2023-09-05 12:09:39 +00:00
butterflyoffire
8232047c55 Translated using Weblate (French)
Currently translated at 90.2% (74 of 82 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/fr/
2023-09-05 12:09:39 +00:00
LucasGGamerM
fb3b9513f2 fix: fix window insets on ScheduledStatusListFragment
cc: @sk22
2023-09-05 08:21:06 -03:00
LucasGGamerM
2ee4b03fe8 refactor: remove DomainDisplay.java 2023-09-05 07:23:07 -03:00
LucasGGamerM
61b20eea05 Merge remote-tracking branch 'megalodon_main/main'
# Conflicts:
#	mastodon/src/main/java/org/joinmastodon/android/GlobalUserPreferences.java
#	mastodon/src/main/java/org/joinmastodon/android/model/Account.java
2023-09-05 07:12:27 -03:00
sk
2aba90f353 add media indicator for spoiler
closes sk22#598
2023-09-05 00:18:47 +02:00
sk
5065c7e7e2 add dummy to add spacing
closes sk22#782
2023-09-04 23:42:00 +02:00
sk
a10e661b21 fix wrong info banner color
closes sk22#790
2023-09-04 23:37:34 +02:00
sk
4975bde76f fix tab layout horizontal paddings 2023-09-04 23:33:35 +02:00
FineFindus
ebbd56e3bc feat(search): show suicide help dialog (#767)
* feat(search): show suicide help dialog

* change wording, add helpline url, change behavior

---------

Co-authored-by: sk <sk22@mailbox.org>
2023-09-04 23:07:24 +02:00
Jacoco
454ec6b4c0 Fix errors when some entries were missing when retrieving account information (#757)
* Handle null avatar

* Handle empty account
2023-09-04 22:24:17 +02:00
FineFindus
10a8b195b1 fix: move tabbar padding to tabbar items (#792)
* feat: increase padding without labels

* fix: move tabbar padding to individual items
2023-09-04 22:19:47 +02:00
sk
6f273df060 use single-line linear layout 2023-09-04 19:54:07 +02:00
sk
7cfade62d3 fix click listener target 2023-09-04 19:53:33 +02:00
LucasGGamerM
0e58b00086 fix: make use of correct coloring in filled button backgrounds (again) 2023-09-04 12:13:55 -03:00
LucasGGamerM
9f18844148 fix: make use of correct coloring in filled button backgrounds 2023-09-04 11:18:36 -03:00
LucasGGamerM
d854da54fe fix: make purple be on top of pink
Me no likey pink >:C
2023-09-04 10:39:37 -03:00
LucasGGamerM
33f4dd4716 fix: compose fragment bottom drafts button being not centered 2023-09-04 10:31:01 -03:00
LucasGGamerM
93ca187f1c fix: use bigger bot icon on header display item 2023-09-04 07:56:17 -03:00
LucasGGamerM
6fd59a19e8 fix: remove duplicate variable assigning 2023-09-04 07:46:42 -03:00
LucasGGamerM
531ce568c0 Merge remote-tracking branch 'megalodon_main/main'
# Conflicts:
#	mastodon/src/main/java/org/joinmastodon/android/fragments/ProfileFragment.java
#	mastodon/src/main/res/drawable/ic_fluent_bot_20_filled.xml
#	mastodon/src/main/res/layout/display_item_header.xml
2023-09-04 07:42:25 -03:00
LucasGGamerM
c49b25454e refactor(HomeFragment): refactor long click action for cleaner code 2023-09-04 07:35:48 -03:00
LucasGGamerM
d39d5c2602 Merge pull request #252
feat: allow doubleTapToSwipe when doubleTapToSearch is disabled
2023-09-04 07:19:54 -03:00
starstuff
0a338ad607 Translated using Weblate (Swedish)
Currently translated at 41.6% (154 of 370 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/sv/
2023-09-04 08:05:19 +00:00
Arkxv
0cb3e1863e Translated using Weblate (Japanese)
Currently translated at 5.4% (20 of 370 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/ja/
2023-09-04 08:05:19 +00:00
kallekn
209081f1f0 Translated using Weblate (Finnish)
Currently translated at 0.8% (3 of 370 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/fi/
2023-09-04 08:05:19 +00:00
Eugen Rochko
f0eb6573f4 New translations strings.xml (Portuguese, Brazilian) 2023-09-04 08:10:24 +02:00
Eugen Rochko
e7f5dd3357 New translations strings.xml (Bengali) 2023-09-04 07:10:06 +02:00
Eugen Rochko
8101bb9ea1 New translations strings.xml (Portuguese, Brazilian) 2023-09-04 07:10:05 +02:00
butterflyoffire
54d48253d5 Translated using Weblate (Arabic)
Currently translated at 12.4% (46 of 370 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/ar/
2023-09-04 00:53:06 +00:00
ca
3373b2bb04 Translated using Weblate (Catalan)
Currently translated at 100.0% (18 of 18 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/ca/
2023-09-04 00:53:06 +00:00
ca
a7e23aa228 Translated using Weblate (Catalan)
Currently translated at 100.0% (370 of 370 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/ca/
2023-09-04 00:53:06 +00:00
FineFindus
a2d0738a68 fix: only call openSearch once without doubleTapToSearch 2023-09-03 21:47:45 +02:00
FineFindus
8cd55fc365 feat: display icon for bots (#793)
* feat(profile): display bot icon for bots

* feat(status): display bot icon

* use 16sp size and 4sp spacing

* don't add lock/bot icon as image spans

---------

Co-authored-by: sk <sk22@mailbox.org>
2023-09-03 21:34:22 +02:00
LucasGGamerM
924d6a9dd9 Merge remote-tracking branch 'weblate/master'
# Conflicts:
#	mastodon/src/main/res/values-es-rES/strings_sk.xml
#	mastodon/src/main/res/values-fr-rFR/strings_sk.xml
2023-09-03 16:34:13 -03:00
butterflyoffire
816a307bc0 Translated using Weblate (Arabic (Algeria))
Currently translated at 18.3% (68 of 370 strings)

Translation: Moshidon/values_sk
Translate-URL: https://translate.codeberg.org/projects/moshidon/values_sk/ar_DZ/
2023-09-03 19:31:20 +00:00
butterflyoffire
a947a6ea26 Translated using Weblate (Arabic)
Currently translated at 18.9% (70 of 370 strings)

Translation: Moshidon/values_sk
Translate-URL: https://translate.codeberg.org/projects/moshidon/values_sk/ar/
2023-09-03 19:31:20 +00:00
LucasGGamerM
f14df2bb0f fix: allows for editing timeline badges again. fixes sk22#800 (#804) 2023-09-03 20:49:29 +02:00
LucasGGamerM
b5123ff865 feat: readd recent emoji support 2023-09-03 15:32:35 -03:00
FineFindus
ca4630e6e1 feat: always allow longtap to search 2023-09-03 16:00:11 +02:00
FineFindus
a8a1c7824d feat: allow doubleTapToSwipe in discoverfragment 2023-09-03 15:59:19 +02:00
FineFindus
0725c2a741 feat: add setting to disable double tap to search 2023-09-03 15:47:11 +02:00
LucasGGamerM
c3f3a9be7e feat: update edit note confirmation button design (again) 2023-09-03 09:23:33 -03:00
Eugen Rochko
228fdc8ffe New translations strings.xml (Swedish) 2023-09-03 11:26:37 +02:00
butterflyoffire
da2a69b4a1 Translated using Weblate (Arabic)
Currently translated at 48.7% (39 of 80 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/ar/
2023-09-03 09:20:46 +00:00
butterflyoffire
822a6a3653 Translated using Weblate (French)
Currently translated at 99.7% (369 of 370 strings)

Translation: Moshidon/values_sk
Translate-URL: https://translate.codeberg.org/projects/moshidon/values_sk/fr/
2023-09-03 09:20:46 +00:00
butterflyoffire
410f694863 Translated using Weblate (Arabic)
Currently translated at 18.3% (68 of 370 strings)

Translation: Moshidon/values_sk
Translate-URL: https://translate.codeberg.org/projects/moshidon/values_sk/ar/
2023-09-03 09:20:46 +00:00
butterflyoffire
57b2596d9f Translated using Weblate (French)
Currently translated at 83.7% (67 of 80 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/fr/
2023-09-03 09:20:45 +00:00
ca
caebce897b Translated using Weblate (Catalan)
Currently translated at 35.0% (28 of 80 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/ca/
2023-09-03 09:20:45 +00:00
LucasGGamerM
677fb4e4da fix: readds bot icon to timelines
This was accidentally removed during the great merge, but its back again
2023-09-02 21:02:11 -03:00
LucasGGamerM
ce51fc3c0d fix: allows for editing timeline badges again. fixes sk22#800 2023-09-02 20:40:55 -03:00
LucasGGamerM
0dcade767b Merge remote-tracking branch 'megalodon_main/main' 2023-09-02 20:26:22 -03:00
LucasGGamerM
f4f4cbe78b fix: fix incorrect m3_overlay alpha values 2023-09-02 20:06:56 -03:00
alextecplayz
ebb6897582 Translated using Weblate (Romanian)
Currently translated at 100.0% (370 of 370 strings)

Translation: Moshidon/values_sk
Translate-URL: https://translate.codeberg.org/projects/moshidon/values_sk/ro/
2023-09-01 22:53:06 +00:00
gallegonovato
9720a133ba Translated using Weblate (Spanish)
Currently translated at 100.0% (370 of 370 strings)

Translation: Moshidon/values_sk
Translate-URL: https://translate.codeberg.org/projects/moshidon/values_sk/es/
2023-09-01 22:53:06 +00:00
alextecplayz
29c36e90ab Translated using Weblate (Romanian)
Currently translated at 100.0% (80 of 80 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/ro/
2023-09-01 22:53:05 +00:00
gallegonovato
1b822676a8 Translated using Weblate (Spanish)
Currently translated at 100.0% (80 of 80 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/es/
2023-09-01 22:53:05 +00:00
Angelo Suzuki
2d24e50ff2 Add a setting for "Load missing posts behavior"
This will make sure that items that are filtered out don't show up on the interface.
Fixes sk22#311
2023-09-01 21:51:14 +02:00
Jacoco
53369eb2d4 Fix unreliable Preferences from Account Source (#798)
* Create empty Preferences object on error

* Update prefs from account when preferences fails
2023-09-01 21:28:02 +02:00
LucasGGamerM
aeb0aa65a8 Merge remote-tracking branch 'megalodon_main/main'
# Conflicts:
#	mastodon/src/main/java/org/joinmastodon/android/api/session/AccountLocalPreferences.java
2023-09-01 14:11:19 -03:00
Eugen Rochko
e9df125cde New translations strings.xml (Swedish) 2023-09-01 16:10:32 +02:00
sk
807010893a support static url for emoji reacts and keyboard 2023-09-01 14:38:55 +02:00
sk
ea01b14ffb more options for showing emoji reactions
closes sk22#796
re: sk22#788
2023-09-01 14:23:38 +02:00
arnav
3fd9dc1dcd Translated using Weblate (Hindi)
Currently translated at 4.3% (16 of 370 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/hi/
2023-08-31 23:18:52 +00:00
sk
02a4a77885 Merge remote-tracking branch 'weblate/main' 2023-09-01 01:18:30 +02:00
sk
651090a504 Merge remote-tracking branch 'upstream/master' 2023-09-01 01:17:18 +02:00
sk
203254c9f4 fix crash in onEmojiReactionsChanged 2023-09-01 01:16:52 +02:00
LucasGGamerM
74db111a4f Merge remote-tracking branch 'megalodon_main/main'
# Conflicts:
#	mastodon/src/main/java/org/joinmastodon/android/api/session/AccountLocalPreferences.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/StatusListFragment.java
2023-08-31 14:36:59 -03:00
Gregory K
16ef577a7a Merge pull request #678 from LucasGGamerM/mastodon-android
fix: fix alt texts not being able to be edited
2023-08-31 20:31:39 +03:00
LucasGGamerM
734b3bced6 fix: fix alt texts not being able to be edited
fixes #70 cc: @sk22
2023-08-31 14:18:32 -03:00
sk
e26c641dc7 fix drafts being all on the same-ish day 2023-08-31 18:07:43 +02:00
sk
9295cf4e9c fix emoji reaction spacing not updating
closes sk22#784
2023-08-31 17:24:29 +02:00
sk
dd9237e9ca enable emojiReactionsInTimelines by default 2023-08-31 17:20:44 +02:00
sk
ea81c1fad6 Merge remote-tracking branch 'upstream/master' 2023-08-31 17:09:18 +02:00
sk
d334703c65 adhere to showEmojiReactionsInLists setting
closes sk22#788
2023-08-31 17:04:22 +02:00
LucasGGamerM
befa5a9f6d fix: fix alt texts not being able to be edited
fixes #70 cc: @sk22
2023-08-31 11:43:39 -03:00
Gregory K
5f6f3c94c9 Merge pull request #677 from tinsukE/gap-local-filter
When loading gap posts, apply filters before building display items.
2023-08-31 15:06:07 +03:00
Angelo Suzuki
09ba42a974 When loading gap posts, apply filters before building display items.
This will make sure that items that are filtered out don't show up on the interface.
Fixes #675
2023-08-31 14:01:58 +02:00
Oliebol
87a9acd860 Translated using Weblate (Dutch)
Currently translated at 96.2% (77 of 80 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/nl/
2023-08-31 03:53:05 +00:00
ihor_ck
b1e43d6f97 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (370 of 370 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/uk/
2023-08-30 18:04:05 +00:00
ppnplus
ea92a61d13 Translated using Weblate (Thai)
Currently translated at 20.5% (76 of 370 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/th/
2023-08-30 18:04:05 +00:00
Linerly
7fda69a6aa Translated using Weblate (Indonesian)
Currently translated at 100.0% (370 of 370 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/id/
2023-08-30 18:04:05 +00:00
gallegonovato
cf8b9ac649 Translated using Weblate (Spanish)
Currently translated at 100.0% (370 of 370 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/es/
2023-08-30 18:04:05 +00:00
LucasGGamerM
d871d2cad8 fix: fix broken Ask before unfollowing option 2023-08-30 11:36:17 -03:00
LucasGGamerM
323018daa9 fix: fix crash when there is an error on status posting 2023-08-30 07:50:32 -03:00
ppnplus
3c122b005d Translated using Weblate (Thai)
Currently translated at 3.7% (14 of 370 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/th/
2023-08-29 22:37:15 +00:00
edxkl
f9dc6105f4 Translated using Weblate (Portuguese (Brazil))
Currently translated at 97.5% (361 of 370 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/pt_BR/
2023-08-29 22:37:15 +00:00
Oliebol
d7fe3c80e6 Translated using Weblate (Dutch)
Currently translated at 82.9% (307 of 370 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/nl/
2023-08-29 22:37:15 +00:00
Choukajohn
e996deea0b Translated using Weblate (French)
Currently translated at 100.0% (370 of 370 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/fr/
2023-08-29 22:37:14 +00:00
LucasGGamerM
67d89f5799 fix: fix less prominent post dividers
cc: @sk22
2023-08-29 19:12:47 -03:00
LucasGGamerM
485d25f9f4 fix: undo wrong string rename
AAAAAAAAAAAAAAAAAAA
2023-08-29 10:44:18 -03:00
LucasGGamerM
c4b7262e89 Merge remote-tracking branch 'megalodon_main/main'
# Conflicts:
#	mastodon/src/main/java/org/joinmastodon/android/fragments/settings/SettingsAboutAppFragment.java
2023-08-29 10:41:09 -03:00
LucasGGamerM
7191e5a96a feat: use better account log off alert 2023-08-29 10:33:08 -03:00
LucasGGamerM
0edaffee59 fix: fix Warning item title being cut off 2023-08-29 09:05:33 -03:00
Weblate
c859d35c93 Added translation using Weblate (Norwegian Nynorsk) 2023-08-29 11:47:51 +00:00
LucasGGamerM
17a59b5db4 fix: fix hide with a warning posts without alt text 2023-08-29 08:20:11 -03:00
S1m
580ae15af6 Fix unifiedpush (#785)
* [UnifiedPush] Register the new endpoint

* [UnifiedPush] Get account linked to instance
2023-08-29 12:22:12 +02:00
Eugen Rochko
d76e823489 New translations strings.xml (Italian) 2023-08-29 11:52:38 +02:00
LucasGGamerM
7c3b4128de feat: use better color background for extended footer 2023-08-28 21:25:35 -03:00
LucasGGamerM
da5929c092 feat: improvements on the black and white theme 2023-08-28 21:14:20 -03:00
LucasGGamerM
77fca4d763 fix: fix bottom bar labels ellipsizing wrongly on devices with a smaller screen 2023-08-28 21:03:00 -03:00
sk
e66078e52e fix poll options outline provider
closes sk22#702
2023-08-29 00:53:02 +02:00
FineFindus
f84356f5d0 fix: display 'Lists with' with username (#780) 2023-08-29 00:19:34 +02:00
sk
1fa5a8436b highlight verified links again!
closes sk22#713
2023-08-29 00:18:12 +02:00
sk
2a471ffa96 fix broken "edit avatar" overlay.. again!!
closes sk22#727
closes sk22#738
2023-08-28 23:48:18 +02:00
sk
1ee5e1ab3a fix cut-off settings item titles
closes sk22#723
2023-08-28 23:42:34 +02:00
sk
4d90cad034 Merge remote-tracking branch 'weblate/main' 2023-08-28 23:35:18 +02:00
sk
45615b1fc5 Merge remote-tracking branch 'upstream/l10n_master' 2023-08-28 23:35:04 +02:00
sk
9fd0e7fea4 return if fcm device token is empty
closes sk22#779
2023-08-28 23:33:28 +02:00
sk
696016bd8f use hasSpoiler method 2023-08-28 23:29:18 +02:00
sk
cc46e09853 fix issue with visibility button
closes sk22#740
2023-08-28 23:24:56 +02:00
sk
83e84836b5 fix slightly wrong margins
closes sk22#778
2023-08-28 22:47:43 +02:00
sk
14bb544344 replace donation link 2023-08-28 22:35:17 +02:00
sk
ceec18ff5e fix divider not being full-width 2023-08-28 22:33:19 +02:00
sk
d36ad43700 fix reporting crashing the app 2023-08-28 22:26:53 +02:00
LucasGGamerM
d93bcd9241 feat: use ellipsize for settings items
IDK why It can't just continue on the next line :(
2023-08-28 17:23:00 -03:00
LucasGGamerM
cfad3144f8 fix: fix the nord theme (again) 2023-08-28 16:13:43 -03:00
LucasGGamerM
69272e891e fix: use better colors for true black mode
cc: @sk22
2023-08-28 15:57:33 -03:00
LucasGGamerM
576030f262 fix: fixes inconsistent coloring on turned-off switches
cc: @sk22
2023-08-28 15:54:18 -03:00
sk
fb39f74ba5 fix bottom padding for above emoji reactions 2023-08-28 20:22:16 +02:00
LucasGGamerM
272afca0fb fix: fixes inconsistent coloring on bottom tabbar 2023-08-28 15:15:02 -03:00
sk
9bfc73d6ee fix wrong bottom padding
hopefully, lol
2023-08-28 20:04:52 +02:00
LucasGGamerM
d0e3da67a4 fix: fix wrong favorite selected coloring on nord theme 2023-08-28 14:04:13 -03:00
LucasGGamerM
1ecb9820c0 refactor: change bookmark_selected to colorBookmark 2023-08-28 12:18:25 -03:00
EndermanCo
efb72eace9 Translated using Weblate (Persian)
Currently translated at 50.0% (9 of 18 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/fa/
2023-08-28 14:53:05 +00:00
edxkl
84b15f4a49 Translated using Weblate (Portuguese (Brazil))
Currently translated at 97.5% (360 of 369 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/pt_BR/
2023-08-28 14:53:05 +00:00
ca
2c793fd83b Translated using Weblate (Catalan)
Currently translated at 100.0% (369 of 369 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/ca/
2023-08-28 14:53:05 +00:00
LucasGGamerM
8810ac52f6 Merge pull request #245
fix: small nord theme improvements
2023-08-28 11:38:30 -03:00
LucasGGamerM
9442de7e5a Merge pull request #246
fix: allow long version names
2023-08-28 11:32:37 -03:00
LucasGGamerM
4f40ecd112 Merge pull request #247
fix: display 'Lists with' with username
2023-08-28 11:31:03 -03:00
LucasGGamerM
5456f4fbea refactor: tidy things up with the show posts with missing alt text
IT DOESNT WORK YET GODDAMNIT
2023-08-28 11:30:08 -03:00
LucasGGamerM
b294c998ae Merge branch 'feature/hide_alttext'
# Conflicts:
#	mastodon/src/androidTest/java/org/joinmastodon/android/utils/StatusFilterPredicateTest.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/settings/TimeLineFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/WarningFilteredStatusDisplayItem.java
#	mastodon/src/main/java/org/joinmastodon/android/utils/StatusFilterPredicate.java
#	mastodon/src/main/res/values-de-rDE/strings_mo.xml
#	mastodon/src/main/res/values/strings_mo.xml
2023-08-28 10:15:18 -03:00
FineFindus
b7b7ef4faf fix: display 'Lists with' with username 2023-08-28 14:43:28 +02:00
FineFindus
6a736ef387 fix: allow long version names 2023-08-28 14:32:31 +02:00
FineFindus
2a7d7d2e45 fix: use single color for favorites 2023-08-28 14:08:38 +02:00
LucasGGamerM
bdf822d6a5 fix: fix haptic feedback setting not being saved 2023-08-28 09:04:15 -03:00
LucasGGamerM
a9cd67a64e fix: fix wrong coloring on the follow suggestions fragment bottom bar 2023-08-28 08:44:01 -03:00
LucasGGamerM
a3ee20f06e feat: increase roundness of the select instance button background
Yes, this is the 3rd time I do this
2023-08-28 08:33:52 -03:00
FineFindus
2158a1abae fix(theme/nord): use #2E3440 as background color 2023-08-28 13:29:32 +02:00
LucasGGamerM
52955b6c42 fix: fix wrong tap-to-reveal string 2023-08-28 08:27:42 -03:00
LucasGGamerM
8524e57ecd fix inconsistent coloring on alert dialog items
cc: @sk22
2023-08-27 20:57:29 -03:00
LucasGGamerM
639ecba380 feat: increase roundness of the Popup menus 2023-08-27 20:46:13 -03:00
LucasGGamerM
ed6961016e feat: increase roundness of the logon instance input field (again) 2023-08-27 20:41:41 -03:00
LucasGGamerM
5d1d6e4bd7 fix: fix crash when long clicking search from the search tab 2023-08-27 20:15:53 -03:00
LucasGGamerM
e87f47228f fix: readd only translate when opened settings (off by default) 2023-08-27 19:22:35 -03:00
LucasGGamerM
8e038b204c fix: readd showDividers setting 2023-08-27 19:16:42 -03:00
LucasGGamerM
794e1777f1 Merge remote-tracking branch 'weblate/master' into m3-merger
# Conflicts:
#	mastodon/src/main/res/values-de-rDE/strings_sk.xml
#	mastodon/src/main/res/values-es-rES/strings_sk.xml
#	mastodon/src/main/res/values-pt-rBR/strings_sk.xml
#	mastodon/src/main/res/values-sl-rSI/strings_sk.xml
#	mastodon/src/main/res/values-uk-rUA/strings_sk.xml
#	metadata/fa-IR/short_description.txt
#	metadata/fa-IR/title.txt
#	metadata/ro/title.txt
#	metadata/uk/changelogs/94.txt
2023-08-27 13:55:03 -03:00
LucasGGamerM
4ba33bd373 build: readd missing imports 2023-08-27 13:53:29 -03:00
LucasGGamerM
6318745fe7 Merge remote-tracking branch 'megalodon_main/main' into m3-merger
# Conflicts:
#	mastodon/src/main/java/org/joinmastodon/android/fragments/discover/DiscoverAccountsFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/onboarding/CustomWelcomeFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/AccountCardStatusDisplayItem.java
2023-08-27 13:51:42 -03:00
LucasGGamerM
c48606c48e feat: update roundness of profile note background again (its the third time) 2023-08-27 13:45:15 -03:00
LucasGGamerM
9777bf9c6c fix: make relocated publish button gone by default
Same also applies to the top drafts button
2023-08-27 13:37:08 -03:00
LucasGGamerM
c223634248 feat: make relocated Publish Button smaller 2023-08-27 12:32:00 -03:00
LucasGGamerM
7ff21cf784 feat: update profile note background radius (again) 2023-08-27 12:20:20 -03:00
LucasGGamerM
8ae42e0fe1 fix: fixes crash on toot when relocatePublishButton is enabled 2023-08-27 12:17:59 -03:00
Eugen Rochko
900b204bb0 New translations strings.xml (Portuguese, Brazilian) 2023-08-27 16:51:00 +02:00
Eugen Rochko
17d679901a New translations strings.xml (Japanese) 2023-08-27 15:42:52 +02:00
sk
c3d9147705 fix wrong time/username reference when replying 2023-08-27 14:46:33 +02:00
Eugen Rochko
d8036779f8 New translations strings.xml (Japanese) 2023-08-27 14:46:15 +02:00
sk
2fafdcc4f8 fix unifiedpush settings item
closes sk22#770
2023-08-27 14:33:57 +02:00
sk
ef3f96ba74 fix timestamp being hidden for long usernames
closes sk22#772
2023-08-27 14:12:23 +02:00
sk
91bf1b277f fix null-pointer exception in filter result
closes sk22#774
2023-08-27 13:52:31 +02:00
sk
c6acd35ceb fix "blocked" button style
closes sk22#775
2023-08-27 13:45:44 +02:00
sk
a85a0b7d78 don't show blocked_by status
restoring fix for sk22#526
2023-08-27 13:38:33 +02:00
0que
3a35674ea2 Translated using Weblate (Russian)
Currently translated at 77.7% (14 of 18 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/ru/
2023-08-27 05:53:05 +00:00
0que
3235cf1c4f Translated using Weblate (Russian)
Currently translated at 89.7% (331 of 369 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/ru/
2023-08-27 05:53:04 +00:00
LucasGGamerM
12b1825a68 feat: readd moshidon donate/repo urls to settings about 2023-08-26 19:18:02 -03:00
LucasGGamerM
9997860cac fix: implement reset method on nightly build 2023-08-26 19:08:37 -03:00
LucasGGamerM
10aa67bbde feat: make the relocated publish button be colored right 2023-08-26 19:04:26 -03:00
LucasGGamerM
239a78888b feat:make the relocated publishButton actually centered
Pain
2023-08-26 18:59:02 -03:00
LucasGGamerM
af22bfd790 feat: make logon screen instance edittext color better
cc: @sk22
2023-08-26 18:26:24 -03:00
LucasGGamerM
4cc539167c feat: make logon screen instance edittext corner radius bigger 2023-08-26 18:25:03 -03:00
LucasGGamerM
e8968ec6fb feat: update profile note edit design (again) 2023-08-26 18:11:40 -03:00
LucasGGamerM
9732c48fde feat: update profile note edit design 2023-08-26 17:48:53 -03:00
LucasGGamerM
d7e48c2917 feat: fix the profile note feature and removes notepad icon from it
I still gotta fix the configm button coloring
2023-08-26 17:21:19 -03:00
LucasGGamerM
4b6956135d fix: fix wrong Notifications tabbar icon
Previously the notifications icon in the tabbar would be wrong when selected (Holy shit my english died right there)
In any case, its different and looks better now
2023-08-26 17:10:53 -03:00
LucasGGamerM
45a990eca5 feat: readd double click to swipe in NotificationsFragment 2023-08-26 17:05:29 -03:00
LucasGGamerM
dd110c7c74 feat: readd Moshidon specific Notification settings 2023-08-26 17:02:52 -03:00
LucasGGamerM
22658be084 feat: readd Moshidon specific Behavior Settings
I forgot the unlisted replies thingy
2023-08-26 17:02:42 -03:00
LucasGGamerM
158e9a56eb feat: readd Moshidon specific Display settings 2023-08-26 16:52:23 -03:00
LucasGGamerM
89a237ae86 feat: readd Moshidon behavior settings 2023-08-26 16:07:06 -03:00
LucasGGamerM
22016ebfdf refactor: put Moshidon settings strings in a separate part of the strings_mo.xml 2023-08-26 15:36:51 -03:00
LucasGGamerM
9201a883ea feat: swap Megalodon app strings for Moshidon app strings on Settings 2023-08-26 15:26:47 -03:00
LucasGGamerM
666a65c118 refactor: temporarily remove recentEmojis to avoid crashing.
It will be reimplemented later either by me or @FineFindus
2023-08-26 15:21:20 -03:00
Eugen Rochko
3f6bda28b3 New translations strings.xml (Vietnamese) 2023-08-26 17:43:48 +02:00
Eugen Rochko
c0b4f4dd79 New translations strings.xml (Vietnamese) 2023-08-26 16:06:27 +02:00
sk
ad96031aeb rounded corners for inset images! 2023-08-25 23:26:27 +02:00
sk
aa9e66e6a2 tweak account card design
closes sk22#731
2023-08-25 17:20:54 +02:00
sk
86081654fb remove unused import 2023-08-25 17:19:42 +02:00
sk
cac030ffed fix inconsistent avatar border radius 2023-08-25 17:19:29 +02:00
starstuff
2a913e26e7 Translated using Weblate (Swedish)
Currently translated at 41.4% (153 of 369 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/sv/
2023-08-25 14:53:06 +00:00
edxkl
f60375cd5f Translated using Weblate (Portuguese (Brazil))
Currently translated at 97.0% (358 of 369 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/pt_BR/
2023-08-25 14:53:06 +00:00
poesty
5920270899 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (369 of 369 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/zh_Hans/
2023-08-25 14:53:06 +00:00
edxkl
53bea80038 Translated using Weblate (Portuguese (Brazil))
Currently translated at 99.0% (325 of 328 strings)

Translation: Moshidon/values_sk
Translate-URL: https://translate.codeberg.org/projects/moshidon/values_sk/pt_BR/
2023-08-25 14:53:05 +00:00
edxkl
84f633832f Translated using Weblate (Portuguese (Brazil))
Currently translated at 98.6% (75 of 76 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/pt_BR/
2023-08-25 14:53:05 +00:00
Eugen Rochko
f36aee44c6 New translations strings.xml (Scottish Gaelic) 2023-08-25 09:54:23 +02:00
LucasGGamerM
21ea604bcd fix: fix draft button not being an ImageButton 2023-08-24 15:12:01 -03:00
LucasGGamerM
f5303eeca2 Merge remote-tracking branch 'megalodon_main/main' into m3-merger 2023-08-24 14:20:52 -03:00
LucasGGamerM
b0d75b6120 fix: fix wrong navbar color in AccountSwitcherSheet.java 2023-08-24 14:20:48 -03:00
Eugen Rochko
cd24526a9d New translations strings.xml (Swedish) 2023-08-24 17:48:37 +02:00
Eugen Rochko
a345ac1390 New translations strings.xml (Icelandic) 2023-08-24 17:48:36 +02:00
LucasGGamerM
546e349229 refactor: fix compilation errors in FooterStatusDisplayItem.java and EmojiReactionsStatusDisplayItem.java 2023-08-24 08:40:42 -03:00
sk
71f4f089b6 scroll to added emoji; improve loading animation 2023-08-24 13:26:42 +02:00
LucasGGamerM
afc401c1f2 Merge remote-tracking branch 'megalodon_main/main' into m3-merger
# Conflicts:
#	mastodon/build.gradle
#	mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/FooterStatusDisplayItem.java
#	mastodon/src/main/res/values-pl-rPL/strings_sk.xml
#	mastodon/src/main/res/values-ru-rRU/strings_sk.xml
#	metadata/ru/full_description.txt
2023-08-24 08:17:57 -03:00
sk
0f72809342 scroll to existing reaction when adding 2023-08-24 13:15:53 +02:00
LucasGGamerM
3db74fb958 refactor: fixes 2 crashes
I dont wanna write a decent commit message today
2023-08-24 08:07:15 -03:00
sk
40a033d692 no emoji reactions for akkoma announcements 2023-08-24 13:03:24 +02:00
sk
d44df2c23c change behavior when adding reactions
closes sk22#769
2023-08-24 13:00:16 +02:00
LucasGGamerM
e8138685a8 refactor: swap see for show in SettingsBehaviorFragment.java
Why the fuck does this even happen?
2023-08-24 07:42:41 -03:00
sk
47fde1e08b undo spacing "fix" 2023-08-24 12:41:17 +02:00
LucasGGamerM
316c660478 refactor: fix compilation errors on the HomeTabFragment.java 2023-08-24 07:41:11 -03:00
LucasGGamerM
f9b4f9d1b4 refactor: use updated m3 colors on AccountSwitcherSheet.java 2023-08-24 07:29:53 -03:00
LucasGGamerM
568f249608 refactor: remove legacy getDomain method from DiscoverPostsFragment.java 2023-08-24 07:26:57 -03:00
LucasGGamerM
1c227605e3 refactor: add reset method to GithubSelfUpdaterImpl.java 2023-08-24 07:25:33 -03:00
LucasGGamerM
c3a671ce90 refactor: use updated variable name for notification actions switch 2023-08-24 07:21:23 -03:00
LucasGGamerM
887d209b7f refactor: use updated variable name for the discoverFragment 2023-08-24 07:19:32 -03:00
LucasGGamerM
b3f3ee1240 refactor: removing legacy InstanceBlockListFragment.java 2023-08-24 07:17:56 -03:00
sk
0688521ae8 make emoji reactions not click-through-able 2023-08-24 12:17:15 +02:00
sk
bdf0f21647 fix spacing between text and footer 2023-08-24 12:13:20 +02:00
sk
bb03342ff2 boop versinom 2023-08-24 12:12:55 +02:00
sk
937304f27b improve profile metadata editor styles 2023-08-24 00:05:36 +02:00
sk
6b4ce0ea69 hide roles when in edit mode 2023-08-23 23:48:42 +02:00
sk
7f0c4860f8 clean up code 2023-08-23 23:47:06 +02:00
sk
9b4c70a5ed fix jumping profile layout
closes sk22#656
2023-08-23 23:46:23 +02:00
sk
49137273ae clean up code 2023-08-23 23:38:45 +02:00
sk
647e3e5e85 progress indicator for emoji reactions 2023-08-23 23:38:12 +02:00
sk
4920bf63e3 oops. accidentally removed a setting 2023-08-23 23:12:11 +02:00
sk
0afcdb2cdf emoji reactions for announcements! 2023-08-23 22:56:11 +02:00
sk
d96c3c3c8a fix paddings around dummys, text and spoilers
closes sk22#638
2023-08-23 22:12:14 +02:00
Eugen Rochko
3d987b8e1d New translations strings.xml (Thai) 2023-08-23 21:39:07 +02:00
LucasGGamerM
4a73e9cdf7 refactor: fix compilation problems with the CustomLocalTimelineFragment 2023-08-23 15:16:29 -03:00
LucasGGamerM
55df6492b7 refactor: fix compilation problems with the SettingsDisplayFragment 2023-08-23 15:05:57 -03:00
LucasGGamerM
20026fc01a refactor: fix StatusDisplayItem's compilation errors 2023-08-23 15:05:06 -03:00
sk
f5e5408d70 Merge remote-tracking branch 'upstream/master' 2023-08-23 20:02:06 +02:00
LucasGGamerM
28601bd75c refactor: moving recentEmojis preference to AccountLocalPreferences
Also fixes the compilation problems related to both
2023-08-23 14:56:20 -03:00
sk
d62899c990 fix reaction data and binding inconsistencies 2023-08-23 19:49:07 +02:00
LucasGGamerM
c67feaac9a refactor: removing legacy settings fragments 2023-08-23 14:30:09 -03:00
Eugen Rochko
57043912e0 New translations strings.xml (Chinese Traditional) 2023-08-23 19:16:40 +02:00
LucasGGamerM
2991815f2f refactor: just trying to make things compile again, no good commit message this time 2023-08-23 08:46:43 -03:00
LucasGGamerM
b184d6de08 refactor: fix compilation errors in UiUtils.java 2023-08-23 08:35:21 -03:00
LucasGGamerM
c9205b725f refactor: fix compilation errors in CustomLocalTimelineFragment.java 2023-08-23 08:32:23 -03:00
LucasGGamerM
ac3b6ad43c refactor: deleting legacy DomainManager.java implementation
Remove DomainManager.java in favor of getWebUri
2023-08-23 08:17:18 -03:00
LucasGGamerM
e56263a7c0 refactor: deleting legacy InstanceInfoFragment.java 2023-08-23 08:10:47 -03:00
Eugen Rochko
00aef5ea6b New translations full_description.txt (Arabic) 2023-08-23 13:02:31 +02:00
Eugen Rochko
369b69668c New translations strings.xml (Arabic) 2023-08-23 13:02:29 +02:00
Eugen Rochko
65245f4560 New translations strings.xml (Arabic) 2023-08-23 09:39:50 +02:00
Eugen Rochko
4d4fdc97d4 New translations strings.xml (French) 2023-08-23 09:39:49 +02:00
Eugen Rochko
c96577891c New translations strings.xml (Scottish Gaelic) 2023-08-23 07:00:18 +02:00
Eugen Rochko
f48b2fc9cb New translations strings.xml (Thai) 2023-08-23 07:00:13 +02:00
Eugen Rochko
2fca2580ed New translations strings.xml (Bengali) 2023-08-23 07:00:12 +02:00
Eugen Rochko
7adc1da361 New translations strings.xml (Persian) 2023-08-23 07:00:11 +02:00
Eugen Rochko
6dc24dde43 New translations strings.xml (Indonesian) 2023-08-23 07:00:10 +02:00
Eugen Rochko
4929e0e6ec New translations strings.xml (Portuguese, Brazilian) 2023-08-23 07:00:09 +02:00
Eugen Rochko
16a8b8ed71 New translations strings.xml (Icelandic) 2023-08-23 07:00:08 +02:00
Eugen Rochko
ad1412817e New translations strings.xml (Galician) 2023-08-23 07:00:07 +02:00
Eugen Rochko
d9e6bb3bea New translations strings.xml (Vietnamese) 2023-08-23 07:00:06 +02:00
Eugen Rochko
8970404638 New translations strings.xml (Chinese Traditional) 2023-08-23 07:00:05 +02:00
Eugen Rochko
2a2241d7f9 New translations strings.xml (Chinese Simplified) 2023-08-23 07:00:04 +02:00
Eugen Rochko
db1a47e8eb New translations strings.xml (Ukrainian) 2023-08-23 07:00:03 +02:00
Eugen Rochko
3e57061cef New translations strings.xml (Turkish) 2023-08-23 07:00:02 +02:00
Eugen Rochko
cd200f8450 New translations strings.xml (Slovenian) 2023-08-23 07:00:00 +02:00
Eugen Rochko
782013079f New translations strings.xml (Russian) 2023-08-23 06:59:59 +02:00
Eugen Rochko
e5db8acd66 New translations strings.xml (Polish) 2023-08-23 06:59:57 +02:00
Eugen Rochko
1a6a8019c8 New translations strings.xml (Norwegian) 2023-08-23 06:59:57 +02:00
Eugen Rochko
e935eef29f New translations strings.xml (Dutch) 2023-08-23 06:59:56 +02:00
Eugen Rochko
381defda51 New translations strings.xml (Japanese) 2023-08-23 06:59:54 +02:00
Eugen Rochko
02ae80c204 New translations strings.xml (Italian) 2023-08-23 06:59:53 +02:00
Eugen Rochko
82214b30e8 New translations strings.xml (Armenian) 2023-08-23 06:59:52 +02:00
Eugen Rochko
33a1f48602 New translations strings.xml (Greek) 2023-08-23 06:59:48 +02:00
Eugen Rochko
aee845e5cc New translations strings.xml (German) 2023-08-23 06:59:47 +02:00
Eugen Rochko
cd780f6006 New translations strings.xml (Danish) 2023-08-23 06:59:46 +02:00
Eugen Rochko
d4741fefa0 New translations strings.xml (Czech) 2023-08-23 06:59:46 +02:00
Eugen Rochko
7e1e8a2616 New translations strings.xml (Belarusian) 2023-08-23 06:59:44 +02:00
Eugen Rochko
d73c05cdfc New translations strings.xml (Arabic) 2023-08-23 06:59:43 +02:00
Eugen Rochko
78323023cb New translations strings.xml (Spanish) 2023-08-23 06:59:42 +02:00
Eugen Rochko
2cf084c98f New translations strings.xml (French) 2023-08-23 06:59:41 +02:00
Grishka
e5bdeba1d7 Fix strings 2023-08-23 00:44:40 +03:00
Grishka
8d7db7774f Merge branch 'l10n_master' 2023-08-23 00:40:45 +03:00
Grishka
78d22c670c Fix reporting 2023-08-23 00:40:38 +03:00
Eugen Rochko
0a679109f5 New translations strings.xml (Arabic) 2023-08-22 17:14:41 +02:00
Eugen Rochko
e843142b7e New translations strings.xml (Arabic) 2023-08-22 13:15:25 +02:00
Eugen Rochko
72e728f655 New translations strings.xml (French) 2023-08-22 13:15:23 +02:00
Eugen Rochko
ef56792f56 New translations strings.xml (Arabic) 2023-08-22 11:39:27 +02:00
Eugen Rochko
504a6959e8 New translations strings.xml (French) 2023-08-22 11:39:25 +02:00
sk
6054a3d65c Merge remote-tracking branch 'weblate/main' 2023-08-21 22:43:23 +02:00
sk
f50eac02d8 move adding reactions to reactions item 2023-08-21 22:40:19 +02:00
snerk
9634db9061 Translated using Weblate (Norwegian Nynorsk)
Currently translated at 20.8% (75 of 360 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/nn/
2023-08-21 22:40:19 +02:00
snerk
97e3e283dd Translated using Weblate (Norwegian Nynorsk)
Currently translated at 18.8% (68 of 360 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/nn/
2023-08-21 22:40:19 +02:00
snerk
f1e233569b Added translation using Weblate (Norwegian Nynorsk) 2023-08-21 22:40:19 +02:00
alextecplayz
04dd637fa9 Translated using Weblate (Romanian)
Currently translated at 100.0% (360 of 360 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/ro/
2023-08-21 22:40:19 +02:00
gallegonovato
c48a4105a9 Translated using Weblate (Spanish)
Currently translated at 100.0% (360 of 360 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/es/
2023-08-21 22:40:19 +02:00
EndermanCo
aac53d949b Translated using Weblate (Persian)
Currently translated at 38.8% (7 of 18 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/fa/
2023-08-21 22:40:19 +02:00
EndermanCo
9bb4e5b467 Translated using Weblate (Persian)
Currently translated at 100.0% (360 of 360 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/fa/
2023-08-21 22:40:19 +02:00
0eoc
fb0391d5cd Translated using Weblate (Russian)
Currently translated at 61.1% (11 of 18 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/ru/
2023-08-21 22:40:19 +02:00
ihor_ck
e4d898c903 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (360 of 360 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/uk/
2023-08-21 22:40:19 +02:00
Linerly
da222f75bb Translated using Weblate (Indonesian)
Currently translated at 100.0% (360 of 360 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/id/
2023-08-21 22:40:19 +02:00
Choukajohn
25fbd91eb3 Translated using Weblate (French)
Currently translated at 100.0% (360 of 360 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/fr/
2023-08-21 22:40:19 +02:00
0eoc
d458cca7bf Translated using Weblate (Russian)
Currently translated at 96.1% (323 of 336 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/ru/
2023-08-21 22:40:19 +02:00
gallegonovato
3933a61b5a Translated using Weblate (Spanish)
Currently translated at 100.0% (336 of 336 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/es/
2023-08-21 22:40:19 +02:00
Codeberg Translate
29092bbf36 Update translation files
Updated by "Remove blank strings" hook in Weblate.

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/
2023-08-21 22:40:19 +02:00
edxkl
a33d2578c9 Translated using Weblate (Portuguese (Brazil))
Currently translated at 94.4% (17 of 18 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/pt_BR/
2023-08-21 22:40:19 +02:00
edxkl
9afe4b5ac6 Translated using Weblate (Portuguese (Brazil))
Currently translated at 97.3% (327 of 336 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/pt_BR/
2023-08-21 22:40:19 +02:00
EndermanCo
6782006b05 Translated using Weblate (Persian)
Currently translated at 27.7% (5 of 18 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/fa/
2023-08-21 22:40:19 +02:00
0eoc
90bdbefd48 Translated using Weblate (Russian)
Currently translated at 61.1% (11 of 18 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/ru/
2023-08-21 22:40:19 +02:00
gicorada
b7bcf1082e Translated using Weblate (Italian)
Currently translated at 100.0% (336 of 336 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/it/
2023-08-21 22:40:19 +02:00
EndermanCo
ba9bbc5b6e Translated using Weblate (Persian)
Currently translated at 100.0% (336 of 336 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/fa/
2023-08-21 22:40:19 +02:00
0eoc
0fecfbd50c Translated using Weblate (Russian)
Currently translated at 81.2% (273 of 336 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/ru/
2023-08-21 22:40:19 +02:00
gallegonovato
0031dc6119 Translated using Weblate (Spanish)
Currently translated at 99.1% (333 of 336 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/es/
2023-08-21 22:40:19 +02:00
EndermanCo
79e606698e Translated using Weblate (Persian)
Currently translated at 100.0% (336 of 336 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/fa/
2023-08-21 22:40:19 +02:00
EndermanCo
3c9fc43780 Translated using Weblate (Persian)
Currently translated at 98.5% (331 of 336 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/fa/
2023-08-21 22:40:19 +02:00
ihor_ck
adb9b7394a Translated using Weblate (Ukrainian)
Currently translated at 100.0% (336 of 336 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/uk/
2023-08-21 22:40:19 +02:00
Eryk Michalak
6191fdfaef Translated using Weblate (Polish)
Currently translated at 91.3% (307 of 336 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/pl/
2023-08-21 22:40:19 +02:00
Linerly
446754e8a6 Translated using Weblate (Indonesian)
Currently translated at 100.0% (336 of 336 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/id/
2023-08-21 22:40:19 +02:00
Choukajohn
30c67b0b39 Translated using Weblate (French)
Currently translated at 100.0% (336 of 336 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/fr/
2023-08-21 22:40:19 +02:00
Hudobni Volk
1043ea7b11 Translated using Weblate (Slovenian)
Currently translated at 100.0% (336 of 336 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/sl/
2023-08-21 22:40:19 +02:00
alextecplayz
b449bcd006 Translated using Weblate (Romanian)
Currently translated at 100.0% (336 of 336 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/ro/
2023-08-21 22:40:19 +02:00
EndermanCo
a9d513b564 Translated using Weblate (Persian)
Currently translated at 98.5% (330 of 335 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/fa/
2023-08-21 22:40:19 +02:00
Hudobni Volk
5cef527810 Translated using Weblate (Slovenian)
Currently translated at 61.1% (11 of 18 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/sl/
2023-08-21 22:40:19 +02:00
ganjibaiemade
8bb907747d Translated using Weblate (Chinese (Traditional))
Currently translated at 18.2% (61 of 335 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/zh_Hant/
2023-08-21 22:40:19 +02:00
Hudobni Volk
9c889f8df3 Translated using Weblate (Slovenian)
Currently translated at 100.0% (335 of 335 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/sl/
2023-08-21 22:40:19 +02:00
Linerly
cbc164d844 Translated using Weblate (Indonesian)
Currently translated at 100.0% (335 of 335 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/id/
2023-08-21 22:40:19 +02:00
Eugen Rochko
b8e3060887 New translations strings.xml (Arabic) 2023-08-21 21:00:00 +02:00
Eugen Rochko
1aa1ede421 New translations strings.xml (Arabic) 2023-08-21 20:03:05 +02:00
Eugen Rochko
480dba7629 New translations strings.xml (Arabic) 2023-08-21 19:05:39 +02:00
Eugen Rochko
9b9c66a149 New translations strings.xml (Arabic) 2023-08-21 17:43:00 +02:00
Eugen Rochko
0f5eb923ee New translations strings.xml (Arabic) 2023-08-21 16:13:06 +02:00
snerk
7f521b3129 Translated using Weblate (Norwegian Nynorsk)
Currently translated at 100.0% (369 of 369 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/nn/
2023-08-21 09:41:52 +00:00
EndermanCo
9ce217d1f2 Translated using Weblate (Persian)
Currently translated at 100.0% (369 of 369 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/fa/
2023-08-21 09:41:51 +00:00
ihor_ck
7b1bd3ccad Translated using Weblate (Ukrainian)
Currently translated at 100.0% (369 of 369 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/uk/
2023-08-21 09:41:51 +00:00
Oliebol
13b1cbde6b Translated using Weblate (Dutch)
Currently translated at 82.9% (306 of 369 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/nl/
2023-08-21 09:41:51 +00:00
Linerly
8d898a1a78 Translated using Weblate (Indonesian)
Currently translated at 100.0% (369 of 369 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/id/
2023-08-21 09:41:51 +00:00
Choukajohn
51c2890ede Translated using Weblate (French)
Currently translated at 100.0% (369 of 369 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/fr/
2023-08-21 09:41:51 +00:00
gallegonovato
03642faa9c Translated using Weblate (Spanish)
Currently translated at 100.0% (369 of 369 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/es/
2023-08-21 09:41:51 +00:00
sk22
084c6e1e59 Translated using Weblate (German)
Currently translated at 94.5% (349 of 369 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/de/
2023-08-21 09:41:51 +00:00
LucasGGamerM
f261fba995 feat: all errors on the ComposeFragment are gone 2023-08-20 18:20:39 -03:00
LucasGGamerM
be56a6dd64 feat: color translation is done on all xmls 2023-08-20 17:47:21 -03:00
Eugen Rochko
90ed28e7a0 New translations strings.xml (French) 2023-08-20 17:34:05 +01:00
LucasGGamerM
3b3d98d549 feat: readd favorite_selected and bookmark_selected attributes 2023-08-20 12:00:08 -03:00
LucasGGamerM
8c321c4f0d build: add use camera feature flag to manifest 2023-08-20 11:54:16 -03:00
LucasGGamerM
135cb694fa Merge remote-tracking branch 'megalodon_main/main' into m3-merger
# Conflicts:
#	README.md
#	build.gradle
#	mastodon/build.gradle
#	mastodon/src/main/AndroidManifest.xml
#	mastodon/src/main/java/org/joinmastodon/android/GlobalUserPreferences.java
#	mastodon/src/main/java/org/joinmastodon/android/MainActivity.java
#	mastodon/src/main/java/org/joinmastodon/android/PushNotificationReceiver.java
#	mastodon/src/main/java/org/joinmastodon/android/api/requests/accounts/SetAccountMuted.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/AccountTimelineFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/BaseStatusListFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/ComposeFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/EditTimelinesFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/HomeFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/HomeTabFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/NotificationsFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/PinnableStatusListFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/ProfileAboutFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/ProfileFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/SettingsFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/StatusListFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/account_list/BaseAccountListFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/discover/DiscoverFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/discover/SearchFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/onboarding/CustomWelcomeFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/onboarding/InstanceRulesFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/onboarding/OnboardingFollowSuggestionsFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/settings/SettingsMainFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/model/Attachment.java
#	mastodon/src/main/java/org/joinmastodon/android/model/Status.java
#	mastodon/src/main/java/org/joinmastodon/android/ui/CustomEmojiPopupKeyboard.java
#	mastodon/src/main/java/org/joinmastodon/android/ui/M3AlertDialogBuilder.java
#	mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/AudioStatusDisplayItem.java
#	mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/FooterStatusDisplayItem.java
#	mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/HeaderStatusDisplayItem.java
#	mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/PollOptionStatusDisplayItem.java
#	mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/StatusDisplayItem.java
#	mastodon/src/main/java/org/joinmastodon/android/ui/utils/InsetStatusItemDecoration.java
#	mastodon/src/main/java/org/joinmastodon/android/ui/utils/UiUtils.java
#	mastodon/src/main/res/color/button_bg_secondary_dark_on_light.xml
#	mastodon/src/main/res/color/button_text_primary_light_on_dark.xml
#	mastodon/src/main/res/drawable/bg_image_alt_text_overlay.xml
#	mastodon/src/main/res/drawable/bg_rect_4dp_ripple.xml
#	mastodon/src/main/res/drawable/bg_search_field.xml
#	mastodon/src/main/res/drawable/ic_fluent_save_24_regular.xml
#	mastodon/src/main/res/layout/compose_action.xml
#	mastodon/src/main/res/layout/compose_media_thumb.xml
#	mastodon/src/main/res/layout/compose_poll_option.xml
#	mastodon/src/main/res/layout/display_item_footer.xml
#	mastodon/src/main/res/layout/display_item_header.xml
#	mastodon/src/main/res/layout/display_item_text.xml
#	mastodon/src/main/res/layout/fragment_compose.xml
#	mastodon/src/main/res/layout/fragment_profile.xml
#	mastodon/src/main/res/layout/item_instance_category.xml
#	mastodon/src/main/res/layout/item_report_choice.xml
#	mastodon/src/main/res/layout/item_settings_footer.xml
#	mastodon/src/main/res/layout/item_settings_switch.xml
#	mastodon/src/main/res/layout/item_settings_theme.xml
#	mastodon/src/main/res/layout/item_settings_theme_subitem.xml
#	mastodon/src/main/res/layout/item_settings_update.xml
#	mastodon/src/main/res/layout/tab_bar.xml
#	mastodon/src/main/res/menu/mute_duration.xml
#	mastodon/src/main/res/values-de-rDE/strings_sk.xml
#	mastodon/src/main/res/values-es-rES/strings_sk.xml
#	mastodon/src/main/res/values-fa/strings_sk.xml
#	mastodon/src/main/res/values-night/colors.xml
#	mastodon/src/main/res/values-nl-rNL/strings_sk.xml
#	mastodon/src/main/res/values-uk-rUA/strings_sk.xml
#	mastodon/src/main/res/values-zh-rCN/strings_sk.xml
#	mastodon/src/main/res/values/attrs.xml
#	mastodon/src/main/res/values/ids.xml
#	mastodon/src/main/res/values/styles.xml
#	metadata/es/changelogs/83.txt
2023-08-20 11:53:29 -03:00
LucasGGamerM
93818903c8 Merge remote-tracking branch 'megalodon_main/main' into m3-merger
# Conflicts:
#	README.md
#	build.gradle
#	mastodon/build.gradle
#	mastodon/src/main/AndroidManifest.xml
#	mastodon/src/main/java/org/joinmastodon/android/GlobalUserPreferences.java
#	mastodon/src/main/java/org/joinmastodon/android/MainActivity.java
#	mastodon/src/main/java/org/joinmastodon/android/PushNotificationReceiver.java
#	mastodon/src/main/java/org/joinmastodon/android/api/requests/accounts/SetAccountMuted.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/AccountTimelineFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/BaseStatusListFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/ComposeFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/EditTimelinesFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/HomeFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/HomeTabFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/NotificationsFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/PinnableStatusListFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/ProfileAboutFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/ProfileFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/SettingsFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/StatusListFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/account_list/BaseAccountListFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/discover/DiscoverFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/discover/SearchFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/onboarding/CustomWelcomeFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/onboarding/InstanceRulesFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/onboarding/OnboardingFollowSuggestionsFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/settings/SettingsMainFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/model/Attachment.java
#	mastodon/src/main/java/org/joinmastodon/android/model/Status.java
#	mastodon/src/main/java/org/joinmastodon/android/ui/CustomEmojiPopupKeyboard.java
#	mastodon/src/main/java/org/joinmastodon/android/ui/M3AlertDialogBuilder.java
#	mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/AudioStatusDisplayItem.java
#	mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/FooterStatusDisplayItem.java
#	mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/HeaderStatusDisplayItem.java
#	mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/PollOptionStatusDisplayItem.java
#	mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/StatusDisplayItem.java
#	mastodon/src/main/java/org/joinmastodon/android/ui/utils/InsetStatusItemDecoration.java
#	mastodon/src/main/java/org/joinmastodon/android/ui/utils/UiUtils.java
#	mastodon/src/main/res/color/button_bg_secondary_dark_on_light.xml
#	mastodon/src/main/res/color/button_text_primary_light_on_dark.xml
#	mastodon/src/main/res/drawable/bg_image_alt_text_overlay.xml
#	mastodon/src/main/res/drawable/bg_rect_4dp_ripple.xml
#	mastodon/src/main/res/drawable/bg_search_field.xml
#	mastodon/src/main/res/drawable/ic_fluent_save_24_regular.xml
#	mastodon/src/main/res/layout/compose_action.xml
#	mastodon/src/main/res/layout/compose_media_thumb.xml
#	mastodon/src/main/res/layout/compose_poll_option.xml
#	mastodon/src/main/res/layout/display_item_footer.xml
#	mastodon/src/main/res/layout/display_item_header.xml
#	mastodon/src/main/res/layout/display_item_text.xml
#	mastodon/src/main/res/layout/fragment_compose.xml
#	mastodon/src/main/res/layout/fragment_profile.xml
#	mastodon/src/main/res/layout/item_instance_category.xml
#	mastodon/src/main/res/layout/item_report_choice.xml
#	mastodon/src/main/res/layout/item_settings_footer.xml
#	mastodon/src/main/res/layout/item_settings_switch.xml
#	mastodon/src/main/res/layout/item_settings_theme.xml
#	mastodon/src/main/res/layout/item_settings_theme_subitem.xml
#	mastodon/src/main/res/layout/item_settings_update.xml
#	mastodon/src/main/res/layout/tab_bar.xml
#	mastodon/src/main/res/menu/mute_duration.xml
#	mastodon/src/main/res/values-de-rDE/strings_sk.xml
#	mastodon/src/main/res/values-es-rES/strings_sk.xml
#	mastodon/src/main/res/values-fa/strings_sk.xml
#	mastodon/src/main/res/values-night/colors.xml
#	mastodon/src/main/res/values-nl-rNL/strings_sk.xml
#	mastodon/src/main/res/values-uk-rUA/strings_sk.xml
#	mastodon/src/main/res/values-zh-rCN/strings_sk.xml
#	mastodon/src/main/res/values/attrs.xml
#	mastodon/src/main/res/values/ids.xml
#	mastodon/src/main/res/values/styles.xml
#	metadata/es/changelogs/83.txt
2023-08-20 11:36:16 -03:00
LucasGGamerM
8f4363a2d8 Merge remote-tracking branch 'megalodon_main/main' into m3-merger
# Conflicts:
#	README.md
#	build.gradle
#	mastodon/build.gradle
#	mastodon/src/main/AndroidManifest.xml
#	mastodon/src/main/java/org/joinmastodon/android/GlobalUserPreferences.java
#	mastodon/src/main/java/org/joinmastodon/android/MainActivity.java
#	mastodon/src/main/java/org/joinmastodon/android/PushNotificationReceiver.java
#	mastodon/src/main/java/org/joinmastodon/android/api/requests/accounts/SetAccountMuted.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/AccountTimelineFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/BaseStatusListFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/ComposeFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/EditTimelinesFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/HomeFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/HomeTabFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/NotificationsFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/PinnableStatusListFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/ProfileAboutFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/ProfileFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/SettingsFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/StatusListFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/account_list/BaseAccountListFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/discover/DiscoverFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/discover/SearchFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/onboarding/CustomWelcomeFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/onboarding/InstanceRulesFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/onboarding/OnboardingFollowSuggestionsFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/settings/SettingsMainFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/model/Attachment.java
#	mastodon/src/main/java/org/joinmastodon/android/model/Status.java
#	mastodon/src/main/java/org/joinmastodon/android/ui/CustomEmojiPopupKeyboard.java
#	mastodon/src/main/java/org/joinmastodon/android/ui/M3AlertDialogBuilder.java
#	mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/AudioStatusDisplayItem.java
#	mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/FooterStatusDisplayItem.java
#	mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/HeaderStatusDisplayItem.java
#	mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/PollOptionStatusDisplayItem.java
#	mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/StatusDisplayItem.java
#	mastodon/src/main/java/org/joinmastodon/android/ui/utils/InsetStatusItemDecoration.java
#	mastodon/src/main/java/org/joinmastodon/android/ui/utils/UiUtils.java
#	mastodon/src/main/res/color/button_bg_secondary_dark_on_light.xml
#	mastodon/src/main/res/color/button_text_primary_light_on_dark.xml
#	mastodon/src/main/res/drawable/bg_image_alt_text_overlay.xml
#	mastodon/src/main/res/drawable/bg_rect_4dp_ripple.xml
#	mastodon/src/main/res/drawable/bg_search_field.xml
#	mastodon/src/main/res/drawable/ic_fluent_save_24_regular.xml
#	mastodon/src/main/res/layout/compose_action.xml
#	mastodon/src/main/res/layout/compose_media_thumb.xml
#	mastodon/src/main/res/layout/compose_poll_option.xml
#	mastodon/src/main/res/layout/display_item_footer.xml
#	mastodon/src/main/res/layout/display_item_header.xml
#	mastodon/src/main/res/layout/display_item_text.xml
#	mastodon/src/main/res/layout/fragment_compose.xml
#	mastodon/src/main/res/layout/fragment_profile.xml
#	mastodon/src/main/res/layout/item_instance_category.xml
#	mastodon/src/main/res/layout/item_report_choice.xml
#	mastodon/src/main/res/layout/item_settings_footer.xml
#	mastodon/src/main/res/layout/item_settings_switch.xml
#	mastodon/src/main/res/layout/item_settings_theme.xml
#	mastodon/src/main/res/layout/item_settings_theme_subitem.xml
#	mastodon/src/main/res/layout/item_settings_update.xml
#	mastodon/src/main/res/layout/tab_bar.xml
#	mastodon/src/main/res/menu/mute_duration.xml
#	mastodon/src/main/res/values-de-rDE/strings_sk.xml
#	mastodon/src/main/res/values-es-rES/strings_sk.xml
#	mastodon/src/main/res/values-fa/strings_sk.xml
#	mastodon/src/main/res/values-night/colors.xml
#	mastodon/src/main/res/values-nl-rNL/strings_sk.xml
#	mastodon/src/main/res/values-uk-rUA/strings_sk.xml
#	mastodon/src/main/res/values-zh-rCN/strings_sk.xml
#	mastodon/src/main/res/values/attrs.xml
#	mastodon/src/main/res/values/ids.xml
#	mastodon/src/main/res/values/styles.xml
#	metadata/es/changelogs/83.txt
2023-08-20 11:34:44 -03:00
LucasGGamerM
a8cc0301bf Merge remote-tracking branch 'megalodon_main/main' into m3-merger
# Conflicts:
#	README.md
#	build.gradle
#	mastodon/build.gradle
#	mastodon/src/main/AndroidManifest.xml
#	mastodon/src/main/java/org/joinmastodon/android/GlobalUserPreferences.java
#	mastodon/src/main/java/org/joinmastodon/android/MainActivity.java
#	mastodon/src/main/java/org/joinmastodon/android/PushNotificationReceiver.java
#	mastodon/src/main/java/org/joinmastodon/android/api/requests/accounts/SetAccountMuted.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/AccountTimelineFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/BaseStatusListFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/ComposeFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/EditTimelinesFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/HomeFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/HomeTabFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/NotificationsFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/PinnableStatusListFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/ProfileAboutFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/ProfileFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/SettingsFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/StatusListFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/account_list/BaseAccountListFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/discover/DiscoverFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/discover/SearchFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/onboarding/CustomWelcomeFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/onboarding/InstanceRulesFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/onboarding/OnboardingFollowSuggestionsFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/settings/SettingsMainFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/model/Attachment.java
#	mastodon/src/main/java/org/joinmastodon/android/model/Status.java
#	mastodon/src/main/java/org/joinmastodon/android/ui/CustomEmojiPopupKeyboard.java
#	mastodon/src/main/java/org/joinmastodon/android/ui/M3AlertDialogBuilder.java
#	mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/AudioStatusDisplayItem.java
#	mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/FooterStatusDisplayItem.java
#	mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/HeaderStatusDisplayItem.java
#	mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/PollOptionStatusDisplayItem.java
#	mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/StatusDisplayItem.java
#	mastodon/src/main/java/org/joinmastodon/android/ui/utils/InsetStatusItemDecoration.java
#	mastodon/src/main/java/org/joinmastodon/android/ui/utils/UiUtils.java
#	mastodon/src/main/res/color/button_bg_secondary_dark_on_light.xml
#	mastodon/src/main/res/color/button_text_primary_light_on_dark.xml
#	mastodon/src/main/res/drawable/bg_image_alt_text_overlay.xml
#	mastodon/src/main/res/drawable/bg_rect_4dp_ripple.xml
#	mastodon/src/main/res/drawable/bg_search_field.xml
#	mastodon/src/main/res/drawable/ic_fluent_save_24_regular.xml
#	mastodon/src/main/res/layout/compose_action.xml
#	mastodon/src/main/res/layout/compose_media_thumb.xml
#	mastodon/src/main/res/layout/compose_poll_option.xml
#	mastodon/src/main/res/layout/display_item_footer.xml
#	mastodon/src/main/res/layout/display_item_header.xml
#	mastodon/src/main/res/layout/display_item_text.xml
#	mastodon/src/main/res/layout/fragment_compose.xml
#	mastodon/src/main/res/layout/fragment_profile.xml
#	mastodon/src/main/res/layout/item_instance_category.xml
#	mastodon/src/main/res/layout/item_report_choice.xml
#	mastodon/src/main/res/layout/item_settings_footer.xml
#	mastodon/src/main/res/layout/item_settings_switch.xml
#	mastodon/src/main/res/layout/item_settings_theme.xml
#	mastodon/src/main/res/layout/item_settings_theme_subitem.xml
#	mastodon/src/main/res/layout/item_settings_update.xml
#	mastodon/src/main/res/layout/tab_bar.xml
#	mastodon/src/main/res/menu/mute_duration.xml
#	mastodon/src/main/res/values-de-rDE/strings_sk.xml
#	mastodon/src/main/res/values-es-rES/strings_sk.xml
#	mastodon/src/main/res/values-fa/strings_sk.xml
#	mastodon/src/main/res/values-night/colors.xml
#	mastodon/src/main/res/values-nl-rNL/strings_sk.xml
#	mastodon/src/main/res/values-uk-rUA/strings_sk.xml
#	mastodon/src/main/res/values-zh-rCN/strings_sk.xml
#	mastodon/src/main/res/values/attrs.xml
#	mastodon/src/main/res/values/ids.xml
#	mastodon/src/main/res/values/styles.xml
#	metadata/es/changelogs/83.txt
2023-08-20 11:34:19 -03:00
Eugen Rochko
d2b45c1c84 New translations strings.xml (Swedish) 2023-08-20 12:43:05 +01:00
Eugen Rochko
a119ba5f80 New translations strings.xml (Danish) 2023-08-19 17:08:25 +01:00
Eugen Rochko
8c1191a08f New translations strings.xml (Danish) 2023-08-19 16:09:27 +01:00
Eugen Rochko
4275d596e6 New translations strings.xml (Thai) 2023-08-19 12:46:09 +01:00
snerk
2709d5226d Translated using Weblate (Norwegian Nynorsk)
Currently translated at 21.6% (78 of 360 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/nn/
2023-08-18 16:18:22 +00:00
snerk
8f613e3255 Translated using Weblate (Norwegian Nynorsk)
Currently translated at 20.8% (75 of 360 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/nn/
2023-08-18 16:18:22 +00:00
snerk
6831e846cf Translated using Weblate (Norwegian Nynorsk)
Currently translated at 18.8% (68 of 360 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/nn/
2023-08-18 16:18:22 +00:00
snerk
034eb9427d Added translation using Weblate (Norwegian Nynorsk) 2023-08-18 16:18:22 +00:00
alextecplayz
f73c325db3 Translated using Weblate (Romanian)
Currently translated at 100.0% (360 of 360 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/ro/
2023-08-18 16:18:22 +00:00
gallegonovato
5e2b11c504 Translated using Weblate (Spanish)
Currently translated at 100.0% (360 of 360 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/es/
2023-08-18 16:18:22 +00:00
EndermanCo
ec13133431 Translated using Weblate (Persian)
Currently translated at 38.8% (7 of 18 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/fa/
2023-08-18 16:18:22 +00:00
EndermanCo
a8a56a3ed8 Translated using Weblate (Persian)
Currently translated at 100.0% (360 of 360 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/fa/
2023-08-18 16:18:22 +00:00
0eoc
4e9c7c4de2 Translated using Weblate (Russian)
Currently translated at 61.1% (11 of 18 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/ru/
2023-08-18 16:18:22 +00:00
ihor_ck
ffb7894098 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (360 of 360 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/uk/
2023-08-18 16:18:22 +00:00
Linerly
0d9520ac45 Translated using Weblate (Indonesian)
Currently translated at 100.0% (360 of 360 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/id/
2023-08-18 16:18:22 +00:00
Choukajohn
be852e57df Translated using Weblate (French)
Currently translated at 100.0% (360 of 360 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/fr/
2023-08-18 16:18:22 +00:00
0eoc
157b38b8ae Translated using Weblate (Russian)
Currently translated at 96.1% (323 of 336 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/ru/
2023-08-18 16:18:22 +00:00
gallegonovato
83196a1a0d Translated using Weblate (Spanish)
Currently translated at 100.0% (336 of 336 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/es/
2023-08-18 16:18:22 +00:00
Codeberg Translate
306225b054 Update translation files
Updated by "Remove blank strings" hook in Weblate.

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/
2023-08-18 16:18:22 +00:00
edxkl
6efc71d8d2 Translated using Weblate (Portuguese (Brazil))
Currently translated at 94.4% (17 of 18 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/pt_BR/
2023-08-18 16:18:21 +00:00
edxkl
cc4cd4d3f8 Translated using Weblate (Portuguese (Brazil))
Currently translated at 97.3% (327 of 336 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/pt_BR/
2023-08-18 16:18:21 +00:00
EndermanCo
00e3292205 Translated using Weblate (Persian)
Currently translated at 27.7% (5 of 18 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/fa/
2023-08-18 16:18:21 +00:00
0eoc
316952423c Translated using Weblate (Russian)
Currently translated at 61.1% (11 of 18 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/ru/
2023-08-18 16:18:21 +00:00
gicorada
61c2abd014 Translated using Weblate (Italian)
Currently translated at 100.0% (336 of 336 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/it/
2023-08-18 16:18:21 +00:00
EndermanCo
ee5f299b90 Translated using Weblate (Persian)
Currently translated at 100.0% (336 of 336 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/fa/
2023-08-18 16:18:21 +00:00
0eoc
f153846381 Translated using Weblate (Russian)
Currently translated at 81.2% (273 of 336 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/ru/
2023-08-18 16:18:21 +00:00
gallegonovato
0656db0858 Translated using Weblate (Spanish)
Currently translated at 99.1% (333 of 336 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/es/
2023-08-18 16:18:21 +00:00
EndermanCo
7f250cb8df Translated using Weblate (Persian)
Currently translated at 100.0% (336 of 336 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/fa/
2023-08-18 16:18:21 +00:00
EndermanCo
a1e73eca89 Translated using Weblate (Persian)
Currently translated at 98.5% (331 of 336 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/fa/
2023-08-18 16:18:21 +00:00
ihor_ck
1dc6936da6 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (336 of 336 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/uk/
2023-08-18 16:18:21 +00:00
Eryk Michalak
0431d80a8d Translated using Weblate (Polish)
Currently translated at 91.3% (307 of 336 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/pl/
2023-08-18 16:18:21 +00:00
Linerly
eaa78093f7 Translated using Weblate (Indonesian)
Currently translated at 100.0% (336 of 336 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/id/
2023-08-18 16:18:21 +00:00
Choukajohn
25b7151fde Translated using Weblate (French)
Currently translated at 100.0% (336 of 336 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/fr/
2023-08-18 16:18:21 +00:00
Hudobni Volk
0438b579b6 Translated using Weblate (Slovenian)
Currently translated at 100.0% (336 of 336 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/sl/
2023-08-18 16:18:21 +00:00
alextecplayz
afa50a4e8c Translated using Weblate (Romanian)
Currently translated at 100.0% (336 of 336 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/ro/
2023-08-18 16:18:21 +00:00
EndermanCo
85bdb0067b Translated using Weblate (Persian)
Currently translated at 98.5% (330 of 335 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/fa/
2023-08-18 16:18:21 +00:00
Hudobni Volk
760cbc7f9a Translated using Weblate (Slovenian)
Currently translated at 61.1% (11 of 18 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/sl/
2023-08-18 16:18:21 +00:00
ganjibaiemade
d0e34fcd90 Translated using Weblate (Chinese (Traditional))
Currently translated at 18.2% (61 of 335 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/zh_Hant/
2023-08-18 16:18:21 +00:00
Hudobni Volk
da434b9a9b Translated using Weblate (Slovenian)
Currently translated at 100.0% (335 of 335 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/sl/
2023-08-18 16:18:21 +00:00
Linerly
48863dd510 Translated using Weblate (Indonesian)
Currently translated at 100.0% (335 of 335 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/id/
2023-08-18 16:18:21 +00:00
FineFindus
2ca34278f9 build: add F-Droid flavor (#760)
* build: add fdroid flavor

* feat: disable fcm registration in f-droid flavor
2023-08-18 18:15:57 +02:00
Jacoco
a79779f813 Emoji Reactions Support (#645)
* Display Pleroma emoji reactions

* Interact with existing Pleroma emoji reactions

* Setting for emoji reaction support

* Setting for displaying reactions in timelines

* More horizontal padding on reactions display item

* List accounts who reacted

* Arbitrary emoji reaction from status footer

* Hide custom emoji keyboard when emoji is selected

* Clear preferences before applying
All preferences get written anyways so nothing will be lost

* Reset react visibility state on bind

* Fix custom emoji turning black when reacting

* Load reactions when a new one is added

* Emoji reactions grid

* Load custom emoji in reactions list fragment

* New reaction toast messages and Unicode emoji regex

* Make custom emoji picker for reactions scrollable

* Scroll down to show custom emoji picker when reacting

* Divider after reaction custom emoji picker

* Animate react button opacity back in

* fix plural strings

* re-implement reactions using horizontal recycler view

* update reactions with event

* tweak emoji font size

* tweak button styles (a tiny bit)

* change footer react button behavior

* fix emoji reaction status item padding

* move emoji reactions below content items

* add content description and tooltip

* use custom emoji keyboard to enter unicode emoji

* fix reactions clearing on status counter updates

* fix space next to emoji reactions not clickable

* make compatible with glitch-soc

* Remove now unused EmojiReactionsView class

* improve handling of reaction padding

---------

Co-authored-by: sk <sk22@mailbox.org>
2023-08-18 18:14:33 +02:00
Eugen Rochko
cc83f2baf3 New translations strings.xml (Danish) 2023-08-18 01:51:02 +01:00
Eugen Rochko
728496b831 New translations strings.xml (Danish) 2023-08-18 00:06:12 +01:00
Eugen Rochko
bbc99162c6 New translations strings.xml (Danish) 2023-08-17 16:47:55 +01:00
Eugen Rochko
eed3af9e3e New translations strings.xml (Arabic) 2023-08-16 22:54:50 +02:00
Eugen Rochko
50187ff376 New translations strings.xml (Arabic) 2023-08-16 21:48:52 +02:00
Eugen Rochko
5f30919fb4 New translations strings.xml (Arabic) 2023-08-16 18:38:58 +02:00
Eugen Rochko
14c3cfac85 New translations strings.xml (French) 2023-08-16 15:50:45 +02:00
Eugen Rochko
e978f02765 New translations strings.xml (French) 2023-08-16 14:09:02 +02:00
Eugen Rochko
8d877c480f New translations strings.xml (French) 2023-08-16 12:20:32 +02:00
Eugen Rochko
c53efee9a1 New translations strings.xml (Thai) 2023-08-15 22:47:32 +02:00
Eugen Rochko
148c461e86 New translations strings.xml (Danish) 2023-08-15 16:40:55 +02:00
Eugen Rochko
fcadb9883d New translations strings.xml (Danish) 2023-08-15 14:59:58 +02:00
Eugen Rochko
bb6491e10a New translations full_description.txt (Danish) 2023-08-15 14:59:57 +02:00
Eugen Rochko
6248ccf376 New translations full_description.txt (Danish) 2023-08-15 13:53:21 +02:00
Eugen Rochko
c9e08f36fa New translations full_description.txt (Danish) 2023-08-15 03:19:07 +02:00
Eugen Rochko
10b95d753b New translations full_description.txt (Danish) 2023-08-15 02:15:33 +02:00
Eugen Rochko
c3989083cf New translations strings.xml (Portuguese) 2023-08-14 15:33:01 +02:00
Eugen Rochko
01db585094 New translations strings.xml (Basque) 2023-08-14 01:42:56 +02:00
Eugen Rochko
cc67cb330c New translations full_description.txt (Basque) 2023-08-14 00:10:18 +02:00
Eugen Rochko
52ed3c5a04 New translations strings.xml (Basque) 2023-08-14 00:10:17 +02:00
Eugen Rochko
5976f6230a New translations strings.xml (Chinese Simplified) 2023-08-13 18:58:06 +02:00
Eugen Rochko
3553f03a95 New translations strings.xml (Slovenian) 2023-08-13 11:06:06 +02:00
Eugen Rochko
d6e2d889c3 New translations strings.xml (Slovenian) 2023-08-12 16:02:40 +02:00
Eugen Rochko
a777b3b450 New translations strings.xml (Slovenian) 2023-08-12 14:07:49 +02:00
Eugen Rochko
9957efbea0 New translations strings.xml (Norwegian) 2023-08-12 01:06:29 +02:00
Parsa Ranjbar
ca78b6147a Translated using Weblate (Persian)
Currently translated at 5.8% (2 of 34 strings)

Translation: Moshidon/metadata
Translate-URL: https://translate.codeberg.org/projects/moshidon/metadata/fa/
2023-08-11 19:53:03 +00:00
maxch
4afa05f3de Translated using Weblate (Ukrainian)
Currently translated at 100.0% (34 of 34 strings)

Translation: Moshidon/metadata
Translate-URL: https://translate.codeberg.org/projects/moshidon/metadata/uk/
2023-08-11 19:53:03 +00:00
Eugen Rochko
22e7b9730f New translations strings.xml (Vietnamese) 2023-08-11 17:50:37 +02:00
Eugen Rochko
91470b8509 New translations strings.xml (Vietnamese) 2023-08-11 16:21:15 +02:00
Eugen Rochko
c9d5327328 New translations strings.xml (Russian) 2023-08-11 12:41:37 +02:00
Eugen Rochko
1aa61b72e5 New translations strings.xml (Russian) 2023-08-11 10:45:11 +02:00
Eugen Rochko
3ca5edc3fc New translations strings.xml (Russian) 2023-08-11 09:19:15 +02:00
Eugen Rochko
a092ebaeb3 New translations strings.xml (Russian) 2023-08-11 08:03:02 +02:00
Eugen Rochko
5b9e84c255 New translations strings.xml (Russian) 2023-08-11 07:07:00 +02:00
Eugen Rochko
9c058b926f New translations strings.xml (Russian) 2023-08-10 12:30:16 +02:00
Eugen Rochko
4f2d2ae6e8 New translations strings.xml (Russian) 2023-08-10 11:10:22 +02:00
maxch
30797cae6d Translated using Weblate (Ukrainian)
Currently translated at 100.0% (328 of 328 strings)

Translation: Moshidon/values_sk
Translate-URL: https://translate.codeberg.org/projects/moshidon/values_sk/uk/
2023-08-09 14:53:04 +00:00
maxch
803671822f Translated using Weblate (Ukrainian)
Currently translated at 20.5% (7 of 34 strings)

Translation: Moshidon/metadata
Translate-URL: https://translate.codeberg.org/projects/moshidon/metadata/uk/
2023-08-09 14:53:03 +00:00
maxch
d4595c7372 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (76 of 76 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/uk/
2023-08-09 14:53:03 +00:00
psw1747
a051be1fd5 Translated using Weblate (Japanese)
Currently translated at 100.0% (76 of 76 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/ja/
2023-08-09 14:53:03 +00:00
Eugen Rochko
75aa26a018 New translations strings.xml (Russian) 2023-08-09 14:50:26 +02:00
Eugen Rochko
0f795254e5 New translations strings.xml (Russian) 2023-08-09 13:28:03 +02:00
Eugen Rochko
33592f0a83 New translations strings.xml (Swedish) 2023-08-07 12:43:38 +02:00
Eugen Rochko
d6fd01eaca New translations strings.xml (Swedish) 2023-08-07 10:56:51 +02:00
Mark Hansen
1cdc58378a Sort Hashtags you follow menu (#695)
* Sort Hashtags you follow menu

* change sorting method

---------

Co-authored-by: Mark Hansen <mhansen@accusoft.com>
Co-authored-by: sk <sk22@mailbox.org>
2023-08-05 20:43:23 +02:00
FineFindus
584b11fce3 feat: allow playing multiple media (#755)
* feat: allow playing multiple media

* replace audio overlay icon

---------

Co-authored-by: sk <sk22@mailbox.org>
2023-08-05 20:35:57 +02:00
FineFindus
fe2039062b fix(remote): send remoteAccount (#754)
closes sk22#664

* fix(remote): send remoteAccount

* fix(server-about): set adming account as remote

* fix(remote): show remote local accounts as remote
2023-08-05 20:30:41 +02:00
FineFindus
0269756b52 feat: change mute duration (#751)
* feat: add mute timer

* fix: missing ressources

* refactor(add-mute-timer): change of the mute timer popup layout

* tweak mute dialog

---------

Co-authored-by: LucasGGamerM <lucassggabriel@gmail.com>
Co-authored-by: sk <sk22@mailbox.org>
2023-08-05 20:17:40 +02:00
FineFindus
df1a6cf764 feat(openURL): open about in app (#750) 2023-08-05 19:44:18 +02:00
FineFindus
6d2385b6b3 feat: support UnifiedPush notifications (#749)
* build: add unified push dependency

* feat(notification): allow arbitrary push notification endpoint

* feat(notification/unified-push): show notification

* refactor(unifiedPush): use more consise null check

* feat(settings/notification): add UnifiedPush toggle

* feat(settings/notification): show no distributor message

* feat(settings/notification): disable unifiedpush when no distributor is available

* change icon name

---------

Co-authored-by: sk <sk22@mailbox.org>
2023-08-05 19:42:10 +02:00
FineFindus
44eaa36cef fix: copy link invisible on EMUI (#753) 2023-08-05 19:33:36 +02:00
sk
50b40c4a07 Merge remote-tracking branch 'upstream/master' 2023-08-05 19:32:28 +02:00
Eugen Rochko
ee6e0ff26c New translations strings.xml (Russian) 2023-08-04 19:26:18 +02:00
Eugen Rochko
4d9574bf38 New translations strings.xml (Russian) 2023-08-04 17:51:30 +02:00
Eugen Rochko
813be9a2be New translations strings.xml (Russian) 2023-08-04 16:30:43 +02:00
Eugen Rochko
cc76ebfafb New translations strings.xml (Russian) 2023-08-04 14:58:02 +02:00
Eugen Rochko
7989ee0243 New translations strings.xml (Russian) 2023-08-04 13:58:08 +02:00
Eugen Rochko
3aa1997cfd New translations strings.xml (Russian) 2023-08-04 12:51:54 +02:00
dontobi
4cc72d1d48 Translated using Weblate (German)
Currently translated at 100.0% (76 of 76 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/de/
2023-08-03 18:53:03 +00:00
Grishka
c3da15552e Merge branch 'l10n_master' 2023-08-03 17:22:04 +03:00
Grishka
a014fe9443 Fix media layout with unknown sizes 2023-08-03 17:21:40 +03:00
Eugen Rochko
92551d4ca3 New translations strings.xml (Portuguese, Brazilian) 2023-08-03 03:27:17 +02:00
Eugen Rochko
8010858e85 New translations strings.xml (Portuguese, Brazilian) 2023-08-03 02:26:22 +02:00
Eugen Rochko
4efb4875b0 New translations strings.xml (Swedish) 2023-08-02 09:16:24 +02:00
Eugen Rochko
c5d041e46d New translations strings.xml (Portuguese, Brazilian) 2023-08-01 23:11:09 +02:00
Eugen Rochko
53c2223aae New translations strings.xml (Portuguese, Brazilian) 2023-08-01 21:25:07 +02:00
Eugen Rochko
25034ac0ae New translations strings.xml (Portuguese, Brazilian) 2023-08-01 01:41:52 +02:00
Eugen Rochko
ac9de72b75 New translations strings.xml (Portuguese, Brazilian) 2023-08-01 00:42:41 +02:00
Eugen Rochko
1f48ad93f2 New translations strings.xml (Portuguese, Brazilian) 2023-07-31 23:46:36 +02:00
dontobi
c39aa18ab2 Translated using Weblate (German)
Currently translated at 100.0% (328 of 328 strings)

Translation: Moshidon/values_sk
Translate-URL: https://translate.codeberg.org/projects/moshidon/values_sk/de/
2023-07-31 17:53:03 +00:00
dontobi
58602dfe1c Translated using Weblate (German)
Currently translated at 100.0% (76 of 76 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/de/
2023-07-31 17:53:03 +00:00
dontobi
2003bec14d Translated using Weblate (German)
Currently translated at 100.0% (34 of 34 strings)

Translation: Moshidon/metadata
Translate-URL: https://translate.codeberg.org/projects/moshidon/metadata/de/
2023-07-31 17:53:03 +00:00
Eugen Rochko
38f7f7aa00 New translations strings.xml (Czech) 2023-07-31 14:32:20 +02:00
Eugen Rochko
fe8175c63a New translations strings.xml (French) 2023-07-30 19:39:54 +02:00
Eugen Rochko
2d9e01bbc1 New translations strings.xml (French) 2023-07-30 18:44:39 +02:00
Oliebol
f7af328cd7 Translated using Weblate (Dutch)
Currently translated at 90.8% (298 of 328 strings)

Translation: Moshidon/values_sk
Translate-URL: https://translate.codeberg.org/projects/moshidon/values_sk/nl/
2023-07-28 16:53:02 +00:00
0eoc
20c7a84900 Translated using Weblate (Russian)
Currently translated at 98.6% (75 of 76 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/ru/
2023-07-28 16:53:02 +00:00
Eugen Rochko
022a227b08 New translations strings.xml (Turkish) 2023-07-28 00:29:16 +02:00
Eugen Rochko
a2228259f1 New translations full_description.txt (Turkish) 2023-07-27 23:33:53 +02:00
Eugen Rochko
a61af7c56f New translations strings.xml (Turkish) 2023-07-27 23:33:52 +02:00
Eugen Rochko
5d6a646976 New translations strings.xml (French) 2023-07-27 23:33:51 +02:00
Eugen Rochko
628d0d7492 New translations strings.xml (French) 2023-07-27 22:05:11 +02:00
Andrewblasco
f21b20f4c4 Translated using Weblate (Spanish)
Currently translated at 100.0% (76 of 76 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/es/
2023-07-27 04:53:01 +00:00
Eugen Rochko
b76c8745ec New translations strings.xml (Norwegian) 2023-07-25 22:57:26 +02:00
Eugen Rochko
51e67bc441 New translations strings.xml (Norwegian) 2023-07-25 21:52:29 +02:00
Gregory K
8887f75b70 Merge pull request #655 from nilathedragon/patch-1
Do not assume languages array will contain entries
2023-07-25 19:12:56 +03:00
Nila
9436a838c0 Do not assume languages array will contain entries 2023-07-25 17:28:41 +02:00
Eugen Rochko
ef120fa36f New translations strings.xml (Swedish) 2023-07-25 00:55:54 +02:00
Eugen Rochko
8c6385e2c5 New translations strings.xml (Swedish) 2023-07-24 23:57:42 +02:00
Eugen Rochko
0bd85d9905 New translations strings.xml (Persian) 2023-07-24 13:40:53 +02:00
Eugen Rochko
ce0dab7b28 New translations strings.xml (Czech) 2023-07-24 09:55:45 +02:00
sk
bdcebf1576 boop verisom 2023-07-23 22:03:25 +02:00
Botiplz
009dc226d5 Update mastodon/src/main/res/values-de-rDE/strings_mo.xml
Co-authored-by: FineFindus <63370021+FineFindus@users.noreply.github.com>
2023-07-22 22:16:17 +02:00
Botiplz
94ab5835d8 Formatting strings_mo.xml 2023-07-22 19:51:54 +02:00
Botiplz
ae5d2a7ed3 Formatting 2023-07-22 19:50:58 +02:00
Botiplz
6ed7d24513 PR comments:
- StatusFilterPredicate sets clientFilters bases on settings
- Reverted changes on SettingsFragment
- Resources in strings_mo.xml
- removed duplicate comments
- conditional in onBind method
2023-07-22 19:41:01 +02:00
Eugen Rochko
ddcc5670ce New translations strings.xml (Bengali) 2023-07-22 17:48:06 +02:00
Botiplz
605ba441d3 Option "Show media posts with missing alt text" 2023-07-22 16:58:15 +02:00
Eugen Rochko
86afa184e2 New translations strings.xml (Bengali) 2023-07-22 16:26:35 +02:00
Eugen Rochko
77f341f139 New translations strings.xml (German) 2023-07-22 12:27:40 +02:00
Eugen Rochko
918b5d99c2 New translations strings.xml (Swedish) 2023-07-21 22:09:32 +02:00
Eugen Rochko
7a098d6eff New translations strings.xml (Swedish) 2023-07-21 21:06:04 +02:00
sk
239b6f8202 fix pill-less navigation bar with labels 2023-07-21 11:41:34 +02:00
Jacoco
8404c79148 Re-implement some Akkoma specific things + hide filter settings (#729)
* Replace missing blurhash with accent color

* Correct Akkoma max account fields

* Skip discover on Akkoma

* Akkoma poll limits

* Hide filter settings on Akkoma

* clear search fragment on back

---------

Co-authored-by: sk <sk22@mailbox.org>
2023-07-21 02:29:38 +02:00
sk
5b2d04e09d add navigation bar tab labels - with option to hide them 2023-07-21 01:45:08 +02:00
sk
6bd13f99d2 add a readme link to the sauna repo 2023-07-21 01:15:35 +02:00
sk
2e8e12c1c8 add font tracking to label_medium 2023-07-21 01:08:07 +02:00
sk
17929a6b2d upstream was right about the weird padding
see "Navigation bar target size and margins" in
https://m3.material.io/components/navigation-bar/specs
2023-07-21 00:37:05 +02:00
sk
9455eaf820 parse html in pronouns 2023-07-21 00:30:30 +02:00
sk
cc054487ba configurable pronoun display 2023-07-21 00:22:52 +02:00
sk
e2df320d00 fix edit history header lines 2023-07-21 00:03:11 +02:00
sk
d74313f996 remove code for below-header reply lines 2023-07-20 23:58:18 +02:00
sk
b3cab67049 fix null pointer when accessing draft content type
closes sk22#734
2023-07-20 23:43:46 +02:00
sk
996f0b22b9 use theme color for alt badge text 2023-07-20 23:39:11 +02:00
sk
67952ea98e fix bugged alt text badge state 2023-07-20 23:39:00 +02:00
sk
7a02ca435f make alt badge more transparent
closes sk22#735
2023-07-20 23:19:47 +02:00
Eugen Rochko
71f81283f5 New translations strings.xml (Polish) 2023-07-20 13:51:45 +02:00
Eugen Rochko
058c7c3c33 New translations strings.xml (Danish) 2023-07-20 10:31:41 +02:00
Eugen Rochko
870e33879b New translations strings.xml (Indonesian) 2023-07-19 07:48:32 +02:00
Eugen Rochko
3ca82bdfc5 New translations strings.xml (Japanese) 2023-07-19 05:08:28 +02:00
Hudobni Volk
21167a4c54 Translated using Weblate (Slovenian)
Currently translated at 77.1% (253 of 328 strings)

Translation: Moshidon/values_sk
Translate-URL: https://translate.codeberg.org/projects/moshidon/values_sk/sl/
2023-07-18 20:38:06 +00:00
alextecplayz
f737a7a132 Translated using Weblate (Romanian)
Currently translated at 2.9% (1 of 34 strings)

Translation: Moshidon/metadata
Translate-URL: https://translate.codeberg.org/projects/moshidon/metadata/ro/
2023-07-18 20:38:06 +00:00
Hudobni Volk
1c6c0b928d Translated using Weblate (Slovenian)
Currently translated at 27.6% (21 of 76 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/sl/
2023-07-18 20:38:06 +00:00
Eugen Rochko
4721bad286 New translations short_description.txt (Armenian) 2023-07-18 16:30:06 +02:00
Eugen Rochko
f040cf2f07 New translations full_description.txt (Armenian) 2023-07-18 16:30:05 +02:00
Eugen Rochko
8d50717c90 New translations strings.xml (Armenian) 2023-07-18 16:30:04 +02:00
Eugen Rochko
2512ad3c95 New translations strings.xml (Armenian) 2023-07-18 14:49:00 +02:00
sk
8d55f62da9 round inset notifications
closes sk22#665
2023-07-18 12:54:04 +02:00
Eugen Rochko
bc7e007634 New translations strings.xml (Swedish) 2023-07-18 12:03:42 +02:00
Eugen Rochko
1f3c87e0c7 New translations strings.xml (Swedish) 2023-07-18 10:31:42 +02:00
sk
ee0048a406 fix wrong margins for media posts with cw / without text 2023-07-18 09:59:47 +02:00
sk
14dcc769f2 fix monochrome icon
closes sk22#719
2023-07-18 09:01:13 +02:00
sk
f2e6255eb3 remove flagship instance reference 2023-07-18 08:52:40 +02:00
sk
7d392e20fb fix trending hashtags not loading
closes sk22#724
2023-07-18 08:40:54 +02:00
sk
3f2e6d2be6 remove log.d call 2023-07-17 22:53:16 +02:00
sk
a74c285f77 fix alt text editor theme
closes sk22#700
2023-07-17 22:51:45 +02:00
sk
8aec4a2717 fix inconsistent spoiler state, apparently?
closes sk22#711
2023-07-17 22:23:45 +02:00
sk
a106193039 use fediverse string 2023-07-17 21:59:39 +02:00
sk
5736605771 Merge remote-tracking branch 'weblate/main' 2023-07-17 21:56:19 +02:00
sk
9f0a710e40 update string 2023-07-17 21:55:33 +02:00
sk
f6f8cfb8e8 fix m3 filled disabled button opacity 2023-07-17 21:49:05 +02:00
sk
4e28f011dd Merge remote-tracking branch 'upstream/master' 2023-07-17 21:35:24 +02:00
Grishka
4bb255e0bb Fix #619 2023-07-17 20:25:08 +03:00
sk22
a48d545989 Translated using Weblate (French)
Currently translated at 100.0% (335 of 335 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/fr/
2023-07-17 04:03:22 +00:00
EndermanCo
e58cf54a5a Translated using Weblate (Persian)
Currently translated at 98.2% (329 of 335 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/fa/
2023-07-17 04:03:22 +00:00
gicorada
2a45776f01 Translated using Weblate (Italian)
Currently translated at 100.0% (18 of 18 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/it/
2023-07-17 04:03:21 +00:00
michaelmathy
332aa906b5 Translated using Weblate (French)
Currently translated at 88.8% (16 of 18 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/fr/
2023-07-17 04:03:21 +00:00
ihor_ck
ef624dfe30 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (335 of 335 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/uk/
2023-07-17 04:03:21 +00:00
Hudobni Volk
1b0b9bedea Translated using Weblate (Slovenian)
Currently translated at 91.9% (308 of 335 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/sl/
2023-07-17 04:03:21 +00:00
alextecplayz
e2672bea6e Translated using Weblate (Romanian)
Currently translated at 100.0% (335 of 335 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/ro/
2023-07-17 04:03:21 +00:00
Oliebol
5916001462 Translated using Weblate (Dutch)
Currently translated at 80.5% (270 of 335 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/nl/
2023-07-17 04:03:21 +00:00
gicorada
cacd403b89 Translated using Weblate (Italian)
Currently translated at 100.0% (335 of 335 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/it/
2023-07-17 04:03:21 +00:00
Espasant3
2732f710da Translated using Weblate (Galician)
Currently translated at 96.1% (322 of 335 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/gl/
2023-07-17 04:03:21 +00:00
michaelmathy
070268eafd Translated using Weblate (French)
Currently translated at 100.0% (335 of 335 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/fr/
2023-07-17 04:03:21 +00:00
sk22
7149971351 Translated using Weblate (German)
Currently translated at 100.0% (335 of 335 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/de/
2023-07-17 04:03:21 +00:00
Gaemy
e7ada54bd9 Translated using Weblate (Spanish)
Currently translated at 100.0% (328 of 328 strings)

Translation: Moshidon/values_sk
Translate-URL: https://translate.codeberg.org/projects/moshidon/values_sk/es/
2023-07-16 23:38:06 +00:00
Gaemy
9c1b654db8 Translated using Weblate (Spanish)
Currently translated at 100.0% (76 of 76 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/es/
2023-07-16 23:38:06 +00:00
sk
f46668c023 Merge remote-tracking branch 'upstream/master' into fix-divergent-branches 2023-07-16 18:24:59 +02:00
sk
74d0937078 Merge remote-tracking branch 'weblate/main' 2023-07-16 18:05:55 +02:00
EndermanCo
b236e88ef2 Translated using Weblate (Persian)
Currently translated at 95.1% (312 of 328 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/fa/
2023-07-16 16:02:44 +00:00
Gaemy
12acf6761b Translated using Weblate (Spanish)
Currently translated at 100.0% (18 of 18 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/es/
2023-07-16 16:02:44 +00:00
Gaemy
8522f1fd29 Translated using Weblate (Spanish)
Currently translated at 100.0% (328 of 328 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/es/
2023-07-16 16:02:44 +00:00
sk22
7677ad39ca Merge upstream redesign (#714)
* merge toolbar fragment

* Fix store screenshot generator

* Fix alert color

* Fix #609

* Fix crash

* bigger hitbox for chips

* support mastodon languages

* merge ui utils

* merge stuff

* fix icon

* ensure 48dp touch target

* init local prefs, add helper function for enum values

* update compose action layout

* merge compose-adj files

* update extended footer

* fix poll wrong option checked

closes sk22#641

* no border when disabled

closes sk22#640

* Fix #610

* Minor fixes

* Fix alert color

* Fix #609

* Fix crash

* Fix #610

* Minor fixes

* add resources

* more compatible mastodon language

* fix html parser

* mark as read on refresh

* update tab bar

* tweak m3 buttons

* update compose-adj files

* tweak and update styles

* m3 expand button

* flag icon should be 18dp, actually

* More minor fixes

closes #612

* More minor fixes

closes #612

* Bump version

* fix no create status event when redrafting

* add material 3 assets

* New translations strings.xml (Greek)

* New translations strings.xml (Greek)

* New translations strings.xml (Italian)

* New translations strings.xml (Greek)

* New translations strings.xml (Italian)

* New translations strings.xml (Thai)

* New translations strings.xml (Thai)

* New translations strings.xml (Italian)

* New translations strings.xml (Thai)

* use new buttons for profile fragment

* merge compose fragment

* merge all the styles! oh dear

* New translations full_description.txt (Indonesian)

* New translations full_description.txt (Chinese Simplified)

* New translations strings.xml (Chinese Simplified)

* New translations full_description.txt (Chinese Simplified)

* Fix #615

* Minor fixes

* Fix #611

* A bunch of crash fixes

* New translations strings.xml (Greek)

* Make the default server configurable

* Pass the system timezone to server when signing up

* New translations strings.xml (Chinese Simplified)

* New translations strings.xml (Japanese)

* Fix #615

* Minor fixes

* Fix #611

* A bunch of crash fixes

* Make the default server configurable

* Pass the system timezone to server when signing up

* oops. accidentally pasted the commit message in the code

* Remove unused code that caused a crash for some users ¯\_(ツ)_/¯

* New translations strings.xml (Japanese)

* New translations strings.xml (Japanese)

* Remove unused code that caused a crash for some users ¯\_(ツ)_/¯

* New translations strings.xml (Polish)

* New translations strings.xml (Polish)

* New translations strings.xml (Turkish)

* New translations strings.xml (Belarusian)

* prepare merging profile fragment

* merge profile fragment

* New translations strings.xml (Belarusian)

* New translations strings.xml (Greek)

* fix icon padding

* apply post header changes

* minor margin tweaks

* fix footer buttons

* fix header announcement buttons

* New translations strings.xml (Japanese)

* New translations strings.xml (Japanese)

* New translations strings.xml (Japanese)

* New translations strings.xml (Japanese)

* New translations strings.xml (Japanese)

* New translations strings.xml (Japanese)

* New translations full_description.txt (Japanese)

* New translations strings.xml (Icelandic)

* New translations strings.xml (Icelandic)

* New translations strings.xml (Icelandic)

* fix replying

* New translations strings.xml (Icelandic)

* fix translate button

* fix more button visibility

* fix counts label styling

* fix disabled boost button opacity

* fix tab layouts

* fix notification icon color crash

* New translations strings.xml (Greek)

* implement elevation listener in home tab

* fix elevation and listener in home tab

* add elevation scroll listener to notifications

* New translations strings.xml (Scottish Gaelic)

* Add editorconfig

So that PRs like #625 don't happen again

* Crash fix

* 🤔

* New translations strings.xml (Greek)

* New translations strings.xml (Japanese)

* New translations strings.xml (French)

* New translations strings.xml (French)

* New translations strings.xml (French)

* fix notification elevation and integrate divider

* 🤔

* Crash fix

* Add editorconfig

So that PRs like #625 don't happen again

* New translations strings.xml (Turkish)

* save interactions in cache

* New translations strings.xml (Turkish)

* merge new discover/search

* New translations strings.xml (Bengali)

* New translations strings.xml (Scottish Gaelic)

* New translations strings.xml (Bengali)

* merge new settings fragments

* fix no auth callback always being executed

* allow opening server info from profile

closes sk22#593

* fix hide boosts icon color

closes sk22#676

* New translations strings.xml (Turkish)

* New translations strings.xml (Turkish)

* New translations strings.xml (Turkish)

* New translations strings.xml (Chinese Simplified)

* New translations strings.xml (Turkish)

* New translations strings.xml (Chinese Simplified)

* New translations strings.xml (German)

* New translations strings.xml (German)

* New translations strings.xml (Turkish)

* update fedinuke list

from source; doesn't contain any modifications regarding a recent issue

* New translations strings.xml (Turkish)

* remove unused class

* fix crash

* darken m3 outline color a bit

* use m3 outline again

* fix misalignment

closes sk22#682

* New translations strings.xml (Turkish)

* New translations full_description.txt (Turkish)

* New translations short_description.txt (Turkish)

* fix crash

* fix metadata sorting

* show pronouns in header/account lists

* fix broken divider line

closes sk22#679

* trim pronouns

* improve pronoun display

* New translations strings.xml (French)

* New translations strings.xml (Japanese)

* fix broken federated timeline

closes sk22#685

* fix broken -1 fallback behavior

closes sk22#681

* don't display nothing if server about request fails

closes sk22#678

* New translations strings.xml (Ukrainian)

* migrate global prefs to local prefs

* do confirm unfollow by default

* New translations strings.xml (Ukrainian)

* New translations strings.xml (Ukrainian)

* New translations full_description.txt (Ukrainian)

* New translations strings.xml (Ukrainian)

* New translations strings.xml (Ukrainian)

* New translations strings.xml (Ukrainian)

* New translations strings.xml (Ukrainian)

* New translations strings.xml (Ukrainian)

* New translations strings.xml (Russian)

* New translations strings.xml (Vietnamese)

* New translations strings.xml (Ukrainian)

* New translations strings.xml (Vietnamese)

* New translations full_description.txt (Ukrainian)

* New translations strings.xml (Ukrainian)

* New translations strings.xml (Vietnamese)

* New translations strings.xml (Ukrainian)

* New translations strings.xml (Ukrainian)

* make sure list in prefs are always mutable and nut null

* New translations strings.xml (Ukrainian)

* New translations strings.xml (Ukrainian)

* New translations strings.xml (Russian)

* fix pronouns edge case

* add back fix for stretched images

closes sk22#636

* fix null pointer on missing default posting language

* fix default posting language not being applied

* bigger username hitbox

closes sk22#688

* fix rtl header username alignment

closes sk22#689

* New translations strings.xml (Ukrainian)

* New translations strings.xml (Ukrainian)

* hopefully fix crashes

closes sk22#692

* New translations strings.xml (Ukrainian)

* New translations full_description.txt (Ukrainian)

* fix pronoun crash

* New translations strings.xml (Persian)

* New translations strings.xml (Ukrainian)

* re-add true black mode

* asterisk can be a pronoun

* New translations strings.xml (Persian)

* true black mode fixes and clean-ups

* material 3 button background for switcher

* darker tab bar selected background

* better align follow/following button widths

* restore rainbow refresh colors

* fix search transition

* fix min width issue with switcher button

* fix no elevation when true black is enabled in light theme

* use statusForContent to determine spoilerRevealed

closes sk22#694

* New translations strings.xml (Persian)

* New translations strings.xml (Persian)

* New translations strings.xml (Persian)

* New translations strings.xml (Persian)

* New translations strings.xml (Persian)

* New translations strings.xml (Persian)

* fix profile tab bar in true black theme

* fix m3 default button style

closes sk22#697

* prettier role badges

closes sk22#663

* fix translate button spacing

closes sk22#655

* use m3 switches in dialogs

closes sk22#653

* implement color palette switcher

* fix color palettes being overwritten

* add display and notification settings

* clean up code

* per-account single notification setting

* add missing items to notification types

* add prefix replies setting

* add show replies/boosts and reply visibility

* add load/see new posts settings

* fix spectator mode missing spoiler padding

* add a bunch of display settings

* update fedinuke

* add content type settings

* add settings for local-onlu

* add missing settings items

* fix visibility button icon tint

* hopefully fix some crashes

* normalize padding above edit text

* apparently, some people don't like pills

closes sk22#706

* fix play button color

closes sk22#705
2023-07-16 18:01:42 +02:00
Eugen Rochko
73e08faee9 New translations strings.xml (Persian) 2023-07-13 20:45:58 +02:00
Eugen Rochko
02dc7711e4 New translations strings.xml (Persian) 2023-07-13 19:38:29 +02:00
Eugen Rochko
67b4d80e5b New translations strings.xml (Spanish) 2023-07-13 16:08:11 +02:00
Eugen Rochko
5168d2bb39 New translations strings.xml (Spanish) 2023-07-13 14:59:49 +02:00
Eugen Rochko
57190a75bf New translations strings.xml (Indonesian) 2023-07-13 11:54:32 +02:00
Eugen Rochko
f10e865895 New translations strings.xml (Indonesian) 2023-07-13 10:48:50 +02:00
Grishka
91b4dc412b Merge branch 'l10n_master' 2023-07-13 05:59:52 +03:00
alextecplayz
4699e0b982 Translated using Weblate (Romanian)
Currently translated at 100.0% (76 of 76 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/ro/
2023-07-12 19:38:05 +00:00
Eryk Michalak
d466d44706 Translated using Weblate (Polish)
Currently translated at 92.1% (70 of 76 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/pl/
2023-07-12 19:38:05 +00:00
nemobis
3cfea0e660 Fix typo in README.md (#701) 2023-07-12 00:22:17 +02:00
Eugen Rochko
c896fd8df8 New translations strings.xml (Persian) 2023-07-10 20:31:28 +02:00
Eugen Rochko
72cd987284 New translations strings.xml (Persian) 2023-07-10 19:33:53 +02:00
Eugen Rochko
d868d05080 New translations strings.xml (Persian) 2023-07-10 18:35:13 +02:00
Eugen Rochko
9dfb039a69 New translations strings.xml (Persian) 2023-07-10 17:14:05 +02:00
Oliebol
c2050d6b38 Translated using Weblate (Dutch)
Currently translated at 96.0% (73 of 76 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/nl/
2023-07-10 14:38:05 +00:00
gallegonovato
64bd9b761e Translated using Weblate (Spanish)
Currently translated at 100.0% (76 of 76 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/es/
2023-07-10 14:38:05 +00:00
Eugen Rochko
f2920e877b New translations strings.xml (Persian) 2023-07-10 14:23:55 +02:00
Eugen Rochko
ecb0b3f9d7 New translations strings.xml (Persian) 2023-07-10 13:27:29 +02:00
EndermanCo
13ff54663c Translated using Weblate (Persian)
Currently translated at 94.5% (310 of 328 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/fa/
2023-07-10 08:38:05 +00:00
AiOO
604d9b008a Translated using Weblate (Korean)
Currently translated at 100.0% (18 of 18 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/ko/
2023-07-10 08:38:04 +00:00
AiOO
7044a69a71 Translated using Weblate (Korean)
Currently translated at 100.0% (328 of 328 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/ko/
2023-07-10 08:38:04 +00:00
Eugen Rochko
67c128be69 New translations strings.xml (Persian) 2023-07-09 20:48:43 +02:00
Eugen Rochko
1ecbbc2d4b New translations strings.xml (Ukrainian) 2023-07-09 19:53:27 +02:00
Eugen Rochko
82c481b014 New translations strings.xml (Persian) 2023-07-09 19:53:26 +02:00
Eugen Rochko
e7da6d7897 New translations full_description.txt (Ukrainian) 2023-07-09 18:55:26 +02:00
Eugen Rochko
e9f1e3038b New translations strings.xml (Ukrainian) 2023-07-09 18:55:25 +02:00
Eugen Rochko
a591096819 New translations strings.xml (Ukrainian) 2023-07-09 17:59:09 +02:00
LucasGGamerM
c72479d866 feat: fab on true black is true black now 2023-07-09 10:50:21 -03:00
LucasGGamerM
58cf384d39 feat: improve black and white theme grays 2023-07-09 10:22:08 -03:00
Eugen Rochko
f1ef60475f New translations strings.xml (Ukrainian) 2023-07-09 14:35:38 +02:00
LucasGGamerM
04f438f207 Update README.md 2023-07-08 21:03:27 -03:00
LucasGGamerM
8b08d5ddfd feat: add black and white (more like gray) theme 2023-07-08 21:01:03 -03:00
LucasGGamerM
3a87e83974 fix: fix CW's "Touch to show" button text not being the correct color
cc: @sk22
2023-07-08 20:31:07 -03:00
LucasGGamerM
bb0b391b67 fix: fix incorrect coloring on disabled boost button 2023-07-08 20:28:23 -03:00
LucasGGamerM
8caabf1794 feat: add colorGray400t as a less strong secondary color for dark mode 2023-07-08 20:26:35 -03:00
Eugen Rochko
ce75bb3984 New translations strings.xml (Russian) 2023-07-08 15:46:20 +02:00
Eugen Rochko
d59235e04c New translations strings.xml (Ukrainian) 2023-07-08 13:47:53 +02:00
Eugen Rochko
42f8f7e58f New translations strings.xml (Ukrainian) 2023-07-08 12:50:49 +02:00
Eugen Rochko
f9cbc9ae27 New translations strings.xml (Ukrainian) 2023-07-08 11:54:51 +02:00
Eugen Rochko
a50d6599bf New translations strings.xml (Ukrainian) 2023-07-08 10:56:13 +02:00
Eugen Rochko
cc578b496e New translations strings.xml (Vietnamese) 2023-07-08 09:39:17 +02:00
Eugen Rochko
662944d246 New translations strings.xml (Ukrainian) 2023-07-08 09:39:16 +02:00
Eugen Rochko
42810df4a5 New translations full_description.txt (Ukrainian) 2023-07-08 08:40:55 +02:00
Eugen Rochko
c3a058d2e1 New translations strings.xml (Vietnamese) 2023-07-08 08:40:54 +02:00
Eugen Rochko
ce5d835ae5 New translations strings.xml (Ukrainian) 2023-07-08 08:40:53 +02:00
Eugen Rochko
60dd561729 New translations strings.xml (Vietnamese) 2023-07-08 07:25:45 +02:00
Eugen Rochko
08c9f9ad7d New translations strings.xml (Russian) 2023-07-08 03:34:48 +02:00
Eugen Rochko
d47907906d New translations strings.xml (Ukrainian) 2023-07-07 23:24:33 +02:00
Eugen Rochko
935f0f6e05 New translations strings.xml (Ukrainian) 2023-07-07 22:27:12 +02:00
Eugen Rochko
ac0b21d574 New translations strings.xml (Ukrainian) 2023-07-07 21:27:12 +02:00
Eugen Rochko
9b5d05369f New translations strings.xml (Ukrainian) 2023-07-07 20:30:29 +02:00
Eugen Rochko
489f9f5e59 New translations strings.xml (Ukrainian) 2023-07-07 19:30:49 +02:00
Espasant3
e401dc8d6e Translated using Weblate (Galician)
Currently translated at 98.7% (324 of 328 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/gl/
2023-07-07 16:38:05 +00:00
FineFindus
3e89087aba Translated using Weblate (German)
Currently translated at 100.0% (328 of 328 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/de/
2023-07-07 16:38:04 +00:00
Eugen Rochko
e62f7c23c9 New translations full_description.txt (Ukrainian) 2023-07-07 18:29:20 +02:00
Eugen Rochko
91ed7d49b5 New translations strings.xml (Ukrainian) 2023-07-07 18:29:19 +02:00
Eugen Rochko
c9e9abd811 New translations strings.xml (Ukrainian) 2023-07-07 17:11:15 +02:00
waitingmoon
d2b59eeb82 Translated using Weblate (Japanese)
Currently translated at 87.1% (286 of 328 strings)

Translation: Moshidon/values_sk
Translate-URL: https://translate.codeberg.org/projects/moshidon/values_sk/ja/
2023-07-07 14:57:13 +00:00
waitingmoon
2414b32cb2 Translated using Weblate (Japanese)
Currently translated at 86.5% (284 of 328 strings)

Translation: Moshidon/values_sk
Translate-URL: https://translate.codeberg.org/projects/moshidon/values_sk/ja/
2023-07-07 14:57:13 +00:00
waitingmoon
36ba8cf1a5 Translated using Weblate (Japanese)
Currently translated at 97.3% (73 of 75 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/ja/
2023-07-07 14:57:13 +00:00
waitingmoon
0d7663a37b Translated using Weblate (Japanese)
Currently translated at 74.6% (245 of 328 strings)

Translation: Moshidon/values_sk
Translate-URL: https://translate.codeberg.org/projects/moshidon/values_sk/ja/
2023-07-07 14:57:13 +00:00
waitingmoon
3ab2046eff Translated using Weblate (Japanese)
Currently translated at 81.3% (61 of 75 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/ja/
2023-07-07 14:57:12 +00:00
waitingmoon
4663bcb799 Translated using Weblate (Japanese)
Currently translated at 72.8% (239 of 328 strings)

Translation: Moshidon/values_sk
Translate-URL: https://translate.codeberg.org/projects/moshidon/values_sk/ja/
2023-07-07 14:57:12 +00:00
waitingmoon
cd50ff2b07 Translated using Weblate (Japanese)
Currently translated at 68.0% (51 of 75 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/ja/
2023-07-07 14:57:12 +00:00
waitingmoon
871ee20f11 Translated using Weblate (Japanese)
Currently translated at 72.2% (237 of 328 strings)

Translation: Moshidon/values_sk
Translate-URL: https://translate.codeberg.org/projects/moshidon/values_sk/ja/
2023-07-07 14:57:12 +00:00
waitingmoon
d9d39dcb91 Translated using Weblate (Japanese)
Currently translated at 61.3% (46 of 75 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/ja/
2023-07-07 14:57:12 +00:00
Codeberg Translate
d492036df8 Update translation files
Updated by "Remove blank strings" hook in Weblate.

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/
2023-07-07 14:57:12 +00:00
kkrenski
02d158b79e Translated using Weblate (Polish)
Currently translated at 86.8% (285 of 328 strings)

Translation: Moshidon/values_sk
Translate-URL: https://translate.codeberg.org/projects/moshidon/values_sk/pl/
2023-07-07 14:57:12 +00:00
waitingmoon
a4c5cbb43e Translated using Weblate (Japanese)
Currently translated at 71.9% (236 of 328 strings)

Translation: Moshidon/values_sk
Translate-URL: https://translate.codeberg.org/projects/moshidon/values_sk/ja/
2023-07-07 14:57:12 +00:00
waitingmoon
fed73d2ec2 Translated using Weblate (Japanese)
Currently translated at 2.9% (1 of 34 strings)

Translation: Moshidon/metadata
Translate-URL: https://translate.codeberg.org/projects/moshidon/metadata/ja/
2023-07-07 14:57:12 +00:00
kkrenski
552246458d Translated using Weblate (Polish)
Currently translated at 89.3% (67 of 75 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/pl/
2023-07-07 14:57:12 +00:00
Eryk Michalak
196f1a9f28 Translated using Weblate (Polish)
Currently translated at 89.3% (67 of 75 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/pl/
2023-07-07 14:57:12 +00:00
waitingmoon
13ebcb6a53 Translated using Weblate (Japanese)
Currently translated at 56.0% (42 of 75 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/ja/
2023-07-07 14:57:12 +00:00
alextecplayz
2ed16be82f Translated using Weblate (Romanian)
Currently translated at 100.0% (75 of 75 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/ro/
2023-07-07 14:57:12 +00:00
Oliebol
81ebe0b0e8 Translated using Weblate (Dutch)
Currently translated at 90.8% (298 of 328 strings)

Translation: Moshidon/values_sk
Translate-URL: https://translate.codeberg.org/projects/moshidon/values_sk/nl/
2023-07-07 14:57:12 +00:00
Andrewblasco
0b0848e908 Translated using Weblate (Spanish)
Currently translated at 100.0% (328 of 328 strings)

Translation: Moshidon/values_sk
Translate-URL: https://translate.codeberg.org/projects/moshidon/values_sk/es/
2023-07-07 14:57:12 +00:00
Karma78
7f056584ea Translated using Weblate (Vietnamese)
Currently translated at 2.9% (1 of 34 strings)

Translation: Moshidon/metadata
Translate-URL: https://translate.codeberg.org/projects/moshidon/metadata/vi/
2023-07-07 14:57:12 +00:00
legiz
de4045d5e1 Translated using Weblate (Russian)
Currently translated at 100.0% (328 of 328 strings)

Translation: Moshidon/values_sk
Translate-URL: https://translate.codeberg.org/projects/moshidon/values_sk/ru/
2023-07-07 14:57:12 +00:00
Andrewblasco
848eaf907b Translated using Weblate (Spanish)
Currently translated at 100.0% (328 of 328 strings)

Translation: Moshidon/values_sk
Translate-URL: https://translate.codeberg.org/projects/moshidon/values_sk/es/
2023-07-07 14:57:12 +00:00
Andrewblasco
fc4c6ccc48 Translated using Weblate (Spanish)
Currently translated at 100.0% (34 of 34 strings)

Translation: Moshidon/metadata
Translate-URL: https://translate.codeberg.org/projects/moshidon/metadata/es/
2023-07-07 14:57:12 +00:00
legiz
e8cef26db7 Translated using Weblate (Russian)
Currently translated at 97.3% (73 of 75 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/ru/
2023-07-07 14:57:12 +00:00
Andrewblasco
bf16eea8a8 Translated using Weblate (Spanish)
Currently translated at 100.0% (75 of 75 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/es/
2023-07-07 14:57:12 +00:00
Andrewblasco
f7c5ba410b Translated using Weblate (Spanish)
Currently translated at 100.0% (309 of 309 strings)

Translation: Moshidon/values_sk
Translate-URL: https://translate.codeberg.org/projects/moshidon/values_sk/es/
2023-07-07 14:57:12 +00:00
tuongdai252
d190775700 Translated using Weblate (Vietnamese)
Currently translated at 68.4% (50 of 73 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/vi/
2023-07-07 14:57:12 +00:00
Andrewblasco
07a19fb8d4 Translated using Weblate (Spanish)
Currently translated at 100.0% (73 of 73 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/es/
2023-07-07 14:57:12 +00:00
legiz
4553429dbb Translated using Weblate (Russian)
Currently translated at 100.0% (309 of 309 strings)

Translation: Moshidon/values_sk
Translate-URL: https://translate.codeberg.org/projects/moshidon/values_sk/ru/
2023-07-07 14:57:12 +00:00
legiz
8d228422a9 Translated using Weblate (Russian)
Currently translated at 97.2% (71 of 73 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/ru/
2023-07-07 14:57:12 +00:00
Oliebol
7a15ed2a31 Translated using Weblate (Dutch)
Currently translated at 93.2% (288 of 309 strings)

Translation: Moshidon/values_sk
Translate-URL: https://translate.codeberg.org/projects/moshidon/values_sk/nl/
2023-07-07 14:57:12 +00:00
Andrewblasco
b2ad87c459 Translated using Weblate (Spanish)
Currently translated at 100.0% (309 of 309 strings)

Translation: Moshidon/values_sk
Translate-URL: https://translate.codeberg.org/projects/moshidon/values_sk/es/
2023-07-07 14:57:12 +00:00
Oliebol
eafebad146 Translated using Weblate (Dutch)
Currently translated at 95.8% (70 of 73 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/nl/
2023-07-07 14:57:12 +00:00
gallegonovato
93376325be Translated using Weblate (Spanish)
Currently translated at 100.0% (309 of 309 strings)

Translation: Moshidon/values_sk
Translate-URL: https://translate.codeberg.org/projects/moshidon/values_sk/es/
2023-07-07 14:57:12 +00:00
Andrewblasco
08ef4dafea Translated using Weblate (Spanish)
Currently translated at 100.0% (309 of 309 strings)

Translation: Moshidon/values_sk
Translate-URL: https://translate.codeberg.org/projects/moshidon/values_sk/es/
2023-07-07 14:57:12 +00:00
gallegonovato
dd3735a644 Translated using Weblate (Spanish)
Currently translated at 100.0% (73 of 73 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/es/
2023-07-07 14:57:12 +00:00
LucasGGamerM
a9ed65cb73 Merge remote-tracking branch 'megalodon_main/main' 2023-07-07 11:54:04 -03:00
Eugen Rochko
b1e5023f62 New translations strings.xml (Ukrainian) 2023-07-07 16:10:53 +02:00
Eugen Rochko
604690b3f5 New translations strings.xml (Japanese) 2023-07-07 11:50:09 +02:00
Eugen Rochko
13ada6ecc6 New translations strings.xml (French) 2023-07-07 10:47:28 +02:00
Eugen Rochko
b897eb913e New translations short_description.txt (Turkish) 2023-07-06 22:08:52 +02:00
Eugen Rochko
c25602a650 New translations full_description.txt (Turkish) 2023-07-06 22:08:51 +02:00
Eugen Rochko
2defc9af3f New translations strings.xml (Turkish) 2023-07-06 22:08:50 +02:00
Eugen Rochko
446525389b New translations strings.xml (Turkish) 2023-07-06 21:11:01 +02:00
Eugen Rochko
756b30d04f New translations strings.xml (Turkish) 2023-07-06 20:15:49 +02:00
Eugen Rochko
51ec842815 New translations strings.xml (German) 2023-07-06 20:15:48 +02:00
Eugen Rochko
c38822849e New translations strings.xml (German) 2023-07-06 19:01:48 +02:00
Eugen Rochko
3c69201f67 New translations strings.xml (Chinese Simplified) 2023-07-06 19:01:46 +02:00
Eugen Rochko
ed9d701406 New translations strings.xml (Turkish) 2023-07-06 17:29:14 +02:00
Eugen Rochko
e70c5aa2e9 New translations strings.xml (Chinese Simplified) 2023-07-06 17:29:13 +02:00
Eugen Rochko
0c4589b257 New translations strings.xml (Turkish) 2023-07-06 15:04:45 +02:00
Eugen Rochko
84d08392fb New translations strings.xml (Turkish) 2023-07-06 14:03:25 +02:00
Eugen Rochko
8ff117308d New translations strings.xml (Turkish) 2023-07-06 13:06:03 +02:00
Eugen Rochko
b6c703adbc New translations strings.xml (Bengali) 2023-07-05 18:26:29 +02:00
Eugen Rochko
22e6934de5 New translations strings.xml (Scottish Gaelic) 2023-07-05 17:21:45 +02:00
Eugen Rochko
1b8a1d69ac New translations strings.xml (Bengali) 2023-07-05 17:21:43 +02:00
Eugen Rochko
b6ae83937b New translations strings.xml (Turkish) 2023-07-05 16:09:20 +02:00
Eugen Rochko
7115556663 New translations strings.xml (Turkish) 2023-07-05 15:08:07 +02:00
Eugen Rochko
cb3296661e New translations strings.xml (French) 2023-07-05 09:09:16 +02:00
Eugen Rochko
6dd20a6df9 New translations strings.xml (French) 2023-07-05 07:58:16 +02:00
Eugen Rochko
71c1d0e59a New translations strings.xml (French) 2023-07-04 21:49:47 +02:00
Eugen Rochko
2b275e1ff7 New translations strings.xml (Japanese) 2023-07-04 15:23:25 +02:00
EndermanCo
8520ee42cb Translated using Weblate (Persian)
Currently translated at 85.9% (282 of 328 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/fa/
2023-07-04 09:38:04 +00:00
Eugen Rochko
a7fcae1033 New translations strings.xml (Greek) 2023-07-04 11:27:42 +02:00
Grishka
19bd189b33 🤔 2023-07-04 02:53:48 +03:00
Grishka
2d5089c047 Crash fix 2023-07-04 02:51:50 +03:00
Grishka
be7469bd54 Merge branch 'l10n_master' 2023-07-04 01:36:27 +03:00
Grishka
146d8daa6e Add editorconfig
So that PRs like #625 don't happen again
2023-07-04 01:05:55 +03:00
Eugen Rochko
f3928d9e09 New translations strings.xml (Scottish Gaelic) 2023-07-03 19:38:09 +02:00
Eugen Rochko
d4090d459d New translations strings.xml (Greek) 2023-07-03 17:49:55 +02:00
Eugen Rochko
7dd7554c08 New translations strings.xml (Icelandic) 2023-07-03 15:01:45 +02:00
Eugen Rochko
9de9a1d97d New translations strings.xml (Icelandic) 2023-07-03 13:53:20 +02:00
Eugen Rochko
04ee366fbe New translations strings.xml (Icelandic) 2023-07-03 12:41:02 +02:00
Eugen Rochko
c8784150fc New translations strings.xml (Icelandic) 2023-07-03 11:41:40 +02:00
Eugen Rochko
7b7bccb37a New translations full_description.txt (Japanese) 2023-07-03 10:26:59 +02:00
Eugen Rochko
84e2636bca New translations strings.xml (Japanese) 2023-07-03 10:26:58 +02:00
Eugen Rochko
dc73613b56 New translations strings.xml (Japanese) 2023-07-03 09:22:45 +02:00
Eugen Rochko
fd8868ef4d New translations strings.xml (Japanese) 2023-07-03 08:20:20 +02:00
alextecplayz
f443d659a3 Translated using Weblate (Romanian)
Currently translated at 100.0% (18 of 18 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/ro/
2023-07-03 05:59:10 +00:00
EndermanCo
24eb82a79d Translated using Weblate (Persian)
Currently translated at 80.4% (264 of 328 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/fa/
2023-07-03 05:59:10 +00:00
alextecplayz
43d806fb01 Translated using Weblate (Romanian)
Currently translated at 100.0% (328 of 328 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/ro/
2023-07-03 05:59:10 +00:00
Eugen Rochko
127df0b8e0 New translations strings.xml (Japanese) 2023-07-03 07:24:53 +02:00
Eugen Rochko
c2989df902 New translations strings.xml (Japanese) 2023-07-03 06:27:42 +02:00
Eugen Rochko
3f9ee99b69 New translations strings.xml (Japanese) 2023-07-03 05:11:26 +02:00
FineFindus
d47c4e63d7 fix(hashtag-timeline): add additional tags as separated parameter (#647) 2023-07-03 01:32:56 +02:00
Eugen Rochko
7204c4e804 New translations strings.xml (Greek) 2023-07-02 23:45:59 +02:00
Eugen Rochko
f1131cf8e7 New translations strings.xml (Belarusian) 2023-07-02 23:45:58 +02:00
Eugen Rochko
5b9a8beb07 New translations strings.xml (Belarusian) 2023-07-02 22:43:38 +02:00
Eugen Rochko
9e18e35c66 New translations strings.xml (Turkish) 2023-07-02 21:45:11 +02:00
Eugen Rochko
9db3dfa955 New translations strings.xml (Polish) 2023-07-02 21:45:11 +02:00
Eugen Rochko
4a3e56d300 New translations strings.xml (Polish) 2023-07-02 20:27:01 +02:00
Eugen Rochko
3bb4125c50 New translations strings.xml (Japanese) 2023-07-02 19:31:37 +02:00
Eugen Rochko
ce58883618 New translations strings.xml (Japanese) 2023-07-02 18:03:47 +02:00
Grishka
e7d3c60bac Remove unused code that caused a crash for some users ¯\_(ツ)_/¯ 2023-07-02 18:52:46 +03:00
Eugen Rochko
08e90139ad New translations strings.xml (Japanese) 2023-07-02 16:35:17 +02:00
Eugen Rochko
0d4dc34453 New translations strings.xml (Chinese Simplified) 2023-07-02 16:35:16 +02:00
Grishka
fe142c4626 Pass the system timezone to server when signing up 2023-07-02 16:35:19 +03:00
Grishka
d8dfa6017d Make the default server configurable 2023-07-02 16:22:32 +03:00
Eugen Rochko
b7a5d4296b New translations strings.xml (Greek) 2023-07-02 11:19:25 +02:00
Grishka
85d4c1fc24 A bunch of crash fixes 2023-07-02 12:03:21 +03:00
Grishka
66489d79be Fix #611 2023-07-02 11:04:20 +03:00
Grishka
30a66a26c6 Minor fixes 2023-07-02 10:50:01 +03:00
Grishka
fbc3081e68 Fix #615 2023-07-02 09:54:53 +03:00
EndermanCo
4ac7615cfb Translated using Weblate (Persian)
Currently translated at 77.7% (255 of 328 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/fa/
2023-07-02 05:38:04 +00:00
Andrewblasco
a96b0d06a4 Translated using Weblate (Spanish)
Currently translated at 100.0% (328 of 328 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/es/
2023-07-02 05:38:04 +00:00
Eugen Rochko
7a66c94907 New translations full_description.txt (Chinese Simplified) 2023-07-02 06:12:35 +02:00
Eugen Rochko
4e38bc5769 New translations strings.xml (Chinese Simplified) 2023-07-02 06:12:34 +02:00
Eugen Rochko
0dc428dbd6 New translations full_description.txt (Chinese Simplified) 2023-07-02 04:57:11 +02:00
Eugen Rochko
6ac7fc94ea New translations full_description.txt (Indonesian) 2023-07-02 01:46:05 +02:00
Eugen Rochko
af28ed1783 New translations strings.xml (Thai) 2023-07-01 15:02:48 +02:00
Eugen Rochko
00daf084f2 New translations strings.xml (Italian) 2023-07-01 15:02:47 +02:00
Eugen Rochko
5518848e28 New translations strings.xml (Thai) 2023-07-01 13:40:15 +02:00
Eugen Rochko
6ded856b2f New translations strings.xml (Thai) 2023-07-01 12:30:46 +02:00
Eugen Rochko
d302f5132e New translations strings.xml (Italian) 2023-07-01 12:30:44 +02:00
Eugen Rochko
012e29ee3a New translations strings.xml (Greek) 2023-07-01 12:30:43 +02:00
Eugen Rochko
dbe9579d7f New translations strings.xml (Italian) 2023-07-01 11:28:20 +02:00
Eugen Rochko
c8d0221d9b New translations strings.xml (Greek) 2023-07-01 11:28:19 +02:00
Eugen Rochko
885c663d93 New translations strings.xml (Greek) 2023-07-01 10:06:44 +02:00
LucasGGamerM
e9ed82d471 Merge remote-tracking branch 'megalodon_main/main' 2023-06-30 18:37:33 -03:00
Grishka
3b399d5815 Merge branch 'l10n_master'
# Conflicts:
#	mastodon/src/main/res/values-ar-rSA/strings.xml
#	mastodon/src/main/res/values-be-rBY/strings.xml
#	mastodon/src/main/res/values-bn-rBD/strings.xml
#	mastodon/src/main/res/values-bs-rBA/strings.xml
#	mastodon/src/main/res/values-ca-rES/strings.xml
#	mastodon/src/main/res/values-cs-rCZ/strings.xml
#	mastodon/src/main/res/values-da-rDK/strings.xml
#	mastodon/src/main/res/values-de-rDE/strings.xml
#	mastodon/src/main/res/values-el-rGR/strings.xml
#	mastodon/src/main/res/values-es-rES/strings.xml
#	mastodon/src/main/res/values-eu-rES/strings.xml
#	mastodon/src/main/res/values-fa-rIR/strings.xml
#	mastodon/src/main/res/values-fil-rPH/strings.xml
#	mastodon/src/main/res/values-fr-rFR/strings.xml
#	mastodon/src/main/res/values-gd-rGB/strings.xml
#	mastodon/src/main/res/values-gl-rES/strings.xml
#	mastodon/src/main/res/values-hr-rHR/strings.xml
#	mastodon/src/main/res/values-hu-rHU/strings.xml
#	mastodon/src/main/res/values-hy-rAM/strings.xml
#	mastodon/src/main/res/values-in-rID/strings.xml
#	mastodon/src/main/res/values-is-rIS/strings.xml
#	mastodon/src/main/res/values-it-rIT/strings.xml
#	mastodon/src/main/res/values-iw-rIL/strings.xml
#	mastodon/src/main/res/values-ja-rJP/strings.xml
#	mastodon/src/main/res/values-kab/strings.xml
#	mastodon/src/main/res/values-ko-rKR/strings.xml
#	mastodon/src/main/res/values-my-rMM/strings.xml
#	mastodon/src/main/res/values-nl-rNL/strings.xml
#	mastodon/src/main/res/values-no-rNO/strings.xml
#	mastodon/src/main/res/values-oc-rFR/strings.xml
#	mastodon/src/main/res/values-pl-rPL/strings.xml
#	mastodon/src/main/res/values-pt-rBR/strings.xml
#	mastodon/src/main/res/values-pt-rPT/strings.xml
#	mastodon/src/main/res/values-ro-rRO/strings.xml
#	mastodon/src/main/res/values-ru-rRU/strings.xml
#	mastodon/src/main/res/values-si-rLK/strings.xml
#	mastodon/src/main/res/values-sl-rSI/strings.xml
#	mastodon/src/main/res/values-sv-rSE/strings.xml
#	mastodon/src/main/res/values-th-rTH/strings.xml
#	mastodon/src/main/res/values-tr-rTR/strings.xml
#	mastodon/src/main/res/values-uk-rUA/strings.xml
#	mastodon/src/main/res/values-vi-rVN/strings.xml
#	mastodon/src/main/res/values-zh-rCN/strings.xml
#	mastodon/src/main/res/values-zh-rTW/strings.xml
2023-06-30 20:37:37 +03:00
Grishka
9f18d1bc8b Bump version 2023-06-30 20:35:42 +03:00
Grishka
9a8cf61e38 More minor fixes
closes #612
2023-06-30 20:28:52 +03:00
Grishka
eb822282c0 Minor fixes 2023-06-30 09:18:48 +03:00
Grishka
273823a65f Fix #610 2023-06-30 08:25:05 +03:00
Grishka
f2aa1400c5 Fix crash 2023-06-29 22:31:15 +03:00
Grishka
cf8a9e1823 Fix #609 2023-06-29 22:29:51 +03:00
Grishka
b3320d534b Fix alert color 2023-06-29 22:24:35 +03:00
Grishka
f58b4c2989 Fix store screenshot generator 2023-06-29 22:17:59 +03:00
Eugen Rochko
47b3b1e307 New translations strings.xml (Hungarian) 2023-06-29 14:26:58 +02:00
Eugen Rochko
e5649c4a42 New translations strings.xml (Czech) 2023-06-29 14:26:57 +02:00
Eugen Rochko
cea77eca02 New translations strings.xml (Czech) 2023-06-29 13:11:45 +02:00
Eugen Rochko
4fbbcfba59 New translations strings.xml (Czech) 2023-06-29 12:06:31 +02:00
Eugen Rochko
6a24f70537 New translations strings.xml (Hungarian) 2023-06-29 11:09:23 +02:00
Eugen Rochko
4681160924 New translations strings.xml (Czech) 2023-06-29 11:09:22 +02:00
Eugen Rochko
6f8c2f4a44 New translations strings.xml (Hungarian) 2023-06-29 10:05:05 +02:00
Eugen Rochko
69de9dce38 New translations strings.xml (Italian) 2023-06-28 23:16:22 +02:00
Eugen Rochko
721ae9c68d New translations strings.xml (Thai) 2023-06-28 21:11:38 +02:00
Eugen Rochko
6a6ed89d29 New translations strings.xml (Thai) 2023-06-28 20:08:17 +02:00
Eugen Rochko
3e4377a366 New translations strings.xml (Italian) 2023-06-28 20:08:16 +02:00
Gregory K
287de66e0c Merge pull request #608 from sk22/fix/polls-update-content-status
Fix poll not updating content status when boosted
2023-06-28 18:29:12 +03:00
sk
df2ae9d964 fix poll not updating status when boosted
closes sk22#403
2023-06-28 17:24:46 +02:00
sk
277282d7f5 fix first notifications loaded multiple times
closes sk22#616
2023-06-28 01:37:21 +02:00
gallegonovato
4f983829b7 Translated using Weblate (Spanish)
Currently translated at 99.3% (326 of 328 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/es/
2023-06-27 20:02:28 +00:00
Eugen Rochko
ef55f1f49b New translations strings.xml (Thai) 2023-06-27 21:03:47 +02:00
Eugen Rochko
aebf7e9f1f New translations strings.xml (Thai) 2023-06-27 19:57:32 +02:00
Eugen Rochko
a014ce6eb5 New translations strings.xml (Thai) 2023-06-27 19:00:48 +02:00
Eugen Rochko
aed1efceb9 New translations strings.xml (Thai) 2023-06-27 17:58:06 +02:00
Eugen Rochko
124c375b14 New translations strings.xml (Thai) 2023-06-27 16:58:01 +02:00
Eugen Rochko
1d46e22a7f New translations strings.xml (Dutch) 2023-06-27 16:58:00 +02:00
Eugen Rochko
28c334429d New translations strings.xml (Czech) 2023-06-27 16:57:59 +02:00
Eugen Rochko
4726f98d4f New translations strings.xml (Thai) 2023-06-27 15:47:31 +02:00
Eugen Rochko
985f382436 New translations strings.xml (Thai) 2023-06-27 14:36:42 +02:00
Eugen Rochko
f822c788b0 New translations strings.xml (Armenian) 2023-06-27 13:38:29 +02:00
sk
664851cac5 update build.gradle 2023-06-27 09:40:59 +02:00
Eugen Rochko
46f8982aa6 New translations strings.xml (Vietnamese) 2023-06-27 05:57:29 +02:00
Eugen Rochko
7b3cec9289 New translations strings.xml (Vietnamese) 2023-06-27 04:48:02 +02:00
LucasGGamerM
7da356f750 Merge pull request #221
feat: Add haptics compatibility for APIs 23-29
2023-06-26 17:57:44 -03:00
Eugen Rochko
a3f227cb8d New translations strings.xml (Thai) 2023-06-26 22:51:56 +02:00
Schuyler Cebulskie
75b269fd65 feat: Implement haptics for APIs 23-29 2023-06-26 16:46:27 -04:00
LucasGGamerM
17227cdb7d Merge pull request #214
feat: Add haptic feedback on boost/favourite/bookmark
2023-06-26 17:24:23 -03:00
LucasGGamerM
fc445516f5 Merge remote-tracking branch 'megalodon_main/main' 2023-06-26 17:21:29 -03:00
Eugen Rochko
d71feb2cfc New translations strings.xml (Thai) 2023-06-26 21:47:41 +02:00
Schuyler Cebulskie
38970a10f5 Fix haptic feedback only applying to remote statuses 2023-06-26 15:14:47 -04:00
Grishka
b69565e9e6 Fix polls 2023-06-26 16:09:02 +03:00
Grishka
bf996feccf Add fading edge for alt text
closes #595
2023-06-26 16:04:24 +03:00
Eugen Rochko
b1143b0eec New translations strings.xml (Slovenian) 2023-06-26 08:30:13 +02:00
Codeberg Translate
4c6914c271 Update translation files
Updated by "Remove blank strings" hook in Weblate.

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/
2023-06-26 06:02:28 +00:00
tuongdai252
e03a62064e Translated using Weblate (Vietnamese)
Currently translated at 73.4% (241 of 328 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/vi/
2023-06-26 06:02:28 +00:00
Eugen Rochko
ce977163c2 New translations strings.xml (Slovenian) 2023-06-26 07:28:02 +02:00
Eugen Rochko
ded74bda83 New translations strings.xml (Chinese Traditional) 2023-06-26 04:01:11 +02:00
Eugen Rochko
7180113397 New translations strings.xml (Chinese Traditional) 2023-06-26 02:37:02 +02:00
Grishka
81ac8a3bc9 More minor fixes 2023-06-25 14:24:13 +03:00
Grishka
4b74da5d38 Fix another color 2023-06-25 09:50:44 +03:00
Eugen Rochko
0375cfa260 New translations short_description.txt (Vietnamese) 2023-06-25 05:27:54 +02:00
Eugen Rochko
52108a675a New translations full_description.txt (Arabic) 2023-06-25 05:26:57 +02:00
Grishka
406e95d3f7 Fix #606 2023-06-25 06:19:36 +03:00
Grishka
a9f355dea9 Fix text colors 2023-06-25 03:12:17 +03:00
Eugen Rochko
1a63c12327 New translations strings.xml (Urdu (India)) 2023-06-25 02:07:40 +02:00
Eugen Rochko
7bc2f8b352 New translations strings.xml (Kabyle) 2023-06-25 02:07:39 +02:00
Eugen Rochko
d56ef227a7 New translations strings.xml (Igbo) 2023-06-25 02:07:38 +02:00
Eugen Rochko
fcc371ab5a New translations strings.xml (Occitan) 2023-06-25 02:07:37 +02:00
Eugen Rochko
9f43a99772 New translations strings.xml (Scottish Gaelic) 2023-06-25 02:07:36 +02:00
Eugen Rochko
9fc5a4e390 New translations strings.xml (Sinhala) 2023-06-25 02:07:35 +02:00
Eugen Rochko
a2b3f873f6 New translations strings.xml (Bosnian) 2023-06-25 02:07:34 +02:00
Eugen Rochko
f6c1509e48 New translations strings.xml (Filipino) 2023-06-25 02:07:33 +02:00
Eugen Rochko
d9bbb32a28 New translations strings.xml (Burmese) 2023-06-25 02:07:32 +02:00
Eugen Rochko
d2ef6e77af New translations strings.xml (Hindi) 2023-06-25 02:07:31 +02:00
Eugen Rochko
6133e9bac3 New translations strings.xml (Croatian) 2023-06-25 02:07:30 +02:00
Eugen Rochko
6ca48f35f1 New translations strings.xml (Thai) 2023-06-25 02:07:29 +02:00
Eugen Rochko
cb016b4383 New translations strings.xml (Bengali) 2023-06-25 02:07:28 +02:00
Eugen Rochko
d0b21df28b New translations strings.xml (Portuguese, Brazilian) 2023-06-25 02:07:28 +02:00
Eugen Rochko
ce48ee888a New translations strings.xml (Icelandic) 2023-06-25 02:07:27 +02:00
Eugen Rochko
5cd8bc5a46 New translations strings.xml (Galician) 2023-06-25 02:07:26 +02:00
Eugen Rochko
4109cd75d3 New translations strings.xml (Vietnamese) 2023-06-25 02:07:25 +02:00
Eugen Rochko
97a889e019 New translations strings.xml (Chinese Traditional) 2023-06-25 02:07:24 +02:00
Eugen Rochko
b9a1b3591d New translations strings.xml (Ukrainian) 2023-06-25 02:07:22 +02:00
Eugen Rochko
fde84e3cfb New translations strings.xml (Turkish) 2023-06-25 02:07:21 +02:00
Eugen Rochko
0985eb4fac New translations strings.xml (Swedish) 2023-06-25 02:07:21 +02:00
Eugen Rochko
5957c1a221 New translations strings.xml (Slovenian) 2023-06-25 02:07:20 +02:00
Eugen Rochko
e7e34aa2c8 New translations strings.xml (Russian) 2023-06-25 02:07:19 +02:00
Eugen Rochko
b8742591b8 New translations strings.xml (Portuguese) 2023-06-25 02:07:17 +02:00
Eugen Rochko
50e73ac12e New translations strings.xml (Polish) 2023-06-25 02:07:16 +02:00
Eugen Rochko
9ed277a9b2 New translations strings.xml (Norwegian) 2023-06-25 02:07:15 +02:00
Eugen Rochko
c9e2984d68 New translations strings.xml (Dutch) 2023-06-25 02:07:14 +02:00
Eugen Rochko
00aaff10a7 New translations strings.xml (Korean) 2023-06-25 02:07:13 +02:00
Eugen Rochko
6da4256adf New translations strings.xml (Japanese) 2023-06-25 02:07:12 +02:00
Eugen Rochko
da9c826791 New translations strings.xml (Italian) 2023-06-25 02:07:11 +02:00
Eugen Rochko
bed02e248e New translations strings.xml (Armenian) 2023-06-25 02:07:11 +02:00
Eugen Rochko
f53531889f New translations strings.xml (Hungarian) 2023-06-25 02:07:10 +02:00
Eugen Rochko
ef3246ae2a New translations strings.xml (Hebrew) 2023-06-25 02:07:09 +02:00
Eugen Rochko
5504b534f7 New translations strings.xml (Irish) 2023-06-25 02:07:08 +02:00
Eugen Rochko
0e553d7868 New translations strings.xml (Finnish) 2023-06-25 02:07:07 +02:00
Eugen Rochko
38be51367e New translations strings.xml (Basque) 2023-06-25 02:07:06 +02:00
Eugen Rochko
0d4af0970c New translations strings.xml (Greek) 2023-06-25 02:07:05 +02:00
Eugen Rochko
b51335ffd6 New translations strings.xml (German) 2023-06-25 02:07:04 +02:00
Eugen Rochko
444fa07984 New translations strings.xml (Danish) 2023-06-25 02:07:03 +02:00
Eugen Rochko
feb0f304fb New translations strings.xml (Catalan) 2023-06-25 02:07:02 +02:00
Eugen Rochko
ccd4a1aa9f New translations strings.xml (Belarusian) 2023-06-25 02:07:01 +02:00
Eugen Rochko
b3723c2977 New translations strings.xml (Arabic) 2023-06-25 02:07:00 +02:00
Eugen Rochko
c5b70a9ada New translations strings.xml (Spanish) 2023-06-25 02:06:59 +02:00
Eugen Rochko
82789179e7 New translations strings.xml (French) 2023-06-25 02:06:58 +02:00
Eugen Rochko
b0a309a817 New translations strings.xml (Romanian) 2023-06-25 02:06:57 +02:00
Eugen Rochko
32a27b6e59 New translations strings.xml (Chinese Simplified) 2023-06-25 02:06:56 +02:00
Eugen Rochko
f73a318dad New translations strings.xml (Czech) 2023-06-25 02:06:55 +02:00
Eugen Rochko
4fff2c5f5c New translations strings.xml (Persian) 2023-06-25 02:06:54 +02:00
Eugen Rochko
81abac657f New translations strings.xml (Indonesian) 2023-06-25 02:06:53 +02:00
Grishka
74decd3ec7 Merge branch 'm3_redesign' 2023-06-25 02:55:26 +03:00
Grishka
11d17d1f3f Fix ripple color again 2023-06-25 02:52:54 +03:00
Grishka
ca2384ba8c Remove unused resources and fix ripple colors 2023-06-25 02:41:45 +03:00
Grishka
ded23342db Fix layout in post edit history 2023-06-25 01:46:17 +03:00
Grishka
a35c14865f Refresh the notifications list when it's opened 2023-06-25 01:28:08 +03:00
Grishka
0952d97557 Unified account row 2023-06-25 01:18:38 +03:00
Grishka
e1db5f15ca M3 redesign: search/discover 2023-06-24 22:56:55 +03:00
Espasant3
a99741c732 Translated using Weblate (Galician)
Currently translated at 100.0% (18 of 18 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/gl/
2023-06-24 17:02:27 +00:00
ihor_ck
d6c8e8afc1 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (328 of 328 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/uk/
2023-06-24 17:02:26 +00:00
Linerly
879981e335 Translated using Weblate (Indonesian)
Currently translated at 100.0% (328 of 328 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/id/
2023-06-24 17:02:26 +00:00
Choukajohn
87840dd731 Translated using Weblate (French)
Currently translated at 100.0% (328 of 328 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/fr/
2023-06-24 17:02:26 +00:00
Grishka
c9e467ac2f And again 2023-06-24 10:43:28 +03:00
Grishka
74a5e970d9 Fix #604 again 2023-06-23 23:07:28 +03:00
Eugen Rochko
935de7d02e New translations strings.xml (Chinese Simplified) 2023-06-23 13:54:49 +02:00
Codeberg Translate
cb8fddd156 Update translation files
Updated by "Remove blank strings" hook in Weblate.

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/
2023-06-22 23:12:23 +00:00
Andrewblasco
40ca834880 Translated using Weblate (Spanish)
Currently translated at 100.0% (309 of 309 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/es/
2023-06-22 23:12:23 +00:00
ling0412
c10206ef6f Translated using Weblate (Chinese (Simplified))
Currently translated at 95.4% (295 of 309 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/zh_Hans/
2023-06-22 23:12:23 +00:00
sk22
e752d10e31 Translated using Weblate (German)
Currently translated at 100.0% (309 of 309 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/de/
2023-06-22 23:12:23 +00:00
EndermanCo
119bbc2b5c Translated using Weblate (Persian)
Currently translated at 82.2% (254 of 309 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/fa/
2023-06-22 23:12:23 +00:00
Oliebol
6136260adc Translated using Weblate (Dutch)
Currently translated at 87.3% (270 of 309 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/nl/
2023-06-22 23:12:23 +00:00
Andrewblasco
979ee9fdff Translated using Weblate (Spanish)
Currently translated at 100.0% (309 of 309 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/es/
2023-06-22 23:12:23 +00:00
EndermanCo
ab71e06ef1 Translated using Weblate (Persian)
Currently translated at 80.9% (250 of 309 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/fa/
2023-06-22 23:12:23 +00:00
Linerly
6d487f011f Translated using Weblate (Indonesian)
Currently translated at 100.0% (309 of 309 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/id/
2023-06-22 23:12:23 +00:00
gallegonovato
50403cf674 Translated using Weblate (Spanish)
Currently translated at 100.0% (309 of 309 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/es/
2023-06-22 23:12:23 +00:00
EndermanCo
276df264cf Translated using Weblate (Persian)
Currently translated at 57.6% (178 of 309 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/fa/
2023-06-22 23:12:23 +00:00
ihor_ck
55e18cf9af Translated using Weblate (Ukrainian)
Currently translated at 100.0% (18 of 18 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/uk/
2023-06-22 23:12:23 +00:00
ihor_ck
e5392d3265 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (309 of 309 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/uk/
2023-06-22 23:12:23 +00:00
LucasGGamerM
2de7c1d3b9 Translated using Weblate (Portuguese (Brazil))
Currently translated at 99.6% (308 of 309 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/pt_BR/
2023-06-22 23:12:23 +00:00
LucasGGamerM
c21885139c Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (305 of 305 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/pt_BR/
2023-06-22 23:12:23 +00:00
EndermanCo
275cbaa924 Translated using Weblate (Persian)
Currently translated at 54.7% (167 of 305 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/fa/
2023-06-22 23:12:23 +00:00
abidin24
4b6c35c9c0 Translated using Weblate (Arabic)
Currently translated at 10.4% (32 of 305 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/ar/
2023-06-22 23:12:23 +00:00
ihor_ck
d339fa1e12 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (18 of 18 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/uk/
2023-06-22 23:12:23 +00:00
Alfika07
31a5fc9153 Translated using Weblate (Hungarian)
Currently translated at 40.3% (123 of 305 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/hu/
2023-06-22 23:12:23 +00:00
ihor_ck
966f758d9f Translated using Weblate (Ukrainian)
Currently translated at 100.0% (305 of 305 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/uk/
2023-06-22 23:12:23 +00:00
LucasGGamerM
6979c5097d Translated using Weblate (Portuguese (Brazil))
Currently translated at 85.2% (260 of 305 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/pt_BR/
2023-06-22 23:12:23 +00:00
a_mento
68005c762f Translated using Weblate (Basque)
Currently translated at 94.0% (287 of 305 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/eu/
2023-06-22 23:12:23 +00:00
FineFindus
06543d5fc2 fix(edit-timelines/hashtags): set tags as list (#596)
* fix(edit-timelines/hashtags): set tags as list

Fixes https://github.com/sk22/megalodon/issues/595, by setting the tags a tags and not as a list.

* refactor(edit-timelines/hashtags): set all tag terminator at once

* feat(edit-timelines/hashtags): add comment
2023-06-21 22:34:22 +02:00
LucasGGamerM
fd0a741ff2 Merge remote-tracking branch 'megalodon_main/main'
# Conflicts:
#	mastodon/src/main/java/org/joinmastodon/android/fragments/EditTimelinesFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/model/TimelineDefinition.java
2023-06-21 15:50:10 -03:00
sk
a70d39065c add some new icons 2023-06-21 10:44:54 +02:00
sk
dc75882cee slightly adjust margin
closes sk22#585
2023-06-21 10:32:41 +02:00
sk
e47f253c0e unset name if hashtag is applied from name
closes sk22#588
2023-06-21 10:27:57 +02:00
sk
d05f3932b2 fix empty hashtag when editing 2023-06-21 10:24:50 +02:00
FineFindus
be425282a6 Hashtag timelines with multiple tags (#584)
* feat(api/hashtag): add any, all, and none parameter

* feat(timeline/hashtag): load with any, all and none parameter

* feat(timeline/hashtag): save any, all and none in timeline definition

* feat: set hastag parameter in UI

* feat: move strings to string res

* feat: show hint for tags

* refactor: use method for setting up tags text

* improve edit dialog, allow creating hashtag timelines

* add chips for hashtags

* add option for displaying only local posts in hashtag

* improve layout and wording

---------

Co-authored-by: sk <sk22@mailbox.org>
2023-06-21 01:38:51 +02:00
Grishka
a04522ff72 Fix #605 2023-06-20 22:56:37 +03:00
Grishka
90a93ffba6 Fix #604 2023-06-20 22:54:09 +03:00
Schuyler Cebulskie
0beb215f1d Change default for haptic feedback setting to be dependent on Android build 2023-06-18 01:32:46 -04:00
Schuyler Cebulskie
412fe5c303 Change haptic feedback setting description 2023-06-18 01:31:06 -04:00
Eugen Rochko
069c55d4b9 New translations strings.xml (Persian) 2023-06-17 20:19:46 +01:00
Eugen Rochko
1efaf4b605 New translations strings.xml (Persian) 2023-06-17 19:21:04 +01:00
Eugen Rochko
ff74516ce2 New translations strings.xml (Persian) 2023-06-17 17:57:39 +01:00
Eugen Rochko
aee4b7aaab New translations full_description.txt (Persian) 2023-06-17 16:23:41 +01:00
Eugen Rochko
1d94479bde New translations strings.xml (Persian) 2023-06-17 16:23:40 +01:00
Eugen Rochko
85c95d899e New translations full_description.txt (Persian) 2023-06-17 15:24:06 +01:00
Eugen Rochko
18d4210e7d New translations strings.xml (Persian) 2023-06-17 15:24:05 +01:00
Eugen Rochko
ac25bc6d42 New translations strings.xml (Persian) 2023-06-17 14:17:46 +01:00
Schuyler Cebulskie
ede7305fe9 feat: Add haptic feedback on boost/favourite/bookmark 2023-06-16 20:36:10 -04:00
Eugen Rochko
ec05ef3b4c New translations full_description.txt (Persian) 2023-06-16 21:57:49 +01:00
Eugen Rochko
9827d97374 New translations strings.xml (Persian) 2023-06-16 21:57:48 +01:00
Eugen Rochko
4fab92d516 New translations strings.xml (Persian) 2023-06-16 20:43:12 +01:00
Eugen Rochko
44bc9c4e40 New translations strings.xml (Persian) 2023-06-16 19:47:01 +01:00
Eugen Rochko
1030773ef6 New translations strings.xml (Persian) 2023-06-16 18:50:21 +01:00
Eugen Rochko
1a0cb4b8c8 New translations strings.xml (Persian) 2023-06-16 17:47:36 +01:00
LucasGGamerM
1810821983 docs: add 101 changelog 2023-06-16 13:16:16 -03:00
LucasGGamerM
ea650d0154 build: bump version 2023-06-16 13:04:11 -03:00
LucasGGamerM
62ac3458b5 Merge remote-tracking branch 'weblate/master' 2023-06-16 13:02:09 -03:00
LucasGGamerM
b9ca0d74cf Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (73 of 73 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/pt_BR/
2023-06-16 16:01:14 +00:00
LucasGGamerM
ee9bd3dd4b Merge remote-tracking branch 'megalodon_main/main' 2023-06-16 13:00:42 -03:00
Titanium
d3e24bd35c Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (305 of 305 strings)

Translation: Moshidon/values_sk
Translate-URL: https://translate.codeberg.org/projects/moshidon/values_sk/zh_Hans/
2023-06-16 15:57:32 +00:00
Titanium
fa6ee2cba4 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (72 of 72 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/zh_Hans/
2023-06-16 15:57:31 +00:00
Weblate
f67d28c7ec Added translation using Weblate (Portuguese) 2023-06-16 15:57:31 +00:00
Weblate
80aa73555f Added translation using Weblate (Arabic (Saudi Arabia)) 2023-06-16 15:57:31 +00:00
Weblate
6812ecbc3e Added translation using Weblate (Arabic (Algeria)) 2023-06-16 15:57:31 +00:00
Andrewblasco
b90a85cd6f Translated using Weblate (Spanish)
Currently translated at 100.0% (305 of 305 strings)

Translation: Moshidon/values_sk
Translate-URL: https://translate.codeberg.org/projects/moshidon/values_sk/es/
2023-06-16 15:57:31 +00:00
dontobi
90fef0aaed Translated using Weblate (German)
Currently translated at 100.0% (305 of 305 strings)

Translation: Moshidon/values_sk
Translate-URL: https://translate.codeberg.org/projects/moshidon/values_sk/de/
2023-06-16 15:57:31 +00:00
Oliebol
d054d87438 Translated using Weblate (Dutch)
Currently translated at 91.1% (278 of 305 strings)

Translation: Moshidon/values_sk
Translate-URL: https://translate.codeberg.org/projects/moshidon/values_sk/nl/
2023-06-16 15:57:31 +00:00
Weblate
03b37ad40f Added translation using Weblate (Persian) 2023-06-16 15:57:31 +00:00
legiz
75410a22c9 Translated using Weblate (Russian)
Currently translated at 100.0% (302 of 302 strings)

Translation: Moshidon/values_sk
Translate-URL: https://translate.codeberg.org/projects/moshidon/values_sk/ru/
2023-06-16 15:57:31 +00:00
Oliebol
064f71ef8a Translated using Weblate (Dutch)
Currently translated at 88.4% (267 of 302 strings)

Translation: Moshidon/values_sk
Translate-URL: https://translate.codeberg.org/projects/moshidon/values_sk/nl/
2023-06-16 15:57:31 +00:00
fkinoshita
1ff34d5b24 Translated using Weblate (Portuguese (Brazil))
Currently translated at 12.1% (4 of 33 strings)

Translation: Moshidon/metadata
Translate-URL: https://translate.codeberg.org/projects/moshidon/metadata/pt_BR/
2023-06-16 15:57:31 +00:00
legiz
7710b25ee5 Translated using Weblate (Russian)
Currently translated at 97.2% (70 of 72 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/ru/
2023-06-16 15:57:31 +00:00
Oliebol
dcf96c8a1c Translated using Weblate (Dutch)
Currently translated at 97.2% (70 of 72 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/nl/
2023-06-16 15:57:31 +00:00
Eugen Rochko
4295a3672c New translations strings.xml (Persian) 2023-06-16 16:32:57 +01:00
Eugen Rochko
fd2a8fe230 New translations strings.xml (Persian) 2023-06-16 15:14:44 +01:00
Eugen Rochko
e2d1eccfb9 New translations strings.xml (Persian) 2023-06-16 14:17:09 +01:00
LucasGGamerM
a501a41cb2 fix: fix wrong coloring for the new distinctive enabled post notifications icon
cc: @sk22
This is a fix to my earlier commit, please also merge it over at Mega!
2023-06-15 21:25:23 -03:00
LucasGGamerM
5709389322 feat: add distinctive bell icon for when post notifications are enabled
cc: @sk22
I will cc you a lot from now on, as I have realized Mega has a few design rough edges I feel personally obligated to give back the fix to. Primarily wrong coloring on a few text views here and there.

For putting colors onto things, I always a true black tone and the green visual option, because those options specifically make the mismatched colors a lot more apparent.
2023-06-15 21:21:58 -03:00
sk
bb4a52f03a fix threads opened from notification 2023-06-15 22:44:46 +02:00
sk
50360059ce fix margins 2023-06-15 20:38:47 +02:00
LucasGGamerM
08866e0bea feat: add check for if device has a camera before sending out the image capture intent 2023-06-15 15:36:14 -03:00
LucasGGamerM
63bcef990b feat: use correct coloring for new exclusive list explanation
cc: @sk22
2023-06-15 20:34:51 +02:00
LucasGGamerM
a177d35c4f Merge remote-tracking branch 'megalodon_weblate/main' 2023-06-15 15:22:57 -03:00
LucasGGamerM
2bbcae9fc6 feat: use correct coloring for new exclusive list explanation
cc: @sk22
2023-06-15 15:19:20 -03:00
LucasGGamerM
7a46992d88 Translated using Weblate (Portuguese (Brazil))
Currently translated at 99.6% (308 of 309 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/pt_BR/
2023-06-15 18:15:30 +00:00
LucasGGamerM
1beba48b66 Merge remote-tracking branch 'megalodon_weblate/main'
# Conflicts:
#	mastodon/build.gradle
#	mastodon/src/main/java/org/joinmastodon/android/model/TimelineDefinition.java
#	mastodon/src/main/res/values-pt-rBR/strings_sk.xml
2023-06-15 14:58:12 -03:00
LucasGGamerM
e7ce822f7e feat: merge new forward report switch default setting from megalodon 2023-06-15 14:55:39 -03:00
LucasGGamerM
8094d8c7a3 Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (305 of 305 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/pt_BR/
2023-06-15 17:51:30 +00:00
EndermanCo
b214974228 Translated using Weblate (Persian)
Currently translated at 54.7% (167 of 305 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/fa/
2023-06-15 17:51:30 +00:00
abidin24
b27a5a2431 Translated using Weblate (Arabic)
Currently translated at 10.4% (32 of 305 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/ar/
2023-06-15 17:51:30 +00:00
ihor_ck
7cf01e89b8 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (18 of 18 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/uk/
2023-06-15 17:51:30 +00:00
Alfika07
0c014dcf0f Translated using Weblate (Hungarian)
Currently translated at 40.3% (123 of 305 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/hu/
2023-06-15 17:51:30 +00:00
ihor_ck
cf3d6afffc Translated using Weblate (Ukrainian)
Currently translated at 100.0% (305 of 305 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/uk/
2023-06-15 17:51:30 +00:00
LucasGGamerM
8fcc27d2b3 Translated using Weblate (Portuguese (Brazil))
Currently translated at 85.2% (260 of 305 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/pt_BR/
2023-06-15 17:51:30 +00:00
a_mento
77734e8e0c Translated using Weblate (Basque)
Currently translated at 94.0% (287 of 305 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/eu/
2023-06-15 17:51:30 +00:00
LucasGGamerM
6ecc6c4621 fix(instance-about): actually fix instance url not being trimmed. Also fixes the pixel launcher url feature 2023-06-15 14:43:21 -03:00
sk
94eb6b5775 one less thing for parceler to complain about 2023-06-15 19:21:44 +02:00
sk
6595a088fb support exclusive lists
closes sk22#576
2023-06-15 19:21:26 +02:00
sk
b463ef65ce fix parceler complaining about private class member 2023-06-15 18:13:59 +02:00
sk
b22a25e7af workaround for proguard errors
re: sk22#572
2023-06-15 18:12:29 +02:00
Eugen Rochko
05d1d3e725 New translations full_description.txt (Persian) 2023-06-15 10:57:44 +01:00
Eugen Rochko
37261928c2 New translations full_description.txt (Persian) 2023-06-15 09:56:31 +01:00
Eugen Rochko
63132110d9 New translations full_description.txt (Persian) 2023-06-15 08:46:22 +01:00
Eugen Rochko
ffd7e415a2 New translations full_description.txt (Persian) 2023-06-15 07:42:12 +01:00
Eugen Rochko
d43664d018 New translations full_description.txt (Persian) 2023-06-15 06:36:15 +01:00
LucasGGamerM
f197d6f19a feat: trim instance URL on InstanceInfoFragment
This is for the akkoma instances, where the local timeline would be inaccessible due to the https header being there. And it also looks better
2023-06-14 21:29:37 -03:00
LucasGGamerM
45e3cc2d24 feat: add radio checks for color theme options menu 2023-06-14 21:13:37 -03:00
LucasGGamerM
b226fcc128 feat: add pin button to custom local timelines
This is now a thing due to the new instance about fragment, where you can see a server's local timeline from there, and from there you should be able to pin it. This commit addresses that
2023-06-14 20:57:20 -03:00
LucasGGamerM
7b4728cff7 feat(instance-about): use consistent refreshLayout coloring 2023-06-14 20:44:38 -03:00
LucasGGamerM
9977d7168a fix(instance-about): fix menu item icons being not colored correctly 2023-06-14 20:42:42 -03:00
Eugen Rochko
8e06362ff8 New translations full_description.txt (Persian) 2023-06-14 20:11:35 +01:00
Eugen Rochko
625ccfd31f New translations strings.xml (Persian) 2023-06-14 20:11:34 +01:00
Eugen Rochko
d7b5d242ff New translations strings.xml (Persian) 2023-06-14 19:12:25 +01:00
Eugen Rochko
7973c87b9a New translations strings.xml (Persian) 2023-06-14 18:16:52 +01:00
Eugen Rochko
3085b1507b New translations strings.xml (Persian) 2023-06-14 16:46:46 +01:00
Eugen Rochko
f17ef17492 New translations strings.xml (Persian) 2023-06-14 15:49:02 +01:00
Eugen Rochko
8d0a31d0f9 New translations strings.xml (Persian) 2023-06-14 15:47:38 +02:00
Eugen Rochko
6c6d3fed05 New translations strings.xml (Persian) 2023-06-14 14:49:35 +02:00
Eugen Rochko
b616e2e11b New translations strings.xml (Persian) 2023-06-14 13:42:47 +02:00
Eugen Rochko
b18771bb79 New translations full_description.txt (Persian) 2023-06-14 12:38:20 +02:00
LucasGGamerM
10fc8c9b03 Merge remote-tracking branch 'weblate/master'
# Conflicts:
#	mastodon/src/main/res/values-es-rES/strings_sk.xml
#	mastodon/src/main/res/values-nl-rNL/strings_sk.xml
2023-06-13 14:47:10 -03:00
LucasGGamerM
034be8f78f Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (72 of 72 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/pt_BR/
2023-06-13 17:46:11 +00:00
Oliebol
77ba8b9c9b Translated using Weblate (Dutch)
Currently translated at 94.4% (68 of 72 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/nl/
2023-06-13 17:32:11 +00:00
Andrewblasco
ad22c30775 Translated using Weblate (Spanish)
Currently translated at 100.0% (72 of 72 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/es/
2023-06-13 17:32:11 +00:00
sk22
6b42b7d7f0 Translated using Weblate (German)
Currently translated at 100.0% (72 of 72 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/de/
2023-06-13 17:32:11 +00:00
LucasGGamerM
3520018812 fix: fix missing strings 2023-06-13 14:31:49 -03:00
LucasGGamerM
b0353920a3 fix: fix compilation problems 2023-06-13 14:26:15 -03:00
LucasGGamerM
e1a262ec5f Merge remote-tracking branch 'megalodon_main/main'
# Conflicts:
#	README.md
#	mastodon/build.gradle
#	mastodon/src/main/java/org/joinmastodon/android/GlobalUserPreferences.java
#	mastodon/src/main/java/org/joinmastodon/android/PushNotificationReceiver.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/HomeTimelineFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/ThreadFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/model/Status.java
#	mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/ExtendedFooterStatusDisplayItem.java
#	mastodon/src/main/res/values-it-rIT/strings_sk.xml
#	metadata/de-DE/changelogs/83.txt
#	metadata/de-DE/changelogs/94.txt
#	metadata/en-US/changelogs/94.txt
#	metadata/es/changelogs/94.txt
#	metadata/fr/title.txt
#	metadata/my-MM/title.txt
#	metadata/my/short_description.txt
#	metadata/pt-PT/changelogs/59.txt
#	metadata/pt-PT/changelogs/61.txt
#	metadata/pt-PT/full_description.txt
#	metadata/pt-PT/short_description.txt
#	metadata/pt-PT/title.txt
2023-06-13 14:03:50 -03:00
Eugen Rochko
40ef4c179a New translations strings.xml (Persian) 2023-06-13 18:31:58 +02:00
Eugen Rochko
62212dc6c9 New translations strings.xml (Persian) 2023-06-13 17:23:01 +02:00
Eugen Rochko
3ed2b67037 New translations strings.xml (Czech) 2023-06-13 15:55:50 +02:00
Oliebol
c75b436745 Translated using Weblate (Dutch)
Currently translated at 82.7% (250 of 302 strings)

Translation: Moshidon/values_sk
Translate-URL: https://translate.codeberg.org/projects/moshidon/values_sk/nl/
2023-06-13 13:11:29 +00:00
Andrewblasco
b1006b33f0 Translated using Weblate (Spanish)
Currently translated at 100.0% (302 of 302 strings)

Translation: Moshidon/values_sk
Translate-URL: https://translate.codeberg.org/projects/moshidon/values_sk/es/
2023-06-13 13:11:29 +00:00
Eugen Rochko
d240750606 New translations strings.xml (Persian) 2023-06-13 14:44:08 +02:00
Eugen Rochko
ed009d3e2e New translations strings.xml (Persian) 2023-06-13 13:15:59 +02:00
sk
3af7518cf4 disable proguard for now :/ 2023-06-13 12:20:03 +02:00
sk
91b9fdf5ce add gson proguard rules 2023-06-13 12:13:55 +02:00
Eugen Rochko
be2fa0f217 New translations strings.xml (Persian) 2023-06-13 12:09:09 +02:00
sk
22f5667549 fix javadoc 2023-06-13 11:50:57 +02:00
sk
8115578e94 boop version 2023-06-13 10:19:13 +02:00
sk
08dc122b6b tweak min/max heights 2023-06-13 10:07:30 +02:00
sk
e3199c009e hopefully fix typetoken crashes 2023-06-13 09:47:48 +02:00
LucasGGamerM
e1f5c9cb63 feat: lower publish button text setting opacity when relocatePublishButton is enabled 2023-06-12 19:09:13 -03:00
LucasGGamerM
7ca4f2ab2c feat: remove singleLine statement from Button settings items
cc: @sk22
2023-06-12 18:42:48 -03:00
Eugen Rochko
a8d9b4538b New translations strings.xml (Persian) 2023-06-12 22:41:37 +02:00
Eugen Rochko
2b7b3de043 New translations strings.xml (Persian) 2023-06-12 21:44:04 +02:00
sk
2e09010151 boop version 2023-06-12 20:44:25 +02:00
sk
3d79e87ec8 Merge remote-tracking branch 'upstream/l10n_master' 2023-06-12 20:43:22 +02:00
sk
09ed3c647a reduce max height for photos 2023-06-12 20:25:12 +02:00
EndermanCo
172515ba0a Translated using Weblate (Persian)
Currently translated at 23.2% (71 of 305 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/fa/
2023-06-12 17:43:48 +00:00
Andrewblasco
a2f0fc8c87 Translated using Weblate (Spanish)
Currently translated at 100.0% (18 of 18 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/es/
2023-06-12 17:43:48 +00:00
Andrewblasco
888cee4556 Translated using Weblate (Spanish)
Currently translated at 100.0% (305 of 305 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/es/
2023-06-12 17:43:48 +00:00
sk
c005e9bf18 apply upstream alt overlay changes 2023-06-12 19:43:13 +02:00
LucasGGamerM
cda565aadb feat: use higher resolution camera image when using camera shortcut 2023-06-12 14:26:58 -03:00
Eugen Rochko
64362968fc New translations strings.xml (Persian) 2023-06-12 19:10:22 +02:00
LucasGGamerM
e7654affa7 feat: add FileProvider class from AndroidX
This is for getting high quality camera images, and was a requirement for the code I need.
2023-06-12 13:49:03 -03:00
sk
320027ca9b merge upstream photo layout changes 2023-06-12 18:42:07 +02:00
sk
ad2678da7c Merge remote-tracking branch 'upstream/l10n_master' 2023-06-12 18:22:38 +02:00
sk22
c56c7448d0 Translated using Weblate (German)
Currently translated at 100.0% (18 of 18 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/de/
2023-06-12 16:22:10 +00:00
sk
731e67725c fix errors in strings 2023-06-12 18:22:02 +02:00
sk
8178f81c85 update changelog 2023-06-12 18:08:40 +02:00
sk
6fbf00a132 add newline 2023-06-12 18:07:28 +02:00
LucasGGamerM
a39024dfe1 Revert "feat: use higher resolution method to get image from camera shortcut"
This reverts commit 1f4cf2b2f0.
2023-06-12 13:06:56 -03:00
LucasGGamerM
7a0e827e23 Revert "style: fix mistyped extra )"
This reverts commit bca157a4af.
2023-06-12 13:06:56 -03:00
sk
968cde9e4c clean up empty regional locales 2023-06-12 18:03:22 +02:00
Grishka
aa9caefed1 Fix unread notifications 2023-06-12 18:54:46 +03:00
Grishka
14bbe1ffef Update the update icon 2023-06-12 18:50:06 +03:00
sk
f2ab2acef7 Merge remote-tracking branch 'weblate/main' 2023-06-12 17:47:22 +02:00
sk
81d1ecc5f8 update readme, changelog 2023-06-12 17:47:10 +02:00
EndermanCo
513e6439ff Translated using Weblate (Persian)
Currently translated at 22.2% (68 of 305 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/fa/
2023-06-12 15:35:16 +00:00
Oliebol
1f0108b14e Translated using Weblate (Dutch)
Currently translated at 84.5% (258 of 305 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/nl/
2023-06-12 15:35:15 +00:00
Choukajohn
1433d0717e Translated using Weblate (French)
Currently translated at 100.0% (305 of 305 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/fr/
2023-06-12 15:35:15 +00:00
sk
be91775f4b fix pinned posts showing post multiple times 2023-06-12 17:29:00 +02:00
sk
7b2f8d2be3 update readme 2023-06-12 16:40:52 +02:00
sk
54c386ccec update readme 2023-06-12 16:32:28 +02:00
sk
9d9e98959f change glitch url 2023-06-12 16:18:45 +02:00
sk
a3cd7224bd update readme 2023-06-12 16:17:08 +02:00
sk
6cf214f127 fix header disappearing in some cases
closes sk22#570
2023-06-12 15:39:38 +02:00
Eugen Rochko
b6976fb519 New translations strings.xml (Persian) 2023-06-12 15:36:23 +02:00
sk
871ada23ab don't display context until fragment transition finished 2023-06-12 14:33:09 +02:00
Eugen Rochko
040237de2b New translations strings.xml (Persian) 2023-06-12 14:30:32 +02:00
sk
29b2a25840 no error when opening url that looks like fedi url 2023-06-12 13:33:30 +02:00
LucasGGamerM
bca157a4af style: fix mistyped extra ) 2023-06-12 11:21:14 +00:00
LucasGGamerM
1f4cf2b2f0 feat: use higher resolution method to get image from camera shortcut 2023-06-12 11:17:27 +00:00
sk
bd2f05be67 hide followers/following count if count is -1 2023-06-12 12:13:44 +02:00
LucasGGamerM
123fef2cc7 feat: add an isVisisble check before opening the camera
This is another measure to prevent the event from making multiple opened compose screens (like when you click on a notification when you are already replying to someone) open the camera at the same time and add a repeated attachment to all opened compose screens
2023-06-11 21:48:49 -03:00
LucasGGamerM
636bab51da refactor: use TakePictureRequestEvent instead of PictureTakenEvent
This is better for a number of reasons, specially for code simplicity
2023-06-11 21:39:35 -03:00
sk22
ed075b276f Translated using Weblate (German)
Currently translated at 100.0% (305 of 305 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/de/
2023-06-11 23:48:58 +00:00
sk
dd25f3380a add setting to configure default value for "forward report"
closes sk22#565
2023-06-12 01:38:44 +02:00
sk22
1a2d1efa29 Added translation using Weblate (Persian) 2023-06-11 23:10:35 +00:00
sk
f3e1fa4b2b fix announcements loading infinitely
closes sk22#569
2023-06-12 01:01:45 +02:00
LucasGGamerM
666f7c4ac0 Merge pull request #213 from LucasGGamerM/feature/camera-compose-shortcut
feat: add camera shortcut to compose screen
2023-06-11 18:13:39 -03:00
LucasGGamerM
b1cb75d45f feat: still show the attach menu even if no PhotoPicker is avaiable
This is due to the newly added camera shortcut, which makes the menu necessary even if no PhotoPicker is available
2023-06-11 18:12:30 -03:00
LucasGGamerM
1675c8ab79 fix: unregister ComposeFragment for events on its destruction 2023-06-11 18:06:11 -03:00
LucasGGamerM
986b9731a1 fix: fix attachment not adding only after accepting the permission prompt on camera shortcut 2023-06-11 18:04:30 -03:00
Eugen Rochko
fc307ff43f New translations strings.xml (Persian) 2023-06-11 21:52:27 +02:00
LucasGGamerM
dc66b27c8a feat: add camera shortcut to compose screen 2023-06-11 16:48:19 -03:00
LucasGGamerM
3924c65e8c Merge remote-tracking branch 'weblate/master'
# Conflicts:
#	mastodon/src/main/res/values-es-rES/strings_mo.xml
#	mastodon/src/main/res/values-es-rES/strings_sk.xml
#	mastodon/src/main/res/values-in-rID/strings_sk.xml
#	mastodon/src/main/res/values-pt-rPT/strings_sk.xml
#	mastodon/src/main/res/values-ru-rRU/strings_mo.xml
2023-06-11 16:18:33 -03:00
Anonymous
df7da2d7f6 Translated using Weblate (Arabic (Algeria))
Currently translated at 6.0% (2 of 33 strings)

Translation: Moshidon/metadata
Translate-URL: https://translate.codeberg.org/projects/moshidon/metadata/ar_DZ/
2023-06-11 19:15:50 +00:00
Anonymous
697f95f3e3 Translated using Weblate (Occitan)
Currently translated at 6.0% (2 of 33 strings)

Translation: Moshidon/metadata
Translate-URL: https://translate.codeberg.org/projects/moshidon/metadata/oc/
2023-06-11 19:15:26 +00:00
Anonymous
f0d7da7194 Translated using Weblate (Kabyle)
Currently translated at 6.0% (2 of 33 strings)

Translation: Moshidon/metadata
Translate-URL: https://translate.codeberg.org/projects/moshidon/metadata/kab/
2023-06-11 19:15:25 +00:00
Eugen Rochko
04304b3397 New translations strings.xml (Persian) 2023-06-11 20:49:08 +02:00
sk
23f4b63195 Merge remote-tracking branch 'upstream/l10n_master' 2023-06-11 20:04:33 +02:00
sk22
edeae13dda Translated using Weblate (German)
Currently translated at 100.0% (304 of 304 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/de/
2023-06-11 18:04:03 +00:00
Oliebol
44558534e9 Translated using Weblate (Dutch)
Currently translated at 85.0% (256 of 301 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/nl/
2023-06-11 17:49:51 +00:00
Linerly
2b760bb215 Translated using Weblate (Indonesian)
Currently translated at 100.0% (301 of 301 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/id/
2023-06-11 17:49:51 +00:00
sk
44154a987d setting for "re:" reply CW prefix always or only to others
re: sk22#567
2023-06-11 19:46:18 +02:00
Eugen Rochko
7260db6668 New translations full_description.txt (Persian) 2023-06-11 19:41:48 +02:00
Eugen Rochko
1dadc51ddf New translations strings.xml (Persian) 2023-06-11 19:41:48 +02:00
Eugen Rochko
fe85351869 New translations strings.xml (Persian) 2023-06-11 18:34:16 +02:00
legiz
b641e83470 Translated using Weblate (Russian)
Currently translated at 100.0% (286 of 286 strings)

Translation: Moshidon/values_sk
Translate-URL: https://translate.codeberg.org/projects/moshidon/values_sk/ru/
2023-06-11 15:37:39 +00:00
gicorada
f22f9c2dcc Translated using Weblate (Italian)
Currently translated at 100.0% (286 of 286 strings)

Translation: Moshidon/values_sk
Translate-URL: https://translate.codeberg.org/projects/moshidon/values_sk/it/
2023-06-11 15:37:39 +00:00
Linerly
9ef2c278f6 Translated using Weblate (Indonesian)
Currently translated at 100.0% (286 of 286 strings)

Translation: Moshidon/values_sk
Translate-URL: https://translate.codeberg.org/projects/moshidon/values_sk/id/
2023-06-11 15:37:38 +00:00
gicorada
4a7cb4f129 Translated using Weblate (Italian)
Currently translated at 39.3% (13 of 33 strings)

Translation: Moshidon/metadata
Translate-URL: https://translate.codeberg.org/projects/moshidon/metadata/it/
2023-06-11 15:37:38 +00:00
legiz
3a47e8eea3 Translated using Weblate (Russian)
Currently translated at 100.0% (33 of 33 strings)

Translation: Moshidon/metadata
Translate-URL: https://translate.codeberg.org/projects/moshidon/metadata/ru/
2023-06-11 15:37:38 +00:00
legiz
4defd9c420 Translated using Weblate (Russian)
Currently translated at 95.7% (68 of 71 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/ru/
2023-06-11 15:37:38 +00:00
gicorada
3bbff120f0 Translated using Weblate (Italian)
Currently translated at 100.0% (71 of 71 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/it/
2023-06-11 15:37:37 +00:00
Linerly
bf07e9f079 Translated using Weblate (Indonesian)
Currently translated at 100.0% (71 of 71 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/id/
2023-06-11 15:37:37 +00:00
Eugen Rochko
74a83c6ac4 New translations strings.xml (Persian) 2023-06-11 17:37:10 +02:00
sk
acb1369e88 fix "show replies/boosts" filter not applied
closes sk22#566
2023-06-11 17:23:54 +02:00
sk
8e0d74f9c2 use appkit V.sp 2023-06-11 17:12:56 +02:00
Eugen Rochko
df77ba61ad New translations strings.xml (Persian) 2023-06-11 15:12:30 +02:00
Eugen Rochko
ed40f74d59 New translations strings.xml (Persian) 2023-06-11 13:57:15 +02:00
Eugen Rochko
42e26bef68 New translations strings.xml (Persian) 2023-06-11 12:54:18 +02:00
Eugen Rochko
af60adb55f New translations strings.xml (Indonesian) 2023-06-11 05:16:01 +02:00
LucasGGamerM
72fdff96c8 fix: fix crash when onDenied runnable is null on dialogs 2023-06-10 18:15:25 -03:00
sk
b94741feae boop version 2023-06-10 22:10:24 +02:00
sk
e43d6c35d8 update languages 2023-06-10 22:10:13 +02:00
sk
4a6f9e80b1 Merge remote-tracking branch 'weblate/main' 2023-06-10 22:03:41 +02:00
gallegonovato
ec02680507 Translated using Weblate (Spanish)
Currently translated at 99.6% (300 of 301 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/es/
2023-06-10 20:03:34 +00:00
sk22
5fc569a45a Translated using Weblate (German)
Currently translated at 100.0% (301 of 301 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/de/
2023-06-10 20:03:34 +00:00
sk
4bc9c5691d Merge remote-tracking branch 'upstream/l10n_master' 2023-06-10 22:03:19 +02:00
sk
19b68855ac move permission definition to status privacy 2023-06-10 21:54:47 +02:00
sk
70fdfb612e fix issue on re-bind 2023-06-10 21:54:18 +02:00
sk
0a32c217d8 Merge branch 'main' into pr/FineFindus/557 2023-06-10 21:47:26 +02:00
Eugen Rochko
5dfa9237ad New translations short_description.txt (Persian) 2023-06-10 21:44:47 +02:00
sk
573ff75498 update ancestor when deleting post 2023-06-10 21:32:41 +02:00
sk
87c37df370 insert replied directly below status
closes sk22#558
2023-06-10 20:57:01 +02:00
LucasGGamerM
4e21b60087 Merge branch 'master' of https://github.com/LucasGGamerM/moshidon 2023-06-10 14:31:17 -03:00
LucasGGamerM
7c786e55a5 fix: fix follow button on ProfileFragment 2023-06-10 14:30:29 -03:00
sk22
7fb0944e66 Translated using Weblate (German)
Currently translated at 100.0% (301 of 301 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/de/
2023-06-10 16:59:16 +00:00
sk
35c8a3d121 change strings 2023-06-10 18:59:05 +02:00
sk
9e58413d1a Merge remote-tracking branch 'weblate/main' 2023-06-10 18:54:32 +02:00
sk
90e60aef84 change auto-reveal cw wording
closes sk22#562
2023-06-10 18:53:38 +02:00
sk
8547ce05ed change auto-reveal cw wording
closes sk22#562
2023-06-10 18:52:01 +02:00
gicorada
0825faee5c Translated using Weblate (Italian)
Currently translated at 100.0% (297 of 297 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/it/
2023-06-10 16:42:23 +00:00
Linerly
d43a697df7 Translated using Weblate (Indonesian)
Currently translated at 100.0% (297 of 297 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/id/
2023-06-10 16:42:23 +00:00
Choukajohn
3b742c4391 Translated using Weblate (French)
Currently translated at 100.0% (297 of 297 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/fr/
2023-06-10 16:42:23 +00:00
ihor_ck
a43a396043 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (297 of 297 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/uk/
2023-06-10 16:42:23 +00:00
Choukajohn
bcb4fac553 Translated using Weblate (French)
Currently translated at 100.0% (297 of 297 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/fr/
2023-06-10 16:42:23 +00:00
LucasGGamerM
51294bbb14 build(nightly): compile appkit dependency with workflow 2023-06-10 11:18:15 -03:00
LucasGGamerM
5dcda4f37a feat: merge megalodon's always reveal equal spoilers in threads/discussions 2023-06-10 11:00:34 -03:00
LucasGGamerM
33d725acb4 refactor: use isRemote instead of reloadWhenClicked
Why are my variable naming abilities be so awful?
2023-06-10 10:44:56 -03:00
LucasGGamerM
fb78ac1243 feat: use megalodon's setting item and strings for remote followers 2023-06-10 10:33:30 -03:00
LucasGGamerM
ccfa614dc7 fix(boost-button): fix it not updating its state on non-boostable items 2023-06-10 10:26:54 -03:00
LucasGGamerM
bc7f614573 refactor: fix compilation problems by refactoring old code 2023-06-09 18:52:08 -03:00
LucasGGamerM
7700288dbe fix: fix compilation problems with isScrolledToTop method not being implemented 2023-06-09 18:31:45 -03:00
LucasGGamerM
e2c62aa76b Merge remote-tracking branch 'megalodon_main/main'
# Conflicts:
#	mastodon/build.gradle
#	mastodon/src/main/java/org/joinmastodon/android/GlobalUserPreferences.java
#	mastodon/src/main/java/org/joinmastodon/android/api/requests/accounts/GetAccountByHandle.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/BaseStatusListFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/ComposeFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/ProfileFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/ThreadFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/account_list/BaseAccountListFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/account_list/FollowerListFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/account_list/FollowingListFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/account_list/PaginatedAccountListFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/model/Account.java
#	mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/FooterStatusDisplayItem.java
#	mastodon/src/main/java/org/joinmastodon/android/ui/text/ClickableLinksDelegate.java
#	mastodon/src/main/java/org/joinmastodon/android/ui/utils/UiUtils.java
#	mastodon/src/main/res/layout/display_item_footer.xml
#	mastodon/src/main/res/values/dimens.xml
2023-06-09 18:09:23 -03:00
sk
35bf858a83 auto-reveal equal spoilers in threads 2023-06-09 14:54:03 +02:00
sk
870bfaf08c don't use switch for android ids 2023-06-09 14:50:21 +02:00
sk
c4238fb19b keep revealed states when reloading
closes sk22#561
2023-06-09 13:27:25 +02:00
sk
ba7aeb358b fix thread status not clickable if filter revealed
closes sk22#554
2023-06-09 12:50:10 +02:00
sk
6f3fd4d454 fix opening browser twice
closes sk22#559
2023-06-09 12:47:32 +02:00
Eugen Rochko
c890195567 New translations strings.xml (Swedish) 2023-06-08 22:57:52 +02:00
Eugen Rochko
b50a327b17 New translations strings.xml (Swedish) 2023-06-08 17:47:06 +02:00
sk
97547f334f returning optionals for the optional god
closes sk22#555
2023-06-08 15:31:58 +02:00
sk
1ab953d819 fix spoiler button being hidden while editing
closes sk22#553
2023-06-08 15:03:04 +02:00
FineFindus
dbe7eb25ff Merge branch 'main' into feat/hide-non-boostable-boosts 2023-06-08 10:35:12 +02:00
FineFindus
45ecec09f5 feat: hide boost count on non-boostable statuses 2023-06-08 10:33:27 +02:00
FineFindus
9b4556d293 refactor: move boostable check to status 2023-06-08 10:33:27 +02:00
LucasGGamerM
161c19b628 fix(account-sheet): fix wrong coloring for add account drawawble 2023-06-07 21:26:15 -03:00
sk
307d483a56 add comment 2023-06-07 21:59:56 +02:00
sk
9612248695 remove unused imports 2023-06-07 21:51:17 +02:00
sk
1f63401e5b fix pixelfed post editing 2023-06-07 21:50:50 +02:00
sk
d35ec18a88 increase akkoma scheduled posts compatibility 2023-06-07 21:12:38 +02:00
sk
b93b1847c3 increase pixelfed compatibility 2023-06-07 21:12:30 +02:00
sk
cd46ed565f open browser if login redirects to website 2023-06-07 21:11:20 +02:00
sk
4a0e4edef8 load more if screen isn't full yet 2023-06-07 20:28:56 +02:00
sk
2ea7333daa only reload main status when refreshing
closes sk22#552
2023-06-07 18:45:50 +02:00
sk
fa7a66809d change profile loading error behavior 2023-06-07 16:09:41 +02:00
sk
71884ab760 don't show wrong relationship with remote accounts 2023-06-07 15:50:30 +02:00
sk
f31205c670 generalize lookup error handling 2023-06-07 15:45:22 +02:00
sk
0091ae87ce fix issues with external share
closes sk22#550
2023-06-07 15:17:44 +02:00
Grishka
17957b69d1 Filtered posts in timelines (AND-8) 2023-06-07 04:47:54 +03:00
LucasGGamerM
c196dc563f fix(follow-more): fix follow more fragment pointing to edit profile
This was probably made to be used on the create new account procedure, and it was being reused on the Home tab long click action. As we don't have an account creation procedure on Moshidon, we can just stop pointing to the OnboardingProfileSetup fragment
2023-06-06 19:38:04 -03:00
LucasGGamerM
2baf51616c fix(settings): update max lines number in settings items
This fixes the bug where settings secondary text would go missing if a screen was too small. This addresses that. It's also something for you @sk22
2023-06-06 19:25:51 -03:00
LucasGGamerM
b75e2ce26f Merge branch 'master' of https://github.com/LucasGGamerM/moshidon 2023-06-06 19:17:19 -03:00
LucasGGamerM
15976a991b refactor(settings): refactor settings toolbar animations
Also fixes wrong elevation on toolbar hidden mode
2023-06-06 19:17:07 -03:00
LucasGGamerM
16ee7371e7 build: make nightly builds not debuggable 2023-06-06 16:52:35 -03:00
LucasGGamerM
02f0c794c7 feat(settings): add fadeIn and fadeOut animations to toolbar title 2023-06-06 14:10:06 -03:00
sk
ad13b1e927 bump version 2023-06-06 17:13:30 +02:00
sk
a354ea80ab Merge remote-tracking branch 'upstream/l10n_master' 2023-06-06 17:09:06 +02:00
sk22
9f65b8112a Translated using Weblate (German)
Currently translated at 100.0% (297 of 297 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/de/
2023-06-06 15:08:53 +00:00
Choukajohn
6ac5d957fe Translated using Weblate (French)
Currently translated at 100.0% (293 of 293 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/fr/
2023-06-06 15:05:05 +00:00
sk
4258c55b88 implement fetching listings from remote instances 2023-06-06 17:04:29 +02:00
sk
969f29e2e9 support string res for small text item 2023-06-06 16:55:20 +02:00
sk
68921d0f0b fix footer being too close to next header 2023-06-06 14:23:34 +02:00
Eugen Rochko
c4ac4ee173 New translations strings.xml (Swedish) 2023-06-06 13:23:46 +02:00
Eugen Rochko
659b4e2fcd New translations strings.xml (Swedish) 2023-06-06 11:55:59 +02:00
sk
24e5bda8d3 fix profile options icons 2023-06-06 10:30:32 +02:00
Eugen Rochko
02b1ad8d7a New translations strings.xml (Swedish) 2023-06-06 00:56:52 +02:00
Eugen Rochko
47eeb01b75 New translations strings.xml (Turkish) 2023-06-05 21:08:28 +02:00
ihor_ck
4288814138 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (293 of 293 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/uk/
2023-06-05 16:09:08 +00:00
sk
ac4458e106 fix badged toolbar icons with new appkit version 2023-06-05 18:07:22 +02:00
sk
3d24b2de10 add status counters event listener to notifications 2023-06-05 16:19:55 +02:00
sk
ed994b23e9 fix wrong views' states being modified
closes sk22#549
2023-06-05 16:12:07 +02:00
sk
8c4678aba5 fix updated main status not being applied 2023-06-05 16:05:58 +02:00
Eugen Rochko
3d5fb2dfea New translations strings.xml (Swedish) 2023-06-05 15:00:47 +02:00
Eugen Rochko
ef6238b593 New translations strings.xml (Swedish) 2023-06-05 13:45:02 +02:00
Eugen Rochko
bc9bec3d66 New translations strings.xml (Swedish) 2023-06-05 12:47:38 +02:00
sk
d16e199dd1 scroll up when posting on profile fragment
closes sk22#546
2023-06-05 11:48:40 +02:00
sk
a9c2df2e83 do copy spoilerRevealed on clone
closes sk22#547
2023-06-05 11:26:36 +02:00
sk
4673a4b9f7 add missing database column in post notification table 2023-06-05 11:22:01 +02:00
Grishka
a24b4363d7 Bring toolbar appearance more in line with design 2023-06-05 04:46:21 +03:00
Grishka
02ddad22e7 Update profile menu (AND-34) 2023-06-05 04:32:18 +03:00
Grishka
a705512dc5 Update post options menu (AND-33) 2023-06-05 04:25:11 +03:00
Grishka
cfd6954755 Update launcher icon (AND-84) 2023-06-05 02:34:58 +03:00
Grishka
702ac43f86 Fix shortcut icon (AND-85) 2023-06-05 01:45:23 +03:00
Grishka
d4a5286895 Fix #553 2023-06-04 23:47:08 +02:00
Grishka
1b4579346b Fix #548 2023-06-04 23:39:06 +02:00
sk
0665b8dd3b fix incompatibility with upstream bugfix 2023-06-04 23:33:04 +02:00
LucasGGamerM
4f367d3e88 feat: add instance url to toolbar on instance about fragment 2023-06-04 18:32:47 -03:00
Grishka
853124e2ce Fix it again 2023-06-04 23:32:13 +02:00
Grishka
5dcd6e5a0d Fix it again 2023-06-04 23:31:12 +02:00
Grishka
6f25c8be0f Fix #583 2023-06-04 23:26:48 +02:00
sk
1db4b1319e use latest appkit version 2023-06-04 23:26:39 +02:00
Grishka
76a97fcb47 Fix #591 2023-06-04 23:20:29 +02:00
sk
4baaa39f35 bump version 2023-06-04 23:16:32 +02:00
sk
52f025ae5a Merge remote-tracking branch 'upstream/l10n_master' 2023-06-04 23:14:49 +02:00
sk22
14b805e883 Translated using Weblate (German)
Currently translated at 100.0% (293 of 293 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/de/
2023-06-04 21:13:53 +00:00
sk
433a7b15fe change bubble string 2023-06-04 23:03:29 +02:00
sk
6c8cbbc34a Merge remote-tracking branch 'weblate/main' 2023-06-04 22:58:56 +02:00
sk
d4fbb298c1 use sp for reply line inline icons 2023-06-04 22:57:06 +02:00
LucasGGamerM
9d78bb508a feat: better toolbar behavior on instance about fragment 2023-06-04 17:45:38 -03:00
sk
2aeb5f03d6 remove unused sp drawables 2023-06-04 22:32:54 +02:00
sk
6522403c37 fix footer text margins 2023-06-04 22:12:45 +02:00
Grishka
6ede2d22bb Fix #591 2023-06-04 23:02:48 +03:00
sk
f090ca7f75 use sp for scaled footer 2023-06-04 21:08:45 +02:00
LucasGGamerM
ac8b950893 feat: remove colorful refreshLayout from ProfileFragment 2023-06-04 16:02:50 -03:00
sk
2f02a238df refresh updated main status 2023-06-04 20:56:44 +02:00
LucasGGamerM
22f9e941aa feat: share instance menu item on instance about screen 2023-06-04 15:45:26 -03:00
sk
0d5fa97800 fix wrong index 2023-06-04 20:40:27 +02:00
sk
b102deaee1 don't let interaction counts go negative 2023-06-04 19:08:18 +02:00
LucasGGamerM
3a73dbf304 build(nightly): make nightly builds debuggable and not resource shrinked 2023-06-04 11:23:52 -03:00
LucasGGamerM
faabc068ca fix: remoteFollowers feature
This fixes the remoteFollowers feature, which was broken after the merge from Megalodon
2023-06-04 11:18:33 -03:00
LucasGGamerM
443a69b10d feat: use correct title for confirmLogOut dialog 2023-06-04 11:00:02 -03:00
LucasGGamerM
6881651ce7 feat: even denser AccountSwitcherSheet 2023-06-04 10:53:29 -03:00
LucasGGamerM
04aadf48f2 feat: use secondary text color for username in AccountSwitcherSheet 2023-06-04 10:43:24 -03:00
Andrewblasco
fc7ff07f40 Translated using Weblate (Spanish)
Currently translated at 100.0% (286 of 286 strings)

Translation: Moshidon/values_sk
Translate-URL: https://translate.codeberg.org/projects/moshidon/values_sk/es/
2023-06-04 10:37:37 +00:00
Eryk Michalak
968b2ee460 Translated using Weblate (Polish)
Currently translated at 97.9% (286 of 292 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/pl/
2023-06-04 10:37:37 +00:00
Andrewblasco
890340de94 Translated using Weblate (Spanish)
Currently translated at 99.6% (291 of 292 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/es/
2023-06-04 10:37:37 +00:00
Andrewblasco
c0589da549 Translated using Weblate (Spanish)
Currently translated at 100.0% (71 of 71 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/es/
2023-06-04 10:37:36 +00:00
sk
4ca1a7b29e fix index out of bounds exception 2023-06-04 11:45:12 +02:00
sk
5432f2590c fine-tune footer layout 2023-06-04 05:00:48 +02:00
Grishka
315d26ad52 Settings tweaks 2023-06-04 05:32:27 +03:00
sk
60ccf5cf0a only shift selection box if footer is present 2023-06-04 04:15:15 +02:00
sk
bc717f5b10 tweak footer margins and hitboxes 2023-06-04 04:08:38 +02:00
Grishka
a78b0687f7 Fix it again 2023-06-04 04:50:40 +03:00
LucasGGamerM
3aead05ad4 feat: use megalogon's lighter grays on colors.xml 2023-06-03 22:03:41 -03:00
LucasGGamerM
9ef43cc6d3 feat: make nav bar color consistent with account switcher sheet
Merge this commit and the one before this one @sk22
2023-06-03 21:54:39 -03:00
LucasGGamerM
24df7d49d5 feat: make ProfileFragment not reloadable when in edit mode 2023-06-03 21:46:23 -03:00
sk
486eef21dd responsive footer width 2023-06-04 02:16:47 +02:00
Grishka
148b8e9369 Fix #583 2023-06-04 02:40:59 +03:00
sk
44a4d02815 remove redundant suppress annotation 2023-06-04 01:36:38 +02:00
sk
336a8194bd fix settings button binding not reset visibility and events 2023-06-04 01:36:05 +02:00
LucasGGamerM
ac7c1c8497 fix: wrong pixel launcher url for customLocalTimelines 2023-06-03 20:30:24 -03:00
LucasGGamerM
d72f66b9bf fix: NPE when getInstance().pleroma.metadata.fieldsLimits is null 2023-06-03 20:25:27 -03:00
LucasGGamerM
1d445b8b27 fix: compilation problems 2023-06-03 20:21:28 -03:00
Grishka
ae6ce0f9b0 Fix #548 2023-06-04 02:11:40 +03:00
Grishka
31c8665653 Settings M3 redesign wip 2023-06-04 02:04:55 +03:00
LucasGGamerM
14175a9140 Merge remote-tracking branch 'megalodon_main/main'
# Conflicts:
#	mastodon/build.gradle
#	mastodon/src/main/java/org/joinmastodon/android/ExternalShareActivity.java
#	mastodon/src/main/java/org/joinmastodon/android/MainActivity.java
#	mastodon/src/main/java/org/joinmastodon/android/PushNotificationReceiver.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/BaseStatusListFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/EditTimelinesFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/FollowRequestsListFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/FollowedHashtagsFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/HomeFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/HomeTabFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/ListTimelinesFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/NotificationsFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/NotificationsListFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/ProfileFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/SettingsFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/StatusListFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/ThreadFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/account_list/FollowerListFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/account_list/FollowingListFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/account_list/StatusFavoritesListFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/account_list/StatusReblogsListFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/discover/DiscoverAccountsFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/discover/DiscoverFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/discover/DiscoverHashtagsFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/discover/DiscoverNewsFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/discover/FederatedTimelineFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/discover/LocalTimelineFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/discover/SearchFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/onboarding/AccountActivationFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/model/TimelineDefinition.java
#	mastodon/src/main/java/org/joinmastodon/android/ui/AccountSwitcherSheet.java
#	mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/FooterStatusDisplayItem.java
#	mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/HashtagStatusDisplayItem.java
#	mastodon/src/main/java/org/joinmastodon/android/ui/utils/UiUtils.java
#	mastodon/src/main/res/layout/item_account_switcher.xml
#	mastodon/src/main/res/values-ar-rDZ/strings_sk.xml
#	mastodon/src/main/res/values-es-rES/strings_sk.xml
#	mastodon/src/main/res/values-nl-rNL/strings_sk.xml
#	mastodon/src/main/res/values-pt-rPT/strings_sk.xml
#	mastodon/src/main/res/values-v31/colors.xml
#	mastodon/src/main/res/values/colors.xml
#	mastodon/src/main/res/values/styles.xml
2023-06-03 19:56:16 -03:00
sk
7859f4cd05 support parsing mailto links
i mean, why not - if github decided every @username@example.social is actually
an email address, might as well support sharing that mailto link to megalodon
2023-06-03 23:39:43 +02:00
sk
37622ba9ce generalize notification handling, open reports in browser 2023-06-03 22:47:20 +02:00
sk
7a6af89375 fix unwanted fab animation when scrolling and switching tab
closes sk22#528
2023-06-03 22:07:58 +02:00
sk
056bfaacfe fix fab being hidden when scrolling to top
closes sk22#528
2023-06-03 21:54:57 +02:00
sk
6684311ec5 fix button state/char counter not updating when empty
closes sk22#537
2023-06-03 21:24:40 +02:00
sk
11943571ad fix thread replies not added to data
closes sk22#543
2023-06-03 21:10:45 +02:00
sk
f696fcd412 simplify ancestry code 2023-06-03 21:03:47 +02:00
sk
2919e109ca remove unused member 2023-06-03 20:40:29 +02:00
sk
995f478708 allow sharing @-handles with megalodon
closes sk22#540
2023-06-03 20:31:00 +02:00
LucasGGamerM
04fdea0296 docs: update readme 2023-06-03 10:27:01 -03:00
LucasGGamerM
b112c3a0b2 docs: add monero wallet address to readme 2023-06-03 09:43:28 -03:00
LucasGGamerM
47149dd394 Update FUNDING.yml 2023-06-02 18:54:19 -03:00
LucasGGamerM
d1e0c1ebad Update FUNDING.yml 2023-06-02 18:48:51 -03:00
LucasGGamerM
2ef9d87250 docs: add liberapay donations link 2023-06-02 18:46:37 -03:00
sk
fb8764bcd7 refactor ancestry, fix case regarding reply line
fix case where reply line was removed despite having no direct ancestor
2023-06-02 22:08:03 +02:00
Eugen Rochko
d7f73e02c5 New translations strings.xml (German) 2023-06-02 20:22:32 +02:00
Eugen Rochko
e897b3af57 New translations strings.xml (German) 2023-06-02 19:23:23 +02:00
sk
e04fd8a004 bump version 2023-06-02 19:10:08 +02:00
sk
ada70ae1b5 Merge remote-tracking branch 'upstream/l10n_master' 2023-06-02 19:09:44 +02:00
Espasant3
5fdec0900e Translated using Weblate (Galician)
Currently translated at 100.0% (292 of 292 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/gl/
2023-06-02 17:09:12 +00:00
sk
56a93288c4 reimplement thread ancestry 2023-06-02 19:05:18 +02:00
sk
02e3421f98 fix null pointer exception 2023-06-02 19:03:29 +02:00
LucasGGamerM
df7b53e10f feat(settings): move timeline settings around
This moves the button to the topmost item on pleroma based instances
2023-06-02 13:48:26 -03:00
Eugen Rochko
fdbf331432 New translations strings.xml (Bengali) 2023-06-02 18:01:03 +02:00
Eugen Rochko
aed86ac6f0 New translations strings.xml (Bengali) 2023-06-02 16:50:10 +02:00
Eugen Rochko
3a13d4d6c0 New translations strings.xml (Bengali) 2023-06-02 05:45:51 +02:00
Eugen Rochko
f5336564d0 New translations strings.xml (Bengali) 2023-06-02 04:39:21 +02:00
sk
1ce49c68fe bump version 2023-06-02 01:45:55 +02:00
sk
d37e880993 don't close sheet after logging out 2023-06-02 01:45:30 +02:00
sk
6fdb81a01f Merge remote-tracking branch 'upstream/l10n_master' 2023-06-02 01:37:14 +02:00
ihor_ck
f9d6827572 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (292 of 292 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/uk/
2023-06-01 23:36:24 +00:00
Linerly
10bf72b9ff Translated using Weblate (Indonesian)
Currently translated at 100.0% (292 of 292 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/id/
2023-06-01 23:36:24 +00:00
Choukajohn
800f929a15 Translated using Weblate (French)
Currently translated at 100.0% (292 of 292 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/fr/
2023-06-01 23:36:24 +00:00
sk
bfcff1e19f fix null pointer exception
closes sk22#539
2023-06-02 01:34:31 +02:00
sk
f373e7df3e put code in method, add todo 2023-06-02 01:16:21 +02:00
sk
3985de5b14 visually connect descendant replies in threads
closes sk22#256
closes sk22#510
2023-06-02 00:55:42 +02:00
LucasGGamerM
4d75621384 fix(settings): fix on theme change crash
This fixes such bug by only registering for listening to events on the onCreate method, and not on the onViewCreated method. For some wacky reason, when the activity gets recreated, the onViewCreated method runs again, but the onDestroy method doesn't, which makes the fragment register for events twice without unregistering, which causes the app to crash. Also refactors some duplicate code.
2023-06-01 19:46:45 -03:00
sk
e175a721d4 remove additional padding with translate button 2023-06-02 00:17:50 +02:00
sk
d9784ebc31 use /about web uri for akkoma 2023-06-01 19:28:46 +02:00
sk
f241092277 use isInstanceAkkoma() 2023-06-01 19:22:01 +02:00
sk
0702703d78 normalize instance uri 2023-06-01 19:13:03 +02:00
sk
2c4504bad3 fix current fragment detection 2023-06-01 19:12:50 +02:00
Eugen Rochko
07ca5a8b77 New translations strings.xml (Bengali) 2023-06-01 19:07:10 +02:00
sk
798a43906f denser account switcher
this one's for @experiencersinternational
2023-06-01 18:46:53 +02:00
sk
41cb0f2e09 implement assist url in instance rules 2023-06-01 18:38:45 +02:00
sk
e12c0fb81f bump version 2023-06-01 18:10:30 +02:00
Oliebol
ac39f119e2 Translated using Weblate (Dutch)
Currently translated at 88.4% (253 of 286 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/nl/
2023-06-01 16:08:59 +00:00
Espasant3
016faf3df0 Translated using Weblate (Galician)
Currently translated at 99.6% (285 of 286 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/gl/
2023-06-01 16:08:59 +00:00
sk
b2d6879282 reimplement assist content 2023-06-01 18:02:33 +02:00
Eugen Rochko
6926a212f4 New translations strings.xml (Bengali) 2023-06-01 17:46:40 +02:00
LucasGGamerM
addb6e06bf feat(settings): add horizontal padding to SettingsFooterItem
This addresses a minor annoyance where the version name would be glued to the sides of the display
2023-06-01 11:55:31 -03:00
LucasGGamerM
8ea752fbf7 fix: fix updateItem not updating state after UpdateState change
This fixes the auto updater on the new settings redesign
2023-06-01 11:51:26 -03:00
sk
89afc05d5c Merge branch 'main' into pr/FineFindus/530 2023-06-01 16:32:04 +02:00
Eugen Rochko
936f39161b New translations strings.xml (German) 2023-05-31 20:11:48 +02:00
sk
ee20ee0722 include mentions in reply from notification
closes sk22#536
2023-05-31 12:42:48 +02:00
sk
02f9f8c8ea always update active account, but not others 2023-05-31 12:23:04 +02:00
sk
de3a252884 not as huge share sheet heading 2023-05-31 10:12:12 +02:00
sk
5e7a00de3e fix crash when logging out active account 2023-05-31 10:05:31 +02:00
sk
2858aeb55e only set last account id if creating new activity 2023-05-31 09:45:24 +02:00
sk
357104efa9 set checked on basis of fragment's account id
closes sk22#538
2023-05-31 09:42:29 +02:00
sk
bb8027c7ef open externally opened content in main activity
closes sk22#533
2023-05-31 01:44:00 +02:00
sk
f9dd787009 fix rules crashing the app
closes sk22#535
2023-05-31 00:19:38 +02:00
LucasGGamerM
9478258caa Merge remote-tracking branch 'weblate/master' 2023-05-30 19:04:34 -03:00
Tânia Marques Silva
9432bf9f38 Translated using Weblate (Portuguese (Portugal))
Currently translated at 100.0% (286 of 286 strings)

Translation: Moshidon/values_sk
Translate-URL: https://translate.codeberg.org/projects/moshidon/values_sk/pt_PT/
2023-05-30 22:01:22 +00:00
Andrewblasco
c935a00763 Translated using Weblate (Spanish)
Currently translated at 100.0% (286 of 286 strings)

Translation: Moshidon/values_sk
Translate-URL: https://translate.codeberg.org/projects/moshidon/values_sk/es/
2023-05-30 22:01:22 +00:00
legiz
404c4a3fdd Translated using Weblate (Russian)
Currently translated at 6.0% (2 of 33 strings)

Translation: Moshidon/metadata
Translate-URL: https://translate.codeberg.org/projects/moshidon/metadata/ru/
2023-05-30 22:01:22 +00:00
Tânia Marques Silva
4fa8f6deb5 Translated using Weblate (Portuguese (Portugal))
Currently translated at 27.2% (9 of 33 strings)

Translation: Moshidon/metadata
Translate-URL: https://translate.codeberg.org/projects/moshidon/metadata/pt_PT/
2023-05-30 22:01:22 +00:00
legiz
f55b05012d Translated using Weblate (Russian)
Currently translated at 85.9% (61 of 71 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/ru/
2023-05-30 22:01:22 +00:00
Tânia Marques Silva
ae81fee449 Translated using Weblate (Portuguese (Portugal))
Currently translated at 100.0% (71 of 71 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/pt_PT/
2023-05-30 22:01:22 +00:00
Oliebol
ec8dda4501 Translated using Weblate (Dutch)
Currently translated at 70.4% (50 of 71 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/nl/
2023-05-30 22:01:22 +00:00
Andrewblasco
269b0b36b0 Translated using Weblate (Spanish)
Currently translated at 100.0% (71 of 71 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/es/
2023-05-30 22:01:22 +00:00
Clyde
c8ed7c364b Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (286 of 286 strings)

Translation: Moshidon/values_sk
Translate-URL: https://translate.codeberg.org/projects/moshidon/values_sk/zh_Hans/
2023-05-30 22:01:22 +00:00
Clyde
356833e248 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (33 of 33 strings)

Translation: Moshidon/metadata
Translate-URL: https://translate.codeberg.org/projects/moshidon/metadata/zh_Hans/
2023-05-30 22:01:22 +00:00
Clyde
1aa80270b4 Translated using Weblate (Chinese (Simplified))
Currently translated at 94.9% (56 of 59 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/zh_Hans/
2023-05-30 22:01:22 +00:00
Andrewblasco
1fccecdbf6 Translated using Weblate (Spanish)
Currently translated at 100.0% (59 of 59 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/es/
2023-05-30 22:01:22 +00:00
Andrewblasco
8be396e801 Translated using Weblate (Spanish)
Currently translated at 100.0% (286 of 286 strings)

Translation: Moshidon/values_sk
Translate-URL: https://translate.codeberg.org/projects/moshidon/values_sk/es/
2023-05-30 22:01:22 +00:00
Andrewblasco
6755ff836e Translated using Weblate (Spanish)
Currently translated at 100.0% (59 of 59 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/es/
2023-05-30 22:01:22 +00:00
Andrewblasco
a3fc9710f7 Translated using Weblate (Spanish)
Currently translated at 100.0% (48 of 48 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/es/
2023-05-30 22:01:22 +00:00
sk
e005731ba6 theming support for m3 colors 2023-05-30 23:52:26 +02:00
sk
18ae3f4f61 Merge branch 'pr/FineFindus/531'
Co-authored-by: FineFindus <63370021+finefindus@users.noreply.github.com>
2023-05-30 22:46:08 +02:00
sk
10dfe0327e use new account switcher 2023-05-30 22:42:56 +02:00
Grishka
7c6ec2e3d7 Fix #587 2023-05-30 21:32:08 +03:00
Jacoco
1d1e921137 Fix GoToSocial crash when markers are null (#529) 2023-05-30 19:07:34 +02:00
sk
0985a4c968 getInstance returns optional 2023-05-30 18:57:17 +02:00
sk
8df589c103 safer file writing 2023-05-30 18:56:55 +02:00
LucasGGamerM
3ac9c09338 feat: shows toolbar when scrolled past title
This still needs to be redone with the same style as the profile fragment
2023-05-30 13:19:04 -03:00
FineFindus
71b6b2f451 feat(share): add option open URL 2023-05-30 16:33:09 +02:00
FineFindus
d85940ded8 fix: re-add removed imports 2023-05-30 16:28:04 +02:00
LucasGGamerM
e9e491c0b0 feat: redesign account picker sheet 2023-05-30 16:25:04 +02:00
FineFindus
c73562fb75 feat(external-share): use AccountSwitcherSheet 2023-05-30 16:24:43 +02:00
FineFindus
3feacb59c8 feat(external-share): use transparent background 2023-05-30 16:19:28 +02:00
FineFindus
a033d711c1 feat: show page URL in recents 2023-05-30 15:40:20 +02:00
LucasGGamerM
ba31afda27 fix: fixes wrong status bar background color on light mode in settings
This addresses #204
2023-05-29 20:24:13 -03:00
Tânia Marques Silva
3029c37755 Translated using Weblate (Portuguese (Portugal))
Currently translated at 100.0% (286 of 286 strings)

Translation: Moshidon/values_sk
Translate-URL: https://translate.codeberg.org/projects/moshidon/values_sk/pt_PT/
2023-05-29 18:37:37 +00:00
Andrewblasco
728d55ffa0 Translated using Weblate (Spanish)
Currently translated at 100.0% (286 of 286 strings)

Translation: Moshidon/values_sk
Translate-URL: https://translate.codeberg.org/projects/moshidon/values_sk/es/
2023-05-29 18:37:37 +00:00
legiz
265e9a9f56 Translated using Weblate (Russian)
Currently translated at 6.0% (2 of 33 strings)

Translation: Moshidon/metadata
Translate-URL: https://translate.codeberg.org/projects/moshidon/metadata/ru/
2023-05-29 18:37:37 +00:00
Tânia Marques Silva
7fbe205902 Translated using Weblate (Portuguese (Portugal))
Currently translated at 27.2% (9 of 33 strings)

Translation: Moshidon/metadata
Translate-URL: https://translate.codeberg.org/projects/moshidon/metadata/pt_PT/
2023-05-29 18:37:36 +00:00
legiz
9b84333868 Translated using Weblate (Russian)
Currently translated at 85.9% (61 of 71 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/ru/
2023-05-29 18:37:36 +00:00
Tânia Marques Silva
9525893bf7 Translated using Weblate (Portuguese (Portugal))
Currently translated at 100.0% (71 of 71 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/pt_PT/
2023-05-29 18:37:36 +00:00
Oliebol
daf15dcc62 Translated using Weblate (Dutch)
Currently translated at 70.4% (50 of 71 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/nl/
2023-05-29 18:37:36 +00:00
Andrewblasco
b3e2b69b70 Translated using Weblate (Spanish)
Currently translated at 100.0% (71 of 71 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/es/
2023-05-29 18:37:36 +00:00
sk
32081b71f5 throw exception if no instance for session 2023-05-29 13:31:42 +02:00
sk
7849c34d1f fix account list alignment 2023-05-29 13:25:14 +02:00
sk
24977ec613 bump version 2023-05-29 13:03:18 +02:00
sk
786bbab0d5 Merge remote-tracking branch 'weblate/main' 2023-05-29 13:01:36 +02:00
sk
1facb07c28 Merge remote-tracking branch 'upstream/l10n_master' 2023-05-29 13:01:24 +02:00
sk
bba5aba22d settings icons not important for accessibility 2023-05-29 12:56:36 +02:00
sk
d7b85d6eba move invalid strings 2023-05-29 12:47:38 +02:00
sk
6832bfb95c don't display blocked_by relationship
closes sk22#526
2023-05-29 12:34:53 +02:00
sk
4c379b67a3 only auto-open search on pleroma instances 2023-05-29 03:33:31 +02:00
sk
3a2ae1ce71 clean up preferences when removing account 2023-05-29 02:40:15 +02:00
sk
c80afaf9c0 avoid sessions without instance info 2023-05-29 02:40:02 +02:00
sk
31d22bac47 remove unused method 2023-05-29 02:38:52 +02:00
Jacoco
b5f6687925 More Akkoma improvements (#524)
* Only open account if domain matches
Akkoma will seemingly show results that don't match well. This checks if the domain matches before continuing

* Add "RE:" for quotes where it's missing

* Fix no hashtag history in search

* Skip not implemented discovery and select search on Pleroma

* Set proper max account fields for Pleroma

* Use Pleroma's non-standard poll limits

* Mark notifications as read properly on Pleroma

* Akkoma bubble timeline

* Respect Reply Visibility preference on all timelines

* vertically center if hashtag has no history

* only open account search result if uri equals

* add getInstance and isPleroma methods

* change timelines api, support compatibility checks

---------

Co-authored-by: sk <sk22@mailbox.org>
2023-05-29 02:37:46 +02:00
taniamarquessilva
b3f25af923 Translated using Weblate (Portuguese (Portugal))
Currently translated at 100.0% (286 of 286 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/pt_PT/
2023-05-28 20:19:30 +00:00
taniamarquessilva
78c141e946 Translated using Weblate (Portuguese)
Currently translated at 14.6% (42 of 286 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/pt/
2023-05-28 20:19:30 +00:00
taniamarquessilva
83d36ce736 Translated using Weblate (Portuguese)
Currently translated at 52.9% (9 of 17 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/pt/
2023-05-28 20:19:30 +00:00
taniamarquessilva
b928357ff1 Translated using Weblate (Portuguese (Portugal))
Currently translated at 100.0% (286 of 286 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/pt_PT/
2023-05-28 20:19:30 +00:00
ihor_ck
c074bc57bc Translated using Weblate (Ukrainian)
Currently translated at 100.0% (286 of 286 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/uk/
2023-05-28 20:19:30 +00:00
Linerly
0e80c88b7d Translated using Weblate (Indonesian)
Currently translated at 100.0% (286 of 286 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/id/
2023-05-28 20:19:30 +00:00
Choukajohn
5ffa5b01fc Translated using Weblate (French)
Currently translated at 100.0% (286 of 286 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/fr/
2023-05-28 20:19:30 +00:00
gallegonovato
61d9929485 Translated using Weblate (Spanish)
Currently translated at 100.0% (286 of 286 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/es/
2023-05-28 20:19:30 +00:00
sk
231f19d113 ugly workaround for sk22#520
it's really, really ugly :(
2023-05-28 22:14:03 +02:00
Grishka
31c7116a15 Merge branch 'master' into m3_redesign
# Conflicts:
#	mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/HashtagStatusDisplayItem.java
2023-05-28 20:58:27 +03:00
sk
bb41f62db5 Merge remote-tracking branch 'upstream/master' 2023-05-28 19:55:27 +02:00
Gregory K
47edc3180b Merge pull request #586 from sk22/fix/hashtags-crash-akkoma
Fix crash when searching for Hashtags on Akkoma servers
2023-05-28 20:55:04 +03:00
sk
9939d99c4b Merge branch 'fix/hashtags-crash-akkoma' 2023-05-28 19:54:39 +02:00
sk
8053e8bb05 fix hashtag search crash on akkoma servers
closes mastodon#468
closes sk22#523
2023-05-28 19:51:29 +02:00
sk
b7e9380bc4 enable unspecified as default formatting option
closes sk22#521
2023-05-28 14:55:53 +02:00
Jacoco
83600087e1 Fix images being stretched on Pleroma (#522)
Closes sk22#488

* Update image bounds after load when metadata is null

* Fix broken image layout in some scenarios

* Transition when image dimensions update

* Replace blurhash with accent color on Pleroma

* fall back to solid color regardless of server

* use fragment's context instead of passing it down

---------

Co-authored-by: sk <sk22@mailbox.org>
2023-05-28 14:44:23 +02:00
Clyde
b3dd5a2279 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (286 of 286 strings)

Translation: Moshidon/values_sk
Translate-URL: https://translate.codeberg.org/projects/moshidon/values_sk/zh_Hans/
2023-05-28 12:27:27 +00:00
Clyde
f9a8e10a85 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (33 of 33 strings)

Translation: Moshidon/metadata
Translate-URL: https://translate.codeberg.org/projects/moshidon/metadata/zh_Hans/
2023-05-28 12:27:27 +00:00
Clyde
d982331e21 Translated using Weblate (Chinese (Simplified))
Currently translated at 94.9% (56 of 59 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/zh_Hans/
2023-05-28 12:27:27 +00:00
Andrewblasco
68dfab9a44 Translated using Weblate (Spanish)
Currently translated at 100.0% (59 of 59 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/es/
2023-05-28 12:27:27 +00:00
Andrewblasco
c4f736a3fb Translated using Weblate (Spanish)
Currently translated at 100.0% (286 of 286 strings)

Translation: Moshidon/values_sk
Translate-URL: https://translate.codeberg.org/projects/moshidon/values_sk/es/
2023-05-28 12:27:27 +00:00
Andrewblasco
b5abc86428 Translated using Weblate (Spanish)
Currently translated at 100.0% (59 of 59 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/es/
2023-05-28 12:27:27 +00:00
Andrewblasco
6b356c4dfd Translated using Weblate (Spanish)
Currently translated at 100.0% (48 of 48 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/es/
2023-05-28 12:27:27 +00:00
LucasGGamerM
9e6723be41 fix: fixes wrong margin on Settings Button views
This addresses a visual bug where a button item without an icon appears to be glued to the left side of the screen. This commit addresses that

cc: @sk22
2023-05-27 13:00:54 -03:00
Eugen Rochko
fe84dc4823 New translations strings.xml (Chinese Simplified) 2023-05-27 16:39:55 +02:00
LucasGGamerM
08023a104c fix: fix wrong window insets on instance rules and block list fragment 2023-05-27 09:54:58 -03:00
LucasGGamerM
fd97cc6e87 Merge pull request #203 from FineFindus/feat/instance-info-improvements
fix(instance-info): hide menu until loaded
2023-05-27 09:44:34 -03:00
LucasGGamerM
78e5f0f011 Merge pull request #202 from FineFindus/feat/filter-warning-click
feat: reveal filter warning on click
2023-05-27 09:41:02 -03:00
LucasGGamerM
73944675fa fix: fix compilation errors 2023-05-27 09:40:04 -03:00
LucasGGamerM
c6ded3d505 Merge remote-tracking branch 'megalodon_main/main'
# Conflicts:
#	mastodon/build.gradle
#	mastodon/src/main/java/org/joinmastodon/android/fragments/BaseStatusListFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/NotificationsListFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/ScheduledStatusListFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/StatusEditHistoryFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/model/Filter.java
#	mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/FileStatusDisplayItem.java
#	mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/StatusDisplayItem.java
#	mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/WarningFilteredStatusDisplayItem.java
#	mastodon/src/main/res/layout/display_item_file.xml
2023-05-27 09:31:27 -03:00
LucasGGamerM
45b97de615 feat: don't show changelog headers if changelog is empty 2023-05-27 09:16:58 -03:00
LucasGGamerM
ec11a5e8e3 feat: update visual appearance settings icon 2023-05-27 09:10:24 -03:00
LucasGGamerM
d71d17e5af feat: update mention reblogger automatically settings icon 2023-05-27 09:07:25 -03:00
LucasGGamerM
e49e485ba3 Merge pull request #183 from FineFindus/feat/settings-redesign
feat(settings): refactor and redesign
2023-05-27 08:58:38 -03:00
LucasGGamerM
2d4fc2166a feat: increase top padding in theme item for consistency 2023-05-27 08:55:04 -03:00
LucasGGamerM
84ba4ea999 feat: use correct background colors in settings 2023-05-27 08:46:04 -03:00
sk
c38eb545b1 use matched filter for determining warning title
fixes a bug where, when multiple filters apply, the
WarningFilteredStatusDisplayItem would not check if the warning applies to the
current context. now, matched filter is determined through the predicate
(though not exactly what a predicate is supposed to do, i guess) and passed
down to the WarningFilteredStatusDisplayItem. cc @LucasGGamerM
2023-05-27 13:09:36 +02:00
Grishka
5c480b37b3 Notifications M3 redesign (+ read marker support) 2023-05-27 13:31:01 +03:00
FineFindus
b2d4a5aab0 fix(instance.info): hide menu until loaded 2023-05-27 11:21:09 +02:00
FineFindus
201995849c feat: reveal filter warning on click 2023-05-27 11:12:43 +02:00
sk
1fc2f81dab fix creating posts on other people's account timelines
closes sk22#508
2023-05-27 01:50:10 +02:00
LucasGGamerM
69ddc95c2c fix crash when notification markers are null
This would happen when an account had 0 notifications and received one.
After which, the user would tap on the notification icon on the tab bar
and the app would crash.
2023-05-27 01:40:05 +02:00
sk
a6ac68499c use url as fallback for remote url 2023-05-27 01:37:10 +02:00
sk
c10d7cfee4 use remote url; file name as fallback for alt text 2023-05-27 01:32:49 +02:00
sk
f933bdbc53 button with ripple for files and instance picker 2023-05-27 01:13:32 +02:00
LucasGGamerM
274bca84d9 Add display item for unknown/file attachments
Co-authored-by: LucasGGamerM <lucassggabriel@gmail.com>
2023-05-27 01:11:26 +02:00
FineFindus
1e286dbc7a Merge branch 'feat/settings-redesign' of https://github.com/FineFindus/moshidon into feat/settings-redesign 2023-05-26 20:36:01 +02:00
FineFindus
724d872491 fix: remove theme transition
Removes the fade effect when changing themes, as took a long time to apply
2023-05-26 20:35:46 +02:00
LucasGGamerM
64d5f9190a fix: compilation problems
Uses show instead of see on strings_sk.xml
2023-05-26 15:34:20 -03:00
FineFindus
f1ab6833d3 feat: add content type setting
Re-add settings from 8b502b605c\#diff-29b258979e7004d7e5473b71e91747f57a36af0e0b07e0a119968a1e8e72669f
2023-05-26 20:22:53 +02:00
FineFindus
140395f3cd fix: use autoHideCompose variable 2023-05-26 20:14:21 +02:00
FineFindus
f922e028a7 feat(settings): invert default post-divider value 2023-05-26 20:13:09 +02:00
FineFindus
9aac0c007e feat(settings): invert post-divider setting 2023-05-26 20:13:08 +02:00
FineFindus
e682cae7e7 feat(settings/notifications): improve sub-header title 2023-05-26 20:13:08 +02:00
FineFindus
f14977ba24 feat(settings): add summary to reblog action 2023-05-26 20:13:08 +02:00
FineFindus
e8290e2f78 feat(settings): move reblog notificaiton to notification page 2023-05-26 20:13:08 +02:00
FineFindus
197110cfaf feat(settings): improve unlisted reply default title and summary 2023-05-26 20:13:08 +02:00
FineFindus
f320ac066c feat(settings): improve autoplay gif summary 2023-05-26 20:12:42 +02:00
FineFindus
78acb5e7ea feat(settings): invert double tab to swipe setting 2023-05-26 20:12:41 +02:00
FineFindus
a14e864731 feat(settings): allow complete button row to be clicked 2023-05-26 20:12:41 +02:00
FineFindus
a87da87aad refactor(settings): adjust amoled summary 2023-05-26 20:12:41 +02:00
FineFindus
8befbb5a62 refactor(settings): adjust icon color 2023-05-26 20:12:41 +02:00
FineFindus
28893bc50b refactor(settings): remove unused code 2023-05-26 20:12:34 +02:00
FineFindus
b73ef28f12 feat(settings): move interaction count to timeline page 2023-05-26 20:00:51 +02:00
FineFindus
a71dc7f481 feat(settings): move uniform icon to notifications page 2023-05-26 20:00:51 +02:00
FineFindus
de4e7c1822 refactor(settings/about): use local var 2023-05-26 20:00:51 +02:00
FineFindus
62090475f9 fix(settings): remove duplicated auto-hide compose 2023-05-26 20:00:46 +02:00
FineFindus
3c8715a7c4 feat(settings): add giant header to all subpages 2023-05-26 19:55:17 +02:00
FineFindus
4e188503a2 feat(settings): add summary to ambiguous settings 2023-05-26 19:55:14 +02:00
FineFindus
6fb7e97f13 feat(settings): use secondary text color for summary 2023-05-26 19:54:36 +02:00
FineFindus
80c9c591fc feat(settings): add updater 2023-05-26 19:54:36 +02:00
FineFindus
992fb5fefe feat(settings): add giant header 2023-05-26 19:54:35 +02:00
FineFindus
f7c76f7503 feat(settings): add summary label to button 2023-05-26 19:54:32 +02:00
FineFindus
e94364ecf6 feat(settings): use default text size for switch summary 2023-05-26 19:54:05 +02:00
FineFindus
1fab3d3743 feat(settings): add summary label to switch 2023-05-26 19:54:05 +02:00
FineFindus
35477055a9 refactor(settings): add red header item 2023-05-26 19:54:05 +02:00
FineFindus
e585f1df29 refactor(settings): move about to about page 2023-05-26 19:54:05 +02:00
FineFindus
6311d18751 refactor: move account and instance setttings to account page 2023-05-26 19:54:05 +02:00
FineFindus
d29eef51ca refactor: move miscellanious settings 2023-05-26 19:54:05 +02:00
FineFindus
c9692ef27b refactor: move notifications to NotificationsFragment 2023-05-26 19:54:05 +02:00
FineFindus
c36d3e9011 refactor: move timelines to TimelineFragment 2023-05-26 19:54:04 +02:00
FineFindus
9409bbb9b2 refactor: add compose behaviour to behaviour page 2023-05-26 19:54:04 +02:00
FineFindus
3497747015 refactor: move behaviour settings to behaviour page 2023-05-26 19:53:55 +02:00
FineFindus
6343da1410 refactor: use SettingsCategory to move between pages 2023-05-26 19:41:13 +02:00
FineFindus
78a0c60600 fix: move method to fix compiler error 2023-05-26 19:41:13 +02:00
LucasGGamerM
ea152234a9 feat: trying to add the theme settings. Still missing some things
What is an enclosed class? What am I missing?
2023-05-26 19:41:13 +02:00
LucasGGamerM
03612fcf64 feat: add settings category view holder
Also adds a small proof of concept
2023-05-26 19:41:13 +02:00
LucasGGamerM
a6a67512f4 feat: add all previously missing view holders
This includes: Updater View holder, theme view holder and notification policy view holder
2023-05-26 19:41:13 +02:00
FineFindus
dc9e977d40 refactor: add abstract settingsbase fragment 2023-05-26 19:41:13 +02:00
FineFindus
5657df8db2 feat: move Settingsfragment to settings folder 2023-05-26 19:41:07 +02:00
sk
6abfe6ddd7 add unit tests for status filter predicate 2023-05-26 17:02:39 +02:00
sk
ab7489a049 bump version 2023-05-26 02:37:32 +02:00
sk
a6fd6ae135 add javadoc 2023-05-26 02:37:25 +02:00
Espasant3
b30d4a025f Translated using Weblate (Galician)
Currently translated at 99.6% (274 of 275 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/gl/
2023-05-26 00:16:40 +00:00
Daudix_UFO
5b747bfc74 Translated using Weblate (Russian)
Currently translated at 100.0% (275 of 275 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/ru/
2023-05-26 00:16:40 +00:00
gallegonovato
a410d19114 Translated using Weblate (Spanish)
Currently translated at 100.0% (275 of 275 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/es/
2023-05-26 00:16:39 +00:00
gicorada
a8589cc5b0 Translated using Weblate (Italian)
Currently translated at 100.0% (17 of 17 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/it/
2023-05-26 00:16:39 +00:00
Eryk Michalak
b057c9f7a8 Translated using Weblate (Polish)
Currently translated at 100.0% (17 of 17 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/pl/
2023-05-26 00:16:39 +00:00
ihor_ck
96e4a4933c Translated using Weblate (Ukrainian)
Currently translated at 100.0% (275 of 275 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/uk/
2023-05-26 00:16:39 +00:00
Eryk Michalak
630064500d Translated using Weblate (Polish)
Currently translated at 100.0% (275 of 275 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/pl/
2023-05-26 00:16:39 +00:00
gicorada
9543294996 Translated using Weblate (Italian)
Currently translated at 100.0% (275 of 275 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/it/
2023-05-26 00:16:39 +00:00
Linerly
56e9cc3406 Translated using Weblate (Indonesian)
Currently translated at 100.0% (275 of 275 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/id/
2023-05-26 00:16:39 +00:00
Choukajohn
be569cbe72 Translated using Weblate (French)
Currently translated at 100.0% (275 of 275 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/fr/
2023-05-26 00:16:39 +00:00
sk
99f0817bdb generalize filtering logic 2023-05-26 02:07:50 +02:00
sk
220cd35d82 fix context not checked for warnings
closes sk22#518
2023-05-25 21:25:09 +02:00
sk
07f4ef1697 remove unused imports 2023-05-25 21:22:27 +02:00
sk
f20732ddc2 Merge remote-tracking branch 'upstream/master' 2023-05-25 20:27:23 +02:00
sk
b1e0dc5843 show compose button when switching tab
closes sk22#506
2023-05-25 20:26:59 +02:00
Grishka
92335d8678 Merge branch 'master' into m3_redesign 2023-05-25 21:02:17 +03:00
Gregory K
285eb25706 Merge pull request #584 from sk22/fix-restored-tab-selection
Fix wrong tab being selected on restore
2023-05-25 21:00:12 +03:00
sk
ec556511e6 Merge branch 'fix-restored-tab-selection' 2023-05-25 19:57:34 +02:00
sk
85c3d9f65f fix wrong tab being selected on restore 2023-05-25 19:51:45 +02:00
sk
a7ebadf269 increase read timeout
re: sk22#392
2023-05-25 15:11:40 +02:00
sk
94c09d46c2 fix contentType being a required field
re: sk22#516
2023-05-25 14:53:26 +02:00
LucasGGamerM
889fbc688d fix: removes @RequiredField for contentType
Removes that, as its null on mastodon, and makes editing statuses impossible
2023-05-25 11:45:32 +00:00
LucasGGamerM
85d971242e feat: use less margin on compose screen bottom view
This is due to the new option to use post content types uses a new icon in there, making it cram the post button into the side. Which is not good
2023-05-23 20:20:14 -03:00
LucasGGamerM
23f82197c6 Merge pull request #200
Feat: Instance info
2023-05-23 20:08:36 -03:00
LucasGGamerM
b4b16e2f37 feat: use Moshidon user agent instead of Megalodon's 2023-05-23 19:49:34 -03:00
LucasGGamerM
2d838a8a23 Merge branch 'master' of https://github.com/LucasGGamerM/moshidon 2023-05-23 19:47:43 -03:00
LucasGGamerM
7dab63cfe8 fix: using new string name instead of old one to allow compilation
Git was screwing with me, so I copied the file from their repo and yanked it in here
2023-05-23 19:42:33 -03:00
LucasGGamerM
6548751bb0 Merge remote-tracking branch 'megalodon_weblate/main'
# Conflicts:
#	mastodon/src/main/res/values-es-rES/strings_sk.xml
#	mastodon/src/main/res/values-pl-rPL/strings_sk.xml
#	mastodon/src/main/res/values-uk-rUA/strings_sk.xml
2023-05-23 19:31:49 -03:00
LucasGGamerM
65c158391f Merge remote-tracking branch 'megalodon_main/main'
# Conflicts:
#	mastodon/src/main/java/org/joinmastodon/android/fragments/SettingsFragment.java
#	mastodon/src/main/res/layout/fragment_compose.xml
2023-05-23 19:30:52 -03:00
FineFindus
556fc4d31e feat(instance-info): use about url 2023-05-23 21:55:26 +02:00
FineFindus
c673f08aec fix(instance-info): race condition for collapsing description 2023-05-23 21:39:33 +02:00
FineFindus
818024d8dd fix: instance info refresh not working 2023-05-23 21:34:31 +02:00
FineFindus
cb3b893f72 refactor: move fake attachment to attachment class 2023-05-23 20:02:43 +02:00
FineFindus
f482b4bfe9 feat: add weekly activities api request 2023-05-23 18:43:24 +02:00
FineFindus
333c47339d fix(instance-info): remove space below description 2023-05-23 16:07:07 +02:00
FineFindus
a9283bfec8 fix(instance-info): only collapse long descriptions 2023-05-23 16:05:16 +02:00
Grishka
1dcb5717ea Fix #553 2023-05-23 12:56:49 +03:00
Grishka
36f1a557d7 Fix default tab in profile 2023-05-23 12:17:26 +03:00
sk
f6f08d176c change user-agent string 2023-05-23 10:26:48 +02:00
FineFindus
4c9f29e949 refactor(instance-info): remove unused code 2023-05-22 22:15:28 +02:00
FineFindus
4ff5136652 feat(instance-info): show- egistration status 2023-05-22 22:05:25 +02:00
FineFindus
56835b4f2d feat: show blocked domains 2023-05-22 21:37:56 +02:00
FineFindus
c43f734101 feat(instance-info): replace moderated server icon 2023-05-22 20:29:05 +02:00
FineFindus
d4e1850d8c feat(instance-info): increase max description height 2023-05-22 20:24:55 +02:00
FineFindus
0b08072dfc feat(instance-info): add options menu 2023-05-22 20:21:11 +02:00
sk
66cdd63496 use fedinuke block list
closes sk22#511
2023-05-22 18:04:37 +02:00
Jacoco
8b502b605c Alternative content types (#516)
* Akkoma content types

* Default content type preference

* per-account content types, compatible with glitch

* disable content types by default, change icon

* persist content type to state

* update string

* fall back to plain text if formatting enabled

---------

Co-authored-by: sk <sk22@mailbox.org>
2023-05-22 17:56:50 +02:00
FineFindus
936a86acd7 feat: collapse long description 2023-05-22 16:41:34 +02:00
Grishka
bd7157c172 Reporting M3 redesign 2023-05-22 17:08:04 +03:00
FineFindus
64fc052c55 feat: show extended description in info 2023-05-22 14:52:04 +02:00
FineFindus
9897b8bfcd feat: add instance info fragment 2023-05-22 14:06:00 +02:00
LucasGGamerM
bcb50a9dd1 docs: add roadmap link to readme 2023-05-22 08:48:24 -03:00
LucasGGamerM
0b0775a86e Translated using Weblate (Portuguese (Brazil))
Currently translated at 96.0% (264 of 275 strings)

Translation: Moshidon/values_sk
Translate-URL: https://translate.codeberg.org/projects/moshidon/values_sk/pt_BR/
2023-05-21 13:25:17 +00:00
FineFindus
73253f5f64 Translated using Weblate (German)
Currently translated at 97.9% (47 of 48 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/de/
2023-05-21 13:25:17 +00:00
FineFindus
591b1cd9bf Translated using Weblate (German)
Currently translated at 100.0% (33 of 33 strings)

Translation: Moshidon/metadata
Translate-URL: https://translate.codeberg.org/projects/moshidon/metadata/de/
2023-05-21 13:25:16 +00:00
Espasant3
47a5d18ee0 Translated using Weblate (Galician)
Currently translated at 99.6% (274 of 275 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/gl/
2023-05-20 14:42:56 +00:00
Daudix_UFO
b3f43804b0 Translated using Weblate (Russian)
Currently translated at 100.0% (275 of 275 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/ru/
2023-05-20 14:42:56 +00:00
gallegonovato
139ec08d9d Translated using Weblate (Spanish)
Currently translated at 100.0% (275 of 275 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/es/
2023-05-20 14:42:56 +00:00
gicorada
bc8846c351 Translated using Weblate (Italian)
Currently translated at 100.0% (17 of 17 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/it/
2023-05-20 14:42:56 +00:00
Eryk Michalak
85066f8ae6 Translated using Weblate (Polish)
Currently translated at 100.0% (17 of 17 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/pl/
2023-05-20 14:42:56 +00:00
ihor_ck
1aec319e1c Translated using Weblate (Ukrainian)
Currently translated at 100.0% (275 of 275 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/uk/
2023-05-20 14:42:56 +00:00
Eryk Michalak
9848a94853 Translated using Weblate (Polish)
Currently translated at 100.0% (275 of 275 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/pl/
2023-05-20 14:42:56 +00:00
gicorada
18ed3b44b4 Translated using Weblate (Italian)
Currently translated at 100.0% (275 of 275 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/it/
2023-05-20 14:42:56 +00:00
Linerly
a4043cc0e5 Translated using Weblate (Indonesian)
Currently translated at 100.0% (275 of 275 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/id/
2023-05-20 14:42:56 +00:00
Choukajohn
2b94d0c147 Translated using Weblate (French)
Currently translated at 100.0% (275 of 275 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/fr/
2023-05-20 14:42:56 +00:00
LucasGGamerM
7e6395192b Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (48 of 48 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/pt_BR/
2023-05-20 13:31:11 +00:00
LucasGGamerM
31db1cae7c Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (48 of 48 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/pt_BR/
2023-05-20 13:29:12 +00:00
Linerly
f2c80a92c4 Translated using Weblate (Indonesian)
Currently translated at 21.2% (7 of 33 strings)

Translation: Moshidon/metadata
Translate-URL: https://translate.codeberg.org/projects/moshidon/metadata/id/
2023-05-20 13:26:05 +00:00
Linerly
2cd107b400 Translated using Weblate (Indonesian)
Currently translated at 65.2% (30 of 46 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/id/
2023-05-20 13:26:04 +00:00
ca
eef4f42203 Translated using Weblate (Catalan)
Currently translated at 60.8% (28 of 46 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/ca/
2023-05-20 13:26:04 +00:00
nitrogenez47ab3e44720c4675
7eba69f574 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (275 of 275 strings)

Translation: Moshidon/values_sk
Translate-URL: https://translate.codeberg.org/projects/moshidon/values_sk/uk/
2023-05-20 13:26:04 +00:00
Andrewblasco
cd226125cd Translated using Weblate (Spanish)
Currently translated at 100.0% (46 of 46 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/es/
2023-05-20 13:26:04 +00:00
Pegasus89
1f543b4aa5 Translated using Weblate (Croatian)
Currently translated at 94.5% (260 of 275 strings)

Translation: Moshidon/values_sk
Translate-URL: https://translate.codeberg.org/projects/moshidon/values_sk/hr/
2023-05-20 13:26:04 +00:00
OwenP
bd752824d9 Translated using Weblate (French)
Currently translated at 71.7% (33 of 46 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/fr/
2023-05-20 13:26:04 +00:00
Tyketc
a67dcbbf66 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (275 of 275 strings)

Translation: Moshidon/values_sk
Translate-URL: https://translate.codeberg.org/projects/moshidon/values_sk/zh_Hans/
2023-05-20 13:26:04 +00:00
Tyketc
e0c77d3399 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (33 of 33 strings)

Translation: Moshidon/metadata
Translate-URL: https://translate.codeberg.org/projects/moshidon/metadata/zh_Hans/
2023-05-20 13:26:04 +00:00
Tyketc
caf3ab5ce1 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (46 of 46 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/zh_Hans/
2023-05-20 13:26:04 +00:00
Eryk Michalak
e549636645 Translated using Weblate (Polish)
Currently translated at 100.0% (275 of 275 strings)

Translation: Moshidon/values_sk
Translate-URL: https://translate.codeberg.org/projects/moshidon/values_sk/pl/
2023-05-20 13:26:04 +00:00
Andrewblasco
3e2c3f40c7 Translated using Weblate (Spanish)
Currently translated at 100.0% (275 of 275 strings)

Translation: Moshidon/values_sk
Translate-URL: https://translate.codeberg.org/projects/moshidon/values_sk/es/
2023-05-20 13:26:04 +00:00
LucasGGamerM
40e20ead44 Merge pull request #195
feat: hide reblogs count on non-rebloggable status
2023-05-20 10:05:32 -03:00
LucasGGamerM
dfeba71abe Merge pull request #196 from FineFindus/feat/unfollow-confirmation
Feat: show unfollow confirmation dialog
2023-05-20 09:54:06 -03:00
FineFindus
2c0ec28803 Panic responder (#512)
* feat: add panic responder

* refactor: logOut before removing session

* fix(panic): close app after logOut to avoid crash

* build: reset gradle.properties
2023-05-20 13:20:25 +02:00
Eugen Rochko
2e1795dc6f New translations strings.xml (Russian) 2023-05-20 13:04:15 +02:00
LucasGGamerM
74b06a4997 fix: crash when account.note field is null
This sometimes happens on calckey. And this fixes the crash
2023-05-19 11:04:39 -03:00
LucasGGamerM
346610dd04 fix: make note not a RequiredField in account
This was making some profiles with no description not load under CalcKey
2023-05-18 20:43:00 -03:00
LucasGGamerM
37cdc7116d Merge branch 'master' of https://github.com/LucasGGamerM/moshidon 2023-05-16 18:33:05 -03:00
LucasGGamerM
d403f4ef01 Merge remote-tracking branch 'megalodon_main/main'
# Conflicts:
#	mastodon/build.gradle
#	mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/MediaGridStatusDisplayItem.java
2023-05-16 18:26:23 -03:00
Eugen Rochko
cd1be782fa New translations strings.xml (Armenian) 2023-05-16 18:44:56 +02:00
FineFindus
7f7eed1dec fix: add missing string 2023-05-16 18:26:24 +02:00
FineFindus
4843d574ca feat: show confirmation dialog on unfollow 2023-05-16 18:21:10 +02:00
Eugen Rochko
67059f3d71 New translations strings.xml (Armenian) 2023-05-16 17:30:41 +02:00
FineFindus
0f0291074e refactor: remove seding duplicated follow request 2023-05-16 16:52:52 +02:00
LucasGGamerM
4e143abfb9 fix: fix compilation problem caused by typo
I did the latest commits from my chromebook, which I accidentally typed the wrong variable name.
2023-05-16 11:29:38 -03:00
LucasGGamerM
558c5fba56 fix: fix crash on profile when saving a note fails
This fixes a crash on calckey, where notes dont exist
2023-05-16 11:24:37 -03:00
FineFindus
e50df3ea6d feat: hide bossts on non-boostable status 2023-05-16 16:18:56 +02:00
FineFindus
4383b11947 refactor: move bosst check to status 2023-05-16 16:18:02 +02:00
LucasGGamerM
22209efc37 docs(faq): add Moshidon for iOS question
Many people have asked me about the possibility of Moshidon for iOS. This F.A.Q. entry addresses that
2023-05-16 08:46:48 -03:00
LucasGGamerM
c3b5bb409b fix: fix crash on calckey on profile reload
Adds null check in account avatar/header load function
2023-05-15 19:54:13 -03:00
Eugen Rochko
15f4d3326b New translations strings.xml (Russian) 2023-05-15 08:47:41 +02:00
Jacoco
a9ab9cb249 Fix crashes on Calckey and GoToSocial (#515)
* Fix crashes on calckey and gts

* Use url if previewUrl is null
2023-05-14 23:26:03 +02:00
LucasGGamerM
ac2e7cde41 chore: remove unused files
Idk how it got there, but its now gone :D
2023-05-14 14:39:39 -03:00
LucasGGamerM
3b7e11ba96 feat: fix wrong order in ownProfile menu 2023-05-14 11:23:39 -03:00
LucasGGamerM
889fff5103 fix: fix crash on TrendingHashtagsFragment when Hashtah history is null
This is the same fix applied for akkoma instances in 42ae74f1a7
It also applies for calckey instances
2023-05-14 09:24:49 -03:00
LucasGGamerM
84ae1aad56 feat: remove requiredField for header account attribute
Sometimes null on calckey, which would make the search not work
2023-05-14 08:55:50 -03:00
LucasGGamerM
e9a2fae600 feat: increase padding between FileStatusDisplayItems
This is for better consistency on the notifications tab, and it also looks better overall
Don't worry @sk22, I shall make a PR for it all sometime in the near future
2023-05-13 21:45:52 -03:00
LucasGGamerM
d32f03a067 fix: fixes crash on calckey where markers are null 2023-05-13 21:29:59 -03:00
LucasGGamerM
7020018bb7 fix: fixes remote attachments pointing to unexistent file in local server
This fixes broken links to file attachments from calckey accounts on mastodon instances
2023-05-13 21:29:59 -03:00
LucasGGamerM
0cd0b9d580 fix: fix crashes when previewUrl is null on calckey 2023-05-13 21:29:55 -03:00
LucasGGamerM
3fda9e9eab feat: add file attachments view
This also fixes crashes on Calckey due to now being able to handle any type of attachment.
@sk22 this is also great for you
2023-05-13 21:29:16 -03:00
Eugen Rochko
e65404a466 New translations strings.xml (Dutch) 2023-05-13 20:26:36 +02:00
Eugen Rochko
3d47d1b4db New translations full_description.txt (Dutch) 2023-05-13 19:05:00 +02:00
Eugen Rochko
d1749ab610 New translations strings.xml (Dutch) 2023-05-13 19:04:59 +02:00
Eugen Rochko
806c264686 New translations strings.xml (Vietnamese) 2023-05-13 17:46:17 +02:00
Eugen Rochko
34a9cb5a74 New translations strings.xml (Dutch) 2023-05-13 17:46:16 +02:00
Eugen Rochko
64fad2e871 New translations strings.xml (Vietnamese) 2023-05-13 16:36:00 +02:00
sk
961c69b525 Merge remote-tracking branch 'upstream/master' 2023-05-13 15:15:00 +02:00
sk
c70f393559 account card layout adjustments 2023-05-13 15:13:43 +02:00
sk
9abdc174f4 guarantee space for display name in header
closes sk22#513
2023-05-13 14:07:44 +02:00
LucasGGamerM
2e5bfa1d9c fix: NPE when instance is null and attempts to get new notifications
For some weird reason, someone saw a pixelfed instance return null as the instance, causing a crash on the updateNotificationsBadge method. This reminds me of why java is such a shit language
2023-05-13 13:37:19 +02:00
Grishka
34a2af8429 Compose M3 redesign: custom emoji keyboard 2023-05-13 04:27:12 +03:00
Eugen Rochko
9c89c26097 New translations strings.xml (Dutch) 2023-05-13 01:52:41 +02:00
Eugen Rochko
e3b6a5d389 New translations strings.xml (Dutch) 2023-05-13 00:57:05 +02:00
Eugen Rochko
0fb54efde5 New translations strings.xml (Dutch) 2023-05-12 23:58:21 +02:00
Eugen Rochko
a4a3f32dba New translations strings.xml (Dutch) 2023-05-12 22:45:52 +02:00
Grishka
15883f2138 Compose: language selection 2023-05-12 22:21:21 +03:00
Eugen Rochko
03a1e29e0c New translations strings.xml (Dutch) 2023-05-12 19:43:17 +02:00
Eugen Rochko
eda9ff272b New translations strings.xml (Dutch) 2023-05-12 18:35:16 +02:00
Grishka
89501271ce Compose autocomplete improvements 2023-05-12 03:39:46 +03:00
Eugen Rochko
b3728e06ac New translations strings.xml (Swedish) 2023-05-11 12:28:06 +02:00
Grishka
968a6ea9b3 Merge branch 'master' into m3_redesign
# Conflicts:
#	mastodon/build.gradle
2023-05-11 05:49:34 +03:00
Grishka
33cbd85e19 Bump version 2023-05-11 05:42:40 +03:00
Grishka
8cb1f3f387 Merge branch 'l10n_master' 2023-05-11 05:40:54 +03:00
Grishka
e253d8f4f3 Pull user row into a separate view holder & update its design 2023-05-11 03:45:23 +03:00
Eugen Rochko
3f0c6fcec5 New translations strings.xml (Icelandic) 2023-05-10 13:59:12 +02:00
Grishka
cfabe47e10 Select "timeline" tab in profiles by default 2023-05-10 02:10:19 +03:00
Grishka
d3fe7857b7 Move media & poll stuff out of ComposeFragment to separate classes 2023-05-09 23:59:56 +03:00
Grishka
642e96a439 Compose M3 redesign wip 2023-05-09 21:34:42 +03:00
LucasGGamerM
697262bb47 fix(custom-local-timelines): fix crash when lookup returns null
This happens when the custom local timeline is from an instance which is defederated from your home instance, which makes looking up the status impossible.
2023-05-08 17:22:31 -03:00
Eugen Rochko
797cf893da New translations strings.xml (Italian) 2023-05-08 15:58:22 +02:00
Eugen Rochko
a3564b70e1 New translations strings.xml (Ukrainian) 2023-05-08 07:52:51 +02:00
Eugen Rochko
43004307b8 New translations strings.xml (Ukrainian) 2023-05-08 06:34:46 +02:00
LucasGGamerM
5102fa2699 feat: hide changelog header when update changelog is empty 2023-05-07 15:40:18 -03:00
Eugen Rochko
acd1e4ced3 New translations full_description.txt (Scottish Gaelic) 2023-05-06 07:17:18 +02:00
Eugen Rochko
6717070f93 New translations strings.xml (Scottish Gaelic) 2023-05-06 07:17:17 +02:00
LucasGGamerM
65907742a6 fix: fix nightly auto-updater 2023-05-05 16:43:43 -03:00
LucasGGamerM
6ef55f8b31 documentation: fix wrong formatting in readme 2023-05-05 09:29:42 -03:00
LucasGGamerM
313448c42a Merge pull request #188 from LucasGGamerM/documentation/readme-revamp
decumentation: update readme
2023-05-05 09:17:21 -03:00
LucasGGamerM
4883f24fc7 fix(noteEdit): fix fab remaining clickable after hiding in noteEdit 2023-05-05 09:05:54 -03:00
LucasGGamerM
be5ed6e224 documentation: add FAQ link in readme 2023-05-05 08:58:56 -03:00
LucasGGamerM
3b32fe3663 documentation: move F.A.Q to separate file 2023-05-05 08:54:28 -03:00
LucasGGamerM
e15b752bad documentation: update links to matrix chatroom
Use floss.social links instead of matrix.org ones
2023-05-05 08:50:15 -03:00
LucasGGamerM
5928cf675a documentation: update features and behavior sections on readme 2023-05-05 08:46:39 -03:00
LucasGGamerM
7655a5a3ae documentation: update release variants section in readme 2023-05-05 08:24:03 -03:00
Eugen Rochko
387499ae49 New translations strings.xml (Vietnamese) 2023-05-05 08:49:53 +02:00
Eugen Rochko
8ab140c55d New translations strings.xml (Japanese) 2023-05-04 22:50:38 +02:00
Eugen Rochko
914abb95dd New translations strings.xml (Japanese) 2023-05-04 21:34:45 +02:00
LucasGGamerM
b5e0fca9c0 documentation: removing another exclamation mark 2023-05-04 07:36:10 -03:00
LucasGGamerM
bac6f58115 documentation: remove unnecessary exclamation marks on README 2023-05-04 07:35:21 -03:00
Eugen Rochko
5360c0f0f7 New translations strings.xml (Greek) 2023-05-04 01:44:50 +02:00
Eugen Rochko
243d803b51 New translations strings.xml (Turkish) 2023-05-03 23:31:14 +02:00
Eugen Rochko
b343fe3835 New translations strings.xml (Turkish) 2023-05-03 22:27:36 +02:00
Eugen Rochko
3c42c1120f New translations strings.xml (Japanese) 2023-05-03 17:42:48 +02:00
Eugen Rochko
ad840dcef6 New translations strings.xml (Japanese) 2023-05-03 16:47:22 +02:00
LucasGGamerM
e2a20f9599 documentation: remove over used bold sub texts 2023-05-03 11:16:58 -03:00
LucasGGamerM
900823e0dd documentation: add reminder to add alt text feature header 2023-05-03 11:13:21 -03:00
LucasGGamerM
918bda54d6 documentation: move F.A.Q to the bottom.
TODO: eventually move the F.A.Q into its own page
2023-05-03 11:06:52 -03:00
LucasGGamerM
cc1d1180e8 documentation: add translate feature header on readme 2023-05-03 11:02:48 -03:00
LucasGGamerM
006c0d00f2 documentation: add nightly to the readme app variants 2023-05-03 10:53:04 -03:00
LucasGGamerM
741a55110a documentation: add remote followers header in readme 2023-05-03 10:39:52 -03:00
LucasGGamerM
f7dcb754ed documentation: remove duplicate material you header
This removed the material you header, and instead move it to the color themes section
2023-05-03 10:25:10 -03:00
LucasGGamerM
f5e50bf668 decumentation: update readme
Updates custom local timelines feature header in readme
2023-05-03 10:21:08 -03:00
LucasGGamerM
4ad895ab71 Revert "fix(custom-local-timelines): fix inconsistent actions"
Reverting this due to realization I did it the other way due to it being better
2023-05-03 08:57:22 -03:00
LucasGGamerM
0fccd0ab37 fix(custom-local-timelines): fix inconsistent actions
This fixes a "bug" where you would favorite a post, then reload the page, and favorite the post again, your favorite would not "count". As in, you would click to favorite, and the favorite would just stay as is
2023-05-03 08:36:16 -03:00
Eugen Rochko
f73072d95e New translations strings.xml (Spanish) 2023-05-03 01:08:32 +02:00
Eugen Rochko
95cb9b5079 New translations strings.xml (Thai) 2023-05-02 21:12:14 +02:00
Eugen Rochko
c6684d3c9b New translations strings.xml (Thai) 2023-05-02 19:41:48 +02:00
Eugen Rochko
5c5989d8c0 New translations strings.xml (Chinese Traditional) 2023-05-02 18:13:38 +02:00
Eugen Rochko
60e92d30b0 New translations strings.xml (Italian) 2023-05-02 14:58:27 +02:00
Eugen Rochko
8bf8e3f86b New translations strings.xml (Slovenian) 2023-05-02 00:17:51 +02:00
LucasGGamerM
4fc6a8a2a5 Merge pull request #185
fix(translation): use lookUp status id for request
2023-05-01 17:20:32 -03:00
Eugen Rochko
891ee2d06b New translations strings.xml (Indonesian) 2023-05-01 21:04:03 +02:00
Eugen Rochko
b450bc7ae8 New translations strings.xml (Icelandic) 2023-05-01 21:04:02 +02:00
Eugen Rochko
4ca1e0d5db New translations strings.xml (Vietnamese) 2023-05-01 21:04:01 +02:00
Eugen Rochko
859213dd9e New translations strings.xml (Chinese Simplified) 2023-05-01 21:04:01 +02:00
Eugen Rochko
ad2857791d New translations strings.xml (Turkish) 2023-05-01 21:03:59 +02:00
Eugen Rochko
497827f2e2 New translations strings.xml (Slovenian) 2023-05-01 21:03:57 +02:00
Eugen Rochko
967e333022 New translations strings.xml (Japanese) 2023-05-01 21:03:54 +02:00
Eugen Rochko
8df1406006 New translations strings.xml (Dutch) 2023-05-01 21:03:46 +02:00
Eugen Rochko
4af42fafdc New translations strings.xml (Russian) 2023-05-01 21:03:45 +02:00
Eugen Rochko
a9e6a452c1 New translations strings.xml (Galician) 2023-05-01 21:03:43 +02:00
Eugen Rochko
a4a4632397 New translations strings.xml (Chinese Traditional) 2023-05-01 21:03:42 +02:00
Eugen Rochko
421f39e414 New translations strings.xml (Italian) 2023-05-01 21:03:41 +02:00
Eugen Rochko
f8121e2dc4 New translations strings.xml (German) 2023-05-01 21:03:41 +02:00
Eugen Rochko
b1784fc51c New translations strings.xml (Danish) 2023-05-01 21:03:40 +02:00
Eugen Rochko
96db0d7de7 New translations strings.xml (Greek) 2023-05-01 21:03:39 +02:00
Eugen Rochko
3837ed9cb1 New translations strings.xml (Thai) 2023-05-01 21:03:38 +02:00
Eugen Rochko
2be789a43c New translations strings.xml (Spanish) 2023-05-01 21:03:37 +02:00
Grishka
2b8451e045 Merge branch 'master' into m3_redesign 2023-05-01 21:38:31 +03:00
Grishka
fd8d96169a Update string 2023-05-01 21:38:16 +03:00
FineFindus
397d768f3a fix(translation): use lookUp status id for request 2023-05-01 17:50:48 +02:00
Eugen Rochko
1562dc32c1 New translations strings.xml (Dutch) 2023-05-01 13:44:56 +02:00
Grishka
62074e554a Account switcher M3 redesign 2023-05-01 13:43:00 +03:00
Grishka
0434cda2da Thread view M3 redesign 2023-04-30 23:04:45 +03:00
LucasGGamerM
f76eba894a feat(search): show hashtag subtitles even if item.history is null 2023-04-29 17:12:35 -03:00
LucasGGamerM
42ae74f1a7 fix(search): crash on akkoma where hashtag histories arent present 2023-04-29 16:53:58 -03:00
LucasGGamerM
9d09a904ab build: fixing debug build with wrong resources 2023-04-29 16:38:14 -03:00
LucasGGamerM
5366c92b4d build: fixing wrong drawables for github release 2023-04-28 16:26:17 -03:00
LucasGGamerM
c047c53aac build: bumping version name from 1.2.0 to 1.3.0
I forgot to do it
2023-04-28 16:05:12 -03:00
LucasGGamerM
489a49ca40 build: bump version number 2023-04-28 15:53:46 -03:00
LucasGGamerM
ed44a4dac4 Merge remote-tracking branch 'weblate/master' 2023-04-28 15:53:11 -03:00
nitrogenez47ab3e44720c4675
dc5c2dd907 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (274 of 274 strings)

Translation: Moshidon/values_sk
Translate-URL: https://translate.codeberg.org/projects/moshidon/values_sk/uk/
2023-04-28 18:51:54 +00:00
Eryk Michalak
cd86d04c9f Translated using Weblate (Polish)
Currently translated at 100.0% (274 of 274 strings)

Translation: Moshidon/values_sk
Translate-URL: https://translate.codeberg.org/projects/moshidon/values_sk/pl/
2023-04-28 18:51:54 +00:00
Andrewblasco
d0c64fcdf5 Translated using Weblate (Spanish)
Currently translated at 100.0% (274 of 274 strings)

Translation: Moshidon/values_sk
Translate-URL: https://translate.codeberg.org/projects/moshidon/values_sk/es/
2023-04-28 18:51:54 +00:00
nitrogenez47ab3e44720c4675
dfff3b8bcf Translated using Weblate (Ukrainian)
Currently translated at 100.0% (46 of 46 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/uk/
2023-04-28 18:51:54 +00:00
Eugen Rochko
38f377ca09 New translations full_description.txt (Armenian) 2023-04-28 20:21:00 +02:00
Eugen Rochko
cc28bba884 New translations strings.xml (Armenian) 2023-04-28 20:20:59 +02:00
LucasGGamerM
4e13f868fd fix(notificationsListFragment): fix crash when notification markers are null
This would happen when an account had 0 notifications and received one. After which, the user would tap on the notification icon on the tab bar and the app would crash.
Merge this @sk22, as this is a thing that might also happen on megalodon
2023-04-28 15:10:14 -03:00
LucasGGamerM
251ffbba8d feat: add follow back notification action 2023-04-28 15:00:34 -03:00
Eugen Rochko
beb3081918 New translations strings.xml (Armenian) 2023-04-28 19:06:20 +02:00
Eugen Rochko
1b3c9106b5 New translations strings.xml (Russian) 2023-04-28 09:05:19 +02:00
Eugen Rochko
385b91761b New translations strings.xml (Portuguese, Brazilian) 2023-04-28 02:45:25 +02:00
LucasGGamerM
01ae9ba7f5 fix: re-add missing drawable
This is the second commit for that, now I added it to git
2023-04-27 15:40:58 -03:00
LucasGGamerM
df1df28e23 fix: use enableAutoFabHide instead of autoFabHide 2023-04-27 15:35:53 -03:00
LucasGGamerM
23b2603a5f refactor: change withComposeButton to wantsComposeButton 2023-04-27 15:33:46 -03:00
LucasGGamerM
1e6dadd7ab Merge remote-tracking branch 'megalodon_main/main'
# Conflicts:
#	mastodon/src/main/java/org/joinmastodon/android/fragments/BaseStatusListFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/HomeTabFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/ProfileFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/StatusDisplayItem.java
2023-04-27 15:30:58 -03:00
LucasGGamerM
26ab5a7f55 build: re-add missing drawable 2023-04-27 15:14:02 -03:00
Luna!
d7b76ed70a Fixed a typo in a comment in blocks.tsv (#509) 2023-04-27 17:49:15 +02:00
gallegonovato
bc7946dc23 Translated using Weblate (Spanish)
Currently translated at 100.0% (46 of 46 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/es/
2023-04-26 00:11:15 +00:00
LucasGGamerM
3a34599c82 Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (46 of 46 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/pt_BR/
2023-04-26 00:11:15 +00:00
Eryk Michalak
0a6dd8a754 Translated using Weblate (Polish)
Currently translated at 100.0% (46 of 46 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/pl/
2023-04-26 00:11:15 +00:00
MKCOOL142
a61ece13af Translated using Weblate (German)
Currently translated at 100.0% (273 of 273 strings)

Translation: Moshidon/values_sk
Translate-URL: https://translate.codeberg.org/projects/moshidon/values_sk/de/
2023-04-26 00:11:14 +00:00
MKCOOL142
89e58fa947 Translated using Weblate (German)
Currently translated at 100.0% (33 of 33 strings)

Translation: Moshidon/metadata
Translate-URL: https://translate.codeberg.org/projects/moshidon/metadata/de/
2023-04-26 00:11:14 +00:00
LucasGGamerM
4c47bb0768 Merge branch 'master' of https://github.com/LucasGGamerM/moshidon 2023-04-25 20:57:15 -03:00
LucasGGamerM
82005bf3bd feat: swap correct icon for mention reblogger automatically setting 2023-04-25 20:56:53 -03:00
Eugen Rochko
43600756c0 New translations strings.xml (Chinese Traditional) 2023-04-25 18:41:49 +02:00
Eugen Rochko
3c3e0633ad New translations strings.xml (Danish) 2023-04-25 12:23:29 +02:00
Eugen Rochko
f819ad6917 New translations strings.xml (Danish) 2023-04-25 11:26:19 +02:00
LucasGGamerM
03d89ae93c docs: add donation link
Why didnt I do this earlier?
2023-04-24 17:19:03 -03:00
sk
2e84faa505 update languages 2023-04-23 17:08:51 +02:00
sk
e7e8d13d9e fix auto hide fab in profile fragment 2023-04-22 22:33:20 +02:00
sk
a683c2cb11 hide fab in notifications 2023-04-22 22:20:40 +02:00
LucasGGamerM
22febe019b build: update proguard rules for better clarity 2023-04-22 16:29:31 -03:00
sk
addf7de316 single fab for home tabs
closes sk22#415
2023-04-22 21:25:02 +02:00
LucasGGamerM
e0f4f87086 build: fix missing proguard rules 2023-04-22 16:19:49 -03:00
LucasGGamerM
7917e34568 build: fix on startup crash on nightly release 2023-04-22 15:32:53 -03:00
sk
44d4eada51 fix "load missing more" being hidden
closes sk22#482
2023-04-22 20:14:07 +02:00
sk
40bfdea5b1 fix pleroma emoji reaction notifications 2023-04-22 19:52:46 +02:00
LucasGGamerM
d7287441ca build: fix compilation errors 2023-04-22 14:47:53 -03:00
sk
55138c1e86 fix wrong true black badge border color
closes sk22#485
2023-04-22 19:17:12 +02:00
Eugen Rochko
e7ad396fc6 New translations strings.xml (Italian) 2023-04-22 19:15:42 +02:00
sk
0aef680572 Merge remote-tracking branch 'weblate/main' 2023-04-22 19:06:03 +02:00
sk22
6dc37d6bde Translated using Weblate (German)
Currently translated at 100.0% (275 of 275 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/de/
2023-04-22 17:05:32 +00:00
sk
60ea7cedf6 support glitch react notification 2023-04-22 19:05:14 +02:00
Espasant3
c986b10e14 Translated using Weblate (Galician)
Currently translated at 99.6% (272 of 273 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/gl/
2023-04-22 17:00:55 +00:00
Choukajohn
d52174bd9e Translated using Weblate (French)
Currently translated at 100.0% (273 of 273 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/fr/
2023-04-22 17:00:55 +00:00
sk22
c65d138911 Translated using Weblate (German)
Currently translated at 100.0% (273 of 273 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/de/
2023-04-22 17:00:55 +00:00
sk
ad9bb8ad58 support glitch react notification 2023-04-22 19:00:37 +02:00
LucasGGamerM
5b391b44d3 Merge remote-tracking branch 'megalodon_main/main'
# Conflicts:
#	mastodon/build.gradle
#	mastodon/src/github/AndroidManifest.xml
#	mastodon/src/main/res/values-de-rDE/strings_sk.xml
#	mastodon/src/main/res/values-es-rES/strings_sk.xml
#	mastodon/src/main/res/values-eu-rES/strings_sk.xml
#	mastodon/src/main/res/values-ko-rKR/strings_sk.xml
#	mastodon/src/main/res/values-pl-rPL/strings_sk.xml
#	mastodon/src/main/res/values-uk-rUA/strings_sk.xml
#	metadata/es/changelogs/83.txt
#	metadata/fr/short_description.txt
#	metadata/gl-ES/changelogs/83.txt
2023-04-22 13:53:50 -03:00
LucasGGamerM
fe20fe4254 feat(compose): add automatically mentioning Reblogger functionality
Fixes #173
2023-04-22 13:44:50 -03:00
sk
63e536c66c fix hidden no alt/alt badge remaining clickable
closes sk22#498
2023-04-22 18:20:05 +02:00
Jacoco
b5a08b1b98 Pleroma emoji reaction notifications (#499) 2023-04-22 17:39:41 +02:00
r3g_5z
226e2a7cdc Minor maintenance things (#501)
* validate gradle wrapper jar file

this is extremely important. see the following:

https://blog.gradle.org/wrapper-attack-report
https://github.com/gradle/wrapper-validation-action#the-gradle-wrapper-problem-in-open-source

Signed-off-by: r3g_5z <june@girlboss.ceo>

* update gradle wrapper to 8.1.1

it is necessary to run the gradlew update command twice to actually
update the jar file properly, e.g.:

./gradlew wrapper --gradle-version=8.1.1 --gradle-distribution-sha256-sum=e111cb9948407e26351227dabce49822fb88c37ee72f1d1582a69c68af2e702f
./gradlew wrapper --gradle-version=8.1.1 --gradle-distribution-sha256-sum=e111cb9948407e26351227dabce49822fb88c37ee72f1d1582a69c68af2e702f

Signed-off-by: r3g_5z <june@girlboss.ceo>

* use Gradle toolchain

this allows for better build reproducibility and avoid mix and matching
JDKs from other projects

https://docs.gradle.org/current/userguide/toolchains.html

Signed-off-by: r3g_5z <june@girlboss.ceo>

* update dependencies and fix build errors

Signed-off-by: r3g_5z <june@girlboss.ceo>

---------

Signed-off-by: r3g_5z <june@girlboss.ceo>
Co-authored-by: sk22 <sk22@mailbox.org>
2023-04-22 17:28:16 +02:00
sk
4d7c4aed4c enable nonTransitiveRClass 2023-04-22 16:51:44 +02:00
sk
c9bcd000c3 update gradle 2023-04-22 16:49:42 +02:00
Eugen Rochko
b1cb4d4257 New translations strings.xml (German) 2023-04-22 16:44:30 +02:00
sk22
de42145f30 Translated using Weblate (German)
Currently translated at 100.0% (273 of 273 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/de/
2023-04-22 14:38:25 +00:00
sk
7bcdd6070a boost instead of reblog 2023-04-22 16:38:16 +02:00
sk
8a215e90d0 Merge remote-tracking branch 'weblate/main' 2023-04-22 16:34:11 +02:00
sk
b736fa18bb remove empty french metadata 2023-04-22 16:32:00 +02:00
ihor_ck
43c19e4942 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (273 of 273 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/uk/
2023-04-22 14:30:34 +00:00
Eryk Michalak
ffc18029bb Translated using Weblate (Polish)
Currently translated at 100.0% (273 of 273 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/pl/
2023-04-22 14:30:34 +00:00
Linerly
b88b3d15f8 Translated using Weblate (Indonesian)
Currently translated at 100.0% (273 of 273 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/id/
2023-04-22 14:30:34 +00:00
Choukajohn
c817886a2d Translated using Weblate (French)
Currently translated at 100.0% (273 of 273 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/fr/
2023-04-22 14:30:34 +00:00
gallegonovato
aae239494e Translated using Weblate (Spanish)
Currently translated at 100.0% (273 of 273 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/es/
2023-04-22 14:30:34 +00:00
a_mento
b0b2daa5d5 Translated using Weblate (Basque)
Currently translated at 100.0% (272 of 272 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/eu/
2023-04-22 14:30:34 +00:00
Espasant3
eea2e38f1b Translated using Weblate (Galician)
Currently translated at 100.0% (17 of 17 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/gl/
2023-04-22 14:30:34 +00:00
AiOO
f894ecd25b Translated using Weblate (Korean)
Currently translated at 100.0% (17 of 17 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/ko/
2023-04-22 14:30:34 +00:00
AiOO
e0b6ed7103 Translated using Weblate (Korean)
Currently translated at 100.0% (272 of 272 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/ko/
2023-04-22 14:30:34 +00:00
Espasant3
a78e75747a Translated using Weblate (Galician)
Currently translated at 100.0% (17 of 17 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/gl/
2023-04-22 14:30:34 +00:00
ihor_ck
3b25e367bb Translated using Weblate (Ukrainian)
Currently translated at 100.0% (17 of 17 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/uk/
2023-04-22 14:30:34 +00:00
gallegonovato
08b29dff3d Translated using Weblate (Spanish)
Currently translated at 100.0% (17 of 17 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/es/
2023-04-22 14:30:34 +00:00
Choukajohn
2f2e053d26 Translated using Weblate (French)
Currently translated at 17.6% (3 of 17 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/fr/
2023-04-22 14:30:34 +00:00
Pegasus89
191d582c30 Translated using Weblate (Croatian)
Currently translated at 12.5% (2 of 16 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/hr/
2023-04-22 14:30:34 +00:00
Pegasus89
8d3380ff6e Translated using Weblate (Croatian)
Currently translated at 97.4% (265 of 272 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/hr/
2023-04-22 14:30:34 +00:00
AiOO
ba85d18574 Translated using Weblate (Korean)
Currently translated at 100.0% (272 of 272 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/ko/
2023-04-22 14:30:34 +00:00
sk22
0f53b17515 Translated using Weblate (Spanish)
Currently translated at 100.0% (272 of 272 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/es/
2023-04-22 14:30:34 +00:00
Anonymous
cb9c869712 Translated using Weblate (Russian)
Currently translated at 92.2% (251 of 272 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/ru/
2023-04-22 14:30:34 +00:00
poesty
aa3d9e7b8f Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (272 of 272 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/zh_Hans/
2023-04-22 14:30:34 +00:00
sk
b3a9b5824d fix non-positional subtitution in string 2023-04-22 16:29:41 +02:00
LucasGGamerM
218503a739 Merge remote-tracking branch 'weblate/master' 2023-04-22 09:55:07 -03:00
LucasGGamerM
13480ce575 fix(status-display-item): add null check for statusForContent
Fuck java
2023-04-21 12:58:05 -03:00
LucasGGamerM
581ee53f12 Merge pull request #180 from FineFindus/fix/compose-shortcut
fix: compose shortcut contrast
2023-04-21 12:22:33 -03:00
LucasGGamerM
02545f3dd2 Merge pull request #179 from FineFindus/fix/version-name-footer
fix(settings/footer): use footer item
2023-04-21 12:19:58 -03:00
Andrewblasco
37fe0a1145 Translated using Weblate (Spanish)
Currently translated at 100.0% (273 of 273 strings)

Translation: Moshidon/values_sk
Translate-URL: https://translate.codeberg.org/projects/moshidon/values_sk/es/
2023-04-21 13:51:50 +00:00
dontobi
e753eea23f Translated using Weblate (German)
Currently translated at 100.0% (273 of 273 strings)

Translation: Moshidon/values_sk
Translate-URL: https://translate.codeberg.org/projects/moshidon/values_sk/de/
2023-04-21 13:51:50 +00:00
Andrewblasco
9d8cf2dc02 Translated using Weblate (Spanish)
Currently translated at 100.0% (33 of 33 strings)

Translation: Moshidon/metadata
Translate-URL: https://translate.codeberg.org/projects/moshidon/metadata/es/
2023-04-21 13:51:50 +00:00
Andrewblasco
de589d1fdf Translated using Weblate (Spanish)
Currently translated at 100.0% (45 of 45 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/es/
2023-04-21 13:51:50 +00:00
dontobi
573872291c Translated using Weblate (German)
Currently translated at 100.0% (45 of 45 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/de/
2023-04-21 13:51:50 +00:00
Oliebol
e4232fb3de Translated using Weblate (Dutch)
Currently translated at 93.4% (255 of 273 strings)

Translation: Moshidon/values_sk
Translate-URL: https://translate.codeberg.org/projects/moshidon/values_sk/nl/
2023-04-21 13:51:50 +00:00
Eryk Michalak
04f805e846 Translated using Weblate (Polish)
Currently translated at 100.0% (45 of 45 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/pl/
2023-04-21 13:51:50 +00:00
Oliebol
ae2769a1b9 Translated using Weblate (Dutch)
Currently translated at 93.3% (42 of 45 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/nl/
2023-04-21 13:51:50 +00:00
gallegonovato
d8d6cd8258 Translated using Weblate (Spanish)
Currently translated at 100.0% (45 of 45 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/es/
2023-04-21 13:51:50 +00:00
LucasGGamerM
8bc395cb16 Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (45 of 45 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/pt_BR/
2023-04-21 13:51:50 +00:00
a_mento
6d06c4d740 Translated using Weblate (Basque)
Currently translated at 100.0% (273 of 273 strings)

Translation: Moshidon/values_sk
Translate-URL: https://translate.codeberg.org/projects/moshidon/values_sk/eu/
2023-04-21 13:51:50 +00:00
gallegonovato
fc8784393b Translated using Weblate (Spanish)
Currently translated at 100.0% (273 of 273 strings)

Translation: Moshidon/values_sk
Translate-URL: https://translate.codeberg.org/projects/moshidon/values_sk/es/
2023-04-21 13:51:50 +00:00
Eryk Michalak
ce92ffe6dd Translated using Weblate (Polish)
Currently translated at 100.0% (273 of 273 strings)

Translation: Moshidon/values_sk
Translate-URL: https://translate.codeberg.org/projects/moshidon/values_sk/pl/
2023-04-21 13:51:50 +00:00
Weblate
1953cab173 Added translation using Weblate (Arabic (Algeria)) 2023-04-21 13:51:50 +00:00
FineFindus
2525714bc9 fix(shortcut): use visible colors 2023-04-21 13:41:12 +02:00
FineFindus
debdda5fed fix(settings/footer): use footer item 2023-04-21 13:30:16 +02:00
LucasGGamerM
c4c17e3aea feat(remote-followers): remote constant remoteLookup function on long follower lists
This optimizes the scrolling process, where the dialog now doesnt happen more than once
2023-04-20 20:23:09 -03:00
LucasGGamerM
04699c3684 Merge pull request #175
Feat/settings debug improvement
2023-04-20 17:52:58 -03:00
LucasGGamerM
d78fce92c6 Merge pull request #176
Fix/nightly updater
2023-04-20 17:51:37 -03:00
LucasGGamerM
73a9073ee4 feat(remote-followers): fallback when results from remote server are empty 2023-04-20 15:00:45 -03:00
LucasGGamerM
ef541058c4 feat(for-you): increase corner radius on account card 2023-04-20 14:52:28 -03:00
FineFindus
bf4c905674 feat(settings/debug): add reset action 2023-04-20 17:56:32 +02:00
FineFindus
d256c759ee feat(settings/debug): add open icon to external actions 2023-04-20 17:56:32 +02:00
FineFindus
6b8418845e feat(settings/debug): add action to open app info 2023-04-20 17:56:32 +02:00
FineFindus
47a3834716 fix(settings/debug): typo e-mail → E-Mail 2023-04-20 17:56:32 +02:00
FineFindus
b540729f6b feat(settings/debug): add action to open dev settings 2023-04-20 17:56:32 +02:00
FineFindus
98e24a5285 feat(settings/debug): add copy pref debug action 2023-04-20 17:56:32 +02:00
FineFindus
ec1e850549 feat(settings/version): tap to copy version 2023-04-20 17:56:26 +02:00
sk
b6186a349f update gradle 2023-04-20 16:03:57 +02:00
FineFindus
730aa28979 fix(settings/updater): hide updater if info is null 2023-04-20 15:55:31 +02:00
FineFindus
d15d8a0169 fix(updater/nightly): remove old info when no update is available 2023-04-20 15:51:47 +02:00
FineFindus
6077bf4b55 feat(status): hide boosts on direct privacy 2023-04-20 13:12:55 +02:00
LucasGGamerM
b568dac138 fix(remote-followers): actually fix the infinite loading bug on misskey accounts 2023-04-19 18:46:06 -03:00
LucasGGamerM
2c7df11e84 fix: infinite loading screens when when fetching remote followers on some accounts 2023-04-19 16:58:55 -03:00
LucasGGamerM
29777c2513 fix: fix inconsistencies with the follow button on OnboardingFollowSuggestionsFragment 2023-04-19 16:33:22 -03:00
LucasGGamerM
f70a9cbe3f feat: make follow button consistent with current theme on FollowSuggestions fragment 2023-04-19 16:17:55 -03:00
LucasGGamerM
7bc49aa21c feat: re-add long click press home to open OnboardingFollowSuggestionsFragment
This is also a small redesign, as I like consistency
2023-04-19 16:11:57 -03:00
LucasGGamerM
4d0790dcec fix: fix keyboard moving over edittext views
Merge this @sk22, as its particularly annoying for when editing account roles on a shorter screen
2023-04-19 15:01:21 -03:00
LucasGGamerM
bb7b18e148 style: removing whitespace from function 2023-04-19 14:31:21 -03:00
Eugen Rochko
100bd4b062 New translations strings.xml (Galician) 2023-04-19 07:36:52 +02:00
Eugen Rochko
7da09d9b37 New translations strings.xml (Spanish) 2023-04-19 07:36:51 +02:00
Eugen Rochko
f46eb07228 New translations strings.xml (Galician) 2023-04-19 06:04:49 +02:00
LucasGGamerM
b7b646f03a feat: add follow button on remote follower lists
NOTE: This doesn't actually load remote relationships, so its always going to be in the "follow" state.
2023-04-18 15:09:14 -03:00
LucasGGamerM
7c59b700da fix: inconsistent true black text colors on account picker dialog 2023-04-18 13:26:21 -03:00
LucasGGamerM
cf64e75e2f fix: inconsistent true black text colors on toolbar menus 2023-04-18 12:09:00 -03:00
LucasGGamerM
e121fccfc1 feat: add an error toast in case remote account lookup fails with new method
I forgot to add it
2023-04-17 16:20:43 -03:00
LucasGGamerM
5a1a2ac9f5 feat: bypass instances which dont allow unauthenticated searches
This bypasses the search function for when an account is searched for, which makes it work with instances like universeodon and many others. This is used for remote lookups of profiles, and it works wonders!
2023-04-17 16:15:55 -03:00
Eugen Rochko
7627b5eb25 New translations strings.xml (Greek) 2023-04-17 15:01:08 +02:00
Eugen Rochko
c710448c6b New translations strings.xml (Greek) 2023-04-17 13:59:43 +02:00
Grishka
4b4c88d44d Support opening mastodon.online and mastodon.social links 2023-04-17 06:47:49 +03:00
LucasGGamerM
00d6f29285 feat: increase corner radius of auto updater view 2023-04-16 21:39:27 -03:00
LucasGGamerM
a649ea0a00 feat: move some settings around
Make it so that the ones which default to True are always on the top
2023-04-16 21:36:37 -03:00
LucasGGamerM
180cf3c902 feat: add a settings toggle for remote profile lookups
Adds a toggle for the remote followers
2023-04-16 21:29:17 -03:00
LucasGGamerM
ba997903b6 Merge branch 'feature/remote-followers' 2023-04-16 20:10:41 -03:00
LucasGGamerM
32da4f8e09 feat: use targetAccount domain name in lookup dialog 2023-04-16 18:27:29 -03:00
LucasGGamerM
1098c855c4 fix: this fixes the bug where the app would only load 10-20 remote followers 2023-04-16 18:07:49 -03:00
LucasGGamerM
ee8ca09e0e Merge pull request #170 from FineFindus/refactor/remote-followers
Refactor remote follower
2023-04-16 17:32:35 -03:00
FineFindus
ed75a62228 refactor(follower): move remote check to own method 2023-04-16 21:44:05 +02:00
FineFindus
c3c76126a3 feat(follower): show own domain accounts as username 2023-04-16 21:32:26 +02:00
FineFindus
4da6016e06 refactor(follower): move null check in called method 2023-04-16 21:19:24 +02:00
FineFindus
e4f4ca5392 refactor: move request to their own methods 2023-04-16 21:13:20 +02:00
FineFindus
9d690e7670 fix: own instance accounts not loading 2023-04-16 21:07:22 +02:00
FineFindus
e1acfef1bf refactor: use useful variable names 2023-04-16 21:00:07 +02:00
LucasGGamerM
29267dacb4 feat: add onClick lookup for remote accounts 2023-04-16 15:31:47 -03:00
LucasGGamerM
7c8698521d feat: add remote follower and following lookup
Clicking the regenerated accounts wont do anything for now though
2023-04-16 15:25:55 -03:00
LucasGGamerM
fb02689c30 Revert "feat: add remote lookups to the PaginatedAccountListFragment"
This reverts commit 74f2bb4707.
2023-04-16 14:13:25 -03:00
Eugen Rochko
1ad270b1d6 New translations strings.xml (Chinese Simplified) 2023-04-16 18:13:11 +02:00
Eugen Rochko
099e253b2b New translations strings.xml (Chinese Simplified) 2023-04-16 17:11:48 +02:00
Eugen Rochko
66de4a5b91 New translations strings.xml (Thai) 2023-04-16 09:19:23 +02:00
LucasGGamerM
8a4231686b Revert "feat(linkSpan/longClick): use share intent istead of copy text"
This reverts commit bcfb63b57c.
This revert is necessary for consistency, as the other links arent long pressable
2023-04-15 20:47:41 -03:00
LucasGGamerM
c1252638c6 Revert "fix: fix auto updater on nightly builds"
This reverts commit 09733f3343.
2023-04-15 18:54:02 -03:00
LucasGGamerM
5515b12fd9 chore: update the nightly builds badge in readme 2023-04-15 13:04:52 -03:00
LucasGGamerM
9fe7ebf3bf chore: update readme to link to nightly builds apk
Using the moshidon-nightly repo to provide nightly builds
2023-04-15 13:03:57 -03:00
LucasGGamerM
09733f3343 fix: fix auto updater on nightly builds
This fixes the fact that it always showed a new update, even after it updated
2023-04-15 12:58:43 -03:00
LucasGGamerM
249dd5c0e5 Revert "fix: maybe fixing the nightly updater issue"
This reverts commit 46398f7bad.
2023-04-15 12:48:57 -03:00
LucasGGamerM
181fa1383b fix: make compose button accent consistent with dark mode
This is due to consistency and better usage of colors
2023-04-15 12:47:09 -03:00
LucasGGamerM
ee1a4edbe1 fix: discrepant colors in account picker 2023-04-15 12:43:07 -03:00
LucasGGamerM
f3081f3f6c Merge branch 'master' of https://github.com/LucasGGamerM/moshidon 2023-04-15 10:46:43 -03:00
LucasGGamerM
6a12708905 fix: make disable marquee setting require a restart 2023-04-15 10:46:16 -03:00
LucasGGamerM
04a8e33385 fix: inconsistent marquee behavior on home timelines. Fixes #147 2023-04-15 10:46:16 -03:00
LucasGGamerM
d79c183685 feat: make yellow theme more yellow 2023-04-15 10:46:16 -03:00
LucasGGamerM
0c6efac46a build: re-enable releases resource shrinking 2023-04-15 10:46:16 -03:00
Eugen Rochko
41437d91d5 New translations strings.xml (Icelandic) 2023-04-15 11:54:07 +02:00
Eugen Rochko
d33d5a6efa New translations strings.xml (Icelandic) 2023-04-15 10:45:31 +02:00
Eugen Rochko
4f9248d040 New translations strings.xml (Vietnamese) 2023-04-15 05:15:40 +02:00
LucasGGamerM
6a5a506abf fix: make disable marquee setting require a restart 2023-04-14 22:11:47 -03:00
LucasGGamerM
746717a875 fix: inconsistent marquee behavior on home timelines. Fixes #147 2023-04-14 21:59:48 -03:00
LucasGGamerM
e55dd0eaca feat: make yellow theme more yellow 2023-04-14 21:45:36 -03:00
LucasGGamerM
6af22b1f0e refactor: re-enable releases resource shrinking 2023-04-14 19:17:13 -03:00
Eugen Rochko
f40c0e41f3 New translations strings.xml (Japanese) 2023-04-14 20:26:49 +02:00
LucasGGamerM
7d840502d4 Merge branch 'master' of https://github.com/LucasGGamerM/moshidon 2023-04-14 14:28:22 -03:00
LucasGGamerM
665a0176b9 Merge remote-tracking branch 'megalodon_main/main'
# Conflicts:
#	mastodon/build.gradle
#	mastodon/src/main/res/layout/fragment_splash.xml
2023-04-14 14:27:42 -03:00
LucasGGamerM
ef4422828b chore: readd cache 2023-04-14 14:25:59 -03:00
LucasGGamerM
002fc0897c chore: remove cache on workflow builds
This is for maybe making it work again
2023-04-14 14:16:08 -03:00
LucasGGamerM
0a21c90efa chore: change to coretto java distribution on workflow 2023-04-14 14:06:19 -03:00
LucasGGamerM
3df62d2516 Revert "refactor: make nightly build debuggable "
This reverts commit ee18236ec8.
2023-04-14 13:35:49 -03:00
LucasGGamerM
ee18236ec8 refactor: make nightly build debuggable
This is a temporary thing, as for now there is a bug (on theme change crash) that I just cannot reproduce on local builds. Making the nightly build debuggable for now will help debug this problem.
2023-04-14 10:46:19 -03:00
sk
15fcb0e25d fix alt badge padding and margin 2023-04-13 23:17:46 +02:00
sk
2dae662333 fix username displacement in compose 2023-04-13 23:03:07 +02:00
sk
3ad46926f1 Merge remote-tracking branch 'upstream/master' 2023-04-13 21:46:45 +02:00
sk
2385d102ae fix header username displacement 2023-04-13 21:42:43 +02:00
Eugen Rochko
deeb03ff2b New translations strings.xml (Indonesian) 2023-04-13 21:36:15 +02:00
LucasGGamerM
74f2bb4707 feat: add remote lookups to the PaginatedAccountListFragment 2023-04-13 16:08:26 -03:00
LucasGGamerM
76a85af0d7 fix: make remoteLookups not resolve other instance's data
This was done because unauthenticated users cannot access them.
2023-04-13 16:04:19 -03:00
Eugen Rochko
5c2a09e243 New translations strings.xml (Indonesian) 2023-04-13 20:38:20 +02:00
LucasGGamerM
5d7363585a feat: add remote lookup functions in UiUtils
This will help when getting remote status's interactions, and remote accounts' followers and follows
2023-04-13 15:08:41 -03:00
Eugen Rochko
2473c999db New translations strings.xml (German) 2023-04-13 14:38:33 +02:00
Eugen Rochko
ea2cc265e3 New translations strings.xml (Turkish) 2023-04-13 05:12:38 +02:00
Eugen Rochko
a0cd2d42cf New translations strings.xml (Turkish) 2023-04-13 04:16:05 +02:00
LucasGGamerM
46398f7bad fix: maybe fixing the nightly updater issue 2023-04-12 16:32:15 -03:00
LucasGGamerM
7c6087c1f5 Merge remote-tracking branch 'weblate/master' 2023-04-12 14:20:16 -03:00
nitrogenez47ab3e44720c4675
ed7bcdb761 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (273 of 273 strings)

Translation: Moshidon/values_sk
Translate-URL: https://translate.codeberg.org/projects/moshidon/values_sk/uk/
2023-04-12 17:19:02 +00:00
LucasGGamerM
50f9ebe4f7 Translated using Weblate (Portuguese (Brazil))
Currently translated at 99.2% (271 of 273 strings)

Translation: Moshidon/values_sk
Translate-URL: https://translate.codeberg.org/projects/moshidon/values_sk/pt_BR/
2023-04-12 17:19:02 +00:00
Weblate
2daf94f91e Added translation using Weblate (Portuguese) 2023-04-12 17:05:04 +00:00
Weblate
d3b7a60f18 Added translation using Weblate (Arabic) 2023-04-12 17:05:03 +00:00
LucasGGamerM
1d5bf452ab Merge remote-tracking branch 'megalodon_weblate/main'
# Conflicts:
#	metadata/es/changelogs/83.txt
2023-04-12 14:00:28 -03:00
LucasGGamerM
51063b65ae Merge remote-tracking branch 'weblate/master' 2023-04-12 13:58:52 -03:00
Weblate
198dfc067e Added translation using Weblate (Arabic (Algeria)) 2023-04-12 16:58:51 +00:00
nitrogenez47ab3e44720c4675
ab0eed88c4 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (44 of 44 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/uk/
2023-04-12 16:58:49 +00:00
Eryk Michalak
7a036a52ae Translated using Weblate (Polish)
Currently translated at 100.0% (44 of 44 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/pl/
2023-04-12 16:58:49 +00:00
gallegonovato
aa5404842b Translated using Weblate (Spanish)
Currently translated at 100.0% (44 of 44 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/es/
2023-04-12 16:58:49 +00:00
nitrogenez47ab3e44720c4675
a33009a297 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (44 of 44 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/uk/
2023-04-12 16:55:29 +00:00
Grishka
9e116bec97 Merge branch 'master' into m3_redesign
# Conflicts:
#	mastodon/build.gradle
2023-04-12 19:41:39 +03:00
LucasGGamerM
8b27e6de33 fix: long click boost button actions on customlocaltimelines
Before, you just couldnt reblog something with the unlisted visibility directly from the custom local timelines, now you can! And there are some small adjustments to the behavior.
2023-04-12 13:32:22 -03:00
Grishka
0a17ceb984 Merge branch 'l10n_master' 2023-04-12 19:20:42 +03:00
Grishka
4ef18f1f4a Add touch interaction for the SplashFragment art 2023-04-12 19:20:23 +03:00
LucasGGamerM
4c698cf217 feat: make confirm reblog setting consistent on customlocaltimelines
Make it so there is also a confirmation to reblog on custom local timelines
2023-04-12 13:12:57 -03:00
LucasGGamerM
05217b7712 refactor: move confirm reblog setting to behavior tab 2023-04-12 13:10:21 -03:00
LucasGGamerM
64e681c227 Merge remote-tracking branch 'megalodon_main/main'
# Conflicts:
#	mastodon/build.gradle
#	mastodon/src/main/java/org/joinmastodon/android/GlobalUserPreferences.java
#	mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/FooterStatusDisplayItem.java
#	mastodon/src/main/java/org/joinmastodon/android/ui/utils/UiUtils.java
#	metadata/de-DE/changelogs/83.txt
#	metadata/en-US/changelogs/83.txt
2023-04-12 13:04:31 -03:00
Grishka
0de227ab9c Use fixed colors for SplashFragment
fixes #561
2023-04-12 18:47:02 +03:00
Eugen Rochko
19cb8703a6 New translations strings.xml (Kabyle) 2023-04-12 17:37:10 +02:00
Eugen Rochko
e18567dd82 New translations strings.xml (Filipino) 2023-04-12 17:37:06 +02:00
Eugen Rochko
bfb3bcdbfb New translations strings.xml (Portuguese, Brazilian) 2023-04-12 17:37:02 +02:00
Eugen Rochko
565cd14d88 New translations strings.xml (Galician) 2023-04-12 17:37:00 +02:00
Eugen Rochko
ebc37eac75 New translations strings.xml (Vietnamese) 2023-04-12 17:36:59 +02:00
Eugen Rochko
c3702db577 New translations strings.xml (Chinese Traditional) 2023-04-12 17:36:59 +02:00
Eugen Rochko
e15c4fa342 New translations strings.xml (Chinese Simplified) 2023-04-12 17:36:58 +02:00
Eugen Rochko
8330b9f1c5 New translations strings.xml (Turkish) 2023-04-12 17:36:57 +02:00
Eugen Rochko
f759150982 New translations strings.xml (Swedish) 2023-04-12 17:36:56 +02:00
Eugen Rochko
6af177b596 New translations strings.xml (Slovenian) 2023-04-12 17:36:55 +02:00
Eugen Rochko
657bb94975 New translations strings.xml (Russian) 2023-04-12 17:36:54 +02:00
Eugen Rochko
3c946212b1 New translations strings.xml (Polish) 2023-04-12 17:36:52 +02:00
Eugen Rochko
b4e80f7fca New translations strings.xml (Norwegian) 2023-04-12 17:36:51 +02:00
Eugen Rochko
c9efc2cb2b New translations strings.xml (Korean) 2023-04-12 17:36:50 +02:00
Eugen Rochko
0d62e33dc7 New translations strings.xml (Japanese) 2023-04-12 17:36:49 +02:00
Eugen Rochko
ac88b9e19c New translations strings.xml (Italian) 2023-04-12 17:36:48 +02:00
Eugen Rochko
871dfda79e New translations strings.xml (Hungarian) 2023-04-12 17:36:47 +02:00
Eugen Rochko
e0c2c208ae New translations strings.xml (Basque) 2023-04-12 17:36:44 +02:00
Eugen Rochko
22ac112bdb New translations strings.xml (German) 2023-04-12 17:36:43 +02:00
Eugen Rochko
afd0cca176 New translations strings.xml (Danish) 2023-04-12 17:36:42 +02:00
Eugen Rochko
c083c8bce5 New translations strings.xml (Arabic) 2023-04-12 17:36:41 +02:00
Eugen Rochko
63bde032b3 New translations strings.xml (French) 2023-04-12 17:36:40 +02:00
Eugen Rochko
49492c0788 New translations strings.xml (Belarusian) 2023-04-12 17:36:38 +02:00
Eugen Rochko
b439c64add New translations strings.xml (Greek) 2023-04-12 17:36:37 +02:00
Eugen Rochko
1868bfe8e3 New translations strings.xml (Thai) 2023-04-12 17:36:36 +02:00
Eugen Rochko
f240a3d996 New translations strings.xml (Indonesian) 2023-04-12 17:36:35 +02:00
Eugen Rochko
788e5bd12e New translations strings.xml (Icelandic) 2023-04-12 17:36:34 +02:00
Eugen Rochko
a55fed4502 New translations strings.xml (Ukrainian) 2023-04-12 17:36:33 +02:00
Eugen Rochko
a8fdaf1a47 New translations strings.xml (Dutch) 2023-04-12 17:36:32 +02:00
Eugen Rochko
4a758bd488 New translations strings.xml (Czech) 2023-04-12 17:36:31 +02:00
Eugen Rochko
2c9731ec2a New translations strings.xml (Spanish) 2023-04-12 17:36:30 +02:00
Grishka
eef33266fc Remove unused code and strings 2023-04-12 18:34:28 +03:00
Eugen Rochko
58d2c3e5a6 New translations strings.xml (Indonesian) 2023-04-11 17:28:22 +02:00
Espasant3
a4515ea360 Translated using Weblate (Galician)
Currently translated at 100.0% (17 of 17 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/gl/
2023-04-11 10:37:30 +00:00
LucasGGamerM
2cea6a9df5 Merge branch 'master' of https://github.com/LucasGGamerM/moshidon 2023-04-10 15:17:14 -03:00
LucasGGamerM
d6d6155f2c refactor: move LatestNotificationID preference away from GlobalUserPreferences
This is solely for the purpose of organization, as I think GlobalUserPreferences should only directly contain Global user preferences
2023-04-10 15:14:47 -03:00
LucasGGamerM
88f498409f chore: refactor deprecated action 2023-04-10 07:57:59 -03:00
LucasGGamerM
f39690b7e5 Merge pull request #160 from FineFindus/fix/sign-in-flow
fix: use BuilType defined REDIRECT_URI
2023-04-10 07:34:19 -03:00
Eugen Rochko
9e6a355db0 New translations strings.xml (Slovenian) 2023-04-10 00:54:45 +02:00
Eugen Rochko
0d10e09fd6 New translations strings.xml (Slovenian) 2023-04-09 23:47:00 +02:00
Eugen Rochko
f85bb995ba New translations strings.xml (Greek) 2023-04-09 17:56:44 +02:00
Eugen Rochko
268e5639f6 New translations strings.xml (Greek) 2023-04-09 16:26:19 +02:00
LucasGGamerM
0a1c42f90b feat: add nightly auto updater 2023-04-09 10:56:41 -03:00
FineFindus
a59587eb62 fix(auth): use BuildType depended redirect uri 2023-04-09 15:46:30 +02:00
FineFindus
7615723d4f refactor(auth): use REDIRECT_URI 2023-04-09 15:07:22 +02:00
Eryk Michalak
804129271b Translated using Weblate (Polish)
Currently translated at 100.0% (44 of 44 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/pl/
2023-04-09 12:37:29 +00:00
gallegonovato
ef1b1e5d1f Translated using Weblate (Spanish)
Currently translated at 100.0% (44 of 44 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/es/
2023-04-09 12:37:29 +00:00
Eugen Rochko
51809df8ca New translations strings.xml (Thai) 2023-04-09 07:25:51 +02:00
Eugen Rochko
94fb676b0c New translations strings.xml (Chinese Traditional) 2023-04-09 04:29:35 +02:00
Eugen Rochko
a47106594b New translations strings.xml (Chinese Traditional) 2023-04-09 03:10:02 +02:00
LucasGGamerM
fe21a95766 fix: wrong property name in build.gradle 2023-04-08 21:09:43 -03:00
LucasGGamerM
6f3cb14dc9 chore: adding CURRENT_DATE environment variable to workflow 2023-04-08 21:00:55 -03:00
LucasGGamerM
1698a32d75 chore: tweak build.gradle to check properties for current date
Check the local.properties file for date in case its null. This should be useful for testing the new nightly updater
2023-04-08 20:58:23 -03:00
LucasGGamerM
1e54b21842 fix: gradle not compiling on nightly build 2023-04-08 20:39:43 -03:00
LucasGGamerM
99ca3b7acb Merge branch 'master' of https://github.com/LucasGGamerM/moshidon 2023-04-08 20:22:40 -03:00
LucasGGamerM
828617f7d7 feat: change nightly release versionName 2023-04-08 20:22:12 -03:00
Grishka
d93d66f702 Prepare new release 2023-04-09 01:59:13 +03:00
Eugen Rochko
b2f9f7ae54 New translations strings.xml (Italian) 2023-04-09 00:51:05 +02:00
Grishka
de7b908c78 Merge branch 'l10n_master' 2023-04-09 01:50:55 +03:00
Grishka
dc25e16c00 fix 2023-04-09 01:48:54 +03:00
Eugen Rochko
75d3c2fdce New translations strings.xml (Italian) 2023-04-08 23:55:36 +02:00
Eugen Rochko
ea1b6c5835 New translations strings.xml (Greek) 2023-04-08 22:51:05 +02:00
ihor_ck
c4d8baf8a2 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (17 of 17 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/uk/
2023-04-08 20:37:30 +00:00
gallegonovato
118a073961 Translated using Weblate (Spanish)
Currently translated at 100.0% (17 of 17 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/es/
2023-04-08 20:37:29 +00:00
Choukajohn
4b39011497 Translated using Weblate (French)
Currently translated at 17.6% (3 of 17 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/fr/
2023-04-08 20:37:29 +00:00
LucasGGamerM
470a693a1f chore: update nightly badge 2023-04-08 16:51:09 -03:00
Eugen Rochko
cb7887da41 New translations strings.xml (Greek) 2023-04-08 21:38:06 +02:00
LucasGGamerM
1f4970c0d2 fix: NPE when instance is null and attempts to get new notifications
For some weird reason, someone saw a pixelfed instance return null as the instance, causing a crash on the updateNotificationsBadge method. This reminds me of why java is such a shit language
2023-04-08 15:53:40 -03:00
LucasGGamerM
e9833baaa4 Merge pull request #157 from FineFindus/fix/notification-id
fix(notification): overwriting IDs
2023-04-07 21:30:21 -03:00
LucasGGamerM
325d962bbb chore: update build.gradle for easier testing of nightly release 2023-04-07 19:13:06 -03:00
LucasGGamerM
0aa432bf6e chore: update .gitignore 2023-04-07 18:59:18 -03:00
Eugen Rochko
a80313ee6b New translations strings.xml (Thai) 2023-04-07 23:53:35 +02:00
LucasGGamerM
1ed891ced8 Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (44 of 44 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/pt_BR/
2023-04-07 21:39:06 +00:00
Eryk Michalak
2ebf52d156 Translated using Weblate (Polish)
Currently translated at 100.0% (43 of 43 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/pl/
2023-04-07 21:36:57 +00:00
Andrewblasco
9d45fc1c84 Translated using Weblate (Spanish)
Currently translated at 100.0% (43 of 43 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/es/
2023-04-07 21:36:57 +00:00
Hiajen
a436573f25 Translated using Weblate (German)
Currently translated at 100.0% (43 of 43 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/de/
2023-04-07 21:36:57 +00:00
dontobi
76980244ec Translated using Weblate (German)
Currently translated at 100.0% (43 of 43 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/de/
2023-04-07 21:36:57 +00:00
LucasGGamerM
0e6a3ccd72 Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (43 of 43 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/pt_BR/
2023-04-07 21:36:57 +00:00
gallegonovato
b8869e6460 Translated using Weblate (Spanish)
Currently translated at 100.0% (43 of 43 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/es/
2023-04-07 21:36:57 +00:00
Eugen Rochko
e1a821bc43 New translations strings.xml (Thai) 2023-04-07 22:56:50 +02:00
Grishka
42a7c324fa Merge branch 'master' into m3_redesign 2023-04-07 23:16:53 +03:00
Grishka
924ea2d03a Fix #557 2023-04-07 22:58:04 +03:00
Grishka
55270fe654 Fix 2023-04-07 22:55:29 +03:00
Eugen Rochko
a125fab57b New translations strings.xml (Kabyle) 2023-04-07 21:48:05 +02:00
Eugen Rochko
395ee0aa99 New translations strings.xml (Scottish Gaelic) 2023-04-07 21:48:03 +02:00
Eugen Rochko
0f50fa6ba1 New translations strings.xml (Bosnian) 2023-04-07 21:48:01 +02:00
Eugen Rochko
adb7df3c71 New translations strings.xml (Filipino) 2023-04-07 21:48:00 +02:00
Eugen Rochko
5d7bcb629b New translations strings.xml (Burmese) 2023-04-07 21:47:59 +02:00
Eugen Rochko
a00f1417d2 New translations strings.xml (Hindi) 2023-04-07 21:47:59 +02:00
Eugen Rochko
8efd7e8ebf New translations strings.xml (Croatian) 2023-04-07 21:47:58 +02:00
Eugen Rochko
b016d277e0 New translations strings.xml (Bengali) 2023-04-07 21:47:57 +02:00
Eugen Rochko
fdb39617d1 New translations strings.xml (Persian) 2023-04-07 21:47:56 +02:00
Eugen Rochko
89f83fbf62 New translations strings.xml (Portuguese, Brazilian) 2023-04-07 21:47:55 +02:00
Eugen Rochko
ecee9e01a6 New translations strings.xml (Galician) 2023-04-07 21:47:54 +02:00
Eugen Rochko
20dc9bb8b9 New translations strings.xml (Vietnamese) 2023-04-07 21:47:53 +02:00
Eugen Rochko
2c47d0e9ed New translations strings.xml (Chinese Traditional) 2023-04-07 21:47:52 +02:00
Eugen Rochko
8e13d52e51 New translations strings.xml (Chinese Simplified) 2023-04-07 21:47:51 +02:00
Eugen Rochko
cc40198c9e New translations strings.xml (Turkish) 2023-04-07 21:47:50 +02:00
Eugen Rochko
290897ea41 New translations strings.xml (Swedish) 2023-04-07 21:47:49 +02:00
Eugen Rochko
b9e1c84304 New translations strings.xml (Slovenian) 2023-04-07 21:47:48 +02:00
Eugen Rochko
3c44c80e2e New translations strings.xml (Russian) 2023-04-07 21:47:47 +02:00
Eugen Rochko
dffa4e4594 New translations strings.xml (Portuguese) 2023-04-07 21:47:46 +02:00
Eugen Rochko
fa2d9fec58 New translations strings.xml (Polish) 2023-04-07 21:47:45 +02:00
Eugen Rochko
09c1a2cfa0 New translations strings.xml (Norwegian) 2023-04-07 21:47:44 +02:00
Eugen Rochko
d1f90eb231 New translations strings.xml (Korean) 2023-04-07 21:47:42 +02:00
Eugen Rochko
1f7d97134b New translations strings.xml (Japanese) 2023-04-07 21:47:42 +02:00
Eugen Rochko
79be91784d New translations strings.xml (Italian) 2023-04-07 21:47:41 +02:00
Eugen Rochko
de2654def3 New translations strings.xml (Hungarian) 2023-04-07 21:47:39 +02:00
Eugen Rochko
56343dacff New translations strings.xml (Hebrew) 2023-04-07 21:47:38 +02:00
Eugen Rochko
0e677f8ce7 New translations strings.xml (Basque) 2023-04-07 21:47:36 +02:00
Eugen Rochko
aa911896d6 New translations strings.xml (German) 2023-04-07 21:47:35 +02:00
Eugen Rochko
c62a8635b9 New translations strings.xml (Danish) 2023-04-07 21:47:34 +02:00
Eugen Rochko
4e900247c5 New translations strings.xml (Catalan) 2023-04-07 21:47:33 +02:00
Eugen Rochko
b3bd62bc6c New translations strings.xml (Arabic) 2023-04-07 21:47:32 +02:00
Eugen Rochko
8e5fd48ecd New translations strings.xml (French) 2023-04-07 21:47:31 +02:00
Eugen Rochko
b2bca9dd2c New translations strings.xml (Romanian) 2023-04-07 21:47:30 +02:00
Eugen Rochko
b8c0dc3181 New translations strings.xml (Belarusian) 2023-04-07 21:47:29 +02:00
Eugen Rochko
cccdc5292e New translations strings.xml (Greek) 2023-04-07 21:47:28 +02:00
Eugen Rochko
76d77a0e7a New translations strings.xml (Thai) 2023-04-07 21:47:27 +02:00
Eugen Rochko
e737f4bf9a New translations strings.xml (Indonesian) 2023-04-07 21:47:26 +02:00
Eugen Rochko
391db2f1c9 New translations strings.xml (Icelandic) 2023-04-07 21:47:25 +02:00
Eugen Rochko
359d61183c New translations strings.xml (Ukrainian) 2023-04-07 21:47:24 +02:00
Eugen Rochko
46fd05d88e New translations strings.xml (Dutch) 2023-04-07 21:47:23 +02:00
Eugen Rochko
cde22a0945 New translations strings.xml (Czech) 2023-04-07 21:47:22 +02:00
Eugen Rochko
111b7e25c5 New translations strings.xml (Spanish) 2023-04-07 21:47:21 +02:00
Grishka
4f8d8f0c8d Welcome fragment redesign again
# Conflicts:
#	mastodon/src/main/res/values/strings.xml
#	mastodon/src/main/res/values/styles.xml
2023-04-07 22:44:28 +03:00
Grishka
915b0603d0 Reblog -> boost 2023-04-07 22:42:16 +03:00
Grishka
849888d128 Welcome fragment redesign again 2023-04-07 22:40:00 +03:00
sk
6ec43a6f86 slightly smaller collapsed height
closes sk22#480
2023-04-07 18:45:11 +02:00
sk
df93a1a845 increase max height 2023-04-07 18:42:18 +02:00
sk
41a70a353c distinct default languages
closes sk22#487
2023-04-07 18:21:23 +02:00
sk
8d69bcfd4b new profile counters for account card
closes sk22#483
2023-04-07 18:08:57 +02:00
sk
0ef30f82a7 fix disappearing no-alt indicator
closes sk22#484
2023-04-07 17:16:45 +02:00
sk
be60e78ea6 improve external share behavior 2023-04-07 16:58:02 +02:00
sk
5434325fa8 fix header alignments… again 2023-04-07 16:30:49 +02:00
sk
0a04c9357c Revert "display reblog popup by default"
This reverts commit 21c4cef397.

okay, so, i think i'll keep reblog as a default. i fear that exposing everyone
to an overwhelming menu (you literally have to *decide* for a visibility!)
when just pressing reblog might not be a good idea. i'll just have "confirm
before reblogging" as an option in the settings instead
https://floss.social/@megalodon/110157968813469351
2023-04-07 16:20:29 +02:00
Eugen Rochko
075aab8074 New translations strings.xml (Greek) 2023-04-07 16:16:35 +02:00
sk
21c4cef397 display reblog popup by default 2023-04-07 16:04:35 +02:00
sk
4b2fcd760a add option to confirm before reblog
closes sk22#456
2023-04-07 15:29:43 +02:00
Eugen Rochko
6ebe4c86af New translations strings.xml (Greek) 2023-04-07 15:16:19 +02:00
Pegasus89
39ea51c317 Translated using Weblate (Croatian)
Currently translated at 12.5% (2 of 16 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/hr/
2023-04-07 10:51:45 +00:00
Pegasus89
cd668e1bba Translated using Weblate (Croatian)
Currently translated at 97.4% (265 of 272 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/hr/
2023-04-07 10:51:45 +00:00
AiOO
916bd68a16 Translated using Weblate (Korean)
Currently translated at 100.0% (272 of 272 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/ko/
2023-04-07 10:51:45 +00:00
sk22
4aa7ff6f9c Translated using Weblate (Spanish)
Currently translated at 100.0% (272 of 272 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/es/
2023-04-07 10:51:45 +00:00
Anonymous
38fb05a38b Translated using Weblate (Russian)
Currently translated at 92.2% (251 of 272 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/ru/
2023-04-07 10:51:45 +00:00
poesty
aa919867c8 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (272 of 272 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/zh_Hans/
2023-04-07 10:51:45 +00:00
Eugen Rochko
0925c8c582 New translations strings.xml (Spanish) 2023-04-06 21:52:50 +02:00
sk
9824b5fb56 allow boosting with every visibility
closes sk22#486
2023-04-06 20:24:40 +02:00
sk
78fcf31e34 remove unused crowdin.yml 2023-04-06 20:16:33 +02:00
sk
eadb62d3a8 fix wrong rel=me link on website 2023-04-06 20:16:26 +02:00
sk
f6279fcc0c Merge branch 'l10n_fr' of codeberg.org:butterflyoffire/megalodon 2023-04-06 20:08:46 +02:00
Eugen Rochko
a683fdce62 New translations strings.xml (Greek) 2023-04-06 18:46:34 +02:00
Eugen Rochko
b958299446 New translations strings.xml (Greek) 2023-04-06 17:45:19 +02:00
LucasGGamerM
7a350c2685 Merge branch 'master' of https://github.com/LucasGGamerM/moshidon 2023-04-05 20:48:53 -03:00
LucasGGamerM
7da2c06670 chore: remove on PR nightly build 2023-04-05 15:11:27 -03:00
FineFindus
dd4bad706b fix(notification): saved used ids 2023-04-05 19:54:26 +02:00
Eugen Rochko
3f80be8377 New translations strings.xml (Greek) 2023-04-05 16:29:26 +02:00
Eugen Rochko
ced0accde5 New translations strings.xml (Belarusian) 2023-04-05 12:06:47 +02:00
Eugen Rochko
b454ff5ec7 New translations strings.xml (Belarusian) 2023-04-05 11:07:06 +02:00
Eugen Rochko
45af198f32 New translations strings.xml (Greek) 2023-04-05 02:04:08 +02:00
Eugen Rochko
ff374f8899 New translations strings.xml (Greek) 2023-04-05 00:46:17 +02:00
Eugen Rochko
faecb3bc4b New translations strings.xml (Greek) 2023-04-04 20:21:01 +02:00
Eugen Rochko
6b893fadef New translations short_description.txt (Greek) 2023-04-04 17:47:01 +02:00
Eugen Rochko
c328467a41 New translations strings.xml (Greek) 2023-04-04 17:47:00 +02:00
Eugen Rochko
182325470b New translations full_description.txt (Greek) 2023-04-04 17:46:59 +02:00
Eugen Rochko
f330ad71ac New translations full_description.txt (Greek) 2023-04-04 16:06:32 +02:00
LucasGGamerM
5d253a39b2 refactor: move the auto-updater settings to match megalodon 2023-04-03 17:10:27 -03:00
LucasGGamerM
e84a92fedc feat: add link to up-to-date nightly build in settings 2023-04-03 17:09:07 -03:00
LucasGGamerM
6bc6aca17e refactor: remove the auto updater from nightly builds 2023-04-03 16:49:25 -03:00
Eugen Rochko
ba0c064f36 New translations full_description.txt (Chinese Traditional) 2023-04-03 16:47:01 +02:00
LucasGGamerM
a7261bec47 chore: update nightly builds link on readme 2023-04-03 10:13:33 -03:00
LucasGGamerM
6f52e5de76 chore: change nightly builds action name 2023-04-03 09:30:05 -03:00
LucasGGamerM
f329f7a241 feat: provide apk instead of zip in nightly builds 2023-04-03 09:28:50 -03:00
LucasGGamerM
3eaff4cb4c Revert "fix: maybe fix crashes on the change of themes on nightly build"
This reverts commit cf0b1cf035.
2023-04-02 20:00:15 -03:00
LucasGGamerM
9bcae3f893 Revert "fix: actually fixing the crash on change of themes on nightly builds"
This reverts commit 6d094af6d5.
2023-04-02 20:00:15 -03:00
LucasGGamerM
6d094af6d5 fix: actually fixing the crash on change of themes on nightly builds 2023-04-02 19:52:44 -03:00
LucasGGamerM
cf0b1cf035 fix: maybe fix crashes on the change of themes on nightly build 2023-04-02 19:45:44 -03:00
LucasGGamerM
7c11a12e9a fix: padding inconsistencies on status footer
Fixed padding inconsistencies on the Status footer
2023-04-02 19:04:12 -03:00
LucasGGamerM
e244f63949 Merge branch 'master' of https://github.com/LucasGGamerM/moshidon 2023-04-02 14:08:20 -03:00
LucasGGamerM
c4a390820d Merge remote-tracking branch 'weblate/master' 2023-04-02 14:06:29 -03:00
LucasGGamerM
1c0b62ac30 chore: still debugging the signing issue 2023-04-02 13:27:29 -03:00
LucasGGamerM
eacaf214e8 chore: debugging the signing process for nightly 2023-04-02 13:14:14 -03:00
LucasGGamerM
1369756e1e chore maybe fixing this again 2023-04-02 12:26:19 -03:00
LucasGGamerM
20803df255 Merge branch 'master' of https://github.com/LucasGGamerM/moshidon 2023-04-02 12:14:25 -03:00
LucasGGamerM
80931b8948 chore: debugging the issue with github actions 2023-04-02 12:13:57 -03:00
LucasGGamerM
167597bc9f chore: still in the process of fixing github actions 2023-04-02 12:07:41 -03:00
LucasGGamerM
93dcc12f8d chore: trying to fix android.yml
I forgot that chore is the keyword for this stuff
2023-04-02 12:02:42 -03:00
LucasGGamerM
1287dff879 refactor: changing back the location of the keystore
This is bullshit. Why is this not working?
2023-04-02 11:56:06 -03:00
LucasGGamerM
6bf6e38384 Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (42 of 42 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/pt_BR/
2023-04-02 11:39:56 +00:00
gallegonovato
a1f8cdd76b Translated using Weblate (Spanish)
Currently translated at 100.0% (33 of 33 strings)

Translation: Moshidon/metadata
Translate-URL: https://translate.codeberg.org/projects/moshidon/metadata/es/
2023-04-02 11:39:55 +00:00
gallegonovato
de48c48b49 Translated using Weblate (Spanish)
Currently translated at 21.2% (7 of 33 strings)

Translation: Moshidon/metadata
Translate-URL: https://translate.codeberg.org/projects/moshidon/metadata/es/
2023-04-02 11:39:55 +00:00
ewm
27f0af4f0b Translated using Weblate (Polish)
Currently translated at 100.0% (41 of 41 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/pl/
2023-04-02 11:39:55 +00:00
poesty
4226f776c1 Translated using Weblate (Chinese (Simplified))
Currently translated at 97.5% (40 of 41 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/zh_Hans/
2023-04-02 11:39:55 +00:00
gallegonovato
f1e4eae858 Translated using Weblate (Spanish)
Currently translated at 100.0% (41 of 41 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/es/
2023-04-02 11:39:55 +00:00
gallegonovato
4647fd6ee7 Translated using Weblate (Spanish)
Currently translated at 100.0% (33 of 33 strings)

Translation: Moshidon/metadata
Translate-URL: https://translate.codeberg.org/projects/moshidon/metadata/es/
2023-04-02 11:39:55 +00:00
ewm
3a965500e8 Translated using Weblate (Polish)
Currently translated at 100.0% (40 of 40 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/pl/
2023-04-02 11:39:55 +00:00
Oliebol
7a9bb807f0 Translated using Weblate (Dutch)
Currently translated at 80.0% (32 of 40 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/nl/
2023-04-02 11:39:55 +00:00
gallegonovato
694f0044cc Translated using Weblate (Spanish)
Currently translated at 100.0% (40 of 40 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/es/
2023-04-02 11:39:55 +00:00
dontobi
27696e4f0f Translated using Weblate (German)
Currently translated at 100.0% (40 of 40 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/de/
2023-04-02 11:39:55 +00:00
dontobi
7ec3d4d50b Translated using Weblate (German)
Currently translated at 100.0% (33 of 33 strings)

Translation: Moshidon/metadata
Translate-URL: https://translate.codeberg.org/projects/moshidon/metadata/de/
2023-04-02 11:39:55 +00:00
ewm
803b1cd21a Translated using Weblate (Polish)
Currently translated at 100.0% (38 of 38 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/pl/
2023-04-02 11:39:55 +00:00
Andrewblasco
125d39b019 Translated using Weblate (Spanish)
Currently translated at 100.0% (38 of 38 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/es/
2023-04-02 11:39:55 +00:00
tygyh
63d1d9f49a Translated using Weblate (Swedish)
Currently translated at 12.5% (4 of 32 strings)

Translation: Moshidon/metadata
Translate-URL: https://translate.codeberg.org/projects/moshidon/metadata/sv/
2023-04-02 11:39:55 +00:00
gallegonovato
6832cc8de2 Translated using Weblate (Spanish)
Currently translated at 100.0% (32 of 32 strings)

Translation: Moshidon/metadata
Translate-URL: https://translate.codeberg.org/projects/moshidon/metadata/es/
2023-04-02 11:39:55 +00:00
Andrewblasco
f97effb042 Translated using Weblate (Spanish)
Currently translated at 100.0% (32 of 32 strings)

Translation: Moshidon/metadata
Translate-URL: https://translate.codeberg.org/projects/moshidon/metadata/es/
2023-04-02 11:39:55 +00:00
Andrewblasco
3e233d1f72 Translated using Weblate (Spanish)
Currently translated at 100.0% (32 of 32 strings)

Translation: Moshidon/metadata
Translate-URL: https://translate.codeberg.org/projects/moshidon/metadata/es/
2023-04-02 11:39:55 +00:00
gallegonovato
f07f1bf0e2 Translated using Weblate (Spanish)
Currently translated at 100.0% (32 of 32 strings)

Translation: Moshidon/metadata
Translate-URL: https://translate.codeberg.org/projects/moshidon/metadata/es/
2023-04-02 11:39:55 +00:00
Andrewblasco
8eb66a049e Translated using Weblate (Spanish)
Currently translated at 100.0% (38 of 38 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/es/
2023-04-02 11:39:55 +00:00
LucasGGamerM
9578b139a9 Revert "refactor: build.gradle tinkering"
This reverts commit 4299e15ad2.
2023-04-01 21:27:11 -03:00
LucasGGamerM
4299e15ad2 refactor: build.gradle tinkering
Work plz i want to sleep
2023-04-01 21:24:19 -03:00
LucasGGamerM
1dceb02e09 Merge branch 'master' of https://github.com/LucasGGamerM/moshidon 2023-04-01 21:20:19 -03:00
LucasGGamerM
32bfdd231a refactor: changing signing key location
Why am I doing this to myself?
2023-04-01 21:19:57 -03:00
LucasGGamerM
05b2d603f1 fix: maybe fix nightly builds again
Whyyyyyyy
2023-04-01 21:15:19 -03:00
LucasGGamerM
e7967eadc5 feat: using proper signing config for nightly flavor 2023-04-01 21:06:46 -03:00
LucasGGamerM
001873998a feat: updating .gitignore 2023-04-01 21:04:30 -03:00
LucasGGamerM
3d834a0c44 fix: maybe fixing gradle build error on nightly build
Github actions is such a pain
2023-04-01 21:00:30 -03:00
LucasGGamerM
35dcc44fe8 Revert "feat: add build.gradle parameters for nightly builds"
This reverts commit 14775aeb67.
2023-04-01 20:57:18 -03:00
LucasGGamerM
81f4934282 style: remove whitespace on strings_mo.xml 2023-04-01 20:48:49 -03:00
LucasGGamerM
f2335ff2d3 Merge branch 'master' of https://github.com/LucasGGamerM/moshidon 2023-04-01 20:47:14 -03:00
LucasGGamerM
75161fc694 feat: add proper nightly signing to android.yml 2023-04-01 20:40:10 -03:00
LucasGGamerM
14775aeb67 feat: add build.gradle parameters for nightly builds 2023-04-01 20:38:51 -03:00
LucasGGamerM
5979341fb9 Update android.yml 2023-04-01 18:23:46 -03:00
LucasGGamerM
d86509233f fix: maybe fix the signing process 2023-04-01 18:18:36 -03:00
LucasGGamerM
d6d45cd9a5 Update android.yml 2023-04-01 18:15:06 -03:00
LucasGGamerM
21e940c94d fx: maybe fix the error on nightly builds 2023-04-01 18:00:36 -03:00
LucasGGamerM
f3ad600c94 feat: add signing key to the nightly build 2023-04-01 17:58:13 -03:00
LucasGGamerM
72e0a9c32e feat: make nightly builds require signing 2023-04-01 16:32:15 -03:00
LucasGGamerM
c791833fbe Merge branch 'master' of https://github.com/LucasGGamerM/moshidon 2023-04-01 15:32:40 -03:00
LucasGGamerM
bcac023d33 feat: add a toggle for swapping between reblog and bookmark notification actions 2023-04-01 15:32:01 -03:00
LucasGGamerM
7459181fa9 feat: make uniform notification icons setting false by default
I set these as true by default when merging because I liked the Mo, now lets make it false by default because Its cooler
2023-04-01 14:22:18 -03:00
LucasGGamerM
ef19a1ad09 Update README.md 2023-04-01 11:39:20 -03:00
LucasGGamerM
41446cde38 Update README.md 2023-04-01 11:34:09 -03:00
Eugen Rochko
8d7aaee5b9 New translations strings.xml (Dutch) 2023-04-01 15:16:39 +02:00
LucasGGamerM
44509bb274 feat: change Android CI to Nightly Builds
This is in android.yml in github workflows
2023-03-31 20:37:07 -03:00
LucasGGamerM
54d9c315e5 Update README.md 2023-03-31 20:35:34 -03:00
LucasGGamerM
9f8f7adb26 Revert "refactor: removing name from release"
This reverts commit c2341070f5.
2023-03-31 20:30:17 -03:00
LucasGGamerM
c2341070f5 refactor: removing name from release 2023-03-31 20:26:35 -03:00
LucasGGamerM
20af9eb6f4 fix: syntax error 2023-03-31 20:23:06 -03:00
LucasGGamerM
36bb1ea8af feat: add nightly download button
I have no idea if it will work, but hopefully it does!
2023-03-31 20:21:43 -03:00
LucasGGamerM
7d43105925 refactor: remove unused imports in MainActivity 2023-03-31 16:24:09 -03:00
LucasGGamerM
ebb3f3c5ae feat: add on push build workflow 2023-03-31 16:21:14 -03:00
LucasGGamerM
271815fa53 Merge pull request #145 from Mattis142/MonochromeNightly
New monochrome icon and removal of duplicate debug icons
2023-03-31 14:05:04 -03:00
LucasGGamerM
8570bdb4c0 Merge pull request #144 from Mattis142/CenterDebugIcon
feat: Small changes to the debug icon
2023-03-31 14:01:02 -03:00
Mattis
092a089580 New monochrome icon and removal of duplicate debug icons 2023-03-31 17:17:36 +02:00
Mattis142
f2af2cd9af Merge branch 'LucasGGamerM:master' into CenterDebugIcon 2023-03-31 15:19:52 +02:00
Mattis
2a8e4231b4 Small changes to the debug icon 2023-03-31 15:17:27 +02:00
LucasGGamerM
c3cb082de8 feat: add new nightly icon 2023-03-30 18:05:01 -03:00
LucasGGamerM
20b6d15c2e feat: add auto-updater to the nightly flavor 2023-03-30 14:37:05 -03:00
LucasGGamerM
5ec762ac0d feat: add nightly flavor to the app 2023-03-30 14:20:10 -03:00
Grishka
8a7e910e7c Reblog -> boost 2023-03-30 19:14:12 +03:00
Grishka
72d72d443e Limit aspect ratio to 9:20 2023-03-30 18:53:59 +03:00
LucasGGamerM
7f44c48c12 Merge pull request #140 from Mattis142/NewDebugIcon
feat: new Debug Icon
2023-03-29 11:19:27 -03:00
Mattis
2a071bc5de New Debug Icon 2023-03-29 12:55:11 +02:00
Eugen Rochko
68cba2de63 New translations strings.xml (Icelandic) 2023-03-29 00:29:42 +02:00
Eugen Rochko
5a914f9c0e New translations strings.xml (Thai) 2023-03-28 21:06:33 +02:00
Eugen Rochko
b0e6805a20 New translations strings.xml (Czech) 2023-03-28 16:34:35 +02:00
Eugen Rochko
21e7e44c01 New translations strings.xml (Czech) 2023-03-28 15:36:30 +02:00
LucasGGamerM
ded9b70483 refactor: moving settings around and fixing a small bug with the publish button text button
Yes, I am doing 2 things in the same commit. Anyhow, this should make for a settings page reordering and a better cohesion with the settings sub parts. This should be a stepping stone to the new settings subfragments system
2023-03-27 15:59:38 -03:00
Grishka
7b0a3f0f96 More media layout optimizations 2023-03-27 04:04:16 +03:00
Eugen Rochko
f7df4abdae New translations strings.xml (Spanish) 2023-03-26 17:05:29 +02:00
LucasGGamerM
0019f2183a style: add some tabs in fragment_compose.xml 2023-03-26 10:27:16 -03:00
LucasGGamerM
68f77a6c8a fix: wrong padding values for the schedule icon in ComposeFragment 2023-03-26 10:26:44 -03:00
Eugen Rochko
7674ceefe9 New translations strings.xml (Ukrainian) 2023-03-25 20:42:18 +01:00
FineFindus
a4d07d4307 fix: recents URL not showing after open in share menu 2023-03-25 20:24:34 +01:00
Eugen Rochko
4be575c534 New translations strings.xml (Ukrainian) 2023-03-25 19:25:16 +01:00
LucasGGamerM
903e844aad Merge pull request #136 from FineFindus/fix/missing-recents-url
fix(recent-url): show settings URL
2023-03-25 14:48:06 -03:00
LucasGGamerM
a6b299b029 Merge pull request #135 from FineFindus/fix/show-new-posts
fix(hometimeline): scroll up on tapping new post button
2023-03-25 14:46:05 -03:00
FineFindus
05f9ae8d76 fix(hometimeline): scroll up on tapping new post button 2023-03-25 17:55:15 +01:00
FineFindus
314afed9de fix(recent-url): show settings URL 2023-03-25 17:32:10 +01:00
Eugen Rochko
dd0f0a7d5a New translations strings.xml (Indonesian) 2023-03-25 04:22:02 +01:00
Eugen Rochko
759b44c224 New translations strings.xml (Indonesian) 2023-03-25 03:16:02 +01:00
sk
ebdd1a0b03 rename version 2023-03-24 20:05:42 +01:00
sk
6c44575f7a bump version 2023-03-24 20:04:35 +01:00
sk
8be832239a Merge remote-tracking branch 'upstream/l10n_master' 2023-03-24 20:03:31 +01:00
sk
c7be202430 Merge remote-tracking branch 'weblate/main' 2023-03-24 20:03:21 +01:00
sk
244c5dc6b4 bump version 2023-03-24 19:58:10 +01:00
poesty
6bbb9a638e Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (272 of 272 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/zh_Hans/
2023-03-24 18:40:14 +00:00
Espasant3
44041b136a Translated using Weblate (Galician)
Currently translated at 100.0% (272 of 272 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/gl/
2023-03-24 18:40:14 +00:00
ihor_ck
7e17c30ce2 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (272 of 272 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/uk/
2023-03-24 18:40:14 +00:00
McKris
c4d3d1b409 Translated using Weblate (Polish)
Currently translated at 100.0% (272 of 272 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/pl/
2023-03-24 18:40:14 +00:00
Linerly
03de63754b Translated using Weblate (Indonesian)
Currently translated at 100.0% (272 of 272 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/id/
2023-03-24 18:40:14 +00:00
Choukajohn
0e506f0b1a Translated using Weblate (French)
Currently translated at 100.0% (272 of 272 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/fr/
2023-03-24 18:40:14 +00:00
gallegonovato
a2ab752870 Translated using Weblate (Spanish)
Currently translated at 100.0% (272 of 272 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/es/
2023-03-24 18:40:14 +00:00
sk22
eaa032828a Translated using Weblate (German)
Currently translated at 100.0% (272 of 272 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/de/
2023-03-24 18:40:14 +00:00
sk
cceb0b4c6c Merge remote-tracking branch 'upstream/master' 2023-03-24 19:33:40 +01:00
sk
a58640a718 fix crash when instance not yet loaded
closes sk22#474
2023-03-24 19:04:13 +01:00
Eugen Rochko
920384b26c New translations strings.xml (Dutch) 2023-03-24 16:26:08 +01:00
Grishka
cf4604e0d8 More media layout optimizations 2023-03-24 01:33:33 +03:00
Grishka
e873dd7d0a New sensitive media design 2023-03-24 00:33:02 +03:00
Grishka
4492e940e5 Media attachments minor fixes 2023-03-23 22:36:52 +03:00
LucasGGamerM
880c34c3f0 fix: NPE in onHidden method
Why is this the one single method that I have commented in and out 5 times?
2023-03-23 14:09:18 -03:00
LucasGGamerM
6d7bf34f51 Merge pull request #131
fix(home-double-tab): scroll up for new posts
2023-03-23 13:52:39 -03:00
FineFindus
bc10a9fcf5 fix(home-double-tab): scroll up for new posts
Fixes an issue, where tapping the home tab would cycle instead of showing new posts
2023-03-23 16:03:15 +01:00
Eugen Rochko
193a2c4f70 New translations strings.xml (German) 2023-03-23 13:42:28 +01:00
Eugen Rochko
793dec98b2 New translations strings.xml (Vietnamese) 2023-03-23 07:36:02 +01:00
Eugen Rochko
11ddf8015d New translations strings.xml (Galician) 2023-03-23 05:17:18 +01:00
LucasGGamerM
b6d969bc7b feat: re-adds markers to the home timeline 2023-03-22 21:29:13 -03:00
Grishka
c833c03dc3 New play button & alt text support for gifs & videos 2023-03-23 03:15:15 +03:00
LucasGGamerM
b799b54c9e fix: re-adds the Settings toggle for the no-alt-indicator 2023-03-22 21:09:03 -03:00
LucasGGamerM
5389f05ea8 fix: reimplements the no-alt-text badge and fixes crashes 2023-03-22 21:07:13 -03:00
LucasGGamerM
b4bf4a5bf5 fix: notification badge always reloading. Fixes #130 2023-03-22 21:02:30 -03:00
LucasGGamerM
6d9c87c9bc style: cleaning up old useless comments in the HomeFragment 2023-03-22 20:48:40 -03:00
Grishka
30b0d226b5 Tab bar M3 design 2023-03-23 01:49:39 +03:00
Grishka
8afad21113 Add "error" M3 button style 2023-03-23 01:09:03 +03:00
Grishka
6b5e5b0f25 More minor tweaks 2023-03-23 00:58:38 +03:00
Grishka
3c0ab6822f Add elevation effect stuff to a base class for all fragments that need it 2023-03-23 00:31:17 +03:00
Eugen Rochko
1753bdbd8b New translations strings.xml (Thai) 2023-03-22 17:21:08 +01:00
Grishka
f7215d00ca Profile about tab redesign 2023-03-22 17:22:22 +03:00
Grishka
43bbe9be0f Fix LinkedTextView breaking XML layout editor 2023-03-22 17:01:13 +03:00
Grishka
477a691c9e Fix z-order and remove V.dp from more custom views 2023-03-22 16:55:09 +03:00
Grishka
e5d60050a2 Add filters to AccontTimelineFragment 2023-03-22 03:22:04 +03:00
Grishka
9a698fda18 Merge branch 'master' into m3_redesign 2023-03-22 02:47:13 +03:00
Grishka
d6e563486b Fix alt text button 2023-03-22 02:46:48 +03:00
Grishka
d5701c1073 Merge branch 'master' into m3_redesign 2023-03-22 02:41:26 +03:00
LucasGGamerM
e8abc0bbd2 feat: make it compile again
I am tired as hell someone donates plz
2023-03-21 20:40:55 -03:00
Grishka
0112bfa9c4 Fix #547 2023-03-22 02:38:58 +03:00
Grishka
5951611fb0 Fix #551 2023-03-22 02:34:25 +03:00
Grishka
955b9a4b2b Featured tab in profiles 2023-03-22 02:30:42 +03:00
LucasGGamerM
0589612df9 Merge remote-tracking branch 'megalodon_main/main'
# Conflicts:
#	README.md
#	mastodon/build.gradle
#	mastodon/src/main/java/org/joinmastodon/android/GlobalUserPreferences.java
#	mastodon/src/main/java/org/joinmastodon/android/PushNotificationReceiver.java
#	mastodon/src/main/java/org/joinmastodon/android/api/session/AccountSessionManager.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/BaseStatusListFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/ComposeFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/HomeFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/SettingsFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/discover/DiscoverAccountsFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/discover/DiscoverNewsFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/discover/TrendingHashtagsFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/model/NotificationAction.java
#	mastodon/src/main/java/org/joinmastodon/android/model/Status.java
#	mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/ExtendedFooterStatusDisplayItem.java
#	mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/ReblogOrReplyLineStatusDisplayItem.java
#	mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/StatusDisplayItem.java
#	mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/TextStatusDisplayItem.java
#	mastodon/src/main/java/org/joinmastodon/android/ui/text/ClickableLinksDelegate.java
#	mastodon/src/main/java/org/joinmastodon/android/ui/text/LinkSpan.java
#	mastodon/src/main/java/org/joinmastodon/android/ui/utils/MediaAttachmentViewController.java
#	mastodon/src/main/java/org/joinmastodon/android/ui/utils/UiUtils.java
#	mastodon/src/main/res/layout/display_item_gifv.xml
#	mastodon/src/main/res/layout/display_item_photo.xml
#	mastodon/src/main/res/layout/display_item_video.xml
#	mastodon/src/main/res/menu/post.xml
#	mastodon/src/main/res/menu/profile.xml
#	mastodon/src/main/res/values-es-rES/strings_sk.xml
#	mastodon/src/main/res/values-fr-rFR/strings_sk.xml
#	mastodon/src/main/res/values-gl-rES/strings_sk.xml
#	mastodon/src/main/res/values-in-rID/strings_sk.xml
#	mastodon/src/main/res/values-pl-rPL/strings_sk.xml
#	mastodon/src/main/res/values-uk-rUA/strings_sk.xml
#	metadata/it-IT/full_description.txt
#	metadata/zh-Hans/short_description.txt
2023-03-21 20:25:51 -03:00
LucasGGamerM
af2d951b50 style: suppress lint on addMediaAttachment 2023-03-21 20:03:15 -03:00
Jacoco
132b672441 Improvements for Pleroma/Akkoma (#445)
* Reply Visibility on Plemora

* Sort statuses in thread

* Get default visibility and language from account if preferences fail

* Fix for Mentions tab in notifications on Pleroma

* Mark status as sensitive if not already when spoilertext is present

* Integrating Pleroma quoting for new posts

* move string to strings_sk

* use null instead of empty string

* change string

* fix crash due to null value

* update string

---------

Co-authored-by: sk <sk22@mailbox.org>
2023-03-21 20:01:47 -03:00
sk
ffb7cc5c18 don't remove badge if loaded from cache 2023-03-21 19:55:34 -03:00
sk
5a9a3eb140 session-specific notification badge
fix sk22#470
2023-03-21 19:55:34 -03:00
sk
5395855775 feat: implement notification badge using markers from @sk22.
Thank you a lot man! This improvement is amazing
2023-03-21 19:55:34 -03:00
LucasGGamerM
9d60924512 refactor: removing unused piece of code 2023-03-21 19:54:20 -03:00
LucasGGamerM
1680c635dc Revert "feat(tabs/notifications): add unread badge"
This reverts commit 4ecd525f
2023-03-21 19:47:51 -03:00
LucasGGamerM
898fbcc52b Revert "refactor(notifications-tab/badge): use improved implementation"
This reverts commit ac561549
2023-03-21 19:40:11 -03:00
LucasGGamerM
d0e4578af0 fix: NPE when sharing an image and the URL is null 2023-03-21 18:51:15 -03:00
sk
2d31b726ac Merge branch 'main' of github.com:sk22/megalodon 2023-03-21 16:04:43 +01:00
sk22
d2f295ef88 Update README.md 2023-03-21 16:03:35 +01:00
sk
d1b53554ce bump version 2023-03-21 15:59:40 +01:00
sk
ec5db122d0 full text can have emojis, too 2023-03-21 15:56:44 +01:00
sk
0216e22fcc don't remove badge if loaded from cache 2023-03-21 15:25:01 +01:00
sk
5734b19d8c remove unused variable 2023-03-21 15:14:25 +01:00
Eugen Rochko
cc8c818e13 New translations strings.xml (Slovenian) 2023-03-21 11:52:06 +01:00
sk
e58aeec097 query notifications on load posts
closes sk22#471
2023-03-21 10:22:09 +01:00
sk
58b000927a session-specific notification badge
fix sk22#470
2023-03-21 10:03:31 +01:00
sk
797642b972 fix profile fragment crash
closes sk22#469
2023-03-21 09:56:44 +01:00
Eugen Rochko
2e1f273d78 New translations strings.xml (Chinese Traditional) 2023-03-21 06:38:54 +01:00
Eugen Rochko
35d6800877 New translations strings.xml (Chinese Traditional) 2023-03-21 05:17:21 +01:00
sk
781856b822 bump version 2023-03-21 00:55:11 +01:00
sk
ff272179e7 implement notification badge using markers 2023-03-21 00:52:20 +01:00
sk
bec47f40f7 colorful swipe-to-refresh spinner
closes sk22#455
2023-03-20 23:25:29 +01:00
sk
f9607a434a use accent color for notif title
closes sk22#461
2023-03-20 22:19:15 +01:00
sk
b650ca85bc Merge remote-tracking branch 'upstream/master' 2023-03-20 21:51:15 +01:00
LucasGGamerM
4ceacae954 refactor: simplify code in 56e5877040 2023-03-20 16:36:42 -03:00
LucasGGamerM
56e5877040 fix(custom-local-timelines): fix NPE in ended polls. Fixes #110 2023-03-20 16:09:06 -03:00
Eugen Rochko
91e154bbee New translations strings.xml (Italian) 2023-03-20 20:01:49 +01:00
sk
f4365ed163 fix context menu resizing
closes sk22#467
2023-03-20 19:17:22 +01:00
Eugen Rochko
0c02b0cb68 New translations strings.xml (Dutch) 2023-03-20 18:49:16 +01:00
Gregory K
b0aaa58fa7 Merge pull request #550 from sk22/fix/header-follow-protected-account
Fix following protected account from header
2023-03-20 20:36:11 +03:00
sk
054ab774d5 Merge branch 'fix/header-follow-protected-account' 2023-03-20 18:28:27 +01:00
sk
8ca33b552d fix following protected account from header
closes mastodon#549
2023-03-20 18:23:49 +01:00
sk
6734c2b9f7 add null check for source object
closes sk22#460
2023-03-20 14:22:46 +01:00
sk
c484477d6a persist translation between display items
closes sk22#466
2023-03-20 11:24:47 +01:00
sk
d9b5223749 collapse regardless of in timeline
re: sk22#462
2023-03-20 10:48:00 +01:00
sk
55856450b3 hopefully fix broken compact reply line 2023-03-20 10:22:43 +01:00
sk
bb28a3bf83 Merge remote-tracking branch 'upstream/master' 2023-03-19 18:51:10 +01:00
LucasGGamerM
c0484de506 feat: add toggle to disable double tap to swipe action 2023-03-19 11:20:46 -03:00
LucasGGamerM
addb1b27bb Merge remote-tracking branch 'mastodon/master' 2023-03-18 22:39:08 -03:00
LucasGGamerM
96ecdcd33c fix(custom-local-timelines): translate button now works 2023-03-18 22:36:51 -03:00
LucasGGamerM
e3f445cbed fix(custom-local-timelines): polls are now votable 2023-03-18 22:21:09 -03:00
LucasGGamerM
8ccb505165 Revert "refactor(account-switcher-sheet): remove duplicated code"
This reverts commit 9c01f7a522.
2023-03-18 17:03:15 -03:00
LucasGGamerM
98c193ac51 Merge pull request #125
Feat: share URL to open
2023-03-18 16:49:52 -03:00
LucasGGamerM
b966d5626b feat: adding nord to readme 2023-03-18 16:43:37 -03:00
FineFindus
9c01f7a522 refactor(account-switcher-sheet): remove duplicated code 2023-03-18 20:09:07 +01:00
FineFindus
f3c9f52d37 feat(share): add option open URL 2023-03-18 20:02:26 +01:00
LucasGGamerM
1df61780a3 Update README.md 2023-03-18 15:32:57 -03:00
LucasGGamerM
2be3bca70e Update README.md 2023-03-18 15:31:06 -03:00
LucasGGamerM
18ec63b9b4 fix: add missing red color 2023-03-18 15:09:03 -03:00
LucasGGamerM
6781fb6e25 fix: typo 2023-03-18 15:08:23 -03:00
LucasGGamerM
852bc6ba24 Update README.md 2023-03-18 15:06:21 -03:00
LucasGGamerM
223aa7043b fix: MediaGrid and LinkCard inset values too low, causing items to be cut by borders 2023-03-18 14:52:24 -03:00
LucasGGamerM
3178b5f41c fix: NPE when fragment is empty and HomeTabFragment is checking isScrolledToTop() 2023-03-18 13:53:02 -03:00
LucasGGamerM
14665c9a24 Merge pull request #124 from FineFindus/feat/tab-double-tab
Feat: Add tab triple click action
2023-03-18 13:06:43 -03:00
FineFindus
ea823ef0cf feat(NotificationsFragment): switch tab when triple clicking 2023-03-18 16:03:54 +01:00
FineFindus
62d5c7a492 feat(HomeTabFragment): switch timeline when triple clicking
Closes #83. When clicking the HomeTab and the timeline is already scrolled up, the timeline is cycled.
2023-03-18 15:57:13 +01:00
FineFindus
287e75e54a feat(Scrollable): add isScrolledToTop
Checks if the list is already scrolled to the top. Can be used to change the interaction depending on it.
2023-03-18 15:43:14 +01:00
LucasGGamerM
02af385853 feat: redesign account picker sheet 2023-03-17 17:44:17 -03:00
LucasGGamerM
ede2a3e0b5 Revert "feat(external-share): start re-design"
This reverts commit 6e5fa34be6.
2023-03-17 17:16:40 -03:00
LucasGGamerM
66dab9194a Merge pull request #121
Feat: redesign external share sheet
2023-03-17 17:12:12 -03:00
FineFindus
6e5fa34be6 feat(external-share): start re-design 2023-03-17 20:41:12 +01:00
FineFindus
8ce782b578 feat(external-share): use AccountSwitcherSheet 2023-03-17 20:41:07 +01:00
FineFindus
05168b9826 feat(external-share): use transparent background 2023-03-17 20:38:56 +01:00
Grishka
09ffda2605 Merge branch 'master' into m3_redesign 2023-03-17 22:07:51 +03:00
Grishka
039fb0c505 Profile redesign: header 2023-03-17 22:07:28 +03:00
LucasGGamerM
5208195f72 Merge pull request #120
Feat:  Add recents URL sharing (Pixel exclusive)
2023-03-17 15:29:33 -03:00
Gregory K
5e4e56bd2c Merge pull request #545 from FineFindus/fix/empty-search-query
fix(search): check for empty queries
2023-03-17 20:10:02 +03:00
FineFindus
82fac1d4e7 fix(search): check for empty queries
Fixes an error message, which would appear, if the search query was blank.
2023-03-17 16:19:38 +01:00
FineFindus
1dc90f930a fix(recent-url): remove error log message 2023-03-17 16:11:10 +01:00
FineFindus
aa56d160e6 feat(recent-url): add domain to selected status 2023-03-17 15:46:32 +01:00
FineFindus
452eac6fd7 feat(recent-url): add domain to discover fragments 2023-03-17 15:34:45 +01:00
FineFindus
d37a2b9db7 feat(recent-url): add domain to timelines 2023-03-17 15:07:30 +01:00
FineFindus
14e2747599 fix(recent-url): add support for own profile 2023-03-17 13:49:50 +01:00
sk
bf9afba590 bump version 2023-03-17 02:31:23 +01:00
sk
b667afc7cd some barebones calckey compatibility
re: sk22#429
2023-03-17 02:30:21 +01:00
sk
21b0736842 fix null pointer exception
closes sk22#442
2023-03-17 01:28:38 +01:00
sk
8bd3c7cc28 fix crash when navigating while sending
fix sk22#446
2023-03-17 01:23:14 +01:00
sk
4db90b87f4 compare status lang to device locale
re: sk22#458
2023-03-17 01:06:43 +01:00
sk
46fd0be0eb Merge remote-tracking branch 'upstream/l10n_master' 2023-03-17 00:56:38 +01:00
sk
05a966869b Merge remote-tracking branch 'weblate/main' 2023-03-17 00:52:26 +01:00
sk
6fef51fcbb measure text manually
hopefully fix sk22#422
2023-03-17 00:51:22 +01:00
FineFindus
ae7b2f3fc7 feat(recent-url): add url to profiles 2023-03-16 23:21:34 +01:00
sk
d5b6c02b22 content descriptions for compact reblog/reply line 2023-03-16 19:55:56 +01:00
sk
6cd722dbef improve pre draw listener 2023-03-16 19:22:58 +01:00
sk
8dfc1ecae8 reply part before reblog part 2023-03-16 19:14:28 +01:00
sk
fdca799a5f add todo 2023-03-16 18:49:40 +01:00
sk22
def79e591b Translated using Weblate (German)
Currently translated at 96.7% (268 of 277 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/de/
2023-03-16 00:19:12 +00:00
ihor_ck
093a27970d Translated using Weblate (Ukrainian)
Currently translated at 100.0% (263 of 263 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/uk/
2023-03-16 00:19:12 +00:00
McKris
9a1e33a776 Translated using Weblate (Polish)
Currently translated at 100.0% (263 of 263 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/pl/
2023-03-16 00:19:12 +00:00
Linerly
a4a206eae6 Translated using Weblate (Indonesian)
Currently translated at 100.0% (263 of 263 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/id/
2023-03-16 00:19:12 +00:00
Espasant3
21ee5fc2bf Translated using Weblate (Galician)
Currently translated at 100.0% (263 of 263 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/gl/
2023-03-16 00:19:12 +00:00
Choukajohn
7df72e6bc6 Translated using Weblate (French)
Currently translated at 100.0% (263 of 263 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/fr/
2023-03-16 00:19:12 +00:00
gallegonovato
9ceea8de99 Translated using Weblate (Spanish)
Currently translated at 100.0% (263 of 263 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/es/
2023-03-16 00:19:12 +00:00
sk22
79d48a12a9 Translated using Weblate (German)
Currently translated at 100.0% (263 of 263 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/de/
2023-03-16 00:19:12 +00:00
ling0412
473d3a5196 Translated using Weblate (Chinese (Simplified))
Currently translated at 87.5% (14 of 16 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/zh_Hans/
2023-03-16 00:19:12 +00:00
Oliebol
43717634f6 Translated using Weblate (Dutch)
Currently translated at 95.8% (251 of 262 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/nl/
2023-03-16 00:19:11 +00:00
Andrewblasco
6ba8555adf Translated using Weblate (Spanish)
Currently translated at 100.0% (262 of 262 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/es/
2023-03-16 00:19:11 +00:00
AiOO
722ad8c53e Translated using Weblate (Korean)
Currently translated at 100.0% (16 of 16 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/ko/
2023-03-16 00:19:11 +00:00
AiOO
b0b497ed46 Translated using Weblate (Korean)
Currently translated at 100.0% (262 of 262 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/ko/
2023-03-16 00:19:11 +00:00
Espasant3
6c881eccd2 Translated using Weblate (Galician)
Currently translated at 100.0% (16 of 16 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/gl/
2023-03-16 00:19:11 +00:00
gicorada
94b92bd7c1 Translated using Weblate (Italian)
Currently translated at 100.0% (16 of 16 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/it/
2023-03-16 00:19:11 +00:00
gicorada
676b195aee Translated using Weblate (Italian)
Currently translated at 100.0% (262 of 262 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/it/
2023-03-16 00:19:11 +00:00
a_mento
4591731cdc Translated using Weblate (Basque)
Currently translated at 100.0% (262 of 262 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/eu/
2023-03-16 00:19:11 +00:00
Espasant3
fc5eeae9e7 Translated using Weblate (Galician)
Currently translated at 93.7% (15 of 16 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/gl/
2023-03-16 00:19:11 +00:00
ihor_ck
aaa88c45f7 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (16 of 16 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/uk/
2023-03-16 00:19:11 +00:00
McKris
5d91e8030c Translated using Weblate (Polish)
Currently translated at 100.0% (16 of 16 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/pl/
2023-03-16 00:19:11 +00:00
gallegonovato
c9be188d19 Translated using Weblate (Spanish)
Currently translated at 100.0% (16 of 16 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/es/
2023-03-16 00:19:11 +00:00
Linerly
ecc8daa8f1 Translated using Weblate (Indonesian)
Currently translated at 100.0% (16 of 16 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/id/
2023-03-16 00:19:11 +00:00
ihor_ck
5bbe11bf45 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (262 of 262 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/uk/
2023-03-16 00:19:11 +00:00
McKris
e52170abea Translated using Weblate (Polish)
Currently translated at 100.0% (262 of 262 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/pl/
2023-03-16 00:19:11 +00:00
Linerly
0f87fc7924 Translated using Weblate (Indonesian)
Currently translated at 100.0% (262 of 262 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/id/
2023-03-16 00:19:11 +00:00
Espasant3
cc7c4fc95f Translated using Weblate (Galician)
Currently translated at 99.6% (261 of 262 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/gl/
2023-03-16 00:19:11 +00:00
Choukajohn
4a2dcdf701 Translated using Weblate (French)
Currently translated at 100.0% (262 of 262 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/fr/
2023-03-16 00:19:11 +00:00
gallegonovato
ede47af962 Translated using Weblate (Spanish)
Currently translated at 100.0% (262 of 262 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/es/
2023-03-16 00:19:11 +00:00
sk
70e4cb2286 change inline reply notification 2023-03-16 01:18:46 +01:00
LucasGGamerM
f4007dba90 Merge pull request #117
fix(custom-timelines): lookup profile by url
2023-03-15 21:10:20 -03:00
sk
c5e8460516 change notification action names 2023-03-16 01:02:33 +01:00
Jacoco
f852dac1e5 Improvements for Pleroma/Akkoma (#445)
* Reply Visibility on Plemora

* Sort statuses in thread

* Get default visibility and language from account if preferences fail

* Fix for Mentions tab in notifications on Pleroma

* Mark status as sensitive if not already when spoilertext is present

* Integrating Pleroma quoting for new posts

* move string to strings_sk

* use null instead of empty string

* change string

* fix crash due to null value

* update string

---------

Co-authored-by: sk <sk22@mailbox.org>
2023-03-16 00:49:11 +01:00
sk
374626cb32 Merge branch 'main' into pr/FineFindus/449 2023-03-15 23:42:02 +01:00
sk
aefa0b89ae Merge branch 'main' into pr/FineFindus/439 2023-03-15 23:38:33 +01:00
sk
9cc8b2668c fix show thread not working for reposts 2023-03-15 23:31:51 +01:00
sk
94b862a3ff improve reblog/reply line render 2023-03-15 23:27:43 +01:00
sk
f71bb6b78c use pre draw listener instead of post
hopefully fixes sk22#422
2023-03-15 22:36:30 +01:00
sk
499ac8f727 improve compact reply/reblog header 2023-03-15 22:30:57 +01:00
sk
938ae97cac remove click handler for reply line 2023-03-15 21:26:41 +01:00
sk
e2193e8e3c reply line below, compact above 2023-03-15 21:24:25 +01:00
FineFindus
d687abcdc1 fix(custom-timelines): lookup profile by url
Closes #107. Instead of using the (wrong) profileID on CustomTimelines, use the URL, which will be correctly resolved.
2023-03-15 20:05:16 +01:00
sk
16f907c91f show thread reply line 2023-03-15 19:23:20 +01:00
sk
584700225c reply line below avatar 2023-03-15 17:36:07 +01:00
sk
bad72985cb bump version 2023-03-15 12:49:09 +01:00
Grishka
20799ef1a8 Posts redesign wip 2023-03-14 19:17:37 +03:00
sk
56b24420d1 add local-only string 2023-03-14 15:37:06 +01:00
sk
92beac8dff fuck it, indented header line
closes #448
2023-03-14 15:34:05 +01:00
sk
ed1fdba9a5 Merge remote-tracking branch 'upstream/master' 2023-03-14 15:01:30 +01:00
sk
5e194e3079 display both reply and reblog
re: sk22#448
2023-03-14 14:59:11 +01:00
sk
27c2791d6c add reblogged account to known accounts 2023-03-14 14:58:21 +01:00
Grishka
d6bcc9c156 Fix button color 2023-03-14 07:31:01 +03:00
sk
4c85fd4387 use custom string for anonymous reply 2023-03-13 20:06:05 +01:00
sk
80d529d503 display reply header for unknown original poster
re: mastodon#342
2023-03-13 20:00:56 +01:00
sk
c5a19a2334 fix duplicate notification status header 2023-03-13 19:29:40 +01:00
sk
16857bebd9 add tooltip
closes sk22#436
2023-03-13 19:05:22 +01:00
sk
1c340b7c66 fix extra text padding in compose 2023-03-13 18:56:06 +01:00
sk
7d9d8f0aae Merge remote-tracking branch 'upstream/master' 2023-03-13 18:52:52 +01:00
sk
21fc35230c Merge remote-tracking branch 'upstream/master' 2023-03-13 18:51:26 +01:00
Grishka
fc67c82040 Fix #544 2023-03-13 20:46:29 +03:00
Eugen Rochko
a9b828001c New translations strings.xml (Burmese) 2023-03-13 15:08:41 +01:00
Eugen Rochko
be050abf7e New translations strings.xml (Burmese) 2023-03-13 14:01:13 +01:00
Eugen Rochko
2d071ca252 New translations strings.xml (Burmese) 2023-03-13 12:53:22 +01:00
Eugen Rochko
abf94e1e70 New translations strings.xml (Burmese) 2023-03-13 10:01:18 +01:00
Eugen Rochko
2991c7421c New translations strings.xml (Burmese) 2023-03-13 08:59:13 +01:00
Eugen Rochko
834f84f995 New translations strings.xml (Burmese) 2023-03-13 07:58:41 +01:00
Eugen Rochko
6bf713c96c New translations strings.xml (Polish) 2023-03-13 00:35:08 +01:00
Eugen Rochko
72b16be297 New translations strings.xml (Swedish) 2023-03-12 21:53:57 +01:00
Eugen Rochko
0c7f27b3ac New translations strings.xml (Swedish) 2023-03-12 20:47:06 +01:00
LucasGGamerM
6fa930aa9f Revert "feat: add android 14s predictive back gesture. Fixes #116"
This reverts commit 736ec4dbf9.
2023-03-11 20:18:27 -03:00
LucasGGamerM
736ec4dbf9 feat: add android 14s predictive back gesture. Fixes #116 2023-03-11 20:14:58 -03:00
LucasGGamerM
04ed9e76f2 feat: increase corner radius of search box and login box 2023-03-11 20:01:58 -03:00
LucasGGamerM
811304c0c7 fix: login with some pleroma instances. Fixes #114 2023-03-11 19:47:29 -03:00
Eugen Rochko
ca101748eb New translations strings.xml (Belarusian) 2023-03-11 23:37:17 +01:00
Eugen Rochko
3584c123d6 New translations strings.xml (Belarusian) 2023-03-11 22:33:13 +01:00
LucasGGamerM
9a991b8f33 fix: make show alt text indicator settings toggle work 2023-03-11 12:10:19 -03:00
Eugen Rochko
a2fd4be339 New translations title.txt (Urdu (India)) 2023-03-11 14:05:49 +01:00
Eugen Rochko
656364db60 New translations short_description.txt (Urdu (India)) 2023-03-11 14:05:48 +01:00
Eugen Rochko
884347da12 New translations full_description.txt (Urdu (India)) 2023-03-11 14:05:47 +01:00
Eugen Rochko
675c49a922 New translations strings.xml (Urdu (India)) 2023-03-11 14:05:46 +01:00
FineFindus
4d04741fe0 feat(welcome): use URI InputType (#454) 2023-03-11 13:01:11 +01:00
FineFindus
5c7fe9dcb5 fix: disable group divider on EMUI (#453)
Fixes an issues, where the forth menu item does not show up, when the divider is enabled on EMUI devices
2023-03-11 13:00:36 +01:00
Eugen Rochko
a3146d6cdd New translations full_description.txt (Belarusian) 2023-03-11 09:12:18 +01:00
Eugen Rochko
d769f757ed New translations full_description.txt (Belarusian) 2023-03-11 08:04:43 +01:00
LucasGGamerM
b28b70c6b8 feat: add different debug icon and label 2023-03-10 16:43:58 -03:00
LucasGGamerM
c2c5b08659 refactor: remove duplicate function in UiUtils 2023-03-10 16:07:22 -03:00
LucasGGamerM
7460b24fb0 Merge remote-tracking branch 'FineFindus/fix/home-overflow-menu-visibility'
# Conflicts:
#	mastodon/src/main/java/org/joinmastodon/android/ui/utils/UiUtils.java
2023-03-10 16:06:01 -03:00
LucasGGamerM
2531015094 Merge pull request #115 from FineFindus/feat/uri-type
fix: apply URI InputType correctly
2023-03-10 15:55:50 -03:00
FineFindus
2efdf09333 fix: disable group divider on EMUI
Fixes an issues, where the forth menu item does not show up, when the divider is enabled on EMUI devices
2023-03-10 19:41:45 +01:00
FineFindus
30582bf8e3 fix: apply URI InputType correctly 2023-03-10 19:08:45 +01:00
Eugen Rochko
654e3eb36b New translations strings.xml (Japanese) 2023-03-09 23:29:35 +01:00
LucasGGamerM
67e3244655 refactor: remove missing alt text indicator setting until upstream reimplements it 2023-03-09 17:30:16 -03:00
LucasGGamerM
f793bbc711 Merge remote-tracking branch 'mastodon/l10n_master'
# Conflicts:
#	fastlane/metadata/android/ja-JP/full_description.txt
#	fastlane/metadata/android/ru-RU/full_description.txt
#	fastlane/metadata/android/ru-RU/short_description.txt
#	fastlane/metadata/android/tr-TR/full_description.txt
2023-03-09 17:29:40 -03:00
LucasGGamerM
94634781c4 style: add comma 2023-03-09 15:18:07 -03:00
LucasGGamerM
0fbbdb6621 refactor: remove a broken layout import 2023-03-09 15:17:33 -03:00
LucasGGamerM
d3f2049c7d Merge remote-tracking branch 'mastodon/master'
# Conflicts:
#	mastodon/src/main/java/org/joinmastodon/android/fragments/BaseStatusListFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/ComposeFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/NotificationsListFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/report/ReportAddPostsChoiceFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/ImageStatusDisplayItem.java
#	mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/PhotoStatusDisplayItem.java
#	mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/StatusDisplayItem.java
#	mastodon/src/main/java/org/joinmastodon/android/ui/text/ClickableLinksDelegate.java
#	mastodon/src/main/res/layout/display_item_gifv.xml
#	mastodon/src/main/res/layout/display_item_photo.xml
#	mastodon/src/main/res/layout/display_item_video.xml
2023-03-09 15:14:14 -03:00
LucasGGamerM
134b1edb19 fix: make reply by notification visibility consistent with Unlisted by default setting 2023-03-09 15:06:00 -03:00
LucasGGamerM
2489b57e42 refactor: change Unlisted by Default settings item icon to an open lock 2023-03-09 15:02:05 -03:00
LucasGGamerM
ee56ad07e9 Merge pull request #112 from FineFindus/patch-1
fix(translation/de): replace indefinite
2023-03-09 15:00:43 -03:00
LucasGGamerM
e1853cb1f0 Merge branch 'master' of https://github.com/LucasGGamerM/moshidon 2023-03-09 14:59:34 -03:00
LucasGGamerM
ee79916104 fix(#113): disableAltTextReminder setting being reset 2023-03-09 14:59:05 -03:00
Eugen Rochko
f62ba685d1 New translations strings.xml (Japanese) 2023-03-09 14:07:24 +01:00
Grishka
c3aa3af650 Fix #540 2023-03-08 22:46:24 +03:00
LucasGGamerM
fb44015402 docs: Update FAQ 2023-03-08 07:33:29 -03:00
Eugen Rochko
8cc5678b38 New translations strings.xml (Japanese) 2023-03-08 11:02:08 +01:00
Eugen Rochko
592eb2d589 New translations strings.xml (Japanese) 2023-03-08 02:55:58 +01:00
FineFindus
84713eb3b7 fix(translation/de): replace indefinite 2023-03-07 19:44:48 +01:00
LucasGGamerM
d95b395cfc docs: add changelog 2023-03-07 15:20:40 -03:00
LucasGGamerM
b41b2c8f3c build: bump version 2023-03-07 15:17:34 -03:00
LucasGGamerM
289dc4bf86 Merge remote-tracking branch 'weblate/master'
# Conflicts:
#	mastodon/src/main/res/values-de-rDE/strings_mo.xml
#	mastodon/src/main/res/values-pt-rBR/strings_mo.xml
#	mastodon/src/main/res/values-zh-rCN/strings_mo.xml
2023-03-07 14:52:54 -03:00
CDN18
c34e1e5f32 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (32 of 32 strings)

Translation: Moshidon/metadata
Translate-URL: https://translate.codeberg.org/projects/moshidon/metadata/zh_Hans/
2023-03-07 17:52:01 +00:00
CDN18
729680df8c Translated using Weblate (Chinese (Simplified))
Currently translated at 97.3% (37 of 38 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/zh_Hans/
2023-03-07 17:52:01 +00:00
LucasGGamerM
b85b578ddd Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (38 of 38 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/pt_BR/
2023-03-07 17:52:01 +00:00
dontobi
8a7d2df7b8 Translated using Weblate (German)
Currently translated at 100.0% (38 of 38 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/de/
2023-03-07 17:52:01 +00:00
LucasGGamerM
3ff3eb819a Translated using Weblate (Portuguese (Brazil))
Currently translated at 9.3% (3 of 32 strings)

Translation: Moshidon/metadata
Translate-URL: https://translate.codeberg.org/projects/moshidon/metadata/pt_BR/
2023-03-07 17:52:01 +00:00
gallegonovato
1ea24b5ff6 Translated using Weblate (Spanish)
Currently translated at 68.7% (22 of 32 strings)

Translation: Moshidon/metadata
Translate-URL: https://translate.codeberg.org/projects/moshidon/metadata/es/
2023-03-07 17:52:01 +00:00
poesty
79d0ab311b Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (26 of 26 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/zh_Hans/
2023-03-07 17:52:01 +00:00
LucasGGamerM
79f7df089e Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (26 of 26 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/pt_BR/
2023-03-07 17:52:01 +00:00
gallegonovato
32464f8552 Translated using Weblate (Spanish)
Currently translated at 100.0% (26 of 26 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/es/
2023-03-07 17:52:01 +00:00
dontobi
7ce96a2311 Translated using Weblate (German)
Currently translated at 100.0% (26 of 26 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/de/
2023-03-07 17:52:01 +00:00
dontobi
a009ea212f Translated using Weblate (German)
Currently translated at 100.0% (32 of 32 strings)

Translation: Moshidon/metadata
Translate-URL: https://translate.codeberg.org/projects/moshidon/metadata/de/
2023-03-07 17:52:01 +00:00
LucasGGamerM
8848b75325 Merge remote-tracking branch 'weblate/master' 2023-03-07 14:51:16 -03:00
LucasGGamerM
2eb04a3835 Merge remote-tracking branch 'megalodon_weblate/main' 2023-03-07 14:51:06 -03:00
LucasGGamerM
b61ce8399e docs: add translation widget to READMe 2023-03-07 14:49:07 -03:00
LucasGGamerM
52392c9ed9 feat: add toggle for defaulting to unlisted replies 2023-03-07 14:29:48 -03:00
LucasGGamerM
4b35ac6ad8 refactor(settings-page): move Disable Swipe setting between tabs to behavior section 2023-03-07 14:03:02 -03:00
LucasGGamerM
a56b603c5c refactor(settings-page): change the order of the sections 2023-03-07 14:00:38 -03:00
LucasGGamerM
48bd277769 refactor(mute-user-timer): add bottom padding for design consistency 2023-03-06 21:07:48 -03:00
LucasGGamerM
04101eb31b refactor(settings-page): adding new sections and reorganizing settings 2023-03-06 20:52:58 -03:00
LucasGGamerM
34c6a76a53 Translated using Weblate (Portuguese (Brazil))
Currently translated at 9.3% (3 of 32 strings)

Translation: Moshidon/metadata
Translate-URL: https://translate.codeberg.org/projects/moshidon/metadata/pt_BR/
2023-03-06 23:39:04 +00:00
gallegonovato
3f20c6104a Translated using Weblate (Spanish)
Currently translated at 68.7% (22 of 32 strings)

Translation: Moshidon/metadata
Translate-URL: https://translate.codeberg.org/projects/moshidon/metadata/es/
2023-03-06 23:39:04 +00:00
poesty
b5f82261b0 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (26 of 26 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/zh_Hans/
2023-03-06 23:39:04 +00:00
LucasGGamerM
b9a5db7ea4 Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (26 of 26 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/pt_BR/
2023-03-06 23:39:04 +00:00
gallegonovato
64cb6e52a8 Translated using Weblate (Spanish)
Currently translated at 100.0% (26 of 26 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/es/
2023-03-06 23:39:04 +00:00
dontobi
6e96e8929f Translated using Weblate (German)
Currently translated at 100.0% (26 of 26 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/de/
2023-03-06 23:39:04 +00:00
dontobi
bdd48f0001 Translated using Weblate (German)
Currently translated at 100.0% (32 of 32 strings)

Translation: Moshidon/metadata
Translate-URL: https://translate.codeberg.org/projects/moshidon/metadata/de/
2023-03-06 23:39:04 +00:00
LucasGGamerM
4bf19adc8e chore: add new strings 2023-03-06 20:38:51 -03:00
LucasGGamerM
bb9ff3c33f feat(unlisted-replies-by-default-toggle): add relevant string 2023-03-06 20:24:05 -03:00
LucasGGamerM
ae11e78d78 refactor: increase border radius of inline buttons 2023-03-06 20:20:52 -03:00
LucasGGamerM
222c3a2526 refactor(add-mute-timer): change of the mute timer popup layout 2023-03-06 20:19:21 -03:00
LucasGGamerM
08aa64a666 fix(strings): fix typo in "day" 2023-03-06 20:00:51 -03:00
LucasGGamerM
f10c157598 Merge branch 'master' of https://github.com/LucasGGamerM/moshidon 2023-03-06 19:54:08 -03:00
LucasGGamerM
5059d8fc4f Merge pull request #111 from FineFindus/feat/mute-timer
feat: add mute timer
2023-03-06 19:53:45 -03:00
FineFindus
4152179dea fix(request/mute): add correct body on unmute 2023-03-06 22:00:49 +01:00
FineFindus
3619be71ab feat: add mute timer 2023-03-06 21:55:32 +01:00
Eugen Rochko
0bf31de1f1 New translations strings.xml (Japanese) 2023-03-06 21:23:36 +01:00
Eugen Rochko
7fd32cab3d New translations strings.xml (Japanese) 2023-03-06 19:38:06 +01:00
Grishka
4a695b2a83 Use a single display item for the image attachment grid 2023-03-06 02:25:13 +03:00
Grishka
a8ba50e762 Merge branch 'dev_clickable_links_hold_to_copy' 2023-03-05 22:33:35 +03:00
Grishka
f79fc66578 Fix 2023-03-05 22:33:18 +03:00
AiOO
810e9eeb11 Translated using Weblate (Korean)
Currently translated at 100.0% (16 of 16 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/ko/
2023-03-05 15:08:20 +00:00
AiOO
25cff94665 Translated using Weblate (Korean)
Currently translated at 100.0% (262 of 262 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/ko/
2023-03-05 15:08:20 +00:00
Eugen Rochko
0c63b99e6c New translations strings.xml (Japanese) 2023-03-05 02:15:44 +01:00
Eugen Rochko
5881f5fa05 New translations strings.xml (Japanese) 2023-03-05 01:20:11 +01:00
LucasGGamerM
0e08209f4c style: remove unused imports on CustomLocalTimelineFragment.java 2023-03-04 10:33:07 -03:00
LucasGGamerM
db0b4fb615 refactor(README): swappping "this app" to Moshidon in FAQ 2023-03-04 10:21:02 -03:00
LucasGGamerM
672cfe58d6 fix(notification-actions): replies done within the notification actions now respect the status language and visibility, and also automatically add a mention to the replied account at the end of the reply status. 2023-03-04 10:13:03 -03:00
LucasGGamerM
338e164143 refactor: moving "notification_action_replied" string to strings_mo.xml 2023-03-04 10:07:28 -03:00
LucasGGamerM
e964b76302 refactor: re-using strings in the notification actions instead of new ones 2023-03-04 10:03:53 -03:00
LucasGGamerM
8dedc77ff8 Merge pull request #108
feat(notification): add reply action
2023-03-04 09:44:14 -03:00
FineFindus
5e8ede6ab8 style(notifications-actions/reply): clean-up 2023-03-04 13:18:22 +01:00
FineFindus
1124bab96b style(notifications-actions/reply): clean-up 2023-03-04 13:16:27 +01:00
FineFindus
cbcdf09bfe Merge branch 'feat/notification-actions' 2023-03-04 13:16:17 +01:00
LucasGGamerM
3b762c14a1 docs: Add faq section to README 2023-03-04 08:25:43 -03:00
FineFindus
59941fc867 style(notifications-actions/reply): clean-up 2023-03-03 23:49:45 +01:00
FineFindus
50601853f5 feat(notifications/actions): add reply action
Closes https://github.com/LucasGGamerM/moshidon/issues/104
2023-03-03 23:45:07 +01:00
LucasGGamerM
3137f3c1e4 docs: Adding link to Google Play Store 2023-03-03 17:21:49 -03:00
Eugen Rochko
575ca6251c New translations strings.xml (Arabic) 2023-03-03 20:35:51 +01:00
LucasGGamerM
bfaa732544 refactor: Increasing the corner radius of statuses and accounts in the notification section 2023-03-03 16:30:19 -03:00
Eugen Rochko
9c83a5aaeb New translations strings.xml (Portuguese, Brazilian) 2023-03-02 15:21:36 +01:00
Eugen Rochko
bc3e46eae1 New translations strings.xml (Portuguese, Brazilian) 2023-03-02 14:20:26 +01:00
LucasGGamerM
1b7a257a48 Merge pull request #106 from FineFindus/feat/notification-badge
Feat(tabs): add unread badge to notification tab
2023-03-01 18:12:40 -03:00
LucasGGamerM
4d40fad10d fix: Notifcations not refreshing without manually doing so. Fixes #105 2023-03-01 18:11:07 -03:00
FineFindus
49015f3e3e style: remove unnecessary imports 2023-03-01 22:06:31 +01:00
LucasGGamerM
77b5819c65 Merge pull request #102 from FineFindus/feat/notification-actions
Feat: Add actions to notifications
2023-03-01 18:01:43 -03:00
FineFindus
ac5615497b refactor(notifications-tab/badge): use improved implementation
Removes the now unecessary network call, by hooking into the notification reciever instead.
2023-03-01 22:00:49 +01:00
FineFindus
4ecd525f13 feat(tabs/notifications): add unread badge 2023-03-01 21:44:11 +01:00
FineFindus
6756b36e87 style(notifications/action): fix whitespaces 2023-03-01 21:02:09 +01:00
FineFindus
36808e4e8e fix(notifications/action): remove unused string 2023-03-01 21:02:09 +01:00
FineFindus
1c38570609 fix(notifications/action): remove notification after tapping action 2023-03-01 21:02:09 +01:00
FineFindus
2dc6deb93a fix(notifications/action): use radom request code
Fixes the issue with pendingIntents overwriting each other. Probability of equal same request code should be near 0 with 2^32 ints available
2023-03-01 21:02:09 +01:00
FineFindus
0b58d19811 feat(notifications/action): remove notfication after action 2023-03-01 21:02:09 +01:00
FineFindus
50362d630b feat(notifications/action): add unboost action 2023-03-01 21:02:08 +01:00
FineFindus
bfcd67cbaf feat(notifications/action): only show actions if necessary 2023-03-01 21:02:08 +01:00
FineFindus
ea190c0597 feat(notifications/action): use string titles 2023-03-01 21:02:08 +01:00
FineFindus
e68160800d feat(notifications/action): add boost action 2023-03-01 21:02:08 +01:00
FineFindus
73481f4a1f Merge branch 'feat/notification-actions' 2023-03-01 20:59:54 +01:00
Eugen Rochko
0303e59fc1 New translations strings.xml (Bengali) 2023-02-28 16:38:40 +01:00
Eugen Rochko
0c0d36da62 New translations strings.xml (Bengali) 2023-02-28 13:32:43 +01:00
Eugen Rochko
e7e0b8841c New translations strings.xml (Bengali) 2023-02-28 12:21:52 +01:00
LucasGGamerM
e7cd1cfda2 docs: update screenshot for play store 2023-02-27 21:31:39 -03:00
LucasGGamerM
17afa8e6f5 docs: changelog 98 2023-02-27 20:36:32 -03:00
LucasGGamerM
8385fb9586 chore: wiping duplicate stuff 2023-02-27 20:35:36 -03:00
LucasGGamerM
ba44aa57d7 build: bump version number 2023-02-27 20:34:43 -03:00
LucasGGamerM
a70647da44 Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (25 of 25 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/pt_BR/
2023-02-27 23:33:29 +00:00
LucasGGamerM
f97aafe374 Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (25 of 25 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/pt_BR/
2023-02-27 23:28:58 +00:00
FineFindus
b38a460a02 style(notifications/action): fix whitespaces 2023-02-27 21:20:02 +01:00
FineFindus
bddf024ba0 fix(notifications/action): remove unused string 2023-02-27 21:18:51 +01:00
FineFindus
be7a7acadd fix(notifications/action): remove notification after tapping action 2023-02-27 21:15:28 +01:00
FineFindus
d05c90ca7f fix(notifications/action): use radom request code
Fixes the issue with pendingIntents overwriting each other. Probability of equal same request code should be near 0 with 2^32 ints available
2023-02-27 20:24:09 +01:00
Eugen Rochko
79d9abe7f7 New translations full_description.txt (Turkish) 2023-02-27 17:26:40 +01:00
Eugen Rochko
684fbc0050 New translations strings.xml (Turkish) 2023-02-27 17:26:39 +01:00
Eugen Rochko
03973d41be New translations strings.xml (Turkish) 2023-02-27 16:25:31 +01:00
Eugen Rochko
06c533bf5a New translations full_description.txt (Japanese) 2023-02-27 08:35:37 +01:00
Eugen Rochko
cc64a20e53 New translations full_description.txt (Japanese) 2023-02-27 07:28:37 +01:00
FineFindus
4187da9168 feat(notifications/action): remove notfication after action 2023-02-26 21:56:18 +01:00
FineFindus
a051e636e6 feat(notifications/action): add unboost action 2023-02-26 20:50:03 +01:00
Torge Rosendahl
4144639b75 docu 2023-02-26 13:59:39 -05:00
FineFindus
360cd7b5df feat(notifications/action): only show actions if necessary 2023-02-26 19:15:31 +01:00
FineFindus
55d2ca4a93 feat(notifications/action): use string titles 2023-02-26 15:23:38 +01:00
FineFindus
c7f61291ed feat(notifications/action): add boost action 2023-02-26 15:21:52 +01:00
LucasGGamerM
f836361644 fix: NPE in HeaderStatusDisplayItem when clicking on a "User followed you" avatar header in notifications fragment 2023-02-25 20:58:10 -03:00
FineFindus
f404895b5c feat(notification): add actions 2023-02-25 23:19:41 +01:00
FineFindus
94ed0c3f49 Merge branch 'master' 2023-02-25 21:00:09 +01:00
FineFindus
00ffe9c41e Merge branch 'master' 2023-02-25 21:00:04 +01:00
LucasGGamerM
529c1e2b07 Merge remote-tracking branch 'weblate/master' 2023-02-25 15:49:24 -03:00
LucasGGamerM
f2e04e6769 Merge remote-tracking branch 'megalodon_weblate/main'
# Conflicts:
#	metadata/it-IT/full_description.txt
2023-02-25 15:49:07 -03:00
LucasGGamerM
f1a7603bdf Adding 97 changelog 2023-02-25 15:48:22 -03:00
LucasGGamerM
280434b01f Bump version number 2023-02-25 15:46:46 -03:00
LucasGGamerM
023a6c3a49 fix(custom-local-timelines): Loading threads on custom local timelines now works! 2023-02-25 15:39:56 -03:00
LucasGGamerM
ed301cafe0 fix(custom-local-timelines): Profile lookup now is more robust and doesn't call the the user's instance unless a click happens 2023-02-25 14:27:21 -03:00
LucasGGamerM
5e97adcd3b fix(custom-local-timelines): Removing the get account by handle function for each status, and interactions now are fully working. 2023-02-25 14:18:27 -03:00
ewm
487deae044 Translated using Weblate (Polish)
Currently translated at 13.3% (4 of 30 strings)

Translation: Moshidon/metadata
Translate-URL: https://translate.codeberg.org/projects/moshidon/metadata/pl/
2023-02-25 16:08:21 +00:00
ewm
a28daa3d75 Translated using Weblate (Polish)
Currently translated at 100.0% (25 of 25 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/pl/
2023-02-25 16:08:21 +00:00
Eugen Rochko
d633b6f1d4 New translations strings.xml (Bengali) 2023-02-25 16:06:21 +01:00
LucasGGamerM
75f311b8a7 Merge pull request #100 from FineFindus/feat/custom-welcome-inputtype
feat(custom-welcome): use URI InputType
2023-02-25 11:17:26 -03:00
Eugen Rochko
7b68baef0d New translations strings.xml (Bengali) 2023-02-25 13:06:26 +01:00
Eugen Rochko
fb5ef921f7 New translations strings.xml (Spanish) 2023-02-24 21:22:35 +01:00
LucasGGamerM
5d11bee59d refactor(perf): initial optimizations for concurrent requests. Profile now loads faster 2023-02-24 15:55:49 -03:00
Eugen Rochko
da44e50679 New translations strings.xml (Spanish) 2023-02-24 19:50:53 +01:00
FineFindus
cd027f1220 feat(custom-welcome): use URI InputType 2023-02-24 08:43:20 +00:00
Eugen Rochko
93d89f93b2 New translations strings.xml (Bengali) 2023-02-24 09:17:38 +01:00
Eugen Rochko
cce64f9a76 New translations strings.xml (Bengali) 2023-02-24 08:19:59 +01:00
LucasGGamerM
1d55354be2 fix(custom-local-timelines): interactions now work! 2023-02-23 20:14:52 -03:00
nitrogenez47ab3e44720c4675
3143f28e04 Translated using Weblate (Ukrainian)
Currently translated at 13.3% (4 of 30 strings)

Translation: Moshidon/metadata
Translate-URL: https://translate.codeberg.org/projects/moshidon/metadata/uk/
2023-02-23 04:08:21 +00:00
poesty
d381205bbf Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (25 of 25 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/zh_Hans/
2023-02-23 04:08:21 +00:00
nitrogenez47ab3e44720c4675
6b6852e134 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (25 of 25 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/uk/
2023-02-23 04:08:21 +00:00
Andrewblasco
f7a41906e4 Translated using Weblate (Spanish)
Currently translated at 100.0% (25 of 25 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/es/
2023-02-23 04:08:21 +00:00
dontobi
70ddea2e81 Translated using Weblate (German)
Currently translated at 100.0% (25 of 25 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/de/
2023-02-23 04:08:21 +00:00
dontobi
92a806462d Translated using Weblate (German)
Currently translated at 100.0% (30 of 30 strings)

Translation: Moshidon/metadata
Translate-URL: https://translate.codeberg.org/projects/moshidon/metadata/de/
2023-02-23 04:08:20 +00:00
LucasGGamerM
8111ea04b9 fix: Profile lookups on custom local timelines now work 2023-02-22 17:21:33 -03:00
Eugen Rochko
afb396acd8 New translations strings.xml (Chinese Traditional) 2023-02-22 18:07:34 +01:00
Espasant3
371f97fa5a Translated using Weblate (Galician)
Currently translated at 100.0% (16 of 16 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/gl/
2023-02-22 15:08:21 +00:00
gicorada
f7def3ab01 Translated using Weblate (Italian)
Currently translated at 100.0% (16 of 16 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/it/
2023-02-22 15:08:20 +00:00
gicorada
1cefc8aaf2 Translated using Weblate (Italian)
Currently translated at 100.0% (262 of 262 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/it/
2023-02-22 15:08:20 +00:00
LucasGGamerM
a72849bae1 Merge pull request #96 from FineFindus/feat/custom-timelines-input-type
feat(custom-timelines): use URI InputType
2023-02-20 18:29:14 -03:00
FineFindus
5e6b56a738 feat(custom-timelines): use URI InputType 2023-02-20 22:11:39 +01:00
LucasGGamerM
58c754ea2d Fixing typo 2023-02-20 17:21:20 -03:00
LucasGGamerM
c22374b712 96 changelog 2023-02-20 17:18:21 -03:00
LucasGGamerM
7820926e1a Bump version nummber 2023-02-20 17:15:33 -03:00
LucasGGamerM
fcf5887359 Changing the icon of the add timelines button 2023-02-20 17:01:01 -03:00
LucasGGamerM
aade898681 Merge pull request #95 from FineFindus/fix/typos
Fix/typos
2023-02-20 16:42:58 -03:00
FineFindus
d6653b5f78 style(readme): hability -> ability 2023-02-20 20:37:28 +01:00
FineFindus
89514dbf14 style(basestatuslist): THRESHHOLD -> THRESHOLD 2023-02-20 20:36:18 +01:00
LucasGGamerM
456fbb6fc9 Maybe fixing the broken custom timelines when there is a poll 2023-02-20 16:32:01 -03:00
LucasGGamerM
f2d29366bd Merge pull request #94 from FineFindus/fix/timeline-hint
fix(custom-timelines): remove default text
2023-02-20 14:46:46 -03:00
FineFindus
ea7c366981 fix(custom-timelines): remove default text 2023-02-20 18:30:31 +01:00
LucasGGamerM
fe7362bb28 Update README.md 2023-02-20 14:25:39 -03:00
LucasGGamerM
a4d739a9a9 Add 95 changelog 2023-02-20 14:08:32 -03:00
LucasGGamerM
d4cf12a0d9 Bump version number 2023-02-20 14:07:24 -03:00
LucasGGamerM
69af790e22 Merge remote-tracking branch 'megalodon_weblate/main' 2023-02-20 14:04:46 -03:00
ewm
2936ec81af Translated using Weblate (Polish)
Currently translated at 100.0% (24 of 24 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/pl/
2023-02-20 17:03:27 +00:00
LucasGGamerM
d8cd151c7e Adding the local timelines feature and some polishes 2023-02-20 14:00:55 -03:00
LucasGGamerM
1ada4c9f46 Still in the need to Frankenstein the add menu 2023-02-20 13:33:04 -03:00
LucasGGamerM
b5844a5f8c Rewriting the custom local timelines 2023-02-20 11:49:48 -03:00
LucasGGamerM
6f37eb9625 Revert "Initial try to integrate the custom local timelines into the custom tabs system"
This reverts commit 68f88c29d3.
2023-02-20 11:20:01 -03:00
LucasGGamerM
6404d9cf9a Revert "Hardcoding fosstodon and having a half working thing"
This reverts commit 08a3ec99ce.
2023-02-20 11:20:01 -03:00
LucasGGamerM
1837e5204b Revert "Its half working"
This reverts commit a445baf3f0.
2023-02-20 11:20:01 -03:00
LucasGGamerM
9ae0f49bff Revert "Changing hardcoded fosstodon to domain"
This reverts commit 269794bfc3.
2023-02-20 11:20:01 -03:00
LucasGGamerM
269794bfc3 Changing hardcoded fosstodon to domain 2023-02-20 11:14:33 -03:00
Eugen Rochko
0943908173 New translations strings.xml (Kabyle) 2023-02-20 08:34:11 +01:00
a_mento
ef1965a41b Translated using Weblate (Basque)
Currently translated at 100.0% (262 of 262 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/eu/
2023-02-19 23:08:20 +00:00
Eugen Rochko
b018788cd1 New translations strings.xml (Galician) 2023-02-19 22:35:48 +01:00
Eugen Rochko
4a315e73eb New translations strings.xml (Galician) 2023-02-19 21:34:24 +01:00
LucasGGamerM
a445baf3f0 Its half working 2023-02-18 19:40:49 -03:00
LucasGGamerM
08a3ec99ce Hardcoding fosstodon and having a half working thing 2023-02-18 19:27:43 -03:00
LucasGGamerM
68f88c29d3 Initial try to integrate the custom local timelines into the custom tabs system 2023-02-18 17:49:04 -03:00
Espasant3
c2d14c64cb Translated using Weblate (Galician)
Currently translated at 93.7% (15 of 16 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/gl/
2023-02-18 20:08:21 +00:00
ihor_ck
aa554d91f7 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (16 of 16 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/uk/
2023-02-18 20:08:21 +00:00
McKris
cc3845d6f4 Translated using Weblate (Polish)
Currently translated at 100.0% (16 of 16 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/pl/
2023-02-18 20:08:21 +00:00
gallegonovato
2571b2d4f7 Translated using Weblate (Spanish)
Currently translated at 100.0% (16 of 16 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/es/
2023-02-18 20:08:21 +00:00
Linerly
ac7cdb885d Translated using Weblate (Indonesian)
Currently translated at 100.0% (16 of 16 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/id/
2023-02-18 20:08:21 +00:00
ihor_ck
7b5d95f7ee Translated using Weblate (Ukrainian)
Currently translated at 100.0% (262 of 262 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/uk/
2023-02-18 20:08:21 +00:00
McKris
ccf311312e Translated using Weblate (Polish)
Currently translated at 100.0% (262 of 262 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/pl/
2023-02-18 20:08:20 +00:00
Linerly
42222cd327 Translated using Weblate (Indonesian)
Currently translated at 100.0% (262 of 262 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/id/
2023-02-18 20:08:20 +00:00
Espasant3
60961020c8 Translated using Weblate (Galician)
Currently translated at 99.6% (261 of 262 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/gl/
2023-02-18 20:08:20 +00:00
Choukajohn
2a7bba24de Translated using Weblate (French)
Currently translated at 100.0% (262 of 262 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/fr/
2023-02-18 20:08:20 +00:00
gallegonovato
fdbe3fcb13 Translated using Weblate (Spanish)
Currently translated at 100.0% (262 of 262 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/es/
2023-02-18 20:08:20 +00:00
LucasGGamerM
9e9ff07eaf Fixing indentation because why not 2023-02-17 19:46:55 -03:00
LucasGGamerM
f377dca63c Merge pull request #92
fix(star-animation): re-enable star animation
2023-02-17 19:40:57 -03:00
FineFindus
3074100432 fix(favourite): re-enable star animation 2023-02-17 22:36:34 +01:00
FineFindus
ce67fb30bf fix(favourite): set correct gravity for animation 2023-02-17 22:35:46 +01:00
LucasGGamerM
da5f3a9094 Fixing merge conflicts 2023-02-17 18:35:29 -03:00
LucasGGamerM
e12d19d0d6 Merge pull request #91
fix(fab): completly hide in profile page
2023-02-17 18:30:07 -03:00
FineFindus
f6a35e92c7 fix(fab): completly hide in profile page 2023-02-17 22:28:18 +01:00
FineFindus
d0a9ba041d fix(fab): completly hide 2023-02-17 22:21:56 +01:00
LucasGGamerM
1e2dd3dec6 Merge remote-tracking branch 'megalodon_main/main'
# Conflicts:
#	mastodon/build.gradle
#	mastodon/src/main/java/org/joinmastodon/android/fragments/BaseStatusListFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/ProfileFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/fragments/SettingsFragment.java
#	mastodon/src/main/java/org/joinmastodon/android/ui/utils/UiUtils.java
2023-02-17 17:40:06 -03:00
sk22
7ea42c8403 Translated using Weblate (German)
Currently translated at 100.0% (16 of 16 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/de/
2023-02-17 12:30:41 +00:00
sk22
af9b527f35 Translated using Weblate (German)
Currently translated at 100.0% (262 of 262 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/de/
2023-02-17 12:30:40 +00:00
Espasant3
df58cdd86e Translated using Weblate (Galician)
Currently translated at 100.0% (15 of 15 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/gl/
2023-02-17 12:27:57 +00:00
ihor_ck
507fcea646 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (15 of 15 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/uk/
2023-02-17 12:27:57 +00:00
McKris
5cd1e88da9 Translated using Weblate (Polish)
Currently translated at 100.0% (15 of 15 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/pl/
2023-02-17 12:27:57 +00:00
AiOO
e2293899f0 Translated using Weblate (Korean)
Currently translated at 100.0% (15 of 15 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/ko/
2023-02-17 12:27:57 +00:00
gallegonovato
1c743ee3a6 Translated using Weblate (Spanish)
Currently translated at 100.0% (15 of 15 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/es/
2023-02-17 12:27:57 +00:00
ihor_ck
daf4c69df4 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (259 of 259 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/uk/
2023-02-17 12:27:57 +00:00
McKris
14d3add7b3 Translated using Weblate (Polish)
Currently translated at 100.0% (259 of 259 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/pl/
2023-02-17 12:27:57 +00:00
Espasant3
7e3193a708 Translated using Weblate (Galician)
Currently translated at 100.0% (259 of 259 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/gl/
2023-02-17 12:27:57 +00:00
gallegonovato
545aa16cd3 Translated using Weblate (Spanish)
Currently translated at 100.0% (259 of 259 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/es/
2023-02-17 12:27:57 +00:00
poesty
4dcf32d13a Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (259 of 259 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/zh_Hans/
2023-02-17 12:27:57 +00:00
AiOO
e0aba23e80 Translated using Weblate (Korean)
Currently translated at 100.0% (259 of 259 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/ko/
2023-02-17 12:27:57 +00:00
sk
b19ae9bb10 bump version 2023-02-17 13:27:41 +01:00
sk22
d20f8669e8 Auto-hide FAB on scroll (#435)
* feat(composeButton): hide fab on scroll
* feat(composeButton): hide when scrolling in profile fragment
* refactor(compose-fab): show fab after small scroll distance
* refactor(compose-fab): code cleanup
* feat(composeButton): hide when scrolling in profile
* fix: duplicate fab var
* feat(fab): show when scrolled to top
* add option to turn it off

---------

Co-authored-by: FineFindus <63370021+FineFindus@users.noreply.github.com>
2023-02-17 13:20:22 +01:00
sk
1567e5aba4 Merge remote-tracking branch 'upstream/master' 2023-02-17 12:45:36 +01:00
Eugen Rochko
b01ef6d5a7 New translations short_description.txt (Russian) 2023-02-17 10:01:43 +01:00
Eugen Rochko
604e581139 New translations full_description.txt (Russian) 2023-02-17 10:01:42 +01:00
Eugen Rochko
082f697b40 New translations strings.xml (Russian) 2023-02-17 10:01:41 +01:00
sk
6b9b6710cf enable remote-following accounts
closes sk22#431
2023-02-16 19:44:39 +01:00
sk
b07858a66d don't crash when language array empty 2023-02-16 17:04:56 +01:00
sk
c05d0b600e default role color if not provided
fixes sk22#430
2023-02-16 16:42:47 +01:00
Torge Rosendahl
0a8d73dc0b cleanup, resolved some warnings 2023-02-15 20:19:10 -05:00
Torge Rosendahl
fd99f3caa1 changed url longclick implementation to GestureListener 2023-02-15 20:16:20 -05:00
Torge Rosendahl
794c4e5227 removed longClickHandler and moved to view itself 2023-02-15 19:54:08 -05:00
Torge Rosendahl
f5df8225d1 whitespace corrections 2023-02-15 18:20:02 -05:00
Torge Rosendahl
42c6446125 refactoring: moved runnable and made it private, added copy toast localization. 2023-02-15 18:04:52 -05:00
Torge Rosendahl
e3486ebf7c added clickable link type switch for copy, to not copy hashtags and user IDs 2023-02-15 18:00:45 -05:00
Torge Rosendahl
c0115f068c implemented copy service 2023-02-15 17:40:43 -05:00
Torge Rosendahl
41682d1147 added press-and-hold listener to ClickableLinks 2023-02-15 17:30:31 -05:00
Eugen Rochko
8c61660cfc New translations strings.xml (Arabic) 2023-02-15 15:17:22 +01:00
Eugen Rochko
d6933be3cd New translations strings.xml (Arabic) 2023-02-15 13:12:38 +01:00
Eugen Rochko
ca6cfd2b91 New translations strings.xml (French) 2023-02-14 20:11:52 +01:00
Eugen Rochko
20960bdd57 New translations strings.xml (Belarusian) 2023-02-14 14:14:56 +01:00
Grishka
dd582c4bee Update locales & bump version 2023-02-14 03:57:49 +03:00
Grishka
3a0d314af0 Merge branch 'l10n_master' 2023-02-14 03:49:36 +03:00
sk
a00ca599c1 add newline 2023-02-13 17:58:27 +01:00
Weblate Admin
c97a7e5158 Translated using Weblate (French)
Currently translated at 98.8% (351 of 355 strings)

Co-authored-by: Weblate Admin <butterflyoffire@todz.ynh.fr>
Translate-URL: https://rosette.todz.ynh.fr/projects/megalodon-app/app-strings/fr/
Translation: Megalodon app/Megalodon app
2022-12-06 09:19:24 +01:00
Weblate Admin
32e2d24b15 Translated using Weblate (Arabic (Algeria))
Currently translated at 94.0% (334 of 355 strings)

Translated using Weblate (French)

Currently translated at 96.9% (344 of 355 strings)

Co-authored-by: Weblate Admin <butterflyoffire@todz.ynh.fr>
Translate-URL: https://rosette.todz.ynh.fr/projects/megalodon-app/app-strings/ar_DZ/
Translate-URL: https://rosette.todz.ynh.fr/projects/megalodon-app/app-strings/fr/
Translation: Megalodon app/Megalodon app
2022-12-04 07:10:53 +01:00
Weblate Admin
c102aae819 Translated using Weblate (French)
Currently translated at 95.4% (339 of 355 strings)

Co-authored-by: Weblate Admin <butterflyoffire@todz.ynh.fr>
Translate-URL: https://rosette.todz.ynh.fr/projects/megalodon-app/app-strings/fr/
Translation: Megalodon app/Megalodon app
2022-12-03 18:22:49 +01:00
Weblate
bed72cb5ed Added translation using Weblate (Occitan)
Co-authored-by: Weblate <noreply@weblate.org>
2022-12-03 04:15:12 +01:00
Weblate
f0c1046fe9 Added translation using Weblate (Kabyle)
Co-authored-by: Weblate <noreply@weblate.org>
2022-12-03 04:15:08 +01:00
Weblate
d88104d105 Added translation using Weblate (French)
Added translation using Weblate (Arabic (Algeria))

Co-authored-by: Weblate <noreply@weblate.org>
2022-12-03 04:15:03 +01:00
Weblate
f3e21e5a82 Added translation using Weblate (Occitan)
Co-authored-by: Weblate <noreply@weblate.org>
2022-12-03 04:14:56 +01:00
Weblate
a77bee8664 Added translation using Weblate (Kabyle)
Co-authored-by: Weblate <noreply@weblate.org>
2022-12-03 04:14:51 +01:00
Weblate
b5d0aed59e Added translation using Weblate (French)
Added translation using Weblate (Arabic (Algeria))

Co-authored-by: Weblate <noreply@weblate.org>
2022-12-03 04:14:47 +01:00
Weblate Admin
2440cc6af5 Translated using Weblate (Arabic (Algeria))
Currently translated at 91.2% (324 of 355 strings)

Co-authored-by: Weblate Admin <butterflyoffire@todz.ynh.fr>
Translate-URL: https://rosette.todz.ynh.fr/projects/megalodon-app/app-strings/ar_DZ/
Translation: Megalodon app/Megalodon app
2022-12-02 22:40:00 +01:00
butterflyoffire
90114dfbe0 Supprimer 'mastodon/src/main/res/values-ar-DZ/strings.xml' 2022-12-02 21:34:54 +00:00
Weblate Admin
64b8cdf7dc Translated using Weblate (Arabic (Algeria))
Currently translated at 89.8% (319 of 355 strings)

Translated using Weblate (Arabic (Algeria))

Currently translated at 0.2% (1 of 355 strings)

Added translation using Weblate (Arabic (Algeria))

Added translation using Weblate (Arabic (Algeria))

Co-authored-by: Weblate Admin <butterflyoffire@todz.ynh.fr>
Translate-URL: https://rosette.todz.ynh.fr/projects/megalodon-app/app-strings/ar_DZ/
Translation: Megalodon app/Megalodon app
2022-12-02 19:14:49 +01:00
1346 changed files with 57182 additions and 16927 deletions

1
.github/FUNDING.yml vendored
View File

@@ -1,6 +1,7 @@
# These are supported funding model platforms
github: LucasGGamerM
custom: ["https://liberapay.com/LucasGGamerM/donate", liberapay.com]
patreon: # mastodon
open_collective: # Replace with a single Open Collective username e.g., user1
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel

70
.github/workflows/nightly-builds.yml vendored Normal file
View File

@@ -0,0 +1,70 @@
name: Nightly builds
on:
push:
branches: [ "master" ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout Appkit Repo
uses: actions/checkout@v3
with:
repository: LucasGGamerM/appkit
- name: set up JDK 17
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'corretto'
cache: gradle
- name: Comment out signing config in appkits gradle file
run: |
sed -i 's/sign publishing\.publications\.release/\/\/ sign publishing.publications.release/' appkit/maven-push.gradle
- name: Grant execute permission for gradlew for Appkit
run: chmod +x gradlew
- name: Compile appkit
run: ./gradlew publishToMavenLocal
- uses: actions/checkout@v3
- name: set up JDK 17
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'corretto'
cache: gradle
- name: Get current date
id: date
run: echo "date=$(date +'%Y-%m-%d')" >> $GITHUB_OUTPUT
- name: Grant execute permission for gradlew
run: chmod +x gradlew
- name: Decode Keystore
id: decode_keystore
uses: timheuer/base64-to-file@v1
with:
fileName: 'nightly_keystore.jks'
fileDir: './mastodon/keystore/'
encodedString: ${{ secrets.KEYSTORE }}
- name: Build with Gradle
run: ./gradlew assembleNightly
env:
SIGNING_KEY_ALIAS: ${{ secrets.SIGNING_KEY_ALIAS }}
SIGNING_KEY_PASSWORD: ${{ secrets.SIGNING_KEY_PASSWORD }}
SIGNING_STORE_PASSWORD: ${{ secrets.SIGNING_STORE_PASSWORD }}
CURRENT_DATE: ${{ steps.date.outputs.date }}
- name: Upload a Build Artifact
uses: actions/upload-artifact@v3.1.2
with:
name: moshidon-nightly.apk
path: ./mastodon/build/outputs/apk/nightly/moshidon-nightly.apk

View File

@@ -0,0 +1,11 @@
name: Validate Gradle Wrapper
on: [pull_request, push]
jobs:
validation:
name: Validation
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: gradle/wrapper-validation-action@v1

2
.gitignore vendored
View File

@@ -9,3 +9,5 @@
.cxx
local.properties
*.jks
*.keystore
/mastodon/keystore/nightly_keystore.keystore

9
FAQ.md Normal file
View File

@@ -0,0 +1,9 @@
## F.A.Q
Q: What are the main differences between Moshidon and Megalodon?
A: There are many, but the most outstanding differences are: the ability to have other server's local timeline inside the app. It can be acessed in the "Add community" option in the top right corner of the Edit timelines screen. Other outstanding features that Moshidon has are some quality of life improvements, such as notification actions and allowing for unlisted replies by default. Most other features are pretty minor, such as profile notes directly available in the person's profile. Other features are quite minor usability and visibility improvements. All of which can be found in the settings page.
Q: Will there ever be a versjon of Moshidon for iOS?
A: No. As android and iOS apps do not share code, it is incredibly hard to port.

View File

@@ -5,21 +5,44 @@
> A fork of [megalodon](https://github.com/sk22/megalodon) which is a fork of [official Mastodon Android app](https://github.com/mastodon/mastodon-android) adding important features that are missing in the official app and possibly wont ever be implemented, such as the federated timeline, unlisted posting, bookmarks and an image description viewer.
[![Download latest release](https://img.shields.io/badge/dynamic/json?color=282C37&label=download%20apk&query=%24.tag_name&url=https%3A%2F%2Fapi.github.com%2Frepos%2FLucasGGamerM%2Fmoshidon%2Freleases%2Flatest&style=for-the-badge)](https://github.com/LucasGGamerM/moshidon/releases/latest/download/moshidon.apk)
[![Download latest release](https://img.shields.io/badge/dynamic/json?color=282C37&label=Download%20APK&query=%24.tag_name&url=https%3A%2F%2Fapi.github.com%2Frepos%2FLucasGGamerM%2Fmoshidon%2Freleases%2Flatest&style=for-the-badge)](https://github.com/LucasGGamerM/moshidon/releases/latest/download/moshidon.apk)
[<img src="https://gitlab.com/IzzyOnDroid/repo/-/raw/master/assets/IzzyOnDroid.png"
alt="Get it on IzzyOnDroid"
height="80">](https://apt.izzysoft.de/fdroid/index/apk/org.joinmastodon.android.moshinda)
---
[![Download nightly release](https://img.shields.io/badge/dynamic/json?color=282C37&label=Download%20Nightly%20APK&query=%24.tag_name&url=https%3A%2F%2Fapi.github.com%2Frepos%2FLucasGGamerM%2Fmoshidon%2Freleases%2Flatest&style=for-the-badge)](https://github.com/LucasGGamerM/moshidon-nightly/releases/latest/download/moshidon-nightly.apk)
[![Translation status](https://translate.codeberg.org/widgets/moshidon/-/svg-badge.svg)](https://translate.codeberg.org/engage/moshidon/)
&nbsp;
[![Nightly build](https://github.com/LucasGGamerM/moshidon/actions/workflows/nightly-builds.yml/badge.svg)](https://github.com/LucasGGamerM/moshidon/actions/workflows/nightly-builds.yml)
<a href="https://play.google.com/store/apps/details?id=org.joinmastodon.android.moshinda"><img height="50" alt="Get it on Google Play" src="img/google-play-badge.png"></a>
&nbsp;
<a href="https://apt.izzysoft.de/fdroid/index/apk/org.joinmastodon.android.moshinda"><img height="50" alt="Get it on IzzyOnDroid" src="img/izzy-badge.png"></a>
## Help out the project by donating at: https://github.com/sponsors/LucasGGamerM!
### We also support LiberaPay at: https://liberapay.com/LucasGGamerM/donate (Currently broken)
### You can also donate some Monero through this wallet address as well:
4886mdarcyB6Yf8Qc6vDJBK1fz6ibHFLZUmHb4GZZz9yLGNhcG3XC64e5UZ8dVQYTLZb82W6P9WhteowW4STJEec97Gf22j
---
## Key features
### **Material you theme support on Android 12+ devices!**
### **The ability to add other server's local timeline to your timelines**
### **Show posts filtered with a warning!**
It can be accessed in the "Edit timelines" menu, where you can add a new "Community" to see other server's local posts!
**Allows you to have filtered posts collapsed with a warning! As shown in the screenshots:**
### **View remote profiles**
You can now see all of a profile follows and followers, by directly loading them from the profile's home instance. In case of a failed lookup, the app will automatically fall back to the older method.
### **Translate posts easily**
Allows you to easily translate posts in another language with a translate button! Your instance must support translation, otherwise it will not work.
### **Show posts filtered with a warning**
Allows you to have filtered posts collapsed with a warning! As shown in the screenshots:
Before | After
:-------------------------:|:-------------------------:
@@ -28,7 +51,7 @@ Before | After
### **Color themes**
**Allows you to change theme within the app. Supports Purple, pink, green, blue, orange and yellow!**
Allows you to change theme within the app. Supports Material You, purple, pink, green, blue, red, orange, yellow and Nord!
### **Unlisted posting**
@@ -52,6 +75,10 @@ Thats one of the reasons why choosing a small, **well-moderated instance is i
This is important to **ensure the content youre sharing is as accessible as possible** to people who cant see the images and rely on software to read back the provided content descriptions. Thankfully, its quite common for people on the Fediverse to provide such alt texts, and hopefully things stay this way!
### **Reminder to add alt text to attached media**
By default, Moshidon will show a warning to add alt text if your post has any attachments without any alt text. This is for better accessibility, and it can easily be bypassed and disabled in settings.
### **Pinning posts**
**This lets you can highlight important posts on your profile. A dedicated “Pinned” tab in peoples profiles shows all the posts they pinned.**
@@ -76,12 +103,22 @@ Moshidon is also available in [IzzyOnDroid repo](https://apt.izzysoft.de/fdroid/
## Release variants
All downloads can be found on the [Releases](https://github.com/LucasGGamerM/moshidon/releases) page.
### Stable variant
All stable version downloads can be found on the [Releases](https://github.com/LucasGGamerM/moshidon/releases) page.
**`moshidon.apk`**
Variant with an integrated updater. If you download Moshidon from here (and not from an app store), just download the regular `moshidon.apk`.
### Nightly variant
All nightly builds can be downloaded at [Nightly Releases](https://github.com/LucasGGamerM/moshidon-nightly/releases) page.
**`moshidon-nightly.apk`**
Unstable variant with an integrated updater. It's for development and testing purposes. If you find any bugs with it, please file a bug report at our [issues](https://github.com/LucasGGamerM/moshidon/issues) page.
---
@@ -89,16 +126,18 @@ Variant with an integrated updater. If you download Moshidon from here (and not
### Features
* [Adding the ability to view other server's local timelines](https://github.com/LucasGGamerM/moshidon/tree/feature/local-timelines)
* [Adding the ability to load followers and following from remote instance](https://github.com/LucasGGamerM/moshidon/tree/feature/remote-followers)
* [Adding the ability to have filtered posts show with a warning](https://github.com/LucasGGamerM/moshidon/tree/feature/filters_again)
* [Add “Unlisted” as a post visibility option](https://github.com/mastodon/mastodon-android/compare/master...sk22:megalodon:feature/enable-unlisted)
([Pull request](https://github.com/mastodon/mastodon-android/pull/103))
* Adding a useful private profile note box!*
* Auto hiding the compose button on scroll!*
* Adding the hability to remind yourself to add alt text to images!*
* An indicator for if an image has alt text or not*
* Adding the ability to have drafts!*
* Also adding the ability to view announcements from your instance!*
* Adding the ability to post for local timeline only (Only on instances that support it!)*
* Adding a useful private profile note box
* Auto hiding the compose button on scroll
* Adding the ability to remind yourself to add alt text to images
* An indicator for if an image has alt text or not
* Adding the ability to have drafts
* Also adding the ability to view announcements from your instance
* Adding the ability to post for local timeline only (Only on instances that support it!)
* [Add image description button and viewer](https://github.com/mastodon/mastodon-android/compare/master...sk22:megalodon:feature/display-alt-text) ([Pull request](https://github.com/mastodon/mastodon-android/pull/129))
* [Implement pinning posts and displaying pinned posts](https://github.com/mastodon/mastodon-android/compare/master...sk22:megalodon:feature/pin-posts) ([Pull request](https://github.com/mastodon/mastodon-android/pull/140))
* [Implement deleting and re-drafting](https://github.com/mastodon/mastodon-android/compare/master...sk22:megalodon:feature/delete-redraft) ([Closes issue](https://github.com/mastodon/mastodon-android/issues/21))
@@ -120,6 +159,7 @@ Variant with an integrated updater. If you download Moshidon from here (and not
### Behavior
* Allow for confirmation before reblogging
* Adding a bottom option for the publish button, allowing for easier use on larger screens!
* [Make back button return to the home tab before exiting the app](https://github.com/mastodon/mastodon-android/compare/master...sk22:megalodon:feature/back-returns-home) ([Closes issue](https://github.com/mastodon/mastodon-android/issues/118))
* [Always preserve content warnings when replying](https://github.com/mastodon/mastodon-android/compare/master...sk22:megalodon:feature/always-preserve-cw) ([Closes issue](https://github.com/mastodon/mastodon-android/issues/113))
@@ -151,6 +191,12 @@ This project is released under the [GPL-3 License](./LICENSE).
## Links
[Official matrix chatroom:](https://matrix.to/#/#moshidon:matrix.org) https://matrix.to/#/#moshidon:matrix.org
[F.A.Q](FAQ.md)
[Official matrix chatroom:](https://matrix.to/#/#moshidon:floss.social) https://matrix.to/#/#moshidon:floss.social
[Moshidon roadmap](https://github.com/users/LucasGGamerM/projects/1)
<a rel="me" href="https://floss.social/@moshidon">@moshidon<wbr>@floss.social</a>
---

View File

@@ -6,7 +6,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Moshidon</title>
<link rel="icon" href="mastodon/src/main/res/mipmap-mdpi/ic_launcher_round.png">
<link rel="me" href="https://floss.social/@mastodon">
<link rel="me" href="https://floss.social/@megalodon">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/github-markdown-css/5.1.0/github-markdown.min.css">
</head>
<body class="markdown-body">

View File

@@ -3,9 +3,16 @@ buildscript {
repositories {
google()
mavenCentral()
maven {
url "https://www.jitpack.io"
content {
includeModule 'com.github.UnifiedPush', 'android-connector'
}
}
mavenLocal()
}
dependencies {
classpath 'com.android.tools.build:gradle:7.3.1'
classpath 'com.android.tools.build:gradle:8.0.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}

View File

@@ -1,5 +0,0 @@
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%

0
fix-metadata-markdown-lists.sh Executable file → Normal file
View File

View File

@@ -16,4 +16,7 @@ org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8
# https://developer.android.com/topic/libraries/support-library/androidx-rn
android.useAndroidX=true
# Automatically convert third-party libraries to use AndroidX
android.enableJetifier=false
android.enableJetifier=false
android.defaults.buildfeatures.buildconfig=true
android.nonTransitiveRClass=true
android.nonFinalResIds=false

Binary file not shown.

View File

@@ -1,6 +1,7 @@
#Thu Jan 13 11:33:43 MSK 2022
distributionBase=GRADLE_USER_HOME
distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-bin.zip
distributionPath=wrapper/dists
zipStorePath=wrapper/dists
distributionSha256Sum=e111cb9948407e26351227dabce49822fb88c37ee72f1d1582a69c68af2e702f
distributionUrl=https\://services.gradle.org/distributions/gradle-8.1.1-bin.zip
networkTimeout=10000
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

288
gradlew vendored Executable file → Normal file
View File

@@ -1,7 +1,7 @@
#!/usr/bin/env sh
#!/bin/sh
#
# Copyright 2015 the original author or authors.
# Copyright © 2015-2021 the original authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -17,67 +17,98 @@
#
##############################################################################
##
## Gradle start up script for UN*X
##
#
# Gradle start up script for POSIX generated by Gradle.
#
# Important for running:
#
# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is
# noncompliant, but you have some other compliant shell such as ksh or
# bash, then to run this script, type that shell name before the whole
# command line, like:
#
# ksh Gradle
#
# Busybox and similar reduced shells will NOT work, because this script
# requires all of these POSIX shell features:
# * functions;
# * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
# «${var#prefix}», «${var%suffix}», and «$( cmd )»;
# * compound commands having a testable exit status, especially «case»;
# * various built-in commands including «command», «set», and «ulimit».
#
# Important for patching:
#
# (2) This script targets any POSIX shell, so it avoids extensions provided
# by Bash, Ksh, etc; in particular arrays are avoided.
#
# The "traditional" practice of packing multiple parameters into a
# space-separated string is a well documented source of bugs and security
# problems, so this is (mostly) avoided, by progressively accumulating
# options in "$@", and eventually passing that to Java.
#
# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS,
# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly;
# see the in-line comments for details.
#
# There are tweaks for specific operating systems such as AIX, CygWin,
# Darwin, MinGW, and NonStop.
#
# (3) This script is generated from the Groovy template
# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
# within the Gradle project.
#
# You can find Gradle at https://github.com/gradle/gradle/.
#
##############################################################################
# Attempt to set APP_HOME
# Resolve links: $0 may be a link
PRG="$0"
# Need this for relative symlinks.
while [ -h "$PRG" ] ; do
ls=`ls -ld "$PRG"`
link=`expr "$ls" : '.*-> \(.*\)$'`
if expr "$link" : '/.*' > /dev/null; then
PRG="$link"
else
PRG=`dirname "$PRG"`"/$link"
fi
app_path=$0
# Need this for daisy-chained symlinks.
while
APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path
[ -h "$app_path" ]
do
ls=$( ls -ld "$app_path" )
link=${ls#*' -> '}
case $link in #(
/*) app_path=$link ;; #(
*) app_path=$APP_HOME$link ;;
esac
done
SAVED="`pwd`"
cd "`dirname \"$PRG\"`/" >/dev/null
APP_HOME="`pwd -P`"
cd "$SAVED" >/dev/null
APP_NAME="Gradle"
APP_BASE_NAME=`basename "$0"`
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
# This is normally unused
# shellcheck disable=SC2034
APP_BASE_NAME=${0##*/}
APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD="maximum"
MAX_FD=maximum
warn () {
echo "$*"
}
} >&2
die () {
echo
echo "$*"
echo
exit 1
}
} >&2
# OS specific support (must be 'true' or 'false').
cygwin=false
msys=false
darwin=false
nonstop=false
case "`uname`" in
CYGWIN* )
cygwin=true
;;
Darwin* )
darwin=true
;;
MINGW* )
msys=true
;;
NONSTOP* )
nonstop=true
;;
case "$( uname )" in #(
CYGWIN* ) cygwin=true ;; #(
Darwin* ) darwin=true ;; #(
MSYS* | MINGW* ) msys=true ;; #(
NONSTOP* ) nonstop=true ;;
esac
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
@@ -87,9 +118,9 @@ CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
if [ -n "$JAVA_HOME" ] ; then
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
# IBM's JDK on AIX uses strange locations for the executables
JAVACMD="$JAVA_HOME/jre/sh/java"
JAVACMD=$JAVA_HOME/jre/sh/java
else
JAVACMD="$JAVA_HOME/bin/java"
JAVACMD=$JAVA_HOME/bin/java
fi
if [ ! -x "$JAVACMD" ] ; then
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
@@ -98,7 +129,7 @@ Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
else
JAVACMD="java"
JAVACMD=java
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
Please set the JAVA_HOME variable in your environment to match the
@@ -106,80 +137,109 @@ location of your Java installation."
fi
# Increase the maximum file descriptors if we can.
if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
MAX_FD_LIMIT=`ulimit -H -n`
if [ $? -eq 0 ] ; then
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
MAX_FD="$MAX_FD_LIMIT"
fi
ulimit -n $MAX_FD
if [ $? -ne 0 ] ; then
warn "Could not set maximum file descriptor limit: $MAX_FD"
fi
else
warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
fi
fi
# For Darwin, add options to specify how the application appears in the dock
if $darwin; then
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
fi
# For Cygwin or MSYS, switch paths to Windows format before running java
if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
JAVACMD=`cygpath --unix "$JAVACMD"`
# We build the pattern for arguments to be converted via cygpath
ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
SEP=""
for dir in $ROOTDIRSRAW ; do
ROOTDIRS="$ROOTDIRS$SEP$dir"
SEP="|"
done
OURCYGPATTERN="(^($ROOTDIRS))"
# Add a user-defined pattern to the cygpath arguments
if [ "$GRADLE_CYGPATTERN" != "" ] ; then
OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
fi
# Now convert the arguments - kludge to limit ourselves to /bin/sh
i=0
for arg in "$@" ; do
CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
else
eval `echo args$i`="\"$arg\""
fi
i=`expr $i + 1`
done
case $i in
0) set -- ;;
1) set -- "$args0" ;;
2) set -- "$args0" "$args1" ;;
3) set -- "$args0" "$args1" "$args2" ;;
4) set -- "$args0" "$args1" "$args2" "$args3" ;;
5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
case $MAX_FD in #(
max*)
# In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
# shellcheck disable=SC3045
MAX_FD=$( ulimit -H -n ) ||
warn "Could not query maximum file descriptor limit"
esac
case $MAX_FD in #(
'' | soft) :;; #(
*)
# In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
# shellcheck disable=SC3045
ulimit -n "$MAX_FD" ||
warn "Could not set maximum file descriptor limit to $MAX_FD"
esac
fi
# Escape application args
save () {
for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
echo " "
}
APP_ARGS=`save "$@"`
# Collect all arguments for the java command, stacking in reverse order:
# * args from the command line
# * the main class name
# * -classpath
# * -D...appname settings
# * --module-path (only if needed)
# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.
# Collect all arguments for the java command, following the shell quoting and substitution rules
eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
# For Cygwin or MSYS, switch paths to Windows format before running java
if "$cygwin" || "$msys" ; then
APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" )
JAVACMD=$( cygpath --unix "$JAVACMD" )
# Now convert the arguments - kludge to limit ourselves to /bin/sh
for arg do
if
case $arg in #(
-*) false ;; # don't mess with options #(
/?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath
[ -e "$t" ] ;; #(
*) false ;;
esac
then
arg=$( cygpath --path --ignore --mixed "$arg" )
fi
# Roll the args list around exactly as many times as the number of
# args, so each arg winds up back in the position where it started, but
# possibly modified.
#
# NB: a `for` loop captures its iteration list before it begins, so
# changing the positional parameters here affects neither the number of
# iterations, nor the values presented in `arg`.
shift # remove old arg
set -- "$@" "$arg" # push replacement arg
done
fi
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
# Collect all arguments for the java command;
# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of
# shell script including quotes and variable substitutions, so put them in
# double quotes to make sure that they get re-expanded; and
# * put everything else in single quotes, so that it's not re-expanded.
set -- \
"-Dorg.gradle.appname=$APP_BASE_NAME" \
-classpath "$CLASSPATH" \
org.gradle.wrapper.GradleWrapperMain \
"$@"
# Stop when "xargs" is not available.
if ! command -v xargs >/dev/null 2>&1
then
die "xargs is not available"
fi
# Use "xargs" to parse quoted args.
#
# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
#
# In Bash we could simply go:
#
# readarray ARGS < <( xargs -n1 <<<"$var" ) &&
# set -- "${ARGS[@]}" "$@"
#
# but POSIX shell has neither arrays nor command substitution, so instead we
# post-process each arg (as a line of input to sed) to backslash-escape any
# character that might be a shell metacharacter, then use eval to reverse
# that process (while maintaining the separation between arguments), and wrap
# the whole thing up as a single "set" statement.
#
# This will of course break if any of these variables contains a newline or
# an unmatched quote.
#
eval "set -- $(
printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" |
xargs -n1 |
sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' |
tr '\n' ' '
)" '"$@"'
exec "$JAVACMD" "$@"

15
gradlew.bat vendored
View File

@@ -14,7 +14,7 @@
@rem limitations under the License.
@rem
@if "%DEBUG%" == "" @echo off
@if "%DEBUG%"=="" @echo off
@rem ##########################################################################
@rem
@rem Gradle startup script for Windows
@@ -25,7 +25,8 @@
if "%OS%"=="Windows_NT" setlocal
set DIRNAME=%~dp0
if "%DIRNAME%" == "" set DIRNAME=.
if "%DIRNAME%"=="" set DIRNAME=.
@rem This is normally unused
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%
@@ -40,7 +41,7 @@ if defined JAVA_HOME goto findJavaFromJavaHome
set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
if "%ERRORLEVEL%" == "0" goto execute
if %ERRORLEVEL% equ 0 goto execute
echo.
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
@@ -75,13 +76,15 @@ set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
:end
@rem End local scope for the variables with windows NT shell
if "%ERRORLEVEL%"=="0" goto mainEnd
if %ERRORLEVEL% equ 0 goto mainEnd
:fail
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
rem the _cmd.exe /c_ return code!
if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
exit /b 1
set EXIT_CODE=%ERRORLEVEL%
if %EXIT_CODE% equ 0 set EXIT_CODE=1
if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
exit /b %EXIT_CODE%
:mainEnd
if "%OS%"=="Windows_NT" endlocal

View File

@@ -0,0 +1,9 @@
<svg width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
<style>
path { fill: black; }
@media (prefers-color-scheme: dark) {
path { fill: white; }
}
</style>
<path d="M15.4925 3.50673C14.652 3.58251 13.9933 4.28929 13.9933 5.15V10C13.9933 10.4142 13.6577 10.75 13.2437 10.75C11.8002 10.75 10.7863 11.3378 10.0365 12.238C9.26389 13.1656 8.7607 14.444 8.44554 15.7954C8.13254 17.1376 8.01871 18.4912 7.98453 19.5172C7.97182 19.8987 7.9702 20.2324 7.97313 20.5H14.9928V19.75C14.9928 18.5074 13.986 17.5 12.744 17.5H11.4947C11.0807 17.5 10.7451 17.1642 10.7451 16.75C10.7451 16.3358 11.0807 16 11.4947 16H12.744C14.8139 16 16.4919 17.6789 16.4919 19.75V20.5H17.2415C17.6555 20.5 17.9911 20.1642 17.9911 19.75V9.75C17.9911 9.33579 18.3267 9 18.7407 9H19.2472C20.2264 9 20.8249 7.92404 20.309 7.09132L19.6893 6.09132C19.4615 5.72367 19.0599 5.5 18.6275 5.5H16.2421C15.8281 5.5 15.4925 5.16421 15.4925 4.75V3.50673ZM6.47388 20.5C6.47098 20.2156 6.47293 19.8655 6.4862 19.4672C6.52229 18.3838 6.64271 16.9249 6.98559 15.4546C7.32631 13.9935 7.90065 12.4594 8.88484 11.2777C9.75681 10.2307 10.9399 9.47669 12.4942 9.29318V5.15C12.4942 3.4103 13.9037 2 15.6424 2C16.3876 2 16.9916 2.60442 16.9916 3.35V4H18.6275C19.5787 4 20.4622 4.49207 20.9634 5.30092L21.5831 6.30092C22.6749 8.06291 21.4985 10.32 19.4903 10.4898V19.75C19.4903 20.9926 18.4835 22 17.2415 22H7.24708L7.24537 22H5.79625C3.69964 22 2 20.2994 2 18.2016C2 17.2395 2.36489 16.3133 3.02098 15.6099L4.15612 14.393C4.92005 13.5741 5.17521 12.4027 4.82117 11.3399C4.67114 10.8896 4.41837 10.4804 4.08288 10.1447L2.96914 9.03042C2.67641 8.73753 2.67639 8.26266 2.96912 7.96976C3.26184 7.67686 3.73645 7.67685 4.02919 7.96974L5.14293 9.08405C5.643 9.58438 6.01977 10.1943 6.2434 10.8656C6.77114 12.4497 6.3908 14.1958 5.25209 15.4165L4.11695 16.6334C3.71996 17.059 3.49916 17.6195 3.49916 18.2016C3.49916 19.471 4.52761 20.5 5.79625 20.5H6.47388Z" fill="#212121"/>
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

1
img/saunarepo-badge.svg Normal file
View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="124.25" height="28" role="img" aria-label="SAUNAREPO"><title>SAUNAREPO</title><g shape-rendering="crispEdges"><rect width="124.25" height="28" fill="#fb8441"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="100"><image x="9" y="7" width="14" height="14" xlink:href="data:image/svg+xml;base64,PHN2ZyBmaWxsPSJ3aGl0ZSIgcm9sZT0iaW1nIiB2aWV3Qm94PSIwIDAgMjQgMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHRpdGxlPkFuZHJvaWQ8L3RpdGxlPjxwYXRoIGQ9Ik0xNy41MjMgMTUuMzQxNGMtLjU1MTEgMC0uOTk5My0uNDQ4Ni0uOTk5My0uOTk5N3MuNDQ4My0uOTk5My45OTkzLS45OTkzYy41NTExIDAgLjk5OTMuNDQ4My45OTkzLjk5OTMuMDAwMS41NTExLS40NDgyLjk5OTctLjk5OTMuOTk5N20tMTEuMDQ2IDBjLS41NTExIDAtLjk5OTMtLjQ0ODYtLjk5OTMtLjk5OTdzLjQ0ODItLjk5OTMuOTk5My0uOTk5M2MuNTUxMSAwIC45OTkzLjQ0ODMuOTk5My45OTkzIDAgLjU1MTEtLjQ0ODMuOTk5Ny0uOTk5My45OTk3bTExLjQwNDUtNi4wMmwxLjk5NzMtMy40NTkyYS40MTYuNDE2IDAgMDAtLjE1MjEtLjU2NzYuNDE2LjQxNiAwIDAwLS41Njc2LjE1MjFsLTIuMDIyMyAzLjUwM0MxNS41OTAyIDguMjQzOSAxMy44NTMzIDcuODUwOCAxMiA3Ljg1MDhzLTMuNTkwMi4zOTMxLTUuMTM2NyAxLjA5ODlMNC44NDEgNS40NDY3YS40MTYxLjQxNjEgMCAwMC0uNTY3Ny0uMTUyMS40MTU3LjQxNTcgMCAwMC0uMTUyMS41Njc2bDEuOTk3MyAzLjQ1OTJDMi42ODg5IDExLjE4NjcuMzQzMiAxNC42NTg5IDAgMTguNzYxaDI0Yy0uMzQzNS00LjEwMjEtMi42ODkyLTcuNTc0My02LjExODUtOS40Mzk2Ii8+PC9zdmc+"/><text transform="scale(.1)" x="721.25" y="175" textLength="802.5" fill="#fff" font-weight="bold">SAUNAREPO</text></g></svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

279
mastodon/.editorconfig Normal file
View File

@@ -0,0 +1,279 @@
root = true
[*]
charset = utf-8
end_of_line = lf
indent_size = 4
indent_style = tab
insert_final_newline = false
max_line_length = 300
tab_width = 4
ij_continuation_indent_size = 8
ij_formatter_off_tag = @formatter:off
ij_formatter_on_tag = @formatter:on
ij_formatter_tags_enabled = false
ij_smart_tabs = false
ij_visual_guides = none
ij_wrap_on_typing = false
[*.java]
ij_java_align_consecutive_assignments = false
ij_java_align_consecutive_variable_declarations = false
ij_java_align_group_field_declarations = false
ij_java_align_multiline_annotation_parameters = false
ij_java_align_multiline_array_initializer_expression = false
ij_java_align_multiline_assignment = false
ij_java_align_multiline_binary_operation = false
ij_java_align_multiline_chained_methods = false
ij_java_align_multiline_extends_list = false
ij_java_align_multiline_for = true
ij_java_align_multiline_method_parentheses = false
ij_java_align_multiline_parameters = true
ij_java_align_multiline_parameters_in_calls = false
ij_java_align_multiline_parenthesized_expression = false
ij_java_align_multiline_records = true
ij_java_align_multiline_resources = true
ij_java_align_multiline_ternary_operation = false
ij_java_align_multiline_text_blocks = false
ij_java_align_multiline_throws_list = false
ij_java_align_subsequent_simple_methods = false
ij_java_align_throws_keyword = false
ij_java_align_types_in_multi_catch = true
ij_java_annotation_parameter_wrap = off
ij_java_array_initializer_new_line_after_left_brace = false
ij_java_array_initializer_right_brace_on_new_line = false
ij_java_array_initializer_wrap = off
ij_java_assert_statement_colon_on_next_line = false
ij_java_assert_statement_wrap = off
ij_java_assignment_wrap = off
ij_java_binary_operation_sign_on_next_line = false
ij_java_binary_operation_wrap = off
ij_java_blank_lines_after_anonymous_class_header = 0
ij_java_blank_lines_after_class_header = 0
ij_java_blank_lines_after_imports = 1
ij_java_blank_lines_after_package = 1
ij_java_blank_lines_around_class = 1
ij_java_blank_lines_around_field = 0
ij_java_blank_lines_around_field_in_interface = 0
ij_java_blank_lines_around_initializer = 1
ij_java_blank_lines_around_method = 1
ij_java_blank_lines_around_method_in_interface = 1
ij_java_blank_lines_before_class_end = 0
ij_java_blank_lines_before_imports = 1
ij_java_blank_lines_before_method_body = 0
ij_java_blank_lines_before_package = 0
ij_java_block_brace_style = end_of_line
ij_java_block_comment_add_space = false
ij_java_block_comment_at_first_column = true
ij_java_builder_methods = none
ij_java_call_parameters_new_line_after_left_paren = false
ij_java_call_parameters_right_paren_on_new_line = false
ij_java_call_parameters_wrap = off
ij_java_case_statement_on_separate_line = true
ij_java_catch_on_new_line = false
ij_java_class_annotation_wrap = split_into_lines
ij_java_class_brace_style = end_of_line
ij_java_class_count_to_use_import_on_demand = 99
ij_java_class_names_in_javadoc = 1
ij_java_do_not_indent_top_level_class_members = false
ij_java_do_not_wrap_after_single_annotation = false
ij_java_do_not_wrap_after_single_annotation_in_parameter = false
ij_java_do_while_brace_force = never
ij_java_doc_add_blank_line_after_description = true
ij_java_doc_add_blank_line_after_param_comments = false
ij_java_doc_add_blank_line_after_return = false
ij_java_doc_add_p_tag_on_empty_lines = true
ij_java_doc_align_exception_comments = true
ij_java_doc_align_param_comments = true
ij_java_doc_do_not_wrap_if_one_line = false
ij_java_doc_enable_formatting = true
ij_java_doc_enable_leading_asterisks = true
ij_java_doc_indent_on_continuation = false
ij_java_doc_keep_empty_lines = true
ij_java_doc_keep_empty_parameter_tag = true
ij_java_doc_keep_empty_return_tag = true
ij_java_doc_keep_empty_throws_tag = true
ij_java_doc_keep_invalid_tags = true
ij_java_doc_param_description_on_new_line = false
ij_java_doc_preserve_line_breaks = false
ij_java_doc_use_throws_not_exception_tag = true
ij_java_else_on_new_line = false
ij_java_enum_constants_wrap = off
ij_java_extends_keyword_wrap = off
ij_java_extends_list_wrap = off
ij_java_field_annotation_wrap = split_into_lines
ij_java_finally_on_new_line = false
ij_java_for_brace_force = never
ij_java_for_statement_new_line_after_left_paren = false
ij_java_for_statement_right_paren_on_new_line = false
ij_java_for_statement_wrap = off
ij_java_generate_final_locals = false
ij_java_generate_final_parameters = false
ij_java_if_brace_force = never
ij_java_imports_layout = android.**,|,com.**,|,junit.**,|,net.**,|,org.**,|,java.**,|,javax.**,|,*,|,$*,|
ij_java_indent_case_from_switch = true
ij_java_insert_inner_class_imports = false
ij_java_insert_override_annotation = true
ij_java_keep_blank_lines_before_right_brace = 2
ij_java_keep_blank_lines_between_package_declaration_and_header = 2
ij_java_keep_blank_lines_in_code = 2
ij_java_keep_blank_lines_in_declarations = 2
ij_java_keep_builder_methods_indents = false
ij_java_keep_control_statement_in_one_line = true
ij_java_keep_first_column_comment = true
ij_java_keep_indents_on_empty_lines = false
ij_java_keep_line_breaks = true
ij_java_keep_multiple_expressions_in_one_line = false
ij_java_keep_simple_blocks_in_one_line = false
ij_java_keep_simple_classes_in_one_line = false
ij_java_keep_simple_lambdas_in_one_line = false
ij_java_keep_simple_methods_in_one_line = false
ij_java_label_indent_absolute = false
ij_java_label_indent_size = 0
ij_java_lambda_brace_style = end_of_line
ij_java_layout_static_imports_separately = true
ij_java_line_comment_add_space = false
ij_java_line_comment_add_space_on_reformat = false
ij_java_line_comment_at_first_column = true
ij_java_method_annotation_wrap = split_into_lines
ij_java_method_brace_style = end_of_line
ij_java_method_call_chain_wrap = off
ij_java_method_parameters_new_line_after_left_paren = false
ij_java_method_parameters_right_paren_on_new_line = false
ij_java_method_parameters_wrap = off
ij_java_modifier_list_wrap = false
ij_java_multi_catch_types_wrap = normal
ij_java_names_count_to_use_import_on_demand = 99
ij_java_new_line_after_lparen_in_annotation = false
ij_java_new_line_after_lparen_in_record_header = false
ij_java_parameter_annotation_wrap = off
ij_java_parentheses_expression_new_line_after_left_paren = false
ij_java_parentheses_expression_right_paren_on_new_line = false
ij_java_place_assignment_sign_on_next_line = false
ij_java_prefer_longer_names = true
ij_java_prefer_parameters_wrap = false
ij_java_record_components_wrap = normal
ij_java_repeat_synchronized = true
ij_java_replace_instanceof_and_cast = false
ij_java_replace_null_check = true
ij_java_replace_sum_lambda_with_method_ref = true
ij_java_resource_list_new_line_after_left_paren = false
ij_java_resource_list_right_paren_on_new_line = false
ij_java_resource_list_wrap = off
ij_java_rparen_on_new_line_in_annotation = false
ij_java_rparen_on_new_line_in_record_header = false
ij_java_space_after_closing_angle_bracket_in_type_argument = false
ij_java_space_after_colon = true
ij_java_space_after_comma = true
ij_java_space_after_comma_in_type_arguments = true
ij_java_space_after_for_semicolon = true
ij_java_space_after_quest = true
ij_java_space_after_type_cast = true
ij_java_space_before_annotation_array_initializer_left_brace = false
ij_java_space_before_annotation_parameter_list = false
ij_java_space_before_array_initializer_left_brace = false
ij_java_space_before_catch_keyword = false
ij_java_space_before_catch_left_brace = false
ij_java_space_before_catch_parentheses = false
ij_java_space_before_class_left_brace = false
ij_java_space_before_colon = true
ij_java_space_before_colon_in_foreach = true
ij_java_space_before_comma = false
ij_java_space_before_do_left_brace = false
ij_java_space_before_else_keyword = false
ij_java_space_before_else_left_brace = false
ij_java_space_before_finally_keyword = false
ij_java_space_before_finally_left_brace = false
ij_java_space_before_for_left_brace = false
ij_java_space_before_for_parentheses = false
ij_java_space_before_for_semicolon = false
ij_java_space_before_if_left_brace = false
ij_java_space_before_if_parentheses = false
ij_java_space_before_method_call_parentheses = false
ij_java_space_before_method_left_brace = false
ij_java_space_before_method_parentheses = false
ij_java_space_before_opening_angle_bracket_in_type_parameter = false
ij_java_space_before_quest = true
ij_java_space_before_switch_left_brace = false
ij_java_space_before_switch_parentheses = false
ij_java_space_before_synchronized_left_brace = false
ij_java_space_before_synchronized_parentheses = false
ij_java_space_before_try_left_brace = false
ij_java_space_before_try_parentheses = false
ij_java_space_before_type_parameter_list = false
ij_java_space_before_while_keyword = false
ij_java_space_before_while_left_brace = false
ij_java_space_before_while_parentheses = false
ij_java_space_inside_one_line_enum_braces = false
ij_java_space_within_empty_array_initializer_braces = false
ij_java_space_within_empty_method_call_parentheses = false
ij_java_space_within_empty_method_parentheses = false
ij_java_spaces_around_additive_operators = false
ij_java_spaces_around_annotation_eq = true
ij_java_spaces_around_assignment_operators = false
ij_java_spaces_around_bitwise_operators = false
ij_java_spaces_around_equality_operators = false
ij_java_spaces_around_lambda_arrow = false
ij_java_spaces_around_logical_operators = true
ij_java_spaces_around_method_ref_dbl_colon = false
ij_java_spaces_around_multiplicative_operators = false
ij_java_spaces_around_relational_operators = false
ij_java_spaces_around_shift_operators = false
ij_java_spaces_around_type_bounds_in_type_parameters = true
ij_java_spaces_around_unary_operator = false
ij_java_spaces_within_angle_brackets = false
ij_java_spaces_within_annotation_parentheses = false
ij_java_spaces_within_array_initializer_braces = false
ij_java_spaces_within_braces = false
ij_java_spaces_within_brackets = false
ij_java_spaces_within_cast_parentheses = false
ij_java_spaces_within_catch_parentheses = false
ij_java_spaces_within_for_parentheses = false
ij_java_spaces_within_if_parentheses = false
ij_java_spaces_within_method_call_parentheses = false
ij_java_spaces_within_method_parentheses = false
ij_java_spaces_within_parentheses = false
ij_java_spaces_within_record_header = false
ij_java_spaces_within_switch_parentheses = false
ij_java_spaces_within_synchronized_parentheses = false
ij_java_spaces_within_try_parentheses = false
ij_java_spaces_within_while_parentheses = false
ij_java_special_else_if_treatment = true
ij_java_subclass_name_suffix = Impl
ij_java_ternary_operation_signs_on_next_line = false
ij_java_ternary_operation_wrap = off
ij_java_test_name_suffix = Test
ij_java_throws_keyword_wrap = off
ij_java_throws_list_wrap = off
ij_java_use_external_annotations = false
ij_java_use_fq_class_names = false
ij_java_use_relative_indents = false
ij_java_use_single_class_imports = true
ij_java_variable_annotation_wrap = off
ij_java_visibility = public
ij_java_while_brace_force = never
ij_java_while_on_new_line = false
ij_java_wrap_comments = false
ij_java_wrap_first_method_in_call_chain = false
ij_java_wrap_long_lines = false
[{*.ant,*.fxml,*.jhm,*.jnlp,*.jrxml,*.rng,*.tld,*.wsdl,*.xml,*.xsd,*.xsl,*.xslt,*.xul}]
ij_continuation_indent_size = 4
ij_xml_align_attributes = false
ij_xml_align_text = false
ij_xml_attribute_wrap = normal
ij_xml_block_comment_add_space = false
ij_xml_block_comment_at_first_column = true
ij_xml_keep_blank_lines = 2
ij_xml_keep_indents_on_empty_lines = false
ij_xml_keep_line_breaks = false
ij_xml_keep_line_breaks_in_text = true
ij_xml_keep_whitespaces = false
ij_xml_keep_whitespaces_around_cdata = preserve
ij_xml_keep_whitespaces_inside_cdata = false
ij_xml_line_comment_at_first_column = true
ij_xml_space_after_tag_name = false
ij_xml_space_around_equals_in_attribute = false
ij_xml_space_inside_empty_tag = true
ij_xml_text_wrap = normal
ij_xml_use_custom_settings = true

View File

@@ -2,39 +2,87 @@ plugins {
id 'com.android.application'
}
java {
toolchain {
languageVersion = JavaLanguageVersion.of(17)
}
}
android {
compileSdk 33
defaultConfig {
manifestPlaceholders = [oAuthScheme:"moshidon-android-auth"]
archivesBaseName = "moshidon"
applicationId "org.joinmastodon.android.moshinda"
minSdk 23
targetSdk 33
versionCode 94
versionName "1.2.0+fork.94.moshinda"
versionCode 102
versionName "2.1.4+fork.102.moshinda"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
resConfigs "ar-rSA", "be-rBY", "bn-rBD", "bs-rBA", "ca-rES", "cs-rCZ", "de-rDE", "el-rGR", "es-rES", "eu-rES", "fi-rFI", "fil-rPH", "fr-rFR", "ga-rIE", "gd-rGB", "gl-rES", "hi-rIN", "hr-rHR", "hu-rHU", "hy-rAM", "in-rID", "is-rIS", "it-rIT", "iw-rIL", "ja-rJP", "kab", "ko-rKR", "nl-rNL", "oc-rFR", "pl-rPL", "pt-rBR", "pt-rPT", "ro-rRO", "ru-rRU", "si-rLK", "sl-rSI", "sv-rSE", "th-rTH", "tr-rTR", "uk-rUA", "vi-rVN", "zh-rCN", "zh-rTW"
resourceConfigurations += ['ar-rSA', 'ar-rDZ', 'be-rBY', 'bn-rBD', 'bs-rBA', 'ca-rES', 'cs-rCZ', 'da-rDK', 'de-rDE', 'el-rGR', 'es-rES', 'eu-rES', 'fa-rIR', 'fi-rFI', 'fil-rPH', 'fr-rFR', 'ga-rIE', 'gd-rGB', 'gl-rES', 'hi-rIN', 'hr-rHR', 'hu-rHU', 'hy-rAM', 'ig-rNG', 'in-rID', 'is-rIS', 'it-rIT', 'iw-rIL', 'ja-rJP', 'kab', 'ko-rKR', 'my-rMM', 'nl-rNL', 'no-rNO', 'oc-rFR', 'pl-rPL', 'pt-rBR', 'pt-rPT', 'ro-rRO', 'ru-rRU', 'si-rLK', 'sl-rSI', 'sv-rSE', 'th-rTH', 'tr-rTR', 'uk-rUA', 'ur-rIN', 'vi-rVN', 'zh-rCN', 'zh-rTW']
}
signingConfigs {
nightly{
storeFile = file("keystore/nightly_keystore.jks")
storePassword System.getenv("SIGNING_STORE_PASSWORD")
if (storePassword == null) {
Properties properties = new Properties()
properties.load(project.rootProject.file('local.properties').newDataInputStream())
storePassword = properties.getProperty('SIGNING_STORE_PASSWORD')
}
keyAlias System.getenv("SIGNING_KEY_ALIAS")
if (keyAlias == null) {
Properties properties = new Properties()
properties.load(project.rootProject.file('local.properties').newDataInputStream())
keyAlias = properties.getProperty('SIGNING_KEY_ALIAS')
}
keyPassword System.getenv("SIGNING_KEY_PASSWORD")
if (keyPassword == null) {
Properties properties = new Properties()
properties.load(project.rootProject.file('local.properties').newDataInputStream())
keyPassword = properties.getProperty('SIGNING_KEY_PASSWORD')
}
}
}
buildTypes {
release {
// minifyEnabled true
// shrinkResources true
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
debug{
debuggable true
versionNameSuffix '-debug'
applicationIdSuffix '.debug'
manifestPlaceholders = [oAuthScheme:"moshidon-android-debug-auth"]
}
githubRelease{
initWith release
}
nightly{
if(System.getenv("CURRENT_DATE") != null){
versionNameSuffix '-nightly+@' + System.getenv("CURRENT_DATE")
} else {
Properties properties = new Properties()
properties.load(project.rootProject.file('local.properties').newDataInputStream())
versionNameSuffix '-nightly+@' + properties.getProperty('CURRENT_DATE')
}
applicationIdSuffix '.nightly'
signingConfig signingConfigs.nightly
manifestPlaceholders = [oAuthScheme:"moshidon-android-nightly-auth"]
}
playRelease{
initWith release
minifyEnabled true
shrinkResources true
versionNameSuffix '-play'
}
githubRelease { initWith release }
playRelease { initWith release }
fdroidRelease { initWith release }
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_17
@@ -46,17 +94,22 @@ android {
setRoot "src/github"
}
debug {
setRoot "src/github"
setRoot "src/debug"
}
}
lintOptions{
checkReleaseBuilds false
namespace 'org.joinmastodon.android'
lint {
abortOnError false
checkReleaseBuilds false
}
buildFeatures {
buildConfig true
}
}
dependencies {
api 'androidx.annotation:annotation:1.3.0'
api 'androidx.annotation:annotation:1.6.0'
implementation 'com.squareup.okhttp3:okhttp:3.14.9'
implementation 'me.grishka.litex:recyclerview:1.2.1.1'
implementation 'me.grishka.litex:swiperefreshlayout:1.1.0.1'
@@ -64,18 +117,20 @@ 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.7'
implementation 'com.google.code.gson:gson:2.8.9'
implementation 'me.grishka.litex:palette:1.0.0'
implementation 'me.grishka.appkit:appkit:1.2.14'
implementation 'com.google.code.gson:gson:2.9.0'
implementation 'org.jsoup:jsoup:1.14.3'
implementation 'com.squareup:otto:1.3.8'
implementation 'de.psdev:async-otto:1.0.3'
implementation 'org.parceler:parceler-api:1.1.12'
implementation 'com.github.bottom-software-foundation:bottom-java:2.1.0'
annotationProcessor 'org.parceler:parceler:1.1.12'
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.5'
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.0.3'
implementation 'com.github.UnifiedPush:android-connector:2.1.1'
androidTestImplementation 'androidx.test:core:1.4.1-alpha05'
androidTestImplementation 'androidx.test.ext:junit:1.1.4-alpha05'
androidTestImplementation 'androidx.test:runner:1.5.0-alpha02'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.0-alpha05'
androidTestImplementation 'androidx.test:core:1.5.0'
androidTestImplementation 'androidx.test.ext:junit:1.1.5'
androidTestImplementation 'androidx.test:runner:1.5.2'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'
}

View File

@@ -30,6 +30,9 @@
*;
}
# i don't know how proguard works
-keep class org.joinmastodon.android.** { *; }
# Keep all enums for debugging purposes
-keepnames public enum * {
*;
@@ -42,7 +45,50 @@
-keepattributes LineNumberTable
-keepattributes *
-keep,allowobfuscation,allowshrinking class com.google.gson.reflect.TypeToken
-keep,allowobfuscation,allowshrinking class * extends com.google.gson.reflect.TypeToken
#-keep class javax.** { *; }
-keep class org.joinmastodon.android.** { *; }
# Parceler library
-keep interface org.parceler.Parcel
-keep @org.parceler.Parcel class * { *; }
-keep class **$$Parcelable { *; }
##---------------Begin: proguard configuration for Gson ----------
# Gson uses generic type information stored in a class file when working with fields. Proguard
# removes such information by default, so configure it to keep all of it.
-keepattributes Signature
# For using GSON @Expose annotation
-keepattributes *Annotation*
# Gson specific classes
-dontwarn sun.misc.**
#-keep class com.google.gson.stream.** { *; }
# Application classes that will be serialized/deserialized over Gson
-keep class com.google.gson.examples.android.model.** { <fields>; }
# Prevent proguard from stripping interface information from TypeAdapter, TypeAdapterFactory,
# JsonSerializer, JsonDeserializer instances (so they can be used in @JsonAdapter)
-keep class * extends com.google.gson.TypeAdapter
-keep class * implements com.google.gson.TypeAdapterFactory
-keep class * implements com.google.gson.JsonSerializer
-keep class * implements com.google.gson.JsonDeserializer
# Prevent R8 from leaving Data object members always null
-keepclassmembers,allowobfuscation class * {
@com.google.gson.annotations.SerializedName <fields>;
}
# Retain generic signatures of TypeToken and its subclasses with R8 version 3.0 and higher.
-keep,allowobfuscation,allowshrinking class com.google.gson.reflect.TypeToken
-keep,allowobfuscation,allowshrinking class * extends com.google.gson.reflect.TypeToken
##---------------End: proguard configuration for Gson ----------
-dontobfuscate

View File

@@ -0,0 +1,113 @@
package org.joinmastodon.android.fragments;
import static org.junit.Assert.*;
import org.joinmastodon.android.events.StatusCountersUpdatedEvent;
import org.joinmastodon.android.events.StatusUpdatedEvent;
import org.joinmastodon.android.model.Status;
import org.joinmastodon.android.model.StatusContext;
import org.junit.Test;
import java.time.Instant;
import java.util.List;
public class ThreadFragmentTest {
private Status fakeStatus(String id, String inReplyTo) {
Status status = Status.ofFake(id, null, null);
status.inReplyToId = inReplyTo;
return status;
}
private ThreadFragment.NeighborAncestryInfo fakeInfo(Status s, Status d, Status a) {
return new ThreadFragment.NeighborAncestryInfo(s, d, a);
}
@Test
public void mapNeighborhoodAncestry() {
StatusContext context = new StatusContext();
context.ancestors = List.of(
fakeStatus("oldest ancestor", null),
fakeStatus("younger ancestor", "oldest ancestor")
);
Status mainStatus = fakeStatus("main status", "younger ancestor");
context.descendants = List.of(
fakeStatus("first reply", "main status"),
fakeStatus("reply to first reply", "first reply"),
fakeStatus("third level reply", "reply to first reply"),
fakeStatus("another reply", "main status")
);
List<ThreadFragment.NeighborAncestryInfo> neighbors =
ThreadFragment.mapNeighborhoodAncestry(mainStatus, context);
assertEquals(List.of(
fakeInfo(context.ancestors.get(0), context.ancestors.get(1), null),
fakeInfo(context.ancestors.get(1), mainStatus, context.ancestors.get(0)),
fakeInfo(mainStatus, context.descendants.get(0), context.ancestors.get(1)),
fakeInfo(context.descendants.get(0), context.descendants.get(1), mainStatus),
fakeInfo(context.descendants.get(1), context.descendants.get(2), context.descendants.get(0)),
fakeInfo(context.descendants.get(2), null, context.descendants.get(1)),
fakeInfo(context.descendants.get(3), null, null)
), neighbors);
}
@Test
public void maybeApplyMainStatus() {
ThreadFragment fragment = new ThreadFragment();
fragment.contextInitiallyRendered = true;
fragment.mainStatus = Status.ofFake("123456", "original text", Instant.EPOCH);
Status update1 = Status.ofFake("123456", "updated text", Instant.EPOCH);
update1.editedAt = Instant.ofEpochSecond(1);
fragment.updatedStatus = update1;
StatusUpdatedEvent event1 = (StatusUpdatedEvent) fragment.maybeApplyMainStatus();
assertEquals("fired update event", update1, event1.status);
assertEquals("updated main status", update1, fragment.mainStatus);
Status update2 = Status.ofFake("123456", "updated text", Instant.EPOCH);
update2.favouritesCount = 123;
fragment.updatedStatus = update2;
StatusCountersUpdatedEvent event2 = (StatusCountersUpdatedEvent) fragment.maybeApplyMainStatus();
assertEquals("only fired counter update event", update2.id, event2.id);
assertEquals("updated counter is correct", 123, event2.favorites);
assertEquals("updated main status", update2, fragment.mainStatus);
Status update3 = Status.ofFake("123456", "whatever", Instant.EPOCH);
fragment.contextInitiallyRendered = false;
fragment.updatedStatus = update3;
assertNull("no update when context hasn't been rendered", fragment.maybeApplyMainStatus());
}
@Test
public void sortStatusContext() {
StatusContext context = new StatusContext();
context.ancestors = List.of(
fakeStatus("younger ancestor", "oldest ancestor"),
fakeStatus("oldest ancestor", null)
);
context.descendants = List.of(
fakeStatus("reply to first reply", "first reply"),
fakeStatus("third level reply", "reply to first reply"),
fakeStatus("first reply", "main status"),
fakeStatus("another reply", "main status")
);
ThreadFragment.sortStatusContext(
fakeStatus("main status", "younger ancestor"),
context
);
List<Status> expectedAncestors = List.of(
fakeStatus("oldest ancestor", null),
fakeStatus("younger ancestor", "oldest ancestor")
);
List<Status> expectedDescendants = List.of(
fakeStatus("first reply", "main status"),
fakeStatus("reply to first reply", "first reply"),
fakeStatus("third level reply", "reply to first reply"),
fakeStatus("another reply", "main status")
);
// TODO: ??? i have no idea how this code works. it certainly doesn't return what i'd expect
}
}

View File

@@ -65,6 +65,7 @@ import static androidx.test.espresso.matcher.ViewMatchers.*;
@LargeTest
public class StoreScreenshotsGenerator{
private static final String PHOTO_FILE="IMG_1010.jpg";
private static final long LOAD_WAIT_TIMEOUT=20_000;
@Rule
public ActivityScenarioRule<MainActivity> activityScenarioRule=new ActivityScenarioRule<>(MainActivity.class);
@@ -84,14 +85,14 @@ public class StoreScreenshotsGenerator{
AccountSession session=AccountSessionManager.getInstance().getAccount(AccountSessionManager.getInstance().getLastActiveAccountID());
MastodonApp.context.deleteDatabase(session.getID()+".db");
onView(isRoot()).perform(waitId(R.id.more, 5000));
onView(isRoot()).perform(waitId(R.id.more, LOAD_WAIT_TIMEOUT));
Thread.sleep(500);
takeScreenshot("HomeTimeline");
GlobalUserPreferences.theme=GlobalUserPreferences.ThemePreference.DARK;
activityScenarioRule.getScenario().recreate();
onView(isRoot()).perform(waitId(R.id.more, 5000));
onView(isRoot()).perform(waitId(R.id.more, LOAD_WAIT_TIMEOUT));
Thread.sleep(500);
takeScreenshot("HomeTimeline_Dark");
@@ -100,8 +101,8 @@ public class StoreScreenshotsGenerator{
activityScenarioRule.getScenario().onActivity(activity->UiUtils.openProfileByID(activity, session.getID(), args.getString("profileAccountID")));
Thread.sleep(500);
onView(isRoot()).perform(waitId(R.id.avatar_border, 5000)); // wait for profile to load
onView(isRoot()).perform(waitId(R.id.more, 5000)); // wait for timeline to load
onView(isRoot()).perform(waitId(R.id.avatar_border, LOAD_WAIT_TIMEOUT)); // wait for profile to load
onView(isRoot()).perform(waitId(R.id.more, LOAD_WAIT_TIMEOUT)); // wait for timeline to load
Thread.sleep(500);
takeScreenshot("Profile");

View File

@@ -0,0 +1,261 @@
package org.joinmastodon.android.ui.utils;
import static org.junit.Assert.*;
import android.content.Context;
import android.content.res.Resources;
import android.util.Pair;
import org.joinmastodon.android.MastodonApp;
import org.joinmastodon.android.api.session.AccountSessionManager;
import org.joinmastodon.android.model.Account;
import org.joinmastodon.android.model.AccountField;
import org.joinmastodon.android.model.Instance;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
import java.util.Arrays;
import java.util.List;
import java.util.Locale;
import java.util.Optional;
public class UiUtilsTest {
@BeforeClass
public static void createDummySession() {
Instance dummyInstance = new Instance();
dummyInstance.uri = "test.tld";
Account dummyAccount = new Account();
dummyAccount.id = "123456";
AccountSessionManager.getInstance().addAccount(dummyInstance, null, dummyAccount, null, null);
}
@AfterClass
public static void cleanUp() {
AccountSessionManager.getInstance().removeAccount("test.tld_123456");
}
@Test
public void parseFediverseHandle() {
assertEquals(
Optional.of(Pair.create("megalodon", Optional.of("floss.social"))),
UiUtils.parseFediverseHandle("megalodon@floss.social")
);
assertEquals(
Optional.of(Pair.create("megalodon", Optional.of("floss.social"))),
UiUtils.parseFediverseHandle("@megalodon@floss.social")
);
assertEquals(
Optional.of(Pair.create("megalodon", Optional.empty())),
UiUtils.parseFediverseHandle("@megalodon")
);
assertEquals(
Optional.of(Pair.create("megalodon", Optional.of("floss.social"))),
UiUtils.parseFediverseHandle("mailto:megalodon@floss.social")
);
assertEquals(
Optional.empty(),
UiUtils.parseFediverseHandle("megalodon")
);
assertEquals(
Optional.empty(),
UiUtils.parseFediverseHandle("this is not a fedi handle")
);
assertEquals(
Optional.empty(),
UiUtils.parseFediverseHandle("not@a-domain")
);
}
@Test
public void acctMatches() {
assertTrue("local account, domain not specified", UiUtils.acctMatches(
"test.tld_123456",
"someone",
"someone",
null
));
assertTrue("domain not specified", UiUtils.acctMatches(
"test.tld_123456",
"someone@somewhere.social",
"someone",
null
));
assertTrue("local account, domain specified, different casing", UiUtils.acctMatches(
"test.tld_123456",
"SomeOne",
"someone",
"Test.TLD"
));
assertFalse("username doesn't match", UiUtils.acctMatches(
"test.tld_123456",
"someone-else@somewhere.social",
"someone",
"somewhere.social"
));
assertFalse("domain doesn't match", UiUtils.acctMatches(
"test.tld_123456",
"someone@somewhere.social",
"someone",
"somewhere.else"
));
}
private final String[] args = new String[] { "Megalodon", "" };
private String gen(String format, CharSequence... args) {
return UiUtils.generateFormattedString(format, args).toString();
}
@Test
public void generateFormattedString() {
assertEquals(
"ordered substitution",
"Megalodon reacted with ♡",
gen("%s reacted with %s", args)
);
assertEquals(
"1 2 3 4 5",
gen("%s %s %s %s %s", "1", "2", "3", "4", "5")
);
assertEquals(
"indexed substitution",
"with ♡ was reacted by Megalodon",
gen("with %2$s was reacted by %1$s", args)
);
assertEquals(
"indexed substitution, in order",
"Megalodon reacted with ♡",
gen("%1$s reacted with %2$s", args)
);
assertEquals(
"indexed substitution, 0-based",
"Megalodon reacted with ♡",
gen("%0$s reacted with %1$s", args)
);
assertEquals(
"indexed substitution, 5 items",
"5 4 3 2 1",
gen("%5$s %4$s %3$s %2$s %1$s", "1", "2", "3", "4", "5")
);
assertEquals(
"one argument missing",
"Megalodon reacted with ♡",
gen("reacted with %s", args)
);
assertEquals(
"multiple arguments missing",
"Megalodon reacted with ♡",
gen("reacted with", args)
);
assertEquals(
"multiple arguments missing, numbers in expeced positions",
"1 2 x 3 4 5",
gen("%s x %s", "1", "2", "3", "4", "5")
);
assertEquals(
"one leading and trailing space",
"Megalodon reacted with ♡",
gen(" reacted with ", args)
);
assertEquals(
"multiple leading and trailing spaces",
"Megalodon reacted with ♡",
gen(" reacted with ", args)
);
assertEquals(
"invalid format produces expected invalid result",
"Megalodon reacted with % s ♡",
gen("reacted with % s", args)
);
assertEquals(
"plain string as format, all arguments get added",
"a x b c",
gen("x", new String[] { "a", "b", "c" })
);
assertEquals("empty input produces empty output", "", gen(""));
// not supported:
// assertEquals("a b a", gen("%1$s %2$s %2$s %1$s", new String[] { "a", "b", "c" }));
// assertEquals("x", gen("%s %1$s %2$s %1$s %s", new String[] { "a", "b", "c" }));
}
private AccountField makeField(String name, String value) {
AccountField f = new AccountField();
f.name = name;
f.value = value;
return f;
}
private Account fakeAccount(AccountField... fields) {
Account a = new Account();
a.fields = Arrays.asList(fields);
return a;
}
@Test
public void extractPronouns() {
assertEquals("they", UiUtils.extractPronouns(MastodonApp.context, fakeAccount(
makeField("name and pronouns", "https://pronouns.site"),
makeField("pronouns", "they"),
makeField("pronouns something", "bla bla")
)).orElseThrow());
assertTrue(UiUtils.extractPronouns(MastodonApp.context, fakeAccount()).isEmpty());
assertEquals("it/its", UiUtils.extractPronouns(MastodonApp.context, fakeAccount(
makeField("pronouns pronouns pronouns", "hi hi hi"),
makeField("pronouns", "it/its"),
makeField("the pro's nouns", "professional")
)).orElseThrow());
assertEquals("she/he", UiUtils.extractPronouns(MastodonApp.context, fakeAccount(
makeField("my name is", "jeanette shork, apparently"),
makeField("my pronouns are", "she/he")
)).orElseThrow());
assertEquals("they/them", UiUtils.extractPronouns(MastodonApp.context, fakeAccount(
makeField("pronouns", "https://pronouns.cc/pronouns/they/them")
)).orElseThrow());
Context german = UiUtils.getLocalizedContext(MastodonApp.context, Locale.GERMAN);
assertEquals("sie/ihr", UiUtils.extractPronouns(german, fakeAccount(
makeField("pronomen lauten", "sie/ihr"),
makeField("pronouns are", "she/her"),
makeField("die pronomen", "stehen oben")
)).orElseThrow());
assertEquals("er/ihm", UiUtils.extractPronouns(german, fakeAccount(
makeField("die pronomen", "stehen unten"),
makeField("pronomen sind", "er/ihm"),
makeField("pronouns are", "he/him")
)).orElseThrow());
assertEquals("* (asterisk)", UiUtils.extractPronouns(MastodonApp.context, fakeAccount(
makeField("pronouns", "-- * (asterisk) --")
)).orElseThrow());
}
}

View File

@@ -0,0 +1,101 @@
package org.joinmastodon.android.utils;
import static org.joinmastodon.android.model.FilterAction.*;
import static org.joinmastodon.android.model.FilterContext.*;
import static org.junit.Assert.*;
import org.joinmastodon.android.model.LegacyFilter;
import org.joinmastodon.android.model.Status;
import org.junit.Test;
import java.time.Instant;
import java.util.EnumSet;
import java.util.List;
public class StatusFilterPredicateTest {
private static final LegacyFilter hideMeFilter = new LegacyFilter(), warnMeFilter = new LegacyFilter();
private static final List<LegacyFilter> allFilters = List.of(hideMeFilter, warnMeFilter);
private static final Status
hideInHomePublic = Status.ofFake(null, "hide me, please", Instant.now()),
warnInHomePublic = Status.ofFake(null, "display me with a warning", Instant.now()),
noAltText = Status.ofFake(null, "display me with a warning", Instant.now()),
withAltText = Status.ofFake(null, "display me with a warning", Instant.now());
static {
hideMeFilter.phrase = "hide me";
hideMeFilter.filterAction = HIDE;
hideMeFilter.context = EnumSet.of(PUBLIC, HOME);
warnMeFilter.phrase = "warning";
warnMeFilter.filterAction = WARN;
warnMeFilter.context = EnumSet.of(PUBLIC, HOME);
noAltText.mediaAttachments = Attachment.createFakeAttachments("fakeurl", new ColorDrawable());
withAltText.mediaAttachments = Attachment.createFakeAttachments("fakeurl", new ColorDrawable());
for (Attachment mediaAttachment : withAltText.mediaAttachments) {
mediaAttachment.description = "Alt Text";
}
}
@Test
public void testHide() {
assertFalse("should not pass because matching filter applies to given context",
new StatusFilterPredicate(allFilters, HOME).test(hideInHomePublic));
}
@Test
public void testHideRegardlessOfContext() {
assertTrue("filters without context should always pass",
new StatusFilterPredicate(allFilters, null).test(hideInHomePublic));
}
@Test
public void testHideInDifferentContext() {
assertTrue("should pass because matching filter does not apply to given context",
new StatusFilterPredicate(allFilters, THREAD).test(hideInHomePublic));
}
@Test
public void testHideWithWarningText() {
assertTrue("should pass because matching filter is for warnings",
new StatusFilterPredicate(allFilters, HOME).test(warnInHomePublic));
}
@Test
public void testWarn() {
assertFalse("should not pass because filter applies to given context",
new StatusFilterPredicate(allFilters, HOME, WARN).test(warnInHomePublic));
}
@Test
public void testWarnRegardlessOfContext() {
assertTrue("filters without context should always pass",
new StatusFilterPredicate(allFilters, null, WARN).test(warnInHomePublic));
}
@Test
public void testWarnInDifferentContext() {
assertTrue("should pass because filter does not apply to given context",
new StatusFilterPredicate(allFilters, THREAD, WARN).test(warnInHomePublic));
}
@Test
public void testWarnWithHideText() {
assertTrue("should pass because matching filter is for hiding",
new StatusFilterPredicate(allFilters, HOME, WARN).test(hideInHomePublic));
}
@Test
public void testAltTextFilterNoPass() {
assertFalse("should not pass because of no alt text",
new StatusFilterPredicate(allFilters, HOME).test(noAltText));
}
@Test
public void testAltTextFilterPass() {
assertTrue("should pass because of alt text",
new StatusFilterPredicate(allFilters, HOME).test(withAltText));
}
}

View File

@@ -1,10 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="org.joinmastodon.android">
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES"/>
<application>
<application
tools:replace="android:label"
android:label="@string/mo_app_name_debug">
<!-- <receiver android:name=".updater.GithubSelfUpdaterImpl$InstallerStatusReceiver" android:exported="false"/>-->
<!-- <receiver android:name=".updater.GithubSelfUpdaterImpl$AfterUpdateRestartReceiver" android:exported="true" android:enabled="false">-->
<!-- <intent-filter>-->

View File

@@ -0,0 +1,378 @@
package org.joinmastodon.android.updater;
import android.app.Activity;
import android.app.DownloadManager;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.SharedPreferences;
import android.content.pm.PackageInstaller;
import android.database.Cursor;
import android.net.Uri;
import android.os.Build;
import android.util.Log;
import android.widget.Toast;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import org.joinmastodon.android.BuildConfig;
import org.joinmastodon.android.E;
import org.joinmastodon.android.GlobalUserPreferences;
import org.joinmastodon.android.MastodonApp;
import org.joinmastodon.android.R;
import org.joinmastodon.android.api.MastodonAPIController;
import org.joinmastodon.android.events.SelfUpdateStateChangedEvent;
import java.io.File;
import java.time.Instant;
import java.time.LocalDateTime;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import androidx.annotation.Keep;
import okhttp3.Call;
import okhttp3.Request;
import okhttp3.Response;
@Keep
public class GithubSelfUpdaterImpl extends GithubSelfUpdater{
private static final long CHECK_PERIOD=6*3600*1000L;
private static final String TAG="GithubSelfUpdater";
private UpdateState state=UpdateState.NO_UPDATE;
private UpdateInfo info;
private long downloadID;
private BroadcastReceiver downloadCompletionReceiver=new BroadcastReceiver(){
@Override
public void onReceive(Context context, Intent intent){
if(downloadID!=0 && intent.getLongExtra(DownloadManager.EXTRA_DOWNLOAD_ID, 0)==downloadID){
MastodonApp.context.unregisterReceiver(this);
setState(UpdateState.DOWNLOADED);
}
}
};
public GithubSelfUpdaterImpl(){
SharedPreferences prefs=getPrefs();
int checkedByBuild=prefs.getInt("checkedByBuild", 0);
if(prefs.contains("version") && checkedByBuild==BuildConfig.VERSION_CODE){
info=new UpdateInfo();
info.version=prefs.getString("version", null);
info.size=prefs.getLong("apkSize", 0);
info.changelog=prefs.getString("changelog", null);
downloadID=prefs.getLong("downloadID", 0);
if(downloadID==0 || !getUpdateApkFile().exists()){
state=UpdateState.UPDATE_AVAILABLE;
}else{
DownloadManager dm=MastodonApp.context.getSystemService(DownloadManager.class);
state=dm.getUriForDownloadedFile(downloadID)==null ? UpdateState.DOWNLOADING : UpdateState.DOWNLOADED;
if(state==UpdateState.DOWNLOADING){
MastodonApp.context.registerReceiver(downloadCompletionReceiver, new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE));
}
}
}else if(checkedByBuild!=BuildConfig.VERSION_CODE && checkedByBuild>0){
// We are in a new version, running for the first time after update. Gotta clean things up.
long id=getPrefs().getLong("downloadID", 0);
if(id!=0){
MastodonApp.context.getSystemService(DownloadManager.class).remove(id);
}
getUpdateApkFile().delete();
getPrefs().edit()
.remove("apkSize")
.remove("version")
.remove("apkURL")
.remove("checkedByBuild")
.remove("downloadID")
.remove("changelog")
.apply();
}
}
private SharedPreferences getPrefs(){
return MastodonApp.context.getSharedPreferences("githubUpdater", Context.MODE_PRIVATE);
}
@Override
public void maybeCheckForUpdates(){
if(state!=UpdateState.NO_UPDATE && state!=UpdateState.UPDATE_AVAILABLE)
return;
long timeSinceLastCheck=System.currentTimeMillis()-getPrefs().getLong("lastCheck", CHECK_PERIOD);
if(timeSinceLastCheck>=CHECK_PERIOD){
setState(UpdateState.CHECKING);
MastodonAPIController.runInBackground(this::actuallyCheckForUpdates);
}
}
@Override
public void checkForUpdates() {
setState(UpdateState.CHECKING);
MastodonAPIController.runInBackground(this::actuallyCheckForUpdates);
}
private void actuallyCheckForUpdates(){
Request req=new Request.Builder()
.url("https://api.github.com/repos/LucasGGamerM/moshidon/releases")
.build();
Call call=MastodonAPIController.getHttpClient().newCall(req);
try(Response resp=call.execute()){
JsonArray arr=JsonParser.parseReader(resp.body().charStream()).getAsJsonArray();
for (JsonElement jsonElement : arr) {
JsonObject obj = jsonElement.getAsJsonObject();
if (obj.get("prerelease").getAsBoolean() && !GlobalUserPreferences.enablePreReleases) continue;
String tag=obj.get("tag_name").getAsString();
String changelog=obj.get("body").getAsString();
Pattern pattern=Pattern.compile("v?(\\d+)\\.(\\d+)\\.(\\d+)\\+fork\\.(\\d+)");
Matcher matcher=pattern.matcher(tag);
if(!matcher.find()){
Log.w(TAG, "actuallyCheckForUpdates: release tag has wrong format: "+tag);
return;
}
int newMajor=Integer.parseInt(matcher.group(1)),
newMinor=Integer.parseInt(matcher.group(2)),
newRevision=Integer.parseInt(matcher.group(3)),
newForkNumber=Integer.parseInt(matcher.group(4));
matcher=pattern.matcher(BuildConfig.VERSION_NAME);
String[] currentParts=BuildConfig.VERSION_NAME.split("[.+]");
if(!matcher.find()){
Log.w(TAG, "actuallyCheckForUpdates: current version has wrong format: "+BuildConfig.VERSION_NAME);
return;
}
int curMajor=Integer.parseInt(matcher.group(1)),
curMinor=Integer.parseInt(matcher.group(2)),
curRevision=Integer.parseInt(matcher.group(3)),
curForkNumber=Integer.parseInt(matcher.group(4));
long newVersion=((long)newMajor << 32) | ((long)newMinor << 16) | newRevision;
long curVersion=((long)curMajor << 32) | ((long)curMinor << 16) | curRevision;
if(newVersion>curVersion || newForkNumber>curForkNumber){
String version=newMajor+"."+newMinor+"."+newRevision+"+fork."+newForkNumber;
Log.d(TAG, "actuallyCheckForUpdates: new version: "+version);
for(JsonElement el:obj.getAsJsonArray("assets")){
JsonObject asset=el.getAsJsonObject();
if("moshidon.apk".equals(asset.get("name").getAsString()) && "application/vnd.android.package-archive".equals(asset.get("content_type").getAsString()) && "uploaded".equals(asset.get("state").getAsString())){
long size=asset.get("size").getAsLong();
String url=asset.get("browser_download_url").getAsString();
UpdateInfo info=new UpdateInfo();
info.size=size;
info.version=version;
info.changelog=changelog;
this.info=info;
getPrefs().edit()
.putLong("apkSize", size)
.putString("version", version)
.putString("apkURL", url)
.putString("changelog", changelog)
.putInt("checkedByBuild", BuildConfig.VERSION_CODE)
.remove("downloadID")
.apply();
break;
}
}
}
getPrefs().edit().putLong("lastCheck", System.currentTimeMillis()).apply();
break;
}
}catch(Exception x){
Log.w(TAG, "actuallyCheckForUpdates", x);
}finally{
setState(info==null ? UpdateState.NO_UPDATE : UpdateState.UPDATE_AVAILABLE);
}
}
private void setState(UpdateState state){
this.state=state;
E.post(new SelfUpdateStateChangedEvent(state));
}
@Override
public UpdateState getState(){
return state;
}
@Override
public UpdateInfo getUpdateInfo(){
return info;
}
public File getUpdateApkFile(){
return new File(MastodonApp.context.getExternalCacheDir(), "update.apk");
}
@Override
public void downloadUpdate(){
if(state==UpdateState.DOWNLOADING)
throw new IllegalStateException();
DownloadManager dm=MastodonApp.context.getSystemService(DownloadManager.class);
MastodonApp.context.registerReceiver(downloadCompletionReceiver, new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE));
downloadID=dm.enqueue(
new DownloadManager.Request(Uri.parse(getPrefs().getString("apkURL", null)))
.setDestinationUri(Uri.fromFile(getUpdateApkFile()))
);
getPrefs().edit().putLong("downloadID", downloadID).apply();
setState(UpdateState.DOWNLOADING);
}
@Override
public void installUpdate(Activity activity){
if(state!=UpdateState.DOWNLOADED)
throw new IllegalStateException();
Uri uri;
Intent intent=new Intent(Intent.ACTION_INSTALL_PACKAGE);
if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.N){
uri=new Uri.Builder().scheme("content").authority(activity.getPackageName()+".self_update_provider").path("update.apk").build();
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
}else{
uri=Uri.fromFile(getUpdateApkFile());
}
intent.setDataAndType(uri, "application/vnd.android.package-archive");
activity.startActivity(intent);
// TODO figure out how to restart the app when updating via this new API
/*
PackageInstaller installer=activity.getPackageManager().getPackageInstaller();
try{
final int sid=installer.createSession(new PackageInstaller.SessionParams(PackageInstaller.SessionParams.MODE_FULL_INSTALL));
installer.registerSessionCallback(new PackageInstaller.SessionCallback(){
@Override
public void onCreated(int i){
}
@Override
public void onBadgingChanged(int i){
}
@Override
public void onActiveChanged(int i, boolean b){
}
@Override
public void onProgressChanged(int id, float progress){
}
@Override
public void onFinished(int id, boolean success){
activity.getPackageManager().setComponentEnabledSetting(new ComponentName(activity, AfterUpdateRestartReceiver.class), PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);
}
});
activity.getPackageManager().setComponentEnabledSetting(new ComponentName(activity, AfterUpdateRestartReceiver.class), PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP);
PackageInstaller.Session session=installer.openSession(sid);
try(OutputStream out=session.openWrite("mastodon.apk", 0, info.size); InputStream in=new FileInputStream(getUpdateApkFile())){
byte[] buffer=new byte[16384];
int read;
while((read=in.read(buffer))>0){
out.write(buffer, 0, read);
}
}
// PendingIntent intent=PendingIntent.getBroadcast(activity, 1, new Intent(activity, InstallerStatusReceiver.class), PendingIntent.FLAG_CANCEL_CURRENT | PendingIntent.FLAG_MUTABLE);
PendingIntent intent=PendingIntent.getActivity(activity, 1, new Intent(activity, MainActivity.class), PendingIntent.FLAG_UPDATE_CURRENT);
session.commit(intent.getIntentSender());
}catch(IOException x){
Log.w(TAG, "installUpdate", x);
Toast.makeText(activity, x.getMessage(), Toast.LENGTH_SHORT).show();
}
*/
}
@Override
public float getDownloadProgress(){
if(state!=UpdateState.DOWNLOADING)
throw new IllegalStateException();
DownloadManager dm=MastodonApp.context.getSystemService(DownloadManager.class);
try(Cursor cursor=dm.query(new DownloadManager.Query().setFilterById(downloadID))){
if(cursor.moveToFirst()){
long loaded=cursor.getLong(cursor.getColumnIndexOrThrow(DownloadManager.COLUMN_BYTES_DOWNLOADED_SO_FAR));
long total=cursor.getLong(cursor.getColumnIndexOrThrow(DownloadManager.COLUMN_TOTAL_SIZE_BYTES));
// Log.d(TAG, "getDownloadProgress: "+loaded+" of "+total);
return total>0 ? (float)loaded/total : 0f;
}
}
return 0;
}
@Override
public void cancelDownload(){
if(state!=UpdateState.DOWNLOADING)
throw new IllegalStateException();
DownloadManager dm=MastodonApp.context.getSystemService(DownloadManager.class);
dm.remove(downloadID);
downloadID=0;
getPrefs().edit().remove("downloadID").apply();
setState(UpdateState.UPDATE_AVAILABLE);
}
@Override
public void handleIntentFromInstaller(Intent intent, Activity activity){
int status=intent.getIntExtra(PackageInstaller.EXTRA_STATUS, 0);
if(status==PackageInstaller.STATUS_PENDING_USER_ACTION){
Intent confirmIntent=intent.getParcelableExtra(Intent.EXTRA_INTENT);
activity.startActivity(confirmIntent);
}else if(status!=PackageInstaller.STATUS_SUCCESS){
String msg=intent.getStringExtra(PackageInstaller.EXTRA_STATUS_MESSAGE);
Toast.makeText(activity, activity.getString(R.string.error)+":\n"+msg, Toast.LENGTH_LONG).show();
}
}
@Override
public void reset(){
getPrefs().edit().clear().apply();
File apk=getUpdateApkFile();
if(apk.exists())
apk.delete();
state=UpdateState.NO_UPDATE;
}
/*public static class InstallerStatusReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent){
int status=intent.getIntExtra(PackageInstaller.EXTRA_STATUS, 0);
if(status==PackageInstaller.STATUS_PENDING_USER_ACTION){
Intent confirmIntent=intent.getParcelableExtra(Intent.EXTRA_INTENT);
context.startActivity(confirmIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
}else if(status!=PackageInstaller.STATUS_SUCCESS){
String msg=intent.getStringExtra(PackageInstaller.EXTRA_STATUS_MESSAGE);
Toast.makeText(context, context.getString(R.string.error)+":\n"+msg, Toast.LENGTH_LONG).show();
}
}
}
public static class AfterUpdateRestartReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent){
if(Intent.ACTION_MY_PACKAGE_REPLACED.equals(intent.getAction())){
context.getPackageManager().setComponentEnabledSetting(new ComponentName(context, AfterUpdateRestartReceiver.class), PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);
Toast.makeText(context, R.string.update_installed, Toast.LENGTH_SHORT).show();
Intent restartIntent=new Intent(context, MainActivity.class)
.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
.setPackage(context.getPackageName());
if(Build.VERSION.SDK_INT<Build.VERSION_CODES.P){
context.startActivity(restartIntent);
}else{
// Bypass activity starting restrictions by starting it from a notification
NotificationManager nm=context.getSystemService(NotificationManager.class);
NotificationChannel chan=new NotificationChannel("selfUpdateRestart", context.getString(R.string.update_installed), NotificationManager.IMPORTANCE_HIGH);
nm.createNotificationChannel(chan);
Notification n=new Notification.Builder(context, "selfUpdateRestart")
.setContentTitle(context.getString(R.string.update_installed))
.setContentIntent(PendingIntent.getActivity(context, 1, restartIntent, PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE))
.setFullScreenIntent(PendingIntent.getActivity(context, 1, restartIntent, PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE), true)
.setSmallIcon(R.drawable.ic_ntf_logo)
.build();
nm.notify(1, n);
}
}
}
}*/
}

View File

@@ -0,0 +1,62 @@
package org.joinmastodon.android.updater;
import android.content.ContentProvider;
import android.content.ContentValues;
import android.database.Cursor;
import android.net.Uri;
import android.os.ParcelFileDescriptor;
import java.io.FileNotFoundException;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
public class SelfUpdateContentProvider extends ContentProvider{
@Override
public boolean onCreate(){
return true;
}
@Nullable
@Override
public Cursor query(@NonNull Uri uri, @Nullable String[] projection, @Nullable String selection, @Nullable String[] selectionArgs, @Nullable String sortOrder){
return null;
}
@Nullable
@Override
public String getType(@NonNull Uri uri){
if(isCorrectUri(uri))
return "application/vnd.android.package-archive";
return null;
}
@Nullable
@Override
public Uri insert(@NonNull Uri uri, @Nullable ContentValues values){
return null;
}
@Override
public int delete(@NonNull Uri uri, @Nullable String selection, @Nullable String[] selectionArgs){
return 0;
}
@Override
public int update(@NonNull Uri uri, @Nullable ContentValues values, @Nullable String selection, @Nullable String[] selectionArgs){
return 0;
}
@Nullable
@Override
public ParcelFileDescriptor openFile(@NonNull Uri uri, @NonNull String mode) throws FileNotFoundException{
if(isCorrectUri(uri)){
return ParcelFileDescriptor.open(((GithubSelfUpdaterImpl)GithubSelfUpdater.getInstance()).getUpdateApkFile(), ParcelFileDescriptor.MODE_READ_ONLY);
}
throw new FileNotFoundException();
}
private boolean isCorrectUri(Uri uri){
return "/update.apk".equals(uri.getPath());
}
}

View File

@@ -0,0 +1,20 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="108dp"
android:height="108dp"
android:viewportWidth="108"
android:viewportHeight="108">
<path
android:fillColor="#FF000000"
android:pathData="M54,90L54,90c-19.9,0 -36,-16.1 -36,-36v0c0,-19.9 16.1,-36 36,-36h0c19.9,0 36,16.1 36,36v0C90,73.9 73.9,90 54,90z"
android:strokeAlpha="0"
android:fillAlpha="0"/>
<path
android:pathData="M52.5,41.6c-2.4,0 -4.3,0.9 -5.5,2.8l-1.2,2l-1.2,-2c-1.2,-1.9 -3.1,-2.8 -5.5,-2.8c-2.1,0 -3.8,0.8 -5.1,2.2c-1.2,1.4 -1.9,3.4 -1.9,5.9v12h4.7V50c0,-2.4 1.1,-3.7 3.1,-3.7c2.3,0 3.4,1.4 3.4,4.4v6.4h4.7v-6.4c0,-2.9 1.1,-4.4 3.4,-4.4c2.1,0 3.1,1.2 3.1,3.7v11.7h4.7v-12c0,-2.4 -0.6,-4.4 -1.9,-5.9C56.2,42.3 54.6,41.6 52.5,41.6z"
android:fillColor="#33D17A"/>
<path
android:pathData="M65.9,58.1h0.8c0,0 0,0 -0.1,0c-0.6,-0.3 -1.1,-0.8 -1.4,-1.4c-0.3,-0.6 -0.5,-1.4 -0.5,-2.1c0,-0.8 0.2,-1.5 0.5,-2.1c0.4,-0.6 0.8,-1.1 1.4,-1.4c0.6,-0.3 1.2,-0.5 1.9,-0.5c0.7,0 1.3,0.2 1.9,0.5s1.1,0.8 1.4,1.4s0.5,1.3 0.5,2.1c0,0.2 0,0.4 0,0.6l0.7,0.7c0.4,0 0.8,0 1.1,0l1.5,-1.5l0.2,-0.2c-0.1,-1.2 -0.4,-2.3 -0.9,-3.4c-0.6,-1.1 -1.4,-2 -2.6,-2.6c-1.1,-0.6 -2.4,-1 -3.7,-1c-1.4,0 -2.7,0.3 -3.8,1c-1.1,0.6 -2,1.5 -2.6,2.6c-0.6,1.1 -0.9,2.4 -0.9,3.7s0.3,2.7 0.9,3.7c0.6,1.1 1.5,2 2.6,2.6c0.4,0.2 0.8,0.4 1.1,0.5v-1.8V58.1z"
android:fillColor="#33D17A"/>
<path
android:pathData="M76,58.3l1.2,-1.2L76.2,56l-1.7,1.7c-0.4,-0.1 -0.7,-0.2 -1.1,-0.2s-0.8,0.1 -1.1,0.2L70.7,56l-1,1.1l1.2,1.2c-0.5,0.4 -1.1,0.9 -1.4,1.5h-2.1v1.5H69c0,0.2 -0.1,0.5 -0.1,0.8v0.8h-1.5v1.5h1.5v0.8c0,0.2 0,0.5 0.1,0.8h-1.6v1.5h2.1c0.8,1.4 2.3,2.3 4,2.3s3.1,-0.9 4,-2.3h2.1v-1.5H78c0,-0.2 0.1,-0.5 0.1,-0.8v-0.8h1.5v-1.5h-1.5v-0.8c0,-0.2 0,-0.5 -0.1,-0.8h1.6v-1.5h-2.1C77.1,59.2 76.6,58.8 76,58.3zM75,65.9H72v-1.5H75V65.9zM75,62.9H72v-1.5H75V62.9z"
android:fillColor="#33D17A"/>
</vector>

View File

@@ -0,0 +1,20 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="108dp"
android:height="108dp"
android:viewportWidth="108"
android:viewportHeight="108">
<path
android:fillColor="#FF000000"
android:pathData="M54,90L54,90c-19.9,0 -36,-16.1 -36,-36v0c0,-19.9 16.1,-36 36,-36h0c19.9,0 36,16.1 36,36v0C90,73.9 73.9,90 54,90z"
android:strokeAlpha="0"
android:fillAlpha="0"/>
<path
android:pathData="M52.5,41.6c-2.4,0 -4.3,0.9 -5.5,2.8l-1.2,2l-1.2,-2c-1.2,-1.9 -3.1,-2.8 -5.5,-2.8c-2.1,0 -3.8,0.8 -5.1,2.2c-1.2,1.4 -1.9,3.4 -1.9,5.9v12h4.7V50c0,-2.4 1.1,-3.7 3.1,-3.7c2.3,0 3.4,1.4 3.4,4.4v6.4h4.7v-6.4c0,-2.9 1.1,-4.4 3.4,-4.4c2.1,0 3.1,1.2 3.1,3.7v11.7h4.7v-12c0,-2.4 -0.6,-4.4 -1.9,-5.9C56.2,42.3 54.6,41.6 52.5,41.6z"
android:fillColor="#33D17A"/>
<path
android:pathData="M65.9,58.1h0.8c0,0 0,0 -0.1,0c-0.6,-0.3 -1.1,-0.8 -1.4,-1.4c-0.3,-0.6 -0.5,-1.4 -0.5,-2.1c0,-0.8 0.2,-1.5 0.5,-2.1c0.4,-0.6 0.8,-1.1 1.4,-1.4c0.6,-0.3 1.2,-0.5 1.9,-0.5c0.7,0 1.3,0.2 1.9,0.5s1.1,0.8 1.4,1.4s0.5,1.3 0.5,2.1c0,0.2 0,0.4 0,0.6l0.7,0.7c0.4,0 0.8,0 1.1,0l1.5,-1.5l0.2,-0.2c-0.1,-1.2 -0.4,-2.3 -0.9,-3.4c-0.6,-1.1 -1.4,-2 -2.6,-2.6c-1.1,-0.6 -2.4,-1 -3.7,-1c-1.4,0 -2.7,0.3 -3.8,1c-1.1,0.6 -2,1.5 -2.6,2.6c-0.6,1.1 -0.9,2.4 -0.9,3.7s0.3,2.7 0.9,3.7c0.6,1.1 1.5,2 2.6,2.6c0.4,0.2 0.8,0.4 1.1,0.5v-1.8V58.1z"
android:fillColor="#33D17A"/>
<path
android:pathData="M76,58.3l1.2,-1.2L76.2,56l-1.7,1.7c-0.4,-0.1 -0.7,-0.2 -1.1,-0.2s-0.8,0.1 -1.1,0.2L70.7,56l-1,1.1l1.2,1.2c-0.5,0.4 -1.1,0.9 -1.4,1.5h-2.1v1.5H69c0,0.2 -0.1,0.5 -0.1,0.8v0.8h-1.5v1.5h1.5v0.8c0,0.2 0,0.5 0.1,0.8h-1.6v1.5h2.1c0.8,1.4 2.3,2.3 4,2.3s3.1,-0.9 4,-2.3h2.1v-1.5H78c0,-0.2 0.1,-0.5 0.1,-0.8v-0.8h1.5v-1.5h-1.5v-0.8c0,-0.2 0,-0.5 -0.1,-0.8h1.6v-1.5h-2.1C77.1,59.2 76.6,58.8 76,58.3zM75,65.9H72v-1.5H75V65.9zM75,62.9H72v-1.5H75V62.9z"
android:fillColor="#33D17A"/>
</vector>

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@color/ic_launcher_background"/>
<foreground android:drawable="@drawable/ic_launcher_foreground_debug"/>
<monochrome android:drawable="@drawable/ic_launcher_foreground_monochrome_debug"/>
</adaptive-icon>

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@color/ic_launcher_background"/>
<foreground android:drawable="@drawable/ic_launcher_foreground_debug"/>
<monochrome android:drawable="@drawable/ic_launcher_foreground_monochrome_debug"/>
</adaptive-icon>

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 988 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.5 KiB

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="ic_launcher_background">#000000</color>
</resources>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

View File

@@ -100,8 +100,8 @@ public class GithubSelfUpdaterImpl extends GithubSelfUpdater{
public void maybeCheckForUpdates(){
if(state!=UpdateState.NO_UPDATE && state!=UpdateState.UPDATE_AVAILABLE)
return;
long timeSinceLastCheck=System.currentTimeMillis()-getPrefs().getLong("lastCheck", CHECK_PERIOD);
if(timeSinceLastCheck>=CHECK_PERIOD){
long timeSinceLastCheck=System.currentTimeMillis()-getPrefs().getLong("lastCheck", 0);
if(timeSinceLastCheck>CHECK_PERIOD || forceUpdate){
setState(UpdateState.CHECKING);
MastodonAPIController.runInBackground(this::actuallyCheckForUpdates);
}
@@ -148,7 +148,8 @@ public class GithubSelfUpdaterImpl extends GithubSelfUpdater{
curForkNumber=Integer.parseInt(matcher.group(4));
long newVersion=((long)newMajor << 32) | ((long)newMinor << 16) | newRevision;
long curVersion=((long)curMajor << 32) | ((long)curMinor << 16) | curRevision;
if(newVersion>curVersion || newForkNumber>curForkNumber){
if(newVersion>curVersion || newForkNumber>curForkNumber || forceUpdate){
forceUpdate=false;
String version=newMajor+"."+newMinor+"."+newRevision+"+fork."+newForkNumber;
Log.d(TAG, "actuallyCheckForUpdates: new version: "+version);
for(JsonElement el:obj.getAsJsonArray("assets")){
@@ -323,6 +324,15 @@ public class GithubSelfUpdaterImpl extends GithubSelfUpdater{
}
}
@Override
public void reset(){
getPrefs().edit().clear().apply();
File apk=getUpdateApkFile();
if(apk.exists())
apk.delete();
state=UpdateState.NO_UPDATE;
}
/*public static class InstallerStatusReceiver extends BroadcastReceiver{
@Override

View File

@@ -1,22 +1,30 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
<manifest xmlns:tools="http://schemas.android.com/tools"
xmlns:android="http://schemas.android.com/apk/res/android"
package="org.joinmastodon.android">
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.CAMERA" />
<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"/>
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
<permission android:name="${applicationId}.permission.C2D_MESSAGE" android:protectionLevel="signature"/>
<uses-feature
android:name="android.hardware.camera"
android:required="false" />
<queries>
<intent>
<action android:name="android.intent.action.PROCESS_TEXT" />
<data android:mimeType="text/plain" />
</intent>
<intent>
<action android:name="android.intent.action.TRANSLATE" />
</intent>
</queries>
<application
@@ -26,8 +34,8 @@
android:supportsRtl="true"
android:localeConfig="@xml/locales_config"
android:icon="@mipmap/ic_launcher"
android:roundIcon="@mipmap/ic_launcher_round"
android:theme="@style/Theme.Mastodon.AutoLightDark"
android:windowSoftInputMode="adjustPan"
android:largeHeap="true">
<activity android:name=".MainActivity" android:exported="true" android:configChanges="orientation|screenSize" android:windowSoftInputMode="adjustResize" android:launchMode="singleTask">
@@ -36,15 +44,31 @@
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<activity
android:name=".PanicResponderActivity"
android:exported="true"
android:launchMode="singleInstance"
android:noHistory="true"
android:theme="@android:style/Theme.NoDisplay">
<intent-filter>
<action android:name="info.guardianproject.panic.action.TRIGGER" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity
android:name=".ExitActivity"
android:exported="false"
android:theme="@android:style/Theme.NoDisplay" />
<activity android:name=".OAuthActivity" android:exported="true" android:configChanges="orientation|screenSize" android:launchMode="singleTask">
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.BROWSABLE"/>
<category android:name="android.intent.category.DEFAULT"/>
<data android:scheme="moshidon-android-auth" android:host="callback"/>
<data android:scheme="${oAuthScheme}" android:host="callback"/>
</intent-filter>
</activity>
<activity android:name=".ExternalShareActivity" android:exported="true" android:configChanges="orientation|screenSize" android:windowSoftInputMode="adjustResize">
<activity android:name=".ExternalShareActivity" android:exported="true" android:configChanges="orientation|screenSize" android:windowSoftInputMode="adjustResize"
android:theme="@style/TransparentDialog">
<intent-filter>
<action android:name="android.intent.action.SEND"/>
<category android:name="android.intent.category.DEFAULT"/>
@@ -70,6 +94,25 @@
<category android:name="me.grishka.fcmtest"/>
</intent-filter>
</receiver>
<receiver android:exported="true" android:enabled="true" android:name=".UnifiedPushNotificationReceiver"
tools:ignore="ExportedReceiver">
<intent-filter>
<action android:name="org.unifiedpush.android.connector.MESSAGE"/>
<action android:name="org.unifiedpush.android.connector.UNREGISTERED"/>
<action android:name="org.unifiedpush.android.connector.NEW_ENDPOINT"/>
<action android:name="org.unifiedpush.android.connector.REGISTRATION_FAILED"/>
</intent-filter>
</receiver>
<provider
android:name="org.joinmastodon.android.utils.FileProvider"
android:authorities="${applicationId}.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths" />
</provider>
</application>

View File

@@ -1,89 +0,0 @@
# lists.d Mastodon Blocklist (c) 2022 Greyhat Academy LICENSED UNDER: CC-BY-NC-SA 4.0
# https://raw.githubusercontent.com/greyhat-academy/lists.d/main/mastodon.domains.block.list.tsv
# This list contains domains of toxic mastodon instances
# Last-Modified: 1672044500
# gab - a neonazi social network
gab.ai
gab.com
gab.protohype.net
# consequence-free speech
social.unzensiert.to
freeatlantis.com
# reactionary bigotry and hatespeech against magrinalized groups
poa.st
freespeechextremist.com
rdrama.cc
outpoa.st
anime.website
gameliberty.club
social.byoblu.com
yggdrasil.social
smuglo.li
dogeposting.social
unsafe.space
freezepeach.xyz
# + CSAM
rojogato.com
# antivaxxer shitposting & fearmongering
shadowsocial.org
# Kiwifarms
kiwifarms.net
kiwifarms.cc
kiwifarms.is
kiwifarms.pleroma.net
# https://mastodon.art/@Curator/109649354849593592
poa.st antisemitic racist homophobic
nicecrew.digital antisemitic
beefyboys.win antisemitic racist homophobic harassment
cawfee.club antisemitic racist homophobic
comfyboy.club antisemitic racist homophobic
freespeechextremist.com racist homophobic
cum.salon racist misogynist
bae.st racist
natehiggers.online racist
rapemeat.solutions misogynist
rapist.town misogynist
rapefeminists.network misogynist
kiwifarms.cc harassment
noagendasocial.com noagenda
posting.lolicon.rocks underage
urchan.org harassment homophobic racist
ryona.agency harassment
yggdrasil.social antisemitic homophobic racist
genderheretics.xyz transphobic
baraag.net underage
lolison.top underage
shota.house underage
shota.social underage
aethy.com underage
taullo.social underage
childpawn.shop underage
posting.lolicon.rocks underage
loli.best underage
gothloli.club underage
smuglo.li underage
youjo.love underage
pedo.school underage
lolison.network underage
freak.university underage
mirr0r.city underage
xhais.love underage
refusal.biz underage
refusal.llc underage
mirr0r.city underage
nnia.space underage
ignorelist.com malicious
repl.co malicious
# custom
pawoo.net csam
1 # lists.d Mastodon Blocklist (c) 2022 Greyhat Academy LICENSED UNDER: CC-BY-NC-SA 4.0
2 # https://raw.githubusercontent.com/greyhat-academy/lists.d/main/mastodon.domains.block.list.tsv
3 # This list contains domains of toxic mastodon instances
4 # Last-Modified: 1672044500
5 # gab - a neonazi social network
6 gab.ai
7 gab.com
8 gab.protohype.net
9 # consequence-free speech
10 social.unzensiert.to
11 freeatlantis.com
12 # reactionary bigotry and hatespeech against magrinalized groups
13 poa.st
14 freespeechextremist.com
15 rdrama.cc
16 outpoa.st
17 anime.website
18 gameliberty.club
19 social.byoblu.com
20 yggdrasil.social
21 smuglo.li
22 dogeposting.social
23 unsafe.space
24 freezepeach.xyz
25 # + CSAM
26 rojogato.com
27 # antivaxxer shitposting & fearmongering
28 shadowsocial.org
29 # Kiwifarms
30 kiwifarms.net
31 kiwifarms.cc
32 kiwifarms.is
33 kiwifarms.pleroma.net
34 # https://mastodon.art/@Curator/109649354849593592
35 poa.st antisemitic racist homophobic
36 nicecrew.digital antisemitic
37 beefyboys.win antisemitic racist homophobic harassment
38 cawfee.club antisemitic racist homophobic
39 comfyboy.club antisemitic racist homophobic
40 freespeechextremist.com racist homophobic
41 cum.salon racist misogynist
42 bae.st racist
43 natehiggers.online racist
44 rapemeat.solutions misogynist
45 rapist.town misogynist
46 rapefeminists.network misogynist
47 kiwifarms.cc harassment
48 noagendasocial.com noagenda
49 posting.lolicon.rocks underage
50 urchan.org harassment homophobic racist
51 ryona.agency harassment
52 yggdrasil.social antisemitic homophobic racist
53 genderheretics.xyz transphobic
54 baraag.net underage
55 lolison.top underage
56 shota.house underage
57 shota.social underage
58 aethy.com underage
59 taullo.social underage
60 childpawn.shop underage
61 posting.lolicon.rocks underage
62 loli.best underage
63 gothloli.club underage
64 smuglo.li underage
65 youjo.love underage
66 pedo.school underage
67 lolison.network underage
68 freak.university underage
69 mirr0r.city underage
70 xhais.love underage
71 refusal.biz underage
72 refusal.llc underage
73 mirr0r.city underage
74 nnia.space underage
75 ignorelist.com malicious
76 repl.co malicious
77 # custom
78 pawoo.net csam

View File

@@ -0,0 +1,170 @@
13bells.com
1611.social
4aem.com
adachi.party
anime.website
annihilation.social
anon-kenkai.com
asbestos.cafe
bae.st
bajax.us
banepo.st
baraag.net
bassam.social
beefyboys.win
beepboop.ga
berserker.town
bikeshed.party
boks.moe
boymoder.biz
brainsoap.net
breastmilk.club
brighteon.social
bungle.online
cawfee.club
clew.lol
clubcyberia.co
collapsitarian.io
comfyboy.club
contrapointsfan.club
cum.camp
cum.salon
darknight-coffee.org
decayable.ink
dembased.xyz
desupost.soy
detroitriotcity.com
eatthebugs.social
eientei.org
elementality.org
eveningzoo.club
firedragonstudios.com
firefaithfellowship.com
fluf.club
foxfam.club
freak.university
freeatlantis.com
freedomstrike.org
freesoftwareextremist.com
freespeech.group
freespeechextremist.com
freetalklive.com
froth.zone
fulltermprivacy.com
gameliberty.club
gearlandia.haus
genderheretics.xyz
geofront.rocks
gleasonator.com
glee.li
glindr.org
goyim.app
goyslop.cafe
haeder.net
handholding.io
hitchhiker.social
hunk.city
iddqd.social
intkos.link
justicewarrior.social
kawa-kun.com
kitsunemimi.club
kiwifarms.cc
kompost.cz
kurosawa.moe
leafposter.club
leftychan.net
lewdieheaven.com
liberdon.com
ligma.pro
lolicon.rocks
lolison.top
lovingexpressions.net
mahodou.moe
makemysarcophagus.com
maladaptive.art
marsey.moe
masochi.st
mastinator.com
merovingian.club
midwaytrades.com
mirr0r.city
moa.st
mouse.services
mugicha.club
narrativerry.xyz
natehiggers.online
neckbeard.xyz
needs.vodka
neenster.org
nicecrew.digital
nnia.space
noagendasocial.com
noagendasocial.nl
noagendatube.com
nobodyhasthe.biz
nukem.biz
obo.sh
onionfarms.org
pawlicker.com
pawoo.net
pedo.school
piazza.today
pibvt.net
pieville.net
pisskey.io
plagu.ee
pmth.us
poa.st
poast.org
poast.tv
poster.place
prospeech.space
quodverum.com
r18.social
rakket.app
rapemeat.solutions
rdrama.cc
rebelbase.site
retardedniggers.forsale
rojogato.com
ryona.agency
schwartzwelt.xyz
seal.cafe
shigusegubu.club
shitpost.cloud
shota.house
silliness.observer
skinheads.eu
skinheads.io
skinheads.social
skinheads.uk
skippers-bin.com
skyshanty.xyz
slash.cl
sleepy.cafe
smuglo.li
sneed.social
sonichu.com
spinster.xyz
springbo.cc
starnix.network
strelizia.net
syspxl.xyz
tastingtraffic.net
teci.world
theapex.social
thepostearthdestination.com
tkammer.de
trumpislovetrumpis.life
truthsocial.co.in
urchan.org
varishangout.net
whinge.house
whinge.town
wideboys.org
wolfgirl.bar
xn--p1abe3d.xn--80asehdb
yggdrasil.social
youjo.love
zztails.gay

View File

@@ -0,0 +1,51 @@
<!DOCTYPE html>
<html>
<head>
<style>
*{
box-sizing: border-box;
overflow-wrap: break-word;
}
body{
background: {{colorSurface}};
padding: 16px 16px 0 16px;
margin: 0;
color: {{colorOnSurface}};
font-family: Roboto, sans-serif;
font-size: 14px;
line-height: 20px;
-webkit-tap-highlight-color: {{colorPrimaryTransparent}};
}
a{
text-decoration: none;
color: {{colorPrimary}};
}
p, h1, h2, h3, h4, h5, h6, ul, ol{
margin-bottom: 8px;
margin-top: 0;
}
h1, h2{
font-size: 16px;
line-height: 24px;
font-weight: 500;
}
h3, h4, h5, h6{
font-size: 14px;
line-height: 20px;
font-weight: 500;
}
b, strong{
font-weight: 500;
}
ul, ol{
padding-inline-start: 16px;
}
ul>li, ol>li{
padding-inline-start: 4px;
}
</style>
</head>
<body>
{{content}}
</body>
</html>

View File

@@ -0,0 +1,78 @@
package com.hootsuite.nachos;
import android.content.res.ColorStateList;
public class ChipConfiguration {
private final int mChipHorizontalSpacing;
private final ColorStateList mChipBackground;
private final int mChipCornerRadius;
private final int mChipTextColor;
private final int mChipTextSize;
private final int mChipHeight;
private final int mChipVerticalSpacing;
private final int mMaxAvailableWidth;
/**
* Creates a new ChipConfiguration. You can pass in {@code -1} or {@code null} for any of the parameters to indicate that parameter should be
* ignored.
*
* @param chipHorizontalSpacing the amount of horizontal space (in pixels) to put between consecutive chips
* @param chipBackground the {@link ColorStateList} to set as the background of the chips
* @param chipCornerRadius the corner radius of the chip background, in pixels
* @param chipTextColor the color to set as the text color of the chips
* @param chipTextSize the font size (in pixels) to use for the text of the chips
* @param chipHeight the height (in pixels) of each chip
* @param chipVerticalSpacing the amount of vertical space (in pixels) to put between chips on consecutive lines
* @param maxAvailableWidth the maximum available with for a chip (the width of a full line of text in the text view)
*/
ChipConfiguration(int chipHorizontalSpacing,
ColorStateList chipBackground,
int chipCornerRadius,
int chipTextColor,
int chipTextSize,
int chipHeight,
int chipVerticalSpacing,
int maxAvailableWidth) {
mChipHorizontalSpacing = chipHorizontalSpacing;
mChipBackground = chipBackground;
mChipCornerRadius = chipCornerRadius;
mChipTextColor = chipTextColor;
mChipTextSize = chipTextSize;
mChipHeight = chipHeight;
mChipVerticalSpacing = chipVerticalSpacing;
mMaxAvailableWidth = maxAvailableWidth;
}
public int getChipHorizontalSpacing() {
return mChipHorizontalSpacing;
}
public ColorStateList getChipBackground() {
return mChipBackground;
}
public int getChipCornerRadius() {
return mChipCornerRadius;
}
public int getChipTextColor() {
return mChipTextColor;
}
public int getChipTextSize() {
return mChipTextSize;
}
public int getChipHeight() {
return mChipHeight;
}
public int getChipVerticalSpacing() {
return mChipVerticalSpacing;
}
public int getMaxAvailableWidth() {
return mMaxAvailableWidth;
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,29 @@
package com.hootsuite.nachos.chip;
import androidx.annotation.Nullable;
public interface Chip {
/**
* @return the text represented by this Chip
*/
CharSequence getText();
/**
* @return the data associated with this Chip or null if no data is associated with it
*/
@Nullable
Object getData();
/**
* @return the width of the Chip or -1 if the Chip hasn't been given the chance to calculate its width
*/
int getWidth();
/**
* Sets the UI state.
*
* @param stateSet one of the state constants in {@link android.view.View}
*/
void setState(int[] stateSet);
}

View File

@@ -0,0 +1,44 @@
package com.hootsuite.nachos.chip;
import android.content.Context;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.hootsuite.nachos.ChipConfiguration;
/**
* Interface to allow the creation and configuration of chips
*
* @param <C> The type of {@link Chip} that the implementation will create/configure
*/
public interface ChipCreator<C extends Chip> {
/**
* Creates a chip from the given context and text. Use this method when creating a brand new chip from a piece of text.
*
* @param context the {@link Context} to use to initialize the chip
* @param text the text the Chip should represent
* @param data the data to associate with the Chip, or null to associate no data
* @return the created chip
*/
C createChip(@NonNull Context context, @NonNull CharSequence text, @Nullable Object data);
/**
* Creates a chip from the given context and existing chip. Use this method when recreating a chip from an existing one.
*
* @param context the {@link Context} to use to initialize the chip
* @param existingChip the chip that the created chip should be based on
* @return the created chip
*/
C createChip(@NonNull Context context, @NonNull C existingChip);
/**
* Applies the given {@link ChipConfiguration} to the given {@link Chip}. Use this method to customize the appearance/behavior of a chip before
* adding it to the text.
*
* @param chip the chip to configure
* @param chipConfiguration the configuration to apply to the chip
*/
void configureChip(@NonNull C chip, @NonNull ChipConfiguration chipConfiguration);
}

View File

@@ -0,0 +1,20 @@
package com.hootsuite.nachos.chip;
public class ChipInfo {
private final CharSequence mText;
private final Object mData;
public ChipInfo(CharSequence text, Object data) {
this.mText = text;
this.mData = data;
}
public CharSequence getText() {
return mText;
}
public Object getData() {
return mData;
}
}

View File

@@ -0,0 +1,510 @@
package com.hootsuite.nachos.chip;
import android.content.Context;
import android.content.res.ColorStateList;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Rect;
import android.graphics.RectF;
import android.graphics.drawable.Drawable;
import android.text.style.ImageSpan;
import androidx.annotation.Dimension;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import org.joinmastodon.android.R;
/**
* A Span that displays text and an optional icon inside of a material design chip. The chip's dimensions, colors etc. can be extensively customized
* through the various setter methods available in this class.
* The basic structure of the chip is the following:
* For chips with the icon on right:
* <pre>
*
* (chip vertical spacing / 2)
* ----------------------------------------------------------
* | |
* (left margin) | (padding edge) text (padding between image) icon | (right margin)
* | |
* ----------------------------------------------------------
* (chip vertical spacing / 2)
*
* </pre>
* For chips with the icon on the left (see {@link #setShowIconOnLeft(boolean)}):
* <pre>
*
* (chip vertical spacing / 2)
* ----------------------------------------------------------
* | |
* (left margin) | icon (padding between image) text (padding edge) | (right margin)
* | |
* ----------------------------------------------------------
* (chip vertical spacing / 2)
* </pre>
*/
public class ChipSpan extends ImageSpan implements Chip {
private static final float SCALE_PERCENT_OF_CHIP_HEIGHT = 0.70f;
private static final boolean ICON_ON_LEFT_DEFAULT = true;
private int[] mStateSet = new int[]{};
private String mEllipsis;
private ColorStateList mDefaultBackgroundColor;
private ColorStateList mBackgroundColor;
private int mTextColor;
private int mCornerRadius = -1;
private int mIconBackgroundColor;
private int mTextSize = -1;
private int mPaddingEdgePx;
private int mPaddingBetweenImagePx;
private int mLeftMarginPx;
private int mRightMarginPx;
private int mMaxAvailableWidth = -1;
private CharSequence mText;
private String mTextToDraw;
private Drawable mIcon;
private boolean mShowIconOnLeft = ICON_ON_LEFT_DEFAULT;
private int mChipVerticalSpacing = 0;
private int mChipHeight = -1;
private int mChipWidth = -1;
private int mIconWidth;
private int mCachedSize = -1;
private Object mData;
/**
* Constructs a new ChipSpan.
*
* @param context a {@link Context} that will be used to retrieve default configurations from resource files
* @param text the text for the ChipSpan to display
* @param icon an optional icon (can be {@code null}) for the ChipSpan to display
*/
public ChipSpan(@NonNull Context context, @NonNull CharSequence text, @Nullable Drawable icon, Object data) {
super(icon);
mIcon = icon;
mText = text;
mTextToDraw = mText.toString();
mEllipsis = context.getString(R.string.chip_ellipsis);
mDefaultBackgroundColor = context.getColorStateList(R.color.chip_material_background);
mBackgroundColor = mDefaultBackgroundColor;
mTextColor = context.getColor(R.color.chip_default_text_color);
mIconBackgroundColor = context.getColor(R.color.chip_default_icon_background_color);
Resources resources = context.getResources();
mPaddingEdgePx = resources.getDimensionPixelSize(R.dimen.chip_default_padding_edge);
mPaddingBetweenImagePx = resources.getDimensionPixelSize(R.dimen.chip_default_padding_between_image);
mLeftMarginPx = resources.getDimensionPixelSize(R.dimen.chip_default_left_margin);
mRightMarginPx = resources.getDimensionPixelSize(R.dimen.chip_default_right_margin);
mData = data;
}
/**
* Copy constructor to recreate a ChipSpan from an existing one
*
* @param context a {@link Context} that will be used to retrieve default configurations from resource files
* @param chipSpan the ChipSpan to copy
*/
public ChipSpan(@NonNull Context context, @NonNull ChipSpan chipSpan) {
this(context, chipSpan.getText(), chipSpan.getDrawable(), chipSpan.getData());
mDefaultBackgroundColor = chipSpan.mDefaultBackgroundColor;
mTextColor = chipSpan.mTextColor;
mIconBackgroundColor = chipSpan.mIconBackgroundColor;
mCornerRadius = chipSpan.mCornerRadius;
mTextSize = chipSpan.mTextSize;
mPaddingEdgePx = chipSpan.mPaddingEdgePx;
mPaddingBetweenImagePx = chipSpan.mPaddingBetweenImagePx;
mLeftMarginPx = chipSpan.mLeftMarginPx;
mRightMarginPx = chipSpan.mRightMarginPx;
mMaxAvailableWidth = chipSpan.mMaxAvailableWidth;
mShowIconOnLeft = chipSpan.mShowIconOnLeft;
mChipVerticalSpacing = chipSpan.mChipVerticalSpacing;
mChipHeight = chipSpan.mChipHeight;
mStateSet = chipSpan.mStateSet;
}
@Override
public Object getData() {
return mData;
}
/**
* Sets the height of the chip. This height should not include any extra spacing (for extra vertical spacing call {@link #setChipVerticalSpacing(int)}).
* The background of the chip will fill the full height provided here. If this method is never called, the chip will have the height of one full line
* of text by default. If {@code -1} is passed here, the chip will revert to this default behavior.
*
* @param chipHeight the height to set in pixels
*/
public void setChipHeight(int chipHeight) {
mChipHeight = chipHeight;
}
/**
* Sets the vertical spacing to include in between chips. Half of the value set here will be placed as empty space above the chip and half the value
* will be placed as empty space below the chip. Therefore chips on consecutive lines will have the full value as vertical space in between them.
* This spacing is achieved by adjusting the font metrics used by the text view containing these chips; however it does not come into effect until
* at least one chip is created. Note that vertical spacing is dependent on having a fixed chip height (set in {@link #setChipHeight(int)}). If a
* height is not specified in that method, the value set here will be ignored.
*
* @param chipVerticalSpacing the vertical spacing to set in pixels
*/
public void setChipVerticalSpacing(int chipVerticalSpacing) {
mChipVerticalSpacing = chipVerticalSpacing;
}
/**
* Sets the font size for the chip's text. If this method is never called, the chip text will have the same font size as the text in the TextView
* containing this chip by default. If {@code -1} is passed here, the chip will revert to this default behavior.
*
* @param size the font size to set in pixels
*/
public void setTextSize(int size) {
mTextSize = size;
invalidateCachedSize();
}
/**
* Sets the color for the chip's text.
*
* @param color the color to set (as a hexadecimal number in the form 0xAARRGGBB)
*/
public void setTextColor(int color) {
mTextColor = color;
}
/**
* Sets where the icon (if an icon was provided in the constructor) will appear.
*
* @param showIconOnLeft if true, the icon will appear on the left, otherwise the icon will appear on the right
*/
public void setShowIconOnLeft(boolean showIconOnLeft) {
this.mShowIconOnLeft = showIconOnLeft;
invalidateCachedSize();
}
/**
* Sets the left margin. This margin will appear as empty space (it will not share the chip's background color) to the left of the chip.
*
* @param leftMarginPx the left margin to set in pixels
*/
public void setLeftMargin(int leftMarginPx) {
mLeftMarginPx = leftMarginPx;
invalidateCachedSize();
}
/**
* Sets the right margin. This margin will appear as empty space (it will not share the chip's background color) to the right of the chip.
*
* @param rightMarginPx the right margin to set in pixels
*/
public void setRightMargin(int rightMarginPx) {
this.mRightMarginPx = rightMarginPx;
invalidateCachedSize();
}
/**
* Sets the background color. To configure which color in the {@link ColorStateList} is shown you can call {@link #setState(int[])}.
* Passing {@code null} here will cause the chip to revert to it's default background.
*
* @param backgroundColor a {@link ColorStateList} containing backgrounds for different states.
* @see #setState(int[])
*/
public void setBackgroundColor(@Nullable ColorStateList backgroundColor) {
mBackgroundColor = backgroundColor != null ? backgroundColor : mDefaultBackgroundColor;
}
/**
* Sets the chip background corner radius.
*
* @param cornerRadius The corner radius value, in pixels.
*/
public void setCornerRadius(@Dimension int cornerRadius) {
mCornerRadius = cornerRadius;
}
/**
* Sets the icon background color. This is the color of the circle that gets drawn behind the icon passed to the
* {@link #ChipSpan(Context, CharSequence, Drawable, Object)} constructor}
*
* @param iconBackgroundColor the icon background color to set (as a hexadecimal number in the form 0xAARRGGBB)
*/
public void setIconBackgroundColor(int iconBackgroundColor) {
mIconBackgroundColor = iconBackgroundColor;
}
public void setMaxAvailableWidth(int maxAvailableWidth) {
mMaxAvailableWidth = maxAvailableWidth;
invalidateCachedSize();
}
/**
* Sets the UI state. This state will be reflected in the background color drawn for the chip.
*
* @param stateSet one of the state constants in {@link android.view.View}
* @see #setBackgroundColor(ColorStateList)
*/
@Override
public void setState(int[] stateSet) {
this.mStateSet = stateSet != null ? stateSet : new int[]{};
}
@Override
public CharSequence getText() {
return mText;
}
@Override
public int getWidth() {
// If we haven't actually calculated a chip width yet just return -1, otherwise return the chip width + margins
return mChipWidth != -1 ? (mLeftMarginPx + mChipWidth + mRightMarginPx) : -1;
}
@Override
public int getSize(Paint paint, CharSequence text, int start, int end, Paint.FontMetricsInt fm) {
boolean usingFontMetrics = (fm != null);
// Adjust the font metrics regardless of whether or not there is a cached size so that the text view can maintain its height
if (usingFontMetrics) {
adjustFontMetrics(paint, fm);
}
if (mCachedSize == -1 && usingFontMetrics) {
mIconWidth = (mIcon != null) ? calculateChipHeight(fm.top, fm.bottom) : 0;
int actualWidth = calculateActualWidth(paint);
mCachedSize = actualWidth;
if (mMaxAvailableWidth != -1) {
int maxAvailableWidthMinusMargins = mMaxAvailableWidth - mLeftMarginPx - mRightMarginPx;
if (actualWidth > maxAvailableWidthMinusMargins) {
mTextToDraw = mText + mEllipsis;
while ((calculateActualWidth(paint) > maxAvailableWidthMinusMargins) && mTextToDraw.length() > 0) {
int lastCharacterIndex = mTextToDraw.length() - mEllipsis.length() - 1;
if (lastCharacterIndex < 0) {
break;
}
mTextToDraw = mTextToDraw.substring(0, lastCharacterIndex) + mEllipsis;
}
// Avoid a negative width
mChipWidth = Math.max(0, maxAvailableWidthMinusMargins);
mCachedSize = mMaxAvailableWidth;
}
}
}
return mCachedSize;
}
private int calculateActualWidth(Paint paint) {
// Only change the text size if a text size was set
if (mTextSize != -1) {
paint.setTextSize(mTextSize);
}
int totalPadding = mPaddingEdgePx;
// Find text width
Rect bounds = new Rect();
paint.getTextBounds(mTextToDraw, 0, mTextToDraw.length(), bounds);
int textWidth = bounds.width();
if (mIcon != null) {
totalPadding += mPaddingBetweenImagePx;
} else {
totalPadding += mPaddingEdgePx;
}
mChipWidth = totalPadding + textWidth + mIconWidth;
return getWidth();
}
public void invalidateCachedSize() {
mCachedSize = -1;
}
/**
* Adjusts the provided font metrics to make it seem like the font takes up {@code mChipHeight + mChipVerticalSpacing} pixels in height.
* This effectively ensures that the TextView will have a height equal to {@code mChipHeight + mChipVerticalSpacing} + whatever padding it has set.
* In {@link #draw(Canvas, CharSequence, int, int, float, int, int, int, Paint)} the chip itself is drawn to that it is vertically centered with
* {@code mChipVerticalSpacing / 2} pixels of space above and below it
*
* @param paint the paint whose font metrics should be adjusted
* @param fm the font metrics object to populate through {@link Paint#getFontMetricsInt(Paint.FontMetricsInt)}
*/
private void adjustFontMetrics(Paint paint, Paint.FontMetricsInt fm) {
// Only actually adjust font metrics if we have a chip height set
if (mChipHeight != -1) {
paint.getFontMetricsInt(fm);
int textHeight = fm.descent - fm.ascent;
// Break up the vertical spacing in half because half will go above the chip, half will go below the chip
int halfSpacing = mChipVerticalSpacing / 2;
// Given that the text is centered vertically within the chip, the amount of space above or below the text (inbetween the text and chip)
// is half their difference in height:
int spaceBetweenChipAndText = (mChipHeight - textHeight) / 2;
int textTop = fm.top;
int chipTop = fm.top - spaceBetweenChipAndText;
int textBottom = fm.bottom;
int chipBottom = fm.bottom + spaceBetweenChipAndText;
// The text may have been taller to begin with so we take the most negative coordinate (highest up) to be the top of the content
int topOfContent = Math.min(textTop, chipTop);
// Same as above but we want the largest positive coordinate (lowest down) to be the bottom of the content
int bottomOfContent = Math.max(textBottom, chipBottom);
// Shift the top up by halfSpacing and the bottom down by halfSpacing
int topOfContentWithSpacing = topOfContent - halfSpacing;
int bottomOfContentWithSpacing = bottomOfContent + halfSpacing;
// Change the font metrics so that the TextView thinks the font takes up the vertical space of a chip + spacing
fm.ascent = topOfContentWithSpacing;
fm.descent = bottomOfContentWithSpacing;
fm.top = topOfContentWithSpacing;
fm.bottom = bottomOfContentWithSpacing;
}
}
private int calculateChipHeight(int top, int bottom) {
// If a chip height was set we can return that, otherwise calculate it from top and bottom
return mChipHeight != -1 ? mChipHeight : bottom - top;
}
@Override
public void draw(Canvas canvas, CharSequence text, int start, int end, float x, int top, int y, int bottom, Paint paint) {
// Shift everything mLeftMarginPx to the left to create an empty space on the left (creating the margin)
x += mLeftMarginPx;
if (mChipHeight != -1) {
// If we set a chip height, adjust to vertically center chip in the line
// Adding (bottom - top) / 2 shifts the chip down so the top of it will be centered vertically
// Subtracting (mChipHeight / 2) shifts the chip back up so that the center of it will be centered vertically (as desired)
top += ((bottom - top) / 2) - (mChipHeight / 2);
bottom = top + mChipHeight;
}
// Perform actual drawing
drawBackground(canvas, x, top, bottom, paint);
drawText(canvas, x, top, bottom, paint, mTextToDraw);
if (mIcon != null) {
drawIcon(canvas, x, top, bottom, paint);
}
}
private void drawBackground(Canvas canvas, float x, int top, int bottom, Paint paint) {
int backgroundColor = mBackgroundColor.getColorForState(mStateSet, mBackgroundColor.getDefaultColor());
paint.setColor(backgroundColor);
int height = calculateChipHeight(top, bottom);
RectF rect = new RectF(x, top, x + mChipWidth, bottom);
int cornerRadius = (mCornerRadius != -1) ? mCornerRadius : height / 2;
canvas.drawRoundRect(rect, cornerRadius, cornerRadius, paint);
paint.setColor(mTextColor);
}
private void drawText(Canvas canvas, float x, int top, int bottom, Paint paint, CharSequence text) {
if (mTextSize != -1) {
paint.setTextSize(mTextSize);
}
int height = calculateChipHeight(top, bottom);
Paint.FontMetrics fm = paint.getFontMetrics();
// The top value provided here is the y coordinate for the very top of the chip
// The y coordinate we are calculating is where the baseline of the text will be drawn
// Our objective is to have the midpoint between the top and baseline of the text be in line with the vertical center of the chip
// First we add height / 2 which will put the baseline at the vertical center of the chip
// Then we add half the height of the text which will lower baseline so that the midpoint is at the vertical center of the chip as desired
float adjustedY = top + ((height / 2) + ((-fm.top - fm.bottom) / 2));
// The x coordinate provided here is the left-most edge of the chip
// If there is no icon or the icon is on the right, then the text will start at the left-most edge, but indented with the edge padding, so we
// add mPaddingEdgePx
// If there is an icon and it's on the left, the text will start at the left-most edge, but indented by the combined width of the icon and
// the padding between the icon and text, so we add (mIconWidth + mPaddingBetweenImagePx)
float adjustedX = x + ((mIcon == null || !mShowIconOnLeft) ? mPaddingEdgePx : (mIconWidth + mPaddingBetweenImagePx));
canvas.drawText(text, 0, text.length(), adjustedX, adjustedY, paint);
}
private void drawIcon(Canvas canvas, float x, int top, int bottom, Paint paint) {
drawIconBackground(canvas, x, top, bottom, paint);
drawIconBitmap(canvas, x, top, bottom, paint);
}
private void drawIconBackground(Canvas canvas, float x, int top, int bottom, Paint paint) {
int height = calculateChipHeight(top, bottom);
paint.setColor(mIconBackgroundColor);
// Since it's a circle the diameter is equal to the height, so the radius == diameter / 2 == height / 2
int radius = height / 2;
// The coordinates that get passed to drawCircle are for the center of the circle
// x is the left edge of the chip, (x + mChipWidth) is the right edge of the chip
// So the center of the circle is one radius distance from either the left or right edge (depending on which side the icon is being drawn on)
float circleX = mShowIconOnLeft ? (x + radius) : (x + mChipWidth - radius);
// The y coordinate is always just one radius distance from the top
canvas.drawCircle(circleX, top + radius, radius, paint);
paint.setColor(mTextColor);
}
private void drawIconBitmap(Canvas canvas, float x, int top, int bottom, Paint paint) {
int height = calculateChipHeight(top, bottom);
// Create a scaled down version of the bitmap to fit within the circle (whose diameter == height)
Bitmap iconBitmap = Bitmap.createBitmap(mIcon.getIntrinsicWidth(), mIcon.getIntrinsicHeight(), Bitmap.Config.ARGB_8888);
Bitmap scaledIconBitMap = scaleDown(iconBitmap, (float) height * SCALE_PERCENT_OF_CHIP_HEIGHT, true);
iconBitmap.recycle();
Canvas bitmapCanvas = new Canvas(scaledIconBitMap);
mIcon.setBounds(0, 0, bitmapCanvas.getWidth(), bitmapCanvas.getHeight());
mIcon.draw(bitmapCanvas);
// We are drawing a square icon inside of a circle
// The coordinates we pass to canvas.drawBitmap have to be for the top-left corner of the bitmap
// The bitmap should be inset by half of (circle width - bitmap width)
// Since it's a circle, the circle's width is equal to it's height which is equal to the chip height
float xInsetWithinCircle = (height - bitmapCanvas.getWidth()) / 2;
// The icon x coordinate is going to be insetWithinCircle pixels away from the left edge of the circle
// If the icon is on the left, the left edge of the circle is just x
// If the icon is on the right, the left edge of the circle is x + mChipWidth - height
float iconX = mShowIconOnLeft ? (x + xInsetWithinCircle) : (x + mChipWidth - height + xInsetWithinCircle);
// The y coordinate works the same way (only it's always from the top edge)
float yInsetWithinCircle = (height - bitmapCanvas.getHeight()) / 2;
float iconY = top + yInsetWithinCircle;
canvas.drawBitmap(scaledIconBitMap, iconX, iconY, paint);
}
private Bitmap scaleDown(Bitmap realImage, float maxImageSize, boolean filter) {
float ratio = Math.min(maxImageSize / realImage.getWidth(), maxImageSize / realImage.getHeight());
int width = Math.round(ratio * realImage.getWidth());
int height = Math.round(ratio * realImage.getHeight());
return Bitmap.createScaledBitmap(realImage, width, height, filter);
}
@Override
public String toString() {
return mText.toString();
}
}

View File

@@ -0,0 +1,60 @@
package com.hootsuite.nachos.chip;
import android.content.Context;
import android.content.res.ColorStateList;
import android.graphics.Color;
import androidx.annotation.NonNull;
import com.hootsuite.nachos.ChipConfiguration;
public class ChipSpanChipCreator implements ChipCreator<ChipSpan> {
@Override
public ChipSpan createChip(@NonNull Context context, @NonNull CharSequence text, Object data) {
return new ChipSpan(context, text, null, data);
}
@Override
public ChipSpan createChip(@NonNull Context context, @NonNull ChipSpan existingChip) {
return new ChipSpan(context, existingChip);
}
@Override
public void configureChip(@NonNull ChipSpan chip, @NonNull ChipConfiguration chipConfiguration) {
int chipHorizontalSpacing = chipConfiguration.getChipHorizontalSpacing();
ColorStateList chipBackground = chipConfiguration.getChipBackground();
int chipCornerRadius = chipConfiguration.getChipCornerRadius();
int chipTextColor = chipConfiguration.getChipTextColor();
int chipTextSize = chipConfiguration.getChipTextSize();
int chipHeight = chipConfiguration.getChipHeight();
int chipVerticalSpacing = chipConfiguration.getChipVerticalSpacing();
int maxAvailableWidth = chipConfiguration.getMaxAvailableWidth();
if (chipHorizontalSpacing != -1) {
chip.setLeftMargin(chipHorizontalSpacing / 2);
chip.setRightMargin(chipHorizontalSpacing / 2);
}
if (chipBackground != null) {
chip.setBackgroundColor(chipBackground);
}
if (chipCornerRadius != -1) {
chip.setCornerRadius(chipCornerRadius);
}
if (chipTextColor != Color.TRANSPARENT) {
chip.setTextColor(chipTextColor);
}
if (chipTextSize != -1) {
chip.setTextSize(chipTextSize);
}
if (chipHeight != -1) {
chip.setChipHeight(chipHeight);
}
if (chipVerticalSpacing != -1) {
chip.setChipVerticalSpacing(chipVerticalSpacing);
}
if (maxAvailableWidth != -1) {
chip.setMaxAvailableWidth(maxAvailableWidth);
}
}
}

View File

@@ -0,0 +1,95 @@
package com.hootsuite.nachos.terminator;
import android.text.Editable;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.hootsuite.nachos.tokenizer.ChipTokenizer;
import java.util.Map;
/**
* This interface is used to handle the management of characters that should trigger the creation of chips in a text view.
*
* @see ChipTokenizer
*/
public interface ChipTerminatorHandler {
/**
* When a chip terminator character is encountered in newly inserted text, all tokens in the whole text view will be chipified
*/
int BEHAVIOR_CHIPIFY_ALL = 0;
/**
* When a chip terminator character is encountered in newly inserted text, only the current token (that in which the chip terminator character
* was found) will be chipified. This token may extend beyond where the chip terminator character was located.
*/
int BEHAVIOR_CHIPIFY_CURRENT_TOKEN = 1;
/**
* When a chip terminator character is encountered in newly inserted text, only the text from the previous chip up until the chip terminator
* character will be chipified. This may not be an entire token.
*/
int BEHAVIOR_CHIPIFY_TO_TERMINATOR = 2;
/**
* Constant for use with {@link #setPasteBehavior(int)}. Use this if a paste should behave the same as a standard text input (the chip temrinators
* will all behave according to their pre-determined behavior set through {@link #addChipTerminator(char, int)} or {@link #setChipTerminators(Map)}).
*/
int PASTE_BEHAVIOR_USE_DEFAULT = -1;
/**
* Sets all the characters that will be marked as chip terminators. This will replace any previously set chip terminators.
*
* @param chipTerminators a map of characters to be marked as chip terminators to behaviors that describe how to respond to the characters, or null
* to remove all chip terminators
*/
void setChipTerminators(@Nullable Map<Character, Integer> chipTerminators);
/**
* Adds a character as a chip terminator. When the provided character is encountered in entered text, the nearby text will be chipified according
* to the behavior provided here.
* {@code behavior} Must be one of:
* <ul>
* <li>{@link #BEHAVIOR_CHIPIFY_ALL}</li>
* <li>{@link #BEHAVIOR_CHIPIFY_CURRENT_TOKEN}</li>
* <li>{@link #BEHAVIOR_CHIPIFY_TO_TERMINATOR}</li>
* </ul>
*
* @param character the character to mark as a chip terminator
* @param behavior the behavior describing how to respond to the chip terminator
*/
void addChipTerminator(char character, int behavior);
/**
* Customizes the way paste events are handled.
* If one of:
* <ul>
* <li>{@link #BEHAVIOR_CHIPIFY_ALL}</li>
* <li>{@link #BEHAVIOR_CHIPIFY_CURRENT_TOKEN}</li>
* <li>{@link #BEHAVIOR_CHIPIFY_TO_TERMINATOR}</li>
* </ul>
* is passed, all chip terminators will be handled with that behavior when a paste event occurs.
* If {@link #PASTE_BEHAVIOR_USE_DEFAULT} is passed, whatever behavior is configured for a particular chip terminator
* (through {@link #setChipTerminators(Map)} or {@link #addChipTerminator(char, int)} will be used for that chip terminator
*
* @param pasteBehavior the behavior to use on a paste event
*/
void setPasteBehavior(int pasteBehavior);
/**
* Parses the provided text looking for characters marked as chip terminators through {@link #addChipTerminator(char, int)} and {@link #setChipTerminators(Map)}.
* The provided {@link Editable} will be modified if chip terminators are encountered.
*
* @param tokenizer the {@link ChipTokenizer} to use to identify and chipify tokens in the text
* @param text the text in which to search for chip terminators tokens to be chipped
* @param start the index at which to begin looking for chip terminators (inclusive)
* @param end the index at which to end looking for chip terminators (exclusive)
* @param isPasteEvent true if this handling is for a paste event in which case the behavior set in {@link #setPasteBehavior(int)} will be used,
* otherwise false
* @return an non-negative integer indicating the index where the cursor (selection) should be placed once the handling is complete,
* or a negative integer indicating that the cursor should not be moved.
*/
int findAndHandleChipTerminators(@NonNull ChipTokenizer tokenizer, @NonNull Editable text, int start, int end, boolean isPasteEvent);
}

View File

@@ -0,0 +1,115 @@
package com.hootsuite.nachos.terminator;
import android.text.Editable;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.hootsuite.nachos.tokenizer.ChipTokenizer;
import java.util.HashMap;
import java.util.Map;
public class DefaultChipTerminatorHandler implements ChipTerminatorHandler {
@Nullable
private Map<Character, Integer> mChipTerminators;
private int mPasteBehavior = BEHAVIOR_CHIPIFY_TO_TERMINATOR;
@Override
public void setChipTerminators(@Nullable Map<Character, Integer> chipTerminators) {
mChipTerminators = chipTerminators;
}
@Override
public void addChipTerminator(char character, int behavior) {
if (mChipTerminators == null) {
mChipTerminators = new HashMap<>();
}
mChipTerminators.put(character, behavior);
}
@Override
public void setPasteBehavior(int pasteBehavior) {
mPasteBehavior = pasteBehavior;
}
@Override
public int findAndHandleChipTerminators(@NonNull ChipTokenizer tokenizer, @NonNull Editable text, int start, int end, boolean isPasteEvent) {
// If we don't have a tokenizer or any chip terminators, there's nothing to look for
if (mChipTerminators == null) {
return -1;
}
TextIterator textIterator = new TextIterator(text, start, end);
int selectionIndex = -1;
characterLoop:
while (textIterator.hasNextCharacter()) {
char theChar = textIterator.nextCharacter();
if (isChipTerminator(theChar)) {
int behavior = (isPasteEvent && mPasteBehavior != PASTE_BEHAVIOR_USE_DEFAULT) ? mPasteBehavior : mChipTerminators.get(theChar);
int newSelection = -1;
switch (behavior) {
case BEHAVIOR_CHIPIFY_ALL:
selectionIndex = handleChipifyAll(textIterator, tokenizer);
break characterLoop;
case BEHAVIOR_CHIPIFY_CURRENT_TOKEN:
newSelection = handleChipifyCurrentToken(textIterator, tokenizer);
break;
case BEHAVIOR_CHIPIFY_TO_TERMINATOR:
newSelection = handleChipifyToTerminator(textIterator, tokenizer);
break;
}
if (newSelection != -1) {
selectionIndex = newSelection;
}
}
}
return selectionIndex;
}
private int handleChipifyAll(TextIterator textIterator, ChipTokenizer tokenizer) {
textIterator.deleteCharacter(true);
tokenizer.terminateAllTokens(textIterator.getText());
return textIterator.totalLength();
}
private int handleChipifyCurrentToken(TextIterator textIterator, ChipTokenizer tokenizer) {
textIterator.deleteCharacter(true);
Editable text = textIterator.getText();
int index = textIterator.getIndex();
int tokenStart = tokenizer.findTokenStart(text, index);
int tokenEnd = tokenizer.findTokenEnd(text, index);
if (tokenStart < tokenEnd) {
CharSequence chippedText = tokenizer.terminateToken(text.subSequence(tokenStart, tokenEnd), null);
textIterator.replace(tokenStart, tokenEnd, chippedText);
return tokenStart + chippedText.length();
}
return -1;
}
private int handleChipifyToTerminator(TextIterator textIterator, ChipTokenizer tokenizer) {
Editable text = textIterator.getText();
int index = textIterator.getIndex();
if (index > 0) {
int tokenStart = tokenizer.findTokenStart(text, index);
if (tokenStart < index) {
CharSequence chippedText = tokenizer.terminateToken(text.subSequence(tokenStart, index), null);
textIterator.replace(tokenStart, index + 1, chippedText);
} else {
textIterator.deleteCharacter(false);
}
} else {
textIterator.deleteCharacter(false);
}
return -1;
}
private boolean isChipTerminator(char character) {
return mChipTerminators != null && mChipTerminators.keySet().contains(character);
}
}

View File

@@ -0,0 +1,63 @@
package com.hootsuite.nachos.terminator;
import android.text.Editable;
public class TextIterator {
private Editable mText;
private int mStart;
private int mEnd;
private int mIndex;
public TextIterator(Editable text, int start, int end) {
mText = text;
mStart = start;
mEnd = end;
mIndex = mStart - 1; // Subtract 1 so that the first call to nextCharacter() will return the first character
}
public int totalLength() {
return mText.length();
}
public int windowLength() {
return mEnd - mStart;
}
public Editable getText() {
return mText;
}
public int getIndex() {
return mIndex;
}
public boolean hasNextCharacter() {
return (mIndex + 1) < mEnd;
}
public char nextCharacter() {
mIndex++;
return mText.charAt(mIndex);
}
public void deleteCharacter(boolean maintainIndex) {
mText.replace(mIndex, mIndex + 1, "");
if (!maintainIndex) {
mIndex--;
}
mEnd--;
}
public void replace(int replaceStart, int replaceEnd, CharSequence chippedText) {
mText.replace(replaceStart, replaceEnd, chippedText);
// Update indexes
int newLength = chippedText.length();
int oldLength = replaceEnd - replaceStart;
mIndex = replaceStart + newLength - 1;
mEnd += newLength - oldLength;
}
}

View File

@@ -0,0 +1,89 @@
package com.hootsuite.nachos.tokenizer;
import android.text.Editable;
import android.text.Spanned;
import android.util.Pair;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.hootsuite.nachos.ChipConfiguration;
import com.hootsuite.nachos.chip.Chip;
import java.util.ArrayList;
import java.util.List;
/**
* Base implementation of the {@link ChipTokenizer} interface that performs no actions and returns default values.
* This class allows for the easy creation of a ChipTokenizer that only implements some of the methods of the interface.
*/
public abstract class BaseChipTokenizer implements ChipTokenizer {
@Override
public void applyConfiguration(Editable text, ChipConfiguration chipConfiguration) {
// Do nothing
}
@Override
public int findTokenStart(CharSequence charSequence, int i) {
// Do nothing
return 0;
}
@Override
public int findTokenEnd(CharSequence charSequence, int i) {
// Do nothing
return 0;
}
@NonNull
@Override
public List<Pair<Integer, Integer>> findAllTokens(CharSequence text) {
// Do nothing
return new ArrayList<>();
}
@Override
public CharSequence terminateToken(CharSequence charSequence, @Nullable Object data) {
// Do nothing
return charSequence;
}
@Override
public void terminateAllTokens(Editable text) {
// Do nothing
}
@Override
public int findChipStart(Chip chip, Spanned text) {
// Do nothing
return 0;
}
@Override
public int findChipEnd(Chip chip, Spanned text) {
// Do nothing
return 0;
}
@NonNull
@Override
public Chip[] findAllChips(int start, int end, Spanned text) {
return new Chip[]{};
}
@Override
public void revertChipToToken(Chip chip, Editable text) {
// Do nothing
}
@Override
public void deleteChip(Chip chip, Editable text) {
// Do nothing
}
@Override
public void deleteChipAndPadding(Chip chip, Editable text) {
// Do nothing
}
}

View File

@@ -0,0 +1,134 @@
package com.hootsuite.nachos.tokenizer;
import android.text.Editable;
import android.text.Spanned;
import android.util.Pair;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.hootsuite.nachos.ChipConfiguration;
import com.hootsuite.nachos.chip.Chip;
import java.util.List;
/**
* An extension of {@link android.widget.MultiAutoCompleteTextView.Tokenizer Tokenizer} that provides extra support
* for chipification.
* <p>
* In the context of this interface, a token is considered to be plain (non-chipped) text. Once a token is terminated it becomes or contains a chip.
* </p>
* <p>
* The CharSequences passed to the ChipTokenizer methods may contain both chipped text
* and plain text so the tokenizer must have some method of distinguishing between the two (e.g. using a delimeter character.
* The {@link #terminateToken(CharSequence, Object)} method is where a chip can be formed and returned to replace the plain text.
* Whatever class the implementation deems to represent a chip, must implement the {@link Chip} interface.
* </p>
*
* @see SpanChipTokenizer
*/
public interface ChipTokenizer {
/**
* Configures this ChipTokenizer to produce chips with the provided attributes. For each of these attributes, {@code -1} or {@code null} may be
* passed to indicate that the attribute may be ignored.
* <p>
* This will also apply the provided {@link ChipConfiguration} to any existing chips in the provided text.
* </p>
*
* @param text the text in which to search for existing chips to apply the configuration to
* @param chipConfiguration a {@link ChipConfiguration} containing customizations for the chips produced by this class
*/
void applyConfiguration(Editable text, ChipConfiguration chipConfiguration);
/**
* Returns the start of the token that ends at offset
* <code>cursor</code> within <code>text</code>.
*/
int findTokenStart(CharSequence text, int cursor);
/**
* Returns the end of the token (minus trailing punctuation)
* that begins at offset <code>cursor</code> within <code>text</code>.
*/
int findTokenEnd(CharSequence text, int cursor);
/**
* Searches through {@code text} for any tokens.
*
* @param text the text in which to search for un-terminated tokens
* @return a list of {@link Pair}s of the form (startIndex, endIndex) containing the locations of all
* unterminated tokens
*/
@NonNull
List<Pair<Integer, Integer>> findAllTokens(CharSequence text);
/**
* Returns <code>text</code>, modified, if necessary, to ensure that
* it ends with a token terminator (for example a space or comma).
*/
CharSequence terminateToken(CharSequence text, @Nullable Object data);
/**
* Terminates (converts from token into chip) all unterminated tokens in the provided text.
* This method CAN alter the provided text.
*
* @param text the text in which to terminate all tokens
*/
void terminateAllTokens(Editable text);
/**
* Finds the index of the first character in {@code text} that is a part of {@code chip}
*
* @param chip the chip whose start should be found
* @param text the text in which to search for the start of {@code chip}
* @return the start index of the chip
*/
int findChipStart(Chip chip, Spanned text);
/**
* Finds the index of the character after the last character in {@code text} that is a part of {@code chip}
*
* @param chip the chip whose end should be found
* @param text the text in which to search for the end of {@code chip}
* @return the end index of the chip
*/
int findChipEnd(Chip chip, Spanned text);
/**
* Searches through {@code text} for any chips
*
* @param start index to start looking for terminated tokens (inclusive)
* @param end index to end looking for terminated tokens (exclusive)
* @param text the text in which to search for terminated tokens
* @return a list of objects implementing the {@link Chip} interface to represent the terminated tokens
*/
@NonNull
Chip[] findAllChips(int start, int end, Spanned text);
/**
* Effectively does the opposite of {@link #terminateToken(CharSequence, Object)} by reverting the provided chip back into a token.
* This method CAN alter the provided text.
*
* @param chip the chip to revert into a token
* @param text the text in which the chip resides
*/
void revertChipToToken(Chip chip, Editable text);
/**
* Removes a chip and any text it encompasses from {@code text}. This method CAN alter the provided text.
*
* @param chip the chip to remove
* @param text the text to remove the chip from
*/
void deleteChip(Chip chip, Editable text);
/**
* Removes a chip, any text it encompasses AND any padding text (such as spaces) that may have been inserted when the chip was created in
* {@link #terminateToken(CharSequence, Object)} or after. This method CAN alter the provided text.
*
* @param chip the chip to remove
* @param text the text to remove the chip and padding from
*/
void deleteChipAndPadding(Chip chip, Editable text);
}

View File

@@ -0,0 +1,246 @@
package com.hootsuite.nachos.tokenizer;
import android.content.Context;
import android.text.Editable;
import android.text.SpannableString;
import android.text.Spanned;
import android.util.Pair;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.hootsuite.nachos.ChipConfiguration;
import com.hootsuite.nachos.chip.Chip;
import com.hootsuite.nachos.chip.ChipCreator;
import com.hootsuite.nachos.chip.ChipSpan;
import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
/**
* A default implementation of {@link ChipTokenizer}.
* This implementation does the following:
* <ul>
* <li>Surrounds each token with a space and the Unit Separator ASCII control character (31) - See the diagram below
* <ul>
* <li>The spaces are included so that android keyboards can distinguish the chips as different words and provide accurate
* autocorrect suggestions</li>
* </ul>
* </li>
* <li>Replaces each token with a {@link ChipSpan} containing the same text, once the token terminates</li>
* <li>Uses the values passed to {@link #applyConfiguration(Editable, ChipConfiguration)} to configure any ChipSpans that get created</li>
* </ul>
* Each terminated token will therefore look like the following (this is what will be returned from {@link #terminateToken(CharSequence, Object)}):
* <pre>
* -----------------------------------------------------------
* | SpannableString |
* | ---------------------------------------------------- |
* | | ChipSpan | |
* | | | |
* | | space separator text separator space | |
* | | | |
* | ---------------------------------------------------- |
* -----------------------------------------------------------
* </pre>
*
* @see ChipSpan
*/
public class SpanChipTokenizer<C extends Chip> implements ChipTokenizer {
/**
* The character used to separate chips internally is the US (Unit Separator) ASCII control character.
* This character is used because it's untypable so we have complete control over when chips are created.
*/
public static final char CHIP_SPAN_SEPARATOR = 31;
public static final char AUTOCORRECT_SEPARATOR = ' ';
private Context mContext;
@Nullable
private ChipConfiguration mChipConfiguration;
@NonNull
private ChipCreator<C> mChipCreator;
@NonNull
private Class<C> mChipClass;
private Comparator<Pair<Integer, Integer>> mReverseTokenIndexesSorter = new Comparator<Pair<Integer, Integer>>() {
@Override
public int compare(Pair<Integer, Integer> lhs, Pair<Integer, Integer> rhs) {
return rhs.first - lhs.first;
}
};
public SpanChipTokenizer(Context context, @NonNull ChipCreator<C> chipCreator, @NonNull Class<C> chipClass) {
mContext = context;
mChipCreator = chipCreator;
mChipClass = chipClass;
}
@Override
public void applyConfiguration(Editable text, ChipConfiguration chipConfiguration) {
mChipConfiguration = chipConfiguration;
for (C chip : findAllChips(0, text.length(), text)) {
// Recreate the chips with the new configuration
int chipStart = findChipStart(chip, text);
deleteChip(chip, text);
text.insert(chipStart, terminateToken(mChipCreator.createChip(mContext, chip)));
}
}
@Override
public int findTokenStart(CharSequence text, int cursor) {
int i = cursor;
// Work backwards until we find a CHIP_SPAN_SEPARATOR
while (i > 0 && text.charAt(i - 1) != CHIP_SPAN_SEPARATOR) {
i--;
}
// Work forwards to skip over any extra whitespace at the beginning of the token
while (i > 0 && i < text.length() && Character.isWhitespace(text.charAt(i))) {
i++;
}
return i;
}
@Override
public int findTokenEnd(CharSequence text, int cursor) {
int i = cursor;
int len = text.length();
// Work forwards till we find a CHIP_SPAN_SEPARATOR
while (i < len) {
if (text.charAt(i) == CHIP_SPAN_SEPARATOR) {
return (i - 1); // subtract one because the CHIP_SPAN_SEPARATOR will be preceded by a space
} else {
i++;
}
}
return len;
}
@NonNull
@Override
public List<Pair<Integer, Integer>> findAllTokens(CharSequence text) {
List<Pair<Integer, Integer>> unterminatedTokens = new ArrayList<>();
boolean insideChip = false;
// Iterate backwards through the text (to avoid messing up indexes)
for (int index = text.length() - 1; index >= 0; index--) {
char theCharacter = text.charAt(index);
// Every time we hit a CHIP_SPAN_SEPARATOR character we switch from being inside to outside
// or outside to inside a chip
// This check must happen before the whitespace check because CHIP_SPAN_SEPARATOR is considered a whitespace character
if (theCharacter == CHIP_SPAN_SEPARATOR) {
insideChip = !insideChip;
continue;
}
// Completely skip over whitespace
if (Character.isWhitespace(theCharacter)) {
continue;
}
// If we're ever outside a chip, see if the text we're in is a viable token for chipification
if (!insideChip) {
int tokenStart = findTokenStart(text, index);
int tokenEnd = findTokenEnd(text, index);
// Can only actually be chipified if there's at least one character between them
if (tokenEnd - tokenStart >= 1) {
unterminatedTokens.add(new Pair<>(tokenStart, tokenEnd));
index = tokenStart;
}
}
}
return unterminatedTokens;
}
@Override
public CharSequence terminateToken(CharSequence text, @Nullable Object data) {
// Remove leading/trailing whitespace
CharSequence trimmedText = text.toString().trim();
return terminateToken(mChipCreator.createChip(mContext, trimmedText, data));
}
private CharSequence terminateToken(C chip) {
// Surround the text with CHIP_SPAN_SEPARATOR and spaces
// The spaces allow autocorrect to correctly identify words
String chipSeparator = Character.toString(CHIP_SPAN_SEPARATOR);
String autoCorrectSeparator = Character.toString(AUTOCORRECT_SEPARATOR);
CharSequence textWithSeparator = autoCorrectSeparator + chipSeparator + chip.getText() + chipSeparator + autoCorrectSeparator;
// Build the container object to house the ChipSpan and space
SpannableString spannableString = new SpannableString(textWithSeparator);
// Attach the ChipSpan
if (mChipConfiguration != null) {
mChipCreator.configureChip(chip, mChipConfiguration);
}
spannableString.setSpan(chip, 0, textWithSeparator.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
return spannableString;
}
@Override
public void terminateAllTokens(Editable text) {
List<Pair<Integer, Integer>> unterminatedTokens = findAllTokens(text);
// Sort in reverse order (so index changes don't affect anything)
Collections.sort(unterminatedTokens, mReverseTokenIndexesSorter);
for (Pair<Integer, Integer> indexes : unterminatedTokens) {
int start = indexes.first;
int end = indexes.second;
CharSequence textToChip = text.subSequence(start, end);
CharSequence chippedText = terminateToken(textToChip, null);
text.replace(start, end, chippedText);
}
}
@Override
public int findChipStart(Chip chip, Spanned text) {
return text.getSpanStart(chip);
}
@Override
public int findChipEnd(Chip chip, Spanned text) {
return text.getSpanEnd(chip);
}
@SuppressWarnings("unchecked")
@NonNull
@Override
public C[] findAllChips(int start, int end, Spanned text) {
C[] spansArray = text.getSpans(start, end, mChipClass);
return (spansArray != null) ? spansArray : (C[]) Array.newInstance(mChipClass, 0);
}
@Override
public void revertChipToToken(Chip chip, Editable text) {
int chipStart = findChipStart(chip, text);
int chipEnd = findChipEnd(chip, text);
text.removeSpan(chip);
text.replace(chipStart, chipEnd, chip.getText());
}
@Override
public void deleteChip(Chip chip, Editable text) {
int chipStart = findChipStart(chip, text);
int chipEnd = findChipEnd(chip, text);
text.removeSpan(chip);
// On the emulator for some reason the text automatically gets deleted and chipStart and chipEnd end up both being -1, so in that case we
// don't need to call text.delete(...)
if (chipStart != chipEnd) {
text.delete(chipStart, chipEnd);
}
}
@Override
public void deleteChipAndPadding(Chip chip, Editable text) {
// This implementation does not add any extra padding outside of the span so we can just delete the chip normally
deleteChip(chip, text);
}
}

View File

@@ -0,0 +1,32 @@
package com.hootsuite.nachos.validator;
import android.text.SpannableStringBuilder;
import android.util.Pair;
import androidx.annotation.NonNull;
import com.hootsuite.nachos.tokenizer.ChipTokenizer;
import java.util.List;
/**
* A {@link NachoValidator} that deems text to be invalid if it contains
* unterminated tokens and fixes the text by chipifying all the unterminated tokens.
*/
public class ChipifyingNachoValidator implements NachoValidator {
@Override
public boolean isValid(@NonNull ChipTokenizer chipTokenizer, CharSequence text) {
// The text is considered valid if there are no unterminated tokens (everything is a chip)
List<Pair<Integer, Integer>> unterminatedTokens = chipTokenizer.findAllTokens(text);
return unterminatedTokens.isEmpty();
}
@Override
public CharSequence fixText(@NonNull ChipTokenizer chipTokenizer, CharSequence invalidText) {
SpannableStringBuilder newText = new SpannableStringBuilder(invalidText);
chipTokenizer.terminateAllTokens(newText);
return newText;
}
}

View File

@@ -0,0 +1,5 @@
package com.hootsuite.nachos.validator;
public interface IllegalCharacterIdentifier {
boolean isCharacterIllegal(Character c);
}

View File

@@ -0,0 +1,29 @@
package com.hootsuite.nachos.validator;
import androidx.annotation.NonNull;
import com.hootsuite.nachos.tokenizer.ChipTokenizer;
/**
* Interface used to ensure that a given CharSequence complies to a particular format.
*/
public interface NachoValidator {
/**
* Validates the specified text.
*
* @return true If the text currently in the text editor is valid.
* @see #fixText(ChipTokenizer, CharSequence)
*/
boolean isValid(@NonNull ChipTokenizer chipTokenizer, CharSequence text);
/**
* Corrects the specified text to make it valid.
*
* @param invalidText A string that doesn't pass validation: isValid(invalidText)
* returns false
* @return A string based on invalidText such as invoking isValid() on it returns true.
* @see #isValid(ChipTokenizer, CharSequence)
*/
CharSequence fixText(@NonNull ChipTokenizer chipTokenizer, CharSequence invalidText);
}

View File

@@ -31,7 +31,6 @@ import org.joinmastodon.android.ui.text.HtmlParser;
import org.parceler.Parcels;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashSet;
import androidx.annotation.Nullable;
@@ -57,6 +56,7 @@ public class AudioPlayerService extends Service{
private static HashSet<Callback> callbacks=new HashSet<>();
private AudioManager.OnAudioFocusChangeListener audioFocusChangeListener=this::onAudioFocusChanged;
private boolean resumeAfterAudioFocusGain;
private boolean isBuffering=true;
private BroadcastReceiver receiver=new BroadcastReceiver(){
@Override
@@ -169,13 +169,15 @@ public class AudioPlayerService extends Service{
}
updateNotification(false, false);
getSystemService(AudioManager.class).requestAudioFocus(audioFocusChangeListener, AudioManager.STREAM_MUSIC, AudioManager.AUDIOFOCUS_GAIN);
int audiofocus = GlobalUserPreferences.overlayMedia ? AudioManager.AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK : AudioManager.AUDIOFOCUS_GAIN;
getSystemService(AudioManager.class).requestAudioFocus(audioFocusChangeListener, AudioManager.STREAM_MUSIC, audiofocus);
player=new MediaPlayer();
player.setOnPreparedListener(this::onPlayerPrepared);
player.setOnErrorListener(this::onPlayerError);
player.setOnCompletionListener(this::onPlayerCompletion);
player.setOnSeekCompleteListener(this::onPlayerSeekCompleted);
player.setOnInfoListener(this::onPlayerInfo);
try{
player.setDataSource(this, Uri.parse(attachment.url));
player.prepareAsync();
@@ -187,7 +189,9 @@ public class AudioPlayerService extends Service{
}
private void onPlayerPrepared(MediaPlayer mp){
Log.i(TAG, "onPlayerPrepared");
playerReady=true;
isBuffering=false;
player.start();
updateSessionState(false);
}
@@ -205,6 +209,21 @@ public class AudioPlayerService extends Service{
stopSelf();
}
private boolean onPlayerInfo(MediaPlayer mp, int what, int extra){
switch(what){
case MediaPlayer.MEDIA_INFO_BUFFERING_START -> {
isBuffering=true;
updateSessionState(false);
}
case MediaPlayer.MEDIA_INFO_BUFFERING_END -> {
isBuffering=false;
updateSessionState(false);
}
default -> Log.i(TAG, "onPlayerInfo() called with: mp = ["+mp+"], what = ["+what+"], extra = ["+extra+"]");
}
return true;
}
private void onAudioFocusChanged(int change){
switch(change){
case AudioManager.AUDIOFOCUS_LOSS -> {
@@ -212,7 +231,7 @@ public class AudioPlayerService extends Service{
pause(false);
}
case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT -> {
resumeAfterAudioFocusGain=true;
resumeAfterAudioFocusGain=isPlaying();
pause(false);
}
case AudioManager.AUDIOFOCUS_GAIN -> {
@@ -232,12 +251,16 @@ public class AudioPlayerService extends Service{
private void updateSessionState(boolean removeNotification){
session.setPlaybackState(new PlaybackState.Builder()
.setState(player.isPlaying() ? PlaybackState.STATE_PLAYING : PlaybackState.STATE_PAUSED, player.getCurrentPosition(), 1f)
.setState(switch(getPlayState()){
case PLAYING -> PlaybackState.STATE_PLAYING;
case PAUSED -> PlaybackState.STATE_PAUSED;
case BUFFERING -> PlaybackState.STATE_BUFFERING;
}, player.getCurrentPosition(), 1f)
.setActions(PlaybackState.ACTION_STOP | PlaybackState.ACTION_PLAY_PAUSE | PlaybackState.ACTION_SEEK_TO)
.build());
updateNotification(!player.isPlaying(), removeNotification);
for(Callback cb:callbacks)
cb.onPlayStateChanged(attachment.id, player.isPlaying(), player.getCurrentPosition());
cb.onPlayStateChanged(attachment.id, getPlayState(), player.getCurrentPosition());
}
private void updateNotification(boolean dismissable, boolean removeNotification){
@@ -310,6 +333,12 @@ public class AudioPlayerService extends Service{
return attachment.id;
}
public PlayState getPlayState(){
if(isBuffering)
return PlayState.BUFFERING;
return player.isPlaying() ? PlayState.PLAYING : PlayState.PAUSED;
}
public static void registerCallback(Callback cb){
callbacks.add(cb);
}
@@ -333,7 +362,13 @@ public class AudioPlayerService extends Service{
}
public interface Callback{
void onPlayStateChanged(String attachmentID, boolean playing, int position);
void onPlayStateChanged(String attachmentID, PlayState state, int position);
void onPlaybackStopped(String attachmentID);
}
public enum PlayState{
PLAYING,
PAUSED,
BUFFERING
}
}

View File

@@ -0,0 +1,24 @@
package org.joinmastodon.android;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
public class ExitActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
finishAndRemoveTask();
}
public static void exit(Context context) {
Intent intent = new Intent(context, ExitActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
context.startActivity(intent);
}
}

View File

@@ -3,20 +3,25 @@ package org.joinmastodon.android;
import android.app.Fragment;
import android.content.ClipData;
import android.content.Intent;
import android.graphics.drawable.ColorDrawable;
import android.net.Uri;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.Pair;
import android.widget.Toast;
import org.joinmastodon.android.api.MastodonAPIRequest;
import org.joinmastodon.android.api.session.AccountSession;
import org.joinmastodon.android.api.session.AccountSessionManager;
import org.joinmastodon.android.fragments.ComposeFragment;
import org.joinmastodon.android.ui.AccountSwitcherSheet;
import org.joinmastodon.android.ui.utils.UiUtils;
import org.jsoup.internal.StringUtil;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Optional;
import java.util.function.BiConsumer;
import androidx.annotation.Nullable;
import me.grishka.appkit.FragmentStackActivity;
@@ -27,18 +32,52 @@ public class ExternalShareActivity extends FragmentStackActivity{
UiUtils.setUserPreferredTheme(this);
super.onCreate(savedInstanceState);
if(savedInstanceState==null){
Optional<String> text = Optional.ofNullable(getIntent().getStringExtra(Intent.EXTRA_TEXT));
Optional<Pair<String, Optional<String>>> fediHandle = text.flatMap(UiUtils::parseFediverseHandle);
boolean isFediUrl = text.map(UiUtils::looksLikeMastodonUrl).orElse(false);
boolean isOpenable = isFediUrl || fediHandle.isPresent();
List<AccountSession> sessions=AccountSessionManager.getInstance().getLoggedInAccounts();
if(sessions.isEmpty()){
if (sessions.isEmpty()){
Toast.makeText(this, R.string.err_not_logged_in, Toast.LENGTH_SHORT).show();
finish();
}else if(sessions.size()==1){
} else if (isOpenable || sessions.size() > 1) {
AccountSwitcherSheet sheet = new AccountSwitcherSheet(this, null, true, isOpenable);
sheet.setOnClick((accountId, open) -> {
if (open && text.isPresent()) {
BiConsumer<Class<? extends Fragment>, Bundle> callback = (clazz, args) -> {
if (clazz == null) {
Toast.makeText(this, R.string.sk_open_in_app_failed, Toast.LENGTH_SHORT).show();
// TODO: do something about the window getting leaked
sheet.dismiss();
finish();
return;
}
args.putString("fromExternalShare", clazz.getSimpleName());
Intent intent = new Intent(this, MainActivity.class);
intent.putExtras(args);
finish();
startActivity(intent);
};
fediHandle
.<MastodonAPIRequest<?>>map(handle ->
UiUtils.lookupAccountHandle(this, accountId, handle, callback))
.or(() ->
UiUtils.lookupURL(this, accountId, text.get(), callback))
.ifPresent(req ->
req.wrapProgress(this, R.string.loading, true, d -> {
UiUtils.transformDialogForLookup(this, accountId, isFediUrl ? text.get() : null, d);
d.setOnDismissListener((x) -> finish());
}));
} else {
openComposeFragment(accountId);
}
});
sheet.show();
} else if (sessions.size() == 1) {
openComposeFragment(sessions.get(0).getID());
}else{
getWindow().setBackgroundDrawable(new ColorDrawable(0xff000000));
UiUtils.pickAccount(this, null, R.string.choose_account, 0,
session -> openComposeFragment(session.getID()),
b -> b.setOnCancelListener(d -> finish())
);
}
}
}
@@ -51,9 +90,15 @@ public class ExternalShareActivity extends FragmentStackActivity{
String subject = "";
if (intent.hasExtra(Intent.EXTRA_SUBJECT)) {
subject = intent.getStringExtra(Intent.EXTRA_SUBJECT);
if (!subject.isBlank()) builder.append(subject).append("\n\n");
if (!StringUtil.isBlank(subject)) builder.append(subject).append("\n\n");
}
if (intent.hasExtra(Intent.EXTRA_TEXT)) {
String extra = intent.getStringExtra(Intent.EXTRA_TEXT);
if (!StringUtil.isBlank(extra)) {
if (extra.startsWith(subject)) extra = extra.substring(subject.length()).trim();
builder.append(extra).append("\n\n");
}
}
if (intent.hasExtra(Intent.EXTRA_TEXT)) builder.append(intent.getStringExtra(Intent.EXTRA_TEXT)).append("\n");
String text=builder.toString();
List<Uri> mediaUris;
if(Intent.ACTION_SEND.equals(intent.getAction())){
@@ -80,8 +125,7 @@ public class ExternalShareActivity extends FragmentStackActivity{
args.putString("account", accountID);
if(!TextUtils.isEmpty(text))
args.putString("prefilledText", text);
if(!subject.isBlank())
args.putInt("selectionEnd", subject.length());
args.putInt("selectionStart", StringUtil.isBlank(subject) ? 0 : subject.length());
if(mediaUris!=null && !mediaUris.isEmpty())
args.putParcelableArrayList("mediaAttachments", toArrayList(mediaUris));
Fragment fragment=new ComposeFragment();

View File

@@ -4,109 +4,170 @@ import static org.joinmastodon.android.api.MastodonAPIController.gson;
import android.content.Context;
import android.content.SharedPreferences;
import android.util.Log;
import androidx.annotation.StringRes;
import android.os.Build;
import com.google.gson.JsonSyntaxException;
import com.google.gson.reflect.TypeToken;
import org.joinmastodon.android.api.session.AccountLocalPreferences;
import org.joinmastodon.android.api.session.AccountSession;
import org.joinmastodon.android.api.session.AccountSessionManager;
import org.joinmastodon.android.model.ContentType;
import org.joinmastodon.android.model.Instance;
import org.joinmastodon.android.model.TimelineDefinition;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import androidx.annotation.StringRes;
public class GlobalUserPreferences{
private static final String TAG="GlobalUserPreferences";
public static boolean playGifs;
public static boolean useCustomTabs;
public static boolean altTextReminders, confirmUnfollow, confirmBoost, confirmDeletePost;
public static ThemePreference theme;
// MEGALODON
public static boolean trueBlackTheme;
public static boolean showReplies;
public static boolean showBoosts;
public static boolean loadNewPosts;
public static boolean showNewPostsButton;
public static boolean showInteractionCounts;
public static boolean alwaysExpandContentWarnings;
public static boolean disableMarquee;
public static boolean toolbarMarquee;
public static boolean disableSwipe;
public static boolean disableDividers;
public static boolean voteButtonForSingleChoice;
public static boolean uniformNotificationIcon;
public static boolean enableDeleteNotifications;
public static boolean relocatePublishButton;
public static boolean translateButtonOpenedOnly;
public static boolean uniformNotificationIcon;
public static boolean reduceMotion;
public static boolean keepOnlyLatestNotification;
public static boolean enableFabAutoHide;
public static boolean disableAltTextReminder;
public static boolean showAltIndicator;
public static boolean showNoAltIndicator;
public static boolean enablePreReleases;
public static boolean prefixRepliesWithRe;
public static boolean bottomEncoding;
public static PrefixRepliesMode prefixReplies;
public static boolean collapseLongPosts;
public static boolean spectatorMode;
public static String publishButtonText;
public static ThemePreference theme;
public static boolean autoHideFab;
public static boolean compactReblogReplyLine;
public static boolean allowRemoteLoading;
public static boolean forwardReportDefault;
public static AutoRevealMode autoRevealEqualSpoilers;
public static ColorPreference color;
public static boolean disableM3PillActiveIndicator;
public static boolean showNavigationLabels;
public static boolean displayPronounsInTimelines, displayPronounsInThreads, displayPronounsInUserListings;
public static boolean overlayMedia;
public static boolean showSuicideHelp;
private final static Type recentLanguagesType = new TypeToken<Map<String, List<String>>>() {}.getType();
private final static Type pinnedTimelinesType = new TypeToken<Map<String, List<TimelineDefinition>>>() {}.getType();
public static Map<String, List<String>> recentLanguages;
public static Map<String, List<TimelineDefinition>> pinnedTimelines;
public static Set<String> accountsWithLocalOnlySupport;
public static Set<String> accountsInGlitchMode;
// MOSHIDON
public static boolean showDividers;
public static boolean relocatePublishButton;
public static boolean defaultToUnlistedReplies;
public static boolean doubleTapToSearch;
public static boolean doubleTapToSwipe;
public static boolean confirmBeforeReblog;
public static boolean hapticFeedback;
public static boolean replyLineAboveHeader;
public static boolean swapBookmarkWithBoostAction;
public static boolean loadRemoteAccountFollowers;
public static boolean mentionRebloggerAutomatically;
public static boolean showPostsWithoutAlt;
public static boolean showMediaPreview;
private final static Type recentEmojisType = new TypeToken<Map<String, Integer>>() {}.getType();
public static Map<String, Integer> recentEmojis;
private static SharedPreferences getPrefs(){
public static SharedPreferences getPrefs(){
return MastodonApp.context.getSharedPreferences("global", Context.MODE_PRIVATE);
}
private static <T> T fromJson(String json, Type type, T orElse) {
if (json == null) return orElse;
try { return gson.fromJson(json, type); }
catch (JsonSyntaxException ignored) { return orElse; }
public static <T> T fromJson(String json, Type type, T orElse){
if(json==null) return orElse;
try{
T value=gson.fromJson(json, type);
return value==null ? orElse : value;
}catch(JsonSyntaxException ignored){
return orElse;
}
}
public static <T extends Enum<T>> T enumValue(Class<T> enumType, String name) {
try { return Enum.valueOf(enumType, name); }
catch (NullPointerException npe) { return null; }
}
public static void load(){
SharedPreferences prefs=getPrefs();
playGifs=prefs.getBoolean("playGifs", true);
useCustomTabs=prefs.getBoolean("useCustomTabs", true);
theme=ThemePreference.values()[prefs.getInt("theme", 0)];
altTextReminders=prefs.getBoolean("altTextReminders", true);
confirmUnfollow=prefs.getBoolean("confirmUnfollow", true);
confirmBoost=prefs.getBoolean("confirmBoost", false);
confirmDeletePost=prefs.getBoolean("confirmDeletePost", true);
// MEGALODON
trueBlackTheme=prefs.getBoolean("trueBlackTheme", false);
showReplies=prefs.getBoolean("showReplies", true);
showBoosts=prefs.getBoolean("showBoosts", true);
loadNewPosts=prefs.getBoolean("loadNewPosts", true);
showNewPostsButton=prefs.getBoolean("showNewPostsButton", true);
uniformNotificationIcon=prefs.getBoolean("uniformNotificationIcon", true);
showInteractionCounts=prefs.getBoolean("showInteractionCounts", false);
alwaysExpandContentWarnings=prefs.getBoolean("alwaysExpandContentWarnings", false);
disableMarquee=prefs.getBoolean("disableMarquee", false);
toolbarMarquee=prefs.getBoolean("toolbarMarquee", true);
disableSwipe=prefs.getBoolean("disableSwipe", false);
disableDividers=prefs.getBoolean("disableDividers", true);
relocatePublishButton=prefs.getBoolean("relocatePublishButton", true);
voteButtonForSingleChoice=prefs.getBoolean("voteButtonForSingleChoice", true);
enableDeleteNotifications=prefs.getBoolean("enableDeleteNotifications", false);
translateButtonOpenedOnly=prefs.getBoolean("translateButtonOpenedOnly", false);
uniformNotificationIcon=prefs.getBoolean("uniformNotificationIcon", false);
reduceMotion=prefs.getBoolean("reduceMotion", false);
keepOnlyLatestNotification=prefs.getBoolean("keepOnlyLatestNotification", false);
enableFabAutoHide=prefs.getBoolean("enableFabAutoHide", true);
disableAltTextReminder=prefs.getBoolean("disableAltTextReminder", false);
showAltIndicator=prefs.getBoolean("showAltIndicator", true);
showNoAltIndicator=prefs.getBoolean("showNoAltIndicator", true);
enablePreReleases=prefs.getBoolean("enablePreReleases", false);
prefixRepliesWithRe=prefs.getBoolean("prefixRepliesWithRe", false);
bottomEncoding=prefs.getBoolean("bottomEncoding", false);
prefixReplies=PrefixRepliesMode.valueOf(prefs.getString("prefixReplies", PrefixRepliesMode.NEVER.name()));
collapseLongPosts=prefs.getBoolean("collapseLongPosts", true);
spectatorMode=prefs.getBoolean("spectatorMode", false);
publishButtonText=prefs.getString("publishButtonText", "");
autoHideFab=prefs.getBoolean("autoHideFab", true);
compactReblogReplyLine=prefs.getBoolean("compactReblogReplyLine", true);
allowRemoteLoading=prefs.getBoolean("allowRemoteLoading", true);
autoRevealEqualSpoilers=AutoRevealMode.valueOf(prefs.getString("autoRevealEqualSpoilers", AutoRevealMode.THREADS.name()));
forwardReportDefault=prefs.getBoolean("forwardReportDefault", true);
disableM3PillActiveIndicator=prefs.getBoolean("disableM3PillActiveIndicator", false);
showNavigationLabels=prefs.getBoolean("showNavigationLabels", true);
displayPronounsInTimelines=prefs.getBoolean("displayPronounsInTimelines", true);
displayPronounsInThreads=prefs.getBoolean("displayPronounsInThreads", true);
displayPronounsInUserListings=prefs.getBoolean("displayPronounsInUserListings", true);
overlayMedia=prefs.getBoolean("overlayMedia", false);
showSuicideHelp=prefs.getBoolean("showSuicideHelp", true);
// MOSHIDON
uniformNotificationIcon=prefs.getBoolean("uniformNotificationIcon", false);
showDividers =prefs.getBoolean("showDividers", false);
relocatePublishButton=prefs.getBoolean("relocatePublishButton", true);
compactReblogReplyLine=prefs.getBoolean("compactReblogReplyLine", true);
defaultToUnlistedReplies=prefs.getBoolean("defaultToUnlistedReplies", false);
doubleTapToSearch =prefs.getBoolean("doubleTapToSearch", true);
doubleTapToSwipe =prefs.getBoolean("doubleTapToSwipe", true);
replyLineAboveHeader=prefs.getBoolean("replyLineAboveHeader", true);
confirmBeforeReblog=prefs.getBoolean("confirmBeforeReblog", false);
hapticFeedback=prefs.getBoolean("hapticFeedback", true);
swapBookmarkWithBoostAction=prefs.getBoolean("swapBookmarkWithBoostAction", false);
loadRemoteAccountFollowers=prefs.getBoolean("loadRemoteAccountFollowers", true);
mentionRebloggerAutomatically=prefs.getBoolean("mentionRebloggerAutomatically", false);
showPostsWithoutAlt=prefs.getBoolean("showPostsWithoutAlt", true);
showMediaPreview=prefs.getBoolean("showMediaPreview", true);
theme=ThemePreference.values()[prefs.getInt("theme", 0)];
recentLanguages=fromJson(prefs.getString("recentLanguages", "{}"), recentLanguagesType, new HashMap<>());
recentEmojis=fromJson(prefs.getString("recentEmojis", "{}"), recentEmojisType, new HashMap<>());
publishButtonText=prefs.getString("publishButtonText", "");
pinnedTimelines=fromJson(prefs.getString("pinnedTimelines", null), pinnedTimelinesType, new HashMap<>());
accountsWithLocalOnlySupport=prefs.getStringSet("accountsWithLocalOnlySupport", new HashSet<>());
accountsInGlitchMode=prefs.getStringSet("accountsInGlitchMode", new HashSet<>());
if (prefs.contains("prefixRepliesWithRe")) {
prefixReplies = prefs.getBoolean("prefixRepliesWithRe", false)
? PrefixRepliesMode.TO_OTHERS : PrefixRepliesMode.NEVER;
prefs.edit()
.putString("prefixReplies", prefixReplies.name())
.remove("prefixRepliesWithRe")
.apply();
}
try {
if(android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.S){
@@ -118,57 +179,148 @@ public class GlobalUserPreferences{
// invalid color name or color was previously saved as integer
color=ColorPreference.PURPLE;
}
if(prefs.getInt("migrationLevel", 0) < 61) migrateToUpstreamVersion61();
}
public static void save(){
getPrefs().edit()
.putBoolean("playGifs", playGifs)
.putBoolean("useCustomTabs", useCustomTabs)
.putBoolean("showReplies", showReplies)
.putBoolean("showBoosts", showBoosts)
.putInt("theme", theme.ordinal())
.putBoolean("altTextReminders", altTextReminders)
.putBoolean("confirmUnfollow", confirmUnfollow)
.putBoolean("confirmBoost", confirmBoost)
.putBoolean("confirmDeletePost", confirmDeletePost)
// MEGALODON
.putBoolean("loadNewPosts", loadNewPosts)
.putBoolean("showNewPostsButton", showNewPostsButton)
.putBoolean("trueBlackTheme", trueBlackTheme)
.putBoolean("showInteractionCounts", showInteractionCounts)
.putBoolean("alwaysExpandContentWarnings", alwaysExpandContentWarnings)
.putBoolean("disableMarquee", disableMarquee)
.putBoolean("toolbarMarquee", toolbarMarquee)
.putBoolean("disableSwipe", disableSwipe)
.putBoolean("disableDividers", disableDividers)
.putBoolean("relocatePublishButton", relocatePublishButton)
.putBoolean("uniformNotificationIcon", uniformNotificationIcon)
.putBoolean("enableDeleteNotifications", enableDeleteNotifications)
.putBoolean("translateButtonOpenedOnly", translateButtonOpenedOnly)
.putBoolean("uniformNotificationIcon", uniformNotificationIcon)
.putBoolean("reduceMotion", reduceMotion)
.putBoolean("keepOnlyLatestNotification", keepOnlyLatestNotification)
.putBoolean("enableFabAutoHide", enableFabAutoHide)
.putBoolean("disableAltTextReminder", disableAltTextReminder)
.putBoolean("showAltIndicator", showAltIndicator)
.putBoolean("showNoAltIndicator", showNoAltIndicator)
.putBoolean("enablePreReleases", enablePreReleases)
.putBoolean("prefixRepliesWithRe", prefixRepliesWithRe)
.putString("prefixReplies", prefixReplies.name())
.putBoolean("collapseLongPosts", collapseLongPosts)
.putBoolean("spectatorMode", spectatorMode)
.putString("publishButtonText", publishButtonText)
.putBoolean("bottomEncoding", bottomEncoding)
.putInt("theme", theme.ordinal())
.putBoolean("autoHideFab", autoHideFab)
.putBoolean("compactReblogReplyLine", compactReblogReplyLine)
.putString("color", color.name())
.putString("recentLanguages", gson.toJson(recentLanguages))
.putString("pinnedTimelines", gson.toJson(pinnedTimelines))
.putString("recentEmojis", gson.toJson(recentEmojis))
.putStringSet("accountsWithLocalOnlySupport", accountsWithLocalOnlySupport)
.putStringSet("accountsInGlitchMode", accountsInGlitchMode)
.putBoolean("allowRemoteLoading", allowRemoteLoading)
.putString("autoRevealEqualSpoilers", autoRevealEqualSpoilers.name())
.putBoolean("forwardReportDefault", forwardReportDefault)
.putBoolean("disableM3PillActiveIndicator", disableM3PillActiveIndicator)
.putBoolean("showNavigationLabels", showNavigationLabels)
.putBoolean("displayPronounsInTimelines", displayPronounsInTimelines)
.putBoolean("displayPronounsInThreads", displayPronounsInThreads)
.putBoolean("displayPronounsInUserListings", displayPronounsInUserListings)
.putBoolean("overlayMedia", overlayMedia)
.putBoolean("showSuicideHelp", showSuicideHelp)
// MOSHIDON
.putBoolean("defaultToUnlistedReplies", defaultToUnlistedReplies)
.putBoolean("doubleTapToSearch", doubleTapToSearch)
.putBoolean("doubleTapToSwipe", doubleTapToSwipe)
.putBoolean("compactReblogReplyLine", compactReblogReplyLine)
.putBoolean("replyLineAboveHeader", replyLineAboveHeader)
.putBoolean("confirmBeforeReblog", confirmBeforeReblog)
.putBoolean("swapBookmarkWithBoostAction", swapBookmarkWithBoostAction)
.putBoolean("loadRemoteAccountFollowers", loadRemoteAccountFollowers)
.putBoolean("hapticFeedback", hapticFeedback)
.putBoolean("mentionRebloggerAutomatically", mentionRebloggerAutomatically)
.putBoolean("showDividers", showDividers)
.putBoolean("relocatePublishButton", relocatePublishButton)
.putBoolean("enableDeleteNotifications", enableDeleteNotifications)
.putBoolean("showPostsWithoutAlt", showPostsWithoutAlt)
.putBoolean("showMediaPreview", showMediaPreview)
.putInt("theme", theme.ordinal())
.apply();
}
private static void migrateToUpstreamVersion61(){
Log.d(TAG, "Migrating preferences to upstream version 61!!");
Type accountsDefaultContentTypesType = new TypeToken<Map<String, ContentType>>() {}.getType();
Type pinnedTimelinesType = new TypeToken<Map<String, ArrayList<TimelineDefinition>>>() {}.getType();
Type recentLanguagesType = new TypeToken<Map<String, ArrayList<String>>>() {}.getType();
// migrate global preferences
SharedPreferences prefs=getPrefs();
altTextReminders=!prefs.getBoolean("disableAltTextReminder", false);
confirmBoost=prefs.getBoolean("confirmBeforeReblog", false);
toolbarMarquee=!prefs.getBoolean("disableMarquee", false);
save();
// migrate local preferences
AccountSessionManager asm=AccountSessionManager.getInstance();
// reset: Set<String> accountsWithContentTypesEnabled=prefs.getStringSet("accountsWithContentTypesEnabled", new HashSet<>());
Map<String, ContentType> accountsDefaultContentTypes=fromJson(prefs.getString("accountsDefaultContentTypes", null), accountsDefaultContentTypesType, new HashMap<>());
Map<String, ArrayList<TimelineDefinition>> pinnedTimelines=fromJson(prefs.getString("pinnedTimelines", null), pinnedTimelinesType, new HashMap<>());
Set<String> accountsWithLocalOnlySupport=prefs.getStringSet("accountsWithLocalOnlySupport", new HashSet<>());
Set<String> accountsInGlitchMode=prefs.getStringSet("accountsInGlitchMode", new HashSet<>());
Map<String, ArrayList<String>> recentLanguages=fromJson(prefs.getString("recentLanguages", null), recentLanguagesType, new HashMap<>());
for(AccountSession session : asm.getLoggedInAccounts()){
String accountID=session.getID();
AccountLocalPreferences localPrefs=session.getLocalPreferences();
localPrefs.revealCWs=prefs.getBoolean("alwaysExpandContentWarnings", false);
localPrefs.recentLanguages=recentLanguages.get(accountID);
// reset: localPrefs.contentTypesEnabled=accountsWithContentTypesEnabled.contains(accountID);
localPrefs.defaultContentType=accountsDefaultContentTypes.getOrDefault(accountID, ContentType.PLAIN);
localPrefs.showInteractionCounts=prefs.getBoolean("showInteractionCounts", false);
localPrefs.timelines=pinnedTimelines.getOrDefault(accountID, TimelineDefinition.getDefaultTimelines(accountID));
localPrefs.localOnlySupported=accountsWithLocalOnlySupport.contains(accountID);
localPrefs.glitchInstance=accountsInGlitchMode.contains(accountID);
localPrefs.publishButtonText=prefs.getString("publishButtonText", null);
localPrefs.keepOnlyLatestNotification=prefs.getBoolean("keepOnlyLatestNotification", false);
localPrefs.showReplies=prefs.getBoolean("showReplies", true);
localPrefs.showBoosts=prefs.getBoolean("showBoosts", true);
if(session.getInstance().map(Instance::isAkkoma).orElse(false)){
localPrefs.timelineReplyVisibility=prefs.getString("replyVisibility", null);
}
localPrefs.save();
}
prefs.edit().putInt("migrationLevel", 61).apply();
}
public enum ColorPreference{
MATERIAL3,
PINK,
PURPLE,
PINK,
GREEN,
BLUE,
BROWN,
RED,
YELLOW,
NORD
NORD,
WHITE;
public @StringRes int getName() {
return switch(this){
case MATERIAL3 -> R.string.sk_color_palette_material3;
case PINK -> R.string.sk_color_palette_pink;
case PURPLE -> R.string.sk_color_palette_purple;
case GREEN -> R.string.sk_color_palette_green;
case BLUE -> R.string.sk_color_palette_blue;
case BROWN -> R.string.sk_color_palette_brown;
case RED -> R.string.sk_color_palette_red;
case YELLOW -> R.string.sk_color_palette_yellow;
case NORD -> R.string.mo_color_palette_nord;
case WHITE -> R.string.mo_color_palette_black_and_white;
};
}
}
public enum ThemePreference{
@@ -176,5 +328,16 @@ public class GlobalUserPreferences{
LIGHT,
DARK
}
}
public enum AutoRevealMode {
NEVER,
THREADS,
DISCUSSIONS
}
public enum PrefixRepliesMode {
NEVER,
ALWAYS,
TO_OTHERS
}
}

View File

@@ -1,32 +1,50 @@
package org.joinmastodon.android;
import static org.joinmastodon.android.fragments.ComposeFragment.CAMERA_PERMISSION_CODE;
import static org.joinmastodon.android.fragments.ComposeFragment.CAMERA_PIC_REQUEST_CODE;
import android.Manifest;
import android.app.Activity;
import android.app.Fragment;
import android.app.assist.AssistContent;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.graphics.Bitmap;
import android.net.Uri;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.provider.MediaStore;
import android.util.Log;
import android.view.View;
import android.widget.FrameLayout;
import android.widget.Toast;
import org.joinmastodon.android.api.ObjectValidationException;
import org.joinmastodon.android.api.requests.search.GetSearchResults;
import org.joinmastodon.android.api.session.AccountSession;
import org.joinmastodon.android.api.session.AccountSessionManager;
import org.joinmastodon.android.events.TakePictureRequestEvent;
import org.joinmastodon.android.fragments.ComposeFragment;
import org.joinmastodon.android.fragments.HomeFragment;
import org.joinmastodon.android.fragments.ProfileFragment;
import org.joinmastodon.android.fragments.ThreadFragment;
import org.joinmastodon.android.fragments.onboarding.AccountActivationFragment;
import org.joinmastodon.android.fragments.onboarding.CustomWelcomeFragment;
import org.joinmastodon.android.fragments.onboarding.CustomWelcomeFragment;
import org.joinmastodon.android.model.Notification;
import org.joinmastodon.android.model.SearchResults;
import org.joinmastodon.android.ui.utils.UiUtils;
import org.joinmastodon.android.updater.GithubSelfUpdater;
import org.joinmastodon.android.utils.ProvidesAssistContent;
import org.parceler.Parcels;
import androidx.annotation.Nullable;
import me.grishka.appkit.FragmentStackActivity;
import me.grishka.appkit.Nav;
import me.grishka.appkit.api.Callback;
import me.grishka.appkit.api.ErrorResponse;
public class MainActivity extends FragmentStackActivity{
public class MainActivity extends FragmentStackActivity implements ProvidesAssistContent {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState){
UiUtils.setUserPreferredTheme(this);
@@ -36,10 +54,18 @@ public class MainActivity extends FragmentStackActivity{
if(AccountSessionManager.getInstance().getLoggedInAccounts().isEmpty()){
showFragmentClearingBackStack(new CustomWelcomeFragment());
}else{
AccountSessionManager.getInstance().maybeUpdateLocalInfo();
AccountSession session;
Bundle args=new Bundle();
Intent intent=getIntent();
if(intent.hasExtra("fromExternalShare")) {
AccountSessionManager.getInstance()
.setLastActiveAccountID(intent.getStringExtra("account"));
AccountSessionManager.getInstance().maybeUpdateLocalInfo(
AccountSessionManager.getInstance().getLastActiveAccount());
showFragmentForExternalShare(intent.getExtras());
return;
}
boolean fromNotification = intent.getBooleanExtra("fromNotification", false);
boolean hasNotification = intent.hasExtra("notification");
if(fromNotification){
@@ -53,6 +79,7 @@ public class MainActivity extends FragmentStackActivity{
}else{
session=AccountSessionManager.getInstance().getLastActiveAccount();
}
AccountSessionManager.getInstance().maybeUpdateLocalInfo(session);
args.putString("account", session.getID());
Fragment fragment=session.activated ? new HomeFragment() : new AccountActivationFragment();
fragment.setArguments(args);
@@ -61,6 +88,8 @@ public class MainActivity extends FragmentStackActivity{
showFragmentForNotification(notification, session.getID());
} else if (intent.getBooleanExtra("compose", false)){
showCompose();
} else if (Intent.ACTION_VIEW.equals(intent.getAction())){
handleURL(intent.getData(), null);
} else {
showFragmentClearingBackStack(fragment);
maybeRequestNotificationsPermission();
@@ -76,11 +105,12 @@ public class MainActivity extends FragmentStackActivity{
@Override
protected void onNewIntent(Intent intent){
super.onNewIntent(intent);
if(intent.getBooleanExtra("fromNotification", false)){
AccountSessionManager.getInstance().maybeUpdateLocalInfo();
if (intent.hasExtra("fromExternalShare")) showFragmentForExternalShare(intent.getExtras());
else if (intent.getBooleanExtra("fromNotification", false)) {
String accountID=intent.getStringExtra("accountID");
AccountSession accountSession;
try{
accountSession=AccountSessionManager.getInstance().getAccount(accountID);
AccountSessionManager.getInstance().getAccount(accountID);
}catch(IllegalStateException x){
return;
}
@@ -98,29 +128,76 @@ public class MainActivity extends FragmentStackActivity{
}
}else if(intent.getBooleanExtra("compose", false)){
showCompose();
}else if(Intent.ACTION_VIEW.equals(intent.getAction())){
handleURL(intent.getData(), null);
}/*else if(intent.hasExtra(PackageInstaller.EXTRA_STATUS) && GithubSelfUpdater.needSelfUpdating()){
GithubSelfUpdater.getInstance().handleIntentFromInstaller(intent, this);
}*/
}
public void handleURL(Uri uri, String accountID){
if(uri==null)
return;
if(!"https".equals(uri.getScheme()) && !"http".equals(uri.getScheme()))
return;
AccountSession session;
if(accountID==null)
session=AccountSessionManager.getInstance().getLastActiveAccount();
else
session=AccountSessionManager.get(accountID);
if(session==null || !session.activated)
return;
openSearchQuery(uri.toString(), session.getID(), R.string.opening_link, false);
}
public void openSearchQuery(String q, String accountID, int progressText, boolean fromSearch){
new GetSearchResults(q, null, true, null, 0, 0)
.setCallback(new Callback<>(){
@Override
public void onSuccess(SearchResults result){
Bundle args=new Bundle();
args.putString("account", accountID);
if(result.statuses!=null && !result.statuses.isEmpty()){
args.putParcelable("status", Parcels.wrap(result.statuses.get(0)));
Nav.go(MainActivity.this, ThreadFragment.class, args);
}else if(result.accounts!=null && !result.accounts.isEmpty()){
args.putParcelable("profileAccount", Parcels.wrap(result.accounts.get(0)));
Nav.go(MainActivity.this, ProfileFragment.class, args);
}else{
Toast.makeText(MainActivity.this, fromSearch ? R.string.no_search_results : R.string.link_not_supported, Toast.LENGTH_SHORT).show();
}
}
@Override
public void onError(ErrorResponse error){
error.showToast(MainActivity.this);
}
})
.wrapProgress(this, progressText, true)
.exec(accountID);
}
private void showFragmentForNotification(Notification notification, String accountID){
Fragment fragment;
Bundle args=new Bundle();
args.putString("account", accountID);
args.putBoolean("_can_go_back", true);
try{
notification.postprocess();
}catch(ObjectValidationException x){
Log.w("MainActivity", x);
return;
}
if(notification.status!=null){
fragment=new ThreadFragment();
args.putParcelable("status", Parcels.wrap(notification.status));
}else{
fragment=new ProfileFragment();
args.putParcelable("profileAccount", Parcels.wrap(notification.account));
}
Bundle args = new Bundle();
args.putBoolean("noTransition", true);
UiUtils.showFragmentForNotification(this, notification, accountID, args);
}
private void showFragmentForExternalShare(Bundle args) {
String className = args.getString("fromExternalShare");
Fragment fragment = switch (className) {
case "ThreadFragment" -> new ThreadFragment();
case "ProfileFragment" -> new ProfileFragment();
default -> null;
};
if (fragment == null) return;
args.putBoolean("_can_go_back", true);
fragment.setArguments(args);
showFragment(fragment);
}
@@ -154,18 +231,58 @@ public class MainActivity extends FragmentStackActivity{
(fragmentContainers.get(fragmentContainers.size() - 1)).getId()
);
Bundle currentArgs = currentFragment.getArguments();
if (this.fragmentContainers.size() == 1
&& currentArgs != null
&& currentArgs.getBoolean("_can_go_back", false)
&& currentArgs.containsKey("account")) {
if (fragmentContainers.size() != 1
|| currentArgs == null
|| !currentArgs.getBoolean("_can_go_back", false)) {
super.onBackPressed();
return;
}
if (currentArgs.getBoolean("_finish_on_back", false)) {
finish();
} else if (currentArgs.containsKey("account")) {
Bundle args = new Bundle();
args.putString("account", currentArgs.getString("account"));
args.putString("tab", "notifications");
if (getIntent().getBooleanExtra("fromNotification", false)) {
args.putString("tab", "notifications");
}
Fragment fragment=new HomeFragment();
fragment.setArguments(args);
showFragmentClearingBackStack(fragment);
} else {
super.onBackPressed();
}
}
// @Override
// public void onActivityResult(int requestCode, int resultCode, Intent data){
// if(requestCode==CAMERA_PIC_REQUEST_CODE && resultCode== Activity.RESULT_OK){
// E.post(new TakePictureRequestEvent());
// }
// }
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == CAMERA_PERMISSION_CODE && (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED)) {
E.post(new TakePictureRequestEvent());
} else {
Toast.makeText(this, R.string.permission_required, Toast.LENGTH_SHORT);
}
}
public Fragment getCurrentFragment() {
for (int i = fragmentContainers.size() - 1; i >= 0; i--) {
FrameLayout fl = fragmentContainers.get(i);
if (fl.getVisibility() == View.VISIBLE) {
return getFragmentManager().findFragmentById(fl.getId());
}
}
return null;
}
@Override
public void onProvideAssistContent(AssistContent assistContent) {
super.onProvideAssistContent(assistContent);
Fragment fragment = getCurrentFragment();
if (fragment != null) callFragmentToProvideAssistContent(fragment, assistContent);
}
}

View File

@@ -3,6 +3,7 @@ package org.joinmastodon.android;
import android.annotation.SuppressLint;
import android.app.Application;
import android.content.Context;
import android.webkit.WebView;
import org.joinmastodon.android.api.PushSubscriptionManager;
@@ -28,5 +29,8 @@ public class MastodonApp extends Application{
PushSubscriptionManager.tryRegisterFCM();
GlobalUserPreferences.load();
if(BuildConfig.DEBUG){
WebView.setWebContentsDebuggingEnabled(true);
}
}
}

View File

@@ -61,6 +61,9 @@ public class OAuthActivity extends Activity{
@Override
public void onSuccess(Token token){
new GetOwnAccount()
// in case the instance (looking at pixelfed) wants to redirect to a
// website, we need to pass a context so we can launch a browser
.setContext(OAuthActivity.this)
.setCallback(new Callback<>(){
@Override
public void onSuccess(Account account){

View File

@@ -0,0 +1,49 @@
package org.joinmastodon.android;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import org.joinmastodon.android.api.requests.oauth.RevokeOauthToken;
import org.joinmastodon.android.api.session.AccountSession;
import org.joinmastodon.android.api.session.AccountSessionManager;
import me.grishka.appkit.api.Callback;
import me.grishka.appkit.api.ErrorResponse;
public class PanicResponderActivity extends Activity {
public static final String PANIC_TRIGGER_ACTION = "info.guardianproject.panic.action.TRIGGER";
@Override
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
final Intent intent = getIntent();
if (intent != null && PANIC_TRIGGER_ACTION.equals(intent.getAction())) {
AccountSessionManager.getInstance().getLoggedInAccounts().forEach(accountSession -> logOut(accountSession.getID()));
ExitActivity.exit(this);
}
finishAndRemoveTask();
}
private void logOut(String accountID){
AccountSession session=AccountSessionManager.getInstance().getAccount(accountID);
new RevokeOauthToken(session.app.clientId, session.app.clientSecret, session.token.accessToken)
.setCallback(new Callback<>(){
@Override
public void onSuccess(Object result){
onLoggedOut(accountID);
}
@Override
public void onError(ErrorResponse error){
onLoggedOut(accountID);
}
})
.exec(accountID);
}
private void onLoggedOut(String accountID){
AccountSessionManager.getInstance().removeAccount(accountID);
}
}

View File

@@ -1,30 +1,54 @@
package org.joinmastodon.android;
import static org.joinmastodon.android.GlobalUserPreferences.PrefixRepliesMode.ALWAYS;
import static org.joinmastodon.android.GlobalUserPreferences.PrefixRepliesMode.TO_OTHERS;
import static org.joinmastodon.android.GlobalUserPreferences.getPrefs;
import android.app.Notification;
import android.app.NotificationChannel;
import android.app.NotificationChannelGroup;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.app.RemoteInput;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.graphics.drawable.Drawable;
import android.opengl.Visibility;
import android.os.Build;
import android.os.Bundle;
import android.text.SpannableStringBuilder;
import android.text.TextUtils;
import android.util.Log;
import org.joinmastodon.android.api.MastodonAPIController;
import org.joinmastodon.android.api.requests.accounts.SetAccountFollowed;
import org.joinmastodon.android.api.requests.notifications.GetNotificationByID;
import org.joinmastodon.android.api.requests.statuses.CreateStatus;
import org.joinmastodon.android.api.requests.statuses.SetStatusBookmarked;
import org.joinmastodon.android.api.requests.statuses.SetStatusFavorited;
import org.joinmastodon.android.api.requests.statuses.SetStatusReblogged;
import org.joinmastodon.android.api.session.AccountSession;
import org.joinmastodon.android.api.session.AccountSessionManager;
import org.joinmastodon.android.model.Account;
import org.joinmastodon.android.model.Mention;
import org.joinmastodon.android.model.NotificationAction;
import org.joinmastodon.android.model.Preferences;
import org.joinmastodon.android.model.PushNotification;
import org.joinmastodon.android.model.Status;
import org.joinmastodon.android.model.StatusPrivacy;
import org.joinmastodon.android.model.StatusPrivacy;
import org.joinmastodon.android.ui.text.HtmlParser;
import org.joinmastodon.android.ui.utils.UiUtils;
import org.parceler.Parcels;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Random;
import java.util.UUID;
import java.util.stream.Collectors;
import me.grishka.appkit.api.Callback;
@@ -37,11 +61,15 @@ public class PushNotificationReceiver extends BroadcastReceiver{
private static final String TAG="PushNotificationReceive";
public static final int NOTIFICATION_ID=178;
private static final String ACTION_KEY_TEXT_REPLY = "ACTION_KEY_TEXT_REPLY";
private static final int SUMMARY_ID = 791;
private static int notificationId = 0;
private static final Map<String, Integer> notificationIdsForAccounts = new HashMap<>();
@Override
public void onReceive(Context context, Intent intent){
UiUtils.setUserPreferredTheme(context);
if(BuildConfig.DEBUG){
Log.e(TAG, "received: "+intent);
Bundle extras=intent.getExtras();
@@ -69,6 +97,10 @@ public class PushNotificationReceiver extends BroadcastReceiver{
Log.w(TAG, "onReceive: account for id '"+pushAccountID+"' not found");
return;
}
if(account.getLocalPreferences().getNotificationsPauseEndTime()>System.currentTimeMillis()){
Log.i(TAG, "onReceive: dropping notification because user has paused notifications for this account");
return;
}
String accountID=account.getID();
PushNotification pn=AccountSessionManager.getInstance().getAccount(accountID).getPushSubscriptionManager().decryptNotification(k, p, s);
new GetNotificationByID(pn.notificationId+"")
@@ -92,11 +124,47 @@ public class PushNotificationReceiver extends BroadcastReceiver{
Log.w(TAG, "onReceive: invalid push notification format");
}
}
if(intent.getBooleanExtra("fromNotificationAction", false)){
String accountID=intent.getStringExtra("accountID");
int notificationId=intent.getIntExtra("notificationId", -1);
if (notificationId >= 0){
NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.cancel(accountID, notificationId);
}
if(intent.hasExtra("notification")){
org.joinmastodon.android.model.Notification notification=Parcels.unwrap(intent.getParcelableExtra("notification"));
String statusID=notification.status.id;
if (statusID != null) {
AccountSessionManager accountSessionManager = AccountSessionManager.getInstance();
Preferences preferences = accountSessionManager.getAccount(accountID).preferences;
switch (NotificationAction.values()[intent.getIntExtra("notificationAction", 0)]) {
case FAVORITE -> new SetStatusFavorited(statusID, true).exec(accountID);
case BOOKMARK -> new SetStatusBookmarked(statusID, true).exec(accountID);
case BOOST -> new SetStatusReblogged(notification.status.id, true, preferences.postingDefaultVisibility).exec(accountID);
case UNBOOST -> new SetStatusReblogged(notification.status.id, false, preferences.postingDefaultVisibility).exec(accountID);
case REPLY -> handleReplyAction(context, accountID, intent, notification, notificationId, preferences);
case FOLLOW_BACK -> new SetAccountFollowed(notification.account.id, true, true, false).exec(accountID);
default -> Log.w(TAG, "onReceive: Failed to get NotificationAction");
}
}
}else{
Log.e(TAG, "onReceive: Failed to load notification");
}
}
}
public void notifyUnifiedPush(Context context, String accountID, org.joinmastodon.android.model.Notification notification) {
// push notifications are only created from the official push notification, so we create a fake from by transforming the notification
PushNotificationReceiver.this.notify(context, PushNotification.fromNotification(context, notification), accountID, notification);
}
private void notify(Context context, PushNotification pn, String accountID, org.joinmastodon.android.model.Notification notification){
NotificationManager nm=context.getSystemService(NotificationManager.class);
Account self=AccountSessionManager.getInstance().getAccount(accountID).self;
AccountSession session=AccountSessionManager.get(accountID);
Account self=session.self;
String accountName="@"+self.username+"@"+AccountSessionManager.getInstance().getAccount(accountID).domain;
Notification.Builder builder;
if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.O){
@@ -114,6 +182,8 @@ public class PushNotificationReceiver extends BroadcastReceiver{
List<NotificationChannel> channels=Arrays.stream(PushNotification.Type.values())
.map(type->{
NotificationChannel channel=new NotificationChannel(accountID+"_"+type, context.getString(type.localizedName), NotificationManager.IMPORTANCE_DEFAULT);
channel.setLightColor(context.getColor(R.color.primary_700));
channel.enableLights(true);
channel.setGroup(accountID);
return channel;
})
@@ -143,6 +213,7 @@ public class PushNotificationReceiver extends BroadcastReceiver{
.setShowWhen(true)
.setCategory(Notification.CATEGORY_SOCIAL)
.setAutoCancel(true)
.setLights(context.getColor(R.color.primary_700), 500, 1000)
.setColor(context.getColor(R.color.shortcut_icon_background));
if (!GlobalUserPreferences.uniformNotificationIcon) {
@@ -165,6 +236,150 @@ public class PushNotificationReceiver extends BroadcastReceiver{
if(AccountSessionManager.getInstance().getLoggedInAccounts().size()>1){
builder.setSubText(accountName);
}
nm.notify(accountID, GlobalUserPreferences.keepOnlyLatestNotification ? NOTIFICATION_ID : notificationId++, builder.build());
int id;
if(session.getLocalPreferences().keepOnlyLatestNotification){
if(notificationIdsForAccounts.containsKey(accountID)){
// we overwrite the existing notification
id=notificationIdsForAccounts.get(accountID);
}else{
// there's no existing notification, so we increment
id=notificationId++;
// and store the notification id for this account
notificationIdsForAccounts.put(accountID, id);
}
}else{
// we don't want to overwrite anything, therefore incrementing
id=notificationId++;
}
if (notification != null){
switch (pn.notificationType){
case MENTION, STATUS -> {
if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.N){
builder.addAction(buildReplyAction(context, id, accountID, notification));
}
builder.addAction(buildNotificationAction(context, id, accountID, notification, context.getString(R.string.button_favorite), NotificationAction.FAVORITE));
if(GlobalUserPreferences.swapBookmarkWithBoostAction){
if(notification.status.visibility != StatusPrivacy.DIRECT) {
builder.addAction(buildNotificationAction(context, id, accountID, notification, context.getString(R.string.button_reblog), NotificationAction.BOOST));
}else{
// This is just so there is a bookmark action if you cannot reblog the toot
builder.addAction(buildNotificationAction(context, id, accountID, notification, context.getString(R.string.add_bookmark), NotificationAction.BOOKMARK));
}
} else {
builder.addAction(buildNotificationAction(context, id, accountID, notification, context.getString(R.string.add_bookmark), NotificationAction.BOOKMARK));
}
}
case UPDATE -> {
if(notification.status.reblogged)
builder.addAction(buildNotificationAction(context, id, accountID, notification, context.getString(R.string.sk_undo_reblog), NotificationAction.UNBOOST));
}
case FOLLOW -> {
builder.addAction(buildNotificationAction(context, id, accountID, notification, context.getString(R.string.follow_back), NotificationAction.FOLLOW_BACK));
}
}
}
nm.notify(accountID, id, builder.build());
}
private Notification.Action buildNotificationAction(Context context, int notificationId, String accountID, org.joinmastodon.android.model.Notification notification, String title, NotificationAction action){
Intent notificationIntent=new Intent(context, PushNotificationReceiver.class);
notificationIntent.putExtra("notificationId", notificationId);
notificationIntent.putExtra("fromNotificationAction", true);
notificationIntent.putExtra("accountID", accountID);
notificationIntent.putExtra("notificationAction", action.ordinal());
notificationIntent.putExtra("notification", Parcels.wrap(notification));
PendingIntent actionPendingIntent = PendingIntent.getBroadcast(context, new Random().nextInt(), notificationIntent, PendingIntent.FLAG_IMMUTABLE | PendingIntent.FLAG_ONE_SHOT);
return new Notification.Action.Builder(null, title, actionPendingIntent).build();
}
private Notification.Action buildReplyAction(Context context, int notificationId, String accountID, org.joinmastodon.android.model.Notification notification){
String replyLabel = context.getResources().getString(R.string.button_reply);
RemoteInput remoteInput = new RemoteInput.Builder(ACTION_KEY_TEXT_REPLY)
.setLabel(replyLabel)
.build();
Intent notificationIntent=new Intent(context, PushNotificationReceiver.class);
notificationIntent.putExtra("notificationId", notificationId);
notificationIntent.putExtra("fromNotificationAction", true);
notificationIntent.putExtra("accountID", accountID);
notificationIntent.putExtra("notificationAction", NotificationAction.REPLY.ordinal());
notificationIntent.putExtra("notification", Parcels.wrap(notification));
int flags = Build.VERSION.SDK_INT >= Build.VERSION_CODES.S ? PendingIntent.FLAG_MUTABLE | PendingIntent.FLAG_UPDATE_CURRENT : PendingIntent.FLAG_UPDATE_CURRENT;
PendingIntent replyPendingIntent = PendingIntent.getBroadcast(context, new Random().nextInt(), notificationIntent,flags);
return new Notification.Action.Builder(null, replyLabel, replyPendingIntent).addRemoteInput(remoteInput).build();
}
private void handleReplyAction(Context context, String accountID, Intent intent, org.joinmastodon.android.model.Notification notification, int notificationId, Preferences preferences) {
Bundle remoteInput = RemoteInput.getResultsFromIntent(intent);
if (remoteInput == null) {
Log.e(TAG, "handleReplyAction: Could not get reply input");
return;
}
CharSequence input = remoteInput.getCharSequence(ACTION_KEY_TEXT_REPLY);
// copied from ComposeFragment - TODO: generalize?
ArrayList<String> mentions=new ArrayList<>();
Status status = notification.status;
String ownID=AccountSessionManager.getInstance().getAccount(accountID).self.id;
if(!status.account.id.equals(ownID))
mentions.add('@'+status.account.acct);
for(Mention mention:status.mentions){
if(mention.id.equals(ownID))
continue;
String m='@'+mention.acct;
if(!mentions.contains(m))
mentions.add(m);
}
String initialText=mentions.isEmpty() ? "" : TextUtils.join(" ", mentions)+" ";
CreateStatus.Request req=new CreateStatus.Request();
req.status = initialText + input.toString();
req.language = notification.status.language;
req.visibility = (notification.status.visibility == StatusPrivacy.PUBLIC && GlobalUserPreferences.defaultToUnlistedReplies ? StatusPrivacy.UNLISTED : notification.status.visibility);
req.inReplyToId = notification.status.id;
if (notification.status.hasSpoiler() &&
(GlobalUserPreferences.prefixReplies == ALWAYS
|| (GlobalUserPreferences.prefixReplies == TO_OTHERS && !ownID.equals(notification.status.account.id)))
&& !notification.status.spoilerText.startsWith("re: ")) {
req.spoilerText = "re: " + notification.status.spoilerText;
}
new CreateStatus(req, UUID.randomUUID().toString()).setCallback(new Callback<>() {
@Override
public void onSuccess(Status status) {
NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
Notification.Builder builder = android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O ?
new Notification.Builder(context, accountID+"_"+notification.type) :
new Notification.Builder(context)
.setPriority(Notification.PRIORITY_DEFAULT)
.setDefaults(Notification.DEFAULT_SOUND | Notification.DEFAULT_VIBRATE);
notification.status = status;
Intent contentIntent=new Intent(context, MainActivity.class);
contentIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
contentIntent.putExtra("fromNotification", true);
contentIntent.putExtra("accountID", accountID);
contentIntent.putExtra("notification", Parcels.wrap(notification));
Notification repliedNotification = builder.setSmallIcon(R.drawable.ic_ntf_logo)
.setContentTitle(context.getString(R.string.sk_notification_action_replied, notification.status.account.displayName))
.setContentText(status.getStrippedText())
.setCategory(Notification.CATEGORY_SOCIAL)
.setContentIntent(PendingIntent.getActivity(context, notificationId, contentIntent, PendingIntent.FLAG_IMMUTABLE | PendingIntent.FLAG_UPDATE_CURRENT))
.build();
notificationManager.notify(accountID, notificationId, repliedNotification);
}
@Override
public void onError(ErrorResponse errorResponse) {
}
}).exec(accountID);
}
}

View File

@@ -0,0 +1,84 @@
package org.joinmastodon.android;
import android.content.Context;
import android.util.Log;
import org.jetbrains.annotations.NotNull;
import org.joinmastodon.android.api.MastodonAPIController;
import org.joinmastodon.android.api.session.AccountSession;
import org.joinmastodon.android.api.session.AccountSessionManager;
import org.joinmastodon.android.model.Notification;
import org.joinmastodon.android.model.PaginatedResponse;
import org.unifiedpush.android.connector.MessagingReceiver;
import java.util.List;
import me.grishka.appkit.api.Callback;
import me.grishka.appkit.api.ErrorResponse;
public class UnifiedPushNotificationReceiver extends MessagingReceiver{
private static final String TAG="UnifiedPushNotificationReceiver";
public UnifiedPushNotificationReceiver() {
super();
}
@Override
public void onNewEndpoint(@NotNull Context context, @NotNull String endpoint, @NotNull String instance) {
// Called when a new endpoint be used for sending push messages
Log.d(TAG, "onNewEndpoint: New Endpoint " + endpoint + " for "+ instance);
AccountSession account = AccountSessionManager.getInstance().tryGetAccount(instance);
if (account != null)
account.getPushSubscriptionManager().registerAccountForPush(null, endpoint);
}
@Override
public void onRegistrationFailed(@NotNull Context context, @NotNull String instance) {
// called when the registration is not possible, eg. no network
Log.d(TAG, "onRegistrationFailed: " + instance);
//re-register for gcm
AccountSession account = AccountSessionManager.getInstance().tryGetAccount(instance);
if (account != null)
account.getPushSubscriptionManager().registerAccountForPush(null);
}
@Override
public void onUnregistered(@NotNull Context context, @NotNull String instance) {
// called when this application is unregistered from receiving push messages
Log.d(TAG, "onUnregistered: " + instance);
//re-register for gcm
AccountSession account = AccountSessionManager.getInstance().tryGetAccount(instance);
if (account != null)
account.getPushSubscriptionManager().registerAccountForPush(null);
}
@Override
public void onMessage(@NotNull Context context, @NotNull byte[] message, @NotNull String instance) {
// Called when a new message is received. The message contains the full POST body of the push message
AccountSession account = AccountSessionManager.getInstance().tryGetAccount(instance);
if (account == null)
return;
//this is stupid
// Mastodon stores the info to decrypt the message in the HTTP headers, which are not accessible in UnifiedPush,
// thus it is not possible to decrypt them. SO we need to re-request them from the server and transform them later on
// The official uses fcm and moves the headers to extra data, see
// https://github.com/mastodon/webpush-fcm-relay/blob/cac95b28d5364b0204f629283141ac3fb749e0c5/webpush-fcm-relay.go#L116
// https://github.com/tuskyapp/Tusky/pull/2303#issue-1112080540
account.getCacheController().getNotifications(null, 1, false, false, true, new Callback<>(){
@Override
public void onSuccess(PaginatedResponse<List<Notification>> result){
result.items
.stream()
.findFirst()
.ifPresent(value->MastodonAPIController.runInBackground(()->new PushNotificationReceiver().notifyUnifiedPush(context, instance, value)));
}
@Override
public void onError(ErrorResponse error){
//professional error handling
}
});
}
}

View File

@@ -11,7 +11,7 @@ public class ApiUtils{
//no instance
}
public static <E extends Enum<E>> List<String> enumSetToStrings(EnumSet<E> e, Class<E> cls){
public static <E extends Enum<E>> List<String> enumSetToStrings(EnumSet<E> e, Class<E> cls){
return e.stream().map(ev->{
try{
SerializedName annotation=cls.getField(ev.name()).getAnnotation(SerializedName.class);

View File

@@ -15,19 +15,18 @@ 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.FilterContext;
import org.joinmastodon.android.model.Instance;
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;
import java.util.EnumSet;
import java.util.List;
import java.util.function.Consumer;
import java.util.stream.Collectors;
import me.grishka.appkit.api.Callback;
import me.grishka.appkit.api.ErrorResponse;
@@ -35,13 +34,15 @@ import me.grishka.appkit.utils.WorkerThread;
public class CacheController{
private static final String TAG="CacheController";
private static final int DB_VERSION=3;
private static final int DB_VERSION=4;
private static final WorkerThread databaseThread=new WorkerThread("databaseThread");
private static final Handler uiHandler=new Handler(Looper.getMainLooper());
private final String accountID;
private DatabaseHelper db;
private final Runnable databaseCloseRunnable=this::closeDatabase;
private boolean loadingNotifications;
private final ArrayList<Callback<PaginatedResponse<List<Notification>>>> pendingNotificationsCallbacks=new ArrayList<>();
private static final int POST_FLAG_GAP_AFTER=1;
@@ -57,28 +58,23 @@ public class CacheController{
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", "flags"}, 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, "`time` DESC", count+"")){
if(cursor.getCount()==count){
ArrayList<Status> result=new ArrayList<>();
cursor.moveToFirst();
String newMaxID;
outer:
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))
continue outer;
}
result.add(status);
}while(cursor.moveToNext());
String _newMaxID=newMaxID;
AccountSessionManager.get(accountID).filterStatuses(result, FilterContext.HOME);
uiHandler.post(()->callback.onSuccess(new CacheablePaginatedResponse<>(result, _newMaxID, true)));
return;
}
@@ -86,11 +82,13 @@ public class CacheController{
Log.w(TAG, "getHomeTimeline: corrupted status object in database", x);
}
}
new GetHomeTimeline(maxID, null, count, null)
new GetHomeTimeline(maxID, null, count, null, AccountSessionManager.get(accountID).getLocalPreferences().timelineReplyVisibility)
.setCallback(new Callback<>(){
@Override
public void onSuccess(List<Status> result){
callback.onSuccess(new CacheablePaginatedResponse<>(result.stream().filter(new StatusFilterPredicate(filters)).collect(Collectors.toList()), result.isEmpty() ? null : result.get(result.size()-1).id, false));
ArrayList<Status> filtered=new ArrayList<>(result);
AccountSessionManager.get(accountID).filterStatuses(filtered, FilterContext.HOME);
callback.onSuccess(new CacheablePaginatedResponse<>(filtered, result.isEmpty() ? null : result.get(result.size()-1).id, false));
putHomeTimeline(result, maxID==null);
}
@@ -113,7 +111,7 @@ public class CacheController{
runOnDbThread((db)->{
if(clear)
db.delete("home_timeline", null, null);
ContentValues values=new ContentValues(3);
ContentValues values=new ContentValues(4);
for(Status s:posts){
values.put("id", s.id);
values.put("json", MastodonAPIController.gson.toJson(s));
@@ -121,38 +119,61 @@ public class CacheController{
if(s.hasGapAfter)
flags|=POST_FLAG_GAP_AFTER;
values.put("flags", flags);
values.put("time", s.createdAt.getEpochSecond());
db.insertWithOnConflict("home_timeline", null, values, SQLiteDatabase.CONFLICT_REPLACE);
}
});
}
public void updateStatus(Status status) {
runOnDbThread((db)->{
ContentValues statusUpdate=new ContentValues(1);
statusUpdate.put("json", MastodonAPIController.gson.toJson(status));
db.update("home_timeline", statusUpdate, "id = ?", new String[] { status.id });
});
}
public void updateNotification(Notification notification) {
runOnDbThread((db)->{
ContentValues notificationUpdate=new ContentValues(1);
notificationUpdate.put("json", MastodonAPIController.gson.toJson(notification));
String[] notificationArgs = new String[] { notification.id };
db.update("notifications_all", notificationUpdate, "id = ?", notificationArgs);
db.update("notifications_mentions", notificationUpdate, "id = ?", notificationArgs);
db.update("notifications_posts", notificationUpdate, "id = ?", notificationArgs);
ContentValues statusUpdate=new ContentValues(1);
statusUpdate.put("json", MastodonAPIController.gson.toJson(notification.status));
db.update("home_timeline", statusUpdate, "id = ?", new String[] { notification.status.id });
});
}
public void getNotifications(String maxID, int count, boolean onlyMentions, boolean onlyPosts, boolean forceReload, Callback<PaginatedResponse<List<Notification>>> callback){
cancelDelayedClose();
databaseThread.postRunnable(()->{
try{
List<Filter> filters=AccountSessionManager.getInstance().getAccount(accountID).wordFilters.stream().filter(f->f.context.contains(Filter.FilterContext.NOTIFICATIONS)).collect(Collectors.toList());
if(!onlyMentions && !onlyPosts && loadingNotifications){
synchronized(pendingNotificationsCallbacks){
pendingNotificationsCallbacks.add(callback);
}
return;
}
if(!forceReload){
SQLiteDatabase db=getOrOpenDatabase();
String table=onlyPosts ? "notifications_posts" : onlyMentions ? "notifications_mentions" : "notifications_all";
try(Cursor cursor=db.query(table, new String[]{"json"}, maxID==null ? null : "`id`<?", maxID==null ? null : new String[]{maxID}, null, null, "`id` DESC", count+"")){
try(Cursor cursor=db.query(table, new String[]{"json"}, maxID==null ? null : "`id`<?", maxID==null ? null : new String[]{maxID}, null, null, "`time` DESC", count+"")){
if(cursor.getCount()==count){
ArrayList<Notification> result=new ArrayList<>();
cursor.moveToFirst();
String newMaxID;
outer:
do{
Notification ntf=MastodonAPIController.gson.fromJson(cursor.getString(0), Notification.class);
ntf.postprocess();
newMaxID=ntf.id;
if(ntf.status!=null){
for(Filter filter:filters){
if(filter.matches(ntf.status))
continue outer;
}
}
result.add(ntf);
}while(cursor.moveToNext());
String _newMaxID=newMaxID;
AccountSessionManager.get(accountID).filterStatusContainingObjects(result, n->n.status, FilterContext.NOTIFICATIONS);
uiHandler.post(()->callback.onSuccess(new PaginatedResponse<>(result, _newMaxID)));
return;
}
@@ -160,26 +181,41 @@ public class CacheController{
Log.w(TAG, "getNotifications: corrupted notification object in database", x);
}
}
new GetNotifications(maxID, count, onlyPosts ? EnumSet.of(Notification.Type.STATUS) : onlyMentions ? EnumSet.of(Notification.Type.MENTION): EnumSet.allOf(Notification.Type.class))
if(!onlyMentions && !onlyPosts)
loadingNotifications=true;
boolean isAkkoma = AccountSessionManager.get(accountID).getInstance().map(Instance::isAkkoma).orElse(false);
new GetNotifications(maxID, count, onlyPosts ? EnumSet.of(Notification.Type.STATUS) : onlyMentions ? EnumSet.of(Notification.Type.MENTION): EnumSet.allOf(Notification.Type.class), isAkkoma)
.setCallback(new Callback<>(){
@Override
public void onSuccess(List<Notification> result){
callback.onSuccess(new PaginatedResponse<>(result.stream().filter(ntf->{
if(ntf.status!=null){
for(Filter filter:filters){
if(filter.matches(ntf.status)){
return false;
}
}
}
return true;
}).collect(Collectors.toList()), result.isEmpty() ? null : result.get(result.size()-1).id));
ArrayList<Notification> filtered=new ArrayList<>(result);
AccountSessionManager.get(accountID).filterStatusContainingObjects(filtered, n->n.status, FilterContext.NOTIFICATIONS);
PaginatedResponse<List<Notification>> res=new PaginatedResponse<>(filtered, result.isEmpty() ? null : result.get(result.size()-1).id);
callback.onSuccess(res);
putNotifications(result, onlyMentions, onlyPosts, maxID==null);
if(!onlyMentions){
loadingNotifications=false;
synchronized(pendingNotificationsCallbacks){
for(Callback<PaginatedResponse<List<Notification>>> cb:pendingNotificationsCallbacks){
cb.onSuccess(res);
}
pendingNotificationsCallbacks.clear();
}
}
}
@Override
public void onError(ErrorResponse error){
callback.onError(error);
if(!onlyMentions){
loadingNotifications=false;
synchronized(pendingNotificationsCallbacks){
for(Callback<PaginatedResponse<List<Notification>>> cb:pendingNotificationsCallbacks){
cb.onError(error);
}
pendingNotificationsCallbacks.clear();
}
}
}
})
.exec(accountID);
@@ -197,7 +233,7 @@ public class CacheController{
String table=onlyPosts ? "notifications_posts" : onlyMentions ? "notifications_mentions" : "notifications_all";
if(clear)
db.delete(table, null, null);
ContentValues values=new ContentValues(3);
ContentValues values=new ContentValues(4);
for(Notification n:notifications){
if(n.type==null){
continue;
@@ -205,6 +241,7 @@ public class CacheController{
values.put("id", n.id);
values.put("json", MastodonAPIController.gson.toJson(n));
values.put("type", n.type.ordinal());
values.put("time", n.createdAt.getEpochSecond());
db.insertWithOnConflict(table, null, values, SQLiteDatabase.CONFLICT_REPLACE);
}
});
@@ -301,21 +338,24 @@ public class CacheController{
CREATE TABLE `home_timeline` (
`id` VARCHAR(25) NOT NULL PRIMARY KEY,
`json` TEXT NOT NULL,
`flags` INTEGER NOT NULL DEFAULT 0
`flags` INTEGER NOT NULL DEFAULT 0,
`time` INTEGER NOT NULL
)""");
db.execSQL("""
CREATE TABLE `notifications_all` (
`id` VARCHAR(25) NOT NULL PRIMARY KEY,
`json` TEXT NOT NULL,
`flags` INTEGER NOT NULL DEFAULT 0,
`type` INTEGER NOT NULL
`type` INTEGER NOT NULL,
`time` INTEGER NOT NULL
)""");
db.execSQL("""
CREATE TABLE `notifications_mentions` (
`id` VARCHAR(25) NOT NULL PRIMARY KEY,
`json` TEXT NOT NULL,
`flags` INTEGER NOT NULL DEFAULT 0,
`type` INTEGER NOT NULL
`type` INTEGER NOT NULL,
`time` INTEGER NOT NULL
)""");
createRecentSearchesTable(db);
createPostsNotificationsTable(db);
@@ -323,12 +363,16 @@ public class CacheController{
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){
if(oldVersion==1){
if(oldVersion<2){
createRecentSearchesTable(db);
}
if(oldVersion==2){
if(oldVersion<3){
// MEGALODON
createPostsNotificationsTable(db);
}
if(oldVersion<4){
addTimeColumns(db);
}
}
private void createRecentSearchesTable(SQLiteDatabase db){
@@ -346,9 +390,21 @@ public class CacheController{
`id` VARCHAR(25) NOT NULL PRIMARY KEY,
`json` TEXT NOT NULL,
`flags` INTEGER NOT NULL DEFAULT 0,
`type` INTEGER NOT NULL
`type` INTEGER NOT NULL,
`time` INTEGER NOT NULL
)""");
}
private void addTimeColumns(SQLiteDatabase db){
db.execSQL("DELETE FROM `home_timeline`");
db.execSQL("DELETE FROM `notifications_all`");
db.execSQL("DELETE FROM `notifications_mentions`");
db.execSQL("DELETE FROM `notifications_posts`");
db.execSQL("ALTER TABLE `home_timeline` ADD `time` INTEGER NOT NULL DEFAULT 0");
db.execSQL("ALTER TABLE `notifications_all` ADD `time` INTEGER NOT NULL DEFAULT 0");
db.execSQL("ALTER TABLE `notifications_mentions` ADD `time` INTEGER NOT NULL DEFAULT 0");
db.execSQL("ALTER TABLE `notifications_posts` ADD `time` INTEGER NOT NULL DEFAULT 0");
}
}
@FunctionalInterface

View File

@@ -16,6 +16,8 @@ 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.Status;
import org.joinmastodon.android.ui.utils.UiUtils;
import java.io.BufferedReader;
import java.io.IOException;
@@ -27,6 +29,7 @@ import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeUnit;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
@@ -40,14 +43,19 @@ import okhttp3.ResponseBody;
public class MastodonAPIController{
private static final String TAG="MastodonAPIController";
public static final Gson gson=new GsonBuilder()
public static final Gson gsonWithoutDeserializer = new GsonBuilder()
.disableHtmlEscaping()
.setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES)
.registerTypeAdapter(Instant.class, new IsoInstantTypeAdapter())
.registerTypeAdapter(LocalDate.class, new IsoLocalDateTypeAdapter())
.create();
public static final Gson gson = gsonWithoutDeserializer.newBuilder()
.registerTypeAdapter(Status.class, new Status.StatusDeserializer())
.create();
private static WorkerThread thread=new WorkerThread("MastodonAPIController");
private static OkHttpClient httpClient=new OkHttpClient.Builder().build();
private static OkHttpClient httpClient=new OkHttpClient.Builder()
.readTimeout(5, TimeUnit.MINUTES)
.build();
private AccountSession session;
private static List<String> badDomains = new ArrayList<>();
@@ -56,7 +64,7 @@ public class MastodonAPIController{
thread.start();
try {
final BufferedReader reader = new BufferedReader(new InputStreamReader(
MastodonApp.context.getAssets().open("blocks.tsv")
MastodonApp.context.getAssets().open("blocks.txt")
));
String line;
while ((line = reader.readLine()) != null) {
@@ -81,13 +89,13 @@ public class MastodonAPIController{
final boolean isBad = host == null || badDomains.stream().anyMatch(h -> h.equalsIgnoreCase(host) || host.toLowerCase().endsWith("." + h));
thread.postRunnable(()->{
try{
if (isBad) throw new IllegalArgumentException();
// if (isBad) throw new IllegalArgumentException();
if(req.canceled)
return;
Request.Builder builder=new Request.Builder()
.url(req.getURL().toString())
.method(req.getMethod(), req.getRequestBody())
.header("User-Agent", "MastodonAndroid/"+BuildConfig.VERSION_NAME);
.header("User-Agent", "MoshidonAndroid/"+BuildConfig.VERSION_NAME);
String token=null;
if(session!=null)
@@ -109,6 +117,9 @@ public class MastodonAPIController{
synchronized(req){
req.okhttpCall=call;
}
if(req.timeout>0){
call.timeout().timeout(req.timeout, TimeUnit.MILLISECONDS);
}
if(BuildConfig.DEBUG)
Log.d(TAG, "["+(session==null ? "no-auth" : session.getID())+"] Sending request: "+hreq);
@@ -145,15 +156,24 @@ public class MastodonAPIController{
Log.d(TAG, "["+(session==null ? "no-auth" : session.getID())+"] response body: "+respJson);
if(req.respTypeToken!=null)
respObj=gson.fromJson(respJson, req.respTypeToken.getType());
else
else if(req.respClass!=null)
respObj=gson.fromJson(respJson, req.respClass);
else
respObj=null;
}else{
if(req.respTypeToken!=null)
respObj=gson.fromJson(reader, req.respTypeToken.getType());
else
else if(req.respClass!=null)
respObj=gson.fromJson(reader, req.respClass);
else
respObj=null;
}
}catch(JsonIOException|JsonSyntaxException x){
if (req.context != null && response.body().contentType().subtype().equals("html")) {
UiUtils.launchWebBrowser(req.context, response.request().url().toString());
req.cancel();
return;
}
if(BuildConfig.DEBUG)
Log.w(TAG, "["+(session==null ? "no-auth" : session.getID())+"] "+response+" error parsing or reading body", x);
req.onError(x.getLocalizedMessage(), response.code(), x);

View File

@@ -2,6 +2,7 @@ package org.joinmastodon.android.api;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Context;
import android.net.Uri;
import android.util.Log;
import android.util.Pair;
@@ -20,9 +21,11 @@ import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.function.Consumer;
import androidx.annotation.CallSuper;
import androidx.annotation.Nullable;
import androidx.annotation.StringRes;
import me.grishka.appkit.api.APIRequest;
import me.grishka.appkit.api.Callback;
@@ -44,10 +47,12 @@ public abstract class MastodonAPIRequest<T> extends APIRequest<T>{
TypeToken<T> respTypeToken;
Call okhttpCall;
Token token;
boolean canceled;
boolean canceled, isRemote;
Map<String, String> headers;
long timeout;
private ProgressDialog progressDialog;
protected boolean removeUnsupportedItems;
@Nullable Context context;
public MastodonAPIRequest(HttpMethod method, String path, Class<T> respClass){
this.path=path;
@@ -101,13 +106,28 @@ public abstract class MastodonAPIRequest<T> extends APIRequest<T>{
return this;
}
public MastodonAPIRequest<T> wrapProgress(Activity activity, @StringRes int message, boolean cancelable){
return wrapProgress(activity, message, cancelable, null);
public MastodonAPIRequest<T> execRemote(String domain) {
return execRemote(domain, null);
}
public MastodonAPIRequest<T> wrapProgress(Activity activity, @StringRes int message, boolean cancelable, Consumer<ProgressDialog> transform){
progressDialog=new ProgressDialog(activity);
progressDialog.setMessage(activity.getString(message));
public MastodonAPIRequest<T> execRemote(String domain, @Nullable AccountSession remoteSession) {
this.isRemote = true;
return Optional.ofNullable(remoteSession)
.or(() -> AccountSessionManager.getInstance().getLoggedInAccounts().stream()
.filter(acc -> acc.domain.equals(domain))
.findAny())
.map(AccountSession::getID)
.map(this::exec)
.orElseGet(() -> this.execNoAuth(domain));
}
public MastodonAPIRequest<T> wrapProgress(Context context, @StringRes int message, boolean cancelable){
return wrapProgress(context, message, cancelable, null);
}
public MastodonAPIRequest<T> wrapProgress(Context context, @StringRes int message, boolean cancelable, Consumer<ProgressDialog> transform){
progressDialog=new ProgressDialog(context);
progressDialog.setMessage(context.getString(message));
progressDialog.setCancelable(cancelable);
if (transform != null) transform.accept(progressDialog);
if(cancelable){
@@ -133,6 +153,10 @@ public abstract class MastodonAPIRequest<T> extends APIRequest<T>{
headers.put(key, value);
}
protected void setTimeout(long timeout){
this.timeout=timeout;
}
protected String getPathPrefix(){
return "/api/v1";
}
@@ -164,9 +188,20 @@ public abstract class MastodonAPIRequest<T> extends APIRequest<T>{
return this;
}
public MastodonAPIRequest<T> setContext(Context context) {
this.context = context;
return this;
}
@Nullable
public Context getContext() {
return context;
}
@CallSuper
public void validateAndPostprocessResponse(T respObj, Response httpResponse) throws IOException{
if(respObj instanceof BaseModel){
((BaseModel) respObj).isRemote = isRemote;
((BaseModel) respObj).postprocess();
}else if(respObj instanceof List){
if(removeUnsupportedItems){
@@ -175,6 +210,7 @@ public abstract class MastodonAPIRequest<T> extends APIRequest<T>{
Object item=itr.next();
if(item instanceof BaseModel){
try{
((BaseModel) item).isRemote = isRemote;
((BaseModel) item).postprocess();
}catch(ObjectValidationException x){
Log.w(TAG, "Removing invalid object from list", x);
@@ -182,15 +218,20 @@ public abstract class MastodonAPIRequest<T> extends APIRequest<T>{
}
}
}
// no idea why we're post-processing twice, but well, as long
// as upstream does it like this, i don't wanna break anything
for(Object item:((List<?>) respObj)){
if(item instanceof BaseModel){
((BaseModel) item).isRemote = isRemote;
((BaseModel) item).postprocess();
}
}
}else{
for(Object item:((List<?>) respObj)){
if(item instanceof BaseModel)
if(item instanceof BaseModel) {
((BaseModel) item).isRemote = isRemote;
((BaseModel) item).postprocess();
}
}
}
}

View File

@@ -5,8 +5,6 @@ import android.view.View;
import android.widget.TextView;
import android.widget.Toast;
import org.joinmastodon.android.R;
import me.grishka.appkit.api.ErrorResponse;
public class MastodonErrorResponse extends ErrorResponse{
@@ -22,7 +20,7 @@ public class MastodonErrorResponse extends ErrorResponse{
@Override
public void bindErrorView(View view){
TextView text=view.findViewById(R.id.error_text);
TextView text=view.findViewById(me.grishka.appkit.R.id.error_text);
text.setText(error);
}

View File

@@ -87,7 +87,6 @@ public class PushSubscriptionManager{
private String accountID;
private PrivateKey privateKey;
private PublicKey publicKey;
private PublicKey serverKey;
private byte[] authKey;
public PushSubscriptionManager(String accountID){
@@ -98,7 +97,7 @@ public class PushSubscriptionManager{
deviceToken=getPrefs().getString("deviceToken", null);
int tokenVersion=getPrefs().getInt("version", 0);
if(!TextUtils.isEmpty(deviceToken) && tokenVersion==BuildConfig.VERSION_CODE){
registerAllAccountsForPush(false);
registerAllAccountsForPush(true); // TODO: revert this before release
return;
}
Log.i(TAG, "tryRegisterFCM: no token found or app was updated. Trying to get push token...");
@@ -121,9 +120,21 @@ public class PushSubscriptionManager{
return !TextUtils.isEmpty(deviceToken);
}
public void registerAccountForPush(PushSubscription subscription){
if(TextUtils.isEmpty(deviceToken))
throw new IllegalStateException("No device push token available");
// this function is used for registering push notifications using FCM
// to avoid NonFreeNet in F-Droid, this registration is disabled in it
// see https://github.com/LucasGGamerM/moshidon/issues/206 for more context
if(BuildConfig.BUILD_TYPE.equals("fdroidRelease") || TextUtils.isEmpty(deviceToken)){
Log.d(TAG, "Skipping registering for FCM push notifications");
return;
}
String endpoint = "https://app.joinmastodon.org/relay-to/fcm/"+deviceToken+"/";
registerAccountForPush(subscription, endpoint);
}
public void registerAccountForPush(PushSubscription subscription, String endpoint){
MastodonAPIController.runInBackground(()->{
Log.d(TAG, "registerAccountForPush: started for "+accountID);
String encodedPublicKey, encodedAuthKey, pushAccountID;
@@ -152,20 +163,21 @@ public class PushSubscriptionManager{
Log.e(TAG, "registerAccountForPush: error generating encryption key", e);
return;
}
new RegisterForPushNotifications(deviceToken,
//work-around for adding the randomAccountId
String newEndpoint = endpoint;
if (endpoint.startsWith("https://app.joinmastodon.org/relay-to/fcm/"))
newEndpoint += pushAccountID;
new RegisterForPushNotifications(newEndpoint,
encodedPublicKey,
encodedAuthKey,
subscription==null ? PushSubscription.Alerts.ofAll() : subscription.alerts,
subscription==null ? PushSubscription.Policy.ALL : subscription.policy,
pushAccountID)
subscription==null ? PushSubscription.Policy.ALL : subscription.policy)
.setCallback(new Callback<>(){
@Override
public void onSuccess(PushSubscription result){
MastodonAPIController.runInBackground(()->{
result.serverKey=result.serverKey.replace('/','_');
result.serverKey=result.serverKey.replace('+','-');
serverKey=deserializeRawPublicKey(Base64.decode(result.serverKey, Base64.URL_SAFE));
AccountSession session=AccountSessionManager.getInstance().tryGetAccount(accountID);
if(session==null)
return;

View File

@@ -0,0 +1,9 @@
package org.joinmastodon.android.api;
import com.google.gson.reflect.TypeToken;
public abstract class ResultlessMastodonAPIRequest extends MastodonAPIRequest<Void>{
public ResultlessMastodonAPIRequest(HttpMethod method, String path){
super(method, path, (Class<Void>)null);
}
}

View File

@@ -6,6 +6,7 @@ import org.joinmastodon.android.E;
import org.joinmastodon.android.MastodonApp;
import org.joinmastodon.android.api.requests.statuses.SetStatusBookmarked;
import org.joinmastodon.android.api.requests.statuses.SetStatusFavorited;
import org.joinmastodon.android.api.requests.statuses.SetStatusMuted;
import org.joinmastodon.android.api.requests.statuses.SetStatusReblogged;
import org.joinmastodon.android.events.StatusCountersUpdatedEvent;
import org.joinmastodon.android.model.Status;
@@ -23,6 +24,7 @@ public class StatusInteractionController{
private final HashMap<String, SetStatusFavorited> runningFavoriteRequests=new HashMap<>();
private final HashMap<String, SetStatusReblogged> runningReblogRequests=new HashMap<>();
private final HashMap<String, SetStatusBookmarked> runningBookmarkRequests=new HashMap<>();
private final HashMap<String, SetStatusMuted> runningMuteRequests=new HashMap<>();
public StatusInteractionController(String accountID, boolean updateCounters) {
this.accountID=accountID;
@@ -46,7 +48,7 @@ public class StatusInteractionController{
@Override
public void onSuccess(Status result){
runningFavoriteRequests.remove(status.id);
result.favouritesCount = Math.max(0, status.favouritesCount) + (favorited ? 1 : -1);
result.favouritesCount = Math.max(0, status.favouritesCount + (favorited ? 1 : -1));
cb.accept(result);
if (updateCounters) E.post(new StatusCountersUpdatedEvent(result));
}
@@ -80,7 +82,7 @@ public class StatusInteractionController{
public void onSuccess(Status reblog){
Status result = reblog.getContentStatus();
runningReblogRequests.remove(status.id);
result.reblogsCount = Math.max(0, status.reblogsCount) + (reblogged ? 1 : -1);
result.reblogsCount = Math.max(0, status.reblogsCount + (reblogged ? 1 : -1));
cb.accept(result);
if (updateCounters) E.post(new StatusCountersUpdatedEvent(result));
}

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 GetAccountBlocks extends HeaderPaginationRequest<Account>{
public GetAccountBlocks(String maxID, int limit){
super(HttpMethod.GET, "/blocks", new TypeToken<>(){});
if(maxID!=null)
addQueryParameter("max_id", maxID);
if(limit>0)
addQueryParameter("limit", limit+"");
}
}

View File

@@ -0,0 +1,15 @@
package org.joinmastodon.android.api.requests.accounts;
import org.joinmastodon.android.api.MastodonAPIRequest;
import org.joinmastodon.android.model.Account;
public class GetAccountByHandle extends MastodonAPIRequest<Account>{
/**
* note that this method usually only returns a result if the instance already knows about an
* account - so it makes sense for looking up local users, search might be preferred otherwise
*/
public GetAccountByHandle(String acct){
super(HttpMethod.GET, "/accounts/lookup", Account.class);
addQueryParameter("acct", acct);
}
}

View File

@@ -0,0 +1,14 @@
package org.joinmastodon.android.api.requests.accounts;
import com.google.gson.reflect.TypeToken;
import org.joinmastodon.android.api.MastodonAPIRequest;
import org.joinmastodon.android.model.Hashtag;
import java.util.List;
public class GetAccountFeaturedHashtags extends MastodonAPIRequest<List<Hashtag>>{
public GetAccountFeaturedHashtags(String id){
super(HttpMethod.GET, "/accounts/"+id+"/featured_tags", new TypeToken<>(){});
}
}

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 GetAccountMutes extends HeaderPaginationRequest<Account>{
public GetAccountMutes(String maxID, int limit){
super(HttpMethod.GET, "/mutes/", new TypeToken<>(){});
if(maxID!=null)
addQueryParameter("max_id", maxID);
if(limit>0)
addQueryParameter("limit", limit+"");
}
}

View File

@@ -21,22 +21,22 @@ public class GetAccountStatuses extends MastodonAPIRequest<List<Status>>{
switch(filter){
case DEFAULT -> addQueryParameter("exclude_replies", "true");
case INCLUDE_REPLIES -> {}
case PINNED -> addQueryParameter("pinned", "true");
case MEDIA -> addQueryParameter("only_media", "true");
case NO_REBLOGS -> {
addQueryParameter("exclude_replies", "true");
addQueryParameter("exclude_reblogs", "true");
}
case OWN_POSTS_AND_REPLIES -> addQueryParameter("exclude_reblogs", "true");
case PINNED -> addQueryParameter("pinned", "true");
}
}
public enum Filter{
DEFAULT,
INCLUDE_REPLIES,
PINNED,
MEDIA,
NO_REBLOGS,
OWN_POSTS_AND_REPLIES
OWN_POSTS_AND_REPLIES,
PINNED
}
}

View File

@@ -4,21 +4,22 @@ import org.joinmastodon.android.api.MastodonAPIRequest;
import org.joinmastodon.android.model.Token;
public class RegisterAccount extends MastodonAPIRequest<Token>{
public RegisterAccount(String username, String email, String password, String locale, String reason){
public RegisterAccount(String username, String email, String password, String locale, String reason, String timezone){
super(HttpMethod.POST, "/accounts", Token.class);
setRequestBody(new Body(username, email, password, locale, reason));
setRequestBody(new Body(username, email, password, locale, reason, timezone));
}
private static class Body{
public String username, email, password, locale, reason;
public String username, email, password, locale, reason, timeZone;
public boolean agreement=true;
public Body(String username, String email, String password, String locale, String reason){
public Body(String username, String email, String password, String locale, String reason, String timeZone){
this.username=username;
this.email=email;
this.password=password;
this.locale=locale;
this.reason=reason;
this.timeZone=timeZone;
}
}
}

View File

@@ -4,8 +4,15 @@ import org.joinmastodon.android.api.MastodonAPIRequest;
import org.joinmastodon.android.model.Relationship;
public class SetAccountMuted extends MastodonAPIRequest<Relationship>{
public SetAccountMuted(String id, boolean muted){
public SetAccountMuted(String id, boolean muted, long duration){
super(HttpMethod.POST, "/accounts/"+id+"/"+(muted ? "mute" : "unmute"), Relationship.class);
setRequestBody(new Object());
setRequestBody(new Request(duration));
}
private static class Request{
public long duration;
public Request(long duration){
this.duration=duration;
}
}
}

View File

@@ -0,0 +1,35 @@
package org.joinmastodon.android.api.requests.accounts;
import org.joinmastodon.android.api.MastodonAPIRequest;
import org.joinmastodon.android.model.Account;
import org.joinmastodon.android.model.Preferences;
import org.joinmastodon.android.model.StatusPrivacy;
public class UpdateAccountCredentialsPreferences extends MastodonAPIRequest<Account>{
public UpdateAccountCredentialsPreferences(Preferences preferences, Boolean locked, Boolean discoverable, Boolean indexable){
super(HttpMethod.PATCH, "/accounts/update_credentials", Account.class);
setRequestBody(new Request(locked, discoverable, indexable, new RequestSource(preferences.postingDefaultVisibility, preferences.postingDefaultLanguage)));
}
private static class Request{
public Boolean locked, discoverable, indexable;
public RequestSource source;
public Request(Boolean locked, Boolean discoverable, Boolean indexable, RequestSource source){
this.locked=locked;
this.discoverable=discoverable;
this.indexable=indexable;
this.source=source;
}
}
private static class RequestSource{
public StatusPrivacy privacy;
public String language;
public RequestSource(StatusPrivacy privacy, String language){
this.privacy=privacy;
this.language=language;
}
}
}

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