Git Product home page Git Product logo

talk's Introduction

Coral by Vox Media

A better commenting experience from Vox Media.

GithubActions Docker Image Version Docker Image Size Twitter Follow

Description

Online comments are broken. Our open-source commenting platform, Coral, rethinks how moderation, comment display, and conversation function, creating the opportunity for safer, smarter discussions around your work.

Documentation

If you're new to Coral, the Coral documentation is a great place to start running and developing with Coral.

You’ve installed Coral, and you’re preparing to launch it on your site. The real community work starts now, before you go live. You have a unique opportunity pre-launch to set your community up for success. Read our Community Guides to learn more.

Support

We can help you set up Coral, migrate your comments from another system, integrate your registration platform, pair with your programmers, and help you with bespoke installs. To learn more, contact us.

Contributing

Coral is a Apache-2.0 licensed open-source project built with <3 by the Coral team, a part of Vox Media.

If you are interested in contributing to Coral, check out our Contributor's Guide.

License

Coral is Apache-2.0 licensed.

Versioning

If you're packaging a release of Coral, there is a convenient script to update the version numbers for all the child projects in the mono-repo.

The below script will run npm version x.y.z against all the child repositories so you don't have to manually update them by hand!

sh scripts/version.sh MAJOR.MINOR.VERSION // i.e. 8.5.0

talk's People

Contributors

artmsilva avatar bennettp123 avatar bowser2010 avatar cristiandean avatar cvle avatar dependabot[bot] avatar dimdimdimdimdimdim avatar dkolkena avatar dzarr avatar emptyfruit avatar existere avatar hectornm avatar henkor avatar iambrianchan avatar immber avatar janslu avatar jpkilpi avatar kabeaty avatar kgardnr avatar lammland avatar losowsky avatar marcushaddon avatar nbachman-vox avatar nick-funk avatar okbel avatar oliver-dvorski avatar rmens avatar samisafatli avatar tessalt avatar wyattjoh avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

talk's Issues

Edge case Like bug

Expected behavior

Clicking like always toggles as expected.

