Commit graph

2189 commits

Author SHA1 Message Date
Molly Struve
477bc00676
Update reading list updated_at cache key timestamp (#4885) [deploy] 2019-11-25 09:28:29 -06:00
Molly Struve
091392cf1f Remove webpush gem and code (#4883) 2019-11-22 16:46:11 -05:00
Ben Halpern
36479f09c3
Replace current_user.id with session_current_user_id (#4880) [deploy]
* Replace current_user.id with efficient_current_user_id in high-leverage areas

* Update name of efficient_current_user_id

* Replace user_signed_in? in pageviews

* Remove unneeded ?
2019-11-22 14:27:43 -05:00
Jacob Herrington
e79ad764bd Onboarding test love (#4878)
* Reduce code duplication in onboarding tests

* Update variable names for consistency

* Improve test descriptions and format

* Refactor a useless test

This test was fairly pointless, but hopefully with this refactor it
could detect a regression? Although, I think it's really just testing
the that the Preact framework's state mechanism is working the way we
expect it to, but it might be worth leaving this test in.
2019-11-22 14:23:57 -05:00
Molly Struve
61753715f1
Remove Service Worker Desktop Notification Code (#4881) [deploy] 2019-11-22 12:47:14 -06:00
Ben Halpern
c817ac0192
Fix missing series in article edit form (v2) (#4867) [deploy] 2019-11-22 08:33:55 -05:00
Jacob Herrington
c6c5421163 Javascript automated testing and a11y doc (#4873)
* Add jext-axe package and introduce a11y testing

Automated a11y testing is NOT comprehensive. We cannot expect this to
even scratch the surface of potential a11y issues.

However, we can expect to find a percentage of issues that are currently
flying under the radar. Adopting some automation around a11y testing
also allows us to use CI to find a11y regressions -- which should be
really handy.

I've never really used Jest before, and Preact seems to make it a little
more complicated, but as far as I can tell, this is a decent way to add
at least some minor automated a11y testing.

* Add doc about automated a11y tests
2019-11-22 08:32:01 -05:00
Spencer
e5ee2f9013 Mod tooling: add tags via /mod (#4750) [deploy]
* added tests to specs

* added view logic

* added controller/model functionality

* minor tweak to tagadjustment view

* adjusted mod view to reduce query

* added instance variables to controller

* show already adjusted tags in mod view

* removed unnecessary ifs from mods controller

* catch and display errors to tag adjustment forms

* update specs and refactor
2019-11-21 16:32:32 -05:00
shaneblackburn
9d7817b025 Disable like button b/w click & backend response (#4869) [deploy] 2019-11-21 12:31:40 -06:00
John Curcio
157a6f1ef1 Add pagination to followers and following page in dashboard (#258) (#4375) [deploy]
* Add infinite scroll to followers list (#258)

* Refactor fetchNext function for clarity (#258)

* Sepparate following tab into multiple tabs to support infinite scroll (#258)

* Add infinite scroll to following pages (#258)

* Add tests to infinite scroll api

* Refactor dashboard loading text

* Refactor infine scroll function

* Fix duplicated entries problem in infinite scrolling

* Switch randomized attributes to sequential to avoid InvalidRecord error

* Add acceptance tests for infinite scroll

* Remove unused following method

* parameterize limit per page for followers and followings

* Split follows endpoint into followers and followings

* Authenticate user with api key in followers and followings

* Split followers endpoint into users and organizations

* Add redundant html to sublist partial

* Speed up infinite scroll tests

* Refactor api json responses to use partials

* Authenticate api user before follows create

* Resolve conflicts on scrolling js

* Improve partials organization and fix organization username bug

* Improve readability of unauthorized test

* Use let! to create scrolling test data

* Fix not working podcasts link

* Refactor initScrolling to remove linting errors

* Fix codeclimate coding style issue

* Test tags forms and podcasts hyperlinks

* Fix eslint issue with double equals

* Improve before_action usage and readability
2019-11-20 18:21:18 -05:00
Bolarinwa Balogun
4536d35716 Fix broken layout from "additional config/settings" overlap (#4858) [deploy]
* Fix broken layout from "additional config/settings" overlap

* Resolve bugs by adding important state fields
2019-11-20 14:34:30 -05:00
Helmi Hidzir
4e4762e3a1 Add - to support dash character in JSitor liquid tag (#4830) [deploy]
* Add - to support dash character in JSitor liquid tag

* Edit spec/liquid_tags/jsitor_tag_spec.rb

* Add support for link with hyphen id in jsitor liquid tag
2019-11-20 13:36:51 -05:00
Mac Siri
d2373b5678
Add Clipboard polyfill (#4824) [deploy] 2019-11-20 11:32:30 -05:00
rhymes
b0eec90b24 Add additional keys to site configuration (#4861) [deploy]
* Add rate_limit_follow_count_daily to SiteConfig

* Add favicon_url to SiteConfig

* Add logo_svg to SiteConfig

* Add staff_user_id to SiteConfig

* Add default_site_email to SiteConfig

* Add social_networks_handle to SiteConfig

* Add ga_view_id and ga_fetch_rate to SiteConfig

* Add mailchimp newsletters IDs to SiteConfig

* Add periodic_email_digest_max, periodic_email_digest_min to SiteConfig
2019-11-20 10:58:10 -05:00
Nico Domino
8140ab6330 Updated 'ten-x-hacker' var --theme-anchor-color (#4836) 2019-11-19 10:58:20 -05:00
Anna Buianova
809dbceba7 Allow while displaying podcasts episodes processed html (#4816) 2019-11-19 09:23:19 -05:00
rohan-techfreak
bf867a624a Add lazy loading to iframes (#4673) 2019-11-18 18:31:56 -05:00
rhymes
c1aaf53a40 Add SiteConfig to internal and enable "main_social_image" (#4831) [deploy]
* Redirect /internal to /internal/articles avoiding annoying 404

* Set the navbar on two rows

* Add :main_social_image to SiteConfig and to the internal view

* Add simple tests

* Ameliorate the UI
2019-11-18 18:19:20 -05:00
Lorna Tumuhairwe
c889e6b6c0 Center podcast page footer (#4797) [deploy] 2019-11-15 14:14:14 -05:00
jeffin sam
da2fa608c2 Move social_image cache to Redis (#4818) 2019-11-15 14:03:41 -05:00
jeffin sam
e92b005d02 Move caching of reaction to rediscache (#4819) 2019-11-15 13:38:46 -05:00
jeffin sam
7cc5ef5e40 Write to RedisCache to avoid cache miss in add html_css_to_image (#4821) [deploy] 2019-11-15 13:09:18 -05:00
jeffin sam
fbbb02e241 Move bufferized tags to RedisCache (#4817) 2019-11-14 17:37:20 -05:00
Molly Struve
672d64c2ca
Avoid N+1 queries when sending notifications for reactions (#4822) [deploy] 2019-11-14 14:36:20 -06:00
Molly Struve
d1b82dfdaf Move cached_followed_tag_names to Redis (#4812)
* Move cached_followed_tag_names to Redis and change key to use following_tags_count rather than updated_at

* use last_followed_at for cache key as well

* format last_followed_at with rfc3339
2019-11-14 09:57:33 -05:00
aRtoo
9b5b2ee98d Redo JSitor (#4762) [deploy]
* Redo JSitor
- can now accept full url with params
- added more test
- redo jsitor guide

* Jsitor redo guide
- moved below JSFiddle
- add more instructions

* Refactor JSitor liquid tag
- Change the iframe size to 400
- can accept ID with or without params
- added ID_REGEX to check for id
- add more information on error
- added more test
  - test for id with invalid link
  - test for id with params
  - test for id without params

* Refactor
- simplified regex, removed unnecessary groupings
- changed method name from link_valid? to validate_link
- changed error message
2019-11-14 09:17:47 -05:00
Anna Buianova
41ab013050 Normalize podcast url before checking for reachability (#4806)
* Normalize podcast url before checking for reachability

* Added to_s when normalizing episode url and simplified tests
2019-11-14 08:58:29 -05:00
Molly Struve
880f60beff
Move user_data async controller cache to Redis (#4809) [deploy] 2019-11-13 10:25:17 -06:00
Michael Kohl
b57ced5466 CacheBuster refactoring (#4766)
* Turn CacheBuster into a module

This class used no internal state, so repeatedly creating short-lived objects seems wasteful.

* Consistently use string interpolation and parenthesis

* Destructure arrays into meaningful names, formatting

* Fix request spec for internal classified listings controller

Interestingly this works when asserting directly on the module, but not on a double.
Asserting directly in the module seems sufficient for this test so the indirection
was removed.

* Turn CacheBuster into a module

This class used no internal state, so repeatedly creating short-lived objects seems wasteful.

* Fix specs after rebasing
2019-11-13 10:51:23 -05:00
jeffin sam
61788e5dec Add tag_colors cache to redis (#4716) [deploy] 2019-11-13 09:43:22 -06:00
Molly Struve
57250ade63
Expire Frequently Updated Cache Keys Sooner (#4793) [deploy] 2019-11-12 13:39:50 -06:00
Ben Halpern
af04fd7959
Add additional conditions to internal/reports page (#4800) [deploy]
* Add additional conditions to internal/reports page

* Add higher number for randomness
2019-11-12 13:19:08 -05:00
Andy Zhao
0f3c4a5a9a Add additional cache value for block (#4790) [deploy] 2019-11-12 10:59:54 -06:00
Andy Zhao
b2e18aeb72 Use Redis for session storage (#4004) [deploy]
* WIP use redis-session-store for sessions

* Use Redis as session storage

* Add redis-server to Travis

* Use integer for SESSION_EXPIRY_SECONDS env variable

Co-Authored-By: rhymes <rhymesete@gmail.com>

* Remove sessions b/c no custom sessions logic

* Use ApplicationConfig instead

* Rename default value

* Remove rememberable module

* Persist the user for the test

* Remove remember_me related tests

* Revert 'undo remember_me' commits

* Add redis to procfile

* Cleanup devise configuration

* Move REDIS configuration in the basic configuration section

* Make sure the expiration time can't zero

* Restore old order and remove useless comment line

* Delete legacy session cookie after login

Once deployed the server will start using the new session cookie, this makes sure the legacy one is deleted on the user's browser

* Remove redis from Procfile

* Add signed, secure and httponly to the Redis session cookie
2019-11-12 10:10:34 -06:00
Aleksandr
4d0392a17a Add link to /community-moderation on all /mod pages (#4567) [deploy] 2019-11-12 10:11:26 -05:00
Ben Halpern
d3635d5553
Add latest articles and possible spam users to internal/reports (#4791) [deploy] 2019-11-12 09:40:18 -05:00
jeffin sam
6ff1c3d913 Add AnalyticsService to redis cache (#4755) [deploy] 2019-11-11 17:30:26 -05:00
jeffin sam
6e87a1d1e1 add suggester sidebar class suggest to RedisRailsCache (#4754) [deploy] 2019-11-11 17:23:54 -05:00
Anna Buianova
8c58be75f5 Self-deleting user account (#4480) [deploy]
* Start with self deleting account

* Moved deleting user content and activity out of moderator hierarchy

* Added tests for the users delete services

* Tests for Users::DeleteComments

* User self-deletion (start)

* Some tests for user self-delete

* Specs for user self-deletion

* Test flash settings on users delete

* Added basic specs for the Users::DeleteJob

* Send notification when a user was destroyed

* Rename Users::DeleteJob to SelfDelete

* Change texts about self-deletion

* Fix users delete job spec

* Rescue and log exceptions while self-deleting user

* Added visible flash notices after deleting user

* Remove unneeded css for flash notice

* Fix link to a ghost account

* Remove redundant css

* Added github and twitter oauth apps links
2019-11-11 14:59:01 -05:00
rhymes
bb28f301e9 Add site config and remove sail (#4729)
* Add SiteConfig model based on rails-settings-cached

* Remove sail
2019-11-08 13:27:44 -05:00
rhymes
80ab485eb6 Fix http status code for rate limiting (#4742) 2019-11-07 14:11:11 -05:00
leewynne
3fad464765 Generalise feed text to use the community name variable (#4730) [deploy] 2019-11-07 13:58:32 -05:00
brian bethencourt
f0e367996a Freely color social icon backgrounds for each theme (#4372) 2019-11-07 12:48:55 -05:00
rhymes
40155812bd Comments API: simplify controller code, add tests (#4731) [deploy]
* Use ancestry in the index and add test

* Add tests for show action
2019-11-07 11:37:58 -05:00
Ben Halpern
6a3fc43381
Remove hacktoberfest from sidebar (#4740) 2019-11-07 11:34:20 -05:00
Ben Halpern
c76cfa6e97
Add missing div to internal permissions (#4737) [deploy] 2019-11-06 18:18:35 -05:00
Ben Halpern
fc1239b21d
Remove follow limit for single request (#4738) 2019-11-06 18:17:40 -05:00
Omar Bahareth
dca66bd6a8 Rate limit daily user follows to 500 (#4647) [deploy]
* 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
2019-11-06 16:24:43 -05:00
rianadon
47ca9b5139 Wrap <figcaption> elements and content inside <figure> elements (#4645) 2019-11-06 15:05:45 -05:00
Ben Halpern
1b5f702c96 Add noopener to sponsor links (#4733) [deploy] 2019-11-06 14:21:40 -05:00