Fix mount detection
This commit is contained in:
@@ -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();
|
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -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] = [];
|
||||||
|
|||||||
Reference in New Issue
Block a user