* Add last_active_at datetime to Broadcasts table
* Add last_active_at to Broadcast index view
* Add callback to Broadcast.rb to update last_active_at
* Add a data_update script to backfill the last_active_at column on the Broadcasts table
* Add a spec for updating the last_active_at timestamp in models/broadcast_spec.rb
* Format last_active_at timestamp via strftime in index.html.erb
* Remove data_update_script: backfill_last_active_at_for_broadcasts
* Remove ActiveRecord::Dirty method from broadcast.rb
* Adjust callback in broadcast.rb and last_active_at timestamp format in index.html.erb
* Adjust time in #update_last_active_at and add the safe navigation operator to index.html.erb
* Accounts for nil last_active_at values in the view
* Uses Time.current in place of Time.zone.now
* Remove last_active_at param from Broadcasts::Controller
* Add spec to broadcasts_spec.rb to test the updated attribute via a request
* Adjust current_time in broadcasts_spec.rb
* Adjust Timecop.freeze in broadcasts_spec.rb to resolve Travis faliure (fingers crossed)
* Adjust expectation to compare against last_active_at timestamp rather than current time
* Adds Timecop back and stores last_active_at timestamp to test against
* Rename last_active_at to active_status_updated_at on Broadcasts table
- Renames last_active_at to active_status_updated_at in specs
- Renames last_active_at to active_status_updated_at in model
- Renames last_active_at to active_status_updated_at in view
- Adjusts spelling in spec descriptions
- Rewords active_status_updated_at in view to Last Active On
* Always set the default email address to env variable
* Hide the default to prevent editing, and b/c it's shown above as readonly
* Check if email address param is present
* Replace PollSkips find_or_create_by with create_or_find_by
* Use insert_all to add users to a channel in bulk
* Use bulk insert for DataUpdateScript and set private what shall be private
* oops
* flare tag line height
* .
* init styling
* social buttons
* no need for inverted
* other places
* more
* Fix specs
Co-authored-by: rhymes <rhymesete@gmail.com>
* Backend MVP
- Migration
- Model
- Associations
* Add factory, spec, and validations
- Add unqiue index for validations
* Fix specs
* Add author to email_subscriptions
* Add user association to set_author_id
* Add clarifying comment to set_author_id
* Writing is hard sometimes
* Rename email_subscriptions to subscription_sources
* UserSubscription and user_subscription_sourceable
* subscribers --> sourced_subscribers
* Add comment to explain UserSubscription model
* Replace Credits.import with .insert_all
* Fix Notifications::Reactions::Send and replace .import with .upsert to avoid race conditions
* Replace .import! with .upsert_all in Notifications::NotifiableAction::Send
* Replace PodcastEpisode.import! with upsert
* Stop testing gems, test the code
* Remove activerecord-import
* Fix redundancies
* clarify comment
* Replace Credit.import with insert_all
* hello knapsack
* Do not try to insert if there is nothing to
* Provide default crayon styles when creating banners
* Import crayons styles into /internal pages.
* Allow admins to use crayons banner styles when creating broadcasts.
* Preview banner styles with crayons.
* Add a "x" close button to announcements, fix styling to accommodate it
* Use constant and helper for broadcast banner styles
* Add VALID_BANNER_STYLES frozen constant to Broadcast class.
* Add banner_style helper for determining banner style class.
* Clean up preview CSS, import broadcast styles into preview
* Add close button click handler, clean up initializeBroadcast
* Add close functionality to announcement banner
Also hide announcement if the user has explicitly seen and "X"-ed out of it.
* Add system specs around rendering + dismissing broadcasts
* Add some (truly beautiful) JS documentation
* Add visible class to broadcast when previewed from internal
* Implement search ordering by allowing sort_by and sort_direction
params to be passed through from the search form/page.
* Change ID of select to 'sort' instead of 'order' for consistency
* Fix styling and data attributes of select options
* Enable front end to pass sort_by and sort_direction params for searches to the back end
* Ensure that only query string params that are supposed to be changed are changed in each function
* Respond to review comments (additional commits to come but these were the quick changes)
* Move options for select into template
* Use addEventListener instead of using onchange in response to review comments
* Add tabs for sorting search results
* Finish implementing tabs for ordering search results
* Remove CSS rule applying to element that no longer exists
* Remove more rules created for an element that has been removed
* Remove more code added for the select dropdown that I've removed
* Remove duplicate jobs banner
* Feature 🚀 : Ability to delete messages in chat channels
- Sending message ID to frontend
- Deleting Message
- Use pusher to delete message realtime
* Minor Bug 🐞: Show message action only for current user
- User can delete or edit their own messages
* Test cases added
* Bug 🐞: Update message id for receiver
Message id was not sent to receiver by pusher
* Refactoring🛠: Message controller refactoring
* Test Cases📝 : Specs for Delete message added
* Feature 🚀 : Ability to edit messages
* Test Cases📝 : Specs for Edit message added
* 🐞 Channel List bug in mobile view
* changes in joining request responses
* 🛠 Request Managers Frontend ready
* changes in routes for adding and removing remembership
* 🚀 New routes implemented for request manager
* fix issues
* changes in api for remove membership
* Merge conflict resolved
* 🐞 Channel List bug in mobile view
* changes in joining request responses
* 🛠 Request Managers Frontend ready
* changes in routes for adding and removing remembership
* 🚀 New routes implemented for request manager
* fix issues
* changes in api for remove membership
* 🛠Optimizing for CodeClimate
* 🛠Optimizing again for CodeClimate
* 🛠Optimizing again 2 for CodeClimate
* 🛠 Added more test cases
* 🛠 Optimizing code
* 🚀 Action to open setting page added
* 🛠 Dummy page added for chat setting
* add JSON routes for chat channel settings
* Integrate chat channel settings API with UI
* 🐞 Channel List bug in mobile view
* 🛠 Request Managers Frontend ready
* changes in routes for adding and removing remembership
* 🚀 New routes implemented for request manager
* fix issues
* 🐞 Channel List bug in mobile view
* 🛠 Request Managers Frontend ready
* changes in routes for adding and removing remembership
* 🚀 New routes implemented for request manager
* fix issues
* 🛠Optimizing again for CodeClimate
* 🚀 Action to open setting page added
* 🛠 Dummy page added for chat setting
* add JSON routes for chat channel settings
* Integrate chat channel settings API with UI
* Fix PR requested changes
* Add JSDoc documentation to exported functions
* fix/add rspec test cases
* refactor channelSettinngs render part
* add test cases for chat channel settings component
* fix code-climate
* add rest component tests
* add more test coverage
* fix code-climate bugs
* add API function test
Co-authored-by: Sarthak Sharma <7lovesharma7@gmail.com>
Co-authored-by: Parasgr-code <paras.gaur@skynox.tech>
* Initial user payment pointer work
* Finalize functionality and tests
* Fix schema
* Update app/views/shared/_payment_pointer.html.erb
* Add function to list
* Add display_announcements boolean to Users table
* Adds a boolean with a default of true to Users
* Add display_announcements to #user_data and user_policy.rb
* Adds display_announcements to #user_data in AsyncInfoController
* Adds display_announcements to PERMITTED_ATTRIBUTES
* Add display_announcements to _misc.html.erb
* Adjust submit data request button and adjust Announcements heading
* Adjusts submit data request button to follow button capitalization
* Adjusts announcements heading to read Announcements not Sponsors
* Add copy to _misc.html.erb to add context around Announcement toggle
* Add request and system specs around Announcements
* Adds a test for announcements to user_settings_spec.rb
* Adds a system spec for updating announcements
* Add user_updates_announcements_spec file and remove old spec from users_settings_spec
* Fix spec weirdness
* Add tests around misc tab and Announcement toggle to user_settings_spec.rb
* Tests that misc tab renders properly
* Tests that display_announcements toggle updates a users settings properly
* Removes user_updates_announcements_spec.rb
* Adjusts Export Content capitalization in _misc.html.erb
* Resolve DB conflicts
* Provide default crayon styles when creating banners
* Import crayons styles into /internal pages.
* Allow admins to use crayons banner styles when creating broadcasts.
* Preview banner styles with crayons.
* Use constant and helper for broadcast banner styles
* Add VALID_BANNER_STYLES frozen constant to Broadcast class.
* Add banner_style helper for determining banner style class.
* Use Javascript to Display Jobs Banner
* one equal is enough
* stub SiteConfig values
* Return banner for all searches containing jobs, ensure banner is always at top, remove old job partial
* check for query before executing function
* Use pick instead of pluck first
* Use touch_all instead of update_all
* Use destroy_by instead of where.destroy_all
* Use scopes
* Fix db:seed:replant
* Remove ActiveSupport::Cache::RedisCacheStore expires_in cache
* Serialize broadcast_data within AsyncInfoController::base_data
Adds a `broadcast:` key to our `base_data`, regardless of whether a user is logged in or not.
If a broadcast is not present, passes along a `nil` value.
* Initialize active broadcast (if present) when rendering main page
* Allow admins to preview a broadcast's processed_html when editing
* Add some fixed position styling to active broadcast
* Add system specs around broadcasts on homepage
* Use sanitize in place of html_safe when previewing broadcast
* Do not initialize broadcast if no broadcastData available
* Render default value on broadcast in options_for_select
* JS cleanup
* Unset fixed positioning for static navbar config
Also add some default styling for an active broadcast
* db
* Add an iframe to host mod actions menu
This iframe is probably the fastest way to get a working mod actions
menu without rewriting existing code. We may eventually re-write this,
but based on Ben's recommendation we are going to go with an iframe
because it gets us a working feature quickly and it seems to be serving
us well in other parts of the application.
* Add the mod actions menu button to articles
When the user is "trusted" they will see a small badge on the lower
right-hand side of the screen. Clicking the icon reveals the mod actions
menu.
* Add header to actions panel (#7395)
* Update iframe border
* Add 'Moderate Post' header and button
* Use inline SVG over <img src='svg'>
* Use Crayons variables for units
* Use flexbox to center chevron
* Add accidentally deleted positioning
* Add chevron-right.svg
* Use a partial for actions panel and revert /mod page
* Load actions panel in iframe and not /mod
* Style UpVote, DownVote and Vomit buttons (#7421)
* Add a iframe to host mod actions menu
* Up and Downvote Icons
* Starting with vomit button
* Completed UI; interactions pending
* Incorporated Andy changes; making mod action-panel
* space reactions away from header
* UI tweaks and corrections 1
* Fixing styles to match crayons
* choose pure white color css variable
* Add thumbs-up emoji; address Lisa comments
* Trying to fix reactions interactions
* remove clearThumbReactions function
Co-authored-by: jacobherrington <jacobherringtondeveloper@gmail.com>
* Add bottom layout for actions panel (#7501)
* WIP for Lisa
* Finalize mod actions bottom section
* Use showing instead of hidden for transition
* Add new optimized SVGs
* Fix weird height issues for actions panel
* Move hover styles below the cascade, yo
* Use margin-top for sticky footer over height: 100%
* Move initialize actions panel button to Webpack (#7506)
* Move actions panel JS code to webpack
* Refactor and use destructuring
Thanks @nickytonline!
Co-Authored-By: Nick Taylor <nick@iamdeveloper.com>
* Rename file
Co-authored-by: Nick Taylor <nick@iamdeveloper.com>
* Configure Experience Level options for Mod Action Panel (#7507)
* Add a iframe to host mod actions menu
* Click interactions (no toggle of dropdowns yet)
Co-authored-by: jacobherrington <jacobherringtondeveloper@gmail.com>
* Fix the iframe's path (#7509)
* Toggle the 'Set Experience Level' menu on button-click (#7529)
* Add a iframe to host mod actions menu
* Add set-exp dropdown functionality
* WIP: making exp level updates async
* Completes async implementation
* Fix controller for "actions_panel" and "/mod"
Co-authored-by: jacobherrington <jacobherringtondeveloper@gmail.com>
* Add close button interaction (#7552)
* Rename actions panel pack file
* Add close button toggle to actions panel
* DB update
* Move more code to Webpack and add conditional tag adjustments section (#7652)
* Move JS code to Webpack
* Clean up a few style issues
* Add styling for tag adjustments
* Add active/inactive functionality
* Add conditional rendering for tag adjustments section
* Add missing variable oops (#7673)
* update with upstream
* Add missing subtract svg (#7695)
* Create 'Flag User' modal (#7626)
* Add a iframe to host mod actions menu
* Starting task
* Phase 1
* Fix "Close Modal" icon
* Implement open modal
* Working on all "Close Modal" actions
* Almost-complete implementation
* Remove Abuse Report snackbar
* Delete unneeded JS code
* Remove "How does this work?" links
* Link to Community Moderation page
* Addressing code review corrections
* Update api call to use "request" method
* Make else path clearer in api call
Co-authored-by: jacobherrington <jacobherringtondeveloper@gmail.com>
* Mod Actions Panel: Prevent nonsensical reaction pairs (#7699)
* Still implementing
* Completed Implementation
* Address code review feednack; refactor "create" method
* Move scss variables to native-css (for ModPanel code only)
* Correct missing native css
* update to native-css again
* More sccs -> native-css fixes
* Adjust ModPanel Button position on mobile (#7744)
* Adjusted ModPanel position on mobile
* Better adjustment
* Fix phantom schema.rb changes
* Fix phantom schema.rb changes
* Finalize tag adjustments (#7740)
* Finalize tag adjustments and flow
* Fix logic for rendering adjust tags options
* Clean up alert response
* Rename user to trusted user
* Use new CSS variables
* Add/remove tag on article's tag section after adjusting
* Fix logic for admin tag input and some other niceties
* Final bug fixes mod panel (#7772)
* Use correct boolean statement
* Clear the value of the textarea not div
* Use the correct attribute
* Use actions panel for /mod page (#7775)
* Fix loading logic with tag adjust button conditional render
* Link to tag moderation for adjust tags section
* Use top over window.parent
Thanks @nickytonline!
Co-authored-by: Nick Taylor <nick@iamdeveloper.com>
* Use Webpack alias to import
Co-authored-by: Nick Taylor <nick@iamdeveloper.com>
* Use place-items shorthand over align-items + justify-content
Thanks @nickytonline!
Co-authored-by: Nick Taylor <nick@iamdeveloper.com>
* Fix typo for utilities
* Add new line to end of file
* Disable linter for use for top function
* Use align-items and justify-content center
* Update SVGs to spec
* Remove unnecessary height and use spacing units for open button
* Remove accidentally added comment
* Error handling when selecting reactions; optimize "reactions.each" loop
* Add comment about clearing innerHTML
* Revert schema back to master
* Use each since there should only be two reactions
* Fix typo oops
* Add missing height oops
* Return if there are no reactions to be destroyed
* Center path with GUI tool shrug
* chose more appropriate name for JS pack; rewrote api calls using async-await
* Rename variables and methods and check categories before clearing
* Use addSnackbarItem instead of hardcoded version
* Place articleModerationTools pack behind user_signed_in
* Correct omission
* Implement dynamic imports for ModPanel tools
* Implemented async/await; added snackbar message for null response use-case
* Fix the "/article/mod" page; make sure all reactions, vomit-user and exp-level working as expected
* Update language to reflect new UI
* Close the modal after the "Confirm Action" button is clicked
* Change text for Spam/Abuse button
* Fix schema to use with master
* Update schema to master again
* Use crayons button for actions panel button
* UI tweak to play nicer with site themes
* Make actions panel work for dev.to/mod
* Add snackbar for reactions
* Update how does this work links
* Add "thumbsup" reactions to logging
* Add thumbsup to categories
* Add external link icon
* Changes to reflect "Privileged" and not "Negative" reactions; spec changes pending
* Updated instance variable
* Starting to update the specs
* Update "thumbsup" points from 10 to 5
* Still working on both requests
* Embracing an easier implemantation (thanks Andy!)
* Add tests for actions panel
* Add some basic tests for actions panel
* Change to flag to admins
* Indicate that 'Reason for Tag adjust' is required
Co-authored-by: Mac Siri <krairit.siri@gmail.com>
* Rename negative_reactions to privileged
* Update rating level to use correct values
* Use a different display value than backend value
* Don't show adjust tags for trusted users
* Add specs for moderation_routes for admin and super_admin
Co-authored-by: Arit Amana <msarit@gmail.com>
Co-authored-by: jacobherrington <jacobherringtondeveloper@gmail.com>
Co-authored-by: Arit Amana <32520970+msarit@users.noreply.github.com>
Co-authored-by: Nick Taylor <nick@iamdeveloper.com>
Co-authored-by: Mac Siri <krairit.siri@gmail.com>