diff --git a/app/src/main/java/com/cappielloantonio/play/model/Artist.java b/app/src/main/java/com/cappielloantonio/play/model/Artist.java
index 16650eb3..4304f206 100644
--- a/app/src/main/java/com/cappielloantonio/play/model/Artist.java
+++ b/app/src/main/java/com/cappielloantonio/play/model/Artist.java
@@ -34,6 +34,7 @@ public class Artist implements Parcelable {
public boolean favorite;
public String bio;
public String imageUrl;
+ public String lastfm;
public Artist(ArtistID3 artistID3) {
this.id = artistID3.getId();
@@ -67,6 +68,7 @@ public class Artist implements Parcelable {
this.similarArtists = MappingUtil.mapSimilarArtist(artistInfo2.getSimilarArtists());
this.bio = artistInfo2.getBiography();
this.imageUrl = artistInfo2.getLargeImageUrl();
+ this.lastfm = artistInfo2.getLastFmUrl();
}
public Artist(String id, String name) {
@@ -170,6 +172,14 @@ public class Artist implements Parcelable {
this.imageUrl = imageUrl;
}
+ public String getLastfm() {
+ return lastfm;
+ }
+
+ public void setLastfm(String lastfm) {
+ this.lastfm = lastfm;
+ }
+
@Override
public boolean equals(Object o) {
if (this == o) return true;
diff --git a/app/src/main/java/com/cappielloantonio/play/ui/fragment/ArtistPageFragment.java b/app/src/main/java/com/cappielloantonio/play/ui/fragment/ArtistPageFragment.java
index 980ece32..9dfce0dd 100644
--- a/app/src/main/java/com/cappielloantonio/play/ui/fragment/ArtistPageFragment.java
+++ b/app/src/main/java/com/cappielloantonio/play/ui/fragment/ArtistPageFragment.java
@@ -1,8 +1,10 @@
package com.cappielloantonio.play.ui.fragment;
import android.annotation.SuppressLint;
+import android.content.Intent;
import android.graphics.BlendMode;
import android.graphics.BlendModeColorFilter;
+import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
@@ -110,13 +112,23 @@ public class ArtistPageFragment extends Fragment {
}
private void initArtistInfo() {
+
artistPageViewModel.getArtistInfo(artistPageViewModel.getArtist().getId()).observe(requireActivity(), artist -> {
+ if (bind != null) bind.artistPageBioSector.setVisibility(artist.getBio() != null ? View.VISIBLE : View.GONE);
+ if (bind != null) bind.bioMoreTextViewClickable.setVisibility(artist.getLastfm() != null ? View.VISIBLE : View.GONE);
+
CustomGlideRequest.Builder
.from(requireContext(), null, CustomGlideRequest.ARTIST_PIC, artist.getImageUrl())
.build()
.into(bind.artistBackdropImageView);
- bind.bioTextView.setText(MusicUtil.HTMLParser(artist.getBio()));
+ bind.bioTextView.setText(MusicUtil.forceReadableString(artist.getBio()));
+
+ bind.bioMoreTextViewClickable.setOnClickListener(v -> {
+ Intent intent = new Intent(Intent.ACTION_VIEW);
+ intent.setData(Uri.parse(artist.getLastfm()));
+ startActivity(intent);
+ });
});
}
diff --git a/app/src/main/java/com/cappielloantonio/play/util/MusicUtil.java b/app/src/main/java/com/cappielloantonio/play/util/MusicUtil.java
index 9c2b0be5..abe864d3 100644
--- a/app/src/main/java/com/cappielloantonio/play/util/MusicUtil.java
+++ b/app/src/main/java/com/cappielloantonio/play/util/MusicUtil.java
@@ -9,6 +9,7 @@ import com.cappielloantonio.play.model.Song;
import com.google.android.exoplayer2.MediaItem;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.List;
import java.util.Locale;
import java.util.Map;
@@ -61,6 +62,17 @@ public class MusicUtil {
return "";
}
+ public static String forceReadableString(String string) {
+ if (string != null) {
+ return getReadableString(string)
+ .replaceAll(""", "\"")
+ .replaceAll("'", "'")
+ .replaceAll("]+)>((?:.(?!))*.)", "");
+ }
+
+ return "";
+ }
+
public static List getReadableStrings(List strings) {
List readableStrings = new ArrayList<>();
@@ -93,21 +105,4 @@ public class MusicUtil {
String uri = MusicUtil.getSongFileUri(song);
return MediaItem.fromUri(uri);
}
-
- public static CharSequence HTMLParser(String toParse) {
- if (toParse != null && containsHTML(toParse)) {
- return Html.fromHtml(toParse, Html.FROM_HTML_MODE_LEGACY);
- }
- else {
- return toParse;
- }
- }
-
- private static boolean containsHTML(String toParse) {
- String HTML_PATTERN = "<(\"[^\"]*\"|'[^']*'|[^'\">])*>";
- Pattern pattern = Pattern.compile(HTML_PATTERN);
-
- Matcher matcher = pattern.matcher(toParse);
- return matcher.find();
- }
}
diff --git a/app/src/main/res/layout/fragment_artist_page.xml b/app/src/main/res/layout/fragment_artist_page.xml
index 933eecf9..54259a32 100644
--- a/app/src/main/res/layout/fragment_artist_page.xml
+++ b/app/src/main/res/layout/fragment_artist_page.xml
@@ -134,7 +134,7 @@
android:layout_weight="1"
android:paddingStart="16dp"
android:paddingEnd="8dp"
- android:text="Bio" />
+ android:text="Biography" />
+ android:paddingTop="8dp"
+ android:paddingBottom="8dp"/>