Skip to content

Migrate Remaining EditPostActivity Direct Launches to EditorLauncher #22120

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 7 commits into from
Aug 13, 2025
Merged
Original file line number Diff line number Diff line change
Expand Up @@ -402,7 +402,7 @@ public static void openEditorForSiteInNewStack(Context context, @NonNull SiteMod
TaskStackBuilder taskStackBuilder = TaskStackBuilder.create(context);
Intent mainActivityIntent = getMainActivityInNewStack(context);

EditorLauncherParams params = new EditorLauncherParams.Builder(site)
EditorLauncherParams params = EditorLauncherParams.Builder.forSite(site)
.isPage(false)
.build();

Expand All @@ -418,7 +418,7 @@ public static void openEditorForPostInNewStack(Context context, @NonNull SiteMod
TaskStackBuilder taskStackBuilder = TaskStackBuilder.create(context);
Intent mainActivityIntent = getMainActivityInNewStack(context);

EditorLauncherParams params = new EditorLauncherParams.Builder(site)
EditorLauncherParams params = EditorLauncherParams.Builder.forSite(site)
.postLocalId(localPostId)
.isPage(false)
.build();
Expand Down Expand Up @@ -462,7 +462,7 @@ public static void openEditorForReblog(
site.getSiteId()
);

EditorLauncherParams params = new EditorLauncherParams.Builder(site)
EditorLauncherParams params = EditorLauncherParams.Builder.forSite(site)
.reblogPostTitle(post.getTitle())
.reblogPostQuote(post.getExcerpt())
.reblogPostImage(post.getFeaturedImage())
Expand Down Expand Up @@ -988,7 +988,7 @@ public static void addNewPostWithContentFromAIForResult(
return;
}

EditorLauncherParams params = new EditorLauncherParams.Builder(site)
EditorLauncherParams params = EditorLauncherParams.Builder.forSite(site)
.isPage(false)
.isPromo(isPromo)
.source(source)
Expand All @@ -1007,7 +1007,7 @@ public static void addNewPostForResult(
final int promptId,
final EntryPoint entryPoint
) {
EditorLauncherParams params = new EditorLauncherParams.Builder(site)
EditorLauncherParams params = EditorLauncherParams.Builder.forSite(site)
.isPage(false)
.isPromo(isPromo)
.source(source)
Expand Down Expand Up @@ -1047,7 +1047,7 @@ public static void editPostOrPageForResult(Activity activity, @NonNull SiteModel
return;
}

EditorLauncherParams params = new EditorLauncherParams.Builder(site)
EditorLauncherParams params = EditorLauncherParams.Builder.forSite(site)
.postLocalId(post.getId())
.loadAutoSaveRevision(false)
.build();
Expand All @@ -1063,10 +1063,10 @@ public static void editPostOrPageForResult(Activity activity, @NonNull SiteModel
return;
}

EditorLauncherParams params = new EditorLauncherParams.Builder(site)
.postLocalId(post.getId())
.loadAutoSaveRevision(loadAutoSaveRevision)
.build();
EditorLauncherParams params = EditorLauncherParams.Builder.forSite(site)
.postLocalId(post.getId())
.loadAutoSaveRevision(loadAutoSaveRevision)
.build();

Intent editorIntent = EditorLauncher.getInstance().createEditorIntent(activity, params);
activity.startActivityForResult(editorIntent, RequestCodes.EDIT_POST);
Expand Down Expand Up @@ -1094,7 +1094,7 @@ public static void editPostOrPageForResult(Intent intent, Activity activity, Sit

public static void editPageForResult(@NonNull Fragment fragment, @NonNull SiteModel site,
int pageLocalId, boolean loadAutoSaveRevision) {
EditorLauncherParams params = new EditorLauncherParams.Builder(site)
EditorLauncherParams params = EditorLauncherParams.Builder.forSite(site)
.postLocalId(pageLocalId)
.loadAutoSaveRevision(loadAutoSaveRevision)
.isPage(true)
Expand All @@ -1111,7 +1111,7 @@ public static void editPageForResult(Intent intent, @NonNull Fragment fragment,

public static void editLandingPageForResult(@NonNull Fragment fragment, @NonNull SiteModel site, int homeLocalId,
boolean isNewSite) {
EditorLauncherParams params = new EditorLauncherParams.Builder(site)
EditorLauncherParams params = EditorLauncherParams.Builder.forSite(site)
.postLocalId(homeLocalId)
.loadAutoSaveRevision(false)
.isPage(true)
Expand Down Expand Up @@ -1139,14 +1139,14 @@ public static void addNewPageForResult(
@Nullable String template,
@NonNull PagePostCreationSourcesDetail source
) {
EditorLauncherParams params = new EditorLauncherParams.Builder(site)
.isPage(true)
.isPromo(false)
.pageTitle(title)
.pageContent(content)
.pageTemplate(template)
.source(source)
.build();
EditorLauncherParams params = EditorLauncherParams.Builder.forSite(site)
.isPage(true)
.isPromo(false)
.pageTitle(title)
.pageContent(content)
.pageTemplate(template)
.source(source)
.build();

Intent intent = EditorLauncher.getInstance().createEditorIntent(activity, params);
activity.startActivityForResult(intent, RequestCodes.EDIT_POST);
Expand All @@ -1159,7 +1159,7 @@ public static void addNewPageForResult(
@NonNull String content,
@Nullable String template,
@NonNull PagePostCreationSourcesDetail source) {
EditorLauncherParams params = new EditorLauncherParams.Builder(site)
EditorLauncherParams params = EditorLauncherParams.Builder.forSite(site)
.isPage(true)
.isPromo(false)
.pageTitle(title)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,8 @@
import org.wordpress.android.fluxc.store.SiteStore;
import org.wordpress.android.fluxc.tools.FluxCImageLoader;
import org.wordpress.android.ui.main.BaseAppCompatActivity;
import org.wordpress.android.ui.posts.EditPostActivity;
import org.wordpress.android.ui.posts.EditPostActivityConstants;
import org.wordpress.android.ui.posts.EditorLauncher;
import org.wordpress.android.ui.posts.EditorLauncherParams;
import org.wordpress.android.util.SiteUtils;
import org.wordpress.android.util.ToastUtils;

Expand Down Expand Up @@ -140,12 +140,15 @@ public void onClick(DialogInterface dialog, int which) {
ToastUtils.showToast(AddQuickPressShortcutActivity.this, R.string.quickpress_add_error,
ToastUtils.Duration.LONG);
} else {
Intent shortcutIntent = new Intent(getApplicationContext(), EditPostActivity.class);
EditorLauncherParams params =
EditorLauncherParams.Builder.forQuickPressBlogId(siteIds[position]).isQuickPress(true)
.build();

Intent shortcutIntent =
EditorLauncher.getInstance().createEditorIntent(getApplicationContext(), params);
shortcutIntent.setAction(Intent.ACTION_MAIN);
shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
shortcutIntent.putExtra(EditPostActivityConstants.EXTRA_QUICKPRESS_BLOG_ID, siteIds[position]);
shortcutIntent.putExtra(EditPostActivityConstants.EXTRA_IS_QUICKPRESS, true);

String shortcutName = quickPressShortcutName.getText().toString();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,8 @@
import org.wordpress.android.ui.main.WPMainActivity;
import org.wordpress.android.ui.media.MediaBrowserActivity;
import org.wordpress.android.ui.media.MediaBrowserType;
import org.wordpress.android.ui.posts.EditorLauncher;
import org.wordpress.android.ui.posts.EditorLauncherParams;
import org.wordpress.android.util.AppLog;
import org.wordpress.android.util.AppLog.T;
import org.wordpress.android.util.FluxCUtils;
Expand Down Expand Up @@ -175,7 +177,30 @@ public void share(ShareAction shareAction, int selectedSiteLocalId) {
mClickedSiteLocalId = selectedSiteLocalId;

bumpAnalytics(shareAction, selectedSiteLocalId);
Intent intent = new Intent(this, shareAction.targetClass);

SiteModel selectedSite = mSiteStore.getSiteByLocalId(selectedSiteLocalId);
Copy link
Preview

Copilot AI Aug 12, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The variable selectedSite is retrieved but not used in the SHARE_TO_MEDIA_LIBRARY case. The MediaBrowserActivity intent creation should include the site information to ensure proper context.

Copilot uses AI. Check for mistakes.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is addressed by amending the existing commit to keep things clean. It's now used in SHARE_TO_MEDIA_LIBRARY case preserving the original behavior.

if (selectedSite == null) {
ToastUtils.showToast(this, R.string.cant_share_no_blog, ToastUtils.Duration.LONG);
finish();
return;
}

Intent intent;

switch (shareAction) {
case SHARE_TO_POST:
EditorLauncherParams params = EditorLauncherParams.Builder.forSite(selectedSite)
.build();
intent = EditorLauncher.getInstance().createEditorIntent(this, params);
break;
case SHARE_TO_MEDIA_LIBRARY:
intent = new Intent(this, MediaBrowserActivity.class);
intent.putExtra(WordPress.SITE, selectedSite);
break;
default:
throw new IllegalArgumentException("Unknown share action: " + shareAction);
}

startActivityAndFinish(intent, selectedSiteLocalId);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import android.widget.Button;
import android.widget.TextView;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.LinearLayoutManager;
Expand All @@ -21,8 +22,6 @@
import org.wordpress.android.ui.main.SitePickerAdapter;
import org.wordpress.android.ui.main.SitePickerAdapter.ViewHolderHandler;
import org.wordpress.android.ui.main.SiteRecord;
import org.wordpress.android.ui.media.MediaBrowserActivity;
import org.wordpress.android.ui.posts.EditPostActivity;
import org.wordpress.android.util.image.ImageManager;

import java.util.List;
Expand Down Expand Up @@ -211,15 +210,12 @@ void bindText(String text) {
}

enum ShareAction {
SHARE_TO_POST("new_post", EditPostActivity.class),
SHARE_TO_MEDIA_LIBRARY("media_library", MediaBrowserActivity.class);
SHARE_TO_POST("new_post"),
SHARE_TO_MEDIA_LIBRARY("media_library");

public final Class targetClass;
public final String analyticsName;
@NonNull public final String analyticsName;


ShareAction(String analyticsName, Class targetClass) {
this.targetClass = targetClass;
ShareAction(@NonNull String analyticsName) {
this.analyticsName = analyticsName;
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,16 @@ class EditorLauncher @Inject constructor(
}

private fun Intent.addBasicExtras(params: EditorLauncherParams) {
putExtra(WordPress.SITE, params.site)
when (params.siteSource) {
is EditorLauncherSiteSource.DirectSite -> putExtra(
WordPress.SITE, params.siteSource.siteModel
)

is EditorLauncherSiteSource.QuickPressSiteId -> putExtra(
EditPostActivityConstants.EXTRA_QUICKPRESS_BLOG_ID,
params.siteSource.siteId
)
}
params.isPage?.let { putExtra(EditPostActivityConstants.EXTRA_IS_PAGE, it) }
params.isPromo?.let { putExtra(EditPostActivityConstants.EXTRA_IS_PROMO, it) }
putExtra(EXTRA_LAUNCHED_VIA_EDITOR_LAUNCHER, true)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,14 @@ import org.wordpress.android.ui.PagePostCreationSourcesDetail
import org.wordpress.android.fluxc.model.SiteModel
import org.wordpress.android.ui.posts.PostUtils.EntryPoint

/**
* Site source for EditorLauncherParams - supports direct SiteModel or QuickPress blog ID.
*/
sealed class EditorLauncherSiteSource {
data class DirectSite(val siteModel: SiteModel) : EditorLauncherSiteSource()
data class QuickPressSiteId(val siteId: Int) : EditorLauncherSiteSource()
}

/**
* Type-safe parameters for launching editor activities.
*
Expand All @@ -14,7 +22,7 @@ import org.wordpress.android.ui.posts.PostUtils.EntryPoint
* See EditorLauncherTest for field-to-method mapping documentation.
*/
data class EditorLauncherParams(
val site: SiteModel,
val siteSource: EditorLauncherSiteSource,
val isPage: Boolean? = null,
val isPromo: Boolean? = null,
val postLocalId: Int? = null,
Expand All @@ -40,7 +48,21 @@ data class EditorLauncherParams(
/**
* Java-friendly builder pattern for EditorLauncherParams.
*/
class Builder(private val site: SiteModel) {
class Builder(private val siteSource: EditorLauncherSiteSource) {
companion object {
/**
* Create builder for SiteModel (most common case)
*/
@JvmStatic
fun forSite(site: SiteModel): Builder = Builder(EditorLauncherSiteSource.DirectSite(site))

/**
* Create builder for QuickPress blog ID (for shortcuts that resolve site at launch time)
*/
@JvmStatic
fun forQuickPressBlogId(blogId: Int): Builder =
Builder(EditorLauncherSiteSource.QuickPressSiteId(blogId))
}
private var isPage: Boolean? = null
private var isPromo: Boolean? = null
private var postLocalId: Int? = null
Expand Down Expand Up @@ -93,7 +115,7 @@ data class EditorLauncherParams(

fun build(): EditorLauncherParams {
return EditorLauncherParams(
site = site,
siteSource = siteSource,
isPage = isPage,
isPromo = isPromo,
postLocalId = postLocalId,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,8 @@
import org.wordpress.android.ui.media.MediaBrowserActivity;
import org.wordpress.android.ui.notifications.SystemNotificationsTracker;
import org.wordpress.android.ui.pages.PagesActivity;
import org.wordpress.android.ui.posts.EditPostActivity;
import org.wordpress.android.ui.posts.EditPostActivityConstants;
import org.wordpress.android.ui.posts.EditorLauncher;
import org.wordpress.android.ui.posts.EditorLauncherParams;
import org.wordpress.android.ui.posts.PostUtils;
import org.wordpress.android.ui.posts.PostsListActivity;
import org.wordpress.android.ui.posts.PostsListActivityKt;
Expand Down Expand Up @@ -441,12 +441,15 @@ void updateNotificationSuccessForMedia(@NonNull List<MediaModel> mediaList, @Non
if (mediaList != null && !mediaList.isEmpty()) {
ArrayList<MediaModel> mediaToIncludeInPost = new ArrayList<>(mediaList);

Intent writePostIntent = new Intent(mContext, EditPostActivity.class);
EditorLauncherParams params = EditorLauncherParams.Builder
.forSite(site)
.isPage(false)
.insertMedia(mediaToIncludeInPost)
.build();

Intent writePostIntent = EditorLauncher.getInstance().createEditorIntent(mContext, params);
writePostIntent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
writePostIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
writePostIntent.putExtra(WordPress.SITE, site);
writePostIntent.putExtra(EditPostActivityConstants.EXTRA_IS_PAGE, false);
writePostIntent.putExtra(EditPostActivityConstants.EXTRA_INSERT_MEDIA, mediaToIncludeInPost);
writePostIntent.setAction(String.valueOf(notificationId));

PendingIntent actionPendingIntent =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@
import com.google.android.material.snackbar.Snackbar;

import org.wordpress.android.R;
import org.wordpress.android.WordPress;
import org.wordpress.android.fluxc.Dispatcher;
import org.wordpress.android.fluxc.generated.PostActionBuilder;
import org.wordpress.android.fluxc.model.MediaModel;
Expand All @@ -29,8 +28,9 @@
import org.wordpress.android.fluxc.store.PostStore.PostError;
import org.wordpress.android.fluxc.utils.MimeTypes;
import org.wordpress.android.ui.ActivityLauncher;
import org.wordpress.android.ui.posts.EditPostActivity;
import org.wordpress.android.ui.posts.EditPostActivityConstants;
import org.wordpress.android.ui.posts.EditorLauncher;
import org.wordpress.android.ui.posts.EditorLauncherParams;
import org.wordpress.android.ui.posts.PostUtils;
import org.wordpress.android.ui.prefs.AppPrefs;
import org.wordpress.android.ui.uploads.UploadActionUseCase.UploadAction;
Expand Down Expand Up @@ -610,13 +610,16 @@ public void onClick(View view) {
ArrayList<MediaModel> mediaListToInsertInPost = new ArrayList<>();
mediaListToInsertInPost.addAll(mediaList);

Intent writePostIntent = new Intent(activity, EditPostActivity.class);
EditorLauncherParams params = EditorLauncherParams.Builder
.forSite(site)
.isPage(false)
.insertMedia(mediaListToInsertInPost)
.build();

Intent writePostIntent =
EditorLauncher.getInstance().createEditorIntent(activity, params);
writePostIntent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
writePostIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
writePostIntent.putExtra(WordPress.SITE, site);
writePostIntent.putExtra(EditPostActivityConstants.EXTRA_IS_PAGE, false);
writePostIntent.putExtra(EditPostActivityConstants.EXTRA_INSERT_MEDIA,
mediaListToInsertInPost);
activity.startActivity(writePostIntent);
}
}, sequencer);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ class EditorLauncherTest {

val handledFields = setOf(
// addBasicExtras()
"site", // -> WordPress.SITE
"siteSource", // -> WordPress.SITE or EditPostActivityConstants.EXTRA_QUICKPRESS_BLOG_ID
"isPage", // -> EditPostActivityConstants.EXTRA_IS_PAGE
"isPromo", // -> EditPostActivityConstants.EXTRA_IS_PROMO

Expand Down