* Introduce domain model for campaigns
* Move main_tag method to decorator
* Add options argument to decorator method
* Change more code to use Campaign domain model
* active? -> show_in_sidebar? and fix spec
* Switch back to leading dots after merge
* chore: spike
* fix: update doesnt get to symbol
* spelling
* chore: some suggestions
* chore: change name
* chore: content tag and safe join
* chore: keep this open for now
* chore: code climate
* more code climate stuff
* chore: remove commas
* fix: tests
* feat: update the descriptions and placeholders
* chore: update all the variables
* chore: update lines
* feat: update ""
* chore: length line
* feat: content_tag
* chore: disable rubocop:disable Rails/OutputSafety
* feat: collapse the get started section if everything is filled out
* chore: comment
* some cleanup
* codeclimate :(
* 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
* fix video content issue
* add UI for membership management
* add api to update memberahip role
* add methods for manage membership
* Add integration test cases
* add emoji for admin
* Open member profile in sidecar only
* 🐞 Problem with direct channel sidecar
* 🐞 Few other UI enhancements
* fix mod typo
* add limit upto 4 for display active memberships
* fix UI issues
* fix action ui for membership
* fix sidebar redirection issue
* fix svg buttons
* add test cases
* fixed broken spec
* fix PR suggestions
* remove not used code
* fix typo
* fix PR suggestion
* fix typos
* add invitation url expiry
* fix specs
* fix PR suggestions
* removed unused gem
* remove presenter format
* handle invitation link expiry with redis
* fix PR suggestions
* user can view non-discoverable channel invitation link
* fix typos
* remove commented code
* add spacing
* PR suggestions
* remove class from button
* replace componentDidMount with commen function
* remove action button for single membership
* add chat message on update role
* add spece between lines
Co-authored-by: Narender Singh <narender2031@gmail.com>
Co-authored-by: Fernando Valverde <fdov88@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
* fix pending invitation issue
* non active member blocked to open channel details
* add specs for bug fix
Co-authored-by: Sarthak Sharma <7lovesharma7@gmail.com>
* Make FlagUserModal show up on click
* Explain extra div
* Make sure "Vomit All" reaction fires accurately
* Make test-file comment clearer
* Fix bug when 2 articles are open and the FlagUser modal does not open for the first article
* Still working it out ...
* Tests broken; need help
* Get rid of debugging alerts
* Fixed broken tests for <SingleArticle />
* Write tests for ModerationArticles component
* Complete tests for ModerationArticles component
* Employ safer Preact testing techniques
* Query all articles using "data-testid"
* Revert changes
* Got it working with portals for non-iframe implementation.
* wip tests
* Got mod tools flag user modal wprking on article page again.
* Added some documentation the code.
* Now confirm is disabled until you select an item in the flag user modal.
* Revert "wip tests"
This reverts commit fb7a0825039fd377cad04d9dedad9d1146b03978.
* test prep
* Fixed broken test.
* Refactored to use useRef hook.
* Rename a variable
* remove unnecessary comments
Co-authored-by: Nick Taylor <nick@dev.to>
* chore: make the icons dynamic from site config
* feat: update the navbar icons
* feat: update the descriptions
* chore: update the icons
* chore: update the names to be more reflective
* chore: freeze mutable objects assigned to constants
* chore: update Line is too long.
* icons
* update lightning icon
* chore: read from file
* path here is relative, so use Rails root
* revert to original icons and run svgo on it
* no newline
* feat: update height, width
* Create new restriced_liquid_tag role
* Update role spec
* Use new role over admin
* Add documentation for user_subscription_liquid_tag
* Stub roles to help avoid flaky specs
* Add user approved liquid tags to edit view
* Remove "simply". Coding is hard, yo!
* Update liquid_help
* Update liquid help
* Update and refactor dashboard specs
* Refactor role check for liquid tag docs
* Improve docs wording
* Refactor controller validations to model
* Update specs and move current email validation back
* Refactor #subscribed
* Cleanup UserSubscriptions::Create service
* Refactor service
* Move source inside of call for clarity
* Specs for UserSubscription::Create
* Cleanup spec
* Fix Article spec
* Updated for subscriber_email
* Add comment for explicitness of subscriber_email
* Fix reference in comment...oops!
* I know what I'm doing...sometimes...maybe
* Rename CachChecker - Subscription to IsSubscribed
* Use include vs eq in specs for error messages
* attr_accessor --> attr_reader
* Don't explicitly set nil
* Rename Create service to CreateFromService
* Use errors_as_sentence
* Rename service to CreateFromControllerParams
* Assign Struct to a new constant
* Add check to id param to use slug if passed
* modify to use slug in a different action
* wrote test for this api endpoint
* update test to check array equality
the test also checks if the first tag in the parsed list is the same as the first tag in the article
* Make liquid tags adhere to context and permission
* Undo updates to all liquid tags and update error
* ACTUALLY update errors this time
* Typo
* Refactor error handling and add support for Comment
* Fix specs
* Code cleanup
* Prettify error message
* Add comment clarifying error
* parsed --> parse
* Use a policy for validating roles
* Fix pretty error message
* Return early if valid source
* Get rid of duplicate current_user
* Add comment to Pundit.authorize
* LiquidTagPolicy specs
* Update liquid tag docs
* Update docs
* Use parse_context argument for clarity
* Remove duplicate guard clause for VALID_ROLES
* Update docs
* Create "blank" EmailSubscriptionTag
* Refactor liquid_tags_used with spec
* Create /user_subscriptions#create
- Update liquid tag name to UserSubscriptionTag
* Add rate limiting and specs
* Add counter_culture for user_subscriptions
* Update /async_info/base_data
- Alphabetize user_data
- Add email
- Add subscription_source_article_ids
- Cache subscription_source_article_ids on User model
* Add stale email check and specs
* Change user_email to subscriber_email for clarity
* Restrict UserSubscriptionTag
* Rename RESTRICTED_TAGS to RESTRICTED_LIQUID_TAGS
* Make TODO comment more clear
* Refactor error responses and update specs
* Update type to source_type in error message
* Use constantize over safe_constantize
* Add check for active source
* Refactor checking of current_user's subscriptions
- Remove data from async_info
- Create a new service to fetch/cache a user's existing subscriptions
* Restrict email in base_data to admin roles
* Oops! Rename liquid tag file
* Change error back to result...oops!
* It's not goodbye, it's see you later. RIP email :/
* Add current_email to /user_subscriptions/base_data
* Revert adding current_email
* Undo async_info_controller changes/fix conflict
* Move params to constant
* Refactor SubscriptionCacheChecker
* Remove duplicate status code in JSON response
* Remove duplicate status code for #subscribed
* Use response.parsed_body
* Remove user guard in SubscriptionCacheChecker