Home Reference Source

application/redux/reducers/application-reducers.js

import Immutable from 'immutable';
import {
    APPLICATION_NOTIFY_UPDATES,
    APPLICATION_DID_NOTIFY_UPDATES,
    APPLICATION_SET_VERSION,
    APPLICATION_IS_CONNECTED,
    APPLICATION_IS_DIRTY,
    APPLICATION_SET_SETTINGS,
    APPLICATION_SET_SETPLUGINS
} from '../actions/application-actions';

export function application(state = null, action) {
    if (state == null) {
        state = {
            version: '0.0.0',
            doNotifyChanges: false,
            connectedState: false,
            isDirty: false,
            settings: Immutable.fromJS({}),
            plugins: Immutable.fromJS([])
        }
    }

    switch(action.type) {
        case APPLICATION_IS_DIRTY:
            // GIMME MY MONEY!
            return Object.assign({}, state, {
                isDirty: action.payload.isDirty
            });
        case APPLICATION_SET_VERSION:
            return Object.assign({}, state, {
                version: action.payload.version
            });
        case APPLICATION_NOTIFY_UPDATES:
            return Object.assign({}, state, {
                doNotifyChanges: true
            });
        case APPLICATION_DID_NOTIFY_UPDATES:
            return Object.assign({}, state, {
                doNotifyChanges: false
            });
        case APPLICATION_IS_CONNECTED:
            return Object.assign({}, state, {
                connectedState: action.payload.connectedState
            });
        case APPLICATION_SET_SETTINGS:
            return Object.assign({}, state, {
                settings: action.payload.settings
            });
        case APPLICATION_SET_SETPLUGINS:
            return Object.assign({}, state, {
                plugins: action.payload.plugins
            });
    }

    return state;
}