Refactor compose reducer account import
This commit is contained in:
parent
207a163e15
commit
3bc35cf3eb
|
@ -193,8 +193,52 @@ const expandMentions = status => {
|
||||||
return fragment.innerHTML;
|
return fragment.innerHTML;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const getAccountSettings = account => {
|
||||||
|
return account.getIn(['pleroma', 'settings_store', FE_NAME], ImmutableMap());
|
||||||
|
};
|
||||||
|
|
||||||
|
const importAccount = (state, account) => {
|
||||||
|
account = fromJS(account);
|
||||||
|
const settings = getAccountSettings(account);
|
||||||
|
|
||||||
|
const defaultPrivacy = settings.get('defaultPrivacy', 'public');
|
||||||
|
const defaultContentType = settings.get('defaultContentType', 'text/plain');
|
||||||
|
|
||||||
|
return state.merge({
|
||||||
|
default_privacy: defaultPrivacy,
|
||||||
|
privacy: defaultPrivacy,
|
||||||
|
default_content_type: defaultContentType,
|
||||||
|
content_type: defaultContentType,
|
||||||
|
tagHistory: ImmutableList(tagHistory.get(account.get('id'))),
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
const updateAccount = (state, account) => {
|
||||||
|
account = fromJS(account);
|
||||||
|
const settings = getAccountSettings(account);
|
||||||
|
|
||||||
|
const defaultPrivacy = settings.get('defaultPrivacy');
|
||||||
|
const defaultContentType = settings.get('defaultContentType');
|
||||||
|
|
||||||
|
return state.withMutations(state => {
|
||||||
|
if (defaultPrivacy) state.set('default_privacy', defaultPrivacy);
|
||||||
|
if (defaultContentType) state.set('default_content_type', defaultContentType);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
const updateSetting = (state, path, value) => {
|
||||||
|
const pathString = path.join(',');
|
||||||
|
switch (pathString) {
|
||||||
|
case 'defaultPrivacy':
|
||||||
|
return state.set('default_privacy', value).set('privacy', value);
|
||||||
|
case 'defaultContentType':
|
||||||
|
return state.set('default_content_type', value).set('content_type', value);
|
||||||
|
default:
|
||||||
|
return state;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
export default function compose(state = initialState, action) {
|
export default function compose(state = initialState, action) {
|
||||||
let me, defaultPrivacy, defaultContentType;
|
|
||||||
switch(action.type) {
|
switch(action.type) {
|
||||||
case COMPOSE_MOUNT:
|
case COMPOSE_MOUNT:
|
||||||
return state.set('mounted', state.get('mounted') + 1);
|
return state.set('mounted', state.get('mounted') + 1);
|
||||||
|
@ -363,33 +407,11 @@ export default function compose(state = initialState, action) {
|
||||||
case COMPOSE_POLL_SETTINGS_CHANGE:
|
case COMPOSE_POLL_SETTINGS_CHANGE:
|
||||||
return state.update('poll', poll => poll.set('expires_in', action.expiresIn).set('multiple', action.isMultiple));
|
return state.update('poll', poll => poll.set('expires_in', action.expiresIn).set('multiple', action.isMultiple));
|
||||||
case ME_FETCH_SUCCESS:
|
case ME_FETCH_SUCCESS:
|
||||||
me = fromJS(action.me);
|
return importAccount(state, action.me);
|
||||||
defaultPrivacy = me.getIn(['pleroma', 'settings_store', FE_NAME, 'defaultPrivacy'], 'public');
|
|
||||||
defaultContentType = me.getIn(['pleroma', 'settings_store', FE_NAME, 'defaultContentType'], 'text/plain');
|
|
||||||
return state.merge({
|
|
||||||
default_privacy: defaultPrivacy,
|
|
||||||
privacy: defaultPrivacy,
|
|
||||||
default_content_type: defaultContentType,
|
|
||||||
content_type: defaultContentType,
|
|
||||||
tagHistory: ImmutableList(tagHistory.get(action.me.id)),
|
|
||||||
});
|
|
||||||
case ME_PATCH_SUCCESS:
|
case ME_PATCH_SUCCESS:
|
||||||
me = fromJS(action.me);
|
return updateAccount(state, action.me);
|
||||||
defaultPrivacy = me.getIn(['pleroma', 'settings_store', FE_NAME, 'defaultPrivacy']);
|
|
||||||
defaultContentType = me.getIn(['pleroma', 'settings_store', FE_NAME, 'defaultContentType']);
|
|
||||||
if (defaultPrivacy) state = state.set('default_privacy', defaultPrivacy);
|
|
||||||
if (defaultContentType) state = state.set('default_content_type', defaultContentType);
|
|
||||||
return state;
|
|
||||||
case SETTING_CHANGE:
|
case SETTING_CHANGE:
|
||||||
const pathString = action.path.join(',');
|
return updateSetting(state, action.path, action.value);
|
||||||
switch (pathString) {
|
|
||||||
case 'defaultPrivacy':
|
|
||||||
return state.set('default_privacy', action.value).set('privacy', action.value);
|
|
||||||
case 'defaultContentType':
|
|
||||||
return state.set('default_content_type', action.value).set('content_type', action.value);
|
|
||||||
default:
|
|
||||||
return state;
|
|
||||||
}
|
|
||||||
default:
|
default:
|
||||||
return state;
|
return state;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue