Commit graph

1491 commits

Author SHA1 Message Date
Konrad Pozniak
f094f84b86
fix ConversationLineItemDecoration (#2677)
* fix ConversationLineItemDecoration

* cleanup code a bit
2022-08-22 15:17:08 +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
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 2286706fdb239e15be72ac8943405ffeb2258219.

* 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