diff --git a/client/coral-admin/src/components/AccountHistory.js b/client/coral-admin/src/components/AccountHistory.js index 04df552be..52f3af92d 100644 --- a/client/coral-admin/src/components/AccountHistory.js +++ b/client/coral-admin/src/components/AccountHistory.js @@ -19,14 +19,30 @@ const buildUserHistory = (userState = {}) => { ); }; -const buildActionResponse = (typename, until, status) => { +/** readableDuration returns a readable duration of the suspension/ban in hours or days + * @param {} startDate + * @param {} endDate + */ +const readableDuration = (startDate, endDate) => { + const dur = moment.duration(moment(endDate).diff(moment(startDate))); + const durAsDays = dur.asDays().toFixed(0); + const durAsHours = dur.asHours().toFixed(0); + + return durAsHours > 23 + ? `${durAsDays} ${durAsDays > 1 ? 'days' : 'day'}` + : `${durAsHours} ${durAsHours > 1 ? 'hours' : 'hour'}`; +}; + +const buildActionResponse = (typename, created_at, until, status) => { switch (typename) { case 'UsernameStatusHistory': return `Username ${status}`; case 'BannedStatusHistory': return status ? 'User banned' : 'Ban removed'; case 'SuspensionStatusHistory': - return until ? 'Account Suspended' : 'Suspension removed'; + return until + ? `Suspended, ${readableDuration(created_at, until)}` + : 'Suspension removed'; default: return '-'; } @@ -77,7 +93,7 @@ class AccountHistory extends React.Component { 'talk-admin-account-history-row-status' )} > - {buildActionResponse(__typename, until, status)} + {buildActionResponse(__typename, created_at, until, status)}
  • diff --git a/graph/loaders/actions.js b/graph/loaders/actions.js index b5ea31a3f..77cc7138d 100644 --- a/graph/loaders/actions.js +++ b/graph/loaders/actions.js @@ -1,6 +1,6 @@ const DataLoader = require('dataloader'); const util = require('./util'); -const { first, get, merge, remove, groupBy, reduce } = require('lodash'); +const { first, get, merge, remove, groupBy, reduce, isNil } = require('lodash'); /** * Gets actions based on their item id's. @@ -35,10 +35,12 @@ const genActionsAuthoredWithID = ( * @param {Object} action_counts the action count object */ const iterateActionCounts = action_counts => - Object.keys(action_counts).map(action_type => ({ - count: action_counts[action_type], - action_type: action_type.toUpperCase(), - })); + !isNil(action_counts) + ? Object.keys(action_counts).map(action_type => ({ + count: action_counts[action_type], + action_type: action_type.toUpperCase(), + })) + : []; /** * getUserActions will get the actions made by the user for this specific diff --git a/package.json b/package.json index 4b1fd68cf..c61a5db45 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "talk", - "version": "4.2.1", + "version": "4.2.2", "description": "A better commenting experience from Mozilla, The New York Times, and the Washington Post. https://coralproject.net", "main": "app.js", "private": true, diff --git a/plugins/talk-plugin-facebook-auth/client/translations.yml b/plugins/talk-plugin-facebook-auth/client/translations.yml index 35a5c255c..ab72134f4 100644 --- a/plugins/talk-plugin-facebook-auth/client/translations.yml +++ b/plugins/talk-plugin-facebook-auth/client/translations.yml @@ -4,17 +4,21 @@ en: sign_up: "Sign up with Facebook" es: talk-plugin-facebook-auth: - facebook_sign_in: "Entrar con Facebook" - facebook_sign_up: "Registrarse con Facebook" + sign_in: "Entrar con Facebook" + sign_up: "Registrarse con Facebook" fr: talk-plugin-facebook-auth: - facebook_sign_in: "Connectez-vous avec Facebook" - facebook_sign_up: "Inscrivez-vous avec Facebook" + sign_in: "Connectez-vous avec Facebook" + sign_up: "Inscrivez-vous avec Facebook" zh_CN: talk-plugin-facebook-auth: - facebook_sign_in: "使用 Facebook 帐号" - facebook_sign_up: "使用 Facebook 帐号" + sign_in: "使用 Facebook 帐号" + sign_up: "使用 Facebook 帐号" zh_TW: talk-plugin-facebook-auth: - facebook_sign_in: "使用 Facebook 帳號" - facebook_sign_up: "使用 Facebook 帳號" + sign_in: "使用 Facebook 帳號" + sign_up: "使用 Facebook 帳號" +de: + talk-plugin-facebook-auth: + sign_in: "Mit Facebook anmelden" + sign_up: "Mit Facebook registrieren" \ No newline at end of file