Fix JS Error in log about background apps

This commit is contained in:
Ray Strode 2023-09-06 09:31:13 -04:00
parent d4ed69f2f4
commit fccc02f84c
2 changed files with 93 additions and 3 deletions

View File

@ -0,0 +1,88 @@
From e442e9daf632d2ceb276f9e254d5850a33f91667 Mon Sep 17 00:00:00 2001
From: Ray Strode <rstrode@redhat.com>
Date: Wed, 6 Sep 2023 09:23:51 -0400
Subject: [PATCH] backgroundApps: Don't crash if app id can't be looked up
I'm looking at a log file with this trace back:
JS ERROR: TypeError: a.app is null
_sync/<@resource:///org/gnome/shell/ui/status/backgroundApps.js:226:17
_sync@resource:///org/gnome/shell/ui/status/backgroundApps.js:225:14
_init/</<@resource:///org/gnome/shell/ui/status/backgroundApps.js:170:67
@resource:///org/gnome/shell/ui/init.js:21:20
This commit should avoid the failure by filtering out items where
lookup_app fails.
---
js/ui/status/backgroundApps.js | 1 +
1 file changed, 1 insertion(+)
diff --git a/js/ui/status/backgroundApps.js b/js/ui/status/backgroundApps.js
index d6f2e495b..5dff0bdff 100644
--- a/js/ui/status/backgroundApps.js
+++ b/js/ui/status/backgroundApps.js
@@ -199,60 +199,61 @@ class BackgroundAppsToggle extends QuickToggle {
}
_syncVisibility() {
const {isLocked} = Main.sessionMode;
const nBackgroundApps = this._proxy?.BackgroundApps?.length;
// We cannot hide the quick toggle while the menu is open, otherwise
// the menu position goes bogus. We can't show it in locked sessions
// either
this.visible = !isLocked && (this.menu.isOpen || nBackgroundApps > 0);
}
_sync() {
this._syncVisibility();
if (!this._proxy)
return;
const {BackgroundApps: backgroundApps} = this._proxy;
this._appsSection.removeAll();
const items = new Map();
(backgroundApps ?? [])
.map(backgroundApp => {
const appId = backgroundApp.app_id.deepUnpack();
const app = this._appSystem.lookup_app(`${appId}.desktop`);
const message = backgroundApp.message?.deepUnpack();
return {app, message};
})
+ .filter(backgroundApp => backgroundApp.app)
.sort((a, b) => {
return a.app.get_name().localeCompare(b.app.get_name());
})
.forEach(backgroundApp => {
const {app, message} = backgroundApp;
let item = items.get(app);
if (!item) {
item = new BackgroundAppMenuItem(app);
items.set(app, item);
this._appsSection.addMenuItem(item);
}
if (message)
item.set({message});
});
const nBackgroundApps = items.size;
this.title = nBackgroundApps === 0
? _('No Background Apps')
: ngettext(
'%d Background App',
'%d Background Apps',
nBackgroundApps).format(nBackgroundApps);
this._listTitle.visible = nBackgroundApps > 0;
}
vfunc_clicked() {
this.menu.open();
}
--
2.41.0

View File

@ -2,7 +2,7 @@
Name: gnome-shell
Version: 45~beta.1
Release: %autorelease -b 2
Release: %autorelease
Summary: Window management and application launching for GNOME
License: GPLv2+
@ -10,16 +10,18 @@ URL: https://wiki.gnome.org/Projects/GnomeShell
Source0: https://download.gnome.org/sources/gnome-shell/45/%{name}-%{tarball_version}.tar.xz
# Replace Epiphany with Firefox in the default favourite apps list
Patch10001: gnome-shell-favourite-apps-firefox.patch
Patch: gnome-shell-favourite-apps-firefox.patch
# Some users might have a broken PAM config, so we really need this
# downstream patch to stop trying on configuration errors.
Patch40001: 0001-gdm-Work-around-failing-fingerprint-auth.patch
Patch: 0001-gdm-Work-around-failing-fingerprint-auth.patch
Patch: 0001-status-keyboard-Add-a-catch-around-reload-call.patch
Patch: 0002-status-keyboard-Load-keyboard-from-system-settings-i.patch
Patch: 0003-status-keyboard-Use-gnome-desktop-API-for-getting-de.patch
Patch: 0001-backgroundApps-Don-t-crash-if-app-id-can-t-be-looked.patch
%define eds_version 3.45.1
%define gnome_desktop_version 44.0-7
%define glib2_version 2.56.0