Skip to content

Commit 731ee6a

Browse files
authored
Merge pull request #17291 from wordpress-mobile/analysis/wordpress-main-type-cast-when-warnings
[Compile Warnings As Errors] WordPress Module - Resolve Type/Cast/When Warnings
2 parents 971c18d + f15bfc9 commit 731ee6a

57 files changed

Lines changed: 361 additions & 464 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 1 addition & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,11 @@
11
package org.wordpress.android
22

3-
import android.app.Activity
4-
import android.app.Application
5-
import android.text.TextUtils
63
import androidx.multidex.MultiDexApplication
74
import com.android.volley.RequestQueue
85
import dagger.hilt.EntryPoints
96
import org.wordpress.android.AppInitializer.StoryNotificationTrackerProvider
107
import org.wordpress.android.fluxc.tools.FluxCImageLoader
118
import org.wordpress.android.modules.AppComponent
12-
import org.wordpress.android.util.AppLog
13-
import org.wordpress.android.util.AppLog.T.NUX
149

1510
/**
1611
* An abstract class to be extended by {@link WordPressApp} for real application and WordPressTest for UI test
@@ -28,6 +23,7 @@ abstract class WordPress : MultiDexApplication() {
2823
initializer().wordPressComSignOut()
2924
}
3025

26+
@Suppress("TooManyFunctions")
3127
companion object {
3228
const val SITE = "SITE"
3329
const val LOCAL_SITE_ID = "LOCAL_SITE_ID"
@@ -79,57 +75,5 @@ abstract class WordPress : MultiDexApplication() {
7975

8076
@JvmStatic
8177
fun getUserAgent() = AppInitializer.userAgent
82-
83-
/**
84-
* Gets a field from the project's BuildConfig using reflection. This is useful when flavors are used at the
85-
* project level to set custom fields.
86-
* based on: https://code.google.com/p/android/issues/detail?id=52962#c38
87-
*
88-
* @param application Used to find the correct file
89-
* @param fieldName The name of the field-to-access
90-
* @return The value of the field, or `null` if the field is not found.
91-
*/
92-
@Suppress("TooGenericExceptionCaught", "SwallowedException")
93-
fun getBuildConfigValue(application: Application, fieldName: String?): Any? {
94-
return try {
95-
val packageName = application.javaClass.getPackage().name
96-
val clazz = Class.forName("$packageName.BuildConfig")
97-
val field = clazz.getField(fieldName)
98-
field[null]
99-
} catch (e: LinkageError) {
100-
null
101-
} catch (e: ExceptionInInitializerError) {
102-
null
103-
} catch (e: ClassNotFoundException) {
104-
null
105-
} catch (e: NoSuchFieldException) {
106-
null
107-
} catch (e: NullPointerException) {
108-
null
109-
}
110-
}
111-
112-
/**
113-
* Gets a field from the project's BuildConfig using reflection. This is useful when flavors are used at the
114-
* project level to set custom fields.
115-
* based on: https://code.google.com/p/android/issues/detail?id=52962#c38
116-
*
117-
* @param activity Used to get the Application instance
118-
* @param configValueName The name of the field-to-access
119-
* @return The string value of the field, or empty string if the field is not found.
120-
*/
121-
fun getBuildConfigString(activity: Activity, configValueName: String): String? {
122-
return if (!BuildConfig.DEBUG) {
123-
""
124-
} else {
125-
val value = getBuildConfigValue(activity.application, configValueName) as String?
126-
if (!TextUtils.isEmpty(value)) {
127-
AppLog.d(NUX, "Auto-filled from build config: $configValueName")
128-
value
129-
} else {
130-
""
131-
}
132-
}
133-
}
13478
}
13579
}

WordPress/src/main/java/org/wordpress/android/models/InvitePeopleUtils.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ class InvitePeopleUtils @Inject constructor(
8181
expiryDate = formatter.format(dateTimeUtilsWrapper.dateFromTimestamp(linksData.expiry))
8282
)
8383
}
84-
} ?: listOf()
84+
}
8585
}
8686

