Redesigned compose form
This commit is contained in:
parent
9bf4c34919
commit
d8c5a83827
21 changed files with 477 additions and 218 deletions
|
@ -32,8 +32,7 @@ const initialState = Immutable.Map({
|
|||
sensitive: false,
|
||||
spoiler: false,
|
||||
spoiler_text: '',
|
||||
unlisted: false,
|
||||
private: false,
|
||||
privacy: null,
|
||||
text: '',
|
||||
focusDate: null,
|
||||
preselectDate: null,
|
||||
|
@ -67,8 +66,7 @@ function clearAll(state) {
|
|||
map.set('spoiler_text', '');
|
||||
map.set('is_submitting', false);
|
||||
map.set('in_reply_to', null);
|
||||
map.set('unlisted', state.get('default_privacy') === 'unlisted');
|
||||
map.set('private', state.get('default_privacy') === 'private');
|
||||
map.set('privacy', state.get('default_privacy'));
|
||||
map.update('media_attachments', list => list.clear());
|
||||
});
|
||||
};
|
||||
|
@ -114,6 +112,18 @@ const insertEmoji = (state, position, emojiData) => {
|
|||
});
|
||||
};
|
||||
|
||||
const privacyPreference = (a, b) => {
|
||||
if (a === 'direct' || b === 'direct') {
|
||||
return 'direct';
|
||||
} else if (a === 'private' || b === 'private') {
|
||||
return 'private';
|
||||
} else if (a === 'unlisted' || b === 'unlisted') {
|
||||
return 'unlisted';
|
||||
} else {
|
||||
return 'public';
|
||||
}
|
||||
};
|
||||
|
||||
export default function compose(state = initialState, action) {
|
||||
switch(action.type) {
|
||||
case STORE_HYDRATE:
|
||||
|
@ -123,26 +133,23 @@ export default function compose(state = initialState, action) {
|
|||
case COMPOSE_UNMOUNT:
|
||||
return state.set('mounted', false);
|
||||
case COMPOSE_SENSITIVITY_CHANGE:
|
||||
return state.set('sensitive', action.checked);
|
||||
return state.set('sensitive', !state.get('sensitive'));
|
||||
case COMPOSE_SPOILERNESS_CHANGE:
|
||||
return state.withMutations(map => {
|
||||
map.set('spoiler_text', '');
|
||||
map.set('spoiler', action.checked);
|
||||
map.set('spoiler', !state.get('spoiler'));
|
||||
});
|
||||
case COMPOSE_SPOILER_TEXT_CHANGE:
|
||||
return state.set('spoiler_text', action.text);
|
||||
case COMPOSE_VISIBILITY_CHANGE:
|
||||
return state.set('private', action.checked);
|
||||
case COMPOSE_LISTABILITY_CHANGE:
|
||||
return state.set('unlisted', action.checked);
|
||||
return state.set('privacy', action.value);
|
||||
case COMPOSE_CHANGE:
|
||||
return state.set('text', action.text);
|
||||
case COMPOSE_REPLY:
|
||||
return state.withMutations(map => {
|
||||
map.set('in_reply_to', action.status.get('id'));
|
||||
map.set('text', statusToTextMentions(state, action.status));
|
||||
map.set('unlisted', action.status.get('visibility') === 'unlisted' || state.get('default_privacy') === 'unlisted');
|
||||
map.set('private', action.status.get('visibility') === 'private' || state.get('default_privacy') === 'private');
|
||||
map.set('privacy', privacyPreference(action.status.get('visibility'), state.get('default_privacy')));
|
||||
map.set('focusDate', new Date());
|
||||
map.set('preselectDate', new Date());
|
||||
});
|
||||
|
@ -150,8 +157,7 @@ export default function compose(state = initialState, action) {
|
|||
return state.withMutations(map => {
|
||||
map.set('in_reply_to', null);
|
||||
map.set('text', '');
|
||||
map.set('unlisted', state.get('default_privacy') === 'unlisted');
|
||||
map.set('private', state.get('default_privacy') === 'private');
|
||||
map.set('privacy', state.get('default_privacy'));
|
||||
});
|
||||
case COMPOSE_SUBMIT_REQUEST:
|
||||
return state.set('is_submitting', true);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue