Commit Graph

1540 Commits

Author SHA1 Message Date
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
Konrad Pozniak 7a53bce439
improve sending error notifications (#2671)
* improve sending error notifications

* rename draftNotification -> buildDraftNotification
2022-08-16 20:08:03 +02:00
Konrad Pozniak edbc624625
fix saving multiple attachments as draft (#2670) 2022-08-16 20:07:49 +02:00
Levi Bard b21def5041
Respect filter expiration date when applying filters (#2661)
* Respect filter expiration date when applying filters. #2578

* Fix typing for filter `expires_in` api points
2022-08-15 11:01:04 +02:00
Konrad Pozniak 741461acde
rewrite threads with Kotlin & coroutines (#2617)
* 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
2022-08-15 11:00:18 +02:00
Konrad Pozniak 1fed84f948
fix caching of instance defaults and emojis (#2643)
* fix caching of instance defaults and emojis

* use correct OnConflictStrategy

* rename dao methods
2022-08-07 22:18:53 +02:00
Konrad Pozniak 4f0f9a7a12
update Kotlin to 1.7.10 and fix some (new?) warnings (#2647)
* update Kotlin to 1.7.10 and fix some (new?) warnings

* remove unused import
2022-08-07 19:36:09 +02:00
Konrad Pozniak 17cfa3d9b4
support Pleroma upload_limit configuration (#2646)
* support Pleroma upload_limit configuration

* fix ComposeActivityTest
2022-08-07 19:14:42 +02:00
Konrad Pozniak 68c9870b19
update AndroidX dependencies (#2641)
* update AndroidX dependencies

* fix ComposeActivityTest
2022-08-07 19:13:59 +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 55796c9a30
update minSdkVersion to 23 (#2638)
closes #2606
2022-08-04 16:48:26 +02:00
Konrad Pozniak 2d2d7569e3
fix compose field focus when replying to post with cw (#2634) 2022-08-03 17:23:54 +02:00
Martin Marconcini 8b026991e0
2616: Save Scheduled Time for Drafts. (#2624)
* 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.
2022-07-27 21:06:51 +02:00
Konrad Pozniak 1b6a0908f6
Handle even more instance defaults (#2612)
* 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
2022-07-26 20:24:50 +02:00
Konrad Pozniak 526f170d51
don't crash on invalid json response for push subscription (#2613) 2022-07-11 18:17:58 +02:00
Konrad Pozniak a8a97b6834
fix relogin bug (#2609)
* fix relogin bug

* fix ktlint
2022-07-05 18:18:12 +02:00
Konrad Pozniak 86403ac6dc
add test for InstanceSwitchAuthInterceptor and convert it to Kotlin (#2596)
* add test for InstanceSwitchAuthInterceptor

* improve InstanceSwitchAuthInterceptorTest

* Rename .java to .kt

* convert InstanceSwitchAuthInterceptor to Kotlin

* fix ktlint issues

* improve InstanceSwitchAuthInterceptorTest

* improve InstanceSwitchAuthInterceptorTest
2022-06-30 21:25:44 +02:00
Konrad Pozniak 62c4cfde89
improve media upload error messages (#2602) 2022-06-30 20:51:05 +02:00
Konrad Pozniak 8a0848d252
fix data loss when re-adding existing account (#2601) 2022-06-30 20:49:48 +02:00
Konrad Pozniak 9dcb1b666c
show push migration snackbar above floating action button (#2598) 2022-06-30 20:49:27 +02:00
Levi Bard 8551785389
Fix hiding/showing preview cards for sensitive statuses (#2600)
* Update comment on StatusViewData.isCollapsible

* Fix hiding/showing preview cards for sensitive statuses.
Fixes #2565

* Fix typo
2022-06-24 21:47:49 +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
Konrad Pozniak f419e83c16
improve logout (#2579)
* improve logout

* fix tests

* add db migration

* delete wrongly committed file again

* improve LogoutUsecase
2022-06-20 16:45:54 +02:00
Konrad Pozniak dba2fbc5c1
fix empty timeline on initial load (#2586) 2022-06-20 16:11:30 +02:00
Levi Bard 2e33233309
Don't display bot badge in account selection dialog (#2589) 2022-06-20 16:11:07 +02:00
Konrad Pozniak 1a29a589e1
rewrite InstanceDao queries to drop unused columns (#2585) 2022-06-20 16:08:19 +02:00
Konrad Pozniak 3417a7272a
use moshis Rfc3339DateJsonAdapter for json date parsing (#2584)
* Rename .java to .kt

* use moshis Rfc3339DateJsonAdapter for json date parsing
2022-06-16 18:51:35 +02:00
Konrad Pozniak fd568aedba
fix refreshing notifications screen when there are no notifications (#2583) 2022-06-16 18:50:01 +02:00
Karmanyaah Malhotra cbc5077b1f
UnifiedPush: FEATURE_BYTES_MESSAGE distributors (#2581)
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
2022-06-09 20:03:27 +02:00
tobi 530eb61505
Use NetworkResult in MediaUploadApi (#2577) 2022-06-06 16:04:33 +02:00
Konrad Pozniak e1c8461423
replace kotlin-result-calladapter with networkresult-calladapter (#2569)
* replace kotlin-result-calladapter with networkresult-calladapter

* fix tests
2022-05-30 20:03:40 +02:00
Konrad Pozniak 131309e99c
Fix conversations (#2556)
* fix conversations

* cleanup ConversationsRemoteMediator

* update conversation timestamps regularly

* improve loadStateListener

* add db migration

* make deleting from conversation db suspending

* reorganize code in ConversationsFragment

* delete NetworkStateViewHolder

* cleanup imports

* add 38.json

* honor fabHide setting in ConversationsFragment

* set page size to 30
2022-05-30 19:06:14 +02:00
Konrad Pozniak 2983c3f48e
Add UtcDateTypeAdapter for Gson (#2549)
* Add UtcDateTypeAdapter for Gson

* add 38.json
2022-05-30 18:15:17 +02:00
Konrad Pozniak 434d345d01
remove unused member vars from TimelineFragment (#2561) 2022-05-29 19:23:08 +02:00
Ivan Kupalov e63cd68baf
Fix filters in timelines in a simple way, fix #2546 (#2566)
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.
2022-05-29 19:22:59 +02:00
mcclure 06e32f703a
Fix unintended [mismatched] show-replies preference (with key force-reset) (#2568)
* 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.
2022-05-29 19:21:33 +02:00
UlrichKu d2befa83d3
2554 refresh timestamps on resume (#2562)
* Fire observable to update timestamps directly on resume (#2554)

* Fire observable to update timestamps directly on resume (#2554)
2022-05-27 19:51:22 +02:00
Konrad Pozniak becb677176
make WebView debuggable in debug builds (#2548) 2022-05-27 18:44:16 +02:00
UlrichKu 2424dde9cc
Fire observable to update timestamps directly on resume (#2554) (#2555) 2022-05-27 18:43:10 +02:00
Konrad Pozniak fd9d48e4a6
remove legacy notification channel cleanup (#2550) 2022-05-25 20:54:25 +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 5abb82004a
migrate Lists from RxJava to Kotlin coroutines (#2537)
* migrate Lists from RxJava to Kotlin coroutines

* use DROP_OLDEST when creating MutableSharedFlow
2022-05-18 18:45:35 +02:00
Konrad Pozniak cec8f6dd65
modernize autocomplete (#2510)
* modernize autocomplete

* use @WorkerThread annotation
2022-05-17 19:55:37 +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 8c6ccf4261
fix notification message formatting when username is not at the beginning of the message (#2522)
* fix notification message formatting when username is not at the beginning of the message

* search for placeholder in format string
2022-05-13 22:00:30 +02:00
Konrad Pozniak d9c6269d44
fix deleting media attachments removing the wrong ones (#2517) 2022-05-12 18:21:43 +02:00
Konrad Pozniak b8e3b6b884
fix currently logged in profiles not being visible in main drawer when offline (#2516) 2022-05-12 18:21:33 +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
Levi Bard b4eda5ea65
Unbreak link previews in timelines (#2506) 2022-05-05 18:27:05 +02:00
Konrad Pozniak db81ede04a
fix login webview title color with light theme (#2497) 2022-05-04 18:40:29 +02:00
Konrad Pozniak a2cc622683
fix EmojiCompat.get().process crash in polls (#2494) 2022-05-03 19:15:59 +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
Konrad Pozniak 1eed0e1cc2
fix unparsed html when sharing status content (#2491) 2022-05-03 19:13:13 +02:00
Konrad Pozniak 444e7365c9
fix race condition where multiple uploaded media can get same internal id (#2479)
* fix race condition where multiple uploaded media can get same internal id

* atomically update media stateflow

* atomically update media stateflow
2022-05-03 19:12:35 +02:00
Konrad Pozniak ce5ec15ff1
increase timeout for media uploads (#2489) 2022-05-01 17:16:22 +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 7fd54e3b4f fix timeline refresh spinner finishing before updates are visible 2022-04-30 08:09:59 +02:00
Guntbert Reiter 9a8dfaa744
Remove code to check the server version (#2469)
solves #2439
2022-04-29 18:35:25 +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
Konrad Pozniak 28ac190212
fix SearchActivity transition animations (#2464) 2022-04-28 20:37:46 +02:00
Konrad Pozniak 671d2c6a45
Check if media processing finished before sending status (#2458)
* make MastodonApi.createStatus suspending

* check if media processing has finished before sending status

* add backoff for retrying processed media check
2022-04-28 20:37:31 +02:00
Constantin A 3a11b9900e
EmojiCompat fix (#2468)
* 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
2022-04-28 18:55:10 +02:00
moddedBear 0e9d362351
Remove Identity Proof Support (#2456)
* Remove IdentityProof.kt and refactor

* Remove accountFieldData from viewmodel

* Remove unused imports
2022-04-27 19:58:39 +02:00
Constantin A f15b3e61bb
New emoji picker (#2395)
* 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
2022-04-26 18:50:58 +02:00
Konrad Pozniak adcbe1a831
fix unparsed html in announcements (#2451) 2022-04-21 18:47:05 +02:00
Konrad Pozniak db7eac0a8d
guard against the status of a notification being null in rare cases (#2449)
* 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
2022-04-21 18:46:55 +02:00
Konrad Pozniak 43709532d6
fix unparsed html in "replying to" toggle (#2448) 2022-04-21 18:46:43 +02:00
Konrad Pozniak d2bfceae7b
refactor compose & announcements to coroutines (#2446)
* 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
2022-04-21 18:46:21 +02:00
Konrad Pozniak b5d8b73044
fix "account moved" on profiles not being clickable (#2438) 2022-04-19 11:10:23 +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
Mélanie Chauvel e0abcbfada
Improve time format of posts when using absolute time (#2413)
* Improve time format of posts when using absolute time

* fix AbsoluteTimeFormatter, add tests

* fix tests

Co-authored-by: Conny Duck <k.pozniak@gmx.at>
2022-04-18 21:41:18 +02:00
Konrad Pozniak 216f094e98
upgrade ktlint gradle plugin to 10.2.1 (#2435) 2022-04-16 09:45:45 +02:00
Konrad Pozniak 027b659d1c
fix notifications showing unparsed html (#2436) 2022-04-16 09:44:05 +02:00
Konrad Pozniak 3e849244f9
move Html parsing to ViewData (#2414)
* move Html parsing to ViewData

* refactor reports to use viewdata

* cleanup code

* refactor conversations

* fix getEditableText

* rename StatusParsingHelper

* fix tests

* commit db schema file

* add file header

* rename helper function to parseAsMastodonHtml

* order imports correctly

* move mapping off main thread to default dispatcher

* fix ktlint
2022-04-15 13:20:27 +02:00
Konrad Pozniak 7aa328b3dc
fix login on Android API level <24 (#2432) 2022-04-15 10:50:28 +02:00
Levi Bard ad077cf092
Don't show preview cards on statuses with polls. (#2430)
Fixes #2427
2022-04-14 19:58:08 +02:00
Konrad Pozniak 3e8c6a318a
introduce KotlinResultCallAdapter for nice suspending network calls (#2415)
* introduce KotlinResultCallAdapter for nice suspending network calls

* fix tests
2022-04-14 19:49:49 +02:00
kyori19 d21d045eda
Support new signup notifications (#2357) 2022-04-14 19:39:30 +02:00
Konrad Pozniak 1d20a02d17
fix crash in ConversationsFragment (#2426) 2022-04-13 19:22:19 +02:00
Konrad Pozniak c705e9cbbb
remove extra slash in OAuth authorize url (#2425) 2022-04-13 19:22:09 +02:00
Konrad Pozniak b4a913b2d5
fix black theme on Android 12 (#2424)
* fix black theme on Android 12

* Revert "fix black theme on Android 12"

This reverts commit 2286706fdb.

* bring back SplashActivity
2022-04-13 19:22:01 +02:00
Konrad Pozniak 79c8f59e4e
fix crash when applying new emoji font on Android 12 (#2420) 2022-04-06 19:53:28 +02:00
Konrad Pozniak 59b627664f
Fix saving failed status to drafts (#2410)
* fix saving failed statuses to drafts

* use coroutine delay instead of timer
2022-04-02 16:15:18 +02:00
Constantin A 4011242257
Update emoji font versions to 14 (#2411) 2022-03-31 19:02:42 +02:00
Levi Bard ad001d044d
Revert unintentional behavior change for mention spans to use remote usernames (#2408) 2022-03-30 19:33:31 +02:00
Konrad Pozniak f2529a8e61
Fix Timeline not loading (#2398)
* fix cached timeline

* fix network timeline

* delete unused inc / dec extensions

* fix tests and bug in network timeline

* add db migration

* remove unused import

* commit 31.json

* improve placeholder inserting logic, add comment

* fix tests

* improve tests
2022-03-28 18:39:16 +02:00
Konrad Pozniak c47804997c
Improve handling of shared media (#2388)
* support file:// uris

* support subjects on image shares

* improve code

* improve code

* improve code
2022-03-28 18:39:05 +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
Levi Bard bbd818084d
When calculating post length, count all urls as being of the reserved character count, even if they're shorter. (#2404)
Addresses #2399
2022-03-24 19:52:18 +01: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
Conny Duck 152c8b45d0 enable JavaScript in LoginWebViewActivity 2022-03-17 21:52:06 +01:00
Konrad Pozniak 0dc32774ec
handle screen rotation in LoginWebViewActivity (#2390) 2022-03-17 21:50:14 +01:00
cketti e6f7d9d5af
Fix image preview in share sheet (#2389) 2022-03-16 18:46:26 +01:00
Konrad Pozniak e05fdc6d7b
Fix status diffing and improve timeline performance (#2386)
* fix status & account diffing

* introduce TimelineAccount

* use TimelineAccount where possible

* improve tests

* improve ConversationEntity equals/hashcode

* fix mistake in ConversationEntity

* improve StatusViewData comparison

* improve tests

* fix typo in comment
2022-03-15 21:34:57 +01:00
Konrad Pozniak a257d9b769
correctly render whitespace in posts (#2383)
* correctly preserve whitespace in posts

* use extension function to convert from Spanned to Html

* improve comment
2022-03-14 14:43:00 +01:00
Konrad Pozniak 991d261459
change media download location to Download directory (#2384) 2022-03-14 13:55:25 +01:00
Konrad Pozniak 15304440ef
fix "nothing here" flickering when starting Tusky (#2377) 2022-03-12 09:38:59 +01:00
kyori19 72bb34bf27
Fix some network timeline bugs (#2373)
* Fix network timeline gap loading

* Fix fullReload keeps nextKey

* Fix reload after clearing timeline

* Improve logic to handle overlapped statuses
2022-03-12 09:38:48 +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
Konrad Pozniak 221cdb3611
move "animate custom emojis" preference next to "animate avatars" (#2376) 2022-03-08 21:40:10 +01:00
Konrad Pozniak 34b7a3c8ee
Don't hide potential timeline bugs by catching all exceptions (#2372)
* don't hide potential timeline bugs by catching all exceptions

* fix NetworkTimelineRemoteMediatorTest

* improve ifExpected function

* fix code formatting
2022-03-08 21:39:59 +01:00
Ivan Kupalov 4d8289b245
Implement Login via WebView (#2371)
* Improve login process with newer APIs

* Implement login with WebView instead of browser tab or external browser

Oauth process requires us to open login prompt for correct instance and
we need to receive the result back. Usually it is done with redirect
parameter.

Previously we've been using BrowserTabs API and have been falling back
to just opening browser. This mostly worked but is very clumsy:

 - It relies on few system mechanisms for opening URLs in both
directions
 - Browsers do weird things and tend to break quite a bit
 - There's a good chance that the app can die in the process and we need
to recover our state.

So instead we are now using WebView. It has disadvantages (users have
to trust us to show correct page, logins are not shared w/ browser) but
it should be more reliable.

* Changes to login after review

* Move login classes to their own package

* Fix linting issues
2022-03-08 21:22:19 +01:00
Konrad Pozniak 841373e947
fix various timeline related crashes (#2369)
* fix various timeline related crashes

* fix ktlint
2022-03-06 17:40:24 +01:00
Konrad Pozniak 73e9338f3c
fix timeline jumping to top when activity is recreated (#2364) 2022-03-03 20:01:47 +01:00
Konrad Pozniak 497b434663
Improve timeline dao (#2353)
* improve TimelineDao methods

* remove @Transaction from cleanup methods
2022-03-02 20:40:06 +01:00
Konrad Pozniak a6335e6bcd
update Android Image Cropper and get rid of deprecated onActivityResult (#2351)
* update Android Image Cropper and get rid of deprecated onActivityResult

* add comment why skipping caches is necessary

* inject application into EditProfileViewModel instead of passing it everytime
2022-03-02 20:39:56 +01:00
Konrad Pozniak 4dee5c2774
display account name when display name is not set (#2361) 2022-03-01 21:29:16 +01:00
Konrad Pozniak b145fc9d50
fix String.inc() and String.dec() not being inverse operations (#2355) 2022-03-01 21:29:05 +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
Levi Bard cdefcc441f
Fix relinkifying tags in posts from remote servers (#2359)
* Fix relinkifying tags in posts from remote servers

* Completely ignore urls, and (case-insensitively) match tag names instead
2022-02-28 16:54:25 +01:00
Konrad Pozniak 2c91b1148c
fix database migration to v29 (#2354) 2022-02-27 20:16:41 +01:00
Konrad Pozniak 2960a85ff1
use ViewData only instead of Pair<Status, ViewData> in Search (#2336) 2022-02-25 18:57:49 +01:00
Konrad Pozniak c592dfef78
Don't use notifyDataSetChanged in TimelineFragment (#2334) 2022-02-25 18:57:40 +01:00
Konrad Pozniak f7dfffa762
merge ModalTimelineActivity & ViewTagActivity into StatusListActivity (#2332)
* Rename .java to .kt

* merge ModalTimelineActivity & ViewTagActivity into StatusListActivity

* fix crash when opening hashtag
2022-02-25 18:57:31 +01:00
Konrad Pozniak eea81d7106
use POST api/v2/media to upload media (#2327) 2022-02-25 18:57:18 +01:00
Konrad Pozniak 8dbf255617
get rid of deprecated onActivityCreated in TimelineFragment (#2326) 2022-02-25 18:56:58 +01:00
Levi Bard addce87eb6
Use tags from status when adding handlers to hashtag spans in status content (#2344)
* Migrate LinkHelper to kotlin

* Support tags field on statuses

* Use embedded tags list in status instead of text scraping to embed tag click handler.
Fixes #2283

* Make mentions and tags lists nonnullable

* Make LinkHelper.openLink a Context extension method

* Use builtin extension for uri conversion

* More cleanup in LinkHelper

* Add tests for LinkHelper.getDomain

* Unbreak tags in places that don't have a tag list (e.g. profiles)

* Fixup javadoc
2022-02-25 18:56:21 +01:00
Levi Bard f822234995
Add "open as" to profiles (#2340)
* Extract "open as" utilities to BaseActivity

* Add "open as" to profiles.
Fixes #2329

* Rename STATUS_URL intent extra key

* Add nullability notations for new java code

* Pacify ktlint
2022-02-25 18:55:58 +01:00
Konrad Pozniak 69bcc92c46
fix cache cleanup deleting more statuses than it should (#2348)
* fix cache cleanup deleting more statuses than it should

* reset LOAD_AT_ONCE

* improve tests

* move cache clean code back to ViewModel
2022-02-21 19:33:10 +01:00
Konrad Pozniak a76c580d7e
fix duplicate detail status (#2345) 2022-02-20 10:58:12 +01:00
Mélanie Chauvel c8ed6b482e
increase default poll max option chars from 25 to 50 (#2343)
25 is old Mastodon default, the new one is 50
2022-02-18 20:08:38 +01:00
Konrad Pozniak c20effe6c9
fix some mentions not being opened in Tusky (#2339)
* fix some mentions not being opened in Tusky

* link PR in code
2022-02-15 17:04:00 +01:00
Konrad Pozniak 97fe4f88c5
fix crash in drafts caused by minification of DraftAttachment (#2337)
* fix crash in drafts caused by minification of DraftAttachment

* fix formatting
2022-02-14 19:20:15 +01:00
Konrad Pozniak 329df1280b
fix sensitive media in search and notifications (#2335) 2022-02-12 09:56:08 +01:00
Konrad Pozniak ae656a17a8
fix vertical insets of AccountActivity (#2320) 2022-02-09 20:45:56 +01:00
Konrad Pozniak 2fd45c1cdb
Fix comparing statuses and diffing in NotificationsFragment (#2318) 2022-02-07 20:38:54 +01:00
Konrad Pozniak d2d52da717
Fix crash in TimelineFragment (#2317) 2022-02-07 20:04:40 +01:00
Konrad Pozniak db1cc02fb8
Fix announcement reactions (#2311)
* fix size of announcement reactions

* fix announcement reactions not updating correctly

* remove unused code

* improve code

* remove unused imports
2022-02-05 19:13:05 +01:00
Konrad Pozniak 329bc51f90
fix apng emojis not rendered when animation is turned off (#2312) 2022-02-05 08:56:24 +01:00
Konrad Pozniak 61ba6fe181
Fix disappearing placeholders (#2309)
* add getNextPlaceholderIdAfter to TimelineDao

* fix disappearing placeholders

* fix disappearing placeholders
2022-02-03 18:51:15 +01:00
Konrad Pozniak c3da6f901f
display custom emoji in announcements (#2310) 2022-02-02 21:43:16 +01:00
Konrad Pozniak ab6ea6dc89
fix placeholder not disappearing when no statuses are loaded (#2305) 2022-02-02 18:29:59 +01:00
Konrad Pozniak 8f5fb5b35c
Fix some weird behavior when clicking links in statuses (#2304)
* Fix some weird behavior when clicking links in statuses

* open browser when user clicks a status link again
2022-01-28 07:44:38 +01:00
Konrad Pozniak 6c5c628b90
delete unused class NetworkState (#2301) 2022-01-23 20:25:06 +01:00
Konrad Pozniak e29567c9ec
Cleanup dagger setup (#2300)
* cleanup dagger setup

* fix tests

* fix ktlint

* cleanup FragmentBuildersModule
2022-01-23 20:24:55 +01:00
Konrad Pozniak 2fd01f7e2d
use custom JsonAdapter to be compatible with instances that have a custom subscribing feature (#2298) 2022-01-21 07:34:26 +01:00
Konrad Pozniak 1586817c3d
Update gradle, kotlin and other dependencies (#2291)
* update gradle, kotlin and other dependencies

* fix new warnings

* remove unused import

* update Proguard rules

* add explicit dependency on Gson to get the newest version

* remove debug flag from proguard rules again

* fix typo
2022-01-20 21:10:32 +01:00
Konrad Pozniak a000228165
correctly detect end of pagination in network timeline (#2296)
* correctly detect end of pagination in network timeline

closes #2293

* improve NetworkTimelineRemoteMediatorTest

* remove unused import
2022-01-20 18:30:21 +01:00
Konrad Pozniak f29e46ad55
fix media hidden default in ViewThreadFragment (#2295) 2022-01-17 18:45:11 +01:00
Konrad Pozniak fe350ccf36
move AccountActivity and related classes to a new package (#2216)
* move AccountActivity and related classes to a new package

* fix ktlint

* fix ktlint

* fix imports
2022-01-11 19:55:17 +01:00
Konrad Pozniak 643e012b11
Timeline paging (#2238)
* first setup

* network timeline paging / improvements

* rename classes / move to correct package

* remove unused class TimelineAdapter

* some code cleanup

* remove TimelineRepository, put mapper functions in TimelineTypeMappers.kt

* add db migration

* cleanup unused code

* bugfix

* make default timeline settings work again

* fix pinning statuses from timeline

* fix network timeline

* respect account settings in NetworkTimelineRemoteMediator

* respect account settings in NetworkTimelineRemoteMediator

* update license headers

* show error view when an error occurs

* cleanup some todos

* fix db migration

* fix changing mediaPreviewEnabled setting

* fix "load more" button appearing on top of timeline

* fix filtering and other bugs

* cleanup cache after 14 days

* fix TimelineDAOTest

* fix code formatting

* add NetworkTimeline unit tests

* add CachedTimeline unit tests

* fix code formatting

* move TimelineDaoTest to unit tests

* implement removeAllByInstance for CachedTimelineViewModel

* fix code formatting

* fix bug in TimelineDao.deleteAllFromInstance

* improve loading more statuses in NetworkTimelineViewModel

* improve loading more statuses in NetworkTimelineViewModel

* fix bug where empty state was shown too soon

* reload top of cached timeline on app start

* improve CachedTimelineRemoteMediator and Tests

* improve cached timeline tests

* fix some more todos

* implement TimelineFragment.removeItem

* fix ListStatusAccessibilityDelegate

* fix crash in NetworkTimelineViewModel.loadMore

* fix default state of collapsible statuses

* fix default state of collapsible statuses -tests

* fix showing/hiding media in the timeline

* get rid of some not-null assertion operators in TimelineTypeMappers

* fix tests

* error handling in CachedTimelineViewModel.loadMore

* keep local status state when refreshing cached statuses

* keep local status state when refreshing network timeline statuses

* show placeholder loading state in cached timeline

* better comments, some code cleanup

* add TimelineViewModelTest, improve code, fix bug

* fix ktlint

* fix voting in boosted polls

* code improvement
2022-01-11 19:00:29 +01:00
Mélanie Chauvel c0c8eec36b
filter messages by also looking at media descriptions (#2285) 2022-01-04 19:28:49 +01:00
Konrad Pozniak 0ae3a2ed2a
fix confirmFavourites default (#2282) 2021-12-29 13:44:00 +01:00
Konrad Pozniak 6b7d3ef613
fix loading Gif avatars into the main appbar (#2268)
* fix loading Gif avatars into the main appbar

and respect the animateAvatars setting

closes #2259

* fix formatting
2021-12-05 19:12:52 +01:00
Konrad Pozniak b62ccd918f
fix compose button on profile page being half hidden (#2267) 2021-11-16 21:38:59 +01:00
Konrad Pozniak d1d564a7e2
support animated PNGs and WEBPs (#2244) 2021-10-09 10:45:41 +02:00
Colin Kinloch c37ccbb6e8
Add confirmation for favourite and bookmark actions (#2245)
* Add confirmation for favourite and bookmark actions

* Favourite confirmation american spelling and default values

* Remove bookmarking confirmation

* Update app/src/main/java/com/keylesspalace/tusky/fragment/NotificationsFragment.java

Co-authored-by: Konrad Pozniak <connyduck@users.noreply.github.com>

Co-authored-by: Konrad Pozniak <connyduck@users.noreply.github.com>
2021-10-04 07:48:44 +02:00
Levi Bard 651b35267f
Fix toolbar for instance list activity. (#2248)
Fixes #2247
2021-09-28 19:55:30 +02:00
Levi Bard d07c1b098e
Highlight your own votes when displaying poll results (#2242)
* Highlight your own votes when displaying poll results

* Unbreak tests

* Add a checkmark to the description of self-voted options
2021-09-17 22:12:17 +02:00
Levi Bard 45598cf047
Audio caption improvements (#2220)
* Fix caption display in audio player

* Make video/audio description scrollable

* Constrain the maximum size of media label previews
2021-09-17 21:55:54 +02:00
Levi Bard d93a9b5753
Fix crash when updating profile and the source field exists, but some of _its_ fields don't (#2243) 2021-09-17 21:51:00 +02:00
Levi Bard 59b977c57c
Fix filtering timelines (#2214) 2021-06-30 20:11:14 +02:00
Konrad Pozniak 2cc53d6772 fix codestyle 2021-06-28 22:04:34 +02:00
Konrad Pozniak 9ca7e708bd
fix liking/boosting/bookmarking/voting boosted statuses in timeline (#2212) 2021-06-28 21:41:18 +02:00
Konrad Pozniak 16ffcca748
add ktlint plugin to project and apply default code style (#2209)
* add ktlint plugin to project and apply default code style

* some manual adjustments, fix wildcard imports

* update CONTRIBUTING.md

* fix formatting
2021-06-28 21:13:24 +02:00
Konrad Pozniak 955267199e
migrate scheduled toots to paging 3 (#2208) 2021-06-24 21:24:04 +02:00
Konrad Pozniak f6dd131b95
migrate drafts to paging 3 (#2206)
* migrate drafts to paging 3

* migrate DraftHelper to coroutines
2021-06-24 21:23:29 +02:00
Konrad Pozniak 554820de5f
migrate reporting to paging 3 (#2205)
* migrate reporting to paging 3

* apply PR feedback
2021-06-20 10:58:19 +02:00
Konrad Pozniak 920c71560b
throw HttpException instead of generic exception in TimelineViewModel (#2202) 2021-06-20 10:19:03 +02:00
Ivan Kupalov 837ee2e40d
Convert some adapters to Kotlin (#2187)
* Rename .java adapters to .kt

* Convert Account adapters to Kotlin

* Apply feedback for adapter refactoring
2021-06-20 10:18:40 +02:00
Konrad Pozniak 6d4f5ad027
migrate to paging 3 (#2182)
* migrate conversations and search to paging 3

* delete SearchRepository

* remove unneeded executor from search

* fix bugs in conversations

* update license headers

* fix conversations refreshing

* fix search refresh indicators

* show fullscreen loading while conversations are empty

* search bugfixes

* error handling

* error handling

* remove mastodon bug workaround

* update ConversationsFragment

* fix conversations more menu and deleting conversations

* delete unused class

* catch exceptions in ConversationsViewModel

* fix bug where items are not diffed correctly / cleanup code

* fix search progressbar display conditions
2021-06-17 18:54:56 +02:00
Konrad Pozniak 31da851f28
correctly serialize custom spans to html (#2199) 2021-06-14 11:00:35 +02:00
Konrad Pozniak f04a2a1ee4
fix reblog avatar (#2197) 2021-06-14 10:22:08 +02:00
Konrad Pozniak 86002efc97
fix "show notifications filter" preference opening tabs preferences (#2193) 2021-06-11 20:50:52 +02:00
Ivan Kupalov 44a5b42cac
Timeline refactor (#2175)
* Move Timeline files into their own package

* Introduce TimelineViewModel, add coroutines

* Simplify StatusViewData

* Handle timeilne fetch errors

* Rework filters, fix ViewThreadFragment

* Fix NotificationsFragment

* Simplify Notifications and Thread, handle pin

* Redo loading in TimelineViewModel

* Improve error handling in TimelineViewModel

* Rewrite actions in TimelineViewModel

* Apply feedback after timeline factoring review

* Handle initial failure in timeline correctly
2021-06-11 20:15:40 +02:00
Konrad Pozniak 3301643c1d
update to SDK 30 and fix deprecations (#2173)
* update to SDk 30 and fix deprecations

* remove unnecessary .run

* revert ViewMediaActivity change
2021-06-01 19:46:07 +02:00
Konrad Pozniak e032d38d56
fix LiveData nullability issues (#2181) 2021-05-31 15:16:07 +02:00
Ivan Kupalov 59c62204c7
Fix crash in NotificationsAdapter when spoiler is null. (#2178) 2021-05-27 16:41:54 +02:00
Konrad Pozniak d5e539fd64
cleanup MainActivity / last remnants of SavedToots (#2174) 2021-05-22 19:24:40 +02:00
Konrad Pozniak ca5c455881
update AndroidX, use ActivityResultContracts (#2170)
* update AndroidX, use ActivityResultContracts

* make allowMultiple setable in PickMediaFiles

* add license headers to PickMediaFiles
2021-05-22 17:50:08 +02:00
Konrad Pozniak 81057213db
don't upscale images in caption dialog (#2165)
* don't upscale images in caption dialog

* don't upscale images in caption dialog
2021-05-21 17:52:03 +02:00
Konrad Pozniak 387e62ea4b
get rid of jcenter (#2163)
* get rid of jcenter

* fix BottomSheetActivityTest

* update Android Image Cropper license
2021-05-21 17:51:47 +02:00
Konrad Pozniak 751109ac39
upgrade kotlin to 1.5.0 (#2162)
* upgrade kotlin to 1.5.0

* don't explicitly set kotlin jvmtarget
2021-05-21 17:51:35 +02:00
Konrad Pozniak 40b24cd242
migrate to RxJava3 (#2146)
* migrate to RxJava3

* remove unused import
2021-05-16 19:53:27 +02:00
Konrad Pozniak 6c37cc770c
remove SavedToots (#2141)
* remove SavedToots

* fix tests
2021-05-16 19:17:56 +02:00
Konrad Pozniak b156be6ded
work around mastodon mute bug (#2150) 2021-05-09 18:37:41 +02:00
Konrad Pozniak 076a2b248a
fix crash when captioning large images (#2149) 2021-05-06 07:33:15 +02:00
Konrad Pozniak bd670a01c3
fix event handling in TimelineFragment (#2143) 2021-05-02 17:17:30 +02:00
Konrad Pozniak bcc852c521
update Room to 2.3.0 (#2138)
and use the new ProvidedTypeConverter
2021-04-24 18:31:16 +02:00
Konrad Pozniak bf6d7a6b97
Convert TimelineFragment to Kotlin & ViewBinding (#2131)
* convert TimelineFragment to Kotlin

* cleanup some code

* migrate to viewbinding

* cleanup even more code

* address review feedback

* improve findStatusOrReblogPositionById
2021-04-22 18:48:16 +02:00
Konrad Pozniak dee6a3a160
always show follow requests in main menu (#1809)
* always show follow requests in main menu

* update recyclerview to v1.2.0

* fix bug that shows follow requests info to wrong users
2021-04-10 20:30:44 +02:00
Zero King 41847bc009
Add missing breaks in switch statements (#2127) 2021-04-06 17:18:52 +02:00
Konrad Pozniak f293670c14
migrating to ViewBinding part 6: the final cleanup (#2117) 2021-03-21 12:42:28 +01:00
Konrad Pozniak bea5098cc1
migrating to ViewBinding part 4: Fragments (#2108)
* migrating to ViewBinding part 4: Fragment

* fix imports

* don't use viewBinding extension in ViewImage and ViewVideoFragment

* don't use viewBinding extension in ViewImage and ViewVideoFragment
2021-03-13 21:27:20 +01:00
Konrad Pozniak 0b86f58139
convert some regular strings to plural strings (#2100)
* convert some regular strings to plural strings

* convert hint_describe_for_visually_impaired from string to plurals

* fix ukrainian strings
2021-03-07 19:43:25 +01:00
Konrad Pozniak 2d0862cfc5
fix MainActivity switching to notification tab when opened from recents (#2099) 2021-03-07 19:29:45 +01:00
Konrad Pozniak fc4b47aee4
migrating to ViewBinding part 4: Adapters (#2095) 2021-03-07 19:24:01 +01:00
Konrad Pozniak 22bed19d90
migrating to ViewBinding part 3: EmojiPreference (#2094) 2021-03-07 19:06:05 +01:00
Konrad Pozniak ff69a2ad0d
migrating to ViewBinding part 2: Activities (#2093) 2021-03-07 19:05:51 +01:00
Konrad Pozniak 5167b8578e
migrating to ViewBinding part 1: Dialogs + Views (#2091) 2021-03-07 19:04:22 +01:00
kyori19 cf642d9eb0
Avoid using displayName for displaying purpose (#2101) 2021-03-05 16:26:51 +01:00
Konrad Pozniak 574480524a
fix custom emojis in names when liking/boosting a boosted toot (#2092) 2021-03-01 21:44:02 +01:00
Konrad Pozniak 13392258f6
upgrade Material Design lib and use their new time picker (#2077) 2021-02-23 20:29:02 +01:00
Konrad Pozniak 6ebbe5f657
fix crash when rotating screen in a preference dialog twice (#2083) 2021-02-23 18:53:43 +01:00
Konrad Pozniak d2a8254d4f
add content description to account subscription button (#2076) 2021-02-18 19:26:25 +01:00