import {Format, Show, Status, StatusError} from './constants' export function input (state, action) { switch (action.type) { case 'UPDATE_ORIGINAL_INPUT': return Object.assign({}, state, {original: action.data}) case 'UPDATE_FINAL_INPUT': return Object.assign({}, state, {final: action.data}) case 'CLEAR_INPUT': return {original: '', final: ''} default: return state || {original: '', final: ''} } } export function format (state, action) { switch (action.type) { case 'SET_PLAINTEXT_FORMAT': return Format.PLAINTEXT case 'SET_MARKDOWN_FORMAT': return Format.MARKDOWN default: return state || Format.PLAINTEXT } } export function show (state, action) { switch (action.type) { case 'SHOW_ORIGINAL': return Show.ORIGINAL case 'SHOW_FINAL': return Show.FINAL case 'SHOW_DIFFERENCE': return Show.DIFFERENCE default: return state || Show.DIFFERENCE } } /* export function saveStatus (state, action) { switch (action.type) { case 'SAVE_STATUS_DIRTY': return {dirty: true} case 'SAVE_STATUS_EMPTY': return {dirty: false, empty: true} case 'SAVE_STATUS_SAVED': return {dirty: false, saved: true} case 'SAVE_STATUS_FAILED' : return Object.assign({}, state, {waiting: false, failed: true, error: action.error}) case 'SAVE_STATUS_WAITING' : return Object.assign({}, state, {waiting: true, failed: false, error: null}) default: return state || {empty: true, dirty:false} } } */ // tracks status of the app, especially with respect to loaded and saved user data export function status (state, action) { // the status or error type is valid if it is in the list of Status or StatusError types const isValidStatus = (type) => Status[type] === type const isValidError = (type) => StatusError[type] === type // the error is cleared when status changes if (action.type === 'STATUS_SET' && isValidStatus(action.data)) { return {type: action.data, error: null, hasError: false, errorType: null} } // the error is set in addition to the status else if (action.type === 'STATUS_SET_ERROR' && isValidError(action.data)) { return Object.assign({}, state, {error: action.error, hasError: true, errorType: action.data}) } else { return state || {type: Status.EMPTY, hasError: false, error: null} } }