Commit Graph

2074 Commits

Author SHA1 Message Date
Patrick Demers
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
Sergei Kozelko
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
Sergei Kozelko
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
Sergei Kozelko
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
o13e
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
Sergei Kozelko
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
Sergei Kozelko
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
Sergei Kozelko
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
Sergei Kozelko
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
Sergei Kozelko
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
MChen321
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
Kurian Vithayathil
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
Docile-Alligator
1108d41eed Minor bugs fixed. 2022-09-21 15:54:58 +10:00
Sergei Kozelko
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
scria1000
76c7e9e545
Don't trim leading whitespaces (#1072)
Co-authored-by: Docile-Alligator <25734209+Docile-Alligator@users.noreply.github.com>
2022-09-21 13:02:45 +08:00
sal0max
269a01ed42
Allow parallel installation of debug and release versions (#636)
* Allow parallel installation of debug and release versions
...by adding '.debug' suffix to application id

* add separate app name resource for debug build
2022-09-21 12:57:42 +08:00
Andrei Shpakovskiy
3c492d2626
Show OP badge on restored comment (#1016) 2022-09-21 12:53:19 +08:00
Michael Manganiello
9fad6fc961
Fix memory leak on ConnectivityManager (#1066)
Leak found using LeakCanary. Steps:
1. Enable the LeakCanary dependency.
1. Open the app.
1. Go to the "All" tab.
1. Open any post, and go back to the post list.

Leak trace:

```
2022-09-04 17:56:05.904 32018-32018/ml.docilealligator.infinityforreddit.debug D/LeakCanary:
    ┬───
    │ GC Root: System class
    │
    ├─ android.net.ConnectivityManager class
    │    Leaking: NO (a class is never leaking)
    │    ↓ static ConnectivityManager.sInstance
    │                                 ~~~~~~~~~
    ├─ android.net.ConnectivityManager instance
    │    Leaking: UNKNOWN
    │    Retaining 114 B in 5 objects
    │    mContext instance of ml.docilealligator.infinityforreddit.activities.ViewPostDetailActivity with mDestroyed = true
    │    ↓ ConnectivityManager.mContext
    │                          ~~~~~~~~
    ╰→ ml.docilealligator.infinityforreddit.activities.ViewPostDetailActivity instance
         Leaking: YES (ObjectWatcher was watching this because ml.docilealligator.infinityforreddit.activities.
         ViewPostDetailActivity received Activity#onDestroy() callback and Activity#mDestroyed is true)
         Retaining 1.8 MB in 27752 objects
         key = 22e99901-9689-4f70-b88c-092a4a7efad9
         watchDurationMillis = 5518
         retainedDurationMillis = 517
         mApplication instance of ml.docilealligator.infinityforreddit.Infinity
         mBase instance of androidx.appcompat.view.ContextThemeWrapper
```

Solution based on [this StackOverflow answer](https://stackoverflow.com/a/41431693)
2022-09-21 12:47:38 +08:00
Taco
55d6078ccc
Start utilizing view binding (#1013) 2022-09-21 12:46:13 +08:00
Docile-Alligator
8a2932122c Version 5.3.3. 2022-09-19 15:10:10 +10:00
StephenTheMoldovan
b0cc32e905
Update translation contributors (#1108) 2022-09-19 13:08:56 +08:00
Docile-Alligator
9fbb40c394 Fix app crashes on start up on Android < 6.0. 2022-09-19 15:05:27 +10:00
Wladimir Kirianov
c269e5dd75
delete "/" in filtering multireddit path 2022-09-18 10:16:41 +02:00
user_727
2f8d0404bf
Update multireddit apply filter text (#712)
* Update multireddit apply filter text

A "/" is needed at the end of the path in order for the filter to be applied correctly to the multireddit. Also, any characters that are not lowercase will also make it not apply properly.
2022-09-18 10:00:24 +02:00
Docile-Alligator
4577c4bcd0 Merge branch 'master' of github.com:Docile-Alligator/Infinity-For-Reddit 2022-09-17 00:14:01 +10:00
Docile-Alligator
8c24769089 Version 5.3.2. 2022-09-17 00:13:37 +10:00
Docile-Alligator
1ecbbbbb9d
Update README.md 2022-09-16 22:05:51 +08:00
Docile-Alligator
bd7dbe13b4
Update README.md 2022-09-16 22:04:15 +08:00
Docile-Alligator
f42c0c4443 Merge branch 'master' of github.com:Docile-Alligator/Infinity-For-Reddit 2022-09-16 23:57:12 +10:00
Docile-Alligator
f70721d7fd Fix redgifs download issues. 2022-09-16 23:56:46 +10:00
Wladimir Kirianov
f2e10c1d24 add explore the docs 2022-09-15 18:02:41 +02:00
Wladimir Kirianov
e75b8235b8 add logo 2022-09-15 17:48:32 +02:00
Wladimir Kirianov
e6ee4c7ebf Deleted one screenshot for better viewing 2022-09-15 17:33:19 +02:00
Wladimir Kirianov
40a9df345b fix typo in link 2022-09-15 17:28:48 +02:00
Wladimir Kirianov
cc96e3d133 Update Readme to a more clean and mobile friendly interface 2022-09-15 17:26:53 +02:00
Wladimir Kirianov
a63e1f2a68
Merge pull request #1094 from Docile-Alligator/UpdateIssueTemplate
Update issue template
2022-09-15 15:48:11 +02:00
Wladimir Kirianov
bbbc0276d1 Add description to Steps to reproduce 2022-09-15 15:40:41 +02:00
Wladimir Kirianov
7991254df0 Add additional contact information 2022-09-14 15:56:09 +02:00
Wladimir Kirianov
ff71a02ce6
add VScode 2022-09-14 15:42:07 +02:00
Docile-Alligator
61da952b7b Update libraries. 2022-09-10 18:21:58 +10:00
Docile-Alligator
b55135e880 Merge branch 'master' of github.com:Docile-Alligator/Infinity-For-Reddit 2022-09-10 01:25:16 +10:00
Docile-Alligator
854833a5db Update libraries. 2022-09-10 01:25:07 +10:00
Taco
f2e1ffe52e
Update gradle wrapper (#1006)
* Update gradle wrapper

* Update AGP, fix gradle deprecations
2022-09-09 23:24:18 +08:00
Sergei Kozelko
addd6705ed
Update GitHub workflows (#995)
* Update CodeQL to v2

v1 is deprecated, see https://github.blog/changelog/2022-04-27-code-scanning-deprecation-of-codeql-action-v1/

* Use gradle action for build

* Update checkout to v3

* Update setup-java to v3

* Update upload-artifact to v3

* Setup Dependabot to update GitHub actions
2022-09-09 13:40:51 +08:00
Taco
e04fedfc64
Use simpler DrawerLayout methods (#1015) 2022-09-09 13:40:07 +08:00
Sergei Kozelko
b72bfdef37
refactor: Extract CopyTextBottomSheetFragment display logic (#969) 2022-09-09 13:38:42 +08:00
Isira Seneviratne
45bc223659
Remove unnecessary uses of DrawableCompat. (#1045) 2022-09-09 13:37:19 +08:00
Sergei Kozelko
e0cf4ec485
Fix markdown in rules screen (#1050)
* Display tables in rules screen

* Parse spoiler and headings in rules screen
2022-09-09 13:34:00 +08:00