Commit graph

4,427 commits

Author SHA1 Message Date
Bruno Miguel
62d70fdb72 Translated using Weblate (Portuguese (Portugal))
Currently translated at 100.0% (697 of 697 strings)

Co-authored-by: Bruno Miguel <brunoalexandremiguel@gmail.com>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/pt_PT/
Translation: Tusky/Tusky
2025-03-09 14:07:14 +00:00
fin-w
d36974afb9 Translated using Weblate (Welsh)
Currently translated at 100.0% (697 of 697 strings)

Co-authored-by: fin-w <fin-w@tutanota.com>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/cy/
Translation: Tusky/Tusky
2025-03-09 14:07:14 +00:00
Danial Behzadi
0658f9f20a Translated using Weblate (Persian)
Currently translated at 100.0% (697 of 697 strings)

Co-authored-by: Danial Behzadi <dani.behzi@ubuntu.com>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/fa/
Translation: Tusky/Tusky
2025-03-09 14:07:14 +00:00
guerda
df9820de0c Translated using Weblate (German)
Currently translated at 98.1% (684 of 697 strings)

Co-authored-by: guerda <guerda@freenet.de>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/de/
Translation: Tusky/Tusky
2025-03-09 14:07:14 +00:00
Konrad Pozniak
b03279a2e2
fix window insets related bugs (#4978)
- Fixes the background of the ComposeActivity in table mode which looked
weird since https://github.com/tuskyapp/Tusky/pull/4897
- The ComposeActivity in tablet mode will now resize when the keyboard
expands, the previously used fixed height would cause the bottom bar to
hide entered text on some devices, closes
https://github.com/tuskyapp/Tusky/issues/4973
- The bottom sheets in the compose view will now be in fully hidden
state by default, as some weirdness on some devices caused them to peek
over the bottom bar in half collapsed state. Please test @fin-w
- The bottom sheet in the image viewer will now expand a bit more in
edge-to-edge mode so it doesn't look it is deliberately obscured by the
system bar. The image also moves up a bit so it won't be covered by the
bottom sheet as much.
- The "Performing lookup…" bottom sheet won't be covered by the nav bar
anymore
2025-03-08 09:08:09 +01:00
Konrad Pozniak
3c728d9bea
fix images sometimes flickering when interacting with a post (#4971)
Glide compares the previous load with the current load, and if they are
identical, does basically nothing. Thats what we want, because otherwise
it flickers when the requested image is not in the memory cache.
The problem is, we decode the blurhash we use as placeholder everytime.
And the BitmapDrawables we get don't have a proper equals
implementation.
So Glide is like: Aha, different placeholder, better load again ->
Flicker
I added a BlurhashDrawable with custom equals/hashCode and now the
flickering is gone.
2025-03-05 19:53:53 +01:00
Konrad Pozniak
a20912c185
prepare Release 130 (#4949) 2025-03-03 20:25:15 +01:00
Ihor Hordiichuk
1315ae303e Translated using Weblate (Ukrainian)
Currently translated at 95.6% (667 of 697 strings)

Co-authored-by: Ihor Hordiichuk <igor_ck@outlook.com>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/uk/
Translation: Tusky/Tusky
2025-03-01 17:07:13 +00:00
Manuel
111daf1ad8 Translated using Weblate (Italian)
Currently translated at 100.0% (697 of 697 strings)

Co-authored-by: Manuel <mannivuwiki@gmail.com>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/it/
Translation: Tusky/Tusky
2025-02-28 08:57:28 +00:00
Mārtiņš Bruņenieks
6767293d29 Translated using Weblate (Latvian)
Currently translated at 78.0% (544 of 697 strings)

Co-authored-by: Mārtiņš Bruņenieks <martinsb@gmail.com>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/lv/
Translation: Tusky/Tusky
2025-02-28 08:57:28 +00:00
José M
885b89e44f Translated using Weblate (Galician)
Currently translated at 100.0% (697 of 697 strings)

Co-authored-by: José M <xosem@disroot.org>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/gl/
Translation: Tusky/Tusky
2025-02-28 08:57:27 +00:00
Hồ Nhất Duy
083793ee59 Translated using Weblate (Vietnamese)
Currently translated at 100.0% (697 of 697 strings)

Co-authored-by: Hồ Nhất Duy <mastoduy@gmail.com>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/vi/
Translation: Tusky/Tusky
2025-02-28 08:57:27 +00:00
Sveinn í Felli
38c00fb5c8 Translated using Weblate (Icelandic)
Currently translated at 100.0% (697 of 697 strings)

Co-authored-by: Sveinn í Felli <sv1@fellsnet.is>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/is/
Translation: Tusky/Tusky
2025-02-28 08:57:27 +00:00
Eric
78a00c7951 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (697 of 697 strings)

Co-authored-by: Eric <alchemillatruth@users.noreply.weblate.tusky.app>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/zh_Hans/
Translation: Tusky/Tusky
2025-02-28 08:57:27 +00:00
Danial Behzadi
564e0fa9b5 Translated using Weblate (Persian)
Currently translated at 100.0% (697 of 697 strings)

Co-authored-by: Danial Behzadi <dani.behzi@ubuntu.com>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/fa/
Translation: Tusky/Tusky
2025-02-28 08:57:27 +00:00
Konrad Pozniak
e6c4442370
fix notification channel names (#4959)
This changes the notification channel names back to what they were pre
https://github.com/tuskyapp/Tusky/pull/4929 so users don't lose their
settings and the channels won't be duplicated. Tusky nightly users that
installed a in-between version will still have duplicate channels, they
will need to reinstall.
2025-02-28 10:20:27 +01:00
Konrad Pozniak
ba4f57ecaa
use the correct paddings for status info and follow notifications (#4958)
On my device the status info was just slighty misaligned, so I
investigated. Turns out the dp values were correct, but the
`Utils.dpToPx` method calculates with the exact density of the device,
whereas everything else uses the density buckets Android defines. And on
some devices that makes a visible difference. Did a little refactor and
now everything should always be aligned correctly.

And in `item_follow` the padding was just different from other
notification items.
2025-02-28 10:20:17 +01:00
Konrad Pozniak
86a73db1ea
add isAdded check in ViewImageFragment to prevent crash (#4948)
```
Exception java.lang.IllegalStateException:
  at androidx.fragment.app.Fragment.requireActivity (Fragment.java:1005)
  at com.keylesspalace.tusky.fragment.ViewImageFragment.getPhotoActionsListener (ViewImageFragment.java:58)
  at com.keylesspalace.tusky.fragment.ViewImageFragment.access$getPhotoActionsListener (ViewImageFragment.java:48)
  at com.keylesspalace.tusky.fragment.ViewImageFragment$ImageRequestListener.onResourceReady$lambda$0 (ViewImageFragment.java:335)
  at android.os.Handler.handleCallback (Handler.java:938)
  at android.os.Handler.dispatchMessage (Handler.java:99)
  at android.os.Looper.loopOnce (Looper.java:226)
  at android.os.Looper.loop (Looper.java:313)
  at android.app.ActivityThread.main (ActivityThread.java:8751)
  at java.lang.reflect.Method.invoke
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:571)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1135)
```
2025-02-27 09:58:18 +01:00
Konrad Pozniak
1e1695de6e
improve WindowInsetsCallback to work when keyboard changes size (#4947)
re: https://chaos.social/@jannik/114059313885014801

Not sure why I didn't use `onPrepare` previously 🤔 . Makes more sense
this way.

The difference between `onStart` and `onPrepare` is that `onPrepare` is
called before the `OnApplyWindowInsetsListener` and the other after. So
with `onPrepare` it is easy to detect that an animation is starting. The
keyboard only seems to animate initially, not when it changes size
later, but the previous code always expected an animation.
2025-02-27 09:58:04 +01:00
Hồ Nhất Duy
b9d8c949c7 Translated using Weblate (Vietnamese)
Currently translated at 100.0% (694 of 694 strings)

Co-authored-by: Hồ Nhất Duy <mastoduy@gmail.com>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/vi/
Translation: Tusky/Tusky
2025-02-26 19:24:44 +00:00
Manuel
645c4f48f5 Translated using Weblate (Italian)
Currently translated at 100.0% (694 of 694 strings)

Co-authored-by: Manuel <mannivuwiki@gmail.com>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/it/
Translation: Tusky/Tusky
2025-02-26 19:24:44 +00:00
Elouan Martinet
d334bd0c40
feat: choose boost visibility (#3095) (#4944)
Closes #3095

---

Since I had to add `visibility` on the `onReblog` method, it is possible
that I have broken something. Also, I kept the old method signature
(which calls the new one), but it's possible that it is not needed.

~~I'm not 100% sure that unlisted boost works, as the visibility of the
boost is not shown anywehere.~~ I've confirmed that private
(followers-only) boosts are not visible on private browsing on the
browser.

EDIT: Confirmed visibility in devtools on web browser.

Screenshots:


![image](https://github.com/user-attachments/assets/f5bb8bcd-d13a-4263-8b2f-59f25621a6b1)
![image](https://github.com/user-attachments/assets/4e050e96-151d-45a5-9cd9-a7afd3a42c17)
2025-02-26 20:47:50 +01:00
José M
b13cb261ff Translated using Weblate (Galician)
Currently translated at 100.0% (694 of 694 strings)

Co-authored-by: José M <xosem@disroot.org>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/gl/
Translation: Tusky/Tusky
2025-02-25 14:07:15 +00:00
Hồ Nhất Duy
cc8fdcc591 Translated using Weblate (Vietnamese)
Currently translated at 100.0% (694 of 694 strings)

Co-authored-by: Hồ Nhất Duy <mastoduy@gmail.com>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/vi/
Translation: Tusky/Tusky
2025-02-25 14:07:15 +00:00
Eric
5e812ba9c1 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (694 of 694 strings)

Co-authored-by: Eric <alchemillatruth@users.noreply.weblate.tusky.app>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/zh_Hans/
Translation: Tusky/Tusky
2025-02-25 14:07:15 +00:00
Manuel
fb1600f3d2 Translated using Weblate (Italian)
Currently translated at 97.2% (675 of 694 strings)

Co-authored-by: Manuel <mannivuwiki@gmail.com>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/it/
Translation: Tusky/Tusky
2025-02-25 14:07:15 +00:00
Danial Behzadi
17504328a0 Translated using Weblate (Persian)
Currently translated at 100.0% (694 of 694 strings)

Co-authored-by: Danial Behzadi <dani.behzi@ubuntu.com>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/fa/
Translation: Tusky/Tusky
2025-02-25 14:07:15 +00:00
Weblate
3e198300cf Update translation files
Updated by "Cleanup translation files" hook in Weblate.

Co-authored-by: Weblate <noreply@weblate.org>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/
Translation: Tusky/Tusky
2025-02-25 14:07:14 +00:00
Konrad Pozniak
d0b20cf06e
various not push related notification improvements (#4929)
- support new notification type `severed_relationships`, closes
https://github.com/tuskyapp/Tusky/issues/4835, closes
https://github.com/tuskyapp/Tusky/issues/4334
- support new notification type `moderation_warning`
- the account note is now shown again for follow request and follow
notifcations (was broken since
https://github.com/tuskyapp/Tusky/pull/4026)
- closes https://github.com/tuskyapp/Tusky/issues/4571
- The "unknown notification type" notification now shows the unknown
type and a info dialog when you click it
https://chaos.social/@ConnyDuck/113601791254050485
- The notification policy banner in the notification tab is now cached
for better offline behavior (and less jumping of the list on every load)
and updates when interacting with the requests
- Fixes a bug where some notifications wouldn't be filtered correctly.
Behavior should now match Mastodon.
https://mastodon.social/@alm10965/113639206858728177
- Fixes a bug where some system notifications wouldn't have a body
- For filters and channels, report and signup notifications are now
grouped as "Admin", severed relationship events and moderation warnings
as "other". These lists are super long already.
- The icon for the "`<user>` just posted" notification is now a bell
instead of a home
- Follow requests won't be filtered by default in the notification tab.
No idea why this one got special treatment. This change will only affect
new logins and not existing ones.
- closes #4440 
- Adds info about attached media or poll to
StatusNotificationViewHolder. This is important context that has been
missing before.
- Adds (private) reply/(private) mention text above mention
notification. (Partially?) closes
https://github.com/tuskyapp/Tusky/issues/3883

Some screenshots:

![follow](https://github.com/user-attachments/assets/5f962116-c16f-4574-aae1-b1f931ce1508)

![moderation_warning](https://github.com/user-attachments/assets/55a2ee7e-ebcd-4ae8-9170-f07f9f5df5d2)

![severed_relationship](https://github.com/user-attachments/assets/a8d6b898-eb44-43b4-9b6d-3fb5f7aeb852)

![unknown](https://github.com/user-attachments/assets/c74ee33e-6926-42b1-b952-dc888b72fd27)

![unknown_info](https://github.com/user-attachments/assets/19ff11bf-aaff-4219-87e2-ea980ebbd118)

![notifications](https://github.com/user-attachments/assets/b5021cbb-f6c0-4a17-9e15-73e669504647)
2025-02-24 14:53:05 +01:00
Konrad Pozniak
1157be18cf
Properly handle more than 4 fields in EditProfileViewModel (#4936)
Also read `configuration.accounts.max_profile_fields` from
`api/v2/instance` to get the correct limit for GoToSocial.

Glitch-soc also allows more fields but does not provide configuration
yet, see https://github.com/glitch-soc/mastodon/issues/2973

closes https://github.com/tuskyapp/Tusky/issues/3305
2025-02-24 14:18:48 +01:00
Konrad Pozniak
cd24ee8f26
open remote url for unknown attachments (#4941)
closes https://github.com/tuskyapp/Tusky/issues/4729
2025-02-24 14:18:24 +01:00
Konrad Pozniak
89d5b9670a
don't reset the reply policy when updating a list (#4935)
fixes https://github.com/tuskyapp/Tusky/issues/4934
2025-02-24 14:17:13 +01:00
Sven Jacobs
5e4f21cb67
Adjust mute duration values (issue #4914) (#4943)
Adjust mute duration values to indefinite, 1 hour, 6 hours, 1 day, 7
days, 30 days and 180 days.

Fixes #4914
2025-02-23 14:58:33 +01:00
Hồ Nhất Duy
6bbfe95e13 Translated using Weblate (Vietnamese)
Currently translated at 100.0% (677 of 677 strings)

Co-authored-by: Hồ Nhất Duy <mastoduy@gmail.com>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/vi/
Translation: Tusky/Tusky
2025-02-23 08:10:16 +00:00
Paul Weber
c119f2f8ce
display the following badge on other profile pages in wellbeing mode,… (#4940)
… as requested in #4219

No unit tests failed because of this change, as far as I could see.
However, one could add some if necessary.

Co-authored-by: Paul Weber <paul@apollo.ai>
2025-02-23 09:33:14 +01:00
Konrad Pozniak
cc79aac4c9
handle bottom insets in NotificationRequestDetailsActivity (#4930)
Before


![before](https://github.com/user-attachments/assets/49df5f07-660f-49da-9fb4-98f86f76c1d0)


After


![after](https://github.com/user-attachments/assets/7914703f-edcd-48e3-ae7a-69c2835f03ce)
2025-02-21 11:03:27 +01:00
Hồ Nhất Duy
2996b2803d Translated using Weblate (Vietnamese)
Currently translated at 100.0% (677 of 677 strings)

Co-authored-by: Hồ Nhất Duy <mastoduy@gmail.com>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/vi/
Translation: Tusky/Tusky
2025-02-20 11:04:52 +00:00
UlrichKu
6450af6edb
Improve push notifications (#4896)
Besides the refactoring these improvements:
* Track last push distributor and reset settings and subscription on any
incompatible change (ie. uninstall)
* Only update (push) notification settings on server if needed
* Allow to only fetch notifications for one account (the one for which a
push message was received)

This is (also) the revival of
https://github.com/tuskyapp/Tusky/pull/3642

It's not really well tested so far. (Ie. with two or more accounts or
two or more push providers.)
2025-02-20 12:27:06 +01:00
Konrad Pozniak
f95dbe82b0
fix trending tag ellipsized too soon (#4924)
Before:

<img
src="https://github.com/user-attachments/assets/bc2907a1-8207-43bd-8eb9-3a76e25c20a1"
width="320" />
2025-02-17 15:17:39 +01:00
Konrad Pozniak
35cef6cb94
fix RecyclerView.ensureBottomPadding on older Api levels (#4917)
The setOnApplyWindowInsetsListener callback is not always excecuted,
e.g. because there are no insets to consume on older api levels. This
fixes the problem and makes sure our RecyclerViews always have the
correct bottom padding and are not covered by other views.
2025-02-17 15:16:58 +01:00
Konrad Pozniak
36a4de9b40
use updateRelativeTimePeriodically everywhere (#4916) 2025-02-17 15:16:41 +01:00
Konrad Pozniak
759902b280
fix search pull-to-refresh (#4915)
Before this, refreshing the status search would show the loading spinner
but not actually do something (account and hashtag search worked fine).
2025-02-17 15:16:29 +01:00
Konrad Pozniak
bc78af47ba
fix dropdowns in dialogs going behind the keyboard (#4913)
I tried to find a solution without using a deprecated api to no avail.
But better a working app than perfect code I guess.

In the end this probably is a bug in the Material component library
https://github.com/material-components/material-components-android/issues/3307.

I also made the insets smaller which improves the dialogs a lot on small
screens.
2025-02-11 17:24:35 +01:00
Konrad Pozniak
1b0e396c4c
reduce height of bottom bar (#4912)
back to what it was in Tusky 27

Api 29 before / after

<img
src="https://github.com/user-attachments/assets/e624b964-8bc5-41b0-b247-b5df082d67e1"
width="280" /> <img
src="https://github.com/user-attachments/assets/7696bacd-5d2d-42b2-aff4-e6fa46e8a35d"
width="280" />


Api 35 before / after

<img
src="https://github.com/user-attachments/assets/232d96d6-1bf5-45d9-92dd-b825abb26a04"
width="280" /> <img
src="https://github.com/user-attachments/assets/8f9567dc-9f07-4560-b514-5f5230e4880a"
width="280" />
2025-02-11 17:24:24 +01:00
Konrad Pozniak
b42c1e8eb5
fix conversation tab not having any content (#4911)
regression from https://github.com/tuskyapp/Tusky/pull/4909
2025-02-07 11:16:19 +01:00
Konrad Pozniak
b7f7b6d6b2
don't hide the action button when showing trending tags (#4910)
This fixes a bug where the action button would be hidden until app
restart when trending tags have been visible once.
2025-02-07 08:14:14 +01:00
Konrad Pozniak
b24427c6df
fix diffing statuses (#4909)
Several cases of payloads not being forwarded correctly, leading to
unnecessary re-binding of the whole status view. I simplified the logic
by removing the additional list level, making it easier to understand
what is going on.
2025-02-06 11:38:05 +01:00
Konrad Pozniak
78152f0449
Full support for Android 15, edge-to-edge mode on Android 15 (#4897)
- Update to Api 35
- Update all dependencies that were blocked because they require Api 35
- fix some deprecation warnings
- implement the now required edge-to-edge mode

Edge-to-edge mode means that we now draw under the status bar and the
navigation bar and need to make sure we don't overlap with them.
Previously the system would do that for us, and we would only provide
the color we want the bars in.

For the edge-to-edge mode there are two Apis that are important:
- `fitsSystemWindows` - some Widgets, mostly from the Material library,
automatically handle system insets if you set this attribute on them to
true
- `ViewCompat.setOnApplyWindowInsetsListener` - this allows you to
manually handle the various insets. By returning new insets from the
callback it is possible to tell the system which ones are handled and
which ones should be taken care of by another view.

In most places edge-to-edge was straightforward to implement, except in
`ComposeActivity`, `AccountActivity` and `MainActivity` which required a
more custom approach, and a hacky solution to make landscape mode work
in `BaseActivity`.

There is also the `ViewCompat.setWindowInsetsAnimationCallback` Api
which allows animating with moving insets. I used that in
`LoginActivity` and `ComposeActivity` to animate the Views together with
the keyboard.

On Android Versions below 15 (Api <= 34) Tusky will look almost the same
as before. I think the only exception is the main bottom bar, which is
now slighty larger. We customized it to be smaller than the default, but
in edge-to-edge mode the height needs to be `wrap_content` or it won't
handle insets correctly.

Screenshots: 

<img
src="https://github.com/user-attachments/assets/2a1bf5d9-79fb-48eb-affc-1cbb1164d5f0"
width="280"/>
<img
src="https://github.com/user-attachments/assets/9edccdf2-c0e9-4881-a6df-bd0872934f28"
width="280"/>
<img
src="https://github.com/user-attachments/assets/2916a271-f53e-4d38-a83a-69083eb3053f"
width="280"/>
2025-02-06 11:37:54 +01:00
Konrad Pozniak
b3d5aff435
move NotificationTypeConverter into Converters (#4908)
There is no reason why we would treat this one differently. Ok, it might
be a bit less efficient but I take that in exchange for the cleaner
code.
2025-02-05 20:31:56 +01:00
Russty
fa00fbb470 Translated using Weblate (Slovak)
Currently translated at 87.1% (590 of 677 strings)

Co-authored-by: Russty <russellt@duck.com>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/sk/
Translation: Tusky/Tusky
2025-02-02 20:08:54 +00:00