104 lines
2.7 KiB
JavaScript
104 lines
2.7 KiB
JavaScript
import React from 'react';
|
|
import * as Constants from './constants';
|
|
import Modal from './components/UI/Modal/Modal';
|
|
import axios from 'axios';
|
|
|
|
const ipcRenderer = (!process.versions.hasOwnProperty('electron') && window && window.require) ?
|
|
window.require('electron').ipcRenderer :
|
|
null;
|
|
|
|
export const createModalConditionally = (condition, jsx, critical, disableFocusTrap) => {
|
|
const modalProps = {critical: critical, disableFocusTrap: disableFocusTrap};
|
|
return condition ? (<Modal {...modalProps}>{jsx}</Modal>) : null;
|
|
};
|
|
|
|
export const extractFileNameFromURL = url => {
|
|
const parts = url.split('/');
|
|
return parts[parts.length - 1];
|
|
};
|
|
|
|
export const formatLinesForDisplay = lines => {
|
|
let msg = '';
|
|
for (let i = 1; i < lines.length; i++) {
|
|
if (i > 1) {
|
|
msg += '\n';
|
|
}
|
|
msg += (lines[i].replace(/(\\#)/gm, '#') + '\n');
|
|
}
|
|
return msg;
|
|
};
|
|
|
|
export const getChangesForRepertoryVersion = version => {
|
|
return new Promise((resolve, reject) => {
|
|
const url = `https://bitbucket.org/blockstorage/repertory/raw/${version}/CHANGELOG.md`;
|
|
axios
|
|
.get(url, {
|
|
responseType: 'text',
|
|
})
|
|
.then(response => {
|
|
try {
|
|
let found = false;
|
|
let ended = false;
|
|
let lines = response.data
|
|
.replace(/(\r\n)/gm, '\n')
|
|
.split('\n')
|
|
.filter(l => {
|
|
return !ended && (l.length > 0) && (found
|
|
? !(ended = l.startsWith('## '))
|
|
: (found = l.startsWith(`## ${version}`)));
|
|
});
|
|
resolve(lines);
|
|
} catch (e) {
|
|
reject(e);
|
|
}
|
|
})
|
|
.catch(error => {
|
|
reject(error);
|
|
});
|
|
});
|
|
};
|
|
|
|
export const getIPCRenderer = () => {
|
|
return ipcRenderer;
|
|
};
|
|
|
|
export const getNewReleases = (existingReleases, newReleases) => {
|
|
const ret = [];
|
|
|
|
/*existingReleases = Constants.RELEASE_TYPES.reduce((map, release) => {
|
|
map[release] = [];
|
|
return map;
|
|
}, {});*/
|
|
|
|
if (existingReleases && newReleases) {
|
|
Constants.RELEASE_TYPES.forEach(release => {
|
|
newReleases[release]
|
|
.filter(version => !existingReleases[release].includes(version) && (version !== 'unavailable'))
|
|
.forEach(version => {
|
|
ret.splice(0, 0, {
|
|
Display: version,
|
|
Release: Constants.RELEASE_TYPES.indexOf(release),
|
|
Version: newReleases[release].indexOf(version),
|
|
VersionString: version,
|
|
});
|
|
});
|
|
});
|
|
}
|
|
|
|
ret.push({
|
|
Display: '1.2.2-release',
|
|
Release: 1,
|
|
Version: 2,
|
|
VersionString: '1.2.2-release',
|
|
});
|
|
|
|
return ret;
|
|
};
|
|
|
|
export const getSelectedVersionFromState = state => {
|
|
return (state.relver.Version === -1) ?
|
|
'unavailable' :
|
|
state.relver.VersionLookup[Constants.RELEASE_TYPES[state.relver.Release]][state.relver.Version];
|
|
};
|
|
|