Skip to content

Commit

Permalink
[csLib] Now capable of writing the plugin config ! (#469)
Browse files Browse the repository at this point in the history
Co-authored-by: DogmaDragon <103123951+DogmaDragon@users.noreply.github.com>
  • Loading branch information
S3L3CT3DLoves and DogmaDragon authored Nov 27, 2024
1 parent 2deddca commit 512fbb8
Show file tree
Hide file tree
Showing 2 changed files with 50 additions and 0 deletions.
20 changes: 20 additions & 0 deletions plugins/CommunityScriptsUILibrary/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,26 @@ All the following functions are exposed under `window.csLib` and `csLib`
*/
```

## setConfiguration
```js
/**
* Set configuration of a plugin in the server via GraphQL
* @param {string} pluginId - The ID of the plugin as it is registered in the server
* @param {*} values - The configuration object with the values you want to save in the server
* @returns {Object} - The configuration object of the plugin as it is stored in the server after update
*
* @example
* // fetch config from the server
* const config = await getConfiguration('CommunityScriptsUIPlugin', defaultConfig);
* // config = { theme: 'dark' }
* // update the config based on user input
* // config = { theme: 'light' }
* // save config in the server
* await setConfiguration('CommunityScriptsUIPlugin', config);
* }
*/
```

## waitForElement
```js
/**
Expand Down
30 changes: 30 additions & 0 deletions plugins/CommunityScriptsUILibrary/cs-ui-lib.js
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,35 @@
return response.configuration.plugins?.[pluginId] ?? fallback;
};

/**
* Set configuration of a plugin in the server via GraphQL
* @param {string} pluginId - The ID of the plugin as it is registered in the server
* @param {*} values - The configuration object with the values you want to save in the server
* @returns {Object} - The configuration object of the plugin as it is stored in the server after update
*
* @example
* // fetch config from the server
* const config = await getConfiguration('CommunityScriptsUIPlugin', defaultConfig);
* // config = { theme: 'dark' }
* // update the config based on user input
* // config = { theme: 'light' }
* // save config in the server
* await setConfiguration('CommunityScriptsUIPlugin', config);
* }
*/
const setConfiguration = async (pluginId, values) => {
const query = `mutation ConfigurePlugin($pluginId: ID!, $input: Map!) { configurePlugin(plugin_id: $pluginId, input: $input) }`;
const queryBody = {
query: query,
variables: {
pluginId: pluginId,
input: values,
},
};
const response = await csLib.callGQL({ ...queryBody });
return response.configurePlugin;
};

/**
* Waits for an element to be available in the DOM and runs the callback function once it is
* @param {string} selector - The CSS selector of the element to wait for
Expand Down Expand Up @@ -105,6 +134,7 @@
baseURL,
callGQL,
getConfiguration,
setConfiguration,
waitForElement,
PathElementListener,
};
Expand Down

0 comments on commit 512fbb8

Please sign in to comment.