mirror of
https://github.com/inventree/InvenTree.git
synced 2025-06-16 20:15:44 +00:00
[Plugin] Plugin context (#9439)
* Pass more stuff to window * Expose form functions to plugin context * Breaking: Render plugin component in context tree - Required due to createRoot function - Adds necessary context providers * Fix context * Provide MantineThemeContext * Bundle mantine/core * Hack for useNavigate within ApiForm - Errors out if called within plugin context - Workaround to catch the error * Update build cmd * Define config for building "Library" mode * Update package.json * Add basic index file * Factor out ApiEndpoints * factor out ModelType * Factor out role enums * Further refactoring * More refactoring * Cleanup * Expose apiUrl function * Add instance data to plugin context type def * Tweaks for loading plugin components - LanguageContext must be on the inside * Tweak StylishText * Externalize notifications system * Update lingui config * Add functions for checking plugin interface version * Extract package version at build time * Enhance version checking * Revert variable name change * Public package * Add README.md * adjust packge name * Adjust name to include org * Update project files * Add basic changelog info * Refactoring to expose URL functions * Refactor navigation functions * Update package and README * Improve navigateToLink function * Refactor stylish text - Move into ./lib - Do not require user state * Revert changes - StylishText throws error in plugin - Low priority, can work out later * expose function to refresh page index * Provide RemoteComponent with a method to reload itself * Bump version * Cleanup tests * Prevent duplicate --emptyOutDir arg * Tweak playwright tests * Expose role and permission enums * Fix imports * Updated docs * Fix spelling, typos, etc * Include more package version information * Expose more version context * Cleanup * Probably don't need hooks * Fix links * Docs updates * Fix links
This commit is contained in:
30
src/frontend/lib/functions/Plugins.tsx
Normal file
30
src/frontend/lib/functions/Plugins.tsx
Normal file
@ -0,0 +1,30 @@
|
||||
import {
|
||||
INVENTREE_PLUGIN_VERSION,
|
||||
type InvenTreePluginContext
|
||||
} from '../types/Plugins';
|
||||
|
||||
function extractVersion(version: string) {
|
||||
// Extract the version number from the string
|
||||
const [major, minor, patch] = version
|
||||
.split('.')
|
||||
.map((v) => Number.parseInt(v, 10));
|
||||
|
||||
return { major, minor, patch };
|
||||
}
|
||||
|
||||
/**
|
||||
* Check th e
|
||||
*/
|
||||
export function checkPluginVersion(context: InvenTreePluginContext) {
|
||||
const pluginVersion = extractVersion(INVENTREE_PLUGIN_VERSION);
|
||||
const systemVersion = extractVersion(context.version.inventree);
|
||||
|
||||
const mismatch = `Plugin version mismatch! Expected version ${INVENTREE_PLUGIN_VERSION}, got ${context.version}`;
|
||||
|
||||
// A major version mismatch indicates a potentially breaking change
|
||||
if (pluginVersion.major !== systemVersion.major) {
|
||||
console.warn(mismatch);
|
||||
} else if (INVENTREE_PLUGIN_VERSION != context.version.inventree) {
|
||||
console.info(mismatch);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user