8787
fun getInviteLinksRoleDisplayNames(

WordPress/src/main/java/org/wordpress/android/models/usecases/BatchModerateCommentsUseCase.kt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,16 +35,16 @@ class BatchModerateCommentsUseCase @Inject constructor(
3535
CommentError> {
3636
object Idle : ModerateCommentsState() {
3737
override suspend fun runAction(
38-
resourceProvider: ModerateCommentsResourceProvider,
38+
utilsProvider: ModerateCommentsResourceProvider,
3939
action: ModerateCommentsAction,
4040
flowChannel: MutableSharedFlow<UseCaseResult<CommentsUseCaseType, CommentError, DoNotCare>>
4141
): StateInterface<ModerateCommentsResourceProvider, ModerateCommentsAction, DoNotCare, CommentsUseCaseType,
4242
CommentError> {
43-
val commentsStore = resourceProvider.commentsStore
43+
val commentsStore = utilsProvider.commentsStore
4444
return when (action) {
4545
is OnModerateComments -> {
4646
val parameters = action.parameters
47-
withContext(resourceProvider.bgDispatcher) {
47+
withContext(utilsProvider.bgDispatcher) {
4848
val deferredList = parameters.remoteCommentIds.map {
4949
async {
5050
val commentBeforeModeration = commentsStore.getCommentByLocalSiteAndRemoteId(
@@ -66,7 +66,7 @@ class BatchModerateCommentsUseCase @Inject constructor(
6666
if (localModerationResult.isError) {
6767
return@async localModerationResult
6868
} else {
69-
resourceProvider.localCommentCacheUpdateHandler.requestCommentsUpdate()
69+
utilsProvider.localCommentCacheUpdateHandler.requestCommentsUpdate()
7070
}
7171

7272
val result = if (parameters.newStatus == DELETED) {
@@ -89,7 +89,7 @@ class BatchModerateCommentsUseCase @Inject constructor(
8989
remoteCommentId = it,
9090
newStatus = CommentStatus.fromString(commentBeforeModeration.status)
9191
)
92-
resourceProvider.localCommentCacheUpdateHandler.requestCommentsUpdate()
92+
utilsProvider.localCommentCacheUpdateHandler.requestCommentsUpdate()
9393
}
9494
return@async result
9595
}

WordPress/src/main/java/org/wordpress/android/models/usecases/ModerateCommentWithUndoUseCase.kt

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -34,12 +34,12 @@ class ModerateCommentWithUndoUseCase @Inject constructor(
3434
CommentError> {
3535
object Idle : ModerateCommentsState() {
3636
override suspend fun runAction(
37-
resourceProvider: ModerateCommentsResourceProvider,
37+
utilsProvider: ModerateCommentsResourceProvider,
3838
action: ModerateCommentsAction,
3939
flowChannel: MutableSharedFlow<UseCaseResult<CommentsUseCaseType, CommentError, Any>>
4040
): StateInterface<ModerateCommentsResourceProvider, ModerateCommentsAction, Any, CommentsUseCaseType,
4141
CommentError> {
42-
val commentsStore = resourceProvider.commentsStore
42+
val commentsStore = utilsProvider.commentsStore
4343
return when (action) {
4444
is OnModerateComment -> {
4545
val parameters = action.parameters
@@ -78,7 +78,7 @@ class ModerateCommentWithUndoUseCase @Inject constructor(
7878
)
7979
)
8080
)
81-
resourceProvider.localCommentCacheUpdateHandler.requestCommentsUpdate()
81+
utilsProvider.localCommentCacheUpdateHandler.requestCommentsUpdate()
8282
}
8383
Idle
8484
}
@@ -92,7 +92,7 @@ class ModerateCommentWithUndoUseCase @Inject constructor(
9292
remoteCommentId = parameters.remoteCommentId,
9393
newStatus = parameters.newStatus
9494
)
95-
resourceProvider.localCommentCacheUpdateHandler.requestCommentsUpdate()
95+
utilsProvider.localCommentCacheUpdateHandler.requestCommentsUpdate()
9696

9797
val result = if (parameters.newStatus == DELETED) {
9898
commentsStore.deleteComment(
@@ -118,7 +118,7 @@ class ModerateCommentWithUndoUseCase @Inject constructor(
118118
} else {
119119
flowChannel.emit(Success(MODERATE_USE_CASE, DoNotCare))
120120
}
121-
resourceProvider.localCommentCacheUpdateHandler.requestCommentsUpdate()
121+
utilsProvider.localCommentCacheUpdateHandler.requestCommentsUpdate()
122122
Idle
123123
}
124124
is OnUndoModerateComment -> {
@@ -129,7 +129,7 @@ class ModerateCommentWithUndoUseCase @Inject constructor(
129129
newStatus = parameters.fallbackStatus
130130
)
131131
flowChannel.emit(Success(MODERATE_USE_CASE, DoNotCare))
132-
resourceProvider.localCommentCacheUpdateHandler.requestCommentsUpdate()
132+
utilsProvider.localCommentCacheUpdateHandler.requestCommentsUpdate()
133133
Idle
134134
}
135135
}

WordPress/src/main/java/org/wordpress/android/ui/JetpackRemoteInstallFragment.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ class JetpackRemoteInstallFragment : Fragment(R.layout.jetpack_remote_install_fr
3737
}
3838

3939
private fun initDagger() {
40-
(requireActivity().application as WordPress).component()!!.inject(this)
40+
(requireActivity().application as WordPress).component().inject(this)
4141
}
4242

4343
private fun JetpackRemoteInstallFragmentBinding.initViewModel(savedInstanceState: Bundle?) {

WordPress/src/main/java/org/wordpress/android/ui/activitylog/list/ActivityLogListFragment.kt

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ class ActivityLogListFragment : Fragment(R.layout.activity_log_list_fragment) {
6666
super.onViewCreated(view, savedInstanceState)
6767

6868
val nonNullActivity = requireActivity()
69-
(nonNullActivity.application as WordPress).component()?.inject(this@ActivityLogListFragment)
69+
(nonNullActivity.application as WordPress).component().inject(this@ActivityLogListFragment)
7070
viewModel = ViewModelProvider(
7171
this@ActivityLogListFragment,
7272
viewModelFactory
@@ -128,11 +128,10 @@ class ActivityLogListFragment : Fragment(R.layout.activity_log_list_fragment) {
128128
}
129129
}
130130

131+
@Suppress("UNCHECKED_CAST")
131132
private fun restoreDateRangePickerListeners() {
132133
(childFragmentManager.findFragmentByTag(DATE_PICKER_TAG) as? MaterialDatePicker<Pair<Long, Long>>)
133-
?.let { picker ->
134-
initDateRangePickerButtonClickListener(picker)
135-
}
134+
?.let { initDateRangePickerButtonClickListener(it) }
136135
}
137136

138137
override fun onSaveInstanceState(outState: Bundle) {

WordPress/src/main/java/org/wordpress/android/ui/bloggingreminders/BloggingRemindersViewModel.kt

Lines changed: 22 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,6 @@ import org.wordpress.android.ui.bloggingreminders.BloggingRemindersAnalyticsTrac
1717
import org.wordpress.android.ui.bloggingreminders.BloggingRemindersAnalyticsTracker.Source.BLOG_SETTINGS
1818
import org.wordpress.android.ui.bloggingreminders.BloggingRemindersAnalyticsTracker.Source.NOTIFICATION_SETTINGS
1919
import org.wordpress.android.ui.bloggingreminders.BloggingRemindersAnalyticsTracker.Source.PUBLISH_FLOW
20-
import org.wordpress.android.ui.bloggingreminders.BloggingRemindersViewModel.Screen.EPILOGUE
21-
import org.wordpress.android.ui.bloggingreminders.BloggingRemindersViewModel.Screen.PROLOGUE
22-
import org.wordpress.android.ui.bloggingreminders.BloggingRemindersViewModel.Screen.PROLOGUE_SETTINGS
23-
import org.wordpress.android.ui.bloggingreminders.BloggingRemindersViewModel.Screen.SELECTION
2420
import org.wordpress.android.ui.utils.ListItemInteraction
2521
import org.wordpress.android.ui.utils.UiString
2622
import org.wordpress.android.util.merge
@@ -68,28 +64,28 @@ class BloggingRemindersViewModel @Inject constructor(
6864
) { screen, bloggingRemindersModel, isFirstTimeFlow ->
6965
if (screen != null) {
7066
val uiItems = when (screen) {
71-
PROLOGUE -> prologueBuilder.buildUiItems()
72-
PROLOGUE_SETTINGS -> prologueBuilder.buildUiItemsForSettings()
73-
SELECTION -> daySelectionBuilder.buildSelection(
67+
Screen.PROLOGUE -> prologueBuilder.buildUiItems()
68+
Screen.PROLOGUE_SETTINGS -> prologueBuilder.buildUiItemsForSettings()
69+
Screen.SELECTION -> daySelectionBuilder.buildSelection(
7470
bloggingRemindersModel,
7571
this::selectDay,
7672
this::selectTime,
7773
this::togglePromptSwitch,
7874
this::showBloggingPromptDialog
7975
)
80-
EPILOGUE -> epilogueBuilder.buildUiItems(bloggingRemindersModel)
76+
Screen.EPILOGUE -> epilogueBuilder.buildUiItems(bloggingRemindersModel)
8177
}
8278
val primaryButton = when (screen) {
83-
PROLOGUE, PROLOGUE_SETTINGS -> prologueBuilder.buildPrimaryButton(
79+
Screen.PROLOGUE, Screen.PROLOGUE_SETTINGS -> prologueBuilder.buildPrimaryButton(
8480
isFirstTimeFlow == true,
8581
startDaySelection
8682
)
87-
SELECTION -> daySelectionBuilder.buildPrimaryButton(
83+
Screen.SELECTION -> daySelectionBuilder.buildPrimaryButton(
8884
bloggingRemindersModel,
8985
isFirstTimeFlow == true,
9086
this::showEpilogue
9187
)
92-
EPILOGUE -> epilogueBuilder.buildPrimaryButton(finish)
88+
Screen.EPILOGUE -> epilogueBuilder.buildPrimaryButton(finish)
9389
}
9490
UiState(uiItems, primaryButton)
9591
} else {
@@ -98,13 +94,13 @@ class BloggingRemindersViewModel @Inject constructor(
9894
}.distinctUntilChanged()
9995

10096
private val startDaySelection: (isFirstTimeFlow: Boolean) -> Unit = { isFirstTimeFlow ->
101-
analyticsTracker.trackPrimaryButtonPressed(PROLOGUE)
97+
analyticsTracker.trackPrimaryButtonPressed(Screen.PROLOGUE)
10298
_isFirstTimeFlow.value = isFirstTimeFlow
103-
_selectedScreen.value = SELECTION
99+
_selectedScreen.value = Screen.SELECTION
104100
}
105101

106102
private val finish: () -> Unit = {
107-
analyticsTracker.trackPrimaryButtonPressed(EPILOGUE)
103+
analyticsTracker.trackPrimaryButtonPressed(Screen.EPILOGUE)
108104
_isBottomSheetShowing.value = Event(false)
109105
}
110106

@@ -126,7 +122,7 @@ class BloggingRemindersViewModel @Inject constructor(
126122
private fun showBottomSheet(siteId: Int, screen: Screen, source: Source) {
127123
analyticsTracker.setSite(siteId)
128124
analyticsTracker.trackFlowStart(source)
129-
val isPrologueScreen = screen == PROLOGUE || screen == PROLOGUE_SETTINGS
125+
val isPrologueScreen = screen == Screen.PROLOGUE || screen == Screen.PROLOGUE_SETTINGS
130126
if (isPrologueScreen) {
131127
bloggingRemindersManager.bloggingRemindersShown(siteId)
132128
}
@@ -180,7 +176,7 @@ class BloggingRemindersViewModel @Inject constructor(
180176
}
181177

182178
private fun showEpilogue(bloggingRemindersModel: BloggingRemindersUiModel?) {
183-
analyticsTracker.trackPrimaryButtonPressed(SELECTION)
179+
analyticsTracker.trackPrimaryButtonPressed(Screen.SELECTION)
184180
if (bloggingRemindersModel != null) {
185181
launch {
186182
bloggingRemindersStore.updateBloggingReminders(
@@ -203,7 +199,7 @@ class BloggingRemindersViewModel @Inject constructor(
203199
reminderScheduler.cancelBySiteId(bloggingRemindersModel.siteId)
204200
analyticsTracker.trackRemindersCancelled()
205201
}
206-
_selectedScreen.value = EPILOGUE
202+
_selectedScreen.value = Screen.EPILOGUE
207203
}
208204
}
209205
}
@@ -247,7 +243,7 @@ class BloggingRemindersViewModel @Inject constructor(
247243

248244
fun onPublishingPost(siteId: Int, isFirstTimePublishing: Boolean?) {
249245
if (isFirstTimePublishing == true && bloggingRemindersManager.shouldShowBloggingRemindersPrompt(siteId)) {
250-
showBottomSheet(siteId, PROLOGUE, PUBLISH_FLOW)
246+
showBottomSheet(siteId, Screen.PROLOGUE, PUBLISH_FLOW)
251247
}
252248
}
253249

@@ -260,26 +256,27 @@ class BloggingRemindersViewModel @Inject constructor(
260256
}
261257

262258
fun onBloggingPromptSchedulingRequested(siteId: Int) {
263-
showBottomSheet(siteId, PROLOGUE, BLOGGING_PROMPTS_ONBOARDING)
259+
showBottomSheet(siteId, Screen.PROLOGUE, BLOGGING_PROMPTS_ONBOARDING)
264260
}
265261

266262
private fun onSettingsItemClicked(siteId: Int, source: Source) {
267263
launch {
268264
val screen = if (bloggingRemindersStore.hasModifiedBloggingReminders(siteId)) {
269-
SELECTION
265+
Screen.SELECTION
270266
} else {
271-
PROLOGUE_SETTINGS
267+
Screen.PROLOGUE_SETTINGS
272268
}
273269
showBottomSheet(siteId, screen, source)
274270
}
275271
}
276272

277273
fun onBottomSheetDismissed() {
278274
when (val screen = selectedScreen.value) {
279-
PROLOGUE,
280-
PROLOGUE_SETTINGS,
281-
SELECTION -> analyticsTracker.trackFlowDismissed(screen)
282-
EPILOGUE -> analyticsTracker.trackFlowCompleted()
275+
Screen.PROLOGUE,
276+
Screen.PROLOGUE_SETTINGS,
277+
Screen.SELECTION -> analyticsTracker.trackFlowDismissed(screen)
278+
Screen.EPILOGUE -> analyticsTracker.trackFlowCompleted()
279+
null -> Unit // Do nothing
283280
}
284281
}
285282

WordPress/src/main/java/org/wordpress/android/ui/domains/DomainRegistrationDetailsFragment.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ class DomainRegistrationDetailsFragment : Fragment() {
7373
override fun onCreate(savedInstanceState: Bundle?) {
7474
super.onCreate(savedInstanceState)
7575
val nonNullActivity = requireActivity()
76-
(nonNullActivity.application as WordPress).component()?.inject(this)
76+
(nonNullActivity.application as WordPress).component().inject(this)
7777
}
7878

7979
override fun onCreateView(

WordPress/src/main/java/org/wordpress/android/ui/engagement/EngagedPeopleListFragment.kt

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -91,21 +91,19 @@ class EngagedPeopleListFragment : Fragment() {
9191
recycler.layoutManager = layoutManager
9292

9393
userProfileViewModel.onBottomSheetAction.observeEvent(viewLifecycleOwner, { state ->
94-
val fragmentManager = childFragmentManager
95-
fragmentManager?.let {
96-
var bottomSheet = it.findFragmentByTag(USER_PROFILE_BOTTOM_SHEET_TAG) as? UserProfileBottomSheetFragment
97-
98-
when (state) {
99-
ShowBottomSheet -> {
100-
if (bottomSheet == null) {
101-
bottomSheet = UserProfileBottomSheetFragment.newInstance(USER_PROFILE_VM_KEY)
102-
bottomSheet.show(fragmentManager, USER_PROFILE_BOTTOM_SHEET_TAG)
103-
}
104-
}
105-
HideBottomSheet -> {
106-
bottomSheet?.apply { this.dismiss() }
94+
var bottomSheet = childFragmentManager.findFragmentByTag(USER_PROFILE_BOTTOM_SHEET_TAG)
95+
as? UserProfileBottomSheetFragment
96+
97+
when (state) {
98+
ShowBottomSheet -> {
99+
if (bottomSheet == null) {
100+
bottomSheet = UserProfileBottomSheetFragment.newInstance(USER_PROFILE_VM_KEY)
101+
bottomSheet.show(childFragmentManager, USER_PROFILE_BOTTOM_SHEET_TAG)
107102
}
108103
}
104+
HideBottomSheet -> {
105+
bottomSheet?.apply { this.dismiss() }
106+
}
109107
}
110108
})
111109

WordPress/src/main/java/org/wordpress/android/ui/engagement/EngagedPeopleListViewModel.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,7 @@ class EngagedPeopleListViewModel @Inject constructor(
213213
var emptyStateAction: (() -> Unit)? = null
214214

215215
if (updateLikesState is Failure) {
216-
updateLikesState.emptyStateData?.let {
216+
updateLikesState.emptyStateData.let {
217217
showEmptyState = it.showEmptyState
218218
emptyStateTitle = it.title
219219
emptyStateAction = ::onRefreshData

0 commit comments

Comments
 (0)