Steps to reproduce behavior

  1. Log in as a user
  2. like a comment
  3. log out (don't refresh)
  4. log in as another user
  5. like the comment (you will actually unlike it, then liking again shows +2)

This is a major edge case, but will likely lead to more bugs in the future.

The local state implementation of optimistic updating doesn't seem to take into account which user liked it. I recommend find a way to take advantage of redux actions that update the apollo state so that the component doesn't have to worry about these things.

Users can load any user's comments

Expected behavior

The endpoint that loads all the comments for a user should only allow users to see their own comments.

Actual behavior

Users can load any user's comments.

query = Comment.findByUserId(user_id);

By convention, all endpoints that allow a logged in user to access their own data should be under the /profile/ route. This can do things call the model with the logged in user's id explicitly so that users can never pull each other comments.

Steps to reproduce behavior

Call the endpoint linked above with various user id's.

Configure Stream tab should not be visible for non admins

Expected behavior

Users who don't have the admin role (including non-logged in users), should not see or have any way of gaining access to the Configure Stream tab in the comment stream.

Actual behavior

The tab is visible for everyone, but if you don't have access we see this:

configure

Steps to reproduce behavior

Go to a stream
log out
You shouldn't see the Configure Stream tab

Go to a stream
log in as a non-admin
You shouldn't see the Configure Stream tab

Fails to build assets on Node v7.2.1

Expected behavior

It builds.

Actual behavior

It certainly does not:


> [email protected] build /Users/wyatt/Code/github.com/coralproject/talk
> NODE_ENV=production ./node_modules/.bin/webpack --config webpack.config.js --bail

node_modules/nan
resolve failed:  { Error: Cannot find module 'eslint-module-utils'
    at Function.Module._resolveFilename (module.js:470:15)
    at Function.requireRelative.resolve (/Users/wyatt/Code/github.com/coralproject/talk/node_modules/require-relative/index.js:30:17)
    at resolve (/Users/wyatt/Code/github.com/coralproject/talk/node_modules/modify-babel-preset/lib/serialize.js:26:26)
    at findAndRemove (/Users/wyatt/Code/github.com/coralproject/talk/node_modules/modify-babel-preset/lib/serialize.js:83:11)
    at /Users/wyatt/Code/github.com/coralproject/talk/node_modules/modify-babel-preset/lib/serialize.js:126:13
    at Array.map (native)
    at loadPreset (/Users/wyatt/Code/github.com/coralproject/talk/node_modules/modify-babel-preset/lib/serialize.js:118:29)
    at module.exports (/Users/wyatt/Code/github.com/coralproject/talk/node_modules/modify-babel-preset/index.js:95:19)
    at Object.<anonymous> (/Users/wyatt/Code/github.com/coralproject/talk/node_modules/babel-preset-es2015-minimal/index.js:5:18)
    at Module._compile (module.js:571:32)
    at Object.Module._extensions..js (module.js:580:10)
    at Module.load (module.js:488:32)
    at tryModuleLoad (module.js:447:12)
    at Function.Module._load (module.js:439:3)
    at Module.require (module.js:498:17)
    at require (internal/module.js:20:19)
    at /Users/wyatt/Code/github.com/coralproject/talk/node_modules/babel-core/lib/transformation/file/options/option-manager.js:302:17
    at Array.map (native)
    at OptionManager.resolvePresets (/Users/wyatt/Code/github.com/coralproject/talk/node_modules/babel-core/lib/transformation/file/options/option-manager.js:270:20)
    at OptionManager.mergePresets (/Users/wyatt/Code/github.com/coralproject/talk/node_modules/babel-core/lib/transformation/file/options/option-manager.js:259:10)
    at OptionManager.mergeOptions (/Users/wyatt/Code/github.com/coralproject/talk/node_modules/babel-core/lib/transformation/file/options/option-manager.js:244:14)
    at OptionManager.init (/Users/wyatt/Code/github.com/coralproject/talk/node_modules/babel-core/lib/transformation/file/options/option-manager.js:374:12)
    at File.initOptions (/Users/wyatt/Code/github.com/coralproject/talk/node_modules/babel-core/lib/transformation/file/index.js:216:65)
    at new File (/Users/wyatt/Code/github.com/coralproject/talk/node_modules/babel-core/lib/transformation/file/index.js:139:24)
    at Pipeline.transform (/Users/wyatt/Code/github.com/coralproject/talk/node_modules/babel-core/lib/transformation/pipeline.js:46:16)
    at transpile (/Users/wyatt/Code/github.com/coralproject/talk/node_modules/babel-loader/lib/index.js:41:20)
    at Object.module.exports (/Users/wyatt/Code/github.com/coralproject/talk/node_modules/babel-loader/lib/index.js:138:12)
    at WEBPACK_CORE_LOADER_EXECUTION (/Users/wyatt/Code/github.com/coralproject/talk/node_modules/webpack-core/lib/NormalModuleMixin.js:155:71)
    at runSyncOrAsync (/Users/wyatt/Code/github.com/coralproject/talk/node_modules/webpack-core/lib/NormalModuleMixin.js:155:93)
    at nextLoader (/Users/wyatt/Code/github.com/coralproject/talk/node_modules/webpack-core/lib/NormalModuleMixin.js:290:3)
    at /Users/wyatt/Code/github.com/coralproject/talk/node_modules/webpack-core/lib/NormalModuleMixin.js:259:5
    at Storage.finished (/Users/wyatt/Code/github.com/coralproject/talk/node_modules/enhanced-resolve/lib/CachedInputFileSystem.js:38:16)
    at /Users/wyatt/Code/github.com/coralproject/talk/node_modules/graceful-fs/graceful-fs.js:78:16
    at FSReqWrap.readFileAfterClose [as oncomplete] (fs.js:415:3) code: 'MODULE_NOT_FOUND' } eslint-module-utils
resolve failed:  { Error: Cannot find module 'caniuse-db'
    at Function.Module._resolveFilename (module.js:470:15)
    at Function.requireRelative.resolve (/Users/wyatt/Code/github.com/coralproject/talk/node_modules/require-relative/index.js:30:17)
    at resolve (/Users/wyatt/Code/github.com/coralproject/talk/node_modules/modify-babel-preset/lib/serialize.js:26:26)
    at findAndRemove (/Users/wyatt/Code/github.com/coralproject/talk/node_modules/modify-babel-preset/lib/serialize.js:83:11)
    at /Users/wyatt/Code/github.com/coralproject/talk/node_modules/modify-babel-preset/lib/serialize.js:126:13
    at Array.map (native)
    at loadPreset (/Users/wyatt/Code/github.com/coralproject/talk/node_modules/modify-babel-preset/lib/serialize.js:118:29)
    at module.exports (/Users/wyatt/Code/github.com/coralproject/talk/node_modules/modify-babel-preset/index.js:95:19)
    at Object.<anonymous> (/Users/wyatt/Code/github.com/coralproject/talk/node_modules/babel-preset-es2015-minimal/index.js:5:18)
    at Module._compile (module.js:571:32)
    at Object.Module._extensions..js (module.js:580:10)
    at Module.load (module.js:488:32)
    at tryModuleLoad (module.js:447:12)
    at Function.Module._load (module.js:439:3)
    at Module.require (module.js:498:17)
    at require (internal/module.js:20:19)
    at /Users/wyatt/Code/github.com/coralproject/talk/node_modules/babel-core/lib/transformation/file/options/option-manager.js:302:17
    at Array.map (native)
    at OptionManager.resolvePresets (/Users/wyatt/Code/github.com/coralproject/talk/node_modules/babel-core/lib/transformation/file/options/option-manager.js:270:20)
    at OptionManager.mergePresets (/Users/wyatt/Code/github.com/coralproject/talk/node_modules/babel-core/lib/transformation/file/options/option-manager.js:259:10)
    at OptionManager.mergeOptions (/Users/wyatt/Code/github.com/coralproject/talk/node_modules/babel-core/lib/transformation/file/options/option-manager.js:244:14)
    at OptionManager.init (/Users/wyatt/Code/github.com/coralproject/talk/node_modules/babel-core/lib/transformation/file/options/option-manager.js:374:12)
    at File.initOptions (/Users/wyatt/Code/github.com/coralproject/talk/node_modules/babel-core/lib/transformation/file/index.js:216:65)
    at new File (/Users/wyatt/Code/github.com/coralproject/talk/node_modules/babel-core/lib/transformation/file/index.js:139:24)
    at Pipeline.transform (/Users/wyatt/Code/github.com/coralproject/talk/node_modules/babel-core/lib/transformation/pipeline.js:46:16)
    at transpile (/Users/wyatt/Code/github.com/coralproject/talk/node_modules/babel-loader/lib/index.js:41:20)
    at Object.module.exports (/Users/wyatt/Code/github.com/coralproject/talk/node_modules/babel-loader/lib/index.js:138:12)
    at WEBPACK_CORE_LOADER_EXECUTION (/Users/wyatt/Code/github.com/coralproject/talk/node_modules/webpack-core/lib/NormalModuleMixin.js:155:71)
    at runSyncOrAsync (/Users/wyatt/Code/github.com/coralproject/talk/node_modules/webpack-core/lib/NormalModuleMixin.js:155:93)
    at nextLoader (/Users/wyatt/Code/github.com/coralproject/talk/node_modules/webpack-core/lib/NormalModuleMixin.js:290:3)
    at /Users/wyatt/Code/github.com/coralproject/talk/node_modules/webpack-core/lib/NormalModuleMixin.js:259:5
    at Storage.finished (/Users/wyatt/Code/github.com/coralproject/talk/node_modules/enhanced-resolve/lib/CachedInputFileSystem.js:38:16)
    at /Users/wyatt/Code/github.com/coralproject/talk/node_modules/graceful-fs/graceful-fs.js:78:16
    at FSReqWrap.readFileAfterClose [as oncomplete] (fs.js:415:3) code: 'MODULE_NOT_FOUND' } caniuse-db
resolve failed:  { Error: Cannot find module 'babel-runtime'
    at Function.Module._resolveFilename (module.js:470:15)
    at Function.requireRelative.resolve (/Users/wyatt/Code/github.com/coralproject/talk/node_modules/require-relative/index.js:30:17)
    at resolve (/Users/wyatt/Code/github.com/coralproject/talk/node_modules/modify-babel-preset/lib/serialize.js:26:26)
    at findAndRemove (/Users/wyatt/Code/github.com/coralproject/talk/node_modules/modify-babel-preset/lib/serialize.js:83:11)
    at /Users/wyatt/Code/github.com/coralproject/talk/node_modules/modify-babel-preset/lib/serialize.js:126:13
    at Array.map (native)
    at loadPreset (/Users/wyatt/Code/github.com/coralproject/talk/node_modules/modify-babel-preset/lib/serialize.js:118:29)
    at module.exports (/Users/wyatt/Code/github.com/coralproject/talk/node_modules/modify-babel-preset/index.js:95:19)
    at Object.<anonymous> (/Users/wyatt/Code/github.com/coralproject/talk/node_modules/babel-preset-es2015-minimal/index.js:5:18)
    at Module._compile (module.js:571:32)
    at Object.Module._extensions..js (module.js:580:10)
    at Module.load (module.js:488:32)
    at tryModuleLoad (module.js:447:12)
    at Function.Module._load (module.js:439:3)
    at Module.require (module.js:498:17)
    at require (internal/module.js:20:19)
    at /Users/wyatt/Code/github.com/coralproject/talk/node_modules/babel-core/lib/transformation/file/options/option-manager.js:302:17
    at Array.map (native)
    at OptionManager.resolvePresets (/Users/wyatt/Code/github.com/coralproject/talk/node_modules/babel-core/lib/transformation/file/options/option-manager.js:270:20)
    at OptionManager.mergePresets (/Users/wyatt/Code/github.com/coralproject/talk/node_modules/babel-core/lib/transformation/file/options/option-manager.js:259:10)
    at OptionManager.mergeOptions (/Users/wyatt/Code/github.com/coralproject/talk/node_modules/babel-core/lib/transformation/file/options/option-manager.js:244:14)
    at OptionManager.init (/Users/wyatt/Code/github.com/coralproject/talk/node_modules/babel-core/lib/transformation/file/options/option-manager.js:374:12)
    at File.initOptions (/Users/wyatt/Code/github.com/coralproject/talk/node_modules/babel-core/lib/transformation/file/index.js:216:65)
    at new File (/Users/wyatt/Code/github.com/coralproject/talk/node_modules/babel-core/lib/transformation/file/index.js:139:24)
    at Pipeline.transform (/Users/wyatt/Code/github.com/coralproject/talk/node_modules/babel-core/lib/transformation/pipeline.js:46:16)
    at transpile (/Users/wyatt/Code/github.com/coralproject/talk/node_modules/babel-loader/lib/index.js:41:20)
    at Object.module.exports (/Users/wyatt/Code/github.com/coralproject/talk/node_modules/babel-loader/lib/index.js:138:12)
    at WEBPACK_CORE_LOADER_EXECUTION (/Users/wyatt/Code/github.com/coralproject/talk/node_modules/webpack-core/lib/NormalModuleMixin.js:155:71)
    at runSyncOrAsync (/Users/wyatt/Code/github.com/coralproject/talk/node_modules/webpack-core/lib/NormalModuleMixin.js:155:93)
    at nextLoader (/Users/wyatt/Code/github.com/coralproject/talk/node_modules/webpack-core/lib/NormalModuleMixin.js:290:3)
    at /Users/wyatt/Code/github.com/coralproject/talk/node_modules/webpack-core/lib/NormalModuleMixin.js:259:5
    at Storage.finished (/Users/wyatt/Code/github.com/coralproject/talk/node_modules/enhanced-resolve/lib/CachedInputFileSystem.js:38:16)
    at /Users/wyatt/Code/github.com/coralproject/talk/node_modules/graceful-fs/graceful-fs.js:78:16
    at FSReqWrap.readFileAfterClose [as oncomplete] (fs.js:415:3) code: 'MODULE_NOT_FOUND' } babel-runtime
resolve failed:  { Error: Cannot find module 'webpack-core'
    at Function.Module._resolveFilename (module.js:470:15)
    at Function.requireRelative.resolve (/Users/wyatt/Code/github.com/coralproject/talk/node_modules/require-relative/index.js:30:17)
    at resolve (/Users/wyatt/Code/github.com/coralproject/talk/node_modules/modify-babel-preset/lib/serialize.js:26:26)
    at findAndRemove (/Users/wyatt/Code/github.com/coralproject/talk/node_modules/modify-babel-preset/lib/serialize.js:83:11)
    at /Users/wyatt/Code/github.com/coralproject/talk/node_modules/modify-babel-preset/lib/serialize.js:126:13
    at Array.map (native)
    at loadPreset (/Users/wyatt/Code/github.com/coralproject/talk/node_modules/modify-babel-preset/lib/serialize.js:118:29)
    at module.exports (/Users/wyatt/Code/github.com/coralproject/talk/node_modules/modify-babel-preset/index.js:95:19)
    at Object.<anonymous> (/Users/wyatt/Code/github.com/coralproject/talk/node_modules/babel-preset-es2015-minimal/index.js:5:18)
    at Module._compile (module.js:571:32)
    at Object.Module._extensions..js (module.js:580:10)
    at Module.load (module.js:488:32)
    at tryModuleLoad (module.js:447:12)
    at Function.Module._load (module.js:439:3)
    at Module.require (module.js:498:17)
    at require (internal/module.js:20:19)
    at /Users/wyatt/Code/github.com/coralproject/talk/node_modules/babel-core/lib/transformation/file/options/option-manager.js:302:17
    at Array.map (native)
    at OptionManager.resolvePresets (/Users/wyatt/Code/github.com/coralproject/talk/node_modules/babel-core/lib/transformation/file/options/option-manager.js:270:20)
    at OptionManager.mergePresets (/Users/wyatt/Code/github.com/coralproject/talk/node_modules/babel-core/lib/transformation/file/options/option-manager.js:259:10)
    at OptionManager.mergeOptions (/Users/wyatt/Code/github.com/coralproject/talk/node_modules/babel-core/lib/transformation/file/options/option-manager.js:244:14)
    at OptionManager.init (/Users/wyatt/Code/github.com/coralproject/talk/node_modules/babel-core/lib/transformation/file/options/option-manager.js:374:12)
    at File.initOptions (/Users/wyatt/Code/github.com/coralproject/talk/node_modules/babel-core/lib/transformation/file/index.js:216:65)
    at new File (/Users/wyatt/Code/github.com/coralproject/talk/node_modules/babel-core/lib/transformation/file/index.js:139:24)
    at Pipeline.transform (/Users/wyatt/Code/github.com/coralproject/talk/node_modules/babel-core/lib/transformation/pipeline.js:46:16)
    at transpile (/Users/wyatt/Code/github.com/coralproject/talk/node_modules/babel-loader/lib/index.js:41:20)
    at Object.module.exports (/Users/wyatt/Code/github.com/coralproject/talk/node_modules/babel-loader/lib/index.js:138:12)
    at WEBPACK_CORE_LOADER_EXECUTION (/Users/wyatt/Code/github.com/coralproject/talk/node_modules/webpack-core/lib/NormalModuleMixin.js:155:71)
    at runSyncOrAsync (/Users/wyatt/Code/github.com/coralproject/talk/node_modules/webpack-core/lib/NormalModuleMixin.js:155:93)
    at nextLoader (/Users/wyatt/Code/github.com/coralproject/talk/node_modules/webpack-core/lib/NormalModuleMixin.js:290:3)
    at /Users/wyatt/Code/github.com/coralproject/talk/node_modules/webpack-core/lib/NormalModuleMixin.js:259:5
    at Storage.finished (/Users/wyatt/Code/github.com/coralproject/talk/node_modules/enhanced-resolve/lib/CachedInputFileSystem.js:38:16)
    at /Users/wyatt/Code/github.com/coralproject/talk/node_modules/graceful-fs/graceful-fs.js:78:16
    at FSReqWrap.readFileAfterClose [as oncomplete] (fs.js:415:3) code: 'MODULE_NOT_FOUND' } webpack-core
resolve failed:  { Error: Cannot find module '@kadira'
    at Function.Module._resolveFilename (module.js:470:15)
    at Function.requireRelative.resolve (/Users/wyatt/Code/github.com/coralproject/talk/node_modules/require-relative/index.js:30:17)
    at resolve (/Users/wyatt/Code/github.com/coralproject/talk/node_modules/modify-babel-preset/lib/serialize.js:26:26)
    at findAndRemove (/Users/wyatt/Code/github.com/coralproject/talk/node_modules/modify-babel-preset/lib/serialize.js:83:11)
    at /Users/wyatt/Code/github.com/coralproject/talk/node_modules/modify-babel-preset/lib/serialize.js:126:13
    at Array.map (native)
    at loadPreset (/Users/wyatt/Code/github.com/coralproject/talk/node_modules/modify-babel-preset/lib/serialize.js:118:29)
    at module.exports (/Users/wyatt/Code/github.com/coralproject/talk/node_modules/modify-babel-preset/index.js:95:19)
    at Object.<anonymous> (/Users/wyatt/Code/github.com/coralproject/talk/node_modules/babel-preset-es2015-minimal/index.js:5:18)
    at Module._compile (module.js:571:32)
    at Object.Module._extensions..js (module.js:580:10)
    at Module.load (module.js:488:32)
    at tryModuleLoad (module.js:447:12)
    at Function.Module._load (module.js:439:3)
    at Module.require (module.js:498:17)
    at require (internal/module.js:20:19)
    at /Users/wyatt/Code/github.com/coralproject/talk/node_modules/babel-core/lib/transformation/file/options/option-manager.js:302:17
    at Array.map (native)
    at OptionManager.resolvePresets (/Users/wyatt/Code/github.com/coralproject/talk/node_modules/babel-core/lib/transformation/file/options/option-manager.js:270:20)
    at OptionManager.mergePresets (/Users/wyatt/Code/github.com/coralproject/talk/node_modules/babel-core/lib/transformation/file/options/option-manager.js:259:10)
    at OptionManager.mergeOptions (/Users/wyatt/Code/github.com/coralproject/talk/node_modules/babel-core/lib/transformation/file/options/option-manager.js:244:14)
    at OptionManager.init (/Users/wyatt/Code/github.com/coralproject/talk/node_modules/babel-core/lib/transformation/file/options/option-manager.js:374:12)
    at File.initOptions (/Users/wyatt/Code/github.com/coralproject/talk/node_modules/babel-core/lib/transformation/file/index.js:216:65)
    at new File (/Users/wyatt/Code/github.com/coralproject/talk/node_modules/babel-core/lib/transformation/file/index.js:139:24)
    at Pipeline.transform (/Users/wyatt/Code/github.com/coralproject/talk/node_modules/babel-core/lib/transformation/pipeline.js:46:16)
    at transpile (/Users/wyatt/Code/github.com/coralproject/talk/node_modules/babel-loader/lib/index.js:41:20)
    at Object.module.exports (/Users/wyatt/Code/github.com/coralproject/talk/node_modules/babel-loader/lib/index.js:138:12)
    at WEBPACK_CORE_LOADER_EXECUTION (/Users/wyatt/Code/github.com/coralproject/talk/node_modules/webpack-core/lib/NormalModuleMixin.js:155:71)
    at runSyncOrAsync (/Users/wyatt/Code/github.com/coralproject/talk/node_modules/webpack-core/lib/NormalModuleMixin.js:155:93)
    at nextLoader (/Users/wyatt/Code/github.com/coralproject/talk/node_modules/webpack-core/lib/NormalModuleMixin.js:290:3)
    at /Users/wyatt/Code/github.com/coralproject/talk/node_modules/webpack-core/lib/NormalModuleMixin.js:259:5
    at Storage.finished (/Users/wyatt/Code/github.com/coralproject/talk/node_modules/enhanced-resolve/lib/CachedInputFileSystem.js:38:16)
    at /Users/wyatt/Code/github.com/coralproject/talk/node_modules/graceful-fs/graceful-fs.js:78:16
    at FSReqWrap.readFileAfterClose [as oncomplete] (fs.js:415:3) code: 'MODULE_NOT_FOUND' } @kadira
INVALID COMMIT MSG: does not match "<type>(<scope>): <subject>" !
undefined

npm ERR! Darwin 16.1.0
npm ERR! argv "/usr/local/Cellar/node/7.2.1/bin/node" "/usr/local/bin/npm" "run" "build"
npm ERR! node v7.2.1
npm ERR! npm  v3.10.9
npm ERR! code ELIFECYCLE
npm ERR! [email protected] build: `NODE_ENV=production ./node_modules/.bin/webpack --config webpack.config.js --bail`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the [email protected] build script 'NODE_ENV=production ./node_modules/.bin/webpack --config webpack.config.js --bail'.
npm ERR! Make sure you have the latest version of node.js and npm installed.
npm ERR! If you do, this is most likely a problem with the talk package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     NODE_ENV=production ./node_modules/.bin/webpack --config webpack.config.js --bail
npm ERR! You can get information on how to open an issue for this project with:
npm ERR!     npm bugs talk
npm ERR! Or if that isn't available, you can get their info via:
npm ERR!     npm owner ls talk
npm ERR! There is likely additional logging output above.

npm ERR! Please include the following file with any support request:
npm ERR!     /Users/wyatt/Code/github.com/coralproject/talk/npm-debug.log

Steps to reproduce behavior

Run in a docker container with:

# remove old node modules folder
rm -rf node_modules

# run in node docker container
docker run -ti --rm -v $PWD:/usr/local/app -w /usr/local/app node:7 bash

# verify node version
node --version

# install deps
npm install

# build assets
npm run build

Then you should see an error!

Clicking on Settings tab and then clicking back to Comments tab, sets Stream closed and the setting is `null`

Expected behavior

Clicking different tabs if the stream is set to Open - you should be able to comment, take actions, see your history, and see settings (if you have appropriate permissions)

Actual behavior

Clicking on Settings and then back to Comments, seems to clear the Settings which results in the stream being Closed.

Steps to reproduce behavior

  1. Go to comment stream, click on Settings, click back to Comments
  2. Can't comment or reply (get 500)
  3. Go to Settings, re-open stream, all works as expected

Embed link does not execute js

When I copy an embed tag from here:

https://talk-stg.coralproject.net/admin/configure

And hit it with my browser, the js is shown in the iframe.

Embed Block:

<div id='coralStreamEmbed'></div><script type='text/javascript' src='https://pym.nprapps.org/pym.v1.min.js'></script><script>var pymParent = new pym.Parent('coralStreamEmbed', 'https://talk-stg.coralproject.net/client/embed/stream/bundle.js', {title: 'comments'});</script>

This is what I see:

unspecified-1

Admin Community: User roles should be additive, not toggling

We have a mismatch between the element in the community page and the user role concept on the backend. The backend is configured to allow users to have any number of roles. The frontend has a dropdown toggle which only sends one role, adding it to the list.

My recommendation is to update our front end code to use a checkbox/tag widget to allows us to have more than one role.

Limiting users to single roles on the backend isn't a long term solution, as we already have stories that differentiate Moderators from Admins.

Not commenting in post-moderation.

In Chrome

Expected behavior

When in post-moderation, the comments show up right away in the comment stream.

Actual behavior

The comments are not showing up and there is an error in the console.

screen shot 2016-12-09 at 2 26 56 pm

Steps to reproduce behavior

  • Be sure post-moderation is on in admin/configure
  • Make a comment in the comment stream
  • Check that the comment is not showing up

Not able to comment when login.

Expected behavior

  • Comment right after login into Talk.

Actual behavior

  • Log In.
  • Not Able to comment.
  • Refresh the page.
  • Able to Comment.

Admin/Configure not working.

Expected behavior

Enable Pre-modeartion switch in admin/configure should display the configuration.

Actual behavior

Comment Settings in http://localhost:3000/admin/configure is not working. The only way to change the pre or post moderation for the stream is in the Configure Stream.

Steps to reproduce behavior

  • Change the pre-moderation in the configure stream.
  • Go to admin/configure and check if the change happened.

Multiple reply boxes stack up

Expected behavior

We should only ever see more than one reply box. The top comment box is always open. At most, no matter how may reply buttons users clicks, they should never see more than 2 boxes (the top box and the reply box for the last reply button clicked.)

Clicking on reply for another comment while a reply box is already open should close the other reply box (content in it can be lost.)

Actual behavior

Clicking reply on n comments opens up n reply boxes, all of which stack up:

multiple_reply_boxes

Steps to reproduce behavior

Go to a thread.
Click reply on a comment.
Click reply on another comment.
The first reply should close, but doesn't.

Ensure that notifications and popups aren't clipped by the stream iframe

There are several cases where notifications and other pop-up interfaces are clipped off due to the size of the iframe.

Suggested simple fix: add a buffer of space to the bottom of the stream and have notifications appear in there. This will create space for overlays as well.

More robust fix may be to have pym react to the size of all notifications so that the iframe grows naturally to accommodate them. This may be challenging as these elements aren't in the page flow and don't effect the out element's height.

With Firefox, cannot click on comment box after login modal has been closed

Expected behavior

Clicking in the comment box anytime should give me a cursor and let me type!

Actual behavior

In firefox, I cannot bring focus to the comment dialog after the login box has opened and closed.

Steps to reproduce behavior

Open a stream with firefox
click login
do the login thing
after the modal closes click on the comment box
note that it doesn't give you a cursor or let you type

"Historical" items

The purpose of this discussion to accomplish two things:

  1. Simple and standard way of knowing the current status of an item (aka, asset, comment or user)
  2. A standard way of knowing everything that's happened in the lifecycle of an item, who (if anyone) took the action to make it so, and when it happened.

Proposal:
Current Status:
To know current status, each field has a status field (string). This allows the status of an item to be queried efficiently and naturally travel with the item.

History:
Tracked as a sequence of events, containing:

  • what (status change)
  • who (user_id)
  • when (timestamp)
  • In the future we may want to include a why field, such as notes

Possible places to store historical events:

  1. as an array on the item itself
  2. in a single events collection (in which case we would add the item_type and item_id to the schema in the same way we do for actions.)
  3. in multiple events collection, aka user_events, asset_events, etc...

Discuss!

All comments are shown as flagged in mod queues.

Expected behavior

Only comments that have been flagged should show as flagged in the mod queues.

Actual behavior

All comments are shown as flagged.

Steps to reproduce behavior

  • Create a comment on an asset no one will see to flag.
  • Go to the mod queue.
  • See that it is flagged.

iframe embed headers prevent cross domain iframes

Expected behavior

We should be able to embed an iframe anywhere. (In the future we may want to create a whitelist)

Actual behavior

Embedding iframes across domains causes an error:

'''Refused to display 'https://talk-stg.coralproject.net/embed/stream?initialWidth=1596&childId=co…eamEmbed&parentTitle=&parentUrl=http%3A%2F%2Flocalhost%3A7777%2Fembed.html' in a frame because it set 'X-Frame-Options' to 'SAMEORIGIN'.'''

Steps to reproduce behavior

  • Embed a comment stream across domains.
  • Hit the page. Nothing will show.
  • Look at the console.

Cannot update roles in community screen

Expected behavior

Toggling roles in the community screen should update the user.

Actual behavior

Changing to Moderator or Administrator does nots ave (I get a 200 response but refreshing shows that the change hasn't stuck)
Changing to the empty role throws a 500.

unspecified-2

Steps to reproduce behavior

Log in as an admin
Try to change the role of a user
Refresh
see the role revert
Try to set to the 'blank role' or no role
See the 500

Banned users can flag comments

Expected behavior

When a banned user is log-in, they should not be able to flag comments or usernames.

Actual behavior

Banned users can flag items.

Steps to reproduce behavior

  • Log-in with a banned user account
  • Try to flag a comment

All comments in queues are showing as Anonymous

Expected behavior

Actual behavior

Comments created by logged in users are showing as anonymous in the moderation queues.

The moderation queue feed isn't returning the user information for the author_ids:

https://talk-stg.coralproject.net/api/v1/queue/comments/pending

screenshot 2016-11-28 11 42 40

Steps to reproduce behavior

Log into https://talk-stg.coralproject.net/admin with an admin account.
Note that all the comments are anonymous.
Note that the author_id's are present but the users are not coming back in the response.

Edge case like count error

Expected behavior

Clicking the like button should toggle whether you've liked it in all circumstances.

Actual behavior

If you:

  • like a comment
  • refresh
  • click that same like button (removes comment correctly)
  • click it again (like count goes up by 2)
  • click it again and again to see an odd cycles of like counts

Cli tool should initialize settings

Expected behavior

Settings should always be initialized no matter how we access the app.

We should be able to use the cli tool before running the server.

Actual behavior

Currently, settings init only happens when we run the server, so if we try to do something with the cli first, we get errors.

Steps to reproduce behavior

drop your db
try to run bin/cli users create

Update Settings call not sending sid cookie

Expected behavior

When we update settings from the admin app, the front end should send the cookie.

Actual behavior

The cookie isn't in the header, so the backend is sending a 401.

Steps to reproduce behavior

Log into the admin app.
Click Settings.
Click Save Settings.
See the 401.

New comments show immediately in the comment stream when premod is on

Expected behavior

When premod is set and a user enters a comment they should not see the comment and see a message saying that the comment is in for moderation.

Actual behavior

The comment is shown.
No message is shown.
On refresh, the comment disappears (as it should.)

Steps to reproduce behavior

Make sure premod is on.
Leave a comment.
See the behavior described above.

User comment history not showing in Settings tab

Expected behavior

All published comments should show under Settings in the user tab.

Actual behavior

Comments are not showing.

Note in this image that they are being returned from the api with the appropriate statuses.

unspecified

Steps to reproduce behavior

  • Add comments and approve them
  • Click settings
  • Note they're not there

Clicking user history removes comments in stream

Expected behavior

User should be able to toggle back and forth between the stream and their history.

Actual behavior

User is on stream with, say, 3 comments.
Toggles to User History.
The number of comments in the stream updates to the number of comments in their user history.
Toggling back to the stream the stream is no longer there.

Steps to reproduce behavior

Go to a stream, https://talk-stg.coralproject.net/
Log in
Note the comments i the stream
Click the "Settings" tab
Note the above behavior

Move linting to webpack config

Problem

Linting is sometimes omitted or it takes a lot to run. Running it with webpack will decrease the wait and improve the developer experience.

Solution

This could easily be arranged by adding this to our webpack.config file.

      {
        enforce: 'pre',
        test: /\.js$/,
        loader: 'eslint-loader',
        exclude: /node_modules/
      },

This way we can remove the linting hooks, only leaving the tests.

Thoughts?

Add meaningful error message when hitting embed/stream without iframe

Expected behavior

/embed/steam needs to be hit with an iframe as it needs to be passed the url of the parent page via pym. People are bound to navigate to that page, however. Currently, the display is left in a broken 'loading..' state and an opaque JS error is thrown.

Create a meaningful error message to display on the page;

"Talk Embed Stream must be embedded in a page. See http://github.com/coralproject/talk for more details."

Pre-moderate comments containing links not working

Expected behavior

When 'Pre-Moderate Comments Containing Links' is ON then all the comments that contain links go to the moderation queue.

Actual behavior

Comments are being displayed.

Steps to reproduce behavior

  • click on 'Pre-Moderate Comments Containing Links'
  • add a comment with a link

Register User: incorrect error states block process

Expected behavior

Correct error states.

Actual behavior

When the "pass and confirm pass" error state triggers, it causes the display name and password states to trigger even though the content is correct.

register-bug

Steps to reproduce behavior

  • register new user
  • fill in valid email, screen name and password
  • fill in invalid confirm password
  • click Signup
  • Note that the screen name and password error states are also triggered

Close/Open Comments

Story: https://www.pivotaltracker.com/n/projects/1863625/stories/134297345

Expected behavior

  • The 'Close Stream' button in the 'Configure Stream' should have a box to write down the close message. (Otherwise we should have the Asset.closedMessage field not in the Asset but in Settings).
  • The endpoint for changing the status of an Asset should change to use closedAt, closedMessage instead of status field

Actual behavior

  • Closing and opening comments is not working (backend and frontend not sync)

Steps to reproduce behavior

  • open the comment thread
  • reload the page
  • check if it is still open

Incorporate bin/init.js into application startup

Currently we need to run bin/init.js to start up settings. Failure to do so leads to an opaque error and lots of debugging. I'd like to avoid extra steps that we need to know to do whenever possible.

Move the init.js step into the bootstrapping part of the server start. In this case, we can check to see if settings have been initialized and initialize them if they have not yet been initialized.

Comment stream: clicking logout doesn't immediately change ui

Expected behavior

Clicking Logout should immediately log out the user.

Actual behavior

When clicking log out, the user is logged out but the UI is unchanged. Refreshing the page shows the user as logged out.

Steps to reproduce behavior

Log into a comment stream
Click Logout
note that it still look like you're logged in
Refresh
You're logged out

Configure Stream tab doesn't appear when logging into stream

Expected behavior

If you are logged in as an admin, you should always have the Configure Stream tab available.

Actual behavior

Admins need to log in, then refresh the stream to see the tab.

stream-settings-tab-needs-refresh

Steps to reproduce behavior

  • Log in as an admin
  • Note that there's no tab
  • Refresh, see the tab appear

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.