From 0cc8e837bfe4659d33a41a3beb61878dc053ee33 Mon Sep 17 00:00:00 2001 From: Joey Payne Date: Fri, 11 Mar 2016 15:04:50 -0700 Subject: [PATCH] Add stateful redux functions for navigation --- app/actions/navigation.jsx | 73 +++++++++++++- app/constants/navigation.jsx | 15 +++ app/reducers/navigation.jsx | 184 ++++++++++++++++++++++++++++++++++- 3 files changed, 267 insertions(+), 5 deletions(-) diff --git a/app/actions/navigation.jsx b/app/actions/navigation.jsx index c77cf6a..3b0997c 100644 --- a/app/actions/navigation.jsx +++ b/app/actions/navigation.jsx @@ -1,5 +1,74 @@ import * as types from '../constants/navigation' -export function updateSelection(selection) { - return { type: types.UPDATE_SELECTION, selection } +export function updateSelection(selection, callback) { + return { + type: types.UPDATE_SELECTION, + selection, + callback + } +} + +export function addMenuItem(item, callback){ + return { + type: types.ADD_MENU_ITEM, + item, + callback + } +} + +export function updateMenuItem(item, index, callback){ + return { + type: types.UPDATE_MENU_ITEM, + item, + index, + callback + } +} + +export function removeMenuItem(index, callback){ + return { + type: types.REMOVE_MENU_ITEM, + index, + callback + } +} + +export function addNotebook(notebook, callback){ + return { + type: types.ADD_NOTEBOOK, + notebook, + callback + } +} + +export function removeNotebook(index, callback){ + return { + type: types.REMOVE_NOTEBOOK, + index, + callback + } +} + +export function updateNotebook(notebook, index, callback){ + return { + type: types.UPDATE_NOTEBOOK, + notebook, + index, + callback + } +} + +export function sortNotebooks(sortFunc, callback){ + return { + type: types.SORT_NOTEBOOKS, + sortFunc, + callback + } +} + +export function refreshNavigation(callback){ + return { + type: types.REFRESH, + callback + } } diff --git a/app/constants/navigation.jsx b/app/constants/navigation.jsx index e585150..e8ec53f 100644 --- a/app/constants/navigation.jsx +++ b/app/constants/navigation.jsx @@ -1 +1,16 @@ export const UPDATE_SELECTION = 'UPDATE_SELECTION' + +export const REFRESH = 'REFRESH' + +// Menu item manipulation +export const MENU_TYPE = 'MENU_TYPE' +export const ADD_MENU_ITEM = 'ADD_MENU_ITEM' +export const UPDATE_MENU_ITEM = 'UPDATE_MENU_ITEM' +export const REMOVE_MENU_ITEM = 'REMOVE_MENU_ITEM' + +// Notebook item manipulation +export const NOTEBOOK_TYPE = 'NOTEBOOK_TYPE' +export const ADD_NOTEBOOK = 'ADD_NOTEBOOK' +export const REMOVE_NOTEBOOK = 'REMOVE_NOTEBOOK' +export const SORT_NOTEBOOKS = 'SORT_NOTEBOOKS' +export const UPDATE_NOTEBOOK = 'UPDATE_NOTEBOOK' diff --git a/app/reducers/navigation.jsx b/app/reducers/navigation.jsx index bd0c414..704f42c 100644 --- a/app/reducers/navigation.jsx +++ b/app/reducers/navigation.jsx @@ -1,17 +1,195 @@ -import { UPDATE_SELECTION } from '../constants/navigation' +import { + UPDATE_SELECTION, + ADD_MENU_ITEM, + UPDATE_MENU_ITEM, + REMOVE_MENU_ITEM, + ADD_NOTEBOOK, + REMOVE_NOTEBOOK, + UPDATE_NOTEBOOK, + SORT_NOTEBOOKS, + NOTEBOOK_TYPE, + MENU_TYPE, + REFRESH +} from '../constants/navigation' + +import * as utils from '../utils' +import glob from 'glob' +import jsfile from 'jsonfile' +import path from 'path-extra' + +// Load default selection +utils.createNotebookDir('Entries') const initialState = { - selection: { + selection: utils.loadNotebookByName('Entries'), + selectionIndex: 0, + selectionType: MENU_TYPE, + menuItems: [], + notebooks: [], + callback: () => {} +} + +var emptyFunc = () => {} + +function findIndexGeneric(array, notebook, type){ + for(var i=0; i