* Add organizations to user profile
* Add user organization info updated at column and cache key
* Remove default value for users organization_info_updated_at column
* Update organization_memberships factory
* Remove schema organization_info_updated_at default value
Co-authored-by: rhymes <rhymesete@gmail.com>
* Create podcast as a user [WIP]
* Sample css for podcast form
* Nicer podcasts suggesting form
* Validate podcast feed_url
* Validate podcast main_color_hex
* Fix podcasts specs
* Fix form appearance
* Placeholder for podcast main_color_hex
* Provide a link to suggest a podcast
* Add a checkbox and a role for when a podcast is added by an owner
* Prettier checkbox in the podcasts form
* Added creator to podcasts
* Set the podcast creator
* Fix the /pod spec
* Added creator information to the internal podcast page
* Added cta class to the podcasts submit button
* Global notice when a podcast was suggested
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
* Refactoring🔩: Refactoring for edit messages
* Refactoring🔩: Refactoring:2 for edit messages
* Refactoring🔩: Refactoring:2 for edit messages
* Test Cases📝 : Test Cases for edit message added
* 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
* Feature 🚀 : Ability to edit messages
* Test Cases📝 : Specs for Edit message added
* Refactoring🔩: Refactoring for edit messages
* Refactoring🔩: Refactoring:2 for edit messages
* Refactoring🔩: Refactoring:2 for edit messages
* Bug Fix 🐞: Added space between edited and timestamp
Co-authored-by: Ben Halpern <bendhalpern@gmail.com>
* Rate limit daily user follows to 500 per day
Return an error in `POST /follows` JSON response when a user tries to follow more than 500 accounts in a single day.
Other Changes:
- Add a spec for follows#create.
* Turn daily account follow limit into an env var
* Avoid executing today follow count query when possible
user.following_users_count is a counter cache on how many users the person is already following, so if it's less than the limit we don't need to run the query and can just return it instead.
* Simplify today follow count query
Stop needlessly checking into the future, only check from the beginning of the day until now.
* Raise account follow limit error if followable_id count is over limit
Other changes:
- Always return JSON, the `respond_to` block from before was unnecessary since this endpoint always returns JSON.
- Rescue `DailyFollowAccountLimitReached` on the method and remove begin block, since the error can be raised from two places in the same method.
* Index created_at on users table
* Make adding created_at index on users table happen concurrently
* Rename DAILY_ACCOUNT_FOLLOW_LIMIT to RATE_LIMIT_FOLLOW_COUNT_DAILY
* Add RATE_LIMIT_FOLLOW_COUNT_DAILY to Envfile
* Move RATE_LIMIT_FOLLOW_COUNT_DAILY from env var to ApplicationConfig
* Initial changes for some new themes/fonts/etc.
* Add basic navbar config
* Finalize navbar config
* Make config_navbar non nullable
* Add dark_theme? to user decorator
* 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
* 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
* Added association between webhook_endpoints and oauth apps
* Limit webhooks access by oauth_app_id when authorized by doorkeeper
* Use rails route helpers in webhooks api test
* add expire_on column to classified_listings
* add expire_on to valid listing params
* add expire_on to model
* add expire date to new listing form
* add field in edit form
* add expiry dates to dashboard
* update expiry date in listing toolkit
* WIP unpublish job and test
test still has to run properly
* add job to class name
* change job to rake task
* revert snap change
* delete migration file
will add new one and revert schema changes to rename column
* reset schema
* add new migration to schema 'expires_at'
* change expire_on to expires_at
* Published field for podcasts
* Add podcasts migration
* More specs for podcasts availability
* Show published in podcasts internal
* Update schema.rb with db:migrate
* set up refactored onboarding
* create onboarding page
* add in first slide and change slide functionality
* fix test suite
* profile refactor
* profile refactor
* refactor to api
* add checkbox fields
* add checkbox fields
* remove puts
* add basic css
* add styling
* add redirect
* hide back and next at first and last slides
* test refactored onboarding
* test refactored onboarding
* remove article edits
* Fix schema
* Add deleted file back in
* Add default value for checked_t&c column
* Adjust HTML structure to keep nav buttons in place
* Fix ESLint issues on Onboarding.jsx file
* Handling for undefined or empty followedTags on getUserTags
* Fix codeclimate issues
* Fix codeclimate issues
* Fix more codeclimate issues
* Fix more codeclimate issues
* Update Onboarding snapshots
* Uncheck the CoC and T&C checkboxes on render
* Update snapshots
* Return false instead of raising error
* Update spec to use new onboarding
* Redirect to onboarding if haven't seen it yet
* Prevent redirect to onboarding from /signout_confirm
* Use assign_attributes instead of saving twice
* Move COC and T&C checkbox page to second slide
* Add 'go back to original page' functionality
* Reuse ready prototype logic
* Keep track of the last visited onboarding page
* Fix email subscription bug
* Fix overflow issue for tags page
* Remove height to prevent page container scrolling
* Check for CoC and T&C for displaying onboarding
* Add InstantClick redirect and preserve referrer in client
* Fix async update + check by using localStorage
* Turn off onboarding for tests
* Finalize design for onboarding
* Finalize design for onboarding
* Make bulk follows during onboarding
* Fix bulk follow test
* Don't hide podcasts if they have reachable episodes
Recheck episodes' reachability after the podcast status is set to
unreachable
* Update db/schema.rb
* Fix GetEpisodesJob specs
* Fix stories spec
* Episodes are reachable even if the podcast is unreachable
* Improve the Podcast.reachable query
* Fix podcasts root page spec
* Add index concurrently