127 lines
2.7 KiB
JavaScript
127 lines
2.7 KiB
JavaScript
// State management module for the 4DSTAR Bundle Manager
|
|
// Extracted from renderer.js to centralize state handling
|
|
|
|
// --- GLOBAL STATE ---
|
|
let currentBundle = null;
|
|
let currentBundlePath = null;
|
|
let hasUnsavedChanges = false;
|
|
let originalMetadata = {};
|
|
let pendingOperation = null; // Store the operation to execute after warning confirmation
|
|
|
|
// Current OPAT file state
|
|
let currentOPATFile = null;
|
|
|
|
// Current key management state
|
|
let currentKeys = null;
|
|
let keyOperationInProgress = false;
|
|
|
|
// Bundle state management
|
|
const getBundleState = () => ({
|
|
currentBundle,
|
|
currentBundlePath,
|
|
hasUnsavedChanges,
|
|
originalMetadata
|
|
});
|
|
|
|
const setBundleState = (bundle, bundlePath) => {
|
|
currentBundle = bundle;
|
|
currentBundlePath = bundlePath;
|
|
hasUnsavedChanges = false;
|
|
originalMetadata = bundle ? { ...bundle.manifest } : {};
|
|
};
|
|
|
|
const clearBundleState = () => {
|
|
currentBundle = null;
|
|
currentBundlePath = null;
|
|
hasUnsavedChanges = false;
|
|
originalMetadata = {};
|
|
};
|
|
|
|
const markUnsavedChanges = (hasChanges = true) => {
|
|
hasUnsavedChanges = hasChanges;
|
|
};
|
|
|
|
const updateOriginalMetadata = (metadata) => {
|
|
originalMetadata = { ...metadata };
|
|
};
|
|
|
|
// Pending operation management
|
|
const setPendingOperation = (operation) => {
|
|
pendingOperation = operation;
|
|
};
|
|
|
|
const getPendingOperation = () => {
|
|
return pendingOperation;
|
|
};
|
|
|
|
const clearPendingOperation = () => {
|
|
pendingOperation = null;
|
|
};
|
|
|
|
// OPAT file state management
|
|
const setOPATFile = (opatFile) => {
|
|
currentOPATFile = opatFile;
|
|
};
|
|
|
|
const getOPATFile = () => {
|
|
return currentOPATFile;
|
|
};
|
|
|
|
const clearOPATFile = () => {
|
|
currentOPATFile = null;
|
|
};
|
|
|
|
// Key management state functions
|
|
const setKeysState = (keysData) => {
|
|
currentKeys = keysData;
|
|
};
|
|
|
|
const getKeysState = () => {
|
|
return currentKeys;
|
|
};
|
|
|
|
const clearKeysState = () => {
|
|
currentKeys = null;
|
|
};
|
|
|
|
const setKeyOperationInProgress = (inProgress) => {
|
|
keyOperationInProgress = inProgress;
|
|
};
|
|
|
|
const getKeyOperationInProgress = () => {
|
|
return keyOperationInProgress;
|
|
};
|
|
|
|
// Export state management functions
|
|
module.exports = {
|
|
// Bundle state
|
|
getBundleState,
|
|
setBundleState,
|
|
clearBundleState,
|
|
markUnsavedChanges,
|
|
updateOriginalMetadata,
|
|
|
|
// Pending operations
|
|
setPendingOperation,
|
|
getPendingOperation,
|
|
clearPendingOperation,
|
|
|
|
// OPAT file state
|
|
setOPATFile,
|
|
getOPATFile,
|
|
clearOPATFile,
|
|
|
|
// Key management state
|
|
setKeysState,
|
|
getKeysState,
|
|
clearKeysState,
|
|
setKeyOperationInProgress,
|
|
getKeyOperationInProgress,
|
|
|
|
// Direct state access (for compatibility)
|
|
getCurrentBundle: () => currentBundle,
|
|
getCurrentBundlePath: () => currentBundlePath,
|
|
getHasUnsavedChanges: () => hasUnsavedChanges,
|
|
getOriginalMetadata: () => originalMetadata
|
|
};
|