This adds support for the new Mastodon 4.2 role badges. Admins can
define if a role should be visible in the interface and then we get it
delivered by the Api on the `Account` object like this:
```
"roles": [
{
"id": "4",
"name": "TEST",
"color": "#ffee00"
}
]
```
- keeps compatibility with older Mastodon version and non Mastodon
servers
- Took me a while, but I figured out a way to use the color and have it
look ok on all backgrounds (Mastodon itself ignores the color and just
always uses its brand color)
- falls back to Tusky blue in case no color is configured
- I adjusted the "Follows you" and "Bot" badges so they match the new
badge style
- In case the "Follows you" and "Bot" badges are visible at the same
time, "Follows you" gets its own line and "Bot" goes into the same line
as the role badge.
- Will work even with a lot of role badges (right now users can only
have 1 role at once though)
- Will work even when the badges federate (right now they don't)
<img
src="https://github.com/tuskyapp/Tusky/assets/10157047/24cbe889-ae46-408e-bfa0-cf3fd3c24f74"
width="320" />
Most lists in the app use (explicitly or implicitly) platform metrics for dimensions, text size, colour, and so on, possibly via styles.
A few don't, inadvertently using the user's setting for status text size
Fix these, and simplify code where possible.
- Use android attributes for padding and height, for consistent UX.
- Remove explicit usage of app:tabTextAppearance, rely on the style.
- Remove ListSelectionAdapter and item_picker_list.xml, and adjust TabPreferenceActivity to use an ArrayAdapter with simple_list_item_1.xml
- Simplify item_followed_hashtag.xml, consistent with item_list.xml.
Fixes https://github.com/tuskyapp/Tusky/issues/3131
Clickable spans in textviews do not normally meet the Android accessibility
guidelines of a minimum 48dp square touch target.
This can't be fixed with a `TouchDelegate`, as the span is not a separate
view to which the delegate can be attached.
Add `ClickableSpanTextView`. If used instead of a `TextView`, any spans
from `ClickableSpan` will have their touchable area extended to meet the
48dp minimum.
The touchable area is still bounded by the size of the view.
If two spans are closer together than 48dp then the closest span to the
touch wins.
Co-authored-by: Konrad Pozniak <connyduck@users.noreply.github.com>
`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
* 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>
* 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
* Add notification bell button, API endpoints and new relationship field
* Add notification type for subscriptions
* Add subscriptions to legacy notification filtering
* Update schemas
* Fix build
* Make rewrite static method into method of Notification class, fix getNotificationText
* Mastodon wording for subscriptions
* add personal notes to AccountActivity
* use RxJava instead of plain okhttp calls
* make AccountViewModel rx aware
* hide note input until data is loaded
* Theme refactoring
* disable the automatic tinting of surfaces with elevation in dark mode
* make the media warning visible again with the dark theme
* fix nav bar on api 27+
* use correct color for all media warnings
* upgrade api level to Android 10, resolve compile errors
* use androidx.preference.PreferenceManager instead of deprecated platform class
* add hyphenation to important TextViews
* setBottomSheetCallback -> addBottomSheetCallback
* implement new sharing api
* improve TuskyTileService so it shows account picker when multiple accounts are present
* delete unused AccountChooserService
* fix test
* improve ShareShortcutHelper
* remove debug log statement
* improve image loading fallback behavior in ShareShortcutHelper
* improve behavior on foldable devices
* use the "follow" button as an "unblock" button on the profiles of blocked users
* use the "follow" button as an "unblock" button on the profiles of blocked users
* add an icon to the profiles that can be clicked to mute/unmute the user
* add an icon to the profiles that can be clicked to mute/unmute the user
* Fix view issues
* Fix view issues
* Implement swipe to refresh for Account layout
* Implement swipe to refresh handler at the account screen
* Implement swipe to refresh
* Correct account refresh
* Show Progress Bar
* Show Progress Bar
* Move "itSelf" check into the viewModel
* Change methods access level
* Change TimelineFragment newInstance overload
* Change avatarSize type to Float
* Replace ImageButton with MaterialButton
* Update account activity swipe to refresh colors
* Refactor code
* Refactor code
* Fix crash on moved account refresh
* Show moved account stats
* Update mute button behaviour
* Show tabs and content for moved accounts
* Fix crash on tablet
* upgrade to AndroidX, upgrade libraries
* move to MaterialComponents theme
* make sure the compose button looks good everywhere
* fix tollbar title/button alignment on tablet
* move to new material color theming, consolidate colors and themes
* fix build, fix imports
* set error on TextInputLayout instead of EditText
* fix imports, TootButton when
* improve snackbar style
* fix task description color
* Refactor-all-the-things version of the fix for issue #573
* Migrate SpanUtils to kotlin because why not
* Minimal fix for issue #573
* Add tests for compose spanning
* Clean up code suggestions
* Make FakeSpannable.getSpans implementation less awkward
* Add secondary validation pass for urls
* Address code review feedback
* Fixup type filtering in FakeSpannable again
* Make all mentions in compose activity use the default link color
* new layout for AccountActivity
* fix the light theme
* convert AccountActivity to Kotlin
* introduce AccountViewModel
* Merge branch 'master' into account-activity-redesign
# Conflicts:
# app/src/main/java/com/keylesspalace/tusky/AccountActivity.java
* add Bot badge to profile
* parse custom emojis in usernames
* add possibility to cancel follow request
* add third tab on profiles
* add account fields to profile
* add support for moved accounts
* set click listener on account moved view
* fix tests
* use 24dp as statusbar size
* add ability to hide reblogs from followed accounts
* add button to edit own account to AccountActivity
* set toolbar top margin programmatically
* fix crash
* add shadow behind statusbar
* introduce ViewExtensions to clean up code
* move code out of offsetChangedListener for perf reasons
* clean up stuff
* add error handling
* improve type safety
* fix ConstraintLayout warning
* remove unneeded ressources
* fix event dispatching
* fix crash in event handling
* set correct emoji on title
* improve some things
* wrap follower/foillowing/status views
* Add circleci
* Commit to maybe fix ci
* Suppress false positives in lint
* Disable linting for tests in ci
* Add image descriptions to gallery
* Fix test
* [CI] Attempt to fix OOM error
* [CI] Attempt to fix OOM error, 2
* Add option to open status from media
* fix theme issue
* increase linespacing on media description
* Add EmojiCompat
* EmojiCompat doesn' replace all emojis anymore
* This app should be now capable of loading a EmojiCompat-font located in a file somewhere inside the device's storage
* Should now replace all emojis
* Add EmojiCompat support to EditTextTyped
* Provide EmojiCompat fonts
* The app won't crash anymore when no emoji font is available.
Emoji font should now be located at [Private external app directory]/files/EmojiCompat.ttf
* Removed BundledEmojiCompat dependency
Since this EmojiCompat-implementation does not rely on BundledEmojiCompat, there's no reason to have it enabled.
* Update EditTextTyped.kt
Since connection isn't assigned to (I tried doing so), it can be declared final/val again.
* Update README.md
* Add some non-working emoji preferences
* Add a short font list for testing
* Finished implementation
* Add Twemoji to font list
* Update documentation, more comments
* Delete AssetEmojiCompat which is obsolete now
* Update the font list
* Update the font list
* Fix font list & add Exception handling for malformed JSON files (hopefully)
* More fixes. It should work now...
* Removed AssetEmojiCompat (again)
* Add most of the changes
* Improved the EmojiCompat dialog's style
* The font list is now based on a static layout without external files
* Re-add the real font URL for Twemoji
* Emoji-font captions are now translatable
* Removed one unused String (loading)
* Removed emoji fonts from this repo
* Applied changes from the PR change requests
* The correct emoji font will be selected after cancelling a change
* Add details on the EmojiCompat fonts available (not shown yet)
* Add licensing information on Twemoji and Blobmoji
* Reworked some strings
* Moved FileEmojiCompat to its own library
* Update FileEmojiCompat to the latest version (1.0.3)
* EmojiCompat bug should be fixed
* Better handling of failed downloads
* Removed one TODO
Signed-off-by: Constantin A <10349490+C1710@users.noreply.github.com>
* Update emoji attribution strings
Signed-off-by: Constantin A <10349490+C1710@users.noreply.github.com>
* Fixed some misspelled strings
Signed-off-by: Constantin A <10349490+C1710@users.noreply.github.com>