Skip to content

Commit f604c81

Browse files
authored
feat: Editor styles preferences align with web defaults (#22306)
* feat: Relocate editor use theme styles preference to site settings This is a more appropriate long-term location rather than experimental features. * task: Remove unused experimental feature: editor theme styles * fix: Toggle theme styles preference via GutenbergKit status This preference only impacts GutenbergKit. * fix: Avoid removing the theme styles preference for WPCOM Simple sites The theme styles preference shares a parent preference section with the toggle for enabling the block editor. * fix: Preserve local theme styles settings The value is not tracked on the server, nor returned by the API response. * refactor: Address lint warnings * refactor: Remove lingering theme styles experimental feature references * refactor: Address lint warnings and build errors * refactor: Remove unused import
1 parent 95397fe commit f604c81

File tree

12 files changed

+50
-28
lines changed

12 files changed

+50
-28
lines changed

WordPress/src/main/java/org/wordpress/android/WordPressDB.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
import java.io.OutputStream;
2323

2424
public class WordPressDB {
25-
private static final int DATABASE_VERSION = 69;
25+
private static final int DATABASE_VERSION = 70;
2626

2727

2828
// Warning renaming DATABASE_NAME could break previous App backups (see: xml/backup_scheme.xml)
@@ -184,6 +184,9 @@ public WordPressDB(Context ctx) {
184184
// so the table creation depended on that screen being opened. Now that we need this table in other
185185
// places, we have to be sure the table exists even if PublicizeListActivity was never opened.
186186
PublicizeTable.createTables(mDb);
187+
case 69:
188+
// add editor theme styles site setting
189+
mDb.execSQL(SiteSettingsModel.ADD_USE_THEME_STYLES);
187190
}
188191
mDb.setVersion(DATABASE_VERSION);
189192
}

WordPress/src/main/java/org/wordpress/android/models/SiteSettingsModel.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ public class SiteSettingsModel {
6969
private static final String AMP_ENABLED_COLUMN_NAME = "ampEnabled";
7070
private static final String JETPACK_SEARCH_SUPPORTED_COLUMN_NAME = "jetpackSearchSupported";
7171
private static final String JETPACK_SEARCH_ENABLED_COLUMN_NAME = "jetpackSearchEnabled";
72+
private static final String USE_THEME_STYLES_COLUMN_NAME = "useThemeStyles";
7273

7374
public static final String SETTINGS_TABLE_NAME = "site_settings";
7475

@@ -104,6 +105,8 @@ public class SiteSettingsModel {
104105
+ " add " + JETPACK_SEARCH_SUPPORTED_COLUMN_NAME + " BOOLEAN;";
105106
public static final String ADD_SITE_ICON = "alter table " + SETTINGS_TABLE_NAME
106107
+ " add " + SITE_ICON_COLUMN_NAME + " INTEGER;";
108+
public static final String ADD_USE_THEME_STYLES = "alter table " + SETTINGS_TABLE_NAME
109+
+ " add " + USE_THEME_STYLES_COLUMN_NAME + " BOOLEAN DEFAULT 1;";
107110

108111
public static final String CREATE_SETTINGS_TABLE_SQL =
109112
"CREATE TABLE IF NOT EXISTS "
@@ -194,6 +197,7 @@ public class SiteSettingsModel {
194197
public boolean ampEnabled;
195198
public boolean jetpackSearchSupported;
196199
public boolean jetpackSearchEnabled;
200+
public boolean useThemeStyles = true;
197201
public String quotaDiskSpace;
198202

199203
@Override
@@ -238,6 +242,7 @@ && equals(timezone, otherModel.timezone)
238242
&& ampSupported == otherModel.ampSupported
239243
&& jetpackSearchEnabled == otherModel.jetpackSearchEnabled
240244
&& jetpackSearchSupported == otherModel.jetpackSearchSupported
245+
&& useThemeStyles == otherModel.useThemeStyles
241246
&& maxLinks == otherModel.maxLinks
242247
&& equals(defaultPostFormat, otherModel.defaultPostFormat)
243248
&& holdForModeration != null
@@ -303,6 +308,7 @@ public void copyFrom(SiteSettingsModel other) {
303308
ampEnabled = other.ampEnabled;
304309
jetpackSearchSupported = other.jetpackSearchSupported;
305310
jetpackSearchEnabled = other.jetpackSearchEnabled;
311+
useThemeStyles = other.useThemeStyles;
306312
if (other.holdForModeration != null) {
307313
holdForModeration = new ArrayList<>(other.holdForModeration);
308314
}
@@ -367,6 +373,7 @@ public void deserializeOptionsDatabaseCursor(Cursor cursor, SparseArrayCompat<Ca
367373
ampEnabled = getBooleanFromCursor(cursor, AMP_ENABLED_COLUMN_NAME);
368374
jetpackSearchSupported = getBooleanFromCursor(cursor, JETPACK_SEARCH_SUPPORTED_COLUMN_NAME);
369375
jetpackSearchEnabled = getBooleanFromCursor(cursor, JETPACK_SEARCH_ENABLED_COLUMN_NAME);
376+
useThemeStyles = getBooleanFromCursor(cursor, USE_THEME_STYLES_COLUMN_NAME);
370377

371378
String moderationKeys = getStringFromCursor(cursor, MODERATION_KEYS_COLUMN_NAME);
372379
String denylistKeys = getStringFromCursor(cursor, DENYLIST_KEYS_COLUMN_NAME);
@@ -459,6 +466,7 @@ public ContentValues serializeToDatabase() {
459466
values.put(AMP_ENABLED_COLUMN_NAME, ampEnabled);
460467
values.put(JETPACK_SEARCH_SUPPORTED_COLUMN_NAME, jetpackSearchSupported);
461468
values.put(JETPACK_SEARCH_ENABLED_COLUMN_NAME, jetpackSearchEnabled);
469+
values.put(USE_THEME_STYLES_COLUMN_NAME, useThemeStyles);
462470

463471
StringBuilder moderationKeys = new StringBuilder();
464472
if (holdForModeration != null) {

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

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -171,10 +171,8 @@ import org.wordpress.android.ui.posts.reactnative.ReactNativeRequestHandler
171171
import org.wordpress.android.ui.posts.sharemessage.EditJetpackSocialShareMessageActivity
172172
import org.wordpress.android.ui.posts.sharemessage.EditJetpackSocialShareMessageActivity.Companion.createIntent
173173
import org.wordpress.android.ui.prefs.AppPrefs
174-
import org.wordpress.android.ui.prefs.experimentalfeatures.ExperimentalFeatures.Feature
175174
import org.wordpress.android.ui.prefs.SiteSettingsInterface
176175
import org.wordpress.android.ui.prefs.SiteSettingsInterface.SiteSettingsListener
177-
import org.wordpress.android.ui.prefs.experimentalfeatures.ExperimentalFeatures
178176
import org.wordpress.android.ui.reader.utils.ReaderUtilsWrapper
179177
import org.wordpress.android.ui.suggestion.SuggestionActivity
180178
import org.wordpress.android.ui.suggestion.SuggestionType
@@ -210,7 +208,6 @@ import org.wordpress.android.util.analytics.AnalyticsTrackerWrapper
210208
import org.wordpress.android.util.analytics.AnalyticsUtils
211209
import org.wordpress.android.util.analytics.AnalyticsUtils.BlockEditorEnabledSource
212210
import org.wordpress.android.util.config.ContactSupportFeatureConfig
213-
import org.wordpress.android.util.config.GutenbergKitFeature
214211
import org.wordpress.android.util.config.GutenbergKitPluginsFeature
215212
import org.wordpress.android.util.config.PostConflictResolutionFeatureConfig
216213
import org.wordpress.android.util.extensions.setLiftOnScrollTargetViewIdAndRequestLayout
@@ -380,9 +377,7 @@ class GutenbergKitActivity : BaseAppCompatActivity(), EditorImageSettingsListene
380377

381378
@Inject lateinit var postConflictResolutionFeatureConfig: PostConflictResolutionFeatureConfig
382379

383-
@Inject lateinit var gutenbergKitFeature: GutenbergKitFeature
384380
@Inject lateinit var gutenbergKitPluginsFeature: GutenbergKitPluginsFeature
385-
@Inject lateinit var experimentalFeatures: ExperimentalFeatures
386381

387382
@Inject lateinit var activityNavigator: ActivityNavigator
388383

@@ -2309,9 +2304,7 @@ class GutenbergKitActivity : BaseAppCompatActivity(), EditorImageSettingsListene
23092304

23102305
val featureConfig = GutenbergKitSettingsBuilder.FeatureConfig(
23112306
isPluginsFeatureEnabled = gutenbergKitPluginsFeature.isEnabled(),
2312-
isThemeStylesFeatureEnabled = experimentalFeatures.isEnabled(
2313-
Feature.EXPERIMENTAL_BLOCK_EDITOR_THEME_STYLES
2314-
)
2307+
isThemeStylesFeatureEnabled = siteSettings?.useThemeStyles ?: true
23152308
)
23162309

23172310
val appConfig = GutenbergKitSettingsBuilder.AppConfig(

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

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,6 @@ import org.wordpress.android.fluxc.model.SiteModel
88
import org.wordpress.android.fluxc.network.UserAgent
99
import org.wordpress.android.fluxc.store.AccountStore
1010
import org.wordpress.android.modules.BG_THREAD
11-
import org.wordpress.android.ui.prefs.experimentalfeatures.ExperimentalFeatures
12-
import org.wordpress.android.ui.prefs.experimentalfeatures.ExperimentalFeatures.Feature
1311
import org.wordpress.android.util.AppLog
1412
import org.wordpress.android.util.AppLog.T
1513
import org.wordpress.android.util.PerAppLocaleManager
@@ -33,7 +31,6 @@ class GutenbergKitWarmupHelper @Inject constructor(
3331
private val perAppLocaleManager: PerAppLocaleManager,
3432
private val gutenbergKitFeatureChecker: GutenbergKitFeatureChecker,
3533
private val gutenbergKitPluginsFeature: GutenbergKitPluginsFeature,
36-
private val experimentalFeatures: ExperimentalFeatures,
3734
@Named(BG_THREAD) private val bgDispatcher: CoroutineDispatcher
3835
) {
3936
private var lastWarmedUpSiteId: Long? = null
@@ -141,9 +138,8 @@ class GutenbergKitWarmupHelper @Inject constructor(
141138

142139
val featureConfig = GutenbergKitSettingsBuilder.FeatureConfig(
143140
isPluginsFeatureEnabled = gutenbergKitPluginsFeature.isEnabled(),
144-
isThemeStylesFeatureEnabled = experimentalFeatures.isEnabled(
145-
Feature.EXPERIMENTAL_BLOCK_EDITOR_THEME_STYLES
146-
)
141+
// Default to true during warmup; actual value will be used when editor launches
142+
isThemeStylesFeatureEnabled = true
147143
)
148144

149145
val settings = GutenbergKitSettingsBuilder.buildSettings(

WordPress/src/main/java/org/wordpress/android/ui/prefs/SiteSettingsFragment.java

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,7 @@
8181
import org.wordpress.android.ui.bloggingreminders.BloggingRemindersViewModel;
8282
import org.wordpress.android.ui.jetpackoverlay.JetpackFeatureRemovalPhaseHelper;
8383
import org.wordpress.android.ui.plans.PlansConstants;
84+
import org.wordpress.android.ui.posts.GutenbergKitFeatureChecker;
8485
import org.wordpress.android.ui.prefs.EditTextPreferenceWithValidation.ValidationType;
8586
import org.wordpress.android.ui.prefs.SiteSettingsFormatDialog.FormatType;
8687
import org.wordpress.android.ui.prefs.homepage.HomepageSettingsDialog;
@@ -193,6 +194,7 @@ public class SiteSettingsFragment extends PreferenceFragment
193194
@Inject UiHelpers mUiHelpers;
194195
@Inject JetpackFeatureRemovalPhaseHelper mJetpackFeatureRemovalPhaseHelper;
195196
@Inject BloggingPromptsSettingsHelper mPromptsSettingsHelper;
197+
@Inject GutenbergKitFeatureChecker mGutenbergKitFeatureChecker;
196198

197199
private BloggingRemindersViewModel mBloggingRemindersViewModel;
198200

@@ -226,6 +228,7 @@ public class SiteSettingsFragment extends PreferenceFragment
226228

227229
// Writing settings
228230
private WPSwitchPreference mGutenbergDefaultForNewPosts;
231+
private WPSwitchPreference mUseThemeStylesPref;
229232
private DetailListPreference mCategoryPref;
230233
private DetailListPreference mFormatPref;
231234
private WPPreference mDateFormatPref;
@@ -844,6 +847,8 @@ public boolean onPreferenceChange(Preference preference, Object newValue) {
844847
mSite, BlockEditorEnabledSource.VIA_SITE_SETTINGS.asPropertyMap());
845848
// we need to refresh metadata as gutenberg_enabled is now part of the user data
846849
AnalyticsUtils.refreshMetadata(mAccountStore, mSiteStore);
850+
} else if (preference == mUseThemeStylesPref) {
851+
mSiteSettings.setUseThemeStyles((Boolean) newValue);
847852
} else if (preference == mBloggingPromptsPref) {
848853
final boolean isEnabled = (boolean) newValue;
849854
mPromptsSettingsHelper.updatePromptsCardEnabledBlocking(mSite.getId(), isEnabled);
@@ -1029,6 +1034,10 @@ public void initPreferences() {
10291034
(WPSwitchPreference) getChangePref(R.string.pref_key_gutenberg_default_for_new_posts);
10301035
mGutenbergDefaultForNewPosts.setChecked(SiteUtils.isBlockEditorDefaultForNewPost(mSite));
10311036

1037+
mUseThemeStylesPref =
1038+
(WPSwitchPreference) getChangePref(R.string.pref_key_use_theme_styles);
1039+
mUseThemeStylesPref.setChecked(mSiteSettings.getUseThemeStyles());
1040+
10321041
mSiteAcceleratorSettings = (PreferenceScreen) getClickPref(R.string.pref_key_site_accelerator_settings);
10331042
mSiteAcceleratorSettingsNested =
10341043
(PreferenceScreen) getClickPref(R.string.pref_key_site_accelerator_settings_nested);
@@ -1070,6 +1079,11 @@ public void initPreferences() {
10701079
WPPrefUtils.removePreference(this, R.string.pref_key_homepage, R.string.pref_key_homepage_settings);
10711080
}
10721081

1082+
// hide theme styles preference if GutenbergKit is not enabled
1083+
if (!mGutenbergKitFeatureChecker.isGutenbergKitEnabled()) {
1084+
WPPrefUtils.removePreference(this, R.string.pref_key_site_editor, R.string.pref_key_use_theme_styles);
1085+
}
1086+
10731087
// hide Admin options depending of capabilities on this site
10741088
if ((!isAccessedViaWPComRest && !mSite.isSelfHostedAdmin())
10751089
|| (isAccessedViaWPComRest && !mSite.getHasCapabilityManageOptions())) {
@@ -1190,7 +1204,7 @@ public void setEditingEnabled(boolean enabled) {
11901204
mDateFormatPref, mTimeFormatPref, mTimezonePref, mBloggingRemindersPref, mPostsPerPagePref, mAmpPref,
11911205
mDeleteSitePref, mJpMonitorActivePref, mJpMonitorEmailNotesPref, mJpSsoPref,
11921206
mJpMonitorWpNotesPref, mJpBruteForcePref, mJpAllowlistPref, mJpMatchEmailPref, mJpUseTwoFactorPref,
1193-
mGutenbergDefaultForNewPosts, mHomepagePref, mBloggingPromptsPref
1207+
mGutenbergDefaultForNewPosts, mUseThemeStylesPref, mHomepagePref, mBloggingPromptsPref
11941208
};
11951209

11961210
for (Preference preference : editablePreference) {
@@ -1534,6 +1548,7 @@ public void setPreferencesFromSiteSettings() {
15341548
mWeekStartPref.setValue(mSiteSettings.getStartOfWeek());
15351549
mWeekStartPref.setSummary(mWeekStartPref.getEntry());
15361550
mGutenbergDefaultForNewPosts.setChecked(SiteUtils.isBlockEditorDefaultForNewPost(mSite));
1551+
mUseThemeStylesPref.setChecked(mSiteSettings.getUseThemeStyles());
15371552
setAdFreeHostingChecked(mSiteSettings.isAdFreeHostingEnabled());
15381553
boolean checked = mSiteSettings.isImprovedSearchEnabled() || mSiteSettings.getJetpackSearchEnabled();
15391554
mImprovedSearch.setChecked(checked);
@@ -2153,8 +2168,6 @@ private void removeNonWPComPreferences() {
21532168
private void removeEditorPreferences() {
21542169
WPPrefUtils.removePreference(this, R.string.pref_key_site_editor,
21552170
R.string.pref_key_gutenberg_default_for_new_posts);
2156-
WPPrefUtils.removePreference(this, R.string.pref_key_site_screen,
2157-
R.string.pref_key_site_editor);
21582171
}
21592172

21602173
private void removeCategoriesPreference() {

WordPress/src/main/java/org/wordpress/android/ui/prefs/SiteSettingsInterface.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -620,6 +620,14 @@ public void setJetpackSearchEnabled(boolean enabled) {
620620
mSettings.jetpackSearchEnabled = enabled;
621621
}
622622

623+
public boolean getUseThemeStyles() {
624+
return mSettings.useThemeStyles;
625+
}
626+
627+
public void setUseThemeStyles(boolean enabled) {
628+
mSettings.useThemeStyles = enabled;
629+
}
630+
623631
public boolean isJetpackMonitorEnabled() {
624632
return mJpSettings.monitorActive;
625633
}

WordPress/src/main/java/org/wordpress/android/ui/prefs/WPComSiteSettings.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,9 +181,11 @@ public void onResponse(JSONObject response) {
181181

182182
// Local settings
183183
boolean location = mSettings.location;
184+
boolean useThemeStyles = mSettings.useThemeStyles;
184185
mSettings.copyFrom(mRemoteSettings);
185186
mSettings.postFormats = currentPostFormats;
186187
mSettings.location = location;
188+
mSettings.useThemeStyles = useThemeStyles;
187189

188190
SiteSettingsTable.saveSettings(mSettings);
189191
}

WordPress/src/main/java/org/wordpress/android/ui/prefs/experimentalfeatures/ExperimentalFeatures.kt

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,11 +30,6 @@ class ExperimentalFeatures @Inject constructor(
3030
R.string.experimental_block_editor,
3131
R.string.experimental_block_editor_description
3232
),
33-
EXPERIMENTAL_BLOCK_EDITOR_THEME_STYLES(
34-
"experimental_block_editor_theme_styles",
35-
R.string.experimental_block_editor_theme_styles,
36-
R.string.experimental_block_editor_theme_styles_description
37-
),
3833
EXPERIMENTAL_APPLICATION_PASSWORD_FEATURE(
3934
"experimental_application_password_feature",
4035
R.string.experimental_application_password_feature,

WordPress/src/main/res/values/key_strings.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@
5656
<string name="pref_key_site_image_quality" translatable="false">wp_pref_site_default_image_quality</string>
5757
<string name="pref_key_optimize_video" translatable="false">wp_pref_key_optimize_video</string>
5858
<string name="pref_key_gutenberg_default_for_new_posts" translatable="false">wp_pref_key_gutenberg_default_for_new_posts</string>
59+
<string name="pref_key_use_theme_styles" translatable="false">wp_pref_key_use_theme_styles</string>
5960
<string name="pref_key_site_video_width" translatable="false">wp_pref_site_default_video_width</string>
6061
<string name="pref_key_site_video_encoder_bitrate" translatable="false">wp_pref_site_default_encoder_bitrate</string>
6162
<string name="pref_key_site_discussion" translatable="false">wp_pref_site_discussion</string>

WordPress/src/main/res/values/strings.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -702,6 +702,8 @@
702702
<string name="site_settings_amp_summary">Your WordPress.com site supports the use of Accelerated Mobile Pages, a Google-led initiative that dramatically speeds up loading times on mobile devices</string>
703703
<string name="site_settings_gutenberg_default_for_new_posts">Use Block Editor</string>
704704
<string name="site_settings_gutenberg_default_for_new_posts_summary">Edit new posts and pages with the block editor</string>
705+
<string name="site_settings_use_theme_styles">Use Theme Styles</string>
706+
<string name="site_settings_use_theme_styles_summary">Make the block editor look like your theme</string>
705707
<string name="site_settings_password_updated">Password updated</string>
706708
<string name="site_settings_update_password_message">To reconnect the app to your self-hosted site, enter the site\'s new password here.</string>
707709
<string name="site_settings_homepage_settings">Homepage Settings</string>
@@ -971,8 +973,6 @@
971973
<string name="experimental_block_editor_note">Experimental block editor will become the default in a future release and the ability to disable it will be removed.</string>
972974
<string name="experimental_block_editor">Experimental block editor</string>
973975
<string name="experimental_block_editor_description">Access additional block types and settings</string>
974-
<string name="experimental_block_editor_theme_styles">Experimental block editor styles</string>
975-
<string name="experimental_block_editor_theme_styles_description">Apply theme styles to the editor</string>
976976
<string name="experimental_block_editor_plugins">Experimental block editor plugins</string>
977977
<string name="experimental_features_feedback_dialog_title">Share feedback</string>
978978
<string name="experimental_features_feedback_dialog_message">Are you willing to share feedback on the experimental editor?</string>

0 commit comments

Comments
 (0)