From 78724c2a7bf72e2199c8fab579a667ba166315b8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Blin?=
 <sebastien.blin@savoirfairelinux.com>
Date: Tue, 20 Feb 2024 15:45:56 -0500
Subject: [PATCH] call: clarify call messages if call fails

Change-Id: I0dca1ef919cb6f60e53c57c3a3ccf81c2333c231
---
 src/libclient/api/interaction.h           | 22 +++++++++++++++++-----
 src/libclient/authority/storagehelper.cpp |  7 -------
 2 files changed, 17 insertions(+), 12 deletions(-)

diff --git a/src/libclient/api/interaction.h b/src/libclient/api/interaction.h
index 12dedbb94..b4061ce89 100644
--- a/src/libclient/api/interaction.h
+++ b/src/libclient/api/interaction.h
@@ -302,8 +302,18 @@ getFormattedCallDuration(const std::time_t duration)
  * @return the formatted and translated call message string
  */
 static inline QString
-getCallInteractionStringNonSwarm(bool isSelf, const std::time_t& duration)
+getCallInteractionStringNonSwarm(bool isSelf,
+                                 const std::time_t& duration,
+                                 const QString& reason = "")
 {
+    if (reason == "busy") {
+        return QObject::tr("Missed call, peer is busy");
+    } else if (reason == "declined") {
+        return QObject::tr("Missed call, peer declined");
+    } else if (reason == "no_device") {
+        return QObject::tr("Missed call, peer offline");
+    }
+
     if (duration < 0) {
         if (isSelf) {
             return QObject::tr("Outgoing call");
@@ -467,16 +477,18 @@ struct Info
             reactions.insert(i.key(), i.value());
         // Compute the status of the message.
         // Basically, we got the status per member.
-        // We consider the message as sent if at least one member has received it or displayed if someone displayed it.
+        // We consider the message as sent if at least one member has received it or displayed if
+        // someone displayed it.
         auto maxStatus = 0;
         status = Status::SENDING;
-        for (const auto& member: msg.status.keys()) {
+        for (const auto& member : msg.status.keys()) {
             if (member == accountUri)
                 continue;
             auto stValue = msg.status.value(member);
             if (stValue > maxStatus) {
                 maxStatus = stValue;
-                status = maxStatus <= 1 ? Status::SENDING : (stValue == 2 ? Status::SUCCESS : Status::DISPLAYED);
+                status = maxStatus <= 1 ? Status::SENDING
+                                        : (stValue == 2 ? Status::SUCCESS : Status::DISPLAYED);
             }
             if (maxStatus == 3)
                 break;
@@ -498,7 +510,7 @@ getCallInteractionString(bool isSelf, const Info& info)
             return QObject::tr("Join call");
         }
     }
-    return getCallInteractionStringNonSwarm(isSelf, info.duration);
+    return getCallInteractionStringNonSwarm(isSelf, info.duration, info.commit["reason"]);
 }
 
 static inline QString
diff --git a/src/libclient/authority/storagehelper.cpp b/src/libclient/authority/storagehelper.cpp
index 05d557974..b7a4181e5 100644
--- a/src/libclient/authority/storagehelper.cpp
+++ b/src/libclient/authority/storagehelper.cpp
@@ -99,13 +99,6 @@ JSONFromString(const QString& str)
     return json;
 }
 
-static QString
-JSONStringFromInitList(const std::initializer_list<QPair<QString, QJsonValue>> args)
-{
-    QJsonObject jsonObject(args);
-    return stringFromJSON(jsonObject);
-}
-
 static QString
 readJSONValue(const QJsonObject& json, const QString& key)
 {
-- 
GitLab