* Change models and related files
* Update controllers and specs
* More renaming
* Seek and destroy, I mean search and replace
* Round up the stragglers
* Ground control to Major Travis...
* More fixes
* PR feedback
* Various fixes
* Rename view
* Fix list query builder
* Unify request specs
* Fix some API spec errors
* Fix remaining API specs
* Make spec conform to API
* Fix leftover problems
* Fix JS tests
* Fix column name in select
* Fix API specs
* Fix search specs
* Paging Mr. Travis
* Rename positive_reactions_count to public_reactions_count
* Add positive reactions count back in so we can remove it
* Use public_category method for reactions
* Add positive_reactions_count in case any old caches rely on it
* Add positive_rxn_count to account for API endpoints
* Remove unused method
* One more spot...
* Add method back in because of caches
* Update specs to match new functionality
* Fix typo
* Remove unused methods
* Add public_reactions_count field to elasticsearch
* Add new data update scripts and update old ones
* Use BulkIndexWorker to batch indexing
* Use proper search class for handling feed content
* Remove redundant script oops
* Rename data update script and remove old specs
* Combine specs into one file
* add optional fields to user
- this provides the back-end implementation for #2365
* fix mistakes in schema.rb
* renamed OptionalField to userOptionalField
* rename field column in user_optional_fields to label
* add uniqueness validation on user_optional_field labels
* scope flag uniqueness to user_id
* add indexing on label in user_optional_fields
* add optional fields to user
- this provides the back-end implementation for #2365
* fix mistakes in schema.rb
* add index on user_id for user_optional_fields
* Remove duplicate model
* Fix schema
* Re-add past indexes
* Remove old index
* Remove another old index
* add `null:false` to columns in optional fields
* add `null: false` to the migration
- Updated test to account for the null constraint
* add null:false to user_id on user_optional_tables
Co-authored-by: rhymes <rhymesete@gmail.com>
Co-authored-by: Ben Halpern <bendhalpern@gmail.com>
* Truncate displayed username length to max length
* Better error notice
* Fix broken billing Stripe functionality
* Display server side credits purchasing errors
* Be explicit in the name of the partial
* Full name
* Remove variants from backend portion of onboarding
Since we're no longer using variants in onboarding, we don't need this code anymore!
* Ignore unused column on user, onboarding_variant_version
* Replace current onboarding notification with set_up_profile welcome notification
Also ensure that only "active" set_up_profile welcome notification is sent, and that "inactive" ones are ignored.
* Notify only if broadcast active, log error if broadcast not found
* Reports to Honeybadger if an active broadcast cannot be found
* Reorganize order of generator specs
* Ensure welcome_broadcast can be written to in spec
* Remove redundant spec
* Add audit logging for negative reactions
This change saves requests that create negative reactions to the audit
log. We need to be monitoring admin and moderator actions throughout the
app to increase visiblity on how our tools are being used and identify
abuse.
Additionally, this will help east concerns about giving elevated users
more powerful tools.
* Add a basic UI for moderator audit logs
* Log experience level ratings
* Log tag adjustments
* UI tweaks for moderator actions log
* Add logging to internal reactions controller
* Add logging for admin actions on users and articles
* Add searching to the moderator actions table
* Move audit instrumentation out of concern
We are able to use a PORO here instead of using a Rails concern. Moving
this also makes syntax to audit something quite a bit more explicit and
obvious to future developers
* Change moderator logs pagination page length
* Move auditing to after action filters
* Add moderator actions to the internal navbar
* Add request spec for internal moderator actions
* Use request params to populate AuditLog slug
* Break feedback_messages view into partials
* Standardize capitalization
* Add visual cues for banned and vommitted users
* Use helper methods to construct urls
* Rename vomitted? to vomitted_on?
vomitted_on? is a slightly more clear method name. This change takes
Rhymes' suggestion to use the AR method exists? over where(...).exists?
* Add response templates model and table
* Add missing factory oops
* Remove response templates on delete
* Remove moderator_id column from comments for now
* Use constants and add spec for response templates
* Re-subscribe user to newsletter by setting MC status to pending
* Add guard clause and new spec
* Make trait name more explicit
* Fix guard clause and spec
* Add sink user service and specs for mass vomits
* Use new score calculation
* Lower articles' scores instead and make async
* Add lower score functionality to controllers
* Remove unused variable
* Use correct var and add missing arg
* Remove unused status
* Add composite index for reactable_type and ID
* Use alias instead of additional boolean
* Use medium priority for sink worker
* Log to honeybadger and not logs
* Log the error and not a string
* Add "Welcome" type to Broadcasts, allow dynamic "authoring" of Broadcasts
This adds a new `type_of` to the Broadcast model: "Welcome". As we begin to create a new "welcome notification" workflow, we'll categorize them by making them all of the same type.
This also adds a concept of a "welcoming user", which can be set via an ENV var. The WELCOMING_USER_ID will allow us to explicitly set (and change) which user in the database is the one that "sends" welcoming notification. In production, we plan for this to be dev.to/sloan.
* Allow WelcomeNotificationWorker to accept + send any kind of broadcast
This abstracts out the logic of deciding which broadcast to send from the woker into the calling method. This will help us send many different kinds of welcome notifications using one, resuable worker class.
* Raise if a Notification can't be created
* Add STAFF_USER_ID as an ENV var
This is in preparation for moving away from SiteConfig.staff_user_id, and replacing it with an ENV var. We will need to set this in production first, and then make a separate PR to replace all instances of staff_user_id with the newly-set ENV var.