Merge pull request #745 from veyndan/string-sanitation

Simplify string sanitation logic
This commit is contained in:
Yusuke Matsubara 2017-06-28 09:15:10 +09:00 committed by GitHub
commit f8bb106b83
2 changed files with 8 additions and 20 deletions

View file

@ -64,7 +64,7 @@ public class NearbyInfoDialog extends OverlayDialog {
private void getArticleLink(Bundle bundle) { private void getArticleLink(Bundle bundle) {
this.sitelinks = bundle.getParcelable(ARG_SITE_LINK); this.sitelinks = bundle.getParcelable(ARG_SITE_LINK);
if (sitelinks.getWikipediaLink() == null) { if (sitelinks.getWikipediaLink().equals(Uri.EMPTY)) {
goToButton.setVisibility(View.GONE); goToButton.setVisibility(View.GONE);
} }
@ -87,16 +87,16 @@ public class NearbyInfoDialog extends OverlayDialog {
MenuItem wikiDataArticle = popupMenu.getMenu() MenuItem wikiDataArticle = popupMenu.getMenu()
.findItem(R.id.nearby_info_menu_wikidata_article); .findItem(R.id.nearby_info_menu_wikidata_article);
commonsArticle.setEnabled(sitelinks.getCommonsLink() != null); commonsArticle.setEnabled(!sitelinks.getCommonsLink().equals(Uri.EMPTY));
wikiDataArticle.setEnabled(sitelinks.getWikidataLink() != null); wikiDataArticle.setEnabled(!sitelinks.getWikidataLink().equals(Uri.EMPTY));
popupMenu.setOnMenuItemClickListener(menuListener); popupMenu.setOnMenuItemClickListener(menuListener);
popupMenu.show(); popupMenu.show();
} }
private boolean showMenu() { private boolean showMenu() {
return sitelinks.getCommonsLink() != null return !sitelinks.getCommonsLink().equals(Uri.EMPTY)
|| sitelinks.getWikidataLink() != null; || !sitelinks.getWikidataLink().equals(Uri.EMPTY);
} }
private PopupMenu.OnMenuItemClickListener menuListener = new PopupMenu private PopupMenu.OnMenuItemClickListener menuListener = new PopupMenu

View file

@ -5,8 +5,6 @@ import android.os.Parcel;
import android.os.Parcelable; import android.os.Parcelable;
import android.support.annotation.Nullable; import android.support.annotation.Nullable;
import fr.free.nrw.commons.Utils;
public class Sitelinks implements Parcelable { public class Sitelinks implements Parcelable {
private final String wikipediaLink; private final String wikipediaLink;
private final String commonsLink; private final String commonsLink;
@ -43,31 +41,21 @@ public class Sitelinks implements Parcelable {
} }
}; };
@Nullable
public Uri getWikipediaLink() { public Uri getWikipediaLink() {
return sanitiseString(wikipediaLink); return sanitiseString(wikipediaLink);
} }
@Nullable
public Uri getCommonsLink() { public Uri getCommonsLink() {
return sanitiseString(commonsLink); return sanitiseString(commonsLink);
} }
@Nullable
public Uri getWikidataLink() { public Uri getWikidataLink() {
return sanitiseString(wikidataLink); return sanitiseString(wikidataLink);
} }
@Nullable private static Uri sanitiseString(String stringUrl) {
private Uri sanitiseString(String stringUrl) { String sanitisedStringUrl = stringUrl.replaceAll("[<>\n\r]", "").trim();
stringUrl = stringUrl return Uri.parse(sanitisedStringUrl);
.replaceAll("<", "")
.replaceAll(">", "")
.replaceAll("[\n\r]", "");
if (!Utils.isNullOrWhiteSpace(stringUrl) && stringUrl != null) {
return Uri.parse(stringUrl);
}
return null;
} }
private Sitelinks(Sitelinks.Builder builder) { private Sitelinks(Sitelinks.Builder builder) {