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)
* 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.
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](9cc045e814/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
```
* 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
* In anonymous mode, fixed bug in CheckIsFollowingUser.java that does not check if accountName is null or not, which prevents room from retrieving SubscribedUserData to check if the user is followed or not.
Also updated Room version to 2.4.2 to be compatible with M1 macbook.
* Simplified SubscribedUserData accountName null check code