aboutsummaryrefslogtreecommitdiff
path: root/app/src/main/java (unfollow)
Commit message (Collapse)AuthorFilesLines
2022-11-02always mux videos when downloading (#1152)Patrick Demers1-25/+42
* mux videos with and without audio * move variable to inner scope * rename argument to catch block
2022-11-02Improve wiki link handling (#1184)Patrick Demers1-2/+12
* 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-02Rules can now show in private subreddits (#1181)Abi07114-5/+21
* Added oauth to fetching rules * Added getRulesOauth for users that are logged in Co-authored-by: Abi <u7290897@anu.edu.au>
2022-11-02handle reddit.com/report as a url, not post link (#1179)Patrick Demers1-0/+2
2022-11-02add button to export logs to GitHub issue (#1180)Patrick Demers1-0/+39
2022-11-02wait to load security settings until successful authentication (#1196)Patrick Demers2-2/+19
2022-11-02Fix see removed comment edit wrong comment (#1192)Blahaj-Samoyed4-14/+28
* Fix removed comment shown in the wrong position. * Handle index out of bounds.
2022-10-24fix the bug: Scroll position is lost when changing screen orientation (#1173)HuilinChen9431-0/+49
2022-10-22Hide Karma (#1168)Patrick Demers2-1/+9
* feature/ability to hide karma * only hide karma in nav bar * center account name vertically when not showing karma
2022-10-22Add view that can lock swipe-to-close gesture (#1140)Sergei Kozelko8-41/+111
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-16Fix comment expanding logic (#1155)Sergei Kozelko1-12/+8
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-15Fix duplicate download folders by persisting read permission (#1164)Sergei Kozelko2-9/+8
* 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-15Disable Copied toast on android 13+ (#1139)o13e6-6/+18
2022-10-15Delineate comments with hidden scores (#1147)cmp2-37/+70
* Delineate comments with hidden scores. * Same change for fully collapsed comments.
2022-10-08Parse spoilers into nodes (#1150)Sergei Kozelko8-188/+240
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-08Refactor and de-duplicate markdown code (#1086)Sergei Kozelko15-689/+502
* 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-09-25Fix spoiler interactions with links and long clicks (#1129)Sergei Kozelko11-10/+135
* 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-25Rewrite spoiler parsing (#1104)Sergei Kozelko1-65/+90
* 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-21Fixed Gray Overlay in Image (#1111)MChen3211-5/+13
* Added a clear search bar text button * Made caption disappear/show when tapping on image and removed gray overlay when no caption.
2022-09-21Fix 'Suggested Title' bug (#1120)Kurian Vithayathil1-2/+3
- Fixed issue where a post's suggested titles would fail to generate Co-authored-by: Kurian Vithayathil <no.reply@github.com>
2022-09-21Minor bugs fixed.Docile-Alligator1-10/+10
2022-09-21Fix reply markdown (#1098)Sergei Kozelko5-82/+49
* 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-21Don't trim leading whitespaces (#1072)scria10006-8/+24
Co-authored-by: Docile-Alligator <25734209+Docile-Alligator@users.noreply.github.com>
2022-09-21Show OP badge on restored comment (#1016)Andrei Shpakovskiy4-2/+17
2022-09-21Fix memory leak on ConnectivityManager (#1066)Michael Manganiello1-3/+3
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-21Start utilizing view binding (#1013)Taco3-147/+92
2022-09-19Version 5.3.3.Docile-Alligator1-1/+1
2022-09-19Update translation contributors (#1108)StephenTheMoldovan1-1/+1
2022-09-16Fix redgifs download issues.Docile-Alligator12-50/+33
2022-09-09Use simpler DrawerLayout methods (#1015)Taco1-3/+3
2022-09-09refactor: Extract CopyTextBottomSheetFragment display logic (#969)Sergei Kozelko7-39/+31
2022-09-09Remove unnecessary uses of DrawableCompat. (#1045)Isira Seneviratne10-54/+38
2022-09-09Fix markdown in rules screen (#1050)Sergei Kozelko2-12/+59
* Display tables in rules screen * Parse spoiler and headings in rules screen
2022-09-09Added a clear search bar text button (#1063)MChen3211-0/+12
2022-09-09Fix memory leak on BigImageViewer (#1067)Michael Manganiello3-3/+3
Leak found using LeakCanary. Steps: 1. Enable the LeakCanary dependency. 1. Open the app. 1. Open any post image, and go back. According to `Piasy/BigImageViewer` documentation, [Initialize section](https://github.com/Piasy/BigImageViewer/blob/9cc045e8146dc8833a487576745f17158bae4a4a/README.md#initialize), the app context must be used to avoid memory leaks. Leak trace: ``` 2022-09-04 19:51:38.154 13332-13332/ml.docilealligator.infinityforreddit.debug D/LeakCanary: ┬─── │ GC Root: Thread object │ ├─ android.os.HandlerThread instance │ Leaking: NO (PathClassLoader↓ is not leaking) │ Thread name: 'LeakCanary-Heap-Dump' │ ↓ Thread.contextClassLoader ├─ dalvik.system.PathClassLoader instance │ Leaking: NO (BigImageViewer↓ is not leaking and A ClassLoader is never leaking) │ ↓ ClassLoader.runtimeInternalObjects ├─ java.lang.Object[] array │ Leaking: NO (BigImageViewer↓ is not leaking) │ ↓ Object[257] ├─ com.github.piasy.biv.BigImageViewer class │ Leaking: NO (a class is never leaking) │ ↓ static BigImageViewer.sInstance │ ~~~~~~~~~ ├─ com.github.piasy.biv.BigImageViewer instance │ Leaking: UNKNOWN │ Retaining 969.9 kB in 14812 objects │ ↓ BigImageViewer.mImageLoader │ ~~~~~~~~~~~~ ├─ com.github.piasy.biv.loader.glide.GlideImageLoader instance │ Leaking: UNKNOWN │ Retaining 969.9 kB in 14811 objects │ ↓ GlideImageLoader.mRequestManager │ ~~~~~~~~~~~~~~~ ├─ com.bumptech.glide.RequestManager instance │ Leaking: UNKNOWN │ Retaining 969.9 kB in 14808 objects │ context instance of ml.docilealligator.infinityforreddit.activities.ViewPostDetailActivity with mDestroyed = true │ ↓ RequestManager.context │ ~~~~~~~ ╰→ 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 966.2 kB in 14703 objects key = f69c74cc-521e-4f6c-b5c8-8f787e27df75 watchDurationMillis = 5547 retainedDurationMillis = 541 mApplication instance of ml.docilealligator.infinityforreddit.Infinity mBase instance of androidx.appcompat.view.ContextThemeWrapper ```
2022-09-08Update ExoPlayer.Docile-Alligator21-1653/+1302
2022-09-06Version 5.3.1.Docile-Alligator4-311/+9
2022-09-04Fix stupid Redgifs API issue.Docile-Alligator47-118/+6193
2022-08-27Version 5.3.0.Docile-Alligator1-1/+1
2022-08-26Minor bugs fixed.Docile-Alligator1-1/+5
2022-08-21Show an indicator for the current sort type.Docile-Alligator13-39/+145
2022-08-21Show an indicator for the current sort type in SortTypeBottomSheetFragment.Docile-Alligator7-27/+56
2022-08-16Version 5.3.0-beta1.Docile-Alligator1-2/+0
2022-08-16Receive events in HistoryPostFragment.Docile-Alligator1-6/+399
2022-08-15Update Redgifs API.Docile-Alligator4-13/+35
2022-08-15Show urls in ShareLinkBottomSheetFragment.Docile-Alligator1-2/+11
2022-08-15Apply custom theme to settings page.Docile-Alligator48-164/+478
2022-08-14Apply custom theme to the header of the navigation drawer.Docile-Alligator2-3/+12
2022-08-14Heading markdown fix (#908)Sergei Kozelko11-15/+165
* Copy heading parser and adjust it to match Reddit behavior Unlike CommonMark, Reddit does not require space after #. This behavior is coded in a private static function, so the only way to override it is to copy everything and use the modified copy instead of the default parser. * Use RedditHeadingPlugin instead of regexes * Apply plugins to post body when writing a comment This fixes display when writing comment to a post that contains spoilers or headings without space * Apply plugins to parent comment body when writing a comment This fixes display when replying to a comment that contains strikethrough text
2022-08-14Fix post content is not parsed in other types of posts.Docile-Alligator2-96/+71