* Add wellbeing mode settings toggle
* Translate wellbeing mode string to german
* Disable fav/boost count on toots if wellbeing is enabled
* Hide follow/post stats on profiles
* Reload notifications when wellbeing mode is toggled
* Add wellbeing mode explainer dialog
* Move wellbeing filter timeline into own category
* Add toggles for quantitative stats
* Hide announcement badge counts if wellbeing is enabled
* Move fetching of wellbeing setting to activity
* Add wellbeing option to statusDisplayOptions
* Update post filters for all accounts
* Remove local translations
* Revert "Remove local translations"
This reverts commit e92e636a5c759b09649174ab68ec91bc13680287.
* Remove german translations
* 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
* Rename .java to .kt
* convert OkHttpUtils to Kotlin
* trust new letsencrypt root cert
* cleanup OkHttpUtils
* add link to lets encrypt cert to OkHttpUtils
Mostly it's disk reads/writes.
Conscrypt reads own version on startup which reads from disk multiple
times. There's no solution for it right now.
SharedPreferences which are used in BaseActivity also read from disk
and pretty early but it shouldn't be a problem.
* add personal notes to AccountActivity
* use RxJava instead of plain okhttp calls
* make AccountViewModel rx aware
* hide note input until data is loaded
* Perform manual isolation of display names etc. instead of relying on BidiFormatter.
Fixes#1921
* Make follow request notification header formatting more like other notifications
* Delete scheduled post after editing
This ensures that editing a scheduled toot will not duplicate it.
Fixes#1924
* Fix scheduled toot editing
* Convert isEditingScheduledToot to property
* Replace MediatorLiveData with combineLiveData
* Remove dead code
* Fix observer emission
* Fix "Finish media upload" appearing for split second
* Open photos embedded in preview cards in the internal image viewer instead of opening the browser
* Enable toolbar for single image viewer
* Apply review feedback
* Change characters left color to red when negative
* Use val for the integers, optimize variable assignment
* Added tusky_red color
* remove extra line typo
* make characters left bold
* change red hue
* fix typo
* Improve notifications fetching
- Only fetch notifications up to the latest fetched one
- Use timeline markers to avoid showing already seen notifications
* Apply some of the suggestions
* convert EmojiPreference and EmojiCompatFont to Kotlin
* move preference related to to dedicated preference package
* update proguard-rules.pro
* reformat & add comment
* maintain disposable information in EmojiPreference instead of EmojiCompatFont
* Increase character limit for media descriptions to 1500
It was increased in Mastodon 3.0.0 which was released in October 2019.
* Improve image description view
Since media descriptions can be longer now, we need to adjust the UI.
It is a common problem that description takes up the whole screen, it's
hard for readers and also discourages people from adding descriptions.
This commit uses bottom sheet to hide most of the description. Since we
know how much screen space it will cover, we can use darker background
which makes reading text easier.
* Adjust description handle
* Fix unable to dismiss image caption
This commit does 3 things:
1. Replaces PhotoView (which is abandonware) with modern TouchImageView
2. Fixes an issue with panning images. Gesture was not intercepted
properly and pager was taking control instead of image being moved.
3. Adds feedback to dismissing of images with vertical gesture.
At some point settings DSL was refactored to first add a preference and
then run the builder. We shouldn't add a preference to the hierarchy
without setting a key for the preference first because preference gets
it's default value in `onAttachedToHierarchy()` and if the key is not
set then no default value will be set either.
This commit changes the order to execute builder (and set the key)
first and and preference to the point later.
* Refactor main preferences to use DSL
* Refactor account preferences to use DSL
* Use DSL in rest of the preference screens
* Preferences cleanup
* Fix preference dependencies
* enable multiple hashtags in one hashtag tab
* add comment explaining the code in TabAdapter
* delete unused drawables
* add padding to EditText in dialog
* convert MainActivity to Kotlin
* migrate to MaterialDrawer 8
* fix drawer styles
* revert removing BezelImageView and material_drawer_header override
* fix tests
* add lost comment back to material_drawer_header.xml
* add tools:parentTag to material_drawer_header.xml
* use when instead of if in MainActivity
* fix statusbar color over the drawer
* cleanup drawer item creation
* tint secondary drawer items as well
* remove unnecessary ids
* fix header text color in the light theme
* improve header text contrast
DatePicker seems to think that it's in UTC. So setting selected time
might not work as aspect and receiving value from it might be in UTC
as well. This commit fixes the second issue by interpreting the date
as UTC date. Tested with America/New_York (GMT-5 at the moment) and
Russia/Kamchatka (GMT+12).
* Add option to show link previews in timelines.
Addresses #1075
* Indent cards in non-selected statuses when viewing threads
* Indent cards in timelines
* Fix clipping of right side of preview in timelines
* Warn when scheduling a post within 5 minutes
* Fix NPE when scheduled post time isn't set
* Use AlertDialog with option to cancel instead of Toast when a post isn't scheduled far enough in advance
* Move schedule validation warning to scheduling bottom sheet
* Fix scheduling error display when sending after an initially-valid scheduling time has become invalid
* cleanup media keyboard code
* fix crash in ComposeActivity when rotating phone while taking photo
* fix poll button in ComposeActivity being invisible when disabled
* Update OkHttp to 4.3.1
* Fix downloading emoji fonts
OkHttp strips away content length info when compression is used.
Even though this behavior is old, we didn't observe it until OkHttp was
updated in d3ebcc14ec.
We get it from the original network response header. It should be
compressed length.
* Reformat EmojiCompatFont and EmojiPreference
* 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
* fix FragmentAdapter returning null fragments when activity was recreated
* remove unused import
* make activity in CustomFragmentStateAdapter private
* Add support for audio attachments.
Partially addresses #1337
* Register Tusky as a target for audio sharing
* Use icon with textColorTertiary for audio preview
* Resolving some issues with media playback.
* Changing ViewVideoFragment so that it fully handles autohiding the
media controller, allowing consistency between it and the toolbar
* Fixed an issue where the toolbar and description were not fading in
* Do not hide the toolbar/media player if the video is loading or paused
* Created "ExposedPlayPausedVideoView" to allow hooking play/pause
* Fix back button when viewing videos
* Back button did not work if video controls were visible.
* Tweak audio player
* Always show the controls when audio begins playing
* Do not auto-hide the controls if the player is playing audio
* Address PR comments
* Use overloaded constructor
* Remove m prefix
* Fix subtle media player issues
* Fix audio player incorrectly auto-hiding after hiding/showing toolbar
* Only subscribe touch listener once content is ready
- Prevents top toolbar visibility from getting out of phase with audio player visibility if hidden during load
* ComposeActivity: When selection is nonempty and a "special character" button is pressed, decorate all selected word starts
Closes#1417
* ComposeActivity: Tests for word break prepend logic
* fix toggling media visibility
* cleanup search code to make it more readable
* remove redundant OnQueryTextListener
this is the default behavior
* fix bookmarking
* fix status interaction causing unnecessary network requests
* Use blurhash as image preview and as sensitive media cover, close#1571
* Fix focal point for blurhashes
* Fix video indicator overlapping sensitive media indicator
* Add a preference for blurhash
* Add blurhash to report UI.
* Introduce StatusDisplayOptions
* Convert ComposeActivity to Kotlin
* More ComposeActivity cleanups
* Move ComposeActivity to it's own package
* Remove ComposeActivity.IntentBuilder
* Re-do part of the media downsizing/uploading
* Add sending of status to ViewModel, draft media descriptions
* Allow uploading video, update description after uploading
* Enable camera, enable upload cancelling
* Cleanup of ComposeActivity
* Extract CaptionDialog, extract ComposeActivity methods
* Fix handling of redrafted media
* Add initial state and media uploading out of Activity
* Change ComposeOptions.mentionedUsernames to be Set rather than List
We probably don't want repeated usernames when we are writing a post
and Set provides such guarantee for free plus it tells it to the
callers. The only disadvantage is lack of order but it shouldn't be a
problem.
* Add combineOptionalLiveData. Add docs.
It it useful for nullable LiveData's. I think we cannot differentiate
between value not being set and value being null so I just added the
variant without null check.
* Add poll support to Compose.
* cleanup code
* move more classes into compose package
* cleanup code
* fix button behavior
* add error handling for media upload
* add caching for instance data again
* merge develop
* fix scheduled toots
* delete unused string
* cleanup ComposeActivity
* fix restoring media from drafts
* make media upload code a little bit clearer
* cleanup autocomplete search code
* avoid duplicate object creation in SavedTootActivity
* perf: avoid unnecessary work when initializing ComposeActivity
* add license header to new files
* use small toot button on bigger displays
* fix ComposeActivityTest
* fix bad merge
* use Singles.zip instead of Single.zip
* 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
* Scheduled toot
* Hide scheduled toot button if version < 2.7.0
* Fix timeline reloading after toot
* Add edit icon to ComposeScheduleView
* Add button to reset scheduled toot
* Close bottom sheet and change button color after time a was selected
* Fix edit icon's size
* List of scheduled toots
* Fix instance version check
* Use MaterialDatePicker
* Set date and time consecutively
* Add licenses
* remove search v1, convert MastodonApi to Kotlin
* format MastodonApi nicely
* use default params in ConversationRepository
* improve code for LoginActivity
* 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