From 43119e5e152c91f397a23c1d11aecd24aed68a6e Mon Sep 17 00:00:00 2001 From: Riley Davis Date: Fri, 17 Mar 2017 14:30:11 -0600 Subject: [PATCH 1/6] sort the stories by date --- .../coral-admin/src/containers/Stories/Stories.js | 11 ++++++++--- client/coral-admin/src/reducers/assets.js | 13 +++++++++---- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/client/coral-admin/src/containers/Stories/Stories.js b/client/coral-admin/src/containers/Stories/Stories.js index 4d2ad086a..1264663f0 100644 --- a/client/coral-admin/src/containers/Stories/Stories.js +++ b/client/coral-admin/src/containers/Stories/Stories.js @@ -2,13 +2,14 @@ import React, {Component} from 'react'; import styles from './Stories.css'; import {connect} from 'react-redux'; import I18n from 'coral-framework/modules/i18n/i18n'; -import {fetchAssets, updateAssetState} from '../../actions/assets'; -import translations from '../../translations.json'; +import {fetchAssets, updateAssetState} from 'coral-admin/src/actions/assets'; +import translations from 'coral-admin/src/translations.json'; import {Link} from 'react-router'; import {Pager, Icon} from 'coral-ui'; import {DataTable, TableHeader, RadioGroup, Radio} from 'react-mdl'; import EmptyCard from 'coral-admin/src/components/EmptyCard'; +import sortBy from 'lodash/sortBy'; const limit = 25; @@ -104,7 +105,11 @@ class Stories extends Component { const {search, sort, filter} = this.state; const {assets} = this.props; - const assetsIds = assets.ids.map((id) => assets.byId[id]); + const assetsIds = sortBy(assets.ids.map((id) => assets.byId[id]), 'publication_date'); + + if (this.state.sort === 'desc') { + assetsIds.reverse(); + } return (
diff --git a/client/coral-admin/src/reducers/assets.js b/client/coral-admin/src/reducers/assets.js index c9a82f1c5..03f0be9bb 100644 --- a/client/coral-admin/src/reducers/assets.js +++ b/client/coral-admin/src/reducers/assets.js @@ -23,8 +23,13 @@ export default function assets (state = initialState, action) { } const replaceAssets = (action, state) => { - const assets = fromJS(action.assets.reduce((prev, curr) => { prev[curr.id] = curr; return prev; }, {})); - return state.set('byId', assets) - .set('count', action.count) - .set('ids', List(assets.keys())); + const assets = fromJS(action.assets.reduce((prev, curr) => { + prev[curr.id] = curr; + return prev; + }, {})); + + return state + .set('byId', assets) + .set('count', action.count) + .set('ids', List(assets.keys())); }; From eceddf109a20419f9415b630f40f544f6a33a15c Mon Sep 17 00:00:00 2001 From: Wyatt Johnson Date: Mon, 20 Mar 2017 12:35:22 -0600 Subject: [PATCH 2/6] Added reCAPTCHA docs --- README.md | 2 ++ services/passport.js | 5 +++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 64fe2739c..7e303f70e 100644 --- a/README.md +++ b/README.md @@ -41,6 +41,8 @@ Facebook Login enabled app. - `TALK_SMTP_HOST` (*required for email*) - SMTP host url with format `smtp.domain.com`. - `TALK_SMTP_PORT` (*required for email*) - SMTP port. - `TALK_INSTALL_LOCK` (_optional for dynamic setup_) - Defaults to `FALSE`. When `TRUE`, disables the dynamic setup endpoint. +- `TALK_RECAPTCHA_SECRET` (*required for reCAPTCHA support*) - server secret used for enabling reCAPTCHA powered logins. If not provided it will instead default to providing only a time based lockout. +- `TALK_RECAPTCHA_PUBLIC` (*required for reCAPTCHA support*) - client secret used for enabling reCAPTCHA powered logins. If not provided it will instead default to providing only a time based lockout. Refer to the wiki page on [Configuration Loading](https://github.com/coralproject/talk/wiki/Configuration-Loading) for alternative methods of loading configuration during development. diff --git a/services/passport.js b/services/passport.js index 4ec80bb60..f1994392f 100644 --- a/services/passport.js +++ b/services/passport.js @@ -116,14 +116,15 @@ const CheckIfNeedsRecaptcha = (user, email) => { * This stores the Recaptcha secret. */ const RECAPTCHA_SECRET = process.env.TALK_RECAPTCHA_SECRET; +const RECAPTCHA_PUBLIC = process.env.TALK_RECAPTCHA_PUBLIC; /** * This is true when the recaptcha secret is provided and the Recaptcha feature * is to be enabled. */ -const RECAPTCHA_ENABLED = RECAPTCHA_SECRET && RECAPTCHA_SECRET.length > 0; +const RECAPTCHA_ENABLED = RECAPTCHA_SECRET && RECAPTCHA_SECRET.length > 0 && RECAPTCHA_PUBLIC && RECAPTCHA_PUBLIC.length > 0; if (!RECAPTCHA_ENABLED) { - console.log('Recaptcha is not enabled for login/signup abuse prevention, set TALK_RECAPTCHA_SECRET to enable Recaptcha.'); + console.log('Recaptcha is not enabled for login/signup abuse prevention, set TALK_RECAPTCHA_SECRET and TALK_RECAPTCHA_PUBLIC to enable Recaptcha.'); } /** From fb503798e8f242c0901fd58b9a084c9708bc61fd Mon Sep 17 00:00:00 2001 From: riley Date: Mon, 20 Mar 2017 14:46:59 -0600 Subject: [PATCH 3/6] use the reply id so we don't get weird behavior. fix a console warning --- client/coral-embed-stream/src/Comment.js | 5 ++++- client/coral-embed-stream/src/LoadMore.js | 3 +++ .../graphql/fragments/commentView.graphql | 3 +++ .../coral-framework/graphql/queries/index.js | 19 +++++++++++++++---- 4 files changed, 25 insertions(+), 5 deletions(-) diff --git a/client/coral-embed-stream/src/Comment.js b/client/coral-embed-stream/src/Comment.js index 06352ec2f..3fdf5ccd7 100644 --- a/client/coral-embed-stream/src/Comment.js +++ b/client/coral-embed-stream/src/Comment.js @@ -155,6 +155,9 @@ class Comment extends React.Component { ? : null } + +

parent_id {comment.parent ? comment.parent.id : 'no parent'}

+

id: {comment.id}

@@ -232,7 +235,7 @@ class Comment extends React.Component { removeCommentTag={removeCommentTag} showSignInDialog={showSignInDialog} reactKey={reply.id} - key={`${reply.id}:${depth}`} + key={reply.id} comment={reply} />; }) } diff --git a/client/coral-embed-stream/src/LoadMore.js b/client/coral-embed-stream/src/LoadMore.js index bf89793d0..ad6dd65bd 100644 --- a/client/coral-embed-stream/src/LoadMore.js +++ b/client/coral-embed-stream/src/LoadMore.js @@ -7,6 +7,8 @@ const lang = new I18n(translations); const loadMoreComments = (assetId, comments, loadMore, parentId) => { + console.log('loadMoreComments', comments, comments.length); + if (!comments.length) { return; } @@ -48,6 +50,7 @@ class LoadMore extends React.Component { ?