66 lines
1.5 KiB
JavaScript
66 lines
1.5 KiB
JavaScript
import assign from 'lodash/assign';
|
|
import createReducer from 'utils/createReducer';
|
|
import * as actions from './actions';
|
|
|
|
export const getApp = state => state.app;
|
|
export const getConnected = state => state.app.connected;
|
|
export const getWrapWidth = state => state.app.wrapWidth;
|
|
export const getCharWidth = state => state.app.charWidth;
|
|
export const getWindowWidth = state => state.app.windowWidth;
|
|
export const getConnectDefaults = state => state.app.connectDefaults;
|
|
|
|
const initialState = {
|
|
connected: true,
|
|
wrapWidth: 0,
|
|
charWidth: 0,
|
|
windowWidth: 0,
|
|
connectDefaults: {
|
|
name: '',
|
|
address: '',
|
|
channels: [],
|
|
ssl: false,
|
|
password: false,
|
|
readonly: false,
|
|
showDetails: false
|
|
},
|
|
hexIP: false,
|
|
newVersionAvailable: false,
|
|
installable: null
|
|
};
|
|
|
|
export default createReducer(initialState, {
|
|
[actions.APP_SET](state, { key, value }) {
|
|
if (typeof key === 'object') {
|
|
assign(state, key);
|
|
} else {
|
|
state[key] = value;
|
|
}
|
|
},
|
|
|
|
[actions.UPDATE_MESSAGE_HEIGHT](state, action) {
|
|
state.wrapWidth = action.wrapWidth;
|
|
state.charWidth = action.charWidth;
|
|
state.windowWidth = action.windowWidth;
|
|
}
|
|
});
|
|
|
|
export function appSet(key, value) {
|
|
return {
|
|
type: actions.APP_SET,
|
|
key,
|
|
value
|
|
};
|
|
}
|
|
|
|
export function setConnected(connected) {
|
|
return appSet('connected', connected);
|
|
}
|
|
|
|
export function setCharWidth(width) {
|
|
return appSet('charWidth', width);
|
|
}
|
|
|
|
export function setConnectDefaults(defaults) {
|
|
return appSet('connectDefaults', defaults);
|
|
}
|