messageTray: Add NotificationPolicy.newFromApp()

We have several places where we create an application policy
from an app if possible, and fall back to a generic policy
otherwise.

Make that more convenient by adding a small helper method.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3170>
This commit is contained in:
Florian Müllner 2024-02-06 18:48:02 +01:00 committed by Marge Bot
parent ebec609207
commit 810391f41e

View File

@ -161,6 +161,24 @@ export const NotificationPolicy = GObject.registerClass({
GObject.ParamFlags.READABLE, false), GObject.ParamFlags.READABLE, false),
}, },
}, class NotificationPolicy extends GObject.Object { }, class NotificationPolicy extends GObject.Object {
/**
* Create a new policy for app.
*
* This will be a NotificationApplicationPolicy for valid apps,
* or a NotificationGenericPolicy otherwise.
*
* @param {Shell.App=} app
* @returns {NotificationPolicy}
*/
static newForApp(app) {
// fallback to generic policy
if (!app?.get_app_info())
return new NotificationGenericPolicy();
const id = app.get_id().replace(/\.desktop$/, '');
return new NotificationApplicationPolicy(id);
}
// Do nothing for the default policy. These methods are only useful for the // Do nothing for the default policy. These methods are only useful for the
// GSettings policy. // GSettings policy.
store() { } store() { }