74 lines
1.8 KiB
JavaScript
74 lines
1.8 KiB
JavaScript
|
// SPDX-FileCopyrightText: GSConnect Developers https://github.com/GSConnect
|
||
|
//
|
||
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||
|
|
||
|
import Gio from 'gi://Gio';
|
||
|
import GLib from 'gi://GLib';
|
||
|
import GObject from 'gi://GObject';
|
||
|
|
||
|
import Plugin from '../plugin.js';
|
||
|
|
||
|
|
||
|
export const Metadata = {
|
||
|
label: _('Ping'),
|
||
|
description: _('Send and receive pings'),
|
||
|
id: 'org.gnome.Shell.Extensions.GSConnect.Plugin.Ping',
|
||
|
incomingCapabilities: ['kdeconnect.ping'],
|
||
|
outgoingCapabilities: ['kdeconnect.ping'],
|
||
|
actions: {
|
||
|
ping: {
|
||
|
label: _('Ping'),
|
||
|
icon_name: 'dialog-information-symbolic',
|
||
|
|
||
|
parameter_type: new GLib.VariantType('s'),
|
||
|
incoming: [],
|
||
|
outgoing: ['kdeconnect.ping'],
|
||
|
},
|
||
|
},
|
||
|
};
|
||
|
|
||
|
|
||
|
/**
|
||
|
* Ping Plugin
|
||
|
* https://github.com/KDE/kdeconnect-kde/tree/master/plugins/ping
|
||
|
*/
|
||
|
const PingPlugin = GObject.registerClass({
|
||
|
GTypeName: 'GSConnectPingPlugin',
|
||
|
}, class PingPlugin extends Plugin {
|
||
|
|
||
|
_init(device) {
|
||
|
super._init(device, 'ping');
|
||
|
}
|
||
|
|
||
|
handlePacket(packet) {
|
||
|
// Notification
|
||
|
const notif = {
|
||
|
title: this.device.name,
|
||
|
body: _('Ping'),
|
||
|
icon: new Gio.ThemedIcon({name: `${this.device.icon_name}`}),
|
||
|
};
|
||
|
|
||
|
if (packet.body.message) {
|
||
|
// TRANSLATORS: An optional message accompanying a ping, rarely if ever used
|
||
|
// eg. Ping: A message sent with ping
|
||
|
notif.body = _('Ping: %s').format(packet.body.message);
|
||
|
}
|
||
|
|
||
|
this.device.showNotification(notif);
|
||
|
}
|
||
|
|
||
|
ping(message = '') {
|
||
|
const packet = {
|
||
|
type: 'kdeconnect.ping',
|
||
|
body: {},
|
||
|
};
|
||
|
|
||
|
if (message.length)
|
||
|
packet.body.message = message;
|
||
|
|
||
|
this.device.sendPacket(packet);
|
||
|
}
|
||
|
});
|
||
|
|
||
|
export default PingPlugin;
|