Create a plugin
Let's create a simple plugin that will provide a few methods to store some data into localstorage.
Make sure you already followed the extension bootstrapping steps and after you have the whole setups done, proceed by creating a src
folder in the root of you plugin.
mkdir src
Finally let's create the entry file in the src
touch src/index.ts
Let's add the registration function in the index.ts
file and create the required methods.
export const registerPlugin = (options) => {
return {
storage: {
saveData<T>(key: string, data: T): void {
try {
const stringified = JSON.stringify(data);
localStorage.setItem(key, stringified);
return true;
} catch (err) {
options.logger.log('Failed to save data to storage');
return false;
}
}
getData<T>(key: string): T {
const dataString = localStorage.getItem(key);
return JSON.parse(dataString);
}
removeData(key: string) {
localStorage.removeItem(key);
}
}
}
}
registerPlugin
- the registration function for plugins
storage
- just a namespace we've chosen to allow extending this plugin with other namespaces in the future. This is just a preference and it also works without it. However as soon as other extensions is using it it's hard to change without introducing breaking changes. It can also be used as a versioning namespace, for example v1
.
Once installed, this plugin will be available to all other installed extensions using:
props.plugins['my-awesome-plugin'].storage.saveData('test', {a: 1})