* Add article decorator published_timestamp
* Use time HTML5 element and refactor date in partial
* Add published_timestamp to Article
Adding `published_timestamp` to the homepage we can then use JS to render the full timestamp localized for the user.
We've also added the timestamp to the index and the API
* Display article published timestamp on hover
* Use time also in the article show page
* Add timestamp to bottom articles as well
* Remove published_timestamp from index because it is not used
* Fix broken specs
* Add more article dates specs
* Refactor date initializers
* Social Cards Part 2
This is a follow up to part 1: https://github.com/thepracticaldev/dev.to/pull/2090.
This PR updates the og:image URLs to use the new social_preview.png urls
added in Part 1.
So that the already generated/cached images do not need to be recreated,
this sets a MIGRATION_DATETIME. Any object that has been updated after
that date will generate a new image
Objects from before that date will not. They will use the new url.
* Fix weird change made by rubocop autocorrect
* Handle organizations + users
* Run CI
* Use time with zone to be explicit about timezone
* Simplify branching in user_social_image_url method
* Fix param alignment + bump migration date
The char "-" in regexp defaults a a separator for a range of character, for example: "a-z", Ruby is smart enough to understand "-_" is no range but it does emit a warning, by properly escaping the char "-" we ensure that no warning or issues can arise in the future.
* Initial classified listings work
* More work on tags
* Additional work finalizing stripe and getting the listings page along
* Finalize-ish listings 🤞
* be able to sort dashboard articles (#1837)
* remember to escape order clause is arel (#1837)
* add back in missing character for created_at (#1837)
* use case statement to avoid threat of injection (#1837)
* write specs to ensure sorting works for dashboard articles (#1837)
* add publish sort options, refactor sort options into articles helper (#1837)
* refactor to use model scope (#1837)
* Use published scope for articles
* Fix variable name
* The sequencing in the union query matters
* Fix spec
* Restore a published: true condition
* This test is actually misleading due to the union
* Revert this change, not sure why it's not a relation
* Fix useless diff
* Add delayed_job_web to dev environment for debugging
* Add specs for the current Follow callbacks implementation
* Move follower touching to ActiveJob
* Spec for the touch followers job
* Move Follow#create_chat_channel to ActiveJob and make the job safe
* Add ActiveJob to send email notifications about follows
* Enqueue SendEmailNotificationJob after the follow is created
* Specs to wnsure jobs are enqueued on Follow creation
* Make CreateChatChannelJob queue name more specific
* Reaction specs for Reaction after_save callbacks logic
* Touch user job
* Call Users::TouchJob on reaction create
* Move updating reactable to a separate job
* Move busting reactable cache to a separate job
* Bust homepage cache after reaction save in a separate job
* Spec for enqueueing Users::TouchJob on reaction create
* Refactor Reactions::UpdateReactable job
* Fix observer spec
* Remove harsh video restriction and add video duration
* Fix video meta data and tests
* Modify video tests
* Rescue video duration fetch error
* Change log to puts in test
* fixed `ActiveRecord::NotFound` issue for articles, on article destroy
* extracted ActiveJobs from article callbacks
* added specs for article and reaction deletions
* filter unnecessary queries
* Adjust article query in a couple places
* Replace tagged_with in main tag query
* Cache_tagged_with additional queries
* Modify test
* Modify cached_tagged_with to account for single tags
* Add cached_tagged_with in a few more places
* add comment template
* merge upstream
* Initial work
* make sure the template re-appears for top level comments after submission
* Small fix
* Fix git issues
* Account for missing reading times
* Add minimal score on sidebar
* Test for page to include min read
* rubocop cleanup
* Mess with test
* Add .to_i after score
* Modify search_score var
* Really simple calculate reading time function
* Move parse_it so that the number of methods in MarkdownParser is at 20
* Added test and default value for reading time
* Initial tag adjustments
* Finalize tag adjustments and tag adjustments controller
* Fix schema.rb
* Finalize tag removal logic
* Adjust edge cases/tests for tag adjustment moderation
* Adjust tag adjustments spec