From fc7574146d180b5ecdf274186bc310f325ced7a9 Mon Sep 17 00:00:00 2001 From: Petros Paraskevopoulos Date: Thu, 9 Nov 2023 14:47:27 +0200 Subject: [PATCH 1/8] Build: Update fluxc version to pr hash (#2897) This 'FluxC' PR hash updates the library to that branch version where the 'Theme' model is updated to its new null proof version. FluxC PR: https://github.com/wordpress-mobile/ WordPress-FluxC-Android/pull/2897 This step is required in order to check that these 'FluxC' related changes work as expected for WPAndroid. --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 97f3fcd104e1..95577ca7cd28 100644 --- a/build.gradle +++ b/build.gradle @@ -22,7 +22,7 @@ ext { automatticTracksVersion = '3.3.0' gutenbergMobileVersion = 'v1.107.0' wordPressAztecVersion = 'v1.8.0' - wordPressFluxCVersion = 'trunk-e71a4dc765b7785f753e9224512e0a76c43104e4' + wordPressFluxCVersion = '2897-1dfeb902f2ce54b7fa376829919fae29e53ef4d4' wordPressLoginVersion = 'trunk-9963d78096edf65f8704b803e5b93c08fc9174cd' wordPressPersistentEditTextVersion = '1.0.2' wordPressUtilsVersion = '3.10.0' From 10d8f9b94a192e1d2bf2d8e4415522b182fa1f42 Mon Sep 17 00:00:00 2001 From: Petros Paraskevopoulos Date: Thu, 9 Nov 2023 15:31:55 +0200 Subject: [PATCH 2/8] Analysis: Mark theme theme id as non-null where possible --- .../android/ui/themes/ThemeBrowserActivity.java | 2 +- .../android/ui/themes/ThemeBrowserAdapter.java | 16 ++++++++++++---- .../android/ui/themes/ThemeBrowserFragment.kt | 2 +- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/WordPress/src/main/java/org/wordpress/android/ui/themes/ThemeBrowserActivity.java b/WordPress/src/main/java/org/wordpress/android/ui/themes/ThemeBrowserActivity.java index 98f56478e336..25d56f98db72 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/themes/ThemeBrowserActivity.java +++ b/WordPress/src/main/java/org/wordpress/android/ui/themes/ThemeBrowserActivity.java @@ -409,7 +409,7 @@ private void fetchInstalledThemesIfJetpackSite() { } } - private void activateTheme(String themeId) { + private void activateTheme(@NonNull String themeId) { if (!mSite.isUsingWpComRestApi()) { AppLog.i(T.THEMES, "Theme activation requires a site using WP.com REST API. Aborting request."); return; diff --git a/WordPress/src/main/java/org/wordpress/android/ui/themes/ThemeBrowserAdapter.java b/WordPress/src/main/java/org/wordpress/android/ui/themes/ThemeBrowserAdapter.java index 900feb389b1b..167be90506e1 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/themes/ThemeBrowserAdapter.java +++ b/WordPress/src/main/java/org/wordpress/android/ui/themes/ThemeBrowserAdapter.java @@ -200,8 +200,12 @@ private void configureCardView(ThemeViewHolder themeViewHolder, boolean isCurren } } - private void configureImageView(ThemeViewHolder themeViewHolder, String screenshotURL, final String themeId, - final boolean isCurrent) { + private void configureImageView( + ThemeViewHolder themeViewHolder, + String screenshotURL, + @NonNull final String themeId, + final boolean isCurrent + ) { mImageManager.load(themeViewHolder.mImageView, ImageType.THEME, getUrlWithWidth(screenshotURL), ScaleType.FIT_CENTER); @@ -225,8 +229,12 @@ private String getUrlWithWidth(String screenshotURL) { } } - private void configureImageButton(ThemeViewHolder themeViewHolder, final String themeId, final boolean isPremium, - boolean isCurrent) { + private void configureImageButton( + ThemeViewHolder themeViewHolder, + @NonNull final String themeId, + final boolean isPremium, + boolean isCurrent + ) { final PopupMenu popupMenu = new PopupMenu(mContext, themeViewHolder.mImageButton); popupMenu.getMenuInflater().inflate(R.menu.theme_more, popupMenu.getMenu()); diff --git a/WordPress/src/main/java/org/wordpress/android/ui/themes/ThemeBrowserFragment.kt b/WordPress/src/main/java/org/wordpress/android/ui/themes/ThemeBrowserFragment.kt index ece23f4c4270..40fb9c0610ec 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/themes/ThemeBrowserFragment.kt +++ b/WordPress/src/main/java/org/wordpress/android/ui/themes/ThemeBrowserFragment.kt @@ -236,7 +236,7 @@ class ThemeBrowserFragment : Fragment(), AbsListView.RecyclerListener, } } - fun setCurrentThemeId(currentThemeId: String?) { + fun setCurrentThemeId(currentThemeId: String) { this.currentThemeId = currentThemeId refreshView() } From 3d7c164cb298add53f1faea1b084c5d670d242d8 Mon Sep 17 00:00:00 2001 From: Petros Paraskevopoulos Date: Thu, 9 Nov 2023 15:34:45 +0200 Subject: [PATCH 3/8] Analysis: Mark theme screenshot url as non-null where possible --- .../android/ui/themes/ThemeBrowserAdapter.java | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/WordPress/src/main/java/org/wordpress/android/ui/themes/ThemeBrowserAdapter.java b/WordPress/src/main/java/org/wordpress/android/ui/themes/ThemeBrowserAdapter.java index 167be90506e1..264c9e4cc86e 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/themes/ThemeBrowserAdapter.java +++ b/WordPress/src/main/java/org/wordpress/android/ui/themes/ThemeBrowserAdapter.java @@ -202,12 +202,16 @@ private void configureCardView(ThemeViewHolder themeViewHolder, boolean isCurren private void configureImageView( ThemeViewHolder themeViewHolder, - String screenshotURL, + @NonNull String screenshotURL, @NonNull final String themeId, final boolean isCurrent ) { - mImageManager.load(themeViewHolder.mImageView, ImageType.THEME, getUrlWithWidth(screenshotURL), - ScaleType.FIT_CENTER); + mImageManager.load( + themeViewHolder.mImageView, + ImageType.THEME, + getUrlWithWidth(screenshotURL), + ScaleType.FIT_CENTER + ); themeViewHolder.mCardView.setOnClickListener(new View.OnClickListener() { @Override @@ -221,7 +225,8 @@ public void onClick(View v) { }); } - private String getUrlWithWidth(String screenshotURL) { + @NonNull + private String getUrlWithWidth(@NonNull String screenshotURL) { if (screenshotURL.contains("?")) { return screenshotURL + "&" + THEME_IMAGE_PARAMETER + mViewWidth; } else { From 1e2edeb2e9fb242f1872b363da45aaaaef5b2931 Mon Sep 17 00:00:00 2001 From: Petros Paraskevopoulos Date: Thu, 9 Nov 2023 15:35:48 +0200 Subject: [PATCH 4/8] Analysis: Mark theme view holder as non-null where possible --- .../wordpress/android/ui/themes/ThemeBrowserAdapter.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/WordPress/src/main/java/org/wordpress/android/ui/themes/ThemeBrowserAdapter.java b/WordPress/src/main/java/org/wordpress/android/ui/themes/ThemeBrowserAdapter.java index 264c9e4cc86e..a4d46b6b4198 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/themes/ThemeBrowserAdapter.java +++ b/WordPress/src/main/java/org/wordpress/android/ui/themes/ThemeBrowserAdapter.java @@ -170,7 +170,10 @@ public View getView(int position, View convertView, ViewGroup parent) { } @SuppressWarnings("deprecation") - private void configureCardView(ThemeViewHolder themeViewHolder, boolean isCurrent) { + private void configureCardView( + @NonNull ThemeViewHolder themeViewHolder, + boolean isCurrent + ) { if (isCurrent) { ColorStateList color = ContextExtensionsKt.getColorStateListFromAttribute( mContext, @@ -201,7 +204,7 @@ private void configureCardView(ThemeViewHolder themeViewHolder, boolean isCurren } private void configureImageView( - ThemeViewHolder themeViewHolder, + @NonNull ThemeViewHolder themeViewHolder, @NonNull String screenshotURL, @NonNull final String themeId, final boolean isCurrent @@ -235,7 +238,7 @@ private String getUrlWithWidth(@NonNull String screenshotURL) { } private void configureImageButton( - ThemeViewHolder themeViewHolder, + @NonNull ThemeViewHolder themeViewHolder, @NonNull final String themeId, final boolean isPremium, boolean isCurrent From 744ded323965c035d90980953a109863df86e6a8 Mon Sep 17 00:00:00 2001 From: Petros Paraskevopoulos Date: Thu, 9 Nov 2023 15:38:32 +0200 Subject: [PATCH 5/8] Analysis: Mark theme as non-null on open theme and wp com url --- .../android/ui/themes/ThemeWebActivity.java | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/WordPress/src/main/java/org/wordpress/android/ui/themes/ThemeWebActivity.java b/WordPress/src/main/java/org/wordpress/android/ui/themes/ThemeWebActivity.java index a8ea5f98baf9..75daece37629 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/themes/ThemeWebActivity.java +++ b/WordPress/src/main/java/org/wordpress/android/ui/themes/ThemeWebActivity.java @@ -54,8 +54,12 @@ public static String getSiteLoginUrl(SiteModel site) { return WPWebViewActivity.getSiteLoginUrl(site); } - public static void openTheme(Activity activity, @NonNull SiteModel site, @NonNull ThemeModel theme, - @NonNull ThemeWebActivityType type) { + public static void openTheme( + Activity activity, + @NonNull SiteModel site, + @NonNull ThemeModel theme, + @NonNull ThemeWebActivityType type + ) { String url = getUrl(site, theme, type, !theme.isFree()); if (TextUtils.isEmpty(url)) { ToastUtils.showToast(activity, R.string.could_not_load_theme); @@ -72,7 +76,12 @@ public static void openTheme(Activity activity, @NonNull SiteModel site, @NonNul } } - private static void openWPCOMURL(Activity activity, String url, ThemeModel theme, SiteModel site) { + private static void openWPCOMURL( + Activity activity, + String url, + @NonNull ThemeModel theme, + SiteModel site + ) { if (activity == null) { AppLog.e(AppLog.T.UTILS, "ThemeWebActivity requires a non-null activity"); return; From 6ab1d0e1ec57a073de22c0264ae9dda84823fb36 Mon Sep 17 00:00:00 2001 From: Petros Paraskevopoulos Date: Thu, 9 Nov 2023 15:39:54 +0200 Subject: [PATCH 6/8] Analysis: Mark theme demo rul as nullable where possible --- .../android/ui/themes/ThemeWebActivity.java | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/WordPress/src/main/java/org/wordpress/android/ui/themes/ThemeWebActivity.java b/WordPress/src/main/java/org/wordpress/android/ui/themes/ThemeWebActivity.java index 75daece37629..9f32a6b315af 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/themes/ThemeWebActivity.java +++ b/WordPress/src/main/java/org/wordpress/android/ui/themes/ThemeWebActivity.java @@ -104,6 +104,7 @@ private static void openWPCOMURL( activity.startActivityForResult(intent, ThemeBrowserActivity.ACTIVATE_THEME); } + @Nullable public static String getIdentifierForCustomizer(@NonNull SiteModel site, @NonNull ThemeModel theme) { if (site.isJetpackConnected()) { return theme.getThemeId(); @@ -112,8 +113,13 @@ public static String getIdentifierForCustomizer(@NonNull SiteModel site, @NonNul } } - public static String getUrl(@NonNull SiteModel site, @NonNull ThemeModel theme, @NonNull ThemeWebActivityType type, - boolean isPremium) { + @Nullable + public static String getUrl( + @NonNull SiteModel site, + @NonNull ThemeModel theme, + @NonNull ThemeWebActivityType type, + boolean isPremium + ) { if (theme.isWpComTheme()) { switch (type) { case PREVIEW: @@ -135,7 +141,12 @@ public static String getUrl(@NonNull SiteModel site, @NonNull ThemeModel theme, } else { switch (type) { case PREVIEW: - return site.getAdminUrl() + "customize.php?theme=" + getIdentifierForCustomizer(site, theme); + String identifier = getIdentifierForCustomizer(site, theme); + if (identifier != null) { + return site.getAdminUrl() + "customize.php?theme=" + identifier; + } else { + return null; + } case DEMO: return site.getAdminUrl() + "themes.php?theme=" + theme.getThemeId(); case DETAILS: From 24c597de12730a9eabcc9aed936eeda441e0308f Mon Sep 17 00:00:00 2001 From: Petros Paraskevopoulos Date: Thu, 9 Nov 2023 15:41:55 +0200 Subject: [PATCH 7/8] Analysis: Mark theme demo rul as nullable where possible --- .../wordpress/android/ui/themes/ThemeWebActivity.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/WordPress/src/main/java/org/wordpress/android/ui/themes/ThemeWebActivity.java b/WordPress/src/main/java/org/wordpress/android/ui/themes/ThemeWebActivity.java index 9f32a6b315af..c49fe76d2f01 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/themes/ThemeWebActivity.java +++ b/WordPress/src/main/java/org/wordpress/android/ui/themes/ThemeWebActivity.java @@ -128,10 +128,14 @@ public static String getUrl( .format(THEME_URL_PREVIEW, UrlUtils.getHost(site.getUrl()), domain, theme.getThemeId()); case DEMO: String url = theme.getDemoUrl(); - if (url.contains("?")) { - return url + "&" + THEME_URL_DEMO_PARAMETER; + if (url != null) { + if (url.contains("?")) { + return url + "&" + THEME_URL_DEMO_PARAMETER; + } else { + return url + "?" + THEME_URL_DEMO_PARAMETER; + } } else { - return url + "?" + THEME_URL_DEMO_PARAMETER; + return null; } case DETAILS: return String.format(THEME_URL_DETAILS, theme.getThemeId()); From 7a620fabe77bef76358bd8f7b8a6248fac9a2a1d Mon Sep 17 00:00:00 2001 From: Antonis Lilis Date: Mon, 4 Dec 2023 17:10:59 +0200 Subject: [PATCH 8/8] Updates FluxC reference --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index b603545b0681..44d6b2f96300 100644 --- a/build.gradle +++ b/build.gradle @@ -22,7 +22,7 @@ ext { automatticTracksVersion = '3.3.0' gutenbergMobileVersion = 'v1.109.1' wordPressAztecVersion = 'v1.8.0' - wordPressFluxCVersion = '2897-6a898de293734581716dd45b6bfa1612d7196bf6' + wordPressFluxCVersion = 'trunk-b4e51008f7200eba1dfdd22ca370fce450ce93b0' wordPressLoginVersion = '1.10.0' wordPressPersistentEditTextVersion = '1.0.2' wordPressUtilsVersion = '3.10.0'