@qso-soft/shared
Version:
Shared library for QSO-soft
131 lines • 5.23 kB
JavaScript
import { readFileSync } from 'fs';
import { sep } from 'path';
import { OUTPUTS_JSON_FOLDER } from '../../constants';
import { printResults } from '../file-handlers';
import { getFileNameWithPrefix } from '../msg-to-template';
import { prepareSavedWalletsWithModules } from '../wallets';
export const savePreparedModules = ({ route, walletsWithModules, projectName }) => {
printResults({
data: JSON.stringify({
isFinished: false,
route,
walletsWithModules,
}, null, 2),
fileName: getFileNameWithPrefix(projectName, 'saved-modules.json'),
outputPath: OUTPUTS_JSON_FOLDER,
});
};
export const clearSavedModules = (projectName) => {
const fileName = getFileNameWithPrefix(projectName, 'saved-modules.json');
printResults({ data: '{}', fileName, outputPath: OUTPUTS_JSON_FOLDER });
};
export const updateSavedModulesCount = ({ wallet, moduleIndex, projectName, setZeroCount = false, }) => {
const transformDataCallback = (data) => {
const savedModules = data.walletsWithModules?.reduce((acc, cur) => {
if (cur.wallet.id === wallet.id && cur.wallet.index === wallet.index) {
const updatedModules = cur.modules.map(({ count, ...restModule }, index) => {
const newCount = moduleIndex === index ? (setZeroCount ? 0 : count - 1) : count;
return {
...restModule,
count: newCount,
};
});
const updatedWalletWithModules = {
...cur,
modules: updatedModules,
};
return [...acc, updatedWalletWithModules];
}
return [...acc, cur];
}, []);
return {
...data,
walletsWithModules: savedModules,
};
};
printResults({
data: '{}',
fileName: getFileNameWithPrefix(projectName, 'saved-modules.json'),
outputPath: OUTPUTS_JSON_FOLDER,
transformDataCallback,
withAppend: true,
});
};
export const clearAllSavedModulesByName = ({ wallet, projectName, moduleName }) => {
const transformDataCallback = (data) => {
const savedModules = data.walletsWithModules?.reduce((acc, cur) => {
if (cur.wallet.id === wallet.id && cur.wallet.index === wallet.index) {
const updatedModules = cur.modules.map(({ count, ...restModule }) => {
const newCount = moduleName === restModule.moduleName ? 0 : count;
return {
...restModule,
count: newCount,
};
});
const updatedWalletWithModules = {
...cur,
modules: updatedModules,
};
return [...acc, updatedWalletWithModules];
}
return [...acc, cur];
}, []);
return {
...data,
walletsWithModules: savedModules,
};
};
printResults({
data: '{}',
fileName: getFileNameWithPrefix(projectName, 'saved-modules.json'),
outputPath: OUTPUTS_JSON_FOLDER,
transformDataCallback,
withAppend: true,
});
};
export const updateSavedModulesFinishStatus = ({ projectName }) => {
const fileName = getFileNameWithPrefix(projectName, 'saved-modules.json');
const savedModules = getSavedModules(projectName);
const walletsWithModules = prepareSavedWalletsWithModules(savedModules);
if (walletsWithModules) {
printResults({
data: JSON.stringify({
isFinished: !walletsWithModules.length,
walletsWithModules,
route: savedModules.route,
}, null, 2),
fileName,
outputPath: OUTPUTS_JSON_FOLDER,
});
}
};
export const getSavedModules = (projectName) => {
const fileName = getFileNameWithPrefix(projectName, 'saved-modules.json');
const filePath = `${OUTPUTS_JSON_FOLDER}${sep}${fileName}`;
const savedModulesJson = readFileSync(filePath, 'utf-8');
const savedModules = JSON.parse(savedModulesJson);
const walletsFileName = getFileNameWithPrefix(projectName, 'wallets.json');
const walletsPath = `${OUTPUTS_JSON_FOLDER}${sep}${walletsFileName}`;
const walletsJson = readFileSync(walletsPath, 'utf-8');
const wallets = JSON.parse(walletsJson);
const walletsWithModules = savedModules.walletsWithModules?.map((walletWithModules) => {
const walletId = walletWithModules.wallet.id;
const walletIndex = walletWithModules.wallet.index;
const currentWallet = wallets.find(({ id, index }) => id === walletId && index === walletIndex);
if (currentWallet) {
return {
...walletWithModules,
wallet: {
...walletWithModules.wallet,
...currentWallet,
},
};
}
return walletWithModules;
}) || [];
return {
...savedModules,
walletsWithModules,
};
};
//# sourceMappingURL=save-modules.js.map