Commit Graph

1943 Commits

Author SHA1 Message Date
Sergei Kozelko
1c81d3e0c9
Fix placeholder position check (#1216)
* Fix placeholder position check

Because of the missed negation `placeholderPosition` could actually point to a different comment. As a result loaded comments would be displayed at a wrong position which could result in duplicated comments.

* Extract placeholder search code

Simple refactoring. The only notable change is that now technically `placeholderPosition` can be -1. In practice that should never happen, but I added checks anyways
2022-12-04 05:05:28 +08:00
Docile-Alligator
bd5814fd4d Match parent for the bottom app bar in ViewRedditGalleryImageOrGifFragment. 2022-12-04 07:42:39 +11:00
Docile-Alligator
a3ddcb874d Fix bottom app bar not shown in ViewRedditGalleryImageOrGifFragment. 2022-12-04 07:41:25 +11:00
Docile-Alligator
57985ed95a Fix a stupid bug that prevents posts from loading. 2022-12-04 06:42:02 +11:00
Docile-Alligator
605129517e Notification permission. 2022-12-04 06:15:13 +11:00
Docile-Alligator
4af9e3d161 Minor bugs fixed. 2022-11-28 23:31:23 +11:00
Kurian Vithayathil
b1280bfb36
Dagger networking refactor (#1125)
* Separate network dependency injection module

- Moved network-related dependencies into a separate module
- Consolidated common dependencies to save resources constructing a http client/retrofit

* Separate construction of access token interceptor

* Create providers for Context and Application to be injectable

* Refactor AppModule and AppComponent

- Use component builder to store application context and provide to modules
- Optimise AppModule providers

* Use component factory to add component dependencies

* Updated network dependencies to singleton.

Add missing OAuth base url for oauth request

Co-authored-by: Kurian Vithayathil <no.reply@github.com>
Co-authored-by: Docile-Alligator <25734209+Docile-Alligator@users.noreply.github.com>
2022-11-28 17:08:32 +08:00
Docile-Alligator
234bd7a2dd Minor bugs fixed 2022-11-27 23:40:03 +11:00
Sergei Kozelko
b4c95fe4a5
Use more precise viewholder type in PostGalleryTypeImageRecyclerViewAdapter (#1229) 2022-11-27 20:25:20 +08:00
Sergei Kozelko
44dcf64475
Sort type converters - part 2 (#1244)
* Use and store sort type as enum for comments

* Use and store sort type as enum for posts

* Use sort type enum for search

* Remove unused reddit api methods

These were missed in the first "sort type" pr
2022-11-27 20:22:36 +08:00
scria1000
9a3b9115ff
Fix Imgur bug for insecure mp4 links (#1240) 2022-11-27 20:17:39 +08:00
Sergei Kozelko
69ba6461ff
Remove unused Post fields (#1212)
* Remove unused isHiddenInRecyclerView Post field

Was used only for reads and was always false

* Remove unused isHiddenManuallyByUser Post field

Was only written to and read for serialization. Never used for any logic
2022-11-27 20:12:29 +08:00
Sergei Kozelko
d3ccaea2cc
Store only first level replies as children (#1222)
* Show the current image index in gallery in PostFragment.

* Fixed issue where filters applied to same feed were behaving incorrectly (#1172)

* Fix ItemTouchHelper and gallery swipe gesture fighting each other.

* Show correct image in the gallery in ViewRedditGalleryActivity.

* Swipe to view images in a gallery in Card Layout 2.

* Fix gallery layout issues.

* Remove `commentData` argument that is always an empty ArrayList

* Return top level comments in addition to expanded comments after parsing

Since 0f1c4d loading more comments loads not only first level replies, but also deeper comments. Because of this `expandedComments` can contain those deep replies if `expandChildren` is true. Adding `expandedComments` to parent causes a bug because parent's children are supposed to be only next level replies. Because of previously mentioned changes that is not true.

Now expanding parent comment results in duplicate comments: one of them correctly comes from the parent of duplicated comment. The other one is shown because it is incorrectly stored in the parent of "load more comments" button.

This comment separates top level comments (fist level replies) and expanded comments. `expandedComments` are still used for display, but only first level replies are added to the parent

* Add debug assertion for children depth

Co-authored-by: Docile-Alligator <25734209+Docile-Alligator@users.noreply.github.com>
Co-authored-by: Aidan223 <110802888+Aidan223@users.noreply.github.com>
2022-11-25 21:13:37 +08:00
Anatolii Afanasev
1abda7c6e3
Minor code improvements (#1218)
* Move mAccessToken and mAccountName initialization upper

* Marked INSTANCE as a volatile to be DCL compliant

* fix a typo in a method name and remove redundant switch

* remove redundant ifs

* removed DCL on RedditDataRoomDatabase as its controlled by dagger

* remove redundant ifs in PostGalleryActivity as nColumns can be either 2 or 3 only

* replace MediaStore.Video.Media.IS_PENDING with MediaStore.MediaColumns.IS_PENDING

* reverting simplified ifs as it going to be used in the future

* reverting HistoryPostViewModel
2022-11-19 22:23:31 +08:00
Sergei Kozelko
da58688586
Remove unused download events (#1236)
* Remove unused DownloadRedditVideoEvent

* Remove unused DownloadMediaEvent
2022-11-19 17:25:38 +08:00
Sergei Kozelko
a1df8f4d38
Sort type converters (#1211)
* Create and add to Retrofit SortTypeConverterFactory

* Clean up SortType class

Mark fields as final, annotate nullability

* Use SortType enums as query arguments

* Use optional query arguments to simplify code

Retrofit ignores null values, so there is no need to remove them from arguments manually
2022-11-18 16:47:27 +08:00
Patrick Demers
ec55804c7e
hide keyboard when choosing account from bottom sheet (#1231) 2022-11-18 16:39:42 +08:00
Docile-Alligator
67b6906ead New option: Settings->Interface->Comment->Comment Divider Type. 2022-11-14 22:01:31 +11:00
Docile-Alligator
af870c157b Swipe to see gallery images in PostDetailRecyclerViewAdapter. 2022-11-14 18:44:07 +11:00
Docile-Alligator
a95c77731a Swipe to see gallery images in HistoryPostFragment. 2022-11-14 17:38:59 +11:00
Docile-Alligator
968b04a508 Send correct image index when opening the image in gallery posts. 2022-11-14 15:17:55 +11:00
Docile-Alligator
746ebc848c Merge remote-tracking branch 'origin/master' 2022-11-14 15:08:14 +11:00
Docile-Alligator
8520c0c8ad Swipe to see images in gallery in gallery layout. 2022-11-14 15:07:15 +11:00
Wladimir Kirianov
05910f5489 add example post form 2022-11-13 17:00:18 +01:00
Docile-Alligator
c44fecb3f2 Fix gallery layout issues. 2022-11-13 18:41:48 +11:00
Docile-Alligator
ef1b14cc6a Swipe to view images in a gallery in Card Layout 2. 2022-11-13 18:25:30 +11:00
Docile-Alligator
2eaf8a8a01 Show correct image in the gallery in ViewRedditGalleryActivity. 2022-11-13 17:00:37 +11:00
Docile-Alligator
2d62332e8d Merge remote-tracking branch 'origin/master' 2022-11-13 16:50:54 +11:00
Docile-Alligator
6f2eea90ae Fix ItemTouchHelper and gallery swipe gesture fighting each other. 2022-11-13 16:50:25 +11:00
Aidan223
cb7805c7a7
Fixed issue where filters applied to same feed were behaving incorrectly (#1172) 2022-11-13 10:56:58 +08:00
Docile-Alligator
b85ed3c867 Show the current image index in gallery in PostFragment. 2022-11-13 01:16:27 +11:00
Docile-Alligator
03a2784fb8 Swipe between gallery images in PostFragment. 2022-11-12 17:53:04 +11:00
Sergei Kozelko
0f1c4d1e11
Switch loading more comments to /morechildren endpoint (#1186)
* Load more comments from /morechildren endpoint

Previous implementation requested comments from /api/info which returned the comments themselves but did not include any information about their children. Also /api/info does not allow to specify sort type. On the other hand /morechildren supports sort type and it will be added in a later commit.

I am not proud of this implementation, but I had to fight with both Reddit api response and existing code. The problem with api response is that it is a flat list of comments, not a tree structure. So the tree has to be rebuilt on our end. And the problem with existing code is that it merges "more children" node into its parent but then adds a placeholder anyways.

The code relies on the fact that parent comment will be located before any of its children in the response. The code sequentially processes comments, tries to find their parents and either adds them to the tree or puts in a "top-level" array which will be handled by outside code.

One possible problem is the removal of `depth` argument from parsing as I couldn't find a way to fit it in the new logic. However I also didn't experience any problems with it during my testing and the response seems to always contain depth key. Moreover current depth handling logic in ParseComment#parseCommentRecursion is broken because it does not increment depth when making a recursive call.

* Store moreChildren ids instead of fullnames

/morechildren endpoint accepts ids instead of fullnames so there is no point in converting ids to fullnames and back

* Send all comment ids to Reddit so it can select what to display itself

Sending all ids allows Reddit to sort them properly. Since the number of comments can be very bing, it requires using POST request instead of GET.

This commit changes the meaning of Comment#moreChildrenIds field, now it stores only ids of comments that are not yet loaded. This simplifies the code and removes the need for Comment#moreChildrenStartingIndex

* Fetch more comments with current sort type
2022-11-11 13:32:58 +08:00
Docile-Alligator
8326e6c4a2 New option: Settings->Interface->Comment->Hide the Number of Votes. 2022-11-09 01:10:07 +11:00
Docile-Alligator
681a1c584c Limit EditText's height in CustomizePostFilterActivity. 2022-11-09 00:12:33 +11:00
Docile-Alligator
071ce78b7c Material Design 3 Switch. Target Sdk 33. 2022-11-08 23:17:26 +11:00
Sergei Kozelko
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
Docile-Alligator
c2360ca59a Modify the behaviour of ItemTouchHelper. 2022-11-07 13:38:55 +11:00
Docile-Alligator
fd63dba91b Fix screen staying at MorePostsInfoFragment after retrying. 2022-11-06 17:37:58 +11:00
Docile-Alligator
93e98b4cb5 Retry loading more posts. 2022-11-06 17:22:15 +11:00
Sergei Kozelko
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
Docile-Alligator
0ae9b74729 Minor changes to loading more posts. 2022-11-06 00:52:14 +11:00
Docile-Alligator
cf3595f22d Fix problems when fetching more history posts in ViewPostDetailActivity. 2022-11-06 00:01:18 +11:00
Docile-Alligator
fa472a3ad8 Show status of loading more posts in MorePostsInfoFragment. 2022-11-05 19:51:40 +11:00
Docile-Alligator
c86408dbe5 Fix history posts problems. 2022-11-05 14:31:58 +11:00
Docile-Alligator
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
Docile-Alligator
0a286cd9ba Load more posts in ViewPostDetailActivity for post feed in PostFragment. 2022-11-05 00:33:12 +11:00
Docile-Alligator
eb40bad3ef New option: Settings->Interface->Hide FAB in Post Feed. 2022-11-04 01:31:44 +11:00
Docile-Alligator
4abadb78c4 New option in PostFragment: More options. 2022-11-03 22:13:08 +11:00
scria1000
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