Commit graph

5144 commits

Author SHA1 Message Date
Daniel Uber
71df6eaddf
Only check cache or database once (#13010)
* Only check cache or database once

Since `@trusted` is a boolean true/false value, we can't use the
`@ivar || value` pattern, and want instead to check if the variable
has been defined.

Fixes #13006

* Add unit test around memoization behavior

In local testing I was able to get this to fail by changing the
2.times block to include `remove_instance_variable(:@trusted)` (so the
`allow...once` check is sufficient to ensure we are not calling the
cache more than once per instance when false).
2021-03-16 18:58:57 -05:00
Molly Struve
2416387fb4
Revert "Removed service worker (#12974)" (#13014)
This reverts commit 4fb6230606.
2021-03-16 18:10:01 -05:00
Nick Taylor
4fb6230606
Removed service worker (#12974) 2021-03-16 15:55:31 -04:00
Daniel Uber
16d17445a5
reenable article rescoring when moderators flag users (#12983)
* Update worker calculation and disable early return

* Enable service tests

This updates the test to look at the individual article scores
changing, rather than the sum of the articles scores changing

The scores lambda was added as a way to observe this eagerly

* Correctly handle raising the score when vomit is cleared

The initial implementation loaded the articles reactions and the
user's reactions in order to rescore. This restores that activity.

It occurs to me that article.reactions.sum(:points) +
user.reactions.sum(:points) feels like something articles should know
how to do, in which case we can move this into article (#rescore!)?
and call that instead of knowing how to handle moderation specially here.

* Move logic to Article#update_score

Having realized "sum of reaction scores" was an Article concern, I
found that we have a worker to score articles that does _exactly_ what
we're doing here.

Let's use that and allow the vomit reaction presence or absence on a
user to automatically affect the article calculations.

This is at least n + 1 and maybe worse.
2021-03-16 14:04:13 -05:00
Mac Siri
e31da314a2
Nullify fetch_format for Imgproxy (#12988) 2021-03-16 10:36:27 -04:00
Arit Amana
04d5ea8e82
Update the UI for Low-Quality-Comments Notice (#12952)
* Implement change for regular comments

* Modify tests and implement for deleted-commentable-comment

* Fix stupid mistake
2021-03-16 09:40:29 -04:00
Josh Puetz
7f164c2da3
Add test for DevicesController (#12985)
* Add test for DevicesController

* Remove defensive calls
2021-03-16 08:33:25 -05:00
Nick Taylor
c884082aa0
Turned off deprecated rule in jsx-a11y eslint plugin. (#12986) 2021-03-16 12:36:16 +01:00
Michael Kohl
2513de92fb
Add rate limit for new user comments (#12925)
* Add rate limit for new user comments

* Rename limit, add check to controller

* Add spec

* Fix specs
2021-03-16 08:39:31 +07:00
Fernando Valverde
cf3bde4259
Add mobile push notifications to Forem (#12419)
* First commit with iOS PN working

* RPush cleanup worker + unique jobs config

* Remove rpush tables from schema.rb

* PR feedback

* Feature flag and test for route

* Tests and feature flag PushNotification ::Send

* Update app/controllers/devices_controller.rb

Co-authored-by: Michael Kohl <citizen428@dev.to>

* Update spec/routing/devices_routes_spec.rb

Co-authored-by: Michael Kohl <citizen428@dev.to>

* Update spec/services/push_notifications/send_spec.rb

Co-authored-by: Michael Kohl <citizen428@dev.to>

* PR feedback

* Set Rpush driver and url

* More PR feedback

* Apply suggestions from code review

Co-authored-by: Jamie Gaskins <jgaskins@gmail.com>

* PR feedback from Rhymes

* Don’t double render

* Sure

Co-authored-by: Josh Puetz <hi@joshpuetz.com>
Co-authored-by: Josh Puetz <josh@dev.to>
Co-authored-by: Michael Kohl <citizen428@dev.to>
Co-authored-by: Jamie Gaskins <jgaskins@gmail.com>
2021-03-12 14:08:18 -06:00
Suraj Vishwakarma
3417dd5447
Fix : background box of the button on profile via chat section issue 2nd PR: #12879 (#12920)
* chat-profile

* updated-chat-profile
2021-03-12 13:32:13 +01:00
rhymes
c0ea4e5878
[Search 2.0] Add Search::Postgres::Tag behind a feature flag (#12937)
* Add Search::Postgres::Tag to retrieve tags for autocompletion

* Add Search::Postgres::Tag in SearchController behind a feature flag

* Update spec/services/search/postgres/tag_spec.rb

Co-authored-by: Michael Kohl <citizen428@dev.to>

* Add index to tags.supported

* Fix hotness_score ordering

Co-authored-by: Michael Kohl <citizen428@dev.to>
2021-03-11 19:12:30 +01:00
Vaidehi Joshi
41ef7a7c3e
Bump MAX_USER_MENTION_LIVE_AT in comment model (#12972) 2021-03-11 09:42:32 -08:00
Fernando Valverde
13e335e172
Adds more exceptions to SW paths (#12971) 2021-03-11 11:01:59 -06:00
Lisa Sy
170f894aed
Improve UI design through small spacing tweaks (#12964) 2021-03-11 08:50:34 -08:00
Mac Siri
bd8e800b39
Bump imgproxy to 2.0 (#12963) 2021-03-11 08:24:13 -05:00
Vaidehi Joshi
68831039d1
Limit mentions in comments (#12923)
* Limit number of mentions in a single comment

Ensure that no more than 6 users can be mentioned in a single comment

* Extract max user mentions into constant

* Check mentions but don't process them unnecessarily

* Add error message check to comment spec

* Add MAX_USER_MENTION_LIVE_AT to comments, plus specs

* Bump MAX_USER_MENTIONS to 7 for DEV Top Seven posts

* Add some clarifying comments around MAX_USER_MENTION limit

* Update app/models/comment.rb to use activesupport helper!

Co-authored-by: Michael Kohl <citizen428@dev.to>
2021-03-10 11:23:11 -08:00
Ridhwana
45c0d84e48
RFC#50-P3 Navigation Item Focus (Styling and Behaviour) (#12936)
* feat: add the nested sidebar with some elements

* feat: create a tabbed nav item menu

* feat: add the tabbed nav_item partial to the views that need tabbed nav items

* fix: change variable back

* feat: style the sidebar a bit more

* chore: add some more styles

* feat: add a spec for the nested navigational items

* refactor: a more dynamic tabbed admin helper

* feat: add some more nav items

* fix: controller for reports

* refactor: shorthand if statement

* chore: add the whitespace back

* refactor: rubocop fixes

* chore: use any

* chore: remove whitespace

* refactor: rename the variable

* refactor: use a DSL style admin helper

* chore: variable renaming and routes

* rubocop: fixes

* refactor: move files to more apt places

* chore: keep overview as it was previously

* Update app/views/admin/secrets/index.html.erb

Co-authored-by: Michael Kohl <me@citizen428.net>

* Update app/views/admin/shared/_tabbed_navbar.erb

Co-authored-by: Michael Kohl <me@citizen428.net>

* Update app/views/admin/badges/index.html.erb

Co-authored-by: Michael Kohl <me@citizen428.net>

* chore: disable blocklength

* refactor: move the logic to the model instead of in the view

* chore: remove get_ prefix

* chore: move the request mangling to a helper that finds the controller and scope

* Update app/helpers/admin_helper.rb

Co-authored-by: rhymes <rhymes@hey.com>

* Update app/helpers/admin_helper.rb

Co-authored-by: rhymes <rhymes@hey.com>

* refactor: Address feedback

* oops

* oops use tr

* feat: update specs

* feat: make the navbar a dropdown

* feat: add a cursor pointer to the dropdown

* feat: add the icons which results in changed data structure

* fix: badge achievements

* feat: rename to an html file, show and collapse links + show active links

* chore: rename tabbed view to an html file

* fix: scope should be apps not app

* feat: add icons for the admin menu

* feat: increase the margin left

* feat: move the overview into the feature flag block and add an icon

* chore:remove files

* chore: indent

* feat: update crayons -link to have no text-decoration

* feat: current link for a scope with one controller

* Update app/lib/menu.rb

Co-authored-by: Michael Kohl <me@citizen428.net>

* Update app/models/admin_menu.rb

Co-authored-by: Michael Kohl <me@citizen428.net>

* refactor: we added svg to the builder so remove it from creating the hash

* feat: undo change to crayons and add it to the admin stylesheet

* Update app/views/admin/shared/_nested_sidebar.html.erb

Co-authored-by: Suzanne Aitchison <suzanne@forem.com>

* refactor: change to use ul and li's + a button

* chore: add bracket to next line

* feat: add aria-page

* chore: remove brackets

* feat: added focus specifically for the sidebar

* Update app/views/admin/shared/_nested_sidebar.html.erb

Co-authored-by: Jamie Gaskins <jgaskins@hey.com>

* chore: remove additional title

* Update app/assets/stylesheets/admin.scss

Co-authored-by: Suzanne Aitchison <suzanne@forem.com>

* Update app/views/admin/shared/_nested_sidebar.html.erb

Co-authored-by: Suzanne Aitchison <suzanne@forem.com>

* Update app/views/layouts/admin.html.erb

Co-authored-by: Suzanne Aitchison <suzanne@forem.com>

* feat: use focus for browsers that dont support focus-visible (I'm looking at you Safari) and move it within the crayons-link so we dont see it on mouse click

Co-authored-by: Michael Kohl <me@citizen428.net>
Co-authored-by: rhymes <rhymes@hey.com>
Co-authored-by: Suzanne Aitchison <suzanne@forem.com>
Co-authored-by: Jamie Gaskins <jgaskins@hey.com>
2021-03-10 13:07:16 +02:00
Deepak Mahakale
7a7826fe5b
Fixes locale issue with edited_at date of post on the dashboard (#12948)
The issue is caused because published_timestamp` is converted to local date wherea the `edited_at` date is not.

Fixed by using `local_date` while presenting the `edited_at` date to keep the behaviour same.
2021-03-10 11:28:07 +01:00
Anna Buianova
10a02f46d4
Articles update refactoring (#12913)
* Start refactoring articles update

* Articles update refactoring

* Added a couple of tests for Articles::Updater

* Reorganized code in Articles::Updater and ::Attributes a bit

* A couple of more tests for Articles::Attributes

* Reverted changed in the articles_controller

* Edited_at in Articles::Attributes

* Use Articles::Updater in ArticlesController

* Tests for notifications when published/unpublished an article

* Removed old code

* Return result object from Articles::Updater

* Don't reset articles collection when no series was passed

* Fixed sending notifications when published an article the first time

* Fix articles collection when updating

* Fix setting attributes for articles update

* Spec for articles update via api failure

* More tests for Articles::Updater

* More specs for articles updating

* Pass article instead of article_id to articles updater to avoid loading an article twice

* Remove the redundant check in the articles_controller

* Articles::Attributes refactoring
2021-03-10 13:08:36 +03:00
Fernando Valverde
e6a2df73bf
Bypass event.respondWith for some paths (#12953) 2021-03-09 16:06:26 -06:00
Vaidehi Joshi
0460f96347
[15 Minute Fix]: Ensure crayons banners are accessible (#12919)
* Add aria-live attribute to crayons banners where necessary

* Add alert role to crayons banners that render error messages
2021-03-09 09:16:26 -08:00
Andy Zhao
b83afedbe1
Hide mod button in mobile (#12915)
* Hide mod button in mobile

* Use span and old CSS to hide button appropriately
2021-03-09 09:40:07 -05:00
Michael Kohl
667437ebf2
[15-minute fix] Add ThrottledCall to DisplayAdEventsController (#12924)
* Add ThrottledCall to DisplayAdEventsController

* Update old spec
2021-03-09 09:06:11 +07:00
Jamie Gaskins
c15120b902
Fix ddtrace warnings at app start (#12941)
* Load HTTPClient before Datadog

The instrumentation needs it to be loaded before it can patch the
request methods.

* Don't split HTTPClient traces on domains yet

After the service explosion in Datadog APM last time, let's take a more
cautious approach.

* Turns out, we aren't even using the aws-sdk gems

This was added because we use Fog's AWS adapter, but Fog uses Excon
(which we're already instrumenting) instead of the AWS SDK directly.
2021-03-08 16:27:33 -05:00
rhymes
576aceab76
[Hotfix] Restore article content in RSS feed (#12935)
When https://github.com/forem/forem/pull/11268 we didn't test it thoroughly and
thus didn't detect that it wasn't working correctly and that it
resulted in an empty string in the `<description>` field.
2021-03-08 14:53:05 +01:00
Ridhwana
4b902b01c0
RFC#50-P2 Restructuring the sidebar to add nested nav items + tabbed nav items (#12886)
* feat: add the nested sidebar with some elements

* feat: create a tabbed nav item menu

* feat: add the tabbed nav_item partial to the views that need tabbed nav items

* fix: change variable back

* feat: style the sidebar a bit more

* chore: add some more styles

* feat: add a spec for the nested navigational items

* refactor: a more dynamic tabbed admin helper

* feat: add some more nav items

* fix: controller for reports

* refactor: shorthand if statement

* chore: add the whitespace back

* refactor: rubocop fixes

* chore: use any

* chore: remove whitespace

* refactor: rename the variable

* refactor: use a DSL style admin helper

* chore: variable renaming and routes

* rubocop: fixes

* refactor: move files to more apt places

* chore: keep overview as it was previously

* Update app/views/admin/secrets/index.html.erb

Co-authored-by: Michael Kohl <me@citizen428.net>

* Update app/views/admin/shared/_tabbed_navbar.erb

Co-authored-by: Michael Kohl <me@citizen428.net>

* Update app/views/admin/badges/index.html.erb

Co-authored-by: Michael Kohl <me@citizen428.net>

* chore: disable blocklength

* refactor: move the logic to the model instead of in the view

* chore: remove get_ prefix

* chore: move the request mangling to a helper that finds the controller and scope

* Update app/helpers/admin_helper.rb

Co-authored-by: rhymes <rhymes@hey.com>

* Update app/helpers/admin_helper.rb

Co-authored-by: rhymes <rhymes@hey.com>

* refactor: Address feedback

* oops

* oops use tr

* feat: update specs

* fix: badge achievements

Co-authored-by: Michael Kohl <me@citizen428.net>
Co-authored-by: rhymes <rhymes@hey.com>
2021-03-08 13:14:30 +02:00
Jamie Gaskins
bd2d90d849
Mitigate service explosion in Datadog (#12918)
Splitting by domain caused an explosion in "services" tracked in Datadog
because it was counting each podcast platform and each blog as being
another service. Noramlly this would be what we want, but that's a lot
to ask for such a broad range of user-supplied domains.

Since each of these requests is made via HTTParty, which uses Net::HTTP
by default, this commit stops splitting in that library.

We'll need to come up with a better way of tracking this.
2021-03-05 17:30:29 -05:00
Jamie Gaskins
125df50a87
Expand Datadog instrumentation (#12908)
Expand Datadog instrumentation

This commit adds extra telemetry in Datadog for:

- Redis
  - We make 3 different Redis connections available, so this change
    shows us _which_ Redis instance a given query goes to
- Split HTTP requests by domain using:
  - net/http - default for Ruby
  - faraday - used by:
    - buffer
    - elasticsearch
    - gibbon
    - oauth2
    - octokit
    - sawyer
    - twilio
  - excon - used by:
    - fog
- AWS
- RestClient
  - Cloudinary
  - Pusher
- concurrent-ruby
  - ActiveSupport
  - brpoplpush-redis_script
  - i18n
  - sidekiq-unique-jobs
  - sprockets (do we even use this?)
- httpclient
  - pusher
- http.rb
  - twitter (omniauth)
  - honeycomb
2021-03-05 10:44:52 -05:00
Michael Kohl
a6ee6578ca
Remove outdated language from RSS import (#12910) 2021-03-05 16:28:16 +01:00
Andy Zhao
6a55ad2a8d
Remove mod button from top nav bar in mobile (#12906)
* Hide mod button in mobile nav

* Remove unused CSS

* Add CSS back in since it was being used, and update classes

* Attach class to proper tag sigh

* Order based on screenshot from issue

Co-authored-by: Jacob Herrington <jacobherringtondeveloper@gmail.com>

Co-authored-by: Jacob Herrington <jacobherringtondeveloper@gmail.com>
2021-03-05 08:46:20 -05:00
Suzanne Aitchison
494d92d74c
Create mention autocomplete: initial storybook component (#12831)
* initial setup of component

* initial styles applied

* add some initial docs

* small tweaks to story

* add some very initial tests

* tweaks to styles to add border bottom

* add some preact tests

* import default style in jsx, ignore in jest

* WIP - create MentionAutocompleteListener, attempt to position popover

* position dropdown correctly, exit selection in various scenarios

* refactor

* make sure cursor placed correctly after selection

* only import autocomplete when needed

* rename files, add jsdoc

* update tests and story notes

* tidy up scss file

* fix story styling

* fix aria label in story

* fix issue with key event not triggering in mobile

* position dropdown at input left if small screen

* fix issue with deleting and re-entering

* don't trigger search if directly following a letter or number

* stop change event being fired with highihted text

* move regex out of function into constant
2021-03-05 13:18:26 +00:00
Kurnia Muhamad
cdd51ca500
Fix twitter liquid tag buttons misaligned (#12885)
* Fix twitter action buttons

* Fix twitter avatar misaligned
2021-03-05 12:18:45 +01:00
Alex Timofeev
0ff8284a68
Exclude code highlight panel markup from RSS description (#11268)
* Introduce `plain_html` method with minified article body

* Add corresponding test case
2021-03-05 12:06:50 +01:00
Josh Puetz
87984566df
Disable serviceworkers in Safari part2 (#12909)
* Disable servicework on Safari browsers

* Update app/assets/javascripts/serviceworker-companion.js

Co-authored-by: Jamie Gaskins <jgaskins@hey.com>

* Test for serviceworkers and unregister

Co-authored-by: Jamie Gaskins <jgaskins@hey.com>
2021-03-04 19:14:44 -06:00
Josh Puetz
e83101e388
Disable serviceworkers on Safari browsers (#12907)
* Disable servicework on Safari browsers

* Update app/assets/javascripts/serviceworker-companion.js

Co-authored-by: Jamie Gaskins <jgaskins@hey.com>

Co-authored-by: Jamie Gaskins <jgaskins@hey.com>
2021-03-04 15:12:27 -06:00
Miguel Guardia
364c3a8252
Fix subscribe to discussion button when user is not logged in (#12837)
* Add logic to subscribe button that shows login modal if user is not logged in
Pass in userstatus to CommentSubscription
Remove logic that loads comment subscription button for logged-in users only

* Modify test to account for new userStatus input in CommentSubscription

* Change UserStatus to isLoggedIn
Add propType to isLoggedIn
Remove preventDefault from click event

* Fix indentation and input on commentSubscription test
Create new isLoggedIn variable that returns boolean
Replace all instances of userStatus to isLoggedIn
Create test for showLoginModal when subscribing
2021-03-03 18:50:29 -06:00
Miguel Guardia
2a50efb936
Fix Markdown parsing of <code> tag (#12797)
* Create a new method that replaces <code> tags to
triple back ticks (```)

* Create unit tests for add_proper_code_tags method

* Rubocop fixes

* Change method name to one that is more descriptive/accurate
Fix method to allow for triple backticks, sameline code tags and multiline codetags in the same post/article
Fix test to match with method name change

* Fix rubocop offenses

* Fix Rubocop offenses

* Add additional assertions to make sure backticks are present
2021-03-03 17:41:56 +01:00
Vaidehi Joshi
7e583be9ed
[15 Minute Fix]: Update email footer copy to account for email authentication (#12877)
* Update email footer copy to account for email authentication

Fixes https://github.com/forem/forem/issues/12546.
2021-03-03 08:36:40 -08:00
Michael Kohl
ce523ad58b
[15 minute fix] Remove disambiguatingDescription from user profile (#12861)
* Remove disambiguatingDescription from user profile

* Fix spec
2021-03-03 08:42:46 +07:00
Molly Struve
004b62ac98
Optimization:Enforce Uniqueness for Follows::UpdatePointsWorker and RatingVotes::AssignRatingWorker (#12852) 2021-03-02 10:50:44 -06:00
Vaidehi Joshi
d8ebdd487c
Remove superfluous title attribute from sidebar SVGs (#12856)
Fixes #12680.
2021-03-02 08:39:06 -08:00
Alex
d109b6824e
Refactor cache purging (#12811)
* Refactor caching

* Bring back old bust class

* Refactor with PR feedback

* Remove useless return values
2021-03-02 10:09:05 -05:00
Jacob Herrington
2bc516bb2a
Remove unused CSS (#12854) 2021-03-02 07:35:34 -06:00
Jacob Herrington
2ae6ca570e
Fix double render of Overview in admin navbar (#12857) 2021-03-02 07:35:10 -06:00
dependabot[bot]
76b199e438
Bump rubocop-performance from 1.9.2 to 1.10.1 (#12860)
* Bump rubocop-performance from 1.9.2 to 1.10.1

Bumps [rubocop-performance](https://github.com/rubocop/rubocop-performance) from 1.9.2 to 1.10.1.
- [Release notes](https://github.com/rubocop/rubocop-performance/releases)
- [Changelog](https://github.com/rubocop/rubocop-performance/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop-performance/compare/v1.9.2...v1.10.1)

Signed-off-by: dependabot[bot] <support@github.com>

* Enable new cops

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: rhymes <rhymes@hey.com>
2021-03-02 10:37:13 +01:00
Efereyan Karen Simisola
fc7ed20a9f
Publicly indicate if someone edits their comments (#10524)
* Publicly indicate if someone edits their comments

Signed-off-by: Efereyan Karen Simisola <thedevkaren@gmail.com>

* Implement required changes for date edited

* Add methods for readable publish date and edited at in comment decorator

Signed-off-by: Efereyan Karen Simisola <thedevkaren@gmail.com>

* Fix syntax error and decorator naming error

* Add tests

* Update app/views/comments/_comment_date.erb

Co-authored-by: Vaidehi Joshi <vaidehi.sj@gmail.com>

Co-authored-by: rhymes <rhymes@hey.com>
Co-authored-by: Michael Kohl <me@citizen428.net>
Co-authored-by: Vaidehi Joshi <vaidehi.sj@gmail.com>
2021-03-02 09:47:25 +07:00
Jacob Herrington
92217be4ed
Add admin overview page (#12726)
* Add admin overview page

* Rename admin_portals spec

* Fix admin nav bug

* Add ahoy tracking to admin overview

* Fix PR Feedback

Co-authored-by: Vaidehi Joshi <vaidehi.sj@gmail.com>

* Make decorative element more visible

* Remove inline layout styles

Co-authored-by: Vaidehi Joshi <vaidehi.sj@gmail.com>
2021-03-01 18:59:05 -06:00
Ben Halpern
73125c0795
Reduce service worker functionality to minimal offline page (#12834)
* Reduce service worker functionality to minimal offline page

* Update docs for service workers

* Add comment to fix test

* Include incrementable static cache

* Add TODO comments about removal

* Fix trailing whitespace
2021-03-01 19:29:26 -05:00
Molly Struve
ac91299952
Bug Fix:Update updated_at Timestamp Everytime We Run Repo Sync Worker (#12853) 2021-03-01 13:45:10 -06:00