diff --git a/src/cheogram/res/drawable/bitcoin_24dp.xml b/src/cheogram/res/drawable/bitcoin_24dp.xml
new file mode 100644
index 0000000000000000000000000000000000000000..403f4e1f4ad63bf1d9b35962e24e5fe43cc418eb
--- /dev/null
+++ b/src/cheogram/res/drawable/bitcoin_24dp.xml
@@ -0,0 +1,5 @@
+
+
+
diff --git a/src/cheogram/res/drawable/bitcoin_cash_24dp.xml b/src/cheogram/res/drawable/bitcoin_cash_24dp.xml
new file mode 100644
index 0000000000000000000000000000000000000000..efd65988c86ec31eb4ccbe3e5505f2e457d55f83
--- /dev/null
+++ b/src/cheogram/res/drawable/bitcoin_cash_24dp.xml
@@ -0,0 +1,5 @@
+
+
+
diff --git a/src/cheogram/res/drawable/liberapay.xml b/src/cheogram/res/drawable/liberapay.xml
new file mode 100644
index 0000000000000000000000000000000000000000..cd3f2f52b628c8e814c1c950909563615b6cfed9
--- /dev/null
+++ b/src/cheogram/res/drawable/liberapay.xml
@@ -0,0 +1,5 @@
+
+
+
diff --git a/src/cheogram/res/drawable/patreon.xml b/src/cheogram/res/drawable/patreon.xml
new file mode 100644
index 0000000000000000000000000000000000000000..7e315ac4baec24a19448d301eb71f2c04677b241
--- /dev/null
+++ b/src/cheogram/res/drawable/patreon.xml
@@ -0,0 +1,5 @@
+
+
+
diff --git a/src/main/java/eu/siacs/conversations/ui/ContactDetailsActivity.java b/src/main/java/eu/siacs/conversations/ui/ContactDetailsActivity.java
index 3b4ff5bdd805b6cf6abd78ac9321a9c7b076fab5..609cbc0073e8301bc429532fb29c0def73d937de 100644
--- a/src/main/java/eu/siacs/conversations/ui/ContactDetailsActivity.java
+++ b/src/main/java/eu/siacs/conversations/ui/ContactDetailsActivity.java
@@ -828,6 +828,22 @@ public class ContactDetailsActivity extends OmemoActivity implements OnAccountUp
binding.command.setText(uri.getSchemeSpecificPart());
binding.command.setCompoundDrawablesRelativeWithIntrinsicBounds(getDrawable(R.drawable.ic_email_24dp), null, null, null);
binding.command.setCompoundDrawablePadding(20);
+ } else if (uri.getScheme().equals("bitcoin")) {
+ binding.command.setText(uri.getSchemeSpecificPart());
+ binding.command.setCompoundDrawablesRelativeWithIntrinsicBounds(getDrawable(R.drawable.bitcoin_24dp), null, null, null);
+ binding.command.setCompoundDrawablePadding(20);
+ } else if (uri.getScheme().equals("bitcoincash")) {
+ binding.command.setText(uri.getSchemeSpecificPart());
+ binding.command.setCompoundDrawablesRelativeWithIntrinsicBounds(getDrawable(R.drawable.bitcoin_cash_24dp), null, null, null);
+ binding.command.setCompoundDrawablePadding(20);
+ } else if (uri.getScheme().equals("https") && "liberapay.com".equals(uri.getHost())) {
+ binding.command.setText(uri.getPath().substring(1));
+ binding.command.setCompoundDrawablesRelativeWithIntrinsicBounds(getDrawable(R.drawable.liberapay), null, null, null);
+ binding.command.setCompoundDrawablePadding(20);
+ } else if (uri.getScheme().equals("https") && ("www.patreon.com".equals(uri.getHost()) || "patreon.com".equals(uri.getHost()))) {
+ binding.command.setText(uri.getPath().replaceAll("^/(?:c/)?", ""));
+ binding.command.setCompoundDrawablesRelativeWithIntrinsicBounds(getDrawable(R.drawable.patreon), null, null, null);
+ binding.command.setCompoundDrawablePadding(20);
} else if (uri.getScheme().equals("http") || uri.getScheme().equals("https")) {
binding.command.setText(uri.toString());
binding.command.setCompoundDrawablesRelativeWithIntrinsicBounds(getDrawable(R.drawable.ic_link_24dp), null, null, null);