* Hide blocked users' content appropriately
* Use RESTful create route
* Update functionality to block the user
* Fix specs for new route
* Use const instead of var
* Add noopener and noreferrer
* Remove caching for blocked user ids
* Add new rule for lack of noopener noreferrer
* Update snapshot
* Add redis gem and client
* use keyword arguments in redis initializer
* check for REDISCLOUD_URL and fallback on REDIS_URL when connecting to redis
* dont parse Redis url in initializer
* [WIP] Extract DEV specifics to Env variables
* [WIP] Fix sendgrid url that I accidentally changed. Womp.
* Remove extra colon from 'variable' calls
* Trim :// off of app protocol
* Update Envfile TIMBER_LOGS default comment for accuracy
* Add API doc links for each service
* Add specs for ArticleImageUploader
* Add specs for BadgeUploader
* Add specs for CoverImageUploader
* Add specs for ProfileImageUploader
* Refactor uploaders to inherit from BaseUploader
* Strip EXIF and GPS data from uploaded images
* Add ImageMagick to the docs
* Protect strip_exif
* Prevent need for eager loading
* Add initial implementation of user block
* Remove debugger oops
* Add index and foreign keys for user_block table
* Use private method instead of exists
* Move channel handling logic to service object
* Update styling a bit
* Use profileDropdown file for future proofing
* Remove commented out code
* Render json: { result } for all endpoints
* Add statuses for sad paths
* Add better sad path handling in the JS
* Remove accidentally committed spec file
* Don't wait for DOM to load block button
* Use equality for accuracy in slug query
* Add status code for unauthorized requests
* Add missing comma sigh
* Regenerate rubocop todo
* Fix outstanding problems
* Fix Style/FormatStringToken
* Final update to rubocop todo file
* Set RSpec/ExampleLength to max 10 and regenerate todo file
* Add route for comment social preview
* Add method comment to social_previews_controller
* Add view for comment social preview
* Fix spacing in meta keywords
* Update comments page keywords
* Create helper for comment social media image
* Use comment social image, add published condition for article social image
* Add tests for comment social preview
* Remove not_found fallback for social previews controller
* Remove cached_tag_list
* Update typos of word 'image' in spec
* Add ProMembership model
* Implement ProMembershipsController#create
* Implement basic ProMembershipsController#show
* Add ProMembership to ledger
* Populate user history after pro subscription is created
* Add fields for expiration notifications
* Add ProMemberships::ExpirationNotifier to notify users of expiring memberships
* Add tasks for recurring jobs to notify users of expiration
* Add auto_recharge column to ProMembership
* Add ProMemberships::Biller (incomplete)
* Fix specs
* Add ProMembership to Administrate
* Fix spec
* Add has_enough_credits? to User and Organization
* Add Payments::Customer class
* Finish ProMembership::Biller functionality
* Fix ProMemberships::Creator check for credits
* Disable destroy actions for ProMembershipsController
* Correctly authenticate ProMembershipsController actions
* Make sure only pro user's history can be indexed
* Add ProMembershipsController#update action for auto recharge
* Use regular AR to save new credits and add touch to the purchaser
* Clarify Pro membership create policy
* Display information about an existing pro membership
* Add UI to show page
* Add system test for Pro membership creation
* Implement edit membership
* Make sure users with pro memberships can access history and dashboard pro
* Fix padding issue
* Show a different text for a user that has credits but not enough for Pro
* Move Pro Membership functionality inside settings
* Update Pro Membership link in email notifications
* Bust all relevant caches
* Add the Pro checkmark around the website
* Use Users::ResaveArticlesJob instead of delay
* Add/remove user from pro-members chat channel
* Use the appropriate Pro checkmark
* Remove unfinished pro elements
* Remove checkmark JS
* Listings creation and update API
- new listings controller
- refactored code to share core functionnality between api and web controllers
- code in common in classified listing concerns
- added tests for index/create/update
- json output as views
- updated a factory
* Listings creation and update API: code update
- refactored json calls
- added test cases
- added pagination for list of listings
- refactored jbuilder files
- typos
* Listings creation and update API: code update
- tags and tag_list in controller
- changed view to display both
- refactored and added test
* Listings creation and update API: code update
- small change to resolve conflit
* Listings creation and update API: code update
- added test case
- deleted unneeded test case
* Start with webhooks: table and model
* Start with webhooks api
* Start with webhooks api
* Webhook::Event class and events list
* Remove commented callbacks
* Start with sending events to webhook endpoints
* A couple of tests for Articles::Creator
* Send event to webhook endpoint on article destroy
* Dispatch event on article update
* Dispatch event when an article updated from admin
* Spec for the webhook job
* One more test for the dispatch event job
* Integration-like spec for event dispatching to webhook endpoints when creating an article
* Use Addressable::URI to parse endpoint url
* Add oj as a faster fast_jsonapi backend
* Renamed serializers
* Move article serialization out of a model
* Don't allow to create a webhook event with invalid type
* Add fields for ArticleSerializer
* Fix webhook event job specs
* Specify timeout when dispatching events
* Fix webhook job spec
* Change webhook events queue name
* Change serialized article fields for the dispatchable events
* Include user data when serializing an article for webhook event
* Moved decorating out of Webhook::DispatchEvent, fixed most specs
* Fix route in ArticleSerializer
* Move Article decoration to Webhook::PayloadAdapter
* Refactor image url helpers to avoid including helpers into serializer
* Fix specs
* Default url options for production
* /api/articles/me defaults to published articles
We want to make it explicit to retrieve unpublished articles, this change defaults `/api/articles/me` to only published articles, also adds `/api/articles/me/published`, `/api/articles/me/unpublished` and `/api/articles/me/all` to make requests more explicit.
* Refactor /me logic into a case switch
* wip init handle draft class and styling
* add draft button
* start splitting up listing row into multile files
* separate tag links
* split location
* fix location
* separate listing row action buttons
* update listing row proptypes to describe listing object
* contact via connect to jsx
* fix default checked
* init draft creation and first publish charge
* fix first publish logic and credit charging
* handle drafts in dashboard filtering
* adjust isDraft bool statement
* hide drafts from main listings feed
* fix expired and draft bools in listing row
* adjust create listing org credits
* internally handle drafts
* adjust listing row
* break down update method
* remove unnecessary logic and shorten lines
* fix logic again woops
* convert input hidden value + submit into one form button submit with corresponding name and value
also adds clear message that drafts do not cost credits
* handle insufficient org credits on first publish
- uses user credits to publish
- similar to bump implementation
* fix sorting for personal and all orgs
* space out some elements
* don't spend original users credit for them
* add delete buttons and delete_confirm and destroy methods
* remove notification removal since listings dont trigger notifications
* move draft message and add draft_params to tests
* Update classified_listings_controller.rb
* update tests
* update snapshot
* add del tests
* add guard preventing free draft publish
* fix draft filter
* update from master and resolve merge conflict in listing preact
* Revert "update from master and resolve merge conflict in listing preact"
This reverts commit 0a34fccf334a2ca0902644b486cb26ead6bef664.
* update column spec
instead of setting and saving
* separate two expectations into their own tests
* split more tests into single expectations
* change to unless bumped_at? instead of if nil
* Fix listing draft edge cases and styling
* Add title tags to listings pages
* Update specs for doorkeeper test
* Add bang
* Create #authenticate
* Create /api/articles/ endpoint
* Update specs
* Update me.json.jbuilder
* Fix typo and spacing
* Support pagination for #me
* Update #authenticate! to support cookies
* Make per_page a param
* Disable method-complexity check
* Enable refresh_token
* Create /api/users/me endpoint