#36: Add ability to select Linux distribution type if OS is unsupported - partial
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
# Changelog
|
||||
|
||||
## 1.0.8
|
||||
* \#36: Add ability to select Linux distribution type if OS is unsupported
|
||||
* Added additional WinFsp uninstall strings
|
||||
|
||||
## 1.0.7
|
||||
|
||||
@@ -28,6 +28,7 @@ let expectedUnmount = {};
|
||||
let launchHidden = false;
|
||||
let firstMountCheck = true;
|
||||
let manualMountDetection = {};
|
||||
let platformOverride;
|
||||
|
||||
let isShutdown = false;
|
||||
let isQuiting = false;
|
||||
@@ -244,6 +245,7 @@ const loadUiSettings = () => {
|
||||
if (fs.statSync(settingFile).isFile()) {
|
||||
const settings = JSON.parse(fs.readFileSync(settingFile, 'utf8'));
|
||||
launchHidden = settings.launch_hidden;
|
||||
platformOverride = settings.platform_override;
|
||||
}
|
||||
} catch (e) {
|
||||
}
|
||||
@@ -659,13 +661,16 @@ ipcMain.on(Constants.IPC_Get_Platform, (event) => {
|
||||
|
||||
const platform = os.platform();
|
||||
if (platform === 'linux') {
|
||||
if (platformOverride && (platformOverride.trim().length > 0)) {
|
||||
sendResponse(platformOverride, 'linux');
|
||||
} else {
|
||||
const scriptFile = path.join(os.tmpdir(), 'repertory_detect_linux.sh');
|
||||
fs.writeFileSync(scriptFile, detectScript);
|
||||
|
||||
helpers
|
||||
.executeScript(scriptFile)
|
||||
.then(data => {
|
||||
let appPlatform = data.replace(/(\r\n|\n|\r)/gm,"");
|
||||
let appPlatform = data.replace(/(\r\n|\n|\r)/gm, "");
|
||||
if (appPlatform === 'unknown') {
|
||||
helpers
|
||||
.downloadFile(Constants.LINUX_DETECT_SCRIPT_URL, scriptFile, null, err => {
|
||||
@@ -690,6 +695,7 @@ ipcMain.on(Constants.IPC_Get_Platform, (event) => {
|
||||
.catch(() => {
|
||||
sendResponse(platform, platform);
|
||||
});
|
||||
}
|
||||
} else {
|
||||
sendResponse(platform, platform);
|
||||
}
|
||||
|
||||
21
src/App.js
21
src/App.js
@@ -14,7 +14,11 @@ import MountItems from './containers/MountItems/MountItems';
|
||||
import {notifyError} from './redux/actions/error_actions';
|
||||
import Reboot from './components/Reboot/Reboot';
|
||||
import ReleaseVersionDisplay from './components/ReleaseVersionDisplay/ReleaseVersionDisplay';
|
||||
import {saveState} from './redux/actions/common_actions';
|
||||
import {
|
||||
displaySelectAppPlatform,
|
||||
saveState
|
||||
} from './redux/actions/common_actions';
|
||||
import SelectAppPlatform from './components/SelectAppPlatform/SelectAppPlatform';
|
||||
import Text from './components/UI/Text/Text';
|
||||
import UpgradeIcon from './components/UpgradeIcon/UpgradeIcon';
|
||||
import UpgradeUI from './components/UpgradeUI/UpgradeUI';
|
||||
@@ -30,7 +34,11 @@ class App extends IPCContainer {
|
||||
componentDidMount() {
|
||||
const detectUpgrades = () => {
|
||||
if (this.props.AppPlatform === 'unknown') {
|
||||
if (this.props.Platform === 'linux') {
|
||||
this.props.displaySelectAppPlatform(true);
|
||||
} else {
|
||||
this.props.notifyError('Operating system is not supported.', true);
|
||||
}
|
||||
} else {
|
||||
this.props.loadReleases();
|
||||
}
|
||||
@@ -119,9 +127,12 @@ class App extends IPCContainer {
|
||||
const downloadDisplay = this.createModalConditionally(this.props.DownloadActive, <DownloadProgress/>);
|
||||
const errorDisplay = this.createModalConditionally(this.props.DisplayError, <ErrorDetails/>, true);
|
||||
const upgradeDisplay = this.createModalConditionally(showUpgrade, <UpgradeUI/>);
|
||||
const selectAppPlatformDisplay = this.createModalConditionally(this.props.DisplaySelectAppPlatform, <SelectAppPlatform/>);
|
||||
|
||||
let mainContent = [];
|
||||
if (this.props.AppReady) {
|
||||
if (this.props.DisplaySelectAppPlatform || !this.props.AppReady) {
|
||||
mainContent = <Loading/>
|
||||
} else {
|
||||
let key = 0;
|
||||
mainContent.push((
|
||||
<div key={'rvd_' + key++}
|
||||
@@ -140,12 +151,11 @@ class App extends IPCContainer {
|
||||
</div>
|
||||
));
|
||||
}
|
||||
} else {
|
||||
mainContent = <Loading/>
|
||||
}
|
||||
|
||||
return (
|
||||
<div className={'App'}>
|
||||
{selectAppPlatformDisplay}
|
||||
{errorDisplay}
|
||||
{dependencyDisplay}
|
||||
{upgradeDisplay}
|
||||
@@ -193,12 +203,14 @@ const mapStateToProps = state => {
|
||||
DismissDependencies: state.install.DismissDependencies,
|
||||
DisplayConfiguration: state.mounts.DisplayConfiguration,
|
||||
DisplayError: state.error.DisplayError,
|
||||
DisplaySelectAppPlatform: state.common.DisplaySelectAppPlatform,
|
||||
DownloadActive: state.download.DownloadActive,
|
||||
InstallActive: state.install.InstallActive,
|
||||
InstalledVersion: state.relver.InstalledVersion,
|
||||
LocationsLookup: state.relver.LocationsLookup,
|
||||
MissingDependencies: state.install.MissingDependencies,
|
||||
MountsBusy: state.mounts.MountsBusy,
|
||||
Platform: state.common.Platform,
|
||||
ProviderState: state.mounts.ProviderState,
|
||||
RebootRequired: state.common.RebootRequired,
|
||||
Release: state.relver.Release,
|
||||
@@ -212,6 +224,7 @@ const mapStateToProps = state => {
|
||||
|
||||
const mapDispatchToProps = dispatch => {
|
||||
return {
|
||||
displaySelectAppPlatform: ()=> dispatch(displaySelectAppPlatform()),
|
||||
loadReleases: ()=> dispatch(loadReleases()),
|
||||
notifyError: (msg, critical, callback) => dispatch(notifyError(msg, critical, callback)),
|
||||
saveState: () => dispatch(saveState()),
|
||||
|
||||
11
src/components/SelectAppPlatform/SelectAppPlatform.css
Normal file
11
src/components/SelectAppPlatform/SelectAppPlatform.css
Normal file
@@ -0,0 +1,11 @@
|
||||
.SAPHeading {
|
||||
color: var(--text_color_error);
|
||||
text-align: center;
|
||||
margin-bottom: 4px;
|
||||
}
|
||||
|
||||
.SAPContent {
|
||||
max-height: 60vh;
|
||||
overflow-y: auto;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
27
src/components/SelectAppPlatform/SelectAppPlatform.js
Normal file
27
src/components/SelectAppPlatform/SelectAppPlatform.js
Normal file
@@ -0,0 +1,27 @@
|
||||
import React from 'react';
|
||||
import './SelectAppPlatform.css';
|
||||
import * as Constants from '../../constants';
|
||||
import {connect} from 'react-redux';
|
||||
import Box from '../UI/Box/Box';
|
||||
import Button from '../UI/Button/Button';
|
||||
import DropDown from '../UI/DropDown/DropDown';
|
||||
import {rebootSystem} from '../../redux/actions/common_actions';
|
||||
|
||||
const mapDispatchToProps = dispatch => {
|
||||
return {
|
||||
rebootSystem: () => dispatch(rebootSystem()),
|
||||
};
|
||||
};
|
||||
|
||||
export default connect(null, mapDispatchToProps)(props => {
|
||||
return (
|
||||
<Box dxDark dxStyle={{padding: '8px'}}>
|
||||
<h1 className={'SAPHeading'}>Select Linux Platform</h1>
|
||||
<div className={'SAPContent'}>
|
||||
<p>Repertory was unable to detect your Linux distribution. Please select one of the following and click <b>'Test'</b> to continue:</p>
|
||||
</div>
|
||||
<DropDown items={Constants.LINUX_SELECTABLE_PLATFORMS}/>
|
||||
<Button clicked={}>Test</Button>
|
||||
</Box>
|
||||
);
|
||||
});
|
||||
@@ -36,6 +36,12 @@ exports.UI_RELEASES_URL = 'https://bitbucket.org/blockstorage/repertory-ui/raw/'
|
||||
|
||||
exports.LINUX_DETECT_SCRIPT_URL = 'https://bitbucket.org/blockstorage/repertory/raw/' + REPERTORY_BRANCH + '/detect_linux.sh';
|
||||
|
||||
exports.LINUX_SELECTABLE_PLATFORMS = [
|
||||
'ubuntu18.04',
|
||||
'ubuntu18.10',
|
||||
'ubuntu19.04'
|
||||
];
|
||||
|
||||
exports.DATA_LOCATIONS = {
|
||||
linux: '~/.local/repertory/ui',
|
||||
darwin: '~/Library/Application Support/repertory/ui',
|
||||
|
||||
@@ -4,6 +4,7 @@ import {getIPCRenderer} from '../../utils';
|
||||
|
||||
const ipcRenderer = getIPCRenderer();
|
||||
|
||||
export const displaySelectAppPlatform = createAction('common/displaySelectAppPlatform');
|
||||
export const notifyRebootRequired = createAction('common/notifyRebootRequired');
|
||||
export const setAllowMount = createAction('common/setAllowMount');
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import {createReducer} from 'redux-starter-kit';
|
||||
import {
|
||||
displaySelectAppPlatform,
|
||||
notifyRebootRequired,
|
||||
setAllowMount,
|
||||
setApplicationReady,
|
||||
@@ -10,10 +11,17 @@ export const createCommonReducer = (platform, appPlatform, version) => {
|
||||
AllowMount: false,
|
||||
AppPlatform: appPlatform,
|
||||
AppReady: false,
|
||||
DisplaySelectAppPlatform: false,
|
||||
Platform: platform,
|
||||
RebootRequired: false,
|
||||
Version: version,
|
||||
}, {
|
||||
[displaySelectAppPlatform]: (state, action) => {
|
||||
return {
|
||||
...state,
|
||||
DisplaySelectAppPlatform: action.payload,
|
||||
}
|
||||
},
|
||||
[setAllowMount]: (state, action) => {
|
||||
return {
|
||||
...state,
|
||||
|
||||
Reference in New Issue
Block a user