summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorNicolas Werner <nicolas.werner@hotmail.de>2023-05-29 15:23:08 +0200
committerNicolas Werner <nicolas.werner@hotmail.de>2023-05-29 20:15:43 +0200
commit0b9bbd39367f102e616d0c7c5b81eed02ffb3894 (patch)
tree31b0a104739831b1f528c1d49a23139dde9169da /src
parentFix duplicate notification category identifier (diff)
downloadnheko-0b9bbd39367f102e616d0c7c5b81eed02ffb3894.tar.xz
Enable sending notifications via the systemNotification signal on macOS
Diffstat (limited to 'src')
-rw-r--r--src/notifications/Manager.h7
-rw-r--r--src/notifications/ManagerMac.cpp64
-rw-r--r--src/notifications/ManagerMac.mm8
3 files changed, 36 insertions, 43 deletions
diff --git a/src/notifications/Manager.h b/src/notifications/Manager.h
index 129b5131..e200e8be 100644
--- a/src/notifications/Manager.h
+++ b/src/notifications/Manager.h
@@ -81,11 +81,12 @@ private:
                                 const QString &subtitle,
                                 const QString &informativeText,
                                 const QString &bodyImagePath,
-                                const QString &respondStr,
-                                const QString &sendStr,
-                                const QString &placeholder,
                                 const bool playSound);
 
+    QString respondStr;
+    QString sendStr;
+    QString placeholder;
+
 public:
     static void attachToMacNotifCenter();
 #endif
diff --git a/src/notifications/ManagerMac.cpp b/src/notifications/ManagerMac.cpp
index e22ae52d..627e9315 100644
--- a/src/notifications/ManagerMac.cpp
+++ b/src/notifications/ManagerMac.cpp
@@ -22,6 +22,35 @@ formatNotification(const mtx::responses::Notification &notification)
     return utils::stripReplyFallbacks(notification.event, {}, {}).quoted_body;
 }
 
+NotificationsManager::NotificationsManager(QObject *parent)
+  : QObject(parent)
+{
+    // Putting these here to pass along since I'm not sure how
+    // our translate step interacts with .mm files
+    respondStr  = QObject::tr("Respond");
+    sendStr     = QObject::tr("Send");
+    placeholder = QObject::tr("Write a message...");
+
+    connect(
+      this,
+      &NotificationsManager::systemPostNotificationCb,
+      this,
+      [this](const QString &room_id,
+             const QString &event_id,
+             const QString &roomName,
+             const QString &text,
+             const QImage &) {
+          objCxxPostNotification(roomName,
+                                 room_id,
+                                 event_id,
+                                 text,
+                                 /*const QString &informativeText*/ "",
+                                 "",
+                                 true);
+      },
+      Qt::QueuedConnection);
+}
+
 void
 NotificationsManager::postNotification(const mtx::responses::Notification &notification,
                                        const QImage &icon)
@@ -40,12 +69,6 @@ NotificationsManager::postNotification(const mtx::responses::Notification &notif
                                &notification.event) != nullptr;
     const auto isReply = utils::isReply(notification.event);
 
-    // Putting these here to pass along since I'm not sure how
-    // our translate step interacts with .mm files
-    const auto respondStr  = QObject::tr("Respond");
-    const auto sendStr     = QObject::tr("Send");
-    const auto placeholder = QObject::tr("Write a message...");
-
     auto playSound = false;
 
     if (std::find(notification.actions.begin(),
@@ -59,16 +82,7 @@ NotificationsManager::postNotification(const mtx::responses::Notification &notif
         const QString messageInfo = (isReply ? tr("%1 replied with an encrypted message")
                                              : tr("%1 sent an encrypted message"))
                                       .arg(sender);
-        objCxxPostNotification(room_name,
-                               room_id,
-                               event_id,
-                               messageInfo,
-                               "",
-                               "",
-                               respondStr,
-                               sendStr,
-                               placeholder,
-                               playSound);
+        objCxxPostNotification(room_name, room_id, event_id, messageInfo, "", "", playSound);
     } else {
         const QString messageInfo =
           (isReply ? tr("%1 replied to a message") : tr("%1 sent a message")).arg(sender);
@@ -76,25 +90,14 @@ NotificationsManager::postNotification(const mtx::responses::Notification &notif
             MxcImageProvider::download(
               QString::fromStdString(mtx::accessors::url(notification.event)).remove("mxc://"),
               QSize(200, 80),
-              [this,
-               notification,
-               room_name,
-               room_id,
-               event_id,
-               messageInfo,
-               respondStr,
-               sendStr,
-               placeholder,
-               playSound](QString, QSize, QImage, QString imgPath) {
+              [this, notification, room_name, room_id, event_id, messageInfo, playSound](
+                QString, QSize, QImage, QString imgPath) {
                   objCxxPostNotification(room_name,
                                          room_id,
                                          event_id,
                                          messageInfo,
                                          formatNotification(notification),
                                          imgPath,
-                                         respondStr,
-                                         sendStr,
-                                         placeholder,
                                          playSound);
               });
         else
@@ -104,9 +107,6 @@ NotificationsManager::postNotification(const mtx::responses::Notification &notif
                                    messageInfo,
                                    formatNotification(notification),
                                    "",
-                                   respondStr,
-                                   sendStr,
-                                   placeholder,
                                    playSound);
     }
 }
diff --git a/src/notifications/ManagerMac.mm b/src/notifications/ManagerMac.mm
index 0d6c7cb4..8578b675 100644
--- a/src/notifications/ManagerMac.mm
+++ b/src/notifications/ManagerMac.mm
@@ -61,11 +61,6 @@
 }
 @end
 
-NotificationsManager::NotificationsManager(QObject* parent)
-    : QObject(parent)
-{
-}
-
 void NotificationsManager::objCxxPostNotification(
     const QString& room_name,
     const QString& room_id,
@@ -73,9 +68,6 @@ void NotificationsManager::objCxxPostNotification(
     const QString& subtitle,
     const QString& informativeText,
     const QString& bodyImagePath,
-    const QString& respondStr,
-    const QString& sendStr,
-    const QString& placeholder,
     const bool enableSound)
 {
     // Request permissions for alerts (the generic type of notification), sound playback,