* Adds a lower() query to the DB in Stories#show
* Restructure spec
* bypass article callbacks in order to test edge case
* Fixes spec
* Change the approach to unsure downcase path in Article model
* Move .downcase call to set_caches before_save callback
* Adds data update script for fixing offending Article paths
* Moves model tests to correct block
* Apply suggestions from code review
Co-authored-by: Vaidehi Joshi <vaidehi.sj@gmail.com>
Co-authored-by: Vaidehi Joshi <vaidehi.sj@gmail.com>
* Render left sidebar attributes on profile
* Display header profile fields
* Make changes to protect DEV data
* Don't render DEV header fields twice
* Wrap profile UI changes in a FeatureFlag
* Add spec to test mulitple display areas
* Use select over reject
Co-authored-by: Michael Kohl <me@citizen428.net>
* Move comment for documentation generators
* Update dev profile fields csv data
Co-authored-by: Michael Kohl <me@citizen428.net>
Co-authored-by: Ben Halpern <bendhalpern@gmail.com>
* 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
* Merge conflict resolved
* UI completed for Create Channel
* API for create channel & invitations
* 🚀 Combining Backend and Frontend
* Test cases added
* UI completed for Create Channel
* API for create channel & invitations
* 🚀 Combining Backend and Frontend
* Test cases added
* fix suggestions
* add test cases
* replace mod_relations_admin to tag_moderator
* fix test cases
* refactor and fix code climate issues
* Update app/controllers/chat_channel_memberships_controller.rb
Co-authored-by: Michael Kohl <me@citizen428.net>
* fix suggestions
* renaming the methods
* Update app/javascript/chat/chat.jsx
Co-authored-by: Nick Taylor <nick@iamdeveloper.com>
* Update app/javascript/chat/components/createChatModal.jsx
Co-authored-by: Nick Taylor <nick@iamdeveloper.com>
* add jsDoc and add validation
* add PR suggestions
* renmae the file name to PascalCase
* add styled component
* refactor channel button component
* fix specs
* fix code smell issues
* fix file name issue
* handle error message
* add jsDoc
* Update app/controllers/chat_channels_controller.rb
Co-authored-by: Michael Kohl <me@citizen428.net>
* refactor chat_channel_helpers
* update old hash to new hash
* Update app/javascript/chat/components/ChannelButton.jsx
Co-authored-by: Nick Taylor <nick@iamdeveloper.com>
* Update app/views/chat_channels/index.html.erb
Co-authored-by: Michael Kohl <me@citizen428.net>
* fix syntax error
* Update app/views/chat_channels/index.html.erb
Co-authored-by: Nick Taylor <nick@iamdeveloper.com>
* Policies changed
* The Disable Button issue 🐞
* Fixing Disabled button Issue 🐞
* New group doesn't show up 🐞
Co-authored-by: Narender Singh <narender2031@gmail.com>
Co-authored-by: Michael Kohl <me@citizen428.net>
Co-authored-by: Nick Taylor <nick@iamdeveloper.com>
* Use ErrorsController to render error pages
* Hide GitHub bug report prompt from anything other than dev.to and forem.dev
* Update service worker to use 404 and 500
* Other fixes
* Add validation for payment_pointer and clean its space before save
* Add test for payment_pointer
* fix payment pointer regexp
* fix test
* Remove space with strip
Co-authored-by: Jacob Herrington <jacobherringtondeveloper@gmail.com>
* Remove redundant test
* Refactor clean_payment_pointer to strip_payment_pointer
- Move callback from before_save to before_validation
* Refactor PAYMENT_POINTER_REGEXP
* style: remove last comment in regexp
* fix typo
Co-authored-by: Jacob Herrington <jacobherringtondeveloper@gmail.com>
* Prepare to drop profile columns from user
* Update code and factory
* Also remove unused constant
* Move validation from user to profile
* Remove Profiles::ExtractData service object
* Add more comments
* Simplify sameAs attribute generation
* Obey me machine, I am your master
* Fix condition order in guard clause
* Temporarily disable callback
* Fix specs
* Reduce usage of Profile#refresh_attributes!
* Remove leftover comment
* Handle social media links differently
* More spec fixes
* Fix specs for admin profile fields controller
* Fix specs after merge
* Fix remaining specs
* Update user show request spec
* Add comment for follow_hiring_tag
* Only save profile when user is valid
* Fix seeds.rb for profile fields
* Switch from before_save to after_save
* Undo unrelated formattin change
* Update spec/fixtures/files/profile_fields.csv
Co-authored-by: Molly Struve <mollylbs@gmail.com>
* Remove data update script and spec
* Fix spec
* Fix typo in comment
* Fix typo in comment
* Move article resave logic to service object
* Move profile field creation to before(:suite)
* Refactor error handling in Profiles::Update
* Fix Profiles::Update specs and refactor
* Temporarily disable spec
* Add ProfileValidator
* Clean up
* Move DB ready check into app/lib
* Refresh attributes after importing from CSV
* Fix specs
* Remove unused file
* A girl has no name. A profile neither.
* Fix specs
* Add responds_to? check
* Spec fix
* Add name to user fields in profile settings page
Co-authored-by: Molly Struve <mollylbs@gmail.com>
* Add podcast_appearances joined table (forem#82)
* Add podcast appearances keys unique constraint and creator property (forem#82)
* Add podcast_appearance role validation forem(#82)
* Add spec test for podcast_appearances model (forem#82)
* Small refactoring - place podcast appearance association by alphabetical order
* Adapt m2m association to pass rspec test (forem#82)
* Rename podcast appearance model to podcast episode appearance and remove fk indexing
* Rename podcast appearance model to podcast episode appearance and remove fk indexing
* Rename podcast episode appearance models and spec models. Update podcast episode and user spec tests (forem#82)
* Rename podcast episode appearances composite index to follow Rails naming pattern (forem#82)
* Remove ddl_transaction disabling and conurrent index adding from appearance migration
* Add role validation in model spec (forem#82)
* Implement changes
* display "Suspended" if user role.name is banned
* Correct equality symbol
Co-authored-by: Michael Kohl <me@citizen428.net>
Co-authored-by: Michael Kohl <me@citizen428.net>
* Add explanatory comment to how RssReaderFetchUserWorker works
* Add Feeds::ImportWorker worker
* Enable Feeds::Import for single user feed fetching behind a feature flag
* Add Feeds::ValidateUrl service
* Add feature flag to user's validate feed URL feature
* Remove todo notices
* Add feature flag to fetch_all_rss task
* Add feature flag to RssReaderWorker
* Bring back short-circuit for Articles::RssReaderWorker
* Extract Feeds::CheckMediumReplyItem service
* Extract Feeds::CheckItemPreviouslyImported
* Clarified comment on Feeds::CheckItemMediumReply (thanks @maestromac)
* Refactor a bit to be more Rubeyeyey
* Allow authors to restrict which emails can sign up
* Add form and tests
* Check for email presence in allowed email flow
* Fix test domains
* Fix codeclimate issue
* Don't add to mailchimp for N/A circumstance
* Use class << self over self. methods
* Refactor and make add/remove tag mod idempotent
* Add missing param wiki_body_markdown
* Add errors_as_sentence b/c Tag not inheriting from AppRecord
* Refactor and Crayonsify tag page
* Use proper for attr to make label checkable
* Crayonsify moderator section
* Make placeholder white
* Remove remote: false for sync form submit
* Fix more merge conflicts
* Minor styling adjustments
* Fix color field value
* Don't add to Mailchimp community mod list if not enabled
* Add tests for new tag mod routes
* Add missing line oops
* Use self.method over class << self for new Rubyists
* Use more efficient query for getting tag mods
* Use parentheses to follow convention
* Use cleaner way of routing and controller
* Update tests to match new configuration
* Hooked "Enable" button to hidden checkbox
* Hooked "Close" button to close email settings and show "Enable/Edit" button
* Additional hookups
* Start building generalized Modal blocks
* Everything hooked up except styling and a few Qs
* last of the hookups; ensure logic flow
* clean up
* specs to cover email auth refactor
* Fix bug surfaced by Vaidehi
* Incorporate PR feedback
* prevent email auth disable if invite-only-mode
* adjust emailAuthModal body text
* Sundry improvements
* Last-mile tweaks
* Trying to get 3rd party auth deselect to work
* delete unnecssary function
* remove superfluous comment
* Move inline styling into CSS file
* Incorporate PR feedback
* Incorporate more PR feedback
* Make Confirm btn intent clearer
* Add TODO comment
* Fix missing spaces in description of suggested_users
* Add config to use suggested_users instead of auto-generated suggestions
* Improve determine_follow_suggestions method
* Update app/lib/constants/site_config.rb
Improve the wording of the description of prefer_manual_suggested_users
Co-authored-by: Vaidehi Joshi <vaidehi.sj@gmail.com>
* Apply new style to prefer_manual_suggested_users checkbox
Co-authored-by: Vaidehi Joshi <vaidehi.sj@gmail.com>
* Use APP_NAME rather than APP_DOMAIN in chat channels
APP_NAME may not always be set (it is not "required" per se), which can
cause issues while deriving the pusher_channels. We should use APP_DOMAIN,
which is more common and always has a default value.
* Add TODO to make pusher channels more unique