* Fix saving changes to statuses when editing
With the previous code backing out of a status editing operation where changes
had been made (whether it was editing an existing status, a scheduled status,
or a draft) would prompt the user to save the changes as a new draft.
See https://github.com/tuskyapp/Tusky/issues/2704 and
https://github.com/tuskyapp/Tusky/issues/2705 for more detail.
The fix:
- Create an enum to represent the four different kinds of edits that can
happen
- Editing a new status (i.e., composing it for the first time)
- Editing a posted status
- Editing a draft
- Editing a scheduled status
- Store this in ComposeOptions, and set it appropriately everywhere
ComposeOptions is created.
- Check the edit kind when backing out of ComposeActivity, and use this to
show one of three different dialogs as appropriate so the user can:
- Save as new draft or discard changes
- Continue editing or discard changes
- Update existing draft or discard changes
Also fix ComposeViewModel.didChange(), which erroneously reported false if the
old text started with the new text (e.g., if the old text was "hello, world"
and it was edited to "hello", didChange() would not consider that to be a
change).
Fixes https://github.com/tuskyapp/Tusky/issues/2704,
https://github.com/tuskyapp/Tusky/issues/2705
* Use orEmpty extension function
* Handle preference fragments using the framework
The previous code started new preference "screens" as activities, even though
each one hosted a single fragment.
Modify this to use the framework's support for swapping in/out different
preference fragments.
PreferencesActivity:
- Remove the code for launching tab and proxy preferences
- Remove the code for setting titles, each fragment is responsible for that
- Implement OnPreferenceStartFragmentCallback to swap fragments in/out with
the correct animation
PreferencesFragment:
- Use `fragment` property instead of `setOnPreferenceClickListener`
- Set the activity title when resuming
Everything else:
- Set the activity title when resuming
* Lint
* Use the commit extension function
* Fix off-by-one error in HttpHeaderLink
Link headers with multiple URLs with multiple parameters were being parsed
incorrectly.
Detected by adding unit tests ahead of converting to Kotlin.
* Convert util/HttpHeaderLink from Java to Kotlin
* Convert util/ThemeUtils from Java to Kotlin
* Convert util/TimestampUtils from Java to Kotlin
* Add tests for PairedList
* Convert util/PairedList from Java to Kotlin
* Implement feedback from PR
* Relicense as GPL
These aren't necessary for the app, and are overwritten with the actual style
in `BaseActivity.onCreate()`.
But if they're missing the Android Studio layout preview renderer crashes.
* Leave the "edit scheduled status" button enabled after clicking
If the user submits an edit to the scheduled status then this one will be deleted, the paging source will notice, the adapter will be notified in the normal way, and this binding will be reused.
Or the user backs out of the edit, and this adapter entry is still valid and should remain clickable.
Fixes https://github.com/tuskyapp/Tusky/issues/2705
* Remove unnecessary parameter.
* Remove unnecessary import
* Fix auto play when swiping between attachments
Fixes an issue where attachment doesn't autoplay when swiping left/right from initial attachment.
Fixes#3066
* Fix lint error for wild card imports
* Convert AccountViewHolder from Java to Kotlin
Use view binding in the converted code, which requires small changes in code
that calls constructors.
Pass showBotOverlays as a parameter, rather than having the code reach in to
the shared preferences, fixing a layering violation. This affects callers
and classes derived from AccountAdapter.
* Use 2-arg getString
* Simplify setting bot badge indicator
- Specify the drawable in the XML
- Use visible() to set visibility
- Rename ID to account_bot_badge to make it clearer that this is all it is for
* Use lateinit to avoid needing !! later
* Remove rxjava from API calls used by AccountListFragment
* Remove rxjava from API calls used by AccountViewModel::changeRelationship()
The affected API functions are also called from
- ReportViewModel.kt
- SearchViewModel.kt
- AccountListFragment.kt
- SFragment.java
- TimelineCases.kt
so they have also been updated.
This change requires bridging from Java code to Kotlin `suspend` functions,
by creating wrappers for the `mute` and `block` functions that can be
called from Java and create a coroutine scope.
I've deliberately made this fairly ugly so that it sticks out and can be
removed later.
* Use "Throwable" type and name
* Delete 46.json
Not sure where this came from.
* Emit log messages with the correct tag
* Add another log tag, and lint
* Move viewModelScope.launch in to changeRelationshop()
Currently translated at 15.5% (83 of 535 strings)
Translated using Weblate (Belarusian)
Currently translated at 9.3% (50 of 534 strings)
Co-authored-by: xzFantom <xzfantom@gmail.com>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/be/
Translation: Tusky/Tusky
Currently translated at 100.0% (535 of 535 strings)
Translated using Weblate (Turkish)
Currently translated at 99.8% (533 of 534 strings)
Co-authored-by: Umit Kabuli <umitkabuli@gmail.com>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/tr/
Translation: Tusky/Tusky
Currently translated at 100.0% (534 of 534 strings)
Translated using Weblate (Welsh)
Currently translated at 98.6% (527 of 534 strings)
Co-authored-by: Rhoslyn Prys <post@meddal.com>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/cy/
Translation: Tusky/Tusky
Currently translated at 100.0% (535 of 535 strings)
Translated using Weblate (Vietnamese)
Currently translated at 100.0% (534 of 534 strings)
Translated using Weblate (Vietnamese)
Currently translated at 100.0% (532 of 532 strings)
Co-authored-by: Hồ Nhất Duy <duy@tutamail.com>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/vi/
Translation: Tusky/Tusky
Currently translated at 100.0% (535 of 535 strings)
Translated using Weblate (Ukrainian)
Currently translated at 100.0% (534 of 534 strings)
Translated using Weblate (Ukrainian)
Currently translated at 100.0% (533 of 533 strings)
Translated using Weblate (Ukrainian)
Currently translated at 100.0% (532 of 532 strings)
Co-authored-by: Ihor Hordiichuk <igor_ck@outlook.com>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/uk/
Translation: Tusky/Tusky
Currently translated at 100.0% (534 of 534 strings)
Translated using Weblate (Icelandic)
Currently translated at 100.0% (532 of 532 strings)
Co-authored-by: Sveinn í Felli <sv1@fellsnet.is>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/is/
Translation: Tusky/Tusky
Currently translated at 100.0% (535 of 535 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (534 of 534 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (533 of 533 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (532 of 532 strings)
Co-authored-by: Eric <alchemillatruth@purelymail.com>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/zh_Hans/
Translation: Tusky/Tusky
Currently translated at 100.0% (534 of 534 strings)
Translated using Weblate (Turkish)
Currently translated at 99.6% (530 of 532 strings)
Co-authored-by: Ümit Solmaz <usnotv@gmail.com>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/tr/
Translation: Tusky/Tusky
Currently translated at 100.0% (535 of 535 strings)
Translated using Weblate (Swedish)
Currently translated at 100.0% (534 of 534 strings)
Translated using Weblate (Swedish)
Currently translated at 100.0% (533 of 533 strings)
Translated using Weblate (Swedish)
Currently translated at 100.0% (532 of 532 strings)
Co-authored-by: Jan Lindblom <janlindblom@fastmail.fm>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/sv/
Translation: Tusky/Tusky
* issue 2890: Add an "ALT" sticker to the media preview container if there are descriptions
* issue 2890: Use end and start for positioning
* issue 2890: Adapt to new media view group
* issue 2890: Use an indicator overlay for every (single) preview image
* issue 2890: Reduce radius to match that of the preview layout
* issue 2890: Remove (again) unused code
* issue 2890: Set visibility in any case
* issue 2890: Use a translatable text for ALT
* issue 2890: Show ALT flag only when showing media
* issue 2890: Call doOnLayout on the layout wrapper
* Add post editing capability
* Don't try to reprocess already uploaded attachments.
Fixes editing posts with existing media
* Don't mark post edits as modified until editing occurs
* Disable UI for things that can't be edited when editing a post
* Finally convert SFragment to kotlin
* Use api endpoint for fetching status source for editing
* Apply review feedback
* fix crash in TouchDelegateHelper when not all views are available
* filter views before passing to TouchDelegateHelper
* remove unused import
* fix indentation
* replace hard-coded strings with existing constants
* proxy port
* * custom proxy port and hostname inputs
* typesafety, refactor, linting, unit tests
* relocate ProxyConfiguration in app structure
* remove unused editTextPreference fn
* allow preference category to have no title
* refactor proxy prefs hierarchy/dependency
On smaller devices the notification filter listview may be longer than the
screen height, and pushes the "Apply" button out of sight.
Fix this by:
- Set the height of the listview to 0dp and its layout_weight to 1
- Set the layout_weight of the button to 0
This ensures the button always appears (because the listview height is 0dp)
and the listview then expands to fill any remaining space (because the
layout_weight is 1).
Fixes https://github.com/tuskyapp/Tusky/issues/2985
* Use light/dark mode colors for image description text
This is an accessibility issue -- in light mode (which should have dark text
on a light background) the text color was hardcoded to light grey and the
background color was a semi-transparent black.
Fixes https://github.com/tuskyapp/Tusky/issues/2983.
* Update app/src/main/res/drawable/ic_drag_indicator_horiz_24dp.xml
Co-authored-by: Konrad Pozniak <connyduck@users.noreply.github.com>
Co-authored-by: Konrad Pozniak <connyduck@users.noreply.github.com>
Currently translated at 100.0% (531 of 531 strings)
Translated using Weblate (Vietnamese)
Currently translated at 100.0% (529 of 529 strings)
Co-authored-by: Hồ Nhất Duy <duy@tutamail.com>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/vi/
Translation: Tusky/Tusky
Currently translated at 100.0% (531 of 531 strings)
Translated using Weblate (Icelandic)
Currently translated at 100.0% (529 of 529 strings)
Co-authored-by: Sveinn í Felli <sv1@fellsnet.is>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/is/
Translation: Tusky/Tusky
Currently translated at 78.2% (414 of 529 strings)
Co-authored-by: batuhanakkurt <batuhanakkurt000@gmail.com>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/tr/
Translation: Tusky/Tusky
Currently translated at 99.0% (524 of 529 strings)
Translated using Weblate (German)
Currently translated at 99.2% (523 of 527 strings)
Co-authored-by: Vri <vrifox@vrifox.cc>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/de/
Translation: Tusky/Tusky
Currently translated at 100.0% (531 of 531 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (529 of 529 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (527 of 527 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (525 of 525 strings)
Co-authored-by: Eric <alchemillatruth@purelymail.com>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/zh_Hans/
Translation: Tusky/Tusky
Currently translated at 100.0% (531 of 531 strings)
Translated using Weblate (Swedish)
Currently translated at 99.8% (530 of 531 strings)
Translated using Weblate (Swedish)
Currently translated at 100.0% (529 of 529 strings)
Translated using Weblate (Swedish)
Currently translated at 100.0% (527 of 527 strings)
Translated using Weblate (Swedish)
Currently translated at 100.0% (525 of 525 strings)
Co-authored-by: Jan Lindblom <janlindblom@fastmail.fm>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/sv/
Translation: Tusky/Tusky
Currently translated at 100.0% (531 of 531 strings)
Translated using Weblate (Ukrainian)
Currently translated at 100.0% (529 of 529 strings)
Translated using Weblate (Ukrainian)
Currently translated at 100.0% (527 of 527 strings)
Translated using Weblate (Ukrainian)
Currently translated at 100.0% (525 of 525 strings)
Translated using Weblate (Ukrainian)
Currently translated at 100.0% (507 of 507 strings)
Co-authored-by: Ihor Hordiichuk <igor_ck@outlook.com>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/uk/
Translation: Tusky/Tusky
Currently translated at 99.8% (526 of 527 strings)
Translated using Weblate (Occitan)
Currently translated at 98.2% (516 of 525 strings)
Translated using Weblate (Occitan)
Currently translated at 97.1% (510 of 525 strings)
Translated using Weblate (Occitan)
Currently translated at 96.7% (499 of 516 strings)
Translated using Weblate (Occitan)
Currently translated at 94.3% (486 of 515 strings)
Translated using Weblate (Occitan)
Currently translated at 94.1% (485 of 515 strings)
Translated using Weblate (Occitan)
Currently translated at 93.3% (477 of 511 strings)
Translated using Weblate (Occitan)
Currently translated at 91.3% (463 of 507 strings)
Co-authored-by: Quentí <quentinantonin@free.fr>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/oc/
Translation: Tusky/Tusky
* issue 2890: Show a warning icon if media description is missing
* issue 2890: Remove disturbing additional signs
* issue 2890: Add another icon; use a snackbar; change wording; use orange as color
* issue 2890: Remove now unneeded new resource
* issue 2890: Use a toast (also) to avoid elevation problems
* issue 2890: Use snackbar with elevation again; refactor a bit
* Convert NotificationsFragment to use view binding
* Use requireContext() in places a context is required
Removes a nullness warning.
* Simplify code by using .sublist() and .contains()
Removes a lint warning.
* Add @NonNull annotations to onViewTag and onViewAccount
* Use consistent comment styles
* Add a menu option to mute / filter a hashtag from a status list
Un/muting uses the "home" filter
* Set the initial mute button visibility from existing filters
Check the user's filters to see if the tag is already filtered from HOME.
If it is then the initial button is to unmute it. If it isn't then the
initial button is to mute it.
* Avoid "mute tag" menu items "popping" in
- Initial state shows the "mute" option, disabled
- Update the state after the API call completes
* Support a swipe down to dismiss video
Images can already be dismissed with a swipe, this adds the same
functionality to videos.
- Add a VideoActionsListener interface for the hosting activity to dismiss
the fragment
- Add a gesture listener for swipes
- Dismiss the fragment if a swipe has a greated Y component than X
Fixes https://github.com/tuskyapp/Tusky/issues/2833
* Scale the video view when dragging
Provides identical visual feedback to the same operation on images.
* Add editedAt field to Status
* Status: Display indicators of edited posts
* Annotate edited posts in the Status description
* Cache info that post has been edited
* Add roundoff threshold for "now" (new string resource) output in getRelativeTimeSpanString
* added tests
* added string resource translation for `status_created_at_now` in DE, ES, JA
* fixed ktlint issues
* use resource file in test, linting passes
* 501ms and 999ms now show "now" instead of "0s"
The "Enable swipe gesture to switch between tabs" preference was ignored
on the tabs on a profile page ("Posts", "With Replies", "Pinned", "Media"),
and search ("Posts", "Accounts", "Hashtags").
Fix this.
While I'm here, replace a string for the preference name in MainActivity.kt
with a constant.
Fixes https://github.com/tuskyapp/Tusky/issues/2874.
* Add view for browsing and unfollowing followed hashtags.
Implements #2785
* Improve list interface
* Remove superfluous suspend modifier
* Migrate to paginated loading for followed tags view
* Update app/src/main/java/com/keylesspalace/tusky/components/followedtags/FollowedTagsViewModel.kt
Co-authored-by: Konrad Pozniak <connyduck@users.noreply.github.com>
* Fix unhandled exception when opening the followed tags view while offline
Co-authored-by: Konrad Pozniak <connyduck@users.noreply.github.com>
Currently translated at 99.2% (503 of 507 strings)
Translated using Weblate (German)
Currently translated at 99.2% (503 of 507 strings)
Co-authored-by: Connyduck <weblate@connyduck.at>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/de/
Translation: Tusky/Tusky
Currently translated at 96.8% (491 of 507 strings)
Co-authored-by: ButterflyOfFire <butterflyoffire@protonmail.com>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/fr/
Translation: Tusky/Tusky
Currently translated at 100.0% (507 of 507 strings)
Translated using Weblate (Persian)
Currently translated at 99.6% (505 of 507 strings)
Co-authored-by: Danial Behzadi <dani.behzi@ubuntu.com>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/fa/
Translation: Tusky/Tusky
Currently translated at 100.0% (507 of 507 strings)
Translated using Weblate (Gaelic)
Currently translated at 99.8% (506 of 507 strings)
Co-authored-by: GunChleoc <fios@foramnagaidhlig.net>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/gd/
Translation: Tusky/Tusky
Currently translated at 100.0% (507 of 507 strings)
Translated using Weblate (Ukrainian)
Currently translated at 100.0% (506 of 506 strings)
Co-authored-by: Ihor Hordiichuk <igor_ck@outlook.com>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/uk/
Translation: Tusky/Tusky
* Fix duplicated language entries from system and app language sets.
Closes#2900
* Prefer modern language codes.
Closes#2903
* Synchronize per-account default posting language with server.
Closes#2902
* Allow users to post in languages android doesn't know about yet (e.g. toki pona)
* Always put the preselected language at the top of the list
* Use the appcompat style for Toolbar. Fixes subtitle vertical cropping.
* Reformat XML.
Co-authored-by: Martin Marconcini <martin.marconcini.rodriguez@nl.abnamro.com>
Currently translated at 85.2% (429 of 503 strings)
Co-authored-by: Gabriel Beecham <gabriel.beecham@gmail.com>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/ga/
Translation: Tusky/Tusky
Currently translated at 100.0% (506 of 506 strings)
Translated using Weblate (Swedish)
Currently translated at 100.0% (503 of 503 strings)
Co-authored-by: Jan Lindblom <janlindblom@fastmail.fm>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/sv/
Translation: Tusky/Tusky
Currently translated at 97.0% (488 of 503 strings)
Added translation using Weblate (Indonesian)
Co-authored-by: Connyduck <weblate@connyduck.at>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/de/
Translation: Tusky/Tusky
Currently translated at 85.2% (429 of 503 strings)
Translated using Weblate (Irish)
Currently translated at 82.2% (412 of 501 strings)
Co-authored-by: Gabriel Beecham <gabriel.beecham@gmail.com>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/ga/
Translation: Tusky/Tusky
Currently translated at 100.0% (503 of 503 strings)
Translated using Weblate (Norwegian Bokmål)
Currently translated at 100.0% (501 of 501 strings)
Co-authored-by: Vegard Skjefstad <vegard@vegard.net>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/nb_NO/
Translation: Tusky/Tusky
Currently translated at 96.8% (485 of 501 strings)
Co-authored-by: Alexander Skwar <com+weblate.tusky.app@skwar.me>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/de/
Translation: Tusky/Tusky
Currently translated at 100.0% (501 of 501 strings)
Translated using Weblate (Vietnamese)
Currently translated at 100.0% (501 of 501 strings)
Co-authored-by: Hồ Nhất Duy <kantcer@gmail.com>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/vi/
Translation: Tusky/Tusky
Currently translated at 98.0% (491 of 501 strings)
Co-authored-by: ButterflyOfFire <butterflyoffire@protonmail.com>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/fr/
Translation: Tusky/Tusky
Currently translated at 87.8% (440 of 501 strings)
Translated using Weblate (Welsh)
Currently translated at 86.6% (434 of 501 strings)
Co-authored-by: Newidyn <grugallt@protonmail.ch>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/cy/
Translation: Tusky/Tusky
* update to Api 33, fix some deprecations
* fix deprecated serializable/parcelable methods
* ask for notification permission
* fix code formatting
* add back comment in PreferencesActivity
* Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (500 of 500 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (496 of 496 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 (Norwegian Bokmål)
Currently translated at 100.0% (500 of 500 strings)
Translated using Weblate (Norwegian Bokmål)
Currently translated at 100.0% (496 of 496 strings)
Co-authored-by: Vegard Skjefstad <vegard@vegard.net>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/nb_NO/
Translation: Tusky/Tusky
* Translated using Weblate (Vietnamese)
Currently translated at 100.0% (500 of 500 strings)
Translated using Weblate (Vietnamese)
Currently translated at 100.0% (496 of 496 strings)
Co-authored-by: Hồ Nhất Duy <kantcer@gmail.com>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/vi/
Translation: Tusky/Tusky
* Translated using Weblate (Galician)
Currently translated at 100.0% (496 of 496 strings)
Co-authored-by: XoseM <xosem@disroot.org>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/gl/
Translation: Tusky/Tusky
* Translated using Weblate (Ukrainian)
Currently translated at 100.0% (500 of 500 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 (Bulgarian)
Currently translated at 86.8% (434 of 500 strings)
Co-authored-by: Delian <iirumamiu@protonmail.com>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/bg/
Translation: Tusky/Tusky
* Translated using Weblate (Dutch)
Currently translated at 100.0% (500 of 500 strings)
Co-authored-by: joenepraat <joenepraat@posteo.org>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/nl/
Translation: Tusky/Tusky
Co-authored-by: Eric <alchemillatruth@purelymail.com>
Co-authored-by: Vegard Skjefstad <vegard@vegard.net>
Co-authored-by: Hồ Nhất Duy <kantcer@gmail.com>
Co-authored-by: XoseM <xosem@disroot.org>
Co-authored-by: Ihor Hordiichuk <igor_ck@outlook.com>
Co-authored-by: Delian <iirumamiu@protonmail.com>
Co-authored-by: joenepraat <joenepraat@posteo.org>
* Correctly restore instance state in compose activity
Store post visiblity, schedule time, and visibility of content warning
field to instance state and restore upon restoration.
* Remove redundant line
* Preference to disable multiple-login usernames (with problems)
* Fix problem where 'show self username disambiguation' does not take effect immediately because MainActivity needed to be restarted
* Make 'show username in toolbars' a 3-option selector, default when multiple accounts logged in
* Move SHOW_SELF_USERNAME higher in preference fragment
Currently translated at 72.5% (359 of 495 strings)
Translated using Weblate (Welsh)
Currently translated at 67.6% (335 of 495 strings)
Co-authored-by: puf <puffinux@tutanota.com>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/cy/
Translation: Tusky/Tusky
Currently translated at 100.0% (495 of 495 strings)
Co-authored-by: idontwanttohaveausername <bydlanm@outlook.com>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/uk/
Translation: Tusky/Tusky
Currently translated at 100.0% (495 of 495 strings)
Translated using Weblate (Vietnamese)
Currently translated at 100.0% (493 of 493 strings)
Co-authored-by: Hồ Nhất Duy <kantcer@gmail.com>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/vi/
Translation: Tusky/Tusky
Currently translated at 100.0% (495 of 495 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (493 of 493 strings)
Co-authored-by: Eric <alchemillatruth@purelymail.com>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/zh_Hans/
Translation: Tusky/Tusky
Currently translated at 100.0% (495 of 495 strings)
Translated using Weblate (Ukrainian)
Currently translated at 100.0% (493 of 493 strings)
Translated using Weblate (Ukrainian)
Currently translated at 100.0% (492 of 492 strings)
Co-authored-by: Ihor Hordiichuk <igor_ck@outlook.com>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/uk/
Translation: Tusky/Tusky
* Show explanation atop focus set dialog
* Update app/src/main/res/layout/dialog_focus.xml
Per Connyduck suggestion
Co-authored-by: Konrad Pozniak <connyduck@users.noreply.github.com>
Co-authored-by: Konrad Pozniak <connyduck@users.noreply.github.com>
* Attempt-zero implementation of a "focus" feature for image attachments. Choose "Set focus" in the attachment menu, tap once to select focus point (no visual feedback currently), tap "OK". Works in tests.
* Remove code duplication between 'update description' and 'update focus'
* Fix ktlint/bitrise failures
* Make updateMediaItem private
* When focus is set on a post attachment the preview focuses correctly. ProgressImageView now inherits from MediaPreviewImageView.
* Replace use of PointF for Focus where focus is represented, fix ktlint
* Substitute 'focus' for 'focus point' in strings
* First attempt draw focus point. Only updates on initial load. Modeled on code from RoundedCorners builtin from Glide
* Redraw focus after each tap
* Dark curtain where focus isn't (now looks like mastosoc)
* Correct ktlint for FocusDialog
* draft: switch to overlay for focus indicator
* Draw focus circle, but ImageView and FocusIndicatorView seem to share a single canvas
* Switch focus circle to path approach
* Correctly scale, save and load focuses. Clamp to visible area. Focus editor looks and feels right
* ktlint fixes and comments
* Focus indicator drawing should use device-independent pixels
* Shrink focus window when it gets unattractively tall (no linting, misbehaves on wide aspect ratio screens)
* Correct max-height behavior for screens in landscape mode
* Focus attachment result is are flipped on x axis; fix this
* Correctly thread focus through on scheduled posts, redrafted posts, and drafts (but draft focus is lost on post)
* More focus ktlint fixes
* Fix specific case where a draft is given a focus, then deleted, then posted in that order
* Fix accidental file change in focus PR
* ktLint fix
* Fix property style warnings in focus
* Fix remaining style warnings from focus PR
Co-authored-by: Conny Duck <k.pozniak@gmx.at>
* Show target domains for non-mention/non-hashtag links where the target domain is not provided or differs from the domain in the text.
Addresses #2694
* Add link signifier to the marked-up domain
* Back down on validating hashtags and mentions, don't markup _any_ urls where the text starts with #/@
Currently translated at 99.3% (488 of 491 strings)
Translated using Weblate (Italian)
Currently translated at 99.3% (488 of 491 strings)
Co-authored-by: Luca <f5e54431-cf3e-4a72-afcd-66ad76a38c19@anonaddy.me>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/it/
Translation: Tusky/Tusky
* initial setup
* add spacing between images
* use blurhash
* handle hidden state and show video indicator
* handle item clicks
* small cleanup
* move SquareImageView into account.media package
* fix build
* improve AccountMediaGridAdapter
* handle loadstate, errors and refreshing
* remove commented out code
* log error
* show audio attachments with icon
* fix glitchy transition animation
* set image Description on imageview
* show toast with media description on long press
* Fix broken timeline when there are only expired filters
The issue happened when the only applicable filters are expired. There
was a check to not produce an empty regex when there are no filters but
it was done before removing expired filters so we would produce an
empty regex that would match (and remove) everything and the timeline
would get stuck.
* Make a mini-optimization for FilterModel
* Add UI for selecting post language
* Apply selected language when sending status
* Save/restore post language with drafts
* Fall back to english if the configured language isn't found in the locale list (no-NB)
* Remove comment about no_NB
* Move language dropdown to top of compose view
* Preserve language when redrafting
* Set default language to target post's language when replying
* Add Tusky license header to new source file
* Tweak language dropdown button width
* Show filter expiration in list
* Add support for setting and updating the duration of a filter
* Add tests for duration conversion math
* Refactor network wrapper code
* Mark updated mastodon api functions as suspend
* Avoid creating unnecessary Date objects
* Apply suggestions to filter dialog layout
Currently translated at 100.0% (489 of 489 strings)
Translated using Weblate (Vietnamese)
Currently translated at 100.0% (489 of 489 strings)
Co-authored-by: Hồ Nhất Duy <kantcer@gmail.com>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/vi/
Translation: Tusky/Tusky
Currently translated at 99.5% (487 of 489 strings)
Translated using Weblate (Norwegian Bokmål)
Currently translated at 99.7% (488 of 489 strings)
Co-authored-by: Connyduck <weblate@connyduck.at>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/nb_NO/
Translation: Tusky/Tusky
* initial class setup
* handle events and filters
* handle status state changes
* code formatting
* fix status filtering
* cleanup code a bit
* implement removeAllByAccountId
* move toolbar into fragment, implement menu
* error and load state handling
* fix pull to refresh
* implement reveal button
* use requireContext() instead of context!!
* jump to detailed status
* add ViewThreadViewModelTest
* fix ktlint
* small code improvements (thx charlag)
* add testcase for toggleRevealButton
* add more state change testcases to ViewThreadViewModel
* Add support for following hashtags. Addresses #2637
* Update rxjava to coroutines
* Update new tag api to use suspend functions
* Update hashtag unfollow icon
* Set correct tint on hashtag follow/unfollow icons
* Translate hashtag follow/unfollow error messages
* Toast => Snackbar
* Remove unnecessary view lookup
Currently translated at 100.0% (489 of 489 strings)
Translated using Weblate (German)
Currently translated at 100.0% (489 of 489 strings)
Co-authored-by: Connyduck <weblate@connyduck.at>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/de/
Translation: Tusky/Tusky
* remove megabyte counts from file size error messages
The file size limits depend on the server; change strings to reflect that.
* show real file size limits instead of assuming Mastodon defaults
* correct previous commit
* correct previous commit (again)
* remove megabyte counts from file size error messages
The file size limits depend on the server; change strings to reflect that.
* Translated using Weblate (Galician)
Currently translated at 100.0% (489 of 489 strings)
Co-authored-by: XoseM <xosem@disroot.org>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/gl/
Translation: Tusky/Tusky
* Translated using Weblate (Finnish)
Currently translated at 5.5% (1 of 18 strings)
Translation: Tusky/Tusky description
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky-app/fi/
* correct previous commit
correct previous commit (again)
fixed type error caused by previous commits
* fix lint error...
* Update strings.xml
* improve code, calculate correct max size and format it
Co-authored-by: Laura <the-ceo-of-antifa@protonmail.com>
Co-authored-by: XoseM <xosem@disroot.org>
Co-authored-by: Konrad Pozniak <k.pozniak@gmx.at>
Currently translated at 51.9% (254 of 489 strings)
Co-authored-by: Laura Aléanor <the-ceo-of-antifa@protonmail.com>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/fi/
Translation: Tusky/Tusky
Currently translated at 100.0% (489 of 489 strings)
Co-authored-by: Konstantin <konstantin.tutsch@disroot.org>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/de/
Translation: Tusky/Tusky
* 2616: Save Scheduled Time for Drafts.
Signed-off-by: Martin Marconcini <martin.marconcini.rodriguez@nl.abnamro.com>
* Revert 39.json schema to the original state before my changes.
* handle media size instance limits
* remove unused attributes from Instance entity
* support max_media_attachments
* support pleroma field limits, remove max_bio_chars support
* improve field input margin
* fix tests
* MAX_ACCOUNT_FIELDS -> DEFAULT_MAX_ACCOUNT_FIELDS
* improve "add field" button behavior
* fix copy paste mistake in AccountFieldEditAdapter
* refactor sendStatus to be a suspending function
Currently translated at 100.0% (488 of 488 strings)
Co-authored-by: ButterflyOfFire <butterflyoffire@protonmail.com>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/fr/
Translation: Tusky/Tusky
Currently translated at 100.0% (488 of 488 strings)
Translated using Weblate (French)
Currently translated at 100.0% (488 of 488 strings)
Co-authored-by: codl <codl@codl.fr>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/fr/
Translation: Tusky/Tusky
The new message for the crop feature, "The attachment could not be edited.", turned out to be awkward in some languages (French) where according to the translator it would be better to more specifically say "The image could not be edited." (as currently we can only edit images). Patch replaces error_media_edit_failed with a error_image_edit_failed and deletes the existing error_media_edit_failed-s.
Only use distributors which are compatible with FEATURE_BYTES_MESSAGE
This is because Mastodon sends notifications that are arbritary bytes,
not UTF-8. This causes issues in older versions of UnifiedPush
distributors and providers that don't support FEATURE_BYTES_MESSAGE
Loading of statuses and loading of filters is an "intended" race:
we want to display statuses first, especially if they are cached.
Unfortunately we do not cache filters themselves so when we load cached
statuses we do not apply filters.
One part of the solution is to re-filter the statuses once we fetch the
filters. This commit implements it. Caching of filters is not included
yet.
* Fix unintended [mismatched] show-replies preference and add a comment to prevent confusion.
* Change the key on TAB_FILTER_HOME_REPLIES to reset everyone's value here once.
Currently translated at 98.7% (482 of 488 strings)
Co-authored-by: Luca <f5e54431-cf3e-4a72-afcd-66ad76a38c19@anonaddy.me>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/it/
Translation: Tusky/Tusky
Currently translated at 97.7% (477 of 488 strings)
Translated using Weblate (Portuguese (Portugal))
Currently translated at 98.1% (477 of 486 strings)
Co-authored-by: Bruno Miguel <brunoalexandremiguel@gmail.com>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/pt_PT/
Translation: Tusky/Tusky
Currently translated at 100.0% (488 of 488 strings)
Translated using Weblate (Hungarian)
Currently translated at 99.5% (484 of 486 strings)
Co-authored-by: Gera, Zoltan <gerazo@manioka.hu>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/hu/
Translation: Tusky/Tusky
Currently translated at 99.5% (486 of 488 strings)
Translated using Weblate (Gaelic)
Currently translated at 99.5% (483 of 485 strings)
Co-authored-by: GunChleoc <fios@foramnagaidhlig.net>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/gd/
Translation: Tusky/Tusky
Currently translated at 100.0% (488 of 488 strings)
Translated using Weblate (Norwegian Bokmål)
Currently translated at 100.0% (486 of 486 strings)
Translated using Weblate (Norwegian Bokmål)
Currently translated at 100.0% (485 of 485 strings)
Co-authored-by: Vegard Skjefstad <vegard@vegard.net>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/nb_NO/
Translation: Tusky/Tusky
Currently translated at 98.7% (479 of 485 strings)
Co-authored-by: ButterflyOfFire <butterflyoffire@protonmail.com>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/fr/
Translation: Tusky/Tusky
Currently translated at 100.0% (488 of 488 strings)
Translated using Weblate (Vietnamese)
Currently translated at 100.0% (486 of 486 strings)
Translated using Weblate (Vietnamese)
Currently translated at 100.0% (485 of 485 strings)
Co-authored-by: Hồ Nhất Duy <kantcer@gmail.com>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/vi/
Translation: Tusky/Tusky
Currently translated at 100.0% (488 of 488 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (486 of 486 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (485 of 485 strings)
Co-authored-by: Eric <alchemillatruth@purelymail.com>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/zh_Hans/
Translation: Tusky/Tusky
Currently translated at 100.0% (485 of 485 strings)
Translated using Weblate (Ukrainian)
Currently translated at 100.0% (485 of 485 strings)
Co-authored-by: Ihor Hordiichuk <igor_ck@outlook.com>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/uk/
Translation: Tusky/Tusky
* First attachment crop attempt: Can crop in place, but does not delete/replace on server so has no effect
* Attachment crop feature works
* ktlint fixes on attachment crop patch
* Upgrade Android-Image-Cropper to 4.2.1
* An error message should be displayed if attachment cropping fails and it is not because the user intentionally cancelled.
* Remove 2 of the 3 "state passing" variables by using MediaUtils
* Cropper should use content uri (MIME type bearing) and setOutputCompressFormat so that PNGs reach the server safely.
* Change to crop requested by Conny: Store inflight cropImageItemOld in view model
* Change to crop requested by Conny: Sort cropImage with the other contracts
* ktlint fixes on attachment crop patch (again)
* Show account's creation date in Profile.
* Fix broken test.
* Store account creation date in the Database.
* Reformat and reposition Joined Date according to PR Feedback.
* Revert "Store account creation date in the Database."
This reverts commit d9761f53 as it's not needed.
* Change Account's Creation Date to a java.util.Date.
Update Test.
* Fix wildcard import.
* Show full month instead of an abbreviation.
* Remove `lazy` usage in favor of local instantiation.
Co-authored-by: Martin Marconcini <martin.marconcini.rodriguez@nl.abnamro.com>
Co-authored-by: Konrad Pozniak <connyduck@users.noreply.github.com>
Fixes#793.
This is an implementation for push notifications based on UnifiedPush
for Tusky. No push gateway (other than UP itself) is needed, since
UnifiedPush is simple enough such that it can act as a catch-all
endpoint for WebPush messages. When a UnifiedPush distributor is present
on-device, we will by default register Tusky as a receiver; if no
UnifiedPush distributor is available, then pull notifications are used
as a fallback mechanism.
Because WebPush messages are encrypted, and Mastodon does not send the
keys and IV needed for decryption in the request body, for now the push
handler simply acts as a trigger for the pre-existing NotificationWorker
which is also used for pull notifications. Nevertheless, I have
implemented proper key generation and storage, just in case we would
like to implement full decryption support in the future when Mastodon
upgrades to the latest WebPush encryption scheme that includes all
information in the request body.
For users with existing accounts, push notifications will not be enabled
until all of the accounts have been re-logged in to grant the new push
OAuth scope. A small prompt will be shown (until dismissed) as a
Snackbar to explain to the user about this, and an option is added in
Account Preferences to facilitate re-login without deleting local drafts
and cache.
Currently translated at 99.5% (477 of 479 strings)
Co-authored-by: ButterflyOfFire <butterflyoffire@protonmail.com>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/fr/
Translation: Tusky/Tusky
Currently translated at 100.0% (479 of 479 strings)
Translated using Weblate (Gaelic)
Currently translated at 100.0% (479 of 479 strings)
Co-authored-by: GunChleoc <fios@foramnagaidhlig.net>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/gd/
Translation: Tusky/Tusky
Currently translated at 100.0% (478 of 478 strings)
Translated using Weblate (Ukrainian)
Currently translated at 100.0% (478 of 478 strings)
Co-authored-by: Ihor Hordiichuk <igor_ck@outlook.com>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/uk/
Translation: Tusky/Tusky
Currently translated at 100.0% (478 of 478 strings)
Co-authored-by: idontwanttohaveausername <bydlanm@outlook.com>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/uk/
Translation: Tusky/Tusky
Currently translated at 100.0% (477 of 477 strings)
Translated using Weblate (Italian)
Currently translated at 96.6% (461 of 477 strings)
Co-authored-by: Stefano Pigozzi <me@steffo.eu>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/it/
Translation: Tusky/Tusky
Previously we simply closed the screen with the login WebView which
could cause confusion. Now we specify that page could not be loaded.
As a side effect it will also show the error message which the server
returns (if any).
* Set TextIsSelectable on the corresponding view holders and remove a longpress listener to let Android select text.
* Revert changes, and make selectable text only in detailed status.
Remove long press listener to copy to clipboard (as it interferes with natural text selection on Android).
* Remove unused string (copy_to_clipboard_success) from all translations.
Co-authored-by: Martin Marconcini <martin.marconcini.rodriguez@nl.abnamro.com>
* make MastodonApi.createStatus suspending
* check if media processing has finished before sending status
* add backoff for retrying processed media check
Currently translated at 100.0% (477 of 477 strings)
Translated using Weblate (Gaelic)
Currently translated at 100.0% (477 of 477 strings)
Translated using Weblate (Gaelic)
Currently translated at 100.0% (477 of 477 strings)
Co-authored-by: GunChleoc <fios@foramnagaidhlig.net>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/gd/
Translation: Tusky/Tusky
Currently translated at 100.0% (477 of 477 strings)
Translated using Weblate (Hungarian)
Currently translated at 100.0% (477 of 477 strings)
Co-authored-by: Gera, Zoltan <gerazo@manioka.hu>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/hu/
Translation: Tusky/Tusky
* Add back the emojiInitCallback and move EmojiCompat init
* Small adjustments
* Make sure that we don't hit the IllegalStateException when EmojiCompat-ing the display names
* Add a TODO for when Material Drawer 9 can be used
* Remove EmojiCompat.process and initcallback
Currently translated at 100.0% (477 of 477 strings)
Translated using Weblate (Gaelic)
Currently translated at 100.0% (477 of 477 strings)
Co-authored-by: GunChleoc <fios@foramnagaidhlig.net>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/gd/
Translation: Tusky/Tusky
Currently translated at 100.0% (477 of 477 strings)
Translated using Weblate (Hungarian)
Currently translated at 100.0% (477 of 477 strings)
Co-authored-by: Gera, Zoltan <gerazo@manioka.hu>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/hu/
Translation: Tusky/Tusky
* Update to Emoji2
* Hopefully fix the emoji picker preference
* Switch to released Filemojicompat version
* Filemojicompat version as an own var
* Remove an unused import
* Small cleanup
* Correct onDisplayPreferenceDialog; test TuskyApplication
* Use TextViews instead of EmojiTextViews
* Recreate the Main Activity if the emoji pack is updated
* Enable coreLibraryDesugaring (for Java Streams); update Filemojicompat, downgrade Emoji2
* Update emoji font versions to 14
* Use FilemojiCompat 3.2.0-beta01
* Make ktLint happy again
* Remove coreLibraryDesugaring and a FIXME
* Use EmojiPickerPreference.get()
* Disable emoji pack import
* Update FilemojiCompat to Beta 2
* Update FilemojiCompat to Beta 3
* Update FilemojiCompat to Beta 3.2.0 final
* Update FilemojiCompat to 3.2.1
Currently translated at 99.3% (474 of 477 strings)
Translated using Weblate (Gaelic)
Currently translated at 100.0% (473 of 473 strings)
Co-authored-by: GunChleoc <fios@foramnagaidhlig.net>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/gd/
Translation: Tusky/Tusky
Currently translated at 100.0% (477 of 477 strings)
Translated using Weblate (Vietnamese)
Currently translated at 100.0% (473 of 473 strings)
Co-authored-by: Hồ Nhất Duy <kantcer@gmail.com>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/vi/
Translation: Tusky/Tusky
Currently translated at 100.0% (477 of 477 strings)
Translated using Weblate (Ukrainian)
Currently translated at 100.0% (473 of 473 strings)
Co-authored-by: Ihor Hordiichuk <igor_ck@outlook.com>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/uk/
Translation: Tusky/Tusky
Currently translated at 100.0% (477 of 477 strings)
Translated using Weblate (Norwegian Bokmål)
Currently translated at 100.0% (473 of 473 strings)
Co-authored-by: Vegard Skjefstad <vegard@vegard.net>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/nb_NO/
Translation: Tusky/Tusky
Currently translated at 93.0% (440 of 473 strings)
Co-authored-by: ButterflyOfFire <butterflyoffire@protonmail.com>
Translate-URL: https://weblate.tusky.app/projects/tusky/tusky/oc/
Translation: Tusky/Tusky
* guard against the status of a notification being null in rare cases
* improve code, fix bug when payloads is not null
* remove findViewById
* add comments in NotificationsAdapter
* refactor compose & announcements to coroutines
* fix code formatting
* add javadoc to InstanceInfoRepository
* fix comments in ImageDownsizer
* remove unused Either extensions
* add explicit return type for InstanceInfoRepository.getEmojis
* make ComposeViewModel.pickMedia return Result
* cleanup code in ImageDownsizer
* Improve time format of posts when using absolute time
* fix AbsoluteTimeFormatter, add tests
* fix tests
Co-authored-by: Conny Duck <k.pozniak@gmx.at>