Merge branch 'master' into edit-comment-settings

This commit is contained in:
Kim Gardner
2017-05-18 17:07:37 -04:00
committed by GitHub
4 changed files with 49 additions and 28 deletions
@@ -25,7 +25,7 @@ class Stream extends React.Component {
render() {
const {
root: {asset, asset: {comments}, comment, myIgnoredUsers},
root: {asset, asset: {comments}, comment, me},
postComment,
addNotification,
postFlag,
@@ -58,8 +58,9 @@ class Stream extends React.Component {
const firstCommentDate = asset.comments[0]
? asset.comments[0].created_at
: new Date(Date.now() - 1000 * 60 * 60 * 24 * 7).toISOString();
const commentIsIgnored = (comment) =>
myIgnoredUsers && myIgnoredUsers.includes(comment.user.id);
const commentIsIgnored = (comment) => {
return me && me.ignoredUsers && me.ignoredUsers.find((u) => u.id === comment.user.id);
};
return (
<div id="stream">
{open
@@ -150,8 +151,8 @@ class Stream extends React.Component {
/>
<div className="embed__stream">
{comments.map(
(comment) =>
(commentIsIgnored(comment)
(comment) => {
return (commentIsIgnored(comment)
? <IgnoredCommentTombstone key={comment.id} />
: <Comment
data={this.props.data}
@@ -180,7 +181,9 @@ class Stream extends React.Component {
charCountEnable={asset.settings.charCountEnable}
maxCharCount={asset.settings.charCount}
editComment={this.props.editComment}
/>)
/>
);
}
)}
</div>
<LoadMore
@@ -112,7 +112,10 @@ class StreamContainer extends React.Component {
componentDidMount() {
if (this.props.previousTab) {
this.props.data.refetch();
this.props.data.refetch()
.then(({data: {asset: {commentCount}}}) => {
return this.props.setCommentCountCache(commentCount);
});
}
this.countPoll = setInterval(() => {
this.getCounts(this.props.data.variables);
@@ -205,6 +208,9 @@ const fragments = {
}
me {
status
ignoredUsers {
id
}
}
...${getDefinitionName(Comment.fragments.root)}
}
+32 -11
View File
@@ -122,19 +122,40 @@ const extension = {
`,
},
mutations: {
IgnoreUser: () => ({
// TODO: don't rely on refetching.
refetchQueries: [
'EmbedQuery', 'EmbedStreamProfileQuery',
],
IgnoreUser: ({variables}) => ({
updateQueries: {
EmbedQuery: (previousData, {mutationResult}) => {
const ignoredUserId = variables.id;
const response = mutationResult.data.ignoreUser;
if (ignoredUserId && !response.errors) {
const updated = update(previousData, {me: {ignoredUsers: {$push: [{
id: ignoredUserId,
__typename: 'User',
}]}}});
return updated;
}
return previousData;
}
}
}),
StopIgnoringUser: () => ({
StopIgnoringUser: ({variables}) => ({
updateQueries: {
EmbedStreamProfileQuery: (previousData, {mutationResult}) => {
const noLongerIgnoredUserId = variables.id;
const response = mutationResult.data.stopIgnoringUser;
if (noLongerIgnoredUserId && !response.errors) {
// TODO: don't rely on refetching.
refetchQueries: [
'EmbedQuery', 'EmbedStreamProfileQuery',
],
// remove noLongerIgnoredUserId from ignoredUsers
const updated = update(previousData, {me: {ignoredUsers: {
$apply: (ignoredUsers) => {
return ignoredUsers.filter((u) => u.id !== noLongerIgnoredUserId);
}
}}});
return updated;
}
return previousData;
}
}
}),
PostComment: ({
variables: {comment: {asset_id, body, parent_id, tags = []}},
+1 -10
View File
@@ -1,4 +1,4 @@
import {Map, Set} from 'immutable';
import {Map} from 'immutable';
import * as authActions from '../constants/auth';
import * as actions from '../constants/user';
import * as assetActions from '../constants/assets';
@@ -9,7 +9,6 @@ const initialState = Map({
settings: {},
myComments: [],
myAssets: [], // the assets from which myComments (above) originated
ignoredUsers: Set(),
});
const purge = (user) => {
@@ -39,14 +38,6 @@ export default function user (state = initialState, action) {
return state.set('myAssets', action.assets);
case actions.LOGOUT_SUCCESS:
return initialState;
case 'APOLLO_MUTATION_RESULT':
switch (action.operationName) {
case 'ignoreUser':
return state.updateIn(['ignoredUsers'], (i) => i.add(action.variables.id));
case 'stopIgnoringUser':
return state.updateIn(['ignoredUsers'], (i) => i.delete(action.variables.id));
}
break;
}
return state;
}