Skip to content

Commit e50da1d

Browse files
authored
Merge pull request #19583 from wordpress-mobile/analysis/use-updated-and-null-proof-theme-model-class
[Nullability Annotations to Java Classes] Use Updated and Null Proof `ThemeModel` Class (`breaking`)
2 parents 1ef03c0 + 7a620fa commit e50da1d

5 files changed

Lines changed: 60 additions & 20 deletions

File tree

WordPress/src/main/java/org/wordpress/android/ui/themes/ThemeBrowserActivity.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -410,7 +410,7 @@ private void fetchInstalledThemesIfJetpackSite() {
410410
}
411411
}
412412

413-
private void activateTheme(String themeId) {
413+
private void activateTheme(@NonNull String themeId) {
414414
if (!mSite.isUsingWpComRestApi()) {
415415
AppLog.i(T.THEMES, "Theme activation requires a site using WP.com REST API. Aborting request.");
416416
return;

WordPress/src/main/java/org/wordpress/android/ui/themes/ThemeBrowserAdapter.java

Lines changed: 24 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,10 @@ public View getView(int position, View convertView, ViewGroup parent) {
170170
}
171171

172172
@SuppressWarnings("deprecation")
173-
private void configureCardView(ThemeViewHolder themeViewHolder, boolean isCurrent) {
173+
private void configureCardView(
174+
@NonNull ThemeViewHolder themeViewHolder,
175+
boolean isCurrent
176+
) {
174177
if (isCurrent) {
175178
ColorStateList color = ContextExtensionsKt.getColorStateListFromAttribute(
176179
mContext,
@@ -200,10 +203,18 @@ private void configureCardView(ThemeViewHolder themeViewHolder, boolean isCurren
200203
}
201204
}
202205

203-
private void configureImageView(ThemeViewHolder themeViewHolder, String screenshotURL, final String themeId,
204-
final boolean isCurrent) {
205-
mImageManager.load(themeViewHolder.mImageView, ImageType.THEME, getUrlWithWidth(screenshotURL),
206-
ScaleType.FIT_CENTER);
206+
private void configureImageView(
207+
@NonNull ThemeViewHolder themeViewHolder,
208+
@NonNull String screenshotURL,
209+
@NonNull final String themeId,
210+
final boolean isCurrent
211+
) {
212+
mImageManager.load(
213+
themeViewHolder.mImageView,
214+
ImageType.THEME,
215+
getUrlWithWidth(screenshotURL),
216+
ScaleType.FIT_CENTER
217+
);
207218

208219
themeViewHolder.mCardView.setOnClickListener(new View.OnClickListener() {
209220
@Override
@@ -217,16 +228,21 @@ public void onClick(View v) {
217228
});
218229
}
219230

220-
private String getUrlWithWidth(String screenshotURL) {
231+
@NonNull
232+
private String getUrlWithWidth(@NonNull String screenshotURL) {
221233
if (screenshotURL.contains("?")) {
222234
return screenshotURL + "&" + THEME_IMAGE_PARAMETER + mViewWidth;
223235
} else {
224236
return screenshotURL + "?" + THEME_IMAGE_PARAMETER + mViewWidth;
225237
}
226238
}
227239

228-
private void configureImageButton(ThemeViewHolder themeViewHolder, final String themeId, final boolean isPremium,
229-
boolean isCurrent) {
240+
private void configureImageButton(
241+
@NonNull ThemeViewHolder themeViewHolder,
242+
@NonNull final String themeId,
243+
final boolean isPremium,
244+
boolean isCurrent
245+
) {
230246
final PopupMenu popupMenu = new PopupMenu(mContext, themeViewHolder.mImageButton);
231247
popupMenu.getMenuInflater().inflate(R.menu.theme_more, popupMenu.getMenu());
232248

WordPress/src/main/java/org/wordpress/android/ui/themes/ThemeBrowserFragment.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -242,7 +242,7 @@ class ThemeBrowserFragment : Fragment(), AbsListView.RecyclerListener,
242242
}
243243
}
244244

245-
fun setCurrentThemeId(currentThemeId: String?) {
245+
fun setCurrentThemeId(currentThemeId: String) {
246246
this.currentThemeId = currentThemeId
247247
refreshView()
248248
}

WordPress/src/main/java/org/wordpress/android/ui/themes/ThemeWebActivity.java

Lines changed: 33 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,12 @@ public static String getSiteLoginUrl(SiteModel site) {
5454
return WPWebViewActivity.getSiteLoginUrl(site);
5555
}
5656

57-
public static void openTheme(Activity activity, @NonNull SiteModel site, @NonNull ThemeModel theme,
58-
@NonNull ThemeWebActivityType type) {
57+
public static void openTheme(
58+
Activity activity,
59+
@NonNull SiteModel site,
60+
@NonNull ThemeModel theme,
61+
@NonNull ThemeWebActivityType type
62+
) {
5963
String url = getUrl(site, theme, type, !theme.isFree());
6064
if (TextUtils.isEmpty(url)) {
6165
ToastUtils.showToast(activity, R.string.could_not_load_theme);
@@ -72,7 +76,12 @@ public static void openTheme(Activity activity, @NonNull SiteModel site, @NonNul
7276
}
7377
}
7478

75-
private static void openWPCOMURL(Activity activity, String url, ThemeModel theme, SiteModel site) {
79+
private static void openWPCOMURL(
80+
Activity activity,
81+
String url,
82+
@NonNull ThemeModel theme,
83+
SiteModel site
84+
) {
7685
if (activity == null) {
7786
AppLog.e(AppLog.T.UTILS, "ThemeWebActivity requires a non-null activity");
7887
return;
@@ -95,6 +104,7 @@ private static void openWPCOMURL(Activity activity, String url, ThemeModel theme
95104
activity.startActivityForResult(intent, ThemeBrowserActivity.ACTIVATE_THEME);
96105
}
97106

107+
@Nullable
98108
public static String getIdentifierForCustomizer(@NonNull SiteModel site, @NonNull ThemeModel theme) {
99109
if (site.isJetpackConnected()) {
100110
return theme.getThemeId();
@@ -103,8 +113,13 @@ public static String getIdentifierForCustomizer(@NonNull SiteModel site, @NonNul
103113
}
104114
}
105115

106-
public static String getUrl(@NonNull SiteModel site, @NonNull ThemeModel theme, @NonNull ThemeWebActivityType type,
107-
boolean isPremium) {
116+
@Nullable
117+
public static String getUrl(
118+
@NonNull SiteModel site,
119+
@NonNull ThemeModel theme,
120+
@NonNull ThemeWebActivityType type,
121+
boolean isPremium
122+
) {
108123
if (theme.isWpComTheme()) {
109124
switch (type) {
110125
case PREVIEW:
@@ -113,10 +128,14 @@ public static String getUrl(@NonNull SiteModel site, @NonNull ThemeModel theme,
113128
.format(THEME_URL_PREVIEW, UrlUtils.getHost(site.getUrl()), domain, theme.getThemeId());
114129
case DEMO:
115130
String url = theme.getDemoUrl();
116-
if (url.contains("?")) {
117-
return url + "&" + THEME_URL_DEMO_PARAMETER;
131+
if (url != null) {
132+
if (url.contains("?")) {
133+
return url + "&" + THEME_URL_DEMO_PARAMETER;
134+
} else {
135+
return url + "?" + THEME_URL_DEMO_PARAMETER;
136+
}
118137
} else {
119-
return url + "?" + THEME_URL_DEMO_PARAMETER;
138+
return null;
120139
}
121140
case DETAILS:
122141
return String.format(THEME_URL_DETAILS, theme.getThemeId());
@@ -126,7 +145,12 @@ public static String getUrl(@NonNull SiteModel site, @NonNull ThemeModel theme,
126145
} else {
127146
switch (type) {
128147
case PREVIEW:
129-
return site.getAdminUrl() + "customize.php?theme=" + getIdentifierForCustomizer(site, theme);
148+
String identifier = getIdentifierForCustomizer(site, theme);
149+
if (identifier != null) {
150+
return site.getAdminUrl() + "customize.php?theme=" + identifier;
151+
} else {
152+
return null;
153+
}
130154
case DEMO:
131155
return site.getAdminUrl() + "themes.php?theme=" + theme.getThemeId();
132156
case DETAILS:

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ ext {
2222
automatticTracksVersion = '3.3.0'
2323
gutenbergMobileVersion = 'v1.109.1'
2424
wordPressAztecVersion = 'v1.8.0'
25-
wordPressFluxCVersion = 'trunk-cdc8effb2affbb1c6bcf01f6606c847f87071d28'
25+
wordPressFluxCVersion = 'trunk-b4e51008f7200eba1dfdd22ca370fce450ce93b0'
2626
wordPressLoginVersion = '1.10.0'
2727
wordPressPersistentEditTextVersion = '1.0.2'
2828
wordPressUtilsVersion = '3.10.0'

0 commit comments

Comments
 (0)