import api from '../api'; export const BOOKMARK_FOLDERS_FETCH_REQUEST = 'BOOKMARK_FOLDERS_FETCH_REQUEST'; export const BOOKMARK_FOLDERS_FETCH_SUCCESS = 'BOOKMARK_FOLDERS_FETCH_SUCCESS'; export const BOOKMARK_FOLDERS_FETCH_FAIL = 'BOOKMARK_FOLDERS_FETCH_FAIL'; export const BOOKMARK_FOLDER_CREATE_REQUEST = 'BOOKMARK_FOLDER_CREATE_REQUEST'; export const BOOKMARK_FOLDER_CREATE_SUCCESS = 'BOOKMARK_FOLDER_CREATE_SUCCESS'; export const BOOKMARK_FOLDER_CREATE_FAIL = 'BOOKMARK_FOLDER_CREATE_FAIL'; export const BOOKMARK_FOLDER_UPDATE_REQUEST = 'BOOKMARK_FOLDER_UPDATE_REQUEST'; export const BOOKMARK_FOLDER_UPDATE_SUCCESS = 'BOOKMARK_FOLDER_UPDATE_SUCCESS'; export const BOOKMARK_FOLDER_UPDATE_FAIL = 'BOOKMARK_FOLDER_UPDATE_FAIL'; export const BOOKMARK_FOLDER_DELETE_REQUEST = 'BOOKMARK_FOLDER_DELETE_REQUEST'; export const BOOKMARK_FOLDER_DELETE_SUCCESS = 'BOOKMARK_FOLDER_DELETE_SUCCESS'; export const BOOKMARK_FOLDER_DELETE_FAIL = 'BOOKMARK_FOLDER_DELETE_FAIL'; export const BOOKMARK_FOLDER_EDITOR_NAME_CHANGE = 'BOOKMARK_FOLDER_EDITOR_NAME_CHANGE'; export const BOOKMARK_FOLDER_EDITOR_RESET = 'BOOKMARK_FOLDER_EDITOR_RESET'; export const BOOKMARK_FOLDER_EDITOR_SETUP = 'BOOKMARK_FOLDER_EDITOR_SETUP'; export const fetchBookmarkFolders = () => (dispatch, getState) => { dispatch(fetchBookmarkFoldersRequest()); api(getState).get('/api/v1/bookmark_folders') .then(({ data }) => dispatch(fetchBookmarkFoldersSuccess(data))) .catch(err => dispatch(fetchBookmarkFoldersFail(err))); }; export const fetchBookmarkFoldersRequest = () => ({ type: BOOKMARK_FOLDERS_FETCH_REQUEST, }); export const fetchBookmarkFoldersSuccess = folders => ({ type: BOOKMARK_FOLDERS_FETCH_SUCCESS, folders, }); export const fetchBookmarkFoldersFail = error => ({ type: BOOKMARK_FOLDERS_FETCH_FAIL, error, }); export const createBookmarkFolder = (name, shouldReset) => (dispatch, getState) => { dispatch(createBookmarkFolderRequest()); api(getState).post('/api/v1/bookmark_folders', { name }).then(({ data }) => { dispatch(createBookmarkFolderSuccess(data)); if (shouldReset) { dispatch(resetBookmarkFolderEditor()); } }).catch(err => dispatch(createBookmarkFolderFail(err))); }; export const createBookmarkFolderRequest = () => ({ type: BOOKMARK_FOLDER_CREATE_REQUEST, }); export const createBookmarkFolderSuccess = folder => ({ type: BOOKMARK_FOLDER_CREATE_SUCCESS, folder, }); export const createBookmarkFolderFail = error => ({ type: BOOKMARK_FOLDER_CREATE_FAIL, error, }); export const updateBookmarkFolder = (id, name, shouldReset) => (dispatch, getState) => { dispatch(updateBookmarkFolderRequest(id)); api(getState).put(`/api/v1/bookmark_folders/${id}`, { name }).then(({ data }) => { dispatch(updateBookmarkFolderSuccess(data)); if (shouldReset) { dispatch(resetBookmarkFolderEditor()); } }).catch(err => dispatch(updateBookmarkFolderFail(id, err))); }; export const updateBookmarkFolderRequest = id => ({ type: BOOKMARK_FOLDER_UPDATE_REQUEST, id, }); export const updateBookmarkFolderSuccess = folder => ({ type: BOOKMARK_FOLDER_UPDATE_SUCCESS, folder, }); export const updateBookmarkFolderFail = (id, error) => ({ type: BOOKMARK_FOLDER_UPDATE_FAIL, id, error, }); export const deleteBookmarkFolder = id => (dispatch, getState) => { dispatch(deleteBookmarkFolderRequest(id)); api(getState).delete(`/api/v1/bookmark_folders/${id}`) .then(() => dispatch(deleteBookmarkFolderSuccess(id))) .catch(err => dispatch(deleteBookmarkFolderFail(id, err))); }; export const deleteBookmarkFolderRequest = id => ({ type: BOOKMARK_FOLDER_DELETE_REQUEST, id, }); export const deleteBookmarkFolderSuccess = id => ({ type: BOOKMARK_FOLDER_DELETE_SUCCESS, id, }); export const deleteBookmarkFolderFail = (id, error) => ({ type: BOOKMARK_FOLDER_DELETE_FAIL, id, error, }); export const submitBookmarkFolderEditor = shouldReset => (dispatch, getState) => { const folderId = getState().getIn(['bookmarkFolderEditor', 'folderId']); const name = getState().getIn(['bookmarkFolderEditor', 'name']); if (folderId === null) { dispatch(createBookmarkFolder(name, shouldReset)); } else { dispatch(updateBookmarkFolder(folderId, name, shouldReset)); } }; export const resetBookmarkFolderEditor = () => ({ type: BOOKMARK_FOLDER_EDITOR_RESET, }); export const setupBookmarkFolderEditor = folderId => (dispatch, getState) => dispatch({ type: BOOKMARK_FOLDER_EDITOR_SETUP, folder: getState().getIn(['bookmarkFolders', folderId]), }); export const changeBookmarkFolderEditorName = value => ({ type: BOOKMARK_FOLDER_EDITOR_NAME_CHANGE, value, });