Commit graph

3210 commits

Author SHA1 Message Date
Nik Clayton
7261fa0b18
By explicit about the firstStrong text direction on UGC (#3328)
`activity_account` sets the root text direction to `anyRtl`.

This is OK for UI elements, but can be a problem for user generated content
(UGC) that may contain bidirectional text.

Fix this by explicitly restoring the default behaviour, `firstStrong`, on
views in `activity_account` that can show UGC.

Fixes https://github.com/tuskyapp/Tusky/issues/3294
2023-03-02 18:30:26 +01:00
Goooler
ca29ee2b0b
Use more orEmpty extensions (#3399)
https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/or-empty.html
https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/or-empty.html
2023-03-01 21:06:55 +01:00
Ihor Hordiichuk
7fa0c51599 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (567 of 567 strings)

Co-authored-by: Ihor Hordiichuk <igor_ck@outlook.com>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/uk/
Translation: Tusky/Tusky
2023-03-01 20:00:31 +00:00
Sveinn í Felli
4afca08ac8 Translated using Weblate (Icelandic)
Currently translated at 100.0% (566 of 566 strings)

Co-authored-by: Sveinn í Felli <sv1@fellsnet.is>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/is/
Translation: Tusky/Tusky
2023-03-01 20:00:31 +00:00
Paul Sanz
eb2a8abc23 Translated using Weblate (Spanish)
Currently translated at 100.0% (566 of 566 strings)

Co-authored-by: Paul Sanz <registro@polkillas.net>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/es/
Translation: Tusky/Tusky
2023-03-01 20:00:31 +00:00
Konrad Pozniak
ed188783de
include card and collapsed state in instant expanded change (#3394) 2023-03-01 20:00:56 +01:00
Konrad Pozniak
816dc0cbbc
make sure all timeline database operations run on a background thread (#3391) 2023-03-01 20:00:19 +01:00
Konrad Pozniak
b8c77a795c
prevent adding multiple tabs of the same type (#3390)
* prevent adding multiple tabs of the same type

* use Objects.hash
2023-03-01 19:59:40 +01:00
Nik Clayton
1b6108ca94
Add "Refresh" accessibility menu (#3121)
* Add "Refresh" accessibility menu to TimelineFragment

Per https://developer.android.com/reference/androidx/swiperefreshlayout/widget/SwipeRefreshLayout
the layout does not provide accessibility events, and a menu item should be
provided as an alternative method for refreshing the content.

In `TimelineFragment`:
- Implement the `MenuProvider` interface so it can populate the action bar
  menu in activities that host the fragment
- Create a "Refresh" menu item, and refresh the state when it is selected

`MainActivity` has to change how the menu is created, so that fragments
can add items to it.

In `MainActivity`:
- Call `setSupportActionBar` so `mainToolbar` participates in menus
- Implement the `MenuProvider` interface, and move menu creation there
- Set the title via supportActionBar

* Never show the refresh item as a menubar action

Per guidelines in https://developer.android.com/develop/ui/views/touch-and-input/swipe/add-swipe-interface#AddRefreshAction

* Add "Refresh" menu item for AccountMediaFragment

Also, fix the colour of the refresh progress indicator

* Implement "Refresh" for AnnouncementsActivity

* Add "Refresh" menu for ConversationsFragment

* Keep the tabs adapter over the life of the viewpager

Make `tabs` `var` instead of `val` in `MainPagerAdapter` so it can be updated
when tabs change.

Then detach the `tabLayoutMediator`, update the tabs, and call
`notifyItemRangeChanged` in `setupTabs()`.

This fixes a bug (not sure if it's this code, or in ViewPager2) where
assigning a new adapter to the view pager seemed to result in a leak of one
or more fragments. This wasn't user-visible, but it's a leak, and it becomes
user-visible when fragments want to display menus.

This also fixes two other bugs:

1. Be on the left-most tab. Scroll down a bit. Then modify the tabs at
   "Account preferences > tabs", but keep the left-most tab as-is.

   Then go back to MainActivity. Your reading position in the left-most
   tab has been jumped to the top.

2. Be on any non-left-most tab. Then modify the tab list by reordering tabs
   (adding/removing tabs is also OK).

   Then go back to MainActivity. Your tab selection has been overridden,
   and the left-most tab has been selected.

Because the fragments are not destroyed unnecessarily your reading position
is retained. And it remembers the tab you had selected, and as long as that
tab is still present you will be returned to it, even if it's changed
position in the list.

Fixes https://github.com/tuskyapp/Tusky/issues/3251

* Add "Refresh" menu for ScheduledStatusActivity

* Lint

* Add "Refresh" menu for SearchFragment / SearchActivity

* Explicitly set the searchview width

Using "collapseActionView" requires the user to press "Back" twice to exit
the activity, which is not acceptable.

* Move toolbar handling in to ViewThreadActivity

Previous code had the toolbar in the fragment's layout. Refactor to make
consistent with other activities, and move the toolbar in to the activity
layout.

Implement MenuProvider in ViewThreadFragment to adjust the menu in the
activity.

* Add "Refresh" menu to ViewThreadFragment

* Implement "Refresh" for ViewEditsFragment

* Lint

* Add "Refresh" menu to ReportStatusesFragment

* Add "Refresh" menu to NotificationsFragment

* Rename menu resource files

Be consistent with the layout resource files, which have an activity/fragment
prefix, then the lower_snake_case name of the activity or fragment it's for.

* Only enable refresh menu if swiptorefresh is enabled

Some timelines don't have swipetorefresh enabled (e.g., those shown on
AccountActivity). In those cases don't add the refresh menu, rely on the
hosting activity to provide it.

Update AccountActivity to provide the refresh menu item.
2023-03-01 19:58:18 +01:00
Mārtiņš Bruņenieks
29fc449f04 Translated using Weblate (Latvian)
Currently translated at 95.0% (538 of 566 strings)

Co-authored-by: Mārtiņš Bruņenieks <martinsb@gmail.com>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/lv/
Translation: Tusky/Tusky
2023-02-28 21:35:54 +00:00
UlrichKu
b4d10c9613
3204: Add an account based preference store (#3205)
* 3204: Add an account based preference store

* 3204: (related) reformat a bit, add todo

* 3204: Use the preference data store for all three account settings

* 3204: Move event handling to account settings handler

* 3204: Correct includes

* 3204: Appease linter

* 3204: Appease linter again

* 3204: Add an account based preference store

* 3204: Use the preference data store for all three account settings

* 3204: Move event handling to account settings handler

* 3204: Correct includes

* 3204: Add general "preference upgrade loop stepper"; use it for removing obsolete account settings (in shared)

* 3204: Add missing spaces

* 3204: Key is non-nullable

* 3204: Upgrade to new settings migration code

* 3204: Remove (commented) DI code
2023-02-27 14:07:28 +01:00
Ricard Torres
7751b88a57 Translated using Weblate (Catalan)
Currently translated at 100.0% (566 of 566 strings)

Co-authored-by: Ricard Torres <ricard@ricard.dev>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/ca/
Translation: Tusky/Tusky
2023-02-27 12:03:21 +00:00
XoseM
46d00a3108 Translated using Weblate (Galician)
Currently translated at 100.0% (566 of 566 strings)

Co-authored-by: XoseM <xosem@disroot.org>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/gl/
Translation: Tusky/Tusky
2023-02-27 12:03:21 +00:00
Garutmaan Garuda
81f3474583 Translated using Weblate (Sanskrit)
Currently translated at 88.8% (503 of 566 strings)

Co-authored-by: Garutmaan Garuda <garutmaangaruda@gmail.com>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/sa/
Translation: Tusky/Tusky
2023-02-27 12:03:21 +00:00
Quentí
03640c8ce7 Translated using Weblate (Occitan)
Currently translated at 100.0% (566 of 566 strings)

Co-authored-by: Quentí <quentinantonin@free.fr>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/oc/
Translation: Tusky/Tusky
2023-02-27 12:03:21 +00:00
UlrichKu
6b9db02c08
3311 load more more prominent (#3376)
* 3311: Add a zig-zag line to top and bottom of "load more"

* 3311: Remove unneeded extensions

* 3311: Use a simple gradient instead of zigzag line

* 3311: Use a simple gradient drawable (remove custom view)

* 3311: Remove gradient lines
2023-02-27 11:33:11 +01:00
Nik Clayton
10f983c953
Ignore clicks outside the start/end of a line (#3380)
* Ignore clicks outside the start/end of a line

`LinkMovementMethod` has a bug in its calculation of the clickable width of a span on a line. If the span is the last thing on the line the clickable area extends to the end of the view. So the user can tap what appears to be whitespace and open a link.

Previous code tried to fix this by adding a zero-width space after the link so that `LinkMovementMethod` wouldn't consider it empty. However the ZWS was selected by copy/paste operations, resulting in junk results if users tried to copy the link.

Fix this by subclassing `LinkMovementMethod` and fixing the click detection code to ignore clicks that are outside the bounds of the line that was clicked on.

Remove the code that adds the ZWS.

Fixes https://github.com/tuskyapp/Tusky/issues/1567

* Assume arguments are all non-null

* Use `object` for singleton

* getInstance as a one-liner
2023-02-27 08:54:51 +01:00
Konrad Pozniak
9340e7a6f4
update Glide to 4.15.0 (#3384) 2023-02-27 08:54:26 +01:00
Goooler
2da7bc5bc8
Use TypedArray.use to obtain attrs (#3349)
17346638ff/core/core-ktx/src/main/java/androidx/core/content/res/TypedArray.kt (L227-L236)
2023-02-25 21:30:52 +01:00
fruyek
d4eb744241
Perform unicode text isolation on user names in post edit history view (#3342) 2023-02-25 21:27:54 +01:00
Levi Bard
2e189a17dc
When looking up fediverse urls, verify that account results returned match the input query. (#3341)
Fixes #2804
2023-02-25 21:27:26 +01:00
Nik Clayton
fda8c80949
Use an explicit SCHEMA_VERSION instead of BuildConfig.VERSION_CODE (#3324)
* Use an explicit SCHEMA_VERSION instead of BuildConfig.VERSION_CODE

Every nightly release has a new BuildConfig.VERSION_CODE, so the previous
code would not do the right thing.

Require the schema version to be explicitly set. While I'm here, provide
a clear set of guidelines as to what has to happen when the schema changes.

* Improve documentation links
2023-02-25 21:22:49 +01:00
UlrichKu
4ab305f3dc
2528: Do not remove notifications on general resume (#3312)
* 2528: Do not remove notifications on general resume

* 2528: Have notification removal in the right onResume
2023-02-25 21:18:03 +01:00
Levi Bard
f2b07196e6
Improve language list prioritization. (#3293)
Partially addresses #3277
2023-02-25 21:15:21 +01:00
Nik Clayton
4a0251800d
Fix lifecycle handling bug (#3319)
Fragments can go `onCreate` -> `onCreateView` -> `onViewCreated` -> `onDestroyView` without transitioning through `onStart`.

The previous code assumed `onStart` was always called. 

Se https://itnext.io/an-update-to-the-fragmentviewbindingdelegate-the-bug-weve-inherited-from-autoclearedvalue-7fc0a89fcae1
2023-02-25 21:06:22 +01:00
Eric Frohnhoefer
9e0ff78fb4
Fix media controller UI not showing during audio playback (#3286)
* Update ViewVideoFragment.kt

Testing
 - Open audio attachment: https://solarpunk.moe/@vv/109562659215759090
 - Ensure media control UI and alt text is shown once playback starts

Fixes #3261

* Fix commit issue

* Fix spacing
2023-02-23 19:41:16 +01:00
Nik Clayton
70092c8de2
Make "Up" and "Overflow" menu icons more visible in AccountProfile (#3272)
* Make "Up" and "Overflow" menu icons more visible in AccountProfile

The toolbar in AccountProfile is transparent, so any profile image the user
has chosen is shown under it.

This makes the "Up" and "Overflow" menu icons also have transparent
backgrouns.

Consequently, they can be hard to spot, or possibly invisible, on backgrounds
that are very dark or very light.

Fix this by compositing the icons in a LayerDrawable, with a circular
background identical to the surface colour. This ensures they stand out
against the background image, and blend in when the user scrolls.

* Get and reuse the background drawable

* Apply a smidgen of transparency
2023-02-23 19:30:27 +01:00
Danial Behzadi
837a91e12c Translated using Weblate (Persian)
Currently translated at 100.0% (566 of 566 strings)

Co-authored-by: Danial Behzadi <dani.behzi@ubuntu.com>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/fa/
Translation: Tusky/Tusky
2023-02-21 18:37:00 +00:00
Deleted User
766dab2173 Translated using Weblate (German)
Currently translated at 100.0% (566 of 566 strings)

Co-authored-by: Deleted User <noreply+263@weblate.org>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/de/
Translation: Tusky/Tusky
2023-02-21 18:37:00 +00:00
Mārtiņš Bruņenieks
5e3d6a8f97 Translated using Weblate (Latvian)
Currently translated at 95.0% (536 of 564 strings)

Co-authored-by: Mārtiņš Bruņenieks <martinsb@gmail.com>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/lv/
Translation: Tusky/Tusky
2023-02-21 18:37:00 +00:00
XoseM
d82200569e Translated using Weblate (Galician)
Currently translated at 100.0% (564 of 564 strings)

Co-authored-by: XoseM <xosem@disroot.org>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/gl/
Translation: Tusky/Tusky
2023-02-21 18:37:00 +00:00
Garutmaan Garuda
6923a4e06d Translated using Weblate (Sanskrit)
Currently translated at 85.1% (480 of 564 strings)

Co-authored-by: Garutmaan Garuda <garutmaangaruda@gmail.com>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/sa/
Translation: Tusky/Tusky
2023-02-21 18:37:00 +00:00
Hồ Nhất Duy
78a6bde25a Translated using Weblate (Vietnamese)
Currently translated at 100.0% (566 of 566 strings)

Translated using Weblate (Vietnamese)

Currently translated at 100.0% (564 of 564 strings)

Co-authored-by: Hồ Nhất Duy <mastoduy@gmail.com>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/vi/
Translation: Tusky/Tusky
2023-02-21 18:37:00 +00:00
Ihor Hordiichuk
2b92fabdc0 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (566 of 566 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (564 of 564 strings)

Co-authored-by: Ihor Hordiichuk <igor_ck@outlook.com>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/uk/
Translation: Tusky/Tusky
2023-02-21 18:37:00 +00:00
Sveinn í Felli
e6c5f61da6 Translated using Weblate (Icelandic)
Currently translated at 100.0% (564 of 564 strings)

Co-authored-by: Sveinn í Felli <sv1@fellsnet.is>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/is/
Translation: Tusky/Tusky
2023-02-21 18:37:00 +00:00
Eric
afebee1f27 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (566 of 566 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (564 of 564 strings)

Co-authored-by: Eric <alchemillatruth@purelymail.com>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/zh_Hans/
Translation: Tusky/Tusky
2023-02-21 18:37:00 +00:00
Manuel
b0df135b99 Translated using Weblate (Italian)
Currently translated at 99.2% (560 of 564 strings)

Co-authored-by: Manuel <mannivuwiki@gmail.com>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/it/
Translation: Tusky/Tusky
2023-02-21 18:37:00 +00:00
Gera, Zoltan
94a4926259 Translated using Weblate (Hungarian)
Currently translated at 100.0% (564 of 564 strings)

Co-authored-by: Gera, Zoltan <gerazo@manioka.hu>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/hu/
Translation: Tusky/Tusky
2023-02-21 18:37:00 +00:00
Paul Sanz
6a3cc8cbd2 Translated using Weblate (Spanish)
Currently translated at 100.0% (564 of 564 strings)

Co-authored-by: Paul Sanz <registro@polkillas.net>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/es/
Translation: Tusky/Tusky
2023-02-21 18:37:00 +00:00
Enzo Martín Segovia
3a151b7660 Translated using Weblate (Spanish)
Currently translated at 100.0% (564 of 564 strings)

Co-authored-by: Enzo Martín Segovia <enzo_seg@outlook.com>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/es/
Translation: Tusky/Tusky
2023-02-21 18:37:00 +00:00
Deleted User
37440b333e Translated using Weblate (German)
Currently translated at 100.0% (564 of 564 strings)

Co-authored-by: Deleted User <noreply+259@weblate.org>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/de/
Translation: Tusky/Tusky
2023-02-21 18:37:00 +00:00
puf
fe2cc4a8e5 Translated using Weblate (Welsh)
Currently translated at 100.0% (564 of 564 strings)

Co-authored-by: puf <puffinux@tutanota.com>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/cy/
Translation: Tusky/Tusky
2023-02-21 18:37:00 +00:00
Newidyn
dd89fe53c4 Translated using Weblate (Welsh)
Currently translated at 100.0% (564 of 564 strings)

Co-authored-by: Newidyn <grugallt@protonmail.ch>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/cy/
Translation: Tusky/Tusky
2023-02-21 18:37:00 +00:00
Ricard Torres
b5e33e5730 Translated using Weblate (Catalan)
Currently translated at 100.0% (564 of 564 strings)

Co-authored-by: Ricard Torres <ricard@ricard.dev>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/ca/
Translation: Tusky/Tusky
2023-02-21 18:37:00 +00:00
ButterflyOfFire
640a6faaae Translated using Weblate (French)
Currently translated at 84.3% (476 of 564 strings)

Translated using Weblate (Arabic)

Currently translated at 97.6% (551 of 564 strings)

Co-authored-by: ButterflyOfFire <butterflyoffire@protonmail.com>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/ar/
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/fr/
Translation: Tusky/Tusky
2023-02-21 18:37:00 +00:00
Nik Clayton
2974265c4a
Use the adapter position when responding to clicks on followed tags (#3334)
This ensures that the position is valid w.r.t. to the backing array.

Fixes https://github.com/tuskyapp/Tusky/issues/3333
2023-02-20 20:36:37 +01:00
Nik Clayton
15fb8ad43f
Update avatar size/placement for follow requests (#3280)
Use the same icon size/placement as other notifications.

Fixes https://github.com/tuskyapp/Tusky/issues/3279
2023-02-20 20:30:32 +01:00
Goooler
6cc79c8d75
Use unsafeLazy to simplify thread unsafe lazy initializations (#3276) 2023-02-20 20:14:54 +01:00
Nik Clayton
27f6976295
Add FAB to follow new hashtags from FollowedTagsActivity (#3275)
- Add a FAB for user interaction (hide on scroll if appropriate)
- Show a dialog to collect the new hashtag
- Autocomplete hashtags the same as when composing a status
2023-02-20 20:14:16 +01:00
Levi Bard
41d493e72a
Allow viewing of the account header image. (#3274)
Fixes #3254
2023-02-20 20:06:50 +01:00
Goooler
cfea5700b0
Code cleanups (#3264)
* Kotlin 1.8.10

https://github.com/JetBrains/kotlin/releases/tag/v1.8.10

* Migrate onActivityCreated to onViewCreated

* More final modifiers

* Java Cleanups

* Kotlin cleanups

* More final modifiers

* Const value TOOLBAR_HIDE_DELAY_MS

* Revert
2023-02-20 19:58:37 +01:00
Nik Clayton
52c98749e6
Fetch list title from second values in arguments (#3327)
Previous code was:

```
for (i in tabs.indices) {
    // ...
    if (tabs[i].id == LIST) {
        tab.contentDescription = tabs[i].arguments[1]
    } else {
        tab.setContentDescription(tabs[i].text)
    }
    // ...
```

When I converted it over, `i` was replaced with `position`, but I misread `tab.contentDescription = tabs[i].arguments[1]` as `tab.contentDescription = tabs[i].arguments[i]`.

Put the `1` back.
2023-02-16 20:43:44 +01:00
Nik Clayton
196ebdb386
Keep the tabs adapter over the life of the viewpager (#3255)
Make `tabs` `var` instead of `val` in `MainPagerAdapter` so it can be updated
when tabs change.

Then detach the `tabLayoutMediator`, update the tabs, and call
`notifyItemRangeChanged` in `setupTabs()`.

This fixes a bug (not sure if it's this code, or in ViewPager2) where
assigning a new adapter to the view pager seemed to result in a leak of one
or more fragments. This wasn't user-visible, but it's a leak, and it becomes
user-visible when fragments want to display menus.

This also fixes two other bugs:

1. Be on the left-most tab. Scroll down a bit. Then modify the tabs at
   "Account preferences > tabs", but keep the left-most tab as-is.

   Then go back to MainActivity. Your reading position in the left-most
   tab has been jumped to the top.

2. Be on any non-left-most tab. Then modify the tab list by reordering tabs
   (adding/removing tabs is also OK).

   Then go back to MainActivity. Your tab selection has been overridden,
   and the left-most tab has been selected.

Because the fragments are not destroyed unnecessarily your reading position
is retained. And it remembers the tab you had selected, and as long as that
tab is still present you will be returned to it, even if it's changed
position in the list.

Fixes https://github.com/tuskyapp/Tusky/issues/3251
2023-02-15 19:17:59 +01:00
XoseM
7c1a0ff5b3 Translated using Weblate (Galician)
Currently translated at 100.0% (560 of 560 strings)

Co-authored-by: XoseM <xosem@disroot.org>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/gl/
Translation: Tusky/Tusky
2023-02-14 20:07:20 +00:00
Hồ Nhất Duy
10c230332b Translated using Weblate (Vietnamese)
Currently translated at 100.0% (560 of 560 strings)

Co-authored-by: Hồ Nhất Duy <mastoduy@gmail.com>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/vi/
Translation: Tusky/Tusky
2023-02-14 20:07:20 +00:00
Aleksandr Yakovlev
aa685abe31 Translated using Weblate (Russian)
Currently translated at 77.3% (433 of 560 strings)

Co-authored-by: Aleksandr Yakovlev <keloero@oreolek.me>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/ru/
Translation: Tusky/Tusky
2023-02-14 20:07:20 +00:00
Eduardo
2dee16ac02 Translated using Weblate (Portuguese (Brazil))
Currently translated at 96.0% (538 of 560 strings)

Co-authored-by: Eduardo <edu200399lim@gmail.com>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/pt_BR/
Translation: Tusky/Tusky
2023-02-14 20:07:20 +00:00
Danial Behzadi
8ece903401 Translated using Weblate (Persian)
Currently translated at 100.0% (564 of 564 strings)

Translated using Weblate (Persian)

Currently translated at 100.0% (560 of 560 strings)

Co-authored-by: Danial Behzadi <dani.behzi@ubuntu.com>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/fa/
Translation: Tusky/Tusky
2023-02-14 20:07:20 +00:00
Deleted User
969e4e9f1a Translated using Weblate (German)
Currently translated at 100.0% (560 of 560 strings)

Co-authored-by: Deleted User <noreply+256@weblate.org>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/de/
Translation: Tusky/Tusky
2023-02-14 20:07:20 +00:00
Levi Bard
395e21c956
Add support for updating media description and focus point when editing statuses (#3215)
* Add support for updating media description and focus point when editing statuses

* Don't publish description/focus point updates via the standard api when editing a published post
2023-02-14 21:13:38 +01:00
David Edwards
98e5363692
Add trending tags (#3149)
* Add initial feature for viewing trending graphs. Currently only views hash tag trends.

Contains API additions, tab additions and a set of trending components.

* Add clickable system through a LinkListener. Duplicates a little code from SFragment.

* Add accessibility description.

* The background for the graph should match the background for black theme too.

* Add error handling through a state flow system using existing code as an example.

* Graphing: Use a primary and a secondary line. Remove under line fill. Apply line thickness. Dotted end of line.

* Trending changes: New layout for trending: Cell. Use ViewBinding. Add padding to RecyclerView to stop the FAB from hiding content. Multiple bugs in GraphView resolved. Wide (landscape, for example) will show 4 columns, portrait will show 2. Remove unused base holder class. ViewModel invalidate scoping changed. Some renaming to variables made. For uses and accounts, use longs. These could be big numbers eventually. TagViewHolder renamed to TrendingTagViewHolder.

* Trending changes: Remove old layout. Update cell textsizes and use proper string. Remove bad comment.

* Trending changes: Refresh the main drawer when the tabs are edited. This will allow the trending item to toggle.

* Trending changes: Add a trending activity to be able to view the trending data from the main drawer.

* Trending changes: The title text should be changed to Trending Hashtags.

* Trending changes: Add meta color to draw axis etc. Draw the date boundaries on the graph. Remove dates from each cell and place them in the list as a header. Graphs should be proportional to the highest historical value. Add a new interface to control whether the FAB should be visible (important when switching tabs, the state is lost). Add header to the adapter and viewdata structures. Add QOL extensions for getting the dates from history.

* Trending changes: Refresh FAB through the main activity and FabFragment interface. Trending has no FAB.

* Trending changes: Make graph proportional to the highest usage value. Fixes to the graph ratio calculations.

* Trending changes: KtLintFix

* Trending changes: Remove accidental build gradle change. Remove trending cases. Remove unused progress. Set drawer button addition explicitly to false, leaving the code there for future issue #3010. Remove unnecessary arguments for intent. Remove media preview preferences, there is nothing to preview. No padding between hashtag symbol and text. Do not ellipsize hashtags.

* Trending changes: Use bottomsheet slide in animation helper for opening the hashtag intent. Remove explicit layout height from the XML and apply it to the view holder itself. The height was not being respected in XML.

* Use some platform standards for styling

- Align on an 8dp grid
- Use android:attr for paddingStart and paddingEnd
- Use textAppearanceListItem variants
- Adjust constraints to handle different size containers

* Correct lineWidth calculations

Previous code didn't convert the value to pixels, so it was always displaying
as a hairline stroke, irrespective of the value in the layout file.

While I'm here, rename from lineThickness to lineWidth, to be consistent
with parameters like strokeWidth.

* Does not need to inherit from FabFragment

* Rename to TrendingAdapter

"Paging" in the adapter name is a misnomer here

* Clean up comments, use full class name as tag

* Simplify TrendingViewModel

- Remove unncessary properties
- Fetch tags and map in invalidate()
- emptyList() instead of listOf() for clarity

* Remove line dividers, use X-axis to separate content

Experiment with UI -- instead of dividers between each item, draw an explicit
x-axis for each chart, and add a little more vertical padding, to see if that
provides a cleaner separation between the content

* Adjust date format

- Show day and year
- Use platform attributes for size

* Locale-aware format of numbers

Format numbers < 100,000 by inserting locale-aware separators. Numbers larger
are scaled and have K, M, G, ... etc suffix appended.

* Prevent a crash if viewData is empty

Don't access viewData without first checking if it's empty. This can be the
case if the server returned an empty list for some reason, or the data has
been filtered.

* Filter out tags the user has filtered from their home timeline

Invalidate the list if the user's preferences change, as that may indicate
they've changed their filters.

* Experiment with alternative layout

* Set chart height to 160dp to align to an 8dp grid

* Draw ticks that are 5% the height of the x-axis

* Legend adjustments

- Use tuskyblue for the ticks
- Wrap legend components in a layout so they can have a dedicated background
- Use a 60% transparent background for the legend to retain legibility
  if lines go under it

* Bezier curves, shorter cell height

* More tweaks

- List tags in order of popularity, most popular first
- Make it clear that uses/accounts in the legend are totals, not current
- Show current values at end of the chart

* Hide FAB

* Fix crash, it's not always hosted in an ActionButtonActivity

* Arrange totals vertically in landscape layout

* Always add the Trending drawer menu if it's not a tab

* Revert unrelated whitespace changes

* One more whitespace revert

---------

Co-authored-by: Nik Clayton <nik@ngo.org.uk>
2023-02-14 19:52:11 +01:00
Conny Duck
f6141e3309 revert en-gb string update 2023-02-11 13:07:14 +01:00
Paul Sanz
a1effeb6d0 Translated using Weblate (Spanish)
Currently translated at 100.0% (560 of 560 strings)

Co-authored-by: Paul Sanz <registro@polkillas.net>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/es/
Translation: Tusky/Tusky
2023-02-11 11:55:18 +00:00
Mārtiņš Bruņenieks
94fb2c7487 Translated using Weblate (Latvian)
Currently translated at 94.6% (530 of 560 strings)

Co-authored-by: Mārtiņš Bruņenieks <martinsb@gmail.com>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/lv/
Translation: Tusky/Tusky
2023-02-09 12:35:55 +00:00
Eric
bec01cad2c Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (560 of 560 strings)

Co-authored-by: Eric <alchemillatruth@purelymail.com>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/zh_Hans/
Translation: Tusky/Tusky
2023-02-09 12:35:55 +00:00
Gera, Zoltan
a6c8c50b02 Translated using Weblate (Hungarian)
Currently translated at 100.0% (560 of 560 strings)

Co-authored-by: Gera, Zoltan <gerazo@manioka.hu>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/hu/
Translation: Tusky/Tusky
2023-02-09 12:35:55 +00:00
Ralf Thees
df56e3bdb8 Translated using Weblate (German)
Currently translated at 100.0% (560 of 560 strings)

Co-authored-by: Ralf Thees <ralf@herrthees.de>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/de/
Translation: Tusky/Tusky
2023-02-09 12:35:55 +00:00
Deleted User
174c503642 Translated using Weblate (German)
Currently translated at 100.0% (560 of 560 strings)

Co-authored-by: Deleted User <noreply+253@weblate.org>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/de/
Translation: Tusky/Tusky
2023-02-09 12:35:55 +00:00
Deleted User
3092c9b773 Translated using Weblate (German)
Currently translated at 100.0% (560 of 560 strings)

Co-authored-by: Deleted User <noreply+252@weblate.org>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/de/
Translation: Tusky/Tusky
2023-02-09 12:35:54 +00:00
puf
b1d44ce192 Translated using Weblate (English (United Kingdom))
Currently translated at 7.8% (44 of 560 strings)

Translated using Weblate (Welsh)

Currently translated at 100.0% (560 of 560 strings)

Co-authored-by: puf <puffinux@tutanota.com>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/cy/
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/en_GB/
Translation: Tusky/Tusky
2023-02-09 12:35:54 +00:00
GunChleoc
aa6de31a08 Translated using Weblate (Gaelic)
Currently translated at 100.0% (560 of 560 strings)

Co-authored-by: GunChleoc <fios@foramnagaidhlig.net>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/gd/
Translation: Tusky/Tusky
2023-02-09 12:35:54 +00:00
Lin
17893f5564 Translated using Weblate (Chinese (Traditional))
Currently translated at 87.1% (488 of 560 strings)

Co-authored-by: Lin <012akt97@ouo.4wrd.cc>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/zh_Hant/
Translation: Tusky/Tusky
2023-02-09 12:35:54 +00:00
Manuel
da21741e98 Translated using Weblate (Italian)
Currently translated at 100.0% (560 of 560 strings)

Translated using Weblate (Italian)

Currently translated at 95.8% (537 of 560 strings)

Co-authored-by: Manuel <mannivuwiki@gmail.com>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/it/
Translation: Tusky/Tusky
2023-02-09 12:35:54 +00:00
Ricard Torres
433ae40659 Translated using Weblate (Catalan)
Currently translated at 100.0% (560 of 560 strings)

Translated using Weblate (Catalan)

Currently translated at 100.0% (560 of 560 strings)

Translated using Weblate (Catalan)

Currently translated at 90.7% (508 of 560 strings)

Translated using Weblate (Catalan)

Currently translated at 76.7% (430 of 560 strings)

Co-authored-by: Ricard Torres <ricard@ricard.dev>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/ca/
Translation: Tusky/Tusky
2023-02-09 12:35:54 +00:00
Konrad Pozniak
15ff6191ae
Clean up Account adapters (#3202)
* make BlocksAdapter use viewbinding

* remove LoadingFooterViewHolder

* cleanup code

* move accountlist to component packes

* make FollowRequestsHeaderAdapter use viewbinding

* add license to MutesAdapter

* move accountlist to component packages

* use ConstraintLayout in item_blocked_user.xml

* support the bot badge everywhere

* cleanup code

* cleanup xml files

* ktlint

* ktlint
2023-02-04 20:29:13 +01:00
Konrad Pozniak
006f0de05c
Upgrade AndroidX dependencies (#3169)
* upgrade AndroidX dependencies

* use new @Upsert in InstanceDao

* fix crash because of new Room nullchecks

* make TimelineStatusEntity.reblogAccount a val as well
2023-02-04 20:22:29 +01:00
Nik Clayton
16df2bfe87
Be consistent about using sentence-case in notification setting titles (#3187) 2023-02-04 20:19:23 +01:00
Nik Clayton
a1494ecc68
Perform preference schema upgrades at startup (#3186)
* Perform preference schema upgrades at startup

Over time it can be desirable to change how preferences are interpreted.

Preferences might be removed, or renamed. Or the default value for a
preference might be changed.

When this happens it's important that users upgrading from one version to
the next (or jumping from one version to several versions ahead) get a
consistent experience. In particular:

- Preferences that no longer exist should be deleted
- Preferences that have been renamed should have the old preference values
  copied over
- If the user used the default value for the preference, and the default has
  changed, the previous default value should be explicitly set as their
  value for the preference

To support this, store a SCHEMA_VERSION as a preference. This is not exposed
to the user, and corresponds to the app's VERSION_CODE.

If the version code does not match the schema version then this is a newer
version of the app with older preferences that may need to be changed.

Those changes will be implemented in `upgradeSharedPreferences`.

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (552 of 552 strings)

Co-authored-by: Gera, Zoltan <gerazo@manioka.hu>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/hu/
Translation: Tusky/Tusky

* Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (552 of 552 strings)

Co-authored-by: Eric <alchemillatruth@purelymail.com>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/zh_Hans/
Translation: Tusky/Tusky

* Translated using Weblate (Ukrainian)

Currently translated at 100.0% (552 of 552 strings)

Co-authored-by: Ihor Hordiichuk <igor_ck@outlook.com>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/uk/
Translation: Tusky/Tusky

* Translated using Weblate (Vietnamese)

Currently translated at 100.0% (552 of 552 strings)

Co-authored-by: Hồ Nhất Duy <mastoduy@gmail.com>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/vi/
Translation: Tusky/Tusky

* Translated using Weblate (Belarusian)

Currently translated at 100.0% (552 of 552 strings)

Co-authored-by: Mikalai <mikalai.hryb@gmail.com>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/be/
Translation: Tusky/Tusky

* Translated using Weblate (Belarusian)

Currently translated at 100.0% (552 of 552 strings)

Co-authored-by: Andrej Zabavin <andre.zabavin@gmail.com>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/be/
Translation: Tusky/Tusky

* Translated using Weblate (Belarusian)

Currently translated at 100.0% (552 of 552 strings)

Co-authored-by: Mikalai <mikalai.hryb@gmail.com>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/be/
Translation: Tusky/Tusky

* Translated using Weblate (Belarusian)

Currently translated at 100.0% (552 of 552 strings)

Translated using Weblate (Belarusian)

Currently translated at 100.0% (552 of 552 strings)

Co-authored-by: xzFantom <xzfantom@gmail.com>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/be/
Translation: Tusky/Tusky

* Translated using Weblate (Japanese)

Currently translated at 91.3% (504 of 552 strings)

Co-authored-by: TAKAHASHI Shuuji <shuuji3@gmail.com>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/ja/
Translation: Tusky/Tusky

* Translated using Weblate (Icelandic)

Currently translated at 100.0% (552 of 552 strings)

Co-authored-by: Sveinn í Felli <sv1@fellsnet.is>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/is/
Translation: Tusky/Tusky

* Translated using Weblate (Belarusian)

Currently translated at 100.0% (552 of 552 strings)

Co-authored-by: Mikalai <mikalai.hryb@gmail.com>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/be/
Translation: Tusky/Tusky

* Lint

---------

Co-authored-by: Gera, Zoltan <gerazo@manioka.hu>
Co-authored-by: Eric <alchemillatruth@purelymail.com>
Co-authored-by: Ihor Hordiichuk <igor_ck@outlook.com>
Co-authored-by: Hồ Nhất Duy <mastoduy@gmail.com>
Co-authored-by: Mikalai <mikalai.hryb@gmail.com>
Co-authored-by: Andrej Zabavin <andre.zabavin@gmail.com>
Co-authored-by: xzFantom <xzfantom@gmail.com>
Co-authored-by: TAKAHASHI Shuuji <shuuji3@gmail.com>
Co-authored-by: Sveinn í Felli <sv1@fellsnet.is>
2023-02-04 20:19:01 +01:00
Goooler
3592318dc1
Modernize a bit (#3171)
* Remove redundant ignore file

* Add .gitattributes

* Generate new wrapper

* Apply plugins in `plugins`

* Adopt new dsl

* Enable stable config cache

* Ignore all build folders

* Enable build scan

* Disable buildFeatures flags by default

* Migrate to nonTransitive R class

* Tweak flags

* Bump AGP to 7.4.0

* Bump deps

* Run `ktlintFormat`

* Add an icon for IDEA to display

* Revert "Bump deps"

This reverts commit bc0d5b69d59f70289d5d5c4887a85e6af23cc662.

* Revert "Enable build scan"

This reverts commit 1568e5e84f1ee51064b3f426b1da0cf35fb67856.

* Remove com.android.library

* Enable Gradle cache

* Enable room incremental build

* Cleanups

* Cleanups

* Add .editorconfig

* Defer clean task

* Migrate `flavorDimensions`

* Merge instance-build.gradle into app's build.gradle

* Declare compileOptions & kotlinOptions

* Bump jvmTarget to 17

* Fix conflicts

* Xmx4g

* Rename output apks

* Revert "Bump jvmTarget to 17"

This reverts commit e4d1543bda65b6d2979ae0712bceee33fa8298a6.
2023-02-04 19:58:53 +01:00
Connyduck
5d1864452e Translated using Weblate (German)
Currently translated at 96.6% (541 of 560 strings)

Co-authored-by: Connyduck <weblate@connyduck.at>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/de/
Translation: Tusky/Tusky
2023-02-03 18:48:53 +00:00
Mārtiņš Bruņenieks
27b8e78a22 Translated using Weblate (Latvian)
Currently translated at 94.2% (528 of 560 strings)

Co-authored-by: Mārtiņš Bruņenieks <martinsb@gmail.com>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/lv/
Translation: Tusky/Tusky
2023-02-03 18:22:27 +00:00
Connyduck
3d6b5a8f8f Translated using Weblate (German)
Currently translated at 96.6% (541 of 560 strings)

Co-authored-by: Connyduck <weblate@connyduck.at>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/de/
Translation: Tusky/Tusky
2023-02-03 18:22:26 +00:00
puf
4054386566 Translated using Weblate (Welsh)
Currently translated at 100.0% (560 of 560 strings)

Co-authored-by: puf <puffinux@tutanota.com>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/cy/
Translation: Tusky/Tusky
2023-02-03 18:22:26 +00:00
Konrad Pozniak
ff79919d2a
prevent the app from getting into an invalid state when old shortcuts are used (#3252) 2023-02-03 19:21:33 +01:00
Konrad Pozniak
07a4e97e9b
fix crash in ViewThreadFragment (#3250) 2023-02-03 19:21:21 +01:00
Nik Clayton
fac62a638e
Set swipe scale factor to 2 (#3249)
Verified by enabling "Pointer Location" in the developer options, and then experimenting to see which angles trigger opens of the nav. drawer, and in a stock "Tabbed Activity" generated in Android Studio (New > Activity > Tabbed Activity) that uses ViewPager2.
2023-02-03 19:21:04 +01:00
Konrad Pozniak
6249dba467
improve avatars next to tabs (#3242) 2023-01-31 19:30:50 +01:00
Mārtiņš Bruņenieks
9d1651c254 Translated using Weblate (Latvian)
Currently translated at 91.9% (515 of 560 strings)

Co-authored-by: Mārtiņš Bruņenieks <martinsb@gmail.com>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/lv/
Translation: Tusky/Tusky
2023-01-31 18:22:07 +00:00
Elias Mårtenson
d1c9f4bb5d Translated using Weblate (Swedish)
Currently translated at 99.1% (555 of 560 strings)

Translated using Weblate (Swedish)

Currently translated at 98.0% (549 of 560 strings)

Co-authored-by: Elias Mårtenson <elias@dhsdevelopments.com>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/sv/
Translation: Tusky/Tusky
2023-01-31 18:22:07 +00:00
Eduardo
d24357eb4c Translated using Weblate (Portuguese (Brazil))
Currently translated at 95.7% (536 of 560 strings)

Co-authored-by: Eduardo <edu200399lim@gmail.com>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/pt_BR/
Translation: Tusky/Tusky
2023-01-31 18:22:07 +00:00
Przemysław Wilde
577d19aff1 Translated using Weblate (Polish)
Currently translated at 99.8% (559 of 560 strings)

Co-authored-by: Przemysław Wilde <przemyslawwilde@gmail.com>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/pl/
Translation: Tusky/Tusky
2023-01-31 18:22:07 +00:00
Grzegorz Cichocki
4ddab53802 Translated using Weblate (Polish)
Currently translated at 99.8% (559 of 560 strings)

Co-authored-by: Grzegorz Cichocki <grzegorz.cichocki@pollub.edu.pl>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/pl/
Translation: Tusky/Tusky
2023-01-31 18:22:07 +00:00
Quentí
5ee51e32ed Translated using Weblate (Occitan)
Currently translated at 100.0% (560 of 560 strings)

Co-authored-by: Quentí <quentinantonin@free.fr>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/oc/
Translation: Tusky/Tusky
2023-01-31 18:22:06 +00:00
puf
f2b3d570d9 Translated using Weblate (Welsh)
Currently translated at 100.0% (560 of 560 strings)

Translated using Weblate (Welsh)

Currently translated at 100.0% (560 of 560 strings)

Co-authored-by: puf <puffinux@tutanota.com>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/cy/
Translation: Tusky/Tusky
2023-01-31 18:22:06 +00:00
ButterflyOfFire
18218ad956 Translated using Weblate (French)
Currently translated at 85.1% (477 of 560 strings)

Translated using Weblate (Arabic)

Currently translated at 98.2% (550 of 560 strings)

Co-authored-by: ButterflyOfFire <butterflyoffire@protonmail.com>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/ar/
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/fr/
Translation: Tusky/Tusky
2023-01-31 18:22:06 +00:00
Aitor Salaberria
30a5991fa0 Translated using Weblate (Basque)
Currently translated at 83.0% (465 of 560 strings)

Translated using Weblate (Spanish)

Currently translated at 94.1% (527 of 560 strings)

Translated using Weblate (Basque)

Currently translated at 78.5% (440 of 560 strings)

Translated using Weblate (Basque)

Currently translated at 78.5% (440 of 560 strings)

Translated using Weblate (Basque)

Currently translated at 78.5% (440 of 560 strings)

Translated using Weblate (Basque)

Currently translated at 78.5% (440 of 560 strings)

Co-authored-by: Aitor Salaberria <trslbrr@gmail.com>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/es/
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/eu/
Translation: Tusky/Tusky
2023-01-31 18:22:06 +00:00
Hồ Nhất Duy
bbb639648c Translated using Weblate (Vietnamese)
Currently translated at 100.0% (560 of 560 strings)

Co-authored-by: Hồ Nhất Duy <mastoduy@gmail.com>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/vi/
Translation: Tusky/Tusky
2023-01-28 11:40:17 +00:00
Ihor Hordiichuk
f97ac85905 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (560 of 560 strings)

Co-authored-by: Ihor Hordiichuk <igor_ck@outlook.com>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/uk/
Translation: Tusky/Tusky
2023-01-28 11:40:17 +00:00
Eric
5c94dd49ed Translated using Weblate (Chinese (zh_SG))
Currently translated at 57.5% (322 of 560 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (560 of 560 strings)

Co-authored-by: Eric <alchemillatruth@purelymail.com>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/zh_Hans/
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/zh_SG/
Translation: Tusky/Tusky
2023-01-28 11:40:17 +00:00
Przemysław Wilde
aabd479340 Translated using Weblate (Polish)
Currently translated at 93.7% (525 of 560 strings)

Co-authored-by: Przemysław Wilde <przemyslawwilde@gmail.com>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/pl/
Translation: Tusky/Tusky
2023-01-28 11:40:17 +00:00