Support me command in replies

Stephen Paul Weber created

And guard against edge case crash

Change summary

src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java | 10 
1 file changed, 5 insertions(+), 5 deletions(-)

Detailed changes

src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java 🔗

@@ -629,10 +629,6 @@ public class MessageAdapter extends ArrayAdapter<Message> {
             final String nick = UIHelper.getMessageDisplayName(message);
             SpannableStringBuilder body = getSpannableBody(message);
             final var processMarkup = body.getSpans(0, body.length(), Message.PlainTextSpan.class).length > 0;
-            boolean hasMeCommand = message.hasMeCommand();
-            if (hasMeCommand) {
-                body = body.replace(0, Message.ME_COMMAND.length(), nick + " ");
-            }
             if (body.length() > Config.MAX_DISPLAY_MESSAGE_CHARS) {
                 body = new SpannableStringBuilder(body, 0, Config.MAX_DISPLAY_MESSAGE_CHARS);
                 body.append("\u2026");
@@ -666,8 +662,12 @@ public class MessageAdapter extends ArrayAdapter<Message> {
                     }
                 }
             }
+            boolean hasMeCommand = body.toString().startsWith(Message.ME_COMMAND);
+            if (hasMeCommand) {
+                body = body.replace(0, Message.ME_COMMAND.length(), nick + " ");
+            }
             if (!message.isPrivateMessage()) {
-                if (hasMeCommand) {
+                if (hasMeCommand && body.length() > nick.length()) {
                     body.setSpan(
                             new StyleSpan(Typeface.BOLD_ITALIC),
                             0,