130 lines
3.1 KiB
JavaScript
130 lines
3.1 KiB
JavaScript
import * as Constants from '../../constants';
|
|
import {createAction} from '@reduxjs/toolkit';
|
|
import {getIPCRenderer} from '../../utils';
|
|
|
|
const ipcRenderer = getIPCRenderer();
|
|
let yesNoResolvers = [];
|
|
|
|
export const confirmYesNo = title => {
|
|
return dispatch => {
|
|
return new Promise(resolve => {
|
|
dispatch(handleConfirmYesNo(true, title, resolve));
|
|
});
|
|
};
|
|
};
|
|
|
|
export const DISPLAY_CONFIRM_YES_NO = 'common/displayConfirmYesNo';
|
|
const displayConfirmYesNo = (show, title) => {
|
|
return {
|
|
type: DISPLAY_CONFIRM_YES_NO,
|
|
payload: {
|
|
show,
|
|
title
|
|
},
|
|
};
|
|
};
|
|
|
|
export const displaySelectAppPlatform = display => {
|
|
return dispatch => {
|
|
if (display) {
|
|
dispatch(showWindow());
|
|
}
|
|
|
|
dispatch(setDisplaySelectAppPlatform(display));
|
|
};
|
|
};
|
|
|
|
export const hideConfirmYesNo = confirmed => {
|
|
return dispatch => {
|
|
dispatch(handleConfirmYesNo(false, confirmed));
|
|
};
|
|
};
|
|
|
|
const handleConfirmYesNo = (show, titleOrConfirmed, resolve) => {
|
|
return dispatch => {
|
|
if (show) {
|
|
yesNoResolvers.push(resolve);
|
|
dispatch(displayConfirmYesNo(show, titleOrConfirmed));
|
|
} else {
|
|
yesNoResolvers[0](titleOrConfirmed);
|
|
yesNoResolvers.splice(0, 1);
|
|
dispatch(displayConfirmYesNo(false));
|
|
}
|
|
};
|
|
};
|
|
|
|
export const notifyRebootRequired = createAction('common/notifyRebootRequired');
|
|
|
|
export const rebootSystem = () => {
|
|
return dispatch => {
|
|
dispatch(setApplicationReady(false));
|
|
if (ipcRenderer) {
|
|
ipcRenderer.send(Constants.IPC_Reboot_System);
|
|
}
|
|
}
|
|
};
|
|
|
|
export const saveState = () => {
|
|
return (dispatch, getState) => {
|
|
const state = getState();
|
|
if (state.common.AppReady) {
|
|
let currentState = {
|
|
Release: state.relver.Release,
|
|
RemoteMounts: state.mounts.RemoteMounts,
|
|
Version: state.relver.Version,
|
|
};
|
|
|
|
const providerList = [
|
|
...Constants.PROVIDER_LIST,
|
|
...state.mounts.RemoteMounts,
|
|
];
|
|
for (const provider of providerList) {
|
|
currentState[provider] = state.mounts.ProviderState[provider];
|
|
}
|
|
|
|
if (ipcRenderer) {
|
|
ipcRenderer.send(Constants.IPC_Save_State, {
|
|
State: currentState
|
|
});
|
|
}
|
|
}
|
|
};
|
|
};
|
|
|
|
export const setAllowMount = createAction('common/setAllowMount');
|
|
export const setApplicationReady = createAction('common/setApplicationReady');
|
|
|
|
export const SET_DISPLAY_SELECT_APPPLATFORM = 'common/displaySelectAppPlatform';
|
|
export const setDisplaySelectAppPlatform = display => {
|
|
return {
|
|
type: SET_DISPLAY_SELECT_APPPLATFORM,
|
|
payload: display,
|
|
};
|
|
};
|
|
|
|
export const setLinuxAppPlatform = createAction('common/setLinuxAppPlatform');
|
|
|
|
export const setRebootRequired = () => {
|
|
return dispatch => {
|
|
dispatch(showWindow());
|
|
dispatch(notifyRebootRequired(true));
|
|
};
|
|
};
|
|
|
|
export const showWindow = () => {
|
|
return dispatch => {
|
|
if (ipcRenderer) {
|
|
ipcRenderer.send(Constants.IPC_Show_Window);
|
|
}
|
|
};
|
|
};
|
|
|
|
export const shutdownApplication = () => {
|
|
return dispatch => {
|
|
dispatch(setApplicationReady(false));
|
|
if (ipcRenderer) {
|
|
ipcRenderer.send(Constants.IPC_Shutdown);
|
|
}
|
|
};
|
|
};
|