[gnome-shell] telepathyClient: Use GObjects based message objects
- From: Florian Müllner <fmuellner src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell] telepathyClient: Use GObjects based message objects
- Date: Wed, 25 Mar 2020 21:26:32 +0000 (UTC)
commit 766288eec1bd3bd50dfc4ddf410c2b507187e603
Author: Marco Trevisan (Treviño) <mail 3v1n0 net>
Date: Fri Mar 20 20:06:55 2020 +0100
telepathyClient: Use GObjects based message objects
As per commit b5676a2a5 ChatNotification is a GObject, but I was wrongly
considering that it was using Tp.Message's as children, instead it just
uses custom-built objects to pass information around through signals.
Given gjs can only use GObjects as signal parameters, create a small wrapper
class to hold the ChatNotification messages and use it as signal parameter.
Fixes https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2449
https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1112
js/ui/components/telepathyClient.js | 28 +++++++++++++++++++---------
1 file changed, 19 insertions(+), 9 deletions(-)
---
diff --git a/js/ui/components/telepathyClient.js b/js/ui/components/telepathyClient.js
index e6ae340424..cdb7f57f5a 100644
--- a/js/ui/components/telepathyClient.js
+++ b/js/ui/components/telepathyClient.js
@@ -2,7 +2,6 @@
/* exported Component */
const { Clutter, Gio, GLib, GObject, St } = imports.gi;
-const Lang = imports.lang;
var Tpl = null;
var Tp = null;
@@ -630,11 +629,19 @@ class ChatSource extends MessageTray.Source {
}
}) : null;
+const ChatNotificationMessage = HAVE_TP ? GObject.registerClass(
+class ChatNotificationMessage extends GObject.Object {
+ _init(props = {}) {
+ super._init();
+ this.set(props);
+ }
+}) : null;
+
var ChatNotification = HAVE_TP ? GObject.registerClass({
Signals: {
- 'message-removed': { param_types: [Tp.Message.$gtype] },
- 'message-added': { param_types: [Tp.Message.$gtype] },
- 'timestamp-changed': { param_types: [Tp.Message.$gtype] },
+ 'message-removed': { param_types: [ChatNotificationMessage.$gtype] },
+ 'message-added': { param_types: [ChatNotificationMessage.$gtype] },
+ 'timestamp-changed': { param_types: [ChatNotificationMessage.$gtype] },
},
}, class ChatNotification extends MessageTray.Notification {
_init(source) {
@@ -735,21 +742,24 @@ var ChatNotification = HAVE_TP ? GObject.registerClass({
styles: [],
timestamp: currentTime,
noTimestamp: false });
+ const { noTimestamp } = props;
+ delete props.noTimestamp;
// Reset the old message timeout
if (this._timestampTimeoutId)
GLib.source_remove(this._timestampTimeoutId);
this._timestampTimeoutId = 0;
- let message = { realMessage: props.group != 'meta',
- showTimestamp: false };
- Lang.copyProperties(props, message);
- delete message.noTimestamp;
+ let message = new ChatNotificationMessage({
+ realMessage: props.group !== 'meta',
+ showTimestamp: false,
+ ...props,
+ });
this.messages.unshift(message);
this.emit('message-added', message);
- if (!props.noTimestamp) {
+ if (!noTimestamp) {
let timestamp = props.timestamp;
if (timestamp < currentTime - SCROLLBACK_IMMEDIATE_TIME) {
this.appendTimestamp();
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]