This repository has been archived on 2025-09-19. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
repertory-ui/src/renderer/ipc/StateIPC.js

85 lines
2.3 KiB
JavaScript

const Constants = require('../../constants');
const fs = require('fs');
const helpers = require('../../helpers');
const path = require('path');
const getDirectories = (source) => {
try {
return fs
.readdirSync(source, { withFileTypes: true })
.filter((dirent) => dirent.isDirectory())
.map((dirent) => dirent.name);
} catch {
return [];
}
};
const addListeners = (ipcMain) => {
ipcMain.on(Constants.IPC_Get_State, (event) => {
helpers.mkDirByPathSync(helpers.getDataDirectory());
let data = {};
const configFile = path.join(helpers.getDataDirectory(), 'settings.json');
if (fs.existsSync(configFile)) {
data = JSON.parse(fs.readFileSync(configFile, 'utf8'));
} else {
data.Release = Constants.DEFAULT_RELEASE;
data.Version = -1;
}
for (const provider of Constants.PROVIDER_LIST) {
if (!data[provider]) {
data[provider] = {
AutoMount: false,
AutoRestart: true,
MountLocation: '',
};
}
}
data.RemoteMounts = data.RemoteMounts || [];
data.S3Mounts = data.S3Mounts || [];
const remoteItems = getDirectories(
path.join(helpers.getRepertoryDirectory(), 'remote')
);
for (const dir of remoteItems) {
const name = 'Remote' + dir.replace('_', ':');
if (!data.RemoteMounts || data.RemoteMounts.indexOf(name) === -1) {
data.RemoteMounts.push(name);
data[name] = {
AutoMount: false,
AutoRestart: true,
MountLocation: '',
};
}
}
const s3Items = getDirectories(
path.join(helpers.getRepertoryDirectory(), 's3')
);
for (const dir of s3Items) {
const name = 'S3' + dir;
if (!data.S3Mounts || data.S3Mounts.indexOf(name) === -1) {
data.S3Mounts.push(name);
data[name] = {
AutoMount: false,
AutoRestart: true,
MountLocation: '',
};
}
}
event.sender.send(Constants.IPC_Get_State_Reply, {
data,
});
});
ipcMain.on(Constants.IPC_Save_State, (_, data) => {
helpers.mkDirByPathSync(helpers.getDataDirectory());
const configFile = path.join(helpers.getDataDirectory(), 'settings.json');
fs.writeFileSync(configFile, JSON.stringify(data.State), 'utf8');
});
};
module.exports = { addListeners };