* Add dependent clauses to Article model
* Comment should be valid without a commentable
* Add cleanup scripts
* Cache the comments ids before destroying the article
* Add dependent clause to Article.user_subscriptions as well
* Fix specs
* Create "blank" EmailSubscriptionTag
* Refactor liquid_tags_used with spec
* Create /user_subscriptions#create
- Update liquid tag name to UserSubscriptionTag
* Add rate limiting and specs
* Add counter_culture for user_subscriptions
* Update /async_info/base_data
- Alphabetize user_data
- Add email
- Add subscription_source_article_ids
- Cache subscription_source_article_ids on User model
* Add stale email check and specs
* Change user_email to subscriber_email for clarity
* Restrict UserSubscriptionTag
* Rename RESTRICTED_TAGS to RESTRICTED_LIQUID_TAGS
* Make TODO comment more clear
* Refactor error responses and update specs
* Update type to source_type in error message
* Use constantize over safe_constantize
* Add check for active source
* Refactor checking of current_user's subscriptions
- Remove data from async_info
- Create a new service to fetch/cache a user's existing subscriptions
* Restrict email in base_data to admin roles
* Oops! Rename liquid tag file
* Change error back to result...oops!
* It's not goodbye, it's see you later. RIP email :/
* Add current_email to /user_subscriptions/base_data
* Revert adding current_email
* Undo async_info_controller changes/fix conflict
* Move params to constant
* Refactor SubscriptionCacheChecker
* Remove duplicate status code in JSON response
* Remove duplicate status code for #subscribed
* Use response.parsed_body
* Remove user guard in SubscriptionCacheChecker
* Add migrations for subscriber_email column
* Add new schema
* Update relationships, specs, and factory
* Use unless index_exists? over if !index_exists?
* Fix typo in last fix for migration
* Rename authored_user_subscriptions
- to source_authored_user_subcriptions
* Add factory methods and specs
- UserSubscription.make
- UserSubscription.make_new
- Article.new_user_subscription
- Article.create_user_subscription
* Remove self and &
* Change make_new to build
* new_user_subscription --> build_user_subscription
* Come on, Travis
* Add TwitterClient::Client
* Use TwitterClient::Client for Tweet
* Test retweets
* Test assignment to user
* Fix TweetTag spec
* Remove TwitterBot
* Fix some specs
* Fix RSS Reader specs
* Only include needed fields for top comments
* Test for included user info in comments in feed
* Omit hidden and deleted comments from feed json
* Optimize selected columns from comment
* Revert field selection to prevent user n+1
* Add profile_image_90 to users in comments in feed
* Add 'top_comments' to article feed
* Only include root comments
* Cache and eagerly load top comments
* Clear top comments cache when article score is updated
* Add articles.top_comments to bullet whitelist
* Update app/models/article.rb
Co-Authored-By: rhymes <rhymesete@gmail.com>
* Remove limit in top_comments association, remove Rails caching of top comments
* Remove unnecessary test
Co-authored-by: rhymes <rhymesete@gmail.com>
* Index reactions when they are created and updated, remove when destroyed
* update reading list reactions when related article fields are updated
* create indexable method and use for indexing to elasticsearch
Currently, we don't allow users to remove the `main_image` of an article once it has been set. It can be changed, but never removed.
This change allows the `main_image` to be removed by checking for the `cover_image` key in the frontmatter that is sent along in the article's markdown. This means that a user should be able to remove the image associated with an article by removing the value of `cover_image:` from their frontmatter.
When an article is updated the associated collection is touched along with all its articles. This creates a deadlock where two transaction(nested) lock the article that was updated.
With this commit the collection wll be touched after the article updates transaction has been commited. Doing so we have two sequential transactions.
* Add new UpdateMainImageBackgroundHexWorker worker class
This is a port of app/jobs/update_main_image_background_job.rb
that works with Sidekiq instead of DelayedJob.
* Update all references to UpdateMainImageBackgroundHexJob
This updates all references to UpdateMainImageBackgroundHexJob
so they now call UpdateMainImageBackgroundHexWorker, which works
with Sidekiq instead of DelayedJob.
* Move method call to after_commit callback
* Fix article specs with sidekiq helpers
Co-authored-by: Alex <alexandersmith223@gmail.com>
* Create Articles::ScoreCalcWorker
* Create Articles::ScoreCalcWorker spec
* Update references to the new ScoreCalcWorker
* Refactoring conditional callbacks and biz logic
- Move update_columns to a model method
- Move conditions on callback to guard clause in callback method
- Make article_destroy_spec more explicit
* Fix article description issues
* Move tag info to decorator
* Fix description edge cases
* Fix description creation logic
* Fix test and adjust naming
* Modify line in processed_description
* Create RemoveFromIndexWorker
* Create spec for RemoveFromIndexWorker
* Update RemoveFromIndexJob to RemoveFromIndexWorker
- Update references from the job to the new worker
- Update specs to use the new worker
- Fix spec in comment_spec that causes linter/RuboCop violation
* Remove unnecessary argument nil check
* Update spec for missing data