Commit graph

422 commits

Author SHA1 Message Date
Nik Clayton
424326f99f
Add a menu option to mute / filter a hashtag from a status list (#2882)
* 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
2022-12-05 14:36:30 +01:00
Konrad Pozniak
4de778d7d4
Show Avatar next to tabs when main top bar is disabled (#2973) 2022-12-03 12:16:54 +01:00
fruyek
d823052862
Status: Display indicators of edited posts (#2935)
* 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
2022-12-03 12:15:54 +01:00
Levi Bard
588307f7a1
Enable setting the default posting language from Tusky (#2946)
* Extract locale utils

* Extract makeIcon

* Allow setting the (server-synchronized) default posting language from Tusky.
Closes #2902

* Add copyright headers

* Address review feedback
2022-12-02 19:19:17 +01:00
Eva Tatarka
cc790ccf69
Add option to not crop image previews (#2832)
* Don't crop image previews with aspects between 2:1 & 1:2

Fixes #1995

* Custom media preview layout for handling various aspect ratios
2022-12-01 21:20:46 +01:00
Levi Bard
6b95790457
Add support for moderation report notifications (#2887)
* Add support for moderation report notifications

* Translate report categories

* Apply tint inside flag drawable

* Remove unused imports

Co-authored-by: Konrad Pozniak <connyduck@users.noreply.github.com>
2022-12-01 20:11:55 +01:00
kylegoetz
86e5c92a05
show "now" instead of "in 0s" timestamps (#2843)
* 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"
2022-12-01 19:54:29 +01:00
Konrad Pozniak
8c08fbddb6 fix merge conflict 2022-12-01 19:33:20 +01:00
Levi Bard
9362e59d9d
Add view for browsing and unfollowing followed hashtags (#2794)
* 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>
2022-12-01 19:24:27 +01:00
Konrad Pozniak
c96a81571c
support Android 13 per-app languages (#2829)
* support Android 13 per-app languages

* fix tests

* fix language ids in locales_config.xml

* fix language setting default in ComposeActivity
2022-11-16 19:45:18 +01:00
Konrad Pozniak
9f7cd2fa32
add content description to add reaction button (#2838) 2022-11-16 19:04:12 +01:00
kyori19
c00c0926cf
Update dialog colors 2022-11-16 20:55:36 +09:00
kyori19
45cc000d07
Add or remove from lists in AccountActivity 2022-11-13 06:05:55 +09:00
Josh Soref
a9c6f69561
Warn about losing media (#2784)
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>

Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
2022-11-09 19:33:48 +01:00
Josh Soref
98092e6ff7
Spelling (#2771)
* spelling: activity

Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>

* spelling: animation

Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>

* spelling: detailed

Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>

* spelling: hierarchy

Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>

* spelling: javascript

Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>

* spelling: memory

Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>

* spelling: notification

Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>

* spelling: opened

Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>

* spelling: preferable

Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>

* spelling: repetitive

Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>

* spelling: spoiler

Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>

* spelling: thumbnail

Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>

* spelling: visibility

Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>

* spelling: whitespace

Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>

Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
2022-11-09 19:32:39 +01:00
Eva Tatarka
be96aa576e
Show toast if pin fails (#2755)
* Show toast if pin fails

Fixes #2229

* Swtich to snackbar

* Show generic error message if no server error is available

* Fix pin error logging
2022-11-09 19:30:50 +01:00
Konrad Pozniak
8e9b356074
show rules on the login screen (#2746)
* show rules on the login screen

* fix code formatting

* fix code formatting

* fix tests
2022-11-05 17:37:20 +01:00
Konrad Pozniak
532afaad2b
warn before deleting a scheduled post (#2721) 2022-10-28 16:46:38 +02:00
mcclure
85a6b2d96b
Preference to disable multiple-login usernames (#2718)
* 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
2022-10-18 19:38:17 +02:00
mcclure
0e892be48e
Add a description to the focus dialog (#2711)
* 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>
2022-10-15 19:04:27 +02:00
mcclure
7684f06938
Add UI for image-attachment "focus" (#2620)
* 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>
2022-09-21 20:28:06 +02:00
Levi Bard
687cffd540
Show target domains for non-mention/non-hashtag links where the target domain is not provided or differs from the domain in the text (#2698)
* 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 #/@
2022-09-17 19:06:07 +02:00
Vivianne
c908ebb3f1
Add display of handle when using multiple accounts (#2697)
- Shown on the main toolbar (subtitle)
- Shown just above the "replying to" message (even if not replying)
2022-09-17 19:05:56 +02:00
Konrad Pozniak
eb167c623b
new app icon (#2695)
* new app icon

* make icon in readme a bit smaller
2022-09-13 19:48:09 +02:00
Konrad Pozniak
c8fc2418b8
AccountMediaFragment improvements (#2684)
* 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
2022-09-02 16:52:47 +02:00
Levi Bard
0041acf2d4
Add language dropdown to compose view (#2651)
* 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
2022-08-31 18:53:57 +02:00
Levi Bard
c47d9ef6ac
Support setting filter expirations (#2667)
* 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
2022-08-17 17:50:34 +02:00
Levi Bard
607f448eb3
Rename norsk bokmål translation from no_NB to nb_NO (#2652)
* Rename norsk bokmål translation from no_NB to nb_NO

* Revert locale name migration
2022-08-08 11:02:22 +02:00
Levi Bard
042176e523
Add support for following hashtags (#2642)
* 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
2022-08-07 19:09:26 +02:00
QuirkyPony
17fb93626c
adapt file size error messages to show real instance upload limit (#2630)
* 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>
2022-08-05 18:55:13 +02:00
Konrad Pozniak
8a0848d252
fix data loss when re-adding existing account (#2601) 2022-06-30 20:49:48 +02:00
mcclure
3ca8a0b549
Use specific term "image" in error UI, not "attachment" (#2592)
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.
2022-06-21 22:14:11 +02:00
mcclure
00c139190e
Ability to crop images attached to posts (#2531)
* 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)
2022-05-22 21:01:14 +02:00
Levi Bard
4188670b42
Implement reply count indicator to track web UI (#2467)
Addresses #882
2022-05-20 16:47:45 +02:00
Konrad Pozniak
4c9cd4084b
show list title when viewing list timeline (#2503) 2022-05-17 19:55:26 +02:00
Martin Marconcini
d97493d312
Issue 2477: Show account's creation date in Profile. (#2480)
* 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>
2022-05-17 19:49:42 +02:00
Peter Cai
9ec5d6e3b0
Push notifications support via UnifiedPush (#2303)
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.
2022-05-17 19:32:09 +02:00
Konrad Pozniak
45ac280db7
Add Portuguese (Portugal) to the in-app language picker (#2507) 2022-05-09 19:40:32 +02:00
Konrad Pozniak
beaed6b875
Fix crash when saving redrafted media to drafts (#2502)
* fix crash when saving draft from redraft

* fix crash when saving draft from redraft

* replace ... with …
2022-05-09 19:39:43 +02:00
Ivan Kupalov
f3d7923803
Improve UX when Login WebView fails to load the page (#2492)
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).
2022-05-03 19:14:55 +02:00
Martin Marconcini
260e25a0a4
Issue 2379: Make it possible to select text in posts. (#2472)
* 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>
2022-04-30 19:05:44 +02:00
Konrad Pozniak
e9b75119b3
improve bot badge (#2466)
* improve bot badge

* change badge corner radius
2022-04-28 20:39:06 +02:00
Konrad Pozniak
e5b58770ce
improve LoginWebViewActivityUX (#2465) 2022-04-28 20:38:51 +02:00
Levi Bard
dff039e123
Add support for post edit notifications (#2431)
* Add support for post edit notifications

* Update notification icon
2022-04-19 11:10:13 +02:00
kyori19
d21d045eda
Support new signup notifications (#2357) 2022-04-14 19:39:30 +02:00
Mélanie Chauvel
2fc3ba3cee
Replace “status” by “post” in strings name and source values (#2405) 2022-03-27 12:23:25 +02:00
Konrad Pozniak
d9931e3d2c
Rename Toots to Posts (#2396)
* rename toots -> posts in strings

* extract tusky_compose_post_quicksetting_label string

* rename toot -> status in code
2022-03-20 20:21:42 +01:00
Konrad Pozniak
55513e8e2b
Android 12 support, update AndroidX libraries (#2367)
* Android 12 support, update AndroidX libraries

* fix ktlint

* add Android 12 splash screen support

* fix comments in MainActivity

* remove deprecated Intent.ACTION_CLOSE_SYSTEM_DIALOGS

* delete TimelineViewModelTest

* fix notifications on Android 12

* improve splash screen

* handle pending intent flags in a dedicated function
2022-03-09 20:50:23 +01:00
Levi Bard
7114575497
Instance configuration: the easy parts (#2341)
* Add data model for instance configuration

* Support instance.configuration.statuses.max_characters

* Support instance.configuration.statuses.characters_reserved_per_url

* Support instance.configuration.polls.max_options and max_characters_per_option

* Pacify ktlint

* Support instance-configured poll durations

* Fixup versions for migration after rebase
2022-03-01 19:43:36 +01:00
Konrad Pozniak
808cb5f27b
add new translations (Scottish Gaelic, Galician, Ukrainian) to in-app language picker (#2314) 2022-02-04 21:59:30 +01:00