diff --git a/src/main/java/eu/siacs/conversations/AppSettings.java b/src/main/java/eu/siacs/conversations/AppSettings.java index fe07997151b2b16d2d0c0415954e88dc6dad5e2a..6ef87b030967280bd7f2e19cbfefa2a85e61287d 100644 --- a/src/main/java/eu/siacs/conversations/AppSettings.java +++ b/src/main/java/eu/siacs/conversations/AppSettings.java @@ -45,6 +45,7 @@ public class AppSettings { public static final String SEND_CRASH_REPORTS = "send_crash_reports"; public static final String COLORFUL_CHAT_BUBBLES = "use_green_background"; public static final String LARGE_FONT = "large_font"; + public static final String SHOW_LINK_PREVIEWS = "show_link_previews"; private static final String ACCEPT_INVITES_FROM_STRANGERS = "accept_invites_from_strangers"; private static final String INSTALLATION_ID = "im.conversations.android.install_id"; @@ -108,6 +109,10 @@ public class AppSettings { return getBooleanPreference(LARGE_FONT, R.bool.large_font); } + public boolean showLinkPreviews() { + return getBooleanPreference(SHOW_LINK_PREVIEWS, R.bool.show_link_previews); + } + public boolean isUseTor() { return getBooleanPreference(USE_TOR, R.bool.use_tor); } diff --git a/src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java b/src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java index d0babb12dd5f5e8e96273861b7e113c0766d75fd..4b276c2ebc17d6122354edfbb67482b4980334bc 100644 --- a/src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java +++ b/src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java @@ -164,6 +164,7 @@ public class MessageAdapter extends ArrayAdapter { private final boolean mForceNames; private final Map lastWebxdcUpdate = new HashMap<>(); private String selectionUuid = null; + private final AppSettings appSettings; public MessageAdapter( final XmppActivity activity, final List messages, final boolean forceNames) { @@ -171,6 +172,7 @@ public class MessageAdapter extends ArrayAdapter { this.audioPlayer = new AudioPlayer(this); this.activity = activity; metrics = getContext().getResources().getDisplayMetrics(); + appSettings = new AppSettings(activity); updatePreferences(); this.mForceNames = forceNames; } @@ -1541,18 +1543,20 @@ public class MessageAdapter extends ArrayAdapter { setTextColor(viewHolder.inReplyTo, bubbleColor); } - final var descriptions = message.getLinkDescriptions(); - viewHolder.link_descriptions.setAdapter(new ArrayAdapter<>(activity, 0, descriptions) { - @Override - public View getView(int position, View view, @NonNull ViewGroup parent) { - final LinkDescriptionBinding binding = DataBindingUtil.inflate(LayoutInflater.from(parent.getContext()), R.layout.link_description, parent, false); - binding.title.setText(getItem(position).findChildContent("title", "https://ogp.me/ns#")); - binding.description.setText(getItem(position).findChildContent("description", "https://ogp.me/ns#")); - binding.url.setText(getItem(position).findChildContent("url", "https://ogp.me/ns#")); - return binding.getRoot(); - } - }); - Util.justifyListViewHeightBasedOnChildren(viewHolder.link_descriptions, (int)(metrics.density * 100), true); + if (appSettings.showLinkPreviews()) { + final var descriptions = message.getLinkDescriptions(); + viewHolder.link_descriptions.setAdapter(new ArrayAdapter<>(activity, 0, descriptions) { + @Override + public View getView(int position, View view, @NonNull ViewGroup parent) { + final LinkDescriptionBinding binding = DataBindingUtil.inflate(LayoutInflater.from(parent.getContext()), R.layout.link_description, parent, false); + binding.title.setText(getItem(position).findChildContent("title", "https://ogp.me/ns#")); + binding.description.setText(getItem(position).findChildContent("description", "https://ogp.me/ns#")); + binding.url.setText(getItem(position).findChildContent("url", "https://ogp.me/ns#")); + return binding.getRoot(); + } + }); + Util.justifyListViewHeightBasedOnChildren(viewHolder.link_descriptions, (int)(metrics.density * 100), true); + } } displayStatus(viewHolder, message, type, bubbleColor); @@ -1626,7 +1630,6 @@ public class MessageAdapter extends ArrayAdapter { } public void updatePreferences() { - final AppSettings appSettings = new AppSettings(activity); this.bubbleDesign = new BubbleDesign(appSettings.isColorfulChatBubbles(), appSettings.isLargeFont()); } diff --git a/src/main/res/values/defaults.xml b/src/main/res/values/defaults.xml index b1f251a64da3e19f54962276201a097c53dce3c5..8a6d2c8b4f892d88e9e111bd37720055829f1d7b 100644 --- a/src/main/res/values/defaults.xml +++ b/src/main/res/values/defaults.xml @@ -52,6 +52,7 @@ false true true + true true true diff --git a/src/main/res/xml/preferences_interface.xml b/src/main/res/xml/preferences_interface.xml index a08013b4211d4362bf9ca35660b682e36253f959..f5c83bcc733ce737656f27b0a16fdecf858259a3 100644 --- a/src/main/res/xml/preferences_interface.xml +++ b/src/main/res/xml/preferences_interface.xml @@ -99,6 +99,12 @@ android:key="show_dynamic_tags" android:summary="@string/pref_show_dynamic_tags_summary" android:title="@string/pref_show_dynamic_tags" /> +