Initial commit 🎉
fbshipit-source-id: b6fc29740c6875d2e78953b8a7123890a67930f2 Co-authored-by: Sebastian McKenzie <sebmck@fb.com> Co-authored-by: John Knox <jknox@fb.com> Co-authored-by: Emil Sjölander <emilsj@fb.com> Co-authored-by: Pritesh Nandgaonkar <prit91@fb.com>
This commit is contained in:
88
src/reducers/application.js
Normal file
88
src/reducers/application.js
Normal file
@@ -0,0 +1,88 @@
|
||||
/**
|
||||
* Copyright 2018-present Facebook.
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
* @format
|
||||
*/
|
||||
|
||||
import {remote} from 'electron';
|
||||
|
||||
export type State = {
|
||||
leftSidebarVisible: boolean,
|
||||
rightSidebarVisible: boolean,
|
||||
rightSidebarAvailable: boolean,
|
||||
bugDialogVisible: boolean,
|
||||
windowIsFocused: boolean,
|
||||
pluginManagerVisible: boolean,
|
||||
};
|
||||
|
||||
type ActionType =
|
||||
| 'leftSidebarVisible'
|
||||
| 'rightSidebarVisible'
|
||||
| 'rightSidebarAvailable'
|
||||
| 'bugDialogVisible'
|
||||
| 'windowIsFocused'
|
||||
| 'pluginManagerVisible';
|
||||
|
||||
export type Action = {
|
||||
type: ActionType,
|
||||
payload?: boolean,
|
||||
};
|
||||
|
||||
const INITAL_STATE: State = {
|
||||
leftSidebarVisible: true,
|
||||
rightSidebarVisible: true,
|
||||
rightSidebarAvailable: false,
|
||||
bugDialogVisible: false,
|
||||
windowIsFocused: remote.getCurrentWindow().isFocused(),
|
||||
pluginManagerVisible: false,
|
||||
};
|
||||
|
||||
export default function reducer(
|
||||
state: State = INITAL_STATE,
|
||||
action: Action,
|
||||
): State {
|
||||
const newValue =
|
||||
typeof action.payload === 'undefined'
|
||||
? !state[action.type]
|
||||
: action.payload;
|
||||
if (state[action.type] === newValue) {
|
||||
// value hasn't changed, do nothing
|
||||
return state;
|
||||
} else {
|
||||
return {
|
||||
...state,
|
||||
[action.type]: newValue,
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
export const toggleAction = (type: ActionType, payload?: boolean): Action => ({
|
||||
type,
|
||||
payload,
|
||||
});
|
||||
|
||||
export const toggleBugDialogVisible = (payload?: boolean): Action => ({
|
||||
type: 'bugDialogVisible',
|
||||
payload,
|
||||
});
|
||||
|
||||
export const toggleLeftSidebarVisible = (payload?: boolean): Action => ({
|
||||
type: 'leftSidebarVisible',
|
||||
payload,
|
||||
});
|
||||
|
||||
export const toggleRightSidebarVisible = (payload?: boolean): Action => ({
|
||||
type: 'rightSidebarVisible',
|
||||
payload,
|
||||
});
|
||||
|
||||
export const toggleRightSidebarAvailable = (payload?: boolean): Action => ({
|
||||
type: 'rightSidebarAvailable',
|
||||
payload,
|
||||
});
|
||||
|
||||
export const togglePluginManagerVisible = (payload?: boolean): Action => ({
|
||||
type: 'pluginManagerVisible',
|
||||
payload,
|
||||
});
|
||||
Reference in New Issue
Block a user