~cytrogen/masto-fe

20a89f1c8eefa0f766a4650be4d2e5f1fa92ee71 — Cytrogen 8 days ago dc35e2d
[feature] Bookmark folders UI
M app/javascript/flavours/glitch/actions/bookmark_folders.js => app/javascript/flavours/glitch/actions/bookmark_folders.js +10 -10
@@ 16,7 16,7 @@ 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_TITLE_CHANGE = 'BOOKMARK_FOLDER_EDITOR_TITLE_CHANGE';
export const BOOKMARK_FOLDER_EDITOR_RESET       = 'BOOKMARK_FOLDER_EDITOR_RESET';
export const BOOKMARK_FOLDER_EDITOR_SETUP       = 'BOOKMARK_FOLDER_EDITOR_SETUP';



@@ 42,10 42,10 @@ export const fetchBookmarkFoldersFail = error => ({
  error,
});

export const createBookmarkFolder = (name, shouldReset) => (dispatch, getState) => {
export const createBookmarkFolder = (title, shouldReset) => (dispatch, getState) => {
  dispatch(createBookmarkFolderRequest());

  api(getState).post('/api/v1/bookmark_folders', { name }).then(({ data }) => {
  api(getState).post('/api/v1/bookmark_folders', { title }).then(({ data }) => {
    dispatch(createBookmarkFolderSuccess(data));
    
    if (shouldReset) {


@@ 68,10 68,10 @@ export const createBookmarkFolderFail = error => ({
  error,
});

export const updateBookmarkFolder = (id, name, shouldReset) => (dispatch, getState) => {
export const updateBookmarkFolder = (id, title, shouldReset) => (dispatch, getState) => {
  dispatch(updateBookmarkFolderRequest(id));

  api(getState).put(`/api/v1/bookmark_folders/${id}`, { name }).then(({ data }) => {
  api(getState).put(`/api/v1/bookmark_folders/${id}`, { title }).then(({ data }) => {
    dispatch(updateBookmarkFolderSuccess(data));
    
    if (shouldReset) {


@@ 122,12 122,12 @@ export const deleteBookmarkFolderFail = (id, error) => ({

export const submitBookmarkFolderEditor = shouldReset => (dispatch, getState) => {
  const folderId = getState().getIn(['bookmarkFolderEditor', 'folderId']);
  const name  = getState().getIn(['bookmarkFolderEditor', 'name']);
  const title = getState().getIn(['bookmarkFolderEditor', 'title']);

  if (folderId === null) {
    dispatch(createBookmarkFolder(name, shouldReset));
    dispatch(createBookmarkFolder(title, shouldReset));
  } else {
    dispatch(updateBookmarkFolder(folderId, name, shouldReset));
    dispatch(updateBookmarkFolder(folderId, title, shouldReset));
  }
};



@@ 140,7 140,7 @@ export const setupBookmarkFolderEditor = folderId => (dispatch, getState) => dis
  folder: getState().getIn(['bookmarkFolders', folderId]),
});

export const changeBookmarkFolderEditorName = value => ({
  type: BOOKMARK_FOLDER_EDITOR_NAME_CHANGE,
export const changeBookmarkFolderEditorTitle = value => ({
  type: BOOKMARK_FOLDER_EDITOR_TITLE_CHANGE,
  value,
});

M app/javascript/flavours/glitch/features/bookmark_folder/index.jsx => app/javascript/flavours/glitch/features/bookmark_folder/index.jsx +1 -1
@@ 86,7 86,7 @@ class BookmarkFolder extends ImmutablePureComponent {
    const { statusIds, columnId, multiColumn, folder, hasMore, isLoading, params } = this.props;
    const { folderId } = params;
    const pinned = !!columnId;
    const name = folder ? folder.get('name') : folderId;
    const name = folder ? folder.get('title') : folderId;

    const emptyMessage = <FormattedMessage id='empty_column.bookmarked_statuses.folder' defaultMessage="You don't have any bookmarked posts in this folder yet. When you add one, it will show up here." />;
    

M app/javascript/flavours/glitch/features/bookmark_folders/index.jsx => app/javascript/flavours/glitch/features/bookmark_folders/index.jsx +2 -2
@@ 29,7 29,7 @@ const getOrderedBookmarkFolders = createSelector([state => state.get('bookmarkFo
    return folders;
  }

  return folders.toList().filter(item => !!item).sort((a, b) => a.get('name').localeCompare(b.get('name')));
  return folders.toList().filter(item => !!item).sort((a, b) => a.get('title').localeCompare(b.get('title')));
});

const mapStateToProps = state => ({


@@ 66,7 66,7 @@ class BookmarkFolders extends ImmutablePureComponent {
    ];

    for (const folder of folders) {
      children.push(<ColumnLink key={folder.get('id')} to={`/bookmarks/${folder.get('id')}`} icon='folder' text={folder.get('name')} />)
      children.push(<ColumnLink key={folder.get('id')} to={`/bookmarks/${folder.get('id')}`} icon='folder' text={folder.get('title')} />)
    }

    return (

M app/javascript/flavours/glitch/features/select_bookmark_folder_modal/components/bookmark_folder.jsx => app/javascript/flavours/glitch/features/select_bookmark_folder_modal/components/bookmark_folder.jsx +1 -1
@@ 57,7 57,7 @@ class BookmarkFolder extends ImmutablePureComponent {
          <RadioButton
            name='folder_id'
            value={statusFolderId || ''}
            label={folder ? folder.get('name') : <FormattedMessage id='bookmark_folders.uncategorized' defaultMessage='Uncategorized' />}
            label={folder ? folder.get('title') : <FormattedMessage id='bookmark_folders.uncategorized' defaultMessage='Uncategorized' />}
            checked={statusFolderId === (folder ? folder.get('id') : null)}
            onChange={this.handleChange}
          />

M app/javascript/flavours/glitch/features/select_bookmark_folder_modal/components/new_folder_form.jsx => app/javascript/flavours/glitch/features/select_bookmark_folder_modal/components/new_folder_form.jsx +3 -3
@@ 5,7 5,7 @@ import { defineMessages, injectIntl } from 'react-intl';

import { connect } from 'react-redux';

import { changeBookmarkFolderEditorName, submitBookmarkFolderEditor } from 'flavours/glitch/actions/bookmark_folders';
import { changeBookmarkFolderEditorTitle, submitBookmarkFolderEditor } from 'flavours/glitch/actions/bookmark_folders';
import { IconButton } from 'flavours/glitch/components/icon_button';

const messages = defineMessages({


@@ 14,12 14,12 @@ const messages = defineMessages({
});

const mapStateToProps = state => ({
  value: state.getIn(['bookmarkFolderEditor', 'name']),
  value: state.getIn(['bookmarkFolderEditor', 'title']),
  disabled: state.getIn(['bookmarkFolderEditor', 'isSubmitting']),
});

const mapDispatchToProps = dispatch => ({
  onChange: value => dispatch(changeBookmarkFolderEditorName(value)),
  onChange: value => dispatch(changeBookmarkFolderEditorTitle(value)),
  onSubmit: () => dispatch(submitBookmarkFolderEditor(true)),
});


M app/javascript/flavours/glitch/features/select_bookmark_folder_modal/index.jsx => app/javascript/flavours/glitch/features/select_bookmark_folder_modal/index.jsx +1 -1
@@ 18,7 18,7 @@ const getOrderedBookmarkFolders = createSelector([state => state.get('bookmarkFo
    return folders;
  }

  return folders.toList().filter(item => !!item).sort((a, b) => a.get('name').localeCompare(b.get('name')));
  return folders.toList().filter(item => !!item).sort((a, b) => a.get('title').localeCompare(b.get('title')));
});

const makeMapStateToProps = () => {

M app/javascript/flavours/glitch/reducers/bookmark_folder_editor.js => app/javascript/flavours/glitch/reducers/bookmark_folder_editor.js +5 -5
@@ 9,14 9,14 @@ import {
  BOOKMARK_FOLDER_UPDATE_SUCCESS,
  BOOKMARK_FOLDER_EDITOR_RESET,
  BOOKMARK_FOLDER_EDITOR_SETUP,
  BOOKMARK_FOLDER_EDITOR_NAME_CHANGE,
  BOOKMARK_FOLDER_EDITOR_TITLE_CHANGE,
} from '../actions/bookmark_folders';

const initialState = ImmutableMap({
  folderId: null,
  isSubmitting: false,
  isChanged: false,
  name: '',
  title: '',
});

export default function listEditorReducer(state = initialState, action) {


@@ 26,11 26,11 @@ export default function listEditorReducer(state = initialState, action) {
  case BOOKMARK_FOLDER_EDITOR_SETUP:
    return state.withMutations(map => {
      map.set('folderId', action.folder.get('id'));
      map.set('name', action.folder.get('name'));
      map.set('title', action.folder.get('title'));
    });
  case BOOKMARK_FOLDER_EDITOR_NAME_CHANGE:
  case BOOKMARK_FOLDER_EDITOR_TITLE_CHANGE:
    return state.withMutations(map => {
      map.set('name', action.value);
      map.set('title', action.value);
      map.set('isChanged', true);
    });
  case BOOKMARK_FOLDER_CREATE_REQUEST: