about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorMichael Vetter <jubalh@iodoru.org>2020-02-12 10:31:12 +0100
committerMichael Vetter <jubalh@iodoru.org>2020-02-12 10:31:12 +0100
commit7ad2e4761be2785b5b11275e2fe019fac9f08094 (patch)
treec5248a91893f928f394095ca042f40236b76d8bc /src
parent11b6e1bfa07fba1028a6ef31a336ad5856fc5801 (diff)
downloadprofani-tty-7ad2e4761be2785b5b11275e2fe019fac9f08094.tar.gz
xep-0308: Don't check whether receiving clients supports this feature
XEP-0308 Version 1.1.0 (2019-05-15) states "It is expected that clients will not send message corrections to clients that do not support them, as non-supporting clients will render these as duplicate (corrected) messages"

```
10:12:47 - jubalh: Do clients actually check whether other clients support xep0308 (LMC) before sending?
10:13:13 - pep.: not poezio, and I doubt anybody does. it's the "but carbons/MAM" argument
10:13:49 - jubalh: Profanity doesnt support this yet. So I always get the message twice. One time the message, and then the corrected ones. And I think that's right. But I understood xep0308 correctly it sais a
           client shouldnt sent a message with 'replace' if the client doesnt support it? I don't see why
10:14:50 - Ge0rG: jubalh: because you might also use Conversations and read the backlog from MAM on conversations
10:15:51 - jubalh: Ge0rG: sorry?
10:16:36 - Ge0rG: jubalh: when I'm sending you a message, I don't know which client you'll use to read it. So it doesn't make sense to limit the features I use
10:27:57 - jubalh: Yes. That's why I'm confused by thestatement in the XEP
10:28:13 - jubalh: "It is expected that clients will not send message corrections to clients that do not support them, as non-supporting clients will render these as duplicate (corrected) messages. "
10:28:37 - Holger: Yes, you're both saying the same thing.  And yes I agree, that part of the XEP is nonsense.  We have that "check whether the peer's client supports it" stuff in various XEPs that depend on
           recipient's features and it never makes sense as it doesn't cope with multi-device, MAM, groupchat.
10:28:53 - jubalh: First: You don't know if he is connected with several clients. Some supporting it and some not. Second: Why not just resend the new corrected message? Then he has both messages and no
           information is lost. If he only gets the first one information is lost
10:29:20 - jubalh: Okay
10:29:30 - jubalh: Then I won't implement it this way. Thanks guys!
10:29:34 - Holger: Well UX is a bit meh if the recipient doesn't support it (I'm an MCabber user and know what I'm talking about) but I see no better solution, yes.
```

So it makes more sense to just always send it. Non supporting clients will then get the message and the corrected message. So they get it "twice". Which is the right thing to do in my opinion.
Diffstat (limited to 'src')
-rw-r--r--src/command/cmd_funcs.c17
1 files changed, 1 insertions, 16 deletions
diff --git a/src/command/cmd_funcs.c b/src/command/cmd_funcs.c
index 0a830597..bd1b0a6c 100644
--- a/src/command/cmd_funcs.c
+++ b/src/command/cmd_funcs.c
@@ -8700,22 +8700,7 @@ cmd_correct(ProfWin *window, const char *const command, gchar **args)
             return TRUE;
         }
 
-        /*
-        char *session_jid = chat_session_get_jid(chatwin->barejid);
-        if (session_jid == NULL) {
-            win_println(window, THEME_DEFAULT, '!', "Cannot determine if recipeint supports last message correction.");
-            free(session_jid);
-            return TRUE;
-        }
-
-        if (caps_jid_has_feature(session_jid, XMPP_FEATURE_LAST_MESSAGE_CORRECTION) == FALSE) {
-            win_println(window, THEME_DEFAULT, '!', "Recipient does not support last message correction.");
-            free(session_jid);
-            return TRUE;
-        }
-
-        */
-        // speciel send with replace tag
+        // send message again, with replace flag
         cl_ev_send_msg_correct(chatwin, args[0], FALSE, TRUE);
         return TRUE;
     }