diff --git a/client/coral-embed-stream/src/CommentStream.js b/client/coral-embed-stream/src/CommentStream.js
index 9a1910105..5fb48d0a0 100644
--- a/client/coral-embed-stream/src/CommentStream.js
+++ b/client/coral-embed-stream/src/CommentStream.js
@@ -76,28 +76,16 @@ class CommentStream extends Component {
componentDidMount () {
// Set up messaging between embedded Iframe an parent component
// Using recommended Pym init code which violates .eslint standards
- new Pym.Child({polling: 500});
- this.props.getStream('assetTest');
+ const pym = new Pym.Child({polling: 100});
+ console.log(pym);
+ this.props.getStream('http://www.test.com');
}
render () {
- if (Object.keys(this.props.items).length === 0) {
- // Loading mock asset
- this.props.postItem({
- comments: [],
- url: 'http://coralproject.net'
- }, 'asset', 'assetTest');
-
- // Loading mock user
- this.props.postItem({name: 'Ban Ki-Moon'}, 'user', 'user_8989')
- .then((id) => {
- this.props.setLoggedInUser(id);
- });
- }
// TODO: Replace teststream id with id from params
- const rootItemId = 'assetTest';
+ const rootItemId = this.props.items.assets && Object.keys(this.props.items.assets)[0];
const rootItem = this.props.items.assets && this.props.items.assets[rootItemId];
return
{
@@ -117,7 +105,7 @@ class CommentStream extends Component {
reply={false}/>
{
- rootItem.comments.map((commentId) => {
+ rootItem.comments && rootItem.comments.map((commentId) => {
const comment = this.props.items.comments[commentId];
return
diff --git a/client/coral-framework/store/actions/items.js b/client/coral-framework/store/actions/items.js
index 648a1d95e..eea3315b0 100644
--- a/client/coral-framework/store/actions/items.js
+++ b/client/coral-framework/store/actions/items.js
@@ -77,9 +77,9 @@ export const appendItemArray = (id, property, value, add_to_front, item_type) =>
* @dispatches
* A set of items to the item store
*/
-export function getStream (assetId) {
+export function getStream (assetUrl) {
return (dispatch) => {
- return fetch(`/api/v1/stream?asset_id=${assetId}`)
+ return fetch(`/api/v1/stream?asset_url=${encodeURIComponent(assetUrl)}`)
.then(
response => {
return response.ok ? response.json() : Promise.reject(`${response.status} ${response.statusText}`);
@@ -95,6 +95,8 @@ export function getStream (assetId) {
}
}
+ const assetId = json.assets[0].id;
+
/* Sort comments by date*/
json.comments.sort((a, b) => new Date(b.created_at).getTime() - new Date(a.created_at).getTime());
const rels = json.comments.reduce((h, item) => {
@@ -112,10 +114,7 @@ export function getStream (assetId) {
return h;
}, {rootComments: [], childComments: {}});
- dispatch(addItem({
- id: assetId,
- comments: rels.rootComments,
- }, 'assets'));
+ dispatch(updateItem(assetId, 'comments', rels.rootComments, 'assets'));
const childKeys = Object.keys(rels.childComments);
for (let i = 0; i < childKeys.length; i++ ) {
diff --git a/client/coral-plugin-comment-count/CommentCount.js b/client/coral-plugin-comment-count/CommentCount.js
index 6786d5c74..7a27c1982 100644
--- a/client/coral-plugin-comment-count/CommentCount.js
+++ b/client/coral-plugin-comment-count/CommentCount.js
@@ -5,7 +5,7 @@ const name = 'coral-plugin-comment-count';
const CommentCount = ({items, id}) => {
let count = 0;
- if (items.assets[id]) {
+ if (items.assets[id] && items.assets[id].comments) {
count += items.assets[id].comments.length;
}
const itemKeys = Object.keys(items.comments);
diff --git a/routes/api/stream/index.js b/routes/api/stream/index.js
index db1d2bc36..b093f0d31 100644
--- a/routes/api/stream/index.js
+++ b/routes/api/stream/index.js
@@ -16,7 +16,7 @@ router.get('/', (req, res, next) => {
// Get the asset_id for this url (or create it if it doesn't exist)
Promise.all([
- Asset.findOrCreateByUrl(req.query.asset_url),
+ Asset.findOrCreateByUrl(decodeURIComponent(req.query.asset_url)),
Setting.getModerationSetting()
])
.then(([asset, {moderation}]) => {
diff --git a/tests/client/coral-framework/store/itemActions.spec.js b/tests/client/coral-framework/store/itemActions.spec.js
index 33fe15cab..d6ce0c970 100644
--- a/tests/client/coral-framework/store/itemActions.spec.js
+++ b/tests/client/coral-framework/store/itemActions.spec.js
@@ -18,8 +18,11 @@ describe('itemActions', () => {
});
describe('getStream', () => {
- const rootId = '1234';
+ const assetUrl = 'http://www.test.com';
const response = {
+ assets: [{
+ id: '1234', url: assetUrl
+ }],
comments: [
{body: 'stuff', id: '123'},
{body: 'morestuff', id: '456'}
@@ -42,17 +45,17 @@ describe('itemActions', () => {
it('should get an stream from an asset_id and send the appropriate dispatches', () => {
fetchMock.get('*', JSON.stringify(response));
- return actions.getStream(rootId)(store.dispatch)
+ return actions.getStream(assetUrl)(store.dispatch)
.then((res) => {
- expect(fetchMock.calls().matched[0][0]).to.equal('/api/v1/stream?asset_id=1234');
+ expect(fetchMock.calls().matched[0][0]).to.equal('/api/v1/stream?asset_url=http%3A%2F%2Fwww.test.com');
expect(res).to.deep.equal(response);
- expect(store.getActions()[0]).to.deep.equal({
+ expect(store.getActions()[1]).to.deep.equal({
type: actions.ADD_ITEM,
item: response.comments[0],
item_type: 'comments',
id: '123'
});
- expect(store.getActions()[1]).to.deep.equal({
+ expect(store.getActions()[2]).to.deep.equal({
type: actions.ADD_ITEM,
item: response.comments[1],
item_type: 'comments',
@@ -62,7 +65,7 @@ describe('itemActions', () => {
});
it('should handle an error', () => {
fetchMock.get('*', 404);
- return actions.getStream(rootId)(store.dispatch)
+ return actions.getStream(assetUrl)(store.dispatch)
.catch((err) => {
expect(err).to.be.truthy;
});