Commit graph

44 commits

Author SHA1 Message Date
Claire
90e5a9bd98 Revamp post filtering system (#18058)
* Add model for custom filter keywords

* Use CustomFilterKeyword internally

Does not change the API

* Fix /filters/edit and /filters/new

* Add migration tests

* Remove whole_word column from custom_filters (covered by custom_filter_keywords)

* Redesign /filters

Instead of a list, present a card that displays more information and handles
multiple keywords per filter.

* Redesign /filters/new and /filters/edit to add and remove keywords

This adds a new gem dependency: cocoon, as well as a npm dependency:
cocoon-js-vanilla. Those are used to easily populate and remove form fields
from the user interface when manipulating multiple keyword filters at once.

* Add /api/v2/filters to edit filter with multiple keywords

Entities:
- `Filter`: `id`, `title`, `filter_action` (either `hide` or `warn`), `context`
  `keywords`
- `FilterKeyword`: `id`, `keyword`, `whole_word`

API endpoits:
- `GET /api/v2/filters` to list filters (including keywords)
- `POST /api/v2/filters` to create a new filter
  `keywords_attributes` can also be passed to create keywords in one request
- `GET /api/v2/filters/:id` to read a particular filter
- `PUT /api/v2/filters/:id` to update a new filter
  `keywords_attributes` can also be passed to edit, delete or add keywords in
   one request
- `DELETE /api/v2/filters/:id` to delete a particular filter
- `GET /api/v2/filters/:id/keywords` to list keywords for a filter
- `POST /api/v2/filters/:filter_id/keywords/:id` to add a new keyword to a
   filter
- `GET /api/v2/filter_keywords/:id` to read a particular keyword
- `PUT /api/v2/filter_keywords/:id` to edit a particular keyword
- `DELETE /api/v2/filter_keywords/:id` to delete a particular keyword

* Change from `irreversible` boolean to `action` enum

* Remove irrelevent `irreversible_must_be_within_context` check

* Fix /filters/new and /filters/edit with update for filter_action

* Fix Rubocop/Codeclimate complaining about task names

* Refactor FeedManager#phrase_filtered?

This moves regexp building and filter caching to the `CustomFilter` class.

This does not change the functional behavior yet, but this changes how the
cache is built, doing per-custom_filter regexps so that filters can be matched
independently, while still offering caching.

* Perform server-side filtering and output result in REST API

* Fix numerous filters_changed events being sent when editing multiple keywords at once

* Add some tests

* Use the new API in the WebUI

- use client-side logic for filters we have fetched rules for.
  This is so that filter changes can be retroactively applied without
  reloading the UI.
- use server-side logic for filters we haven't fetched rules for yet
  (e.g. network error, or initial timeline loading)

* Minor optimizations and refactoring

* Perform server-side filtering on the streaming server

* Change the wording of filter action labels

* Fix issues pointed out by linter

* Change design of “Show anyway” link in accordence to review comments

* Drop “irreversible” filtering behavior

* Move /api/v2/filter_keywords to /api/v1/filters/keywords

* Rename `filter_results` attribute to `filtered`

* Rename REST::LegacyFilterSerializer to REST::V1::FilterSerializer

* Fix systemChannelId value in streaming server

* Simplify code by removing client-side filtering code

The simplifcation comes at a cost though: filters aren't retroactively
applied anymore.
2022-06-28 09:42:13 +02:00
Claire
ffd34fd31a Fix test-related issues (#17888)
* Remove obsolete RSS::Serializer test

Since #17828, RSS::Serializer no longer has specific code for deleted statuses,
but it is never called on deleted statuses anyway.

* Rename erroneously-named test files

* Fix failing test

* Fix test deprecation warnings

* Update CircleCI Ruby orb

1.4.0 has a bug that does not match all the test files due to incorrect
globbing
2022-03-28 12:43:58 +02:00
Shlee
a5b3e455af Update config.yml (#17799) 2022-03-15 22:11:09 +09:00
Shlee
0578b1cc4c Update config.yml (#17800) 2022-03-15 22:10:32 +09:00
Claire
e8db3d38cf Add more migration tests (#17710)
* Add migration tests for hide_network settings migration

* Add tests about suspended/suspended_at

* Add more tests regarding the results of migrations

* Fix migration test regarding stale conflicting remote account

* Add migration tests about AccountConversation
2022-03-07 23:40:55 +01:00
Josh Soref
1c070bd94c Spelling (#17705)
* spelling: account

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: affiliated

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: appearance

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: autosuggest

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: cacheable

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: component

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: conversations

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: domain.example

Clarify what's distinct and use RFC friendly domain space.

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: environment

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: exceeds

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: functional

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: inefficiency

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: not

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: notifications

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: occurring

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: position

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: progress

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: promotable

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: reblogging

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: repetitive

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: resolve

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: saturated

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: similar

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: strategies

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: success

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: targeting

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: thumbnails

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: unauthorized

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: unsensitizes

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: validations

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: various

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

Co-authored-by: Josh Soref <jsoref@users.noreply.github.com>
2022-03-06 22:51:40 +01:00
Shlee
faaf1c9722 Update config.yml (#17664) 2022-02-28 08:44:49 +01:00
Yamagishi Kazutoshi
a40e6f5d97 Remove protobuf dependencies (#17539) 2022-02-14 16:08:02 +01:00
Claire
7389378eed Add more advanced migration tests (#17393)
- populate the database with some data when testing migrations
- try both one-step and two-step migrations (`SKIP_POST_DEPLOYMENT_MIGRATIONS`)
2022-01-30 23:50:08 +01:00
Shlee
0e747afd34 Ruby 3.0.2 Upgrade (#16982)
* Update .ruby-version

* Update Gemfile

* Update Gemfile.lock

* Update Dockerfile

* Update check-i18n.yml

* Update config.yml

* Update config.yml
2021-11-18 21:59:57 +01:00
Shlee
15ac5f2a2f [CircleCI] Test using Postgres 14 (#16948)
* Update config.yml

* Update config.yml
2021-11-06 17:13:51 +01:00
Yamagishi Kazutoshi
c6159e1a16 Improve CircleCI config (#16861)
* Improve CircleCI config

* Enable PAM only when needed

* Remove Ruby 2.6
2021-10-18 12:05:25 +02:00
Shlee
312ccdb126 NodeJS 14 support - circleci/docker/.nvmrc (#16163)
* Update config.yml

* Update Dockerfile

* Update .nvmrc

* Update Dockerfile

* NodeJS 10 is EOL.

* Update package.json

* Update README.md

* Update Vagrantfile

* Update Dockerfile

* Update Dockerfile
2021-08-10 22:56:13 +02:00
Yamagishi Kazutoshi
0f92d335a2 Add Actions for check i18n (#16285) 2021-05-22 15:00:20 +02:00
Claire
86f5fad111 Add Ruby 3.0 support (#16046)
* Fix issues with POSIX::Spawn, Terrapin and Ruby 3.0

Also improve the Terrapin monkey-patch for the stderr/stdout issue.

* Fix keyword argument handling throughout the codebase

* Monkey-patch Paperclip to fix keyword arguments handling in validators

* Change validation_extensions to please CodeClimate

* Bump microformats from 4.2.1 to 4.3.1

* Allow Ruby 3.0

* Add Ruby 3.0 test target to CircleCI

* Add test for admin dashboard warnings

* Fix admin dashboard warnings on Ruby 3.0
2021-05-06 14:22:54 +02:00
David Cook
f8275c9608 Set bundle config in local file, and set path (#14351) 2020-07-18 19:00:59 +02:00
Shlee
5162535061 Fix the circleci packages for Buster. (#13583)
* Update config.yml

* Update config.yml

* Update config.yml

* Update config.yml

* Update config.yml

* Update config.yml

* Update config.yml

* Update .circleci/config.yml

Co-authored-by: Sandro <sandro.jaeckel@gmail.com>

* Update config.yml

Co-authored-by: Sandro <sandro.jaeckel@gmail.com>
Co-authored-by: Eugen Rochko <eugen@zeonfederated.com>
2020-05-01 23:45:40 +02:00
Eugen Rochko
9db780b0d4 Change CircleCI test output (#13587) 2020-05-01 20:19:01 +02:00
Shlee
97e51733ff Update config.yml (#13379) 2020-04-04 15:52:42 +02:00
David Cook
3c45ec6b58 Set BUNDLE_PATH in CircleCI (#13214) 2020-03-08 15:45:19 +01:00
ThibG
4e90375279 Fix Gemfile.lock (#12995)
* Use bundle install in deployment mode for Continuous Integration to catch Gemfile.lock issues

* Fix deprecation warnings

* Fix Gemfile.lock

* More changes to catch Gemfile.lock issues
2020-01-28 18:50:44 +01:00
Shlee
05ccf60c36 Drop support for Ruby 2.4 from CircleCI (#12834)
* Update config.yml

* Update Gemfile

* Update README.md

* Update Gemfile

* Update Gemfile

* Update Gemfile

* Update README.md

* Update README.md
2020-01-15 07:45:00 +01:00
ThibG
af3b48ae93 Add CircleCI task to test migrations (#12815) 2020-01-11 02:04:57 +01:00
Shlee
c16589673f Upgrade CircleCI testing to Ruby 2.4-2.7 (#12800)
* Update config.yml

* Update Gemfile
2020-01-10 05:34:25 +01:00
Shlee
c3e286a526 Circleci - Upgrade to Buster Images (#12705)
* Update config.yml

* Update Gemfile.lock
2019-12-29 17:00:43 +01:00
Eugen Rochko
a55f075ab6 Add missing locale file for ga and add rake task to check for it (#11813)
* Add missing locale file for ga and add rake task to check for it

* Update lib/tasks/repo.rake

Co-Authored-By: Yamagishi Kazutoshi <ykzts@desire.sh>

* Fix check-i18n build
2019-09-12 04:58:33 +02:00
Shlee
a439877df6 Pushed CircleCI docker images to more recent V (#11708) 2019-08-30 16:59:11 +02:00
Eugen Rochko
50e3134ae4 Fix check-i18n builds (#11084)
* Fix check-i18n builds

* Remove check for missing plural forms
2019-06-16 19:12:12 +02:00
ThibG
5932f28dd0 Fix CircleCI (#9695) 2019-01-02 20:48:22 +01:00
ashleyhull-versent
9d9b81ff42 Replace Ruby 2.3 with 2.6 in CircleCI (#9652)
* Update config.yml

* Update Gemfile

* dropping ruby 2.3

2.3 EOL date: scheduled for 2019-03-31

* Updating docker containers

* Update Gemfile
2018-12-29 07:23:07 +01:00
Eugen Rochko
057c91a4e2 Update i18n-tasks and change CircleCI command (#9104)
* Update i18n-tasks and CircleCI command

* Fix #9088

* Update i18n-tasks

* Fix ast
2018-10-28 07:15:20 +01:00
Eugen Rochko
e4892dca28 Add consistent interpolations check to CircleCI (#9072)
* Add consistent interpolations check to CircleCI

* Fix locale strings using wrong variables
2018-10-25 01:17:01 +02:00
Eugen Rochko
7be9dfa8c6 Fix missing plural keys (#9084)
* Update i18n-tasks to feature-missing-plural-keys

* Fix pluralizations with missing keys in Arabic

Fix #8554

* Add i18n-tasks missing-plural-keys to CircleCI
2018-10-25 00:09:45 +02:00
takayamaki
17229858c8 fix: Execute PAM authentication tests on CircleCI (#9029)
and use 'if' option of context block
2018-10-20 17:28:04 +02:00
ThibG
6852af1d03 Use CircleCI workflows for ruby dependencies (#8228)
* Add “bundle clean” suggestion from CircleCI doc

Cf. https://circleci.com/docs/2.0/caching/#bundler-ruby

* Use workspaces instead of caches for ruby gems

Cache are not guaranteed to be available, while the test jobs *require* their
depencies to run. Workspaces are thus more suitable.

One downside is that the order of workspace layer additions need to be
deterministic, which is why install-ruby{2.3,2.4} now depend on
install-ruby2.5.
2018-08-18 04:05:42 +02:00
ThibG
5c7a7176a3 Use workspace instead of caching for built assets (#8103)
Tests cannot run without built assets, and we want
exactly the matching assets. This is not a cache.
2018-07-30 22:22:55 +02:00
Renato "Lond" Cerqueira
c0fbe9e3a4 Restore support to ruby 2.3, add ruby 2.3 to circle ci (#7935)
This replace calls of String#match? with rails Regex#match?
This follows the same idea used to keep Rails 5.2 compatible with Ruby
2.2.2 in https://github.com/rails/rails/pull/32973
2018-07-03 19:47:09 +02:00
Yamagishi Kazutoshi
d31b031214 Add CONTINUOUS_INTEGRATION: true to .circleci/config.yml (#7447) 2018-05-11 11:51:07 +02:00
Yamagishi Kazutoshi
e60292c616 Disable simplecov on CircleCI (#7416)
* Disable simplecov on CircleCI

* Remove --format progress
2018-05-09 16:59:58 +02:00
Yamagishi Kazutoshi
9d64bcdac7 Port travis_retry for CI (#7379)
* Port travis_retry for CI

* Add license
2018-05-06 10:55:50 +02:00
Yamagishi Kazutoshi
79fe092d0e Remove unnecessary hyphen from restore_cache key (#7276) 2018-04-28 11:20:30 +02:00
Yamagishi Kazutoshi
115bac8af9 Move precompile step to build stage (#7235) 2018-04-23 09:16:26 +02:00
Yamagishi Kazutoshi
c461895933 Add parallel test processors (#7215) 2018-04-21 21:36:22 +02:00
Yamagishi Kazutoshi
efa4eb4d13 Replace Travis to CircleCI (#7196) 2018-04-20 13:46:08 +02:00