From 05659a80c03c62259e06d561b3d4eb9a21bdb21b Mon Sep 17 00:00:00 2001 From: Joshua Date: Tue, 12 Feb 2019 14:48:55 -0800 Subject: [PATCH] Use the `user.idField` to assign which field to use when dealing with discussions as well as the sidebar options. --- frontend/server/app.js | 2 ++ frontend/server/views/index.pug | 1 + frontend/src/modules/discussion/sagas.js | 11 +++++--- .../components/request/sidebar.jsx | 25 ++++++++++--------- .../output-checker/containers/requests.js | 5 ++-- frontend/src/services/config.js | 2 ++ 6 files changed, 28 insertions(+), 18 deletions(-) diff --git a/frontend/server/app.js b/frontend/server/app.js index b62c7f183..1cce3ff99 100644 --- a/frontend/server/app.js +++ b/frontend/server/app.js @@ -27,6 +27,7 @@ const cookieSecret = config.get('cookieSecret'); const isDevelopment = process.env.NODE_ENV === 'development'; const filesApiHost = config.get('filesApiHost'); const forumSocket = config.get('forumSocket'); +const idField = config.get('user.idField'); const memoryStore = new MemoryStore({ checkPeriod: 86400000, // prune expired entries every 24h }); @@ -93,6 +94,7 @@ app.get('*', storeUrl, (req, res) => { filesApiHost: parseApiHost(filesApiHost), socketHost: parseWsHost(forumSocket), commit: get(process, 'env.GITHASH', ''), + idField, }); }); diff --git a/frontend/server/views/index.pug b/frontend/server/views/index.pug index 2ffaa9dd3..940565e4e 100644 --- a/frontend/server/views/index.pug +++ b/frontend/server/views/index.pug @@ -14,6 +14,7 @@ html window.FILES_API_HOST = !{JSON.stringify(filesApiHost)}; window.SOCKET_HOST = !{JSON.stringify(socketHost)}; window.COMMIT = !{JSON.stringify(commit)}; + window.ID_FIELD = !{JSON.stringify(idField)}; if isDevelopment script(src="/main.js") diff --git a/frontend/src/modules/discussion/sagas.js b/frontend/src/modules/discussion/sagas.js index 5dc75caea..ba9b56937 100644 --- a/frontend/src/modules/discussion/sagas.js +++ b/frontend/src/modules/discussion/sagas.js @@ -5,6 +5,7 @@ import { camelizeKeys } from 'humps'; import { getToken } from '@src/services/auth'; import has from 'lodash/has'; import get from 'lodash/get'; +import { idField } from '@src/services/config'; import { postSchema } from './schemas'; @@ -16,7 +17,7 @@ function createSocket() { return socket; } -function createSocketChannel(socket, email) { +function createSocketChannel(socket, username) { return eventChannel(emit => { socket.onmessage = event => { const parsedJson = JSON.parse(event.data); @@ -29,7 +30,7 @@ function createSocketChannel(socket, email) { if (has(json, 'comment')) { const { topicId, authorUser } = json.comment; - if (authorUser !== email) { + if (authorUser !== username) { const payload = normalize(json.comment, postSchema); emit({ @@ -52,8 +53,10 @@ function createSocketChannel(socket, email) { function* authWatcher() { try { const socket = yield call(createSocket); - const email = yield select(state => get(state, 'app.auth.user.email')); - const channel = yield call(createSocketChannel, socket, email); + const user = yield select(state => get(state, 'app.auth.user', {})); + const email = get(user, 'email', ''); + const username = get(user, idField, email); + const channel = yield call(createSocketChannel, socket, username); while (true) { const { payload, meta } = yield take(channel); diff --git a/frontend/src/modules/output-checker/components/request/sidebar.jsx b/frontend/src/modules/output-checker/components/request/sidebar.jsx index 882e51be0..3d739ecf9 100644 --- a/frontend/src/modules/output-checker/components/request/sidebar.jsx +++ b/frontend/src/modules/output-checker/components/request/sidebar.jsx @@ -28,18 +28,19 @@ function Sidebar({

{data.author}

Reviewers
{data.reviewers.length === 1 &&

{assignedUser}

} - {data.reviewers.length <= 0 && ( - - )} - {user.email === assignedUser && + {data.reviewers.length <= 0 && + data.state < 3 && ( + + )} + {user.username === assignedUser && data.state < 4 && (
Actions
diff --git a/frontend/src/modules/output-checker/containers/requests.js b/frontend/src/modules/output-checker/containers/requests.js index f841201c1..42e6989d0 100644 --- a/frontend/src/modules/output-checker/containers/requests.js +++ b/frontend/src/modules/output-checker/containers/requests.js @@ -5,19 +5,20 @@ import values from 'lodash/values'; import withRequest from '@src/modules/data/components/data-request'; import { fetchRequests } from '@src/modules/requests/actions'; import { requestsListSchema } from '@src/modules/requests/schemas'; +import { idField } from '@src/services/config'; import RequestsList from '../components/requests-list'; const mapStateToProps = (state, { params }) => { const { filter, search } = state.outputChecker.viewState; - const user = get(state, 'app.auth.user.email'); + const username = get(state, ['app', 'auth', 'user', idField]); const requests = values(state.data.entities.requests); const data = requests .filter(d => d.state === params.state) .filter(d => { switch (filter) { case 'mine': - return head(d.reviewers) === user; + return head(d.reviewers) === username; case 'unassigned': return d.reviewers.length === 0; default: diff --git a/frontend/src/services/config.js b/frontend/src/services/config.js index b198de946..407fe45a9 100644 --- a/frontend/src/services/config.js +++ b/frontend/src/services/config.js @@ -2,9 +2,11 @@ export const limit = 100; export const version = VERSION; export const commit = COMMIT; +export const idField = ID_FIELD; export default { commit, limit, version, + idField, };