Copy disabled (too large)
Download .txt
Showing preview only (10,741K chars total). Download the full file to get everything.
Repository: cygnusx-1-org/continuum
Branch: master
Commit: aa44bc460d13
Files: 1434
Total size: 9.7 MB
Directory structure:
gitextract_8bwcyaie/
├── .gitattributes
├── .github/
│ ├── ISSUE_TEMPLATE/
│ │ ├── bug_report.md
│ │ ├── config.yml
│ │ └── feature_request.md
│ ├── actions/
│ │ └── github-custom-issue-closer
│ └── workflows/
│ ├── build.yml
│ └── close-issues-custom-pattern.yml
├── .gitignore
├── CHANGELOG.md
├── FAQ.md
├── GIPHY.md
├── LICENSE
├── README.md
├── SETUP-old.md
├── SETUP.md
├── TESTS.md
├── app/
│ ├── Modules/
│ │ └── customtextview-2.1.aar
│ ├── build.gradle
│ ├── proguard-rules.pro
│ └── src/
│ ├── androidTest/
│ │ └── kotlin/
│ │ └── ru/
│ │ └── otus/
│ │ └── pandina/
│ │ ├── screens/
│ │ │ ├── CustomizePostFilterScreen.kt
│ │ │ ├── FilteredPostsScreen.kt
│ │ │ ├── MainScreen.kt
│ │ │ ├── UserAgreementFragment.kt
│ │ │ └── navigation/
│ │ │ ├── LoginScreen.kt
│ │ │ ├── NavigationViewLayout.kt
│ │ │ └── settings/
│ │ │ ├── ActionPanel.kt
│ │ │ ├── SettingsScreen.kt
│ │ │ ├── ThemeScreen.kt
│ │ │ ├── font/
│ │ │ │ ├── FontPreviewScreen.kt
│ │ │ │ └── FontScreen.kt
│ │ │ ├── interfaceScreen/
│ │ │ │ ├── CustomizeTabsScreen.kt
│ │ │ │ └── InterfaceScreen.kt
│ │ │ └── notification/
│ │ │ └── NotificationScreen.kt
│ │ ├── tests/
│ │ │ ├── APIKeysTest.kt
│ │ │ ├── BaseTest.kt
│ │ │ ├── LoginTest.kt
│ │ │ ├── MainTest.kt
│ │ │ └── SettingsTest.kt
│ │ └── utils/
│ │ └── NotificationDialogHelper.kt
│ ├── debug/
│ │ └── res/
│ │ └── values/
│ │ └── strings.xml
│ ├── main/
│ │ ├── AndroidManifest.xml
│ │ ├── java/
│ │ │ └── ml/
│ │ │ └── docilealligator/
│ │ │ └── infinityforreddit/
│ │ │ ├── APIResult.kt
│ │ │ ├── ActionState.kt
│ │ │ ├── AppComponent.java
│ │ │ ├── AppModule.java
│ │ │ ├── CommentModerationActionHandler.kt
│ │ │ ├── Constants.java
│ │ │ ├── Converters.kt
│ │ │ ├── CustomFontReceiver.java
│ │ │ ├── DataLoadState.kt
│ │ │ ├── DownloadProgressResponseBody.java
│ │ │ ├── FetchPostFilterAndConcatenatedSubredditNames.java
│ │ │ ├── FetchVideoLinkListener.java
│ │ │ ├── Infinity.java
│ │ │ ├── NetworkModule.java
│ │ │ ├── NetworkState.java
│ │ │ ├── PostModerationActionHandler.kt
│ │ │ ├── ProxyEnabledGlideModule.java
│ │ │ ├── RecyclerViewContentScrollingInterface.java
│ │ │ ├── RedditDataRoomDatabase.java
│ │ │ ├── SaveMemoryCenterInisdeDownsampleStrategy.java
│ │ │ ├── SetAsWallpaperCallback.java
│ │ │ ├── SingleLiveEvent.java
│ │ │ ├── VideoLinkFetcher.java
│ │ │ ├── WallpaperSetter.java
│ │ │ ├── account/
│ │ │ │ ├── Account.java
│ │ │ │ ├── AccountDao.java
│ │ │ │ ├── AccountDaoKt.kt
│ │ │ │ ├── AccountRepository.java
│ │ │ │ ├── AccountViewModel.java
│ │ │ │ └── FetchMyInfo.java
│ │ │ ├── activities/
│ │ │ │ ├── AccountPostsActivity.java
│ │ │ │ ├── AccountSavedThingActivity.java
│ │ │ │ ├── ActivityToolbarInterface.java
│ │ │ │ ├── AppBarStateChangeListener.java
│ │ │ │ ├── BaseActivity.java
│ │ │ │ ├── CommentActivity.java
│ │ │ │ ├── CommentFilterPreferenceActivity.java
│ │ │ │ ├── CommentFilterUsageListingActivity.java
│ │ │ │ ├── CopyMultiRedditActivity.kt
│ │ │ │ ├── CreateMultiRedditActivity.java
│ │ │ │ ├── CustomThemeListingActivity.java
│ │ │ │ ├── CustomThemePreviewActivity.java
│ │ │ │ ├── CustomizeCommentFilterActivity.java
│ │ │ │ ├── CustomizePostFilterActivity.java
│ │ │ │ ├── CustomizeThemeActivity.java
│ │ │ │ ├── EditCommentActivity.java
│ │ │ │ ├── EditMultiRedditActivity.java
│ │ │ │ ├── EditPostActivity.java
│ │ │ │ ├── EditProfileActivity.java
│ │ │ │ ├── FilteredPostsActivity.java
│ │ │ │ ├── FullMarkdownActivity.java
│ │ │ │ ├── HistoryActivity.java
│ │ │ │ ├── InboxActivity.java
│ │ │ │ ├── LinkResolverActivity.java
│ │ │ │ ├── LockScreenActivity.java
│ │ │ │ ├── LoginActivity.java
│ │ │ │ ├── LoginChromeCustomTabActivity.java
│ │ │ │ ├── MainActivity.java
│ │ │ │ ├── PostFilterPreferenceActivity.java
│ │ │ │ ├── PostFilterUsageListingActivity.java
│ │ │ │ ├── PostGalleryActivity.java
│ │ │ │ ├── PostImageActivity.java
│ │ │ │ ├── PostLinkActivity.java
│ │ │ │ ├── PostPollActivity.java
│ │ │ │ ├── PostTextActivity.java
│ │ │ │ ├── PostVideoActivity.java
│ │ │ │ ├── QRCodeScannerActivity.java
│ │ │ │ ├── ReportActivity.java
│ │ │ │ ├── RulesActivity.java
│ │ │ │ ├── SearchActivity.java
│ │ │ │ ├── SearchHistoryActivity.java
│ │ │ │ ├── SearchResultActivity.java
│ │ │ │ ├── SearchSubredditsResultActivity.java
│ │ │ │ ├── SearchUsersResultActivity.java
│ │ │ │ ├── SelectUserFlairActivity.java
│ │ │ │ ├── SelectedSubredditsAndUsersActivity.java
│ │ │ │ ├── SendPrivateMessageActivity.java
│ │ │ │ ├── SettingsActivity.java
│ │ │ │ ├── ShareDataResolverActivity.java
│ │ │ │ ├── SubmitCrosspostActivity.java
│ │ │ │ ├── SubredditMultiselectionActivity.java
│ │ │ │ ├── SubscribedThingListingActivity.java
│ │ │ │ ├── SuicidePreventionActivity.java
│ │ │ │ ├── UploadImageEnabledActivity.java
│ │ │ │ ├── UserMultiselectionActivity.java
│ │ │ │ ├── ViewImageOrGifActivity.java
│ │ │ │ ├── ViewImgurMediaActivity.java
│ │ │ │ ├── ViewMultiRedditDetailActivity.java
│ │ │ │ ├── ViewPostDetailActivity.java
│ │ │ │ ├── ViewPrivateMessagesActivity.java
│ │ │ │ ├── ViewRedditGalleryActivity.java
│ │ │ │ ├── ViewSubredditDetailActivity.java
│ │ │ │ ├── ViewUserDetailActivity.java
│ │ │ │ ├── ViewVideoActivity.java
│ │ │ │ ├── ViewVideoActivityBindingAdapter.java
│ │ │ │ ├── WebViewActivity.java
│ │ │ │ └── WikiActivity.java
│ │ │ ├── adapters/
│ │ │ │ ├── AccountChooserRecyclerViewAdapter.java
│ │ │ │ ├── AcknowledgementRecyclerViewAdapter.java
│ │ │ │ ├── CommentFilterUsageEmbeddedRecyclerViewAdapter.java
│ │ │ │ ├── CommentFilterUsageRecyclerViewAdapter.java
│ │ │ │ ├── CommentFilterWithUsageRecyclerViewAdapter.java
│ │ │ │ ├── CommentsListingRecyclerViewAdapter.java
│ │ │ │ ├── CommentsRecyclerViewAdapter.java
│ │ │ │ ├── CrashReportsRecyclerViewAdapter.java
│ │ │ │ ├── CustomThemeListingRecyclerViewAdapter.java
│ │ │ │ ├── CustomizeThemeRecyclerViewAdapter.java
│ │ │ │ ├── FlairBottomSheetRecyclerViewAdapter.java
│ │ │ │ ├── FollowedUsersRecyclerViewAdapter.java
│ │ │ │ ├── MarkdownBottomBarRecyclerViewAdapter.java
│ │ │ │ ├── MessageRecyclerViewAdapter.java
│ │ │ │ ├── MultiRedditListingRecyclerViewAdapter.java
│ │ │ │ ├── OnlineCustomThemeListingRecyclerViewAdapter.java
│ │ │ │ ├── Paging3LoadingStateAdapter.java
│ │ │ │ ├── PostDetailRecyclerViewAdapter.java
│ │ │ │ ├── PostFilterUsageRecyclerViewAdapter.java
│ │ │ │ ├── PostFilterWithUsageRecyclerViewAdapter.java
│ │ │ │ ├── PostGalleryTypeImageRecyclerViewAdapter.java
│ │ │ │ ├── PostRecyclerViewAdapter.java
│ │ │ │ ├── PrivateMessagesDetailRecyclerViewAdapter.java
│ │ │ │ ├── RedditGallerySubmissionRecyclerViewAdapter.java
│ │ │ │ ├── ReportReasonRecyclerViewAdapter.java
│ │ │ │ ├── RulesRecyclerViewAdapter.java
│ │ │ │ ├── SearchActivityRecyclerViewAdapter.java
│ │ │ │ ├── SelectedSubredditsRecyclerViewAdapter.java
│ │ │ │ ├── SettingsSearchAdapter.java
│ │ │ │ ├── SubredditAutocompleteRecyclerViewAdapter.java
│ │ │ │ ├── SubredditListingRecyclerViewAdapter.java
│ │ │ │ ├── SubredditMultiselectionRecyclerViewAdapter.java
│ │ │ │ ├── SubscribedSubredditsRecyclerViewAdapter.java
│ │ │ │ ├── TranslationFragmentRecyclerViewAdapter.java
│ │ │ │ ├── UploadedImagesRecyclerViewAdapter.java
│ │ │ │ ├── UserFlairRecyclerViewAdapter.java
│ │ │ │ ├── UserListingRecyclerViewAdapter.java
│ │ │ │ ├── UserMultiselectionRecyclerViewAdapter.java
│ │ │ │ └── navigationdrawer/
│ │ │ │ ├── AccountManagementSectionRecyclerViewAdapter.java
│ │ │ │ ├── AccountSectionRecyclerViewAdapter.java
│ │ │ │ ├── FavoriteSubscribedSubredditsSectionRecyclerViewAdapter.java
│ │ │ │ ├── HeaderSectionRecyclerViewAdapter.java
│ │ │ │ ├── NavigationDrawerRecyclerViewMergedAdapter.java
│ │ │ │ ├── PostFilterUsageEmbeddedRecyclerViewAdapter.java
│ │ │ │ ├── PostSectionRecyclerViewAdapter.java
│ │ │ │ ├── PreferenceSectionRecyclerViewAdapter.java
│ │ │ │ ├── RedditSectionRecyclerViewAdapter.java
│ │ │ │ └── SubscribedSubredditsRecyclerViewAdapter.java
│ │ │ ├── apis/
│ │ │ │ ├── DownloadFile.java
│ │ │ │ ├── ImgurAPI.java
│ │ │ │ ├── OhMyDlAPI.kt
│ │ │ │ ├── PushshiftAPI.java
│ │ │ │ ├── RedditAPI.java
│ │ │ │ ├── RedditAPIKt.kt
│ │ │ │ ├── RedgifsAPI.java
│ │ │ │ ├── RevedditAPI.java
│ │ │ │ ├── ServerAPI.java
│ │ │ │ ├── StreamableAPI.java
│ │ │ │ ├── TitleSuggestion.java
│ │ │ │ └── VReddIt.java
│ │ │ ├── asynctasks/
│ │ │ │ ├── AccountManagement.java
│ │ │ │ ├── AddSubredditOrUserToMultiReddit.java
│ │ │ │ ├── BackupSettings.java
│ │ │ │ ├── ChangeThemeName.java
│ │ │ │ ├── CheckIsFollowingUser.java
│ │ │ │ ├── CheckIsSubscribedToSubreddit.java
│ │ │ │ ├── DeleteAllPostLayouts.java
│ │ │ │ ├── DeleteAllReadPosts.java
│ │ │ │ ├── DeleteAllSortTypes.java
│ │ │ │ ├── DeleteAllSubreddits.java
│ │ │ │ ├── DeleteAllThemes.java
│ │ │ │ ├── DeleteAllUsers.java
│ │ │ │ ├── DeleteMultiredditInDatabase.java
│ │ │ │ ├── DeleteTheme.java
│ │ │ │ ├── GetCustomTheme.java
│ │ │ │ ├── InsertCustomTheme.java
│ │ │ │ ├── InsertMultireddit.java
│ │ │ │ ├── InsertSubredditData.java
│ │ │ │ ├── InsertSubscribedThings.java
│ │ │ │ ├── InsertUserData.java
│ │ │ │ ├── LoadSubredditIcon.java
│ │ │ │ ├── LoadUserData.java
│ │ │ │ ├── ParseAndInsertNewAccount.java
│ │ │ │ ├── RestoreSettings.java
│ │ │ │ ├── SaveBitmapImageToFile.java
│ │ │ │ ├── SaveGIFToFile.java
│ │ │ │ └── SetAsWallpaper.java
│ │ │ ├── bottomsheetfragments/
│ │ │ │ ├── AccountChooserBottomSheetFragment.java
│ │ │ │ ├── CommentFilterOptionsBottomSheetFragment.java
│ │ │ │ ├── CommentFilterUsageOptionsBottomSheetFragment.java
│ │ │ │ ├── CommentModerationActionBottomSheetFragment.kt
│ │ │ │ ├── CommentMoreBottomSheetFragment.java
│ │ │ │ ├── CopyTextBottomSheetFragment.java
│ │ │ │ ├── CreateThemeBottomSheetFragment.java
│ │ │ │ ├── CustomThemeOptionsBottomSheetFragment.java
│ │ │ │ ├── FABMoreOptionsBottomSheetFragment.java
│ │ │ │ ├── FilteredThingFABMoreOptionsBottomSheetFragment.java
│ │ │ │ ├── FlairBottomSheetFragment.java
│ │ │ │ ├── GiphyGifInfoBottomSheetFragment.java
│ │ │ │ ├── ImportantInfoBottomSheetFragment.java
│ │ │ │ ├── KarmaInfoBottomSheetFragment.java
│ │ │ │ ├── MultiRedditOptionsBottomSheetFragment.java
│ │ │ │ ├── NewCommentFilterUsageBottomSheetFragment.java
│ │ │ │ ├── NewPostFilterUsageBottomSheetFragment.java
│ │ │ │ ├── PlaybackSpeedBottomSheetFragment.java
│ │ │ │ ├── PostCommentSortTypeBottomSheetFragment.java
│ │ │ │ ├── PostFilterOptionsBottomSheetFragment.java
│ │ │ │ ├── PostFilterUsageOptionsBottomSheetFragment.java
│ │ │ │ ├── PostLayoutBottomSheetFragment.java
│ │ │ │ ├── PostModerationActionBottomSheetFragment.kt
│ │ │ │ ├── PostOptionsBottomSheetFragment.java
│ │ │ │ ├── PostTypeBottomSheetFragment.java
│ │ │ │ ├── SearchPostSortTypeBottomSheetFragment.java
│ │ │ │ ├── SearchUserAndSubredditSortTypeBottomSheetFragment.java
│ │ │ │ ├── SelectOrCaptureImageBottomSheetFragment.java
│ │ │ │ ├── SelectSubredditsOrUsersOptionsBottomSheetFragment.java
│ │ │ │ ├── SetAsWallpaperBottomSheetFragment.java
│ │ │ │ ├── SetRedditGalleryItemCaptionAndUrlBottomSheetFragment.java
│ │ │ │ ├── ShareBottomSheetFragment.java
│ │ │ │ ├── SortTimeBottomSheetFragment.java
│ │ │ │ ├── SortTypeBottomSheetFragment.java
│ │ │ │ ├── UploadedImagesBottomSheetFragment.java
│ │ │ │ ├── UrlMenuBottomSheetFragment.java
│ │ │ │ └── UserThingSortTypeBottomSheetFragment.java
│ │ │ ├── broadcastreceivers/
│ │ │ │ ├── DownloadedMediaDeleteActionBroadcastReceiver.java
│ │ │ │ ├── NetworkWifiStatusReceiver.java
│ │ │ │ └── WallpaperChangeReceiver.java
│ │ │ ├── comment/
│ │ │ │ ├── Comment.java
│ │ │ │ ├── CommentDataSource.java
│ │ │ │ ├── CommentDataSourceFactory.java
│ │ │ │ ├── CommentDraft.kt
│ │ │ │ ├── CommentDraftDao.kt
│ │ │ │ ├── CommentViewModel.java
│ │ │ │ ├── FetchComment.java
│ │ │ │ ├── ParseComment.java
│ │ │ │ └── SendComment.java
│ │ │ ├── commentfilter/
│ │ │ │ ├── CommentFilter.java
│ │ │ │ ├── CommentFilterDao.java
│ │ │ │ ├── CommentFilterUsage.java
│ │ │ │ ├── CommentFilterUsageDao.java
│ │ │ │ ├── CommentFilterUsageViewModel.java
│ │ │ │ ├── CommentFilterWithUsage.java
│ │ │ │ ├── CommentFilterWithUsageViewModel.java
│ │ │ │ ├── DeleteCommentFilter.java
│ │ │ │ ├── DeleteCommentFilterUsage.java
│ │ │ │ ├── FetchCommentFilter.java
│ │ │ │ ├── SaveCommentFilter.java
│ │ │ │ └── SaveCommentFilterUsage.java
│ │ │ ├── customtheme/
│ │ │ │ ├── CustomTheme.java
│ │ │ │ ├── CustomThemeDao.java
│ │ │ │ ├── CustomThemeDaoKt.kt
│ │ │ │ ├── CustomThemeSettingsItem.java
│ │ │ │ ├── CustomThemeViewModel.java
│ │ │ │ ├── CustomThemeWrapper.java
│ │ │ │ ├── CustomThemeWrapperReceiver.java
│ │ │ │ ├── LocalCustomThemeRepository.java
│ │ │ │ ├── OnlineCustomThemeFilter.java
│ │ │ │ ├── OnlineCustomThemeMetadata.java
│ │ │ │ ├── OnlineCustomThemePagingSource.java
│ │ │ │ └── OnlineCustomThemeRepository.java
│ │ │ ├── customviews/
│ │ │ │ ├── AdjustableTouchSlopItemTouchHelper.java
│ │ │ │ ├── AspectRatioGifImageView.java
│ │ │ │ ├── ClickableMotionLayout.java
│ │ │ │ ├── ColorPickerDialog.java
│ │ │ │ ├── CommentIndentationView.java
│ │ │ │ ├── CustomDrawerLayout.kt
│ │ │ │ ├── CustomToroContainer.java
│ │ │ │ ├── GlideGifImageViewFactory.java
│ │ │ │ ├── InterceptTouchEventLinearLayout.java
│ │ │ │ ├── LandscapeExpandedRoundedBottomSheetDialogFragment.java
│ │ │ │ ├── LinearLayoutManagerBugFixed.java
│ │ │ │ ├── LollipopBugFixedWebView.java
│ │ │ │ ├── LoopAvailableExoCreator.java
│ │ │ │ ├── MovableFloatingActionButton.java
│ │ │ │ ├── NavigationWrapper.java
│ │ │ │ ├── SpoilerOnClickTextView.java
│ │ │ │ ├── SwipeLockInterface.java
│ │ │ │ ├── SwipeLockLinearLayout.java
│ │ │ │ ├── SwipeLockLinearLayoutManager.java
│ │ │ │ ├── SwipeLockView.java
│ │ │ │ ├── TableHorizontalScrollView.java
│ │ │ │ ├── ThemedMaterialSwitch.kt
│ │ │ │ ├── TouchInterceptableMaterialCardView.kt
│ │ │ │ ├── ViewPagerBugFixed.java
│ │ │ │ ├── compose/
│ │ │ │ │ ├── AppTheme.kt
│ │ │ │ │ ├── CustomAppBar.kt
│ │ │ │ │ ├── CustomImage.kt
│ │ │ │ │ ├── CustomLoadingIndicator.kt
│ │ │ │ │ ├── CustomSwitch.kt
│ │ │ │ │ ├── CustomText.kt
│ │ │ │ │ └── CustomTextField.kt
│ │ │ │ ├── preference/
│ │ │ │ │ ├── CustomFontEditTextPreference.java
│ │ │ │ │ ├── CustomFontListPreference.java
│ │ │ │ │ ├── CustomFontPreference.java
│ │ │ │ │ ├── CustomFontPreferenceCategory.java
│ │ │ │ │ ├── CustomFontPreferenceFragmentCompat.java
│ │ │ │ │ ├── CustomFontPreferenceWithBackground.kt
│ │ │ │ │ ├── CustomFontSwitchPreference.java
│ │ │ │ │ ├── CustomStyleEditTextPreferenceDialogFragmentCompat.kt
│ │ │ │ │ ├── CustomStyleListPreferenceDialogFragmentCompat.kt
│ │ │ │ │ └── SliderPreference.kt
│ │ │ │ └── slidr/
│ │ │ │ ├── ColorPanelSlideListener.java
│ │ │ │ ├── ConfigPanelSlideListener.java
│ │ │ │ ├── FragmentPanelSlideListener.java
│ │ │ │ ├── Slidr.java
│ │ │ │ ├── model/
│ │ │ │ │ ├── SlidrConfig.java
│ │ │ │ │ ├── SlidrInterface.java
│ │ │ │ │ ├── SlidrListener.java
│ │ │ │ │ ├── SlidrListenerAdapter.java
│ │ │ │ │ └── SlidrPosition.java
│ │ │ │ ├── util/
│ │ │ │ │ └── ViewDragHelper.java
│ │ │ │ └── widget/
│ │ │ │ ├── ScrimRenderer.java
│ │ │ │ └── SliderPanel.java
│ │ │ ├── events/
│ │ │ │ ├── ChangeAppLockEvent.java
│ │ │ │ ├── ChangeAutoplayNsfwVideosEvent.java
│ │ │ │ ├── ChangeCompactLayoutToolbarHiddenByDefaultEvent.java
│ │ │ │ ├── ChangeDataSavingModeEvent.java
│ │ │ │ ├── ChangeDefaultLinkPostLayoutEvent.java
│ │ │ │ ├── ChangeDefaultPostLayoutEvent.java
│ │ │ │ ├── ChangeDefaultPostLayoutUnfoldedEvent.java
│ │ │ │ ├── ChangeDisableImagePreviewEvent.java
│ │ │ │ ├── ChangeDisableSwipingBetweenTabsEvent.java
│ │ │ │ ├── ChangeEasierToWatchInFullScreenEvent.java
│ │ │ │ ├── ChangeEnableSwipeActionSwitchEvent.java
│ │ │ │ ├── ChangeFixedHeightPreviewInCardEvent.java
│ │ │ │ ├── ChangeHideFabInPostFeedEvent.java
│ │ │ │ ├── ChangeHideKarmaEvent.java
│ │ │ │ ├── ChangeHidePostFlairEvent.java
│ │ │ │ ├── ChangeHidePostTypeEvent.java
│ │ │ │ ├── ChangeHideSubredditAndUserPrefixEvent.java
│ │ │ │ ├── ChangeHideTextPostContent.java
│ │ │ │ ├── ChangeHideTheNumberOfCommentsEvent.java
│ │ │ │ ├── ChangeHideTheNumberOfVotesEvent.java
│ │ │ │ ├── ChangeInboxCountEvent.java
│ │ │ │ ├── ChangeLockBottomAppBarEvent.java
│ │ │ │ ├── ChangeLongPressToHideToolbarInCompactLayoutEvent.java
│ │ │ │ ├── ChangeMuteAutoplayingVideosEvent.java
│ │ │ │ ├── ChangeMuteNSFWVideoEvent.java
│ │ │ │ ├── ChangeNSFWBlurEvent.java
│ │ │ │ ├── ChangeNSFWEvent.java
│ │ │ │ ├── ChangeNetworkStatusEvent.java
│ │ │ │ ├── ChangeOnlyDisablePreviewInVideoAndGifPostsEvent.java
│ │ │ │ ├── ChangePostFeedMaxResolutionEvent.java
│ │ │ │ ├── ChangePostLayoutEvent.java
│ │ │ │ ├── ChangePullToRefreshEvent.java
│ │ │ │ ├── ChangeRememberMutingOptionInPostFeedEvent.java
│ │ │ │ ├── ChangeRequireAuthToAccountSectionEvent.java
│ │ │ │ ├── ChangeSavePostFeedScrolledPositionEvent.java
│ │ │ │ ├── ChangeShowAbsoluteNumberOfVotesEvent.java
│ │ │ │ ├── ChangeShowAvatarOnTheRightInTheNavigationDrawerEvent.java
│ │ │ │ ├── ChangeShowElapsedTimeEvent.java
│ │ │ │ ├── ChangeSpoilerBlurEvent.java
│ │ │ │ ├── ChangeStartAutoplayVisibleAreaOffsetEvent.java
│ │ │ │ ├── ChangeSwipeActionEvent.java
│ │ │ │ ├── ChangeSwipeActionThresholdEvent.java
│ │ │ │ ├── ChangeTimeFormatEvent.java
│ │ │ │ ├── ChangeVibrateWhenActionTriggeredEvent.java
│ │ │ │ ├── ChangeVideoAutoplayEvent.java
│ │ │ │ ├── ChangeVoteButtonsPositionEvent.java
│ │ │ │ ├── FinishViewMediaActivityEvent.kt
│ │ │ │ ├── FlairSelectedEvent.java
│ │ │ │ ├── GoBackToMainPageEvent.java
│ │ │ │ ├── NeedForPostListFromPostFragmentEvent.java
│ │ │ │ ├── NewUserLoggedInEvent.java
│ │ │ │ ├── PassPrivateMessageEvent.java
│ │ │ │ ├── PassPrivateMessageIndexEvent.java
│ │ │ │ ├── PostUpdateEventToPostDetailFragment.java
│ │ │ │ ├── PostUpdateEventToPostList.java
│ │ │ │ ├── ProvidePostListToViewPostDetailActivityEvent.java
│ │ │ │ ├── RecreateActivityEvent.java
│ │ │ │ ├── RefreshMultiRedditsEvent.java
│ │ │ │ ├── RepliedToPrivateMessageEvent.java
│ │ │ │ ├── ShowDividerInCompactLayoutPreferenceEvent.java
│ │ │ │ ├── ShowThumbnailOnTheLeftInCompactLayoutEvent.java
│ │ │ │ ├── SubmitChangeAvatarEvent.java
│ │ │ │ ├── SubmitChangeBannerEvent.java
│ │ │ │ ├── SubmitCrosspostEvent.java
│ │ │ │ ├── SubmitGalleryPostEvent.java
│ │ │ │ ├── SubmitImagePostEvent.java
│ │ │ │ ├── SubmitPollPostEvent.java
│ │ │ │ ├── SubmitSaveProfileEvent.java
│ │ │ │ ├── SubmitTextOrLinkPostEvent.java
│ │ │ │ ├── SubmitVideoOrGifPostEvent.java
│ │ │ │ ├── SwitchAccountEvent.java
│ │ │ │ └── ToggleSecureModeEvent.java
│ │ │ ├── font/
│ │ │ │ ├── ContentFontFamily.java
│ │ │ │ ├── ContentFontStyle.java
│ │ │ │ ├── FontFamily.java
│ │ │ │ ├── FontStyle.java
│ │ │ │ ├── TitleFontFamily.java
│ │ │ │ └── TitleFontStyle.java
│ │ │ ├── fragments/
│ │ │ │ ├── CommentsListingFragment.java
│ │ │ │ ├── CustomThemeListingFragment.java
│ │ │ │ ├── FollowedUsersListingFragment.java
│ │ │ │ ├── FragmentCommunicator.java
│ │ │ │ ├── HistoryPostFragment.java
│ │ │ │ ├── InboxFragment.java
│ │ │ │ ├── MorePostsInfoFragment.java
│ │ │ │ ├── MultiRedditListingFragment.java
│ │ │ │ ├── PostFragment.java
│ │ │ │ ├── PostFragmentBase.java
│ │ │ │ ├── SidebarFragment.java
│ │ │ │ ├── SubredditListingFragment.java
│ │ │ │ ├── SubscribedSubredditsListingFragment.java
│ │ │ │ ├── ThemePreviewCommentsFragment.java
│ │ │ │ ├── ThemePreviewPostsFragment.java
│ │ │ │ ├── UserListingFragment.java
│ │ │ │ ├── ViewImgurImageFragment.java
│ │ │ │ ├── ViewImgurVideoFragment.java
│ │ │ │ ├── ViewImgurVideoFragmentBindingAdapter.java
│ │ │ │ ├── ViewPostDetailFragment.java
│ │ │ │ ├── ViewRedditGalleryImageOrGifFragment.java
│ │ │ │ ├── ViewRedditGalleryVideoFragment.java
│ │ │ │ └── ViewRedditGalleryVideoFragmentBindingAdapter.java
│ │ │ ├── markdown/
│ │ │ │ ├── BlockQuoteWithExceptionParser.java
│ │ │ │ ├── CustomMarkwonAdapter.java
│ │ │ │ ├── Emote.java
│ │ │ │ ├── EmoteCloseBracketInlineProcessor.java
│ │ │ │ ├── EmoteInlineProcessor.java
│ │ │ │ ├── EmotePlugin.java
│ │ │ │ ├── EmoteSpanFactory.java
│ │ │ │ ├── EvenBetterLinkMovementMethod.java
│ │ │ │ ├── GiphyGifBlock.java
│ │ │ │ ├── GiphyGifBlockParser.java
│ │ │ │ ├── GiphyGifPlugin.java
│ │ │ │ ├── ImageAndGifBlock.java
│ │ │ │ ├── ImageAndGifBlockParser.java
│ │ │ │ ├── ImageAndGifEntry.java
│ │ │ │ ├── ImageAndGifPlugin.java
│ │ │ │ ├── MarkdownUtils.java
│ │ │ │ ├── RedditHeadingParser.java
│ │ │ │ ├── RedditHeadingPlugin.java
│ │ │ │ ├── RichTextJSONConverter.java
│ │ │ │ ├── SpoilerAwareMovementMethod.java
│ │ │ │ ├── SpoilerClosingInlineProcessor.java
│ │ │ │ ├── SpoilerNode.java
│ │ │ │ ├── SpoilerOpeningBracket.java
│ │ │ │ ├── SpoilerOpeningBracketStorage.java
│ │ │ │ ├── SpoilerOpeningInlineProcessor.java
│ │ │ │ ├── SpoilerParserPlugin.java
│ │ │ │ ├── SpoilerSpan.java
│ │ │ │ ├── Superscript.java
│ │ │ │ ├── SuperscriptClosingInlineProcessor.java
│ │ │ │ ├── SuperscriptOpening.java
│ │ │ │ ├── SuperscriptOpeningBracket.java
│ │ │ │ ├── SuperscriptOpeningInlineProcessor.java
│ │ │ │ ├── SuperscriptOpeningStorage.java
│ │ │ │ ├── SuperscriptPlugin.java
│ │ │ │ ├── SuperscriptSpan.java
│ │ │ │ ├── UploadedImageBlock.java
│ │ │ │ ├── UploadedImageBlockParser.java
│ │ │ │ └── UploadedImagePlugin.java
│ │ │ ├── message/
│ │ │ │ ├── ComposeMessage.java
│ │ │ │ ├── FetchMessage.java
│ │ │ │ ├── Message.java
│ │ │ │ ├── MessageDataSource.java
│ │ │ │ ├── MessageDataSourceFactory.java
│ │ │ │ ├── MessageViewModel.java
│ │ │ │ ├── ParseMessage.java
│ │ │ │ ├── ReadMessage.java
│ │ │ │ └── ReplyMessage.java
│ │ │ ├── moderation/
│ │ │ │ ├── CommentModerationEvent.kt
│ │ │ │ └── PostModerationEvent.kt
│ │ │ ├── multireddit/
│ │ │ │ ├── AnonymousMultiredditSubreddit.java
│ │ │ │ ├── AnonymousMultiredditSubredditDao.java
│ │ │ │ ├── AnonymousMultiredditSubredditDaoKt.kt
│ │ │ │ ├── CreateMultiReddit.java
│ │ │ │ ├── DeleteMultiReddit.java
│ │ │ │ ├── EditMultiReddit.java
│ │ │ │ ├── ExpandedSubredditInMultiReddit.java
│ │ │ │ ├── FavoriteMultiReddit.java
│ │ │ │ ├── FetchMultiRedditInfo.java
│ │ │ │ ├── FetchMyMultiReddits.java
│ │ │ │ ├── MultiReddit.java
│ │ │ │ ├── MultiRedditDao.java
│ │ │ │ ├── MultiRedditDaoKt.kt
│ │ │ │ ├── MultiRedditJSONModel.java
│ │ │ │ ├── MultiRedditRepository.java
│ │ │ │ ├── MultiRedditViewModel.java
│ │ │ │ ├── ParseMultiReddit.java
│ │ │ │ └── SubredditInMultiReddit.java
│ │ │ ├── network/
│ │ │ │ ├── AccessTokenAuthenticator.java
│ │ │ │ ├── AnyAccountAccessTokenAuthenticator.java
│ │ │ │ ├── RedgifsAccessTokenAuthenticator.java
│ │ │ │ ├── ServerAccessTokenAuthenticator.java
│ │ │ │ ├── SortTypeConverter.java
│ │ │ │ └── SortTypeConverterFactory.java
│ │ │ ├── post/
│ │ │ │ ├── FetchPost.java
│ │ │ │ ├── FetchRules.java
│ │ │ │ ├── FetchStreamableVideo.java
│ │ │ │ ├── HidePost.java
│ │ │ │ ├── HistoryPostPagingSource.java
│ │ │ │ ├── HistoryPostViewModel.java
│ │ │ │ ├── ImgurMedia.java
│ │ │ │ ├── LoadingMorePostsStatus.java
│ │ │ │ ├── MarkPostAsReadInterface.java
│ │ │ │ ├── ParsePost.java
│ │ │ │ ├── PollPayload.java
│ │ │ │ ├── Post.java
│ │ │ │ ├── PostPagingSource.java
│ │ │ │ ├── PostViewModel.java
│ │ │ │ ├── RedditGalleryPayload.java
│ │ │ │ └── SubmitPost.java
│ │ │ ├── postfilter/
│ │ │ │ ├── DeletePostFilter.java
│ │ │ │ ├── DeletePostFilterUsage.java
│ │ │ │ ├── PostFilter.java
│ │ │ │ ├── PostFilterDao.java
│ │ │ │ ├── PostFilterUsage.java
│ │ │ │ ├── PostFilterUsageDao.java
│ │ │ │ ├── PostFilterUsageViewModel.java
│ │ │ │ ├── PostFilterWithUsage.java
│ │ │ │ ├── PostFilterWithUsageViewModel.java
│ │ │ │ ├── SavePostFilter.java
│ │ │ │ └── SavePostFilterUsage.java
│ │ │ ├── readpost/
│ │ │ │ ├── InsertReadPost.java
│ │ │ │ ├── NullReadPostsList.java
│ │ │ │ ├── ReadPost.java
│ │ │ │ ├── ReadPostDao.java
│ │ │ │ ├── ReadPostsList.java
│ │ │ │ ├── ReadPostsListInterface.java
│ │ │ │ └── ReadPostsUtils.java
│ │ │ ├── recentsearchquery/
│ │ │ │ ├── InsertRecentSearchQuery.java
│ │ │ │ ├── RecentSearchQuery.java
│ │ │ │ ├── RecentSearchQueryDao.java
│ │ │ │ ├── RecentSearchQueryRepository.java
│ │ │ │ └── RecentSearchQueryViewModel.java
│ │ │ ├── repositories/
│ │ │ │ ├── CommentActivityRepository.kt
│ │ │ │ ├── CopyMultiRedditActivityRepository.kt
│ │ │ │ └── EditCommentActivityRepository.kt
│ │ │ ├── services/
│ │ │ │ ├── DownloadMediaService.java
│ │ │ │ ├── DownloadRedditVideoService.java
│ │ │ │ ├── EditProfileService.java
│ │ │ │ └── SubmitPostService.java
│ │ │ ├── settings/
│ │ │ │ ├── APIKeysPreferenceFragment.java
│ │ │ │ ├── AboutPreferenceFragment.java
│ │ │ │ ├── Acknowledgement.java
│ │ │ │ ├── AcknowledgementFragment.java
│ │ │ │ ├── AdvancedPreferenceFragment.java
│ │ │ │ ├── CommentPreferenceFragment.java
│ │ │ │ ├── CrashReportsFragment.java
│ │ │ │ ├── CreditsPreferenceFragment.java
│ │ │ │ ├── CustomizeBottomAppBarFragment.java
│ │ │ │ ├── CustomizeMainPageTabsFragment.java
│ │ │ │ ├── DataSavingModePreferenceFragment.java
│ │ │ │ ├── DebugPreferenceFragment.java
│ │ │ │ ├── DownloadLocationPreferenceFragment.java
│ │ │ │ ├── FontPreferenceFragment.java
│ │ │ │ ├── FontPreviewFragment.java
│ │ │ │ ├── GesturesAndButtonsPreferenceFragment.java
│ │ │ │ ├── ImmersiveInterfacePreferenceFragment.java
│ │ │ │ ├── InterfacePreferenceFragment.java
│ │ │ │ ├── MainPreferenceFragment.java
│ │ │ │ ├── MiscellaneousPreferenceFragment.java
│ │ │ │ ├── NavigationDrawerPreferenceFragment.java
│ │ │ │ ├── NotificationPreferenceFragment.java
│ │ │ │ ├── NsfwAndSpoilerFragment.java
│ │ │ │ ├── NumberOfColumnsInPostFeedPreferenceFragment.java
│ │ │ │ ├── PostDetailsPreferenceFragment.java
│ │ │ │ ├── PostHistoryFragment.java
│ │ │ │ ├── PostPreferenceFragment.java
│ │ │ │ ├── ProxyPreferenceFragment.java
│ │ │ │ ├── SecurityPreferenceFragment.java
│ │ │ │ ├── SettingsSearchFragment.java
│ │ │ │ ├── SettingsSearchItem.java
│ │ │ │ ├── SettingsSearchRegistry.java
│ │ │ │ ├── SortTypePreferenceFragment.java
│ │ │ │ ├── SwipeActionPreferenceFragment.java
│ │ │ │ ├── ThemePreferenceFragment.java
│ │ │ │ ├── TimeFormatPreferenceFragment.java
│ │ │ │ ├── Translation.java
│ │ │ │ ├── TranslationFragment.java
│ │ │ │ └── VideoPreferenceFragment.java
│ │ │ ├── subreddit/
│ │ │ │ ├── FetchFlairs.java
│ │ │ │ ├── FetchSubredditData.java
│ │ │ │ ├── Flair.java
│ │ │ │ ├── ParseSubredditData.java
│ │ │ │ ├── Rule.java
│ │ │ │ ├── SubredditDao.java
│ │ │ │ ├── SubredditData.java
│ │ │ │ ├── SubredditListingDataSource.java
│ │ │ │ ├── SubredditListingDataSourceFactory.java
│ │ │ │ ├── SubredditListingViewModel.java
│ │ │ │ ├── SubredditRepository.java
│ │ │ │ ├── SubredditSettingData.java
│ │ │ │ ├── SubredditSubscription.java
│ │ │ │ ├── SubredditViewModel.java
│ │ │ │ ├── SubredditWithSelection.java
│ │ │ │ └── shortcut/
│ │ │ │ └── ShortcutManager.java
│ │ │ ├── subscribedsubreddit/
│ │ │ │ ├── SubscribedSubredditDao.java
│ │ │ │ ├── SubscribedSubredditData.java
│ │ │ │ ├── SubscribedSubredditRepository.java
│ │ │ │ └── SubscribedSubredditViewModel.java
│ │ │ ├── subscribeduser/
│ │ │ │ ├── SubscribedUserDao.java
│ │ │ │ ├── SubscribedUserData.java
│ │ │ │ ├── SubscribedUserRepository.java
│ │ │ │ └── SubscribedUserViewModel.java
│ │ │ ├── thing/
│ │ │ │ ├── DeleteThing.java
│ │ │ │ ├── FavoriteThing.java
│ │ │ │ ├── FetchRedgifsVideoLinks.java
│ │ │ │ ├── FetchSubscribedThing.java
│ │ │ │ ├── GiphyGif.java
│ │ │ │ ├── MediaMetadata.java
│ │ │ │ ├── ReplyNotificationsToggle.java
│ │ │ │ ├── ReportReason.java
│ │ │ │ ├── ReportThing.java
│ │ │ │ ├── SaveThing.java
│ │ │ │ ├── SelectThingReturnKey.java
│ │ │ │ ├── SortType.java
│ │ │ │ ├── SortTypeSelectionCallback.java
│ │ │ │ ├── StreamableVideo.java
│ │ │ │ ├── TrendingSearch.java
│ │ │ │ ├── UploadedImage.java
│ │ │ │ └── VoteThing.java
│ │ │ ├── user/
│ │ │ │ ├── BlockUser.java
│ │ │ │ ├── FetchUserData.java
│ │ │ │ ├── FetchUserFlairs.java
│ │ │ │ ├── SelectUserFlair.java
│ │ │ │ ├── UserDao.java
│ │ │ │ ├── UserData.java
│ │ │ │ ├── UserFlair.java
│ │ │ │ ├── UserFollowing.java
│ │ │ │ ├── UserListingDataSource.java
│ │ │ │ ├── UserListingDataSourceFactory.java
│ │ │ │ ├── UserListingViewModel.java
│ │ │ │ ├── UserProfileImagesBatchLoader.java
│ │ │ │ ├── UserRepository.java
│ │ │ │ ├── UserViewModel.java
│ │ │ │ └── UserWithSelection.java
│ │ │ ├── utils/
│ │ │ │ ├── APIUtils.java
│ │ │ │ ├── AppRestartHelper.java
│ │ │ │ ├── ColorUtils.kt
│ │ │ │ ├── CommentScrollPositionCache.java
│ │ │ │ ├── CustomThemeSharedPreferencesUtils.java
│ │ │ │ ├── EditProfileUtils.java
│ │ │ │ ├── GlideImageGetter.java
│ │ │ │ ├── JSONUtils.java
│ │ │ │ ├── MaterialYouUtils.java
│ │ │ │ ├── NotificationUtils.java
│ │ │ │ ├── ShareScreenshotUtils.kt
│ │ │ │ ├── SharedPreferencesLiveData.kt
│ │ │ │ ├── SharedPreferencesUtils.java
│ │ │ │ ├── UploadImageUtils.java
│ │ │ │ └── Utils.java
│ │ │ ├── videoautoplay/
│ │ │ │ ├── BaseMeter.java
│ │ │ │ ├── CacheManager.java
│ │ │ │ ├── Config.java
│ │ │ │ ├── DefaultExoCreator.java
│ │ │ │ ├── ExoCreator.java
│ │ │ │ ├── ExoPlayable.java
│ │ │ │ ├── ExoPlayerViewHelper.java
│ │ │ │ ├── MediaSourceBuilder.java
│ │ │ │ ├── MultiPlayPlayerSelector.kt
│ │ │ │ ├── Playable.java
│ │ │ │ ├── PlayableImpl.java
│ │ │ │ ├── PlayerDispatcher.java
│ │ │ │ ├── PlayerSelector.java
│ │ │ │ ├── ToroExo.java
│ │ │ │ ├── ToroExoPlayer.java
│ │ │ │ ├── ToroPlayer.java
│ │ │ │ ├── ToroUtil.java
│ │ │ │ ├── annotations/
│ │ │ │ │ ├── Beta.java
│ │ │ │ │ ├── RemoveIn.java
│ │ │ │ │ └── Sorted.java
│ │ │ │ ├── helper/
│ │ │ │ │ └── ToroPlayerHelper.java
│ │ │ │ ├── media/
│ │ │ │ │ ├── DrmMedia.java
│ │ │ │ │ ├── PlaybackInfo.java
│ │ │ │ │ └── VolumeInfo.java
│ │ │ │ └── widget/
│ │ │ │ ├── Common.java
│ │ │ │ ├── Container.java
│ │ │ │ ├── PlaybackInfoCache.java
│ │ │ │ ├── PlayerManager.java
│ │ │ │ └── PressablePlayerSelector.java
│ │ │ ├── viewmodels/
│ │ │ │ ├── CommentActivityViewModel.kt
│ │ │ │ ├── CopyMultiRedditActivityViewModel.kt
│ │ │ │ ├── EditCommentActivityViewModel.kt
│ │ │ │ ├── ViewPostDetailActivityViewModel.java
│ │ │ │ └── ViewPostDetailFragmentViewModel.kt
│ │ │ └── worker/
│ │ │ ├── MaterialYouWorker.java
│ │ │ └── PullNotificationWorker.java
│ │ └── res/
│ │ ├── anim/
│ │ │ ├── enter_from_left.xml
│ │ │ ├── enter_from_right.xml
│ │ │ ├── exit_to_left.xml
│ │ │ ├── exit_to_right.xml
│ │ │ ├── slide_out_down.xml
│ │ │ └── slide_out_up.xml
│ │ ├── drawable/
│ │ │ ├── background_autoplay.xml
│ │ │ ├── circular_background.xml
│ │ │ ├── edit_text_cursor.xml
│ │ │ ├── error_image.xml
│ │ │ ├── exo_control_button_background.xml
│ │ │ ├── exo_player_control_button_circular_background.xml
│ │ │ ├── exo_player_control_view_background.xml
│ │ │ ├── flag_brazil.xml
│ │ │ ├── flag_bulgaria.xml
│ │ │ ├── flag_china.xml
│ │ │ ├── flag_croatia.xml
│ │ │ ├── flag_france.xml
│ │ │ ├── flag_germany.xml
│ │ │ ├── flag_greece.xml
│ │ │ ├── flag_hungary.xml
│ │ │ ├── flag_india.xml
│ │ │ ├── flag_israel.xml
│ │ │ ├── flag_italy.xml
│ │ │ ├── flag_japan.xml
│ │ │ ├── flag_netherlands.xml
│ │ │ ├── flag_norway.xml
│ │ │ ├── flag_poland.xml
│ │ │ ├── flag_portugal.xml
│ │ │ ├── flag_romania.xml
│ │ │ ├── flag_russia.xml
│ │ │ ├── flag_somalia.xml
│ │ │ ├── flag_south_korea.xml
│ │ │ ├── flag_spain.xml
│ │ │ ├── flag_sweden.xml
│ │ │ ├── flag_turkey.xml
│ │ │ ├── flag_vietnam.xml
│ │ │ ├── ic_about_day_night_24dp.xml
│ │ │ ├── ic_access_time_day_night_24dp.xml
│ │ │ ├── ic_account_circle_day_night_24dp.xml
│ │ │ ├── ic_add_24dp.xml
│ │ │ ├── ic_add_a_photo_24dp.xml
│ │ │ ├── ic_add_a_photo_day_night_24dp.xml
│ │ │ ├── ic_add_circle_outline_day_night_24dp.xml
│ │ │ ├── ic_add_day_night_24dp.xml
│ │ │ ├── ic_advanced_day_night_24dp.xml
│ │ │ ├── ic_amoled_theme_preference_day_night_24dp.xml
│ │ │ ├── ic_anonymous_day_night_24dp.xml
│ │ │ ├── ic_apply_to_day_night_24dp.xml
│ │ │ ├── ic_approve_24dp.xml
│ │ │ ├── ic_archive_outline.xml
│ │ │ ├── ic_arrow_back_24dp.xml
│ │ │ ├── ic_arrow_back_white_24dp.xml
│ │ │ ├── ic_arrow_downward_day_night_24dp.xml
│ │ │ ├── ic_arrow_downward_grey_24dp.xml
│ │ │ ├── ic_arrow_upward_day_night_24dp.xml
│ │ │ ├── ic_arrow_upward_grey_24dp.xml
│ │ │ ├── ic_baseline_arrow_drop_down_24dp.xml
│ │ │ ├── ic_baseline_arrow_drop_up_24dp.xml
│ │ │ ├── ic_best_24.xml
│ │ │ ├── ic_bold_black_24dp.xml
│ │ │ ├── ic_bookmark_border_day_night_24dp.xml
│ │ │ ├── ic_bookmark_border_grey_24dp.xml
│ │ │ ├── ic_bookmark_border_toolbar_24dp.xml
│ │ │ ├── ic_bookmark_day_night_24dp.xml
│ │ │ ├── ic_bookmark_grey_24dp.xml
│ │ │ ├── ic_bookmark_toolbar_24dp.xml
│ │ │ ├── ic_bookmarks_day_night_24dp.xml
│ │ │ ├── ic_call_split_24.xml
│ │ │ ├── ic_check_circle_day_night_24dp.xml
│ │ │ ├── ic_check_circle_toolbar_24dp.xml
│ │ │ ├── ic_close_24dp.xml
│ │ │ ├── ic_code_24dp.xml
│ │ │ ├── ic_color_lens_day_night_24dp.xml
│ │ │ ├── ic_comment_grey_24dp.xml
│ │ │ ├── ic_comment_toolbar_24dp.xml
│ │ │ ├── ic_controversial_24.xml
│ │ │ ├── ic_copy_16dp.xml
│ │ │ ├── ic_copy_day_night_24dp.xml
│ │ │ ├── ic_crosspost_24dp.xml
│ │ │ ├── ic_current_user_14dp.xml
│ │ │ ├── ic_dark_theme_24dp.xml
│ │ │ ├── ic_dark_theme_preference_day_night_24dp.xml
│ │ │ ├── ic_data_saving_mode_day_night_24dp.xml
│ │ │ ├── ic_delete_all_24.xml
│ │ │ ├── ic_delete_day_night_24dp.xml
│ │ │ ├── ic_distinguish_as_mod_24dp.xml
│ │ │ ├── ic_dot_outline.xml
│ │ │ ├── ic_download_day_night_24dp.xml
│ │ │ ├── ic_downvote_24dp.xml
│ │ │ ├── ic_downvote_filled_24dp.xml
│ │ │ ├── ic_edit_day_night_24dp.xml
│ │ │ ├── ic_error_outline_black_day_night_24dp.xml
│ │ │ ├── ic_error_outline_white_24dp.xml
│ │ │ ├── ic_error_white_36dp.xml
│ │ │ ├── ic_exit_day_night_24dp.xml
│ │ │ ├── ic_expand_less_grey_24dp.xml
│ │ │ ├── ic_expand_more_grey_24dp.xml
│ │ │ ├── ic_fast_forward_24dp.xml
│ │ │ ├── ic_fast_rewind_24dp.xml
│ │ │ ├── ic_favorite_24dp.xml
│ │ │ ├── ic_favorite_border_24dp.xml
│ │ │ ├── ic_file_download_toolbar_white_24dp.xml
│ │ │ ├── ic_filter_day_night_24dp.xml
│ │ │ ├── ic_font_size_day_night_24dp.xml
│ │ │ ├── ic_fullscreen_white_rounded_24dp.xml
│ │ │ ├── ic_gallery_day_night_24dp.xml
│ │ │ ├── ic_gesture_day_night_24dp.xml
│ │ │ ├── ic_gif_24dp.xml
│ │ │ ├── ic_give_award_day_night_24dp.xml
│ │ │ ├── ic_hide_post_day_night_24dp.xml
│ │ │ ├── ic_hide_read_posts_day_night_24dp.xml
│ │ │ ├── ic_history_day_night_24dp.xml
│ │ │ ├── ic_home_day_night_24dp.xml
│ │ │ ├── ic_hot_24dp.xml
│ │ │ ├── ic_image_day_night_24dp.xml
│ │ │ ├── ic_import_day_night_24dp.xml
│ │ │ ├── ic_inbox_day_night_24dp.xml
│ │ │ ├── ic_info_preference_day_night_24dp.xml
│ │ │ ├── ic_interface_day_night_24dp.xml
│ │ │ ├── ic_italic_black_24dp.xml
│ │ │ ├── ic_key_day_night_24dp.xml
│ │ │ ├── ic_keyboard_arrow_down_24dp.xml
│ │ │ ├── ic_keyboard_double_arrow_up_day_night_24dp.xml
│ │ │ ├── ic_language_day_night_24dp.xml
│ │ │ ├── ic_launcher_foreground.xml
│ │ │ ├── ic_launcher_foreground_monochrome.xml
│ │ │ ├── ic_light_theme_24dp.xml
│ │ │ ├── ic_light_theme_preference_day_night_24dp.xml
│ │ │ ├── ic_link_day_night_24dp.xml
│ │ │ ├── ic_link_post_type_indicator_day_night_24dp.xml
│ │ │ ├── ic_link_round_black_24dp.xml
│ │ │ ├── ic_lock_day_night_24dp.xml
│ │ │ ├── ic_log_out_day_night_24dp.xml
│ │ │ ├── ic_login_24dp.xml
│ │ │ ├── ic_mark_nsfw_24dp.xml
│ │ │ ├── ic_mic_14dp.xml
│ │ │ ├── ic_miscellaneous_day_night_24dp.xml
│ │ │ ├── ic_mod_24dp.xml
│ │ │ ├── ic_more_vert_grey_24dp.xml
│ │ │ ├── ic_multi_reddit_day_night_24dp.xml
│ │ │ ├── ic_mute_24dp.xml
│ │ │ ├── ic_mute_preferences_day_night_24dp.xml
│ │ │ ├── ic_new_24.xml
│ │ │ ├── ic_notification.xml
│ │ │ ├── ic_notifications_day_night_24dp.xml
│ │ │ ├── ic_nsfw_off_day_night_24dp.xml
│ │ │ ├── ic_nsfw_on_day_night_24dp.xml
│ │ │ ├── ic_open_link_day_night_24dp.xml
│ │ │ ├── ic_ordered_list_black_24dp.xml
│ │ │ ├── ic_pause_24dp.xml
│ │ │ ├── ic_play_arrow_24dp.xml
│ │ │ ├── ic_play_circle_24dp.xml
│ │ │ ├── ic_play_circle_36dp.xml
│ │ │ ├── ic_playback_speed_day_night_24dp.xml
│ │ │ ├── ic_playback_speed_toolbar_24dp.xml
│ │ │ ├── ic_poll_day_night_24dp.xml
│ │ │ ├── ic_post_layout_day_night_24dp.xml
│ │ │ ├── ic_preview_day_night_24dp.xml
│ │ │ ├── ic_privacy_policy_day_night_24dp.xml
│ │ │ ├── ic_quote_24dp.xml
│ │ │ ├── ic_quote_left_24dp.xml
│ │ │ ├── ic_random_day_night_24dp.xml
│ │ │ ├── ic_refresh_day_night_24dp.xml
│ │ │ ├── ic_remove_24dp.xml
│ │ │ ├── ic_reply_day_night_24dp.xml
│ │ │ ├── ic_reply_grey_24dp.xml
│ │ │ ├── ic_report_day_night_24dp.xml
│ │ │ ├── ic_rising_24dp.xml
│ │ │ ├── ic_save_to_database_day_night_24dp.xml
│ │ │ ├── ic_search_day_night_24dp.xml
│ │ │ ├── ic_search_toolbar_24dp.xml
│ │ │ ├── ic_security_day_night_24dp.xml
│ │ │ ├── ic_select_photo_24dp.xml
│ │ │ ├── ic_select_photo_day_night_24dp.xml
│ │ │ ├── ic_select_query_24dp.xml
│ │ │ ├── ic_send_black_24dp.xml
│ │ │ ├── ic_send_toolbar_24dp.xml
│ │ │ ├── ic_settings_day_night_24dp.xml
│ │ │ ├── ic_share_day_night_24dp.xml
│ │ │ ├── ic_share_grey_24dp.xml
│ │ │ ├── ic_share_toolbar_white_24dp.xml
│ │ │ ├── ic_sort_day_night_24dp.xml
│ │ │ ├── ic_sort_toolbar_24dp.xml
│ │ │ ├── ic_spam_24dp.xml
│ │ │ ├── ic_spoiler_24dp.xml
│ │ │ ├── ic_spoiler_black_24dp.xml
│ │ │ ├── ic_stick_post_24dp.xml
│ │ │ ├── ic_strikethrough_black_24dp.xml
│ │ │ ├── ic_submit_post_day_night_24dp.xml
│ │ │ ├── ic_subreddit_day_night_24dp.xml
│ │ │ ├── ic_subscriptions_bottom_app_bar_day_night_24dp.xml
│ │ │ ├── ic_superscript_24dp.xml
│ │ │ ├── ic_text_day_night_24dp.xml
│ │ │ ├── ic_thumbtack_24dp.xml
│ │ │ ├── ic_title_24dp.xml
│ │ │ ├── ic_top_24.xml
│ │ │ ├── ic_undistinguish_as_mod_24dp.xml
│ │ │ ├── ic_unlock_24dp.xml
│ │ │ ├── ic_unmark_nsfw_24dp.xml
│ │ │ ├── ic_unmark_spoiler_24dp.xml
│ │ │ ├── ic_unmute_24dp.xml
│ │ │ ├── ic_unordered_list_24dp.xml
│ │ │ ├── ic_unstick_post_24dp.xml
│ │ │ ├── ic_upvote_24dp.xml
│ │ │ ├── ic_upvote_filled_24dp.xml
│ │ │ ├── ic_upvote_ratio_18dp.xml
│ │ │ ├── ic_user_agreement_day_night_24dp.xml
│ │ │ ├── ic_user_day_night_24dp.xml
│ │ │ ├── ic_verified_user_14dp.xml
│ │ │ ├── ic_video_day_night_24dp.xml
│ │ │ ├── ic_video_quality_24dp.xml
│ │ │ ├── ic_volume_off_32dp.xml
│ │ │ ├── ic_volume_up_32dp.xml
│ │ │ ├── ic_wallpaper_24dp.xml
│ │ │ ├── ic_wallpaper_both_day_night_24dp.xml
│ │ │ ├── ic_wallpaper_home_screen_day_night_24dp.xml
│ │ │ ├── ic_wallpaper_lock_screen_day_night_24dp.xml
│ │ │ ├── play_button_round_background.xml
│ │ │ ├── preference_background_bottom.xml
│ │ │ ├── preference_background_middle.xml
│ │ │ ├── preference_background_top.xml
│ │ │ ├── preference_background_top_and_bottom.xml
│ │ │ ├── private_message_ballon.xml
│ │ │ ├── splash_screen.xml
│ │ │ ├── thumbnail_compact_layout_rounded_edge.xml
│ │ │ └── trending_search_title_background.xml
│ │ ├── drawable-night/
│ │ │ ├── ic_about_day_night_24dp.xml
│ │ │ ├── ic_access_time_day_night_24dp.xml
│ │ │ ├── ic_account_circle_day_night_24dp.xml
│ │ │ ├── ic_add_a_photo_day_night_24dp.xml
│ │ │ ├── ic_add_circle_outline_day_night_24dp.xml
│ │ │ ├── ic_add_day_night_24dp.xml
│ │ │ ├── ic_advanced_day_night_24dp.xml
│ │ │ ├── ic_amoled_theme_preference_day_night_24dp.xml
│ │ │ ├── ic_anonymous_day_night_24dp.xml
│ │ │ ├── ic_apply_to_day_night_24dp.xml
│ │ │ ├── ic_arrow_downward_day_night_24dp.xml
│ │ │ ├── ic_arrow_upward_day_night_24dp.xml
│ │ │ ├── ic_bookmark_border_day_night_24dp.xml
│ │ │ ├── ic_bookmark_day_night_24dp.xml
│ │ │ ├── ic_bookmarks_day_night_24dp.xml
│ │ │ ├── ic_check_circle_day_night_24dp.xml
│ │ │ ├── ic_color_lens_day_night_24dp.xml
│ │ │ ├── ic_copy_day_night_24dp.xml
│ │ │ ├── ic_dark_theme_preference_day_night_24dp.xml
│ │ │ ├── ic_data_saving_mode_day_night_24dp.xml
│ │ │ ├── ic_delete_day_night_24dp.xml
│ │ │ ├── ic_download_day_night_24dp.xml
│ │ │ ├── ic_edit_day_night_24dp.xml
│ │ │ ├── ic_error_outline_black_day_night_24dp.xml
│ │ │ ├── ic_exit_day_night_24dp.xml
│ │ │ ├── ic_filter_day_night_24dp.xml
│ │ │ ├── ic_font_size_day_night_24dp.xml
│ │ │ ├── ic_gallery_day_night_24dp.xml
│ │ │ ├── ic_gesture_day_night_24dp.xml
│ │ │ ├── ic_give_award_day_night_24dp.xml
│ │ │ ├── ic_hide_post_day_night_24dp.xml
│ │ │ ├── ic_hide_read_posts_day_night_24dp.xml
│ │ │ ├── ic_history_day_night_24dp.xml
│ │ │ ├── ic_home_day_night_24dp.xml
│ │ │ ├── ic_image_day_night_24dp.xml
│ │ │ ├── ic_import_day_night_24dp.xml
│ │ │ ├── ic_inbox_day_night_24dp.xml
│ │ │ ├── ic_info_preference_day_night_24dp.xml
│ │ │ ├── ic_interface_day_night_24dp.xml
│ │ │ ├── ic_key_day_night_24dp.xml
│ │ │ ├── ic_keyboard_double_arrow_up_day_night_24dp.xml
│ │ │ ├── ic_language_day_night_24dp.xml
│ │ │ ├── ic_light_theme_preference_day_night_24dp.xml
│ │ │ ├── ic_link_day_night_24dp.xml
│ │ │ ├── ic_link_post_type_indicator_day_night_24dp.xml
│ │ │ ├── ic_lock_day_night_24dp.xml
│ │ │ ├── ic_log_out_day_night_24dp.xml
│ │ │ ├── ic_miscellaneous_day_night_24dp.xml
│ │ │ ├── ic_multi_reddit_day_night_24dp.xml
│ │ │ ├── ic_mute_preferences_day_night_24dp.xml
│ │ │ ├── ic_notifications_day_night_24dp.xml
│ │ │ ├── ic_nsfw_off_day_night_24dp.xml
│ │ │ ├── ic_nsfw_on_day_night_24dp.xml
│ │ │ ├── ic_open_link_day_night_24dp.xml
│ │ │ ├── ic_playback_speed_day_night_24dp.xml
│ │ │ ├── ic_poll_day_night_24dp.xml
│ │ │ ├── ic_post_layout_day_night_24dp.xml
│ │ │ ├── ic_preview_day_night_24dp.xml
│ │ │ ├── ic_privacy_policy_day_night_24dp.xml
│ │ │ ├── ic_random_day_night_24dp.xml
│ │ │ ├── ic_refresh_day_night_24dp.xml
│ │ │ ├── ic_reply_day_night_24dp.xml
│ │ │ ├── ic_report_day_night_24dp.xml
│ │ │ ├── ic_save_to_database_day_night_24dp.xml
│ │ │ ├── ic_search_day_night_24dp.xml
│ │ │ ├── ic_security_day_night_24dp.xml
│ │ │ ├── ic_select_photo_day_night_24dp.xml
│ │ │ ├── ic_settings_day_night_24dp.xml
│ │ │ ├── ic_share_day_night_24dp.xml
│ │ │ ├── ic_sort_day_night_24dp.xml
│ │ │ ├── ic_submit_post_day_night_24dp.xml
│ │ │ ├── ic_subreddit_day_night_24dp.xml
│ │ │ ├── ic_subscriptions_bottom_app_bar_day_night_24dp.xml
│ │ │ ├── ic_text_day_night_24dp.xml
│ │ │ ├── ic_user_agreement_day_night_24dp.xml
│ │ │ ├── ic_user_day_night_24dp.xml
│ │ │ ├── ic_video_day_night_24dp.xml
│ │ │ ├── ic_wallpaper_both_day_night_24dp.xml
│ │ │ ├── ic_wallpaper_home_screen_day_night_24dp.xml
│ │ │ └── ic_wallpaper_lock_screen_day_night_24dp.xml
│ │ ├── drawable-v24/
│ │ │ └── ic_launcher_background.xml
│ │ ├── drawable-xhdpi/
│ │ │ └── ic_cancel_24dp.xml
│ │ ├── font/
│ │ │ ├── atkinson_hyperlegible.xml
│ │ │ ├── atkinson_hyperlegible_bold_version.xml
│ │ │ ├── balsamiq_sans.xml
│ │ │ ├── balsamiq_sans_bold_version.xml
│ │ │ ├── harmonia_sans.xml
│ │ │ ├── inter.xml
│ │ │ ├── manrope.xml
│ │ │ ├── noto_sans.xml
│ │ │ ├── noto_sans_bold_version.xml
│ │ │ ├── roboto_condensed.xml
│ │ │ └── roboto_condensed_bold_version.xml
│ │ ├── layout/
│ │ │ ├── activity_account_posts.xml
│ │ │ ├── activity_account_saved_thing.xml
│ │ │ ├── activity_comment.xml
│ │ │ ├── activity_comment_filter_preference.xml
│ │ │ ├── activity_comment_filter_usage_listing.xml
│ │ │ ├── activity_comment_full_markdown.xml
│ │ │ ├── activity_create_multi_reddit.xml
│ │ │ ├── activity_custom_theme_listing.xml
│ │ │ ├── activity_customize_comment_filter.xml
│ │ │ ├── activity_customize_post_filter.xml
│ │ │ ├── activity_customize_theme.xml
│ │ │ ├── activity_edit_comment.xml
│ │ │ ├── activity_edit_multi_reddit.xml
│ │ │ ├── activity_edit_post.xml
│ │ │ ├── activity_edit_profile.xml
│ │ │ ├── activity_fetch_random_subreddit_or_post.xml
│ │ │ ├── activity_filtered_thing.xml
│ │ │ ├── activity_history.xml
│ │ │ ├── activity_inbox.xml
│ │ │ ├── activity_lock_screen.xml
│ │ │ ├── activity_login.xml
│ │ │ ├── activity_login_chrome_custom_tab.xml
│ │ │ ├── activity_main.xml
│ │ │ ├── activity_post_filter_application.xml
│ │ │ ├── activity_post_filter_preference.xml
│ │ │ ├── activity_post_gallery.xml
│ │ │ ├── activity_post_image.xml
│ │ │ ├── activity_post_link.xml
│ │ │ ├── activity_post_poll.xml
│ │ │ ├── activity_post_text.xml
│ │ │ ├── activity_post_video.xml
│ │ │ ├── activity_qrcode_scanner.xml
│ │ │ ├── activity_report.xml
│ │ │ ├── activity_rules.xml
│ │ │ ├── activity_search.xml
│ │ │ ├── activity_search_history.xml
│ │ │ ├── activity_search_result.xml
│ │ │ ├── activity_search_subreddits_result.xml
│ │ │ ├── activity_search_users_result.xml
│ │ │ ├── activity_select_user_flair.xml
│ │ │ ├── activity_selected_subreddits.xml
│ │ │ ├── activity_send_private_message.xml
│ │ │ ├── activity_settings.xml
│ │ │ ├── activity_submit_crosspost.xml
│ │ │ ├── activity_subscribed_subreddits_multiselection.xml
│ │ │ ├── activity_subscribed_thing_listing.xml
│ │ │ ├── activity_subscribed_users_multiselection.xml
│ │ │ ├── activity_suicide_prevention.xml
│ │ │ ├── activity_theme_preview.xml
│ │ │ ├── activity_view_image_or_gif.xml
│ │ │ ├── activity_view_imgur_media.xml
│ │ │ ├── activity_view_multi_reddit_detail.xml
│ │ │ ├── activity_view_post_detail.xml
│ │ │ ├── activity_view_private_messages.xml
│ │ │ ├── activity_view_reddit_gallery.xml
│ │ │ ├── activity_view_subreddit_detail.xml
│ │ │ ├── activity_view_user_detail.xml
│ │ │ ├── activity_view_video.xml
│ │ │ ├── activity_view_video_zoomable.xml
│ │ │ ├── activity_web_view.xml
│ │ │ ├── activity_wiki.xml
│ │ │ ├── adapter_default_entry.xml
│ │ │ ├── adapter_table_block.xml
│ │ │ ├── app_bar_main.xml
│ │ │ ├── bottom_app_bar.xml
│ │ │ ├── color_picker.xml
│ │ │ ├── copy_text_material_dialog.xml
│ │ │ ├── custom_barcode_scanner.xml
│ │ │ ├── dialog_edit_flair.xml
│ │ │ ├── dialog_edit_name.xml
│ │ │ ├── dialog_edit_post_or_comment_filter_name_of_usage.xml
│ │ │ ├── dialog_edit_text.xml
│ │ │ ├── dialog_go_to_thing_edit_text.xml
│ │ │ ├── dialog_insert_link.xml
│ │ │ ├── dialog_select_header.xml
│ │ │ ├── exo_autoplay_playback_control_view.xml
│ │ │ ├── exo_autoplay_playback_control_view_legacy.xml
│ │ │ ├── exo_playback_control_view.xml
│ │ │ ├── floating_action_button.xml
│ │ │ ├── fragment_account_chooser_bottom_sheet.xml
│ │ │ ├── fragment_acknowledgement.xml
│ │ │ ├── fragment_comment_filter_options_bottom_sheet.xml
│ │ │ ├── fragment_comment_filter_usage_options_bottom_sheet.xml
│ │ │ ├── fragment_comment_moderation_action_bottom_sheet.xml
│ │ │ ├── fragment_comment_more_bottom_sheet.xml
│ │ │ ├── fragment_comments_listing.xml
│ │ │ ├── fragment_copy_text_bottom_sheet.xml
│ │ │ ├── fragment_crash_reports.xml
│ │ │ ├── fragment_create_theme_bottom_sheet.xml
│ │ │ ├── fragment_custom_theme_listing.xml
│ │ │ ├── fragment_custom_theme_options_bottom_sheet.xml
│ │ │ ├── fragment_customize_bottom_app_bar.xml
│ │ │ ├── fragment_customize_main_page_tabs.xml
│ │ │ ├── fragment_fab_more_options_bottom_sheet.xml
│ │ │ ├── fragment_filtered_thing_fab_more_options_bottom_sheet.xml
│ │ │ ├── fragment_flair_bottom_sheet.xml
│ │ │ ├── fragment_followed_users_listing.xml
│ │ │ ├── fragment_font_preview.xml
│ │ │ ├── fragment_giphy_gif_info_bottom_sheet.xml
│ │ │ ├── fragment_history_post.xml
│ │ │ ├── fragment_important_info_bottom_sheet.xml
│ │ │ ├── fragment_inbox.xml
│ │ │ ├── fragment_karma_info_bottom_sheet.xml
│ │ │ ├── fragment_moderation_action_bottom_sheet.xml
│ │ │ ├── fragment_more_posts_info.xml
│ │ │ ├── fragment_multi_reddit_listing.xml
│ │ │ ├── fragment_multi_reddit_options_bottom_sheet.xml
│ │ │ ├── fragment_new_comment_filter_usage_bottom_sheet.xml
│ │ │ ├── fragment_new_post_filter_usage_bottom_sheet.xml
│ │ │ ├── fragment_nsfw_and_spoiler.xml
│ │ │ ├── fragment_playback_speed.xml
│ │ │ ├── fragment_post.xml
│ │ │ ├── fragment_post_comment_sort_type_bottom_sheet.xml
│ │ │ ├── fragment_post_filter_options_bottom_sheet.xml
│ │ │ ├── fragment_post_filter_usage_options_bottom_sheet.xml
│ │ │ ├── fragment_post_history.xml
│ │ │ ├── fragment_post_layout_bottom_sheet.xml
│ │ │ ├── fragment_post_options_bottom_sheet.xml
│ │ │ ├── fragment_post_type_bottom_sheet.xml
│ │ │ ├── fragment_random_bottom_sheet.xml
│ │ │ ├── fragment_search_post_sort_type_bottom_sheet.xml
│ │ │ ├── fragment_search_user_and_subreddit_sort_type_bottom_sheet.xml
│ │ │ ├── fragment_select_or_capture_image_bottom_sheet.xml
│ │ │ ├── fragment_select_subreddits_or_users_options_bottom_sheet.xml
│ │ │ ├── fragment_set_as_wallpaper_bottom_sheet.xml
│ │ │ ├── fragment_set_reddit_gallery_item_caption_and_url_bottom_sheet.xml
│ │ │ ├── fragment_settings_search.xml
│ │ │ ├── fragment_share_link_bottom_sheet.xml
│ │ │ ├── fragment_sidebar.xml
│ │ │ ├── fragment_sort_time_bottom_sheet.xml
│ │ │ ├── fragment_sort_type_bottom_sheet.xml
│ │ │ ├── fragment_subreddit_listing.xml
│ │ │ ├── fragment_subscribed_subreddits_listing.xml
│ │ │ ├── fragment_theme_preview_comments.xml
│ │ │ ├── fragment_theme_preview_posts.xml
│ │ │ ├── fragment_translation.xml
│ │ │ ├── fragment_uploaded_images_bottom_sheet.xml
│ │ │ ├── fragment_url_menu_bottom_sheet.xml
│ │ │ ├── fragment_user_listing.xml
│ │ │ ├── fragment_user_thing_sort_type_bottom_sheet.xml
│ │ │ ├── fragment_view_imgur_image.xml
│ │ │ ├── fragment_view_imgur_video.xml
│ │ │ ├── fragment_view_post_detail.xml
│ │ │ ├── fragment_view_reddit_gallery_image_or_gif.xml
│ │ │ ├── fragment_view_reddit_gallery_video.xml
│ │ │ ├── item_acknowledgement.xml
│ │ │ ├── item_award.xml
│ │ │ ├── item_comment.xml
│ │ │ ├── item_comment_filter_usage_embedded.xml
│ │ │ ├── item_comment_filter_with_usage.xml
│ │ │ ├── item_comment_footer_error.xml
│ │ │ ├── item_comment_footer_loading.xml
│ │ │ ├── item_comment_fully_collapsed.xml
│ │ │ ├── item_crash_report.xml
│ │ │ ├── item_custom_theme_color_item.xml
│ │ │ ├── item_custom_theme_switch_item.xml
│ │ │ ├── item_favorite_thing_divider.xml
│ │ │ ├── item_filter_fragment_header.xml
│ │ │ ├── item_flair.xml
│ │ │ ├── item_footer_error.xml
│ │ │ ├── item_footer_loading.xml
│ │ │ ├── item_gallery_image_in_post_feed.xml
│ │ │ ├── item_load_comments.xml
│ │ │ ├── item_load_comments_failed_placeholder.xml
│ │ │ ├── item_load_more_comments_placeholder.xml
│ │ │ ├── item_markdown_bottom_bar.xml
│ │ │ ├── item_message.xml
│ │ │ ├── item_multi_reddit.xml
│ │ │ ├── item_nav_drawer_account.xml
│ │ │ ├── item_nav_drawer_divider.xml
│ │ │ ├── item_nav_drawer_menu_group_title.xml
│ │ │ ├── item_nav_drawer_menu_item.xml
│ │ │ ├── item_nav_drawer_subscribed_thing.xml
│ │ │ ├── item_no_comment_placeholder.xml
│ │ │ ├── item_paging_3_load_state.xml
│ │ │ ├── item_post_card_2_gallery_type.xml
│ │ │ ├── item_post_card_2_text.xml
│ │ │ ├── item_post_card_2_video_autoplay.xml
│ │ │ ├── item_post_card_2_video_autoplay_legacy_controller.xml
│ │ │ ├── item_post_card_2_with_preview.xml
│ │ │ ├── item_post_card_3_gallery_type.xml
│ │ │ ├── item_post_card_3_text.xml
│ │ │ ├── item_post_card_3_video_type_autoplay.xml
│ │ │ ├── item_post_card_3_video_type_autoplay_legacy_controller.xml
│ │ │ ├── item_post_card_3_with_preview.xml
│ │ │ ├── item_post_compact.xml
│ │ │ ├── item_post_compact_2.xml
│ │ │ ├── item_post_compact_2_right_thumbnail.xml
│ │ │ ├── item_post_compact_right_thumbnail.xml
│ │ │ ├── item_post_detail_gallery.xml
│ │ │ ├── item_post_detail_image_and_gif_autoplay.xml
│ │ │ ├── item_post_detail_link.xml
│ │ │ ├── item_post_detail_no_preview.xml
│ │ │ ├── item_post_detail_text.xml
│ │ │ ├── item_post_detail_video_and_gif_preview.xml
│ │ │ ├── item_post_detail_video_autoplay.xml
│ │ │ ├── item_post_detail_video_autoplay_legacy_controller.xml
│ │ │ ├── item_post_filter_usage.xml
│ │ │ ├── item_post_filter_usage_embedded.xml
│ │ │ ├── item_post_filter_with_usage.xml
│ │ │ ├── item_post_gallery.xml
│ │ │ ├── item_post_gallery_gallery_type.xml
│ │ │ ├── item_post_gallery_type.xml
│ │ │ ├── item_post_text.xml
│ │ │ ├── item_post_video_type_autoplay.xml
│ │ │ ├── item_post_video_type_autoplay_legacy_controller.xml
│ │ │ ├── item_post_with_preview.xml
│ │ │ ├── item_predefined_custom_theme.xml
│ │ │ ├── item_private_message_received.xml
│ │ │ ├── item_private_message_sent.xml
│ │ │ ├── item_recent_search_query.xml
│ │ │ ├── item_reddit_gallery_submission_add_image.xml
│ │ │ ├── item_reddit_gallery_submission_image.xml
│ │ │ ├── item_report_reason.xml
│ │ │ ├── item_rule.xml
│ │ │ ├── item_selected_subreddit.xml
│ │ │ ├── item_settings_search.xml
│ │ │ ├── item_shared_comment_row.xml
│ │ │ ├── item_subreddit_listing.xml
│ │ │ ├── item_subscribed_subreddit_multi_selection.xml
│ │ │ ├── item_subscribed_thing.xml
│ │ │ ├── item_subscribed_user_multi_selection.xml
│ │ │ ├── item_theme_name.xml
│ │ │ ├── item_theme_type_divider.xml
│ │ │ ├── item_translation_contributor.xml
│ │ │ ├── item_trending_search.xml
│ │ │ ├── item_uploaded_image.xml
│ │ │ ├── item_user_custom_theme.xml
│ │ │ ├── item_user_flair.xml
│ │ │ ├── item_user_listing.xml
│ │ │ ├── item_view_all_comments.xml
│ │ │ ├── markdown_image_and_gif_block.xml
│ │ │ ├── nav_header_main.xml
│ │ │ ├── preference_slider.xml
│ │ │ ├── preference_switch.xml
│ │ │ ├── shared_comment.xml
│ │ │ ├── shared_post.xml
│ │ │ ├── shared_post_with_comments.xml
│ │ │ └── view_table_entry_cell.xml
│ │ ├── layout-land/
│ │ │ ├── activity_customize_comment_filter.xml
│ │ │ ├── activity_customize_post_filter.xml
│ │ │ ├── activity_lock_screen.xml
│ │ │ ├── activity_view_multi_reddit_detail.xml
│ │ │ ├── activity_view_subreddit_detail.xml
│ │ │ ├── activity_view_user_detail.xml
│ │ │ ├── app_bar_main.xml
│ │ │ └── fragment_view_post_detail.xml
│ │ ├── layout-sw600dp/
│ │ │ ├── activity_customize_comment_filter.xml
│ │ │ ├── activity_customize_post_filter.xml
│ │ │ ├── activity_view_multi_reddit_detail.xml
│ │ │ ├── activity_view_subreddit_detail.xml
│ │ │ ├── activity_view_user_detail.xml
│ │ │ ├── app_bar_main.xml
│ │ │ └── fragment_view_post_detail.xml
│ │ ├── menu/
│ │ │ ├── account_posts_activity.xml
│ │ │ ├── account_saved_thing_activity.xml
│ │ │ ├── activity_settings.xml
│ │ │ ├── bottom_app_bar.xml
│ │ │ ├── comment_activity.xml
│ │ │ ├── crash_reports_fragment.xml
│ │ │ ├── create_multi_reddit_activity.xml
│ │ │ ├── customize_comment_filter_activity.xml
│ │ │ ├── customize_post_filter_activity.xml
│ │ │ ├── customize_theme_activity.xml
│ │ │ ├── edit_comment_activity.xml
│ │ │ ├── edit_multi_reddit_activity.xml
│ │ │ ├── edit_post_activity.xml
│ │ │ ├── edit_profile_activity.xml
│ │ │ ├── filtered_posts_activity.xml
│ │ │ ├── full_markdown_activity.xml
│ │ │ ├── history_activity.xml
│ │ │ ├── history_post_fragment.xml
│ │ │ ├── inbox_activity.xml
│ │ │ ├── main_activity.xml
│ │ │ ├── navigation_rail_menu.xml
│ │ │ ├── post_fragment.xml
│ │ │ ├── post_gallery_activity.xml
│ │ │ ├── post_image_activity.xml
│ │ │ ├── post_link_activity.xml
│ │ │ ├── post_poll_activity.xml
│ │ │ ├── post_text_activity.xml
│ │ │ ├── post_video_activity.xml
│ │ │ ├── report_activity.xml
│ │ │ ├── search_result_activity.xml
│ │ │ ├── search_subreddits_result_activity.xml
│ │ │ ├── search_users_result_activity.xml
│ │ │ ├── selected_subreddits_activity.xml
│ │ │ ├── send_private_message_activity.xml
│ │ │ ├── submit_crosspost_activity.xml
│ │ │ ├── subreddit_multiselection_activity.xml
│ │ │ ├── subscribed_thing_listing_activity.xml
│ │ │ ├── trending_activity.xml
│ │ │ ├── user_multiselection_activity.xml
│ │ │ ├── view_image_or_gif_activity.xml
│ │ │ ├── view_imgur_image_fragment.xml
│ │ │ ├── view_imgur_media_activity.xml
│ │ │ ├── view_imgur_video_fragment.xml
│ │ │ ├── view_multi_reddit_detail_activity.xml
│ │ │ ├── view_post_detail_activity.xml
│ │ │ ├── view_post_detail_fragment.xml
│ │ │ ├── view_reddit_gallery_activity.xml
│ │ │ ├── view_reddit_gallery_image_or_gif_fragment.xml
│ │ │ ├── view_reddit_gallery_video_fragment.xml
│ │ │ ├── view_subreddit_detail_activity.xml
│ │ │ ├── view_user_detail_activity.xml
│ │ │ ├── view_video_activity.xml
│ │ │ └── web_view_activity.xml
│ │ ├── mipmap-anydpi-v26/
│ │ │ ├── ic_launcher.xml
│ │ │ └── ic_launcher_round.xml
│ │ ├── raw/
│ │ │ ├── lock_screen.json
│ │ │ ├── love.json
│ │ │ └── random_subreddit_or_post.json
│ │ ├── res/
│ │ │ └── drawable/
│ │ │ └── baseline_comment_24.xml
│ │ ├── values/
│ │ │ ├── arrays.xml
│ │ │ ├── attr.xml
│ │ │ ├── colors.xml
│ │ │ ├── dimens.xml
│ │ │ ├── ids.xml
│ │ │ ├── strings.xml
│ │ │ └── styles.xml
│ │ ├── values-cs/
│ │ │ └── strings.xml
│ │ ├── values-de/
│ │ │ └── strings.xml
│ │ ├── values-el/
│ │ │ └── strings.xml
│ │ ├── values-es/
│ │ │ └── strings.xml
│ │ ├── values-fr/
│ │ │ └── strings.xml
│ │ ├── values-hi/
│ │ │ └── strings.xml
│ │ ├── values-hr/
│ │ │ └── strings.xml
│ │ ├── values-hu/
│ │ │ └── strings.xml
│ │ ├── values-it/
│ │ │ └── strings.xml
│ │ ├── values-ja/
│ │ │ └── strings.xml
│ │ ├── values-ko/
│ │ │ └── strings.xml
│ │ ├── values-land-v28/
│ │ │ └── styles.xml
│ │ ├── values-night/
│ │ │ └── colors.xml
│ │ ├── values-night-v27/
│ │ │ └── styles.xml
│ │ ├── values-night-v31/
│ │ │ └── styles.xml
│ │ ├── values-nl/
│ │ │ └── strings.xml
│ │ ├── values-pl/
│ │ │ └── strings.xml
│ │ ├── values-pt/
│ │ │ └── strings.xml
│ │ ├── values-pt-rBR/
│ │ │ └── strings.xml
│ │ ├── values-ro/
│ │ │ └── strings.xml
│ │ ├── values-ru/
│ │ │ └── strings.xml
│ │ ├── values-so/
│ │ │ └── strings.xml
│ │ ├── values-sw600dp/
│ │ │ └── attr.xml
│ │ ├── values-ta/
│ │ │ └── strings.xml
│ │ ├── values-tr-rTR/
│ │ │ └── strings.xml
│ │ ├── values-uk/
│ │ │ └── strings.xml
│ │ ├── values-v27/
│ │ │ ├── colors.xml
│ │ │ └── styles.xml
│ │ ├── values-v28/
│ │ │ └── styles.xml
│ │ ├── values-v31/
│ │ │ └── styles.xml
│ │ ├── values-v36/
│ │ │ └── styles.xml
│ │ ├── values-vi/
│ │ │ └── strings.xml
│ │ ├── values-zh-rCN/
│ │ │ └── strings.xml
│ │ ├── xml/
│ │ │ ├── about_preferences.xml
│ │ │ ├── activity_motion_test_scene.xml
│ │ │ ├── advanced_preferences.xml
│ │ │ ├── api_keys_preferences.xml
│ │ │ ├── comment_preferences.xml
│ │ │ ├── credits_preferences.xml
│ │ │ ├── data_saving_mode_preferences.xml
│ │ │ ├── debug_preferences.xml
│ │ │ ├── download_location_preferences.xml
│ │ │ ├── file_paths.xml
│ │ │ ├── font_preferences.xml
│ │ │ ├── gestures_and_buttons_preferences.xml
│ │ │ ├── immersive_interface_preferences.xml
│ │ │ ├── interface_preferences.xml
│ │ │ ├── item_post_with_preview_scene.xml
│ │ │ ├── main_preferences.xml
│ │ │ ├── miscellaneous_preferences.xml
│ │ │ ├── navigation_drawer_preferences.xml
│ │ │ ├── notification_preferences.xml
│ │ │ ├── number_of_columns_in_post_feed_preferences.xml
│ │ │ ├── post_details_preferences.xml
│ │ │ ├── post_preferences.xml
│ │ │ ├── proxy_preferences.xml
│ │ │ ├── security_preferences.xml
│ │ │ ├── sort_type_preferences.xml
│ │ │ ├── swipe_action_preferences.xml
│ │ │ ├── theme_preferences.xml
│ │ │ ├── time_format_preferences.xml
│ │ │ └── video_preferences.xml
│ │ └── xml-sw600dp/
│ │ └── post_details_preferences.xml
│ └── test/
│ └── resources/
│ └── allure.properties
├── build.gradle
├── discoverium.yml
├── fastlane/
│ └── metadata/
│ └── android/
│ └── en-US/
│ ├── full_description.txt
│ ├── short_description.txt
│ └── title.txt
├── gradle/
│ └── wrapper/
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradle.properties
├── gradlew
├── gradlew.bat
├── scripts/
│ ├── release-builds.sh
│ └── release-github.sh
└── settings.gradle
================================================
FILE CONTENTS
================================================
================================================
FILE: .gitattributes
================================================
# Keep our fork's versions of these files when merging from upstream
.github/workflows/build.yml merge=ours
.github/workflows/codeql-analysis.yml merge=ours
================================================
FILE: .github/ISSUE_TEMPLATE/bug_report.md
================================================
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: 'bug'
assignees: ''
---
**Describe the bug**
<!-- A clear and concise description of what the bug is. -->
**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
**Expected behavior**
<!-- A clear and concise description of what you expected to happen. -->
**Screenshots**
<!-- If applicable, add screenshots to help explain your problem. -->
**Smartphone (please complete the following information):**
- Device: [e.g. A72]
- OS: [e.g. One UI]
- Version: [e.g. 7.4.0.5]
**Additional context**
<!-- Add any other context about the problem here. -->
================================================
FILE: .github/ISSUE_TEMPLATE/config.yml
================================================
blank_issues_enabled: false
================================================
FILE: .github/ISSUE_TEMPLATE/feature_request.md
================================================
---
name: Feature request
about: Suggest an idea for this project
title: ''
labels: 'enhancement'
assignees: ''
---
**Is your feature request related to a problem? Please describe.**
<!-- A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] -->
**Describe the solution you'd like**
<!-- A clear and concise description of what you want to happen. -->
**Describe alternatives you've considered**
<!-- A clear and concise description of any alternative solutions or features you've considered. -->
**Additional context**
<!-- Add any other context or screenshots about the feature request here. -->
================================================
FILE: .github/actions/github-custom-issue-closer
================================================
name: 'Custom Issue Closer'
description: 'Automatically close GitHub issues based on custom patterns in commit messages'
author: 'Nathan Grennan <github@cygnusx-1.org>'
inputs:
github_token:
description: 'GitHub token for API access'
required: true
default: ${{ github.token }}
pattern:
description: 'Custom regex pattern to match in commit messages'
required: false
default: '[d]?(?:\\s*:)?\\s*#(\\d+)$'
runs:
using: 'docker'
image: 'Dockerfile'
args:
- ${{ inputs.github_token }}
- ${{ inputs.pattern }}
branding:
icon: 'x-circle'
color: 'red'
================================================
FILE: .github/workflows/build.yml
================================================
# This workflow overrides the upstream build.yml for this fork.
# It runs a no-op job so GitHub doesn't report "no jobs were run".
name: Build
on:
push:
pull_request:
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
steps:
- run: echo "Build workflow disabled for this fork"
================================================
FILE: .github/workflows/close-issues-custom-pattern.yml
================================================
name: Close Issues via Custom Patterns
on:
push:
branches:
- main
- master
pull_request:
types: [closed]
branches:
- main
- master
jobs:
close-issues:
runs-on: ubuntu-24.04
permissions:
actions: read
issues: write
packages: read
if: github.event_name == 'push' || (github.event_name == 'pull_request' && github.event.pull_request.merged == true)
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Close issues based on commit messages
uses: docker://ghcr.io/cygnusx-1-org/github-custom-issue-closer:0.0.3
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
# Optional: Override the default regex pattern
# pattern: "completed[\\s:]+#(\\d+)"
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
================================================
FILE: .gitignore
================================================
# Created by https://www.gitignore.io/api/androidstudio
# Edit at https://www.gitignore.io/?templates=androidstudio
### AndroidStudio ###
# Covers files to be ignored for android development using Android Studio.
# Built application files
*.apk
*.ap_
*.aab
# Files for the ART/Dalvik VM
*.dex
# Java class files
*.class
# Generated files
bin/
gen/
out/
/app/release
/app/minifiedRelease
# Gradle files
.gradle/
build/
# Signing files
.signing/
# Local configuration file (sdk path, etc)
local.properties
# Proguard folder generated by Eclipse
proguard/
# Log Files
*.log
# Android Studio
local.properties
/*/out
/*/*/production
captures/
.navigation/
*.ipr
*~
*.swp
# Android Patch
gen-external-apklibs
# External native build folder generated in Android Studio 2.2 and later
.externalNativeBuild
# NDK
obj/
**/ndkHelperBin
**/.cxx
# IntelliJ IDEA
*.iml
*.iws
/out/
# User-specific configurations
.idea/
# OS-specific files
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
ehthumbs.db
Thumbs.db
# Legacy Eclipse project files
.classpath
.project
.cproject
.settings/
# Mobile Tools for Java (J2ME)
.mtj.tmp/
# Visual Studio Code
.vscode/
# Package Files #
*.war
*.ear
# virtual machine crash logs (Reference: http://www.java.com/en/download/help/error_hotspot.xml)
hs_err_pid*
## Plugin-specific files:
# mpeltonen/sbt-idea plugin
.idea_modules/
# JIRA plugin
atlassian-ide-plugin.xml
# Crashlytics plugin (for Android Studio and IntelliJ)
com_crashlytics_export_strings.xml
crashlytics.properties
crashlytics-build.properties
fabric.properties
### AndroidStudio Patch ###
!/gradle/wrapper/gradle-wrapper.jar
# Lint file
app/lint-baseline.xml
keystore.properties
test.properties
backup/
# Github token
github.properties
# End of https://www.gitignore.io/api/androidstudio
================================================
FILE: CHANGELOG.md
================================================
# CHANGELOG
---
8.1.4.5 / 2026-4-9
===========
Note v8a is the 64-bit build, and should be considered the default choose.
* Fixed issue with the Reddit account's interface language being anything
other than English at WebView login. Thanks to @wchill
* Fixed Jump to Next Top-level Comment #244
8.1.4.4 / 2026-4-3
===========
Note v8a is the 64-bit build, and should be considered the default choose.
* Added support for configuring the user agent and redirect uri directly in the app
* Added support for logging in with Firefox as the external browser
8.1.4.3 / 2026-3-31
============
Note v8a is the 64-bit build, and should be considered the default choose.
* Fixed WebView login
8.1.4.2 / 2026-3-27
============
Note v8a is the 64-bit build, and should be considered the default choose.
* Added "Share as Image with Comments" and "Share as Image with this Comment Thread"
* Fixed the colors of the "Share as Image" QR codes to always be white/black for usability with the Android Camera app
8.1.4.1 / 2026-3-27
============
Note v8a is the 64-bit build, and should be considered the default choose.
* Updated to 8.1.4
* Added the ability to search Settings
* Added post ids or post ids + comment ids to saved filenames
8.1.3.1 / 2026-3-16
============
Note v8a is the 64-bit build, and should be considered the default choose.
* Fixed Link in comment doesnt render/link properly #238
* Fixed Ability to swap both the content and comments on Fold when unfolded #232
* Improved the user experience when adding a user to a multi-reddit
8.1.2.4 / 2026-3-6
===========
Note v8a is the 64-bit build, and should be considered the default choose.
* Fixed issue with preview image quality in the split view
8.1.2.3 / 2026-3-4
===========
Note v8a is the 64-bit build, and should be considered the default choose.
* Simplified adding a user profile to a multi-reddit
* Fixed Add a multireddit description page #230
* Moved "Enable folding phone support" to "Settings | Miscellaneous"
* Added "Default Post Layout for a Foldable Unfolded" in "Settings | Interface | Post"
* Fixed Some gifs in comments fail to embed #227
* Fixed bug with uploading an image into a comment
8.1.2.2 / 2026-2-21
============
Note v8a is the 64-bit build, and should be considered the default choose.
* Added retry logic to 500 errors when loading posts from a subreddit
* Made subredditAPICallLimit always return 100
* Reverted halve the limit button
8.1.2.1 / 2026-2-18
============
Note v8a is the 64-bit build, and should be considered the default choose.
* Added feature to allow the user to "Halve the post limit" on failure
* Upgraded to 8.1.2
8.1.1.1 / 2026-2-12
============
Note v8a is the 64-bit build, and should be considered the default choose.
* Fixed Gifs no longer showing up in comments #217
* Upgraded to 8.1.1
8.1.0.2 / 2026-1-23
============
Note v8a is the 64-bit build, and should be considered the default choose.
* Fixed crash on start with 8.1.0.1
8.1.0.1 / 2026-1-23
============
Note v8a is the 64-bit build, and should be considered the default choose.
* Added Remember Comment Scroll Position in Settings | Interface | Comment, disabled by default
* Upgraded to 8.1.0
8.0.8.1 / 2025-11-16
=============
Note v8a is the 64-bit build, and should be considered the default choose.
* Fixed Bottom Navigation Bar #196
* Fixed Video player control is not aligned properly #198
* Upgraded to 8.0.8
8.0.7.3 / 2025-11-9
============
Note v8a is the 64-bit build, and should be considered the default choose.
* Fixed App closes when I try to open a post with a video #189
* Fixed issue with post image recycling while scrolling for auto-played video posts
8.0.7.2 / 2025-11-7
============
Note v8a is the 64-bit build, and should be considered the default choose.
* Updated media3-exoplayer to 1.8.0
* Having Video issue on Huawei #186
8.0.7.1 / 2025-11-5
============
Note v8a is the 64-bit build, and should be considered the default choose.
* Fixed Confirm to exit doesn't really exit #154
* Upgraded to 8.0.7
8.0.5.1 / 2025-10-17
=============
Note v8a is the 64-bit build, and should be considered the default choose.
* Make double tapping tabs cause a scroll to the top (in Subreddit view)
* Add contain subreddits/users in postFilter
* Upgraded to 8.0.5
8.0.3.1 / 2025-9-17
============
Note v8a is the 64-bit build, and should be considered the default choose.
* Ensure `mark posts as read` is also turned on before hiding read posts
* Don't show the number of online subscribers in ViewSubredditDetailAct, aka
the comments not loading
* Always show read posts on any users page
* Hide the + button on PostFilterUsageListingActivity as it does nothing
* Upgraded to 8.0.3, aka Redgif sound
8.0.2.1 / 2025-9-8
===========
Note v8a is the 64-bit build, and should be considered the default choose.
* Keep pinned posts pinned even when filtering or hiding read posts
* Make double tapping tabs cause a scroll to the top #148
* Fix the + button in apply post filter not working correctly
* Upgraded to 8.0.2
8.0.0.1 / 2025-8-21
============
Note v8a is the 64-bit build, and should be considered the default choose.
* Re-enabled redgifs
* Upgraded to 8.0.0
* Fix No sound in redgifs #129
7.5.1.3 / 2025-8-8
===========
Note v8a is the 64-bit build, and should be considered the default choose.
* Added contains subreddit and users post filters #112
* Added thumbnails for crossposts
* Fixed crash when trying to select the camera with no permission
* Fixed Can't post my own GIFs #100
* Fixed Reduce the size of the placeholder preview image #53
- If you don't like the divide line for posts in the compact mode, "Settings | Interface | Post | Compact Layout | Show Divider"
* Fixed "Remove Alls" -> "Remove All" #81
* Fixed Swap taps and long press in comments #111
* Fixed Duplicate image title downloads #101
7.5.1.2 / 2025-6-16
============
* Ability to hide user prefix in comments
* Fixed Make it so the user can choose the password for the backup and enter it for the restore #83
* Removed padding from comments to make them more compact
* Merged "Keep screen on when autoplaying videos" from upstream
* Fixed Download issue #98
* Fixed crash from not having a video location set
7.5.1.1 / 2025-5-28
============
Note v8a is the 64-bit build, and should be considered the default choose.
* Synced with upstream to 7.5.1
* Fixed Bug: Failed to download Tumblr videos #48
* Fxied App crashes while trying to download an image #78
* Fixed Crash when trying to download an image without the download location set #77
* Fixed 4x All as default #75
7.5.0.2 / 2025-5-24
============
Note v8a is the 64-bit build, and should be considered the default choose.
* Reverted "* Fixed Reduce the size of the placeholder preview image #53"
* Fixed NSFW toggle button #73 via reverting the change by Infinity
* Fixed Please add the ability to have extra tabs at the top of the main page #64
* Changing app/build.gradle to build v7a and v8a builds
7.5.0.1 / 2025-5-12
============
* Fixed Downloaded video contains no sound #57
* Fixed Reduce the size of the placeholder preview image #53
* Synced with upstream to 7.5.0
7.4.4.4 / 2025-4-20
============
* Added support for inputting the client ID via a QR code
* Added child comment count next to comment score when the comment is collapsed
* Fixed Make the comments more compact #18
* Enabled "Swap Tap and Long Press Comments" by default
* Fixed Incorrect FAB icon and action in bottom bar customization #39
* Fixed Sensible download names #13
* Fixed Simplify download path #38
7.4.4.3 / 2025-4-16
===================
* Changed internal name to org.cygnusx1.continuum #7
* Added support for Giphy API Key #20
* Changed the beginning of the backup filename to Continuum
* Fixed Rename all instances of Sensitive Content to NSFW #19
* Removed toggle to allow not backing up accounts and api keys #21 #22
* Fixed “Swipe vertically to go back” still active on gifs and videos when disabled #6
* Removed all references to random since Reddit removed it #11
7.4.4.2 / 2025-4-14
===================
* Added support for backing up and restoring all settings other than Security
* Added toggle to backup accounts and the client id, and it is enabled by default
* Removed rate this app in About
* Fixed link to subreddit in About
* Removed more branding
7.4.4.1 / 2025-4-10
===================
* Initial release based on Infinity for Reddit
* Removed most of the Infinity for Reddit branding
* Added a new icon
* Changed the user agent and redirect URL
* Added a dynamic Client ID setting
* Added Solarized Amoled theme
================================================
FILE: FAQ.md
================================================
# Frequently asked questions
1. Why can't I login?
There can be issues with `Android System Webview`. See [Common errors](/SETUP.md#common-errors) in [SETUP.md](/SETUP.md).
There is a known issue with the `Reddit` login JavaScript. It was discovered by wchill. It prevents logging in when the language if the language is anything other than `English`. So you need to set the language of your `Reddit` account to `English`.
I have implemented a hack to workaround the issue in `8.1.4.5`, but it has a few issues.
1. It could break at anytime if `Reddit` rewrites their JavaScript.
2. The hack only works in the WebView not Chrome, Brave or Firefox.
## How to change the Reddit account interface language
1. Go to https://old.reddit.com/prefs/
2. Change the `interface language`
<p align="center">
<picture>
<source
width="1053x"
media="(prefers-color-scheme: dark)"
srcset="assets/screenshots/reddit_account_language.png"
>
<img
width="1053px"
src="assets/screenshots/reddit_account_language.png"
>
</picture>
</p>
Sometimes there can be popups on the login page, like a cookies popup, that block the keyboard appearing. Real browsers deal with these better than `Android System WebView`.
There is also a button in the bottom right of the login screen that lets you use your default browser instead of `Android System WebView`. But the browser needs to be `Chrome` based like `Chrome`, `Chromium`, or `Brave` to work. It has been tested with `Firefox`, and it doesn't work.
Using a VPN from a location other than your actual location, or if already using a VPN, not using a VPN. You may also get difference results on different internet connections, like your home, friend's home, grocery store, work, etc. Also if wifi isn't working try the cell connection. If the cell connection isn't working, try wifi.
2. Why can't I view `NSFW` content even through I have enabled the settings in `Settings | Content NSFW Filter`?
The behavior of this seems to be per account. The known fix, when it is an issue, is to make a subreddit via the website as the user you want to use in `Continuum`. This makes you a `moderator` of your new subreddit. This seems to set a flag on the account that then solves the problem.
================================================
FILE: GIPHY.md
================================================
# Giphy API key creation
Continuum has to use a BYOK(Bring your own key) model. Continuum is open source, and [Giphy](https://giphy.com/)(now owned by [Shutterstock](https://www.shutterstock.com/)) charges crazy money for apps to use their API. This is very akin to [Reddit](https://www.reddit.com/) API costs, but much worse.
## Instructions
1. Go [here](https://developers.giphy.com/)
2. Click the `Create Account` button
<img src="/assets/screenshots/giphy_create_account.png" alt="drawing"/>
3. Click `Sign Up` and create an account if needed, otherwise `Log In`
<img src="/assets/screenshots/giphy_login_signup.png" alt="drawing" width="412.5" height="531.5" style="object-fit: contain;"/>
4. Click the `Create an API Key` button
<img src="/assets/screenshots/giphy_create_an_api_key.png" alt="drawing"/>
5. Click `Select API` to pick `API` instead of `SDK`
6. Click the `Next Step` button
<img src="/assets/screenshots/giphy_sdk_api.png" alt="drawing"/>
7. Set `Your App Name` to `Continuum`
8. Set `Platform` to `Android`
9. Set the `App Description` to `Reddit Android client with Giphy support`
10. Check the box for `By checking this box, I am confirming that I have read & agree to the GIPHY API Terms`
11. Click the `Create API Key` button
<img src="/assets/screenshots/giphy_create_a_new_api_key.png" alt="drawing"/>
You should theen see a box like this on the page with your API key.

> [!NOTE]
>
> **kTWpBT9Zc5iZw8lZ0dTUcTukCwVHftSK** was a real API key, but has
> since been deleted. It won't work for you, so don't try it.
================================================
FILE: LICENSE
================================================
GNU AFFERO GENERAL PUBLIC LICENSE
Version 3, 19 November 2007
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The GNU Affero General Public License is a free, copyleft license for
software and other kinds of works, specifically designed to ensure
cooperation with the community in the case of network server software.
The licenses for most software and other practical works are designed
to take away your freedom to share and change the works. By contrast,
our General Public Licenses are intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.
Developers that use our General Public Licenses protect your rights
with two steps: (1) assert copyright on the software, and (2) offer
you this License which gives you legal permission to copy, distribute
and/or modify the software.
A secondary benefit of defending all users' freedom is that
improvements made in alternate versions of the program, if they
receive widespread use, become available for other developers to
incorporate. Many developers of free software are heartened and
encouraged by the resulting cooperation. However, in the case of
software used on network servers, this result may fail to come about.
The GNU General Public License permits making a modified version and
letting the public access it on a server without ever releasing its
source code to the public.
The GNU Affero General Public License is designed specifically to
ensure that, in such cases, the modified source code becomes available
to the community. It requires the operator of a network server to
provide the source code of the modified version running there to the
users of that server. Therefore, public use of a modified version, on
a publicly accessible server, gives the public access to the source
code of the modified version.
An older license, called the Affero General Public License and
published by Affero, was designed to accomplish similar goals. This is
a different license, not a version of the Affero GPL, but Affero has
released a new version of the Affero GPL which permits relicensing under
this license.
The precise terms and conditions for copying, distribution and
modification follow.
TERMS AND CONDITIONS
0. Definitions.
"This License" refers to version 3 of the GNU Affero General Public License.
"Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.
"The Program" refers to any copyrightable work licensed under this
License. Each licensee is addressed as "you". "Licensees" and
"recipients" may be individuals or organizations.
To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy. The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.
A "covered work" means either the unmodified Program or a work based
on the Program.
To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy. Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.
To "convey" a work means any kind of propagation that enables other
parties to make or receive copies. Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.
An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License. If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.
1. Source Code.
The "source code" for a work means the preferred form of the work
for making modifications to it. "Object code" means any non-source
form of a work.
A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.
The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form. A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.
The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities. However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work. For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.
The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.
The Corresponding Source for a work in source code form is that
same work.
2. Basic Permissions.
All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met. This License explicitly affirms your unlimited
permission to run the unmodified Program. The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work. This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.
You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force. You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright. Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.
Conveying under any other circumstances is permitted solely under
the conditions stated below. Sublicensing is not allowed; section 10
makes it unnecessary.
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.
When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.
4. Conveying Verbatim Copies.
You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.
You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.
5. Conveying Modified Source Versions.
You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:
a) The work must carry prominent notices stating that you modified
it, and giving a relevant date.
b) The work must carry prominent notices stating that it is
released under this License and any conditions added under section
7. This requirement modifies the requirement in section 4 to
"keep intact all notices".
c) You must license the entire work, as a whole, under this
License to anyone who comes into possession of a copy. This
License will therefore apply, along with any applicable section 7
additional terms, to the whole of the work, and all its parts,
regardless of how they are packaged. This License gives no
permission to license the work in any other way, but it does not
invalidate such permission if you have separately received it.
d) If the work has interactive user interfaces, each must display
Appropriate Legal Notices; however, if the Program has interactive
interfaces that do not display Appropriate Legal Notices, your
work need not make them do so.
A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit. Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.
6. Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:
a) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by the
Corresponding Source fixed on a durable physical medium
customarily used for software interchange.
b) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by a
written offer, valid for at least three years and valid for as
long as you offer spare parts or customer support for that product
model, to give anyone who possesses the object code either (1) a
copy of the Corresponding Source for all the software in the
product that is covered by this License, on a durable physical
medium customarily used for software interchange, for a price no
more than your reasonable cost of physically performing this
conveying of source, or (2) access to copy the
Corresponding Source from a network server at no charge.
c) Convey individual copies of the object code with a copy of the
written offer to provide the Corresponding Source. This
alternative is allowed only occasionally and noncommercially, and
only if you received the object code with such an offer, in accord
with subsection 6b.
d) Convey the object code by offering access from a designated
place (gratis or for a charge), and offer equivalent access to the
Corresponding Source in the same way through the same place at no
further charge. You need not require recipients to copy the
Corresponding Source along with the object code. If the place to
copy the object code is a network server, the Corresponding Source
may be on a different server (operated by you or a third party)
that supports equivalent copying facilities, provided you maintain
clear directions next to the object code saying where to find the
Corresponding Source. Regardless of what server hosts the
Corresponding Source, you remain obligated to ensure that it is
available for as long as needed to satisfy these requirements.
e) Convey the object code using peer-to-peer transmission, provided
you inform other peers where the object code and Corresponding
Source of the work are being offered to the general public at no
charge under subsection 6d.
A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.
A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling. In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage. For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product. A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.
"Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source. The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.
If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information. But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).
The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed. Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.
Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.
7. Additional Terms.
"Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law. If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.
When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it. (Additional permissions may be written to require their own
removal in certain cases when you modify the work.) You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.
Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:
a) Disclaiming warranty or limiting liability differently from the
terms of sections 15 and 16 of this License; or
b) Requiring preservation of specified reasonable legal notices or
author attributions in that material or in the Appropriate Legal
Notices displayed by works containing it; or
c) Prohibiting misrepresentation of the origin of that material, or
requiring that modified versions of such material be marked in
reasonable ways as different from the original version; or
d) Limiting the use for publicity purposes of names of licensors or
authors of the material; or
e) Declining to grant rights under trademark law for use of some
trade names, trademarks, or service marks; or
f) Requiring indemnification of licensors and authors of that
material by anyone who conveys the material (or modified versions of
it) with contractual assumptions of liability to the recipient, for
any liability that these contractual assumptions directly impose on
those licensors and authors.
All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10. If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term. If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.
If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.
Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.
8. Termination.
You may not propagate or modify a covered work except as expressly
provided under this License. Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).
However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.
Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License. If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.
9. Acceptance Not Required for Having Copies.
You are not required to accept this License in order to receive or
run a copy of the Program. Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance. However,
nothing other than this License grants you permission to propagate or
modify any covered work. These actions infringe copyright if you do
not accept this License. Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.
10. Automatic Licensing of Downstream Recipients.
Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License. You are not responsible
for enforcing compliance by third parties with this License.
An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations. If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.
You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License. For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.
11. Patents.
A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based. The
work thus licensed is called the contributor's "contributor version".
A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version. For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.
Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.
In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement). To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.
If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients. "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.
If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.
A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License. You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.
Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.
12. No Surrender of Others' Freedom.
If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all. For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.
13. Remote Network Interaction; Use with the GNU General Public License.
Notwithstanding any other provision of this License, if you modify the
Program, your modified version must prominently offer all users
interacting with it remotely through a computer network (if your version
supports such interaction) an opportunity to receive the Corresponding
Source of your version by providing access to the Corresponding Source
from a network server at no charge, through some standard or customary
means of facilitating copying of software. This Corresponding Source
shall include the Corresponding Source for any work covered by version 3
of the GNU General Public License that is incorporated pursuant to the
following paragraph.
Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU General Public License into a single
combined work, and to convey the resulting work. The terms of this
License will continue to apply to the part which is the covered work,
but the work with which it is combined will remain governed by version
3 of the GNU General Public License.
14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions of
the GNU Affero General Public License from time to time. Such new versions
will be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the
Program specifies that a certain numbered version of the GNU Affero General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation. If the Program does not specify a version number of the
GNU Affero General Public License, you may choose any version ever published
by the Free Software Foundation.
If the Program specifies that a proxy can decide which future
versions of the GNU Affero General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.
Later license versions may give you additional or different
permissions. However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.
15. Disclaimer of Warranty.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. Limitation of Liability.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.
17. Interpretation of Sections 15 and 16.
If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published
by the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
Also add information on how to contact you by electronic and paper mail.
If your software can interact with users remotely through a computer
network, you should also make sure that it provides a way for users to
get its source. For example, if your program is a web application, its
interface could display a "Source" link that leads users to an archive
of the code. There are many ways you could offer source, and different
solutions will be better for different programs; see section 13 for the
specific requirements.
You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU AGPL, see
<https://www.gnu.org/licenses/>.
================================================
FILE: README.md
================================================
<h1 align="center">Continuum</h1>
<p align="center">
<picture>
<source
width="256px"
media="(prefers-color-scheme: dark)"
srcset="assets/logo/space_alien.png"
>
<img
width="256px"
src="assets/logo/space_alien.png"
>
</picture>
</p>
<hr style="display: inline-block; width: 100%; border: 1px dotted #ff00cc;">
<p align="center" style="margin-top: -2em;">
<a href="https://discord.gg/vDuSpJEDrW">
<picture>
<source height="24px" media="(prefers-color-scheme: dark)" srcset="/assets/icons/Discord.png" />
<img height="24px" src="/assets/icons/Discord.png" />
</picture>
</a>
<a href="https://old.reddit.com/r/continuumreddit/">
<picture>
<source height="24px" media="(prefers-color-scheme: dark)" srcset="/assets/icons/Reddit.png" />
<img height="24px" src="/assets/icons/Reddit.png" />
</picture>
</a>
</p>
A Reddit client on Android written in Java. It does not have any ads and it features a clean UI and smooth browsing experience
<br>
<div align="center">
[Releases](https://github.com/cygnusx-1-org/continuum/releases)
[License](https://github.com/cygnusx-1-org/continuum/blob/master/LICENSE)
[GitHub issues](https://github.com/cygnusx-1-org/continuum/issues)
</div>
---
# Fork
This project is a fork of [Infinity for Reddit](https://github.com/Docile-Alligator/Infinity-For-Reddit).
One major enhancement is that it lets you set your own `Client ID` as a setting.
This means you don't need to recompile it each time, or to use [ReVanced Manager](https://github.com/ReVanced/revanced-manager).
# Setup
See [SETUP.md](/SETUP.md)
# FAQ
See [FAQ.md](/FAQ.md)
# Installation
You can easily install and update Continuum with [Discoverium](https://github.com/cygnusx-1-org/Discoverium/) via its search button.
<p align="left">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="assets/badges/discoverium.png" height="60">
<img alt="Get it on Discoverium" src="assets/badges/discoverium.png" height="60">
</picture>
</a>
</a>
<a href="https://github.com/cygnusx-1-org/continuum/releases/latest">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="assets/badges/github.png" height="60">
<img alt="Get it on Github" src="assets/badges/github.png" height="60">
</picture>
</a>
</p>
# About The Project
Unique features of **Continuum**:
- Ability to use your own `Client ID`.
- Ability to use your own Giphy gifs API key.
- Ability to backup your accounts.
- The max number of main page tabs has been increased to six.
- Sensible download names.
- Bug fixes and more...
<details>
<summary>Features from <b>Infinity</b></summary>
* Lazy mode: Automatic scrolling of posts enables you to enjoy amazing posts without moving your thumb.
* Browsing posts
* View comments
* Expand and collapse comments section
* Vote posts and comments
* Save posts
* Write comments
* Edit comments and delete comments
* Submit posts (text, link, image and video)
* Edit posts (mark and unmark NSFW and spoiler and edit flair) and delete posts
* See all the subscribed subreddits and followed users
* View the messages
* Get notifications of unread messages
* etc...
</details>
<p align="right">(<a href="#top">back to top</a>)</p>
# Contributing
First off, thanks for taking the time to contribute! Contributions are what makes the open source community such an amazing place to learn, inspire, and create. Any contributions you make are **greatly appreciated**.
If you have a suggestion that would make this better, please fork the repo and create a pull request.
It's better to also open an issue describing the issue you want to fix. But it is not required.
Don't forget to give the project a star! Thanks again!
1. Fork the Project
2. Create your Feature Branch from `master` (`git checkout -b feature/AmazingFeature`)
3. Commit your Changes (`git commit -m 'Add some AmazingFeature'`)
4. Push to the Branch (`git push origin feature/AmazingFeature`)
5. Open a Pull Request to the `master` Branch
Here are other ways you can help:
- [Report Bugs](https://github.com/cygnusx-1-org/continuum/issues/new?template=bug_report.md)
- [Request Features](https://github.com/cygnusx-1-org/continuum/issues/new?template=feature_request.md)
<p align="right">(<a href="#top">back to top</a>)</p>
# Related project
[Slide](https://github.com/cygnusx-1-org/Slide) is another Android [Reddit](https://www.reddit.com/) client app. It is a fork of the original project. It is also in the [Google Play Store](https://play.google.com/store/apps/details?id=me.edgan.redditslide&hl=en_US).
# License
Distributed under the AGPL-3.0 License. See <a href="https://github.com/cygnusx-1-org/continuum/blob/master/LICENSE">LICENSE</a> for more information.
<p align="right">(<a href="#top">back to top</a>)</p>
# Contact
[u/edgan](https://www.reddit.com/user/edgan) -
continuum@cygnusx-1.org (Owner)
Project Link: [https://github.com/cygnusx-1-org/continuum](https://github.com/cygnusx-1-org/continuum)
<p align="right">(<a href="#top">back to top</a>)</p>
================================================
FILE: SETUP-old.md
================================================
# Setup
## Giphy
See [here](/GIPHY.md).
## Reddit Client ID
A Reddit Client ID is needed to access Reddit from 3rd party clients.
### Reddit Client ID creation steps

1. Go to [reddit.com/prefs/apps](https://www.reddit.com/prefs/apps) and login if
necessary
2. Click `create another app...`. Do not re-use any Client ID for any app other
than Continuum.
3. Set the name to Continuum
4. Set the type to `installed app`
5. Set redirect uri to `continuum://localhost`. If the redirect uri is set
incorrectly it won't work.
6. Complete the `reCAPTCHA`
7. Click `create app`
8. Copy the Client ID of your newly created app. It is recommended to save it
in the notes of your entry for Reddit in your password manager.

> [!NOTE]
>
> This is just an example Client ID. It was created and deleted. Keep
> yours private.
### Adding a Reddit Client ID to Continuum
The method of adding a Client ID to Continuum depends on whether this is the
first time the app is being set up.
**Initial setup:**
1. Open Continuum and press `GET STARTED`
2. Select your theme colors, if you like, and press `DONE`
3. Enter your Client ID and press `OK`
4. Wait for Continuum to restart
**Changing the Client ID:**
1. Go to `Settings in the side bar`
<img src="/assets/screenshots/settings.png" alt="drawing" width="189.5" height="400" style="object-fit: contain;"/>
2. Select `Reddit API Client ID`
<img src="/assets/screenshots/continuum_client_id1-old.png" alt="drawing" width="189.5" height="400" style="object-fit: contain;"/>
3. Press `Reddit API Client ID`
<img src="/assets/screenshots/continuum_client_id2-old.png" alt="drawing" width="189.5" height="400" style="object-fit: contain;"/>
4. Enter your Client ID
<img src="/assets/screenshots/enter_client_id-old.png" alt="drawing" width="189.5" height="400" style="object-fit: contain;"/>
It is best to copy and paste it.
5. Press `OK` and Wait for Continuum to restart
# Common errors
The most likely cause for this is the `redirect uri` is set incorrectly. The
big tell is if you can view Reddit in guest mode, aka without logging in.
## Correct username and password does not work
Continuum depends on
[Android System Webview](https://play.google.com/store/apps/details?id=com.google.android.webview)
by default for logging into Reddit. So if having the login issue, your best
course of action would be to upgraded to the latest version of Android
possible, and then the latest version of
[Android System Webview](https://play.google.com/store/apps/details?id=com.google.android.webview)
possible.
Reddit's login password now requires
[XHR](https://en.wikipedia.org/wiki/XMLHttpRequest) to work. Older versions of
[Android System Webview](https://play.google.com/store/apps/details?id=com.google.android.webview)
don't support [XHR](https://en.wikipedia.org/wiki/XMLHttpRequest).
The current and known good version of
[Android System Webview](https://play.google.com/store/apps/details?id=com.google.android.webview)
is `131.0.6778.135`.
### WebView updating
Updating
[Android System Webview](https://play.google.com/store/apps/details?id=com.google.android.webview)
can be tricky. You likely can't search and see it in the
[Google Play Store](https://play.google.com/store/games) app on your phone.
The best way is to find the app in the `Apps` section of `Settings`. The search
box in the top right can make it easier to find in the long list of apps. Once
you select
[Android System Webview](https://play.google.com/store/apps/details?id=com.google.android.webview)
go to the bottom. You can see your version. Click on `App details`. This will
take you directly to
[Android System Webview](https://play.google.com/store/apps/details?id=com.google.android.webview)
listing in the [Google Play Store](https://play.google.com/store/games) app. If
there is an update available it will be shown.
### Alternative versions of WebView
There are
[Dev](https://play.google.com/store/apps/details?id=com.google.android.webview.dev),
[Beta](https://play.google.com/store/apps/details?id=com.google.android.webview.beta),
and
[Canary](https://play.google.com/store/apps/details?id=com.google.android.webview.canary)
versions of
[Android System Webview](https://play.google.com/store/apps/details?id=com.google.android.webview).
These aren't recommended, but under rare circumstances they might be useful to
get a newer version of
[Android System Webview](https://play.google.com/store/apps/details?id=com.google.android.webview).
Once installed you need to enable
[Developer options](https://developer.android.com/studio/debug/dev-options),
you can go to them in `Settings`. Within is an option called
`WebView implementation` where you can pick which `WebView` is active.
================================================
FILE: SETUP.md
================================================
# Setup
## Setup for older versions
See [SETUP-old.md](/SETUP-old.md)
## Giphy
See [here](/GIPHY.md).
## Reddit Client ID
A Reddit Client ID is needed to access Reddit from 3rd party clients.
### Reddit Client ID creation steps
> [!IMPORTANT]
>
> Reddit has recently changed the guidelines to create api key
> [see here](https://www.reddit.com/r/redditdev/comments/1oug31u/introducing_the_responsible_builder_policy_new/)
> we are not sure how it wll affect the app in the future but currently it seems most users are unable to create new api keys

1. Go to [reddit.com/prefs/apps](https://www.reddit.com/prefs/apps) and login if
necessary
2. Click `create another app...`. Do not re-use any Client ID for any app other
than Continuum.
3. Set the name to Continuum
4. Set the type to `installed app`
5. Set redirect uri to `continuum://localhost`. If the redirect uri is set
incorrectly it won't work.
6. Complete the `reCAPTCHA`
7. Click `create app`
8. Copy the Client ID of your newly created app. It is recommended to save it
in the notes of your entry for Reddit in your password manager.

> [!NOTE]
>
> This is just an example Client ID. It was created and deleted. Keep
> yours private.
>
> *It is reccomended to create the Client ID using a non banned account.*
### Adding a Reddit Client ID to Continuum
The method of adding a Client ID to Continuum depends on whether this is the
first time the app is being set up.
**Initial setup:**
1. Open Continuum and press `GET STARTED`
2. Select your theme colors, if you like, and press `DONE`
3. Enter your Client ID and press `OK`
4. Wait for Continuum to restart
**Changing the Client ID:**
1. Go to `Settings in the side bar`
<img src="/assets/screenshots/settings.png" alt="drawing" width="189.5" height="400" style="object-fit: contain;"/>
2. Select `Reddit API Client ID`
<img src="/assets/screenshots/continuum_client_id1.png" alt="drawing" width="189.5" height="400" style="object-fit: contain;"/>
3. Press `Reddit API Client ID`
<img src="/assets/screenshots/continuum_client_id2.png" alt="drawing" width="189.5" height="400" style="object-fit: contain;"/>
4. Enter your `Client ID`
<img src="/assets/screenshots/enter_client_id.png" alt="drawing" width="189.5" height="400" style="object-fit: contain;"/>
It is best to copy and paste it.
6. Press `OK` and Wait for Continuum to restart
> [!NOTE]
>
> *This is only needed once, even if you have multiple accounts.*
# Common errors
> [!NOTE]
>
> *The most likely cause for this is the `redirect uri` is set incorrectly. The
> big tell is if you can view Reddit in guest mode, aka without logging in.*
### Correct username and password does not work
Continuum depends on
[Android System Webview](https://play.google.com/store/apps/details?id=com.google.android.webview)
by default for logging into Reddit. So if having the login issue, your best
course of action would be to upgraded to the latest version of Android
possible, and then the latest version of
[Android System Webview](https://play.google.com/store/apps/details?id=com.google.android.webview)
possible.
Reddit's login password now requires
[XHR](https://en.wikipedia.org/wiki/XMLHttpRequest) to work. Older versions of
[Android System Webview](https://play.google.com/store/apps/details?id=com.google.android.webview)
don't support [XHR](https://en.wikipedia.org/wiki/XMLHttpRequest).
The current and known good version of
[Android System Webview](https://play.google.com/store/apps/details?id=com.google.android.webview)
is `131.0.6778.135`.
#### WebView updating
Updating
[Android System Webview](https://play.google.com/store/apps/details?id=com.google.android.webview)
can be tricky. You likely can't search and see it in the
[Google Play Store](https://play.google.com/store/games) app on your phone.
The best way is to find the app in the `Apps` section of `Settings`. The search
box in the top right can make it easier to find in the long list of apps. Once
you select
[Android System Webview](https://play.google.com/store/apps/details?id=com.google.android.webview)
go to the bottom. You can see your version. Click on `App details`. This will
take you directly to
[Android System Webview](https://play.google.com/store/apps/details?id=com.google.android.webview)
listing in the [Google Play Store](https://play.google.com/store/games) app. If
there is an update available it will be shown.
#### Alternative versions of WebView
There are
[Dev](https://play.google.com/store/apps/details?id=com.google.android.webview.dev),
[Beta](https://play.google.com/store/apps/details?id=com.google.android.webview.beta),
and
[Canary](https://play.google.com/store/apps/details?id=com.google.android.webview.canary)
versions of
[Android System Webview](https://play.google.com/store/apps/details?id=com.google.android.webview).
These aren't recommended, but under rare circumstances they might be useful to
get a newer version of
[Android System Webview](https://play.google.com/store/apps/details?id=com.google.android.webview).
Once installed you need to enable
[Developer options](https://developer.android.com/studio/debug/dev-options),
you can go to them in `Settings`. Within is an option called
`WebView implementation` where you can pick which `WebView` is active.
================================================
FILE: TESTS.md
================================================
# Tests
The tests were started by [manunia](https://github.com/manunia), and are written in [Kotlin](https://en.wikipedia.org/wiki/Kotlin_(programming_language)) with the [Kaspresso](https://github.com/KasperskyLab/Kaspresso) framework. Kaspresso is based on [Espresso](https://developer.android.com/training/testing/espresso) and [UI Automator](https://developer.android.com/training/testing/ui-automator).
## Setup
test.properties:
```
REDDIT_CLIENT_ID=4vj5qn9RkC4i3WLv5OsuFb
```
## Usage
This has been tested with a real phone connected via a USB cable. I needs to be unlocked and USB debugging allowed. It will very likely work with an emulator. It installs a debug build of `Continuum` as the first step. Then it runs the tests, and then uninstalls the debug build of `Continuum`. This means it will replace your "normal" debug build, and wipe all it's settings. It also means tests need to be written to expect a fresh install each time. This means dealing with the `client ID`, system dialogs like permissions, etc.
```
./gradlew connectedAndroidTest
```
### Example output
```
> Task :app:connectedDebugAndroidTest
Starting 8 tests on Pixel 8 Pro - 16
Pixel 8 Pro - 16 Tests 0/8 completed. (0 skipped) (0 failed)
Pixel 8 Pro - 16 Tests 1/8 completed. (0 skipped) (0 failed)
Pixel 8 Pro - 16 Tests 2/8 completed. (0 skipped) (0 failed)
Pixel 8 Pro - 16 Tests 3/8 completed. (0 skipped) (0 failed)
Pixel 8 Pro - 16 Tests 4/8 completed. (0 skipped) (0 failed)
Pixel 8 Pro - 16 Tests 5/8 completed. (0 skipped) (0 failed)
Pixel 8 Pro - 16 Tests 6/8 completed. (0 skipped) (0 failed)
Pixel 8 Pro - 16 Tests 7/8 completed. (0 skipped) (0 failed)
Finished 8 tests on Pixel 8 Pro - 16
BUILD SUCCESSFUL in 2m 19s
68 actionable tasks: 1 executed, 67 up-to-date
```
## Lists of tests
* APIKeysTest.kt
- addRedditClientIdTest, tests the ability to enter a `client ID`
* LoginTest.kt
- loginTest, tests that the `Email or username` field is avaliable in the login screen
* MainTest.kt
- popularPostFilterTest, tests post filters by toggling the `Text` and `Link` off
* SettingsTest.kt
- setFontTest, tests setting a font
- disableNotificationTest, tests the ability to disable notifications
- setLightThemeTest, tests the ability to switch to the light theme
- setDarkThemeTest, tests the ability to switch to the dark theme
================================================
FILE: app/build.gradle
================================================
plugins {
id 'com.android.application'
id 'com.gladed.androidgitversion' version '0.4.14'
id 'com.github.ben-manes.versions' version '0.42.0'
id 'com.github.breadmoirai.github-release' version '2.5.2'
id 'com.diffplug.spotless' version '7.0.2'
id 'org.jetbrains.kotlin.android'
id("io.qameta.allure") version "2.12.0"
id 'org.jetbrains.kotlin.kapt'
id 'kotlin-parcelize'
id("org.jetbrains.kotlin.plugin.compose") version "2.2.0"
}
def allureVersion = "2.16.0"
def aspectJVersion = '1.9.21'
configurations {
agent {
canBeResolved = true
canBeConsumed = true
}
all {
exclude module: 'httpclient'
}
}
android {
def keystorePropertiesFile = rootProject.file("keystore.properties")
if (keystorePropertiesFile.exists()) {
def keystoreProperties = new Properties()
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
signingConfigs {
release {
keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
storeFile file(keystoreProperties['storeFile'])
storePassword keystoreProperties['storePassword']
}
}
} else {
println("Warning: keystore.properties file not found. Skipping signing configuration.")
}
def testPropertiesFile = rootProject.file("test.properties")
def testProperties = new Properties()
if (testPropertiesFile.exists()) {
testProperties.load(new FileInputStream(testPropertiesFile))
} else {
println("Warning: test.properties file not found. Using default test values.")
}
applicationVariants.all { variant ->
variant.outputs.all { output ->
def appName = "continuum"
def baseAbiVersion = output.getFilter(com.android.build.OutputFile.ABI)
def buildType = variant.buildType
def versionCode = variant.versionCode
def versionName = variant.versionName
def artifactName = "${appName}-${versionName}(${versionCode})"
if (buildType == "debug") {
artifactName = "${appName}-${buildType}-${baseAbiVersion}-${versionName}"
} else {
artifactName = "${appName}-${baseAbiVersion}-${versionName}"
}
// Assign the apk filename
output.outputFileName = "${artifactName}.apk"
}
}
compileSdk 36
defaultConfig {
applicationId "org.cygnusx1.continuum"
javaCompileOptions {
annotationProcessorOptions {
arguments = [eventBusIndex: 'ml.docilealligator.infinityforreddit.EventBusIndex']
}
}
minSdk 21
targetSdk 35
versionCode 213
versionName "8.1.4.5"
testInstrumentationRunner "com.kaspersky.kaspresso.runner.KaspressoRunner"
testInstrumentationRunnerArguments.put("REDDIT_CLIENT_ID", testProperties['REDDIT_CLIENT_ID'] ?: 'test_reddit_client_id_default')
}
buildFeatures {
buildConfig = true
viewBinding = true
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
if (keystorePropertiesFile.exists()) {
signingConfig = signingConfigs.release
} else {
println("Warning: keystore.properties file not found. Skipping signing configuration for release.")
}
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
resValue "string", "app_name", "Continuum"
}
minifiedRelease {
initWith buildTypes.release
zipAlignEnabled true
minifyEnabled true
shrinkResources = true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
debug {
applicationIdSuffix '.debug'
versionNameSuffix '-debug'
resValue "string", "app_name", "Continuum Debug"
}
}
bundle {
language {
enableSplit = false
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_21
targetCompatibility JavaVersion.VERSION_21
}
testOptions {
animationsDisabled = true
//execution 'ANDROIDX_TEST_ORCHESTRATOR'
unitTests.returnDefaultValues = true
unitTests.all {
useJUnitPlatform()
}
}
buildFeatures {
buildConfig = true
viewBinding = true
compose = true
}
lint {
baseline = file("lint-baseline.xml")
disable 'MissingTranslation'
}
namespace = 'ml.docilealligator.infinityforreddit'
splits {
abi {
enable = true
reset()
include 'armeabi-v7a', 'arm64-v8a'
universalApk = false // Set to true if you also want a universal APK
}
}
composeOptions {
kotlinCompilerExtensionVersion = "1.5.14"
}
kotlinOptions {
jvmTarget = '21'
}
}
def githubPropertiesFile = rootProject.file("github.properties")
if (githubPropertiesFile.exists()) {
def githubProperties = new Properties()
githubProperties.load(new FileInputStream(githubPropertiesFile))
githubRelease {
def releaseNotes = System.getenv("RELEASE_NOTES") ?: "Automated release of version ${android.defaultConfig.versionName ?: "default-version"}"
token = githubProperties["githubToken"]
owner = "cygnusx-1-org"
repo = "continuum"
tagName = android.defaultConfig.versionName ?: "default-version"
targetCommitish = "master"
releaseName = "Release ${android.defaultConfig.versionName ?: "default-version"}"
body = "$releaseNotes"
draft = false
prerelease = false
overwrite = false
// Dynamically set releaseAssets by searching the APK path
def apkFiles = fileTree(dir: "build/outputs/apk/release/", include: "*.apk").files.toList()
if (apkFiles.isEmpty()) {
println("Warning: No APK files found in the directory 'build/outputs/apk/release/'.")
} else {
releaseAssets = apkFiles
}
}
} else {
println("Warning: github.properties file not found. Skipping GitHub release configuration.")
}
dependencies {
/** AndroidX **/
implementation 'androidx.appcompat:appcompat:1.7.1'
implementation 'androidx.biometric:biometric:1.2.0-alpha05'
implementation 'androidx.browser:browser:1.9.0'
implementation 'androidx.cardview:cardview:1.0.0'
implementation 'androidx.constraintlayout:constraintlayout:2.2.1'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'androidx.activity:activity:1.10.1'
implementation 'androidx.fragment:fragment:1.8.8'
implementation 'androidx.core:core-ktx:1.17.0'
def lifecycleVersion = "2.9.4"
implementation "androidx.lifecycle:lifecycle-common-java8:$lifecycleVersion"
implementation "androidx.lifecycle:lifecycle-livedata:$lifecycleVersion"
implementation "androidx.lifecycle:lifecycle-process:$lifecycleVersion"
implementation "androidx.lifecycle:lifecycle-runtime:$lifecycleVersion"
implementation "androidx.lifecycle:lifecycle-viewmodel:$lifecycleVersion"
def pagingVersion = '3.3.6'
implementation "androidx.paging:paging-runtime:$pagingVersion"
implementation "androidx.paging:paging-guava:$pagingVersion"
implementation 'androidx.preference:preference:1.2.1'
implementation 'androidx.recyclerview:recyclerview:1.4.0'
def roomVersion = "2.7.2"
implementation "androidx.room:room-runtime:$roomVersion"
kapt "androidx.room:room-compiler:$roomVersion"
implementation "androidx.room:room-guava:$roomVersion"
implementation "androidx.room:room-ktx:$roomVersion"
implementation 'androidx.viewpager2:viewpager2:1.1.0'
implementation 'androidx.work:work-runtime:2.9.0'
implementation 'com.google.android.material:material:1.14.0-alpha01'
implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.2.0-beta01"
/** ExoPlayer **/
def media3_version = "1.8.0"
implementation "androidx.media3:media3-exoplayer:$media3_version"
implementation "androidx.media3:media3-exoplayer-dash:$media3_version"
implementation "androidx.media3:media3-exoplayer-hls:$media3_version"
implementation "androidx.media3:media3-ui:$media3_version"
implementation "androidx.media3:media3-exoplayer-smoothstreaming:$media3_version"
implementation "androidx.media3:media3-datasource-okhttp:$media3_version"
/** Third-party **/
/**** Backend logic ****/
implementation 'javax.annotation:javax.annotation-api:1.3.2'
implementation 'com.google.code.findbugs:jsr305:3.0.2'
// HTTP clients
def retrofitVersion = '3.0.0'
implementation "com.squareup.retrofit2:retrofit:$retrofitVersion"
implementation "com.squareup.retrofit2:converter-scalars:$retrofitVersion"
implementation "com.squareup.retrofit2:adapter-guava:$retrofitVersion"
implementation 'com.squareup.okhttp3:okhttp:5.3.0'
// Dependency injection
def daggerVersion = '2.59'
implementation "com.google.dagger:dagger:$daggerVersion"
kapt "com.google.dagger:dagger-compiler:$daggerVersion"
// Binding
compileOnly 'com.android.databinding:viewbinding:8.5.1'
// Events
def eventbusVersion = "3.3.1"
implementation "org.greenrobot:eventbus:$eventbusVersion"
kapt "org.greenrobot:eventbus-annotation-processor:$eventbusVersion"
// TransactionTooLargeException avoidance
implementation 'com.github.livefront:bridge:v2.0.2'
// Bundle-saving without boilerplate
// NOTE: Deprecated
def stateVersion = "1.4.1"
implementation "com.evernote:android-state:$stateVersion"
kapt "com.evernote:android-state-processor:$stateVersion"
// Object to JSON
// NOTE: Replace with Squareup's Moshi?
implementation 'com.google.code.gson:gson:2.11.0'
// Java library for zip files and streams
implementation 'net.lingala.zip4j:zip4j:2.11.5'
// IO functionality
implementation 'commons-io:commons-io:2.16.1'
// Crash reporting
implementation 'com.github.FunkyMuse:Crashy:1.2.0'
/**** User Interface (frontend) ****/
//Image loading
def glideVersion = "5.0.5"
implementation "com.github.bumptech.glide:glide:$glideVersion"
kapt "com.github.bumptech.glide:compiler:$glideVersion"
implementation 'jp.wasabeef:glide-transformations:4.3.0'
implementation "com.github.bumptech.glide:compose:1.0.0-beta08"
implementation 'com.github.santalu:aspect-ratio-imageview:1.0.9'
implementation 'pl.droidsonroids.gif:android-gif-drawable:1.2.29'
// APNG animation support for profile avatars
implementation 'com.github.penfeizhou.android.animation:glide-plugin:3.0.5'
def bivVersion = "1.8.1"
implementation "com.github.piasy:BigImageViewer:$bivVersion"
implementation "com.github.piasy:GlideImageLoader:$bivVersion"
// Markdown
def markwonVersion = "4.6.2"
implementation "io.noties.markwon:core:$markwonVersion"
implementation "io.noties.markwon:ext-strikethrough:$markwonVersion"
implementation "io.noties.markwon:linkify:$markwonVersion"
implementation "io.noties.markwon:recycler-table:$markwonVersion"
implementation "io.noties.markwon:simple-ext:$markwonVersion"
implementation "io.noties.markwon:inline-parser:$markwonVersion"
implementation "io.noties.markwon:image-glide:$markwonVersion"
implementation 'com.atlassian.commonmark:commonmark-ext-gfm-tables:0.14.0'
implementation 'me.saket:better-link-movement-method:2.2.0'
// Animations
implementation 'com.airbnb.android:lottie:6.4.1'
// Loading ProgressBar
implementation 'com.lsjwzh:materialloadingprogressbar:0.5.8-RELEASE'
// Customizable TextView
implementation files("Modules/customtextview-2.1.aar")
// Dismiss gesturing
implementation 'app.futured.hauler:hauler:5.0.0'
// FlowLayout (auto-spacing)
implementation 'com.nex3z:flow-layout:1.3.3'
// RecyclerView fast scrolling
implementation 'me.zhanghai.android.fastscroll:library:1.3.0'
implementation 'com.otaliastudios:zoomlayout:1.9.0'
implementation 'androidx.core:core-splashscreen:1.0.1'
implementation 'com.giphy.sdk:ui:2.3.18'
// QR code scanner
implementation 'com.journeyapps:zxing-android-embedded:4.3.0'
implementation 'com.github.alexzhirkevich:custom-qr-generator:2.0.0-alpha01'
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.1.5'
// Compose
def composeBom = platform('androidx.compose:compose-bom:2025.11.01')
implementation composeBom
androidTestImplementation composeBom
implementation 'androidx.compose.material3:material3:1.5.0-alpha01'
implementation 'androidx.compose.ui:ui-tooling-preview'
debugImplementation 'androidx.compose.ui:ui-tooling'
//implementation 'androidx.compose.material3.adaptive:adaptive'
implementation 'androidx.activity:activity-compose:1.10.1'
implementation 'androidx.lifecycle:lifecycle-viewmodel-compose:2.9.4'
implementation 'androidx.compose.runtime:runtime-livedata'
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.9.0'
/**** Builds and flavors ****/
// debugImplementation because LeakCanary should only run in debug builds.
//debugImplementation 'com.squareup.leakcanary:leakcanary-android:x.y'
testImplementation platform("io.qameta.allure:allure-bom:$allureVersion")
testImplementation "io.qameta.allure:allure-junit5"
agent "org.aspectj:aspectjweaver:$aspectJVersion"
androidTestImplementation "androidx.test.ext:junit:1.0.0"
androidTestImplementation "androidx.test:rules:1.5.0"
androidTestImplementation "androidx.test:runner:1.5.0"
androidTestImplementation 'com.kaspersky.android-components:kaspresso:1.5.3'
androidTestUtil "androidx.test:orchestrator:1.5.1"
// Allure support
androidTestImplementation "com.kaspersky.android-components:kaspresso-allure-support:1.5.3"
}
spotless {
java {
target '**/*.java'
removeUnusedImports()
trimTrailingWhitespace()
leadingTabsToSpaces(4)
}
format 'misc', {
target '**/*.gradle', '**/*.md', '**/.gitignore'
leadingTabsToSpaces(4)
trimTrailingWhitespace()
}
format 'xml', {
target '**/*.xml'
leadingTabsToSpaces(4)
trimTrailingWhitespace()
}
}
================================================
FILE: app/proguard-rules.pro
================================================
# Uncomment this to preserve the line number information for
# debugging stack traces.
-keepattributes SourceFile,LineNumberTable
# If you keep the line number information, uncomment this to
# hide the original source file name.
-renamesourcefileattribute SourceFile
## Preferences reflection
-keep class * extends androidx.preference.PreferenceFragmentCompat
-keep public class ml.docilealligator.infinityforreddit.settings.**
## EventBus Rules
-keepattributes *Annotation*
-keepclassmembers class * {
@org.greenrobot.eventbus.Subscribe <methods>;
}
-keep enum org.greenrobot.eventbus.ThreadMode { *; }
# And if you use AsyncExecutor:
-keepclassmembers class * extends org.greenrobot.eventbus.util.ThrowableFailureEvent {
<init>(java.lang.Throwable);
}
-keepclassmembernames class com.google.android.exoplayer2.ui.PlayerControlView {
java.lang.Runnable hideAction;
void hideAfterTimeout();
}
# Retrofit does reflection on generic parameters. InnerClasses is required to use Signature and
# EnclosingMethod is required to use InnerClasses.
-keepattributes Signature, InnerClasses, EnclosingMethod
# Retrofit does reflection on method and parameter annotations.
-keepattributes RuntimeVisibleAnnotations, RuntimeVisibleParameterAnnotations
# Retain service method parameters when optimizing.
-keepclassmembers,allowshrinking,allowobfuscation interface * {
@retrofit2.http.* <methods>;
}
# Ignore annotation used for build tooling.
-dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement
# Ignore JSR 305 annotations for embedding nullability information.
-dontwarn javax.annotation.**
# With R8 full mode, it sees no subtypes of Retrofit interfaces since they are created with a Proxy
# and replaces all potential values with null. Explicitly keeping the interfaces prevents this.
-if interface * { @retrofit2.http.* <methods>; }
-keep,allowobfuscation interface <1>
# Gson uses generic type information stored in a class file when working with fields. Proguard
# removes such information by default, so configure it to keep all of it.
-keepattributes Signature
# For using GSON @Expose annotation
-keepattributes *Annotation*
# Gson specific classes
-dontwarn sun.misc.**
#-keep class com.google.gson.stream.** { *; }
# Application classes that will be serialized/deserialized over Gson
-keep class ml.docilealligator.infinityforreddit.customtheme.CustomTheme { <fields>; }
-keep class ml.docilealligator.infinityforreddit.multireddit.MultiRedditJSONModel { <fields>; }
-keep class ml.docilealligator.infinityforreddit.multireddit.SubredditInMultiReddit { <fields>; }
-keep class ml.docilealligator.infinityforreddit.subscribedsubreddit.SubscribedSubredditData { <fields>; }
-keep class ml.docilealligator.infinityforreddit.subscribeduser.SubscribedUserData { <fields>; }
-keep class ml.docilealligator.infinityforreddit.multireddit.MultiReddit { <fields>; }
-keep class ml.docilealligator.infinityforreddit.multireddit.AnonymousMultiredditSubreddit { <fields>; }
-keep class ml.docilealligator.infinityforreddit.postfilter.PostFilter { <fields>; }
-keep class ml.docilealligator.infinityforreddit.postfilter.PostFilterUsage { <fields>; }
-keep class ml.docilealligator.infinityforreddit.commentfilter.CommentFilter { <fields>; }
-keep class ml.docilealligator.infinityforreddit.commentfilter.CommentFilterUsage { <fields>; }
# Prevent proguard from stripping interface information from TypeAdapter, TypeAdapterFactory,
# JsonSerializer, JsonDeserializer instances (so they can be used in @JsonAdapter)
-keep class * extends com.google.gson.TypeAdapter
-keep class * implements com.google.gson.TypeAdapterFactory
-keep class * implements com.google.gson.JsonSerializer
-keep class * implements com.google.gson.JsonDeserializer
# Prevent R8 from leaving Data object members always null
-keepclassmembers,allowobfuscation class * {
@com.google.gson.annotations.SerializedName <fields>;
}
-dontwarn kotlinx.parcelize.Parcelize
================================================
FILE: app/src/androidTest/kotlin/ru/otus/pandina/screens/CustomizePostFilterScreen.kt
================================================
package ru.otus.pandina.screens
import com.kaspersky.kaspresso.screens.KScreen
import io.github.kakaocup.kakao.edit.KEditText
import io.github.kakaocup.kakao.switch.KSwitch
import io.github.kakaocup.kakao.text.KButton
import io.github.kakaocup.kakao.text.KTextView
import io.github.kakaocup.kakao.toolbar.KToolbar
import ml.docilealligator.infinityforreddit.R
object CustomizePostFilterScreen : KScreen<CustomizePostFilterScreen>() {
val toolBar = KToolbar{withId(R.id.toolbar_customize_post_filter_activity)}
val customizeFilterEditText = KEditText { withId(R.id.name_text_input_edit_text_customize_post_filter_activity)}
val textFilterTextView = KTextView { withId(R.id.post_type_text_text_view_customize_post_filter_activity)}
val textFilterCheckBox = KSwitch { withId(R.id.post_type_text_switch_customize_post_filter_activity)}
val linkFilterTextView = KTextView { withId(R.id.post_type_link_text_view_customize_post_filter_activity)}
val linkFilterCheckBox = KSwitch { withId(R.id.post_type_link_switch_customize_post_filter_activity)}
val onlyNsfwTextView = KTextView { withId(R.id.only_nsfw_text_view_customize_post_filter_activity)}
val saveButton = KButton { withId(R.id.action_save_customize_post_filter_activity)}
override val layoutId: Int? = null
override val viewClass: Class<*>? = null
}
================================================
FILE: app/src/androidTest/kotlin/ru/otus/pandina/screens/FilteredPostsScreen.kt
================================================
package ru.otus.pandina.screens
import android.view.View
import com.kaspersky.kaspresso.screens.KScreen
import io.github.kakaocup.kakao.image.KImageView
import io.github.kakaocup.kakao.recycler.KRecyclerItem
import io.github.kakaocup.kakao.recycler.KRecyclerView
import io.github.kakaocup.kakao.screen.Screen
import io.github.kakaocup.kakao.text.KButton
import io.github.kakaocup.kakao.text.KTextView
import ml.docilealligator.infinityforreddit.R
import ml.docilealligator.infinityforreddit.activities.FilteredPostsActivity
import org.hamcrest.Matcher
object FilteredPostsScreen : KScreen<FilteredPostsScreen>() {
val filterButton = KButton { withId(R.id.fab_filtered_thing_activity) }
val moreOptions = KImageView { withContentDescription("More options")}
val changePostLayout = KTextView { withText("Change Post Layout")}
val postFragmentList = KRecyclerView(
builder = { withId(R.id.recycler_view_post_fragment) },
itemTypeBuilder = { itemType(::PostFragmentItem) }
)
class PostFragmentItem(parent: Matcher<View>) : KRecyclerItem<PostFragmentItem>(parent) {
// Try most common title views - if one fails, the test framework will try others
val title = KTextView(parent) { withId(R.id.title_text_view_item_post_with_preview) }
val titleGallery = KTextView(parent) { withId(R.id.title_text_view_item_post_gallery_type) }
val image = KImageView(parent) { withId(R.id.image_view_item_post_with_preview) }
val galleryImage = KImageView(parent) { withResourceName("image_view_item_post_gallery")}
}
override val layoutId: Int? = R.layout.activity_filtered_thing
override val viewClass: Class<*>? = FilteredPostsActivity::class.java
}
================================================
FILE: app/src/androidTest/kotlin/ru/otus/pandina/screens/MainScreen.kt
================================================
package ru.otus.pandina.screens
import io.github.kakaocup.kakao.screen.Screen
import io.github.kakaocup.kakao.tabs.KTabLayout
import io.github.kakaocup.kakao.text.KButton
import ml.docilealligator.infinityforreddit.R
object MainScreen : Screen<MainScreen>() {
val button = KButton { withId(R.id.fab_main_activity) }
val tabLayout = KTabLayout { withId(R.id.tab_layout_main_activity) }
val navButton = KButton { withContentDescription("Open navigation drawer") }
}
================================================
FILE: app/src/androidTest/kotlin/ru/otus/pandina/screens/UserAgreementFragment.kt
================================================
package ru.otus.pandina.screens
import io.github.kakaocup.kakao.screen.Screen
import io.github.kakaocup.kakao.text.KButton
import io.github.kakaocup.kakao.text.KTextView
import ml.docilealligator.infinityforreddit.R
object UserAgreementFragment : Screen<UserAgreementFragment>() {
val alertTitle = KTextView { withId(R.id.alertTitle)}
val dontAgreeButton = KButton { withText("Don't Agree")}
val agreeButton = KButton { withText("Agree")}
}
================================================
FILE: app/src/androidTest/kotlin/ru/otus/pandina/screens/navigation/LoginScreen.kt
================================================
package ru.otus.pandina.screens.navigation
import io.github.kakaocup.kakao.edit.KEditText
import io.github.kakaocup.kakao.screen.Screen
import io.github.kakaocup.kakao.text.KButton
import io.github.kakaocup.kakao.web.KWebView
import ml.docilealligator.infinityforreddit.R
object LoginScreen : Screen<LoginScreen>() {
val userNameField = KEditText { withText("Username")}
val loginPasswordField = KEditText { withResourceName("loginPassword")}
val loginButton = KButton { withText("Log In")}
val webView = KWebView { withId(R.id.webview_login_activity)}
}
================================================
FILE: app/src/androidTest/kotlin/ru/otus/pandina/screens/navigation/NavigationViewLayout.kt
================================================
package ru.otus.pandina.screens.navigation
import android.view.View
import io.github.kakaocup.kakao.image.KImageView
import io.github.kakaocup.kakao.recycler.KRecyclerItem
import io.github.kakaocup.kakao.recycler.KRecyclerView
import io.github.kakaocup.kakao.screen.Screen
import io.github.kakaocup.kakao.text.KTextView
import ml.docilealligator.infinityforreddit.R
import org.hamcrest.Matcher
object NavigationViewLayout : Screen<NavigationViewLayout>() {
val navBanner = KImageView{withId(R.id.banner_image_view_nav_header_main)}
val accountNameTextView = KTextView { withId(R.id.name_text_view_nav_header_main) }
val karmaTextView = KTextView { withId(R.id.karma_text_view_nav_header_main) }
val accountSwitcher = KImageView { withId(R.id.account_switcher_image_view_nav_header_main) }
val addAccountButton = KImageView { withId(R.id.image_view_item_nav_drawer_menu_item) }
val addAccountTextView = KTextView { withId(R.id.text_view_item_nav_drawer_menu_item) }
val subscriptions = KTextView { withText("Subscriptions") }
val multireddit = KTextView { withText("Multireddit") }
val historyIcon = KImageView { withId(R.id.image_view_item_nav_drawer_menu_item) }
val trending = KTextView { withText("Trending") }
val darkThemeIcon = KImageView { withDrawable(R.drawable.ic_dark_theme_24dp) }
val darkTheme = KTextView { withText("Dark Theme") }
val lightThemeIcon = KImageView { withDrawable(R.drawable.ic_light_theme_24dp) }
val lightTheme = KTextView { withText("Light Theme") }
val settings = KTextView { withText("Settings") }
val nawDrawerRecyclerView = KRecyclerView(
builder = {withId(R.id.nav_drawer_recycler_view_main_activity)},
itemTypeBuilder = {itemType(NavigationViewLayout::NawDrawerRecyclerItem)}
)
class NawDrawerRecyclerItem(parent : Matcher<View>) : KRecyclerItem<NawDrawerRecyclerItem>(parent) {
}
}
================================================
FILE: app/src/androidTest/kotlin/ru/otus/pandina/screens/navigation/settings/ActionPanel.kt
================================================
package ru.otus.pandina.screens.navigation.settings
import io.github.kakaocup.kakao.common.views.KView
import io.github.kakaocup.kakao.screen.Screen
import io.github.kakaocup.kakao.text.KButton
import io.github.kakaocup.kakao.text.KTextView
import ml.docilealligator.infinityforreddit.R
object ActionPanel : Screen<ActionPanel>() {
val alertTitle = KTextView { withId(R.id.alertTitle)}
val list = KView {
withId(R.id.select_dialog_listview)
}
val cancelButton = KButton { withText("Cancel")}
fun getItem(itm : String) = KTextView {
withId(R.id.select_dialog_listview)
withDescendant {
withText(itm)
}
}.click()
}
================================================
FILE: app/src/androidTest/kotlin/ru/otus/pandina/screens/navigation/settings/SettingsScreen.kt
================================================
package ru.otus.pandina.screens.navigation.settings
import io.github.kakaocup.kakao.screen.Screen
import io.github.kakaocup.kakao.text.KTextView
object SettingsScreen : Screen<SettingsScreen>() {
val screenTittle = KTextView { withText("Settings")}
val apiKeys = KTextView { withText("API Keys")}
val notification = KTextView { withText("Notification")}
val interfaceSetting = KTextView { withText("Interface")}
val theme = KTextView { withText("Theme")}
val gesturesAndButtons = KTextView {withText("Gestures & Buttons")}
val video = KTextView {withText("Video")}
val lazyModeInterval = KTextView{withText("Lazy Mode Interval")}
val summary = KTextView{withText("2.5s")}
val downloadLocation = KTextView{withText("Download Location")}
val dataSavingMode = KTextView { withText("Data Saving Mode")}
val nsfwAndSpoiler = KTextView {withText("NSFW & Spoiler")}
val postHistory = KTextView { withText("Post History")}
val postFilter = KTextView { withText("Post Filter")}
val sortType = KTextView { withText("Sort Type")}
val miscellaneous = KTextView { withText("Miscellaneous")}
val advanced = KTextView { withText("Advanced")}
val about = KTextView { withText("About")}
val privacyPolicy = KTextView { withText("Privacy Policy")}
val redditUserAgreement = KTextView { withText("Reddit User Agreement")}
}
================================================
FILE: app/src/androidTest/kotlin/ru/otus/pandina/screens/navigation/settings/ThemeScreen.kt
================================================
package ru.otus.pandina.screens.navigation.settings
import android.view.View
import io.github.kakaocup.kakao.common.views.KView
import io.github.kakaocup.kakao.image.KImageView
import io.github.kakaocup.kakao.recycler.KRecyclerItem
import io.github.kakaocup.kakao.recycler.KRecyclerView
import io.github.kakaocup.kakao.screen.Screen
import io.github.kakaocup.kakao.switch.KSwitch
import io.github.kakaocup.kakao.text.KTextView
import ml.docilealligator.infinityforreddit.R
import org.hamcrest.Matcher
object ThemeScreen : Screen<ThemeScreen>() {
val screeTitle = KTextView {
withParent { withId(R.id.toolbar_settings_activity) }
withText("Theme")
}
val frame = KView { withId(R.id.frame_layout_settings_activity) }
val themeRecycler = KRecyclerView(
builder = { withId(R.id.recycler_view) },
itemTypeBuilder = { itemType(ThemeScreen::ThemeRecyclerItem) }
)
class ThemeRecyclerItem(parent: Matcher<View>) : KRecyclerItem<ThemeRecyclerItem>(parent) {
val icon = KImageView(parent) { withResourceName("icon_frame") }
val title = KTextView(parent) { withResourceName("title") }
val summary = KTextView(parent) { withResourceName("summary") }
val switcher = KSwitch(parent) { withResourceName("material_switch_switch_preference") }
}
}
================================================
FILE: app/src/androidTest/kotlin/ru/otus/pandina/screens/navigation/settings/font/FontPreviewScreen.kt
================================================
package ru.otus.pandina.screens.navigation.settings.font
import io.github.kakaocup.kakao.screen.Screen
import io.github.kakaocup.kakao.text.KTextView
object FontPreviewScreen : Screen<FontPreviewScreen>() {
val screenTitle = KTextView { withText("Font Preview") }
val someFont = KTextView { withAnyText() }
fun selectFont(font : String) {
someFont {
hasText(font)
click()
}
}
}
================================================
FILE: app/src/androidTest/kotlin/ru/otus/pandina/screens/navigation/settings/font/FontScreen.kt
================================================
package ru.otus.pandina.screens.navigation.settings.font
import io.github.kakaocup.kakao.screen.Screen
import io.github.kakaocup.kakao.text.KTextView
import ml.docilealligator.infinityforreddit.R
object FontScreen : Screen<FontScreen>() {
val screenTitle = KTextView {
withText("Font")
withParent {
withId(R.id.toolbar_settings_activity)
}
}
val fontPreview = KTextView { withText("Font Preview") }
val fontFamily = KTextView { withText("Font Family") }
val summaryFontFamily = KTextView { withSibling { withText("Font Family") } }
val fontSize = KTextView { withText("Font Size") }
val titleFontFamily = KTextView { withText("Title Font Family") }
val titleFontSize = KTextView { withText("Title Font Size") }
val contentFontFamily = KTextView { withText("Content Font Family") }
val contentFontSize = KTextView { withText("Content Font Size") }
}
================================================
FILE: app/src/androidTest/kotlin/ru/otus/pandina/screens/navigation/settings/interfaceScreen/CustomizeTabsScreen.kt
================================================
package ru.otus.pandina.screens.navigation.settings.interfaceScreen
import io.github.kakaocup.kakao.screen.Screen
import io.github.kakaocup.kakao.text.KTextView
import ml.docilealligator.infinityforreddit.R
object CustomizeTabsScreen : Screen<CustomizeTabsScreen>() {
val screenTitle = KTextView { withText("Customize Tabs in Main Page") }
val tabCountTitle = KTextView { withId(R.id.tab_count_title_text_view_customize_main_page_tabs_fragment)}
val tabCountSummary = KTextView { withId(R.id.tab_count_text_view_customize_main_page_tabs_fragment)}
}
================================================
FILE: app/src/androidTest/kotlin/ru/otus/pandina/screens/navigation/settings/interfaceScreen/InterfaceScreen.kt
================================================
package ru.otus.pandina.screens.navigation.settings.interfaceScreen
import io.github.kakaocup.kakao.screen.Screen
import io.github.kakaocup.kakao.switch.KSwitch
import io.github.kakaocup.kakao.text.KTextView
import ml.docilealligator.infinityforreddit.R
object InterfaceScreen : Screen<InterfaceScreen>() {
val screenTitle = KTextView {withText("Interface")}
val font = KTextView {withText("Font")}
val immersiveInterface = KTextView {withText("Immersive Interface")}
val navigationDrawer = KTextView {withText("Navigation Drawer")}
val customizeTabs = KTextView {withText("Customize Tabs in Main Page")}
val customizeBottom = KTextView{withText("Customize Bottom Navigation Bar")}
val hideFab = KTextView{withText("Hide FAB in Post Feed")}
val hideFabSwitch = KSwitch {withId(R.id.material_switch_switch_preference)}
val enableBottomNav = KTextView{withText("Enable Bottom Navigation")}
}
================================================
FILE: app/src/androidTest/kotlin/ru/otus/pandina/screens/navigation/settings/notification/NotificationScreen.kt
================================================
package ru.otus.pandina.screens.navigation.settings.notification
import io.github.kakaocup.kakao.screen.Screen
import io.github.kakaocup.kakao.switch.KSwitch
import io.github.kakaocup.kakao.text.KTextView
import ml.docilealligator.infinityforreddit.R
object NotificationScreen : Screen<NotificationScreen>() {
val screenTitle = KTextView { withText("Notification") }
val enableNotifications = KTextView { withText("Enable Notifications") }
val notificationSwitch = KSwitch { withId(R.id.material_switch_switch_preference) }
val notificationInterval = KTextView { withText("Check Notifications Interval")}
}
================================================
FILE: app/src/androidTest/kotlin/ru/otus/pandina/tests/APIKeysTest.kt
================================================
package ru.otus.pandina.tests
import androidx.test.core.app.ActivityScenario
import androidx.test.espresso.Espresso.onView
import androidx.test.espresso.action.ViewActions.click
import androidx.test.espresso.action.ViewActions.typeText
import androidx.test.espresso.assertion.ViewAssertions.matches
import androidx.test.espresso.matcher.ViewMatchers.isDisplayed
import androidx.test.espresso.matcher.ViewMatchers.withClassName
import androidx.test.espresso.matcher.ViewMatchers.withText
import androidx.test.platform.app.InstrumentationRegistry
import ml.docilealligator.infinityforreddit.activities.MainActivity
import org.hamcrest.Matchers.endsWith
import org.junit.Test
import ru.otus.pandina.screens.MainScreen
import ru.otus.pandina.screens.navigation.NavigationViewLayout
import ru.otus.pandina.screens.navigation.settings.SettingsScreen
import ru.otus.pandina.utils.NotificationDialogHelper
class APIKeysTest : BaseTest() {
fun openSettings() {
run {
step("Open navigation drawer") {
MainScreen {
navButton {
isVisible()
click()
}
}
NavigationViewLayout {
navBanner.isVisible()
settings.isVisible()
nawDrawerRecyclerView {
scrollToEnd()
}
}
}
step("Open settings") {
NavigationViewLayout.settings.click()
SettingsScreen {
screenTittle {
isVisible()
hasText("Settings")
}
}
}
}
}
@Test
fun addRedditClientIdTest() {
val redditClientId = InstrumentationRegistry.getArguments().getString("REDDIT_CLIENT_ID") ?: "test_reddit_client_id_default"
// Handle notification dialog immediately after app starts
NotificationDialogHelper.handleNotificationDialog()
before {
openSettings()
}.after {
}.run {
step("Open API Keys screen") {
onView(withText("API Keys")).perform(click())
Thread.sleep(1000)
// Verify we're on API Keys screen
onView(withText("API Keys")).check(matches(isDisplayed()))
onView(withText("Reddit API Client ID")).check(matches(isDisplayed()))
}
step("Add Reddit API Client ID") {
onView(withText("Reddit API Client ID")).perform(click())
Thread.sleep(1000)
// Type the Reddit Client ID in the dialog
onView(withClassName(endsWith("EditText"))).perform(typeText(redditClientId))
// Verify OK button is clickable (test passes without clicking to avoid app restart)
onView(withText("OK")).check(matches(isDisplayed()))
}
}
}
}
================================================
FILE: app/src/androidTest/kotlin/ru/otus/pandina/tests/BaseTest.kt
================================================
package ru.otus.pandina.tests
import androidx.test.ext.junit.rules.ActivityScenarioRule
import com.kaspersky.components.alluresupport.withForcedAllureSupport
import com.kaspersky.kaspresso.kaspresso.Kaspresso
import com.kaspersky.kaspresso.testcases.api.testcase.TestCase
import ml.docilealligator.infinityforreddit.activities.MainActivity
import org.junit.Rule
open class BaseTest : TestCase(
kaspressoBuilder = Kaspresso.Builder.withForcedAllureSupport()
) {
@get:Rule
val activityRule = ActivityScenarioRule<MainActivity>(MainActivity::class.java)
}
================================================
FILE: app/src/androidTest/kotlin/ru/otus/pandina/tests/LoginTest.kt
================================================
package ru.otus.pandina.tests
import androidx.test.espresso.web.webdriver.Locator
import org.junit.Test
import ru.otus.pandina.screens.MainScreen
import ru.otus.pandina.screens.UserAgreementFragment
import ru.otus.pandina.screens.navigation.LoginScreen
import ru.otus.pandina.screens.navigation.NavigationViewLayout
import ru.otus.pandina.utils.NotificationDialogHelper
class LoginTest : BaseTest() {
@Test
fun loginTest() {
// Handle notification dialog immediately after app starts
NotificationDialogHelper.handleNotificationDialog()
run {
step("Open navigation") {
MainScreen {
navButton {
isVisible()
click()
}
}
NavigationViewLayout {
navBanner.isVisible()
}
}
step("Go to login form") {
NavigationViewLayout {
accountNameTextView {
isVisible()
hasText("Anonymous")
}
karmaTextView {
isVisible()
hasText("Press here to login")
}
accountSwitcher {
isVisible()
click()
}
addAccountTextView {
isVisible()
hasText("Add an account")
}
addAccountButton {
isVisible()
longClick()
}
}
}
step("Check if user agreement appears and handle it") {
try {
UserAgreementFragment {
alertTitle {
isVisible()
hasText("User Agreement")
}
dontAgreeButton.isVisible()
agreeButton {
isVisible()
click()
}
}
} catch (e: Exception) {
// User agreement dialog may not appear if already accepted or not required
// Continue with login process
}
}
step("Enter Login and password") {
LoginScreen {
webView {
withElement(
Locator.XPATH,
"//h1"
) {
containsText("Log In")
}
withElement(
Locator.XPATH,
"//*[@id='login-username']"
) {
containsText("Email or username")
keys("*****")
}
}
}
}
}
}
}
================================================
FILE: app/src/androidTest/kotlin/ru/otus/pandina/tests/MainTest.kt
================================================
package ru.otus.pandina.tests
import androidx.test.espresso.action.GeneralLocation
import org.junit.Test
import ru.otus.pandina.screens.CustomizePostFilterScreen
import ru.otus.pandina.screens.FilteredPostsScreen
import ru.otus.pandina.screens.MainScreen
import ru.otus.pandina.utils.NotificationDialogHelper
class MainTest : BaseTest() {
@Test
fun popularPostFilterTest() {
// Handle notification dialog immediately after app starts
NotificationDialogHelper.handleNotificationDialog()
run {
step("Main screen popular tab") {
MainScreen {
tabLayout {
isVisible()
click(GeneralLocation.CENTER)
}
button {
isVisible()
click()
}
}
}
step("Check customize filter") {
CustomizePostFilterScreen {
toolBar {
isVisible()
hasTitle("Customize Post Filter")
}
customizeFilterEditText {
isEnabled()
hasText("New Filter")
}
textFilterTextView {
isVisible()
hasText("Text")
}
textFilterCheckBox {
isVisible()
isChecked()
click()
isNotChecked()
}
linkFilterTextView {
isVisible()
hasText("Link")
}
linkFilterCheckBox {
isVisible()
isChecked()
click()
isNotChecked()
}
onlyNsfwTextView {
isVisible()
hasText("Only NSFW Content")
}
saveButton.click()
}
}
step("Popular Filtered Posts") {
FilteredPostsScreen {
postFragmentList {
isVisible()
firstChild<FilteredPostsScreen.PostFragmentItem> {
isVisible()
}
lastChild<FilteredPostsScreen.PostFragmentItem> {
isVisible()
// Try different title types since posts can have different layouts
try {
title.hasAnyText()
} catch (e: Exception) {
titleGallery.hasAnyText()
}
}
children<FilteredPostsScreen.PostFragmentItem> {
isVisible()
}
}
filterButton {
isVisible()
click()
}
}
}
}
}
}
================================================
FILE: app/src/androidTest/kotlin/ru/otus/pandina/tests/SettingsTest.kt
================================================
package ru.otus.pandina.tests
import android.graphics.Color
import androidx.test.core.app.ActivityScenario
import androidx.test.espresso.Espresso.onView
import androidx.test.espresso.action.ViewActions.click
import androidx.test.espresso.matcher.ViewMatchers.withText
import ml.docilealligator.infinityforreddit.activities.MainActivity
import org.junit.Test
import ru.otus.pandina.screens.navigation.settings.interfaceScreen.CustomizeTabsScreen
import ru.otus.pandina.screens.MainScreen
import ru.otus.pandina.screens.navigation.NavigationViewLayout
import ru.otus.pandina.screens.navigation.settings.ActionPanel
import ru.otus.pandina.screens.navigation.settings.SettingsScreen
import ru.otus.pandina.screens.navigation.settings.ThemeScreen
import ru.otus.pandina.screens.navigation.settings.font.FontPreviewScreen
import ru.otus.pandina.screens.navigation.settings.font.FontScreen
import ru.otus.pandina.screens.navigation.settings.interfaceScreen.InterfaceScreen
import ru.otus.pandina.screens.navigation.settings.notification.NotificationScreen
import ru.otus.pandina.utils.NotificationDialogHelper
class SettingsTest : BaseTest() {
fun openSettings() {
run {
step("Open navigation drawer") {
MainScreen {
navButton {
isVisible()
click()
}
}
NavigationViewLayout {
navBanner.isVisible()
settings.isVisible()
nawDrawerRecyclerView {
scrollToEnd()
}
}
}
step("Open settings") {
NavigationViewLayout.settings.click()
SettingsScreen {
screenTittle {
isVisible()
hasText("Settings")
}
}
}
}
}
@Test
fun disableNotificationTest() {
before {
openSettings()
}.after {
}.run {
step("Open notifications screen and disable notifications") {
SettingsScreen.notification.click()
NotificationScreen {
screenTitle {
isVisible()
hasText("Notification")
}
enableNotifications.isVisible()
notificationInterval.isVisible()
notificationSwitch.click()
notificationInterval.doesNotExist()
notificationSwitch.click()
notificationInterval.isVisible()
}
}
}
}
@Test
fun setFontTest() {
// Handle notification dialog immediately after app starts
NotificationDialogHelper.handleNotificationDialog()
before {
openSettings()
}.after {
}.run {
step("Open interface screen") {
SettingsScreen.interfaceSetting.click()
InterfaceScreen {
screenTitle {
isVisible()
hasText("Interface")
}
font.isVisible()
}
}
step("Open font screen and set font") {
InterfaceScreen.font.click()
FontScreen {
screenTitle {
isVisible()
hasText("Font")
}
fontPreview {
isVisible()
click()
}
}
FontPreviewScreen {
screenTitle {
isVisible()
hasText("Font Preview")
}
}
}
}
}
@Test
fun customizeTabsInMainPage() {
before {
openSettings()
}.after {
}.run {
step("Open interface screen") {
SettingsScreen.interfaceSetting.click()
InterfaceScreen {
screenTitle {
isVisible()
hasText("Interface")
}
customizeTabs.isVisible()
}
}
step("Open and Customize Tabs in Main Page") {
InterfaceScreen.customizeTabs.click()
CustomizeTabsScreen {
screenTitle {
isVisible()
hasText("Customize Tabs in Main Page")
}
tabCountTitle {
isVisible()
hasText("Tab Count")
click()
}
}
// Skip ActionPanel verification and go directly to selection
Thread.sleep(500)
onView(withText("2")).perform(click())
// Wait for UI to update
Thread.sleep(500)
CustomizeTabsScreen {
tabCountSummary.hasText("2")
}
}
step("Restart app") {
activityRule.scenario.close()
ActivityScenario.launch(MainActivity::class.java, null)
}
step("Check tabs") {
MainScreen {
tabLayout {
hasDescendant {
withText("Home")
}
hasDescendant {
withText("Popular")
}
hasNotDescendant {
withText("All")
}
}
}
}
}
}
@Test
fun setDarkThemeTest() {
before {
openSettings()
}.after {
}.run {
step("Open Theme screen and set dark theme") {
SettingsScreen.theme.click()
ThemeScreen {
themeRecycler {
// Click on the "Theme" preference item
childWith<ThemeScreen.ThemeRecyclerItem> {
withDescendant { withText("Theme") }
}.click()
}
}
// Wait for dialog and select Dark Theme
Thread.sleep(1000)
onView(withText("Dark Theme")).perform(click())
// Give the UI time to update
Thread.sleep(500)
ThemeScreen {
themeRecycler {
// Verify the Theme item now shows "Dark Theme" in summary
childWith<ThemeScreen.ThemeRecyclerItem> {
withDescendant { withText("Theme") }
}.summary.hasText("Dark Theme")
}
}
}
}
}
@Test
fun setLightThemeTest() {
before {
openSettings()
}.after {
}.run {
step("Open Theme screen and set light theme") {
SettingsScreen.theme.click()
ThemeScreen {
themeRecycler {
// Click on the "Theme" preference item
childWith<ThemeScreen.ThemeRecyclerItem> {
withDescendant { withText("Theme") }
}.click()
}
}
// Wait for dialog and select Light Theme
Thread.sleep(1000)
onView(withText("Light Theme")).perform(click())
// Remove this line - no OK button needed:
// onView(withText("OK")).perform(click())
// Give the UI time to update
Thread.sleep(500)
ThemeScreen {
themeRecycler {
// Verify the Theme item now shows "Light Theme" in summary
childWith<ThemeScreen.ThemeRecyclerItem> {
withDescendant { withText("Theme") }
}.summary.hasText("Light Theme")
}
frame.hasBackgroundColor(Color.WHITE)
}
}
}
}
}
================================================
FILE: app/src/androidTest/kotlin/ru/otus/pandina/utils/NotificationDialogHelper.kt
================================================
package ru.otus.pandina.utils
import androidx.test.platform.app.InstrumentationRegistry
import androidx.test.uiautomator.UiDevice
import androidx.test.uiautomator.UiSelector
object NotificationDialogHelper {
fun handleNotificationDialog() {
val device = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())
Thread.sleep(3000) // Wait for app and dialog to fully load
// Try to find and click "Don't allow" or similar buttons first
val dontAllowButton = device.findObject(UiSelector().text("Don't allow"))
val allowButton = device.findObject(UiSelector().text("Allow"))
when {
dontAllowButton.exists() -> {
dontAllowButton.click()
Thread.sleep(1000)
}
allowButton.exists() -> {
// If only "Allow" is visible, click it to proceed (we can test without notifications)
allowButton.click()
Thread.sleep(1000)
}
else -> {
// If no dialog buttons found, the dialog might have been dismissed already
Thread.sleep(1000)
}
}
}
}
================================================
FILE: app/src/debug/res/values/strings.xml
================================================
<resources>
<string name="application_name" translatable="false">Continuum (Debug)</string>
</resources>
================================================
FILE: app/src/main/AndroidManifest.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<queries>
<intent>
<action android:name="android.support.customtabs.action.CustomTabsService" />
</intent>
</queries>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.SET_WALLPAPER" />
<uses-permission android:name="android.permission.SET_WALLPAPER_HINTS" />
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"
android:maxSdkVersion="22" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission-sdk-23
android:name="android.permission.WRITE_EXTERNAL_STORAGE"
android:maxSdkVersion="28" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
<uses-permission android:name="android.permission.RUN_USER_INITIATED_JOBS" />
<uses-feature android:name="android.hardware.camera" android:required="false" />
<application
android:name=".Infinity"
android:allowBackup="false"
android:enableOnBackInvokedCallback="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/application_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme"
android:usesCleartextTraffic="true"
tools:replace="android:label">
<activity
android:name=".activities.CopyMultiRedditActivity"
android:exported="false"
android:parentActivityName=".activities.MainActivity"
android:theme="@style/AppTheme.NoActionBar" />
<activity
android:name=".activities.LoginChromeCustomTabActivity"
android:exported="true"
android:label="@string/login_activity_label"
android:launchMode="singleTop"
android:parentActivityName=".activities.MainActivity"
android:theme="@style/AppTheme.NoActionBar">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:host="localhost"
android:scheme="continuum" />
</intent-filter>
</activity>
<activity
android:name=".activities.CommentFilterUsageListingActivity"
android:exported="false"
android:parentActivityName=".activities.SettingsActivity"
android:theme="@style/AppTheme.NoActionBar" />
<activity
android:name=".activities.CustomizeCommentFilterActivity"
android:exported="false"
android:label="@string/customize_comment_filter_activity_label"
android:parentActivityName=".activities.SettingsActivity"
android:theme="@style/AppTheme.NoActionBar"
android:windowSoftInputMode="adjustResize" />
<activity
android:name=".activities.CommentFilterPreferenceActivity"
android:exported="false"
android:label="@string/comment_filter_preference_activity_label"
android:parentActivityName=".activities.SettingsActivity"
android:theme="@style/AppTheme.NoActionBar" />
<activity
android:name=".activities.HistoryActivity"
android:exported="false"
android:label="@string/history_activity_label"
android:parentActivityName=".activities.MainActivity"
android:theme="@style/AppTheme.Slidable" />
<activity
android:name=".activities.PostPollActivity"
android:label="@string/post_poll_activity_label"
android:parentActivityName=".activities.MainActivity"
android:theme="@style/AppTheme.NoActionBar"
android:windowSoftInputMode="adjustResize" />
<activity
android:name=".activities.EditProfileActivity"
android:label="@string/edit_profile_activity_label"
android:parentActivityName=".activities.MainActivity"
android:theme="@style/AppTheme.NoActionBar"
android:windowSoftInputMode="adjustPan" />
<activity
android:name=".activities.WikiActivity"
android:label="@string/wiki_activity_label"
android:parentActivityName=".activities.MainActivity"
android:theme="@style/AppTheme.Slidable" />
<activity
android:name=".activities.PostGalleryActivity"
android:label="@string/post_gallery_activity_label"
android:parentActivityName=".activities.MainActivity"
android:theme="@style/AppTheme.NoActionBar"
android:windowSoftInputMode="adjustResize" />
<activity
android:name=".activities.LockScreenActivity"
android:theme="@style/AppTheme.NoActionBar" />
<activity
android:name=".activities.WebViewActivity"
android:configChanges="orientation|screenSize"
android:label=""
android:parentActivityName=".activities.MainActivity"
android:theme="@style/AppTheme.NoActionBar" />
<activity
android:name=".activities.SuicidePreventionActivity"
android:parentActivityName=".activities.MainActivity"
android:theme="@style/AppTheme.NoActionBar" />
<activity
android:name=".activities.SearchUsersResultActivity"
android:label="@string/search_users_result_activity_label"
android:parentActivityName=".activities.MainActivity"
android:theme="@style/AppTheme.NoActionBar" />
<activity
android:name=".activities.PostFilterUsageListingActivity"
android:parentActivityName=".activities.SettingsActivity"
android:theme="@style/AppTheme.NoActionBar" />
<activity
android:name=".activities.PostFilterPreferenceActivity"
android:label="@string/post_filter_preference_activity_label"
android:parentActivityName=".activities.SettingsActivity"
android:theme="@style/AppTheme.NoActionBar" />
<activity
android:name=".activities.QRCodeScannerActivity"
android:exported="false"
android:screenOrientation="portrait"
android:theme="@style/AppTheme.NoActionBar" />
<activity
android:name=".activities.CustomizePostFilterActivity"
android:label="@string/customize_post_filter_activity_label"
android:parentActivityName=".activities.SettingsActivity"
android:theme="@style/AppTheme.NoActionBar"
android:windowSoftInputMode="adjustResize" />
<activity
android:name=".activities.FetchRandomSubredditOrPostActivity"
android:parentActivityName=".activities.MainActivity"
android:theme="@style/AppTheme.NoActionBar" />
<activity
android:name=".activities.SelectUserFlairActivity"
android:parentActivityName=".activities.MainActivity"
android:theme="@style/AppTheme.Slidable" />
<activity
android:name=".activities.FullMarkdownActivity"
android:parentActivityName=".activities.MainActivity"
android:theme="@style/AppTheme.Slidable" />
<activity
android:name=".activities.SubmitCrosspostActivity"
android:label="@string/submit_crosspost_activity_label"
android:parentActivityName=".activities.MainActivity"
android:theme="@style/AppTheme.NoActionBar"
android:windowSoftInputMode="adjustResize" />
<service
android:name=".services.DownloadMediaService"
android:enabled="true"
android:exported="false"
android:permission="android.permission.BIND_JOB_SERVICE" />
<activity
android:name=".activities.ViewRedditGalleryActivity"
android:configChanges="orientation|screenSize|layoutDirection"
android:parentActivityName=".activities.MainActivity"
android:theme="@style/AppTheme.Draggable" />
<activity
android:name=".activities.SendPrivateMessageActivity"
android:label="@string/send_private_message_activity_label"
android:parentActivityName=".activities.MainActivity"
android:theme="@style/AppTheme.NoActionBar"
android:windowSoftInputMode="adjustResize" />
<service
android:name=".services.DownloadRedditVideoService"
android:enabled="true"
android:exported="false"
android:permission="android.permission.BIND_JOB_SERVICE" />
<activity
android:name=".activities.ViewPrivateMessagesActivity"
android:parentActivityName=".activities.MainActivity"
android:theme="@style/AppTheme.NoActionBar"
android:windowSoftInputMode="adjustResize" />
<activity
android:name=".activities.ViewImgurMediaActivity"
android:configChanges="orientation|screenSize|layoutDirection"
android:parentActivityName=".activities.MainActivity"
android:theme="@style/AppTheme.Draggable" />
<activity
android:name=".activities.ReportActivity"
android:label="@string/report_activity_label"
android:parentActivityName=".activities.MainActivity"
android:theme="@style/AppTheme.Slidable" />
<activity
android:name=".activities.SelectedSubredditsAndUsersActivity"
android:label="@string/selected_subeddits_activity_label"
android:parentActivityName=".activities.MainActivity"
android:theme="@style/AppTheme.Slidable" />
<activity
android:name=".activities.EditMultiRedditActivity"
android:label="@string/edit_multi_reddit_activity_label"
android:parentActivityName=".activities.MainActivity"
android:theme="@style/AppTheme.NoActionBar" />
<activity
android:name=".activities.CustomThemePreviewActivity"
android:label="@string/theme_preview_activity_label"
android:parentActivityName=".activities.MainActivity"
android:theme="@style/AppTheme.Slidable" />
<activity
android:name=".activities.CustomThemeListingActivity"
android:label="@string/custom_theme_listing_activity_label"
android:parentActivityName=".activities.MainActivity"
android:theme="@style/AppTheme.NoActionBar" />
<activity
android:name=".activities.CustomizeThemeActivity"
android:label="@string/customize_theme_activity_label"
android:parentActivityName=".activities.MainActivity"
android:theme="@style/AppTheme.NoActionBar" />
<activity
android:name=".activities.SubredditMultiselectionActivity"
android:label="@string/subreddit_multiselection_activity_label"
android:parentActivityName=".activities.MainActivity"
android:theme="@style/AppTheme.NoActionBar" />
<activity
android:name=".activities.UserMultiselectionActivity"
android:label="@string/user_multiselection_activity_label"
android:parentActivityName=".activities.MainActivity"
android:theme="@style/AppTheme.NoActionBar" />
<activity
android:name=".activities.CreateMultiRedditActivity"
android:label="@string/create_multi_reddit_activity_label"
android:parentActivityName=".activities.MainActivity"
android:theme="@style/AppTheme.Slidable"
android:windowSoftInputMode="adjustResize" />
<activity
android:name=".activities.ViewMultiRedditDetailActivity"
android:parentActivityName=".activities.MainActivity"
android:theme="@style/AppTheme.Slidable" />
<activity
android:name=".activities.AccountSavedThingActivity"
android:label="@string/account_saved_thing_activity_label"
android:parentActivityName=".activities.MainActivity"
android:theme="@style/AppTheme.Slidable" />
<activity
android:name=".activities.ShareDataResolverActivity"
android:exported="true">
<intent-filter android:label="@string/submit_post">
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="image/*" />
</intent-filter>
<intent-filter android:label="@string/submit_post">
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="video/*" />
</intent-filter>
<intent-filter android:label="@string/submit_post">
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="text/plain" />
</intent-filter>
</activity>
<activity
android:name=".activities.SettingsActivity"
android:label="@string/settings_activity_label"
android:parentActivityName=".activities.MainActivity"
android:theme="@style/PreferenceActivityTheme" />
<activity
android:name=".activities.InboxActivity"
android:label="@string/view_message_activity_label"
android:parentActivityName=".activities.MainActivity"
android:theme="@style/AppTheme.Slidable" />
<activity
android:name=".activities.AccountPostsActivity"
android:parentActivityName=".activities.MainActivity"
android:theme="@style/AppTheme.Slidable" />
<activity
android:name=".activities.EditCommentActivity"
android:label="@string/edit_comment_activity_label"
android:parentActivityName=".activities.MainActivity"
android:theme="@style/AppTheme.NoActionBar"
android:windowSoftInputMode="adjustResize" />
<activity
android:name=".activities.EditPostActivity"
android:label="@string/edit_post_activity_label"
android:parentActivityName=".activities.MainActivity"
android:theme="@style/AppTheme.NoActionBar"
android:windowSoftInputMode="adjustResize" />
<activity
android:name=".activities.FilteredPostsActivity"
android:parentActivityName=".activities.MainActivity"
android:theme="@style/AppTheme.Slidable" />
<activity
android:name=".activities.SearchSubredditsResultActivity"
android:label="@string/search_subreddits_activity_label"
android:parentActivityName=".activities.MainActivity"
android:theme="@style/AppTheme.Slidable" />
<activity
android:name=".activities.LinkResolverActivity"
android:exported="true">
<intent-filter android:label="@string/handle_link">
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="text/plain" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="https" />
<data android:scheme="http" />
<data android:host="www.reddit.com" />
<data android:host="reddit.com" />
<data android:host="v.redd.it" />
<data android:host="amp.reddit.com" />
<data android:host="m.reddit.com" />
<data android:host="old.reddit.com" />
<data android:host="new.reddit.com" />
<data android:host="np.reddit.com" />
<data android:host="reddit.app.link" />
<data android:host="redd.it" />
<data android:host="s.reddit.com" />
<data android:host="click.redditmail.com" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:host="www.google.com"
android:pathPattern="/amp/s/amp.reddit.com/.*"
android:scheme="https" />
</intent-filter>
</activity>
<activity
android:name=".activities.SearchActivity"
android:label="@string/search_activity_label"
android:parentActivityName=".activities.MainActivity"
android:theme="@style/AppTheme.Slidable"
android:windowSoftInputMode="adjustPan" />
<activity
android:name=".activities.SearchHistoryActivity"
android:label="@string/search_history"
android:parentActivityName=".activities.SearchActivity"
android:theme="@style/AppTheme.Slidable" />
<activity
android:name=".activities.RulesActivity"
android:label="@string/rules_activity_label"
android:parentActivityName=".activities.MainActivity"
android:theme="@style/AppTheme.Slidable" />
<activity
android:name=".activities.PostVideoActivity"
android:label="@string/post_video_activity_label"
android:parentActivityName=".activities.MainActivity"
android:theme="@style/AppTheme.NoActionBar"
android:windowSoftInputMode="adjustResize" />
<activity
android:name=".activities.PostImageActivity"
android:label="@string/post_image_activity_label"
android:parentActivityName=".activities.MainActivity"
android:theme="@style/AppTheme.NoActionBar"
android:windowSoftInputMode="adjustResize" />
<activity
android:name=".activities.PostLinkActivity"
android:label="@string/post_link_activity_label"
android:parentActivityName=".activities.MainActivity"
android:theme="@style/AppTheme.NoActionBar"
android:windowSoftInputMode="adjustResize" />
<activity
android:name=".activities.SubscribedThingListingActivity"
android:label="@string/subscriptions"
android:parentActivityName=".activities.MainActivity"
android:theme="@style/AppTheme.Slidable" />
<activity
android:name=".activities.PostTextActivity"
android:label="@string/post_text_activity_label"
android:parentActivityName=".activities.MainActivity"
android:theme="@style/AppTheme.NoActionBar"
android:windowSoftInputMode="adjustResize" />
<activity
android:name=".activities.CommentActivity"
android:label="@string/comment_activity_label"
android:parentActivityName=".activities.MainActivity"
android:theme="@style/AppTheme.NoActionBar"
android:windowSoftInputMode="adjustResize" />
<activity
android:name=".activities.SearchResultActivity"
android:label="@string/search_activity_label"
android:parentActivityName=".activities.MainActivity"
android:theme="@style/AppTheme.Slidable" />
<activity
android:name=".activities.MainActivity"
android:exported="true"
android:label="@string/application_name"
android:theme="@style/AppTheme.Launcher"
android:windowSoftInputMode="adjustPan">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".activities.LoginActivity"
android:configChanges="orientation|screenLayout|screenSize|layoutDirection"
android:label="@string/login_activity_label"
android:parentActivityName=".activities.MainActivity"
android:theme="@style/AppTheme.NoActionBar" />
<activity
android:name=".activities.ViewImageOrGifActivity"
android:parentActivityName=".activities.MainActivity"
android:theme="@style/AppTheme.SlidableWithActionBar" />
<activity
android:name=".activities.ViewVideoActivity"
android:configChanges="orientation|screenSize|layoutDirection"
android:parentActivityName=".activities.MainActivity"
android:theme="@style/AppTheme.Draggable" />
<activity
android:name=".activities.ViewPostDetailActivity"
android:parentActivityName=".activities.MainActivity"
android:theme="@style/AppTheme.Slidable"
android:windowSoftInputMode="adjustPan" />
<activity
android:name=".activities.ViewSubredditDetailActivity"
android:parentActivityName=".activities.MainActivity"
android:theme="@style/AppTheme.Slidable" />
<activity
android:name=".activities.ViewUserDetailActivity"
android:parentActivityName=".activities.MainActivity"
android:theme="@style/AppTheme.Slidable" />
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="${applicationId}.provider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths" />
</provider>
<provider
android:name="androidx.startup.InitializationProvider"
android:authorities="${applicationId}.androidx-startup"
android:exported="false"
tools:node="merge">
<meta-data
android:name="com.crazylegend.crashyreporter.initializer.CrashyInitializer"
android:value="androidx.startup" />
</provider>
<service
android:name=".services.SubmitPostService"
android:enabled="true"
android:exported="false"
android:permission="android.permission.BIND_JOB_SERVICE" />
<service
android:name=".services.EditProfileService"
android:enabled="true"
android:exported="false"
android:permission="android.permission.BIND_JOB_SERVICE" />
<receiver android:name=".broadcastreceivers.DownloadedMediaDeleteActionBroadcastReceiver" />
</application>
</manifest>
================================================
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/APIResult.kt
================================================
package ml.docilealligator.infinityforreddit
import androidx.annotation.StringRes
sealed class APIResult<out T> {
data class Success<T>(val data: T): APIResult<T>()
data class Error(val error: APIError): APIResult<Nothing>()
}
sealed class APIError {
data class Message(val message: String) : APIError()
data class MessageRes(@StringRes val resId: Int) : APIError()
}
================================================
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/ActionState.kt
================================================
package ml.docilealligator.infinityforreddit
import androidx.annotation.StringRes
sealed interface ActionState {
object Idle: ActionState
object Running: ActionState
data class Success<T>(val data: T): ActionState
data class Error(val error: ActionStateError): ActionState
}
sealed class ActionStateError {
data class Message(val message: String) : ActionStateError()
data class MessageRes(@StringRes val resId: Int) : ActionStateError()
}
================================================
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/AppComponent.java
================================================
package ml.docilealligator.infinityforreddit;
import android.app.Application;
import javax.inject.Singleton;
import dagger.BindsInstance;
import dagger.Component;
import ml.docilealligator.infinityforreddit.activities.AccountPostsActivity;
import ml.docilealligator.infinityforreddit.activities.AccountSavedThingActivity;
import ml.docilealligator.infinityforreddit.activities.CommentActivity;
import ml.docilealligator.infinityforreddit.activities.CommentFilterPreferenceActivity;
import ml.docilealligator.infinityforreddit.activities.CommentFilterUsageListingActivity;
import ml.docilealligator.infinityforreddit.activities.CopyMultiRedditActivity;
import ml.docilealligator.infinityforreddit.activities.CreateMultiRedditActivity;
import ml.docilealligator.infinityforreddit.activities.CustomThemeListingActivity;
import ml.docilealligator.infinityforreddit.activities.CustomThemePreviewActivity;
import ml.docilealligator.infinityforreddit.activities.CustomizeCommentFilterActivity;
import ml.docilealligator.infinityforreddit.activities.CustomizePostFilterActivity;
import ml.docilealligator.infinityforreddit.activities.CustomizeThemeActivity;
import ml.docilealligator.infinityforreddit.activities.EditCommentActivity;
import ml.docilealligator.infinityforreddit.activities.EditMultiRedditActivity;
import ml.docilealligator.infinityforreddit.activities.EditPostActivity;
import ml.docilealligator.infinityforreddit.activities.EditProfileActivity;
import ml.docilealligator.infinityforreddit.activities.FilteredPostsActivity;
import ml.docilealligator.infinityforreddit.activities.FullMarkdownActivity;
import ml.docilealligator.infinityforreddit.activities.HistoryActivity;
import ml.docilealligator.infinityforreddit.activities.InboxActivity;
import ml.docilealligator.infinityforreddit.activities.LinkResolverActivity;
import ml.docilealligator.infinityforreddit.activities.LockScreenActivity;
import ml.docilealligator.infinityforreddit.activities.LoginActivity;
import ml.docilealligator.infinityforreddit.activities.LoginChromeCustomTabActivity;
import ml.docilealligator.infinityforreddit.activities.MainActivity;
import ml.docilealligator.infinityforreddit.activities.PostFilterPreferenceActivity;
import ml.docilealligator.infinityforreddit.activities.PostFilterUsageListingActivity;
import ml.docilealligator.infinityforreddit.activities.PostGalleryActivity;
import ml.docilealligator.infinityforreddit.activities.PostImageActivity;
import ml.docilealligator.infinityforreddit.activities.PostLinkActivity;
import ml.docilealligator.infinityforreddit.activities.PostPollActivity;
import ml.docilealligator.infinityforreddit.activities.PostTextActivity;
import ml.docilealligator.infinityforreddit.activities.PostVideoActivity;
import ml.docilealligator.infinityforreddit.activities.ReportActivity;
import ml.docilealligator.infinityforreddit.activities.RulesActivity;
import ml.docilealligator.infinityforreddit.activities.SearchActivity;
import ml.docilealligator.infinityforreddit.activities.SearchHistoryActivity;
import ml.docilealligator.infinityforreddit.activities.SearchResultActivity;
import ml.docilealligator.infinityforreddit.activities.SearchSubredditsResultActivity;
import ml.docilealligator.infinityforreddit.activities.SearchUsersResultActivity;
import ml.docilealligator.infinityforreddit.activities.SelectUserFlairActivity;
import ml.docilealligator.infinityforreddit.activities.SelectedSubredditsAndUsersActivity;
import ml.docilealligator.infinityforreddit.activities.SendPrivateMessageActivity;
import ml.docilealligator.infinityforreddit.activities.SettingsActivity;
import ml.docilealligator.infinityforreddit.activities.SubmitCrosspostActivity;
import ml.docilealligator.infinityforreddit.activities.SubredditMultiselectionActivity;
import ml.docilealligator.infinityforreddit.activities.UserMultiselectionActivity;
import ml.docilealligator.infinityforreddit.activities.SubscribedThingListingActivity;
import ml.docilealligator.infinityforreddit.activities.SuicidePreventionActivity;
import ml.docilealligator.infinityforreddit.activities.ViewImageOrGifActivity;
import ml.docilealligator.infinityforreddit.activities.ViewImgurMediaActivity;
import ml.docilealligator.infinityforreddit.activities.ViewMultiRedditDetailActivity;
import ml.docilealligator.infinityforreddit.activities.ViewPostDetailActivity;
import ml.docilealligator.infinityforreddit.activities.ViewPrivateMessagesActivity;
import ml.docilealligator.infinityforreddit.activities.ViewRedditGalleryActivity;
import ml.docilealligator.infinityforreddit.activities.ViewSubredditDetailActivity;
import ml.docilealligator.infinityforreddit.activities.ViewUserDetailActivity;
import ml.docilealligator.infinityforreddit.activities.ViewVideoActivity;
import ml.docilealligator.infinityforreddit.activities.WebViewActivity;
import ml.docilealligator.infinityforreddit.activities.WikiActivity;
import ml.docilealligator.infinityforreddit.bottomsheetfragments.AccountChooserBottomSheetFragment;
import ml.docilealligator.infinityforreddit.bottomsheetfragments.FlairBottomSheetFragment;
import ml.docilealligator.infinityforreddit.bottomsheetfragments.PostOptionsBottomSheetFragment;
import ml.docilealligator.infinityforreddit.bottomsheetfragments.ShareBottomSheetFragment;
import ml.docilealligator.infinityforreddit.fragments.CommentsListingFragment;
import ml.docilealligator.infinityforreddit.fragments.CustomThemeListingFragment;
import ml.docilealligator.infinityforreddit.fragments.FollowedUsersListingFragment;
import ml.docilealligator.infinityforreddit.fragments.HistoryPostFragment;
import ml.docilealligator.infinityforreddit.fragments.InboxFragment;
import ml.docilealligator.infinityforreddit.fragments.MorePostsInfoFragment;
import ml.docilealligator.infinityforreddit.fragments.MultiRedditListingFragment;
import ml.docilealligator.infinityforreddit.fragments.PostFragment;
import ml.docilealligator.infinityforreddit.fragments.SidebarFragment;
import ml.docilealligator.infinityforreddit.fragments.SubredditListingFragment;
import ml.docilealligator.infinityforreddit.fragments.SubscribedSubredditsListingFragment;
import ml.docilealligator.infinityforreddit.fragments.UserListingFragment;
import ml.docilealligator.infinityforreddit.fragments.ViewImgurImageFragment;
import ml.docilealligator.infinityforreddit.fragments.ViewImgurVideoFragment;
import ml.docilealligator.infinityforreddit.fragments.ViewPostDetailFragment;
import ml.docilealligator.infinityforreddit.fragments.ViewRedditGalleryImageOrGifFragment;
import ml.docilealligator.infinityforreddit.fragments.ViewRedditGalleryVideoFragment;
import ml.docilealligator.infinityforreddit.services.DownloadMediaService;
import ml.docilealligator.infinityforreddit.services.DownloadRedditVideoService;
import ml.docilealligator.infinityforreddit.services.EditProfileService;
import ml.docilealligator.infinityforreddit.services.SubmitPostService;
import ml.docilealligator.infinityforreddit.settings.AdvancedPreferenceFragment;
import ml.docilealligator.infinityforreddit.settings.APIKeysPreferenceFragment;
import ml.docilealligator.infinityforreddit.settings.CommentPreferenceFragment;
import ml.docilealligator.infinityforreddit.settings.CrashReportsFragment;
import ml.docilealligator.infinityforreddit.settings.CustomizeBottomAppBarFragment;
import ml.docilealligator.infinityforreddit.settings.CustomizeMainPageTabsFragment;
import ml.docilealligator.infinityforreddit.settings.DownloadLocationPreferenceFragment;
import ml.docilealligator.infinityforreddit.settings.FontPreferenceFragment;
import ml.docilealligator.infinityforreddit.settings.GesturesAndButtonsPreferenceFragment;
import ml.docilealligator.infinityforreddit.settings.MainPreferenceFragment;
import ml.docilealligator.infinityforreddit.settings.MiscellaneousPreferenceFragment;
import ml.docilealligator.infinityforreddit.settings.NotificationPreferenceFragment;
import ml.docilealligator.infinityforreddit.settings.NsfwAndSpoilerFragment;
import ml.docilealligator.infinityforreddit.settings.PostHistoryFragment;
import ml.docilealligator.infinityforreddit.settings.ProxyPreferenceFragment;
import ml.docilealligator.infinityforreddit.settings.SecurityPreferenceFragment;
import ml.docilealligator.infinityforreddit.settings.ThemePreferenceFragment;
import ml.docilealligator.infinityforreddit.settings.TranslationFragment;
import ml.docilealligator.infinityforreddit.settings.VideoPreferenceFragment;
import ml.docilealligator.infinityforreddit.worker.MaterialYouWorker;
import ml.docilealligator.infinityforreddit.worker.PullNotificationWorker;
@Singleton
@Component(modules = {AppModule.class, NetworkModule.class})
public interface AppComponent {
void inject(MainActivity mainActivity);
void inject(LoginActivity loginActivity);
void inject(PostFragment postFragment);
void inject(SubredditListingFragment subredditListingFragment);
void inject(UserListingFragment userListingFragment);
void inject(ViewPostDetailActivity viewPostDetailActivity);
void inject(ViewSubredditDetailActivity viewSubredditDetailActivity);
void inject(ViewUserDetailActivity viewUserDetailActivity);
void inject(CommentActivity commentActivity);
void inject(SubscribedThingListingActivity subscribedThingListingActivity);
void inject(PostTextActivity postTextActivity);
void inject(SubscribedSubredditsListingFragment subscribedSubredditsListingFragment);
void inject(PostLinkActivity postLinkActivity);
void inject(PostImageActivity postImageActivity);
void inject(PostVideoActivity postVideoActivity);
void inject(FlairBottomSheetFragment flairBottomSheetFragment);
void inject(RulesActivity rulesActivity);
void inject(CommentsListingFragment commentsListingFragment);
void inject(SubmitPostService submitPostService);
void inject(FilteredPostsActivity filteredPostsActivity);
void inject(SearchResultActivity searchResultActivity);
void inject(SearchSubredditsResultActivity searchSubredditsResultActivity);
void inject(FollowedUsersListingFragment followedUsersListingFragment);
void inject(EditPostActivity editPostActivity);
void inject(EditCommentActivity editCommentActivity);
void inject(AccountPostsActivity accountPostsActivity);
void inject(PullNotificationWorker pullNotificationWorker);
void inject(InboxActivity inboxActivity);
void inject(NotificationPreferenceFragment notificationPreferenceFragment);
void inject(LinkResolverActivity linkResolverActivity);
void inject(SearchActivity searchActivity);
void inject(SearchHistoryActivity searchHistoryActivity);
void inject(SettingsActivity settingsActivity);
void inject(MainPreferenceFragment mainPreferenceFragment);
void inject(AccountSavedThingActivity accountSavedThingActivity);
void inject(ViewImageOrGifActivity viewGIFActivity);
void inject(ViewMultiRedditDetailActivity viewMultiRedditDetailActivity);
void inject(ViewVideoActivity viewVideoActivity);
void inject(GesturesAndButtonsPreferenceFragment gesturesAndButtonsPreferenceFragment);
void inject(CreateMultiRedditActivity createMultiRedditActivity);
void inject(SubredditMultiselectionActivity subredditMultiselectionActivity);
void inject(UserMultiselectionActivity userMultiselectionActivity);
void inject(ThemePreferenceFragment themePreferenceFragment);
void inject(CustomizeThemeActivity customizeThemeActivity);
void inject(CustomThemeListingActivity customThemeListingActivity);
void inject(SidebarFragment sidebarFragment);
void inject(AdvancedPreferenceFragment advancedPreferenceFragment);
void inject(APIKeysPreferenceFragment apiKeysPreferenceFragment);
void inject(CustomThemePreviewActivity customThemePreviewActivity);
void inject(EditMultiRedditActivity editMultiRedditActivity);
void inject(SelectedSubredditsAndUsersActivity selectedSubredditsAndUsersActivity);
void inject(ReportActivity reportActivity);
void inject(ViewImgurMediaActivity viewImgurMediaActivity);
void inject(ViewImgurVideoFragment viewImgurVideoFragment);
void inject(DownloadRedditVideoService downloadRedditVideoService);
void inject(MultiRedditListingFragment multiRedditListingFragment);
void inject(InboxFragment inboxFragment);
void inject(ViewPrivateMessagesActivity viewPrivateMessagesActivity);
void inject(SendPrivateMessageActivity sendPrivateMessageActivity);
void inject(VideoPreferenceFragment videoPreferenceFragment);
void inject(ViewRedditGalleryActivity viewRedditGalleryActivity);
void inject(ViewRedditGalleryVideoFragment viewRedditGalleryVideoFragment);
void inject(CustomizeMainPageTabsFragment customizeMainPageTabsFragment);
void inject(DownloadMediaService downloadMediaService);
void inject(DownloadLocationPreferenceFragment downloadLocationPreferenceFragment);
void inject(SubmitCrosspostActivity submitCrosspostActivity);
void inject(FullMarkdownActivity fullMarkdownActivity);
void inject(SelectUserFlairActivity selectUserFlairActivity);
void inject(SecurityPreferenceFragment securityPreferenceFragment);
void inject(NsfwAndSpoilerFragment nsfwAndSpoilerFragment);
void inject(CustomizeBottomAppBarFragment customizeBottomAppBarFragment);
void inject(TranslationFragment translationFragment);
void inject(MiscellaneousPreferenceFragment miscellaneousPreferenceFragment);
void inject(CustomizePostFilterActivity customizePostFilterActivity);
void inject(PostHistoryFragment postHistoryFragment);
void inject(PostFilterPreferenceActivity postFilterPreferenceActivity);
void inject(PostFilterUsageListingActivity postFilterUsageListingActivity);
void inject(SearchUsersResultActivity searchUsersResultActivity);
void inject(ViewImgurImageFragment viewImgurImageFragment);
void inject(ViewRedditGalleryImageOrGifFragment viewRedditGalleryImageOrGifFragment);
void inject(ViewPostDetailFragment viewPostDetailFragment);
void inject(SuicidePreventionActivity suicidePreventionActivity);
void inject(WebViewActivity webViewActivity);
void inject(CrashReportsFragment crashReportsFragment);
void inject(LockScreenActivity lockScreenActivity);
void inject(PostGalleryActivity postGalleryActivity);
void inject(WikiActivity wikiActivity);
void inject(Infinity infinity);
void inject(EditProfileService editProfileService);
void inject(EditProfileActivity editProfileActivity);
void inject(FontPreferenceFragment fontPreferenceFragment);
void inject(CommentPreferenceFragment commentPreferenceFragment);
void inject(PostPollActivity postPollActivity);
void inject(AccountChooserBottomSheetFragment accountChooserBottomSheetFragment);
void inject(MaterialYouWorker materialYouWorker);
void inject(HistoryPostFragment historyPostFragment);
void inject(HistoryActivity historyActivity);
void inject(MorePostsInfoFragment morePostsInfoFragment);
void inject(CommentFilterPreferenceActivity commentFilterPreferenceActivity);
void inject(CustomizeCommentFilterActivity customizeCommentFilterActivity);
void inject(CommentFilterUsageListingActivity commentFilterUsageListingActivity);
void inject(CustomThemeListingFragment customThemeListingFragment);
void inject(LoginChromeCustomTabActivity loginChromeCustomTabActivity);
void inject(PostOptionsBottomSheetFragment postOptionsBottomSheetFragment);
void inject(ShareBottomSheetFragment shareBottomSheetFragment);
void inject(ProxyPreferenceFragment proxyPreferenceFragment);
void inject(CopyMultiRedditActivity copyMultiRedditActivity);
@Component.Factory
interface Factory {
AppComponent create(@BindsInstance Application application);
}
}
================================================
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/AppModule.java
================================================
package ml.docilealligator.infinityforreddit;
import android.app.Application;
import android.content.Context;
import android.content.SharedPreferences;
import androidx.annotation.OptIn;
import androidx.media3.common.util.UnstableApi;
import androidx.media3.database.StandaloneDatabaseProvider;
import androidx.media3.datasource.cache.LeastRecentlyUsedCacheEvictor;
import androidx.media3.datasource.cache.SimpleCache;
import androidx.media3.datasource.okhttp.OkHttpDataSource;
import androidx.preference.PreferenceManager;
import java.io.File;
import java.util.concurrent.Executor;
import java.util.concurrent.Executors;
import javax.inject.Named;
import javax.inject.Singleton;
import dagger.Binds;
import dagger.Module;
import dagger.Provides;
import ml.docilealligator.infinityforreddit.customtheme.CustomThemeWrapper;
import ml.docilealligator.infinityforreddit.customviews.LoopAvailableExoCreator;
import ml.docilealligator.infinityforreddit.utils.APIUtils;
import ml.docilealligator.infinityforreddit.utils.CustomThemeSharedPreferencesUtils;
import ml.docilealligator.infinityforreddit.utils.SharedPreferencesUtils;
import ml.docilealligator.infinityforreddit.videoautoplay.Config;
import ml.docilealligator.infinityforreddit.videoautoplay.ExoCreator;
import ml.docilealligator.infinityforreddit.videoautoplay.MediaSourceBuilder;
import ml.docilealligator.infinityforreddit.videoautoplay.ToroExo;
import okhttp3.OkHttpClient;
@Module
abstract class AppModule {
@Binds
abstract Context providesContext(Application application);
@Provides
@Singleton
static RedditDataRoomDatabase provideRedditDataRoomDatabase(Application application) {
return RedditDataRoomDatabase.create(application);
}
@Provides
@Named("default")
@Singleton
static SharedPreferences provideSharedPreferences(Application application) {
return PreferenceManager.getDefaultSharedPreferences(application);
}
@Provides
@Named("light_theme")
@Singleton
static SharedPreferences provideLightThemeSharedPreferences(Application application) {
return application.getSharedPreferences(CustomThemeSharedPreferencesUtils.LIGHT_THEME_SHARED_PREFERENCES_FILE, Context.MODE_PRIVATE);
}
@Provides
@Named("dark_theme")
@Singleton
static SharedPreferences provideDarkThemeSharedPreferences(Application application) {
return application.getSharedPreferences(CustomThemeSharedPreferencesUtils.DARK_THEME_SHARED_PREFERENCES_FILE, Context.MODE_PRIVATE);
}
@Provides
@Named("amoled_theme")
@Singleton
static SharedPreferences provideAmoledThemeSharedPreferences(Application application) {
return application.getSharedPreferences(CustomThemeSharedPreferencesUtils.AMOLED_THEME_SHARED_PREFERENCES_FILE, Context.MODE_PRIVATE);
}
@Provides
@Named("sort_type")
static SharedPreferences provideSortTypeSharedPreferences(Application application) {
return application.getSharedPreferences(SharedPreferencesUtils.SORT_TYPE_SHARED_PREFERENCES_FILE, Context.MODE_PRIVATE);
}
@Provides
@Named("post_layout")
static SharedPreferences providePostLayoutSharedPreferences(Application application) {
return application.getSharedPreferences(SharedPreferencesUtils.POST_LAYOUT_SHARED_PREFERENCES_FILE, Context.MODE_PRIVATE);
}
@Provides
@Named("post_feed_scrolled_position_cache")
static SharedPreferences providePostFeedScrolledPositionSharedPreferences(Application application) {
return application.getSharedPreferences(SharedPreferencesUtils.FRONT_PAGE_SCROLLED_POSITION_SHARED_PREFERENCES_FILE, Context.MODE_PRIVATE);
}
@Provides
@Named("main_activity_tabs")
static SharedPreferences provideMainActivityTabsSharedPreferences(Application application) {
return application.getSharedPreferences(SharedPreferencesUtils.MAIN_PAGE_TABS_SHARED_PREFERENCES_FILE, Context.MODE_PRIVATE);
}
@Provides
@Named("nsfw_and_spoiler")
static SharedPreferences provideNsfwAndSpoilerSharedPreferences(Application application) {
return application.getSharedPreferences(SharedPreferencesUtils.NSFW_AND_SPOILER_SHARED_PREFERENCES_FILE, Context.MODE_PRIVATE);
}
@Provides
@Named("bottom_app_bar")
static SharedPreferences provideBottoappBarSharedPreferences(Application application) {
return application.getSharedPreferences(SharedPreferencesUtils.BOTTOM_APP_BAR_SHARED_PREFERENCES_FILE, Context.MODE_PRIVATE);
}
@Provides
@Named("post_history")
static SharedPreferences providePostHistorySharedPreferences(Application application) {
return application.getSharedPreferences(SharedPreferencesUtils.POST_HISTORY_SHARED_PREFERENCES_FILE, Context.MODE_PRIVATE);
}
@Provides
@Named("current_account")
static SharedPreferences provideCurrentAccountSharedPreferences(Application application) {
return application.getSharedPreferences(SharedPreferencesUtils.CURRENT_ACCOUNT_SHARED_PREFERENCES_FILE, Context.MODE_PRIVATE);
}
@Provides
@Named("navigation_drawer")
static SharedPreferences provideNavigationDrawerSharedPreferences(Application application) {
return application.getSharedPreferences(SharedPreferencesUtils.NAVIGATION_DRAWER_SHARED_PREFERENCES_FILE, Context.MODE_PRIVATE);
}
@Provides
@Named("post_details")
static SharedPreferences providePostDetailsSharedPreferences(Application application) {
return application.getSharedPreferences(SharedPreferencesUtils.POST_DETAILS_SHARED_PREFERENCES_FILE, Context.MODE_PRIVATE);
}
@Provides
@Named("security")
@Singleton
static SharedPreferences provideSecuritySharedPreferences(Application application) {
return application.getSharedPreferences(SharedPreferencesUtils.SECURITY_SHARED_PREFERENCES_FILE, Context.MODE_PRIVATE);
}
@Provides
@Named("internal")
@Singleton
static SharedPreferences provideInternalSharedPreferences(Application application) {
return application.getSharedPreferences(SharedPreferencesUtils.INTERNAL_SHARED_PREFERENCES_FILE, Context.MODE_PRIVATE);
}
@Provides
@Named("proxy")
@Singleton
static SharedPreferences provideProxySharedPreferences(Application application) {
return application.getSharedPreferences(SharedPreferencesUtils.PROXY_SHARED_PREFERENCES_FILE, Context.MODE_PRIVATE);
}
@Provides
@Singleton
static CustomThemeWrapper provideCustomThemeWrapper(@Named("light_theme") SharedPreferences lightThemeSharedPreferences,
@Named("dark_theme") SharedPreferences darkThemeSharedPreferences,
@Named("amoled_theme") SharedPreferences amoledThemeSharedPreferences) {
return new CustomThemeWrapper(lightThemeSharedPreferences, darkThemeSharedPreferences, amoledThemeSharedPreferences);
}
@Provides
@Named("app_cache_dir")
static File providesAppCache(Application application) {
return application.getCacheDir();
}
@Provides
@Named("exo_player_cache")
static File providesExoPlayerCache(@Named("app_cache_dir") File appCache) {
return new File(appCache, "/exoplayer");
}
@OptIn(markerClass = UnstableApi.class)
@Provides
static StandaloneDatabaseProvider provideExoDatabaseProvider(Application application) {
return new StandaloneDatabaseProvider(application);
}
@OptIn(markerClass = UnstableApi.class)
@Provides
@Singleton
static SimpleCache provideSimpleCache(StandaloneDatabaseProvider standaloneDatabaseProvider,
@Named("exo_player_cache") File exoPlayerCache) {
return new SimpleCache(exoPlayerCache,
new LeastRecentlyUsedCacheEvictor(200 * 1024 * 1024),
standaloneDatabaseProvider);
}
@OptIn(markerClass = UnstableApi.class)
@Provides
static Config providesMediaConfig(Application application, SimpleCache simpleCache, @Named("media3")OkHttpClient okHttpClient) {
return new Config.Builder(application)
.setDataSourceFactory(new OkHttpDataSource.Factory(okHttpClient).setUserAgent(APIUtils.USER_AGENT))
.setMediaSourceBuilder(MediaSourceBuilder.DEFAULT)
.setCache(simpleCache)
.build();
}
@OptIn(markerClass = UnstableApi.class)
@Provides
static ToroExo providesToroExo(Application application) {
return ToroExo.with(application);
}
@OptIn(markerClass = UnstableApi.class)
@Provides
@Singleton
static ExoCreator provideExoCreator(Config config,
ToroExo toroExo,
@Named("default") SharedPreferences sharedPreferences) {
return new LoopAvailableExoCreator(toroExo, config, sharedPreferences);
}
@Provides
@Singleton
static Executor provideExecutor() {
return Executors.newFixedThreadPool(4);
}
}
================================================
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/CommentModerationActionHandler.kt
================================================
package ml.docilealligator.infinityforreddit
import ml.docilealligator.infinityforreddit.comment.Comment
interface CommentModerationActionHandler {
fun approveComment(comment: Comment, position: Int)
fun removeComment(comment: Comment, position: Int, isSpam: Boolean)
fun toggleLock(comment: Comment, position: Int)
}
================================================
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/Constants.java
================================================
package ml.docilealligator.infinityforreddit;
public class Constants {
public static final int DEFAULT_TAB_COUNT = 3;
public static final int MAX_TAB_COUNT = 6;
}
================================================
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/Converters.kt
================================================
package ml.docilealligator.infinityforreddit
import androidx.room.TypeConverter
import ml.docilealligator.infinityforreddit.comment.DraftType
class Converters {
@TypeConverter
fun fromDraftType(value: DraftType): String {
return value.name
}
@TypeConverter
fun toDraftType(value: String): DraftType {
return DraftType.valueOf(value)
}
}
================================================
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/CustomFontReceiver.java
================================================
package ml.docilealligator.infinityforreddit;
import android.graphics.Typeface;
public interface CustomFontReceiver {
void setCustomFont(Typeface typeface, Typeface titleTypeface, Typeface contentTypeface);
}
================================================
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/DataLoadState.kt
================================================
package ml.docilealligator.infinityforreddit
sealed class DataLoadState<out T> {
object Loading: DataLoadState<Nothing>()
data class Success<T>(val data: T): DataLoadState<T>()
data class Error<T>(val message: String): DataLoadState<T>()
}
================================================
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/DownloadProgressResponseBody.java
================================================
package ml.docilealligator.infinityforreddit;
import java.io.IOException;
import okhttp3.MediaType;
import okhttp3.ResponseBody;
import okio.Buffer;
import okio.BufferedSource;
import okio.ForwardingSource;
import okio.Okio;
import okio.Source;
public class DownloadProgressResponseBody extends ResponseBody {
private final ResponseBody responseBody;
private final ProgressListener progressListener;
private BufferedSource bufferedSource;
public DownloadProgressResponseBody(ResponseBody responseBody, ProgressListener progressListener) {
this.responseBody = responseBody;
this.progressListener = progressListener;
}
@Override public MediaType contentType() {
return responseBody.contentType();
}
@Override public long contentLength() {
return responseBody.contentLength();
}
@Override public BufferedSource source() {
if (bufferedSource == null) {
bufferedSource = Okio.buffer(source(responseBody.source()));
}
return bufferedSource;
}
private Source source(Source source) {
return new ForwardingSource(source) {
long totalBytesRead = 0L;
@Override public long read(Buffer sink, long byteCount) throws IOException {
long bytesRead = super.read(sink, byteCount);
// read() returns the number of bytes read, or -1 if this source is exhausted.
totalBytesRead += bytesRead != -1 ? bytesRead : 0;
progressListener.update(totalBytesRead, responseBody.contentLength(), bytesRead == -1);
return bytesRead;
}
};
}
public interface ProgressListener {
void update(long bytesRead, long contentLength, boolean done);
}
}
================================================
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/FetchPostFilterAndConcatenatedSubredditNames.java
================================================
package ml.docilealligator.infinityforreddit;
import android.os.Handler;
import java.util.List;
import java.util.concurrent.Executor;
import ml.docilealligator.infinityforreddit.account.Account;
import ml.docilealligator.infinityforreddit.multireddit.AnonymousMultiredditSubreddit;
import ml.docilealligator.infinityforreddit.postfilter.PostFilter;
import ml.docilealligator.infinityforreddit.subscribedsubreddit.SubscribedSubredditData;
public class FetchPostFilterAndConcatenatedSubredditNames {
public static void fetchPostFilter(RedditDataRoomDatabase redditDataRoomDatabase, Executor executor,
Handler handler, int postFilterUsage,
String nameOfUsage, FetchPostFilterListerner fetchPostFilterListerner) {
executor.execute(() -> {
List<PostFilter> postFilters = redditDataRoomDatabase.postFilterDao().getValidPostFilters(postFilterUsage, nameOfUsage);
PostFilter mergedPostFilter = PostFilter.mergePostFilter(postFilters);
handler.post(() -> fetchPostFilterListerner.success(mergedPostFilter));
});
}
public static void fetchPostFilterAndConcatenatedSubredditNames(RedditDataRoomDatabase redditDataRoomDatabase, Executor executor,
Handler handler, int postFilterUsage, String nameOfUsage,
FetchPostFilterAndConcatenatecSubredditNamesListener fetchPostFilterAndConcatenatecSubredditNamesListener) {
executor.execute(() -> {
List<PostFilter> postFilters = redditDataRoomDatabase.postFilterDao().getValidPostFilters(postFilterUsage, nameOfUsage);
PostFilter mergedPostFilter = PostFilter.mergePostFilter(postFilters);
List<SubscribedSubredditData> anonymousSubscribedSubreddits = redditDataRoomDatabase.subscribedSubredditDao().getAllSubscribedSubredditsList(Account.ANONYMOUS_ACCOUNT);
if (anonymousSubscribedSubreddits != null && !anonymousSubscribedSubreddits.isEmpty()) {
StringBuilder stringBuilder = new StringBuilder();
for (SubscribedSubredditData s : anonymousSubscribedSubreddits) {
stringBuilder.append(s.getName()).append("+");
}
if (stringBuilder.length() > 0) {
stringBuilder.deleteCharAt(stringBuilder.length() - 1);
}
handler.post(() -> fetchPostFilterAndConcatenatecSubredditNamesListener.success(mergedPostFilter, stringBuilder.toString()));
} else {
handler.post(() -> fetchPostFilterAndConcatenatecSubredditNamesListener.success(mergedPostFilter, null));
}
});
}
public static void fetchPostFilterAndConcatenatedSubredditNames(RedditDataRoomDatabase redditDataRoomDatabase, Executor executor,
Handler handler, String multipath, int postFilterUsage, String nameOfUsage,
FetchPostFilterAndConcatenatecSubredditNamesListener fetchPostFilterAndConcatenatecSubredditNamesListener) {
executor.execute(() -> {
List<PostFilter> postFilters = redditDataRoomDatabase.postFilterDao().getValidPostFilters(postFilterUsage, nameOfUsage);
PostFilter mergedPostFilter = PostFilter.mergePostFilter(postFilters);
List<AnonymousMultiredditSubreddit> anonymousMultiredditSubreddits = redditDataRoomDatabase.anonymousMultiredditSubredditDao().getAllAnonymousMultiRedditSubreddits(multipath);
if (anonymousMultiredditSubreddits != null && !anonymousMultiredditSubreddits.isEmpty()) {
StringBuilder stringBuilder = new StringBuilder();
for (AnonymousMultiredditSubreddit s : anonymousMultiredditSubreddits) {
stringBuilder.append(s.getSubredditName()).append("+");
}
if (stringBuilder.length() > 0) {
stringBuilder.deleteCharAt(stringBuilder.length() - 1);
}
handler.post(() -> fetchPostFilterAndConcatenatecSubredditNamesListener.success(mergedPostFilter, stringBuilder.toString()));
} else {
handler.post(() -> fetchPostFilterAndConcatenatecSubredditNamesListener.success(mergedPostFilter, null));
}
});
}
public interface FetchPostFilterListerner {
void success(PostFilter postFilter);
}
public interface FetchPostFilterAndConcatenatecSubredditNamesListener {
void success(PostFilter postFilter, String concatenatedSubredditNames);
}
}
================================================
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/FetchVideoLinkListener.java
================================================
package ml.docilealligator.infinityforreddit;
import androidx.annotation.Nullable;
import ml.docilealligator.infinityforreddit.post.Post;
import ml.docilealligator.infinityforreddit.thing.StreamableVideo;
public interface FetchVideoLinkListener {
default void onFetchRedditVideoLinkSuccess(Post post, String fileName) {}
default void onFetchImgurVideoLinkSuccess(String videoUrl, String videoDownloadUrl, String fileName) {}
default void onFetchRedgifsVideoLinkSuccess(String webm, String mp4) {}
default void onFetchStreamableVideoLinkSuccess(StreamableVideo streamableVideo) {}
default void onChangeFileName(String fileName) {}
default void onFetchVideoFallbackDirectUrlSuccess(String videoFallbackDirectUrl) {}
default void failed(@Nullable Integer messageRes) {}
}
================================================
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/Infinity.java
================================================
package ml.docilealligator.infinityforreddit;
import android.app.Activity;
import android.app.Application;
import android.app.WallpaperColors;
import android.app.WallpaperManager;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.SharedPreferences;
import android.graphics.Typeface;
import android.net.ConnectivityManager;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.view.WindowManager;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.lifecycle.Lifecycle;
import androidx.lifecycle.LifecycleObserver;
import androidx.lifecycle.OnLifecycleEvent;
import androidx.lifecycle.ProcessLifecycleOwner;
import com.evernote.android.state.StateSaver;
import com.livefront.bridge.Bridge;
import com.livefront.bridge.SavedStateHandler;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import java.util.concurrent.Executor;
import javax.inject.Inject;
import javax.inject.Named;
import ml.docilealligator.infinityforreddit.activities.LockScreenActivity;
import ml.docilealligator.infinityforreddit.broadcastreceivers.NetworkWifiStatusReceiver;
import ml.docilealligator.infinityforreddit.broadcastreceivers.WallpaperChangeReceiver;
import ml.docilealligator.infinityforreddit.customtheme.CustomThemeWrapper;
import ml.docilealligator.infinityforreddit.events.ChangeAppLockEvent;
import ml.docilealligator.infinityforreddit.events.ChangeNetworkStatusEvent;
import ml.docilealligator.infinityforreddit.events.ToggleSecureModeEvent;
import ml.docilealligator.infinityforreddit.font.ContentFontFamily;
import ml.docilealligator.infinityforreddit.font.FontFamily;
import ml.docilealligator.infinityforreddit.font.TitleFontFamily;
import ml.docilealligator.infinityforreddit.utils.APIUtils;
import ml.docilealligator.infinityforreddit.utils.MaterialYouUtils;
import ml.docilealligator.infinityforreddit.utils.SharedPreferencesUtils;
import ml.docilealligator.infinityforreddit.utils.Utils;
public class Infinity extends Application implements LifecycleObserver {
public Typeface typeface;
public Typeface titleTypeface;
public Typeface contentTypeface;
private AppComponent mAppComponent;
private NetworkWifiStatusReceiver mNetworkWifiStatusReceiver;
private boolean appLock;
private long appLockTimeout;
private boolean canStartLockScreenActivity = false;
private boolean isSecureMode;
@Inject
public RedditDataRoomDatabase mRedditDataRoomDatabase;
@Inject
@Named("default")
SharedPreferences mSharedPreferences;
@Inject
@Named("security")
SharedPreferences mSecuritySharedPreferences;
@Inject
@Named("internal")
SharedPreferences mInternalSharedPreferences;
@Inject
@Named("light_theme")
SharedPreferences lightThemeSharedPreferences;
@Inject
@Named("dark_theme")
SharedPreferences darkThemeSharedPreferences;
@Inject
@Named("amoled_theme")
SharedPreferences amoledThemeSharedPreferences;
@Inject
RedditDataRoomDatabase redditDataRoomDatabase;
@Inject
CustomThemeWrapper customThemeWrapper;
@Inject
Executor executor;
@Override
public void onCreate() {
super.onCreate();
mAppComponent = DaggerAppComponent.factory()
.create(this);
mAppComponent.inject(this);
APIUtils.initConfigurableFields(this);
appLock = mSecuritySharedPreferences.getBoolean(SharedPreferencesUtils.APP_LOCK, false);
appLockTimeout = Long.parseLong(mSecuritySharedPreferences.getString(SharedPreferencesUtils.APP_LOCK_TIMEOUT, "600000"));
isSecureMode = mSecuritySharedPreferences.getBoolean(SharedPreferencesUtils.SECURE_MODE, false);
try {
if (mSharedPreferences.getString(SharedPreferencesUtils.FONT_FAMILY_KEY, FontFamily.Default.name()).equals(FontFamily.Custom.name())) {
typeface = Typeface.createFromFile(getExternalFilesDir("fonts") + "/font_family.ttf");
}
if (mSharedPreferences.getString(SharedPreferencesUtils.TITLE_FONT_FAMILY_KEY, TitleFontFamily.Default.name()).equals(TitleFontFamily.Custom.name())) {
titleTypeface = Typeface.createFromFile(getExternalFilesDir("fonts") + "/title_font_family.ttf");
}
if (mSharedPreferences.getString(SharedPreferencesUtils.CONTENT_FONT_FAMILY_KEY, ContentFontFamily.Default.name()).equals(ContentFontFamily.Custom.name())) {
contentTypeface = Typeface.createFromFile(getExternalFilesDir("fonts") + "/content_font_family.ttf");
}
} catch (RuntimeException e) {
e.printStackTrace();
Toast.makeText(this, R.string.unable_to_load_font, Toast.LENGTH_SHORT).show();
}
registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() {
@Override
public void onActivityPreCreated(@NonNull Activity activity, @Nullable Bundle savedInstanceState) {
if (activity instanceof CustomFontReceiver) {
((CustomFontReceiver) activity).setCustomFont(typeface, titleTypeface, contentTypeface);
}
}
@Override
public void onActivityCreated(@NonNull Activity activity, @Nullable Bundle bundle) {
if (isSecureMode) {
activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);
}
}
@Override
public void onActivityStarted(@NonNull Activity activity) {
}
@Override
public void onActivityResumed(@NonNull Activity activity) {
if (canStartLockScreenActivity && appLock
&& System.currentTimeMillis() - mSecuritySharedPreferences.getLong(SharedPreferencesUtils.LAST_FOREGROUND_TIME, 0) >= appLockTimeout
&& !(activity instanceof LockScreenActivity)) {
Intent intent = new Intent(activity, LockScreenActivity.class);
activity.startActivity(intent);
}
canStartLockScreenActivity = false;
}
@Override
public void onActivityPaused(@NonNull Activity activity) {
}
@Override
public void onActivityStopped(@NonNull Activity activity) {
}
@Override
public void onActivitySaveInstanceState(@NonNull Activity activity, @NonNull Bundle bundle) {
}
@Override
public void onActivityDestroyed(@NonNull Activity activity) {
}
});
ProcessLifecycleOwner.get().getLifecycle().addObserver(this);
Bridge.initialize(getApplicationContext(), new SavedStateHandler() {
@Override
public void saveInstanceState(@NonNull Object target, @NonNull Bundle state) {
StateSaver.saveInstanceState(target, state);
}
@Override
public void restoreInstanceState(@NonNull Object target, @Nullable Bundle state) {
StateSaver.restoreInstanceState(target, state);
}
});
EventBus.builder().addIndex(new EventBusIndex()).installDefaultEventBus();
EventBus.getDefault().register(this);
mNetworkWifiStatusReceiver =
new NetworkWifiStatusReceiver(() -> EventBus.getDefault().post(new ChangeNetworkStatusEvent(Utils.getConnectedNetwork(getApplicationContext()))));
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
registerReceiver(mNetworkWifiStatusReceiver, new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION), RECEIVER_NOT_EXPORTED);
registerReceiver(new WallpaperChangeReceiver(mSharedPreferences), new IntentFilter(Intent.ACTION_WALLPAPER_CHANGED), RECEIVER_NOT_EXPORTED);
} else {
registerReceiver(mNetworkWifiStatusReceiver, new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION));
registerReceiver(new WallpaperChangeReceiver(mSharedPreferences), new IntentFilter(Intent.ACTION_WALLPAPER_CHANGED));
}
if (mSharedPreferences.getBoolean(SharedPreferencesUtils.ENABLE_MATERIAL_YOU, false)) {
int sentryColor = mInternalSharedPreferences.getInt(SharedPreferencesUtils.MATERIAL_YOU_SENTRY_COLOR, 0);
boolean sentryColorHasChanged = false;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
if (sentryColor != getColor(android.R.color.system_accent1_100)) {
sentryColorHasChanged = true;
}
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) {
WallpaperManager wallpaperManager = WallpaperManager.getInstance(this);
WallpaperColors wallpaperColors = wallpaperManager.getWallpaperColors(WallpaperManager.FLAG_SYSTEM);
if (wallpaperColors != null) {
int colorPrimaryInt = wallpaperColors.getPrimaryColor().toArgb();
if (sentryColor != colorPrimaryInt) {
sentryColorHasChanged = true;
}
}
}
if (sentryColorHasChanged) {
MaterialYouUtils.changeThemeASync(this, executor, new Handler(Looper.getMainLooper()),
redditDataRoomDatabase, customThemeWrapper,
lightThemeSharedPreferences, darkThemeSharedPreferences,
amoledThemeSharedPreferences, mInternalSharedPreferences, null);
}
}
}
@OnLifecycleEvent(Lifecycle.Event.ON_START)
public void appInForeground() {
canStartLockScreenActivity = true;
}
@OnLifecycleEvent(Lifecycle.Event.ON_STOP)
public void appInBackground() {
if (appLock) {
mSecuritySharedPreferences.edit().putLong(SharedPreferencesUtils.LAST_FOREGROUND_TIME, System.currentTimeMillis()).apply();
}
}
public AppComponent getAppComponent() {
return mAppComponent;
}
public CustomThemeWrapper getCustomThemeWrapper() {
return customThemeWrapper;
}
@Subscribe
public void onToggleSecureModeEvent(ToggleSecureModeEvent secureModeEvent) {
isSecureMode = secureModeEvent.isSecureMode;
}
@Subscribe
public void onChangeAppLockEvent(ChangeAppLockEvent changeAppLockEvent) {
appLock = changeAppLockEvent.appLock;
appLockTimeout = changeAppLockEvent.appLockTimeout;
}
}
================================================
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/NetworkModule.java
================================================
package ml.docilealligator.infinityforreddit;
import android.content.Context;
import android.content.
gitextract_8bwcyaie/ ├── .gitattributes ├── .github/ │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.md │ │ ├── config.yml │ │ └── feature_request.md │ ├── actions/ │ │ └── github-custom-issue-closer │ └── workflows/ │ ├── build.yml │ └── close-issues-custom-pattern.yml ├── .gitignore ├── CHANGELOG.md ├── FAQ.md ├── GIPHY.md ├── LICENSE ├── README.md ├── SETUP-old.md ├── SETUP.md ├── TESTS.md ├── app/ │ ├── Modules/ │ │ └── customtextview-2.1.aar │ ├── build.gradle │ ├── proguard-rules.pro │ └── src/ │ ├── androidTest/ │ │ └── kotlin/ │ │ └── ru/ │ │ └── otus/ │ │ └── pandina/ │ │ ├── screens/ │ │ │ ├── CustomizePostFilterScreen.kt │ │ │ ├── FilteredPostsScreen.kt │ │ │ ├── MainScreen.kt │ │ │ ├── UserAgreementFragment.kt │ │ │ └── navigation/ │ │ │ ├── LoginScreen.kt │ │ │ ├── NavigationViewLayout.kt │ │ │ └── settings/ │ │ │ ├── ActionPanel.kt │ │ │ ├── SettingsScreen.kt │ │ │ ├── ThemeScreen.kt │ │ │ ├── font/ │ │ │ │ ├── FontPreviewScreen.kt │ │ │ │ └── FontScreen.kt │ │ │ ├── interfaceScreen/ │ │ │ │ ├── CustomizeTabsScreen.kt │ │ │ │ └── InterfaceScreen.kt │ │ │ └── notification/ │ │ │ └── NotificationScreen.kt │ │ ├── tests/ │ │ │ ├── APIKeysTest.kt │ │ │ ├── BaseTest.kt │ │ │ ├── LoginTest.kt │ │ │ ├── MainTest.kt │ │ │ └── SettingsTest.kt │ │ └── utils/ │ │ └── NotificationDialogHelper.kt │ ├── debug/ │ │ └── res/ │ │ └── values/ │ │ └── strings.xml │ ├── main/ │ │ ├── AndroidManifest.xml │ │ ├── java/ │ │ │ └── ml/ │ │ │ └── docilealligator/ │ │ │ └── infinityforreddit/ │ │ │ ├── APIResult.kt │ │ │ ├── ActionState.kt │ │ │ ├── AppComponent.java │ │ │ ├── AppModule.java │ │ │ ├── CommentModerationActionHandler.kt │ │ │ ├── Constants.java │ │ │ ├── Converters.kt │ │ │ ├── CustomFontReceiver.java │ │ │ ├── DataLoadState.kt │ │ │ ├── DownloadProgressResponseBody.java │ │ │ ├── FetchPostFilterAndConcatenatedSubredditNames.java │ │ │ ├── FetchVideoLinkListener.java │ │ │ ├── Infinity.java │ │ │ ├── NetworkModule.java │ │ │ ├── NetworkState.java │ │ │ ├── PostModerationActionHandler.kt │ │ │ ├── ProxyEnabledGlideModule.java │ │ │ ├── RecyclerViewContentScrollingInterface.java │ │ │ ├── RedditDataRoomDatabase.java │ │ │ ├── SaveMemoryCenterInisdeDownsampleStrategy.java │ │ │ ├── SetAsWallpaperCallback.java │ │ │ ├── SingleLiveEvent.java │ │ │ ├── VideoLinkFetcher.java │ │ │ ├── WallpaperSetter.java │ │ │ ├── account/ │ │ │ │ ├── Account.java │ │ │ │ ├── AccountDao.java │ │ │ │ ├── AccountDaoKt.kt │ │ │ │ ├── AccountRepository.java │ │ │ │ ├── AccountViewModel.java │ │ │ │ └── FetchMyInfo.java │ │ │ ├── activities/ │ │ │ │ ├── AccountPostsActivity.java │ │ │ │ ├── AccountSavedThingActivity.java │ │ │ │ ├── ActivityToolbarInterface.java │ │ │ │ ├── AppBarStateChangeListener.java │ │ │ │ ├── BaseActivity.java │ │ │ │ ├── CommentActivity.java │ │ │ │ ├── CommentFilterPreferenceActivity.java │ │ │ │ ├── CommentFilterUsageListingActivity.java │ │ │ │ ├── CopyMultiRedditActivity.kt │ │ │ │ ├── CreateMultiRedditActivity.java │ │ │ │ ├── CustomThemeListingActivity.java │ │ │ │ ├── CustomThemePreviewActivity.java │ │ │ │ ├── CustomizeCommentFilterActivity.java │ │ │ │ ├── CustomizePostFilterActivity.java │ │ │ │ ├── CustomizeThemeActivity.java │ │ │ │ ├── EditCommentActivity.java │ │ │ │ ├── EditMultiRedditActivity.java │ │ │ │ ├── EditPostActivity.java │ │ │ │ ├── EditProfileActivity.java │ │ │ │ ├── FilteredPostsActivity.java │ │ │ │ ├── FullMarkdownActivity.java │ │ │ │ ├── HistoryActivity.java │ │ │ │ ├── InboxActivity.java │ │ │ │ ├── LinkResolverActivity.java │ │ │ │ ├── LockScreenActivity.java │ │ │ │ ├── LoginActivity.java │ │ │ │ ├── LoginChromeCustomTabActivity.java │ │ │ │ ├── MainActivity.java │ │ │ │ ├── PostFilterPreferenceActivity.java │ │ │ │ ├── PostFilterUsageListingActivity.java │ │ │ │ ├── PostGalleryActivity.java │ │ │ │ ├── PostImageActivity.java │ │ │ │ ├── PostLinkActivity.java │ │ │ │ ├── PostPollActivity.java │ │ │ │ ├── PostTextActivity.java │ │ │ │ ├── PostVideoActivity.java │ │ │ │ ├── QRCodeScannerActivity.java │ │ │ │ ├── ReportActivity.java │ │ │ │ ├── RulesActivity.java │ │ │ │ ├── SearchActivity.java │ │ │ │ ├── SearchHistoryActivity.java │ │ │ │ ├── SearchResultActivity.java │ │ │ │ ├── SearchSubredditsResultActivity.java │ │ │ │ ├── SearchUsersResultActivity.java │ │ │ │ ├── SelectUserFlairActivity.java │ │ │ │ ├── SelectedSubredditsAndUsersActivity.java │ │ │ │ ├── SendPrivateMessageActivity.java │ │ │ │ ├── SettingsActivity.java │ │ │ │ ├── ShareDataResolverActivity.java │ │ │ │ ├── SubmitCrosspostActivity.java │ │ │ │ ├── SubredditMultiselectionActivity.java │ │ │ │ ├── SubscribedThingListingActivity.java │ │ │ │ ├── SuicidePreventionActivity.java │ │ │ │ ├── UploadImageEnabledActivity.java │ │ │ │ ├── UserMultiselectionActivity.java │ │ │ │ ├── ViewImageOrGifActivity.java │ │ │ │ ├── ViewImgurMediaActivity.java │ │ │ │ ├── ViewMultiRedditDetailActivity.java │ │ │ │ ├── ViewPostDetailActivity.java │ │ │ │ ├── ViewPrivateMessagesActivity.java │ │ │ │ ├── ViewRedditGalleryActivity.java │ │ │ │ ├── ViewSubredditDetailActivity.java │ │ │ │ ├── ViewUserDetailActivity.java │ │ │ │ ├── ViewVideoActivity.java │ │ │ │ ├── ViewVideoActivityBindingAdapter.java │ │ │ │ ├── WebViewActivity.java │ │ │ │ └── WikiActivity.java │ │ │ ├── adapters/ │ │ │ │ ├── AccountChooserRecyclerViewAdapter.java │ │ │ │ ├── AcknowledgementRecyclerViewAdapter.java │ │ │ │ ├── CommentFilterUsageEmbeddedRecyclerViewAdapter.java │ │ │ │ ├── CommentFilterUsageRecyclerViewAdapter.java │ │ │ │ ├── CommentFilterWithUsageRecyclerViewAdapter.java │ │ │ │ ├── CommentsListingRecyclerViewAdapter.java │ │ │ │ ├── CommentsRecyclerViewAdapter.java │ │ │ │ ├── CrashReportsRecyclerViewAdapter.java │ │ │ │ ├── CustomThemeListingRecyclerViewAdapter.java │ │ │ │ ├── CustomizeThemeRecyclerViewAdapter.java │ │ │ │ ├── FlairBottomSheetRecyclerViewAdapter.java │ │ │ │ ├── FollowedUsersRecyclerViewAdapter.java │ │ │ │ ├── MarkdownBottomBarRecyclerViewAdapter.java │ │ │ │ ├── MessageRecyclerViewAdapter.java │ │ │ │ ├── MultiRedditListingRecyclerViewAdapter.java │ │ │ │ ├── OnlineCustomThemeListingRecyclerViewAdapter.java │ │ │ │ ├── Paging3LoadingStateAdapter.java │ │ │ │ ├── PostDetailRecyclerViewAdapter.java │ │ │ │ ├── PostFilterUsageRecyclerViewAdapter.java │ │ │ │ ├── PostFilterWithUsageRecyclerViewAdapter.java │ │ │ │ ├── PostGalleryTypeImageRecyclerViewAdapter.java │ │ │ │ ├── PostRecyclerViewAdapter.java │ │ │ │ ├── PrivateMessagesDetailRecyclerViewAdapter.java │ │ │ │ ├── RedditGallerySubmissionRecyclerViewAdapter.java │ │ │ │ ├── ReportReasonRecyclerViewAdapter.java │ │ │ │ ├── RulesRecyclerViewAdapter.java │ │ │ │ ├── SearchActivityRecyclerViewAdapter.java │ │ │ │ ├── SelectedSubredditsRecyclerViewAdapter.java │ │ │ │ ├── SettingsSearchAdapter.java │ │ │ │ ├── SubredditAutocompleteRecyclerViewAdapter.java │ │ │ │ ├── SubredditListingRecyclerViewAdapter.java │ │ │ │ ├── SubredditMultiselectionRecyclerViewAdapter.java │ │ │ │ ├── SubscribedSubredditsRecyclerViewAdapter.java │ │ │ │ ├── TranslationFragmentRecyclerViewAdapter.java │ │ │ │ ├── UploadedImagesRecyclerViewAdapter.java │ │ │ │ ├── UserFlairRecyclerViewAdapter.java │ │ │ │ ├── UserListingRecyclerViewAdapter.java │ │ │ │ ├── UserMultiselectionRecyclerViewAdapter.java │ │ │ │ └── navigationdrawer/ │ │ │ │ ├── AccountManagementSectionRecyclerViewAdapter.java │ │ │ │ ├── AccountSectionRecyclerViewAdapter.java │ │ │ │ ├── FavoriteSubscribedSubredditsSectionRecyclerViewAdapter.java │ │ │ │ ├── HeaderSectionRecyclerViewAdapter.java │ │ │ │ ├── NavigationDrawerRecyclerViewMergedAdapter.java │ │ │ │ ├── PostFilterUsageEmbeddedRecyclerViewAdapter.java │ │ │ │ ├── PostSectionRecyclerViewAdapter.java │ │ │ │ ├── PreferenceSectionRecyclerViewAdapter.java │ │ │ │ ├── RedditSectionRecyclerViewAdapter.java │ │ │ │ └── SubscribedSubredditsRecyclerViewAdapter.java │ │ │ ├── apis/ │ │ │ │ ├── DownloadFile.java │ │ │ │ ├── ImgurAPI.java │ │ │ │ ├── OhMyDlAPI.kt │ │ │ │ ├── PushshiftAPI.java │ │ │ │ ├── RedditAPI.java │ │ │ │ ├── RedditAPIKt.kt │ │ │ │ ├── RedgifsAPI.java │ │ │ │ ├── RevedditAPI.java │ │ │ │ ├── ServerAPI.java │ │ │ │ ├── StreamableAPI.java │ │ │ │ ├── TitleSuggestion.java │ │ │ │ └── VReddIt.java │ │ │ ├── asynctasks/ │ │ │ │ ├── AccountManagement.java │ │ │ │ ├── AddSubredditOrUserToMultiReddit.java │ │ │ │ ├── BackupSettings.java │ │ │ │ ├── ChangeThemeName.java │ │ │ │ ├── CheckIsFollowingUser.java │ │ │ │ ├── CheckIsSubscribedToSubreddit.java │ │ │ │ ├── DeleteAllPostLayouts.java │ │ │ │ ├── DeleteAllReadPosts.java │ │ │ │ ├── DeleteAllSortTypes.java │ │ │ │ ├── DeleteAllSubreddits.java │ │ │ │ ├── DeleteAllThemes.java │ │ │ │ ├── DeleteAllUsers.java │ │ │ │ ├── DeleteMultiredditInDatabase.java │ │ │ │ ├── DeleteTheme.java │ │ │ │ ├── GetCustomTheme.java │ │ │ │ ├── InsertCustomTheme.java │ │ │ │ ├── InsertMultireddit.java │ │ │ │ ├── InsertSubredditData.java │ │ │ │ ├── InsertSubscribedThings.java │ │ │ │ ├── InsertUserData.java │ │ │ │ ├── LoadSubredditIcon.java │ │ │ │ ├── LoadUserData.java │ │ │ │ ├── ParseAndInsertNewAccount.java │ │ │ │ ├── RestoreSettings.java │ │ │ │ ├── SaveBitmapImageToFile.java │ │ │ │ ├── SaveGIFToFile.java │ │ │ │ └── SetAsWallpaper.java │ │ │ ├── bottomsheetfragments/ │ │ │ │ ├── AccountChooserBottomSheetFragment.java │ │ │ │ ├── CommentFilterOptionsBottomSheetFragment.java │ │ │ │ ├── CommentFilterUsageOptionsBottomSheetFragment.java │ │ │ │ ├── CommentModerationActionBottomSheetFragment.kt │ │ │ │ ├── CommentMoreBottomSheetFragment.java │ │ │ │ ├── CopyTextBottomSheetFragment.java │ │ │ │ ├── CreateThemeBottomSheetFragment.java │ │ │ │ ├── CustomThemeOptionsBottomSheetFragment.java │ │ │ │ ├── FABMoreOptionsBottomSheetFragment.java │ │ │ │ ├── FilteredThingFABMoreOptionsBottomSheetFragment.java │ │ │ │ ├── FlairBottomSheetFragment.java │ │ │ │ ├── GiphyGifInfoBottomSheetFragment.java │ │ │ │ ├── ImportantInfoBottomSheetFragment.java │ │ │ │ ├── KarmaInfoBottomSheetFragment.java │ │ │ │ ├── MultiRedditOptionsBottomSheetFragment.java │ │ │ │ ├── NewCommentFilterUsageBottomSheetFragment.java │ │ │ │ ├── NewPostFilterUsageBottomSheetFragment.java │ │ │ │ ├── PlaybackSpeedBottomSheetFragment.java │ │ │ │ ├── PostCommentSortTypeBottomSheetFragment.java │ │ │ │ ├── PostFilterOptionsBottomSheetFragment.java │ │ │ │ ├── PostFilterUsageOptionsBottomSheetFragment.java │ │ │ │ ├── PostLayoutBottomSheetFragment.java │ │ │ │ ├── PostModerationActionBottomSheetFragment.kt │ │ │ │ ├── PostOptionsBottomSheetFragment.java │ │ │ │ ├── PostTypeBottomSheetFragment.java │ │ │ │ ├── SearchPostSortTypeBottomSheetFragment.java │ │ │ │ ├── SearchUserAndSubredditSortTypeBottomSheetFragment.java │ │ │ │ ├── SelectOrCaptureImageBottomSheetFragment.java │ │ │ │ ├── SelectSubredditsOrUsersOptionsBottomSheetFragment.java │ │ │ │ ├── SetAsWallpaperBottomSheetFragment.java │ │ │ │ ├── SetRedditGalleryItemCaptionAndUrlBottomSheetFragment.java │ │ │ │ ├── ShareBottomSheetFragment.java │ │ │ │ ├── SortTimeBottomSheetFragment.java │ │ │ │ ├── SortTypeBottomSheetFragment.java │ │ │ │ ├── UploadedImagesBottomSheetFragment.java │ │ │ │ ├── UrlMenuBottomSheetFragment.java │ │ │ │ └── UserThingSortTypeBottomSheetFragment.java │ │ │ ├── broadcastreceivers/ │ │ │ │ ├── DownloadedMediaDeleteActionBroadcastReceiver.java │ │ │ │ ├── NetworkWifiStatusReceiver.java │ │ │ │ └── WallpaperChangeReceiver.java │ │ │ ├── comment/ │ │ │ │ ├── Comment.java │ │ │ │ ├── CommentDataSource.java │ │ │ │ ├── CommentDataSourceFactory.java │ │ │ │ ├── CommentDraft.kt │ │ │ │ ├── CommentDraftDao.kt │ │ │ │ ├── CommentViewModel.java │ │ │ │ ├── FetchComment.java │ │ │ │ ├── ParseComment.java │ │ │ │ └── SendComment.java │ │ │ ├── commentfilter/ │ │ │ │ ├── CommentFilter.java │ │ │ │ ├── CommentFilterDao.java │ │ │ │ ├── CommentFilterUsage.java │ │ │ │ ├── CommentFilterUsageDao.java │ │ │ │ ├── CommentFilterUsageViewModel.java │ │ │ │ ├── CommentFilterWithUsage.java │ │ │ │ ├── CommentFilterWithUsageViewModel.java │ │ │ │ ├── DeleteCommentFilter.java │ │ │ │ ├── DeleteCommentFilterUsage.java │ │ │ │ ├── FetchCommentFilter.java │ │ │ │ ├── SaveCommentFilter.java │ │ │ │ └── SaveCommentFilterUsage.java │ │ │ ├── customtheme/ │ │ │ │ ├── CustomTheme.java │ │ │ │ ├── CustomThemeDao.java │ │ │ │ ├── CustomThemeDaoKt.kt │ │ │ │ ├── CustomThemeSettingsItem.java │ │ │ │ ├── CustomThemeViewModel.java │ │ │ │ ├── CustomThemeWrapper.java │ │ │ │ ├── CustomThemeWrapperReceiver.java │ │ │ │ ├── LocalCustomThemeRepository.java │ │ │ │ ├── OnlineCustomThemeFilter.java │ │ │ │ ├── OnlineCustomThemeMetadata.java │ │ │ │ ├── OnlineCustomThemePagingSource.java │ │ │ │ └── OnlineCustomThemeRepository.java │ │ │ ├── customviews/ │ │ │ │ ├── AdjustableTouchSlopItemTouchHelper.java │ │ │ │ ├── AspectRatioGifImageView.java │ │ │ │ ├── ClickableMotionLayout.java │ │ │ │ ├── ColorPickerDialog.java │ │ │ │ ├── CommentIndentationView.java │ │ │ │ ├── CustomDrawerLayout.kt │ │ │ │ ├── CustomToroContainer.java │ │ │ │ ├── GlideGifImageViewFactory.java │ │ │ │ ├── InterceptTouchEventLinearLayout.java │ │ │ │ ├── LandscapeExpandedRoundedBottomSheetDialogFragment.java │ │ │ │ ├── LinearLayoutManagerBugFixed.java │ │ │ │ ├── LollipopBugFixedWebView.java │ │ │ │ ├── LoopAvailableExoCreator.java │ │ │ │ ├── MovableFloatingActionButton.java │ │ │ │ ├── NavigationWrapper.java │ │ │ │ ├── SpoilerOnClickTextView.java │ │ │ │ ├── SwipeLockInterface.java │ │ │ │ ├── SwipeLockLinearLayout.java │ │ │ │ ├── SwipeLockLinearLayoutManager.java │ │ │ │ ├── SwipeLockView.java │ │ │ │ ├── TableHorizontalScrollView.java │ │ │ │ ├── ThemedMaterialSwitch.kt │ │ │ │ ├── TouchInterceptableMaterialCardView.kt │ │ │ │ ├── ViewPagerBugFixed.java │ │ │ │ ├── compose/ │ │ │ │ │ ├── AppTheme.kt │ │ │ │ │ ├── CustomAppBar.kt │ │ │ │ │ ├── CustomImage.kt │ │ │ │ │ ├── CustomLoadingIndicator.kt │ │ │ │ │ ├── CustomSwitch.kt │ │ │ │ │ ├── CustomText.kt │ │ │ │ │ └── CustomTextField.kt │ │ │ │ ├── preference/ │ │ │ │ │ ├── CustomFontEditTextPreference.java │ │ │ │ │ ├── CustomFontListPreference.java │ │ │ │ │ ├── CustomFontPreference.java │ │ │ │ │ ├── CustomFontPreferenceCategory.java │ │ │ │ │ ├── CustomFontPreferenceFragmentCompat.java │ │ │ │ │ ├── CustomFontPreferenceWithBackground.kt │ │ │ │ │ ├── CustomFontSwitchPreference.java │ │ │ │ │ ├── CustomStyleEditTextPreferenceDialogFragmentCompat.kt │ │ │ │ │ ├── CustomStyleListPreferenceDialogFragmentCompat.kt │ │ │ │ │ └── SliderPreference.kt │ │ │ │ └── slidr/ │ │ │ │ ├── ColorPanelSlideListener.java │ │ │ │ ├── ConfigPanelSlideListener.java │ │ │ │ ├── FragmentPanelSlideListener.java │ │ │ │ ├── Slidr.java │ │ │ │ ├── model/ │ │ │ │ │ ├── SlidrConfig.java │ │ │ │ │ ├── SlidrInterface.java │ │ │ │ │ ├── SlidrListener.java │ │ │ │ │ ├── SlidrListenerAdapter.java │ │ │ │ │ └── SlidrPosition.java │ │ │ │ ├── util/ │ │ │ │ │ └── ViewDragHelper.java │ │ │ │ └── widget/ │ │ │ │ ├── ScrimRenderer.java │ │ │ │ └── SliderPanel.java │ │ │ ├── events/ │ │ │ │ ├── ChangeAppLockEvent.java │ │ │ │ ├── ChangeAutoplayNsfwVideosEvent.java │ │ │ │ ├── ChangeCompactLayoutToolbarHiddenByDefaultEvent.java │ │ │ │ ├── ChangeDataSavingModeEvent.java │ │ │ │ ├── ChangeDefaultLinkPostLayoutEvent.java │ │ │ │ ├── ChangeDefaultPostLayoutEvent.java │ │ │ │ ├── ChangeDefaultPostLayoutUnfoldedEvent.java │ │ │ │ ├── ChangeDisableImagePreviewEvent.java │ │ │ │ ├── ChangeDisableSwipingBetweenTabsEvent.java │ │ │ │ ├── ChangeEasierToWatchInFullScreenEvent.java │ │ │ │ ├── ChangeEnableSwipeActionSwitchEvent.java │ │ │ │ ├── ChangeFixedHeightPreviewInCardEvent.java │ │ │ │ ├── ChangeHideFabInPostFeedEvent.java │ │ │ │ ├── ChangeHideKarmaEvent.java │ │ │ │ ├── ChangeHidePostFlairEvent.java │ │ │ │ ├── ChangeHidePostTypeEvent.java │ │ │ │ ├── ChangeHideSubredditAndUserPrefixEvent.java │ │ │ │ ├── ChangeHideTextPostContent.java │ │ │ │ ├── ChangeHideTheNumberOfCommentsEvent.java │ │ │ │ ├── ChangeHideTheNumberOfVotesEvent.java │ │ │ │ ├── ChangeInboxCountEvent.java │ │ │ │ ├── ChangeLockBottomAppBarEvent.java │ │ │ │ ├── ChangeLongPressToHideToolbarInCompactLayoutEvent.java │ │ │ │ ├── ChangeMuteAutoplayingVideosEvent.java │ │ │ │ ├── ChangeMuteNSFWVideoEvent.java │ │ │ │ ├── ChangeNSFWBlurEvent.java │ │ │ │ ├── ChangeNSFWEvent.java │ │ │ │ ├── ChangeNetworkStatusEvent.java │ │ │ │ ├── ChangeOnlyDisablePreviewInVideoAndGifPostsEvent.java │ │ │ │ ├── ChangePostFeedMaxResolutionEvent.java │ │ │ │ ├── ChangePostLayoutEvent.java │ │ │ │ ├── ChangePullToRefreshEvent.java │ │ │ │ ├── ChangeRememberMutingOptionInPostFeedEvent.java │ │ │ │ ├── ChangeRequireAuthToAccountSectionEvent.java │ │ │ │ ├── ChangeSavePostFeedScrolledPositionEvent.java │ │ │ │ ├── ChangeShowAbsoluteNumberOfVotesEvent.java │ │ │ │ ├── ChangeShowAvatarOnTheRightInTheNavigationDrawerEvent.java │ │ │ │ ├── ChangeShowElapsedTimeEvent.java │ │ │ │ ├── ChangeSpoilerBlurEvent.java │ │ │ │ ├── ChangeStartAutoplayVisibleAreaOffsetEvent.java │ │ │ │ ├── ChangeSwipeActionEvent.java │ │ │ │ ├── ChangeSwipeActionThresholdEvent.java │ │ │ │ ├── ChangeTimeFormatEvent.java │ │ │ │ ├── ChangeVibrateWhenActionTriggeredEvent.java │ │ │ │ ├── ChangeVideoAutoplayEvent.java │ │ │ │ ├── ChangeVoteButtonsPositionEvent.java │ │ │ │ ├── FinishViewMediaActivityEvent.kt │ │ │ │ ├── FlairSelectedEvent.java │ │ │ │ ├── GoBackToMainPageEvent.java │ │ │ │ ├── NeedForPostListFromPostFragmentEvent.java │ │ │ │ ├── NewUserLoggedInEvent.java │ │ │ │ ├── PassPrivateMessageEvent.java │ │ │ │ ├── PassPrivateMessageIndexEvent.java │ │ │ │ ├── PostUpdateEventToPostDetailFragment.java │ │ │ │ ├── PostUpdateEventToPostList.java │ │ │ │ ├── ProvidePostListToViewPostDetailActivityEvent.java │ │ │ │ ├── RecreateActivityEvent.java │ │ │ │ ├── RefreshMultiRedditsEvent.java │ │ │ │ ├── RepliedToPrivateMessageEvent.java │ │ │ │ ├── ShowDividerInCompactLayoutPreferenceEvent.java │ │ │ │ ├── ShowThumbnailOnTheLeftInCompactLayoutEvent.java │ │ │ │ ├── SubmitChangeAvatarEvent.java │ │ │ │ ├── SubmitChangeBannerEvent.java │ │ │ │ ├── SubmitCrosspostEvent.java │ │ │ │ ├── SubmitGalleryPostEvent.java │ │ │ │ ├── SubmitImagePostEvent.java │ │ │ │ ├── SubmitPollPostEvent.java │ │ │ │ ├── SubmitSaveProfileEvent.java │ │ │ │ ├── SubmitTextOrLinkPostEvent.java │ │ │ │ ├── SubmitVideoOrGifPostEvent.java │ │ │ │ ├── SwitchAccountEvent.java │ │ │ │ └── ToggleSecureModeEvent.java │ │ │ ├── font/ │ │ │ │ ├── ContentFontFamily.java │ │ │ │ ├── ContentFontStyle.java │ │ │ │ ├── FontFamily.java │ │ │ │ ├── FontStyle.java │ │ │ │ ├── TitleFontFamily.java │ │ │ │ └── TitleFontStyle.java │ │ │ ├── fragments/ │ │ │ │ ├── CommentsListingFragment.java │ │ │ │ ├── CustomThemeListingFragment.java │ │ │ │ ├── FollowedUsersListingFragment.java │ │ │ │ ├── FragmentCommunicator.java │ │ │ │ ├── HistoryPostFragment.java │ │ │ │ ├── InboxFragment.java │ │ │ │ ├── MorePostsInfoFragment.java │ │ │ │ ├── MultiRedditListingFragment.java │ │ │ │ ├── PostFragment.java │ │ │ │ ├── PostFragmentBase.java │ │ │ │ ├── SidebarFragment.java │ │ │ │ ├── SubredditListingFragment.java │ │ │ │ ├── SubscribedSubredditsListingFragment.java │ │ │ │ ├── ThemePreviewCommentsFragment.java │ │ │ │ ├── ThemePreviewPostsFragment.java │ │ │ │ ├── UserListingFragment.java │ │ │ │ ├── ViewImgurImageFragment.java │ │ │ │ ├── ViewImgurVideoFragment.java │ │ │ │ ├── ViewImgurVideoFragmentBindingAdapter.java │ │ │ │ ├── ViewPostDetailFragment.java │ │ │ │ ├── ViewRedditGalleryImageOrGifFragment.java │ │ │ │ ├── ViewRedditGalleryVideoFragment.java │ │ │ │ └── ViewRedditGalleryVideoFragmentBindingAdapter.java │ │ │ ├── markdown/ │ │ │ │ ├── BlockQuoteWithExceptionParser.java │ │ │ │ ├── CustomMarkwonAdapter.java │ │ │ │ ├── Emote.java │ │ │ │ ├── EmoteCloseBracketInlineProcessor.java │ │ │ │ ├── EmoteInlineProcessor.java │ │ │ │ ├── EmotePlugin.java │ │ │ │ ├── EmoteSpanFactory.java │ │ │ │ ├── EvenBetterLinkMovementMethod.java │ │ │ │ ├── GiphyGifBlock.java │ │ │ │ ├── GiphyGifBlockParser.java │ │ │ │ ├── GiphyGifPlugin.java │ │ │ │ ├── ImageAndGifBlock.java │ │ │ │ ├── ImageAndGifBlockParser.java │ │ │ │ ├── ImageAndGifEntry.java │ │ │ │ ├── ImageAndGifPlugin.java │ │ │ │ ├── MarkdownUtils.java │ │ │ │ ├── RedditHeadingParser.java │ │ │ │ ├── RedditHeadingPlugin.java │ │ │ │ ├── RichTextJSONConverter.java │ │ │ │ ├── SpoilerAwareMovementMethod.java │ │ │ │ ├── SpoilerClosingInlineProcessor.java │ │ │ │ ├── SpoilerNode.java │ │ │ │ ├── SpoilerOpeningBracket.java │ │ │ │ ├── SpoilerOpeningBracketStorage.java │ │ │ │ ├── SpoilerOpeningInlineProcessor.java │ │ │ │ ├── SpoilerParserPlugin.java │ │ │ │ ├── SpoilerSpan.java │ │ │ │ ├── Superscript.java │ │ │ │ ├── SuperscriptClosingInlineProcessor.java │ │ │ │ ├── SuperscriptOpening.java │ │ │ │ ├── SuperscriptOpeningBracket.java │ │ │ │ ├── SuperscriptOpeningInlineProcessor.java │ │ │ │ ├── SuperscriptOpeningStorage.java │ │ │ │ ├── SuperscriptPlugin.java │ │ │ │ ├── SuperscriptSpan.java │ │ │ │ ├── UploadedImageBlock.java │ │ │ │ ├── UploadedImageBlockParser.java │ │ │ │ └── UploadedImagePlugin.java │ │ │ ├── message/ │ │ │ │ ├── ComposeMessage.java │ │ │ │ ├── FetchMessage.java │ │ │ │ ├── Message.java │ │ │ │ ├── MessageDataSource.java │ │ │ │ ├── MessageDataSourceFactory.java │ │ │ │ ├── MessageViewModel.java │ │ │ │ ├── ParseMessage.java │ │ │ │ ├── ReadMessage.java │ │ │ │ └── ReplyMessage.java │ │ │ ├── moderation/ │ │ │ │ ├── CommentModerationEvent.kt │ │ │ │ └── PostModerationEvent.kt │ │ │ ├── multireddit/ │ │ │ │ ├── AnonymousMultiredditSubreddit.java │ │ │ │ ├── AnonymousMultiredditSubredditDao.java │ │ │ │ ├── AnonymousMultiredditSubredditDaoKt.kt │ │ │ │ ├── CreateMultiReddit.java │ │ │ │ ├── DeleteMultiReddit.java │ │ │ │ ├── EditMultiReddit.java │ │ │ │ ├── ExpandedSubredditInMultiReddit.java │ │ │ │ ├── FavoriteMultiReddit.java │ │ │ │ ├── FetchMultiRedditInfo.java │ │ │ │ ├── FetchMyMultiReddits.java │ │ │ │ ├── MultiReddit.java │ │ │ │ ├── MultiRedditDao.java │ │ │ │ ├── MultiRedditDaoKt.kt │ │ │ │ ├── MultiRedditJSONModel.java │ │ │ │ ├── MultiRedditRepository.java │ │ │ │ ├── MultiRedditViewModel.java │ │ │ │ ├── ParseMultiReddit.java │ │ │ │ └── SubredditInMultiReddit.java │ │ │ ├── network/ │ │ │ │ ├── AccessTokenAuthenticator.java │ │ │ │ ├── AnyAccountAccessTokenAuthenticator.java │ │ │ │ ├── RedgifsAccessTokenAuthenticator.java │ │ │ │ ├── ServerAccessTokenAuthenticator.java │ │ │ │ ├── SortTypeConverter.java │ │ │ │ └── SortTypeConverterFactory.java │ │ │ ├── post/ │ │ │ │ ├── FetchPost.java │ │ │ │ ├── FetchRules.java │ │ │ │ ├── FetchStreamableVideo.java │ │ │ │ ├── HidePost.java │ │ │ │ ├── HistoryPostPagingSource.java │ │ │ │ ├── HistoryPostViewModel.java │ │ │ │ ├── ImgurMedia.java │ │ │ │ ├── LoadingMorePostsStatus.java │ │ │ │ ├── MarkPostAsReadInterface.java │ │ │ │ ├── ParsePost.java │ │ │ │ ├── PollPayload.java │ │ │ │ ├── Post.java │ │ │ │ ├── PostPagingSource.java │ │ │ │ ├── PostViewModel.java │ │ │ │ ├── RedditGalleryPayload.java │ │ │ │ └── SubmitPost.java │ │ │ ├── postfilter/ │ │ │ │ ├── DeletePostFilter.java │ │ │ │ ├── DeletePostFilterUsage.java │ │ │ │ ├── PostFilter.java │ │ │ │ ├── PostFilterDao.java │ │ │ │ ├── PostFilterUsage.java │ │ │ │ ├── PostFilterUsageDao.java │ │ │ │ ├── PostFilterUsageViewModel.java │ │ │ │ ├── PostFilterWithUsage.java │ │ │ │ ├── PostFilterWithUsageViewModel.java │ │ │ │ ├── SavePostFilter.java │ │ │ │ └── SavePostFilterUsage.java │ │ │ ├── readpost/ │ │ │ │ ├── InsertReadPost.java │ │ │ │ ├── NullReadPostsList.java │ │ │ │ ├── ReadPost.java │ │ │ │ ├── ReadPostDao.java │ │ │ │ ├── ReadPostsList.java │ │ │ │ ├── ReadPostsListInterface.java │ │ │ │ └── ReadPostsUtils.java │ │ │ ├── recentsearchquery/ │ │ │ │ ├── InsertRecentSearchQuery.java │ │ │ │ ├── RecentSearchQuery.java │ │ │ │ ├── RecentSearchQueryDao.java │ │ │ │ ├── RecentSearchQueryRepository.java │ │ │ │ └── RecentSearchQueryViewModel.java │ │ │ ├── repositories/ │ │ │ │ ├── CommentActivityRepository.kt │ │ │ │ ├── CopyMultiRedditActivityRepository.kt │ │ │ │ └── EditCommentActivityRepository.kt │ │ │ ├── services/ │ │ │ │ ├── DownloadMediaService.java │ │ │ │ ├── DownloadRedditVideoService.java │ │ │ │ ├── EditProfileService.java │ │ │ │ └── SubmitPostService.java │ │ │ ├── settings/ │ │ │ │ ├── APIKeysPreferenceFragment.java │ │ │ │ ├── AboutPreferenceFragment.java │ │ │ │ ├── Acknowledgement.java │ │ │ │ ├── AcknowledgementFragment.java │ │ │ │ ├── AdvancedPreferenceFragment.java │ │ │ │ ├── CommentPreferenceFragment.java │ │ │ │ ├── CrashReportsFragment.java │ │ │ │ ├── CreditsPreferenceFragment.java │ │ │ │ ├── CustomizeBottomAppBarFragment.java │ │ │ │ ├── CustomizeMainPageTabsFragment.java │ │ │ │ ├── DataSavingModePreferenceFragment.java │ │ │ │ ├── DebugPreferenceFragment.java │ │ │ │ ├── DownloadLocationPreferenceFragment.java │ │ │ │ ├── FontPreferenceFragment.java │ │ │ │ ├── FontPreviewFragment.java │ │ │ │ ├── GesturesAndButtonsPreferenceFragment.java │ │ │ │ ├── ImmersiveInterfacePreferenceFragment.java │ │ │ │ ├── InterfacePreferenceFragment.java │ │ │ │ ├── MainPreferenceFragment.java │ │ │ │ ├── MiscellaneousPreferenceFragment.java │ │ │ │ ├── NavigationDrawerPreferenceFragment.java │ │ │ │ ├── NotificationPreferenceFragment.java │ │ │ │ ├── NsfwAndSpoilerFragment.java │ │ │ │ ├── NumberOfColumnsInPostFeedPreferenceFragment.java │ │ │ │ ├── PostDetailsPreferenceFragment.java │ │ │ │ ├── PostHistoryFragment.java │ │ │ │ ├── PostPreferenceFragment.java │ │ │ │ ├── ProxyPreferenceFragment.java │ │ │ │ ├── SecurityPreferenceFragment.java │ │ │ │ ├── SettingsSearchFragment.java │ │ │ │ ├── SettingsSearchItem.java │ │ │ │ ├── SettingsSearchRegistry.java │ │ │ │ ├── SortTypePreferenceFragment.java │ │ │ │ ├── SwipeActionPreferenceFragment.java │ │ │ │ ├── ThemePreferenceFragment.java │ │ │ │ ├── TimeFormatPreferenceFragment.java │ │ │ │ ├── Translation.java │ │ │ │ ├── TranslationFragment.java │ │ │ │ └── VideoPreferenceFragment.java │ │ │ ├── subreddit/ │ │ │ │ ├── FetchFlairs.java │ │ │ │ ├── FetchSubredditData.java │ │ │ │ ├── Flair.java │ │ │ │ ├── ParseSubredditData.java │ │ │ │ ├── Rule.java │ │ │ │ ├── SubredditDao.java │ │ │ │ ├── SubredditData.java │ │ │ │ ├── SubredditListingDataSource.java │ │ │ │ ├── SubredditListingDataSourceFactory.java │ │ │ │ ├── SubredditListingViewModel.java │ │ │ │ ├── SubredditRepository.java │ │ │ │ ├── SubredditSettingData.java │ │ │ │ ├── SubredditSubscription.java │ │ │ │ ├── SubredditViewModel.java │ │ │ │ ├── SubredditWithSelection.java │ │ │ │ └── shortcut/ │ │ │ │ └── ShortcutManager.java │ │ │ ├── subscribedsubreddit/ │ │ │ │ ├── SubscribedSubredditDao.java │ │ │ │ ├── SubscribedSubredditData.java │ │ │ │ ├── SubscribedSubredditRepository.java │ │ │ │ └── SubscribedSubredditViewModel.java │ │ │ ├── subscribeduser/ │ │ │ │ ├── SubscribedUserDao.java │ │ │ │ ├── SubscribedUserData.java │ │ │ │ ├── SubscribedUserRepository.java │ │ │ │ └── SubscribedUserViewModel.java │ │ │ ├── thing/ │ │ │ │ ├── DeleteThing.java │ │ │ │ ├── FavoriteThing.java │ │ │ │ ├── FetchRedgifsVideoLinks.java │ │ │ │ ├── FetchSubscribedThing.java │ │ │ │ ├── GiphyGif.java │ │ │ │ ├── MediaMetadata.java │ │ │ │ ├── ReplyNotificationsToggle.java │ │ │ │ ├── ReportReason.java │ │ │ │ ├── ReportThing.java │ │ │ │ ├── SaveThing.java │ │ │ │ ├── SelectThingReturnKey.java │ │ │ │ ├── SortType.java │ │ │ │ ├── SortTypeSelectionCallback.java │ │ │ │ ├── StreamableVideo.java │ │ │ │ ├── TrendingSearch.java │ │ │ │ ├── UploadedImage.java │ │ │ │ └── VoteThing.java │ │ │ ├── user/ │ │ │ │ ├── BlockUser.java │ │ │ │ ├── FetchUserData.java │ │ │ │ ├── FetchUserFlairs.java │ │ │ │ ├── SelectUserFlair.java │ │ │ │ ├── UserDao.java │ │ │ │ ├── UserData.java │ │ │ │ ├── UserFlair.java │ │ │ │ ├── UserFollowing.java │ │ │ │ ├── UserListingDataSource.java │ │ │ │ ├── UserListingDataSourceFactory.java │ │ │ │ ├── UserListingViewModel.java │ │ │ │ ├── UserProfileImagesBatchLoader.java │ │ │ │ ├── UserRepository.java │ │ │ │ ├── UserViewModel.java │ │ │ │ └── UserWithSelection.java │ │ │ ├── utils/ │ │ │ │ ├── APIUtils.java │ │ │ │ ├── AppRestartHelper.java │ │ │ │ ├── ColorUtils.kt │ │ │ │ ├── CommentScrollPositionCache.java │ │ │ │ ├── CustomThemeSharedPreferencesUtils.java │ │ │ │ ├── EditProfileUtils.java │ │ │ │ ├── GlideImageGetter.java │ │ │ │ ├── JSONUtils.java │ │ │ │ ├── MaterialYouUtils.java │ │ │ │ ├── NotificationUtils.java │ │ │ │ ├── ShareScreenshotUtils.kt │ │ │ │ ├── SharedPreferencesLiveData.kt │ │ │ │ ├── SharedPreferencesUtils.java │ │ │ │ ├── UploadImageUtils.java │ │ │ │ └── Utils.java │ │ │ ├── videoautoplay/ │ │ │ │ ├── BaseMeter.java │ │ │ │ ├── CacheManager.java │ │ │ │ ├── Config.java │ │ │ │ ├── DefaultExoCreator.java │ │ │ │ ├── ExoCreator.java │ │ │ │ ├── ExoPlayable.java │ │ │ │ ├── ExoPlayerViewHelper.java │ │ │ │ ├── MediaSourceBuilder.java │ │ │ │ ├── MultiPlayPlayerSelector.kt │ │ │ │ ├── Playable.java │ │ │ │ ├── PlayableImpl.java │ │ │ │ ├── PlayerDispatcher.java │ │ │ │ ├── PlayerSelector.java │ │ │ │ ├── ToroExo.java │ │ │ │ ├── ToroExoPlayer.java │ │ │ │ ├── ToroPlayer.java │ │ │ │ ├── ToroUtil.java │ │ │ │ ├── annotations/ │ │ │ │ │ ├── Beta.java │ │ │ │ │ ├── RemoveIn.java │ │ │ │ │ └── Sorted.java │ │ │ │ ├── helper/ │ │ │ │ │ └── ToroPlayerHelper.java │ │ │ │ ├── media/ │ │ │ │ │ ├── DrmMedia.java │ │ │ │ │ ├── PlaybackInfo.java │ │ │ │ │ └── VolumeInfo.java │ │ │ │ └── widget/ │ │ │ │ ├── Common.java │ │ │ │ ├── Container.java │ │ │ │ ├── PlaybackInfoCache.java │ │ │ │ ├── PlayerManager.java │ │ │ │ └── PressablePlayerSelector.java │ │ │ ├── viewmodels/ │ │ │ │ ├── CommentActivityViewModel.kt │ │ │ │ ├── CopyMultiRedditActivityViewModel.kt │ │ │ │ ├── EditCommentActivityViewModel.kt │ │ │ │ ├── ViewPostDetailActivityViewModel.java │ │ │ │ └── ViewPostDetailFragmentViewModel.kt │ │ │ └── worker/ │ │ │ ├── MaterialYouWorker.java │ │ │ └── PullNotificationWorker.java │ │ └── res/ │ │ ├── anim/ │ │ │ ├── enter_from_left.xml │ │ │ ├── enter_from_right.xml │ │ │ ├── exit_to_left.xml │ │ │ ├── exit_to_right.xml │ │ │ ├── slide_out_down.xml │ │ │ └── slide_out_up.xml │ │ ├── drawable/ │ │ │ ├── background_autoplay.xml │ │ │ ├── circular_background.xml │ │ │ ├── edit_text_cursor.xml │ │ │ ├── error_image.xml │ │ │ ├── exo_control_button_background.xml │ │ │ ├── exo_player_control_button_circular_background.xml │ │ │ ├── exo_player_control_view_background.xml │ │ │ ├── flag_brazil.xml │ │ │ ├── flag_bulgaria.xml │ │ │ ├── flag_china.xml │ │ │ ├── flag_croatia.xml │ │ │ ├── flag_france.xml │ │ │ ├── flag_germany.xml │ │ │ ├── flag_greece.xml │ │ │ ├── flag_hungary.xml │ │ │ ├── flag_india.xml │ │ │ ├── flag_israel.xml │ │ │ ├── flag_italy.xml │ │ │ ├── flag_japan.xml │ │ │ ├── flag_netherlands.xml │ │ │ ├── flag_norway.xml │ │ │ ├── flag_poland.xml │ │ │ ├── flag_portugal.xml │ │ │ ├── flag_romania.xml │ │ │ ├── flag_russia.xml │ │ │ ├── flag_somalia.xml │ │ │ ├── flag_south_korea.xml │ │ │ ├── flag_spain.xml │ │ │ ├── flag_sweden.xml │ │ │ ├── flag_turkey.xml │ │ │ ├── flag_vietnam.xml │ │ │ ├── ic_about_day_night_24dp.xml │ │ │ ├── ic_access_time_day_night_24dp.xml │ │ │ ├── ic_account_circle_day_night_24dp.xml │ │ │ ├── ic_add_24dp.xml │ │ │ ├── ic_add_a_photo_24dp.xml │ │ │ ├── ic_add_a_photo_day_night_24dp.xml │ │ │ ├── ic_add_circle_outline_day_night_24dp.xml │ │ │ ├── ic_add_day_night_24dp.xml │ │ │ ├── ic_advanced_day_night_24dp.xml │ │ │ ├── ic_amoled_theme_preference_day_night_24dp.xml │ │ │ ├── ic_anonymous_day_night_24dp.xml │ │ │ ├── ic_apply_to_day_night_24dp.xml │ │ │ ├── ic_approve_24dp.xml │ │ │ ├── ic_archive_outline.xml │ │ │ ├── ic_arrow_back_24dp.xml │ │ │ ├── ic_arrow_back_white_24dp.xml │ │ │ ├── ic_arrow_downward_day_night_24dp.xml │ │ │ ├── ic_arrow_downward_grey_24dp.xml │ │ │ ├── ic_arrow_upward_day_night_24dp.xml │ │ │ ├── ic_arrow_upward_grey_24dp.xml │ │ │ ├── ic_baseline_arrow_drop_down_24dp.xml │ │ │ ├── ic_baseline_arrow_drop_up_24dp.xml │ │ │ ├── ic_best_24.xml │ │ │ ├── ic_bold_black_24dp.xml │ │ │ ├── ic_bookmark_border_day_night_24dp.xml │ │ │ ├── ic_bookmark_border_grey_24dp.xml │ │ │ ├── ic_bookmark_border_toolbar_24dp.xml │ │ │ ├── ic_bookmark_day_night_24dp.xml │ │ │ ├── ic_bookmark_grey_24dp.xml │ │ │ ├── ic_bookmark_toolbar_24dp.xml │ │ │ ├── ic_bookmarks_day_night_24dp.xml │ │ │ ├── ic_call_split_24.xml │ │ │ ├── ic_check_circle_day_night_24dp.xml │ │ │ ├── ic_check_circle_toolbar_24dp.xml │ │ │ ├── ic_close_24dp.xml │ │ │ ├── ic_code_24dp.xml │ │ │ ├── ic_color_lens_day_night_24dp.xml │ │ │ ├── ic_comment_grey_24dp.xml │ │ │ ├── ic_comment_toolbar_24dp.xml │ │ │ ├── ic_controversial_24.xml │ │ │ ├── ic_copy_16dp.xml │ │ │ ├── ic_copy_day_night_24dp.xml │ │ │ ├── ic_crosspost_24dp.xml │ │ │ ├── ic_current_user_14dp.xml │ │ │ ├── ic_dark_theme_24dp.xml │ │ │ ├── ic_dark_theme_preference_day_night_24dp.xml │ │ │ ├── ic_data_saving_mode_day_night_24dp.xml │ │ │ ├── ic_delete_all_24.xml │ │ │ ├── ic_delete_day_night_24dp.xml │ │ │ ├── ic_distinguish_as_mod_24dp.xml │ │ │ ├── ic_dot_outline.xml │ │ │ ├── ic_download_day_night_24dp.xml │ │ │ ├── ic_downvote_24dp.xml │ │ │ ├── ic_downvote_filled_24dp.xml │ │ │ ├── ic_edit_day_night_24dp.xml │ │ │ ├── ic_error_outline_black_day_night_24dp.xml │ │ │ ├── ic_error_outline_white_24dp.xml │ │ │ ├── ic_error_white_36dp.xml │ │ │ ├── ic_exit_day_night_24dp.xml │ │ │ ├── ic_expand_less_grey_24dp.xml │ │ │ ├── ic_expand_more_grey_24dp.xml │ │ │ ├── ic_fast_forward_24dp.xml │ │ │ ├── ic_fast_rewind_24dp.xml │ │ │ ├── ic_favorite_24dp.xml │ │ │ ├── ic_favorite_border_24dp.xml │ │ │ ├── ic_file_download_toolbar_white_24dp.xml │ │ │ ├── ic_filter_day_night_24dp.xml │ │ │ ├── ic_font_size_day_night_24dp.xml │ │ │ ├── ic_fullscreen_white_rounded_24dp.xml │ │ │ ├── ic_gallery_day_night_24dp.xml │ │ │ ├── ic_gesture_day_night_24dp.xml │ │ │ ├── ic_gif_24dp.xml │ │ │ ├── ic_give_award_day_night_24dp.xml │ │ │ ├── ic_hide_post_day_night_24dp.xml │ │ │ ├── ic_hide_read_posts_day_night_24dp.xml │ │ │ ├── ic_history_day_night_24dp.xml │ │ │ ├── ic_home_day_night_24dp.xml │ │ │ ├── ic_hot_24dp.xml │ │ │ ├── ic_image_day_night_24dp.xml │ │ │ ├── ic_import_day_night_24dp.xml │ │ │ ├── ic_inbox_day_night_24dp.xml │ │ │ ├── ic_info_preference_day_night_24dp.xml │ │ │ ├── ic_interface_day_night_24dp.xml │ │ │ ├── ic_italic_black_24dp.xml │ │ │ ├── ic_key_day_night_24dp.xml │ │ │ ├── ic_keyboard_arrow_down_24dp.xml │ │ │ ├── ic_keyboard_double_arrow_up_day_night_24dp.xml │ │ │ ├── ic_language_day_night_24dp.xml │ │ │ ├── ic_launcher_foreground.xml │ │ │ ├── ic_launcher_foreground_monochrome.xml │ │ │ ├── ic_light_theme_24dp.xml │ │ │ ├── ic_light_theme_preference_day_night_24dp.xml │ │ │ ├── ic_link_day_night_24dp.xml │ │ │ ├── ic_link_post_type_indicator_day_night_24dp.xml │ │ │ ├── ic_link_round_black_24dp.xml │ │ │ ├── ic_lock_day_night_24dp.xml │ │ │ ├── ic_log_out_day_night_24dp.xml │ │ │ ├── ic_login_24dp.xml │ │ │ ├── ic_mark_nsfw_24dp.xml │ │ │ ├── ic_mic_14dp.xml │ │ │ ├── ic_miscellaneous_day_night_24dp.xml │ │ │ ├── ic_mod_24dp.xml │ │ │ ├── ic_more_vert_grey_24dp.xml │ │ │ ├── ic_multi_reddit_day_night_24dp.xml │ │ │ ├── ic_mute_24dp.xml │ │ │ ├── ic_mute_preferences_day_night_24dp.xml │ │ │ ├── ic_new_24.xml │ │ │ ├── ic_notification.xml │ │ │ ├── ic_notifications_day_night_24dp.xml │ │ │ ├── ic_nsfw_off_day_night_24dp.xml │ │ │ ├── ic_nsfw_on_day_night_24dp.xml │ │ │ ├── ic_open_link_day_night_24dp.xml │ │ │ ├── ic_ordered_list_black_24dp.xml │ │ │ ├── ic_pause_24dp.xml │ │ │ ├── ic_play_arrow_24dp.xml │ │ │ ├── ic_play_circle_24dp.xml │ │ │ ├── ic_play_circle_36dp.xml │ │ │ ├── ic_playback_speed_day_night_24dp.xml │ │ │ ├── ic_playback_speed_toolbar_24dp.xml │ │ │ ├── ic_poll_day_night_24dp.xml │ │ │ ├── ic_post_layout_day_night_24dp.xml │ │ │ ├── ic_preview_day_night_24dp.xml │ │ │ ├── ic_privacy_policy_day_night_24dp.xml │ │ │ ├── ic_quote_24dp.xml │ │ │ ├── ic_quote_left_24dp.xml │ │ │ ├── ic_random_day_night_24dp.xml │ │ │ ├── ic_refresh_day_night_24dp.xml │ │ │ ├── ic_remove_24dp.xml │ │ │ ├── ic_reply_day_night_24dp.xml │ │ │ ├── ic_reply_grey_24dp.xml │ │ │ ├── ic_report_day_night_24dp.xml │ │ │ ├── ic_rising_24dp.xml │ │ │ ├── ic_save_to_database_day_night_24dp.xml │ │ │ ├── ic_search_day_night_24dp.xml │ │ │ ├── ic_search_toolbar_24dp.xml │ │ │ ├── ic_security_day_night_24dp.xml │ │ │ ├── ic_select_photo_24dp.xml │ │ │ ├── ic_select_photo_day_night_24dp.xml │ │ │ ├── ic_select_query_24dp.xml │ │ │ ├── ic_send_black_24dp.xml │ │ │ ├── ic_send_toolbar_24dp.xml │ │ │ ├── ic_settings_day_night_24dp.xml │ │ │ ├── ic_share_day_night_24dp.xml │ │ │ ├── ic_share_grey_24dp.xml │ │ │ ├── ic_share_toolbar_white_24dp.xml │ │ │ ├── ic_sort_day_night_24dp.xml │ │ │ ├── ic_sort_toolbar_24dp.xml │ │ │ ├── ic_spam_24dp.xml │ │ │ ├── ic_spoiler_24dp.xml │ │ │ ├── ic_spoiler_black_24dp.xml │ │ │ ├── ic_stick_post_24dp.xml │ │ │ ├── ic_strikethrough_black_24dp.xml │ │ │ ├── ic_submit_post_day_night_24dp.xml │ │ │ ├── ic_subreddit_day_night_24dp.xml │ │ │ ├── ic_subscriptions_bottom_app_bar_day_night_24dp.xml │ │ │ ├── ic_superscript_24dp.xml │ │ │ ├── ic_text_day_night_24dp.xml │ │ │ ├── ic_thumbtack_24dp.xml │ │ │ ├── ic_title_24dp.xml │ │ │ ├── ic_top_24.xml │ │ │ ├── ic_undistinguish_as_mod_24dp.xml │ │ │ ├── ic_unlock_24dp.xml │ │ │ ├── ic_unmark_nsfw_24dp.xml │ │ │ ├── ic_unmark_spoiler_24dp.xml │ │ │ ├── ic_unmute_24dp.xml │ │ │ ├── ic_unordered_list_24dp.xml │ │ │ ├── ic_unstick_post_24dp.xml │ │ │ ├── ic_upvote_24dp.xml │ │ │ ├── ic_upvote_filled_24dp.xml │ │ │ ├── ic_upvote_ratio_18dp.xml │ │ │ ├── ic_user_agreement_day_night_24dp.xml │ │ │ ├── ic_user_day_night_24dp.xml │ │ │ ├── ic_verified_user_14dp.xml │ │ │ ├── ic_video_day_night_24dp.xml │ │ │ ├── ic_video_quality_24dp.xml │ │ │ ├── ic_volume_off_32dp.xml │ │ │ ├── ic_volume_up_32dp.xml │ │ │ ├── ic_wallpaper_24dp.xml │ │ │ ├── ic_wallpaper_both_day_night_24dp.xml │ │ │ ├── ic_wallpaper_home_screen_day_night_24dp.xml │ │ │ ├── ic_wallpaper_lock_screen_day_night_24dp.xml │ │ │ ├── play_button_round_background.xml │ │ │ ├── preference_background_bottom.xml │ │ │ ├── preference_background_middle.xml │ │ │ ├── preference_background_top.xml │ │ │ ├── preference_background_top_and_bottom.xml │ │ │ ├── private_message_ballon.xml │ │ │ ├── splash_screen.xml │ │ │ ├── thumbnail_compact_layout_rounded_edge.xml │ │ │ └── trending_search_title_background.xml │ │ ├── drawable-night/ │ │ │ ├── ic_about_day_night_24dp.xml │ │ │ ├── ic_access_time_day_night_24dp.xml │ │ │ ├── ic_account_circle_day_night_24dp.xml │ │ │ ├── ic_add_a_photo_day_night_24dp.xml │ │ │ ├── ic_add_circle_outline_day_night_24dp.xml │ │ │ ├── ic_add_day_night_24dp.xml │ │ │ ├── ic_advanced_day_night_24dp.xml │ │ │ ├── ic_amoled_theme_preference_day_night_24dp.xml │ │ │ ├── ic_anonymous_day_night_24dp.xml │ │ │ ├── ic_apply_to_day_night_24dp.xml │ │ │ ├── ic_arrow_downward_day_night_24dp.xml │ │ │ ├── ic_arrow_upward_day_night_24dp.xml │ │ │ ├── ic_bookmark_border_day_night_24dp.xml │ │ │ ├── ic_bookmark_day_night_24dp.xml │ │ │ ├── ic_bookmarks_day_night_24dp.xml │ │ │ ├── ic_check_circle_day_night_24dp.xml │ │ │ ├── ic_color_lens_day_night_24dp.xml │ │ │ ├── ic_copy_day_night_24dp.xml │ │ │ ├── ic_dark_theme_preference_day_night_24dp.xml │ │ │ ├── ic_data_saving_mode_day_night_24dp.xml │ │ │ ├── ic_delete_day_night_24dp.xml │ │ │ ├── ic_download_day_night_24dp.xml │ │ │ ├── ic_edit_day_night_24dp.xml │ │ │ ├── ic_error_outline_black_day_night_24dp.xml │ │ │ ├── ic_exit_day_night_24dp.xml │ │ │ ├── ic_filter_day_night_24dp.xml │ │ │ ├── ic_font_size_day_night_24dp.xml │ │ │ ├── ic_gallery_day_night_24dp.xml │ │ │ ├── ic_gesture_day_night_24dp.xml │ │ │ ├── ic_give_award_day_night_24dp.xml │ │ │ ├── ic_hide_post_day_night_24dp.xml │ │ │ ├── ic_hide_read_posts_day_night_24dp.xml │ │ │ ├── ic_history_day_night_24dp.xml │ │ │ ├── ic_home_day_night_24dp.xml │ │ │ ├── ic_image_day_night_24dp.xml │ │ │ ├── ic_import_day_night_24dp.xml │ │ │ ├── ic_inbox_day_night_24dp.xml │ │ │ ├── ic_info_preference_day_night_24dp.xml │ │ │ ├── ic_interface_day_night_24dp.xml │ │ │ ├── ic_key_day_night_24dp.xml │ │ │ ├── ic_keyboard_double_arrow_up_day_night_24dp.xml │ │ │ ├── ic_language_day_night_24dp.xml │ │ │ ├── ic_light_theme_preference_day_night_24dp.xml │ │ │ ├── ic_link_day_night_24dp.xml │ │ │ ├── ic_link_post_type_indicator_day_night_24dp.xml │ │ │ ├── ic_lock_day_night_24dp.xml │ │ │ ├── ic_log_out_day_night_24dp.xml │ │ │ ├── ic_miscellaneous_day_night_24dp.xml │ │ │ ├── ic_multi_reddit_day_night_24dp.xml │ │ │ ├── ic_mute_preferences_day_night_24dp.xml │ │ │ ├── ic_notifications_day_night_24dp.xml │ │ │ ├── ic_nsfw_off_day_night_24dp.xml │ │ │ ├── ic_nsfw_on_day_night_24dp.xml │ │ │ ├── ic_open_link_day_night_24dp.xml │ │ │ ├── ic_playback_speed_day_night_24dp.xml │ │ │ ├── ic_poll_day_night_24dp.xml │ │ │ ├── ic_post_layout_day_night_24dp.xml │ │ │ ├── ic_preview_day_night_24dp.xml │ │ │ ├── ic_privacy_policy_day_night_24dp.xml │ │ │ ├── ic_random_day_night_24dp.xml │ │ │ ├── ic_refresh_day_night_24dp.xml │ │ │ ├── ic_reply_day_night_24dp.xml │ │ │ ├── ic_report_day_night_24dp.xml │ │ │ ├── ic_save_to_database_day_night_24dp.xml │ │ │ ├── ic_search_day_night_24dp.xml │ │ │ ├── ic_security_day_night_24dp.xml │ │ │ ├── ic_select_photo_day_night_24dp.xml │ │ │ ├── ic_settings_day_night_24dp.xml │ │ │ ├── ic_share_day_night_24dp.xml │ │ │ ├── ic_sort_day_night_24dp.xml │ │ │ ├── ic_submit_post_day_night_24dp.xml │ │ │ ├── ic_subreddit_day_night_24dp.xml │ │ │ ├── ic_subscriptions_bottom_app_bar_day_night_24dp.xml │ │ │ ├── ic_text_day_night_24dp.xml │ │ │ ├── ic_user_agreement_day_night_24dp.xml │ │ │ ├── ic_user_day_night_24dp.xml │ │ │ ├── ic_video_day_night_24dp.xml │ │ │ ├── ic_wallpaper_both_day_night_24dp.xml │ │ │ ├── ic_wallpaper_home_screen_day_night_24dp.xml │ │ │ └── ic_wallpaper_lock_screen_day_night_24dp.xml │ │ ├── drawable-v24/ │ │ │ └── ic_launcher_background.xml │ │ ├── drawable-xhdpi/ │ │ │ └── ic_cancel_24dp.xml │ │ ├── font/ │ │ │ ├── atkinson_hyperlegible.xml │ │ │ ├── atkinson_hyperlegible_bold_version.xml │ │ │ ├── balsamiq_sans.xml │ │ │ ├── balsamiq_sans_bold_version.xml │ │ │ ├── harmonia_sans.xml │ │ │ ├── inter.xml │ │ │ ├── manrope.xml │ │ │ ├── noto_sans.xml │ │ │ ├── noto_sans_bold_version.xml │ │ │ ├── roboto_condensed.xml │ │ │ └── roboto_condensed_bold_version.xml │ │ ├── layout/ │ │ │ ├── activity_account_posts.xml │ │ │ ├── activity_account_saved_thing.xml │ │ │ ├── activity_comment.xml │ │ │ ├── activity_comment_filter_preference.xml │ │ │ ├── activity_comment_filter_usage_listing.xml │ │ │ ├── activity_comment_full_markdown.xml │ │ │ ├── activity_create_multi_reddit.xml │ │ │ ├── activity_custom_theme_listing.xml │ │ │ ├── activity_customize_comment_filter.xml │ │ │ ├── activity_customize_post_filter.xml │ │ │ ├── activity_customize_theme.xml │ │ │ ├── activity_edit_comment.xml │ │ │ ├── activity_edit_multi_reddit.xml │ │ │ ├── activity_edit_post.xml │ │ │ ├── activity_edit_profile.xml │ │ │ ├── activity_fetch_random_subreddit_or_post.xml │ │ │ ├── activity_filtered_thing.xml │ │ │ ├── activity_history.xml │ │ │ ├── activity_inbox.xml │ │ │ ├── activity_lock_screen.xml │ │ │ ├── activity_login.xml │ │ │ ├── activity_login_chrome_custom_tab.xml │ │ │ ├── activity_main.xml │ │ │ ├── activity_post_filter_application.xml │ │ │ ├── activity_post_filter_preference.xml │ │ │ ├── activity_post_gallery.xml │ │ │ ├── activity_post_image.xml │ │ │ ├── activity_post_link.xml │ │ │ ├── activity_post_poll.xml │ │ │ ├── activity_post_text.xml │ │ │ ├── activity_post_video.xml │ │ │ ├── activity_qrcode_scanner.xml │ │ │ ├── activity_report.xml │ │ │ ├── activity_rules.xml │ │ │ ├── activity_search.xml │ │ │ ├── activity_search_history.xml │ │ │ ├── activity_search_result.xml │ │ │ ├── activity_search_subreddits_result.xml │ │ │ ├── activity_search_users_result.xml │ │ │ ├── activity_select_user_flair.xml │ │ │ ├── activity_selected_subreddits.xml │ │ │ ├── activity_send_private_message.xml │ │ │ ├── activity_settings.xml │ │ │ ├── activity_submit_crosspost.xml │ │ │ ├── activity_subscribed_subreddits_multiselection.xml │ │ │ ├── activity_subscribed_thing_listing.xml │ │ │ ├── activity_subscribed_users_multiselection.xml │ │ │ ├── activity_suicide_prevention.xml │ │ │ ├── activity_theme_preview.xml │ │ │ ├── activity_view_image_or_gif.xml │ │ │ ├── activity_view_imgur_media.xml │ │ │ ├── activity_view_multi_reddit_detail.xml │ │ │ ├── activity_view_post_detail.xml │ │ │ ├── activity_view_private_messages.xml │ │ │ ├── activity_view_reddit_gallery.xml │ │ │ ├── activity_view_subreddit_detail.xml │ │ │ ├── activity_view_user_detail.xml │ │ │ ├── activity_view_video.xml │ │ │ ├── activity_view_video_zoomable.xml │ │ │ ├── activity_web_view.xml │ │ │ ├── activity_wiki.xml │ │ │ ├── adapter_default_entry.xml │ │ │ ├── adapter_table_block.xml │ │ │ ├── app_bar_main.xml │ │ │ ├── bottom_app_bar.xml │ │ │ ├── color_picker.xml │ │ │ ├── copy_text_material_dialog.xml │ │ │ ├── custom_barcode_scanner.xml │ │ │ ├── dialog_edit_flair.xml │ │ │ ├── dialog_edit_name.xml │ │ │ ├── dialog_edit_post_or_comment_filter_name_of_usage.xml │ │ │ ├── dialog_edit_text.xml │ │ │ ├── dialog_go_to_thing_edit_text.xml │ │ │ ├── dialog_insert_link.xml │ │ │ ├── dialog_select_header.xml │ │ │ ├── exo_autoplay_playback_control_view.xml │ │ │ ├── exo_autoplay_playback_control_view_legacy.xml │ │ │ ├── exo_playback_control_view.xml │ │ │ ├── floating_action_button.xml │ │ │ ├── fragment_account_chooser_bottom_sheet.xml │ │ │ ├── fragment_acknowledgement.xml │ │ │ ├── fragment_comment_filter_options_bottom_sheet.xml │ │ │ ├── fragment_comment_filter_usage_options_bottom_sheet.xml │ │ │ ├── fragment_comment_moderation_action_bottom_sheet.xml │ │ │ ├── fragment_comment_more_bottom_sheet.xml │ │ │ ├── fragment_comments_listing.xml │ │ │ ├── fragment_copy_text_bottom_sheet.xml │ │ │ ├── fragment_crash_reports.xml │ │ │ ├── fragment_create_theme_bottom_sheet.xml │ │ │ ├── fragment_custom_theme_listing.xml │ │ │ ├── fragment_custom_theme_options_bottom_sheet.xml │ │ │ ├── fragment_customize_bottom_app_bar.xml │ │ │ ├── fragment_customize_main_page_tabs.xml │ │ │ ├── fragment_fab_more_options_bottom_sheet.xml │ │ │ ├── fragment_filtered_thing_fab_more_options_bottom_sheet.xml │ │ │ ├── fragment_flair_bottom_sheet.xml │ │ │ ├── fragment_followed_users_listing.xml │ │ │ ├── fragment_font_preview.xml │ │ │ ├── fragment_giphy_gif_info_bottom_sheet.xml │ │ │ ├── fragment_history_post.xml │ │ │ ├── fragment_important_info_bottom_sheet.xml │ │ │ ├── fragment_inbox.xml │ │ │ ├── fragment_karma_info_bottom_sheet.xml │ │ │ ├── fragment_moderation_action_bottom_sheet.xml │ │ │ ├── fragment_more_posts_info.xml │ │ │ ├── fragment_multi_reddit_listing.xml │ │ │ ├── fragment_multi_reddit_options_bottom_sheet.xml │ │ │ ├── fragment_new_comment_filter_usage_bottom_sheet.xml │ │ │ ├── fragment_new_post_filter_usage_bottom_sheet.xml │ │ │ ├── fragment_nsfw_and_spoiler.xml │ │ │ ├── fragment_playback_speed.xml │ │ │ ├── fragment_post.xml │ │ │ ├── fragment_post_comment_sort_type_bottom_sheet.xml │ │ │ ├── fragment_post_filter_options_bottom_sheet.xml │ │ │ ├── fragment_post_filter_usage_options_bottom_sheet.xml │ │ │ ├── fragment_post_history.xml │ │ │ ├── fragment_post_layout_bottom_sheet.xml │ │ │ ├── fragment_post_options_bottom_sheet.xml │ │ │ ├── fragment_post_type_bottom_sheet.xml │ │ │ ├── fragment_random_bottom_sheet.xml │ │ │ ├── fragment_search_post_sort_type_bottom_sheet.xml │ │ │ ├── fragment_search_user_and_subreddit_sort_type_bottom_sheet.xml │ │ │ ├── fragment_select_or_capture_image_bottom_sheet.xml │ │ │ ├── fragment_select_subreddits_or_users_options_bottom_sheet.xml │ │ │ ├── fragment_set_as_wallpaper_bottom_sheet.xml │ │ │ ├── fragment_set_reddit_gallery_item_caption_and_url_bottom_sheet.xml │ │ │ ├── fragment_settings_search.xml │ │ │ ├── fragment_share_link_bottom_sheet.xml │ │ │ ├── fragment_sidebar.xml │ │ │ ├── fragment_sort_time_bottom_sheet.xml │ │ │ ├── fragment_sort_type_bottom_sheet.xml │ │ │ ├── fragment_subreddit_listing.xml │ │ │ ├── fragment_subscribed_subreddits_listing.xml │ │ │ ├── fragment_theme_preview_comments.xml │ │ │ ├── fragment_theme_preview_posts.xml │ │ │ ├── fragment_translation.xml │ │ │ ├── fragment_uploaded_images_bottom_sheet.xml │ │ │ ├── fragment_url_menu_bottom_sheet.xml │ │ │ ├── fragment_user_listing.xml │ │ │ ├── fragment_user_thing_sort_type_bottom_sheet.xml │ │ │ ├── fragment_view_imgur_image.xml │ │ │ ├── fragment_view_imgur_video.xml │ │ │ ├── fragment_view_post_detail.xml │ │ │ ├── fragment_view_reddit_gallery_image_or_gif.xml │ │ │ ├── fragment_view_reddit_gallery_video.xml │ │ │ ├── item_acknowledgement.xml │ │ │ ├── item_award.xml │ │ │ ├── item_comment.xml │ │ │ ├── item_comment_filter_usage_embedded.xml │ │ │ ├── item_comment_filter_with_usage.xml │ │ │ ├── item_comment_footer_error.xml │ │ │ ├── item_comment_footer_loading.xml │ │ │ ├── item_comment_fully_collapsed.xml │ │ │ ├── item_crash_report.xml │ │ │ ├── item_custom_theme_color_item.xml │ │ │ ├── item_custom_theme_switch_item.xml │ │ │ ├── item_favorite_thing_divider.xml │ │ │ ├── item_filter_fragment_header.xml │ │ │ ├── item_flair.xml │ │ │ ├── item_footer_error.xml │ │ │ ├── item_footer_loading.xml │ │ │ ├── item_gallery_image_in_post_feed.xml │ │ │ ├── item_load_comments.xml │ │ │ ├── item_load_comments_failed_placeholder.xml │ │ │ ├── item_load_more_comments_placeholder.xml │ │ │ ├── item_markdown_bottom_bar.xml │ │ │ ├── item_message.xml │ │ │ ├── item_multi_reddit.xml │ │ │ ├── item_nav_drawer_account.xml │ │ │ ├── item_nav_drawer_divider.xml │ │ │ ├── item_nav_drawer_menu_group_title.xml │ │ │ ├── item_nav_drawer_menu_item.xml │ │ │ ├── item_nav_drawer_subscribed_thing.xml │ │ │ ├── item_no_comment_placeholder.xml │ │ │ ├── item_paging_3_load_state.xml │ │ │ ├── item_post_card_2_gallery_type.xml │ │ │ ├── item_post_card_2_text.xml │ │ │ ├── item_post_card_2_video_autoplay.xml │ │ │ ├── item_post_card_2_video_autoplay_legacy_controller.xml │ │ │ ├── item_post_card_2_with_preview.xml │ │ │ ├── item_post_card_3_gallery_type.xml │ │ │ ├── item_post_card_3_text.xml │ │ │ ├── item_post_card_3_video_type_autoplay.xml │ │ │ ├── item_post_card_3_video_type_autoplay_legacy_controller.xml │ │ │ ├── item_post_card_3_with_preview.xml │ │ │ ├── item_post_compact.xml │ │ │ ├── item_post_compact_2.xml │ │ │ ├── item_post_compact_2_right_thumbnail.xml │ │ │ ├── item_post_compact_right_thumbnail.xml │ │ │ ├── item_post_detail_gallery.xml │ │ │ ├── item_post_detail_image_and_gif_autoplay.xml │ │ │ ├── item_post_detail_link.xml │ │ │ ├── item_post_detail_no_preview.xml │ │ │ ├── item_post_detail_text.xml │ │ │ ├── item_post_detail_video_and_gif_preview.xml │ │ │ ├── item_post_detail_video_autoplay.xml │ │ │ ├── item_post_detail_video_autoplay_legacy_controller.xml │ │ │ ├── item_post_filter_usage.xml │ │ │ ├── item_post_filter_usage_embedded.xml │ │ │ ├── item_post_filter_with_usage.xml │ │ │ ├── item_post_gallery.xml │ │ │ ├── item_post_gallery_gallery_type.xml │ │ │ ├── item_post_gallery_type.xml │ │ │ ├── item_post_text.xml │ │ │ ├── item_post_video_type_autoplay.xml │ │ │ ├── item_post_video_type_autoplay_legacy_controller.xml │ │ │ ├── item_post_with_preview.xml │ │ │ ├── item_predefined_custom_theme.xml │ │ │ ├── item_private_message_received.xml │ │ │ ├── item_private_message_sent.xml │ │ │ ├── item_recent_search_query.xml │ │ │ ├── item_reddit_gallery_submission_add_image.xml │ │ │ ├── item_reddit_gallery_submission_image.xml │ │ │ ├── item_report_reason.xml │ │ │ ├── item_rule.xml │ │ │ ├── item_selected_subreddit.xml │ │ │ ├── item_settings_search.xml │ │ │ ├── item_shared_comment_row.xml │ │ │ ├── item_subreddit_listing.xml │ │ │ ├── item_subscribed_subreddit_multi_selection.xml │ │ │ ├── item_subscribed_thing.xml │ │ │ ├── item_subscribed_user_multi_selection.xml │ │ │ ├── item_theme_name.xml │ │ │ ├── item_theme_type_divider.xml │ │ │ ├── item_translation_contributor.xml │ │ │ ├── item_trending_search.xml │ │ │ ├── item_uploaded_image.xml │ │ │ ├── item_user_custom_theme.xml │ │ │ ├── item_user_flair.xml │ │ │ ├── item_user_listing.xml │ │ │ ├── item_view_all_comments.xml │ │ │ ├── markdown_image_and_gif_block.xml │ │ │ ├── nav_header_main.xml │ │ │ ├── preference_slider.xml │ │ │ ├── preference_switch.xml │ │ │ ├── shared_comment.xml │ │ │ ├── shared_post.xml │ │ │ ├── shared_post_with_comments.xml │ │ │ └── view_table_entry_cell.xml │ │ ├── layout-land/ │ │ │ ├── activity_customize_comment_filter.xml │ │ │ ├── activity_customize_post_filter.xml │ │ │ ├── activity_lock_screen.xml │ │ │ ├── activity_view_multi_reddit_detail.xml │ │ │ ├── activity_view_subreddit_detail.xml │ │ │ ├── activity_view_user_detail.xml │ │ │ ├── app_bar_main.xml │ │ │ └── fragment_view_post_detail.xml │ │ ├── layout-sw600dp/ │ │ │ ├── activity_customize_comment_filter.xml │ │ │ ├── activity_customize_post_filter.xml │ │ │ ├── activity_view_multi_reddit_detail.xml │ │ │ ├── activity_view_subreddit_detail.xml │ │ │ ├── activity_view_user_detail.xml │ │ │ ├── app_bar_main.xml │ │ │ └── fragment_view_post_detail.xml │ │ ├── menu/ │ │ │ ├── account_posts_activity.xml │ │ │ ├── account_saved_thing_activity.xml │ │ │ ├── activity_settings.xml │ │ │ ├── bottom_app_bar.xml │ │ │ ├── comment_activity.xml │ │ │ ├── crash_reports_fragment.xml │ │ │ ├── create_multi_reddit_activity.xml │ │ │ ├── customize_comment_filter_activity.xml │ │ │ ├── customize_post_filter_activity.xml │ │ │ ├── customize_theme_activity.xml │ │ │ ├── edit_comment_activity.xml │ │ │ ├── edit_multi_reddit_activity.xml │ │ │ ├── edit_post_activity.xml │ │ │ ├── edit_profile_activity.xml │ │ │ ├── filtered_posts_activity.xml │ │ │ ├── full_markdown_activity.xml │ │ │ ├── history_activity.xml │ │ │ ├── history_post_fragment.xml │ │ │ ├── inbox_activity.xml │ │ │ ├── main_activity.xml │ │ │ ├── navigation_rail_menu.xml │ │ │ ├── post_fragment.xml │ │ │ ├── post_gallery_activity.xml │ │ │ ├── post_image_activity.xml │ │ │ ├── post_link_activity.xml │ │ │ ├── post_poll_activity.xml │ │ │ ├── post_text_activity.xml │ │ │ ├── post_video_activity.xml │ │ │ ├── report_activity.xml │ │ │ ├── search_result_activity.xml │ │ │ ├── search_subreddits_result_activity.xml │ │ │ ├── search_users_result_activity.xml │ │ │ ├── selected_subreddits_activity.xml │ │ │ ├── send_private_message_activity.xml │ │ │ ├── submit_crosspost_activity.xml │ │ │ ├── subreddit_multiselection_activity.xml │ │ │ ├── subscribed_thing_listing_activity.xml │ │ │ ├── trending_activity.xml │ │ │ ├── user_multiselection_activity.xml │ │ │ ├── view_image_or_gif_activity.xml │ │ │ ├── view_imgur_image_fragment.xml │ │ │ ├── view_imgur_media_activity.xml │ │ │ ├── view_imgur_video_fragment.xml │ │ │ ├── view_multi_reddit_detail_activity.xml │ │ │ ├── view_post_detail_activity.xml │ │ │ ├── view_post_detail_fragment.xml │ │ │ ├── view_reddit_gallery_activity.xml │ │ │ ├── view_reddit_gallery_image_or_gif_fragment.xml │ │ │ ├── view_reddit_gallery_video_fragment.xml │ │ │ ├── view_subreddit_detail_activity.xml │ │ │ ├── view_user_detail_activity.xml │ │ │ ├── view_video_activity.xml │ │ │ └── web_view_activity.xml │ │ ├── mipmap-anydpi-v26/ │ │ │ ├── ic_launcher.xml │ │ │ └── ic_launcher_round.xml │ │ ├── raw/ │ │ │ ├── lock_screen.json │ │ │ ├── love.json │ │ │ └── random_subreddit_or_post.json │ │ ├── res/ │ │ │ └── drawable/ │ │ │ └── baseline_comment_24.xml │ │ ├── values/ │ │ │ ├── arrays.xml │ │ │ ├── attr.xml │ │ │ ├── colors.xml │ │ │ ├── dimens.xml │ │ │ ├── ids.xml │ │ │ ├── strings.xml │ │ │ └── styles.xml │ │ ├── values-cs/ │ │ │ └── strings.xml │ │ ├── values-de/ │ │ │ └── strings.xml │ │ ├── values-el/ │ │ │ └── strings.xml │ │ ├── values-es/ │ │ │ └── strings.xml │ │ ├── values-fr/ │ │ │ └── strings.xml │ │ ├── values-hi/ │ │ │ └── strings.xml │ │ ├── values-hr/ │ │ │ └── strings.xml │ │ ├── values-hu/ │ │ │ └── strings.xml │ │ ├── values-it/ │ │ │ └── strings.xml │ │ ├── values-ja/ │ │ │ └── strings.xml │ │ ├── values-ko/ │ │ │ └── strings.xml │ │ ├── values-land-v28/ │ │ │ └── styles.xml │ │ ├── values-night/ │ │ │ └── colors.xml │ │ ├── values-night-v27/ │ │ │ └── styles.xml │ │ ├── values-night-v31/ │ │ │ └── styles.xml │ │ ├── values-nl/ │ │ │ └── strings.xml │ │ ├── values-pl/ │ │ │ └── strings.xml │ │ ├── values-pt/ │ │ │ └── strings.xml │ │ ├── values-pt-rBR/ │ │ │ └── strings.xml │ │ ├── values-ro/ │ │ │ └── strings.xml │ │ ├── values-ru/ │ │ │ └── strings.xml │ │ ├── values-so/ │ │ │ └── strings.xml │ │ ├── values-sw600dp/ │ │ │ └── attr.xml │ │ ├── values-ta/ │ │ │ └── strings.xml │ │ ├── values-tr-rTR/ │ │ │ └── strings.xml │ │ ├── values-uk/ │ │ │ └── strings.xml │ │ ├── values-v27/ │ │ │ ├── colors.xml │ │ │ └── styles.xml │ │ ├── values-v28/ │ │ │ └── styles.xml │ │ ├── values-v31/ │ │ │ └── styles.xml │ │ ├── values-v36/ │ │ │ └── styles.xml │ │ ├── values-vi/ │ │ │ └── strings.xml │ │ ├── values-zh-rCN/ │ │ │ └── strings.xml │ │ ├── xml/ │ │ │ ├── about_preferences.xml │ │ │ ├── activity_motion_test_scene.xml │ │ │ ├── advanced_preferences.xml │ │ │ ├── api_keys_preferences.xml │ │ │ ├── comment_preferences.xml │ │ │ ├── credits_preferences.xml │ │ │ ├── data_saving_mode_preferences.xml │ │ │ ├── debug_preferences.xml │ │ │ ├── download_location_preferences.xml │ │ │ ├── file_paths.xml │ │ │ ├── font_preferences.xml │ │ │ ├── gestures_and_buttons_preferences.xml │ │ │ ├── immersive_interface_preferences.xml │ │ │ ├── interface_preferences.xml │ │ │ ├── item_post_with_preview_scene.xml │ │ │ ├── main_preferences.xml │ │ │ ├── miscellaneous_preferences.xml │ │ │ ├── navigation_drawer_preferences.xml │ │ │ ├── notification_preferences.xml │ │ │ ├── number_of_columns_in_post_feed_preferences.xml │ │ │ ├── post_details_preferences.xml │ │ │ ├── post_preferences.xml │ │ │ ├── proxy_preferences.xml │ │ │ ├── security_preferences.xml │ │ │ ├── sort_type_preferences.xml │ │ │ ├── swipe_action_preferences.xml │ │ │ ├── theme_preferences.xml │ │ │ ├── time_format_preferences.xml │ │ │ └── video_preferences.xml │ │ └── xml-sw600dp/ │ │ └── post_details_preferences.xml │ └── test/ │ └── resources/ │ └── allure.properties ├── build.gradle ├── discoverium.yml ├── fastlane/ │ └── metadata/ │ └── android/ │ └── en-US/ │ ├── full_description.txt │ ├── short_description.txt │ └── title.txt ├── gradle/ │ └── wrapper/ │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradle.properties ├── gradlew ├── gradlew.bat ├── scripts/ │ ├── release-builds.sh │ └── release-github.sh └── settings.gradle
Showing preview only (617K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (6822 symbols across 628 files)
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/AppComponent.java
type AppComponent (line 116) | @Singleton
method inject (line 119) | void inject(MainActivity mainActivity);
method inject (line 121) | void inject(LoginActivity loginActivity);
method inject (line 123) | void inject(PostFragment postFragment);
method inject (line 125) | void inject(SubredditListingFragment subredditListingFragment);
method inject (line 127) | void inject(UserListingFragment userListingFragment);
method inject (line 129) | void inject(ViewPostDetailActivity viewPostDetailActivity);
method inject (line 131) | void inject(ViewSubredditDetailActivity viewSubredditDetailActivity);
method inject (line 133) | void inject(ViewUserDetailActivity viewUserDetailActivity);
method inject (line 135) | void inject(CommentActivity commentActivity);
method inject (line 137) | void inject(SubscribedThingListingActivity subscribedThingListingActiv...
method inject (line 139) | void inject(PostTextActivity postTextActivity);
method inject (line 141) | void inject(SubscribedSubredditsListingFragment subscribedSubredditsLi...
method inject (line 143) | void inject(PostLinkActivity postLinkActivity);
method inject (line 145) | void inject(PostImageActivity postImageActivity);
method inject (line 147) | void inject(PostVideoActivity postVideoActivity);
method inject (line 149) | void inject(FlairBottomSheetFragment flairBottomSheetFragment);
method inject (line 151) | void inject(RulesActivity rulesActivity);
method inject (line 153) | void inject(CommentsListingFragment commentsListingFragment);
method inject (line 155) | void inject(SubmitPostService submitPostService);
method inject (line 157) | void inject(FilteredPostsActivity filteredPostsActivity);
method inject (line 159) | void inject(SearchResultActivity searchResultActivity);
method inject (line 161) | void inject(SearchSubredditsResultActivity searchSubredditsResultActiv...
method inject (line 163) | void inject(FollowedUsersListingFragment followedUsersListingFragment);
method inject (line 165) | void inject(EditPostActivity editPostActivity);
method inject (line 167) | void inject(EditCommentActivity editCommentActivity);
method inject (line 169) | void inject(AccountPostsActivity accountPostsActivity);
method inject (line 171) | void inject(PullNotificationWorker pullNotificationWorker);
method inject (line 173) | void inject(InboxActivity inboxActivity);
method inject (line 175) | void inject(NotificationPreferenceFragment notificationPreferenceFragm...
method inject (line 177) | void inject(LinkResolverActivity linkResolverActivity);
method inject (line 179) | void inject(SearchActivity searchActivity);
method inject (line 181) | void inject(SearchHistoryActivity searchHistoryActivity);
method inject (line 183) | void inject(SettingsActivity settingsActivity);
method inject (line 185) | void inject(MainPreferenceFragment mainPreferenceFragment);
method inject (line 187) | void inject(AccountSavedThingActivity accountSavedThingActivity);
method inject (line 189) | void inject(ViewImageOrGifActivity viewGIFActivity);
method inject (line 191) | void inject(ViewMultiRedditDetailActivity viewMultiRedditDetailActivity);
method inject (line 193) | void inject(ViewVideoActivity viewVideoActivity);
method inject (line 195) | void inject(GesturesAndButtonsPreferenceFragment gesturesAndButtonsPre...
method inject (line 197) | void inject(CreateMultiRedditActivity createMultiRedditActivity);
method inject (line 199) | void inject(SubredditMultiselectionActivity subredditMultiselectionAct...
method inject (line 201) | void inject(UserMultiselectionActivity userMultiselectionActivity);
method inject (line 203) | void inject(ThemePreferenceFragment themePreferenceFragment);
method inject (line 205) | void inject(CustomizeThemeActivity customizeThemeActivity);
method inject (line 207) | void inject(CustomThemeListingActivity customThemeListingActivity);
method inject (line 209) | void inject(SidebarFragment sidebarFragment);
method inject (line 211) | void inject(AdvancedPreferenceFragment advancedPreferenceFragment);
method inject (line 213) | void inject(APIKeysPreferenceFragment apiKeysPreferenceFragment);
method inject (line 214) | void inject(CustomThemePreviewActivity customThemePreviewActivity);
method inject (line 216) | void inject(EditMultiRedditActivity editMultiRedditActivity);
method inject (line 218) | void inject(SelectedSubredditsAndUsersActivity selectedSubredditsAndUs...
method inject (line 220) | void inject(ReportActivity reportActivity);
method inject (line 222) | void inject(ViewImgurMediaActivity viewImgurMediaActivity);
method inject (line 224) | void inject(ViewImgurVideoFragment viewImgurVideoFragment);
method inject (line 226) | void inject(DownloadRedditVideoService downloadRedditVideoService);
method inject (line 228) | void inject(MultiRedditListingFragment multiRedditListingFragment);
method inject (line 230) | void inject(InboxFragment inboxFragment);
method inject (line 232) | void inject(ViewPrivateMessagesActivity viewPrivateMessagesActivity);
method inject (line 234) | void inject(SendPrivateMessageActivity sendPrivateMessageActivity);
method inject (line 236) | void inject(VideoPreferenceFragment videoPreferenceFragment);
method inject (line 238) | void inject(ViewRedditGalleryActivity viewRedditGalleryActivity);
method inject (line 240) | void inject(ViewRedditGalleryVideoFragment viewRedditGalleryVideoFragm...
method inject (line 242) | void inject(CustomizeMainPageTabsFragment customizeMainPageTabsFragment);
method inject (line 244) | void inject(DownloadMediaService downloadMediaService);
method inject (line 246) | void inject(DownloadLocationPreferenceFragment downloadLocationPrefere...
method inject (line 248) | void inject(SubmitCrosspostActivity submitCrosspostActivity);
method inject (line 250) | void inject(FullMarkdownActivity fullMarkdownActivity);
method inject (line 252) | void inject(SelectUserFlairActivity selectUserFlairActivity);
method inject (line 254) | void inject(SecurityPreferenceFragment securityPreferenceFragment);
method inject (line 256) | void inject(NsfwAndSpoilerFragment nsfwAndSpoilerFragment);
method inject (line 258) | void inject(CustomizeBottomAppBarFragment customizeBottomAppBarFragment);
method inject (line 260) | void inject(TranslationFragment translationFragment);
method inject (line 262) | void inject(MiscellaneousPreferenceFragment miscellaneousPreferenceFra...
method inject (line 264) | void inject(CustomizePostFilterActivity customizePostFilterActivity);
method inject (line 266) | void inject(PostHistoryFragment postHistoryFragment);
method inject (line 268) | void inject(PostFilterPreferenceActivity postFilterPreferenceActivity);
method inject (line 270) | void inject(PostFilterUsageListingActivity postFilterUsageListingActiv...
method inject (line 272) | void inject(SearchUsersResultActivity searchUsersResultActivity);
method inject (line 274) | void inject(ViewImgurImageFragment viewImgurImageFragment);
method inject (line 276) | void inject(ViewRedditGalleryImageOrGifFragment viewRedditGalleryImage...
method inject (line 278) | void inject(ViewPostDetailFragment viewPostDetailFragment);
method inject (line 280) | void inject(SuicidePreventionActivity suicidePreventionActivity);
method inject (line 282) | void inject(WebViewActivity webViewActivity);
method inject (line 284) | void inject(CrashReportsFragment crashReportsFragment);
method inject (line 286) | void inject(LockScreenActivity lockScreenActivity);
method inject (line 288) | void inject(PostGalleryActivity postGalleryActivity);
method inject (line 290) | void inject(WikiActivity wikiActivity);
method inject (line 292) | void inject(Infinity infinity);
method inject (line 294) | void inject(EditProfileService editProfileService);
method inject (line 296) | void inject(EditProfileActivity editProfileActivity);
method inject (line 298) | void inject(FontPreferenceFragment fontPreferenceFragment);
method inject (line 300) | void inject(CommentPreferenceFragment commentPreferenceFragment);
method inject (line 302) | void inject(PostPollActivity postPollActivity);
method inject (line 304) | void inject(AccountChooserBottomSheetFragment accountChooserBottomShee...
method inject (line 306) | void inject(MaterialYouWorker materialYouWorker);
method inject (line 308) | void inject(HistoryPostFragment historyPostFragment);
method inject (line 310) | void inject(HistoryActivity historyActivity);
method inject (line 312) | void inject(MorePostsInfoFragment morePostsInfoFragment);
method inject (line 314) | void inject(CommentFilterPreferenceActivity commentFilterPreferenceAct...
method inject (line 316) | void inject(CustomizeCommentFilterActivity customizeCommentFilterActiv...
method inject (line 318) | void inject(CommentFilterUsageListingActivity commentFilterUsageListin...
method inject (line 320) | void inject(CustomThemeListingFragment customThemeListingFragment);
method inject (line 322) | void inject(LoginChromeCustomTabActivity loginChromeCustomTabActivity);
method inject (line 324) | void inject(PostOptionsBottomSheetFragment postOptionsBottomSheetFragm...
method inject (line 326) | void inject(ShareBottomSheetFragment shareBottomSheetFragment);
method inject (line 328) | void inject(ProxyPreferenceFragment proxyPreferenceFragment);
method inject (line 330) | void inject(CopyMultiRedditActivity copyMultiRedditActivity);
type Factory (line 332) | @Component.Factory
method create (line 334) | AppComponent create(@BindsInstance Application application);
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/AppModule.java
class AppModule (line 36) | @Module
method providesContext (line 39) | @Binds
method provideRedditDataRoomDatabase (line 42) | @Provides
method provideSharedPreferences (line 48) | @Provides
method provideLightThemeSharedPreferences (line 55) | @Provides
method provideDarkThemeSharedPreferences (line 62) | @Provides
method provideAmoledThemeSharedPreferences (line 69) | @Provides
method provideSortTypeSharedPreferences (line 76) | @Provides
method providePostLayoutSharedPreferences (line 82) | @Provides
method providePostFeedScrolledPositionSharedPreferences (line 88) | @Provides
method provideMainActivityTabsSharedPreferences (line 94) | @Provides
method provideNsfwAndSpoilerSharedPreferences (line 100) | @Provides
method provideBottoappBarSharedPreferences (line 106) | @Provides
method providePostHistorySharedPreferences (line 112) | @Provides
method provideCurrentAccountSharedPreferences (line 118) | @Provides
method provideNavigationDrawerSharedPreferences (line 124) | @Provides
method providePostDetailsSharedPreferences (line 130) | @Provides
method provideSecuritySharedPreferences (line 136) | @Provides
method provideInternalSharedPreferences (line 143) | @Provides
method provideProxySharedPreferences (line 150) | @Provides
method provideCustomThemeWrapper (line 157) | @Provides
method providesAppCache (line 165) | @Provides
method providesExoPlayerCache (line 170) | @Provides
method provideExoDatabaseProvider (line 176) | @OptIn(markerClass = UnstableApi.class)
method provideSimpleCache (line 182) | @OptIn(markerClass = UnstableApi.class)
method providesMediaConfig (line 192) | @OptIn(markerClass = UnstableApi.class)
method providesToroExo (line 202) | @OptIn(markerClass = UnstableApi.class)
method provideExoCreator (line 208) | @OptIn(markerClass = UnstableApi.class)
method provideExecutor (line 217) | @Provides
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/Constants.java
class Constants (line 3) | public class Constants {
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/CustomFontReceiver.java
type CustomFontReceiver (line 5) | public interface CustomFontReceiver {
method setCustomFont (line 6) | void setCustomFont(Typeface typeface, Typeface titleTypeface, Typeface...
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/DownloadProgressResponseBody.java
class DownloadProgressResponseBody (line 13) | public class DownloadProgressResponseBody extends ResponseBody {
method DownloadProgressResponseBody (line 19) | public DownloadProgressResponseBody(ResponseBody responseBody, Progres...
method contentType (line 24) | @Override public MediaType contentType() {
method contentLength (line 28) | @Override public long contentLength() {
method source (line 32) | @Override public BufferedSource source() {
method source (line 39) | private Source source(Source source) {
type ProgressListener (line 53) | public interface ProgressListener {
method update (line 54) | void update(long bytesRead, long contentLength, boolean done);
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/FetchPostFilterAndConcatenatedSubredditNames.java
class FetchPostFilterAndConcatenatedSubredditNames (line 13) | public class FetchPostFilterAndConcatenatedSubredditNames {
method fetchPostFilter (line 14) | public static void fetchPostFilter(RedditDataRoomDatabase redditDataRo...
method fetchPostFilterAndConcatenatedSubredditNames (line 24) | public static void fetchPostFilterAndConcatenatedSubredditNames(Reddit...
method fetchPostFilterAndConcatenatedSubredditNames (line 46) | public static void fetchPostFilterAndConcatenatedSubredditNames(Reddit...
type FetchPostFilterListerner (line 68) | public interface FetchPostFilterListerner {
method success (line 69) | void success(PostFilter postFilter);
type FetchPostFilterAndConcatenatecSubredditNamesListener (line 72) | public interface FetchPostFilterAndConcatenatecSubredditNamesListener {
method success (line 73) | void success(PostFilter postFilter, String concatenatedSubredditNames);
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/FetchVideoLinkListener.java
type FetchVideoLinkListener (line 8) | public interface FetchVideoLinkListener {
method onFetchRedditVideoLinkSuccess (line 9) | default void onFetchRedditVideoLinkSuccess(Post post, String fileName) {}
method onFetchImgurVideoLinkSuccess (line 10) | default void onFetchImgurVideoLinkSuccess(String videoUrl, String vide...
method onFetchRedgifsVideoLinkSuccess (line 11) | default void onFetchRedgifsVideoLinkSuccess(String webm, String mp4) {}
method onFetchStreamableVideoLinkSuccess (line 12) | default void onFetchStreamableVideoLinkSuccess(StreamableVideo streama...
method onChangeFileName (line 13) | default void onChangeFileName(String fileName) {}
method onFetchVideoFallbackDirectUrlSuccess (line 14) | default void onFetchVideoFallbackDirectUrlSuccess(String videoFallback...
method failed (line 15) | default void failed(@Nullable Integer messageRes) {}
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/Infinity.java
class Infinity (line 53) | public class Infinity extends Application implements LifecycleObserver {
method onCreate (line 90) | @Override
method appInForeground (line 228) | @OnLifecycleEvent(Lifecycle.Event.ON_START)
method appInBackground (line 233) | @OnLifecycleEvent(Lifecycle.Event.ON_STOP)
method getAppComponent (line 240) | public AppComponent getAppComponent() {
method getCustomThemeWrapper (line 244) | public CustomThemeWrapper getCustomThemeWrapper() {
method onToggleSecureModeEvent (line 248) | @Subscribe
method onChangeAppLockEvent (line 253) | @Subscribe
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/NetworkModule.java
class NetworkModule (line 35) | @Module(includes = AppModule.class)
method provideBaseOkhttp (line 38) | @Provides
method provideBaseRetrofit (line 76) | @Provides
method provideConnectionPool (line 89) | @Provides
method provideRetrofit (line 94) | @Provides
method provideOAuthRetrofit (line 100) | @Provides
method provideOkHttpClient (line 108) | @Provides
method provideServerOkHttpClient (line 125) | @Provides
method provideMedia3OkHttpClient (line 139) | @Provides
method provideOauthWithoutAuthenticatorRetrofit (line 181) | @Provides
method provideUploadMediaRetrofit (line 188) | @Provides
method provideUploadVideoRetrofit (line 195) | @Provides
method provideDownloadRedditVideoRetrofit (line 202) | @Provides
method redgifsAccessTokenAuthenticator (line 209) | @Provides
method provideRedgifsRetrofit (line 215) | @Provides
method provideImgurRetrofit (line 248) | @Provides
method provideVReddItRetrofit (line 255) | @Provides
method provideStreamableRetrofit (line 262) | @Provides
method provideOnlineCustomThemesRetrofit (line 269) | @Provides
method provideStreamableApi (line 276) | @Provides
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/NetworkState.java
class NetworkState (line 3) | public class NetworkState {
method NetworkState (line 15) | public NetworkState(Status status, String msg) {
method getStatus (line 20) | public Status getStatus() {
method getMsg (line 24) | public String getMsg() {
type Status (line 28) | public enum Status {
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/ProxyEnabledGlideModule.java
class ProxyEnabledGlideModule (line 23) | @GlideModule
method registerComponents (line 25) | @Override
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/RecyclerViewContentScrollingInterface.java
type RecyclerViewContentScrollingInterface (line 3) | public interface RecyclerViewContentScrollingInterface {
method contentScrollUp (line 4) | void contentScrollUp();
method contentScrollDown (line 6) | void contentScrollDown();
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/RedditDataRoomDatabase.java
class RedditDataRoomDatabase (line 50) | @Database(entities = {Account.class, SubredditData.class, SubscribedSubr...
method create (line 57) | public static RedditDataRoomDatabase create(final Context context) {
method accountDao (line 71) | public abstract AccountDao accountDao();
method accountDaoKt (line 73) | public abstract AccountDaoKt accountDaoKt();
method subredditDao (line 75) | public abstract SubredditDao subredditDao();
method subscribedSubredditDao (line 77) | public abstract SubscribedSubredditDao subscribedSubredditDao();
method userDao (line 79) | public abstract UserDao userDao();
method subscribedUserDao (line 81) | public abstract SubscribedUserDao subscribedUserDao();
method multiRedditDao (line 83) | public abstract MultiRedditDao multiRedditDao();
method multiRedditDaoKt (line 85) | public abstract MultiRedditDaoKt multiRedditDaoKt();
method customThemeDao (line 87) | public abstract CustomThemeDao customThemeDao();
method customThemeDaoKt (line 89) | public abstract CustomThemeDaoKt customThemeDaoKt();
method recentSearchQueryDao (line 91) | public abstract RecentSearchQueryDao recentSearchQueryDao();
method readPostDao (line 93) | public abstract ReadPostDao readPostDao();
method postFilterDao (line 95) | public abstract PostFilterDao postFilterDao();
method postFilterUsageDao (line 97) | public abstract PostFilterUsageDao postFilterUsageDao();
method anonymousMultiredditSubredditDao (line 99) | public abstract AnonymousMultiredditSubredditDao anonymousMultiredditS...
method anonymousMultiredditSubredditDaoKt (line 101) | public abstract AnonymousMultiredditSubredditDaoKt anonymousMultireddi...
method commentFilterDao (line 103) | public abstract CommentFilterDao commentFilterDao();
method commentFilterUsageDao (line 105) | public abstract CommentFilterUsageDao commentFilterUsageDao();
method commentDraftDao (line 107) | public abstract CommentDraftDao commentDraftDao();
method migrate (line 110) | @Override
method migrate (line 120) | @Override
method migrate (line 143) | @Override
method migrate (line 156) | @Override
method migrate (line 164) | @Override
method migrate (line 209) | @Override
method migrate (line 217) | @Override
method migrate (line 238) | @Override
method migrate (line 261) | @Override
method migrate (line 276) | @Override
method migrate (line 290) | @Override
method migrate (line 298) | @Override
method migrate (line 306) | @Override
method migrate (line 318) | @Override
method migrate (line 335) | @Override
method migrate (line 342) | @Override
method migrate (line 349) | @Override
method migrate (line 357) | @Override
method migrate (line 364) | @Override
method migrate (line 371) | @Override
method migrate (line 385) | @Override
method migrate (line 391) | @Override
method migrate (line 417) | @Override
method migrate (line 425) | @Override
method migrate (line 435) | @Override
method migrate (line 442) | @Override
method migrate (line 452) | @Override
method migrate (line 461) | @Override
method migrate (line 471) | @Override
method migrate (line 484) | @Override
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/SaveMemoryCenterInisdeDownsampleStrategy.java
class SaveMemoryCenterInisdeDownsampleStrategy (line 5) | public class SaveMemoryCenterInisdeDownsampleStrategy extends Downsample...
method SaveMemoryCenterInisdeDownsampleStrategy (line 9) | public SaveMemoryCenterInisdeDownsampleStrategy(int threshold) {
method getScaleFactor (line 13) | @Override
method getSampleSizeRounding (line 31) | @Override
method setThreshold (line 36) | public void setThreshold(int threshold) {
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/SetAsWallpaperCallback.java
type SetAsWallpaperCallback (line 3) | public interface SetAsWallpaperCallback {
method setToHomeScreen (line 4) | void setToHomeScreen(int viewPagerPosition);
method setToLockScreen (line 5) | void setToLockScreen(int viewPagerPosition);
method setToBoth (line 6) | void setToBoth(int viewPagerPosition);
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/SingleLiveEvent.java
class SingleLiveEvent (line 14) | public class SingleLiveEvent<T> extends MutableLiveData<T> {
method observe (line 20) | @MainThread
method setValue (line 38) | @MainThread
method call (line 47) | @MainThread
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/VideoLinkFetcher.java
class VideoLinkFetcher (line 34) | public class VideoLinkFetcher {
method fetchVideoLink (line 35) | public static void fetchVideoLink(Executor executor, Handler handler, ...
method fetchVideoLinkSync (line 56) | @WorkerThread
method loadVReddItVideo (line 72) | public static void loadVReddItVideo(Executor executor, Handler handler...
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/WallpaperSetter.java
class WallpaperSetter (line 22) | public class WallpaperSetter {
method set (line 27) | public static void set(Executor executor, Handler handler, String url,...
type SetWallpaperListener (line 46) | public interface SetWallpaperListener {
method success (line 47) | void success();
method failed (line 48) | void failed();
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/account/Account.java
class Account (line 15) | @Entity(tableName = "accounts")
method Account (line 39) | @Ignore
method createFromParcel (line 53) | @Override
method newArray (line 58) | @Override
method getAnonymousAccount (line 64) | @Ignore
method Account (line 69) | public Account(@NonNull String accountName, String accessToken, String...
method getAccountName (line 82) | @NonNull
method getProfileImageUrl (line 87) | public String getProfileImageUrl() {
method getBannerImageUrl (line 91) | public String getBannerImageUrl() {
method getKarma (line 95) | public int getKarma() {
method getAccessToken (line 99) | public String getAccessToken() {
method setAccessToken (line 103) | public void setAccessToken(String accessToken) {
method getRefreshToken (line 107) | public String getRefreshToken() {
method getCode (line 111) | public String getCode() {
method isCurrentUser (line 115) | public boolean isCurrentUser() {
method isMod (line 119) | public boolean isMod() {
method describeContents (line 123) | @Override
method writeToParcel (line 128) | @Override
method getJSONModel (line 141) | public String getJSONModel() {
method fromJson (line 145) | public static Account fromJson(String json) throws JsonParseException {
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/account/AccountDao.java
type AccountDao (line 11) | @Dao
method insert (line 13) | @Insert(onConflict = OnConflictStrategy.REPLACE)
method isAnonymousAccountInserted (line 16) | @Query("SELECT EXISTS (SELECT 1 FROM accounts WHERE username = '-')")
method getAllAccountsLiveData (line 19) | @Query("SELECT * FROM accounts WHERE username != '-'")
method getAllAccounts (line 22) | @Query("SELECT * FROM accounts WHERE username != '-'")
method getAllNonCurrentAccounts (line 25) | @Query("SELECT * FROM accounts WHERE is_current_user = 0 AND username ...
method markAllAccountsNonCurrent (line 28) | @Query("UPDATE accounts SET is_current_user = 0 WHERE is_current_user ...
method deleteCurrentAccount (line 31) | @Query("DELETE FROM accounts WHERE is_current_user = 1 AND username !=...
method deleteAccount (line 34) | @Query("DELETE FROM accounts WHERE username = :accountName")
method deleteAllAccounts (line 37) | @Query("DELETE FROM accounts WHERE username != '-'")
method getAccountLiveData (line 40) | @Query("SELECT * FROM accounts WHERE username = :username COLLATE NOCA...
method getAccountData (line 43) | @Query("SELECT * FROM accounts WHERE username = :username COLLATE NOCA...
method getCurrentAccount (line 46) | @Query("SELECT * FROM accounts WHERE is_current_user = 1 AND username ...
method getCurrentAccountLiveData (line 49) | @Query("SELECT * FROM accounts WHERE is_current_user = 1 AND username ...
method updateAccountInfo (line 52) | @Query("UPDATE accounts SET profile_image_url = :profileImageUrl, bann...
method getAccountsExceptCurrentAccountLiveData (line 56) | @Query("SELECT * FROM accounts WHERE is_current_user = 0 AND username ...
method markAccountCurrent (line 59) | @Query("UPDATE accounts SET is_current_user = 1 WHERE username = :user...
method updateAccessTokenAndRefreshToken (line 62) | @Query("UPDATE accounts SET access_token = :accessToken, refresh_token...
method updateAccessToken (line 65) | @Query("UPDATE accounts SET access_token = :accessToken WHERE username...
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/account/AccountRepository.java
class AccountRepository (line 10) | public class AccountRepository {
method AccountRepository (line 17) | AccountRepository(Executor executor, RedditDataRoomDatabase redditDat...
method getAccountsExceptCurrentAccountLiveData (line 25) | public LiveData<List<Account>> getAccountsExceptCurrentAccountLiveData...
method getCurrentAccountLiveData (line 29) | public LiveData<Account> getCurrentAccountLiveData() {
method getAllAccountsLiveData (line 33) | public LiveData<List<Account>> getAllAccountsLiveData() {
method insert (line 37) | public void insert(Account account) {
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/account/AccountViewModel.java
class AccountViewModel (line 12) | public class AccountViewModel extends ViewModel {
method AccountViewModel (line 18) | public AccountViewModel(Executor executor, RedditDataRoomDatabase redd...
method getAccountsExceptCurrentAccountLiveData (line 25) | public LiveData<List<Account>> getAccountsExceptCurrentAccountLiveData...
method getCurrentAccountLiveData (line 29) | public LiveData<Account> getCurrentAccountLiveData() {
method getAllAccountsLiveData (line 33) | public LiveData<List<Account>> getAllAccountsLiveData() {
method insert (line 37) | public void insert(Account userData) {
class Factory (line 41) | public static class Factory extends ViewModelProvider.NewInstanceFacto...
method Factory (line 46) | public Factory(Executor executor, RedditDataRoomDatabase redditDataR...
method create (line 51) | @Override
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/account/FetchMyInfo.java
class FetchMyInfo (line 22) | public class FetchMyInfo {
method fetchAccountInfo (line 24) | public static void fetchAccountInfo(final Executor executor, final Han...
type FetchMyInfoListener (line 59) | public interface FetchMyInfoListener {
method onFetchMyInfoSuccess (line 60) | void onFetchMyInfoSuccess(String name, String profileImageUrl, Strin...
method onFetchMyInfoFailed (line 62) | void onFetchMyInfoFailed(boolean parseFailed);
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/activities/AccountPostsActivity.java
class AccountPostsActivity (line 44) | public class AccountPostsActivity extends BaseActivity implements SortTy...
method onCreate (line 67) | @Override
method onKeyDown (line 142) | @Override
method getDefaultSharedPreferences (line 151) | @Override
method getCurrentAccountSharedPreferences (line 156) | @Override
method getCustomThemeWrapper (line 161) | @Override
method applyCustomTheme (line 166) | @Override
method initializeFragment (line 175) | private void initializeFragment() {
method onCreateOptionsMenu (line 188) | @Override
method onOptionsItemSelected (line 195) | @Override
method onSaveInstanceState (line 213) | @Override
method onDestroy (line 219) | @Override
method sortTypeSelected (line 225) | @Override
method sortTypeSelected (line 232) | @Override
method onAccountSwitchEvent (line 237) | @Subscribe
method onChangeNSFWEvent (line 242) | @Subscribe
method postLayoutSelected (line 247) | @Override
method onLongPress (line 255) | @Override
method lockSwipeRightToGoBack (line 262) | @Override
method unlockSwipeRightToGoBack (line 269) | @Override
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/activities/AccountSavedThingActivity.java
class AccountSavedThingActivity (line 55) | public class AccountSavedThingActivity extends BaseActivity implements A...
method onCreate (line 84) | @Override
method onKeyDown (line 147) | @Override
method getDefaultSharedPreferences (line 156) | @Override
method getCurrentAccountSharedPreferences (line 161) | @Override
method getCustomThemeWrapper (line 166) | @Override
method applyCustomTheme (line 171) | @Override
method initializeViewPager (line 182) | private void initializeViewPager() {
method onCreateOptionsMenu (line 211) | @Override
method onOptionsItemSelected (line 218) | @Override
method onDestroy (line 234) | @Override
method onAccountSwitchEvent (line 240) | @Subscribe
method onChangeNSFWEvent (line 245) | @Subscribe
method onLongPress (line 250) | @Override
method lockSwipeRightToGoBack (line 257) | @Override
method unlockSwipeRightToGoBack (line 264) | @Override
method postLayoutSelected (line 271) | @Override
method markPostAsRead (line 279) | @Override
class SectionsPagerAdapter (line 285) | private class SectionsPagerAdapter extends FragmentStateAdapter {
method SectionsPagerAdapter (line 287) | SectionsPagerAdapter(FragmentActivity fa) {
method createFragment (line 291) | @NonNull
method getCurrentFragment (line 312) | @Nullable
method handleKeyDown (line 320) | public boolean handleKeyDown(int keyCode) {
method refresh (line 330) | public void refresh() {
method changeNSFW (line 339) | public void changeNSFW(boolean nsfw) {
method changePostLayout (line 346) | public void changePostLayout(int postLayout) {
method goBackToTop (line 354) | public void goBackToTop() {
method getItemCount (line 363) | @Override
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/activities/ActivityToolbarInterface.java
type ActivityToolbarInterface (line 3) | public interface ActivityToolbarInterface {
method onLongPress (line 4) | void onLongPress();
method displaySortType (line 5) | default void displaySortType() {}
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/activities/AppBarStateChangeListener.java
class AppBarStateChangeListener (line 5) | public abstract class AppBarStateChangeListener implements AppBarLayout....
method onOffsetChanged (line 9) | @Override
method onStateChanged (line 40) | public abstract void onStateChanged(AppBarLayout appBarLayout, AppBarS...
type State (line 43) | public enum State {
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/activities/BaseActivity.java
class BaseActivity (line 76) | public abstract class BaseActivity extends AppCompatActivity implements ...
method onCreate (line 101) | @Override
method onResume (line 269) | @Override
method onPause (line 277) | @Override
method onDestroy (line 285) | @Override
method dispatchTouchEvent (line 291) | @Override
method getDefaultSharedPreferences (line 303) | public abstract SharedPreferences getDefaultSharedPreferences();
method getCurrentAccountSharedPreferences (line 305) | public abstract SharedPreferences getCurrentAccountSharedPreferences();
method getCustomThemeWrapper (line 307) | public abstract CustomThemeWrapper getCustomThemeWrapper();
method applyCustomTheme (line 309) | protected abstract void applyCustomTheme();
method isChangeStatusBarIconColor (line 311) | protected boolean isChangeStatusBarIconColor() {
method getSystemVisibilityToolbarExpanded (line 315) | protected int getSystemVisibilityToolbarExpanded() {
method getSystemVisibilityToolbarCollapsed (line 319) | protected int getSystemVisibilityToolbarCollapsed() {
method isImmersiveInterfaceRespectForcedEdgeToEdge (line 323) | public boolean isImmersiveInterfaceRespectForcedEdgeToEdge() {
method isImmersiveInterface (line 330) | private boolean isImmersiveInterface() {
method isForcedImmersiveInterface (line 334) | public boolean isForcedImmersiveInterface() {
method isImmersiveInterfaceEnabled (line 338) | public boolean isImmersiveInterfaceEnabled() {
method setToolbarGoToTop (line 342) | protected void setToolbarGoToTop(Toolbar toolbar) {
method addOnOffsetChangedListener (line 360) | protected void addOnOffsetChangedListener(AppBarLayout appBarLayout) {
method setMargins (line 374) | public static <T extends View> void setMargins(T view, int left, int t...
method setTransparentStatusBarAfterToolbarCollapsed (line 396) | protected void setTransparentStatusBarAfterToolbarCollapsed() {
method setHasDrawerLayout (line 400) | protected void setHasDrawerLayout() {
method setImmersiveModeNotApplicableBelowAndroid16 (line 404) | public void setImmersiveModeNotApplicableBelowAndroid16() {
method applyAppBarLayoutAndCollapsingToolbarLayoutAndToolbarTheme (line 411) | protected void applyAppBarLayoutAndCollapsingToolbarLayoutAndToolbarTh...
method applyAppBarLayoutAndCollapsingToolbarLayoutAndToolbarTheme (line 415) | protected void applyAppBarLayoutAndCollapsingToolbarLayoutAndToolbarTh...
method applyAppBarScrollFlagsIfApplicable (line 446) | protected void applyAppBarScrollFlagsIfApplicable(CollapsingToolbarLay...
method applyAppBarScrollFlagsIfApplicable (line 450) | protected void applyAppBarScrollFlagsIfApplicable(@NonNull CollapsingT...
method applyMenuItemTheme (line 464) | @SuppressLint("RestrictedApi")
method applyTabLayoutTheme (line 479) | protected void applyTabLayoutTheme(TabLayout tabLayout) {
method applyFABTheme (line 487) | protected void applyFABTheme(FloatingActionButton fab) {
method fixViewPager2Sensitivity (line 492) | protected void fixViewPager2Sensitivity(ViewPager2 viewPager2) {
method setOtherActivitiesFabContentDescription (line 510) | protected void setOtherActivitiesFabContentDescription(FloatingActionB...
method attachSliderPanelIfApplicable (line 545) | protected void attachSliderPanelIfApplicable() {
method setCustomFont (line 553) | @Override
method lockSwipeRightToGoBack (line 561) | public void lockSwipeRightToGoBack() {
method unlockSwipeRightToGoBack (line 565) | public void unlockSwipeRightToGoBack() {
method copyLink (line 569) | public void copyLink(String link) {
method triggerBackPress (line 582) | public void triggerBackPress() {
method setShouldTrackFullscreenMediaPeekTouchEvent (line 586) | public void setShouldTrackFullscreenMediaPeekTouchEvent(boolean value) {
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/activities/CommentActivity.java
class CommentActivity (line 93) | public class CommentActivity extends BaseActivity implements UploadImage...
method onCreate (line 159) | @Override
method loadCurrentAccount (line 408) | private void loadCurrentAccount() {
method onSaveInstanceState (line 426) | @Override
method getDefaultSharedPreferences (line 434) | @Override
method getCurrentAccountSharedPreferences (line 439) | @Override
method getCustomThemeWrapper (line 444) | @Override
method applyCustomTheme (line 449) | @Override
method onPause (line 477) | @Override
method onCreateOptionsMenu (line 483) | @Override
method onOptionsItemSelected (line 491) | @Override
method sendComment (line 511) | public void sendComment(@Nullable MenuItem item) {
method promptAlertDialog (line 581) | private void promptAlertDialog(int titleResId, int messageResId, boole...
method onActivityResult (line 605) | @Override
method onDestroy (line 628) | @Override
method onAccountSwitchEvent (line 634) | @Subscribe
method onChangeNetworkStatusEvent (line 639) | @Subscribe
method uploadImage (line 653) | @Override
method captureImage (line 661) | @Override
method insertImageUrl (line 677) | @Override
method onAccountSelected (line 694) | @Override
method didSearchTerm (line 709) | @Override
method onGifSelected (line 714) | @Override
method onDismissed (line 733) | @Override
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/activities/CommentFilterPreferenceActivity.java
class CommentFilterPreferenceActivity (line 37) | public class CommentFilterPreferenceActivity extends BaseActivity {
method onCreate (line 58) | @Override
method editCommentFilter (line 141) | public void editCommentFilter(CommentFilter commentFilter) {
method applyCommentFilterTo (line 148) | public void applyCommentFilterTo(CommentFilter commentFilter) {
method deleteCommentFilter (line 154) | public void deleteCommentFilter(CommentFilter commentFilter) {
method showCommentFilterOptions (line 158) | public void showCommentFilterOptions(Comment comment, @Nullable Commen...
method getDefaultSharedPreferences (line 182) | @Override
method getCurrentAccountSharedPreferences (line 187) | @Override
method getCustomThemeWrapper (line 192) | @Override
method applyCustomTheme (line 197) | @Override
method onOptionsItemSelected (line 206) | @Override
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/activities/CommentFilterUsageListingActivity.java
class CommentFilterUsageListingActivity (line 42) | public class CommentFilterUsageListingActivity extends BaseActivity {
method onCreate (line 62) | @Override
method newCommentFilterUsage (line 136) | public void newCommentFilterUsage(int type) {
method editAndCommentFilterUsageNameOfUsage (line 142) | private void editAndCommentFilterUsageNameOfUsage(int type, String nam...
method editCommentFilterUsage (line 182) | public void editCommentFilterUsage(CommentFilterUsage commentFilterUsa...
method deleteCommentFilterUsage (line 186) | public void deleteCommentFilterUsage(CommentFilterUsage commentFilterU...
method onOptionsItemSelected (line 190) | @Override
method getDefaultSharedPreferences (line 200) | @Override
method getCurrentAccountSharedPreferences (line 205) | @Override
method getCustomThemeWrapper (line 210) | @Override
method applyCustomTheme (line 215) | @Override
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/activities/CreateMultiRedditActivity.java
class CreateMultiRedditActivity (line 41) | public class CreateMultiRedditActivity extends BaseActivity {
method onCreate (line 63) | @Override
method bindView (line 123) | private void bindView() {
method onCreateOptionsMenu (line 140) | @Override
method onOptionsItemSelected (line 147) | @Override
method onActivityResult (line 199) | @Override
method onSaveInstanceState (line 209) | @Override
method getDefaultSharedPreferences (line 215) | @Override
method getCurrentAccountSharedPreferences (line 220) | @Override
method getCustomThemeWrapper (line 225) | @Override
method applyCustomTheme (line 230) | @Override
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/activities/CustomThemeListingActivity.java
class CustomThemeListingActivity (line 69) | public class CustomThemeListingActivity extends BaseActivity implements
method onCreate (line 103) | @Override
method initializeViewPager (line 166) | private void initializeViewPager() {
method onOptionsItemSelected (line 196) | @Override
method getDefaultSharedPreferences (line 205) | @Override
method getCurrentAccountSharedPreferences (line 210) | @Override
method getCustomThemeWrapper (line 215) | @Override
method applyCustomTheme (line 220) | @Override
method editTheme (line 230) | @Override
method changeName (line 248) | @Override
method shareTheme (line 271) | @Override
method delete (line 291) | @Override
method onDestroy (line 316) | @Override
method shareTheme (line 322) | public void shareTheme(CustomTheme customTheme) {
method shareTheme (line 338) | @Override
method onRecreateActivityEvent (line 366) | @Subscribe
method importTheme (line 371) | @Override
method contentScrollUp (line 399) | @Override
method contentScrollDown (line 404) | @Override
method checkDuplicateAndImportTheme (line 409) | private void checkDuplicateAndImportTheme(CustomTheme customTheme, boo...
class SectionsPagerAdapter (line 456) | private class SectionsPagerAdapter extends FragmentStateAdapter {
method SectionsPagerAdapter (line 458) | SectionsPagerAdapter(FragmentActivity fa) {
method createFragment (line 462) | @NonNull
method getOnlineThemeFragment (line 475) | @Nullable
method getItemCount (line 483) | @Override
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/activities/CustomThemePreviewActivity.java
class CustomThemePreviewActivity (line 61) | public class CustomThemePreviewActivity extends AppCompatActivity implem...
method onCreate (line 87) | @Override
method setMargins (line 352) | public static <T extends View> void setMargins(T view, int left, int t...
method applyCustomTheme (line 374) | private void applyCustomTheme() {
method applyAppBarLayoutAndToolbarTheme (line 427) | protected void applyAppBarLayoutAndToolbarTheme(AppBarLayout appBarLay...
method applyTabLayoutTheme (line 463) | protected void applyTabLayoutTheme(TabLayout tabLayout) {
method applyFABTheme (line 471) | protected void applyFABTheme(FloatingActionButton fab) {
method getCustomTheme (line 476) | public CustomTheme getCustomTheme() {
method onOptionsItemSelected (line 480) | @Override
method lockSwipeRightToGoBack (line 489) | private void lockSwipeRightToGoBack() {
method unlockSwipeRightToGoBack (line 495) | private void unlockSwipeRightToGoBack() {
method setCustomFont (line 501) | @Override
class SectionsPagerAdapter (line 508) | private class SectionsPagerAdapter extends FragmentPagerAdapter {
method SectionsPagerAdapter (line 512) | SectionsPagerAdapter(FragmentManager fm) {
method getItem (line 516) | @NonNull
method getCount (line 525) | @Override
method getPageTitle (line 530) | @Override
method instantiateItem (line 541) | @NonNull
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/activities/CustomizeCommentFilterActivity.java
class CustomizeCommentFilterActivity (line 47) | public class CustomizeCommentFilterActivity extends BaseActivity {
method onCreate (line 76) | @Override
method bindView (line 179) | private void bindView() {
method getDefaultSharedPreferences (line 198) | @Override
method getCurrentAccountSharedPreferences (line 203) | @Override
method getCustomThemeWrapper (line 208) | @Override
method applyCustomTheme (line 213) | @Override
method setCursorDrawableColor (line 289) | public void setCursorDrawableColor(EditText editText, int color) {
method onCreateOptionsMenu (line 309) | @Override
method onOptionsItemSelected (line 319) | @Override
method saveCommentFilter (line 352) | private void saveCommentFilter(String originalName) {
method constructCommentFilter (line 375) | private void constructCommentFilter() throws PatternSyntaxException {
method onSaveInstanceState (line 385) | @Override
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/activities/CustomizePostFilterActivity.java
class CustomizePostFilterActivity (line 48) | public class CustomizePostFilterActivity extends BaseActivity {
method onCreate (line 86) | @Override
method bindView (line 215) | private void bindView() {
method getDefaultSharedPreferences (line 314) | @Override
method getCurrentAccountSharedPreferences (line 319) | @Override
method getCustomThemeWrapper (line 324) | @Override
method applyCustomTheme (line 329) | @Override
method setCursorDrawableColor (line 503) | private void setCursorDrawableColor(EditText editText, int color) {
method onCreateOptionsMenu (line 523) | @Override
method onOptionsItemSelected (line 533) | @Override
method savePostFilter (line 573) | private void savePostFilter(String originalName) {
method onActivityResult (line 603) | @Override
method updateSubredditsUsersNames (line 625) | private void updateSubredditsUsersNames(@Nullable ArrayList<String> su...
method constructPostFilter (line 643) | private void constructPostFilter() throws PatternSyntaxException {
method onSaveInstanceState (line 675) | @Override
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/activities/CustomizeThemeActivity.java
class CustomizeThemeActivity (line 52) | public class CustomizeThemeActivity extends BaseActivity {
method onCreate (line 101) | @Override
method onCreateOptionsMenu (line 274) | @Override
method onOptionsItemSelected (line 281) | @Override
method saveThemeLocally (line 364) | private void saveThemeLocally(CustomTheme customTheme) {
method saveThemeOnline (line 374) | private void saveThemeOnline(CustomTheme customTheme, boolean anonymou...
method onSaveInstanceState (line 416) | @Override
method getDefaultSharedPreferences (line 425) | @Override
method getCurrentAccountSharedPreferences (line 430) | @Override
method getCustomThemeWrapper (line 435) | @Override
method applyCustomTheme (line 440) | @Override
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/activities/EditCommentActivity.java
class EditCommentActivity (line 74) | public class EditCommentActivity extends BaseActivity implements UploadI...
method onCreate (line 120) | @Override
method getDefaultSharedPreferences (line 263) | @Override
method getCurrentAccountSharedPreferences (line 268) | @Override
method getCustomThemeWrapper (line 273) | @Override
method applyCustomTheme (line 278) | @Override
method onPause (line 289) | @Override
method onCreateOptionsMenu (line 295) | @Override
method onOptionsItemSelected (line 302) | @Override
method editComment (line 319) | private void editComment() {
method promptAlertDialog (line 396) | private void promptAlertDialog(int titleResId, int messageResId, boole...
method onActivityResult (line 420) | @Override
method onSaveInstanceState (line 442) | @Override
method onDestroy (line 449) | @Override
method onAccountSwitchEvent (line 455) | @Subscribe
method uploadImage (line 460) | @Override
method captureImage (line 469) | @Override
method insertImageUrl (line 484) | @Override
method didSearchTerm (line 500) | @Override
method onGifSelected (line 505) | @Override
method onDismissed (line 523) | @Override
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/activities/EditMultiRedditActivity.java
class EditMultiRedditActivity (line 40) | public class EditMultiRedditActivity extends BaseActivity {
method onCreate (line 64) | @Override
method bindView (line 126) | private void bindView() {
method onCreateOptionsMenu (line 180) | @Override
method onOptionsItemSelected (line 187) | @Override
method onActivityResult (line 237) | @Override
method onSaveInstanceState (line 248) | @Override
method getDefaultSharedPreferences (line 255) | @Override
method getCurrentAccountSharedPreferences (line 260) | @Override
method getCustomThemeWrapper (line 265) | @Override
method applyCustomTheme (line 270) | @Override
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/activities/EditPostActivity.java
class EditPostActivity (line 59) | public class EditPostActivity extends BaseActivity implements UploadImag...
method onCreate (line 95) | @Override
method getDefaultSharedPreferences (line 196) | @Override
method getCurrentAccountSharedPreferences (line 201) | @Override
method getCustomThemeWrapper (line 206) | @Override
method applyCustomTheme (line 211) | @Override
method onPause (line 227) | @Override
method onCreateOptionsMenu (line 233) | @Override
method onOptionsItemSelected (line 240) | @Override
method editPost (line 257) | private void editPost() {
method onActivityResult (line 289) | @Override
method onSaveInstanceState (line 311) | @Override
method promptAlertDialog (line 317) | private void promptAlertDialog(int titleResId, int messageResId) {
method onDestroy (line 327) | @Override
method onAccountSwitchEvent (line 333) | @Subscribe
method uploadImage (line 338) | @Override
method captureImage (line 347) | @Override
method insertImageUrl (line 362) | @Override
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/activities/EditProfileActivity.java
class EditProfileActivity (line 53) | public class EditProfileActivity extends BaseActivity {
method onCreate (line 73) | @Override
method onActivityResult (line 229) | @Override
method onCreateOptionsMenu (line 280) | @Override
method onOptionsItemSelected (line 287) | @Override
method onSubmitChangeAvatar (line 327) | @Subscribe
method onSubmitChangeBanner (line 337) | @Subscribe
method onSubmitSaveProfile (line 347) | @Subscribe
method getDefaultSharedPreferences (line 358) | @Override
method getCurrentAccountSharedPreferences (line 363) | @Override
method getCustomThemeWrapper (line 368) | @Override
method applyCustomTheme (line 373) | @Override
method changeColorTextView (line 385) | private void changeColorTextView(ViewGroup viewGroup, int color) {
method startPickImage (line 397) | private void startPickImage(int requestId) {
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/activities/FilteredPostsActivity.java
class FilteredPostsActivity (line 58) | public class FilteredPostsActivity extends BaseActivity implements SortT...
method onCreate (line 105) | @Override
method onKeyDown (line 263) | @Override
method getDefaultSharedPreferences (line 272) | @Override
method getCurrentAccountSharedPreferences (line 277) | @Override
method getCustomThemeWrapper (line 282) | @Override
method applyCustomTheme (line 287) | @Override
method bindView (line 296) | private void bindView(PostFilter postFilter, boolean initializeFragmen...
method onCreateOptionsMenu (line 377) | @Override
method onOptionsItemSelected (line 388) | @Override
method onActivityResult (line 429) | @Override
method onSaveInstanceState (line 439) | @Override
method onDestroy (line 445) | @Override
method sortTypeSelected (line 451) | @Override
method postLayoutSelected (line 456) | @Override
method sortTypeSelected (line 476) | @Override
method onAccountSwitchEvent (line 485) | @Subscribe
method onLongPress (line 490) | @Override
method markPostAsRead (line 497) | @Override
method fabOptionSelected (line 503) | @Override
method contentScrollUp (line 518) | @Override
method contentScrollDown (line 523) | @Override
method isNsfwSubreddit (line 528) | public boolean isNsfwSubreddit() {
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/activities/FullMarkdownActivity.java
class FullMarkdownActivity (line 46) | public class FullMarkdownActivity extends BaseActivity {
method onCreate (line 62) | @Override
method onCreateOptionsMenu (line 175) | @Override
method onOptionsItemSelected (line 184) | @Override
method getDefaultSharedPreferences (line 199) | @Override
method getCurrentAccountSharedPreferences (line 204) | @Override
method getCustomThemeWrapper (line 209) | @Override
method applyCustomTheme (line 214) | @Override
method onDestroy (line 222) | @Override
method onAccountSwitchEvent (line 228) | @Subscribe
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/activities/HistoryActivity.java
class HistoryActivity (line 45) | public class HistoryActivity extends BaseActivity implements ActivityToo...
method onCreate (line 63) | @Override
method onKeyDown (line 125) | @Override
method getDefaultSharedPreferences (line 134) | @Override
method getCurrentAccountSharedPreferences (line 139) | @Override
method getCustomThemeWrapper (line 144) | @Override
method applyCustomTheme (line 149) | @Override
method initializeViewPager (line 158) | private void initializeViewPager() {
method onCreateOptionsMenu (line 186) | @Override
method onOptionsItemSelected (line 193) | @Override
method onDestroy (line 210) | @Override
method onAccountSwitchEvent (line 216) | @Subscribe
method onChangeNSFWEvent (line 221) | @Subscribe
method onLongPress (line 226) | @Override
method lockSwipeRightToGoBack (line 233) | @Override
method unlockSwipeRightToGoBack (line 240) | @Override
method postLayoutSelected (line 247) | @Override
class SectionsPagerAdapter (line 255) | private class SectionsPagerAdapter extends FragmentStateAdapter {
method SectionsPagerAdapter (line 257) | SectionsPagerAdapter(FragmentActivity fa) {
method createFragment (line 261) | @NonNull
method getCurrentFragment (line 271) | @Nullable
method handleKeyDown (line 279) | public boolean handleKeyDown(int keyCode) {
method refresh (line 289) | public void refresh() {
method changeNSFW (line 298) | public void changeNSFW(boolean nsfw) {
method changePostLayout (line 305) | public void changePostLayout(int postLayout) {
method goBackToTop (line 313) | public void goBackToTop() {
method getItemCount (line 322) | @Override
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/activities/InboxActivity.java
class InboxActivity (line 65) | public class InboxActivity extends BaseActivity implements ActivityToolb...
method onCreate (line 93) | @Override
method getDefaultSharedPreferences (line 230) | @Override
method getCurrentAccountSharedPreferences (line 235) | @Override
method getCustomThemeWrapper (line 240) | @Override
method applyCustomTheme (line 245) | @Override
method getCurrentAccountAndFetchMessage (line 255) | private void getCurrentAccountAndFetchMessage(Bundle savedInstanceStat...
method bindView (line 279) | private void bindView(Bundle savedInstanceState) {
method onCreateOptionsMenu (line 308) | @Override
method onOptionsItemSelected (line 315) | @Override
method onActivityResult (line 357) | @Override
method onSaveInstanceState (line 368) | @Override
method onDestroy (line 374) | @Override
method onAccountSwitchEvent (line 380) | @Subscribe
method onPassPrivateMessageIndexEvent (line 387) | @Subscribe
method onLongPress (line 394) | @Override
method lockSwipeRightToGoBack (line 401) | @Override
method unlockSwipeRightToGoBack (line 408) | @Override
method contentScrollUp (line 415) | @Override
method contentScrollDown (line 420) | @Override
class SectionsPagerAdapter (line 425) | private class SectionsPagerAdapter extends FragmentStateAdapter {
method SectionsPagerAdapter (line 427) | SectionsPagerAdapter(FragmentActivity fa) {
method getCurrentFragment (line 431) | @Nullable
method refresh (line 439) | void refresh() {
method goBackToTop (line 446) | void goBackToTop() {
method readAllMessages (line 453) | void readAllMessages() {
method getPrivateMessage (line 460) | Message getPrivateMessage(int index) {
method createFragment (line 471) | @NonNull
method getItemCount (line 489) | @Override
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/activities/LinkResolverActivity.java
class LinkResolverActivity (line 38) | public class LinkResolverActivity extends AppCompatActivity {
method getRedditUriByPath (line 76) | private Uri getRedditUriByPath(String path) {
method onCreate (line 84) | @Override
method handleUri (line 119) | private void handleUri(Uri uri) {
method deepLinkError (line 395) | private void deepLinkError(Uri uri) {
method openInBrowser (line 414) | private void openInBrowser(Uri uri, PackageManager pm, boolean handleE...
method getCustomTabsPackages (line 429) | private ArrayList<ResolveInfo> getCustomTabsPackages(PackageManager pm) {
method openInCustomTabs (line 451) | private void openInCustomTabs(Uri uri, PackageManager pm, boolean hand...
method openInWebView (line 484) | private void openInWebView(Uri uri) {
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/activities/LockScreenActivity.java
class LockScreenActivity (line 31) | public class LockScreenActivity extends BaseActivity {
method onCreate (line 43) | @Override
method authenticate (line 89) | private void authenticate() {
method getDefaultSharedPreferences (line 115) | @Override
method getCurrentAccountSharedPreferences (line 120) | @Override
method getCustomThemeWrapper (line 125) | @Override
method applyCustomTheme (line 130) | @Override
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/activities/LoginActivity.java
class LoginActivity (line 58) | public class LoginActivity extends BaseActivity {
method onCreate (line 81) | @Override
method getDefaultSharedPreferences (line 298) | @Override
method getCurrentAccountSharedPreferences (line 303) | @Override
method getCustomThemeWrapper (line 308) | @Override
method applyCustomTheme (line 313) | @Override
class JsRequestLogger (line 335) | private static class JsRequestLogger {
method log (line 336) | @JavascriptInterface
method onOptionsItemSelected (line 342) | @Override
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/activities/LoginChromeCustomTabActivity.java
class LoginChromeCustomTabActivity (line 55) | public class LoginChromeCustomTabActivity extends BaseActivity {
method onCreate (line 77) | @Override
method onNewIntent (line 117) | @Override
method getDefaultSharedPreferences (line 214) | @Override
method getCurrentAccountSharedPreferences (line 219) | @Override
method getCustomThemeWrapper (line 224) | @Override
method applyCustomTheme (line 229) | @Override
method openLoginPage (line 241) | private void openLoginPage() {
method isFirefoxBrowser (line 296) | private boolean isFirefoxBrowser(String packageName) {
method getCustomTabsPackages (line 305) | private ArrayList<ResolveInfo> getCustomTabsPackages(PackageManager pm) {
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/activities/MainActivity.java
class MainActivity (line 142) | public class MainActivity extends BaseActivity implements SortTypeSelect...
method onCreate (line 226) | @ExperimentalBadgeUtils
method getDefaultSharedPreferences (line 454) | @Override
method getCurrentAccountSharedPreferences (line 459) | @Override
method getCustomThemeWrapper (line 464) | @Override
method isDisableSwipingBetweenTabs (line 469) | public boolean isDisableSwipingBetweenTabs() {
method applyCustomTheme (line 473) | @Override
method initializeNotificationAndBindView (line 484) | @ExperimentalBadgeUtils
method setNotification (line 531) | private void setNotification(WorkManager workManager, long notificatio...
method bottomAppBarOptionAction (line 550) | private void bottomAppBarOptionAction(int option) {
method getBottomAppBarOptionDrawableResource (line 648) | private int getBottomAppBarOptionDrawableResource(int option) {
method bindView (line 690) | @ExperimentalBadgeUtils
method setBottomAppBarContentDescription (line 1203) | public void setBottomAppBarContentDescription(View view, int option) {
method loadSubscriptions (line 1263) | private void loadSubscriptions() {
method loadUserData (line 1297) | private void loadUserData() {
method setInboxCount (line 1332) | @ExperimentalBadgeUtils
method onCreateOptionsMenu (line 1340) | @Override
method changeSortType (line 1347) | private void changeSortType() {
method scrollTabToTop (line 1356) | private void scrollTabToTop(int position) {
method onOptionsItemSelected (line 1366) | @Override
method onKeyDown (line 1389) | @Override
method onSaveInstanceState (line 1398) | @Override
method onDestroy (line 1409) | @Override
method sortTypeSelected (line 1415) | @Override
method sortTypeSelected (line 1420) | @Override
method postTypeSelected (line 1429) | @Override
method postLayoutSelected (line 1459) | @Override
method contentScrollUp (line 1464) | @Override
method contentScrollDown (line 1474) | @Override
method onAccountSwitchEvent (line 1484) | @Subscribe
method onChangeNSFWEvent (line 1491) | @Subscribe
method onRecreateActivityEvent (line 1499) | @Subscribe(threadMode = ThreadMode.MAIN)
method onChangeLockBottomAppBar (line 1504) | @Subscribe
method onChangeDisableSwipingBetweenTabsEvent (line 1509) | @Subscribe
method onChangeRequireAuthToAccountSectionEvent (line 1515) | @Subscribe
method onChangeShowAvatarOnTheRightInTheNavigationDrawerEvent (line 1522) | @Subscribe
method onChangeInboxCountEvent (line 1543) | @ExperimentalBadgeUtils
method onChangeHideKarmaEvent (line 1550) | @Subscribe
method onChangeHideFabInPostFeed (line 1557) | @Subscribe
method onNewUserLoggedInEvent (line 1563) | @Subscribe
method onLongPress (line 1570) | @Override
method displaySortType (line 1577) | @Override
method fabOptionSelected (line 1584) | @Override
method goToSubreddit (line 1636) | private void goToSubreddit() {
method goToUser (line 1738) | private void goToUser() {
method markPostAsRead (line 1774) | @Override
method doNotShowRedditAPIInfoAgain (line 1780) | public void doNotShowRedditAPIInfoAgain() {
class SectionsPagerAdapter (line 1784) | private class SectionsPagerAdapter extends FragmentStateAdapter {
method SectionsPagerAdapter (line 1795) | SectionsPagerAdapter(FragmentActivity fa, int tabCount, boolean show...
method createFragment (line 1810) | @NonNull
method setFavoriteMultiReddits (line 1904) | public void setFavoriteMultiReddits(List<MultiReddit> favoriteMultiR...
method setMultiReddits (line 1909) | public void setMultiReddits(List<MultiReddit> multiReddits) {
method setFavoriteSubscribedSubreddits (line 1914) | public void setFavoriteSubscribedSubreddits(List<SubscribedSubreddit...
method setSubscribedSubreddits (line 1919) | public void setSubscribedSubreddits(List<SubscribedSubredditData> su...
method generatePostFragment (line 1924) | private Fragment generatePostFragment(int postType, String name) {
method getItemCount (line 1992) | @Override
method getCurrentFragment (line 1998) | @Nullable
method getFragmentAtPosition (line 2010) | @Nullable
method handleKeyDown (line 2022) | boolean handleKeyDown(int keyCode) {
method getCurrentPostType (line 2030) | int getCurrentPostType() {
method changeSortType (line 2038) | void changeSortType(SortType sortType) {
method refresh (line 2046) | public void refresh() {
method changeNSFW (line 2053) | void changeNSFW(boolean nsfw) {
method changePostLayout (line 2062) | void changePostLayout(int postLayout) {
method goBackToTop (line 2069) | void goBackToTop() {
method displaySortTypeInToolbar (line 2076) | void displaySortTypeInToolbar() {
method hideReadPosts (line 2084) | void hideReadPosts() {
method filterPosts (line 2091) | void filterPosts() {
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/activities/PostFilterPreferenceActivity.java
class PostFilterPreferenceActivity (line 40) | public class PostFilterPreferenceActivity extends BaseActivity {
method onCreate (line 62) | @Override
method showPostFilterOptions (line 160) | public void showPostFilterOptions(Post post, @Nullable PostFilter post...
method excludeSubredditInFilter (line 207) | public void excludeSubredditInFilter(String subredditName, PostFilter ...
method excludeUserInFilter (line 216) | public void excludeUserInFilter(String username, PostFilter postFilter) {
method editPostFilter (line 225) | public void editPostFilter(PostFilter postFilter) {
method applyPostFilterTo (line 232) | public void applyPostFilterTo(PostFilter postFilter) {
method deletePostFilter (line 238) | public void deletePostFilter(PostFilter postFilter) {
method getDefaultSharedPreferences (line 242) | @Override
method getCurrentAccountSharedPreferences (line 247) | @Override
method getCustomThemeWrapper (line 252) | @Override
method applyCustomTheme (line 257) | @Override
method onOptionsItemSelected (line 266) | @Override
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/activities/PostFilterUsageListingActivity.java
class PostFilterUsageListingActivity (line 48) | public class PostFilterUsageListingActivity extends BaseActivity {
method onCreate (line 72) | @Override
method newPostFilterUsage (line 147) | public void newPostFilterUsage(int type) {
method editAndPostFilterUsageNameOfUsage (line 167) | private void editAndPostFilterUsageNameOfUsage(int type, String nameOf...
method editPostFilterUsage (line 234) | public void editPostFilterUsage(PostFilterUsage postFilterUsage) {
method deletePostFilterUsage (line 238) | public void deletePostFilterUsage(PostFilterUsage postFilterUsage) {
method onOptionsItemSelected (line 242) | @Override
method getDefaultSharedPreferences (line 252) | @Override
method getCurrentAccountSharedPreferences (line 257) | @Override
method getCustomThemeWrapper (line 262) | @Override
method applyCustomTheme (line 267) | @Override
method onActivityResult (line 275) | @Override
method applyNewItemsToField (line 289) | private void applyNewItemsToField(com.google.android.material.textfiel...
method getToAdd (line 301) | @NonNull
method getStringBuilder (line 320) | @NonNull
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/activities/PostGalleryActivity.java
class PostGalleryActivity (line 79) | public class PostGalleryActivity extends BaseActivity implements FlairBo...
method onCreate (line 149) | @Override
method loadCurrentAccount (line 416) | private void loadCurrentAccount() {
method getDefaultSharedPreferences (line 435) | @Override
method getCurrentAccountSharedPreferences (line 440) | @Override
method getCustomThemeWrapper (line 445) | @Override
method applyCustomTheme (line 450) | @Override
method selectImage (line 491) | public void selectImage() {
method captureImage (line 498) | public void captureImage() {
method uploadImage (line 512) | private void uploadImage() {
method displaySubredditIcon (line 535) | private void displaySubredditIcon() {
method loadSubredditIcon (line 549) | private void loadSubredditIcon() {
method promptAlertDialog (line 558) | private void promptAlertDialog(int titleResId, int messageResId) {
method onCreateOptionsMenu (line 568) | @Override
method onOptionsItemSelected (line 580) | @Override
method onSaveInstanceState (line 663) | @Override
method onActivityResult (line 680) | @Override
method onDestroy (line 719) | @Override
method flairSelected (line 725) | @Override
method onAccountSelected (line 734) | @Override
method setCaptionAndUrl (line 749) | public void setCaptionAndUrl(int position, String caption, String url) {
method onAccountSwitchEvent (line 755) | @Subscribe
method onSubmitGalleryPostEvent (line 760) | @Subscribe
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/activities/PostImageActivity.java
class PostImageActivity (line 71) | public class PostImageActivity extends BaseActivity implements FlairBott...
method onCreate (line 139) | @Override
method loadCurrentAccount (line 417) | private void loadCurrentAccount() {
method getDefaultSharedPreferences (line 436) | @Override
method getCurrentAccountSharedPreferences (line 441) | @Override
method getCustomThemeWrapper (line 446) | @Override
method applyCustomTheme (line 451) | @Override
method loadImage (line 496) | private void loadImage() {
method displaySubredditIcon (line 503) | private void displaySubredditIcon() {
method loadSubredditIcon (line 517) | private void loadSubredditIcon() {
method promptAlertDialog (line 526) | private void promptAlertDialog(int titleResId, int messageResId) {
method onCreateOptionsMenu (line 536) | @Override
method onOptionsItemSelected (line 548) | @Override
method onSaveInstanceState (line 666) | @Override
method onActivityResult (line 684) | @Override
method onDestroy (line 721) | @Override
method flairSelected (line 727) | @Override
method onAccountSelected (line 736) | @Override
method captureImage (line 751) | private void captureImage() {
method onAccountSwitchEvent (line 765) | @Subscribe
method onSubmitImagePostEvent (line 770) | @Subscribe
method onSubmitGifPostEvent (line 791) | @Subscribe
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/activities/PostLinkActivity.java
class PostLinkActivity (line 66) | public class PostLinkActivity extends BaseActivity implements FlairBotto...
method onCreate (line 131) | @Override
method loadCurrentAccount (line 411) | private void loadCurrentAccount() {
method getDefaultSharedPreferences (line 430) | @Override
method getCurrentAccountSharedPreferences (line 435) | @Override
method getCustomThemeWrapper (line 440) | @Override
method applyCustomTheme (line 445) | @Override
method displaySubredditIcon (line 492) | private void displaySubredditIcon() {
method loadSubredditIcon (line 506) | private void loadSubredditIcon() {
method promptAlertDialog (line 515) | private void promptAlertDialog(int titleResId, int messageResId) {
method onCreateOptionsMenu (line 524) | @Override
method onOptionsItemSelected (line 536) | @Override
method onSaveInstanceState (line 621) | @Override
method onActivityResult (line 636) | @Override
method onDestroy (line 661) | @Override
method flairSelected (line 667) | @Override
method onAccountSelected (line 676) | @Override
method onAccountSwitchEvent (line 691) | @Subscribe
method onSubmitLinkPostEvent (line 696) | @Subscribe
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/activities/PostPollActivity.java
class PostPollActivity (line 80) | public class PostPollActivity extends BaseActivity implements FlairBotto...
method onCreate (line 149) | @Override
method loadCurrentAccount (line 403) | private void loadCurrentAccount() {
method getDefaultSharedPreferences (line 422) | @Override
method getCurrentAccountSharedPreferences (line 427) | @Override
method getCustomThemeWrapper (line 432) | @Override
method applyCustomTheme (line 437) | @Override
method setCursorDrawableColor (line 526) | public void setCursorDrawableColor(EditText editText, int color) {
method displaySubredditIcon (line 546) | private void displaySubredditIcon() {
method loadSubredditIcon (line 560) | private void loadSubredditIcon() {
method promptAlertDialog (line 569) | private void promptAlertDialog(int titleResId, int messageResId) {
method onCreateOptionsMenu (line 579) | @Override
method onOptionsItemSelected (line 591) | @Override
method submitPost (line 610) | private void submitPost(MenuItem item) {
method onSaveInstanceState (line 699) | @Override
method onActivityResult (line 715) | @Override
method flairSelected (line 752) | @Override
method uploadImage (line 761) | @Override
method captureImage (line 770) | @Override
method insertImageUrl (line 785) | @Override
method onAccountSelected (line 801) | @Override
method onAccountSwitchEvent (line 816) | @Subscribe
method onSubmitPollPostEvent (line 821) | @Subscribe
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/activities/PostTextActivity.java
class PostTextActivity (line 70) | public class PostTextActivity extends BaseActivity implements FlairBotto...
method onCreate (line 140) | @Override
method loadCurrentAccount (line 392) | private void loadCurrentAccount() {
method getDefaultSharedPreferences (line 411) | @Override
method getCurrentAccountSharedPreferences (line 416) | @Override
method getCustomThemeWrapper (line 421) | @Override
method applyCustomTheme (line 426) | @Override
method displaySubredditIcon (line 467) | private void displaySubredditIcon() {
method loadSubredditIcon (line 481) | private void loadSubredditIcon() {
method promptAlertDialog (line 490) | private void promptAlertDialog(int titleResId, int messageResId) {
method onCreateOptionsMenu (line 500) | @Override
method onOptionsItemSelected (line 512) | @Override
method submitPost (line 531) | private void submitPost(MenuItem item) {
method onSaveInstanceState (line 609) | @Override
method onActivityResult (line 625) | @Override
method onDestroy (line 664) | @Override
method flairSelected (line 670) | @Override
method onAccountSwitchEvent (line 679) | @Subscribe
method onSubmitTextPostEvent (line 684) | @Subscribe
method uploadImage (line 705) | @Override
method captureImage (line 714) | @Override
method insertImageUrl (line 729) | @Override
method onAccountSelected (line 745) | @Override
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/activities/PostVideoActivity.java
class PostVideoActivity (line 75) | public class PostVideoActivity extends BaseActivity implements FlairBott...
method onCreate (line 148) | @OptIn(markerClass = UnstableApi.class)
method loadCurrentAccount (line 449) | private void loadCurrentAccount() {
method getDefaultSharedPreferences (line 468) | @Override
method getCurrentAccountSharedPreferences (line 473) | @Override
method getCustomThemeWrapper (line 478) | @Override
method applyCustomTheme (line 483) | @Override
method loadVideo (line 528) | @OptIn(markerClass = UnstableApi.class)
method displaySubredditIcon (line 538) | private void displaySubredditIcon() {
method loadSubredditIcon (line 552) | private void loadSubredditIcon() {
method promptAlertDialog (line 561) | private void promptAlertDialog(int titleResId, int messageResId) {
method onCreateOptionsMenu (line 570) | @Override
method onOptionsItemSelected (line 582) | @Override
method onStart (line 666) | @Override
method onStop (line 674) | @Override
method onSaveInstanceState (line 680) | @Override
method onActivityResult (line 698) | @Override
method onDestroy (line 742) | @Override
method flairSelected (line 751) | @Override
method onAccountSelected (line 760) | @Override
method onAccountSwitchEvent (line 775) | @Subscribe
method onSubmitVideoPostEvent (line 780) | @Subscribe
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/activities/QRCodeScannerActivity.java
class QRCodeScannerActivity (line 25) | public class QRCodeScannerActivity extends AppCompatActivity {
method onCreate (line 41) | @Override
method initializeScanner (line 67) | private void initializeScanner() {
method onResume (line 87) | @Override
method onPause (line 93) | @Override
method onOptionsItemSelected (line 99) | @Override
method onBackPressed (line 110) | @Override
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/activities/ReportActivity.java
class ReportActivity (line 39) | public class ReportActivity extends BaseActivity {
method onCreate (line 71) | @Override
method onCreateOptionsMenu (line 152) | @Override
method onOptionsItemSelected (line 159) | @Override
method onSaveInstanceState (line 191) | @Override
method getDefaultSharedPreferences (line 200) | @Override
method getCurrentAccountSharedPreferences (line 205) | @Override
method getCustomThemeWrapper (line 210) | @Override
method applyCustomTheme (line 215) | @Override
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/activities/RulesActivity.java
class RulesActivity (line 41) | public class RulesActivity extends BaseActivity {
method onCreate (line 65) | @Override
method getDefaultSharedPreferences (line 156) | @Override
method getCurrentAccountSharedPreferences (line 161) | @Override
method getCustomThemeWrapper (line 166) | @Override
method applyCustomTheme (line 171) | @Override
method displayError (line 184) | private void displayError() {
method onOptionsItemSelected (line 214) | @Override
method onDestroy (line 224) | @Override
method onAccountSwitchEvent (line 230) | @Subscribe
method onChangeNetworkStatusEvent (line 235) | @Subscribe
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/activities/SearchActivity.java
class SearchActivity (line 69) | public class SearchActivity extends BaseActivity {
method onCreate (line 126) | @Override
method bindView (line 387) | private void bindView() {
method search (line 470) | private void search(String query) {
method openSearchResult (line 480) | private void openSearchResult(String query) {
method setSearchInThingText (line 507) | private void setSearchInThingText() {
method getDefaultSharedPreferences (line 523) | @Override
method getCurrentAccountSharedPreferences (line 528) | @Override
method getCustomThemeWrapper (line 533) | @Override
method applyCustomTheme (line 538) | @Override
method onStart (line 558) | @Override
method onPause (line 572) | @Override
method onActivityResult (line 578) | @Override
method onOptionsItemSelected (line 611) | @Override
method onSaveInstanceState (line 621) | @Override
method onDestroy (line 629) | @Override
method onAccountSwitchEvent (line 635) | @Subscribe
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/activities/SearchHistoryActivity.java
class SearchHistoryActivity (line 45) | public class SearchHistoryActivity extends BaseActivity {
method onCreate (line 66) | @Override
method getDefaultSharedPreferences (line 194) | @Override
method getCurrentAccountSharedPreferences (line 199) | @Override
method getCustomThemeWrapper (line 204) | @Override
method applyCustomTheme (line 209) | @Override
method onOptionsItemSelected (line 220) | @Override
method onDestroy (line 229) | @Override
method onAccountSwitchEvent (line 235) | @Subscribe
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/activities/SearchResultActivity.java
class SearchResultActivity (line 85) | public class SearchResultActivity extends BaseActivity implements SortTy...
method onCreate (line 143) | @Override
method onKeyDown (line 239) | @Override
method getDefaultSharedPreferences (line 247) | @Override
method getCurrentAccountSharedPreferences (line 252) | @Override
method getCustomThemeWrapper (line 257) | @Override
method applyCustomTheme (line 262) | @Override
method bindView (line 272) | private void bindView(Bundle savedInstanceState) {
method displaySortTypeBottomSheetFragment (line 433) | private void displaySortTypeBottomSheetFragment() {
method onCreateOptionsMenu (line 451) | @Override
method onOptionsItemSelected (line 458) | @Override
method onSaveInstanceState (line 489) | @Override
method onDestroy (line 495) | @Override
method sortTypeSelected (line 501) | @Override
method sortTypeSelected (line 509) | @Override
method searchUserAndSubredditSortTypeSelected (line 518) | @Override
method postLayoutSelected (line 526) | @Override
method onAccountSwitchEvent (line 534) | @Subscribe
method onChangeNSFWEvent (line 539) | @Subscribe
method onLongPress (line 546) | @Override
method displaySortType (line 553) | @Override
method fabOptionSelected (line 560) | @Override
method goToSubreddit (line 615) | private void goToSubreddit() {
method goToUser (line 715) | private void goToUser() {
method postTypeSelected (line 749) | @Override
method contentScrollUp (line 779) | @Override
method contentScrollDown (line 784) | @Override
method markPostAsRead (line 789) | @Override
class SectionsPagerAdapter (line 795) | private class SectionsPagerAdapter extends FragmentStateAdapter {
method SectionsPagerAdapter (line 797) | public SectionsPagerAdapter(FragmentActivity fa) {
method createFragment (line 801) | @NonNull
method createPostFragment (line 824) | private Fragment createPostFragment() {
method createSubredditListingFragment (line 846) | private Fragment createSubredditListingFragment(boolean returnSubred...
method createUserListingFragment (line 855) | private Fragment createUserListingFragment(boolean returnUsername) {
method getCurrentFragment (line 864) | @Nullable
method handleKeyDown (line 872) | public boolean handleKeyDown(int keyCode) {
method changeSortType (line 883) | void changeSortType(SortType sortType) {
method changeSortType (line 891) | void changeSortType(SortType sortType, int fragmentPosition) {
method refresh (line 901) | public void refresh() {
method changeNSFW (line 908) | void changeNSFW(boolean nsfw) {
method changePostLayout (line 915) | void changePostLayout(int postLayout) {
method goBackToTop (line 922) | void goBackToTop() {
method displaySortTypeInToolbar (line 933) | void displaySortTypeInToolbar() {
method filterPosts (line 947) | void filterPosts() {
method hideReadPosts (line 954) | void hideReadPosts() {
method getItemCount (line 961) | @Override
method lockSwipeRightToGoBack (line 970) | @Override
method unlockSwipeRightToGoBack (line 977) | @Override
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/activities/SearchSubredditsResultActivity.java
class SearchSubredditsResultActivity (line 38) | public class SearchSubredditsResultActivity extends BaseActivity impleme...
method onCreate (line 57) | @Override
method getDefaultSharedPreferences (line 128) | @Override
method getCurrentAccountSharedPreferences (line 133) | @Override
method getCustomThemeWrapper (line 138) | @Override
method applyCustomTheme (line 143) | @Override
method onCreateOptionsMenu (line 149) | @Override
method onOptionsItemSelected (line 158) | @Override
method onSaveInstanceState (line 175) | @Override
method onDestroy (line 181) | @Override
method onAccountSwitchEvent (line 187) | @Subscribe
method onLongPress (line 192) | @Override
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/activities/SearchUsersResultActivity.java
class SearchUsersResultActivity (line 37) | public class SearchUsersResultActivity extends BaseActivity implements A...
method onCreate (line 56) | @Override
method getDefaultSharedPreferences (line 127) | @Override
method getCurrentAccountSharedPreferences (line 132) | @Override
method getCustomThemeWrapper (line 137) | @Override
method applyCustomTheme (line 142) | @Override
method onCreateOptionsMenu (line 149) | @Override
method onOptionsItemSelected (line 158) | @Override
method onSaveInstanceState (line 176) | @Override
method onDestroy (line 182) | @Override
method onAccountSwitchEvent (line 188) | @Subscribe
method onLongPress (line 193) | @Override
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/activities/SelectUserFlairActivity.java
class SelectUserFlairActivity (line 39) | public class SelectUserFlairActivity extends BaseActivity implements Act...
method onCreate (line 63) | @Override
method bindView (line 120) | private void bindView() {
method instantiateRecyclerView (line 140) | private void instantiateRecyclerView() {
method selectUserFlair (line 186) | private void selectUserFlair(@Nullable UserFlair userFlair) {
method onOptionsItemSelected (line 214) | @Override
method onSaveInstanceState (line 223) | @Override
method getDefaultSharedPreferences (line 229) | @Override
method getCurrentAccountSharedPreferences (line 234) | @Override
method getCustomThemeWrapper (line 239) | @Override
method applyCustomTheme (line 244) | @Override
method onLongPress (line 250) | @Override
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/activities/SelectedSubredditsAndUsersActivity.java
class SelectedSubredditsAndUsersActivity (line 40) | public class SelectedSubredditsAndUsersActivity extends BaseActivity imp...
method onCreate (line 61) | @Override
method selectSubreddits (line 145) | public void selectSubreddits() {
method selectUsers (line 150) | public void selectUsers() {
method onCreateOptionsMenu (line 157) | @Override
method onOptionsItemSelected (line 164) | @Override
method onActivityResult (line 180) | @Override
method onSaveInstanceState (line 208) | @Override
method getDefaultSharedPreferences (line 216) | @Override
method getCurrentAccountSharedPreferences (line 221) | @Override
method getCustomThemeWrapper (line 226) | @Override
method applyCustomTheme (line 231) | @Override
method onLongPress (line 240) | @Override
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/activities/SendPrivateMessageActivity.java
class SendPrivateMessageActivity (line 32) | public class SendPrivateMessageActivity extends BaseActivity {
method onCreate (line 52) | @Override
method onCreateOptionsMenu (line 103) | @Override
method onOptionsItemSelected (line 110) | @Override
method onSaveInstanceState (line 172) | @Override
method getDefaultSharedPreferences (line 177) | @Override
method getCurrentAccountSharedPreferences (line 182) | @Override
method getCustomThemeWrapper (line 187) | @Override
method applyCustomTheme (line 192) | @Override
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/activities/SettingsActivity.java
class SettingsActivity (line 55) | public class SettingsActivity extends BaseActivity implements
method onCreate (line 71) | @Override
method getDefaultSharedPreferences (line 166) | @Override
method getCurrentAccountSharedPreferences (line 171) | @Override
method getCustomThemeWrapper (line 176) | @Override
method applyCustomTheme (line 181) | @Override
method onCreateOptionsMenu (line 187) | @Override
method onPrepareOptionsMenu (line 193) | @Override
method onOptionsItemSelected (line 200) | @Override
method navigateToSettingsFragment (line 228) | public void navigateToSettingsFragment(Fragment fragment, int titleRes...
method setToolbarScrollLocked (line 240) | private void setToolbarScrollLocked(boolean locked) {
method onSaveInstanceState (line 247) | @Override
method onSupportNavigateUp (line 253) | @Override
method onPreferenceStartFragment (line 262) | @Override
method onDestroy (line 280) | @Override
method showSnackbar (line 286) | public void showSnackbar(int stringId, int actionStringId, View.OnClic...
method onRecreateActivityEvent (line 290) | @Subscribe(threadMode = ThreadMode.MAIN)
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/activities/ShareDataResolverActivity.java
class ShareDataResolverActivity (line 13) | public class ShareDataResolverActivity extends AppCompatActivity {
method onCreate (line 15) | @Override
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/activities/SubmitCrosspostActivity.java
class SubmitCrosspostActivity (line 66) | public class SubmitCrosspostActivity extends BaseActivity implements Fla...
method onCreate (line 127) | @Override
method loadCurrentAccount (line 388) | private void loadCurrentAccount() {
method getPreview (line 407) | @Nullable
method getDefaultSharedPreferences (line 417) | @Override
method getCurrentAccountSharedPreferences (line 422) | @Override
method getCustomThemeWrapper (line 427) | @Override
method applyCustomTheme (line 432) | @Override
method displaySubredditIcon (line 478) | private void displaySubredditIcon() {
method loadSubredditIcon (line 492) | private void loadSubredditIcon() {
method promptAlertDialog (line 501) | private void promptAlertDialog(int titleResId, int messageResId) {
method onCreateOptionsMenu (line 511) | @Override
method onOptionsItemSelected (line 523) | @Override
method onSaveInstanceState (line 603) | @Override
method onActivityResult (line 618) | @Override
method onDestroy (line 641) | @Override
method flairSelected (line 647) | @Override
method onAccountSelected (line 656) | @Override
method onAccountSwitchEvent (line 671) | @Subscribe
method onSubmitCrosspostEvent (line 676) | @Subscribe
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/activities/SubredditMultiselectionActivity.java
class SubredditMultiselectionActivity (line 43) | public class SubredditMultiselectionActivity extends BaseActivity implem...
method onCreate (line 70) | @Override
method bindView (line 130) | private void bindView() {
method onCreateOptionsMenu (line 154) | @Override
method onOptionsItemSelected (line 161) | @Override
method onActivityResult (line 186) | @Override
method onSaveInstanceState (line 204) | @Override
method getDefaultSharedPreferences (line 209) | @Override
method getCurrentAccountSharedPreferences (line 214) | @Override
method getCustomThemeWrapper (line 219) | @Override
method applyCustomTheme (line 224) | @Override
method onLongPress (line 236) | @Override
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/activities/SubscribedThingListingActivity.java
class SubscribedThingListingActivity (line 80) | public class SubscribedThingListingActivity extends BaseActivity impleme...
method onCreate (line 123) | @Override
method getDefaultSharedPreferences (line 278) | @Override
method getCurrentAccountSharedPreferences (line 283) | @Override
method getCustomThemeWrapper (line 288) | @Override
method applyCustomTheme (line 293) | @Override
method initializeViewPagerAndLoadSubscriptions (line 304) | private void initializeViewPagerAndLoadSubscriptions() {
method onCreateOptionsMenu (line 342) | @Override
method onOptionsItemSelected (line 351) | @Override
method onSaveInstanceState (line 397) | @Override
method onDestroy (line 404) | @Override
method loadSubscriptions (line 410) | public void loadSubscriptions(boolean forceLoad) {
method showFabInMultiredditTab (line 451) | public void showFabInMultiredditTab() {
method hideFabInMultiredditTab (line 457) | public void hideFabInMultiredditTab() {
method loadMultiReddits (line 463) | private void loadMultiReddits() {
method deleteMultiReddit (line 485) | public void deleteMultiReddit(MultiReddit multiReddit) {
method onAccountSwitchEvent (line 514) | @Subscribe
method goBackToMainPageEvent (line 519) | @Subscribe
method onRefreshMultiRedditsEvent (line 524) | @Subscribe
method onLongPress (line 529) | @Override
method lockSwipeRightToGoBack (line 536) | @Override
method unlockSwipeRightToGoBack (line 543) | @Override
class SectionsPagerAdapter (line 550) | private class SectionsPagerAdapter extends FragmentPagerAdapter {
method SectionsPagerAdapter (line 559) | public SectionsPagerAdapter(FragmentManager fm) {
method getItem (line 563) | @NonNull
method getSubscribedSubredditListingFragment (line 596) | @NonNull
method getFollowedUserFragment (line 608) | @NonNull
method getMultiRedditListingFragment (line 618) | @NonNull
method getCount (line 628) | @Override
method getPageTitle (line 643) | @Override
method instantiateItem (line 677) | @NonNull
method stopRefreshProgressbar (line 692) | void stopRefreshProgressbar() {
method stopMultiRedditRefreshProgressbar (line 701) | void stopMultiRedditRefreshProgressbar() {
method getCurrentFragment (line 707) | @Nullable
method goBackToTop (line 717) | void goBackToTop() {
method changeSearchQuery (line 728) | void changeSearchQuery(String searchQuery) {
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/activities/SuicidePreventionActivity.java
class SuicidePreventionActivity (line 16) | public class SuicidePreventionActivity extends BaseActivity {
method onCreate (line 31) | @Override
method getDefaultSharedPreferences (line 57) | @Override
method getCurrentAccountSharedPreferences (line 62) | @Override
method getCustomThemeWrapper (line 67) | @Override
method applyCustomTheme (line 72) | @Override
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/activities/UploadImageEnabledActivity.java
type UploadImageEnabledActivity (line 5) | public interface UploadImageEnabledActivity {
method uploadImage (line 6) | void uploadImage();
method captureImage (line 7) | void captureImage();
method insertImageUrl (line 8) | void insertImageUrl(UploadedImage uploadedImage);
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/activities/UserMultiselectionActivity.java
class UserMultiselectionActivity (line 39) | public class UserMultiselectionActivity extends BaseActivity implements ...
method onCreate (line 66) | @Override
method bindView (line 130) | private void bindView() {
method onCreateOptionsMenu (line 154) | @Override
method onOptionsItemSelected (line 161) | @Override
method onActivityResult (line 186) | @Override
method onSaveInstanceState (line 202) | @Override
method getDefaultSharedPreferences (line 207) | @Override
method getCurrentAccountSharedPreferences (line 212) | @Override
method getCustomThemeWrapper (line 217) | @Override
method applyCustomTheme (line 222) | @Override
method onLongPress (line 233) | @Override
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewImageOrGifActivity.java
class ViewImageOrGifActivity (line 85) | public class ViewImageOrGifActivity extends AppCompatActivity implements...
method onCreate (line 115) | @Override
method loadImage (line 320) | private void loadImage() {
method onCreateOptionsMenu (line 365) | @Override
method onOptionsItemSelected (line 377) | @Override
method requestPermissionAndDownload (line 404) | private void requestPermissionAndDownload() {
method download (line 423) | private void download() {
method shareImage (line 501) | private void shareImage() {
method shareGif (line 543) | private void shareGif() {
method setWallpaper (line 584) | private void setWallpaper() {
method onRequestPermissionsResult (line 606) | @Override
method setToHomeScreen (line 619) | @Override
method setToLockScreen (line 635) | @Override
method setToBoth (line 651) | @Override
method onDestroy (line 667) | @Override
method setCustomFont (line 674) | @Override
method onFinishViewMediaActivityEvent (line 679) | @Subscribe
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewImgurMediaActivity.java
class ViewImgurMediaActivity (line 67) | public class ViewImgurMediaActivity extends AppCompatActivity implements...
method onCreate (line 99) | @Override
method isUseBottomAppBar (line 182) | public boolean isUseBottomAppBar() {
method fetchImgurMedia (line 186) | private void fetchImgurMedia(String imgurId) {
method setupViewPager (line 293) | private void setupViewPager() {
method setToolbarTitle (line 308) | private void setToolbarTitle(int position) {
method onCreateOptionsMenu (line 318) | @Override
method onOptionsItemSelected (line 327) | @Override
method onSaveInstanceState (line 396) | @Override
method setToHomeScreen (line 402) | @Override
method setToLockScreen (line 420) | @Override
method setToBoth (line 438) | @Override
method getCurrentPagePosition (line 456) | public int getCurrentPagePosition() {
method parseImgurImages (line 460) | @WorkerThread
method parseImgurImage (line 492) | @WorkerThread
method setCustomFont (line 514) | @Override
class SectionsPagerAdapter (line 519) | private class SectionsPagerAdapter extends FragmentStatePagerAdapter {
method SectionsPagerAdapter (line 521) | SectionsPagerAdapter(@NonNull FragmentManager fm) {
method getItem (line 525) | @NonNull
method getCount (line 554) | @Override
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewMultiRedditDetailActivity.java
class ViewMultiRedditDetailActivity (line 88) | public class ViewMultiRedditDetailActivity extends BaseActivity implemen...
method onKeyDown (line 140) | @Override
method onCreate (line 147) | @ExperimentalBadgeUtils
method initializeFragment (line 493) | private void initializeFragment() {
method bottomAppBarOptionAction (line 502) | private void bottomAppBarOptionAction(int option) {
method getBottomAppBarOptionDrawableResource (line 603) | private int getBottomAppBarOptionDrawableResource(int option) {
method showSortTypeBottomSheetFragment (line 647) | private void showSortTypeBottomSheetFragment() {
method showPostLayoutBottomSheetFragment (line 654) | private void showPostLayoutBottomSheetFragment() {
method goToSubreddit (line 659) | private void goToSubreddit() {
method goToUser (line 759) | private void goToUser() {
method onCreateOptionsMenu (line 793) | @Override
method onOptionsItemSelected (line 808) | @Override
method showListSubredditsDialog (line 910) | private void showListSubredditsDialog(ArrayList<ExpandedSubredditInMul...
method onSaveInstanceState (line 941) | @Override
method onDestroy (line 947) | @Override
method sortTypeSelected (line 953) | @Override
method sortTypeSelected (line 959) | @Override
method postLayoutSelected (line 968) | @Override
method getDefaultSharedPreferences (line 976) | @Override
method getCurrentAccountSharedPreferences (line 981) | @Override
method getCustomThemeWrapper (line 986) | @Override
method applyCustomTheme (line 991) | @Override
method onLongPress (line 1001) | @Override
method displaySortType (line 1008) | @Override
method markPostAsRead (line 1016) | @Override
method postTypeSelected (line 1022) | @Override
method fabOptionSelected (line 1052) | @Override
method contentScrollUp (line 1103) | @Override
method contentScrollDown (line 1113) | @Override
method setInboxCount (line 1123) | @ExperimentalBadgeUtils
method goBackToMainPageEvent (line 1128) | @Subscribe
method onAccountSwitchEvent (line 1133) | @Subscribe
method onChangeInboxCountEvent (line 1140) | @ExperimentalBadgeUtils
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewPostDetailActivity.java
class ViewPostDetailActivity (line 90) | public class ViewPostDetailActivity extends BaseActivity implements Sort...
method onCreate (line 166) | @Override
method setTitle (line 312) | public void setTitle(String title) {
method showFab (line 316) | public void showFab() {
method hideFab (line 322) | public void hideFab() {
method showSnackBar (line 328) | public void showSnackBar(int resId) {
method scrollToNextParentComment (line 332) | public void scrollToNextParentComment() {
method scrollToPreviousParentComment (line 341) | public boolean scrollToPreviousParentComment() {
method scrollToParentComment (line 353) | public void scrollToParentComment(int position, int currentDepth) {
method getDefaultSharedPreferences (line 362) | @Override
method getCurrentAccountSharedPreferences (line 367) | @Override
method getCustomThemeWrapper (line 372) | @Override
method applyCustomTheme (line 377) | @Override
method checkNewAccountAndBindView (line 398) | private void checkNewAccountAndBindView(Bundle savedInstanceState) {
method bindView (line 422) | private void bindView(Bundle savedInstanceState) {
method isNsfwSubreddit (line 461) | public boolean isNsfwSubreddit() {
method editComment (line 465) | private void editComment(Comment comment, int position) {
method editComment (line 474) | private void editComment(String commentContentMarkdown, int position) {
method deleteComment (line 483) | public void deleteComment(String fullName, int position) {
method toggleReplyNotifications (line 492) | public void toggleReplyNotifications(Comment comment, int position) {
method saveComment (line 501) | public void saveComment(@NonNull Comment comment, int position) {
method toggleSearchPanelVisibility (line 547) | public boolean toggleSearchPanelVisibility() {
method searchComment (line 558) | public void searchComment(ViewPostDetailFragment fragment, boolean sea...
method fetchMorePosts (line 564) | public void fetchMorePosts(boolean changePage) {
method onAccountSwitchEvent (line 786) | @Subscribe
method onProvidePostListToViewPostDetailActivityEvent (line 793) | @Subscribe
method onCreateOptionsMenu (line 817) | @Override
method onOptionsItemSelected (line 824) | @Override
method onActivityResult (line 842) | @Override
method onSaveInstanceState (line 878) | @Override
method onDestroy (line 884) | @Override
method onKeyDown (line 892) | @Override
method sortTypeSelected (line 907) | @Override
method onLongPress (line 916) | @Override
method lockSwipeRightToGoBack (line 924) | @Override
method unlockSwipeRightToGoBack (line 931) | @Override
method loadAuthorIcons (line 938) | public void loadAuthorIcons(List<Comment> comments, ViewPostDetailActi...
class SectionsPagerAdapter (line 942) | private class SectionsPagerAdapter extends FragmentStateAdapter {
method SectionsPagerAdapter (line 944) | public SectionsPagerAdapter(@NonNull FragmentActivity fragmentActivi...
method createFragment (line 948) | @NonNull
method getItemCount (line 986) | @Override
method getCurrentFragment (line 991) | @Nullable
method getMorePostsInfoFragment (line 1003) | @Nullable
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewPrivateMessagesActivity.java
class ViewPrivateMessagesActivity (line 48) | public class ViewPrivateMessagesActivity extends BaseActivity implements...
method onCreate (line 86) | @Override
method bindView (line 148) | private void bindView() {
method fetchUserAvatar (line 257) | public void fetchUserAvatar(String username, ProvideUserAvatarCallback...
method delayTransition (line 276) | public void delayTransition() {
method goToBottom (line 280) | private void goToBottom() {
method onOptionsItemSelected (line 286) | @Override
method onSaveInstanceState (line 296) | @Override
method onDestroy (line 303) | @Override
method getDefaultSharedPreferences (line 310) | @Override
method getCurrentAccountSharedPreferences (line 315) | @Override
method getCustomThemeWrapper (line 320) | @Override
method applyCustomTheme (line 325) | @Override
method onLongPress (line 341) | @Override
method onPassPrivateMessageEvent (line 348) | @Subscribe
type ProvideUserAvatarCallback (line 372) | public interface ProvideUserAvatarCallback {
method fetchAvatarSuccess (line 373) | void fetchAvatarSuccess(String userAvatarUrl);
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewRedditGalleryActivity.java
class ViewRedditGalleryActivity (line 63) | public class ViewRedditGalleryActivity extends AppCompatActivity impleme...
method onCreate (line 83) | @Override
method isUseBottomAppBar (line 182) | public boolean isUseBottomAppBar() {
method setupViewPager (line 186) | private void setupViewPager(Bundle savedInstanceState) {
method setToolbarTitle (line 204) | private void setToolbarTitle(int position) {
method onCreateOptionsMenu (line 216) | @Override
method onOptionsItemSelected (line 225) | @Override
method setToHomeScreen (line 282) | @Override
method setToLockScreen (line 300) | @Override
method setToBoth (line 318) | @Override
method getCurrentPagePosition (line 336) | public int getCurrentPagePosition() {
method setCustomFont (line 340) | @Override
method isActionBarHidden (line 345) | public boolean isActionBarHidden() {
method setActionBarHidden (line 349) | public void setActionBarHidden(boolean isActionBarHidden) {
method getPost (line 354) | public Post getPost() {
method onFinishViewMediaActivityEvent (line 358) | @Subscribe
class SectionsPagerAdapter (line 363) | private class SectionsPagerAdapter extends FragmentStatePagerAdapter {
method SectionsPagerAdapter (line 365) | SectionsPagerAdapter(@NonNull FragmentManager fm) {
method getItem (line 369) | @NonNull
method getCount (line 396) | @Override
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewSubredditDetailActivity.java
class ViewSubredditDetailActivity (line 128) | public class ViewSubredditDetailActivity extends BaseActivity implements...
method onCreate (line 208) | @Override
method onKeyDown (line 564) | @Override
method getDefaultSharedPreferences (line 573) | @Override
method getCurrentAccountSharedPreferences (line 578) | @Override
method getCustomThemeWrapper (line 583) | @Override
method applyCustomTheme (line 588) | @Override
method checkNewAccountAndBindView (line 630) | @OptIn(markerClass = ExperimentalBadgeUtils.class)
method fetchSubredditData (line 655) | private void fetchSubredditData() {
method bottomAppBarOptionAction (line 676) | private void bottomAppBarOptionAction(int option) {
method getBottomAppBarOptionDrawableResource (line 779) | private int getBottomAppBarOptionDrawableResource(int option) {
method bindView (line 823) | @ExperimentalBadgeUtils
method displaySortTypeBottomSheetFragment (line 1218) | private void displaySortTypeBottomSheetFragment() {
method setInboxCount (line 1226) | @ExperimentalBadgeUtils
method onCreateOptionsMenu (line 1231) | @Override
method onOptionsItemSelected (line 1238) | @Override
method onSaveInstanceState (line 1312) | @Override
method onDestroy (line 1320) | @Override
method isNsfwSubreddit (line 1326) | public boolean isNsfwSubreddit() {
method scrollTabToTop (line 1330) | private void scrollTabToTop(int position) {
method makeSnackbar (line 1347) | private void makeSnackbar(int resId, boolean retry) {
method sortTypeSelected (line 1360) | @Override
method sortTypeSelected (line 1367) | @Override
method postTypeSelected (line 1376) | @Override
method postLayoutSelected (line 1412) | @Override
method contentScrollUp (line 1418) | @Override
method contentScrollDown (line 1428) | @Override
method onAccountSwitchEvent (line 1438) | @Subscribe
method onChangeNSFWEvent (line 1445) | @Subscribe
method goBackToMainPageEvent (line 1450) | @Subscribe
method onChangeInboxCountEvent (line 1455) | @ExperimentalBadgeUtils
method onLongPress (line 1461) | @Override
method displaySortType (line 1468) | @Override
method fabOptionSelected (line 1475) | @Override
method goToSubreddit (line 1528) | private void goToSubreddit() {
method goToUser (line 1628) | private void goToUser() {
method markPostAsRead (line 1662) | @Override
method lockSwipeRightToGoBack (line 1668) | @Override
method unlockSwipeRightToGoBack (line 1675) | @Override
class SectionsPagerAdapter (line 1682) | private class SectionsPagerAdapter extends FragmentStateAdapter {
method SectionsPagerAdapter (line 1684) | SectionsPagerAdapter(FragmentActivity fa) {
method createFragment (line 1688) | @NonNull
method getCurrentFragment (line 1706) | @Nullable
method getFragmentAtPosition (line 1714) | @Nullable
method handleKeyDown (line 1727) | public boolean handleKeyDown(int keyCode) {
method refresh (line 1737) | public void refresh(boolean refreshSubredditData) {
method changeSortType (line 1752) | public void changeSortType(SortType sortType) {
method changeNSFW (line 1760) | public void changeNSFW(boolean nsfw) {
method changePostLayout (line 1767) | void changePostLayout(int postLayout) {
method goBackToTop (line 1774) | void goBackToTop() {
method displaySortTypeInToolbar (line 1783) | void displaySortTypeInToolbar() {
method hideReadPosts (line 1793) | void hideReadPosts() {
method filterPosts (line 1802) | void filterPosts() {
method getItemCount (line 1811) | @Override
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewUserDetailActivity.java
class ViewUserDetailActivity (line 126) | public class ViewUserDetailActivity extends BaseActivity implements Sort...
method onCreate (line 204) | @Override
method onKeyDown (line 668) | @Override
method getDefaultSharedPreferences (line 677) | @Override
method getCurrentAccountSharedPreferences (line 682) | @Override
method getCustomThemeWrapper (line 687) | @Override
method applyCustomTheme (line 692) | @Override
method checkNewAccountAndInitializeViewPager (line 732) | @OptIn(markerClass = ExperimentalBadgeUtils.class)
method initializeViewPager (line 757) | @ExperimentalBadgeUtils
method bottomAppBarOptionAction (line 1015) | private void bottomAppBarOptionAction(int option) {
method getBottomAppBarOptionDrawableResource (line 1119) | private int getBottomAppBarOptionDrawableResource(int option) {
method displaySortTypeBottomSheetFragment (line 1163) | private void displaySortTypeBottomSheetFragment() {
method fetchUserInfo (line 1174) | private void fetchUserInfo() {
method deleteComment (line 1197) | public void deleteComment(String fullName) {
method toggleReplyNotifications (line 1217) | public void toggleReplyNotifications(Comment comment, int position) {
method setInboxCount (line 1221) | @ExperimentalBadgeUtils
method onCreateOptionsMenu (line 1226) | @Override
method onOptionsItemSelected (line 1240) | @Override
method onActivityResult (line 1335) | @Override
method onSaveInstanceState (line 1357) | @Override
method onDestroy (line 1365) | @Override
method showMessage (line 1371) | private void showMessage(int resId, boolean retry) {
method sortTypeSelected (line 1384) | @Override
method sortTypeSelected (line 1389) | @Override
method postLayoutSelected (line 1398) | @Override
method fabOptionSelected (line 1403) | @Override
method goToSubreddit (line 1457) | private void goToSubreddit() {
method goToUser (line 1557) | private void goToUser() {
method contentScrollUp (line 1591) | @Override
method contentScrollDown (line 1601) | @Override
method onAccountSwitchEvent (line 1611) | @Subscribe
method onChangeNSFWEvent (line 1618) | @Subscribe
method goBackToMainPageEvent (line 1623) | @Subscribe
method onChangeInboxCountEvent (line 1628) | @ExperimentalBadgeUtils
method onLongPress (line 1634) | @Override
method displaySortType (line 1641) | @Override
method markPostAsRead (line 1648) | @Override
method postTypeSelected (line 1654) | @Override
class SectionsPagerAdapter (line 1684) | private class SectionsPagerAdapter extends FragmentStateAdapter {
method SectionsPagerAdapter (line 1686) | SectionsPagerAdapter(FragmentActivity fa) {
method createFragment (line 1690) | @NonNull
method getItemCount (line 1710) | @Override
method getCurrentFragment (line 1715) | @Nullable
method handleKeyDown (line 1723) | public boolean handleKeyDown(int keyCode) {
method refresh (line 1733) | public void refresh() {
method changeSortType (line 1742) | public void changeSortType(SortType sortType) {
method changeNSFW (line 1757) | public void changeNSFW(boolean nsfw) {
method changePostLayout (line 1764) | void changePostLayout(int postLayout) {
method goBackToTop (line 1771) | void goBackToTop() {
method displaySortTypeInToolbar (line 1780) | void displaySortTypeInToolbar() {
method editComment (line 1793) | void editComment(Comment comment, int position) {
method editComment (line 1802) | void editComment(String commentMarkdown, int position) {
method hideReadPosts (line 1811) | void hideReadPosts() {
method filterPosts (line 1820) | void filterPosts() {
method toggleCommentReplyNotification (line 1829) | void toggleCommentReplyNotification(Comment comment, int position) {
method lockSwipeRightToGoBack (line 1842) | @Override
method unlockSwipeRightToGoBack (line 1849) | @Override
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewVideoActivity.java
class ViewVideoActivity (line 123) | public class ViewVideoActivity extends AppCompatActivity implements Cust...
method onCreate (line 227) | @OptIn(markerClass = UnstableApi.class)
method applyCustomTheme (line 831) | private void applyCustomTheme() {
method preparePlayer (line 836) | private void preparePlayer(Bundle savedInstanceState) {
method changePlaybackSpeed (line 872) | private void changePlaybackSpeed() {
method inferPrimaryTrackType (line 880) | @OptIn(markerClass = UnstableApi.class)
method loadFallbackVideo (line 907) | @OptIn(markerClass = UnstableApi.class)
method onCreateOptionsMenu (line 924) | @Override
method onDestroy (line 935) | @Override
method onOptionsItemSelected (line 944) | @Override
method setPlaybackSpeed (line 973) | public void setPlaybackSpeed(int speed100X) {
method requestPermissionAndDownload (line 978) | private void requestPermissionAndDownload() {
method onStart (line 998) | @Override
method onStop (line 1007) | @Override
method onRequestPermissionsResult (line 1020) | @Override
method download (line 1035) | private void download() {
method onSaveInstanceState (line 1098) | @Override
method setCustomFont (line 1115) | @Override
method onFinishViewMediaActivityEvent (line 1120) | @Subscribe
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewVideoActivityBindingAdapter.java
class ViewVideoActivityBindingAdapter (line 19) | public class ViewVideoActivityBindingAdapter {
method ViewVideoActivityBindingAdapter (line 36) | public ViewVideoActivityBindingAdapter(ActivityViewVideoBinding bindin...
method ViewVideoActivityBindingAdapter (line 50) | public ViewVideoActivityBindingAdapter(ActivityViewVideoZoomableBindin...
method getRoot (line 64) | public HaulerView getRoot() {
method getCoordinatorLayout (line 68) | public CoordinatorLayout getCoordinatorLayout() {
method getLoadingIndicator (line 72) | public LoadingIndicator getLoadingIndicator() {
method getPlayPauseButton (line 76) | public MaterialButton getPlayPauseButton() {
method getForwardButton (line 80) | public ImageButton getForwardButton() {
method getRewindButton (line 84) | public ImageButton getRewindButton() {
method getMuteButton (line 88) | public MaterialButton getMuteButton() {
method getVideoQualityButton (line 92) | public MaterialButton getVideoQualityButton() {
method getBottomAppBar (line 96) | public BottomAppBar getBottomAppBar() {
method getTitleTextView (line 100) | public TextView getTitleTextView() {
method getBackButton (line 104) | public MaterialButton getBackButton() {
method getDownloadButton (line 108) | public MaterialButton getDownloadButton() {
method getPlaybackSpeedButton (line 112) | public MaterialButton getPlaybackSpeedButton() {
method getNestedScrollView (line 116) | public LockableNestedScrollView getNestedScrollView() {
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/activities/WebViewActivity.java
class WebViewActivity (line 40) | public class WebViewActivity extends BaseActivity {
method onCreate (line 53) | @Override
method getDefaultSharedPreferences (line 139) | @Override
method getCurrentAccountSharedPreferences (line 144) | @Override
method getCustomThemeWrapper (line 149) | @Override
method applyCustomTheme (line 154) | @Override
method onCreateOptionsMenu (line 163) | @Override
method onOptionsItemSelected (line 170) | @Override
method onSaveInstanceState (line 212) | @Override
method onRestoreInstanceState (line 218) | @Override
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/activities/WikiActivity.java
class WikiActivity (line 63) | public class WikiActivity extends BaseActivity {
method onCreate (line 92) | @Override
method loadWiki (line 250) | private void loadWiki() {
method showErrorView (line 295) | private void showErrorView(int stringResId) {
method onOptionsItemSelected (line 301) | @Override
method onSaveInstanceState (line 311) | @Override
method onDestroy (line 317) | @Override
method getDefaultSharedPreferences (line 323) | @Override
method getCurrentAccountSharedPreferences (line 328) | @Override
method getCustomThemeWrapper (line 333) | @Override
method applyCustomTheme (line 338) | @Override
method onAccountSwitchEvent (line 352) | @Subscribe
method onChangeNetworkStatusEvent (line 359) | @Subscribe
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/adapters/AccountChooserRecyclerViewAdapter.java
class AccountChooserRecyclerViewAdapter (line 21) | public class AccountChooserRecyclerViewAdapter extends RecyclerView.Adap...
method AccountChooserRecyclerViewAdapter (line 29) | public AccountChooserRecyclerViewAdapter(BaseActivity baseActivity, Cu...
method onCreateViewHolder (line 37) | @NonNull
method onBindViewHolder (line 44) | @Override
method getItemCount (line 57) | @Override
method changeAccountsDataset (line 62) | public void changeAccountsDataset(List<Account> accounts) {
class AccountViewHolder (line 67) | class AccountViewHolder extends RecyclerView.ViewHolder {
method AccountViewHolder (line 70) | AccountViewHolder(@NonNull ItemNavDrawerAccountBinding binding) {
type ItemClickListener (line 80) | public interface ItemClickListener {
method onClick (line 81) | void onClick(Account account);
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/adapters/AcknowledgementRecyclerViewAdapter.java
class AcknowledgementRecyclerViewAdapter (line 17) | public class AcknowledgementRecyclerViewAdapter extends RecyclerView.Ada...
method AcknowledgementRecyclerViewAdapter (line 21) | public AcknowledgementRecyclerViewAdapter(SettingsActivity activity, A...
method onCreateViewHolder (line 26) | @NonNull
method onBindViewHolder (line 32) | @Override
method getItemCount (line 48) | @Override
class AcknowledgementViewHolder (line 53) | class AcknowledgementViewHolder extends RecyclerView.ViewHolder {
method AcknowledgementViewHolder (line 56) | AcknowledgementViewHolder(@NonNull ItemAcknowledgementBinding bindin...
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/adapters/CommentFilterUsageEmbeddedRecyclerViewAdapter.java
class CommentFilterUsageEmbeddedRecyclerViewAdapter (line 18) | public class CommentFilterUsageEmbeddedRecyclerViewAdapter extends Recyc...
method CommentFilterUsageEmbeddedRecyclerViewAdapter (line 22) | public CommentFilterUsageEmbeddedRecyclerViewAdapter(BaseActivity base...
method onCreateViewHolder (line 26) | @NonNull
method onBindViewHolder (line 32) | @Override
method getItemCount (line 46) | @Override
method setCommentFilterUsageList (line 51) | public void setCommentFilterUsageList(List<CommentFilterUsage> comment...
class EntryViewHolder (line 56) | class EntryViewHolder extends RecyclerView.ViewHolder {
method EntryViewHolder (line 59) | public EntryViewHolder(@NonNull ItemCommentFilterUsageEmbeddedBindin...
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/adapters/CommentFilterUsageRecyclerViewAdapter.java
class CommentFilterUsageRecyclerViewAdapter (line 18) | public class CommentFilterUsageRecyclerViewAdapter extends RecyclerView....
type OnItemClickListener (line 24) | public interface OnItemClickListener {
method onClick (line 25) | void onClick(CommentFilterUsage commentFilterUsage);
method CommentFilterUsageRecyclerViewAdapter (line 28) | public CommentFilterUsageRecyclerViewAdapter(BaseActivity activity, Cu...
method onCreateViewHolder (line 35) | @NonNull
method onBindViewHolder (line 41) | @Override
method getItemCount (line 49) | @Override
method setCommentFilterUsages (line 54) | public void setCommentFilterUsages(List<CommentFilterUsage> commentFil...
class CommentFilterUsageViewHolder (line 59) | private class CommentFilterUsageViewHolder extends RecyclerView.ViewHo...
method CommentFilterUsageViewHolder (line 62) | public CommentFilterUsageViewHolder(@NonNull View itemView) {
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/adapters/CommentFilterWithUsageRecyclerViewAdapter.java
class CommentFilterWithUsageRecyclerViewAdapter (line 17) | public class CommentFilterWithUsageRecyclerViewAdapter extends RecyclerV...
type OnItemClickListener (line 23) | public interface OnItemClickListener {
method onItemClick (line 24) | void onItemClick(CommentFilter commentFilter);
method CommentFilterWithUsageRecyclerViewAdapter (line 27) | public CommentFilterWithUsageRecyclerViewAdapter(BaseActivity activity...
method onCreateViewHolder (line 33) | @NonNull
method onBindViewHolder (line 39) | @Override
method getItemCount (line 47) | @Override
method setCommentFilterWithUsageList (line 52) | public void setCommentFilterWithUsageList(List<CommentFilterWithUsage>...
class CommentFilterViewHolder (line 57) | private class CommentFilterViewHolder extends RecyclerView.ViewHolder {
method CommentFilterViewHolder (line 61) | public CommentFilterViewHolder(@NonNull ItemCommentFilterWithUsageBi...
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/adapters/CommentsListingRecyclerViewAdapter.java
class CommentsListingRecyclerViewAdapter (line 70) | public class CommentsListingRecyclerViewAdapter extends PagedListAdapter...
method areItemsTheSame (line 75) | @Override
method areContentsTheSame (line 80) | @Override
method CommentsListingRecyclerViewAdapter (line 119) | public CommentsListingRecyclerViewAdapter(BaseActivity activity, Comme...
method onCreateViewHolder (line 232) | @NonNull
method onBindViewHolder (line 244) | @Override
method getItemViewType (line 307) | @Override
method onViewRecycled (line 321) | @Override
method getItemCount (line 334) | @Override
method hasExtraRow (line 342) | private boolean hasExtraRow() {
method setNetworkState (line 346) | public void setNetworkState(NetworkState newNetworkState) {
method onItemSwipe (line 362) | public void onItemSwipe(RecyclerView.ViewHolder viewHolder, int direct...
method editComment (line 380) | public void editComment(Comment comment, int position) {
method editComment (line 389) | public void editComment(String commentContentMarkdown, int position) {
method toggleReplyNotifications (line 397) | public void toggleReplyNotifications(int position) {
method updateModdedStatus (line 405) | public void updateModdedStatus(int position) {
method setCanStartActivity (line 412) | public void setCanStartActivity(boolean canStartActivity) {
method setDataSavingMode (line 416) | public void setDataSavingMode(boolean dataSavingMode) {
type RetryLoadingMoreCallback (line 421) | public interface RetryLoadingMoreCallback {
method retryLoadingMore (line 422) | void retryLoadingMore();
class CommentBaseViewHolder (line 425) | public class CommentBaseViewHolder extends RecyclerView.ViewHolder {
method CommentBaseViewHolder (line 442) | CommentBaseViewHolder(@NonNull View itemView) {
method setBaseView (line 446) | void setBaseView(LinearLayout linearLayout,
class CommentViewHolder (line 829) | class CommentViewHolder extends CommentBaseViewHolder {
method CommentViewHolder (line 832) | CommentViewHolder(ItemCommentBinding binding) {
class ErrorViewHolder (line 854) | class ErrorViewHolder extends RecyclerView.ViewHolder {
method ErrorViewHolder (line 855) | ErrorViewHolder(@NonNull ItemFooterErrorBinding binding) {
class LoadingViewHolder (line 869) | class LoadingViewHolder extends RecyclerView.ViewHolder {
method LoadingViewHolder (line 871) | LoadingViewHolder(@NonNull ItemFooterLoadingBinding binding) {
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/adapters/CommentsRecyclerViewAdapter.java
class CommentsRecyclerViewAdapter (line 88) | public class CommentsRecyclerViewAdapter extends RecyclerView.Adapter<Re...
method CommentsRecyclerViewAdapter (line 174) | public CommentsRecyclerViewAdapter(BaseActivity activity, ViewPostDeta...
method getItemViewType (line 342) | @Override
method onCreateViewHolder (line 405) | @NonNull
method onBindViewHolder (line 430) | @Override
method onBindViewHolder (line 925) | @Override
method setCanStartActivity (line 963) | public void setCanStartActivity(boolean canStartActivity) {
method getCurrentComment (line 967) | @Nullable
method getCurrentComment (line 972) | @Nullable
method translatePositionToCommentIndex (line 987) | private int translatePositionToCommentIndex(int position) {
method getParentPosition (line 1001) | private int getParentPosition(int position) {
method findCommentPosition (line 1018) | private int findCommentPosition(String fullName, int positionHint) {
method findCommentPosition (line 1022) | private int findCommentPosition(String fullName, int positionHint, int...
method findLoadMoreCommentsPlaceholderPosition (line 1043) | private int findLoadMoreCommentsPlaceholderPosition(String fullName, i...
method expandChildren (line 1047) | private void expandChildren(ArrayList<Comment> comments, ArrayList<Com...
method collapseChildren (line 1057) | private void collapseChildren(int position) {
method addComments (line 1085) | public void addComments(@NonNull ArrayList<Comment> comments, boolean ...
method addComment (line 1122) | public void addComment(Comment comment) {
method addChildComment (line 1136) | public void addChildComment(Comment comment, String parentFullname, in...
method setSingleComment (line 1172) | public void setSingleComment(String singleCommentId, boolean isSingleC...
method getVisibleComments (line 1177) | public ArrayList<Comment> getVisibleComments() {
method initiallyLoading (line 1181) | public void initiallyLoading() {
method initiallyLoadCommentsFailed (line 1191) | public void initiallyLoadCommentsFailed() {
method loadMoreCommentsFailed (line 1197) | public void loadMoreCommentsFailed() {
method editComment (line 1206) | public void editComment(Comment comment, int position) {
method editComment (line 1222) | public void editComment(String commentContentMarkdown, int position) {
method deleteComment (line 1233) | public void deleteComment(int position) {
method toggleReplyNotifications (line 1254) | public void toggleReplyNotifications(String fullName, int position) {
method updateModdedStatus (line 1263) | public void updateModdedStatus(Comment comment, int position) {
method getNextParentCommentPosition (line 1297) | public int getNextParentCommentPosition(int currentPosition) {
method getPreviousParentCommentPosition (line 1316) | public int getPreviousParentCommentPosition(int currentPosition) {
method getParentCommentPosition (line 1335) | public int getParentCommentPosition(int currentPosition, int currentDe...
method onItemSwipe (line 1354) | public void onItemSwipe(RecyclerView.ViewHolder viewHolder, int direct...
method setSaveComment (line 1372) | public void setSaveComment(int position, boolean isSaved) {
method getSearchCommentIndex (line 1379) | public int getSearchCommentIndex() {
method highlightSearchResult (line 1383) | public void highlightSearchResult(int searchCommentIndex) {
method resetCommentSearchIndex (line 1387) | public void resetCommentSearchIndex() {
method onViewRecycled (line 1391) | @Override
method getItemCount (line 1413) | @Override
method setDataSavingMode (line 1438) | public void setDataSavingMode(boolean dataSavingMode) {
type CommentRecyclerViewAdapterCallback (line 1443) | public interface CommentRecyclerViewAdapterCallback {
method retryFetchingComments (line 1444) | void retryFetchingComments();
method retryFetchingMoreComments (line 1446) | void retryFetchingMoreComments();
method getSortType (line 1448) | SortType.Type getSortType();
class CommentBaseViewHolder (line 1451) | public class CommentBaseViewHolder extends RecyclerView.ViewHolder {
method CommentBaseViewHolder (line 1474) | CommentBaseViewHolder(@NonNull View itemView) {
method setBaseView (line 1478) | void setBaseView(LinearLayout linearLayout,
method expandComments (line 2052) | private boolean expandComments() {
method hideToolbar (line 2057) | private boolean hideToolbar() {
class CommentViewHolder (line 2073) | class CommentViewHolder extends CommentBaseViewHolder {
method CommentViewHolder (line 2076) | CommentViewHolder(ItemCommentBinding binding) {
class CommentFullyCollapsedViewHolder (line 2102) | class CommentFullyCollapsedViewHolder extends RecyclerView.ViewHolder {
method CommentFullyCollapsedViewHolder (line 2105) | public CommentFullyCollapsedViewHolder(@NonNull ItemCommentFullyColl...
class LoadMoreChildCommentsViewHolder (line 2163) | class LoadMoreChildCommentsViewHolder extends RecyclerView.ViewHolder {
method LoadMoreChildCommentsViewHolder (line 2166) | LoadMoreChildCommentsViewHolder(@NonNull ItemLoadMoreCommentsPlaceho...
class LoadCommentsViewHolder (line 2185) | class LoadCommentsViewHolder extends RecyclerView.ViewHolder {
method LoadCommentsViewHolder (line 2188) | LoadCommentsViewHolder(@NonNull ItemLoadCommentsBinding binding) {
class LoadCommentsFailedViewHolder (line 2196) | class LoadCommentsFailedViewHolder extends RecyclerView.ViewHolder {
method LoadCommentsFailedViewHolder (line 2199) | LoadCommentsFailedViewHolder(@NonNull ItemLoadCommentsFailedPlacehol...
class NoCommentViewHolder (line 2210) | class NoCommentViewHolder extends RecyclerView.ViewHolder {
method NoCommentViewHolder (line 2213) | NoCommentViewHolder(@NonNull ItemNoCommentPlaceholderBinding binding) {
class IsLoadingMoreCommentsViewHolder (line 2223) | class IsLoadingMoreCommentsViewHolder extends RecyclerView.ViewHolder {
method IsLoadingMoreCommentsViewHolder (line 2226) | IsLoadingMoreCommentsViewHolder(@NonNull ItemCommentFooterLoadingBin...
class LoadMoreCommentsFailedViewHolder (line 2233) | class LoadMoreCommentsFailedViewHolder extends RecyclerView.ViewHolder {
method LoadMoreCommentsFailedViewHolder (line 2236) | LoadMoreCommentsFailedViewHolder(@NonNull ItemCommentFooterErrorBind...
class ViewAllCommentsViewHolder (line 2251) | class ViewAllCommentsViewHolder extends RecyclerView.ViewHolder {
method ViewAllCommentsViewHolder (line 2253) | ViewAllCommentsViewHolder(@NonNull View itemView) {
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/adapters/CrashReportsRecyclerViewAdapter.java
class CrashReportsRecyclerViewAdapter (line 16) | public class CrashReportsRecyclerViewAdapter extends RecyclerView.Adapte...
method CrashReportsRecyclerViewAdapter (line 20) | public CrashReportsRecyclerViewAdapter(SettingsActivity activity, List...
method onCreateViewHolder (line 25) | @NonNull
method onBindViewHolder (line 31) | @Override
method getItemCount (line 36) | @Override
class CrashReportViewHolder (line 41) | private class CrashReportViewHolder extends RecyclerView.ViewHolder {
method CrashReportViewHolder (line 43) | public CrashReportViewHolder(@NonNull View itemView) {
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/adapters/CustomThemeListingRecyclerViewAdapter.java
class CustomThemeListingRecyclerViewAdapter (line 26) | public class CustomThemeListingRecyclerViewAdapter extends RecyclerView....
method CustomThemeListingRecyclerViewAdapter (line 36) | public CustomThemeListingRecyclerViewAdapter(BaseActivity activity, Ar...
method getItemViewType (line 42) | @Override
method onCreateViewHolder (line 55) | @NonNull
method onBindViewHolder (line 70) | @Override
method getItemCount (line 114) | @Override
method setUserThemes (line 119) | public void setUserThemes(List<CustomTheme> userThemes) {
class PredefinedCustomThemeViewHolder (line 124) | class PredefinedCustomThemeViewHolder extends RecyclerView.ViewHolder {
method PredefinedCustomThemeViewHolder (line 127) | PredefinedCustomThemeViewHolder(@NonNull ItemPredefinedCustomThemeBi...
class UserCustomThemeViewHolder (line 138) | class UserCustomThemeViewHolder extends RecyclerView.ViewHolder {
method UserCustomThemeViewHolder (line 141) | UserCustomThemeViewHolder(@NonNull ItemUserCustomThemeBinding bindin...
class PreDefinedThemeDividerViewHolder (line 153) | class PreDefinedThemeDividerViewHolder extends RecyclerView.ViewHolder {
method PreDefinedThemeDividerViewHolder (line 155) | PreDefinedThemeDividerViewHolder(@NonNull View itemView) {
class UserThemeDividerViewHolder (line 164) | class UserThemeDividerViewHolder extends RecyclerView.ViewHolder {
method UserThemeDividerViewHolder (line 166) | UserThemeDividerViewHolder(@NonNull View itemView) {
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/adapters/CustomizeThemeRecyclerViewAdapter.java
class CustomizeThemeRecyclerViewAdapter (line 27) | public class CustomizeThemeRecyclerViewAdapter extends RecyclerView.Adap...
method CustomizeThemeRecyclerViewAdapter (line 36) | public CustomizeThemeRecyclerViewAdapter(BaseActivity activity, Custom...
method getItemViewType (line 44) | @Override
method onCreateViewHolder (line 55) | @NonNull
method onBindViewHolder (line 67) | @Override
method getItemCount (line 115) | @Override
method setCustomThemeSettingsItem (line 120) | public void setCustomThemeSettingsItem(ArrayList<CustomThemeSettingsIt...
method getThemeName (line 126) | public String getThemeName() {
class ThemeColorItemViewHolder (line 130) | class ThemeColorItemViewHolder extends RecyclerView.ViewHolder {
method ThemeColorItemViewHolder (line 133) | ThemeColorItemViewHolder(@NonNull ItemCustomThemeColorItemBinding bi...
class ThemeSwitchItemViewHolder (line 147) | class ThemeSwitchItemViewHolder extends RecyclerView.ViewHolder {
method ThemeSwitchItemViewHolder (line 150) | ThemeSwitchItemViewHolder(@NonNull ItemCustomThemeSwitchItemBinding ...
class ThemeNameItemViewHolder (line 164) | class ThemeNameItemViewHolder extends RecyclerView.ViewHolder {
method ThemeNameItemViewHolder (line 167) | public ThemeNameItemViewHolder(@NonNull ItemThemeNameBinding binding) {
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/adapters/FlairBottomSheetRecyclerViewAdapter.java
class FlairBottomSheetRecyclerViewAdapter (line 23) | public class FlairBottomSheetRecyclerViewAdapter extends RecyclerView.Ad...
method FlairBottomSheetRecyclerViewAdapter (line 29) | public FlairBottomSheetRecyclerViewAdapter(BaseActivity activity, Cust...
method onCreateViewHolder (line 36) | @NonNull
method onBindViewHolder (line 42) | @Override
method getItemCount (line 74) | @Override
method onViewRecycled (line 79) | @Override
method changeDataset (line 85) | public void changeDataset(List<Flair> flairs) {
type ItemClickListener (line 90) | public interface ItemClickListener {
method onClick (line 91) | void onClick(Flair flair);
class FlairViewHolder (line 94) | class FlairViewHolder extends RecyclerView.ViewHolder {
method FlairViewHolder (line 97) | FlairViewHolder(@NonNull ItemFlairBinding binding) {
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/adapters/FollowedUsersRecyclerViewAdapter.java
class FollowedUsersRecyclerViewAdapter (line 31) | public class FollowedUsersRecyclerViewAdapter extends RecyclerView.Adapt...
method FollowedUsersRecyclerViewAdapter (line 50) | public FollowedUsersRecyclerViewAdapter(BaseActivity activity, Executo...
method getItemViewType (line 67) | @Override
method onCreateViewHolder (line 84) | @NonNull
method onBindViewHolder (line 103) | @Override
method getItemCount (line 149) | @Override
method onViewRecycled (line 160) | @Override
method setSubscribedUsers (line 169) | public void setSubscribedUsers(List<SubscribedUserData> subscribedUser...
method setFavoriteSubscribedUsers (line 174) | public void setFavoriteSubscribedUsers(List<SubscribedUserData> favori...
method getPopupText (line 179) | @NonNull
class FavoriteUserViewHolder (line 194) | class FavoriteUserViewHolder extends RecyclerView.ViewHolder {
method FavoriteUserViewHolder (line 197) | FavoriteUserViewHolder(ItemSubscribedThingBinding binding) {
class UserViewHolder (line 273) | class UserViewHolder extends RecyclerView.ViewHolder {
method UserViewHolder (line 276) | UserViewHolder(@NonNull ItemSubscribedThingBinding binding) {
class FavoriteUsersDividerViewHolder (line 357) | class FavoriteUsersDividerViewHolder extends RecyclerView.ViewHolder {
method FavoriteUsersDividerViewHolder (line 360) | FavoriteUsersDividerViewHolder(@NonNull ItemFavoriteThingDividerBind...
class AllUsersDividerViewHolder (line 371) | class AllUsersDividerViewHolder extends RecyclerView.ViewHolder {
method AllUsersDividerViewHolder (line 374) | AllUsersDividerViewHolder(@NonNull ItemFavoriteThingDividerBinding b...
type ItemOnClickListener (line 385) | public interface ItemOnClickListener {
method onClick (line 386) | void onClick(SubscribedUserData subscribedUserData);
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/adapters/MarkdownBottomBarRecyclerViewAdapter.java
class MarkdownBottomBarRecyclerViewAdapter (line 20) | public class MarkdownBottomBarRecyclerViewAdapter extends RecyclerView.A...
type ItemClickListener (line 43) | public interface ItemClickListener {
method onClick (line 44) | void onClick(int item);
method onUploadImage (line 45) | void onUploadImage();
method onSelectGiphyGif (line 46) | default void onSelectGiphyGif() {}
method MarkdownBottomBarRecyclerViewAdapter (line 49) | public MarkdownBottomBarRecyclerViewAdapter(CustomThemeWrapper customT...
method MarkdownBottomBarRecyclerViewAdapter (line 54) | public MarkdownBottomBarRecyclerViewAdapter(CustomThemeWrapper customT...
method MarkdownBottomBarRecyclerViewAdapter (line 60) | public MarkdownBottomBarRecyclerViewAdapter(CustomThemeWrapper customT...
method onCreateViewHolder (line 69) | @NonNull
method onBindViewHolder (line 75) | @Override
method getItemCount (line 122) | @Override
method bindEditTextWithItemClickListener (line 127) | public static void bindEditTextWithItemClickListener(Activity activity...
class MarkdownBottomBarItemViewHolder (line 330) | class MarkdownBottomBarItemViewHolder extends RecyclerView.ViewHolder {
method MarkdownBottomBarItemViewHolder (line 333) | public MarkdownBottomBarItemViewHolder(@NonNull View itemView) {
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/adapters/MessageRecyclerViewAdapter.java
class MessageRecyclerViewAdapter (line 50) | public class MessageRecyclerViewAdapter extends PagedListAdapter<Message...
method areItemsTheSame (line 55) | @Override
method areContentsTheSame (line 60) | @Override
method MessageRecyclerViewAdapter (line 84) | public MessageRecyclerViewAdapter(BaseActivity activity, Retrofit oaut...
method onCreateViewHolder (line 143) | @NonNull
method onBindViewHolder (line 155) | @Override
method getItemViewType (line 188) | @Override
method getItemCount (line 202) | @Override
method onViewRecycled (line 210) | @Override
method hasExtraRow (line 219) | private boolean hasExtraRow() {
method setNetworkState (line 223) | public void setNetworkState(NetworkState newNetworkState) {
method updateMessageReply (line 239) | public void updateMessageReply(Message newReply, int position) {
method setMarkAllMessagesAsRead (line 248) | public void setMarkAllMessagesAsRead(boolean markAllMessagesAsRead) {
type RetryLoadingMoreCallback (line 252) | public interface RetryLoadingMoreCallback {
method retryLoadingMore (line 253) | void retryLoadingMore();
class DataViewHolder (line 256) | class DataViewHolder extends RecyclerView.ViewHolder {
method DataViewHolder (line 259) | DataViewHolder(@NonNull ItemMessageBinding binding) {
class ErrorViewHolder (line 353) | class ErrorViewHolder extends RecyclerView.ViewHolder {
method ErrorViewHolder (line 356) | ErrorViewHolder(@NonNull ItemFooterErrorBinding binding) {
class LoadingViewHolder (line 371) | class LoadingViewHolder extends RecyclerView.ViewHolder {
method LoadingViewHolder (line 374) | LoadingViewHolder(@NonNull ItemFooterLoadingBinding binding) {
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/adapters/MultiRedditListingRecyclerViewAdapter.java
class MultiRedditListingRecyclerViewAdapter (line 33) | public class MultiRedditListingRecyclerViewAdapter extends RecyclerView....
type OnItemClickListener (line 54) | public interface OnItemClickListener {
method onClick (line 55) | void onClick(MultiReddit multiReddit);
method onLongClick (line 56) | void onLongClick(MultiReddit multiReddit);
method MultiRedditListingRecyclerViewAdapter (line 59) | public MultiRedditListingRecyclerViewAdapter(BaseActivity activity, Ex...
method getItemViewType (line 76) | @Override
method onCreateViewHolder (line 93) | @NonNull
method onBindViewHolder (line 112) | @Override
method getItemCount (line 323) | @Override
method onViewRecycled (line 336) | @Override
method setMultiReddits (line 345) | public void setMultiReddits(List<MultiReddit> multiReddits) {
method setFavoriteMultiReddits (line 350) | public void setFavoriteMultiReddits(List<MultiReddit> favoriteMultiRed...
method getPopupText (line 355) | @NonNull
class MultiRedditViewHolder (line 370) | class MultiRedditViewHolder extends RecyclerView.ViewHolder {
method MultiRedditViewHolder (line 373) | MultiRedditViewHolder(@NonNull ItemMultiRedditBinding binding) {
class FavoriteMultiRedditViewHolder (line 383) | class FavoriteMultiRedditViewHolder extends RecyclerView.ViewHolder {
method FavoriteMultiRedditViewHolder (line 386) | FavoriteMultiRedditViewHolder(@NonNull ItemMultiRedditBinding bindin...
class FavoriteMultiRedditsDividerViewHolder (line 396) | class FavoriteMultiRedditsDividerViewHolder extends RecyclerView.ViewH...
method FavoriteMultiRedditsDividerViewHolder (line 399) | FavoriteMultiRedditsDividerViewHolder(@NonNull ItemFavoriteThingDivi...
class AllMultiRedditsDividerViewHolder (line 410) | class AllMultiRedditsDividerViewHolder extends RecyclerView.ViewHolder {
method AllMultiRedditsDividerViewHolder (line 413) | AllMultiRedditsDividerViewHolder(@NonNull ItemFavoriteThingDividerBi...
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/adapters/OnlineCustomThemeListingRecyclerViewAdapter.java
class OnlineCustomThemeListingRecyclerViewAdapter (line 26) | public class OnlineCustomThemeListingRecyclerViewAdapter extends PagingD...
method OnlineCustomThemeListingRecyclerViewAdapter (line 32) | public OnlineCustomThemeListingRecyclerViewAdapter(BaseActivity activi...
method getItemViewType (line 47) | @Override
method onCreateViewHolder (line 52) | @NonNull
method onBindViewHolder (line 63) | @Override
method updateMetadata (line 95) | public void updateMetadata(int index, String themeName, String primary...
class OnlineCustomThemeViewHolder (line 109) | class OnlineCustomThemeViewHolder extends RecyclerView.ViewHolder {
method OnlineCustomThemeViewHolder (line 112) | OnlineCustomThemeViewHolder(@NonNull ItemUserCustomThemeBinding bind...
class OnlineCustomThemeDividerViewHolder (line 121) | class OnlineCustomThemeDividerViewHolder extends RecyclerView.ViewHold...
method OnlineCustomThemeDividerViewHolder (line 123) | OnlineCustomThemeDividerViewHolder(@NonNull View itemView) {
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/adapters/Paging3LoadingStateAdapter.java
class Paging3LoadingStateAdapter (line 21) | public class Paging3LoadingStateAdapter extends LoadStateAdapter<Paging3...
method Paging3LoadingStateAdapter (line 27) | public Paging3LoadingStateAdapter(BaseActivity activity, CustomThemeWr...
method onBindViewHolder (line 34) | @Override
method onCreateViewHolder (line 39) | @NonNull
class LoadStateViewHolder (line 45) | class LoadStateViewHolder extends RecyclerView.ViewHolder {
method LoadStateViewHolder (line 51) | LoadStateViewHolder(@NonNull View itemView, @NonNull View.OnClickLis...
method bind (line 72) | public void bind(LoadState loadState) {
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/adapters/PostDetailRecyclerViewAdapter.java
class PostDetailRecyclerViewAdapter (line 142) | public class PostDetailRecyclerViewAdapter extends RecyclerView.Adapter<...
method PostDetailRecyclerViewAdapter (line 240) | public PostDetailRecyclerViewAdapter(@NonNull BaseActivity activity, V...
method setCanStartActivity (line 453) | public void setCanStartActivity(boolean canStartActivity) {
method getItemViewType (line 457) | @Override
method onCreateViewHolder (line 500) | @OptIn(markerClass = UnstableApi.class)
method onBindViewHolder (line 550) | @OptIn(markerClass = UnstableApi.class)
method getSuitablePreview (line 936) | @Nullable
method loadImage (line 968) | private void loadImage(PostDetailBaseViewHolder holder, @NonNull Post....
method updatePost (line 1057) | public void updatePost(Post post) {
method setBlurNsfwAndDoNotBlurNsfwInNsfwSubreddits (line 1062) | public void setBlurNsfwAndDoNotBlurNsfwInNsfwSubreddits(boolean needBl...
method setBlurSpoiler (line 1067) | public void setBlurSpoiler(boolean needBlurSpoiler) {
method setAutoplay (line 1071) | public void setAutoplay(boolean autoplay) {
method setDataSavingMode (line 1075) | public void setDataSavingMode(boolean dataSavingMode) {
method onItemSwipe (line 1081) | public void onItemSwipe(RecyclerView.ViewHolder viewHolder, int direct...
method addOneComment (line 1099) | public void addOneComment() {
method openMedia (line 1106) | private void openMedia(Post post) {
method openMedia (line 1110) | private void openMedia(Post post, int galleryItemIndex) {
method openMedia (line 1114) | private void openMedia(Post post, long videoProgress) {
method openMedia (line 1118) | private void openMedia(Post post, int galleryItemIndex, long videoProg...
method onViewRecycled (line 1201) | @OptIn(markerClass = UnstableApi.class)
method getItemCount (line 1245) | @Override
method setCommentsSupplier (line 1250) | public void setCommentsSupplier(Supplier<ArrayList<Comment>> supplier) {
method getKeyForOrder (line 1254) | @Nullable
method getOrderForKey (line 1260) | @Nullable
method setCanPlayVideo (line 1266) | public void setCanPlayVideo(boolean canPlayVideo) {
type PostDetailRecyclerViewAdapterCallback (line 1270) | public interface PostDetailRecyclerViewAdapterCallback {
method updatePost (line 1271) | void updatePost(Post post);
class PostDetailBaseViewHolder (line 1274) | public class PostDetailBaseViewHolder extends RecyclerView.ViewHolder {
method PostDetailBaseViewHolder (line 1298) | PostDetailBaseViewHolder(@NonNull View itemView) {
method setBaseView (line 1302) | void setBaseView(AspectRatioGifImageView iconGifImageView,
class PostDetailBaseVideoAutoplayViewHolder (line 1804) | @UnstableApi
method PostDetailBaseVideoAutoplayViewHolder (line 1827) | public PostDetailBaseVideoAutoplayViewHolder(@NonNull View itemView,
method bindVideoUri (line 1957) | void bindVideoUri(Uri videoUri) {
method setVolume (line 1961) | void setVolume(float volume) {
method resetVolume (line 1965) | void resetVolume() {
method savePlaybackInfo (line 1969) | private void savePlaybackInfo(int order, @Nullable PlaybackInfo play...
method loadFallbackDirectVideo (line 1973) | void loadFallbackDirectVideo() {
method getPlayerView (line 1985) | @NonNull
method getCurrentPlaybackInfo (line 1991) | @NonNull
method initialize (line 1997) | @Override
method play (line 2134) | @Override
method pause (line 2148) | @Override
method isPlaying (line 2156) | @Override
method release (line 2161) | @Override
method wantsToPlay (line 2170) | @Override
method getPlayerOrder (line 2175) | @Override
class PostDetailVideoAutoplayViewHolder (line 2181) | @UnstableApi
method PostDetailVideoAutoplayViewHolder (line 2183) | PostDetailVideoAutoplayViewHolder(@NonNull ItemPostDetailVideoAutopl...
class PostDetailVideoAutoplayLegacyControllerViewHolder (line 2219) | @UnstableApi
method PostDetailVideoAutoplayLegacyControllerViewHolder (line 2221) | PostDetailVideoAutoplayLegacyControllerViewHolder(ItemPostDetailVide...
class PostDetailVideoAndGifPreviewHolder (line 2257) | class PostDetailVideoAndGifPreviewHolder extends PostDetailBaseViewHol...
method PostDetailVideoAndGifPreviewHolder (line 2260) | PostDetailVideoAndGifPreviewHolder(@NonNull ItemPostDetailVideoAndGi...
class PostDetailImageAndGifAutoplayViewHolder (line 2302) | class PostDetailImageAndGifAutoplayViewHolder extends PostDetailBaseVi...
method PostDetailImageAndGifAutoplayViewHolder (line 2305) | PostDetailImageAndGifAutoplayViewHolder(@NonNull ItemPostDetailImage...
class PostDetailLinkViewHolder (line 2345) | class PostDetailLinkViewHolder extends PostDetailBaseViewHolder {
method PostDetailLinkViewHolder (line 2348) | PostDetailLinkViewHolder(@NonNull ItemPostDetailLinkBinding binding) {
class PostDetailNoPreviewViewHolder (line 2396) | class PostDetailNoPreviewViewHolder extends PostDetailBaseViewHolder {
method PostDetailNoPreviewViewHolder (line 2399) | PostDetailNoPreviewViewHolder(@NonNull ItemPostDetailNoPreviewBindin...
class PostDetailGalleryViewHolder (line 2443) | class PostDetailGalleryViewHolder extends PostDetailBaseViewHolder {
method PostDetailGalleryViewHolder (line 2447) | PostDetailGalleryViewHolder(@NonNull ItemPostDetailGalleryBinding bi...
class PostDetailTextViewHolder (line 2595) | class PostDetailTextViewHolder extends PostDetailBaseViewHolder {
method PostDetailTextViewHolder (line 2598) | PostDetailTextViewHolder(@NonNull ItemPostDetailTextBinding binding) {
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/adapters/PostFilterUsageRecyclerViewAdapter.java
class PostFilterUsageRecyclerViewAdapter (line 18) | public class PostFilterUsageRecyclerViewAdapter extends RecyclerView.Ada...
type OnItemClickListener (line 24) | public interface OnItemClickListener {
method onClick (line 25) | void onClick(PostFilterUsage postFilterUsage);
method PostFilterUsageRecyclerViewAdapter (line 28) | public PostFilterUsageRecyclerViewAdapter(BaseActivity activity, Custo...
method onCreateViewHolder (line 35) | @NonNull
method onBindViewHolder (line 41) | @Override
method getItemCount (line 90) | @Override
method setPostFilterUsages (line 95) | public void setPostFilterUsages(List<PostFilterUsage> postFilterUsages) {
class PostFilterUsageViewHolder (line 100) | private class PostFilterUsageViewHolder extends RecyclerView.ViewHolder {
method PostFilterUsageViewHolder (line 103) | public PostFilterUsageViewHolder(@NonNull View itemView) {
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/adapters/PostFilterWithUsageRecyclerViewAdapter.java
class PostFilterWithUsageRecyclerViewAdapter (line 23) | public class PostFilterWithUsageRecyclerViewAdapter extends RecyclerView...
type OnItemClickListener (line 34) | public interface OnItemClickListener {
method onItemClick (line 35) | void onItemClick(PostFilter postFilter);
method PostFilterWithUsageRecyclerViewAdapter (line 38) | public PostFilterWithUsageRecyclerViewAdapter(BaseActivity activity, C...
method getItemViewType (line 46) | @Override
method onCreateViewHolder (line 54) | @NonNull
method onBindViewHolder (line 64) | @Override
method getItemCount (line 72) | @Override
method setPostFilterWithUsageList (line 77) | public void setPostFilterWithUsageList(List<PostFilterWithUsage> postF...
class PostFilterViewHolder (line 82) | private class PostFilterViewHolder extends RecyclerView.ViewHolder {
method PostFilterViewHolder (line 86) | public PostFilterViewHolder(@NonNull ItemPostFilterWithUsageBinding ...
class HeaderViewHolder (line 106) | private class HeaderViewHolder extends RecyclerView.ViewHolder {
method HeaderViewHolder (line 108) | public HeaderViewHolder(@NonNull View itemView) {
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/adapters/PostGalleryTypeImageRecyclerViewAdapter.java
class PostGalleryTypeImageRecyclerViewAdapter (line 32) | public class PostGalleryTypeImageRecyclerViewAdapter extends RecyclerVie...
method PostGalleryTypeImageRecyclerViewAdapter (line 47) | public PostGalleryTypeImageRecyclerViewAdapter(RequestManager glide, T...
method PostGalleryTypeImageRecyclerViewAdapter (line 59) | public PostGalleryTypeImageRecyclerViewAdapter(RequestManager glide, T...
method onCreateViewHolder (line 75) | @NonNull
method onBindViewHolder (line 81) | @Override
method getItemCount (line 116) | @Override
method onViewRecycled (line 121) | @Override
method loadImage (line 131) | private void loadImage(ImageViewHolder holder) {
method loadCaptionPreview (line 163) | private void loadCaptionPreview(ImageViewHolder holder) {
method setGalleryImages (line 193) | public void setGalleryImages(ArrayList<Post.Gallery> galleryImages) {
method setBlurImage (line 198) | public void setBlurImage(boolean blurImage) {
method setRatio (line 202) | public void setRatio(float ratio) {
class ImageViewHolder (line 206) | class ImageViewHolder extends RecyclerView.ViewHolder {
method ImageViewHolder (line 210) | public ImageViewHolder(ItemGalleryImageInPostFeedBinding binding) {
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/adapters/PostRecyclerViewAdapter.java
class PostRecyclerViewAdapter (line 146) | public class PostRecyclerViewAdapter extends PagingDataAdapter<Post, Rec...
method areItemsTheSame (line 165) | @Override
method areContentsTheSame (line 170) | @Override
method PostRecyclerViewAdapter (line 278) | public PostRecyclerViewAdapter(BaseActivity activity, PostFragmentBase...
method setCanStartActivity (line 414) | public void setCanStartActivity(boolean canStartActivity) {
method getItemViewType (line 418) | @Override
method onCreateViewHolder (line 632) | @OptIn(markerClass = UnstableApi.class)
method onBindViewHolder (line 703) | @OptIn(markerClass = UnstableApi.class)
method getSuitablePreview (line 1442) | @Nullable
method getSuitablePreviewWithThumbnailFallback (line 1467) | private Post.Preview getSuitablePreviewWithThumbnailFallback(ArrayList...
method hasValidThumbnailFallback (line 1475) | private boolean hasValidThumbnailFallback(String thumbnailUrl) {
method shouldUseCompactLayout (line 1479) | private boolean shouldUseCompactLayout(Post post) {
method loadImage (line 1483) | private void loadImage(final RecyclerView.ViewHolder holder) {
method shareLink (line 1556) | private void shareLink(Post post) {
method getItemByPosition (line 1579) | @Nullable
method setVoteButtonsPosition (line 1588) | public void setVoteButtonsPosition(boolean voteButtonsOnTheRight) {
method setPostLayout (line 1592) | public void setPostLayout(int postLayout) {
method setBlurNsfwAndDoNotBlurNsfwInNsfwSubreddits (line 1596) | public void setBlurNsfwAndDoNotBlurNsfwInNsfwSubreddits(boolean needBl...
method setBlurSpoiler (line 1601) | public void setBlurSpoiler(boolean needBlurSpoiler) {
method setShowElapsedTime (line 1605) | public void setShowElapsedTime(boolean showElapsedTime) {
method setTimeFormat (line 1609) | public void setTimeFormat(String timeFormat) {
method setShowDividerInCompactLayout (line 1613) | public void setShowDividerInCompactLayout(boolean showDividerInCompact...
method setShowAbsoluteNumberOfVotes (line 1617) | public void setShowAbsoluteNumberOfVotes(boolean showAbsoluteNumberOfV...
method setAutoplay (line 1621) | public void setAutoplay(boolean autoplay) {
method isAutoplay (line 1625) | public boolean isAutoplay() {
method setAutoplayNsfwVideos (line 1629) | public void setAutoplayNsfwVideos(boolean autoplayNsfwVideos) {
method setMuteAutoplayingVideos (line 1633) | public void setMuteAutoplayingVideos(boolean muteAutoplayingVideos) {
method setShowThumbnailOnTheLeftInCompactLayout (line 1637) | public void setShowThumbnailOnTheLeftInCompactLayout(boolean showThumb...
method setStartAutoplayVisibleAreaOffset (line 1641) | public void setStartAutoplayVisibleAreaOffset(double startAutoplayVisi...
method setMuteNSFWVideo (line 1645) | public void setMuteNSFWVideo(boolean muteNSFWVideo) {
method setLongPressToHideToolbarInCompactLayout (line 1649) | public void setLongPressToHideToolbarInCompactLayout(boolean longPress...
method setCompactLayoutToolbarHiddenByDefault (line 1653) | public void setCompactLayoutToolbarHiddenByDefault(boolean compactLayo...
method setDataSavingMode (line 1657) | public void setDataSavingMode(boolean dataSavingMode) {
method setDisableImagePreview (line 1661) | public void setDisableImagePreview(boolean disableImagePreview) {
method setOnlyDisablePreviewInVideoPosts (line 1665) | public void setOnlyDisablePreviewInVideoPosts(boolean onlyDisablePrevi...
method setHidePostType (line 1669) | public void setHidePostType(boolean hidePostType) {
method setHidePostFlair (line 1673) | public void setHidePostFlair(boolean hidePostFlair) {
method setHideSubredditAndUserPrefix (line 1677) | public void setHideSubredditAndUserPrefix(boolean hideSubredditAndUser...
method setHideTheNumberOfVotes (line 1681) | public void setHideTheNumberOfVotes(boolean hideTheNumberOfVotes) {
method setHideTheNumberOfComments (line 1685) | public void setHideTheNumberOfComments(boolean hideTheNumberOfComments) {
method setDefaultLinkPostLayout (line 1689) | public void setDefaultLinkPostLayout(int defaultLinkPostLayout) {
method setFixedHeightPreviewInCard (line 1693) | public void setFixedHeightPreviewInCard(boolean fixedHeightPreviewInCa...
method setHideTextPostContent (line 1697) | public void setHideTextPostContent(boolean hideTextPostContent) {
method setPostFeedMaxResolution (line 1701) | public void setPostFeedMaxResolution(int postFeedMaxResolution) {
method setEasierToWatchInFullScreen (line 1708) | public void setEasierToWatchInFullScreen(boolean easierToWatchInFullSc...
method setLongPressPostNonMediaAreaAction (line 1712) | public void setLongPressPostNonMediaAreaAction(String value) {
method setLongPressPostMediaAction (line 1716) | public void setLongPressPostMediaAction(String value) {
method setDataSavingModeDefaultResolution (line 1720) | public void setDataSavingModeDefaultResolution(int value) {
method setNonDataSavingModeDefaultResolution (line 1724) | public void setNonDataSavingModeDefaultResolution(int value) {
method setSimultaneousAutoplayLimit (line 1728) | public void setSimultaneousAutoplayLimit(int limit) {
method onViewRecycled (line 1733) | @OptIn(markerClass = UnstableApi.class)
method getKeyForOrder (line 1858) | @Nullable
method getOrderForKey (line 1867) | @Nullable
method onItemSwipe (line 1877) | public void onItemSwipe(RecyclerView.ViewHolder viewHolder, int direct...
type Callback (line 1909) | public interface Callback {
method typeChipClicked (line 1910) | void typeChipClicked(int filter);
method flairChipClicked (line 1912) | void flairChipClicked(String flair);
method nsfwChipClicked (line 1914) | void nsfwChipClicked();
method currentlyBindItem (line 1916) | void currentlyBindItem(int position);
method delayTransition (line 1918) | void delayTransition();
method openViewPostDetailActivity (line 1921) | private void openViewPostDetailActivity(Post post, int position) {
method openMedia (line 1933) | private void openMedia(Post post) {
method openMedia (line 1937) | private void openMedia(Post post, boolean peekMedia) {
method openMedia (line 1941) | private void openMedia(Post post, int galleryItemIndex, boolean peekMe...
method openMedia (line 1945) | private void openMedia(Post post, long videoProgress) {
method openMedia (line 1949) | private void openMedia(Post post, int galleryItemIndex, long videoProg...
method setCanPlayVideo (line 2054) | public void setCanPlayVideo(boolean canPlayVideo) {
class PostViewHolder (line 2058) | public abstract class PostViewHolder extends RecyclerView.ViewHolder {
method PostViewHolder (line 2093) | public PostViewHolder(@NonNull View itemView) {
method startSubredditOrUserActivity (line 2097) | void startSubredditOrUserActivity(String subredditName) {
method setBaseView (line 2109) | void setBaseView(AspectRatioGifImageView iconGifImageView,
method setBaseView (line 2211) | void setBaseView(AspectRatioGifImageView iconGifImageView,
method setOnClickListeners (line 2280) | void setOnClickListeners(MaterialButton upvoteButton,
method setOnClickListeners (line 2609) | void setOnClickListeners(@Nullable CustomTextView typeTextView,
method setItemViewBackgroundColor (line 2667) | abstract void setItemViewBackgroundColor(boolean isReadPost);
method markPostRead (line 2668) | abstract void markPostRead(Post post, boolean changePostItemColor);
class VideoAutoplayImpl (line 2671) | @UnstableApi
method VideoAutoplayImpl (line 2694) | public VideoAutoplayImpl(View itemView, AspectRatioFrameLayout aspec...
method bindVideoUri (line 2781) | void bindVideoUri(Uri videoUri) {
method setVolume (line 2785) | void setVolume(float volume) {
method resetVolume (line 2789) | void resetVolume() {
method savePlaybackInfo (line 2793) | private void savePlaybackInfo(int order, @Nullable PlaybackInfo play...
method loadVideo (line 2797) | void loadVideo(int position) {
method loadFallbackDirectVideo (line 2854) | void loadFallbackDirectVideo() {
method getPlayerView (line 2867) | @NonNull
method getCurrentPlaybackInfo (line 2873) | @NonNull
method initialize (line 2879) | @OptIn(markerClass = UnstableApi.class)
method play (line 3023) | @Override
method pause (line 3036) | @Override
method isPlaying (line 3041) | @Override
method release (line 3046) | @Override
method wantsToPlay (line 3060) | @Override
method getAdapterPosition (line 3065) | abstract int getAdapterPosition();
method getPost (line 3067) | abstract Post getPost();
method markPostRead (line 3069) | abstract void markPostRead(Post post, boolean changePostItemColor);
class PostBaseViewHolder (line 3072) | public abstract class PostBaseViewHolder extends PostViewHolder {
method PostBaseViewHolder (line 3077) | PostBaseViewHolder(@NonNull View itemView) {
method setBaseView (line 3081) | void setBaseView(AspectRatioGifImageView iconGifImageView,
method showPostOptions (line 3235) | void showPostOptions() {
method markPostRead (line 3247) | @Override
class PostBaseVideoAutoplayViewHolder (line 3269) | @UnstableApi
method PostBaseVideoAutoplayViewHolder (line 3273) | @OptIn(markerClass = UnstableApi.class)
method getPlayerView (line 3354) | @NonNull
method getCurrentPlaybackInfo (line 3360) | @NonNull
method initialize (line 3366) | @Override
method play (line 3371) | @Override
method pause (line 3377) | @Override
method isPlaying (line 3383) | @Override
method release (line 3388) | @Override
method wantsToPlay (line 3393) | @Override
method getPlayerOrder (line 3398) | @Override
class PostVideoAutoplayViewHolder (line 3404) | @UnstableApi
method PostVideoAutoplayViewHolder (line 3406) | PostVideoAutoplayViewHolder(ItemPostVideoTypeAutoplayBinding binding) {
method setItemViewBackgroundColor (line 3439) | @Override
class PostVideoAutoplayLegacyControllerViewHolder (line 3445) | @UnstableApi
method PostVideoAutoplayLegacyControllerViewHolder (line 3447) | PostVideoAutoplayLegacyControllerViewHolder(ItemPostVideoTypeAutopla...
method setItemViewBackgroundColor (line 3480) | @Override
class PostWithPreviewTypeViewHolder (line 3486) | class PostWithPreviewTypeViewHolder extends PostBaseViewHolder {
method PostWithPreviewTypeViewHolder (line 3497) | PostWithPreviewTypeViewHolder(@NonNull View itemView) {
method PostWithPreviewTypeViewHolder (line 3501) | PostWithPreviewTypeViewHolder(@NonNull ItemPostWithPreviewBinding bi...
method setBaseView (line 3533) | void setBaseView(AspectRatioGifImageView iconGifImageView,
method setItemViewBackgroundColor (line 3655) | @Override
class PostBaseGalleryTypeViewHolder (line 3661) | public abstract class PostBaseGalleryTypeViewHolder extends PostBaseVi...
method PostBaseGalleryTypeViewHolder (line 3670) | PostBaseGalleryTypeViewHolder(View rootView,
method isSwipeLocked (line 3875) | public boolean isSwipeLocked() {
class PostGalleryTypeViewHolder (line 3880) | public class PostGalleryTypeViewHolder extends PostBaseGalleryTypeView...
method PostGalleryTypeViewHolder (line 3882) | PostGalleryTypeViewHolder(ItemPostGalleryTypeBinding binding) {
method setItemViewBackgroundColor (line 3910) | @Override
class PostTextTypeViewHolder (line 3916) | class PostTextTypeViewHolder extends PostBaseViewHolder {
method PostTextTypeViewHolder (line 3919) | PostTextTypeViewHolder(@NonNull View itemView) {
method PostTextTypeViewHolder (line 3923) | PostTextTypeViewHolder(@NonNull ItemPostTextBinding binding) {
method setBaseView (line 3949) | void setBaseView(AspectRatioGifImageView iconGifImageView,
method setItemViewBackgroundColor (line 4000) | @Override
class PostCompactBaseViewHolder (line 4006) | public class PostCompactBaseViewHolder extends PostViewHolder {
method PostCompactBaseViewHolder (line 4019) | PostCompactBaseViewHolder(View itemView) {
method setBaseView (line 4023) | void setBaseView(AspectRatioGifImageView iconGifImageView,
method showPostOptions (line 4262) | void showPostOptions() {
method setItemViewBackgroundColor (line 4273) | @Override
method markPostRead (line 4278) | @Override
class PostCompactLeftThumbnailViewHolder (line 4297) | class PostCompactLeftThumbnailViewHolder extends PostCompactBaseViewHo...
method PostCompactLeftThumbnailViewHolder (line 4298) | PostCompactLeftThumbnailViewHolder(@NonNull ItemPostCompactBinding b...
class PostCompactRightThumbnailViewHolder (line 4331) | class PostCompactRightThumbnailViewHolder extends PostCompactBaseViewH...
method PostCompactRightThumbnailViewHolder (line 4332) | PostCompactRightThumbnailViewHolder(@NonNull ItemPostCompactRightThu...
class PostCompact2LeftThumbnailViewHolder (line 4365) | class PostCompact2LeftThumbnailViewHolder extends PostCompactBaseViewH...
method PostCompact2LeftThumbnailViewHolder (line 4366) | PostCompact2LeftThumbnailViewHolder(@NonNull ItemPostCompact2Binding...
class PostCompact2RightThumbnailViewHolder (line 4399) | class PostCompact2RightThumbnailViewHolder extends PostCompactBaseView...
method PostCompact2RightThumbnailViewHolder (line 4400) | PostCompact2RightThumbnailViewHolder(@NonNull ItemPostCompact2RightT...
class PostGalleryViewHolder (line 4433) | class PostGalleryViewHolder extends RecyclerView.ViewHolder {
method PostGalleryViewHolder (line 4441) | public PostGalleryViewHolder(@NonNull ItemPostGalleryBinding binding) {
method markPostRead (line 4522) | void markPostRead(Post post, boolean changePostItemColor) {
class PostGalleryBaseGalleryTypeViewHolder (line 4540) | class PostGalleryBaseGalleryTypeViewHolder extends RecyclerView.ViewHo...
method PostGalleryBaseGalleryTypeViewHolder (line 4555) | public PostGalleryBaseGalleryTypeViewHolder(@NonNull View itemView,
method onClick (line 4685) | void onClick() {
method onLongClick (line 4701) | boolean onLongClick() {
method markPostRead (line 4719) | void markPostRead(Post post, boolean changePostItemColor) {
class PostGalleryGalleryTypeViewHolder (line 4736) | class PostGalleryGalleryTypeViewHolder extends PostGalleryBaseGalleryT...
method PostGalleryGalleryTypeViewHolder (line 4738) | public PostGalleryGalleryTypeViewHolder(@NonNull ItemPostGalleryGall...
class PostCard2VideoAutoplayViewHolder (line 4745) | @UnstableApi
method PostCard2VideoAutoplayViewHolder (line 4747) | PostCard2VideoAutoplayViewHolder(ItemPostCard2VideoAutoplayBinding b...
method setItemViewBackgroundColor (line 4782) | @Override
class PostCard2VideoAutoplayLegacyControllerViewHolder (line 4788) | @UnstableApi
method PostCard2VideoAutoplayLegacyControllerViewHolder (line 4790) | PostCard2VideoAutoplayLegacyControllerViewHolder(ItemPostCard2VideoA...
method setItemViewBackgroundColor (line 4825) | @Override
class PostCard2WithPreviewViewHolder (line 4831) | class PostCard2WithPreviewViewHolder extends PostWithPreviewTypeViewHo...
method PostCard2WithPreviewViewHolder (line 4833) | PostCard2WithPreviewViewHolder(@NonNull ItemPostCard2WithPreviewBind...
method setItemViewBackgroundColor (line 4867) | @Override
class PostCard2GalleryTypeViewHolder (line 4873) | public class PostCard2GalleryTypeViewHolder extends PostBaseGalleryTyp...
method PostCard2GalleryTypeViewHolder (line 4875) | PostCard2GalleryTypeViewHolder(ItemPostCard2GalleryTypeBinding bindi...
method setItemViewBackgroundColor (line 4905) | @Override
class PostCard2TextTypeViewHolder (line 4911) | class PostCard2TextTypeViewHolder extends PostTextTypeViewHolder {
method PostCard2TextTypeViewHolder (line 4912) | PostCard2TextTypeViewHolder(@NonNull ItemPostCard2TextBinding bindin...
method setItemViewBackgroundColor (line 4941) | @Override
class PostMaterial3CardVideoAutoplayViewHolder (line 4947) | @UnstableApi
method PostMaterial3CardVideoAutoplayViewHolder (line 4949) | PostMaterial3CardVideoAutoplayViewHolder(ItemPostCard3VideoTypeAutop...
method setItemViewBackgroundColor (line 4982) | @Override
class PostMaterial3CardVideoAutoplayLegacyControllerViewHolder (line 4988) | @UnstableApi
method PostMaterial3CardVideoAutoplayLegacyControllerViewHolder (line 4990) | PostMaterial3CardVideoAutoplayLegacyControllerViewHolder(ItemPostCar...
method setItemViewBackgroundColor (line 5023) | @Override
class PostMaterial3CardWithPreviewViewHolder (line 5029) | public class PostMaterial3CardWithPreviewViewHolder extends PostWithPr...
method PostMaterial3CardWithPreviewViewHolder (line 5030) | PostMaterial3CardWithPreviewViewHolder(@NonNull ItemPostCard3WithPre...
method setItemViewBackgroundColor (line 5061) | @Override
class PostMaterial3CardGalleryTypeViewHolder (line 5067) | public class PostMaterial3CardGalleryTypeViewHolder extends PostBaseGa...
method PostMaterial3CardGalleryTypeViewHolder (line 5068) | PostMaterial3CardGalleryTypeViewHolder(ItemPostCard3GalleryTypeBindi...
method setItemViewBackgroundColor (line 5096) | @Override
class PostMaterial3CardTextTypeViewHolder (line 5102) | public class PostMaterial3CardTextTypeViewHolder extends PostTextTypeV...
method PostMaterial3CardTextTypeViewHolder (line 5103) | PostMaterial3CardTextTypeViewHolder(@NonNull ItemPostCard3TextBindin...
method setItemViewBackgroundColor (line 5129) | @Override
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/adapters/PrivateMessagesDetailRecyclerViewAdapter.java
class PrivateMessagesDetailRecyclerViewAdapter (line 53) | public class PrivateMessagesDetailRecyclerViewAdapter extends RecyclerVi...
method PrivateMessagesDetailRecyclerViewAdapter (line 70) | public PrivateMessagesDetailRecyclerViewAdapter(ViewPrivateMessagesAct...
method getItemViewType (line 126) | @Override
method onCreateViewHolder (line 135) | @NonNull
method onBindViewHolder (line 145) | @Override
method getItemCount (line 198) | @Override
method setMessage (line 209) | public void setMessage(Message message) {
method addReply (line 214) | public void addReply(Message reply) {
method onViewRecycled (line 226) | @Override
class MessageViewHolder (line 238) | class MessageViewHolder extends RecyclerView.ViewHolder {
method MessageViewHolder (line 243) | public MessageViewHolder(@NonNull View itemView) {
method setBaseView (line 247) | void setBaseView(TextView messageTextView, TextView timeTextView, Im...
class SentMessageViewHolder (line 297) | class SentMessageViewHolder extends MessageViewHolder {
method SentMessageViewHolder (line 299) | SentMessageViewHolder(@NonNull ItemPrivateMessageSentBinding binding) {
class ReceivedMessageViewHolder (line 309) | class ReceivedMessageViewHolder extends MessageViewHolder {
method ReceivedMessageViewHolder (line 312) | ReceivedMessageViewHolder(@NonNull ItemPrivateMessageReceivedBinding...
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/adapters/RedditGallerySubmissionRecyclerViewAdapter.java
class RedditGallerySubmissionRecyclerViewAdapter (line 37) | public class RedditGallerySubmissionRecyclerViewAdapter extends Recycler...
method RedditGallerySubmissionRecyclerViewAdapter (line 48) | public RedditGallerySubmissionRecyclerViewAdapter(PostGalleryActivity ...
method getItemViewType (line 56) | @Override
method onCreateViewHolder (line 65) | @NonNull
method onBindViewHolder (line 74) | @Override
method getItemCount (line 102) | @Override
method onViewRecycled (line 107) | @Override
method getRedditGalleryImageInfoList (line 117) | public ArrayList<RedditGalleryImageInfo> getRedditGalleryImageInfoList...
method setRedditGalleryImageInfoList (line 121) | public void setRedditGalleryImageInfoList(ArrayList<RedditGalleryImage...
method addImage (line 126) | public void addImage(String imageUrl) {
method setImageAsUploaded (line 134) | public void setImageAsUploaded(String mediaId) {
method removeFailedToUploadImage (line 139) | public void removeFailedToUploadImage() {
method setCaptionAndUrl (line 144) | public void setCaptionAndUrl(int position, String caption, String url) {
class ImageViewHolder (line 151) | class ImageViewHolder extends RecyclerView.ViewHolder {
method ImageViewHolder (line 154) | public ImageViewHolder(@NonNull ItemRedditGallerySubmissionImageBind...
class AddImageViewHolder (line 181) | class AddImageViewHolder extends RecyclerView.ViewHolder {
method AddImageViewHolder (line 183) | public AddImageViewHolder(@NonNull View itemView) {
class RedditGalleryImageInfo (line 206) | public static class RedditGalleryImageInfo implements Parcelable {
method RedditGalleryImageInfo (line 210) | public RedditGalleryImageInfo(String imageUrlString) {
method RedditGalleryImageInfo (line 214) | protected RedditGalleryImageInfo(Parcel in) {
method createFromParcel (line 220) | @Override
method newArray (line 225) | @Override
method describeContents (line 231) | @Override
method writeToParcel (line 236) | @Override
type ItemClickListener (line 243) | public interface ItemClickListener {
method onAddImageClicked (line 244) | void onAddImageClicked();
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/adapters/ReportReasonRecyclerViewAdapter.java
class ReportReasonRecyclerViewAdapter (line 17) | public class ReportReasonRecyclerViewAdapter extends RecyclerView.Adapte...
method ReportReasonRecyclerViewAdapter (line 25) | public ReportReasonRecyclerViewAdapter(BaseActivity activity, CustomTh...
method onCreateViewHolder (line 32) | @NonNull
method onBindViewHolder (line 38) | @Override
method getItemCount (line 52) | @Override
method setRules (line 57) | public void setRules(ArrayList<ReportReason> reportReasons) {
method getSelectedReason (line 62) | public ReportReason getSelectedReason() {
method getGeneralReasons (line 80) | public ArrayList<ReportReason> getGeneralReasons() {
method getRules (line 84) | public ArrayList<ReportReason> getRules() {
class ReasonViewHolder (line 88) | class ReasonViewHolder extends RecyclerView.ViewHolder {
method ReasonViewHolder (line 91) | ReasonViewHolder(@NonNull ItemReportReasonBinding binding) {
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/adapters/RulesRecyclerViewAdapter.java
class RulesRecyclerViewAdapter (line 43) | public class RulesRecyclerViewAdapter extends RecyclerView.Adapter<Rules...
method RulesRecyclerViewAdapter (line 55) | public RulesRecyclerViewAdapter(@NonNull BaseActivity activity,
method onCreateViewHolder (line 124) | @NonNull
method onBindViewHolder (line 130) | @Override
method getItemCount (line 143) | @Override
method onViewRecycled (line 148) | @Override
method changeDataset (line 154) | public void changeDataset(ArrayList<Rule> rules) {
method setDataSavingMode (line 159) | public void setDataSavingMode(boolean dataSavingMode) {
class RuleViewHolder (line 164) | class RuleViewHolder extends RecyclerView.ViewHolder {
method RuleViewHolder (line 169) | RuleViewHolder(@NonNull ItemRuleBinding binding) {
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/adapters/SearchActivityRecyclerViewAdapter.java
class SearchActivityRecyclerViewAdapter (line 19) | public class SearchActivityRecyclerViewAdapter extends RecyclerView.Adap...
type ItemOnClickListener (line 30) | public interface ItemOnClickListener {
method onClick (line 31) | void onClick(RecentSearchQuery recentSearchQuery, boolean searchImme...
method onDelete (line 32) | void onDelete(RecentSearchQuery recentSearchQuery);
method SearchActivityRecyclerViewAdapter (line 35) | public SearchActivityRecyclerViewAdapter(BaseActivity activity, Custom...
method onCreateViewHolder (line 47) | @NonNull
method onBindViewHolder (line 53) | @Override
method getItemCount (line 93) | @Override
method onViewRecycled (line 98) | @Override
method setRecentSearchQueries (line 107) | public void setRecentSearchQueries(List<RecentSearchQuery> recentSearc...
class RecentSearchQueryViewHolder (line 112) | class RecentSearchQueryViewHolder extends RecyclerView.ViewHolder {
method RecentSearchQueryViewHolder (line 115) | public RecentSearchQueryViewHolder(@NonNull ItemRecentSearchQueryBin...
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/adapters/SelectedSubredditsRecyclerViewAdapter.java
class SelectedSubredditsRecyclerViewAdapter (line 21) | public class SelectedSubredditsRecyclerViewAdapter extends RecyclerView....
method SelectedSubredditsRecyclerViewAdapter (line 27) | public SelectedSubredditsRecyclerViewAdapter(BaseActivity activity, Cu...
method onCreateViewHolder (line 40) | @NonNull
method onBindViewHolder (line 47) | @Override
method getItemCount (line 63) | @Override
method onViewRecycled (line 68) | @Override
method addSubreddits (line 76) | public void addSubreddits(ArrayList<ExpandedSubredditInMultiReddit> ne...
method addUserInSubredditType (line 82) | public void addUserInSubredditType(String username) {
method getSubreddits (line 87) | public ArrayList<ExpandedSubredditInMultiReddit> getSubreddits() {
class SubredditViewHolder (line 91) | class SubredditViewHolder extends RecyclerView.ViewHolder {
method SubredditViewHolder (line 94) | public SubredditViewHolder(@NonNull ItemSelectedSubredditBinding bin...
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/adapters/SettingsSearchAdapter.java
class SettingsSearchAdapter (line 18) | public class SettingsSearchAdapter extends RecyclerView.Adapter<Settings...
type OnItemClickListener (line 20) | public interface OnItemClickListener {
method onItemClick (line 21) | void onItemClick(SettingsSearchItem item);
method SettingsSearchAdapter (line 27) | public SettingsSearchAdapter(OnItemClickListener listener) {
method filter (line 31) | public void filter(String query) {
method isEmpty (line 50) | public boolean isEmpty() {
method onCreateViewHolder (line 54) | @NonNull
method onBindViewHolder (line 62) | @Override
method getItemCount (line 70) | @Override
class ViewHolder (line 75) | static class ViewHolder extends RecyclerView.ViewHolder {
method ViewHolder (line 79) | ViewHolder(View itemView) {
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/adapters/SubredditAutocompleteRecyclerViewAdapter.java
class SubredditAutocompleteRecyclerViewAdapter (line 25) | public class SubredditAutocompleteRecyclerViewAdapter extends RecyclerVi...
method SubredditAutocompleteRecyclerViewAdapter (line 32) | public SubredditAutocompleteRecyclerViewAdapter(BaseActivity activity,...
method onCreateViewHolder (line 40) | @NonNull
method onBindViewHolder (line 46) | @Override
method getItemCount (line 59) | @Override
method onViewRecycled (line 64) | @Override
method setSubreddits (line 72) | public void setSubreddits(List<SubredditData> subreddits) {
class SubredditViewHolder (line 77) | class SubredditViewHolder extends RecyclerView.ViewHolder {
method SubredditViewHolder (line 85) | public SubredditViewHolder(@NonNull View itemView) {
type ItemOnClickListener (line 110) | public interface ItemOnClickListener {
method onClick (line 111) | void onClick(SubredditData subredditData);
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/adapters/SubredditListingRecyclerViewAdapter.java
class SubredditListingRecyclerViewAdapter (line 36) | public class SubredditListingRecyclerViewAdapter extends PagedListAdapte...
method areItemsTheSame (line 41) | @Override
method areContentsTheSame (line 46) | @Override
method SubredditListingRecyclerViewAdapter (line 70) | public SubredditListingRecyclerViewAdapter(BaseActivity activity, Exec...
method onCreateViewHolder (line 94) | @NonNull
method onBindViewHolder (line 106) | @Override
method getItemViewType (line 193) | @Override
method getItemCount (line 207) | @Override
method hasExtraRow (line 215) | private boolean hasExtraRow() {
method setNetworkState (line 219) | public void setNetworkState(NetworkState newNetworkState) {
method onViewRecycled (line 235) | @Override
type Callback (line 243) | public interface Callback {
method retryLoadingMore (line 244) | void retryLoadingMore();
method subredditSelected (line 246) | void subredditSelected(String subredditName, String iconUrl);
class DataViewHolder (line 249) | class DataViewHolder extends RecyclerView.ViewHolder {
method DataViewHolder (line 252) | DataViewHolder(@NonNull ItemSubredditListingBinding binding) {
class ErrorViewHolder (line 269) | class ErrorViewHolder extends RecyclerView.ViewHolder {
method ErrorViewHolder (line 272) | ErrorViewHolder(@NonNull ItemFooterErrorBinding binding) {
class LoadingViewHolder (line 288) | class LoadingViewHolder extends RecyclerView.ViewHolder {
method LoadingViewHolder (line 291) | LoadingViewHolder(@NonNull ItemFooterLoadingBinding binding) {
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/adapters/SubredditMultiselectionRecyclerViewAdapter.java
class SubredditMultiselectionRecyclerViewAdapter (line 26) | public class SubredditMultiselectionRecyclerViewAdapter extends Recycler...
method SubredditMultiselectionRecyclerViewAdapter (line 34) | public SubredditMultiselectionRecyclerViewAdapter(BaseActivity activit...
method onCreateViewHolder (line 41) | @NonNull
method onBindViewHolder (line 48) | @Override
method getItemCount (line 72) | @Override
method onViewRecycled (line 77) | @Override
method setSubscribedSubreddits (line 85) | public void setSubscribedSubreddits(List<SubscribedSubredditData> subs...
method getAllSelectedSubreddits (line 104) | public ArrayList<SubredditWithSelection> getAllSelectedSubreddits() {
class SubscribedSubredditViewHolder (line 114) | class SubscribedSubredditViewHolder extends RecyclerView.ViewHolder {
method SubscribedSubredditViewHolder (line 117) | SubscribedSubredditViewHolder(@NonNull ItemSubscribedSubredditMultiS...
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/adapters/SubscribedSubredditsRecyclerViewAdapter.java
class SubscribedSubredditsRecyclerViewAdapter (line 33) | public class SubscribedSubredditsRecyclerViewAdapter extends RecyclerVie...
method SubscribedSubredditsRecyclerViewAdapter (line 57) | public SubscribedSubredditsRecyclerViewAdapter(BaseActivity activity, ...
method SubscribedSubredditsRecyclerViewAdapter (line 72) | public SubscribedSubredditsRecyclerViewAdapter(BaseActivity activity, ...
method getItemViewType (line 82) | @Override
method onCreateViewHolder (line 127) | @NonNull
method onBindViewHolder (line 146) | @Override
method getItemCount (line 370) | @Override
method onViewRecycled (line 400) | @Override
method setSubscribedSubreddits (line 410) | public void setSubscribedSubreddits(List<SubscribedSubredditData> subs...
method setFavoriteSubscribedSubreddits (line 415) | public void setFavoriteSubscribedSubreddits(List<SubscribedSubredditDa...
method addUser (line 420) | public void addUser(String username, String userIconUrl) {
method getPopupText (line 425) | @NonNull
type ItemClickListener (line 470) | public interface ItemClickListener {
method onClick (line 471) | void onClick(String name, String iconUrl, boolean subredditIsUser);
class SubredditViewHolder (line 474) | class SubredditViewHolder extends RecyclerView.ViewHolder {
method SubredditViewHolder (line 477) | SubredditViewHolder(@NonNull ItemSubscribedThingBinding binding) {
class FavoriteSubredditViewHolder (line 487) | class FavoriteSubredditViewHolder extends RecyclerView.ViewHolder {
method FavoriteSubredditViewHolder (line 490) | FavoriteSubredditViewHolder(@NonNull ItemSubscribedThingBinding bind...
class FavoriteSubredditsDividerViewHolder (line 500) | class FavoriteSubredditsDividerViewHolder extends RecyclerView.ViewHol...
method FavoriteSubredditsDividerViewHolder (line 503) | FavoriteSubredditsDividerViewHolder(@NonNull ItemFavoriteThingDivide...
class AllSubredditsDividerViewHolder (line 514) | class AllSubredditsDividerViewHolder extends RecyclerView.ViewHolder {
method AllSubredditsDividerViewHolder (line 517) | AllSubredditsDividerViewHolder(@NonNull ItemFavoriteThingDividerBind...
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/adapters/TranslationFragmentRecyclerViewAdapter.java
class TranslationFragmentRecyclerViewAdapter (line 19) | public class TranslationFragmentRecyclerViewAdapter extends RecyclerView...
method TranslationFragmentRecyclerViewAdapter (line 25) | public TranslationFragmentRecyclerViewAdapter(BaseActivity activity, C...
method onCreateViewHolder (line 32) | @NonNull
method onBindViewHolder (line 38) | @Override
method getItemCount (line 52) | @Override
class TranslationContributorViewHolder (line 57) | class TranslationContributorViewHolder extends RecyclerView.ViewHolder {
method TranslationContributorViewHolder (line 60) | public TranslationContributorViewHolder(@NonNull ItemTranslationCont...
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/adapters/UploadedImagesRecyclerViewAdapter.java
class UploadedImagesRecyclerViewAdapter (line 18) | public class UploadedImagesRecyclerViewAdapter extends RecyclerView.Adap...
method UploadedImagesRecyclerViewAdapter (line 23) | public UploadedImagesRecyclerViewAdapter(Activity activity, ArrayList<...
method onCreateViewHolder (line 31) | @NonNull
method onBindViewHolder (line 38) | @Override
method getItemCount (line 44) | @Override
class UploadedImageViewHolder (line 49) | private class UploadedImageViewHolder extends RecyclerView.ViewHolder {
method UploadedImageViewHolder (line 53) | public UploadedImageViewHolder(@NonNull View itemView) {
type ItemClickListener (line 69) | public interface ItemClickListener {
method onClick (line 70) | void onClick(UploadedImage uploadedImage);
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/adapters/UserFlairRecyclerViewAdapter.java
class UserFlairRecyclerViewAdapter (line 19) | public class UserFlairRecyclerViewAdapter extends RecyclerView.Adapter<R...
method UserFlairRecyclerViewAdapter (line 25) | public UserFlairRecyclerViewAdapter(BaseActivity activity, CustomTheme...
type ItemClickListener (line 34) | public interface ItemClickListener {
method onClick (line 35) | void onClick(UserFlair userFlair, boolean editUserFlair);
method onCreateViewHolder (line 38) | @NonNull
method onBindViewHolder (line 44) | @Override
method getItemCount (line 66) | @Override
class UserFlairViewHolder (line 71) | class UserFlairViewHolder extends RecyclerView.ViewHolder {
method UserFlairViewHolder (line 74) | public UserFlairViewHolder(@NonNull ItemUserFlairBinding binding) {
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/adapters/UserListingRecyclerViewAdapter.java
class UserListingRecyclerViewAdapter (line 34) | public class UserListingRecyclerViewAdapter extends PagedListAdapter<Use...
method areItemsTheSame (line 39) | @Override
method areContentsTheSame (line 44) | @Override
method UserListingRecyclerViewAdapter (line 68) | public UserListingRecyclerViewAdapter(BaseActivity activity, Executor ...
method onCreateViewHolder (line 90) | @NonNull
method onBindViewHolder (line 102) | @Override
method getItemViewType (line 165) | @Override
method getItemCount (line 179) | @Override
method hasExtraRow (line 187) | private boolean hasExtraRow() {
method setNetworkState (line 191) | public void setNetworkState(NetworkState newNetworkState) {
method onViewRecycled (line 207) | @Override
type Callback (line 215) | public interface Callback {
method retryLoadingMore (line 216) | void retryLoadingMore();
method userSelected (line 218) | void userSelected(String username, String iconUrl);
class DataViewHolder (line 221) | class DataViewHolder extends RecyclerView.ViewHolder {
method DataViewHolder (line 224) | DataViewHolder(@NonNull ItemUserListingBinding binding) {
class ErrorViewHolder (line 240) | class ErrorViewHolder extends RecyclerView.ViewHolder {
method ErrorViewHolder (line 243) | ErrorViewHolder(@NonNull ItemFooterErrorBinding binding) {
class LoadingViewHolder (line 259) | class LoadingViewHolder extends RecyclerView.ViewHolder {
method LoadingViewHolder (line 262) | LoadingViewHolder(@NonNull ItemFooterLoadingBinding binding) {
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/adapters/UserMultiselectionRecyclerViewAdapter.java
class UserMultiselectionRecyclerViewAdapter (line 26) | public class UserMultiselectionRecyclerViewAdapter extends RecyclerView....
method UserMultiselectionRecyclerViewAdapter (line 34) | public UserMultiselectionRecyclerViewAdapter(BaseActivity activity, Cu...
method onCreateViewHolder (line 41) | @NonNull
method onBindViewHolder (line 48) | @Override
method getItemCount (line 72) | @Override
method onViewRecycled (line 77) | @Override
method setSubscribedUsers (line 85) | public void setSubscribedUsers(List<SubscribedUserData> subscribedUser...
method getAllSelectedUsers (line 106) | public ArrayList<String> getAllSelectedUsers() {
class SubscribedUserViewHolder (line 116) | class SubscribedUserViewHolder extends RecyclerView.ViewHolder {
method SubscribedUserViewHolder (line 119) | SubscribedUserViewHolder(@NonNull ItemSubscribedUserMultiSelectionBi...
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/adapters/navigationdrawer/AccountManagementSectionRecyclerViewAdapter.java
class AccountManagementSectionRecyclerViewAdapter (line 23) | public class AccountManagementSectionRecyclerViewAdapter extends Recycle...
method AccountManagementSectionRecyclerViewAdapter (line 36) | public AccountManagementSectionRecyclerViewAdapter(BaseActivity baseAc...
method getItemViewType (line 47) | @Override
method onCreateViewHolder (line 56) | @NonNull
method onBindViewHolder (line 66) | @Override
method getItemCount (line 108) | @Override
method changeAccountsDataset (line 125) | public void changeAccountsDataset(List<Account> accounts) {
class AccountViewHolder (line 130) | class AccountViewHolder extends RecyclerView.ViewHolder {
method AccountViewHolder (line 133) | AccountViewHolder(@NonNull ItemNavDrawerAccountBinding binding) {
class MenuItemViewHolder (line 151) | class MenuItemViewHolder extends RecyclerView.ViewHolder {
method MenuItemViewHolder (line 154) | MenuItemViewHolder(@NonNull ItemNavDrawerMenuItemBinding binding) {
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/adapters/navigationdrawer/AccountSectionRecyclerViewAdapter.java
class AccountSectionRecyclerViewAdapter (line 20) | public class AccountSectionRecyclerViewAdapter extends RecyclerView.Adap...
method AccountSectionRecyclerViewAdapter (line 36) | public AccountSectionRecyclerViewAdapter(BaseActivity baseActivity, Cu...
method getItemViewType (line 48) | @Override
method onCreateViewHolder (line 53) | @NonNull
method onBindViewHolder (line 65) | @Override
method getItemCount (line 149) | @Override
method setInboxCount (line 154) | public void setInboxCount(int inboxCount) {
class MenuGroupTitleViewHolder (line 163) | class MenuGroupTitleViewHolder extends RecyclerView.ViewHolder {
method MenuGroupTitleViewHolder (line 166) | MenuGroupTitleViewHolder(@NonNull ItemNavDrawerMenuGroupTitleBinding...
class MenuItemViewHolder (line 177) | class MenuItemViewHolder extends RecyclerView.ViewHolder {
method MenuItemViewHolder (line 180) | MenuItemViewHolder(@NonNull ItemNavDrawerMenuItemBinding binding) {
FILE: app/src/main/java/ml/docilealligator/infinityforreddit/adapters/navigationdrawer/FavoriteSubscribedSubredditsSectionRecyclerViewAdapter.java
class FavoriteSubscribedSubredditsSectionRecyclerViewAdapter (line 24) | public class FavoriteSubscribedSubredditsSectionRecyclerViewAdapter exte...
method FavoriteSubscribedSubredditsSectionRecyclerViewAdapter (line 38) | public FavoriteSubscribedSubredditsSectionRecyclerViewAdapter(BaseActi...
method getItemViewType (line 51) | @Override
method onCreateViewHolder (line 56) | @NonNull
method onBindViewHolder (line 68) | @Override
method getItemCount (line 111) | @Override
method onViewRecycled (line 119) | @Override
method setFavoriteSubscribedSubreddits (line 127) | public void setFavoriteSubscribedSubreddits(List<SubscribedSubredditDa...
class MenuGroupTitleViewHolder (line 132) | class MenuGroupTitleViewHolder extends RecyclerView.ViewHolder {
method MenuGroupTitleViewHolder (line 135) | MenuGroupTitle
Copy disabled (too large)
Download .json
Condensed preview — 1434 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (10,914K chars).
[
{
"path": ".gitattributes",
"chars": 157,
"preview": "# Keep our fork's versions of these files when merging from upstream\n.github/workflows/build.yml merge=ours\n.github/work"
},
{
"path": ".github/ISSUE_TEMPLATE/bug_report.md",
"chars": 701,
"preview": "---\nname: Bug report\nabout: Create a report to help us improve\ntitle: ''\nlabels: 'bug'\nassignees: ''\n---\n\n**Describe the"
},
{
"path": ".github/ISSUE_TEMPLATE/config.yml",
"chars": 27,
"preview": "blank_issues_enabled: false"
},
{
"path": ".github/ISSUE_TEMPLATE/feature_request.md",
"chars": 641,
"preview": "---\nname: Feature request\nabout: Suggest an idea for this project\ntitle: ''\nlabels: 'enhancement'\nassignees: ''\n---\n\n**I"
},
{
"path": ".github/actions/github-custom-issue-closer",
"chars": 595,
"preview": "name: 'Custom Issue Closer'\ndescription: 'Automatically close GitHub issues based on custom patterns in commit messages'"
},
{
"path": ".github/workflows/build.yml",
"chars": 305,
"preview": "# This workflow overrides the upstream build.yml for this fork.\n# It runs a no-op job so GitHub doesn't report \"no jobs "
},
{
"path": ".github/workflows/close-issues-custom-pattern.yml",
"chars": 865,
"preview": "name: Close Issues via Custom Patterns\n\non:\n push:\n branches:\n - main\n - master\n pull_request:\n types:"
},
{
"path": ".gitignore",
"chars": 1807,
"preview": "# Created by https://www.gitignore.io/api/androidstudio\n# Edit at https://www.gitignore.io/?templates=androidstudio\n\n###"
},
{
"path": "CHANGELOG.md",
"chars": 8614,
"preview": "# CHANGELOG\n\n---\n\n8.1.4.5 / 2026-4-9\n===========\nNote v8a is the 64-bit build, and should be considered the default choo"
},
{
"path": "FAQ.md",
"chars": 2268,
"preview": "# Frequently asked questions\n\n1. Why can't I login?\n\nThere can be issues with `Android System Webview`. See [Common erro"
},
{
"path": "GIPHY.md",
"chars": 1592,
"preview": "# Giphy API key creation\nContinuum has to use a BYOK(Bring your own key) model. Continuum is open source, and [Giphy](ht"
},
{
"path": "LICENSE",
"chars": 34523,
"preview": " GNU AFFERO GENERAL PUBLIC LICENSE\n Version 3, 19 November 2007\n\n Copyright (C)"
},
{
"path": "README.md",
"chars": 5148,
"preview": "<h1 align=\"center\">Continuum</h1>\n\n<p align=\"center\">\n <picture>\n <source\n width=\"256px\"\n media=\"(prefers-"
},
{
"path": "SETUP-old.md",
"chars": 4828,
"preview": "# Setup\n## Giphy\nSee [here](/GIPHY.md).\n\n## Reddit Client ID\nA Reddit Client ID is needed to access Reddit from 3rd part"
},
{
"path": "SETUP.md",
"chars": 5392,
"preview": "# Setup\n\n## Setup for older versions\nSee [SETUP-old.md](/SETUP-old.md)\n\n## Giphy\nSee [here](/GIPHY.md).\n\n## Reddit Clien"
},
{
"path": "TESTS.md",
"chars": 2344,
"preview": "# Tests\n\nThe tests were started by [manunia](https://github.com/manunia), and are written in [Kotlin](https://en.wikiped"
},
{
"path": "app/build.gradle",
"chars": 14756,
"preview": "plugins {\n id 'com.android.application'\n id 'com.gladed.androidgitversion' version '0.4.14'\n id 'com.github.ben"
},
{
"path": "app/proguard-rules.pro",
"chars": 3967,
"preview": "# Uncomment this to preserve the line number information for\n# debugging stack traces.\n-keepattributes SourceFile,LineNu"
},
{
"path": "app/src/androidTest/kotlin/ru/otus/pandina/screens/CustomizePostFilterScreen.kt",
"chars": 1353,
"preview": "package ru.otus.pandina.screens\n\nimport com.kaspersky.kaspresso.screens.KScreen\nimport io.github.kakaocup.kakao.edit.KEd"
},
{
"path": "app/src/androidTest/kotlin/ru/otus/pandina/screens/FilteredPostsScreen.kt",
"chars": 1732,
"preview": "package ru.otus.pandina.screens\n\nimport android.view.View\nimport com.kaspersky.kaspresso.screens.KScreen\nimport io.githu"
},
{
"path": "app/src/androidTest/kotlin/ru/otus/pandina/screens/MainScreen.kt",
"chars": 481,
"preview": "package ru.otus.pandina.screens\n\nimport io.github.kakaocup.kakao.screen.Screen\nimport io.github.kakaocup.kakao.tabs.KTab"
},
{
"path": "app/src/androidTest/kotlin/ru/otus/pandina/screens/UserAgreementFragment.kt",
"chars": 458,
"preview": "package ru.otus.pandina.screens\n\nimport io.github.kakaocup.kakao.screen.Screen\nimport io.github.kakaocup.kakao.text.KBut"
},
{
"path": "app/src/androidTest/kotlin/ru/otus/pandina/screens/navigation/LoginScreen.kt",
"chars": 577,
"preview": "package ru.otus.pandina.screens.navigation\n\nimport io.github.kakaocup.kakao.edit.KEditText\nimport io.github.kakaocup.kak"
},
{
"path": "app/src/androidTest/kotlin/ru/otus/pandina/screens/navigation/NavigationViewLayout.kt",
"chars": 1934,
"preview": "package ru.otus.pandina.screens.navigation\n\nimport android.view.View\nimport io.github.kakaocup.kakao.image.KImageView\nim"
},
{
"path": "app/src/androidTest/kotlin/ru/otus/pandina/screens/navigation/settings/ActionPanel.kt",
"chars": 687,
"preview": "package ru.otus.pandina.screens.navigation.settings\n\nimport io.github.kakaocup.kakao.common.views.KView\nimport io.github"
},
{
"path": "app/src/androidTest/kotlin/ru/otus/pandina/screens/navigation/settings/SettingsScreen.kt",
"chars": 1407,
"preview": "package ru.otus.pandina.screens.navigation.settings\n\nimport io.github.kakaocup.kakao.screen.Screen\nimport io.github.kaka"
},
{
"path": "app/src/androidTest/kotlin/ru/otus/pandina/screens/navigation/settings/ThemeScreen.kt",
"chars": 1336,
"preview": "package ru.otus.pandina.screens.navigation.settings\n\nimport android.view.View\nimport io.github.kakaocup.kakao.common.vie"
},
{
"path": "app/src/androidTest/kotlin/ru/otus/pandina/screens/navigation/settings/font/FontPreviewScreen.kt",
"chars": 439,
"preview": "package ru.otus.pandina.screens.navigation.settings.font\n\nimport io.github.kakaocup.kakao.screen.Screen\nimport io.github"
},
{
"path": "app/src/androidTest/kotlin/ru/otus/pandina/screens/navigation/settings/font/FontScreen.kt",
"chars": 936,
"preview": "package ru.otus.pandina.screens.navigation.settings.font\n\nimport io.github.kakaocup.kakao.screen.Screen\nimport io.github"
},
{
"path": "app/src/androidTest/kotlin/ru/otus/pandina/screens/navigation/settings/interfaceScreen/CustomizeTabsScreen.kt",
"chars": 569,
"preview": "package ru.otus.pandina.screens.navigation.settings.interfaceScreen\n\nimport io.github.kakaocup.kakao.screen.Screen\nimpor"
},
{
"path": "app/src/androidTest/kotlin/ru/otus/pandina/screens/navigation/settings/interfaceScreen/InterfaceScreen.kt",
"chars": 939,
"preview": "package ru.otus.pandina.screens.navigation.settings.interfaceScreen\n\nimport io.github.kakaocup.kakao.screen.Screen\nimpor"
},
{
"path": "app/src/androidTest/kotlin/ru/otus/pandina/screens/navigation/settings/notification/NotificationScreen.kt",
"chars": 629,
"preview": "package ru.otus.pandina.screens.navigation.settings.notification\n\nimport io.github.kakaocup.kakao.screen.Screen\nimport i"
},
{
"path": "app/src/androidTest/kotlin/ru/otus/pandina/tests/APIKeysTest.kt",
"chars": 3022,
"preview": "package ru.otus.pandina.tests\n\nimport androidx.test.core.app.ActivityScenario\nimport androidx.test.espresso.Espresso.onV"
},
{
"path": "app/src/androidTest/kotlin/ru/otus/pandina/tests/BaseTest.kt",
"chars": 568,
"preview": "package ru.otus.pandina.tests\n\nimport androidx.test.ext.junit.rules.ActivityScenarioRule\nimport com.kaspersky.components"
},
{
"path": "app/src/androidTest/kotlin/ru/otus/pandina/tests/LoginTest.kt",
"chars": 3131,
"preview": "package ru.otus.pandina.tests\n\nimport androidx.test.espresso.web.webdriver.Locator\nimport org.junit.Test\nimport ru.otus."
},
{
"path": "app/src/androidTest/kotlin/ru/otus/pandina/tests/MainTest.kt",
"chars": 3295,
"preview": "package ru.otus.pandina.tests\n\nimport androidx.test.espresso.action.GeneralLocation\nimport org.junit.Test\nimport ru.otus"
},
{
"path": "app/src/androidTest/kotlin/ru/otus/pandina/tests/SettingsTest.kt",
"chars": 8545,
"preview": "package ru.otus.pandina.tests\n\nimport android.graphics.Color\nimport androidx.test.core.app.ActivityScenario\nimport andro"
},
{
"path": "app/src/androidTest/kotlin/ru/otus/pandina/utils/NotificationDialogHelper.kt",
"chars": 1241,
"preview": "package ru.otus.pandina.utils\n\nimport androidx.test.platform.app.InstrumentationRegistry\nimport androidx.test.uiautomato"
},
{
"path": "app/src/debug/res/values/strings.xml",
"chars": 108,
"preview": "<resources>\n <string name=\"application_name\" translatable=\"false\">Continuum (Debug)</string>\n</resources>\n"
},
{
"path": "app/src/main/AndroidManifest.xml",
"chars": 23821,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\"\n xmlns:to"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/APIResult.kt",
"chars": 386,
"preview": "package ml.docilealligator.infinityforreddit\n\nimport androidx.annotation.StringRes\n\nsealed class APIResult<out T> {\n "
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/ActionState.kt",
"chars": 466,
"preview": "package ml.docilealligator.infinityforreddit\n\nimport androidx.annotation.StringRes\n\nsealed interface ActionState {\n o"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/AppComponent.java",
"chars": 15912,
"preview": "package ml.docilealligator.infinityforreddit;\n\nimport android.app.Application;\n\nimport javax.inject.Singleton;\n\nimport d"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/AppModule.java",
"chars": 9109,
"preview": "package ml.docilealligator.infinityforreddit;\n\nimport android.app.Application;\nimport android.content.Context;\nimport an"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/CommentModerationActionHandler.kt",
"chars": 331,
"preview": "package ml.docilealligator.infinityforreddit\n\nimport ml.docilealligator.infinityforreddit.comment.Comment\n\ninterface Com"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/Constants.java",
"chars": 172,
"preview": "package ml.docilealligator.infinityforreddit;\n\npublic class Constants {\n public static final int DEFAULT_TAB_COUNT = "
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/Converters.kt",
"chars": 379,
"preview": "package ml.docilealligator.infinityforreddit\n\nimport androidx.room.TypeConverter\nimport ml.docilealligator.infinityforre"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/CustomFontReceiver.java",
"chars": 215,
"preview": "package ml.docilealligator.infinityforreddit;\n\nimport android.graphics.Typeface;\n\npublic interface CustomFontReceiver {\n"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/DataLoadState.kt",
"chars": 252,
"preview": "package ml.docilealligator.infinityforreddit\n\nsealed class DataLoadState<out T> {\n object Loading: DataLoadState<Noth"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/DownloadProgressResponseBody.java",
"chars": 1788,
"preview": "package ml.docilealligator.infinityforreddit;\n\nimport java.io.IOException;\n\nimport okhttp3.MediaType;\nimport okhttp3.Res"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/FetchPostFilterAndConcatenatedSubredditNames.java",
"chars": 4773,
"preview": "package ml.docilealligator.infinityforreddit;\n\nimport android.os.Handler;\n\nimport java.util.List;\nimport java.util.concu"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/FetchVideoLinkListener.java",
"chars": 800,
"preview": "package ml.docilealligator.infinityforreddit;\n\nimport androidx.annotation.Nullable;\n\nimport ml.docilealligator.infinityf"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/Infinity.java",
"chars": 10709,
"preview": "package ml.docilealligator.infinityforreddit;\n\nimport android.app.Activity;\nimport android.app.Application;\nimport andro"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/NetworkModule.java",
"chars": 10705,
"preview": "package ml.docilealligator.infinityforreddit;\n\nimport android.content.Context;\nimport android.content.SharedPreferences;"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/NetworkState.java",
"chars": 690,
"preview": "package ml.docilealligator.infinityforreddit;\n\npublic class NetworkState {\n public static final NetworkState LOADED;\n"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/PostModerationActionHandler.kt",
"chars": 540,
"preview": "package ml.docilealligator.infinityforreddit\n\nimport ml.docilealligator.infinityforreddit.post.Post\n\ninterface PostModer"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/ProxyEnabledGlideModule.java",
"chars": 2209,
"preview": "package ml.docilealligator.infinityforreddit;\n\nimport android.content.Context;\nimport android.content.SharedPreferences;"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/RecyclerViewContentScrollingInterface.java",
"chars": 165,
"preview": "package ml.docilealligator.infinityforreddit;\n\npublic interface RecyclerViewContentScrollingInterface {\n void content"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/RedditDataRoomDatabase.java",
"chars": 28372,
"preview": "package ml.docilealligator.infinityforreddit;\n\nimport android.content.Context;\nimport android.database.Cursor;\nimport an"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/SaveMemoryCenterInisdeDownsampleStrategy.java",
"chars": 1453,
"preview": "package ml.docilealligator.infinityforreddit;\n\nimport com.bumptech.glide.load.resource.bitmap.DownsampleStrategy;\n\npubli"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/SetAsWallpaperCallback.java",
"chars": 231,
"preview": "package ml.docilealligator.infinityforreddit;\n\npublic interface SetAsWallpaperCallback {\n void setToHomeScreen(int vi"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/SingleLiveEvent.java",
"chars": 1406,
"preview": "package ml.docilealligator.infinityforreddit;\n\nimport android.util.Log;\n\nimport androidx.annotation.MainThread;\nimport a"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/VideoLinkFetcher.java",
"chars": 8580,
"preview": "package ml.docilealligator.infinityforreddit;\n\nimport android.content.SharedPreferences;\nimport android.net.Uri;\nimport "
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/WallpaperSetter.java",
"chars": 1831,
"preview": "package ml.docilealligator.infinityforreddit;\n\nimport android.app.WallpaperManager;\nimport android.content.Context;\nimpo"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/account/Account.java",
"chars": 4106,
"preview": "package ml.docilealligator.infinityforreddit.account;\n\nimport android.os.Parcel;\nimport android.os.Parcelable;\n\nimport a"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/account/AccountDao.java",
"chars": 2821,
"preview": "package ml.docilealligator.infinityforreddit.account;\n\nimport androidx.lifecycle.LiveData;\nimport androidx.room.Dao;\nimp"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/account/AccountDaoKt.kt",
"chars": 439,
"preview": "package ml.docilealligator.infinityforreddit.account\n\nimport androidx.room.Dao\nimport androidx.room.Insert\nimport androi"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/account/AccountRepository.java",
"chars": 1441,
"preview": "package ml.docilealligator.infinityforreddit.account;\n\nimport androidx.lifecycle.LiveData;\n\nimport java.util.List;\nimpor"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/account/AccountViewModel.java",
"chars": 2136,
"preview": "package ml.docilealligator.infinityforreddit.account;\n\nimport androidx.lifecycle.LiveData;\nimport androidx.lifecycle.Vie"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/account/FetchMyInfo.java",
"chars": 3055,
"preview": "package ml.docilealligator.infinityforreddit.account;\n\nimport android.os.Handler;\nimport android.text.Html;\n\nimport andr"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/activities/AccountPostsActivity.java",
"chars": 10040,
"preview": "package ml.docilealligator.infinityforreddit.activities;\n\nimport android.content.SharedPreferences;\nimport android.os.Bu"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/activities/AccountSavedThingActivity.java",
"chars": 13797,
"preview": "package ml.docilealligator.infinityforreddit.activities;\n\nimport android.content.SharedPreferences;\nimport android.os.Bu"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/activities/ActivityToolbarInterface.java",
"chars": 166,
"preview": "package ml.docilealligator.infinityforreddit.activities;\n\npublic interface ActivityToolbarInterface {\n void onLongPre"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/activities/AppBarStateChangeListener.java",
"chars": 1784,
"preview": "package ml.docilealligator.infinityforreddit.activities;\n\nimport com.google.android.material.appbar.AppBarLayout;\n\npubli"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/activities/BaseActivity.java",
"chars": 27992,
"preview": "package ml.docilealligator.infinityforreddit.activities;\n\nimport static androidx.appcompat.app.AppCompatDelegate.MODE_NI"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/activities/CommentActivity.java",
"chars": 34033,
"preview": "package ml.docilealligator.infinityforreddit.activities;\n\nimport android.content.ActivityNotFoundException;\nimport andro"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/activities/CommentFilterPreferenceActivity.java",
"chars": 9587,
"preview": "package ml.docilealligator.infinityforreddit.activities;\n\nimport android.content.Intent;\nimport android.content.SharedPr"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/activities/CommentFilterUsageListingActivity.java",
"chars": 10577,
"preview": "package ml.docilealligator.infinityforreddit.activities;\n\nimport android.content.SharedPreferences;\nimport android.conte"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/activities/CopyMultiRedditActivity.kt",
"chars": 16356,
"preview": "package ml.docilealligator.infinityforreddit.activities\n\nimport android.content.Context\nimport android.content.Intent\nim"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/activities/CreateMultiRedditActivity.java",
"chars": 13081,
"preview": "package ml.docilealligator.infinityforreddit.activities;\n\nimport android.content.Intent;\nimport android.content.SharedPr"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/activities/CustomThemeListingActivity.java",
"chars": 23761,
"preview": "package ml.docilealligator.infinityforreddit.activities;\n\nimport android.content.ClipData;\nimport android.content.Clipbo"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/activities/CustomThemePreviewActivity.java",
"chars": 29614,
"preview": "package ml.docilealligator.infinityforreddit.activities;\n\nimport static androidx.appcompat.app.AppCompatDelegate.MODE_NI"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/activities/CustomizeCommentFilterActivity.java",
"chars": 21296,
"preview": "package ml.docilealligator.infinityforreddit.activities;\n\nimport android.app.Activity;\nimport android.content.Intent;\nim"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/activities/CustomizePostFilterActivity.java",
"chars": 47811,
"preview": "package ml.docilealligator.infinityforreddit.activities;\n\nimport android.app.Activity;\nimport android.content.Intent;\nim"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/activities/CustomizeThemeActivity.java",
"chars": 22465,
"preview": "package ml.docilealligator.infinityforreddit.activities;\n\nimport android.content.Intent;\nimport android.content.SharedPr"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/activities/EditCommentActivity.java",
"chars": 23725,
"preview": "package ml.docilealligator.infinityforreddit.activities;\n\nimport android.content.ActivityNotFoundException;\nimport andro"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/activities/EditMultiRedditActivity.java",
"chars": 14411,
"preview": "package ml.docilealligator.infinityforreddit.activities;\n\nimport android.content.Intent;\nimport android.content.SharedPr"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/activities/EditPostActivity.java",
"chars": 15706,
"preview": "package ml.docilealligator.infinityforreddit.activities;\n\nimport android.content.ActivityNotFoundException;\nimport andro"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/activities/EditProfileActivity.java",
"chars": 19072,
"preview": "package ml.docilealligator.infinityforreddit.activities;\n\nimport android.app.job.JobInfo;\nimport android.app.job.JobSche"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/activities/FilteredPostsActivity.java",
"chars": 24762,
"preview": "package ml.docilealligator.infinityforreddit.activities;\n\nimport android.content.Intent;\nimport android.content.SharedPr"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/activities/FullMarkdownActivity.java",
"chars": 9386,
"preview": "package ml.docilealligator.infinityforreddit.activities;\n\nimport android.app.Activity;\nimport android.content.Intent;\nim"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/activities/HistoryActivity.java",
"chars": 11869,
"preview": "package ml.docilealligator.infinityforreddit.activities;\n\nimport android.content.SharedPreferences;\nimport android.os.Bu"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/activities/InboxActivity.java",
"chars": 20250,
"preview": "package ml.docilealligator.infinityforreddit.activities;\n\nimport android.content.Intent;\nimport android.content.SharedPr"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/activities/LinkResolverActivity.java",
"chars": 28825,
"preview": "package ml.docilealligator.infinityforreddit.activities;\n\nimport android.content.ActivityNotFoundException;\nimport andro"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/activities/LockScreenActivity.java",
"chars": 5025,
"preview": "package ml.docilealligator.infinityforreddit.activities;\n\nimport static androidx.biometric.BiometricManager.Authenticato"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/activities/LoginActivity.java",
"chars": 16577,
"preview": "package ml.docilealligator.infinityforreddit.activities;\n\nimport android.content.Intent;\nimport android.content.SharedPr"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/activities/LoginChromeCustomTabActivity.java",
"chars": 15353,
"preview": "package ml.docilealligator.infinityforreddit.activities;\n\nimport android.content.ActivityNotFoundException;\nimport andro"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/activities/MainActivity.java",
"chars": 114258,
"preview": "package ml.docilealligator.infinityforreddit.activities;\n\nimport static androidx.appcompat.app.AppCompatDelegate.MODE_NI"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/activities/PostFilterPreferenceActivity.java",
"chars": 12771,
"preview": "package ml.docilealligator.infinityforreddit.activities;\n\nimport android.content.Intent;\nimport android.content.SharedPr"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/activities/PostFilterUsageListingActivity.java",
"chars": 15477,
"preview": "package ml.docilealligator.infinityforreddit.activities;\n\nimport android.content.Intent;\nimport android.content.SharedPr"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/activities/PostGalleryActivity.java",
"chars": 39198,
"preview": "package ml.docilealligator.infinityforreddit.activities;\n\nimport android.app.job.JobInfo;\nimport android.app.job.JobSche"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/activities/PostImageActivity.java",
"chars": 39540,
"preview": "package ml.docilealligator.infinityforreddit.activities;\n\nimport android.Manifest;\nimport android.app.job.JobInfo;\nimpor"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/activities/PostLinkActivity.java",
"chars": 35566,
"preview": "package ml.docilealligator.infinityforreddit.activities;\n\nimport android.app.job.JobInfo;\nimport android.app.job.JobSche"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/activities/PostPollActivity.java",
"chars": 44774,
"preview": "package ml.docilealligator.infinityforreddit.activities;\n\nimport android.app.job.JobInfo;\nimport android.app.job.JobSche"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/activities/PostTextActivity.java",
"chars": 37797,
"preview": "package ml.docilealligator.infinityforreddit.activities;\n\nimport android.app.job.JobInfo;\nimport android.app.job.JobSche"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/activities/PostVideoActivity.java",
"chars": 38763,
"preview": "package ml.docilealligator.infinityforreddit.activities;\n\nimport android.app.job.JobInfo;\nimport android.app.job.JobSche"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/activities/QRCodeScannerActivity.java",
"chars": 3972,
"preview": "package ml.docilealligator.infinityforreddit.activities;\n\nimport android.Manifest;\nimport android.content.Intent;\nimport"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/activities/ReportActivity.java",
"chars": 8452,
"preview": "package ml.docilealligator.infinityforreddit.activities;\n\nimport android.content.SharedPreferences;\nimport android.os.Bu"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/activities/RulesActivity.java",
"chars": 9631,
"preview": "package ml.docilealligator.infinityforreddit.activities;\n\nimport android.content.SharedPreferences;\nimport android.os.Bu"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/activities/SearchActivity.java",
"chars": 33543,
"preview": "package ml.docilealligator.infinityforreddit.activities;\n\nimport android.app.Activity;\nimport android.content.Intent;\nim"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/activities/SearchHistoryActivity.java",
"chars": 10259,
"preview": "package ml.docilealligator.infinityforreddit.activities;\n\nimport android.content.Intent;\nimport android.content.SharedPr"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/activities/SearchResultActivity.java",
"chars": 46522,
"preview": "package ml.docilealligator.infinityforreddit.activities;\n\nimport android.content.Intent;\nimport android.content.SharedPr"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/activities/SearchSubredditsResultActivity.java",
"chars": 7522,
"preview": "package ml.docilealligator.infinityforreddit.activities;\n\nimport android.app.Activity;\nimport android.content.Intent;\nim"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/activities/SearchUsersResultActivity.java",
"chars": 7358,
"preview": "package ml.docilealligator.infinityforreddit.activities;\n\nimport android.app.Activity;\nimport android.content.Intent;\nim"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/activities/SelectUserFlairActivity.java",
"chars": 10614,
"preview": "package ml.docilealligator.infinityforreddit.activities;\n\nimport android.content.SharedPreferences;\nimport android.os.Bu"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/activities/SelectedSubredditsAndUsersActivity.java",
"chars": 10767,
"preview": "package ml.docilealligator.infinityforreddit.activities;\n\nimport android.app.Activity;\nimport android.content.Intent;\nim"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/activities/SendPrivateMessageActivity.java",
"chars": 9537,
"preview": "package ml.docilealligator.infinityforreddit.activities;\n\nimport android.content.SharedPreferences;\nimport android.os.Bu"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/activities/SettingsActivity.java",
"chars": 12815,
"preview": "package ml.docilealligator.infinityforreddit.activities;\n\nimport static com.google.android.material.appbar.AppBarLayout."
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/activities/ShareDataResolverActivity.java",
"chars": 3542,
"preview": "package ml.docilealligator.infinityforreddit.activities;\n\nimport android.content.Intent;\nimport android.net.Uri;\nimport "
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/activities/SubmitCrosspostActivity.java",
"chars": 34788,
"preview": "package ml.docilealligator.infinityforreddit.activities;\n\nimport android.app.job.JobInfo;\nimport android.app.job.JobSche"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/activities/SubredditMultiselectionActivity.java",
"chars": 10875,
"preview": "package ml.docilealligator.infinityforreddit.activities;\n\nimport android.content.Intent;\nimport android.content.SharedPr"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/activities/SubscribedThingListingActivity.java",
"chars": 34185,
"preview": "package ml.docilealligator.infinityforreddit.activities;\n\nimport android.content.Context;\nimport android.content.Intent;"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/activities/SuicidePreventionActivity.java",
"chars": 3313,
"preview": "package ml.docilealligator.infinityforreddit.activities;\n\nimport android.content.Intent;\nimport android.content.SharedPr"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/activities/UploadImageEnabledActivity.java",
"chars": 275,
"preview": "package ml.docilealligator.infinityforreddit.activities;\n\nimport ml.docilealligator.infinityforreddit.thing.UploadedImag"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/activities/UserMultiselectionActivity.java",
"chars": 10158,
"preview": "package ml.docilealligator.infinityforreddit.activities;\n\nimport android.content.Intent;\nimport android.content.SharedPr"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewImageOrGifActivity.java",
"chars": 31605,
"preview": "package ml.docilealligator.infinityforreddit.activities;\n\nimport android.Manifest;\nimport android.app.job.JobInfo;\nimpor"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewImgurMediaActivity.java",
"chars": 27701,
"preview": "package ml.docilealligator.infinityforreddit.activities;\n\nimport android.app.job.JobInfo;\nimport android.app.job.JobSche"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewMultiRedditDetailActivity.java",
"chars": 60089,
"preview": "package ml.docilealligator.infinityforreddit.activities;\n\nimport android.content.Intent;\nimport android.content.SharedPr"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewPostDetailActivity.java",
"chars": 47883,
"preview": "package ml.docilealligator.infinityforreddit.activities;\n\nimport static ml.docilealligator.infinityforreddit.activities."
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewPrivateMessagesActivity.java",
"chars": 17088,
"preview": "package ml.docilealligator.infinityforreddit.activities;\n\nimport android.content.Intent;\nimport android.content.SharedPr"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewRedditGalleryActivity.java",
"chars": 18699,
"preview": "package ml.docilealligator.infinityforreddit.activities;\n\nimport static androidx.appcompat.app.AppCompatDelegate.MODE_NI"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewSubredditDetailActivity.java",
"chars": 96351,
"preview": "package ml.docilealligator.infinityforreddit.activities;\n\nimport static android.graphics.BitmapFactory.decodeResource;\n\n"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewUserDetailActivity.java",
"chars": 99054,
"preview": "package ml.docilealligator.infinityforreddit.activities;\n\nimport android.content.Intent;\nimport android.content.SharedPr"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewVideoActivity.java",
"chars": 53332,
"preview": "package ml.docilealligator.infinityforreddit.activities;\n\nimport static androidx.appcompat.app.AppCompatDelegate.MODE_NI"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewVideoActivityBindingAdapter.java",
"chars": 5136,
"preview": "package ml.docilealligator.infinityforreddit.activities;\n\nimport android.widget.ImageButton;\nimport android.widget.TextV"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/activities/WebViewActivity.java",
"chars": 8656,
"preview": "package ml.docilealligator.infinityforreddit.activities;\n\nimport android.content.ActivityNotFoundException;\nimport andro"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/activities/WikiActivity.java",
"chars": 16221,
"preview": "package ml.docilealligator.infinityforreddit.activities;\n\nimport android.content.Intent;\nimport android.content.SharedPr"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/adapters/AccountChooserRecyclerViewAdapter.java",
"chars": 3325,
"preview": "package ml.docilealligator.infinityforreddit.adapters;\n\nimport android.view.LayoutInflater;\nimport android.view.ViewGrou"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/adapters/AcknowledgementRecyclerViewAdapter.java",
"chars": 3010,
"preview": "package ml.docilealligator.infinityforreddit.adapters;\n\nimport android.content.Intent;\nimport android.view.LayoutInflate"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/adapters/CommentFilterUsageEmbeddedRecyclerViewAdapter.java",
"chars": 3104,
"preview": "package ml.docilealligator.infinityforreddit.adapters;\n\nimport android.view.LayoutInflater;\nimport android.view.ViewGrou"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/adapters/CommentFilterUsageRecyclerViewAdapter.java",
"chars": 3155,
"preview": "package ml.docilealligator.infinityforreddit.adapters;\n\nimport android.view.LayoutInflater;\nimport android.view.View;\nim"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/adapters/CommentFilterWithUsageRecyclerViewAdapter.java",
"chars": 3771,
"preview": "package ml.docilealligator.infinityforreddit.adapters;\n\nimport android.view.LayoutInflater;\nimport android.view.ViewGrou"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/adapters/CommentsListingRecyclerViewAdapter.java",
"chars": 47107,
"preview": "package ml.docilealligator.infinityforreddit.adapters;\n\nimport android.content.Intent;\nimport android.content.SharedPref"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/adapters/CommentsRecyclerViewAdapter.java",
"chars": 128835,
"preview": "package ml.docilealligator.infinityforreddit.adapters;\n\nimport android.content.Intent;\nimport android.content.SharedPref"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/adapters/CrashReportsRecyclerViewAdapter.java",
"chars": 1882,
"preview": "package ml.docilealligator.infinityforreddit.adapters;\n\nimport android.view.LayoutInflater;\nimport android.view.View;\nim"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/adapters/CustomThemeListingRecyclerViewAdapter.java",
"chars": 9041,
"preview": "package ml.docilealligator.infinityforreddit.adapters;\n\nimport android.content.Intent;\nimport android.content.res.ColorS"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/adapters/CustomizeThemeRecyclerViewAdapter.java",
"chars": 9483,
"preview": "package ml.docilealligator.infinityforreddit.adapters;\n\nimport android.content.res.ColorStateList;\nimport android.os.Han"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/adapters/FlairBottomSheetRecyclerViewAdapter.java",
"chars": 4544,
"preview": "package ml.docilealligator.infinityforreddit.adapters;\n\nimport android.os.Handler;\nimport android.view.LayoutInflater;\ni"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/adapters/FollowedUsersRecyclerViewAdapter.java",
"chars": 21937,
"preview": "package ml.docilealligator.infinityforreddit.adapters;\n\nimport android.os.Handler;\nimport android.view.LayoutInflater;\ni"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/adapters/MarkdownBottomBarRecyclerViewAdapter.java",
"chars": 18479,
"preview": "package ml.docilealligator.infinityforreddit.adapters;\n\nimport android.app.Activity;\nimport android.view.LayoutInflater;"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/adapters/MessageRecyclerViewAdapter.java",
"chars": 18528,
"preview": "package ml.docilealligator.infinityforreddit.adapters;\n\nimport android.content.Intent;\nimport android.content.res.ColorS"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/adapters/MultiRedditListingRecyclerViewAdapter.java",
"chars": 23054,
"preview": "package ml.docilealligator.infinityforreddit.adapters;\n\nimport android.os.Handler;\nimport android.view.LayoutInflater;\ni"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/adapters/OnlineCustomThemeListingRecyclerViewAdapter.java",
"chars": 6401,
"preview": "package ml.docilealligator.infinityforreddit.adapters;\n\nimport android.content.Intent;\nimport android.content.res.ColorS"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/adapters/Paging3LoadingStateAdapter.java",
"chars": 3526,
"preview": "package ml.docilealligator.infinityforreddit.adapters;\n\nimport android.view.LayoutInflater;\nimport android.view.View;\nim"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/adapters/PostDetailRecyclerViewAdapter.java",
"chars": 156985,
"preview": "package ml.docilealligator.infinityforreddit.adapters;\n\nimport static ml.docilealligator.infinityforreddit.activities.Co"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/adapters/PostFilterUsageRecyclerViewAdapter.java",
"chars": 5493,
"preview": "package ml.docilealligator.infinityforreddit.adapters;\n\nimport android.view.LayoutInflater;\nimport android.view.View;\nim"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/adapters/PostFilterWithUsageRecyclerViewAdapter.java",
"chars": 5274,
"preview": "package ml.docilealligator.infinityforreddit.adapters;\n\nimport android.view.LayoutInflater;\nimport android.view.View;\nim"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/adapters/PostGalleryTypeImageRecyclerViewAdapter.java",
"chars": 10597,
"preview": "package ml.docilealligator.infinityforreddit.adapters;\n\nimport android.graphics.Typeface;\nimport android.graphics.drawab"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/adapters/PostRecyclerViewAdapter.java",
"chars": 286584,
"preview": "package ml.docilealligator.infinityforreddit.adapters;\n\nimport android.app.Dialog;\nimport android.content.Intent;\nimport"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/adapters/PrivateMessagesDetailRecyclerViewAdapter.java",
"chars": 15516,
"preview": "package ml.docilealligator.infinityforreddit.adapters;\n\nimport android.content.ClipData;\nimport android.content.Clipboar"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/adapters/RedditGallerySubmissionRecyclerViewAdapter.java",
"chars": 11174,
"preview": "package ml.docilealligator.infinityforreddit.adapters;\n\nimport android.content.res.ColorStateList;\nimport android.graphi"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/adapters/ReportReasonRecyclerViewAdapter.java",
"chars": 4961,
"preview": "package ml.docilealligator.infinityforreddit.adapters;\n\nimport android.content.res.ColorStateList;\nimport android.view.L"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/adapters/RulesRecyclerViewAdapter.java",
"chars": 9368,
"preview": "package ml.docilealligator.infinityforreddit.adapters;\n\nimport android.content.Intent;\nimport android.net.Uri;\nimport an"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/adapters/SearchActivityRecyclerViewAdapter.java",
"chars": 8038,
"preview": "package ml.docilealligator.infinityforreddit.adapters;\n\nimport android.content.res.ColorStateList;\nimport android.view.L"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/adapters/SelectedSubredditsRecyclerViewAdapter.java",
"chars": 4637,
"preview": "package ml.docilealligator.infinityforreddit.adapters;\n\nimport android.view.LayoutInflater;\nimport android.view.ViewGrou"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/adapters/SettingsSearchAdapter.java",
"chars": 2911,
"preview": "package ml.docilealligator.infinityforreddit.adapters;\n\nimport android.view.LayoutInflater;\nimport android.view.View;\nim"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/adapters/SubredditAutocompleteRecyclerViewAdapter.java",
"chars": 4844,
"preview": "package ml.docilealligator.infinityforreddit.adapters;\n\nimport android.view.LayoutInflater;\nimport android.view.View;\nim"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/adapters/SubredditListingRecyclerViewAdapter.java",
"chars": 15342,
"preview": "package ml.docilealligator.infinityforreddit.adapters;\n\nimport android.content.res.ColorStateList;\nimport android.os.Han"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/adapters/SubredditMultiselectionRecyclerViewAdapter.java",
"chars": 6115,
"preview": "package ml.docilealligator.infinityforreddit.adapters;\n\nimport android.content.res.ColorStateList;\nimport android.view.L"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/adapters/SubscribedSubredditsRecyclerViewAdapter.java",
"chars": 30323,
"preview": "package ml.docilealligator.infinityforreddit.adapters;\n\nimport android.content.Intent;\nimport android.os.Handler;\nimport"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/adapters/TranslationFragmentRecyclerViewAdapter.java",
"chars": 3763,
"preview": "package ml.docilealligator.infinityforreddit.adapters;\n\nimport android.content.Intent;\nimport android.net.Uri;\nimport an"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/adapters/UploadedImagesRecyclerViewAdapter.java",
"chars": 2774,
"preview": "package ml.docilealligator.infinityforreddit.adapters;\n\nimport android.app.Activity;\nimport android.view.LayoutInflater;"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/adapters/UserFlairRecyclerViewAdapter.java",
"chars": 4435,
"preview": "package ml.docilealligator.infinityforreddit.adapters;\n\nimport android.view.LayoutInflater;\nimport android.view.View;\nim"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/adapters/UserListingRecyclerViewAdapter.java",
"chars": 12578,
"preview": "package ml.docilealligator.infinityforreddit.adapters;\n\nimport android.content.res.ColorStateList;\nimport android.view.L"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/adapters/UserMultiselectionRecyclerViewAdapter.java",
"chars": 5775,
"preview": "package ml.docilealligator.infinityforreddit.adapters;\n\nimport android.content.res.ColorStateList;\nimport android.view.L"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/adapters/navigationdrawer/AccountManagementSectionRecyclerViewAdapter.java",
"chars": 7033,
"preview": "package ml.docilealligator.infinityforreddit.adapters.navigationdrawer;\n\nimport android.view.LayoutInflater;\nimport andr"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/adapters/navigationdrawer/AccountSectionRecyclerViewAdapter.java",
"chars": 9444,
"preview": "package ml.docilealligator.infinityforreddit.adapters.navigationdrawer;\n\nimport android.content.Intent;\nimport android.c"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/adapters/navigationdrawer/FavoriteSubscribedSubredditsSectionRecyclerViewAdapter.java",
"chars": 8439,
"preview": "package ml.docilealligator.infinityforreddit.adapters.navigationdrawer;\n\nimport android.content.SharedPreferences;\nimpor"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/adapters/navigationdrawer/HeaderSectionRecyclerViewAdapter.java",
"chars": 12145,
"preview": "package ml.docilealligator.infinityforreddit.adapters.navigationdrawer;\n\nimport static androidx.biometric.BiometricManag"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/adapters/navigationdrawer/NavigationDrawerRecyclerViewMergedAdapter.java",
"chars": 8405,
"preview": "package ml.docilealligator.infinityforreddit.adapters.navigationdrawer;\n\nimport android.content.SharedPreferences;\n\nimpo"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/adapters/navigationdrawer/PostFilterUsageEmbeddedRecyclerViewAdapter.java",
"chars": 5216,
"preview": "package ml.docilealligator.infinityforreddit.adapters.navigationdrawer;\n\nimport android.view.LayoutInflater;\nimport andr"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/adapters/navigationdrawer/PostSectionRecyclerViewAdapter.java",
"chars": 7047,
"preview": "package ml.docilealligator.infinityforreddit.adapters.navigationdrawer;\n\nimport android.content.SharedPreferences;\nimpor"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/adapters/navigationdrawer/PreferenceSectionRecyclerViewAdapter.java",
"chars": 9331,
"preview": "package ml.docilealligator.infinityforreddit.adapters.navigationdrawer;\n\nimport android.content.SharedPreferences;\nimpor"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/adapters/navigationdrawer/RedditSectionRecyclerViewAdapter.java",
"chars": 5971,
"preview": "package ml.docilealligator.infinityforreddit.adapters.navigationdrawer;\n\nimport android.content.SharedPreferences;\nimpor"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/adapters/navigationdrawer/SubscribedSubredditsRecyclerViewAdapter.java",
"chars": 8227,
"preview": "package ml.docilealligator.infinityforreddit.adapters.navigationdrawer;\n\nimport android.content.SharedPreferences;\nimpor"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/apis/DownloadFile.java",
"chars": 310,
"preview": "package ml.docilealligator.infinityforreddit.apis;\n\nimport okhttp3.ResponseBody;\nimport retrofit2.Call;\nimport retrofit2"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/apis/ImgurAPI.java",
"chars": 647,
"preview": "package ml.docilealligator.infinityforreddit.apis;\n\nimport ml.docilealligator.infinityforreddit.utils.APIUtils;\nimport r"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/apis/OhMyDlAPI.kt",
"chars": 469,
"preview": "package ml.docilealligator.infinityforreddit.apis\n\nimport retrofit2.Call\nimport retrofit2.http.Body\nimport retrofit2.htt"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/apis/PushshiftAPI.java",
"chars": 859,
"preview": "package ml.docilealligator.infinityforreddit.apis;\n\nimport retrofit2.Call;\nimport retrofit2.http.GET;\nimport retrofit2.h"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/apis/RedditAPI.java",
"chars": 30567,
"preview": "package ml.docilealligator.infinityforreddit.apis;\n\nimport com.google.common.util.concurrent.ListenableFuture;\n\nimport j"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/apis/RedditAPIKt.kt",
"chars": 693,
"preview": "package ml.docilealligator.infinityforreddit.apis\n\nimport retrofit2.Call\nimport retrofit2.http.FieldMap\nimport retrofit2"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/apis/RedgifsAPI.java",
"chars": 713,
"preview": "package ml.docilealligator.infinityforreddit.apis;\n\nimport java.util.Map;\n\nimport retrofit2.Call;\nimport retrofit2.http."
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/apis/RevedditAPI.java",
"chars": 885,
"preview": "package ml.docilealligator.infinityforreddit.apis;\n\nimport java.util.Map;\n\nimport retrofit2.Call;\nimport retrofit2.http."
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/apis/ServerAPI.java",
"chars": 1360,
"preview": "package ml.docilealligator.infinityforreddit.apis;\n\nimport com.google.common.util.concurrent.ListenableFuture;\n\nimport j"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/apis/StreamableAPI.java",
"chars": 270,
"preview": "package ml.docilealligator.infinityforreddit.apis;\n\nimport retrofit2.Call;\nimport retrofit2.http.GET;\nimport retrofit2.h"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/apis/TitleSuggestion.java",
"chars": 221,
"preview": "package ml.docilealligator.infinityforreddit.apis;\n\nimport retrofit2.Call;\nimport retrofit2.http.GET;\nimport retrofit2.h"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/apis/VReddIt.java",
"chars": 227,
"preview": "package ml.docilealligator.infinityforreddit.apis;\n\nimport retrofit2.Call;\nimport retrofit2.http.GET;\nimport retrofit2.h"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/asynctasks/AccountManagement.java",
"chars": 3246,
"preview": "package ml.docilealligator.infinityforreddit.asynctasks;\n\nimport android.content.SharedPreferences;\nimport android.os.Ha"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/asynctasks/AddSubredditOrUserToMultiReddit.java",
"chars": 1899,
"preview": "package ml.docilealligator.infinityforreddit.asynctasks;\n\nimport androidx.annotation.NonNull;\n\nimport java.util.HashMap;"
},
{
"path": "app/src/main/java/ml/docilealligator/infinityforreddit/asynctasks/BackupSettings.java",
"chars": 15780,
"preview": "package ml.docilealligator.infinityforreddit.asynctasks;\n\nimport android.content.ContentResolver;\nimport android.content"
}
]
// ... and 1234 more files (download for full content)
About this extraction
This page contains the full source code of the cygnusx-1-org/continuum GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 1434 files (9.7 MB), approximately 2.6M tokens, and a symbol index with 6822 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.