Fix mount detection

This commit is contained in:
2019-10-05 23:27:25 -05:00
parent 9be55984bc
commit caa8cd32d0
2 changed files with 49 additions and 32 deletions

View File

@@ -132,39 +132,56 @@ module.exports.createSignatureFiles = (signature, publicKey) => {
module.exports.detectRepertoryMounts = (version, providerList) => { module.exports.detectRepertoryMounts = (version, providerList) => {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
const processOptions = { let mountState = {};
detached: true, const defaultData = {};
shell: false, for (const provider of providerList) {
windowsHide: true, defaultData[provider] = {
}; Active: false,
Location: '',
const command = path.join(_getDataDirectory(), version, (os.platform() === 'win32') ? 'repertory.exe' : 'repertory'); PID: -1,
const args = []; };
args.push('-status'); }
const grabStatus = index => {
const process = new spawn(command, args, processOptions); if (index >= providerList.length) {
let result = ''; resolve(mountState);
} else {
process.on('error', (err) => { const provider = providerList[index];
reject(err); const processOptions = {
}); detached: true,
shell: false,
process.stdout.on('data', (d)=> { windowsHide: true,
result += d;
});
process.on('exit', () => {
let defaultData = {};
for (const provider of providerList) {
defaultData[provider] = {
Active: false,
Location: '',
PID: -1,
}; };
const command = path.join(_getDataDirectory(), version, (os.platform() === 'win32') ? 'repertory.exe' : 'repertory');
const args = [];
args.push('-status');
if (Constants.PROVIDER_LIST.includes(provider)) {
if (provider !== 'Sia') {
args.push('-sp');
}
} else {
args.push('-rm');
args.push(provider.substr(6));
}
const process = new spawn(command, args, processOptions);
let result = '';
process.on('error', (err) => {
reject(err);
});
process.stdout.on('data', (d) => {
result += d;
});
process.on('exit', () => {
mountState[provider] = tryParse(result, defaultData)[provider];
grabStatus(++index);
});
process.unref();
} }
resolve(tryParse(result, defaultData)); };
}); grabStatus(0);
process.unref();
}); });
}; };

View File

@@ -89,7 +89,7 @@ const addListeners = (ipcMain, setTrayImage, standardIPCReply) => {
let driveLetters = {}; let driveLetters = {};
const providerList = [ const providerList = [
...Constants.PROVIDER_LIST, ...Constants.PROVIDER_LIST,
data.RemoteMounts, ...data.RemoteMounts,
]; ];
for (const provider of providerList) { for (const provider of providerList) {
driveLetters[provider] = []; driveLetters[provider] = [];