shift-shell/shell/contents/updates/6_3_update.js

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

21 lines
662 B
JavaScript
Raw Normal View History

notifications: Implement popup notifications This merge request implements a more mobile optimized solution for popup notification. - The current controls are: - Swipe up to move the notification to the notification center. - Swipe left/right to dismiss the notification entirely. - If multiple popup notifications are grouped together, tap on the bottom area to view them in a expanded view. What still needs to be done: - ~~For notification without a default action, tapping on them should probably open up the associated app.~~ Note: I think I will add this in a separate merge request as it probably should be the case regardless if the notification is a popup - ~~Swiping down on a notification currently does nothing. Maybe we should map this to a notification action?~~ Note: I have some ideas I will try later, though for now, I will leave this action blank - ~~The expanded view of notifications should be able to be dismissed by swiping up/down on the top/bottom of the list.~~ Note: Added - Investigate further into how to remove the current desktop popup notifications. - ~~Code clean up.~~ Note: The code is at least a bit better Single popup notification: ![notification_1](/uploads/63d12be6da1dd2676de17940dcadbdfa/notification_1.gif) Multiple popup notifications: ![notification_2](/uploads/907a14b772f66f46040c28342f4dcf02/notification_2.gif) Multiple popup notifications in the expanded view: ![notification_3](/uploads/9a7cd09a6bb8a0f7ee70e5bcf7c29c6b/notification_3.gif) Any feedback would be greatly appreciated.
2024-11-07 16:13:06 +00:00
// SPDX-FileCopyrightText: 2024 Micah <stanleymicah@proton.me>
// SPDX-License-Identifier: GPL-2.0-or-later
/**
* Configuration updates for Plasma 6.3
* - Mobile popup notifications were added, remove the old ones.
*/
let allPanels = panels();
for (var i = 0; i < allPanels.length; i++) {
if (allPanels[i].type === "org.kde.plasma.mobile.panel") {
let allWidgetIds = allPanels[i].widgetIds;
for (var w = 0; w < allWidgetIds.length; w++) {
let widget = allPanels[i].widgetById(allWidgetIds[w]);
if (widget.type === "org.kde.plasma.notifications") {
widget.remove();
}
}
}
}