Skip to content

Commit 88c0af2

Browse files
authored
Merge pull request #14905 from wordpress-mobile/feature/14761-open-blogging-reminders-from-posts-screen
Show blogging reminders bottom sheet from posts list
2 parents 435932e + 2a5f228 commit 88c0af2

File tree

4 files changed

+45
-10
lines changed

4 files changed

+45
-10
lines changed

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

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,17 +12,16 @@ object BloggingReminderUtils {
1212
isBottomSheetShowing: LiveData<Event<Boolean>>,
1313
lifecycleOwner: LifecycleOwner,
1414
tag: String,
15-
getSupportFragmentManager: () -> FragmentManager
15+
getSupportFragmentManager: () -> FragmentManager?
1616
) {
1717
isBottomSheetShowing.observeEvent(lifecycleOwner,
1818
{ isShowing: Boolean ->
19-
val fm: FragmentManager = getSupportFragmentManager()
20-
var bottomSheet = fm
21-
.findFragmentByTag(tag) as BloggingReminderBottomSheetFragment?
19+
val fm: FragmentManager = getSupportFragmentManager() ?: return@observeEvent
20+
var bottomSheet = fm.findFragmentByTag(tag) as BloggingReminderBottomSheetFragment?
2221
if (isShowing && bottomSheet == null) {
2322
bottomSheet = BloggingReminderBottomSheetFragment()
2423
bottomSheet.show(
25-
getSupportFragmentManager(),
24+
fm,
2625
tag
2726
)
2827
} else if (!isShowing && bottomSheet != null) {

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,12 @@ class BloggingRemindersViewModel @Inject constructor(
200200
_isFirstTimeFlow.value = state.getBoolean(IS_FIRST_TIME_FLOW)
201201
}
202202

203+
fun onPostCreated(siteId: Int, isNewPost: Boolean?) {
204+
if (isNewPost == true && bloggingRemindersManager.shouldShowBloggingRemindersPrompt(siteId)) {
205+
showBottomSheet(siteId, PROLOGUE)
206+
}
207+
}
208+
203209
enum class Screen {
204210
PROLOGUE, SELECTION, EPILOGUE
205211
}

WordPress/src/main/java/org/wordpress/android/ui/main/WPMainActivity.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,6 @@
8181
import org.wordpress.android.ui.bloggingreminders.BloggingReminderUtils;
8282
import org.wordpress.android.ui.bloggingreminders.BloggingRemindersManager;
8383
import org.wordpress.android.ui.bloggingreminders.BloggingRemindersViewModel;
84-
import org.wordpress.android.ui.bloggingreminders.BloggingRemindersViewModel.Screen;
8584
import org.wordpress.android.ui.main.WPMainNavigationView.OnPageListener;
8685
import org.wordpress.android.ui.main.WPMainNavigationView.PageType;
8786
import org.wordpress.android.ui.mlp.ModalLayoutPickerFragment;
@@ -1089,10 +1088,11 @@ public void onClick(View v) {
10891088
UploadUtils.publishPost(WPMainActivity.this, post, site, mDispatcher);
10901089
}
10911090
});
1092-
boolean isNewPost = data.getBooleanExtra(EditPostActivity.EXTRA_IS_NEW_POST, false);
1093-
if (isNewPost && mBloggingRemindersManager.shouldShowBloggingRemindersPrompt(site.getId())) {
1094-
mBloggingRemindersViewModel.showBottomSheet(site.getId(), Screen.PROLOGUE);
1095-
}
1091+
1092+
mBloggingRemindersViewModel.onPostCreated(
1093+
site.getId(),
1094+
data.getBooleanExtra(EditPostActivity.EXTRA_IS_NEW_POST, false)
1095+
);
10961096
}
10971097
break;
10981098
case RequestCodes.CREATE_SITE:

WordPress/src/main/java/org/wordpress/android/ui/posts/PostsListActivity.kt

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@ import org.wordpress.android.ui.LocaleAwareActivity
3434
import org.wordpress.android.ui.PagePostCreationSourcesDetail.STORY_FROM_POSTS_LIST
3535
import org.wordpress.android.ui.RequestCodes
3636
import org.wordpress.android.ui.ScrollableViewInitializedListener
37+
import org.wordpress.android.ui.bloggingreminders.BloggingReminderUtils.observeBottomSheet
38+
import org.wordpress.android.ui.bloggingreminders.BloggingRemindersViewModel
3739
import org.wordpress.android.ui.main.MainActionListItem.ActionType
3840
import org.wordpress.android.ui.notifications.SystemNotificationsTracker
3941
import org.wordpress.android.ui.pages.SnackbarMessageHolder
@@ -85,6 +87,7 @@ class PostsListActivity : LocaleAwareActivity(),
8587
@Inject internal lateinit var editPostRepository: EditPostRepository
8688
@Inject internal lateinit var mediaPickerLauncher: MediaPickerLauncher
8789
@Inject internal lateinit var storiesMediaPickerResultHandler: StoriesMediaPickerResultHandler
90+
@Inject internal lateinit var bloggingRemindersViewModel: BloggingRemindersViewModel
8891

8992
private lateinit var site: SiteModel
9093
private lateinit var binding: PostListActivityBinding
@@ -164,6 +167,7 @@ class PostsListActivity : LocaleAwareActivity(),
164167
setupActionBar()
165168
setupContent()
166169
initViewModel(initPreviewState, currentBottomSheetPostId)
170+
initBloggingReminders()
167171
initCreateMenuViewModel()
168172
loadIntentData(intent)
169173
}
@@ -324,6 +328,26 @@ class PostsListActivity : LocaleAwareActivity(),
324328
setupFabEvents()
325329
}
326330

331+
private fun initBloggingReminders() {
332+
bloggingRemindersViewModel = ViewModelProvider(
333+
this,
334+
viewModelFactory
335+
).get(BloggingRemindersViewModel::class.java)
336+
337+
observeBottomSheet(
338+
bloggingRemindersViewModel.isBottomSheetShowing,
339+
this,
340+
BLOGGING_REMINDERS_FRAGMENT_TAG,
341+
{
342+
if (!this.isFinishing) {
343+
this.supportFragmentManager
344+
} else {
345+
null
346+
}
347+
}
348+
)
349+
}
350+
327351
private fun setupActions() {
328352
viewModel.dialogAction.observe(this@PostsListActivity, {
329353
it?.show(this@PostsListActivity, supportFragmentManager, uiHelpers)
@@ -438,6 +462,10 @@ class PostsListActivity : LocaleAwareActivity(),
438462
}
439463

440464
viewModel.handleEditPostResult(data)
465+
bloggingRemindersViewModel.onPostCreated(
466+
site.id,
467+
data?.getBooleanExtra(EditPostActivity.EXTRA_IS_NEW_POST, false)
468+
)
441469
} else if (requestCode == RequestCodes.REMOTE_PREVIEW_POST) {
442470
viewModel.handleRemotePreviewClosing()
443471
} else if (requestCode == RequestCodes.PHOTO_PICKER &&
@@ -601,6 +629,8 @@ class PostsListActivity : LocaleAwareActivity(),
601629
}
602630

603631
companion object {
632+
private const val BLOGGING_REMINDERS_FRAGMENT_TAG = "blogging_reminders_fragment_tag"
633+
604634
@JvmStatic
605635
fun buildIntent(context: Context, site: SiteModel): Intent {
606636
val intent = Intent(context, PostsListActivity::class.java)

0 commit comments

Comments
 (0)