diff --git a/WordPress/build.gradle b/WordPress/build.gradle index 412031709c9b..005a3294df1a 100644 --- a/WordPress/build.gradle +++ b/WordPress/build.gradle @@ -366,6 +366,10 @@ dependencies { } } implementation project(":libs:posttypes") + implementation project(":libs:core-ui") + implementation project(":libs:utils") + implementation project(":libs:reader-models") + implementation project(":libs:reader") implementation("$gradle.ext.aboutAutomatticBinaryPath:${libs.versions.automattic.about.get()}") implementation("$gradle.ext.gutenbergKitBinaryPath:${libs.versions.gutenberg.kit.get()}") @@ -452,6 +456,7 @@ dependencies { implementation(libs.wordpress.rs.android) + testImplementation project(":libs:core-test") testImplementation(libs.androidx.arch.core.testing) { exclude group: 'com.android.support', module: 'support-compat' exclude group: 'com.android.support', module: 'support-annotations' diff --git a/WordPress/src/androidTest/java/org/wordpress/android/util/UrlUtilsTest.java b/WordPress/src/androidTest/java/org/wordpress/android/util/UrlUtilsTest.java index dddd3b289f15..aed16246f43d 100644 --- a/WordPress/src/androidTest/java/org/wordpress/android/util/UrlUtilsTest.java +++ b/WordPress/src/androidTest/java/org/wordpress/android/util/UrlUtilsTest.java @@ -2,11 +2,8 @@ import org.junit.Test; -import dagger.hilt.android.testing.HiltAndroidTest; - import static junit.framework.TestCase.assertEquals; -@HiltAndroidTest public class UrlUtilsTest { @Test public void testGetHost1() { diff --git a/WordPress/src/androidTest/java/org/wordpress/android/util/WPUrlUtilsTest.java b/WordPress/src/androidTest/java/org/wordpress/android/util/WPUrlUtilsTest.java index 8813d01b20a7..7860c0af498f 100644 --- a/WordPress/src/androidTest/java/org/wordpress/android/util/WPUrlUtilsTest.java +++ b/WordPress/src/androidTest/java/org/wordpress/android/util/WPUrlUtilsTest.java @@ -7,12 +7,9 @@ import java.net.URISyntaxException; import java.net.URL; -import dagger.hilt.android.testing.HiltAndroidTest; - import static junit.framework.TestCase.assertFalse; import static junit.framework.TestCase.assertTrue; -@HiltAndroidTest public class WPUrlUtilsTest { private static final String WPCOM_ADDRESS_1 = "http://wordpress.com/xmlrpc.php"; private static final String WPCOM_ADDRESS_2 = "http://wordpress.com#.b.com/test"; diff --git a/WordPress/src/main/java/org/wordpress/android/AppInitializer.kt b/WordPress/src/main/java/org/wordpress/android/AppInitializer.kt index 8a4ac58a6908..bf2c43d773c2 100644 --- a/WordPress/src/main/java/org/wordpress/android/AppInitializer.kt +++ b/WordPress/src/main/java/org/wordpress/android/AppInitializer.kt @@ -307,6 +307,7 @@ class AppInitializer @Inject constructor( WordPress.versionName = PackageUtils.getVersionName(application) initWpDb() + ReaderDatabase.init(application) context?.let { enableHttpResponseCache(it) } AppReviewManager.init(application) diff --git a/WordPress/src/main/java/org/wordpress/android/modules/ApplicationModule.java b/WordPress/src/main/java/org/wordpress/android/modules/ApplicationModule.java index befd8f846506..d17c9b0685c7 100644 --- a/WordPress/src/main/java/org/wordpress/android/modules/ApplicationModule.java +++ b/WordPress/src/main/java/org/wordpress/android/modules/ApplicationModule.java @@ -56,7 +56,7 @@ import kotlinx.coroutines.CoroutineScope; import rs.wordpress.api.kotlin.WpLoginClient; -import static org.wordpress.android.modules.ThreadModuleKt.APPLICATION_SCOPE; +import static org.wordpress.android.modules.CoroutineDispatchersKt.APPLICATION_SCOPE; @InstallIn(SingletonComponent.class) @Module(includes = AndroidInjectionModule.class) diff --git a/WordPress/src/main/java/org/wordpress/android/modules/ReaderModule.kt b/WordPress/src/main/java/org/wordpress/android/modules/ReaderModule.kt new file mode 100644 index 000000000000..b25b7bb9b514 --- /dev/null +++ b/WordPress/src/main/java/org/wordpress/android/modules/ReaderModule.kt @@ -0,0 +1,29 @@ +package org.wordpress.android.modules + +import dagger.Binds +import dagger.Module +import dagger.hilt.InstallIn +import dagger.hilt.components.SingletonComponent +import org.wordpress.android.ui.prefs.AppPrefsWrapper +import org.wordpress.android.ui.reader.preferences.ReaderPreferences +import org.wordpress.android.ui.reader.tracker.ReaderTracker +import org.wordpress.android.ui.reader.tracker.ReaderTrackerImpl +import org.wordpress.android.util.NetworkAvailability +import org.wordpress.android.util.NetworkUtilsWrapper + +@InstallIn(SingletonComponent::class) +@Module +interface ReaderModule { + @Binds + fun bindReaderTracker(impl: ReaderTrackerImpl): ReaderTracker + + @Binds + fun bindNetworkAvailability( + impl: NetworkUtilsWrapper + ): NetworkAvailability + + @Binds + fun bindReaderPreferences( + impl: AppPrefsWrapper + ): ReaderPreferences +} diff --git a/WordPress/src/main/java/org/wordpress/android/modules/ThreadModule.kt b/WordPress/src/main/java/org/wordpress/android/modules/ThreadModule.kt index f79a2881c190..42ecf68ddb41 100644 --- a/WordPress/src/main/java/org/wordpress/android/modules/ThreadModule.kt +++ b/WordPress/src/main/java/org/wordpress/android/modules/ThreadModule.kt @@ -10,12 +10,6 @@ import kotlinx.coroutines.Dispatchers import org.wordpress.android.util.helpers.Debouncer import javax.inject.Named -const val APPLICATION_SCOPE = "APPLICATION_SCOPE" - -const val UI_THREAD = "UI_THREAD" -const val BG_THREAD = "BG_THREAD" -const val IO_THREAD = "IO_THREAD" - @InstallIn(SingletonComponent::class) @Module class ThreadModule { diff --git a/WordPress/src/main/java/org/wordpress/android/reader/savedposts/resolver/ReaderSavedPostsHelper.kt b/WordPress/src/main/java/org/wordpress/android/reader/savedposts/resolver/ReaderSavedPostsHelper.kt index f57a6835225b..a5a33f292698 100644 --- a/WordPress/src/main/java/org/wordpress/android/reader/savedposts/resolver/ReaderSavedPostsHelper.kt +++ b/WordPress/src/main/java/org/wordpress/android/reader/savedposts/resolver/ReaderSavedPostsHelper.kt @@ -1,6 +1,6 @@ package org.wordpress.android.reader.savedposts.resolver -import org.wordpress.android.R +import org.wordpress.android.reader.R as ReaderR import org.wordpress.android.datasets.wrappers.ReaderDatabaseWrapper import org.wordpress.android.datasets.wrappers.ReaderPostTableWrapper import org.wordpress.android.datasets.wrappers.ReaderTagTableWrapper @@ -48,8 +48,8 @@ class ReaderSavedPostsHelper @Inject constructor( readerTagTableWrapper.addOrUpdateTag( ReaderTag( "", - contextProvider.getContext().getString(R.string.reader_save_for_later_display_name), - contextProvider.getContext().getString(R.string.reader_save_for_later_title), + contextProvider.getContext().getString(ReaderR.string.reader_save_for_later_display_name), + contextProvider.getContext().getString(ReaderR.string.reader_save_for_later_title), "", BOOKMARKED ) diff --git a/WordPress/src/main/java/org/wordpress/android/ui/bloggingprompts/onboarding/BloggingPromptsOnboardingDialogFragment.kt b/WordPress/src/main/java/org/wordpress/android/ui/bloggingprompts/onboarding/BloggingPromptsOnboardingDialogFragment.kt index 7191a73dfb2c..1bc783875634 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/bloggingprompts/onboarding/BloggingPromptsOnboardingDialogFragment.kt +++ b/WordPress/src/main/java/org/wordpress/android/ui/bloggingprompts/onboarding/BloggingPromptsOnboardingDialogFragment.kt @@ -213,9 +213,9 @@ class BloggingPromptsOnboardingDialogFragment : FeatureIntroductionDialogFragmen textRes = holder.message, duration = Snackbar.LENGTH_LONG ), - holder.buttonTitle?.let { + holder.buttonTitle?.let { buttonTitle -> Action( - textRes = holder.buttonTitle, + textRes = buttonTitle, clickListener = { holder.buttonAction() } ) }, diff --git a/WordPress/src/main/java/org/wordpress/android/ui/comments/unified/UnifiedCommentListFragment.kt b/WordPress/src/main/java/org/wordpress/android/ui/comments/unified/UnifiedCommentListFragment.kt index 83b857631c44..db8c587e06fd 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/comments/unified/UnifiedCommentListFragment.kt +++ b/WordPress/src/main/java/org/wordpress/android/ui/comments/unified/UnifiedCommentListFragment.kt @@ -137,9 +137,9 @@ class UnifiedCommentListFragment : Fragment(R.layout.unified_comment_list_fragme textRes = snackbarMessage.message, duration = Snackbar.LENGTH_LONG ), - snackbarMessage.buttonTitle?.let { + snackbarMessage.buttonTitle?.let { buttonTitle -> Action( - textRes = snackbarMessage.buttonTitle, + textRes = buttonTitle, clickListener = { snackbarMessage.buttonAction() } ) }, diff --git a/WordPress/src/main/java/org/wordpress/android/ui/comments/unified/UnifiedCommentsEditFragment.kt b/WordPress/src/main/java/org/wordpress/android/ui/comments/unified/UnifiedCommentsEditFragment.kt index 6944bda90e1d..0f75e78b0d5d 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/comments/unified/UnifiedCommentsEditFragment.kt +++ b/WordPress/src/main/java/org/wordpress/android/ui/comments/unified/UnifiedCommentsEditFragment.kt @@ -167,9 +167,9 @@ class UnifiedCommentsEditFragment : Fragment(R.layout.unified_comments_edit_frag textRes = holder.message, duration = Snackbar.LENGTH_LONG ), - holder.buttonTitle?.let { + holder.buttonTitle?.let { buttonTitle -> Action( - textRes = holder.buttonTitle, + textRes = buttonTitle, clickListener = { holder.buttonAction() } ) }, diff --git a/WordPress/src/main/java/org/wordpress/android/ui/engagement/EngagedPeopleListFragment.kt b/WordPress/src/main/java/org/wordpress/android/ui/engagement/EngagedPeopleListFragment.kt index 3c5937d693f3..aeed8d698201 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/engagement/EngagedPeopleListFragment.kt +++ b/WordPress/src/main/java/org/wordpress/android/ui/engagement/EngagedPeopleListFragment.kt @@ -257,9 +257,9 @@ class EngagedPeopleListFragment : Fragment() { textRes = holder.message, duration = Snackbar.LENGTH_LONG ), - holder.buttonTitle?.let { + holder.buttonTitle?.let { buttonTitle -> Action( - textRes = holder.buttonTitle, + textRes = buttonTitle, clickListener = { holder.buttonAction() } ) }, diff --git a/WordPress/src/main/java/org/wordpress/android/ui/jetpack/backup/download/BackupDownloadFragment.kt b/WordPress/src/main/java/org/wordpress/android/ui/jetpack/backup/download/BackupDownloadFragment.kt index 3de66a6fbf5b..8cd6e56097c5 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/jetpack/backup/download/BackupDownloadFragment.kt +++ b/WordPress/src/main/java/org/wordpress/android/ui/jetpack/backup/download/BackupDownloadFragment.kt @@ -170,11 +170,12 @@ class BackupDownloadFragment : Fragment(R.layout.jetpack_backup_restore_fragment uiHelpers.getTextOfUiString(requireContext(), this.message), Snackbar.LENGTH_LONG ) - if (this.buttonTitle != null) { + val buttonTitle = this.buttonTitle + if (buttonTitle != null) { snackbar.setAction( uiHelpers.getTextOfUiString( requireContext(), - this.buttonTitle + buttonTitle ) ) { this.buttonAction.invoke() diff --git a/WordPress/src/main/java/org/wordpress/android/ui/jetpack/restore/RestoreFragment.kt b/WordPress/src/main/java/org/wordpress/android/ui/jetpack/restore/RestoreFragment.kt index e96d40655b18..ba26e299a9b1 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/jetpack/restore/RestoreFragment.kt +++ b/WordPress/src/main/java/org/wordpress/android/ui/jetpack/restore/RestoreFragment.kt @@ -146,11 +146,12 @@ class RestoreFragment : Fragment(R.layout.jetpack_backup_restore_fragment) { uiHelpers.getTextOfUiString(requireContext(), this.message), Snackbar.LENGTH_LONG ) - if (this.buttonTitle != null) { + val buttonTitle = this.buttonTitle + if (buttonTitle != null) { snackbar.setAction( uiHelpers.getTextOfUiString( requireContext(), - this.buttonTitle + buttonTitle ) ) { this.buttonAction.invoke() diff --git a/WordPress/src/main/java/org/wordpress/android/ui/media/MediaGridAdapter.java b/WordPress/src/main/java/org/wordpress/android/ui/media/MediaGridAdapter.java index 9411e15d685d..07a28ad3f613 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/media/MediaGridAdapter.java +++ b/WordPress/src/main/java/org/wordpress/android/ui/media/MediaGridAdapter.java @@ -55,7 +55,7 @@ import kotlinx.coroutines.CoroutineScope; -import static org.wordpress.android.modules.ThreadModuleKt.APPLICATION_SCOPE; +import static org.wordpress.android.modules.CoroutineDispatchersKt.APPLICATION_SCOPE; /** * An adapter for the media gallery grid. diff --git a/WordPress/src/main/java/org/wordpress/android/ui/mediapicker/MediaPickerFragment.kt b/WordPress/src/main/java/org/wordpress/android/ui/mediapicker/MediaPickerFragment.kt index 0cc36b81d55d..c34affc21e81 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/mediapicker/MediaPickerFragment.kt +++ b/WordPress/src/main/java/org/wordpress/android/ui/mediapicker/MediaPickerFragment.kt @@ -590,9 +590,9 @@ class MediaPickerFragment : Fragment(), MenuProvider { textRes = holder.message, duration = Snackbar.LENGTH_LONG ), - holder.buttonTitle?.let { + holder.buttonTitle?.let { buttonTitle -> Action( - textRes = holder.buttonTitle, + textRes = buttonTitle, clickListener = { holder.buttonAction() } ) }, diff --git a/WordPress/src/main/java/org/wordpress/android/ui/mlp/ModalLayoutPickerFragment.kt b/WordPress/src/main/java/org/wordpress/android/ui/mlp/ModalLayoutPickerFragment.kt index 0279c6cecbde..407600849f9b 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/mlp/ModalLayoutPickerFragment.kt +++ b/WordPress/src/main/java/org/wordpress/android/ui/mlp/ModalLayoutPickerFragment.kt @@ -26,6 +26,7 @@ import org.wordpress.android.ui.layoutpicker.LayoutPickerViewModel.DesignPreview import org.wordpress.android.ui.layoutpicker.LayoutPickerViewModel.DesignPreviewAction.Show import org.wordpress.android.ui.mlp.BlockLayoutPreviewFragment.Companion.BLOCK_LAYOUT_PREVIEW_TAG import org.wordpress.android.ui.utils.UiHelpers +import org.wordpress.android.ui.utils.fadeInfadeOutViews import org.wordpress.android.util.DisplayUtils import org.wordpress.android.util.extensions.setVisible import org.wordpress.android.viewmodel.mlp.ModalLayoutPickerViewModel diff --git a/WordPress/src/main/java/org/wordpress/android/ui/mysite/MySiteFragment.kt b/WordPress/src/main/java/org/wordpress/android/ui/mysite/MySiteFragment.kt index 70e91a592d3a..22a6d3779b15 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/mysite/MySiteFragment.kt +++ b/WordPress/src/main/java/org/wordpress/android/ui/mysite/MySiteFragment.kt @@ -437,9 +437,9 @@ class MySiteFragment : Fragment(R.layout.my_site_fragment), duration = holder.duration, isImportant = holder.isImportant ), - action = holder.buttonTitle?.let { + action = holder.buttonTitle?.let { buttonTitle -> SnackbarItem.Action( - textRes = holder.buttonTitle, + textRes = buttonTitle, clickListener = { holder.buttonAction() } ) }, diff --git a/WordPress/src/main/java/org/wordpress/android/ui/mysite/menu/MenuActivity.kt b/WordPress/src/main/java/org/wordpress/android/ui/mysite/menu/MenuActivity.kt index 4a2a3631cf1a..d9d21f964582 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/mysite/menu/MenuActivity.kt +++ b/WordPress/src/main/java/org/wordpress/android/ui/mysite/menu/MenuActivity.kt @@ -174,9 +174,9 @@ class MenuActivity : BaseAppCompatActivity() { duration = holder.duration, isImportant = holder.isImportant ), - action = holder.buttonTitle?.let { + action = holder.buttonTitle?.let { buttonTitle -> SnackbarItem.Action( - textRes = holder.buttonTitle, + textRes = buttonTitle, clickListener = { holder.buttonAction() } ) }, diff --git a/WordPress/src/main/java/org/wordpress/android/ui/pages/PagesFragment.kt b/WordPress/src/main/java/org/wordpress/android/ui/pages/PagesFragment.kt index fb1d3a868c42..be5cd97633f7 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/pages/PagesFragment.kt +++ b/WordPress/src/main/java/org/wordpress/android/ui/pages/PagesFragment.kt @@ -448,7 +448,8 @@ class PagesFragment : Fragment(R.layout.pages_fragment), ScrollableViewInitializ ) { val parent = activity.findViewById(R.id.coordinatorLayout) if (holder != null && parent != null) { - if (holder.buttonTitle == null) { + val buttonTitle = holder.buttonTitle + if (buttonTitle == null) { WPSnackbar.make( parent, uiHelpers.getTextOfUiString(requireContext(), holder.message), @@ -463,7 +464,7 @@ class PagesFragment : Fragment(R.layout.pages_fragment), ScrollableViewInitializ snackbar.setAction( uiHelpers.getTextOfUiString( requireContext(), - holder.buttonTitle + buttonTitle ) ) { holder.buttonAction() diff --git a/WordPress/src/main/java/org/wordpress/android/ui/posts/PostListFragment.kt b/WordPress/src/main/java/org/wordpress/android/ui/posts/PostListFragment.kt index 33b83d2e52e4..21508cf15d6a 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/posts/PostListFragment.kt +++ b/WordPress/src/main/java/org/wordpress/android/ui/posts/PostListFragment.kt @@ -12,6 +12,7 @@ import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import org.wordpress.android.R +import org.wordpress.android.reader.R as ReaderR import org.wordpress.android.WordPress import org.wordpress.android.fluxc.model.SiteModel import org.wordpress.android.ui.ActionableEmptyView @@ -122,7 +123,7 @@ class PostListFragment : ViewPagerFragment() { postListViewModelConnector, mainViewModel.authorSelectionUpdated.value!!, photonWidth = displayWidth - contentSpacing * 2, - photonHeight = nonNullActivity.resources.getDimensionPixelSize(R.dimen.reader_featured_image_height) + photonHeight = nonNullActivity.resources.getDimensionPixelSize(ReaderR.dimen.reader_featured_image_height) ) initObservers() diff --git a/WordPress/src/main/java/org/wordpress/android/ui/posts/PostsListActivity.kt b/WordPress/src/main/java/org/wordpress/android/ui/posts/PostsListActivity.kt index a9b528ef0467..d8049be7361c 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/posts/PostsListActivity.kt +++ b/WordPress/src/main/java/org/wordpress/android/ui/posts/PostsListActivity.kt @@ -398,9 +398,9 @@ class PostsListActivity : BaseAppCompatActivity(), textRes = holder.message, duration = Snackbar.LENGTH_LONG ), - holder.buttonTitle?.let { + holder.buttonTitle?.let { buttonTitle -> SnackbarItem.Action( - textRes = holder.buttonTitle, + textRes = buttonTitle, clickListener = { holder.buttonAction() } ) }, diff --git a/WordPress/src/main/java/org/wordpress/android/ui/prefs/AppPrefsWrapper.kt b/WordPress/src/main/java/org/wordpress/android/ui/prefs/AppPrefsWrapper.kt index 69e5a3e361ae..5b4d1839e26f 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/prefs/AppPrefsWrapper.kt +++ b/WordPress/src/main/java/org/wordpress/android/ui/prefs/AppPrefsWrapper.kt @@ -8,6 +8,7 @@ import org.wordpress.android.ui.jetpackoverlay.JetpackFeatureRemovalPhase import org.wordpress.android.ui.posts.AuthorFilterSelection import org.wordpress.android.ui.prefs.AppPrefs.PrefKey import org.wordpress.android.ui.prefs.AppPrefs.getBoolean +import org.wordpress.android.ui.reader.preferences.ReaderPreferences import org.wordpress.android.ui.reader.tracker.ReaderTab import org.wordpress.android.ui.stats.refresh.lists.widget.configuration.StatsColorSelectionViewModel.Color import org.wordpress.android.ui.stats.refresh.lists.widget.configuration.StatsColorSelectionViewModel.Color.DARK @@ -31,7 +32,9 @@ import javax.inject.Singleton * */ @Singleton -class AppPrefsWrapper @Inject constructor(val buildConfigWrapper: BuildConfigWrapper) { +class AppPrefsWrapper @Inject constructor( + val buildConfigWrapper: BuildConfigWrapper +) : ReaderPreferences { var featureAnnouncementShownVersion: Int get() = AppPrefs.getFeatureAnnouncementShownVersion() set(version) = AppPrefs.setFeatureAnnouncementShownVersion(version) @@ -56,23 +59,23 @@ class AppPrefsWrapper @Inject constructor(val buildConfigWrapper: BuildConfigWra get() = AppPrefs.getSystemNotificationsEnabled() set(value) = AppPrefs.setSystemNotificationsEnabled(value) - var readerTagsUpdatedTimestamp: Long + override var readerTagsUpdatedTimestamp: Long get() = AppPrefs.getReaderTagsUpdatedTimestamp() set(timestamp) = AppPrefs.setReaderTagsUpdatedTimestamp(timestamp) - var readerAnalyticsCountTagsTimestamp: Long + override var readerAnalyticsCountTagsTimestamp: Long get() = AppPrefs.getReaderAnalyticsCountTagsTimestamp() set(timestamp) = AppPrefs.setReaderAnalyticsCountTagsTimestamp(timestamp) - var readerCssUpdatedTimestamp: Long + override var readerCssUpdatedTimestamp: Long get() = AppPrefs.getReaderCssUpdatedTimestamp() set(timestamp) = AppPrefs.setReaderCssUpdatedTimestamp(timestamp) - var readerCardsPageHandle: String? + override var readerCardsPageHandle: String? get() = AppPrefs.getReaderCardsPageHandle() set(pageHandle) = AppPrefs.setReaderCardsPageHandle(pageHandle) - var readerTopBarSelectedFeedItemId: String? + override var readerTopBarSelectedFeedItemId: String? get() = AppPrefs.getReaderTopBarSelectedFeedItemId() set(selectedFeedItemId) = AppPrefs.setReaderTopBarSelectedFeedItemId(selectedFeedItemId) @@ -91,7 +94,7 @@ class AppPrefsWrapper @Inject constructor(val buildConfigWrapper: BuildConfigWra get() = AppPrefs.getNotificationsPermissionsWarningDismissed() set(dismissed) = AppPrefs.setNotificationsPermissionWarningDismissed(dismissed) - var readerReadingPreferencesJson: String? + override var readerReadingPreferencesJson: String? get() = AppPrefs.getReaderReadingPreferencesJson() set(json) = AppPrefs.setReaderReadingPreferencesJson(json) @@ -119,8 +122,8 @@ class AppPrefsWrapper @Inject constructor(val buildConfigWrapper: BuildConfigWra fun setAppWidgetSiteId(siteId: Long, appWidgetId: Int) = AppPrefs.setStatsWidgetSelectedSiteId(siteId, appWidgetId) fun removeAppWidgetSiteId(appWidgetId: Int) = AppPrefs.removeStatsWidgetSelectedSiteId(appWidgetId) fun isGutenbergEditorEnabled() = AppPrefs.isGutenbergEditorEnabled() - fun getReaderCardsRefreshCounter() = AppPrefs.getReaderCardsRefreshCounter() - fun incrementReaderCardsRefreshCounter() = AppPrefs.incrementReaderCardsRefreshCounter() + override fun getReaderCardsRefreshCounter() = AppPrefs.getReaderCardsRefreshCounter() + override fun incrementReaderCardsRefreshCounter() = AppPrefs.incrementReaderCardsRefreshCounter() fun getAppWidgetColor(appWidgetId: Int): Color? { return when (AppPrefs.getStatsWidgetColorModeId(appWidgetId)) { @@ -175,23 +178,31 @@ class AppPrefsWrapper @Inject constructor(val buildConfigWrapper: BuildConfigWra fun isMainFabTooltipDisabled() = AppPrefs.isMainFabTooltipDisabled() fun setMainFabTooltipDisabled(disable: Boolean) = AppPrefs.setMainFabTooltipDisabled(disable) - fun getLastReaderKnownAccessTokenStatus() = AppPrefs.getLastReaderKnownAccessTokenStatus() - fun setLastReaderKnownAccessTokenStatus(lastKnownAccessTokenStatus: Boolean) = - AppPrefs.setLastReaderKnownAccessTokenStatus(lastKnownAccessTokenStatus) + override fun getLastReaderKnownAccessTokenStatus() = + AppPrefs.getLastReaderKnownAccessTokenStatus() + override fun setLastReaderKnownAccessTokenStatus( + lastKnownAccessTokenStatus: Boolean + ) = AppPrefs.setLastReaderKnownAccessTokenStatus(lastKnownAccessTokenStatus) - fun getLastReaderKnownUserId() = AppPrefs.getLastReaderKnownUserId() - fun setLastReaderKnownUserId(userId: Long) = AppPrefs.setLastReaderKnownUserId(userId) + override fun getLastReaderKnownUserId() = AppPrefs.getLastReaderKnownUserId() + override fun setLastReaderKnownUserId(userId: Long) = + AppPrefs.setLastReaderKnownUserId(userId) fun getLastAppVersionCode() = AppPrefs.getLastAppVersionCode() - fun setReaderTag(selectedTag: ReaderTag?) = AppPrefs.setReaderTag(selectedTag) - fun getReaderTag(): ReaderTag? = AppPrefs.getReaderTag() + override fun setReaderTag(selectedTag: ReaderTag?) = + AppPrefs.setReaderTag(selectedTag) + override fun getReaderTag(): ReaderTag? = AppPrefs.getReaderTag() - fun setReaderActiveTab(selectedTab: ReaderTab?) = AppPrefs.setReaderActiveTab(selectedTab) - fun getReaderActiveTab(): ReaderTab? = AppPrefs.getReaderActiveTab() + override fun setReaderActiveTab(selectedTab: ReaderTab?) = + AppPrefs.setReaderActiveTab(selectedTab) + override fun getReaderActiveTab(): ReaderTab? = + AppPrefs.getReaderActiveTab() - fun shouldShowBookmarksSavedLocallyDialog(): Boolean = AppPrefs.shouldShowBookmarksSavedLocallyDialog() - fun setBookmarksSavedLocallyDialogShown() = AppPrefs.setBookmarksSavedLocallyDialogShown() + override fun shouldShowBookmarksSavedLocallyDialog(): Boolean = + AppPrefs.shouldShowBookmarksSavedLocallyDialog() + override fun setBookmarksSavedLocallyDialogShown() = + AppPrefs.setBookmarksSavedLocallyDialogShown() fun isPostListFabTooltipDisabled() = AppPrefs.isPostListFabTooltipDisabled() fun setPostListFabTooltipDisabled(disable: Boolean) = AppPrefs.setPostListFabTooltipDisabled(disable) @@ -456,14 +467,19 @@ class AppPrefsWrapper @Inject constructor(val buildConfigWrapper: BuildConfigWra fun getShouldHideDynamicCard(id: String): Boolean = AppPrefs.getShouldHideDynamicCard(id) - fun shouldUpdateBookmarkPostsPseudoIds(tag: ReaderTag?): Boolean = AppPrefs.shouldUpdateBookmarkPostsPseudoIds(tag) + override fun shouldUpdateBookmarkPostsPseudoIds( + tag: ReaderTag? + ): Boolean = AppPrefs.shouldUpdateBookmarkPostsPseudoIds(tag) - fun setBookmarkPostsPseudoIdsUpdated() = AppPrefs.setBookmarkPostsPseudoIdsUpdated() + override fun setBookmarkPostsPseudoIdsUpdated() = + AppPrefs.setBookmarkPostsPseudoIdsUpdated() - fun shouldShowReaderAnnouncementCard(): Boolean = AppPrefs.getShouldShowReaderAnnouncementCard() + override fun shouldShowReaderAnnouncementCard(): Boolean = + AppPrefs.getShouldShowReaderAnnouncementCard() - fun setShouldShowReaderAnnouncementCard(shouldShow: Boolean) = - AppPrefs.setShouldShowReaderAnnouncementCard(shouldShow) + override fun setShouldShowReaderAnnouncementCard( + shouldShow: Boolean + ) = AppPrefs.setShouldShowReaderAnnouncementCard(shouldShow) fun getAllPrefs(): Map = AppPrefs.getAllPrefs() diff --git a/WordPress/src/main/java/org/wordpress/android/ui/prefs/DetailListPreference.java b/WordPress/src/main/java/org/wordpress/android/ui/prefs/DetailListPreference.java index 7bad8bfd62e5..c24666b09666 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/prefs/DetailListPreference.java +++ b/WordPress/src/main/java/org/wordpress/android/ui/prefs/DetailListPreference.java @@ -23,7 +23,7 @@ import com.google.android.material.dialog.MaterialAlertDialogBuilder; import org.wordpress.android.R; -import org.wordpress.android.ui.utils.UiHelpers; +import org.wordpress.android.ui.utils.UiHelpersExtKt; import org.wordpress.android.util.ArrayUtils; import java.util.ArrayList; @@ -141,7 +141,7 @@ protected void showDialog(Bundle state) { listView.setPadding(0, 0, 0, res.getDimensionPixelSize(R.dimen.site_settings_divider_height)); } - UiHelpers.Companion.adjustDialogSize(mDialog); + UiHelpersExtKt.adjustDialogSize(mDialog); } @Override diff --git a/WordPress/src/main/java/org/wordpress/android/ui/prefs/SiteSettingsFormatDialog.java b/WordPress/src/main/java/org/wordpress/android/ui/prefs/SiteSettingsFormatDialog.java index bb3a9526a959..c0ec4e88461a 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/prefs/SiteSettingsFormatDialog.java +++ b/WordPress/src/main/java/org/wordpress/android/ui/prefs/SiteSettingsFormatDialog.java @@ -24,7 +24,7 @@ import org.wordpress.android.Constants; import org.wordpress.android.R; import org.wordpress.android.ui.ActivityLauncher; -import org.wordpress.android.ui.utils.UiHelpers; +import org.wordpress.android.ui.utils.UiHelpersExtKt; import org.wordpress.android.util.EditTextUtils; /** @@ -178,7 +178,7 @@ private String getSelectedFormatValue() { @Override public void onResume() { super.onResume(); - UiHelpers.Companion.adjustDialogSize(getDialog()); + UiHelpersExtKt.adjustDialogSize(getDialog()); } @Override diff --git a/WordPress/src/main/java/org/wordpress/android/ui/prefs/accountsettings/AccountSettingsFragment.kt b/WordPress/src/main/java/org/wordpress/android/ui/prefs/accountsettings/AccountSettingsFragment.kt index 59f72e71055f..8e7037646d0e 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/prefs/accountsettings/AccountSettingsFragment.kt +++ b/WordPress/src/main/java/org/wordpress/android/ui/prefs/accountsettings/AccountSettingsFragment.kt @@ -311,9 +311,9 @@ class AccountSettingsFragment : PreferenceFragmentLifeCycleOwner(), uiHelpers.getTextOfUiString(context, snackBarMessage.message), BaseTransientBottomBar.LENGTH_INDEFINITE ) - snackBarMessage.buttonTitle?.let { + snackBarMessage.buttonTitle?.let { buttonTitle -> emailSnackbar?.setAction( - uiHelpers.getTextOfUiString(context, snackBarMessage.buttonTitle) + uiHelpers.getTextOfUiString(context, buttonTitle) ) { snackBarMessage.buttonAction } } val textView = emailSnackbar?.view diff --git a/WordPress/src/main/java/org/wordpress/android/ui/reader/ReaderBlogFragment.java b/WordPress/src/main/java/org/wordpress/android/ui/reader/ReaderBlogFragment.java index 33ea702b6a9c..dbb3da4e944c 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/reader/ReaderBlogFragment.java +++ b/WordPress/src/main/java/org/wordpress/android/ui/reader/ReaderBlogFragment.java @@ -92,7 +92,9 @@ private void checkEmptyView() { if (hasBlogAdapter() && getBlogAdapter().isEmpty()) { actionableEmptyView.setVisibility(View.VISIBLE); - actionableEmptyView.subtitle.setText(R.string.reader_no_followed_blogs_description_subs); + actionableEmptyView.subtitle.setText( + org.wordpress.android.reader.R.string + .reader_no_followed_blogs_description_subs); actionableEmptyView.image.setVisibility(View.GONE); actionableEmptyView.button.setVisibility(View.GONE); @@ -100,11 +102,15 @@ private void checkEmptyView() { case FOLLOWED: if (getBlogAdapter().hasSearchFilter()) { actionableEmptyView.updateLayoutForSearch(true, 0); - actionableEmptyView.title.setText(R.string.reader_no_followed_blogs_search_title); + actionableEmptyView.title.setText( + org.wordpress.android.reader.R.string + .reader_no_followed_blogs_search_title); actionableEmptyView.subtitle.setVisibility(View.GONE); } else { actionableEmptyView.updateLayoutForSearch(false, 0); - actionableEmptyView.title.setText(R.string.reader_no_followed_blogs_title); + actionableEmptyView.title.setText( + org.wordpress.android.reader.R.string + .reader_no_followed_blogs_title); actionableEmptyView.subtitle.setVisibility(View.VISIBLE); } break; @@ -158,7 +164,8 @@ public void onCreateOptionsMenu(@NonNull Menu menu, @NonNull MenuInflater inflat MenuItem searchMenu = menu.findItem(R.id.menu_search); SearchView searchView = (SearchView) searchMenu.getActionView(); searchView.setMaxWidth(Integer.MAX_VALUE); - searchView.setQueryHint(getString(R.string.reader_hint_search_subscribed_blogs)); + searchView.setQueryHint(getString( + org.wordpress.android.reader.R.string.reader_hint_search_subscribed_blogs)); searchMenu.setOnActionExpandListener(new MenuItem.OnActionExpandListener() { @Override diff --git a/WordPress/src/main/java/org/wordpress/android/ui/reader/ReaderCommentListActivity.kt b/WordPress/src/main/java/org/wordpress/android/ui/reader/ReaderCommentListActivity.kt index b6a49042e732..9660d899ba0c 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/reader/ReaderCommentListActivity.kt +++ b/WordPress/src/main/java/org/wordpress/android/ui/reader/ReaderCommentListActivity.kt @@ -28,6 +28,7 @@ import org.greenrobot.eventbus.EventBus import org.greenrobot.eventbus.Subscribe import org.greenrobot.eventbus.ThreadMode import org.wordpress.android.R +import org.wordpress.android.reader.R as ReaderR import org.wordpress.android.analytics.AnalyticsTracker import org.wordpress.android.databinding.ReaderActivityCommentListBinding import org.wordpress.android.databinding.ReaderIncludeCommentBoxBinding @@ -175,7 +176,7 @@ class ReaderCommentListActivity : BaseAppCompatActivity(), } if (!loadPost()) { - ToastUtils.showToast(this, R.string.reader_toast_err_get_post) + ToastUtils.showToast(this, ReaderR.string.reader_toast_err_get_post) finish() return } @@ -373,13 +374,11 @@ class ReaderCommentListActivity : BaseAppCompatActivity(), Snackbar.LENGTH_LONG ) .setAction( - if (buttonTitle != null) { + buttonTitle?.let { uiHelpers.getTextOfUiString( this@ReaderCommentListActivity, - buttonTitle + it ) - } else { - null } ) { buttonAction.invoke() } .show() @@ -510,9 +509,10 @@ class ReaderCommentListActivity : BaseAppCompatActivity(), val followText = followItem.actionView!!.findViewById(R.id.follow_button) + val onFollow = uiState.onFollowTapped followItem.actionView!!.setOnClickListener( - if (uiState.onFollowTapped != null) - View.OnClickListener { uiState.onFollowTapped.invoke() } + if (onFollow != null) + View.OnClickListener { onFollow.invoke() } else null ) @@ -891,7 +891,7 @@ class ReaderCommentListActivity : BaseAppCompatActivity(), if (!accountStore.hasAccessToken()) { make( binding.coordinatorLayout, - R.string.reader_snackbar_err_cannot_like_post_logged_out, + ReaderR.string.reader_snackbar_err_cannot_like_post_logged_out, Snackbar.LENGTH_INDEFINITE ) .setAction(R.string.sign_in, mSignInClickListener) @@ -905,12 +905,12 @@ class ReaderCommentListActivity : BaseAppCompatActivity(), if (comment == null) { ToastUtils.showToast( this@ReaderCommentListActivity, - R.string.reader_toast_err_comment_not_found + ReaderR.string.reader_toast_err_comment_not_found ) } else if (comment.isLikedByCurrentUser) { ToastUtils.showToast( this@ReaderCommentListActivity, - R.string.reader_toast_err_already_liked + ReaderR.string.reader_toast_err_already_liked ) } else { likeComment(comment) @@ -952,7 +952,7 @@ class ReaderCommentListActivity : BaseAppCompatActivity(), } else { ToastUtils.showToast( this@ReaderCommentListActivity, - R.string.reader_toast_err_generic + ReaderR.string.reader_toast_err_generic ) } } @@ -1025,7 +1025,7 @@ class ReaderCommentListActivity : BaseAppCompatActivity(), binding.textEmpty.setText(R.string.no_network_message) binding.textEmpty.visibility = View.VISIBLE } else if (isEmpty && hasUpdatedComments) { - binding.textEmpty.setText(R.string.reader_empty_comments) + binding.textEmpty.setText(ReaderR.string.reader_empty_comments) binding.textEmpty.visibility = View.VISIBLE } else { binding.textEmpty.visibility = View.GONE @@ -1142,7 +1142,7 @@ class ReaderCommentListActivity : BaseAppCompatActivity(), getCommentAdapter().removeComment(fakeCommentId) ToastUtils.showToast( this, - R.string.reader_toast_err_comment_failed, + ReaderR.string.reader_toast_err_comment_failed, ToastUtils.Duration.LONG ) } diff --git a/WordPress/src/main/java/org/wordpress/android/ui/reader/ReaderFollowCommentsHandler.kt b/WordPress/src/main/java/org/wordpress/android/ui/reader/ReaderFollowCommentsHandler.kt index 6d61a84a4ef6..13f50bc1841b 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/reader/ReaderFollowCommentsHandler.kt +++ b/WordPress/src/main/java/org/wordpress/android/ui/reader/ReaderFollowCommentsHandler.kt @@ -5,6 +5,7 @@ import androidx.lifecycle.MediatorLiveData import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.flow.flowOn import org.wordpress.android.R +import org.wordpress.android.reader.R as ReaderR import org.wordpress.android.modules.BG_THREAD import org.wordpress.android.ui.pages.SnackbarMessageHolder import org.wordpress.android.ui.reader.comments.ThreadedCommentsActionSource @@ -75,7 +76,7 @@ class ReaderFollowCommentsHandler @Inject constructor( if (state.isReceivingNotifications) { UiStringRes(R.string.undo) } else { - UiStringRes(R.string.reader_followed_blog_notifications_action) + UiStringRes(ReaderR.string.reader_followed_blog_notifications_action) } }, buttonAction = onSuccessSnackbarAction ?: {} diff --git a/WordPress/src/main/java/org/wordpress/android/ui/reader/ReaderLoginRequiredBottomSheetFragment.kt b/WordPress/src/main/java/org/wordpress/android/ui/reader/ReaderLoginRequiredBottomSheetFragment.kt index d46897884754..187441b5f945 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/reader/ReaderLoginRequiredBottomSheetFragment.kt +++ b/WordPress/src/main/java/org/wordpress/android/ui/reader/ReaderLoginRequiredBottomSheetFragment.kt @@ -9,6 +9,7 @@ import android.widget.LinearLayout import androidx.recyclerview.widget.RecyclerView import com.google.android.material.bottomsheet.BottomSheetDialogFragment import org.wordpress.android.R +import org.wordpress.android.reader.R as ReaderR import org.wordpress.android.ui.ActivityLauncher import org.wordpress.android.widgets.WPTextView @@ -52,13 +53,13 @@ class ReaderLoginRequiredBottomSheetFragment : BottomSheetDialogFragment() { // Set the text for logged-out users view.findViewById(R.id.text).setText( - R.string.reader_filter_self_hosted_empty_blogs_list + ReaderR.string.reader_filter_self_hosted_empty_blogs_list ) // Configure primary button for login val primaryButton = view.findViewById