* Transfer SmartLengthInputFilter in-header license
Transfer license for file "SmartLengthInputFilter.java" from me (Diego Rossi) to Tusky and therefore also change it from the original Apache 2.0 to currently GPLv3. This was a mistake that has been sitting around for way too long.
* Rewrite SmartLengthInputFilter from Java to Kotlin
This has been done by hand, without the custom copy-paste tool.
* Fix bad references in Java files using SmartLengthInputFilter features
* Shorten code in Java classes referencing SmartLengthInputFilter instance
* Refactor SmartLengthInputFilter from class to singleton Kotlin object
* Move hasBadRatio to become a toplevel function
* Patch up all the files affected by SmartLengthInputFilter changes
* Length in SmartLengthInputFilter is const 500, simplify code accordingly
* More meaningful name for toplevel function for checking trimming ability
* Add missing license header
* Implement instance mutes. #1143
* Move new classes to instancemute component
* Add progress bar while instance list loads
* Add undo snackbar for instance unmuting
* Update display text for instance mutes
* 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
* update cache when voting on a poll
* fix poll controls color
* don't allow voting on old poll from cache
* check for RecyclerView.NO_POSITION in click listener
* fix crash when voting in a boosted poll
* show poll notifications in the app
* show poll notifications in the app
* allow filtering poll notifications in the poll fragment
* show poll notifications in system notifications
* Implement "Delete and Edit" feature
* Some changes to ComposeActivity
Support for uploaded medias, sensitive option.
Fix typo.
Change names of some extra keys.
* Use Glide instead of Picasso
* Pass ArrayList instead of json
* Change wording for re-draft
* Fix test
* Replace Picasso library with Glide library tuskyapp#1082
* Replace Picasso library with Glide library tuskyapp#1082
* Update load emoji with glide
* Update context used for Glide
* Removed unused import
* Replace deprecated SimpleTarget with CustomTarget
* Fix crash at the view image fragment, remove override image size
* Replace Single.create with Single.fromCallable
* View image fragment refactor
* Fix after merge
* Try to load cached image first and show progress view on failure
* Try to load cached image first and show progress view on failure
* Issue tuskyapp#762 add clear notifications button to the top of the Notifications adapter
* Issue tuskyapp#764 add the notifications filter
* Update notifications top bar buttons
* Replace PopupMenu with PopupWindow. Save notifications filter to the account table
* Disable hide top bar on empty content at the notification screen
* Add app bar behavior to the sw640 notification layout
* Fix issue with click on top notification tab
* Issue: tuskyapp#1078
Add ability to scroll to top by tab click at the Account activity
* Fix issue with scroll tabs other than current
* Update scroll on click behavior
* Update code formatting
* Remove unused code
* Move tab click listener from Fragments to Activities
* Fix unnecessary reloading of notifications
This removes topId as it is not needed and just plainly uses status id
if needed. During initial loading of notifications topId/bottomId are
not set so we ended up reloading everything.
* Refactor notifications adapter
Use AsyncListDiffer for updating notifications just like in timelines.
* Cleanup in NotificationsFragment