Commit Graph

1908 Commits

Author SHA1 Message Date
071ce78b7c Material Design 3 Switch. Target Sdk 33. 2022-11-08 23:17:26 +11:00
2c9ffbc614 Fix getting comment for "continue thread" button (#1207)
It used position of viewholder during binding which could get outdated by the time user clicks on the button. This would result in retrieving wrong comment or even null. Replaced with getting comment based on current position of vieholder.
2022-11-08 13:53:39 +08:00
c2360ca59a Modify the behaviour of ItemTouchHelper. 2022-11-07 13:38:55 +11:00
fd63dba91b Fix screen staying at MorePostsInfoFragment after retrying. 2022-11-06 17:37:58 +11:00
93e98b4cb5 Retry loading more posts. 2022-11-06 17:22:15 +11:00
ff10eb5f92 Load sort type from correct shared preferences (#1202)
When extracting sort type loading logic the shared preferences that are used to load sort type got accidentally changed to the wrong ones. This resulted in always using the default value which is displayed as Best.

Fortunately the saving code was not changed so only reading has to be fixed.
2022-11-05 22:22:02 +08:00
0ae9b74729 Minor changes to loading more posts. 2022-11-06 00:52:14 +11:00
cf3595f22d Fix problems when fetching more history posts in ViewPostDetailActivity. 2022-11-06 00:01:18 +11:00
fa472a3ad8 Show status of loading more posts in MorePostsInfoFragment. 2022-11-05 19:51:40 +11:00
c86408dbe5 Fix history posts problems. 2022-11-05 14:31:58 +11:00
be78c20c07 Load more posts in ViewPostDetailActivity for post feed in HistoryPostFragment. There are bugs in HistoryPostPagingSource so duplicate posts will be fetched and more posts could not be fetched. Will be fixed. 2022-11-05 02:12:03 +11:00
0a286cd9ba Load more posts in ViewPostDetailActivity for post feed in PostFragment. 2022-11-05 00:33:12 +11:00
eb40bad3ef New option: Settings->Interface->Hide FAB in Post Feed. 2022-11-04 01:31:44 +11:00
4abadb78c4 New option in PostFragment: More options. 2022-11-03 22:13:08 +11:00
20214ce323 Superscript parser overhaul (#1162)
* Superscript parser overhaul

* Make superscript work with tables

* Fix some issues with Table compatibility

* Some bug fixes

* Re-enable Autolink
2022-11-03 18:07:25 +08:00
e362f2ecf0 Fix issues related to hiding account karma in the navigation drawer. 2022-11-03 15:34:45 +11:00
814617b674 Version 5.3.4. 2022-11-03 14:42:01 +11:00
59c74a2a87 Handle u/me. 2022-11-03 13:58:07 +11:00
4b81d554a8 Fix Separate posts and comments in portrait mode not working. 2022-11-03 13:46:30 +11:00
785bb205f6 Handle invalid regex pattern in post filter. 2022-11-03 13:24:54 +11:00
cmp
15b979d3ba Add some contrast to subreddit and user toolbars. (#1170)
Add a gradient from the primary theme color to transparent so that if a
subreddit or user profile has a very light background, the usually light
text and buttons are not obscured or in some cases invisible.

The gradients don't appear for immersive mode so that the app remains
immersive.
2022-11-03 10:00:25 +08:00
72c66e7e4e Rename confidence sort to best (#1177)
* Rename CONFIDENCE comments sort type to BEST and remove old BEST type

The Reddit API supports only CONFIDENCE sort type for comments but displays it
as BEST.
I renamed CONFIDENCE name to Best and added a migration step for loading
correct sort type.

* Clean up sortType usages in ViewPostDetailFragment

Removed unnecessary null checks, object creations and most case conversions
2022-11-03 09:58:08 +08:00
78496e080f Display comment avatar only if it is the right user (#1191)
Condition in callback for loading avatar url is almost always true[1]. So it would load avatar even if the viewholder got bound to another comment.

Ideally the solution would be to update the comment just like now, then find current position of the comment and call onItemChanged. However you cannot call onItemChanged from onBindViewHolder and that is a problem because callback can be executed synchronously.

So instead we just check that viewholder is bound to some comment and that bound comment's author matches initially requested author.

[1] The only case I know when it is false is when that comment got deleted and its author got replaced with "[deleted]" before the callback got executed
2022-11-03 09:47:10 +08:00
191df66a3b add backup password below backup settings button (#1185) 2022-11-02 20:49:26 +08:00
3815abec36 Don't pick up hyperlink text as a link (#1182) 2022-11-02 20:48:52 +08:00
4bec3e0922 always mux videos when downloading (#1152)
* mux videos with and without audio

* move variable to inner scope

* rename argument to catch block
2022-11-02 20:25:35 +08:00
28ca5e6bbe Improve wiki link handling (#1184)
* handle wiki links with dashes and index wiki page

* properly handle w vs wiki and links with wiki in it twice

* remove beginning and end of line tokens from wiki regex

* optimize wiki regex
2022-11-02 20:24:38 +08:00
0cab9663d4 Rules can now show in private subreddits (#1181)
* Added oauth to fetching rules

* Added getRulesOauth for users that are logged in

Co-authored-by: Abi <u7290897@anu.edu.au>
2022-11-02 20:18:00 +08:00
2863fa90be handle reddit.com/report as a url, not post link (#1179) 2022-11-02 20:17:21 +08:00
f85959cd89 add button to export logs to GitHub issue (#1180) 2022-11-02 20:16:23 +08:00
9703a46f5f wait to load security settings until successful authentication (#1196) 2022-11-02 20:11:46 +08:00
9b4ee0018e Fix see removed comment edit wrong comment (#1192)
* Fix removed comment shown in the wrong position.

* Handle index out of bounds.
2022-11-02 19:46:18 +08:00
fe9e0bd5d7 fix the bug: Scroll position is lost when changing screen orientation (#1173) 2022-10-24 10:40:07 +08:00
bd690de044 Update README.md 2022-10-23 10:31:55 +08:00
4cc6c2b21a Hide Karma (#1168)
* feature/ability to hide karma

* only hide karma in nav bar

* center account name vertically when not showing karma
2022-10-22 14:39:36 +08:00
5e3eaafe26 Add view that can lock swipe-to-close gesture (#1140)
Slidr works by adding its own view in the hierarchy and listening to touch
events in `onInterceptTouchEvent`. Once it detects movement in the correct
direction, it returns `true` and handles all the events itself.

Adding scrollable view detection to Slidr would solve the problem, but it is
not possible and would probably have performance impact.

Fortunately Slidr does not intercept the very first event, which is
ACTION_DOWN, and it reaches scrollable view. So the scrollable view itself can
decide if it should disallow the swipe.

This also has a performance benefit over `OnScrollChangedListener` because
the listener is triggered for every scroll of every view even if the child we
are interested in did not scroll. On the other hand `on(Intercept)TouchEvent`
is triggered only when the view is touched.

There is a possibility that swipe won't be unlocked if view never receives
ACTION_UP or ACTION_CANCEL. However the docs say nothing about the probability
of this happening. Anyways, one possible solution is to post a runnable that
will unlock swipe soon after locking.
2022-10-22 14:37:31 +08:00
d11fb884c2 Fix comment expanding logic (#1155)
Child comment expanding was broken because it did not take into account children
of children of children and deeper levels of comments when calculating new
comment's position.

Replaced with a simple tree to list conversion in pre-order.
2022-10-16 17:06:10 +08:00
297c20f5d3 Fix duplicate download folders by persisting read permission (#1164)
* Persist read permission

ACTION_OPEN_DOCUMENT_TREE grants both read and write permissions, but they are
granted only until device reboot unless app persists them.

Once read permission is lost, app cannot check if folders exist in DownloadMediaService.
But it can still create new folders because it has write permission. This results
in duplicate folders.

* Remove unnecessary FLAG_GRANT_WRITE_URI_PERMISSION

This flag is ignored when used with ACTION_OPEN_DOCUMENT_TREE
2022-10-15 19:09:09 +08:00
48dcf2293c Disable Copied toast on android 13+ (#1139) 2022-10-15 19:07:24 +08:00
cmp
9b8cd3816f Delineate comments with hidden scores (#1147)
* Delineate comments with hidden scores.

* Same change for fully collapsed comments.
2022-10-15 19:06:38 +08:00
540ba6e74e Parse spoilers into nodes (#1150)
Implementation is inspired by already existing in Markwon image and link processing
but has to work around some limitations of writing an external plugin.

The first one is storing brackets ourselves. Stored brackets need to be cleared
when a new block starts. Markwon does it in MarkwonInlineProcessor but there is
no callback that we could use. Clearing storage from our own block parser is
unreliable as it is not guaranteed to be called. Instead, every time we need to
access the storage we compare current block with the last used block and clear
storage if necessary.

The second problem is actually a feature of Markwon that it applies spans in
reverse order of calls to MarkwonVisitor#setSpansForNode. This causes other spans
like links and code to be drawn over spoilers making them visible. Adding spans
with a different priority doesn't help as it would require negative priority.
Instead we just remove all the SpoilerSpans from the final string and add them
again, so they are applied last as we want.
2022-10-08 14:25:02 +08:00
cmp
40c61eb382 Ellipsize usernames if they don't fit on one line in a fully collapsed comment text area. (#1148) 2022-10-08 14:07:51 +08:00
01071e2a52 Refactor and de-duplicate markdown code (#1086)
* Add todos to places that need more markdown fixes

* Parse spoilers and headings in sidebar

* Assign anonymous MarkwonPlugin to a variable

Prepare code for a future refactoring

* Assign click listener lambda to a variable

Prepare code for a future refactoring

* Add function for creating Markwon with full markdown

All the builders had the same plugins applied to them, except for
BetterLinkMovement. But it is safe to add the plugin as it just adjusts
link interactions.

Also some plugins are now applied in a different order but it doesn't
change anything in this case.

* Add function for creating Markwon with only links support

* Extract UrlMenuBottomSheetFragment creation

* Add functions for creating MarkwonAdapters

* Replace linkify with newInstance for BetterLinkMovementMethod

Because varargs weren't used, the two methods are identical
2022-10-08 12:22:22 +08:00
4947bc1be5 Fix crash in debug build by using fully qualified class name for layoutmanager (#1130)
When the class name is relative, Android tries to resolve it against applicationId.
However it does not match the package because of `.debug` suffix so it tries
to load the wrong class. This results in ClassNotFoundException and a crash.

Using fully qualified class name fixes it as the system can use the class name
as is.
2022-09-25 16:15:38 +08:00
fad978432e Fix spoiler interactions with links and long clicks (#1129)
* Prioritize clicks on hidden spoilers over links

Extend BetterLinkMovementMethod to override selection of span that will be
touched and give spoilers and links following priorities:
1. Hidden spoiler
2. Non-spoiler span (i.e. link)
3. Shown spoiler

#609

* Ignore long clicks on spoilers

Ignore long clicks if it is a SpoilerSpan. Also don't apply highlight
because it breaks spoiler effect.

#529
2022-09-25 16:13:59 +08:00
85debf62f3 Rewrite spoiler parsing (#1104)
* Rewrite spoiler parsing to properly support nested spoilers and code blocks

Parse all the spoilers, ignoring spoiler brackets that intersect with code
spans. Detect all the spoilers that are nested and mark them accordingly.
Delete all spoiler brackets that were matched. Add SpoilerSpans for non-nested
ranges.

* Simplify offset calculation
2022-09-25 15:52:00 +08:00
a87704b00d Fixed Gray Overlay in Image (#1111)
* Added a clear search bar text button

* Made caption disappear/show when tapping on image and removed gray overlay when no caption.
2022-09-21 13:59:09 +08:00
0a18220998 Fix 'Suggested Title' bug (#1120)
- Fixed issue where a post's suggested titles would fail to generate

Co-authored-by: Kurian Vithayathil <no.reply@github.com>
2022-09-21 13:56:26 +08:00
1108d41eed Minor bugs fixed. 2022-09-21 15:54:58 +10:00
3e66a4fda7 Fix reply markdown (#1098)
* Display comment body the same way as post body when replying

There are two views that support markdown, one of them was used to display post
titles and comments, the other - post bodies. The views are configured differently
even though post and comment bodies should be displayed the same way. Now post
and comment bodies are displayed by the same view.

* Rename extra keys from TEXT to TITLE

Now these extra keys are used only by post title, reflect this in the name.

* Remove markdown support from post title view

* Fix reply styling

Co-authored-by: Docile-Alligator <25734209+Docile-Alligator@users.noreply.github.com>
2022-09-21 13:23:00 +08:00