From 503679574298117640b3ebf347bb0d00b5de8ae0 Mon Sep 17 00:00:00 2001 From: Kata Date: Tue, 2 Jan 2018 16:02:15 -0600 Subject: [PATCH] feat(UI/picker): use a buffer to edit the server message --- UI/src/components/role-picker/actions.js | 37 +++++++++++++++--------- UI/src/components/role-picker/index.js | 21 ++++++++++---- UI/src/reducers/role-picker.js | 6 ++-- 3 files changed, 44 insertions(+), 20 deletions(-) diff --git a/UI/src/components/role-picker/actions.js b/UI/src/components/role-picker/actions.js index f39ede1..b259ae5 100644 --- a/UI/src/components/role-picker/actions.js +++ b/UI/src/components/role-picker/actions.js @@ -69,7 +69,8 @@ export const constructView = id => (dispatch, getState) => { rolesSelected: selected, originalRolesSelected: selected, hidden: false, - isEditingMessage: false + isEditingMessage: false, + messageBuffer: '' } }) @@ -112,26 +113,36 @@ export const updateRoles = roles => ({ data: roles }) -export const openMessageEditor = ({ - type: Symbol.for('rp: set message editor state'), - data: true -}) +export const openMessageEditor = id => (dispatch, getState) => { + const message = getState().servers.getIn([id, 'message']) + dispatch(editServerMessage(id, message)) + dispatch({ + type: Symbol.for('rp: set message editor state'), + data: true + }) +} export const saveServerMessage = id => async (dispatch, getState) => { - const message = getState().servers.getIn([id, 'message']) + const message = getState().rolePicker.get('messageBuffer') await superagent.patch(`/api/server/${id}`).send({ message }) + dispatch(closeMessageEditor) dispatch({ - type: Symbol.for('rp: set message editor state'), - data: false + type: Symbol.for('server: edit message'), + data: { + id, + message + } }) } export const editServerMessage = (id, message) => ({ - type: Symbol.for('server: edit message'), - data: { - id, - message - } + type: Symbol.for('rp: edit message buffer'), + data: message +}) + +export const closeMessageEditor = ({ + type: Symbol.for('rp: set message editor state'), + data: false }) diff --git a/UI/src/components/role-picker/index.js b/UI/src/components/role-picker/index.js index dce058d..ab5c641 100644 --- a/UI/src/components/role-picker/index.js +++ b/UI/src/components/role-picker/index.js @@ -31,6 +31,10 @@ class RolePicker extends Component { } } + get serverId () { + return this.props.server.get('id') + } + isSelected = id => { return this.props.data.getIn([ 'rolesSelected', id ]) } @@ -42,23 +46,29 @@ class RolePicker extends Component { editServerMessage = (e) => { const { dispatch } = this.props - dispatch(Actions.editServerMessage(this.props.server.get('id'), e.target.value)) + dispatch(Actions.editServerMessage(this.serverId, e.target.value)) } saveServerMessage = (e) => { const { dispatch } = this.props - dispatch(Actions.saveServerMessage(this.props.server.get('id'))) + dispatch(Actions.saveServerMessage(this.serverId)) } openMessageEditor = () => { const { dispatch } = this.props - dispatch(Actions.openMessageEditor) + dispatch(Actions.openMessageEditor(this.serverId)) + } + + closeMessageEditor = () => { + const { dispatch } = this.props + dispatch(Actions.closeMessageEditor) } renderServerMessage (server) { const isEditing = this.props.data.get('isEditingMessage') const roleManager = server.getIn(['perms', 'canManageRoles']) const msg = server.get('message') + const msgBuffer = this.props.data.get('messageBuffer') console.log(msg, roleManager, isEditing, this.props.data.toJS()) @@ -83,9 +93,10 @@ class RolePicker extends Component { return

Server Message

-
+
+
-