extensions: Provide separate implementations

For the time being this mostly means re-exporting functions
from the shared module. However openPrefs() is now only
available to extensions, and we stop exporting both
getCurrentExtension() and setExtensionManager() to either
extensions or prefs.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2837>
This commit is contained in:
Florian Müllner 2023-07-01 02:11:37 +02:00
parent 55cf8cf4bb
commit 6a46d338e7
5 changed files with 37 additions and 19 deletions

View File

@ -7,6 +7,7 @@
<file>dbusService.js</file> <file>dbusService.js</file>
<file>extensions/sharedInternals.js</file> <file>extensions/sharedInternals.js</file>
<file>extensions/prefs.js</file>
<file>misc/config.js</file> <file>misc/config.js</file>
<file>misc/extensionUtils.js</file> <file>misc/extensionUtils.js</file>

View File

@ -0,0 +1,28 @@
import {getCurrentExtension} from './sharedInternals.js';
export {
getSettings,
initTranslations,
gettext,
ngettext,
pgettext
} from './sharedInternals.js';
/**
* Open the preference dialog of the current extension
*/
export function openPrefs() {
const extension = getCurrentExtension();
if (!extension)
throw new Error('openPrefs() can only be called from extensions');
try {
const extensionManager = imports.ui.main.extensionManager;
extensionManager.openExtensionPrefs(extension.uuid, '', {});
} catch (e) {
if (e.name === 'ImportError')
throw new Error('openPrefs() cannot be called from preferences');
logError(e, 'Failed to open extension preferences');
}
}

7
js/extensions/prefs.js Normal file
View File

@ -0,0 +1,7 @@
export {
getSettings,
initTranslations,
gettext,
ngettext,
pgettext
} from './sharedInternals.js';

View File

@ -177,22 +177,3 @@ export function getSettings(schema) {
return new Gio.Settings({settings_schema: schemaObj}); return new Gio.Settings({settings_schema: schemaObj});
} }
/**
* Open the preference dialog of the current extension
*/
export function openPrefs() {
const extension = getCurrentExtension();
if (!extension)
throw new Error('openPrefs() can only be called from extensions');
try {
const extensionManager = imports.ui.main.extensionManager;
extensionManager.openExtensionPrefs(extension.uuid, '', {});
} catch (e) {
if (e.name === 'ImportError')
throw new Error('openPrefs() cannot be called from preferences');
logError(e, 'Failed to open extension preferences');
}
}

View File

@ -12,6 +12,7 @@
<file>gdm/util.js</file> <file>gdm/util.js</file>
<file>extensions/sharedInternals.js</file> <file>extensions/sharedInternals.js</file>
<file>extensions/extension.js</file>
<file>misc/animationUtils.js</file> <file>misc/animationUtils.js</file>
<file>misc/config.js</file> <file>misc/config.js</file>