Was able to reproduce a bug where votes were not properly moved when merging two topics together. We were only checking duplicate votes if either both votes were either active or archived, and not a mix of the two. As a result, there were cases where the plugin was trying to move votes that already existed on an open topic, causing the merge to partially fail with a duplicate index error. What this commit does is as follows: - Cleaned up the logic so it's more readable. Previously it was duplicative and difficult to read. - We're now checking if a user has a vote on Topic A (active or archived) and Topic B (active or archived) that we're properly deleting the origin vote and keeping the destination vote instead of trying to merge in a duplicate. (This caused the original bug described above). - Per the specs on meta, topic merges move all votes to the destination topic, and if this causes a user to go over the limit, they'll have to wait until enough votes are released. - If the destination topic is closed, the votes will be archived; if the destination topic is open, those votes will be active. This is regardless of origin vote state. Also, the Gemfile was missing a source declaration to allow installation of gems/dependencies, so I've added that. |
||
---|---|---|
app | ||
assets | ||
config | ||
db/migrate | ||
lib/discourse_voting | ||
spec | ||
.eslintrc | ||
.gitignore | ||
.prettierrc | ||
.rubocop.yml | ||
.template-lintrc.js | ||
.travis.yml | ||
Gemfile | ||
Gemfile.lock | ||
LICENSE.txt | ||
README.md | ||
package.json | ||
plugin.rb | ||
translator.yml | ||
yarn.lock |
README.md
Discourse Voting
Adds the ability for voting on a topic within a specified category.
Topic discussing the plugin itself can be found here: https://meta.discourse.org/t/discourse-voting/40121