From f6dec44e95bd9e08ff17e474d0baf3a8b610269d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?KMY=EF=BC=88=E9=9B=AA=E3=81=82=E3=81=99=E3=81=8B=EF=BC=89?= Date: Fri, 24 May 2024 08:15:12 +0900 Subject: [PATCH] Revert "Upstream 20240517" --- .browserslistrc | 4 +- .bundler-audit.yml | 8 - .devcontainer/docker-compose.yml | 2 +- .env.development | 4 - .env.test | 7 - .eslintrc.js | 11 +- .github/FUNDING.yml | 1 - .github/ISSUE_TEMPLATE/1.bug_report.yml | 74 - .github/ISSUE_TEMPLATE/1.web_bug_report.yml | 76 + .github/ISSUE_TEMPLATE/2.feature_request.yml | 16 - .../ISSUE_TEMPLATE/2.server_bug_report.yml | 65 + .github/ISSUE_TEMPLATE/3.feature_request.yml | 22 + .../ISSUE_TEMPLATE/3.spec_change_request.yml | 28 - .github/ISSUE_TEMPLATE/config.yml | 6 +- .github/actions/setup-javascript/action.yml | 2 +- .github/codecov.yml | 4 +- .github/renovate.json5 | 23 - .github/stylelint-matcher.json | 21 + .github/workflows/build-container-image.yml | 102 + .../{build-security.yml => build-nightly.yml} | 10 +- .github/workflows/build-push-pr.yml | 58 + .github/workflows/build-releases.yml | 51 + .github/workflows/crowdin-download.yml | 71 + .github/workflows/crowdin-upload.yml | 35 + .github/workflows/format-check.yml | 18 - .github/workflows/lint-css.yml | 6 +- .github/workflows/lint-haml.yml | 2 +- .github/workflows/lint-json.yml | 38 + .github/workflows/lint-md.yml | 38 + .github/workflows/lint-yml.yml | 40 + .github/workflows/test-image-build.yml | 35 + .github/workflows/test-js.yml | 2 +- .../workflows/test-migrations-one-step.yml | 19 +- .../workflows/test-migrations-two-step.yml | 22 +- .github/workflows/test-ruby.yml | 149 +- .gitignore | 7 +- .haml-lint.yml | 5 +- .haml-lint_todo.yml | 23 - .husky/pre-commit | 3 + .nvmrc | 2 +- .prettierignore | 8 - .rubocop.yml | 92 +- .rubocop_todo.yml | 218 +- .ruby-version | 2 +- .simplecov | 22 + AUTHORS_KB.md | 18 - CHANGELOG.md | 95 - CONTRIBUTING.md | 59 +- Dockerfile | 21 +- FEDERATION.md | 36 +- Gemfile | 85 +- Gemfile.lock | 581 +- README.md | 164 +- SECURITY.md | 31 +- Vagrantfile | 3 +- app/chewy/accounts_index.rb | 72 +- app/chewy/public_statuses_index.rb | 58 +- app/chewy/statuses_index.rb | 87 +- app/chewy/tags_index.rb | 37 +- app/controllers/accounts_controller.rb | 8 +- .../activitypub/base_controller.rb | 3 - .../activitypub/claims_controller.rb | 3 + .../activitypub/collections_controller.rb | 5 +- .../activitypub/contexts_controller.rb | 23 - .../followers_synchronizations_controller.rb | 5 +- .../activitypub/inboxes_controller.rb | 9 +- .../activitypub/outboxes_controller.rb | 7 +- .../activitypub/references_controller.rb | 89 - .../activitypub/replies_controller.rb | 4 +- app/controllers/admin/accounts_controller.rb | 26 +- .../admin/action_logs_controller.rb | 2 +- .../admin/confirmations_controller.rb | 16 +- .../admin/custom_emojis_controller.rb | 31 +- .../admin/domain_allows_controller.rb | 2 - .../admin/domain_blocks_controller.rb | 10 +- .../admin/email_domain_blocks_controller.rb | 2 +- .../admin/export_domain_blocks_controller.rb | 56 +- .../admin/friend_servers_controller.rb | 93 - .../admin/ng_rule_histories_controller.rb | 24 - app/controllers/admin/ng_rules_controller.rb | 115 - .../admin/ng_words/keywords_controller.rb | 30 - .../admin/ng_words/settings_controller.rb | 11 - .../admin/ng_words/white_list_controller.rb | 34 - app/controllers/admin/ng_words_controller.rb | 46 - .../admin/ngword_histories_controller.rb | 19 - .../admin/reports/actions_controller.rb | 4 +- app/controllers/admin/rules_controller.rb | 2 +- .../admin/sensitive_words_controller.rb | 47 - .../settings/registrations_controller.rb | 9 - .../admin/site_uploads_controller.rb | 2 +- .../admin/special_domains_controller.rb | 34 - .../admin/special_instances_controller.rb | 34 - app/controllers/admin/statuses_controller.rb | 68 +- app/controllers/antennas_controller.rb | 51 - app/controllers/api/base_controller.rb | 66 +- .../api/v1/accounts/antennas_controller.rb | 18 - .../api/v1/accounts/circles_controller.rb | 18 - .../api/v1/accounts/credentials_controller.rb | 5 +- .../accounts/exclude_antennas_controller.rb | 18 - .../accounts/follower_accounts_controller.rb | 8 +- .../accounts/following_accounts_controller.rb | 8 +- .../api/v1/accounts/search_controller.rb | 1 - .../api/v1/accounts/statuses_controller.rb | 24 +- app/controllers/api/v1/accounts_controller.rb | 37 +- .../api/v1/admin/accounts_controller.rb | 12 +- .../canonical_email_blocks_controller.rb | 12 +- .../api/v1/admin/domain_allows_controller.rb | 12 +- .../api/v1/admin/domain_blocks_controller.rb | 27 +- .../admin/email_domain_blocks_controller.rb | 12 +- .../api/v1/admin/ip_blocks_controller.rb | 12 +- .../api/v1/admin/reports_controller.rb | 13 +- .../api/v1/admin/tags_controller.rb | 12 +- .../preview_card_providers_controller.rb | 12 +- .../api/v1/annual_reports_controller.rb | 30 - .../api/v1/antennas/accounts_controller.rb | 95 - .../api/v1/antennas/domains_controller.rb | 54 - .../antennas/exclude_accounts_controller.rb | 104 - .../v1/antennas/exclude_domains_controller.rb | 46 - .../antennas/exclude_keywords_controller.rb | 46 - .../v1/antennas/exclude_tags_controller.rb | 50 - .../api/v1/antennas/keywords_controller.rb | 62 - .../api/v1/antennas/tags_controller.rb | 58 - app/controllers/api/v1/antennas_controller.rb | 47 - app/controllers/api/v1/blocks_controller.rb | 14 +- .../statuses_controller.rb | 94 - .../api/v1/bookmark_categories_controller.rb | 47 - .../api/v1/bookmarks_controller.rb | 22 +- .../api/v1/circles/accounts_controller.rb | 93 - .../api/v1/circles/statuses_controller.rb | 65 - app/controllers/api/v1/circles_controller.rb | 47 - .../api/v1/conversations_controller.rb | 4 + .../crypto/encrypted_messages_controller.rb | 12 +- .../api/v1/directories_controller.rb | 2 +- .../api/v1/domain_blocks_controller.rb | 12 +- .../api/v1/emoji_reactions_controller.rb | 63 - .../api/v1/endorsements_controller.rb | 14 +- .../api/v1/favourites_controller.rb | 22 +- .../featured_tags/suggestions_controller.rb | 2 +- app/controllers/api/v1/filters_controller.rb | 4 +- .../api/v1/follow_requests_controller.rb | 6 +- .../api/v1/followed_tags_controller.rb | 12 +- .../api/v1/lists/accounts_controller.rb | 16 +- app/controllers/api/v1/lists_controller.rb | 5 +- app/controllers/api/v1/markers_controller.rb | 2 +- app/controllers/api/v1/mutes_controller.rb | 14 +- .../v1/notifications/policies_controller.rb | 37 - .../v1/notifications/requests_controller.rb | 75 - .../api/v1/notifications_controller.rb | 21 +- .../api/v1/peers/search_controller.rb | 15 +- .../api/v1/push/subscriptions_controller.rb | 33 +- .../api/v1/reaction_deck_controller.rb | 92 - .../api/v1/scheduled_statuses_controller.rb | 12 +- .../bookmark_categories_controller.rb | 18 - ...emoji_reactioned_by_accounts_controller.rb | 76 - .../v1/statuses/emoji_reactions_controller.rb | 63 - .../favourited_by_accounts_controller.rb | 8 +- .../statuses/mentioned_accounts_controller.rb | 74 - .../reblogged_by_accounts_controller.rb | 10 +- .../referred_by_statuses_controller.rb | 80 - app/controllers/api/v1/statuses_controller.rb | 81 +- .../api/v1/timelines/antenna_controller.rb | 51 - .../api/v1/timelines/base_controller.rb | 12 +- .../api/v1/timelines/home_controller.rb | 8 +- .../api/v1/timelines/list_controller.rb | 6 +- .../api/v1/timelines/public_controller.rb | 10 +- .../api/v1/timelines/tag_controller.rb | 10 +- .../api/v1/trends/links_controller.rb | 4 + .../api/v1/trends/statuses_controller.rb | 6 +- .../api/v1/trends/tags_controller.rb | 4 + app/controllers/api/v2/filters_controller.rb | 4 +- app/controllers/api/v2/search_controller.rb | 4 +- app/controllers/application_controller.rb | 5 +- .../auth/confirmations_controller.rb | 18 +- .../auth/omniauth_callbacks_controller.rb | 5 +- app/controllers/auth/passwords_controller.rb | 10 +- app/controllers/auth/sessions_controller.rb | 29 - .../concerns/api/error_handling.rb | 52 - app/controllers/concerns/api/pagination.rb | 36 - .../auth/two_factor_authentication_concern.rb | 5 - app/controllers/concerns/cache_concern.rb | 34 +- .../concerns/preloading_concern.rb | 17 - .../concerns/signature_verification.rb | 52 +- .../concerns/web_app_controller_concern.rb | 15 +- app/controllers/custom_css_controller.rb | 2 +- app/controllers/filters_controller.rb | 2 +- .../follower_accounts_controller.rb | 4 +- .../following_accounts_controller.rb | 4 +- app/controllers/instance_actors_controller.rb | 7 - app/controllers/intents_controller.rb | 23 +- .../redirect/accounts_controller.rb | 10 - app/controllers/redirect/base_controller.rb | 24 - .../redirect/statuses_controller.rb | 10 - .../settings/applications_controller.rb | 2 +- .../settings/featured_tags_controller.rb | 2 +- .../settings/imports_controller.rb | 4 +- .../settings/preferences/base_controller.rb | 10 - .../settings/preferences/other_controller.rb | 7 - .../preferences/reaching_controller.rb | 9 - .../settings/privacy_extra_controller.rb | 27 - .../settings/profiles_controller.rb | 3 +- .../webauthn_credentials_controller.rb | 20 +- .../severed_relationships_controller.rb | 61 - .../statuses_cleanup_controller.rb | 2 +- app/controllers/statuses_controller.rb | 40 +- app/controllers/tags_controller.rb | 2 +- .../well_known/oauth_metadata_controller.rb | 23 - app/helpers/accounts_helper.rb | 16 +- app/helpers/admin/accounts_helper.rb | 1 - app/helpers/admin/action_logs_helper.rb | 4 +- app/helpers/application_helper.rb | 54 +- app/helpers/branding_helper.rb | 13 +- app/helpers/context_helper.rb | 28 +- app/helpers/dtl_helper.rb | 11 - app/helpers/follow_helper.rb | 35 - app/helpers/formatting_helper.rb | 16 +- app/helpers/high_load_helper.rb | 8 - app/helpers/jsonld_helper.rb | 38 +- app/helpers/kmyblue_capabilities_helper.rb | 54 - app/helpers/languages_helper.rb | 8 +- app/helpers/mascot_helper.rb | 2 +- app/helpers/ng_rule_helper.rb | 28 - app/helpers/react_component_helper.rb | 11 - app/helpers/registration_helper.rb | 4 +- app/helpers/registration_limitation_helper.rb | 55 - app/helpers/routing_helper.rb | 8 +- app/helpers/statuses_helper.rb | 14 +- app/helpers/theme_helper.rb | 27 - app/javascript/entrypoints/admin.tsx | 440 - app/javascript/entrypoints/public.tsx | 462 - app/javascript/entrypoints/sign_up.ts | 48 - .../entrypoints/two_factor_authentication.ts | 197 - .../inter/inter-variable-font-slnt-wght.woff2 | Bin 325956 -> 0 bytes .../icons/android-chrome-144x144.png | Bin 8852 -> 5810 bytes .../icons/android-chrome-192x192.png | Bin 11510 -> 8741 bytes .../icons/android-chrome-256x256.png | Bin 14862 -> 11993 bytes app/javascript/icons/android-chrome-36x36.png | Bin 1835 -> 950 bytes .../icons/android-chrome-384x384.png | Bin 24227 -> 21112 bytes app/javascript/icons/android-chrome-48x48.png | Bin 3216 -> 1384 bytes .../icons/android-chrome-512x512.png | Bin 38207 -> 31858 bytes app/javascript/icons/android-chrome-72x72.png | Bin 4724 -> 2262 bytes app/javascript/icons/android-chrome-96x96.png | Bin 6150 -> 3306 bytes .../icons/apple-touch-icon-1024x1024.png | Bin 114584 -> 77950 bytes .../icons/apple-touch-icon-114x114.png | Bin 7114 -> 4123 bytes .../icons/apple-touch-icon-120x120.png | Bin 7494 -> 4366 bytes .../icons/apple-touch-icon-144x144.png | Bin 8852 -> 5810 bytes .../icons/apple-touch-icon-152x152.png | Bin 9125 -> 6177 bytes .../icons/apple-touch-icon-167x167.png | Bin 10012 -> 7041 bytes .../icons/apple-touch-icon-180x180.png | Bin 10755 -> 7709 bytes .../icons/apple-touch-icon-57x57.png | Bin 3787 -> 1673 bytes .../icons/apple-touch-icon-60x60.png | Bin 3950 -> 1761 bytes .../icons/apple-touch-icon-72x72.png | Bin 4724 -> 2262 bytes .../icons/apple-touch-icon-76x76.png | Bin 4918 -> 2360 bytes app/javascript/icons/favicon-16x16.png | Bin 986 -> 588 bytes app/javascript/icons/favicon-32x32.png | Bin 1715 -> 1114 bytes app/javascript/icons/favicon-48x48.png | Bin 3216 -> 1680 bytes app/javascript/images/check.svg | 4 - .../mailer-new/common/header-bg-end.png | Bin 4720 -> 0 bytes .../mailer-new/common/header-bg-start.png | Bin 3171 -> 0 bytes .../images/mailer-new/common/logo-footer.png | Bin 2418 -> 0 bytes .../images/mailer-new/common/logo-header.png | Bin 10846 -> 0 bytes .../mailer-new/heading/2fa-disabled.png | Bin 1945 -> 0 bytes .../images/mailer-new/heading/2fa-enabled.png | Bin 1939 -> 0 bytes .../mailer-new/heading/2fa-recovery.png | Bin 2461 -> 0 bytes .../images/mailer-new/heading/LICENSE | 21 - .../images/mailer-new/heading/README.md | 1 - .../mailer-new/heading/appeal-approved.png | Bin 1937 -> 0 bytes .../mailer-new/heading/appeal-rejected.png | Bin 1672 -> 0 bytes .../images/mailer-new/heading/archive.png | Bin 1504 -> 0 bytes .../images/mailer-new/heading/boost.png | Bin 1613 -> 0 bytes .../images/mailer-new/heading/email.png | Bin 1615 -> 0 bytes .../images/mailer-new/heading/favorite.png | Bin 2112 -> 0 bytes .../images/mailer-new/heading/follow.png | Bin 1837 -> 0 bytes .../images/mailer-new/heading/key-added.png | Bin 2022 -> 0 bytes .../images/mailer-new/heading/key-deleted.png | Bin 1779 -> 0 bytes .../mailer-new/heading/key-disabled.png | Bin 1940 -> 0 bytes .../images/mailer-new/heading/key-enabled.png | Bin 1937 -> 0 bytes .../images/mailer-new/heading/login.png | Bin 1918 -> 0 bytes .../images/mailer-new/heading/mention.png | Bin 2522 -> 0 bytes .../images/mailer-new/heading/password.png | Bin 2249 -> 0 bytes .../images/mailer-new/heading/user.png | Bin 1837 -> 0 bytes .../images/mailer-new/heading/warning.png | Bin 1929 -> 0 bytes .../mailer-new/store-icons/btn-app-store.png | Bin 2054 -> 0 bytes .../store-icons/btn-google-play.png | Bin 4512 -> 0 bytes .../images/mailer-new/welcome-icons/LICENSE | 21 - .../images/mailer-new/welcome-icons/README.md | 1 - .../welcome-icons/apps_step-off.png | Bin 547 -> 0 bytes .../mailer-new/welcome-icons/apps_step-on.png | Bin 1291 -> 0 bytes .../welcome-icons/edit_profile_step-off.png | Bin 2247 -> 0 bytes .../welcome-icons/edit_profile_step-on.png | Bin 1065 -> 0 bytes .../welcome-icons/follow_step-off.png | Bin 505 -> 0 bytes .../welcome-icons/follow_step-on.png | Bin 1227 -> 0 bytes .../welcome-icons/post_step-off.png | Bin 688 -> 0 bytes .../mailer-new/welcome-icons/post_step-on.png | Bin 1552 -> 0 bytes .../welcome-icons/share_step-off.png | Bin 709 -> 0 bytes .../welcome-icons/share_step-on.png | Bin 1639 -> 0 bytes .../mailer-new/welcome/checkbox-off.png | Bin 954 -> 0 bytes .../images/mailer-new/welcome/checkbox-on.png | Bin 1074 -> 0 bytes .../mailer-new/welcome/feature_audience.png | Bin 96392 -> 0 bytes .../mailer-new/welcome/feature_control.png | Bin 90297 -> 0 bytes .../mailer-new/welcome/feature_creativity.png | Bin 130496 -> 0 bytes .../mailer-new/welcome/feature_moderation.png | Bin 100525 -> 0 bytes .../welcome/purple-extra-soft-spacer.png | Bin 939 -> 0 bytes .../welcome/purple-extra-soft-wave.png | Bin 2531 -> 0 bytes app/javascript/images/warning-stripes.svg | 25 - app/javascript/mastodon/actions/antennas.js | 986 -- app/javascript/mastodon/actions/blocks.js | 15 +- .../mastodon/actions/bookmark_categories.js | 394 - app/javascript/mastodon/actions/bookmarks.js | 2 - app/javascript/mastodon/actions/boosts.js | 32 + app/javascript/mastodon/actions/circles.js | 470 - app/javascript/mastodon/actions/compose.js | 100 +- .../mastodon/actions/domain_blocks.js | 11 - .../mastodon/actions/emoji_reactions.js | 94 - app/javascript/mastodon/actions/favourites.js | 2 - .../mastodon/actions/importer/index.js | 4 - .../mastodon/actions/importer/normalizer.js | 30 +- .../mastodon/actions/interactions.js | 313 +- app/javascript/mastodon/actions/lists.js | 12 +- app/javascript/mastodon/actions/markers.js | 152 + app/javascript/mastodon/actions/markers.ts | 146 - app/javascript/mastodon/actions/mutes.js | 32 +- .../mastodon/actions/notifications.js | 326 +- .../mastodon/actions/picture_in_picture.js | 46 + .../mastodon/actions/picture_in_picture.ts | 31 - .../mastodon/actions/reaction_deck.js | 79 - app/javascript/mastodon/actions/search.js | 7 +- app/javascript/mastodon/actions/settings.js | 2 +- app/javascript/mastodon/actions/statuses.js | 16 +- app/javascript/mastodon/actions/streaming.js | 14 +- .../mastodon/actions/suggestions.js | 9 +- app/javascript/mastodon/actions/timelines.js | 23 - app/javascript/mastodon/api.ts | 9 +- app/javascript/mastodon/api_types/accounts.ts | 30 - .../mastodon/api_types/custom_emoji.ts | 5 - app/javascript/mastodon/api_types/markers.ts | 7 - .../mastodon/api_types/media_attachments.ts | 22 - app/javascript/mastodon/api_types/polls.ts | 23 - app/javascript/mastodon/api_types/statuses.ts | 97 - app/javascript/mastodon/common.js | 2 +- .../autosuggest_emoji-test.jsx.snap | 12 +- .../mastodon/components/account.jsx | 251 +- .../mastodon/components/admin/Counter.jsx | 14 +- .../mastodon/components/admin/Dimension.jsx | 18 +- .../components/admin/ReportReasonSelector.jsx | 2 +- .../mastodon/components/attachment_list.jsx | 2 +- .../mastodon/components/autosuggest_emoji.jsx | 2 +- .../components/autosuggest_hashtag.tsx | 37 +- .../mastodon/components/autosuggest_input.jsx | 59 +- .../components/autosuggest_textarea.jsx | 67 +- app/javascript/mastodon/components/badge.jsx | 15 +- app/javascript/mastodon/components/button.tsx | 17 +- .../mastodon/components/check_box.tsx | 39 - .../components/column_back_button.tsx | 2 +- .../mastodon/components/column_header.jsx | 74 +- .../mastodon/components/compacted_status.jsx | 494 - .../mastodon/components/copy_icon_button.jsx | 2 +- .../components/dismissable_banner.tsx | 2 +- app/javascript/mastodon/components/domain.tsx | 2 +- .../mastodon/components/dropdown_menu.jsx | 9 +- .../components/edited_timestamp/index.jsx | 4 +- .../mastodon/components/emoji_view.jsx | 31 - .../mastodon/components/hashtag_bar.tsx | 24 +- app/javascript/mastodon/components/icon.tsx | 2 +- .../mastodon/components/icon_button.tsx | 3 - .../mastodon/components/load_gap.tsx | 2 +- app/javascript/mastodon/components/logo.tsx | 2 +- .../mastodon/components/media_gallery.jsx | 41 +- .../picture_in_picture_placeholder.jsx | 2 +- app/javascript/mastodon/components/poll.jsx | 2 +- .../components/regeneration_indicator.jsx | 2 +- .../components/relative_timestamp.tsx | 18 +- .../mastodon/components/scrollable_list.jsx | 2 +- .../components/searchability_icon.tsx | 80 - .../mastodon/components/short_number.tsx | 8 +- app/javascript/mastodon/components/status.jsx | 196 +- .../mastodon/components/status_action_bar.jsx | 212 +- .../mastodon/components/status_content.jsx | 9 +- .../components/status_emoji_reactions_bar.jsx | 110 - .../mastodon/components/status_list.jsx | 53 +- .../mastodon/components/verified_badge.tsx | 2 +- .../mastodon/components/visibility_icon.tsx | 94 +- .../mastodon/containers/account_container.jsx | 21 +- .../containers/compacted_status_container.jsx | 78 - .../mastodon/containers/compose_container.jsx | 38 +- .../mastodon/containers/mastodon.jsx | 4 - .../mastodon/containers/media_container.jsx | 2 +- .../mastodon/containers/status_container.jsx | 54 +- .../mastodon/features/about/index.jsx | 106 +- .../account/components/domain_pill.jsx | 86 - .../components/follow_request_note.jsx | 4 +- .../features/account/components/header.jsx | 90 +- .../account_gallery/components/media_item.jsx | 6 +- .../account_timeline/components/header.jsx | 28 +- .../containers/header_container.jsx | 84 +- .../antenna_adder/components/antenna.jsx | 96 - .../mastodon/features/antenna_adder/index.jsx | 84 - .../antenna_editor/components/account.jsx | 88 - .../components/edit_antenna_form.jsx | 76 - .../antenna_editor/components/search.jsx | 83 - .../features/antenna_editor/index.jsx | 84 - .../components/radio_panel.jsx | 46 - .../antenna_setting/components/text_list.jsx | 104 - .../features/antenna_setting/index.jsx | 587 -- .../features/antenna_timeline/index.jsx | 206 - .../antennas/components/new_antenna_form.jsx | 80 - .../mastodon/features/antennas/index.jsx | 97 - .../mastodon/features/audio/index.jsx | 12 +- .../mastodon/features/blocks/index.jsx | 2 +- .../components/new_bookmark_category_form.jsx | 80 - .../features/bookmark_categories/index.jsx | 98 - .../components/account.jsx | 43 - .../components/bookmark_category.jsx | 76 - .../bookmark_category_adder/index.jsx | 78 - .../edit_bookmark_category_form.jsx | 76 - .../bookmark_category_statuses/index.jsx | 195 - .../features/bookmarked_statuses/index.jsx | 6 +- .../circle_adder/components/account.jsx | 43 - .../circle_adder/components/circle.jsx | 75 - .../mastodon/features/circle_adder/index.jsx | 77 - .../circle_editor/components/account.jsx | 83 - .../components/edit_circle_form.jsx | 76 - .../circle_editor/components/search.jsx | 83 - .../mastodon/features/circle_editor/index.jsx | 83 - .../features/circle_statuses/index.jsx | 189 - .../circles/components/new_circle_form.jsx | 80 - .../mastodon/features/circles/index.jsx | 125 - .../closed_registrations_modal/index.jsx | 12 +- .../components/column_settings.jsx | 10 +- .../features/community_timeline/index.jsx | 2 +- .../compose/components/action_bar.jsx | 103 +- .../components/autosuggest_account.jsx | 2 +- .../compose/components/character_counter.jsx | 28 +- .../compose/components/circle_dropdown.jsx | 273 - .../compose/components/compose_form.jsx | 199 +- .../compose/components/edit_indicator.jsx | 62 - .../components/emoji_picker_dropdown.jsx | 38 +- .../components/expiration_dropdown.jsx | 276 - .../components/featured_tags_dropdown.jsx | 266 - .../compose/components/language_dropdown.jsx | 36 +- .../compose/components/navigation_bar.jsx | 68 +- .../compose/components/poll_button.jsx | 12 +- .../features/compose/components/poll_form.jsx | 280 +- .../compose/components/privacy_dropdown.jsx | 236 +- .../components/privacy_dropdown_menu.jsx | 128 - .../compose/components/reply_indicator.jsx | 94 +- .../features/compose/components/search.jsx | 31 +- .../compose/components/search_results.jsx | 124 +- .../components/searchability_dropdown.jsx | 298 - .../features/compose/components/upload.jsx | 118 +- .../compose/components/upload_button.jsx | 15 +- .../compose/components/upload_form.jsx | 67 +- .../compose/components/upload_progress.jsx | 69 +- .../containers/circle_dropdown_container.js | 33 - .../containers/compose_form_container.js | 13 - .../emoji_picker_dropdown_container.js | 53 +- .../expiration_dropdown_container.js | 30 - .../featured_tags_dropdown_container.js | 30 - .../containers/markdown_button_container.js | 32 - .../containers/navigation_container.js | 36 + .../containers/poll_button_container.js | 2 +- .../compose/containers/poll_form_container.js | 53 + .../containers/privacy_dropdown_container.js | 5 +- .../containers/reply_indicator_container.js | 36 + .../compose/containers/search_container.js | 8 +- .../containers/search_results_container.js | 20 + .../searchability_dropdown_container.js | 30 - .../containers/sensitive_button_container.jsx | 73 + .../containers/spoiler_button_container.js | 10 +- .../containers/upload_button_container.js | 20 +- .../compose/containers/upload_container.js | 26 + .../containers/upload_form_container.js | 9 + .../containers/upload_progress_container.js | 11 + .../compose/containers/warning_container.jsx | 23 +- .../mastodon/features/compose/index.jsx | 22 +- .../components/conversation.jsx | 322 +- .../components/conversations_list.jsx | 117 +- .../containers/conversation_container.js | 80 + .../conversations_list_container.js | 16 + .../features/direct_timeline/index.jsx | 136 +- .../directory/components/account_card.jsx | 58 +- .../mastodon/features/directory/index.jsx | 2 +- .../mastodon/features/domain_blocks/index.jsx | 2 +- .../features/emoji/__tests__/emoji-test.js | 38 +- .../mastodon/features/emoji/emoji.js | 43 +- .../features/emoji/emoji_compressed.js | 8 +- .../mastodon/features/emoji/emoji_utils.js | 12 +- ...o_filename_s.js => unicode_to_filename.js} | 0 .../features/emoji/unicode_to_filename.ts | 26 - ...d_name_s.js => unicode_to_unified_name.js} | 0 .../features/emoji/unicode_to_unified_name.ts | 21 - .../features/emoji_reacted_statuses/index.jsx | 114 - .../features/emoji_reactions/index.jsx | 121 - .../features/explore/components/card.jsx | 88 - .../mastodon/features/explore/index.jsx | 8 +- .../mastodon/features/explore/results.jsx | 10 +- .../mastodon/features/explore/statuses.jsx | 1 - .../mastodon/features/explore/suggestions.jsx | 9 +- .../features/favourited_statuses/index.jsx | 6 +- .../mastodon/features/favourites/index.jsx | 4 +- .../features/filters/select_filter.jsx | 2 +- .../mastodon/features/firehose/index.jsx | 50 +- .../components/account_authorize.jsx | 4 +- .../features/follow_requests/index.jsx | 4 +- .../mastodon/features/followed_tags/index.jsx | 2 +- .../mastodon/features/followers/index.jsx | 6 +- .../mastodon/features/following/index.jsx | 8 +- .../components/announcements.jsx | 10 +- .../features/getting_started/index.jsx | 50 +- .../components/column_settings.jsx | 38 +- .../features/hashtag_timeline/index.jsx | 2 +- .../components/column_settings.tsx | 65 +- .../components/explore_prompt.tsx | 46 + .../components/inline_follow_suggestions.jsx | 218 - .../mastodon/features/home_timeline/index.jsx | 55 +- .../features/interaction_modal/index.jsx | 14 +- .../features/keyboard_shortcuts/index.jsx | 8 +- .../list_adder/components/account.jsx | 2 - .../features/list_adder/components/list.jsx | 13 +- .../mastodon/features/list_adder/index.jsx | 2 - .../list_editor/components/account.jsx | 6 +- .../list_editor/components/edit_list_form.jsx | 4 +- .../list_editor/components/search.jsx | 6 +- .../mastodon/features/list_editor/index.jsx | 2 - .../mastodon/features/list_timeline/index.jsx | 107 +- .../lists/components/new_list_form.jsx | 2 - .../mastodon/features/lists/index.jsx | 8 +- .../features/mentioned_users/index.jsx | 90 - .../mastodon/features/mutes/index.jsx | 2 +- .../components/checkbox_with_label.jsx | 31 - .../components/clear_column_button.jsx | 2 +- .../components/column_settings.jsx | 190 +- .../notifications/components/filter_bar.jsx | 33 +- .../filtered_notifications_banner.jsx | 49 - .../components/follow_request.jsx | 4 +- .../components/moderation_warning.tsx | 83 - .../notifications/components/notification.jsx | 191 +- .../components/notification_request.jsx | 65 - .../notifications_permission_banner.jsx | 6 +- .../relationships_severance_event.jsx | 45 - .../containers/column_settings_container.js | 9 +- .../containers/notification_container.js | 17 +- .../mastodon/features/notifications/index.jsx | 14 +- .../features/notifications/request.jsx | 147 - .../features/notifications/requests.jsx | 85 - .../features/onboarding/components/step.jsx | 4 +- .../mastodon/features/onboarding/index.jsx | 92 +- .../mastodon/features/onboarding/profile.jsx | 4 +- .../mastodon/features/onboarding/share.jsx | 4 +- .../picture_in_picture/components/footer.jsx | 23 +- .../picture_in_picture/components/header.jsx | 51 + .../picture_in_picture/components/header.tsx | 46 - .../features/picture_in_picture/index.jsx | 89 + .../features/picture_in_picture/index.tsx | 79 - .../features/pinned_statuses/index.jsx | 2 +- .../components/column_settings.jsx | 12 +- .../features/public_timeline/index.jsx | 2 +- .../components/reaction_emoji.jsx | 84 - .../mastodon/features/reaction_deck/index.jsx | 174 - .../mastodon/features/reblogs/index.jsx | 2 +- .../features/report/components/option.jsx | 2 +- .../report/components/status_check_box.jsx | 2 +- .../features/standalone/compose/index.jsx | 32 +- .../features/status/components/action_bar.jsx | 165 +- .../features/status/components/card.jsx | 12 +- .../status/components/detailed_status.jsx | 148 +- .../containers/detailed_status_container.js | 21 +- .../mastodon/features/status/index.jsx | 140 +- .../features/status_references/index.jsx | 97 - .../subscribed_languages_modal/index.jsx | 2 +- .../features/ui/components/block_modal.jsx | 174 +- .../features/ui/components/boost_modal.jsx | 125 + .../features/ui/components/boost_modal.tsx | 164 - .../ui/components/bundle_modal_error.jsx | 2 +- .../features/ui/components/column_link.jsx | 18 +- .../features/ui/components/columns_area.jsx | 10 - .../ui/components/compare_history_modal.jsx | 2 +- .../features/ui/components/compose_panel.jsx | 6 +- .../ui/components/domain_block_modal.jsx | 106 - .../features/ui/components/embed_modal.jsx | 2 +- .../features/ui/components/filter_modal.jsx | 2 +- .../ui/components/focal_point_modal.jsx | 6 +- .../follow_requests_column_link.jsx | 55 + .../features/ui/components/header.jsx | 10 +- .../features/ui/components/image_modal.jsx | 2 +- .../features/ui/components/list_panel.jsx | 72 +- .../features/ui/components/media_modal.jsx | 6 +- .../features/ui/components/modal_root.jsx | 14 +- .../features/ui/components/mute_modal.jsx | 229 +- .../ui/components/navigation_panel.jsx | 172 +- .../components/notifications_counter_icon.js | 13 + .../features/ui/components/report_modal.jsx | 2 +- .../features/ui/components/zoomable_image.jsx | 4 +- .../ui/containers/status_list_container.js | 2 +- app/javascript/mastodon/features/ui/index.jsx | 53 +- .../features/ui/util/async-components.js | 80 - .../ui/util/sensitive_media_context.tsx | 28 - .../mastodon/features/video/index.jsx | 16 +- app/javascript/mastodon/initial_state.js | 54 +- app/javascript/mastodon/locales/af.json | 45 +- app/javascript/mastodon/locales/an.json | 34 + app/javascript/mastodon/locales/ar.json | 155 +- app/javascript/mastodon/locales/ast.json | 52 +- app/javascript/mastodon/locales/be.json | 129 +- app/javascript/mastodon/locales/bg.json | 174 +- app/javascript/mastodon/locales/bn.json | 29 + app/javascript/mastodon/locales/br.json | 83 +- app/javascript/mastodon/locales/bs.json | 3 + app/javascript/mastodon/locales/ca.json | 146 +- app/javascript/mastodon/locales/ckb.json | 73 +- app/javascript/mastodon/locales/co.json | 27 + app/javascript/mastodon/locales/cs.json | 176 +- app/javascript/mastodon/locales/cy.json | 140 +- app/javascript/mastodon/locales/da.json | 140 +- app/javascript/mastodon/locales/de.json | 160 +- app/javascript/mastodon/locales/el.json | 69 +- app/javascript/mastodon/locales/en-GB.json | 146 +- app/javascript/mastodon/locales/en.json | 317 +- app/javascript/mastodon/locales/eo.json | 40 +- app/javascript/mastodon/locales/es-AR.json | 148 +- app/javascript/mastodon/locales/es-MX.json | 142 +- app/javascript/mastodon/locales/es.json | 170 +- app/javascript/mastodon/locales/et.json | 134 +- app/javascript/mastodon/locales/eu.json | 156 +- app/javascript/mastodon/locales/fa.json | 83 +- app/javascript/mastodon/locales/fi.json | 288 +- app/javascript/mastodon/locales/fil.json | 182 +- app/javascript/mastodon/locales/fo.json | 152 +- app/javascript/mastodon/locales/fr-CA.json | 128 +- app/javascript/mastodon/locales/fr.json | 134 +- app/javascript/mastodon/locales/fy.json | 95 +- app/javascript/mastodon/locales/ga.json | 33 +- app/javascript/mastodon/locales/gd.json | 155 +- app/javascript/mastodon/locales/gl.json | 178 +- app/javascript/mastodon/locales/he.json | 146 +- app/javascript/mastodon/locales/hi.json | 91 +- app/javascript/mastodon/locales/hr.json | 32 + app/javascript/mastodon/locales/hu.json | 180 +- app/javascript/mastodon/locales/hy.json | 32 + app/javascript/mastodon/locales/ia.json | 602 +- app/javascript/mastodon/locales/id.json | 92 +- app/javascript/mastodon/locales/ie.json | 140 +- app/javascript/mastodon/locales/ig.json | 16 +- app/javascript/mastodon/locales/io.json | 38 + app/javascript/mastodon/locales/is.json | 142 +- app/javascript/mastodon/locales/it.json | 166 +- app/javascript/mastodon/locales/ja.json | 302 +- app/javascript/mastodon/locales/ka.json | 16 + app/javascript/mastodon/locales/kab.json | 247 +- app/javascript/mastodon/locales/kk.json | 24 + app/javascript/mastodon/locales/kn.json | 5 + app/javascript/mastodon/locales/ko.json | 152 +- app/javascript/mastodon/locales/ku.json | 34 + app/javascript/mastodon/locales/kw.json | 27 + app/javascript/mastodon/locales/la.json | 8 + app/javascript/mastodon/locales/lad.json | 230 +- app/javascript/mastodon/locales/lt.json | 728 +- app/javascript/mastodon/locales/lv.json | 295 +- app/javascript/mastodon/locales/mk.json | 19 + app/javascript/mastodon/locales/ml.json | 19 + app/javascript/mastodon/locales/mr.json | 10 + app/javascript/mastodon/locales/ms.json | 73 +- app/javascript/mastodon/locales/my.json | 38 + app/javascript/mastodon/locales/ne.json | 15 +- app/javascript/mastodon/locales/nl.json | 166 +- app/javascript/mastodon/locales/nn.json | 194 +- app/javascript/mastodon/locales/no.json | 52 +- app/javascript/mastodon/locales/oc.json | 49 +- app/javascript/mastodon/locales/pa.json | 53 +- app/javascript/mastodon/locales/pl.json | 133 +- app/javascript/mastodon/locales/pt-BR.json | 145 +- app/javascript/mastodon/locales/pt-PT.json | 138 +- app/javascript/mastodon/locales/ro.json | 64 +- app/javascript/mastodon/locales/ru.json | 117 +- app/javascript/mastodon/locales/ry.json | 81 +- app/javascript/mastodon/locales/sa.json | 33 + app/javascript/mastodon/locales/sc.json | 29 + app/javascript/mastodon/locales/sco.json | 34 + app/javascript/mastodon/locales/si.json | 30 + app/javascript/mastodon/locales/sk.json | 1105 ++- app/javascript/mastodon/locales/sl.json | 139 +- app/javascript/mastodon/locales/sq.json | 142 +- app/javascript/mastodon/locales/sr-Latn.json | 178 +- app/javascript/mastodon/locales/sr.json | 142 +- app/javascript/mastodon/locales/sv.json | 146 +- app/javascript/mastodon/locales/szl.json | 3 + app/javascript/mastodon/locales/ta.json | 27 + app/javascript/mastodon/locales/tai.json | 37 +- app/javascript/mastodon/locales/te.json | 20 + app/javascript/mastodon/locales/th.json | 152 +- app/javascript/mastodon/locales/tok.json | 405 - app/javascript/mastodon/locales/tr.json | 156 +- app/javascript/mastodon/locales/tt.json | 32 +- app/javascript/mastodon/locales/ug.json | 3 + app/javascript/mastodon/locales/uk.json | 140 +- app/javascript/mastodon/locales/ur.json | 24 + app/javascript/mastodon/locales/uz.json | 23 + app/javascript/mastodon/locales/vi.json | 140 +- app/javascript/mastodon/locales/zgh.json | 9 + app/javascript/mastodon/locales/zh-CN.json | 144 +- app/javascript/mastodon/locales/zh-HK.json | 141 +- app/javascript/mastodon/locales/zh-TW.json | 190 +- app/javascript/mastodon/models/account.ts | 35 - .../mastodon/models/custom_emoji.ts | 5 - app/javascript/mastodon/models/status.ts | 4 - app/javascript/mastodon/reducers/accounts.ts | 22 +- .../mastodon/reducers/antenna_adder.js | 58 - .../mastodon/reducers/antenna_editor.js | 116 - app/javascript/mastodon/reducers/antennas.js | 106 - app/javascript/mastodon/reducers/blocks.js | 22 + .../mastodon/reducers/bookmark_categories.js | 127 - .../reducers/bookmark_category_adder.js | 53 - .../reducers/bookmark_category_editor.js | 67 - app/javascript/mastodon/reducers/boosts.js | 25 + .../mastodon/reducers/circle_adder.js | 48 - .../mastodon/reducers/circle_editor.js | 99 - app/javascript/mastodon/reducers/circles.js | 105 - app/javascript/mastodon/reducers/compose.js | 193 +- app/javascript/mastodon/reducers/contexts.js | 39 +- app/javascript/mastodon/reducers/filters.js | 2 - app/javascript/mastodon/reducers/index.ts | 38 +- .../mastodon/reducers/list_adder.js | 2 - .../mastodon/reducers/list_editor.js | 2 - app/javascript/mastodon/reducers/lists.js | 2 - app/javascript/mastodon/reducers/markers.js | 26 + app/javascript/mastodon/reducers/markers.ts | 18 - app/javascript/mastodon/reducers/mutes.js | 31 + .../mastodon/reducers/notification_policy.js | 12 - .../reducers/notification_requests.js | 96 - .../mastodon/reducers/notifications.js | 12 +- .../mastodon/reducers/picture_in_picture.js | 26 + .../mastodon/reducers/picture_in_picture.ts | 56 - .../mastodon/reducers/reaction_deck.js | 13 - app/javascript/mastodon/reducers/search.js | 3 +- app/javascript/mastodon/reducers/settings.js | 33 +- .../mastodon/reducers/status_lists.js | 42 +- app/javascript/mastodon/reducers/statuses.js | 42 +- .../mastodon/reducers/suggestions.js | 6 +- app/javascript/mastodon/reducers/timelines.js | 31 +- .../mastodon/reducers/user_lists.js | 59 - app/javascript/mastodon/selectors/index.js | 36 +- .../mastodon/store/middlewares/errors.ts | 30 +- .../mastodon/store/middlewares/loading_bar.ts | 4 +- .../mastodon/store/middlewares/sounds.ts | 3 +- .../mastodon/store/typed_functions.ts | 13 +- app/javascript/mastodon/stream.js | 2 - app/javascript/mastodon/test_helpers.tsx | 2 +- .../__tests__/{html-test.ts => html-test.s} | 4 +- .../mastodon/utils/__tests__/numbers.ts | 24 - app/javascript/mastodon/utils/filters.ts | 3 +- app/javascript/mastodon/utils/log_out.ts | 15 +- app/javascript/mastodon/utils/mentions.ts | 29 - app/javascript/mastodon/utils/numbers.ts | 8 - app/javascript/mastodon/uuid.ts | 3 +- .../400-20px/bar_chart_4_bars-fill.svg | 1 - .../400-20px/bar_chart_4_bars.svg | 1 - .../material-icons/400-20px/close-fill.svg | 1 - .../material-icons/400-20px/close.svg | 1 - .../material-icons/400-20px/mood-fill.svg | 1 - .../material-icons/400-20px/mood.svg | 1 - .../400-20px/photo_library-fill.svg | 1 - .../material-icons/400-20px/photo_library.svg | 1 - .../material-icons/400-20px/settings-fill.svg | 1 - .../material-icons/400-20px/settings.svg | 1 - .../material-icons/400-20px/warning-fill.svg | 1 - .../material-icons/400-20px/warning.svg | 1 - .../material-icons/400-24px/badge-fill.svg | 1 - .../material-icons/400-24px/badge.svg | 1 - .../400-24px/bar_chart_4_bars-fill.svg | 1 - .../400-24px/bar_chart_4_bars.svg | 1 - .../material-icons/400-24px/cloud-fill.svg | 1 - .../material-icons/400-24px/cloud.svg | 1 - .../400-24px/compare_arrows-fill.svg | 1 - .../400-24px/compare_arrows.svg | 1 - .../400-24px/dangerous-fill.svg | 1 - .../material-icons/400-24px/dangerous.svg | 1 - .../material-icons/400-24px/dns-fill.svg | 1 - .../material-icons/400-24px/dns.svg | 1 - .../400-24px/domain_disabled-fill.svg | 1 - .../400-24px/domain_disabled.svg | 1 - .../material-icons/400-24px/explore-fill.svg | 1 - .../material-icons/400-24px/explore.svg | 1 - .../400-24px/format_quote-fill.svg | 1 - .../material-icons/400-24px/format_quote.svg | 1 - .../material-icons/400-24px/gavel-fill.svg | 1 - .../material-icons/400-24px/gavel.svg | 1 - .../material-icons/400-24px/globe-fill.svg | 1 - .../material-icons/400-24px/globe.svg | 1 - .../400-24px/heart_broken-fill.svg | 1 - .../material-icons/400-24px/heart_broken.svg | 1 - .../material-icons/400-24px/history-fill.svg | 1 - .../material-icons/400-24px/history.svg | 1 - .../400-24px/inventory_2-fill.svg | 1 - .../material-icons/400-24px/inventory_2.svg | 1 - .../material-icons/400-24px/key-fill.svg | 1 - .../material-icons/400-24px/key.svg | 1 - .../material-icons/400-24px/link_off-fill.svg | 1 - .../material-icons/400-24px/link_off.svg | 1 - .../material-icons/400-24px/markdown-fill.svg | 1 - .../material-icons/400-24px/markdown.svg | 1 - .../material-icons/400-24px/mood-fill.svg | 1 - .../material-icons/400-24px/mood.svg | 1 - .../400-24px/navigate_before-fill.svg | 1 - .../400-24px/navigate_before.svg | 1 - .../400-24px/navigate_next-fill.svg | 1 - .../material-icons/400-24px/navigate_next.svg | 1 - .../400-24px/no_encryption-fill.svg | 1 - .../material-icons/400-24px/no_encryption.svg | 1 - .../400-24px/person_remove-fill.svg | 1 - .../material-icons/400-24px/person_remove.svg | 1 - .../400-24px/photo_library-fill.svg | 1 - .../material-icons/400-24px/photo_library.svg | 1 - .../400-24px/quiet_time-fill.svg | 1 - .../material-icons/400-24px/quiet_time.svg | 1 - .../material-icons/400-24px/shield-fill.svg | 1 - .../material-icons/400-24px/shield.svg | 1 - .../material-icons/400-24px/star-fill.svg | 2 +- .../material-icons/400-24px/star.svg | 2 +- .../400-24px/sticky_note-fill.svg | 1 - .../material-icons/400-24px/sticky_note.svg | 1 - .../material-icons/400-24px/timer-fill.svg | 1 - .../material-icons/400-24px/timer.svg | 1 - .../material-icons/400-24px/title-fill.svg | 1 - .../material-icons/400-24px/title.svg | 1 - .../400-24px/translate-fill.svg | 1 - .../material-icons/400-24px/translate.svg | 1 - .../material-icons/400-24px/warning-fill.svg | 1 - .../material-icons/400-24px/warning.svg | 1 - .../material-icons/400-24px/wifi-fill.svg | 1 - .../material-icons/400-24px/wifi.svg | 1 - app/javascript/packs/admin.jsx | 248 + .../application.ts => packs/application.js} | 4 +- .../{entrypoints/error.ts => packs/error.js} | 6 +- .../{entrypoints/inert.ts => packs/inert.js} | 0 .../mailer.ts => packs/mailer.js} | 0 .../public-path.ts => packs/public-path.js} | 10 +- app/javascript/packs/public.jsx | 286 + .../remote_interaction_helper.ts | 0 .../share.tsx => packs/share.jsx} | 20 +- app/javascript/packs/sign_up.js | 42 + .../packs/two_factor_authentication.js | 119 + app/javascript/styles/contrast/diff.scss | 37 +- app/javascript/styles/contrast/variables.scss | 3 - app/javascript/styles/fonts/inter.scss | 8 - app/javascript/styles/full-dark.scss | 3 - app/javascript/styles/full-dark/diff.scss | 38 - .../styles/full-dark/variables.scss | 11 - app/javascript/styles/mailer.scss | 1425 ++- .../styles/mastodon-light/diff.scss | 272 +- .../styles/mastodon-light/variables.scss | 16 +- app/javascript/styles/mastodon/_mixins.scss | 5 +- app/javascript/styles/mastodon/about.scss | 22 +- app/javascript/styles/mastodon/accounts.scss | 20 +- app/javascript/styles/mastodon/admin.scss | 63 +- app/javascript/styles/mastodon/basics.scss | 2 +- .../styles/mastodon/components.scss | 3238 ++----- .../styles/mastodon/containers.scss | 82 +- .../styles/mastodon/emoji_picker.scss | 51 +- app/javascript/styles/mastodon/forms.scss | 25 +- app/javascript/styles/mastodon/modal.scss | 2 +- app/javascript/styles/mastodon/polls.scss | 125 +- app/javascript/styles/mastodon/rich_text.scss | 47 +- app/javascript/styles/mastodon/tables.scss | 3 +- app/javascript/styles/mastodon/variables.scss | 25 +- app/javascript/styles/mastodon/widgets.scss | 3 +- app/javascript/svg-icons/repeat_active.svg | 4 - app/javascript/svg-icons/repeat_disabled.svg | 0 app/javascript/svg-icons/repeat_private.svg | 0 .../svg-icons/repeat_private_active.svg | 6 - app/lib/access_token_extension.rb | 2 - app/lib/account_statuses_filter.rb | 43 +- app/lib/activity_tracker.rb | 2 +- app/lib/activitypub/activity.rb | 7 +- app/lib/activitypub/activity/accept.rb | 13 - app/lib/activitypub/activity/announce.rb | 3 - app/lib/activitypub/activity/create.rb | 245 +- app/lib/activitypub/activity/delete.rb | 14 - app/lib/activitypub/activity/follow.rb | 62 +- app/lib/activitypub/activity/like.rb | 165 +- app/lib/activitypub/activity/reject.rb | 13 - app/lib/activitypub/activity/undo.rb | 73 +- app/lib/activitypub/activity/update.rb | 10 - app/lib/activitypub/case_transform.rb | 11 +- app/lib/activitypub/linked_data_signature.rb | 2 +- .../activitypub/parser/custom_emoji_parser.rb | 12 - app/lib/activitypub/parser/status_parser.rb | 115 +- app/lib/activitypub/tag_manager.rb | 130 +- app/lib/admin/metrics/dimension.rb | 20 +- .../dimension/instance_languages_dimension.rb | 4 +- .../metrics/dimension/servers_dimension.rb | 4 +- .../dimension/software_versions_dimension.rb | 7 +- .../dimension/tag_languages_dimension.rb | 4 +- .../dimension/tag_servers_dimension.rb | 4 +- app/lib/admin/metrics/measure.rb | 30 +- .../instance_media_attachments_measure.rb | 2 +- .../measure/instance_statuses_measure.rb | 4 +- .../metrics/measure/tag_servers_measure.rb | 25 +- .../admin/system_check/media_privacy_check.rb | 2 +- .../system_check/sidekiq_process_check.rb | 1 - app/lib/annual_report.rb | 43 - app/lib/annual_report/archetype.rb | 49 - .../commonly_interacted_with_accounts.rb | 22 - .../annual_report/most_reblogged_accounts.rb | 22 - app/lib/annual_report/most_used_apps.rb | 22 - app/lib/annual_report/percentiles.rb | 62 - app/lib/annual_report/source.rb | 16 - app/lib/annual_report/time_series.rb | 30 - app/lib/annual_report/top_hashtags.rb | 22 - app/lib/annual_report/top_statuses.rb | 21 - app/lib/annual_report/type_distribution.rb | 20 - app/lib/application_extension.rb | 20 - app/lib/attachment_batch.rb | 2 +- app/lib/chewy_config.rb | 59 - app/lib/delivery_failure_tracker.rb | 2 +- app/lib/emoji_formatter.rb | 7 +- app/lib/entity_cache.rb | 2 - app/lib/feed_manager.rb | 101 +- app/lib/importer/base_importer.rb | 5 +- .../public_statuses_index_importer.rb | 5 +- app/lib/importer/statuses_index_importer.rb | 17 +- app/lib/inline_renderer.rb | 5 - app/lib/link_details_extractor.rb | 4 +- app/lib/permalink_redirector.rb | 63 +- app/lib/rate_limiter.rb | 5 - app/lib/search_query_transformer.rb | 255 +- app/lib/signature_parser.rb | 40 - app/lib/status_cache_hydrator.rb | 38 +- app/lib/status_filter.rb | 5 +- app/lib/status_reach_finder.rb | 141 +- app/lib/suspicious_sign_in_detector.rb | 2 +- app/lib/text_formatter.rb | 70 +- app/lib/themes.rb | 7 +- app/lib/vacuum/feeds_vacuum.rb | 13 +- app/lib/vacuum/imports_vacuum.rb | 2 +- app/lib/vacuum/list_statuses_vacuum.rb | 17 - app/lib/vacuum/media_attachments_vacuum.rb | 10 +- app/lib/vacuum/ng_histories_vacuum.rb | 18 - app/lib/vacuum/statuses_vacuum.rb | 21 +- app/lib/video_metadata_extractor.rb | 2 +- app/mailers/admin_mailer.rb | 18 - app/mailers/notification_mailer.rb | 2 - app/mailers/user_mailer.rb | 23 +- app/models/account.rb | 98 +- app/models/account_filter.rb | 2 - app/models/account_moderation_note.rb | 4 +- app/models/account_note.rb | 4 +- .../account_relationship_severance_event.rb | 41 - app/models/account_stat.rb | 3 - app/models/account_statuses_cleanup_policy.rb | 17 +- app/models/account_suggestions.rb | 6 +- .../friends_of_friends_source.rb | 15 +- .../account_suggestions/global_source.rb | 2 +- .../account_suggestions/setting_source.rb | 2 +- .../similar_profiles_source.rb | 5 +- app/models/account_suggestions/source.rb | 4 - app/models/account_suggestions/suggestion.rb | 2 +- app/models/account_summary.rb | 16 +- app/models/account_warning.rb | 9 +- app/models/admin/account_action.rb | 9 +- app/models/admin/action_log_filter.rb | 6 +- app/models/admin/import.rb | 12 +- app/models/admin/ng_rule.rb | 206 - app/models/admin/ng_word.rb | 114 - app/models/admin/sensitive_word.rb | 34 - app/models/admin/status_batch_action.rb | 52 +- app/models/admin/status_filter.rb | 2 +- app/models/announcement.rb | 53 +- app/models/antenna.rb | 132 - app/models/antenna_account.rb | 27 - app/models/antenna_domain.rb | 26 - app/models/antenna_feed.rb | 7 - app/models/antenna_tag.rb | 27 - app/models/appeal.rb | 7 +- app/models/application_record.rb | 6 - app/models/bookmark_category.rb | 29 - app/models/bookmark_category_status.rb | 38 - app/models/bulk_import.rb | 10 +- app/models/canonical_email_block.rb | 1 - app/models/circle.rb | 31 - app/models/circle_account.rb | 39 - app/models/circle_status.rb | 26 - app/models/concerns/account/associations.rb | 28 +- app/models/concerns/account/counters.rb | 55 +- app/models/concerns/account/finder_concern.rb | 4 +- app/models/concerns/account/interactions.rb | 78 +- .../concerns/account/master_settings.rb | 28 - app/models/concerns/account/merging.rb | 22 - app/models/concerns/account/other_settings.rb | 102 - app/models/concerns/account/search.rb | 31 +- .../concerns/account/statuses_search.rb | 2 +- app/models/concerns/browser_detection.rb | 27 - app/models/concerns/cacheable.rb | 4 - app/models/concerns/custom_filter_cache.rb | 17 - app/models/concerns/database_view_record.rb | 25 - app/models/concerns/domain_normalizable.rb | 12 - app/models/concerns/legacy_otp_secret.rb | 77 - app/models/concerns/ranked_trend.rb | 29 - .../concerns/status/domain_block_concern.rb | 18 - app/models/concerns/status/search_concern.rb | 50 +- .../concerns/status/snapshot_concern.rb | 1 - .../concerns/status/threading_concern.rb | 38 +- app/models/concerns/user/has_settings.rb | 188 +- .../concerns/user/ldap_authenticable.rb | 12 +- app/models/concerns/user/omniauthable.rb | 54 +- app/models/concerns/user/pam_authenticable.rb | 1 + app/models/context.rb | 2 +- app/models/conversation.rb | 15 +- app/models/custom_emoji.rb | 54 +- app/models/custom_filter.rb | 80 +- app/models/custom_filter_keyword.rb | 22 +- app/models/custom_filter_status.rb | 14 +- app/models/domain_allow.rb | 2 + app/models/domain_block.rb | 95 +- app/models/email_domain_block.rb | 8 +- app/models/emoji_reaction.rb | 86 - app/models/favourite.rb | 3 - app/models/featured_tag.rb | 16 +- app/models/feed.rb | 2 +- app/models/follow_recommendation.rb | 10 +- app/models/follow_request.rb | 2 +- app/models/form/account_batch.rb | 48 - app/models/form/admin_settings.rb | 65 - app/models/form/import.rb | 8 +- app/models/friend_domain.rb | 179 - app/models/generated_annual_report.rb | 37 - app/models/identity.rb | 2 +- app/models/import.rb | 4 +- app/models/instance.rb | 29 +- app/models/instance_info.rb | 100 - app/models/invite.rb | 4 +- app/models/ip_block.rb | 4 +- app/models/list.rb | 6 +- app/models/list_status.rb | 21 - app/models/login_activity.rb | 16 +- app/models/media_attachment.rb | 29 +- app/models/mention.rb | 2 - app/models/ng_rule.rb | 114 - app/models/ng_rule_history.rb | 35 - app/models/ng_word.rb | 88 - app/models/ngword_history.rb | 22 - app/models/notification.rb | 109 +- app/models/notification_permission.rb | 16 - app/models/notification_policy.rb | 36 - app/models/notification_request.rb | 53 - app/models/pending_follow_request.rb | 19 - app/models/pending_status.rb | 18 - app/models/poll.rb | 9 +- app/models/preview_card.rb | 6 +- app/models/preview_card_provider.rb | 2 +- app/models/preview_card_trend.rb | 4 - app/models/privacy_policy.rb | 61 +- app/models/public_feed.rb | 26 +- app/models/relationship_filter.rb | 2 +- app/models/relationship_severance_event.rb | 56 - app/models/relay.rb | 2 +- app/models/report.rb | 23 +- app/models/report_note.rb | 4 +- app/models/rule.rb | 5 +- app/models/scheduled_expiration_status.rb | 36 - app/models/sensitive_word.rb | 92 - app/models/session_activation.rb | 21 +- app/models/severed_relationship.rb | 41 - app/models/site_upload.rb | 25 +- app/models/software_update.rb | 10 +- app/models/specified_domain.rb | 78 - app/models/status.rb | 301 +- app/models/status_capability_token.rb | 25 - app/models/status_edit.rb | 3 +- app/models/status_reference.rb | 48 - app/models/status_stat.rb | 34 +- app/models/status_trend.rb | 2 - app/models/tag.rb | 12 +- app/models/tag_feed.rb | 10 +- app/models/trends/links.rb | 6 +- app/models/trends/statuses.rb | 18 +- app/models/trends/tags.rb | 3 +- app/models/user.rb | 124 +- app/models/user_invite_request.rb | 4 +- app/models/user_ip.rb | 6 +- app/models/user_role.rb | 27 +- app/models/user_settings.rb | 60 +- app/models/user_settings/dsl.rb | 4 - app/models/user_settings/namespace.rb | 8 - app/models/user_settings/setting.rb | 20 - app/policies/account_policy.rb | 8 - app/policies/admin/status_policy.rb | 2 +- app/policies/friend_server_policy.rb | 7 - app/policies/ng_words_policy.rb | 11 - app/policies/sensitive_words_policy.rb | 11 - app/policies/status_policy.rb | 67 +- .../activitypub/activity_presenter.rb | 8 +- app/presenters/annual_reports_presenter.rb | 23 - .../emoji_reaction_accounts_presenter.rb | 22 - app/presenters/initial_state_presenter.rb | 2 +- app/presenters/instance_presenter.rb | 12 - app/presenters/oauth_metadata_presenter.rb | 67 - .../status_relationships_presenter.rb | 55 +- .../activity_for_friend_serializer.rb | 22 - .../activity_for_misskey_serializer.rb | 22 - .../activitypub/actor_serializer.rb | 33 +- .../activitypub/context_serializer.rb | 21 - .../activitypub/emoji_reaction_serializer.rb | 35 - .../activitypub/emoji_serializer.rb | 10 +- .../activitypub/note_for_friend_serializer.rb | 11 - .../note_for_misskey_serializer.rb | 7 - .../activitypub/note_serializer.rb | 67 +- .../undo_emoji_reaction_serializer.rb | 23 - app/serializers/initial_state_serializer.rb | 52 +- app/serializers/manifest_serializer.rb | 20 +- app/serializers/node_info/serializer.rb | 11 +- app/serializers/oauth_metadata_serializer.rb | 9 - ...relationship_severance_event_serializer.rb | 9 - app/serializers/rest/account_serializer.rb | 38 +- .../rest/account_warning_serializer.rb | 16 - .../rest/admin/domain_block_serializer.rb | 10 +- .../rest/announcement_serializer.rb | 16 +- .../rest/annual_report_serializer.rb | 5 - .../rest/annual_reports_serializer.rb | 7 - app/serializers/rest/antenna_serializer.rb | 35 - app/serializers/rest/appeal_serializer.rb | 15 - .../rest/bookmark_category_serializer.rb | 9 - app/serializers/rest/circle_serializer.rb | 9 - app/serializers/rest/context_serializer.rb | 1 - .../rest/credential_account_serializer.rb | 1 - .../rest/custom_emoji_serializer.rb | 27 +- .../rest/custom_emoji_slim_serializer.rb | 59 - .../rest/domain_block_serializer.rb | 10 +- .../rest/emoji_reaction_account_serializer.rb | 34 - .../rest/emoji_reaction_serializer.rb | 23 - ...ji_reactions_grouped_by_name_serializer.rb | 47 - app/serializers/rest/filter_serializer.rb | 12 +- app/serializers/rest/instance_serializer.rb | 36 +- app/serializers/rest/list_serializer.rb | 16 +- app/serializers/rest/marker_serializer.rb | 2 - .../rest/media_attachment_serializer.rb | 2 - .../rest/notification_policy_serializer.rb | 16 - .../rest/notification_request_serializer.rb | 16 - .../rest/notification_serializer.rb | 26 +- .../rest/notify_emoji_reaction_serializer.rb | 63 - app/serializers/rest/poll_serializer.rb | 4 +- .../rest/preferences_serializer.rb | 10 - app/serializers/rest/rule_serializer.rb | 2 +- .../rest/status_edit_serializer.rb | 4 +- .../rest/status_internal_serializer.rb | 9 - app/serializers/rest/status_serializer.rb | 112 +- app/serializers/rest/suggestion_serializer.rb | 15 +- app/serializers/rest/tag_serializer.rb | 2 +- app/serializers/rest/v1/filter_serializer.rb | 6 +- .../rest/v1/instance_serializer.rb | 34 +- .../accept_notification_request_service.rb | 8 - app/services/account_search_service.rb | 32 +- .../activate_follow_requests_service.rb | 32 - .../activate_remote_statuses_service.rb | 31 - .../fetch_featured_collection_service.rb | 4 +- .../activitypub/fetch_references_service.rb | 49 - .../fetch_remote_account_service.rb | 2 +- .../activitypub/fetch_remote_actor_service.rb | 6 +- .../activitypub/fetch_remote_key_service.rb | 17 +- .../fetch_remote_status_service.rb | 10 +- .../activitypub/fetch_replies_service.rb | 19 +- .../activitypub/process_account_service.rb | 164 +- .../activitypub/process_collection_service.rb | 6 +- .../process_status_update_service.rb | 124 +- .../synchronize_followers_service.rb | 4 +- ...after_block_domain_from_account_service.rb | 28 +- app/services/after_block_service.rb | 5 - app/services/approve_appeal_service.rb | 11 +- app/services/backup_service.rb | 2 +- app/services/batched_remove_status_service.rb | 9 - app/services/block_domain_service.rb | 30 +- app/services/block_service.rb | 2 - app/services/bulk_import_row_service.rb | 11 +- app/services/concerns/account_scope.rb | 41 - app/services/concerns/payloadable.rb | 4 +- app/services/delete_account_service.rb | 51 - app/services/delivery_antenna_service.rb | 186 - app/services/emoji_react_service.rb | 85 - app/services/fan_out_on_write_service.rb | 73 +- app/services/favourite_service.rb | 3 - app/services/fetch_link_card_service.rb | 24 +- app/services/fetch_resource_service.rb | 12 +- app/services/follow_service.rb | 5 +- app/services/group_reblog_service.rb | 19 - app/services/keys/query_service.rb | 2 +- app/services/notify_service.rb | 282 +- app/services/post_status_service.rb | 178 +- app/services/process_conversation_service.rb | 33 - app/services/process_mentions_service.rb | 32 +- app/services/process_references_service.rb | 254 - app/services/purge_domain_service.rb | 22 +- app/services/reblog_service.rb | 11 +- app/services/remove_status_service.rb | 41 +- app/services/report_service.rb | 2 +- app/services/search_service.rb | 4 +- app/services/searchability_update_service.rb | 27 - app/services/software_update_check_service.rb | 12 +- app/services/statuses_search_service.rb | 10 +- app/services/tag_search_service.rb | 54 +- app/services/translate_status_service.rb | 2 +- app/services/un_emoji_react_service.rb | 82 - app/services/update_account_service.rb | 12 +- .../update_status_expiration_service.rb | 32 - app/services/update_status_service.rb | 136 +- app/services/verify_link_service.rb | 2 +- app/services/vote_service.rb | 5 +- app/validators/email_address_validator.rb | 18 - app/validators/emoji_reaction_validator.rb | 40 - app/validators/poll_validator.rb | 2 +- app/validators/reaction_validator.rb | 2 +- app/validators/vote_validator.rb | 2 +- app/views/accounts/show.html.haml | 8 +- app/views/admin/account_actions/new.html.haml | 33 +- .../_account_warning.html.haml | 2 +- app/views/admin/accounts/_buttons.html.haml | 7 +- .../admin/accounts/_local_account.html.haml | 8 +- .../admin/accounts/_remote_account.html.haml | 4 +- app/views/admin/accounts/_user_ip.html.haml | 5 - app/views/admin/accounts/index.html.haml | 62 +- app/views/admin/accounts/show.html.haml | 14 +- app/views/admin/announcements/_form.html.haml | 28 - app/views/admin/announcements/edit.html.haml | 20 +- app/views/admin/announcements/new.html.haml | 19 +- .../custom_emojis/_custom_emoji.html.haml | 7 - app/views/admin/custom_emojis/edit.html.haml | 45 - app/views/admin/custom_emojis/index.html.haml | 23 +- app/views/admin/custom_emojis/new.html.haml | 27 +- app/views/admin/dashboard/index.html.haml | 85 +- .../_domain_block_list.html.haml | 32 - app/views/admin/domain_blocks/_form.html.haml | 54 - .../confirm_suspension.html.haml | 3 +- app/views/admin/domain_blocks/edit.html.haml | 28 +- app/views/admin/domain_blocks/new.html.haml | 28 +- .../admin/email_domain_blocks/index.html.haml | 6 +- .../admin/email_domain_blocks/new.html.haml | 16 +- .../admin/export_domain_allows/new.html.haml | 5 +- .../_domain_block.html.haml | 9 +- .../export_domain_blocks/import.html.haml | 6 +- .../admin/export_domain_blocks/new.html.haml | 5 +- .../follow_recommendations/show.html.haml | 14 +- .../friend_servers/_friend_domain.html.haml | 31 - .../friend_servers/_friend_fields.html.haml | 20 - app/views/admin/friend_servers/edit.html.haml | 32 - .../admin/friend_servers/index.html.haml | 20 - app/views/admin/friend_servers/new.html.haml | 9 - app/views/admin/instances/_instance.html.haml | 4 - app/views/admin/instances/show.html.haml | 67 +- app/views/admin/invites/_invite.html.haml | 2 +- app/views/admin/ip_blocks/index.html.haml | 6 +- app/views/admin/ip_blocks/new.html.haml | 22 +- .../ng_rule_histories/_history.html.haml | 42 - .../admin/ng_rule_histories/show.html.haml | 25 - app/views/admin/ng_rules/_ng_rule.html.haml | 25 - .../admin/ng_rules/_ng_rule_fields.html.haml | 123 - app/views/admin/ng_rules/edit.html.haml | 9 - app/views/admin/ng_rules/index.html.haml | 14 - app/views/admin/ng_rules/new.html.haml | 8 - .../ng_words/keywords/_ng_word.html.haml | 10 - .../admin/ng_words/keywords/show.html.haml | 43 - .../admin/ng_words/settings/show.html.haml | 36 - .../admin/ng_words/shared/_links.html.haml | 6 - .../white_list/_specified_domain.html.haml | 6 - .../admin/ng_words/white_list/show.html.haml | 41 - .../admin/ngword_histories/_history.html.haml | 36 - .../admin/ngword_histories/index.html.haml | 22 - app/views/admin/relationships/index.html.haml | 8 +- app/views/admin/relays/_relay.html.haml | 4 +- app/views/admin/reports/_actions.html.haml | 5 - .../admin/reports/_header_card.html.haml | 8 +- .../reports/_media_attachments.html.haml | 2 +- app/views/admin/reports/_status.html.haml | 6 +- .../admin/reports/actions/preview.html.haml | 2 +- app/views/admin/reports/show.html.haml | 26 +- app/views/admin/roles/_form.html.haml | 27 +- app/views/admin/roles/_role.html.haml | 4 +- app/views/admin/rules/_form.html.haml | 7 - app/views/admin/rules/_rule.html.haml | 2 +- app/views/admin/rules/edit.html.haml | 7 +- app/views/admin/rules/index.html.haml | 7 +- .../sensitive_words/_sensitive_word.html.haml | 12 - .../admin/sensitive_words/show.html.haml | 42 - app/views/admin/settings/about/show.html.haml | 30 +- .../admin/settings/appearance/show.html.haml | 15 +- .../admin/settings/branding/show.html.haml | 46 +- .../settings/content_retention/show.html.haml | 19 +- .../admin/settings/discovery/show.html.haml | 82 +- .../settings/registrations/show.html.haml | 46 +- .../admin/settings/shared/_links.html.haml | 2 +- .../admin/special_domains/show.html.haml | 17 - .../admin/special_instances/show.html.haml | 14 - .../admin/status_edits/_status_edit.html.haml | 48 +- app/views/admin/statuses/index.html.haml | 10 +- app/views/admin/statuses/show.html.haml | 26 +- app/views/admin/tags/show.html.haml | 52 +- app/views/admin/trends/links/index.html.haml | 30 +- .../preview_card_providers/index.html.haml | 14 +- .../admin/trends/statuses/_status.html.haml | 6 +- .../admin/trends/statuses/index.html.haml | 24 +- app/views/admin/trends/tags/_tag.html.haml | 2 +- app/views/admin/trends/tags/index.html.haml | 12 +- app/views/admin/users/roles/show.html.haml | 10 +- .../admin/warning_presets/_form.html.haml | 7 - .../admin/warning_presets/edit.html.haml | 10 +- .../admin/warning_presets/index.html.haml | 10 +- app/views/admin/webhooks/_form.html.haml | 17 +- app/views/admin/webhooks/edit.html.haml | 2 +- app/views/admin/webhooks/new.html.haml | 2 +- .../auto_close_registrations.text.erb | 3 - .../new_critical_software_updates.text.erb | 4 - .../new_pending_friend_server.text.erb | 5 - .../new_software_updates.text.erb | 4 - app/views/antennas/_antenna.html.haml | 77 - app/views/antennas/_antenna_fields.html.haml | 11 - app/views/antennas/edit.html.haml | 9 - app/views/antennas/index.html.haml | 8 - app/views/application/_sidebar.html.haml | 16 - .../application/mailer/_account.html.haml | 30 - .../application/mailer/_button.html.haml | 7 - .../application/mailer/_checklist.html.haml | 37 - .../application/mailer/_feature.html.haml | 30 - .../application/mailer/_follow.html.haml | 15 - app/views/application/mailer/_frame.html.haml | 4 - .../application/mailer/_hashtag.html.haml | 21 - .../application/mailer/_heading.html.haml | 13 - .../confirmations/limitation_error.html.haml | 11 - app/views/auth/registrations/new.html.haml | 4 - app/views/auth/registrations/rules.html.haml | 1 - app/views/filters/_filter_fields.html.haml | 36 +- app/views/follower_accounts/index.html.haml | 3 +- app/views/following_accounts/index.html.haml | 3 +- app/views/home/index.html.haml | 5 +- app/views/layouts/application.html.haml | 20 +- app/views/layouts/embedded.html.haml | 7 +- app/views/layouts/error.html.haml | 2 +- app/views/layouts/mailer.html.haml | 125 +- .../notification_mailer/_status.html.haml | 68 +- .../notification_mailer/favourite.html.haml | 56 +- .../notification_mailer/follow.html.haml | 54 +- .../follow_request.html.haml | 54 +- .../notification_mailer/mention.html.haml | 56 +- .../notification_mailer/reblog.html.haml | 56 +- app/views/redirects/show.html.haml | 8 - app/views/relationships/_account.html.haml | 2 +- .../settings/applications/_fields.html.haml | 1 - app/views/settings/imports/index.html.haml | 4 +- .../preferences/appearance/show.html.haml | 48 +- .../preferences/notifications/show.html.haml | 12 +- .../settings/preferences/other/show.html.haml | 71 +- .../preferences/reaching/show.html.haml | 98 - app/views/settings/privacy/show.html.haml | 29 +- .../settings/privacy_extra/show.html.haml | 55 - app/views/settings/profiles/show.html.haml | 23 +- .../shared/_profile_navigation.html.haml | 1 - .../severed_relationships/index.html.haml | 34 - app/views/shared/_og.html.haml | 2 +- app/views/shared/_web_app.html.haml | 2 +- app/views/statuses/_detailed_status.html.haml | 10 - app/views/statuses/_simple_status.html.haml | 8 - app/views/statuses/show.html.haml | 8 +- app/views/statuses_cleanup/show.html.haml | 64 +- app/views/tags/show.html.haml | 3 +- .../user_mailer/appeal_approved.html.haml | 73 +- .../user_mailer/appeal_rejected.html.haml | 73 +- app/views/user_mailer/backup_ready.html.haml | 69 +- .../confirmation_instructions.html.haml | 94 +- app/views/user_mailer/email_changed.html.haml | 69 +- app/views/user_mailer/failed_2fa.html.haml | 24 - app/views/user_mailer/failed_2fa.text.erb | 15 - .../user_mailer/password_change.html.haml | 50 +- .../reconfirmation_instructions.html.haml | 71 +- .../reset_password_instructions.html.haml | 70 +- .../user_mailer/suspicious_sign_in.html.haml | 95 +- .../user_mailer/two_factor_disabled.html.haml | 53 +- .../user_mailer/two_factor_enabled.html.haml | 53 +- ...wo_factor_recovery_codes_changed.html.haml | 53 +- app/views/user_mailer/warning.html.haml | 136 +- .../webauthn_credential_added.html.haml | 55 +- .../webauthn_credential_deleted.html.haml | 55 +- .../user_mailer/webauthn_disabled.html.haml | 53 +- .../user_mailer/webauthn_enabled.html.haml | 53 +- app/views/user_mailer/welcome.html.haml | 168 +- app/views/user_mailer/welcome.text.erb | 76 +- app/workers/activate_remote_account_worker.rb | 14 - app/workers/activitypub/delivery_worker.rb | 10 +- .../activitypub/distribution_worker.rb | 67 +- .../emoji_reaction_distribution_worker.rb | 41 - .../activitypub/fetch_instance_info_worker.rb | 79 - .../activitypub/fetch_remote_status_worker.rb | 17 - .../forward_conversation_worker.rb | 46 - .../activitypub/raw_distribution_worker.rb | 28 - .../status_update_distribution_worker.rb | 67 +- app/workers/delivery_emoji_reaction_worker.rb | 53 - app/workers/feed_insert_worker.rb | 46 +- app/workers/generate_annual_report_worker.rb | 11 - app/workers/import/relationship_worker.rb | 9 +- app/workers/link_crawl_worker.rb | 2 +- app/workers/move_worker.rb | 2 +- app/workers/process_references_worker.rb | 13 - app/workers/redownload_avatar_worker.rb | 2 +- app/workers/redownload_header_worker.rb | 2 +- app/workers/remove_expired_status_worker.rb | 16 - .../auto_close_registrations_scheduler.rb | 33 - app/workers/scheduler/indexing_scheduler.rb | 2 - .../scheduler/scheduled_statuses_scheduler.rb | 11 - .../scheduler/user_cleanup_scheduler.rb | 7 +- app/workers/scheduler/vacuum_scheduler.rb | 10 - app/workers/searchability_update_worker.rb | 13 - app/workers/unfilter_notifications_worker.rb | 37 - bin/bundle | 110 +- bin/dev | 20 - bin/tootctl | 7 +- config/application.rb | 10 +- config/boot.rb | 11 +- config/deploy.rb | 35 + config/elasticsearch.default-ja-sudachi.yml | 234 - config/elasticsearch.default.yml | 177 - config/environments/development.rb | 5 +- config/environments/production.rb | 11 +- config/environments/test.rb | 3 +- config/imagemagick/policy.xml | 2 +- .../initializers/active_record_encryption.rb | 26 - .../application_controller_renderer.rb | 1 - config/initializers/backtrace_silencers.rb | 2 +- config/initializers/chewy.rb | 9 - .../initializers/content_security_policy.rb | 4 +- config/initializers/devise.rb | 72 +- config/initializers/doorkeeper.rb | 14 +- config/initializers/enable_yjit.rb | 13 - config/initializers/ffmpeg.rb | 5 +- config/initializers/http_client_proxy.rb | 4 +- config/initializers/i18n.rb | 1 - config/initializers/open_redirects.rb | 11 +- config/initializers/opentelemetry.rb | 65 - config/initializers/paperclip.rb | 4 +- config/initializers/premailer_rails.rb | 5 +- config/initializers/propshaft.rb | 7 - config/initializers/rack_attack.rb | 2 +- config/initializers/sidekiq.rb | 1 - config/initializers/simple_cov_source_file.rb | 19 - config/initializers/simple_form.rb | 27 +- config/initializers/stoplight.rb | 4 +- config/initializers/webauthn.rb | 2 +- config/locales/activerecord.el.yml | 4 - config/locales/activerecord.es.yml | 2 +- config/locales/activerecord.eu.yml | 2 +- config/locales/activerecord.fi.yml | 6 +- config/locales/activerecord.ia.yml | 50 - config/locales/activerecord.kab.yml | 2 +- config/locales/activerecord.lad.yml | 2 +- config/locales/activerecord.sk.yml | 12 +- config/locales/activerecord.tok.yml | 14 - config/locales/af.yml | 12 +- config/locales/an.yml | 12 + config/locales/ar.yml | 151 +- config/locales/ast.yml | 25 +- config/locales/be.yml | 103 +- config/locales/bg.yml | 154 +- config/locales/br.yml | 42 +- config/locales/ca.yml | 97 +- config/locales/ckb.yml | 12 +- config/locales/co.yml | 9 + config/locales/cs.yml | 148 +- config/locales/cy.yml | 98 +- config/locales/da.yml | 91 +- config/locales/de.yml | 106 +- config/locales/devise.an.yml | 4 + config/locales/devise.ar.yml | 16 +- config/locales/devise.ast.yml | 4 + config/locales/devise.be.yml | 14 +- config/locales/devise.bg.yml | 24 +- config/locales/devise.bn.yml | 2 + config/locales/devise.br.yml | 6 +- config/locales/devise.ca.yml | 14 +- config/locales/devise.ckb.yml | 4 + config/locales/devise.co.yml | 4 + config/locales/devise.cs.yml | 24 +- config/locales/devise.cy.yml | 14 +- config/locales/devise.da.yml | 14 +- config/locales/devise.de.yml | 20 +- config/locales/devise.el.yml | 13 +- config/locales/devise.en-GB.yml | 14 +- config/locales/devise.en.yml | 15 +- config/locales/devise.eo.yml | 7 +- config/locales/devise.es-AR.yml | 14 +- config/locales/devise.es-MX.yml | 14 +- config/locales/devise.es.yml | 18 +- config/locales/devise.et.yml | 14 +- config/locales/devise.eu.yml | 14 +- config/locales/devise.fa.yml | 88 +- config/locales/devise.fi.yml | 56 +- config/locales/devise.fo.yml | 14 +- config/locales/devise.fr-CA.yml | 14 +- config/locales/devise.fr.yml | 14 +- config/locales/devise.fy.yml | 14 +- config/locales/devise.ga.yml | 14 - config/locales/devise.gd.yml | 14 +- config/locales/devise.gl.yml | 14 +- config/locales/devise.he.yml | 14 +- config/locales/devise.hu.yml | 22 +- config/locales/devise.hy.yml | 4 + config/locales/devise.ia.yml | 67 - config/locales/devise.id.yml | 4 + config/locales/devise.ie.yml | 14 +- config/locales/devise.io.yml | 4 + config/locales/devise.is.yml | 14 +- config/locales/devise.it.yml | 14 +- config/locales/devise.ja.yml | 15 +- config/locales/devise.kab.yml | 14 +- config/locales/devise.kk.yml | 2 + config/locales/devise.ko.yml | 14 +- config/locales/devise.ku.yml | 4 + config/locales/devise.lad.yml | 50 +- config/locales/devise.lt.yml | 22 +- config/locales/devise.lv.yml | 24 +- config/locales/devise.ms.yml | 4 + config/locales/devise.my.yml | 4 + config/locales/devise.nl.yml | 14 +- config/locales/devise.nn.yml | 18 +- config/locales/devise.no.yml | 14 +- config/locales/devise.oc.yml | 4 + config/locales/devise.pl.yml | 14 +- config/locales/devise.pt-BR.yml | 14 +- config/locales/devise.pt-PT.yml | 14 +- config/locales/devise.ro.yml | 13 +- config/locales/devise.ru.yml | 13 +- config/locales/devise.sc.yml | 4 + config/locales/devise.sco.yml | 4 + config/locales/devise.si.yml | 4 + config/locales/devise.sk.yml | 146 +- config/locales/devise.sl.yml | 14 +- config/locales/devise.sq.yml | 14 +- config/locales/devise.sr-Latn.yml | 14 +- config/locales/devise.sr.yml | 14 +- config/locales/devise.sv.yml | 14 +- config/locales/devise.ta.yml | 2 + config/locales/devise.th.yml | 16 +- config/locales/devise.tok.yml | 1 - config/locales/devise.tr.yml | 14 +- config/locales/devise.uk.yml | 14 +- config/locales/devise.vi.yml | 14 +- config/locales/devise.zh-CN.yml | 14 +- config/locales/devise.zh-HK.yml | 14 +- config/locales/devise.zh-TW.yml | 14 +- config/locales/doorkeeper.be.yml | 3 +- config/locales/doorkeeper.bg.yml | 1 - config/locales/doorkeeper.ca.yml | 1 - config/locales/doorkeeper.cs.yml | 3 +- config/locales/doorkeeper.cy.yml | 1 - config/locales/doorkeeper.da.yml | 1 - config/locales/doorkeeper.de.yml | 1 - config/locales/doorkeeper.en-GB.yml | 1 - config/locales/doorkeeper.en.yml | 1 - config/locales/doorkeeper.es-AR.yml | 1 - config/locales/doorkeeper.es-MX.yml | 1 - config/locales/doorkeeper.es.yml | 1 - config/locales/doorkeeper.eu.yml | 3 +- config/locales/doorkeeper.fi.yml | 1 - config/locales/doorkeeper.fo.yml | 1 - config/locales/doorkeeper.fy.yml | 1 - config/locales/doorkeeper.gl.yml | 7 +- config/locales/doorkeeper.he.yml | 1 - config/locales/doorkeeper.hu.yml | 9 +- config/locales/doorkeeper.ia.yml | 65 - config/locales/doorkeeper.ie.yml | 1 - config/locales/doorkeeper.is.yml | 1 - config/locales/doorkeeper.it.yml | 1 - config/locales/doorkeeper.ja.yml | 1 - config/locales/doorkeeper.kab.yml | 26 +- config/locales/doorkeeper.ko.yml | 1 - config/locales/doorkeeper.lad.yml | 2 +- config/locales/doorkeeper.lt.yml | 71 +- config/locales/doorkeeper.lv.yml | 6 +- config/locales/doorkeeper.nl.yml | 3 +- config/locales/doorkeeper.nn.yml | 15 +- config/locales/doorkeeper.pl.yml | 1 - config/locales/doorkeeper.pt-BR.yml | 1 - config/locales/doorkeeper.pt-PT.yml | 1 - config/locales/doorkeeper.sk.yml | 178 +- config/locales/doorkeeper.sl.yml | 1 - config/locales/doorkeeper.sq.yml | 1 - config/locales/doorkeeper.sr-Latn.yml | 1 - config/locales/doorkeeper.sr.yml | 5 +- config/locales/doorkeeper.sv.yml | 1 - config/locales/doorkeeper.th.yml | 15 +- config/locales/doorkeeper.tok.yml | 51 - config/locales/doorkeeper.tr.yml | 11 +- config/locales/doorkeeper.uk.yml | 1 - config/locales/doorkeeper.vi.yml | 5 +- config/locales/doorkeeper.zh-CN.yml | 1 - config/locales/doorkeeper.zh-HK.yml | 1 - config/locales/doorkeeper.zh-TW.yml | 11 +- config/locales/el.yml | 31 +- config/locales/en-GB.yml | 89 +- config/locales/en.yml | 495 +- config/locales/eo.yml | 94 +- config/locales/es-AR.yml | 98 +- config/locales/es-MX.yml | 88 +- config/locales/es.yml | 98 +- config/locales/et.yml | 90 +- config/locales/eu.yml | 106 +- config/locales/fa.yml | 26 +- config/locales/fi.yml | 106 +- config/locales/fo.yml | 94 +- config/locales/fr-CA.yml | 89 +- config/locales/fr.yml | 87 +- config/locales/fy.yml | 82 +- config/locales/ga.yml | 2 + config/locales/gd.yml | 122 +- config/locales/gl.yml | 108 +- config/locales/he.yml | 90 +- config/locales/hi.yml | 9 - config/locales/hr.yml | 2 + config/locales/hu.yml | 194 +- config/locales/hy.yml | 6 + config/locales/ia.yml | 1511 +-- config/locales/id.yml | 12 + config/locales/ie.yml | 88 +- config/locales/io.yml | 12 + config/locales/is.yml | 88 +- config/locales/it.yml | 90 +- config/locales/ja.yml | 484 +- config/locales/ka.yml | 6 + config/locales/kab.yml | 244 +- config/locales/kk.yml | 7 + config/locales/ko.yml | 111 +- config/locales/ku.yml | 12 + config/locales/lad.yml | 192 +- config/locales/lt.yml | 627 +- config/locales/lv.yml | 192 +- config/locales/ml.yml | 2 + config/locales/ms.yml | 12 + config/locales/my.yml | 12 + config/locales/nl.yml | 136 +- config/locales/nn.yml | 184 +- config/locales/no.yml | 114 +- config/locales/oc.yml | 11 + config/locales/pl.yml | 90 +- config/locales/pt-BR.yml | 88 +- config/locales/pt-PT.yml | 88 +- config/locales/ro.yml | 53 +- config/locales/ru.yml | 30 +- config/locales/sc.yml | 9 + config/locales/sco.yml | 12 + config/locales/si.yml | 10 + config/locales/simple_form.af.yml | 2 - config/locales/simple_form.an.yml | 6 + config/locales/simple_form.ar.yml | 16 +- config/locales/simple_form.ast.yml | 15 +- config/locales/simple_form.be.yml | 10 +- config/locales/simple_form.bg.yml | 20 +- config/locales/simple_form.br.yml | 9 +- config/locales/simple_form.ca.yml | 16 +- config/locales/simple_form.ckb.yml | 2 + config/locales/simple_form.co.yml | 2 + config/locales/simple_form.cs.yml | 41 +- config/locales/simple_form.cy.yml | 16 +- config/locales/simple_form.da.yml | 16 +- config/locales/simple_form.de.yml | 18 +- config/locales/simple_form.el.yml | 6 + config/locales/simple_form.en-GB.yml | 16 +- config/locales/simple_form.en.yml | 160 +- config/locales/simple_form.eo.yml | 6 + config/locales/simple_form.es-AR.yml | 16 +- config/locales/simple_form.es-MX.yml | 16 +- config/locales/simple_form.es.yml | 28 +- config/locales/simple_form.et.yml | 10 +- config/locales/simple_form.eu.yml | 22 +- config/locales/simple_form.fa.yml | 8 +- config/locales/simple_form.fi.yml | 84 +- config/locales/simple_form.fo.yml | 16 +- config/locales/simple_form.fr-CA.yml | 10 +- config/locales/simple_form.fr.yml | 10 +- config/locales/simple_form.fy.yml | 14 +- config/locales/simple_form.gd.yml | 18 +- config/locales/simple_form.gl.yml | 16 +- config/locales/simple_form.he.yml | 16 +- config/locales/simple_form.hr.yml | 2 + config/locales/simple_form.hu.yml | 34 +- config/locales/simple_form.hy.yml | 2 + config/locales/simple_form.ia.yml | 292 - config/locales/simple_form.id.yml | 6 + config/locales/simple_form.ie.yml | 16 +- config/locales/simple_form.io.yml | 6 + config/locales/simple_form.is.yml | 16 +- config/locales/simple_form.it.yml | 16 +- config/locales/simple_form.ja.yml | 158 +- config/locales/simple_form.ka.yml | 2 + config/locales/simple_form.kab.yml | 30 +- config/locales/simple_form.ko.yml | 20 +- config/locales/simple_form.ku.yml | 6 + config/locales/simple_form.lad.yml | 12 +- config/locales/simple_form.lt.yml | 45 +- config/locales/simple_form.lv.yml | 26 +- config/locales/simple_form.ms.yml | 6 + config/locales/simple_form.my.yml | 6 + config/locales/simple_form.nl.yml | 20 +- config/locales/simple_form.nn.yml | 38 +- config/locales/simple_form.no.yml | 12 +- config/locales/simple_form.oc.yml | 2 + config/locales/simple_form.pl.yml | 16 +- config/locales/simple_form.pt-BR.yml | 16 +- config/locales/simple_form.pt-PT.yml | 16 +- config/locales/simple_form.ro.yml | 3 +- config/locales/simple_form.ru.yml | 6 + config/locales/simple_form.sc.yml | 2 + config/locales/simple_form.sco.yml | 6 + config/locales/simple_form.si.yml | 2 + config/locales/simple_form.sk.yml | 5 +- config/locales/simple_form.sl.yml | 10 +- config/locales/simple_form.sq.yml | 16 +- config/locales/simple_form.sr-Latn.yml | 18 +- config/locales/simple_form.sr.yml | 18 +- config/locales/simple_form.sv.yml | 14 +- config/locales/simple_form.ta.yml | 1 + config/locales/simple_form.th.yml | 24 +- config/locales/simple_form.tok.yml | 17 - config/locales/simple_form.tr.yml | 32 +- config/locales/simple_form.uk.yml | 14 +- config/locales/simple_form.vi.yml | 16 +- config/locales/simple_form.zh-CN.yml | 16 +- config/locales/simple_form.zh-HK.yml | 14 +- config/locales/simple_form.zh-TW.yml | 38 +- config/locales/sk.yml | 166 +- config/locales/sl.yml | 112 +- config/locales/sq.yml | 96 +- config/locales/sr-Latn.yml | 105 +- config/locales/sr.yml | 113 +- config/locales/sv.yml | 89 +- config/locales/ta.yml | 1 + config/locales/th.yml | 152 +- config/locales/tok.yml | 5 - config/locales/tr.yml | 140 +- config/locales/tt.yml | 19 +- config/locales/uk.yml | 92 +- config/locales/vi.yml | 87 +- config/locales/zgh.yml | 1 + config/locales/zh-CN.yml | 95 +- config/locales/zh-HK.yml | 87 +- config/locales/zh-TW.yml | 213 +- config/navigation.rb | 32 +- config/roles.yml | 1 - config/routes.rb | 70 +- config/routes/admin.rb | 36 +- config/routes/api.rb | 88 +- config/routes/settings.rb | 2 - config/settings.yml | 22 +- config/sidekiq.yml | 5 - config/templates/privacy-policy.md | 128 - config/themes.yml | 1 - config/webpack/rules/index.js | 2 - config/webpack/rules/node_modules.js | 23 - config/webpack/shared.js | 3 - config/webpacker.yml | 2 +- ...20161006213403_rails_settings_migration.rb | 8 +- ..._add_in_reply_to_account_id_to_statuses.rb | 5 - ...0317193015_add_search_index_to_accounts.rb | 12 +- db/migrate/20170918125918_ids_to_bigints.rb | 152 +- .../20180812173710_copy_status_stats.rb | 7 +- .../20181116173541_copy_account_stats.rb | 3 +- ...207011115_downcase_custom_emoji_domains.rb | 4 - .../20190715164535_add_instance_actor.rb | 6 +- ...5042_add_case_insensitive_index_to_tags.rb | 29 +- ...20210322164601_create_account_summaries.rb | 2 +- ...ate_follow_recommendations_to_version_2.rb | 2 +- ..._fix_canonical_email_blocks_foreign_key.rb | 17 +- ...6_update_account_summaries_to_version_2.rb | 6 +- .../20220309213005_fix_reblog_deleted_at.rb | 11 +- .../20230215074423_move_user_settings.rb | 6 - .../20230222232121_create_emoji_reactions.rb | 15 - ...416_add_emoji_reactions_to_status_stats.rb | 7 - ...8061833_add_image_size_to_custom_emojis.rb | 21 - ...roup_message_following_only_to_accounts.rb | 7 - ...group_allow_private_message_to_accounts.rb | 7 - ...roup_activitypub_count_to_account_stats.rb | 7 - ...18_create_scheduled_expiration_statuses.rb | 14 - ...405121613_add_searchability_to_statuses.rb | 7 - ...405121625_add_searchability_to_accounts.rb | 9 - ...1523_change_searchability_default_value.rb | 7 - ...d_emoji_reactions_count_to_status_stats.rb | 9 - ...20230412005311_add_markdown_to_statuses.rb | 9 - ...0412073021_add_markdown_to_status_edits.rb | 9 - ...tions_count_per_account_to_status_stats.rb | 9 - ...is_to_account_statuses_cleanup_policies.rb | 12 - db/migrate/20230423002728_create_antennas.rb | 42 - ...3233429_add_dissubscribable_to_accounts.rb | 11 - ...20230426013738_add_excludes_to_antennas.rb | 23 - ...6_add_reject_favourite_to_domain_blocks.rb | 12 - ...650_add_reject_sending_to_domain_blocks.rb | 29 - ...0230427122753_add_some_to_domain_blocks.rb | 23 - ...30427233749_add_hidden_to_domain_blocks.rb | 21 - ...dd_emoji_reaction_streaming_to_accounts.rb | 9 - ...t_invalid_subscription_to_domain_blocks.rb | 23 - ...045358_change_antennas_list_to_nullable.rb | 15 - .../20230510000439_add_stl_to_antennas.rb | 10 - ..._emoji_reaction_streaming_from_accounts.rb | 15 - ...510033040_add_ignore_reblog_to_antennas.rb | 10 - ...eply_exclude_followers_to_domain_blocks.rb | 11 - ...20230514030455_add_settings_to_accounts.rb | 7 - ...30521122642_add_aliases_to_custom_emoji.rb | 7 - ...82252_add_is_sensitive_to_custom_emojis.rb | 11 - ...0522093135_add_license_to_custom_emojis.rb | 7 - ...20230705232953_create_status_references.rb | 12 - ...tatus_referred_by_count_to_status_stats.rb | 13 - ...14004824_add_exclude_options_to_filters.rb | 11 - .../20230804222017_create_instance_infoes.rb | 14 - ...12083752_create_status_capability_token.rb | 12 - ...812130612_add_limited_scope_to_statuses.rb | 7 - ...56_create_global_follow_recommendations.rb | 2 +- ...9084858_add_no_insert_feeds_to_antennas.rb | 23 - db/migrate/20230821061713_create_circles.rb | 21 - ...2041804_add_antenna_elements_uniqueness.rb | 17 - ...230826023400_create_bookmark_categories.rb | 27 - .../20230911022527_add_ltl_to_antennas.rb | 15 - ...2836_add_attribute_to_status_references.rb | 15 - .../20230923103430_create_circle_statuses.rb | 22 - ...30233930_add_quote_to_status_references.rb | 24 - .../20231001031337_add_quote_to_statuses.rb | 32 - ...050733_add_with_quote_to_custom_filters.rb | 15 - .../20231005074832_create_friend_domains.rb | 26 - ...0102_add_reject_friend_to_domain_blocks.rb | 15 - ...808_improve_search_for_account_statuses.rb | 15 - ...15_add_delivery_local_to_friend_domains.rb | 23 - ...o_webauthn_credentials_user_id_nickname.rb | 49 - ...d_index_to_account_alias_uri_account_id.rb | 49 - ...om_filter_statuses_status_custom_filter.rb | 49 - ...59_add_index_to_identities_uid_provider.rb | 49 - ...231023083359_convert_dtl_force_settings.rb | 52 - .../20231028004612_create_list_statuses.rb | 22 - .../20231028005948_add_notify_to_list.rb | 15 - ...5225839_add_master_settings_to_accounts.rb | 33 - ...15001356_add_inbox_url_to_conversations.rb | 16 - ...dex_on_conversations_ancestor_status_id.rb | 9 - ...4_add_index_on_statuses_conversation_id.rb | 9 - .../20231210154528_add_otp_secret_to_user.rb | 7 - ...improve_index_for_public_timeline_speed.rb | 20 - .../20231214225249_index_to_statuses_url.rb | 13 - ...ove_hidden_anonymous_from_domain_blocks.rb | 18 - ...1033014_create_generated_annual_reports.rb | 17 - .../20240117021025_remove_unused_table.rb | 14 - ...31131_add_block_trends_to_domain_blocks.rb | 9 - .../20240212224800_add_uri_to_favourites.rb | 10 - .../20240216042730_create_ngword_histories.rb | 17 - ...217022038_add_count_to_ngword_histories.rb | 11 - ...17093511_add_remote_pending_to_accounts.rb | 11 - ...ove_defaults_for_status_pins_timestamps.rb | 8 - ...17230006_create_pending_follow_requests.rb | 17 - db/migrate/20240218233621_create_ng_rules.rb | 64 - ...221195424_add_filtered_to_notifications.rb | 7 - ...0221195828_create_notification_requests.rb | 18 - ...tification_request_ids_to_timestamp_ids.rb | 15 - ...2193403_create_notification_permissions.rb | 12 - ...0222203722_create_notification_policies.rb | 15 - ...033337_remove_group_attrs_from_accounts.rb | 10 - ...620_add_filtered_index_on_notifications.rb | 9 - .../20240227225017_create_pending_statuses.rb | 13 - ..._remove_reject_reply_from_domain_blocks.rb | 9 - ..._migrate_interaction_settings_to_policy.rb | 53 - .../20240310123453_add_hint_to_rules.rb | 7 - ...44_create_relationship_severance_events.rb | 15 - ...0312105620_create_severed_relationships.rb | 27 - .../20240312230204_create_sensitive_words.rb | 71 - ...e_account_relationship_severance_events.rb | 16 - ...ication_request_last_status_id_nullable.rb | 7 - db/migrate/20240320231633_create_ng_words.rb | 63 - ...o_account_relationship_severance_events.rb | 8 - ...20240401222541_create_specified_domains.rb | 41 - ...0034_move_account_warning_notifications.rb | 15 - ...tion_warning_notifications_from_account.rb | 14 - ...evert_media_file_size_column_to_big_int.rb | 42 - ...3_fix_notification_policies_foreign_key.rb | 28 - ...04024901_migrate_settings_to_user_roles.rb | 6 +- ...up_message_following_only_from_accounts.rb | 9 - ..._unique_index_on_preview_cards_statuses.rb | 3 +- ...30818142253_drop_follow_recommendations.rb | 2 +- ...ove_remote_uri_from_local_custom_emojis.rb | 21 - ...20231022074913_add_statuses_quote_index.rb | 13 - ...2353_remove_legacy_domain_block_columns.rb | 18 - ...230358_fix_uri_index_to_emoji_reactions.rb | 28 - ...4_improve_remote_pending_accounts_index.rb | 11 - ..._index_to_sort_for_ng_word_created_date.rb | 9 - ...80905_migrate_devise_two_factor_secrets.rb | 39 - ...te_interaction_settings_to_policy_again.rb | 54 - ...m_account_relationship_severance_events.rb | 7 - ...161611_remove_obsolete_roles_from_users.rb | 8 - ...0326231854_improve_preview_cards_vacuum.rb | 10 - ..._indices_for_kmyblue_original_functions.rb | 13 - db/schema.rb | 523 +- db/seeds/02_instance_actor.rb | 2 +- db/seeds/04_admin.rb | 4 +- dist/nginx-before-certbot.conf | 7 - docker-compose.yml | 11 +- install/12.0/setup-imagemagick-7.sh | 82 - install/12.0/setup1.sh | 209 - install/12.0/setup2.sh | 68 - install/5.0/setup-imagemagick-7.sh | 82 - install/5.0/setup1.sh | 140 - install/5.0/setup2.sh | 44 - install/5.0/setup3.sh | 27 - install/5.0/setup4.sh | 72 - install/9.0/setup-imagemagick-7.sh | 82 - install/9.0/setup1.sh | 140 - install/9.0/setup2.sh | 44 - install/9.0/setup3.sh | 27 - install/9.0/setup4.sh | 72 - .../two_factor_ldap_authenticatable.rb | 2 +- .../two_factor_pam_authenticatable.rb | 2 +- lib/elasticsearch/client_extensions.rb | 11 - lib/http_extensions.rb | 8 + lib/mastodon/cli/accounts.rb | 156 +- lib/mastodon/cli/base.rb | 4 - lib/mastodon/cli/cache.rb | 4 +- lib/mastodon/cli/domains.rb | 6 +- lib/mastodon/cli/email_domain_blocks.rb | 10 +- lib/mastodon/cli/emoji.rb | 26 +- lib/mastodon/cli/federation.rb | 16 +- lib/mastodon/cli/feeds.rb | 33 +- lib/mastodon/cli/ip_blocks.rb | 12 +- lib/mastodon/cli/main.rb | 4 - lib/mastodon/cli/maintenance.rb | 267 +- lib/mastodon/cli/media.rb | 75 +- lib/mastodon/cli/ohagi.rb | 33 - lib/mastodon/cli/progress_helper.rb | 11 +- lib/mastodon/cli/search.rb | 23 +- lib/mastodon/cli/statuses.rb | 19 +- lib/mastodon/cli/upgrade.rb | 6 +- lib/mastodon/migration_helpers.rb | 164 +- lib/mastodon/version.rb | 53 +- lib/paperclip/attachment_extensions.rb | 12 +- lib/paperclip/image_extractor.rb | 2 +- lib/paperclip/response_with_limit_adapter.rb | 9 +- lib/paperclip/transcoder.rb | 2 +- ...ategy.rb => premailer_webpack_strategy.rb} | 4 +- lib/sanitize_ext/sanitize_config.rb | 24 - lib/tasks/dangerous.rake | 229 - lib/tasks/db.rake | 22 +- lib/tasks/icons.rake | 2 +- lib/tasks/mastodon.rake | 12 +- lib/tasks/sidekiq_unique_jobs.rake | 11 - lib/tasks/spec.rake | 13 + lib/tasks/tests.rake | 90 +- .../{_form.html.haml.tt => _form.html.haml} | 0 lib/webpacker/manifest_extensions.rb | 4 +- package.json | 58 +- postcss.config.js | 10 +- public/embed.js | 4 +- public/favicon.ico | Bin 9662 -> 15086 bytes public/robots.txt | 3 - spec/config/initializers/rack/attack_spec.rb | 2 +- spec/controllers/.rubocop.yml | 4 +- .../collections_controller_spec.rb | 90 +- .../activitypub/replies_controller_spec.rb | 13 +- ...ccount_moderation_notes_controller_spec.rb | 13 +- .../admin/accounts_controller_spec.rb | 69 +- .../admin/disputes/appeals_controller_spec.rb | 52 +- .../export_domain_blocks_controller_spec.rb | 12 +- .../admin/invites_controller_spec.rb | 13 +- .../admin/report_notes_controller_spec.rb | 24 +- .../admin/reports_controller_spec.rb | 10 - .../admin/resets_controller_spec.rb | 10 +- .../admin/statuses_controller_spec.rb | 14 +- spec/controllers/api/base_controller_spec.rb | 40 +- .../accounts/credentials_controller_spec.rb | 105 + .../follower_accounts_controller_spec.rb} | 19 +- .../following_accounts_controller_spec.rb} | 19 +- .../v1/accounts/statuses_controller_spec.rb | 98 + ...preview_card_providers_controller_spec.rb} | 21 +- .../admin/trends/statuses_controller_spec.rb} | 21 +- .../v1/admin/trends/tags_controller_spec.rb} | 21 +- .../reactions_controller_spec.rb} | 24 +- .../api/v1/announcements_controller_spec.rb} | 27 +- .../v1/circles/statuses_controller_spec.rb | 43 - .../api/v1/conversations_controller_spec.rb | 56 + .../api/v1/filters_controller_spec.rb} | 34 +- .../api/v1/markers_controller_spec.rb} | 38 +- .../api/v1/polls/votes_controller_spec.rb} | 18 +- .../v1/push/subscriptions_controller_spec.rb | 99 + ...favourited_by_accounts_controller_spec.rb} | 60 +- .../v1/statuses/histories_controller_spec.rb} | 17 +- .../api/v1/statuses/mutes_controller_spec.rb} | 21 +- .../reblogged_by_accounts_controller_spec.rb} | 53 +- .../v1/statuses/reblogs_controller_spec.rb} | 25 +- .../statuses/translations_controller_spec.rb} | 17 +- .../api/v1/streaming_controller_spec.rb} | 42 +- .../list_controller_spec.rb} | 21 +- .../api/v1/trends/links_controller_spec.rb} | 10 +- .../v1/trends/statuses_controller_spec.rb} | 10 +- .../api/v1/trends/tags_controller_spec.rb} | 10 +- .../api/v2/admin/accounts_controller_spec.rb} | 12 +- .../v2/filters/keywords_controller_spec.rb} | 31 +- .../v2/filters/statuses_controller_spec.rb} | 25 +- .../application_controller_spec.rb | 44 +- .../auth/registrations_controller_spec.rb | 273 +- .../auth/sessions_controller_spec.rb | 127 +- .../account_controller_concern_spec.rb | 23 +- .../concerns/api/error_handling_spec.rb | 51 - ..._concern_spec.rb => cache_concern_spec.rb} | 12 +- .../controllers/custom_css_controller_spec.rb | 13 +- .../disputes/appeals_controller_spec.rb | 32 +- .../instance_actors_controller_spec.rb | 41 +- spec/controllers/manifests_controller_spec.rb | 13 +- .../notifications_controller_spec.rb | 4 +- spec/controllers/tags_controller_spec.rb | 16 +- spec/fabrication/fabricators_spec.rb | 6 +- ...relationship_severance_event_fabricator.rb | 6 - .../fabricators/antenna_account_fabricator.rb | 7 - spec/fabricators/antenna_domain_fabricator.rb | 7 - spec/fabricators/antenna_fabricator.rb | 7 - spec/fabricators/antenna_tag_fabricator.rb | 7 - .../bookmark_category_fabricator.rb | 6 - .../bookmark_category_status_fabricator.rb | 9 - .../canonical_email_block_fabricator.rb | 2 +- spec/fabricators/circle_account_fabricator.rb | 7 - spec/fabricators/circle_fabricator.rb | 6 - spec/fabricators/circle_status_fabricator.rb | 7 - spec/fabricators/custom_filter_fabricator.rb | 2 - spec/fabricators/emoji_reaction_fabricator.rb | 7 - spec/fabricators/featured_tag_fabricator.rb | 2 +- spec/fabricators/friend_domain_fabricator.rb | 10 - spec/fabricators/identity_fabricator.rb | 2 +- spec/fabricators/instance_info_fabricator.rb | 7 - spec/fabricators/list_status_fabricator.rb | 6 - spec/fabricators/ng_rule_fabricator.rb | 7 - .../fabricators/ng_rule_history_fabricator.rb | 8 - spec/fabricators/ng_word_fabricator.rb | 5 - spec/fabricators/ngword_history_fabricator.rb | 9 - .../notification_permission_fabricator.rb | 6 - .../notification_policy_fabricator.rb | 9 - .../notification_request_fabricator.rb | 8 - .../pending_follow_request_fabricator.rb | 7 - spec/fabricators/pending_status_fabricator.rb | 7 - .../preview_card_provider_fabricator.rb | 2 +- ...relationship_severance_event_fabricator.rb | 6 - spec/fabricators/relay_fabricator.rb | 2 +- spec/fabricators/sensitive_word_fabricator.rb | 5 - .../severed_relationship_fabricator.rb | 8 - spec/fabricators/site_upload_fabricator.rb | 2 +- .../fabricators/software_update_fabricator.rb | 2 +- .../specified_domain_fabricator.rb | 5 - .../status_reference_fabricator.rb | 8 - .../unavailable_domain_fabricator.rb | 2 +- .../admin/accounts_spec.rb | 0 .../admin/custom_emojis_spec.rb | 0 .../admin/domain_blocks_spec.rb | 31 +- .../admin/email_domain_blocks_spec.rb | 0 .../admin/ip_blocks_spec.rb | 0 .../admin/software_updates_spec.rb | 0 .../admin/statuses_spec.rb | 0 .../links/preview_card_providers_spec.rb | 0 .../admin/trends/links_spec.rb | 0 .../admin/trends/statuses_spec.rb | 0 .../admin/trends/tags_spec.rb | 0 spec/{system => features}/captcha_spec.rb | 13 +- spec/{system => features}/log_in_spec.rb | 0 spec/{system => features}/oauth_spec.rb | 67 +- spec/{system => features}/profile_spec.rb | 0 spec/fixtures/files/domain_blocks.csv | 9 +- spec/fixtures/files/text.png | Bin 16219 -> 0 bytes spec/helpers/application_helper_spec.rb | 87 +- spec/helpers/json_ld_helper_spec.rb | 35 +- spec/helpers/statuses_helper_spec.rb | 20 + spec/helpers/theme_helper_spec.rb | 91 - spec/lib/account_statuses_filter_spec.rb | 111 +- spec/lib/activitypub/activity/accept_spec.rb | 72 - spec/lib/activitypub/activity/add_spec.rb | 4 +- .../lib/activitypub/activity/announce_spec.rb | 36 +- spec/lib/activitypub/activity/create_spec.rb | 1600 +--- spec/lib/activitypub/activity/delete_spec.rb | 47 - spec/lib/activitypub/activity/follow_spec.rb | 366 +- spec/lib/activitypub/activity/like_spec.rb | 643 +- spec/lib/activitypub/activity/reject_spec.rb | 60 - spec/lib/activitypub/activity/undo_spec.rb | 118 +- spec/lib/activitypub/activity/update_spec.rb | 62 - .../activitypub/linked_data_signature_spec.rb | 4 +- spec/lib/activitypub/tag_manager_spec.rb | 170 +- .../instance_accounts_dimension_spec.rb | 24 +- .../instance_languages_dimension_spec.rb | 22 +- .../dimension/languages_dimension_spec.rb | 19 +- .../dimension/servers_dimension_spec.rb | 22 +- .../software_versions_dimension_spec.rb | 10 +- .../dimension/sources_dimension_spec.rb | 19 +- .../dimension/space_usage_dimension_spec.rb | 11 +- .../dimension/tag_languages_dimension_spec.rb | 28 +- .../dimension/tag_servers_dimension_spec.rb | 29 +- spec/lib/admin/metrics/dimension_spec.rb | 22 - .../measure/active_users_measure_spec.rb | 29 +- .../measure/instance_accounts_measure_spec.rb | 20 +- .../instance_followers_measure_spec.rb | 21 +- .../measure/instance_follows_measure_spec.rb | 19 +- ...instance_media_attachments_measure_spec.rb | 23 +- .../measure/instance_reports_measure_spec.rb | 19 +- .../measure/instance_statuses_measure_spec.rb | 19 +- .../measure/interactions_measure_spec.rb | 29 +- .../metrics/measure/new_users_measure_spec.rb | 21 +- .../measure/opened_reports_measure_spec.rb | 21 +- .../measure/resolved_reports_measure_spec.rb | 21 +- .../measure/tag_accounts_measure_spec.rb | 37 +- .../measure/tag_servers_measure_spec.rb | 36 +- .../metrics/measure/tag_uses_measure_spec.rb | 37 +- spec/lib/admin/metrics/measure_spec.rb | 22 - .../system_check/elasticsearch_check_spec.rb | 2 +- .../sidekiq_process_check_spec.rb | 4 +- spec/lib/emoji_formatter_spec.rb | 6 +- spec/lib/feed_manager_spec.rb | 49 +- spec/lib/link_details_extractor_spec.rb | 132 +- spec/lib/mastodon/cli/accounts_spec.rb | 364 +- spec/lib/mastodon/cli/cache_spec.rb | 3 +- spec/lib/mastodon/cli/domains_spec.rb | 17 - .../mastodon/cli/email_domain_blocks_spec.rb | 6 +- spec/lib/mastodon/cli/feeds_spec.rb | 3 +- spec/lib/mastodon/cli/ip_blocks_spec.rb | 6 +- spec/lib/mastodon/cli/main_spec.rb | 6 +- spec/lib/mastodon/cli/maintenance_spec.rb | 8 +- spec/lib/mastodon/cli/media_spec.rb | 21 +- spec/lib/mastodon/cli/search_spec.rb | 17 +- spec/lib/mastodon/cli/statuses_spec.rb | 3 +- spec/lib/request_pool_spec.rb | 14 +- spec/lib/sanitize/config_spec.rb | 2 +- spec/lib/search_query_transformer_spec.rb | 2 +- spec/lib/signature_parser_spec.rb | 34 - spec/lib/status_reach_finder_spec.rb | 398 +- spec/lib/vacuum/feeds_vacuum_spec.rb | 14 - spec/lib/vacuum/imports_vacuum_spec.rb | 21 +- spec/lib/vacuum/list_statuses_vacuum_spec.rb | 30 - spec/lib/vacuum/ng_histories_vacuum_spec.rb | 28 - spec/lib/vacuum/statuses_vacuum_spec.rb | 54 - spec/lib/webfinger_resource_spec.rb | 4 +- spec/mailers/admin_mailer_spec.rb | 20 - spec/mailers/previews/admin_mailer_preview.rb | 5 - spec/mailers/previews/user_mailer_preview.rb | 5 - spec/mailers/user_mailer_spec.rb | 24 - spec/models/account_spec.rb | 306 +- .../account_statuses_cleanup_policy_spec.rb | 165 +- .../friends_of_friends_source_spec.rb | 100 - .../models/account_suggestions/source_spec.rb | 20 +- spec/models/admin/account_action_spec.rb | 26 +- spec/models/admin/ng_rule_spec.rb | 282 - spec/models/admin/ng_word_spec.rb | 77 - spec/models/admin/sensitive_word_spec.rb | 75 - spec/models/announcement_spec.rb | 23 +- spec/models/concerns/account/counters_spec.rb | 43 +- .../concerns/account/interactions_spec.rb | 95 - .../concerns/status/threading_concern_spec.rb | 52 - spec/models/custom_emoji_spec.rb | 46 - spec/models/custom_filter_keyword_spec.rb | 35 - spec/models/custom_filter_spec.rb | 8 - spec/models/domain_allow_spec.rb | 20 +- spec/models/form/custom_emoji_batch_spec.rb | 4 +- spec/models/form/import_spec.rb | 6 +- spec/models/friend_domain_spec.rb | 89 - spec/models/home_feed_spec.rb | 1 + spec/models/identity_spec.rb | 6 +- spec/models/instance_info_spec.rb | 62 - spec/models/instance_spec.rb | 104 - spec/models/ip_block_spec.rb | 53 +- spec/models/media_attachment_spec.rb | 49 +- spec/models/ng_rule_spec.rb | 29 - spec/models/notification_policy_spec.rb | 25 - spec/models/notification_request_spec.rb | 44 - spec/models/notification_spec.rb | 11 - spec/models/privacy_policy_spec.rb | 2 +- spec/models/public_feed_spec.rb | 132 +- .../relationship_severance_event_spec.rb | 49 - spec/models/report_spec.rb | 13 - spec/models/severed_relationship_spec.rb | 45 - spec/models/status_spec.rb | 283 - spec/models/tag_feed_spec.rb | 68 +- spec/models/tag_spec.rb | 57 +- spec/models/trends/statuses_spec.rb | 23 - spec/models/trends/tags_spec.rb | 27 - spec/models/user_role_spec.rb | 36 +- spec/models/user_settings_spec.rb | 4 +- spec/models/user_spec.rb | 167 +- spec/policies/status_policy_spec.rb | 137 - spec/policies/user_policy_spec.rb | 2 +- spec/presenters/instance_presenter_spec.rb | 2 +- spec/rails_helper.rb | 73 +- spec/requests/account_show_page_spec.rb | 6 - .../api/v1/accounts/credentials_spec.rb | 92 +- .../requests/api/v1/accounts/statuses_spec.rb | 149 - spec/requests/api/v1/accounts_spec.rb | 53 - .../api/v1/admin/domain_blocks_spec.rb | 85 +- spec/requests/api/v1/admin/reports_spec.rb | 26 +- spec/requests/api/v1/antennas_spec.rb | 234 - spec/requests/api/v1/blocks_spec.rb | 14 +- spec/requests/api/v1/bookmarks_spec.rb | 11 +- spec/requests/api/v1/circles/accounts_spec.rb | 165 - spec/requests/api/v1/circles_spec.rb | 193 - spec/requests/api/v1/conversations_spec.rb | 52 - spec/requests/api/v1/favourites_spec.rb | 14 +- .../api/v1/featured_tags/suggestions_spec.rb | 30 +- spec/requests/api/v1/followed_tags_spec.rb | 14 +- .../api/v1/instances/domain_blocks_spec.rb | 41 - spec/requests/api/v1/lists_spec.rb | 7 - spec/requests/api/v1/media_spec.rb | 10 +- spec/requests/api/v1/mutes_spec.rb | 9 +- .../api/v1/notifications/policies_spec.rb | 69 - .../api/v1/notifications/requests_spec.rb | 102 - spec/requests/api/v1/notifications_spec.rb | 11 +- spec/requests/api/v1/peers/search_spec.rb | 59 - .../api/v1/push/subscriptions_spec.rb | 124 - spec/requests/api/v1/reports_spec.rb | 10 +- .../api/v1/statuses/emoji_reactions_spec.rb | 271 - spec/requests/api/v1/statuses_spec.rb | 117 +- .../requests/api/v1/timelines/antenna_spec.rb | 55 - spec/requests/api/v1/timelines/home_spec.rb | 9 +- spec/requests/api/v1/timelines/list_spec.rb | 55 - spec/requests/api/v1/timelines/public_spec.rb | 100 +- spec/requests/api/v1/timelines/tag_spec.rb | 9 +- spec/requests/api/v2/filters_spec.rb | 35 +- spec/requests/api/v2/instance_spec.rb | 20 - spec/requests/api/v2/suggestions_spec.rb | 20 +- spec/requests/api/web/embeds_spec.rb | 12 - spec/requests/cache_spec.rb | 24 +- spec/requests/content_security_policy_spec.rb | 49 +- .../requests/disabled_oauth_endpoints_spec.rb | 83 - spec/requests/omniauth_callbacks_spec.rb | 39 +- .../well_known/oauth_metadata_spec.rb | 37 - spec/requests/well_known/webfinger_spec.rb | 16 +- .../concerns/account/statuses_search_spec.rb | 4 +- .../services/statuses_search_service_spec.rb | 303 - .../note_for_misskey_serializer_spec.rb | 51 - .../activitypub/note_serializer_spec.rb | 70 +- spec/serializers/node_info/serializer_spec.rb | 37 - .../rest/custom_emoji_serializer_spec.rb | 41 - .../rest/instance_serializer_spec.rb | 21 - .../rest/suggestion_serializer_spec.rb | 2 +- spec/services/account_search_service_spec.rb | 2 +- .../account_statuses_cleanup_service_spec.rb | 2 +- .../activate_follow_requests_service_spec.rb | 55 - .../activate_remote_statuses_service_spec.rb | 67 - .../fetch_featured_collection_service_spec.rb | 48 +- ...h_featured_tags_collection_service_spec.rb | 10 +- .../fetch_references_service_spec.rb | 128 - .../fetch_remote_account_service_spec.rb | 112 +- .../fetch_remote_actor_service_spec.rb | 112 +- .../fetch_remote_key_service_spec.rb | 13 +- .../fetch_remote_status_service_spec.rb | 2 +- .../activitypub/fetch_replies_service_spec.rb | 20 +- .../process_account_service_spec.rb | 438 +- .../process_collection_service_spec.rb | 4 +- .../process_status_update_service_spec.rb | 338 +- .../synchronize_followers_service_spec.rb | 8 +- ..._block_domain_from_account_service_spec.rb | 34 +- spec/services/after_block_service_spec.rb | 21 +- .../after_unallow_domain_service_spec.rb | 24 - spec/services/app_sign_up_service_spec.rb | 35 +- spec/services/appeal_service_spec.rb | 40 - spec/services/approve_appeal_service_spec.rb | 30 - .../services/authorize_follow_service_spec.rb | 2 +- spec/services/backup_service_spec.rb | 15 +- .../batched_remove_status_service_spec.rb | 2 +- spec/services/block_domain_service_spec.rb | 79 +- spec/services/block_service_spec.rb | 10 +- .../bootstrap_timeline_service_spec.rb | 2 +- spec/services/bulk_import_row_service_spec.rb | 61 +- spec/services/bulk_import_service_spec.rb | 4 +- .../clear_domain_media_service_spec.rb | 2 +- .../create_featured_tag_service_spec.rb | 31 - spec/services/delete_account_service_spec.rb | 59 +- .../services/delivery_antenna_service_spec.rb | 413 - spec/services/emoji_react_service_spec.rb | 298 - .../services/fan_out_on_write_service_spec.rb | 787 +- spec/services/favourite_service_spec.rb | 29 +- spec/services/fetch_link_card_service_spec.rb | 106 +- spec/services/fetch_oembed_service_spec.rb | 2 +- .../fetch_remote_status_service_spec.rb | 2 +- spec/services/fetch_resource_service_spec.rb | 12 +- spec/services/follow_service_spec.rb | 28 +- spec/services/import_service_spec.rb | 2 +- spec/services/move_service_spec.rb | 48 - spec/services/mute_service_spec.rb | 2 +- spec/services/notify_service_spec.rb | 266 +- spec/services/post_status_service_spec.rb | 671 +- spec/services/precompute_feed_service_spec.rb | 2 +- .../services/process_hashtags_service_spec.rb | 16 - .../services/process_mentions_service_spec.rb | 25 +- .../process_references_service_spec.rb | 464 - spec/services/purge_domain_service_spec.rb | 32 +- spec/services/reblog_service_spec.rb | 67 +- spec/services/reject_follow_service_spec.rb | 2 +- ...ove_domains_from_followers_service_spec.rb | 28 - .../remove_featured_tag_service_spec.rb | 37 - .../remove_from_followers_service_spec.rb | 2 +- spec/services/remove_status_service_spec.rb | 81 +- spec/services/report_service_spec.rb | 13 +- spec/services/resolve_account_service_spec.rb | 28 +- spec/services/resolve_url_service_spec.rb | 3 +- spec/services/search_service_spec.rb | 2 +- .../software_update_check_service_spec.rb | 6 +- spec/services/suspend_account_service_spec.rb | 7 +- spec/services/tag_search_service_spec.rb | 21 - .../services/translate_status_service_spec.rb | 2 +- spec/services/un_emoji_react_service_spec.rb | 175 - spec/services/unallow_domain_service_spec.rb | 55 +- spec/services/unblock_domain_service_spec.rb | 2 +- spec/services/unblock_service_spec.rb | 2 +- spec/services/unfavourite_service_spec.rb | 36 - spec/services/unfollow_service_spec.rb | 2 +- spec/services/unmute_service_spec.rb | 46 - .../unsuspend_account_service_spec.rb | 2 +- spec/services/update_account_service_spec.rb | 10 +- spec/services/update_status_service_spec.rb | 272 +- spec/services/verify_link_service_spec.rb | 41 +- spec/services/vote_service_spec.rb | 40 - spec/services/webhook_service_spec.rb | 30 - spec/spec_helper.rb | 10 +- spec/support/capybara.rb | 4 - spec/support/examples/cache.rb | 12 +- spec/support/javascript_errors.rb | 6 +- spec/support/matchers/api_pagination.rb | 13 - spec/support/stories/profile_stories.rb | 11 +- spec/support/streaming_server_manager.rb | 14 +- spec/support/threading_helpers.rb | 17 - spec/system/new_statuses_spec.rb | 7 +- spec/system/ocr_spec.rb | 33 - spec/system/redirections_spec.rb | 32 - spec/system/report_interface_spec.rb | 31 - spec/system/severed_relationships_spec.rb | 24 - spec/system/share_entrypoint_spec.rb | 6 +- spec/system/unlogged_spec.rb | 2 +- .../blacklisted_email_validator_spec.rb | 11 +- spec/validators/email_mx_validator_spec.rb | 94 +- .../validators/follow_limit_validator_spec.rb | 2 +- .../status_length_validator_spec.rb | 35 +- spec/views/statuses/show.html.haml_spec.rb | 39 +- .../activitypub/distribution_worker_spec.rb | 60 +- .../fetch_instance_info_worker_spec.rb | 117 - .../fetch_remote_status_worker_spec.rb | 41 - .../activitypub/fetch_replies_worker_spec.rb | 2 +- .../status_update_distribution_worker_spec.rb | 44 +- spec/workers/backup_worker_spec.rb | 11 +- spec/workers/feed_insert_worker_spec.rb | 42 - .../workers/process_references_worker_spec.rb | 17 - spec/workers/redownload_avatar_worker_spec.rb | 2 +- spec/workers/redownload_header_worker_spec.rb | 2 +- ...auto_close_registrations_scheduler_spec.rb | 60 - .../scheduler/user_cleanup_scheduler_spec.rb | 2 +- streaming/.eslintrc.cjs | 43 - streaming/.eslintrc.js | 32 + streaming/Dockerfile | 2 +- streaming/errors.js | 46 - streaming/index.js | 747 +- streaming/logging.js | 114 - streaming/metrics.js | 6 +- streaming/package.json | 10 +- streaming/tsconfig.json | 6 +- streaming/utils.js | 45 +- tsconfig.json | 5 +- yarn.lock | 8066 ++++++++--------- 2347 files changed, 26470 insertions(+), 87494 deletions(-) delete mode 100644 .bundler-audit.yml delete mode 100644 .env.development delete mode 100644 .github/FUNDING.yml delete mode 100644 .github/ISSUE_TEMPLATE/1.bug_report.yml create mode 100644 .github/ISSUE_TEMPLATE/1.web_bug_report.yml delete mode 100644 .github/ISSUE_TEMPLATE/2.feature_request.yml create mode 100644 .github/ISSUE_TEMPLATE/2.server_bug_report.yml create mode 100644 .github/ISSUE_TEMPLATE/3.feature_request.yml delete mode 100644 .github/ISSUE_TEMPLATE/3.spec_change_request.yml create mode 100644 .github/stylelint-matcher.json create mode 100644 .github/workflows/build-container-image.yml rename .github/workflows/{build-security.yml => build-nightly.yml} (83%) create mode 100644 .github/workflows/build-push-pr.yml create mode 100644 .github/workflows/build-releases.yml create mode 100644 .github/workflows/crowdin-download.yml create mode 100644 .github/workflows/crowdin-upload.yml delete mode 100644 .github/workflows/format-check.yml create mode 100644 .github/workflows/lint-json.yml create mode 100644 .github/workflows/lint-md.yml create mode 100644 .github/workflows/lint-yml.yml create mode 100644 .github/workflows/test-image-build.yml create mode 100644 .simplecov delete mode 100644 AUTHORS_KB.md delete mode 100644 app/controllers/activitypub/contexts_controller.rb delete mode 100644 app/controllers/activitypub/references_controller.rb delete mode 100644 app/controllers/admin/friend_servers_controller.rb delete mode 100644 app/controllers/admin/ng_rule_histories_controller.rb delete mode 100644 app/controllers/admin/ng_rules_controller.rb delete mode 100644 app/controllers/admin/ng_words/keywords_controller.rb delete mode 100644 app/controllers/admin/ng_words/settings_controller.rb delete mode 100644 app/controllers/admin/ng_words/white_list_controller.rb delete mode 100644 app/controllers/admin/ng_words_controller.rb delete mode 100644 app/controllers/admin/ngword_histories_controller.rb delete mode 100644 app/controllers/admin/sensitive_words_controller.rb delete mode 100644 app/controllers/admin/special_domains_controller.rb delete mode 100644 app/controllers/admin/special_instances_controller.rb delete mode 100644 app/controllers/antennas_controller.rb delete mode 100644 app/controllers/api/v1/accounts/antennas_controller.rb delete mode 100644 app/controllers/api/v1/accounts/circles_controller.rb delete mode 100644 app/controllers/api/v1/accounts/exclude_antennas_controller.rb delete mode 100644 app/controllers/api/v1/annual_reports_controller.rb delete mode 100644 app/controllers/api/v1/antennas/accounts_controller.rb delete mode 100644 app/controllers/api/v1/antennas/domains_controller.rb delete mode 100644 app/controllers/api/v1/antennas/exclude_accounts_controller.rb delete mode 100644 app/controllers/api/v1/antennas/exclude_domains_controller.rb delete mode 100644 app/controllers/api/v1/antennas/exclude_keywords_controller.rb delete mode 100644 app/controllers/api/v1/antennas/exclude_tags_controller.rb delete mode 100644 app/controllers/api/v1/antennas/keywords_controller.rb delete mode 100644 app/controllers/api/v1/antennas/tags_controller.rb delete mode 100644 app/controllers/api/v1/antennas_controller.rb delete mode 100644 app/controllers/api/v1/bookmark_categories/statuses_controller.rb delete mode 100644 app/controllers/api/v1/bookmark_categories_controller.rb delete mode 100644 app/controllers/api/v1/circles/accounts_controller.rb delete mode 100644 app/controllers/api/v1/circles/statuses_controller.rb delete mode 100644 app/controllers/api/v1/circles_controller.rb delete mode 100644 app/controllers/api/v1/emoji_reactions_controller.rb delete mode 100644 app/controllers/api/v1/notifications/policies_controller.rb delete mode 100644 app/controllers/api/v1/notifications/requests_controller.rb delete mode 100644 app/controllers/api/v1/reaction_deck_controller.rb delete mode 100644 app/controllers/api/v1/statuses/bookmark_categories_controller.rb delete mode 100644 app/controllers/api/v1/statuses/emoji_reactioned_by_accounts_controller.rb delete mode 100644 app/controllers/api/v1/statuses/emoji_reactions_controller.rb delete mode 100644 app/controllers/api/v1/statuses/mentioned_accounts_controller.rb delete mode 100644 app/controllers/api/v1/statuses/referred_by_statuses_controller.rb delete mode 100644 app/controllers/api/v1/timelines/antenna_controller.rb delete mode 100644 app/controllers/concerns/api/error_handling.rb delete mode 100644 app/controllers/concerns/api/pagination.rb delete mode 100644 app/controllers/concerns/preloading_concern.rb delete mode 100644 app/controllers/redirect/accounts_controller.rb delete mode 100644 app/controllers/redirect/base_controller.rb delete mode 100644 app/controllers/redirect/statuses_controller.rb delete mode 100644 app/controllers/settings/preferences/reaching_controller.rb delete mode 100644 app/controllers/settings/privacy_extra_controller.rb delete mode 100644 app/controllers/severed_relationships_controller.rb delete mode 100644 app/controllers/well_known/oauth_metadata_controller.rb delete mode 100644 app/helpers/dtl_helper.rb delete mode 100644 app/helpers/follow_helper.rb delete mode 100644 app/helpers/high_load_helper.rb delete mode 100644 app/helpers/kmyblue_capabilities_helper.rb delete mode 100644 app/helpers/ng_rule_helper.rb delete mode 100644 app/helpers/registration_limitation_helper.rb delete mode 100644 app/helpers/theme_helper.rb delete mode 100644 app/javascript/entrypoints/admin.tsx delete mode 100644 app/javascript/entrypoints/public.tsx delete mode 100644 app/javascript/entrypoints/sign_up.ts delete mode 100644 app/javascript/entrypoints/two_factor_authentication.ts delete mode 100644 app/javascript/fonts/inter/inter-variable-font-slnt-wght.woff2 mode change 100755 => 100644 app/javascript/icons/android-chrome-144x144.png mode change 100755 => 100644 app/javascript/icons/android-chrome-192x192.png mode change 100755 => 100644 app/javascript/icons/android-chrome-256x256.png mode change 100755 => 100644 app/javascript/icons/android-chrome-36x36.png mode change 100755 => 100644 app/javascript/icons/android-chrome-384x384.png mode change 100755 => 100644 app/javascript/icons/android-chrome-48x48.png mode change 100755 => 100644 app/javascript/icons/android-chrome-512x512.png mode change 100755 => 100644 app/javascript/icons/android-chrome-72x72.png mode change 100755 => 100644 app/javascript/icons/android-chrome-96x96.png mode change 100755 => 100644 app/javascript/icons/apple-touch-icon-1024x1024.png mode change 100755 => 100644 app/javascript/icons/apple-touch-icon-114x114.png mode change 100755 => 100644 app/javascript/icons/apple-touch-icon-120x120.png mode change 100755 => 100644 app/javascript/icons/apple-touch-icon-144x144.png mode change 100755 => 100644 app/javascript/icons/apple-touch-icon-152x152.png mode change 100755 => 100644 app/javascript/icons/apple-touch-icon-167x167.png mode change 100755 => 100644 app/javascript/icons/apple-touch-icon-180x180.png mode change 100755 => 100644 app/javascript/icons/apple-touch-icon-57x57.png mode change 100755 => 100644 app/javascript/icons/apple-touch-icon-60x60.png mode change 100755 => 100644 app/javascript/icons/apple-touch-icon-72x72.png mode change 100755 => 100644 app/javascript/icons/apple-touch-icon-76x76.png mode change 100755 => 100644 app/javascript/icons/favicon-16x16.png mode change 100755 => 100644 app/javascript/icons/favicon-32x32.png mode change 100755 => 100644 app/javascript/icons/favicon-48x48.png delete mode 100644 app/javascript/images/check.svg delete mode 100644 app/javascript/images/mailer-new/common/header-bg-end.png delete mode 100644 app/javascript/images/mailer-new/common/header-bg-start.png delete mode 100644 app/javascript/images/mailer-new/common/logo-footer.png delete mode 100644 app/javascript/images/mailer-new/common/logo-header.png delete mode 100644 app/javascript/images/mailer-new/heading/2fa-disabled.png delete mode 100644 app/javascript/images/mailer-new/heading/2fa-enabled.png delete mode 100644 app/javascript/images/mailer-new/heading/2fa-recovery.png delete mode 100644 app/javascript/images/mailer-new/heading/LICENSE delete mode 100644 app/javascript/images/mailer-new/heading/README.md delete mode 100755 app/javascript/images/mailer-new/heading/appeal-approved.png delete mode 100644 app/javascript/images/mailer-new/heading/appeal-rejected.png delete mode 100644 app/javascript/images/mailer-new/heading/archive.png delete mode 100644 app/javascript/images/mailer-new/heading/boost.png delete mode 100644 app/javascript/images/mailer-new/heading/email.png delete mode 100644 app/javascript/images/mailer-new/heading/favorite.png delete mode 100644 app/javascript/images/mailer-new/heading/follow.png delete mode 100755 app/javascript/images/mailer-new/heading/key-added.png delete mode 100755 app/javascript/images/mailer-new/heading/key-deleted.png delete mode 100755 app/javascript/images/mailer-new/heading/key-disabled.png delete mode 100644 app/javascript/images/mailer-new/heading/key-enabled.png delete mode 100644 app/javascript/images/mailer-new/heading/login.png delete mode 100644 app/javascript/images/mailer-new/heading/mention.png delete mode 100755 app/javascript/images/mailer-new/heading/password.png delete mode 100644 app/javascript/images/mailer-new/heading/user.png delete mode 100755 app/javascript/images/mailer-new/heading/warning.png delete mode 100644 app/javascript/images/mailer-new/store-icons/btn-app-store.png delete mode 100644 app/javascript/images/mailer-new/store-icons/btn-google-play.png delete mode 100644 app/javascript/images/mailer-new/welcome-icons/LICENSE delete mode 100644 app/javascript/images/mailer-new/welcome-icons/README.md delete mode 100755 app/javascript/images/mailer-new/welcome-icons/apps_step-off.png delete mode 100644 app/javascript/images/mailer-new/welcome-icons/apps_step-on.png delete mode 100644 app/javascript/images/mailer-new/welcome-icons/edit_profile_step-off.png delete mode 100644 app/javascript/images/mailer-new/welcome-icons/edit_profile_step-on.png delete mode 100755 app/javascript/images/mailer-new/welcome-icons/follow_step-off.png delete mode 100644 app/javascript/images/mailer-new/welcome-icons/follow_step-on.png delete mode 100755 app/javascript/images/mailer-new/welcome-icons/post_step-off.png delete mode 100644 app/javascript/images/mailer-new/welcome-icons/post_step-on.png delete mode 100755 app/javascript/images/mailer-new/welcome-icons/share_step-off.png delete mode 100644 app/javascript/images/mailer-new/welcome-icons/share_step-on.png delete mode 100644 app/javascript/images/mailer-new/welcome/checkbox-off.png delete mode 100644 app/javascript/images/mailer-new/welcome/checkbox-on.png delete mode 100644 app/javascript/images/mailer-new/welcome/feature_audience.png delete mode 100644 app/javascript/images/mailer-new/welcome/feature_control.png delete mode 100644 app/javascript/images/mailer-new/welcome/feature_creativity.png delete mode 100644 app/javascript/images/mailer-new/welcome/feature_moderation.png delete mode 100644 app/javascript/images/mailer-new/welcome/purple-extra-soft-spacer.png delete mode 100644 app/javascript/images/mailer-new/welcome/purple-extra-soft-wave.png delete mode 100755 app/javascript/images/warning-stripes.svg delete mode 100644 app/javascript/mastodon/actions/antennas.js delete mode 100644 app/javascript/mastodon/actions/bookmark_categories.js create mode 100644 app/javascript/mastodon/actions/boosts.js delete mode 100644 app/javascript/mastodon/actions/circles.js delete mode 100644 app/javascript/mastodon/actions/emoji_reactions.js create mode 100644 app/javascript/mastodon/actions/markers.js delete mode 100644 app/javascript/mastodon/actions/markers.ts create mode 100644 app/javascript/mastodon/actions/picture_in_picture.js delete mode 100644 app/javascript/mastodon/actions/picture_in_picture.ts delete mode 100644 app/javascript/mastodon/actions/reaction_deck.js delete mode 100644 app/javascript/mastodon/api_types/markers.ts delete mode 100644 app/javascript/mastodon/api_types/media_attachments.ts delete mode 100644 app/javascript/mastodon/api_types/polls.ts delete mode 100644 app/javascript/mastodon/api_types/statuses.ts delete mode 100644 app/javascript/mastodon/components/check_box.tsx delete mode 100644 app/javascript/mastodon/components/compacted_status.jsx delete mode 100644 app/javascript/mastodon/components/emoji_view.jsx delete mode 100644 app/javascript/mastodon/components/searchability_icon.tsx delete mode 100644 app/javascript/mastodon/components/status_emoji_reactions_bar.jsx delete mode 100644 app/javascript/mastodon/containers/compacted_status_container.jsx delete mode 100644 app/javascript/mastodon/features/account/components/domain_pill.jsx delete mode 100644 app/javascript/mastodon/features/antenna_adder/components/antenna.jsx delete mode 100644 app/javascript/mastodon/features/antenna_adder/index.jsx delete mode 100644 app/javascript/mastodon/features/antenna_editor/components/account.jsx delete mode 100644 app/javascript/mastodon/features/antenna_editor/components/edit_antenna_form.jsx delete mode 100644 app/javascript/mastodon/features/antenna_editor/components/search.jsx delete mode 100644 app/javascript/mastodon/features/antenna_editor/index.jsx delete mode 100644 app/javascript/mastodon/features/antenna_setting/components/radio_panel.jsx delete mode 100644 app/javascript/mastodon/features/antenna_setting/components/text_list.jsx delete mode 100644 app/javascript/mastodon/features/antenna_setting/index.jsx delete mode 100644 app/javascript/mastodon/features/antenna_timeline/index.jsx delete mode 100644 app/javascript/mastodon/features/antennas/components/new_antenna_form.jsx delete mode 100644 app/javascript/mastodon/features/antennas/index.jsx delete mode 100644 app/javascript/mastodon/features/bookmark_categories/components/new_bookmark_category_form.jsx delete mode 100644 app/javascript/mastodon/features/bookmark_categories/index.jsx delete mode 100644 app/javascript/mastodon/features/bookmark_category_adder/components/account.jsx delete mode 100644 app/javascript/mastodon/features/bookmark_category_adder/components/bookmark_category.jsx delete mode 100644 app/javascript/mastodon/features/bookmark_category_adder/index.jsx delete mode 100644 app/javascript/mastodon/features/bookmark_category_statuses/components/edit_bookmark_category_form.jsx delete mode 100644 app/javascript/mastodon/features/bookmark_category_statuses/index.jsx delete mode 100644 app/javascript/mastodon/features/circle_adder/components/account.jsx delete mode 100644 app/javascript/mastodon/features/circle_adder/components/circle.jsx delete mode 100644 app/javascript/mastodon/features/circle_adder/index.jsx delete mode 100644 app/javascript/mastodon/features/circle_editor/components/account.jsx delete mode 100644 app/javascript/mastodon/features/circle_editor/components/edit_circle_form.jsx delete mode 100644 app/javascript/mastodon/features/circle_editor/components/search.jsx delete mode 100644 app/javascript/mastodon/features/circle_editor/index.jsx delete mode 100644 app/javascript/mastodon/features/circle_statuses/index.jsx delete mode 100644 app/javascript/mastodon/features/circles/components/new_circle_form.jsx delete mode 100644 app/javascript/mastodon/features/circles/index.jsx delete mode 100644 app/javascript/mastodon/features/compose/components/circle_dropdown.jsx delete mode 100644 app/javascript/mastodon/features/compose/components/edit_indicator.jsx delete mode 100644 app/javascript/mastodon/features/compose/components/expiration_dropdown.jsx delete mode 100644 app/javascript/mastodon/features/compose/components/featured_tags_dropdown.jsx delete mode 100644 app/javascript/mastodon/features/compose/components/privacy_dropdown_menu.jsx delete mode 100644 app/javascript/mastodon/features/compose/components/searchability_dropdown.jsx delete mode 100644 app/javascript/mastodon/features/compose/containers/circle_dropdown_container.js delete mode 100644 app/javascript/mastodon/features/compose/containers/expiration_dropdown_container.js delete mode 100644 app/javascript/mastodon/features/compose/containers/featured_tags_dropdown_container.js delete mode 100644 app/javascript/mastodon/features/compose/containers/markdown_button_container.js create mode 100644 app/javascript/mastodon/features/compose/containers/navigation_container.js create mode 100644 app/javascript/mastodon/features/compose/containers/poll_form_container.js create mode 100644 app/javascript/mastodon/features/compose/containers/reply_indicator_container.js create mode 100644 app/javascript/mastodon/features/compose/containers/search_results_container.js delete mode 100644 app/javascript/mastodon/features/compose/containers/searchability_dropdown_container.js create mode 100644 app/javascript/mastodon/features/compose/containers/sensitive_button_container.jsx create mode 100644 app/javascript/mastodon/features/compose/containers/upload_container.js create mode 100644 app/javascript/mastodon/features/compose/containers/upload_form_container.js create mode 100644 app/javascript/mastodon/features/compose/containers/upload_progress_container.js create mode 100644 app/javascript/mastodon/features/direct_timeline/containers/conversation_container.js create mode 100644 app/javascript/mastodon/features/direct_timeline/containers/conversations_list_container.js rename app/javascript/mastodon/features/emoji/{unicode_to_filename_s.js => unicode_to_filename.js} (100%) delete mode 100644 app/javascript/mastodon/features/emoji/unicode_to_filename.ts rename app/javascript/mastodon/features/emoji/{unicode_to_unified_name_s.js => unicode_to_unified_name.js} (100%) delete mode 100644 app/javascript/mastodon/features/emoji/unicode_to_unified_name.ts delete mode 100644 app/javascript/mastodon/features/emoji_reacted_statuses/index.jsx delete mode 100644 app/javascript/mastodon/features/emoji_reactions/index.jsx delete mode 100644 app/javascript/mastodon/features/explore/components/card.jsx create mode 100644 app/javascript/mastodon/features/home_timeline/components/explore_prompt.tsx delete mode 100644 app/javascript/mastodon/features/home_timeline/components/inline_follow_suggestions.jsx delete mode 100644 app/javascript/mastodon/features/mentioned_users/index.jsx delete mode 100644 app/javascript/mastodon/features/notifications/components/checkbox_with_label.jsx delete mode 100644 app/javascript/mastodon/features/notifications/components/filtered_notifications_banner.jsx delete mode 100644 app/javascript/mastodon/features/notifications/components/moderation_warning.tsx delete mode 100644 app/javascript/mastodon/features/notifications/components/notification_request.jsx delete mode 100644 app/javascript/mastodon/features/notifications/components/relationships_severance_event.jsx delete mode 100644 app/javascript/mastodon/features/notifications/request.jsx delete mode 100644 app/javascript/mastodon/features/notifications/requests.jsx create mode 100644 app/javascript/mastodon/features/picture_in_picture/components/header.jsx delete mode 100644 app/javascript/mastodon/features/picture_in_picture/components/header.tsx create mode 100644 app/javascript/mastodon/features/picture_in_picture/index.jsx delete mode 100644 app/javascript/mastodon/features/picture_in_picture/index.tsx delete mode 100644 app/javascript/mastodon/features/reaction_deck/components/reaction_emoji.jsx delete mode 100644 app/javascript/mastodon/features/reaction_deck/index.jsx delete mode 100644 app/javascript/mastodon/features/status_references/index.jsx create mode 100644 app/javascript/mastodon/features/ui/components/boost_modal.jsx delete mode 100644 app/javascript/mastodon/features/ui/components/boost_modal.tsx delete mode 100644 app/javascript/mastodon/features/ui/components/domain_block_modal.jsx create mode 100644 app/javascript/mastodon/features/ui/components/follow_requests_column_link.jsx create mode 100644 app/javascript/mastodon/features/ui/components/notifications_counter_icon.js delete mode 100644 app/javascript/mastodon/features/ui/util/sensitive_media_context.tsx delete mode 100644 app/javascript/mastodon/locales/tok.json delete mode 100644 app/javascript/mastodon/models/status.ts delete mode 100644 app/javascript/mastodon/reducers/antenna_adder.js delete mode 100644 app/javascript/mastodon/reducers/antenna_editor.js delete mode 100644 app/javascript/mastodon/reducers/antennas.js create mode 100644 app/javascript/mastodon/reducers/blocks.js delete mode 100644 app/javascript/mastodon/reducers/bookmark_categories.js delete mode 100644 app/javascript/mastodon/reducers/bookmark_category_adder.js delete mode 100644 app/javascript/mastodon/reducers/bookmark_category_editor.js create mode 100644 app/javascript/mastodon/reducers/boosts.js delete mode 100644 app/javascript/mastodon/reducers/circle_adder.js delete mode 100644 app/javascript/mastodon/reducers/circle_editor.js delete mode 100644 app/javascript/mastodon/reducers/circles.js create mode 100644 app/javascript/mastodon/reducers/markers.js delete mode 100644 app/javascript/mastodon/reducers/markers.ts create mode 100644 app/javascript/mastodon/reducers/mutes.js delete mode 100644 app/javascript/mastodon/reducers/notification_policy.js delete mode 100644 app/javascript/mastodon/reducers/notification_requests.js create mode 100644 app/javascript/mastodon/reducers/picture_in_picture.js delete mode 100644 app/javascript/mastodon/reducers/picture_in_picture.ts delete mode 100644 app/javascript/mastodon/reducers/reaction_deck.js rename app/javascript/mastodon/utils/__tests__/{html-test.ts => html-test.s} (67%) delete mode 100644 app/javascript/mastodon/utils/__tests__/numbers.ts delete mode 100644 app/javascript/mastodon/utils/mentions.ts delete mode 100644 app/javascript/material-icons/400-20px/bar_chart_4_bars-fill.svg delete mode 100644 app/javascript/material-icons/400-20px/bar_chart_4_bars.svg delete mode 100644 app/javascript/material-icons/400-20px/close-fill.svg delete mode 100644 app/javascript/material-icons/400-20px/close.svg delete mode 100644 app/javascript/material-icons/400-20px/mood-fill.svg delete mode 100644 app/javascript/material-icons/400-20px/mood.svg delete mode 100644 app/javascript/material-icons/400-20px/photo_library-fill.svg delete mode 100644 app/javascript/material-icons/400-20px/photo_library.svg delete mode 100644 app/javascript/material-icons/400-20px/settings-fill.svg delete mode 100644 app/javascript/material-icons/400-20px/settings.svg delete mode 100644 app/javascript/material-icons/400-20px/warning-fill.svg delete mode 100644 app/javascript/material-icons/400-20px/warning.svg delete mode 100644 app/javascript/material-icons/400-24px/badge-fill.svg delete mode 100644 app/javascript/material-icons/400-24px/badge.svg delete mode 100644 app/javascript/material-icons/400-24px/bar_chart_4_bars-fill.svg delete mode 100644 app/javascript/material-icons/400-24px/bar_chart_4_bars.svg delete mode 100644 app/javascript/material-icons/400-24px/cloud-fill.svg delete mode 100644 app/javascript/material-icons/400-24px/cloud.svg delete mode 100644 app/javascript/material-icons/400-24px/compare_arrows-fill.svg delete mode 100644 app/javascript/material-icons/400-24px/compare_arrows.svg delete mode 100644 app/javascript/material-icons/400-24px/dangerous-fill.svg delete mode 100644 app/javascript/material-icons/400-24px/dangerous.svg delete mode 100644 app/javascript/material-icons/400-24px/dns-fill.svg delete mode 100644 app/javascript/material-icons/400-24px/dns.svg delete mode 100644 app/javascript/material-icons/400-24px/domain_disabled-fill.svg delete mode 100644 app/javascript/material-icons/400-24px/domain_disabled.svg delete mode 100644 app/javascript/material-icons/400-24px/explore-fill.svg delete mode 100644 app/javascript/material-icons/400-24px/explore.svg delete mode 100644 app/javascript/material-icons/400-24px/format_quote-fill.svg delete mode 100644 app/javascript/material-icons/400-24px/format_quote.svg delete mode 100644 app/javascript/material-icons/400-24px/gavel-fill.svg delete mode 100644 app/javascript/material-icons/400-24px/gavel.svg delete mode 100644 app/javascript/material-icons/400-24px/globe-fill.svg delete mode 100644 app/javascript/material-icons/400-24px/globe.svg delete mode 100644 app/javascript/material-icons/400-24px/heart_broken-fill.svg delete mode 100644 app/javascript/material-icons/400-24px/heart_broken.svg delete mode 100644 app/javascript/material-icons/400-24px/history-fill.svg delete mode 100644 app/javascript/material-icons/400-24px/history.svg delete mode 100644 app/javascript/material-icons/400-24px/inventory_2-fill.svg delete mode 100644 app/javascript/material-icons/400-24px/inventory_2.svg delete mode 100644 app/javascript/material-icons/400-24px/key-fill.svg delete mode 100644 app/javascript/material-icons/400-24px/key.svg delete mode 100644 app/javascript/material-icons/400-24px/link_off-fill.svg delete mode 100644 app/javascript/material-icons/400-24px/link_off.svg delete mode 100644 app/javascript/material-icons/400-24px/markdown-fill.svg delete mode 100644 app/javascript/material-icons/400-24px/markdown.svg delete mode 100644 app/javascript/material-icons/400-24px/mood-fill.svg delete mode 100644 app/javascript/material-icons/400-24px/mood.svg delete mode 100644 app/javascript/material-icons/400-24px/navigate_before-fill.svg delete mode 100644 app/javascript/material-icons/400-24px/navigate_before.svg delete mode 100644 app/javascript/material-icons/400-24px/navigate_next-fill.svg delete mode 100644 app/javascript/material-icons/400-24px/navigate_next.svg delete mode 100644 app/javascript/material-icons/400-24px/no_encryption-fill.svg delete mode 100644 app/javascript/material-icons/400-24px/no_encryption.svg delete mode 100644 app/javascript/material-icons/400-24px/person_remove-fill.svg delete mode 100644 app/javascript/material-icons/400-24px/person_remove.svg delete mode 100644 app/javascript/material-icons/400-24px/photo_library-fill.svg delete mode 100644 app/javascript/material-icons/400-24px/photo_library.svg delete mode 100644 app/javascript/material-icons/400-24px/quiet_time-fill.svg delete mode 100644 app/javascript/material-icons/400-24px/quiet_time.svg delete mode 100644 app/javascript/material-icons/400-24px/shield-fill.svg delete mode 100644 app/javascript/material-icons/400-24px/shield.svg delete mode 100644 app/javascript/material-icons/400-24px/sticky_note-fill.svg delete mode 100644 app/javascript/material-icons/400-24px/sticky_note.svg delete mode 100644 app/javascript/material-icons/400-24px/timer-fill.svg delete mode 100644 app/javascript/material-icons/400-24px/timer.svg delete mode 100644 app/javascript/material-icons/400-24px/title-fill.svg delete mode 100644 app/javascript/material-icons/400-24px/title.svg delete mode 100644 app/javascript/material-icons/400-24px/translate-fill.svg delete mode 100644 app/javascript/material-icons/400-24px/translate.svg delete mode 100644 app/javascript/material-icons/400-24px/warning-fill.svg delete mode 100644 app/javascript/material-icons/400-24px/warning.svg delete mode 100644 app/javascript/material-icons/400-24px/wifi-fill.svg delete mode 100644 app/javascript/material-icons/400-24px/wifi.svg create mode 100644 app/javascript/packs/admin.jsx rename app/javascript/{entrypoints/application.ts => packs/application.js} (81%) rename app/javascript/{entrypoints/error.ts => packs/error.js} (64%) rename app/javascript/{entrypoints/inert.ts => packs/inert.js} (100%) rename app/javascript/{entrypoints/mailer.ts => packs/mailer.js} (100%) rename app/javascript/{entrypoints/public-path.ts => packs/public-path.js} (69%) create mode 100644 app/javascript/packs/public.jsx rename app/javascript/{entrypoints => packs}/remote_interaction_helper.ts (100%) rename app/javascript/{entrypoints/share.tsx => packs/share.jsx} (61%) create mode 100644 app/javascript/packs/sign_up.js create mode 100644 app/javascript/packs/two_factor_authentication.js delete mode 100644 app/javascript/styles/fonts/inter.scss delete mode 100644 app/javascript/styles/full-dark.scss delete mode 100644 app/javascript/styles/full-dark/diff.scss delete mode 100644 app/javascript/styles/full-dark/variables.scss delete mode 100644 app/javascript/svg-icons/repeat_active.svg mode change 100644 => 100755 app/javascript/svg-icons/repeat_disabled.svg mode change 100644 => 100755 app/javascript/svg-icons/repeat_private.svg delete mode 100644 app/javascript/svg-icons/repeat_private_active.svg delete mode 100644 app/lib/annual_report.rb delete mode 100644 app/lib/annual_report/archetype.rb delete mode 100644 app/lib/annual_report/commonly_interacted_with_accounts.rb delete mode 100644 app/lib/annual_report/most_reblogged_accounts.rb delete mode 100644 app/lib/annual_report/most_used_apps.rb delete mode 100644 app/lib/annual_report/percentiles.rb delete mode 100644 app/lib/annual_report/source.rb delete mode 100644 app/lib/annual_report/time_series.rb delete mode 100644 app/lib/annual_report/top_hashtags.rb delete mode 100644 app/lib/annual_report/top_statuses.rb delete mode 100644 app/lib/annual_report/type_distribution.rb delete mode 100644 app/lib/chewy_config.rb delete mode 100644 app/lib/signature_parser.rb delete mode 100644 app/lib/vacuum/list_statuses_vacuum.rb delete mode 100644 app/lib/vacuum/ng_histories_vacuum.rb delete mode 100644 app/models/account_relationship_severance_event.rb delete mode 100644 app/models/admin/ng_rule.rb delete mode 100644 app/models/admin/ng_word.rb delete mode 100644 app/models/admin/sensitive_word.rb delete mode 100644 app/models/antenna.rb delete mode 100644 app/models/antenna_account.rb delete mode 100644 app/models/antenna_domain.rb delete mode 100644 app/models/antenna_feed.rb delete mode 100644 app/models/antenna_tag.rb delete mode 100644 app/models/bookmark_category.rb delete mode 100644 app/models/bookmark_category_status.rb delete mode 100644 app/models/circle.rb delete mode 100644 app/models/circle_account.rb delete mode 100644 app/models/circle_status.rb delete mode 100644 app/models/concerns/account/master_settings.rb delete mode 100644 app/models/concerns/account/other_settings.rb delete mode 100644 app/models/concerns/browser_detection.rb delete mode 100644 app/models/concerns/custom_filter_cache.rb delete mode 100644 app/models/concerns/database_view_record.rb delete mode 100644 app/models/concerns/legacy_otp_secret.rb delete mode 100644 app/models/concerns/ranked_trend.rb delete mode 100644 app/models/concerns/status/domain_block_concern.rb delete mode 100644 app/models/emoji_reaction.rb delete mode 100644 app/models/friend_domain.rb delete mode 100644 app/models/generated_annual_report.rb delete mode 100644 app/models/instance_info.rb delete mode 100644 app/models/list_status.rb delete mode 100644 app/models/ng_rule.rb delete mode 100644 app/models/ng_rule_history.rb delete mode 100644 app/models/ng_word.rb delete mode 100644 app/models/ngword_history.rb delete mode 100644 app/models/notification_permission.rb delete mode 100644 app/models/notification_policy.rb delete mode 100644 app/models/notification_request.rb delete mode 100644 app/models/pending_follow_request.rb delete mode 100644 app/models/pending_status.rb delete mode 100644 app/models/relationship_severance_event.rb delete mode 100644 app/models/scheduled_expiration_status.rb delete mode 100644 app/models/sensitive_word.rb delete mode 100644 app/models/severed_relationship.rb delete mode 100644 app/models/specified_domain.rb delete mode 100644 app/models/status_capability_token.rb delete mode 100644 app/models/status_reference.rb delete mode 100644 app/policies/friend_server_policy.rb delete mode 100644 app/policies/ng_words_policy.rb delete mode 100644 app/policies/sensitive_words_policy.rb delete mode 100644 app/presenters/annual_reports_presenter.rb delete mode 100644 app/presenters/emoji_reaction_accounts_presenter.rb delete mode 100644 app/presenters/oauth_metadata_presenter.rb delete mode 100644 app/serializers/activitypub/activity_for_friend_serializer.rb delete mode 100644 app/serializers/activitypub/activity_for_misskey_serializer.rb delete mode 100644 app/serializers/activitypub/context_serializer.rb delete mode 100644 app/serializers/activitypub/emoji_reaction_serializer.rb delete mode 100644 app/serializers/activitypub/note_for_friend_serializer.rb delete mode 100644 app/serializers/activitypub/note_for_misskey_serializer.rb delete mode 100644 app/serializers/activitypub/undo_emoji_reaction_serializer.rb delete mode 100644 app/serializers/oauth_metadata_serializer.rb delete mode 100644 app/serializers/rest/account_relationship_severance_event_serializer.rb delete mode 100644 app/serializers/rest/account_warning_serializer.rb delete mode 100644 app/serializers/rest/annual_report_serializer.rb delete mode 100644 app/serializers/rest/annual_reports_serializer.rb delete mode 100644 app/serializers/rest/antenna_serializer.rb delete mode 100644 app/serializers/rest/appeal_serializer.rb delete mode 100644 app/serializers/rest/bookmark_category_serializer.rb delete mode 100644 app/serializers/rest/circle_serializer.rb delete mode 100644 app/serializers/rest/custom_emoji_slim_serializer.rb delete mode 100644 app/serializers/rest/emoji_reaction_account_serializer.rb delete mode 100644 app/serializers/rest/emoji_reaction_serializer.rb delete mode 100644 app/serializers/rest/emoji_reactions_grouped_by_name_serializer.rb delete mode 100644 app/serializers/rest/notification_policy_serializer.rb delete mode 100644 app/serializers/rest/notification_request_serializer.rb delete mode 100644 app/serializers/rest/notify_emoji_reaction_serializer.rb delete mode 100644 app/serializers/rest/status_internal_serializer.rb delete mode 100644 app/services/accept_notification_request_service.rb delete mode 100644 app/services/activate_follow_requests_service.rb delete mode 100644 app/services/activate_remote_statuses_service.rb delete mode 100644 app/services/activitypub/fetch_references_service.rb delete mode 100644 app/services/concerns/account_scope.rb delete mode 100644 app/services/delivery_antenna_service.rb delete mode 100644 app/services/emoji_react_service.rb delete mode 100644 app/services/group_reblog_service.rb delete mode 100644 app/services/process_conversation_service.rb delete mode 100644 app/services/process_references_service.rb delete mode 100644 app/services/searchability_update_service.rb delete mode 100644 app/services/un_emoji_react_service.rb delete mode 100644 app/services/update_status_expiration_service.rb delete mode 100644 app/validators/email_address_validator.rb delete mode 100644 app/validators/emoji_reaction_validator.rb delete mode 100644 app/views/admin/accounts/_user_ip.html.haml delete mode 100644 app/views/admin/announcements/_form.html.haml delete mode 100644 app/views/admin/custom_emojis/edit.html.haml delete mode 100644 app/views/admin/domain_blocks/_domain_block_list.html.haml delete mode 100644 app/views/admin/domain_blocks/_form.html.haml delete mode 100644 app/views/admin/friend_servers/_friend_domain.html.haml delete mode 100644 app/views/admin/friend_servers/_friend_fields.html.haml delete mode 100644 app/views/admin/friend_servers/edit.html.haml delete mode 100644 app/views/admin/friend_servers/index.html.haml delete mode 100644 app/views/admin/friend_servers/new.html.haml delete mode 100644 app/views/admin/ng_rule_histories/_history.html.haml delete mode 100644 app/views/admin/ng_rule_histories/show.html.haml delete mode 100644 app/views/admin/ng_rules/_ng_rule.html.haml delete mode 100644 app/views/admin/ng_rules/_ng_rule_fields.html.haml delete mode 100644 app/views/admin/ng_rules/edit.html.haml delete mode 100644 app/views/admin/ng_rules/index.html.haml delete mode 100644 app/views/admin/ng_rules/new.html.haml delete mode 100644 app/views/admin/ng_words/keywords/_ng_word.html.haml delete mode 100644 app/views/admin/ng_words/keywords/show.html.haml delete mode 100644 app/views/admin/ng_words/settings/show.html.haml delete mode 100644 app/views/admin/ng_words/shared/_links.html.haml delete mode 100644 app/views/admin/ng_words/white_list/_specified_domain.html.haml delete mode 100644 app/views/admin/ng_words/white_list/show.html.haml delete mode 100644 app/views/admin/ngword_histories/_history.html.haml delete mode 100644 app/views/admin/ngword_histories/index.html.haml delete mode 100644 app/views/admin/rules/_form.html.haml delete mode 100644 app/views/admin/sensitive_words/_sensitive_word.html.haml delete mode 100644 app/views/admin/sensitive_words/show.html.haml delete mode 100644 app/views/admin/special_domains/show.html.haml delete mode 100644 app/views/admin/special_instances/show.html.haml delete mode 100644 app/views/admin/warning_presets/_form.html.haml delete mode 100644 app/views/admin_mailer/auto_close_registrations.text.erb delete mode 100644 app/views/admin_mailer/new_pending_friend_server.text.erb delete mode 100644 app/views/antennas/_antenna.html.haml delete mode 100644 app/views/antennas/_antenna_fields.html.haml delete mode 100644 app/views/antennas/edit.html.haml delete mode 100644 app/views/antennas/index.html.haml delete mode 100644 app/views/application/_sidebar.html.haml delete mode 100644 app/views/application/mailer/_account.html.haml delete mode 100644 app/views/application/mailer/_button.html.haml delete mode 100644 app/views/application/mailer/_checklist.html.haml delete mode 100644 app/views/application/mailer/_feature.html.haml delete mode 100644 app/views/application/mailer/_follow.html.haml delete mode 100644 app/views/application/mailer/_frame.html.haml delete mode 100644 app/views/application/mailer/_hashtag.html.haml delete mode 100644 app/views/application/mailer/_heading.html.haml delete mode 100644 app/views/auth/confirmations/limitation_error.html.haml delete mode 100644 app/views/redirects/show.html.haml delete mode 100644 app/views/settings/preferences/reaching/show.html.haml delete mode 100644 app/views/settings/privacy_extra/show.html.haml delete mode 100644 app/views/severed_relationships/index.html.haml delete mode 100644 app/views/user_mailer/failed_2fa.html.haml delete mode 100644 app/views/user_mailer/failed_2fa.text.erb delete mode 100644 app/workers/activate_remote_account_worker.rb delete mode 100644 app/workers/activitypub/emoji_reaction_distribution_worker.rb delete mode 100644 app/workers/activitypub/fetch_instance_info_worker.rb delete mode 100644 app/workers/activitypub/fetch_remote_status_worker.rb delete mode 100644 app/workers/activitypub/forward_conversation_worker.rb delete mode 100644 app/workers/delivery_emoji_reaction_worker.rb delete mode 100644 app/workers/generate_annual_report_worker.rb delete mode 100644 app/workers/process_references_worker.rb delete mode 100644 app/workers/remove_expired_status_worker.rb delete mode 100644 app/workers/scheduler/auto_close_registrations_scheduler.rb delete mode 100644 app/workers/searchability_update_worker.rb delete mode 100644 app/workers/unfilter_notifications_worker.rb delete mode 100755 bin/dev create mode 100644 config/deploy.rb delete mode 100644 config/elasticsearch.default-ja-sudachi.yml delete mode 100644 config/elasticsearch.default.yml delete mode 100644 config/initializers/active_record_encryption.rb delete mode 100644 config/initializers/enable_yjit.rb delete mode 100644 config/initializers/opentelemetry.rb delete mode 100644 config/initializers/propshaft.rb delete mode 100644 config/initializers/simple_cov_source_file.rb delete mode 100644 config/locales/activerecord.tok.yml delete mode 100644 config/locales/devise.tok.yml delete mode 100644 config/locales/doorkeeper.tok.yml delete mode 100644 config/locales/simple_form.tok.yml delete mode 100644 config/locales/tok.yml delete mode 100644 config/templates/privacy-policy.md delete mode 100644 config/webpack/rules/node_modules.js delete mode 100644 db/migrate/20230222232121_create_emoji_reactions.rb delete mode 100644 db/migrate/20230223102416_add_emoji_reactions_to_status_stats.rb delete mode 100644 db/migrate/20230308061833_add_image_size_to_custom_emojis.rb delete mode 100644 db/migrate/20230314021909_add_group_message_following_only_to_accounts.rb delete mode 100644 db/migrate/20230314081013_add_group_allow_private_message_to_accounts.rb delete mode 100644 db/migrate/20230314121142_add_group_activitypub_count_to_account_stats.rb delete mode 100644 db/migrate/20230320234918_create_scheduled_expiration_statuses.rb delete mode 100644 db/migrate/20230405121613_add_searchability_to_statuses.rb delete mode 100644 db/migrate/20230405121625_add_searchability_to_accounts.rb delete mode 100644 db/migrate/20230406041523_change_searchability_default_value.rb delete mode 100644 db/migrate/20230410004651_add_emoji_reactions_count_to_status_stats.rb delete mode 100644 db/migrate/20230412005311_add_markdown_to_statuses.rb delete mode 100644 db/migrate/20230412073021_add_markdown_to_status_edits.rb delete mode 100644 db/migrate/20230414010523_add_emoji_reactions_count_per_account_to_status_stats.rb delete mode 100644 db/migrate/20230420081634_add_min_emojis_to_account_statuses_cleanup_policies.rb delete mode 100644 db/migrate/20230423002728_create_antennas.rb delete mode 100644 db/migrate/20230423233429_add_dissubscribable_to_accounts.rb delete mode 100644 db/migrate/20230426013738_add_excludes_to_antennas.rb delete mode 100644 db/migrate/20230427022606_add_reject_favourite_to_domain_blocks.rb delete mode 100644 db/migrate/20230427072650_add_reject_sending_to_domain_blocks.rb delete mode 100644 db/migrate/20230427122753_add_some_to_domain_blocks.rb delete mode 100644 db/migrate/20230427233749_add_hidden_to_domain_blocks.rb delete mode 100644 db/migrate/20230428111230_add_emoji_reaction_streaming_to_accounts.rb delete mode 100644 db/migrate/20230430110057_add_reject_invalid_subscription_to_domain_blocks.rb delete mode 100644 db/migrate/20230509045358_change_antennas_list_to_nullable.rb delete mode 100644 db/migrate/20230510000439_add_stl_to_antennas.rb delete mode 100644 db/migrate/20230510004621_remove_stop_emoji_reaction_streaming_from_accounts.rb delete mode 100644 db/migrate/20230510033040_add_ignore_reblog_to_antennas.rb delete mode 100644 db/migrate/20230512122757_add_reject_reply_exclude_followers_to_domain_blocks.rb delete mode 100644 db/migrate/20230514030455_add_settings_to_accounts.rb delete mode 100644 db/migrate/20230521122642_add_aliases_to_custom_emoji.rb delete mode 100644 db/migrate/20230522082252_add_is_sensitive_to_custom_emojis.rb delete mode 100644 db/migrate/20230522093135_add_license_to_custom_emojis.rb delete mode 100644 db/migrate/20230705232953_create_status_references.rb delete mode 100644 db/migrate/20230706031715_add_status_referred_by_count_to_status_stats.rb delete mode 100644 db/migrate/20230714004824_add_exclude_options_to_filters.rb delete mode 100644 db/migrate/20230804222017_create_instance_infoes.rb delete mode 100644 db/migrate/20230812083752_create_status_capability_token.rb delete mode 100644 db/migrate/20230812130612_add_limited_scope_to_statuses.rb delete mode 100644 db/migrate/20230819084858_add_no_insert_feeds_to_antennas.rb delete mode 100644 db/migrate/20230821061713_create_circles.rb delete mode 100644 db/migrate/20230822041804_add_antenna_elements_uniqueness.rb delete mode 100644 db/migrate/20230826023400_create_bookmark_categories.rb delete mode 100644 db/migrate/20230911022527_add_ltl_to_antennas.rb delete mode 100644 db/migrate/20230919232836_add_attribute_to_status_references.rb delete mode 100644 db/migrate/20230923103430_create_circle_statuses.rb delete mode 100644 db/migrate/20230930233930_add_quote_to_status_references.rb delete mode 100644 db/migrate/20231001031337_add_quote_to_statuses.rb delete mode 100644 db/migrate/20231001050733_add_with_quote_to_custom_filters.rb delete mode 100644 db/migrate/20231005074832_create_friend_domains.rb delete mode 100644 db/migrate/20231006030102_add_reject_friend_to_domain_blocks.rb delete mode 100644 db/migrate/20231007090808_improve_search_for_account_statuses.rb delete mode 100644 db/migrate/20231009235215_add_delivery_local_to_friend_domains.rb delete mode 100644 db/migrate/20231018192110_add_index_to_webauthn_credentials_user_id_nickname.rb delete mode 100644 db/migrate/20231018193209_add_index_to_account_alias_uri_account_id.rb delete mode 100644 db/migrate/20231018193355_add_index_to_custom_filter_statuses_status_custom_filter.rb delete mode 100644 db/migrate/20231018193659_add_index_to_identities_uid_provider.rb delete mode 100644 db/migrate/20231023083359_convert_dtl_force_settings.rb delete mode 100644 db/migrate/20231028004612_create_list_statuses.rb delete mode 100644 db/migrate/20231028005948_add_notify_to_list.rb delete mode 100644 db/migrate/20231105225839_add_master_settings_to_accounts.rb delete mode 100644 db/migrate/20231115001356_add_inbox_url_to_conversations.rb delete mode 100644 db/migrate/20231130031209_add_index_on_conversations_ancestor_status_id.rb delete mode 100644 db/migrate/20231130083634_add_index_on_statuses_conversation_id.rb delete mode 100644 db/migrate/20231210154528_add_otp_secret_to_user.rb delete mode 100644 db/migrate/20231212225737_improve_index_for_public_timeline_speed.rb delete mode 100644 db/migrate/20231214225249_index_to_statuses_url.rb delete mode 100644 db/migrate/20240109035435_remove_hidden_anonymous_from_domain_blocks.rb delete mode 100644 db/migrate/20240111033014_create_generated_annual_reports.rb delete mode 100644 db/migrate/20240117021025_remove_unused_table.rb delete mode 100644 db/migrate/20240121231131_add_block_trends_to_domain_blocks.rb delete mode 100644 db/migrate/20240212224800_add_uri_to_favourites.rb delete mode 100644 db/migrate/20240216042730_create_ngword_histories.rb delete mode 100644 db/migrate/20240217022038_add_count_to_ngword_histories.rb delete mode 100644 db/migrate/20240217093511_add_remote_pending_to_accounts.rb delete mode 100644 db/migrate/20240217171534_remove_defaults_for_status_pins_timestamps.rb delete mode 100644 db/migrate/20240217230006_create_pending_follow_requests.rb delete mode 100644 db/migrate/20240218233621_create_ng_rules.rb delete mode 100644 db/migrate/20240221195424_add_filtered_to_notifications.rb delete mode 100644 db/migrate/20240221195828_create_notification_requests.rb delete mode 100644 db/migrate/20240221211359_notification_request_ids_to_timestamp_ids.rb delete mode 100644 db/migrate/20240222193403_create_notification_permissions.rb delete mode 100644 db/migrate/20240222203722_create_notification_policies.rb delete mode 100644 db/migrate/20240227033337_remove_group_attrs_from_accounts.rb delete mode 100644 db/migrate/20240227191620_add_filtered_index_on_notifications.rb delete mode 100644 db/migrate/20240227225017_create_pending_statuses.rb delete mode 100644 db/migrate/20240229233617_remove_reject_reply_from_domain_blocks.rb delete mode 100644 db/migrate/20240304090449_migrate_interaction_settings_to_policy.rb delete mode 100644 db/migrate/20240310123453_add_hint_to_rules.rb delete mode 100644 db/migrate/20240312100644_create_relationship_severance_events.rb delete mode 100644 db/migrate/20240312105620_create_severed_relationships.rb delete mode 100644 db/migrate/20240312230204_create_sensitive_words.rb delete mode 100644 db/migrate/20240320140159_create_account_relationship_severance_events.rb delete mode 100644 db/migrate/20240320163441_change_notification_request_last_status_id_nullable.rb delete mode 100644 db/migrate/20240320231633_create_ng_words.rb delete mode 100644 db/migrate/20240322125607_add_followers_and_following_counts_to_account_relationship_severance_events.rb delete mode 100644 db/migrate/20240401222541_create_specified_domains.rb delete mode 100644 db/migrate/20240426000034_move_account_warning_notifications.rb delete mode 100644 db/migrate/20240426233435_migrate_moderation_warning_notifications_from_account.rb delete mode 100644 db/migrate/20240509220635_revert_media_file_size_column_to_big_int.rb delete mode 100644 db/migrate/20240510192043_fix_notification_policies_foreign_key.rb delete mode 100644 db/post_migrate/20230314120530_remove_group_message_following_only_from_accounts.rb delete mode 100644 db/post_migrate/20231021005339_remove_remote_uri_from_local_custom_emojis.rb delete mode 100644 db/post_migrate/20231022074913_add_statuses_quote_index.rb delete mode 100644 db/post_migrate/20240117022353_remove_legacy_domain_block_columns.rb delete mode 100644 db/post_migrate/20240212230358_fix_uri_index_to_emoji_reactions.rb delete mode 100644 db/post_migrate/20240217215134_improve_remote_pending_accounts_index.rb delete mode 100644 db/post_migrate/20240227222450_index_to_sort_for_ng_word_created_date.rb delete mode 100644 db/post_migrate/20240307180905_migrate_devise_two_factor_secrets.rb delete mode 100644 db/post_migrate/20240321160706_migrate_interaction_settings_to_policy_again.rb delete mode 100644 db/post_migrate/20240322130318_remove_relationships_count_from_account_relationship_severance_events.rb delete mode 100644 db/post_migrate/20240322161611_remove_obsolete_roles_from_users.rb delete mode 100644 db/post_migrate/20240326231854_improve_preview_cards_vacuum.rb delete mode 100644 db/post_migrate/20240327234026_fix_duplicate_indices_for_kmyblue_original_functions.rb delete mode 100644 dist/nginx-before-certbot.conf delete mode 100644 install/12.0/setup-imagemagick-7.sh delete mode 100755 install/12.0/setup1.sh delete mode 100644 install/12.0/setup2.sh delete mode 100644 install/5.0/setup-imagemagick-7.sh delete mode 100644 install/5.0/setup1.sh delete mode 100644 install/5.0/setup2.sh delete mode 100644 install/5.0/setup3.sh delete mode 100644 install/5.0/setup4.sh delete mode 100644 install/9.0/setup-imagemagick-7.sh delete mode 100644 install/9.0/setup1.sh delete mode 100644 install/9.0/setup2.sh delete mode 100644 install/9.0/setup3.sh delete mode 100644 install/9.0/setup4.sh delete mode 100644 lib/elasticsearch/client_extensions.rb create mode 100644 lib/http_extensions.rb delete mode 100644 lib/mastodon/cli/ohagi.rb rename lib/{premailer_bundled_asset_strategy.rb => premailer_webpack_strategy.rb} (80%) delete mode 100644 lib/tasks/dangerous.rake delete mode 100644 lib/tasks/sidekiq_unique_jobs.rake create mode 100644 lib/tasks/spec.rake rename lib/templates/haml/scaffold/{_form.html.haml.tt => _form.html.haml} (100%) mode change 100755 => 100644 public/favicon.ico create mode 100644 spec/controllers/api/v1/accounts/credentials_controller_spec.rb rename spec/{requests/api/v1/accounts/follower_accounts_spec.rb => controllers/api/v1/accounts/follower_accounts_controller_spec.rb} (69%) rename spec/{requests/api/v1/accounts/following_accounts_spec.rb => controllers/api/v1/accounts/following_accounts_controller_spec.rb} (69%) create mode 100644 spec/controllers/api/v1/accounts/statuses_controller_spec.rb rename spec/{requests/api/v1/admin/trends/links/preview_card_providers_spec.rb => controllers/api/v1/admin/trends/links/preview_card_providers_controller_spec.rb} (60%) rename spec/{requests/api/v1/admin/trends/statuses_spec.rb => controllers/api/v1/admin/trends/statuses_controller_spec.rb} (63%) rename spec/{requests/api/v1/admin/trends/tags_spec.rb => controllers/api/v1/admin/trends/tags_controller_spec.rb} (64%) rename spec/{requests/api/v1/announcements/reactions_spec.rb => controllers/api/v1/announcements/reactions_controller_spec.rb} (64%) rename spec/{requests/api/v1/announcements_spec.rb => controllers/api/v1/announcements_controller_spec.rb} (59%) delete mode 100644 spec/controllers/api/v1/circles/statuses_controller_spec.rb create mode 100644 spec/controllers/api/v1/conversations_controller_spec.rb rename spec/{requests/api/v1/filters_spec.rb => controllers/api/v1/filters_controller_spec.rb} (75%) rename spec/{requests/api/v1/markers_spec.rb => controllers/api/v1/markers_controller_spec.rb} (50%) rename spec/{requests/api/v1/polls/votes_spec.rb => controllers/api/v1/polls/votes_controller_spec.rb} (61%) create mode 100644 spec/controllers/api/v1/push/subscriptions_controller_spec.rb rename spec/{requests/api/v1/statuses/favourited_by_accounts_spec.rb => controllers/api/v1/statuses/favourited_by_accounts_controller_spec.rb} (52%) rename spec/{requests/api/v1/statuses/histories_spec.rb => controllers/api/v1/statuses/histories_controller_spec.rb} (53%) rename spec/{requests/api/v1/statuses/mutes_spec.rb => controllers/api/v1/statuses/mutes_controller_spec.rb} (66%) rename spec/{requests/api/v1/statuses/reblogged_by_accounts_spec.rb => controllers/api/v1/statuses/reblogged_by_accounts_controller_spec.rb} (57%) rename spec/{requests/api/v1/statuses/reblogs_spec.rb => controllers/api/v1/statuses/reblogs_controller_spec.rb} (81%) rename spec/{requests/api/v1/statuses/translations_spec.rb => controllers/api/v1/statuses/translations_controller_spec.rb} (65%) rename spec/{requests/api/v1/streaming_spec.rb => controllers/api/v1/streaming_controller_spec.rb} (51%) rename spec/controllers/api/v1/{lists_controller_spec.rb => timelines/list_controller_spec.rb} (78%) rename spec/{requests/api/v1/trends/links_spec.rb => controllers/api/v1/trends/links_controller_spec.rb} (84%) rename spec/{requests/api/v1/trends/statuses_spec.rb => controllers/api/v1/trends/statuses_controller_spec.rb} (83%) rename spec/{requests/api/v1/trends/tags_spec.rb => controllers/api/v1/trends/tags_controller_spec.rb} (85%) rename spec/{requests/api/v2/admin/accounts_spec.rb => controllers/api/v2/admin/accounts_controller_spec.rb} (94%) rename spec/{requests/api/v2/filters/keywords_spec.rb => controllers/api/v2/filters/keywords_controller_spec.rb} (79%) rename spec/{requests/api/v2/filters/statuses_spec.rb => controllers/api/v2/filters/statuses_controller_spec.rb} (81%) delete mode 100644 spec/controllers/concerns/api/error_handling_spec.rb rename spec/controllers/concerns/{preloading_concern_spec.rb => cache_concern_spec.rb} (79%) delete mode 100644 spec/fabricators/account_relationship_severance_event_fabricator.rb delete mode 100644 spec/fabricators/antenna_account_fabricator.rb delete mode 100644 spec/fabricators/antenna_domain_fabricator.rb delete mode 100644 spec/fabricators/antenna_fabricator.rb delete mode 100644 spec/fabricators/antenna_tag_fabricator.rb delete mode 100644 spec/fabricators/bookmark_category_fabricator.rb delete mode 100644 spec/fabricators/bookmark_category_status_fabricator.rb delete mode 100644 spec/fabricators/circle_account_fabricator.rb delete mode 100644 spec/fabricators/circle_fabricator.rb delete mode 100644 spec/fabricators/circle_status_fabricator.rb delete mode 100644 spec/fabricators/emoji_reaction_fabricator.rb delete mode 100644 spec/fabricators/friend_domain_fabricator.rb delete mode 100644 spec/fabricators/instance_info_fabricator.rb delete mode 100644 spec/fabricators/list_status_fabricator.rb delete mode 100644 spec/fabricators/ng_rule_fabricator.rb delete mode 100644 spec/fabricators/ng_rule_history_fabricator.rb delete mode 100644 spec/fabricators/ng_word_fabricator.rb delete mode 100644 spec/fabricators/ngword_history_fabricator.rb delete mode 100644 spec/fabricators/notification_permission_fabricator.rb delete mode 100644 spec/fabricators/notification_policy_fabricator.rb delete mode 100644 spec/fabricators/notification_request_fabricator.rb delete mode 100644 spec/fabricators/pending_follow_request_fabricator.rb delete mode 100644 spec/fabricators/pending_status_fabricator.rb delete mode 100644 spec/fabricators/relationship_severance_event_fabricator.rb delete mode 100644 spec/fabricators/sensitive_word_fabricator.rb delete mode 100644 spec/fabricators/severed_relationship_fabricator.rb delete mode 100644 spec/fabricators/specified_domain_fabricator.rb delete mode 100644 spec/fabricators/status_reference_fabricator.rb rename spec/{system => features}/admin/accounts_spec.rb (100%) rename spec/{system => features}/admin/custom_emojis_spec.rb (100%) rename spec/{system => features}/admin/domain_blocks_spec.rb (79%) rename spec/{system => features}/admin/email_domain_blocks_spec.rb (100%) rename spec/{system => features}/admin/ip_blocks_spec.rb (100%) rename spec/{system => features}/admin/software_updates_spec.rb (100%) rename spec/{system => features}/admin/statuses_spec.rb (100%) rename spec/{system => features}/admin/trends/links/preview_card_providers_spec.rb (100%) rename spec/{system => features}/admin/trends/links_spec.rb (100%) rename spec/{system => features}/admin/trends/statuses_spec.rb (100%) rename spec/{system => features}/admin/trends/tags_spec.rb (100%) rename spec/{system => features}/captcha_spec.rb (76%) rename spec/{system => features}/log_in_spec.rb (100%) rename spec/{system => features}/oauth_spec.rb (81%) rename spec/{system => features}/profile_spec.rb (100%) delete mode 100644 spec/fixtures/files/text.png delete mode 100644 spec/helpers/theme_helper_spec.rb delete mode 100644 spec/lib/admin/metrics/dimension_spec.rb delete mode 100644 spec/lib/admin/metrics/measure_spec.rb delete mode 100644 spec/lib/signature_parser_spec.rb delete mode 100644 spec/lib/vacuum/list_statuses_vacuum_spec.rb delete mode 100644 spec/lib/vacuum/ng_histories_vacuum_spec.rb delete mode 100644 spec/models/account_suggestions/friends_of_friends_source_spec.rb delete mode 100644 spec/models/admin/ng_rule_spec.rb delete mode 100644 spec/models/admin/ng_word_spec.rb delete mode 100644 spec/models/admin/sensitive_word_spec.rb delete mode 100644 spec/models/custom_filter_keyword_spec.rb delete mode 100644 spec/models/friend_domain_spec.rb delete mode 100644 spec/models/instance_info_spec.rb delete mode 100644 spec/models/instance_spec.rb delete mode 100644 spec/models/ng_rule_spec.rb delete mode 100644 spec/models/notification_policy_spec.rb delete mode 100644 spec/models/notification_request_spec.rb delete mode 100644 spec/models/relationship_severance_event_spec.rb delete mode 100644 spec/models/severed_relationship_spec.rb delete mode 100644 spec/requests/api/v1/accounts/statuses_spec.rb delete mode 100644 spec/requests/api/v1/antennas_spec.rb delete mode 100644 spec/requests/api/v1/circles/accounts_spec.rb delete mode 100644 spec/requests/api/v1/circles_spec.rb delete mode 100644 spec/requests/api/v1/conversations_spec.rb delete mode 100644 spec/requests/api/v1/notifications/policies_spec.rb delete mode 100644 spec/requests/api/v1/notifications/requests_spec.rb delete mode 100644 spec/requests/api/v1/peers/search_spec.rb delete mode 100644 spec/requests/api/v1/push/subscriptions_spec.rb delete mode 100644 spec/requests/api/v1/statuses/emoji_reactions_spec.rb delete mode 100644 spec/requests/api/v1/timelines/antenna_spec.rb delete mode 100644 spec/requests/api/v1/timelines/list_spec.rb delete mode 100644 spec/requests/disabled_oauth_endpoints_spec.rb delete mode 100644 spec/requests/well_known/oauth_metadata_spec.rb delete mode 100644 spec/search/services/statuses_search_service_spec.rb delete mode 100644 spec/serializers/activitypub/note_for_misskey_serializer_spec.rb delete mode 100644 spec/serializers/node_info/serializer_spec.rb delete mode 100644 spec/serializers/rest/custom_emoji_serializer_spec.rb delete mode 100644 spec/services/activate_follow_requests_service_spec.rb delete mode 100644 spec/services/activate_remote_statuses_service_spec.rb delete mode 100644 spec/services/activitypub/fetch_references_service_spec.rb delete mode 100644 spec/services/after_unallow_domain_service_spec.rb delete mode 100644 spec/services/appeal_service_spec.rb delete mode 100644 spec/services/approve_appeal_service_spec.rb delete mode 100644 spec/services/create_featured_tag_service_spec.rb delete mode 100644 spec/services/delivery_antenna_service_spec.rb delete mode 100644 spec/services/emoji_react_service_spec.rb delete mode 100644 spec/services/move_service_spec.rb delete mode 100644 spec/services/process_hashtags_service_spec.rb delete mode 100644 spec/services/process_references_service_spec.rb delete mode 100644 spec/services/remove_domains_from_followers_service_spec.rb delete mode 100644 spec/services/remove_featured_tag_service_spec.rb delete mode 100644 spec/services/tag_search_service_spec.rb delete mode 100644 spec/services/un_emoji_react_service_spec.rb delete mode 100644 spec/services/unfavourite_service_spec.rb delete mode 100644 spec/services/unmute_service_spec.rb delete mode 100644 spec/services/vote_service_spec.rb delete mode 100644 spec/services/webhook_service_spec.rb delete mode 100644 spec/support/matchers/api_pagination.rb delete mode 100644 spec/support/threading_helpers.rb delete mode 100644 spec/system/ocr_spec.rb delete mode 100644 spec/system/redirections_spec.rb delete mode 100644 spec/system/report_interface_spec.rb delete mode 100644 spec/system/severed_relationships_spec.rb delete mode 100644 spec/workers/activitypub/fetch_instance_info_worker_spec.rb delete mode 100644 spec/workers/activitypub/fetch_remote_status_worker_spec.rb delete mode 100644 spec/workers/process_references_worker_spec.rb delete mode 100644 spec/workers/scheduler/auto_close_registrations_scheduler_spec.rb delete mode 100644 streaming/.eslintrc.cjs create mode 100644 streaming/.eslintrc.js delete mode 100644 streaming/errors.js delete mode 100644 streaming/logging.js diff --git a/.browserslistrc b/.browserslistrc index 0376af4bcc..54dd3aaf34 100644 --- a/.browserslistrc +++ b/.browserslistrc @@ -1,9 +1,7 @@ [production] defaults -> 0.2% -ios >= 15.6 +not IE 11 not dead -not OperaMini all [development] supports es6-module diff --git a/.bundler-audit.yml b/.bundler-audit.yml deleted file mode 100644 index 9c4d4511f1..0000000000 --- a/.bundler-audit.yml +++ /dev/null @@ -1,8 +0,0 @@ ---- -ignore: - # devise-two-factor advisory about brute-forcing TOTP - # We have rate-limits on authentication endpoints in place (including second - # factor verification) since Mastodon v3.2.0 - - CVE-2024-0227 - - CVE-2024-27456 - - CVE-2023-51774 diff --git a/.devcontainer/docker-compose.yml b/.devcontainer/docker-compose.yml index 97331f74ea..21ee078d60 100644 --- a/.devcontainer/docker-compose.yml +++ b/.devcontainer/docker-compose.yml @@ -70,7 +70,7 @@ services: hard: -1 libretranslate: - image: libretranslate/libretranslate:v1.5.7 + image: libretranslate/libretranslate:v1.5.3 restart: unless-stopped volumes: - lt-data:/home/libretranslate/.local diff --git a/.env.development b/.env.development deleted file mode 100644 index 0330da8377..0000000000 --- a/.env.development +++ /dev/null @@ -1,4 +0,0 @@ -# Required by ActiveRecord encryption feature -ACTIVE_RECORD_ENCRYPTION_DETERMINISTIC_KEY=fkSxKD2bF396kdQbrP1EJ7WbU7ZgNokR -ACTIVE_RECORD_ENCRYPTION_KEY_DERIVATION_SALT=r0hvVmzBVsjxC7AMlwhOzmtc36ZCOS1E -ACTIVE_RECORD_ENCRYPTION_PRIMARY_KEY=PhdFyyfy5xJ7WVd2lWBpcPScRQHzRTNr diff --git a/.env.test b/.env.test index 539bdeb795..2f8c1afd6e 100644 --- a/.env.test +++ b/.env.test @@ -3,10 +3,3 @@ NODE_ENV=production # Federation LOCAL_DOMAIN=cb6e6126.ngrok.io LOCAL_HTTPS=true -# Elasticsearch -ES_PREFIX=test - -# Required by ActiveRecord encryption feature -ACTIVE_RECORD_ENCRYPTION_DETERMINISTIC_KEY=fkSxKD2bF396kdQbrP1EJ7WbU7ZgNokR -ACTIVE_RECORD_ENCRYPTION_KEY_DERIVATION_SALT=r0hvVmzBVsjxC7AMlwhOzmtc36ZCOS1E -ACTIVE_RECORD_ENCRYPTION_PRIMARY_KEY=PhdFyyfy5xJ7WVd2lWBpcPScRQHzRTNr diff --git a/.eslintrc.js b/.eslintrc.js index 759003b55e..1b36bcee25 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -123,7 +123,7 @@ module.exports = defineConfig({ 'react/react-in-jsx-scope': 'off', // not needed with new JSX transform 'react/self-closing-comp': 'error', - // recommended values found in https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/v6.8.0/src/index.js#L46 + // recommended values found in https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/src/index.js 'jsx-a11y/accessible-emoji': 'warn', 'jsx-a11y/click-events-have-key-events': 'off', 'jsx-a11y/label-has-associated-control': 'off', @@ -165,7 +165,7 @@ module.exports = defineConfig({ // }, // ], 'jsx-a11y/no-noninteractive-tabindex': 'off', - 'jsx-a11y/no-onchange': 'off', + 'jsx-a11y/no-onchange': 'warn', // recommended is full 'error' 'jsx-a11y/no-static-element-interactions': [ 'warn', @@ -176,7 +176,7 @@ module.exports = defineConfig({ }, ], - // See https://github.com/import-js/eslint-plugin-import/blob/v2.29.1/config/recommended.js + // See https://github.com/import-js/eslint-plugin-import/blob/main/config/recommended.js 'import/extensions': [ 'error', 'always', @@ -338,6 +338,7 @@ module.exports = defineConfig({ 'plugin:import/typescript', 'plugin:promise/recommended', 'plugin:jsdoc/recommended-typescript', + 'plugin:prettier/recommended', ], parserOptions: { @@ -346,9 +347,6 @@ module.exports = defineConfig({ }, rules: { - // Disable formatting rules that have been enabled in the base config - 'indent': 'off', - 'import/consistent-type-specifier-style': ['error', 'prefer-top-level'], '@typescript-eslint/consistent-type-definitions': ['warn', 'interface'], @@ -363,7 +361,6 @@ module.exports = defineConfig({ "message": "Use typed hooks `useAppDispatch` and `useAppSelector` instead." } ], - "@typescript-eslint/restrict-template-expressions": ['warn', { allowNumber: true }], 'jsdoc/require-jsdoc': 'off', // Those rules set stricter rules for TS files diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml deleted file mode 100644 index fa7a0c5353..0000000000 --- a/.github/FUNDING.yml +++ /dev/null @@ -1 +0,0 @@ -custom: https://fantia.jp/fanclubs/484677 diff --git a/.github/ISSUE_TEMPLATE/1.bug_report.yml b/.github/ISSUE_TEMPLATE/1.bug_report.yml deleted file mode 100644 index 10421eed7b..0000000000 --- a/.github/ISSUE_TEMPLATE/1.bug_report.yml +++ /dev/null @@ -1,74 +0,0 @@ -name: バグ報告 -description: kmyblueのバグ報告(ただし情報改竄、秘密情報の漏洩、システムの破損などが発生するバグは、こちらではなく「Security」タブよりセキュリティインシデントとして報告してください) -labels: [bug] -body: - - type: textarea - attributes: - label: バグの再現手順 - description: どのように操作したらバグが発生したのか、バグが発生する直前までの手順を順番に詳しく教えてください - value: | - 1. - 2. - 3. - ... - validations: - required: true - - type: textarea - attributes: - label: 期待する動作 - description: どのように動いてほしかったですか? - validations: - required: true - - type: textarea - attributes: - label: 実際の動作 - description: どのようなバグが発生しましたか? - validations: - required: true - - type: textarea - attributes: - label: 詳しい情報 - validations: - required: false - - type: input - attributes: - label: バグが発生したkmyblueサーバーのドメイン - description: サーバー固有の問題の可能性もありますので、プライバシー上可能な範囲内で、できるだけ書いてください - placeholder: kmy.blue - validations: - required: false - - type: input - attributes: - label: バグが発生したkmyblueのバージョン - description: | - Mastodonではなくkmyblueのバージョンを記述してください。例えばバージョン表記が `v4.2.0+kmyblue.5.1-LTS` の場合、バージョンは `5.1`になります - - バージョンは、PCだと画面左下、スマホだと概要画面の一番下に書いてあります - placeholder: '5.1' - validations: - required: true - - type: input - attributes: - label: ブラウザの名前 - description: | - ブラウザの名前を書いてください。可能であればバージョンも併記してください - placeholder: Firefox 105.0.3 - validations: - required: false - - type: input - attributes: - label: OS - description: | - あなたのOSと、できればバージョンも教えてください。スマホの場合は、「Android」「iPhone」にバージョンをつけてください - placeholder: Windows11 - validations: - required: false - - type: textarea - attributes: - label: その他の詳細情報 - description: | - あなたの環境が特殊な場合、詳しいことを教えてください(例: VPS、tor、学内LANなど) - - サーバー管理者の場合は、Ruby、Node.jsのバージョン、Cloudflareの使用可否なども可能なら書いてください - validations: - required: false diff --git a/.github/ISSUE_TEMPLATE/1.web_bug_report.yml b/.github/ISSUE_TEMPLATE/1.web_bug_report.yml new file mode 100644 index 0000000000..20e27d103c --- /dev/null +++ b/.github/ISSUE_TEMPLATE/1.web_bug_report.yml @@ -0,0 +1,76 @@ +name: Bug Report (Web Interface) +description: If you are using Mastodon's web interface and something is not working as expected +labels: [bug, 'status/to triage', 'area/web interface'] +body: + - type: markdown + attributes: + value: | + Make sure that you are submitting a new bug that was not previously reported or already fixed. + + Please use a concise and distinct title for the issue. + - type: textarea + attributes: + label: Steps to reproduce the problem + description: What were you trying to do? + value: | + 1. + 2. + 3. + ... + validations: + required: true + - type: input + attributes: + label: Expected behaviour + description: What should have happened? + validations: + required: true + - type: input + attributes: + label: Actual behaviour + description: What happened? + validations: + required: true + - type: textarea + attributes: + label: Detailed description + validations: + required: false + - type: input + attributes: + label: Mastodon instance + description: The address of the Mastodon instance where you experienced the issue + placeholder: mastodon.social + validations: + required: true + - type: input + attributes: + label: Mastodon version + description: | + This is displayed at the bottom of the About page, eg. `v4.1.2+nightly-20230627` + placeholder: v4.1.2 + validations: + required: true + - type: input + attributes: + label: Browser name and version + description: | + What browser are you using when getting this bug? Please specify the version as well. + placeholder: Firefox 105.0.3 + validations: + required: true + - type: input + attributes: + label: Operating system + description: | + What OS are you running? Please specify the version as well. + placeholder: macOS 13.4.1 + validations: + required: true + - type: textarea + attributes: + label: Technical details + description: | + Any additional technical details you may have. This can include the full error log, inspector's output… + validations: + required: false diff --git a/.github/ISSUE_TEMPLATE/2.feature_request.yml b/.github/ISSUE_TEMPLATE/2.feature_request.yml deleted file mode 100644 index 10fb4bb23b..0000000000 --- a/.github/ISSUE_TEMPLATE/2.feature_request.yml +++ /dev/null @@ -1,16 +0,0 @@ -name: 機能要望 -description: 機能の提案 -labels: [enhancement] -body: - - type: textarea - attributes: - label: 欲しい機能 - description: 欲しい機能の詳細を書いてください - validations: - required: true - - type: textarea - attributes: - label: 必要性 - description: この機能はあなたにとってなぜ必要でしょうか?どういった状況で使われるものですか? - validations: - required: true diff --git a/.github/ISSUE_TEMPLATE/2.server_bug_report.yml b/.github/ISSUE_TEMPLATE/2.server_bug_report.yml new file mode 100644 index 0000000000..49d5f57209 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/2.server_bug_report.yml @@ -0,0 +1,65 @@ +name: Bug Report (server / API) +description: | + If something is not working as expected, but is not from using the web interface. +labels: [bug, 'status/to triage'] +body: + - type: markdown + attributes: + value: | + Make sure that you are submitting a new bug that was not previously reported or already fixed. + + Please use a concise and distinct title for the issue. + - type: textarea + attributes: + label: Steps to reproduce the problem + description: What were you trying to do? + value: | + 1. + 2. + 3. + ... + validations: + required: true + - type: input + attributes: + label: Expected behaviour + description: What should have happened? + validations: + required: true + - type: input + attributes: + label: Actual behaviour + description: What happened? + validations: + required: true + - type: textarea + attributes: + label: Detailed description + validations: + required: false + - type: input + attributes: + label: Mastodon instance + description: The address of the Mastodon instance where you experienced the issue + placeholder: mastodon.social + validations: + required: false + - type: input + attributes: + label: Mastodon version + description: | + This is displayed at the bottom of the About page, eg. `v4.1.2+nightly-20230627` + placeholder: v4.1.2 + validations: + required: false + - type: textarea + attributes: + label: Technical details + description: | + Any additional technical details you may have, like logs or error traces + value: | + If this is happening on your own Mastodon server, please fill out those: + - Ruby version: (from `ruby --version`, eg. v3.1.2) + - Node.js version: (from `node --version`, eg. v18.16.0) + validations: + required: false diff --git a/.github/ISSUE_TEMPLATE/3.feature_request.yml b/.github/ISSUE_TEMPLATE/3.feature_request.yml new file mode 100644 index 0000000000..2cabcf61e0 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/3.feature_request.yml @@ -0,0 +1,22 @@ +name: Feature Request +description: I have a suggestion +labels: [suggestion] +body: + - type: markdown + attributes: + value: | + Please use a concise and distinct title for the issue. + + Consider: Could it be implemented as a 3rd party app using the REST API instead? + - type: textarea + attributes: + label: Pitch + description: Describe your idea for a feature. Make sure it has not already been suggested/implemented/turned down before. + validations: + required: true + - type: textarea + attributes: + label: Motivation + description: Why do you think this feature is needed? Who would benefit from it? + validations: + required: true diff --git a/.github/ISSUE_TEMPLATE/3.spec_change_request.yml b/.github/ISSUE_TEMPLATE/3.spec_change_request.yml deleted file mode 100644 index e71befe859..0000000000 --- a/.github/ISSUE_TEMPLATE/3.spec_change_request.yml +++ /dev/null @@ -1,28 +0,0 @@ -name: 仕様変更・改善要望 -description: 既存の仕様や挙動変更の要望 -labels: [specchange] -body: - - type: markdown - attributes: - value: 意図したものとは明らかに異なる挙動をしているものはバグとして、もともと仕様として決められた動きをしているものを変更したいときはこちらでお願いします - - type: textarea - attributes: - label: 挙動を変更してほしい機能や動作 - validations: - required: true - - type: textarea - attributes: - label: 現在の挙動 - validations: - required: true - - type: textarea - attributes: - label: 変更してほしい新しい挙動 - validations: - required: true - - type: textarea - attributes: - label: 必要性 - description: この変更はあなたにとってなぜ必要でしょうか?どういった状況で使われるものですか? - validations: - required: true diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index 0086358db1..f5d3196528 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -1 +1,5 @@ -blank_issues_enabled: true +blank_issues_enabled: false +contact_links: + - name: GitHub Discussions + url: https://github.com/mastodon/mastodon/discussions + about: Please ask and answer questions here. diff --git a/.github/actions/setup-javascript/action.yml b/.github/actions/setup-javascript/action.yml index 808adc7de6..07fd4d08d3 100644 --- a/.github/actions/setup-javascript/action.yml +++ b/.github/actions/setup-javascript/action.yml @@ -23,7 +23,7 @@ runs: shell: bash run: echo "dir=$(yarn config get cacheFolder)" >> $GITHUB_OUTPUT - - uses: actions/cache@v4 + - uses: actions/cache@v3 id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`) with: path: ${{ steps.yarn-cache-dir-path.outputs.dir }} diff --git a/.github/codecov.yml b/.github/codecov.yml index 9d6413a106..5532c49618 100644 --- a/.github/codecov.yml +++ b/.github/codecov.yml @@ -1,4 +1,3 @@ -comment: false # Do not leave PR comments coverage: status: project: @@ -9,3 +8,6 @@ coverage: default: # Github status check is not blocking informational: true +comment: + # Only write a comment in PR if there are changes + require_changes: true diff --git a/.github/renovate.json5 b/.github/renovate.json5 index 378d4fc83c..dab99829a1 100644 --- a/.github/renovate.json5 +++ b/.github/renovate.json5 @@ -125,29 +125,6 @@ ], groupName: null, // We dont want them to belong to any group }, - { - // Group all RuboCop packages with `rubocop` in the same PR - matchManagers: ['bundler'], - matchPackageNames: ['rubocop'], - matchPackagePrefixes: ['rubocop-'], - matchUpdateTypes: ['patch', 'minor'], - groupName: 'RuboCop (non-major)', - }, - { - // Group all RSpec packages with `rspec` in the same PR - matchManagers: ['bundler'], - matchPackageNames: ['rspec'], - matchPackagePrefixes: ['rspec-'], - matchUpdateTypes: ['patch', 'minor'], - groupName: 'RSpec (non-major)', - }, - { - // Group all opentelemetry-ruby packages in the same PR - matchManagers: ['bundler'], - matchPackagePrefixes: ['opentelemetry-'], - matchUpdateTypes: ['patch', 'minor'], - groupName: 'opentelemetry-ruby (non-major)', - }, // Add labels depending on package manager { matchManagers: ['npm', 'nvm'], addLabels: ['javascript'] }, { matchManagers: ['bundler', 'ruby-version'], addLabels: ['ruby'] }, diff --git a/.github/stylelint-matcher.json b/.github/stylelint-matcher.json new file mode 100644 index 0000000000..cdfd4086bd --- /dev/null +++ b/.github/stylelint-matcher.json @@ -0,0 +1,21 @@ +{ + "problemMatcher": [ + { + "owner": "stylelint", + "pattern": [ + { + "regexp": "^([^\\s].*)$", + "file": 1 + }, + { + "regexp": "^\\s+((\\d+):(\\d+))?\\s+(✖|×)\\s+(.*)\\s{2,}(.*)$", + "line": 2, + "column": 3, + "message": 5, + "code": 6, + "loop": true + } + ] + } + ] +} diff --git a/.github/workflows/build-container-image.yml b/.github/workflows/build-container-image.yml new file mode 100644 index 0000000000..e100e15821 --- /dev/null +++ b/.github/workflows/build-container-image.yml @@ -0,0 +1,102 @@ +on: + workflow_call: + inputs: + platforms: + required: true + type: string + cache: + type: boolean + default: true + use_native_arm64_builder: + type: boolean + push_to_images: + type: string + version_prerelease: + type: string + version_metadata: + type: string + flavor: + type: string + tags: + type: string + labels: + type: string + file_to_build: + type: string + +jobs: + build-image: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + + - uses: docker/setup-qemu-action@v3 + if: contains(inputs.platforms, 'linux/arm64') && !inputs.use_native_arm64_builder + + - uses: docker/setup-buildx-action@v3 + id: buildx + if: ${{ !(inputs.use_native_arm64_builder && contains(inputs.platforms, 'linux/arm64')) }} + + - name: Start a local Docker Builder + if: inputs.use_native_arm64_builder && contains(inputs.platforms, 'linux/arm64') + run: | + docker run --rm -d --name buildkitd -p 1234:1234 --privileged moby/buildkit:latest --addr tcp://0.0.0.0:1234 + + - uses: docker/setup-buildx-action@v3 + id: buildx-native + if: inputs.use_native_arm64_builder && contains(inputs.platforms, 'linux/arm64') + with: + driver: remote + endpoint: tcp://localhost:1234 + platforms: linux/amd64 + append: | + - endpoint: tcp://${{ vars.DOCKER_BUILDER_HETZNER_ARM64_01_HOST }}:13865 + platforms: linux/arm64 + name: mastodon-docker-builder-arm64-01 + driver-opts: + - servername=mastodon-docker-builder-arm64-01 + env: + BUILDER_NODE_1_AUTH_TLS_CACERT: ${{ secrets.DOCKER_BUILDER_HETZNER_ARM64_01_CACERT }} + BUILDER_NODE_1_AUTH_TLS_CERT: ${{ secrets.DOCKER_BUILDER_HETZNER_ARM64_01_CERT }} + BUILDER_NODE_1_AUTH_TLS_KEY: ${{ secrets.DOCKER_BUILDER_HETZNER_ARM64_01_KEY }} + + - name: Log in to Docker Hub + if: contains(inputs.push_to_images, 'tootsuite') + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + - name: Log in to the Github Container registry + if: contains(inputs.push_to_images, 'ghcr.io') + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - uses: docker/metadata-action@v5 + id: meta + if: ${{ inputs.push_to_images != '' }} + with: + images: ${{ inputs.push_to_images }} + flavor: ${{ inputs.flavor }} + tags: ${{ inputs.tags }} + labels: ${{ inputs.labels }} + + - uses: docker/build-push-action@v5 + with: + context: . + file: ${{ inputs.file_to_build }} + build-args: | + MASTODON_VERSION_PRERELEASE=${{ inputs.version_prerelease }} + MASTODON_VERSION_METADATA=${{ inputs.version_metadata }} + platforms: ${{ inputs.platforms }} + provenance: false + builder: ${{ steps.buildx.outputs.name || steps.buildx-native.outputs.name }} + push: ${{ inputs.push_to_images != '' }} + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + cache-from: ${{ inputs.cache && 'type=gha' || '' }} + cache-to: ${{ inputs.cache && 'type=gha,mode=max' || '' }} diff --git a/.github/workflows/build-security.yml b/.github/workflows/build-nightly.yml similarity index 83% rename from .github/workflows/build-security.yml rename to .github/workflows/build-nightly.yml index 1e2455d3d9..7c6f74b457 100644 --- a/.github/workflows/build-security.yml +++ b/.github/workflows/build-nightly.yml @@ -1,6 +1,8 @@ -name: Build security nightly container image +name: Build nightly container image on: workflow_dispatch: + schedule: + - cron: '0 2 * * *' # run at 2 AM UTC permissions: contents: read @@ -15,7 +17,7 @@ jobs: env: TZ: Etc/UTC run: | - echo mastodon_version_prerelease=nightly.$(date --date='next day' +'%Y-%m-%d')-security>> $GITHUB_OUTPUT + echo mastodon_version_prerelease=nightly.$(date +'%Y-%m-%d')>> $GITHUB_OUTPUT outputs: prerelease: ${{ steps.version_vars.outputs.mastodon_version_prerelease }} @@ -38,7 +40,7 @@ jobs: tags: | type=raw,value=edge type=raw,value=nightly - type=raw,value=${{ needs.compute-suffix.outputs.prerelease }} + type=schedule,pattern=${{ needs.compute-suffix.outputs.prerelease }} secrets: inherit build-image-streaming: @@ -60,5 +62,5 @@ jobs: tags: | type=raw,value=edge type=raw,value=nightly - type=raw,value=${{ needs.compute-suffix.outputs.prerelease }} + type=schedule,pattern=${{ needs.compute-suffix.outputs.prerelease }} secrets: inherit diff --git a/.github/workflows/build-push-pr.yml b/.github/workflows/build-push-pr.yml new file mode 100644 index 0000000000..72baed5121 --- /dev/null +++ b/.github/workflows/build-push-pr.yml @@ -0,0 +1,58 @@ +name: Build container image for PR +on: + pull_request: + types: [labeled, synchronize, reopened, ready_for_review, opened] + +permissions: + contents: read + packages: write + +jobs: + compute-suffix: + runs-on: ubuntu-latest + # This is only allowed to run if: + # - the PR branch is in the `mastodon/mastodon` repository + # - the PR is not a draft + # - the PR has the "build-image" label + if: ${{ github.event.pull_request.head.repo.full_name == github.repository && !github.event.pull_request.draft && contains(github.event.pull_request.labels.*.name, 'build-image') }} + steps: + # Repository needs to be cloned so `git rev-parse` below works + - name: Clone repository + uses: actions/checkout@v4 + - id: version_vars + run: | + echo mastodon_version_metadata=pr-${{ github.event.pull_request.number }}-$(git rev-parse --short HEAD) >> $GITHUB_OUTPUT + outputs: + metadata: ${{ steps.version_vars.outputs.mastodon_version_metadata }} + + build-image: + needs: compute-suffix + uses: ./.github/workflows/build-container-image.yml + with: + file_to_build: Dockerfile + platforms: linux/amd64,linux/arm64 + use_native_arm64_builder: true + push_to_images: | + ghcr.io/mastodon/mastodon + version_metadata: ${{ needs.compute-suffix.outputs.metadata }} + flavor: | + latest=auto + tags: | + type=ref,event=pr + secrets: inherit + + build-image-streaming: + needs: compute-suffix + uses: ./.github/workflows/build-container-image.yml + with: + file_to_build: streaming/Dockerfile + platforms: linux/amd64,linux/arm64 + use_native_arm64_builder: true + push_to_images: | + ghcr.io/mastodon/mastodon-streaming + version_metadata: ${{ needs.compute-suffix.outputs.metadata }} + flavor: | + latest=auto + tags: | + type=ref,event=pr + secrets: inherit diff --git a/.github/workflows/build-releases.yml b/.github/workflows/build-releases.yml new file mode 100644 index 0000000000..3f0bef32ac --- /dev/null +++ b/.github/workflows/build-releases.yml @@ -0,0 +1,51 @@ +name: Build container release images +on: + push: + tags: + - '*' + +permissions: + contents: read + packages: write + +jobs: + build-image: + uses: ./.github/workflows/build-container-image.yml + with: + file_to_build: Dockerfile + platforms: linux/amd64,linux/arm64 + use_native_arm64_builder: true + push_to_images: | + tootsuite/mastodon + ghcr.io/mastodon/mastodon + # Do not use cache when building releases, so apt update is always ran and the release always contain the latest packages + cache: false + # Only tag with latest when ran against the latest stable branch + # This needs to be updated after each minor version release + flavor: | + latest=${{ startsWith(github.ref, 'refs/tags/v4.2.') }} + tags: | + type=pep440,pattern={{raw}} + type=pep440,pattern=v{{major}}.{{minor}} + secrets: inherit + + build-image-streaming: + if: startsWith(github.ref, 'refs/tags/v4.3.') + uses: ./.github/workflows/build-container-image.yml + with: + file_to_build: streaming/Dockerfile + platforms: linux/amd64,linux/arm64 + use_native_arm64_builder: true + push_to_images: | + tootsuite/mastodon-streaming + ghcr.io/mastodon/mastodon-streaming + # Do not use cache when building releases, so apt update is always ran and the release always contain the latest packages + cache: false + # Only tag with latest when ran against the latest stable branch + # This needs to be updated after each minor version release + flavor: | + latest=${{ startsWith(github.ref, 'refs/tags/v4.3.') }} + tags: | + type=pep440,pattern={{raw}} + type=pep440,pattern=v{{major}}.{{minor}} + secrets: inherit diff --git a/.github/workflows/crowdin-download.yml b/.github/workflows/crowdin-download.yml new file mode 100644 index 0000000000..d3988d2f1a --- /dev/null +++ b/.github/workflows/crowdin-download.yml @@ -0,0 +1,71 @@ +name: Crowdin / Download translations +on: + schedule: + - cron: '17 4 * * *' # Every day + workflow_dispatch: + +permissions: + contents: write + pull-requests: write + +jobs: + download-translations: + runs-on: ubuntu-latest + if: github.repository == 'mastodon/mastodon' + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Increase Git http.postBuffer + # This is needed due to a bug in Ubuntu's cURL version? + # See https://github.com/orgs/community/discussions/55820 + run: | + git config --global http.version HTTP/1.1 + git config --global http.postBuffer 157286400 + + # Download the translation files from Crowdin + - name: crowdin action + uses: crowdin/github-action@v1 + with: + upload_sources: false + upload_translations: false + download_translations: true + crowdin_branch_name: main + push_translations: false + create_pull_request: false + env: + CROWDIN_PROJECT_ID: ${{ vars.CROWDIN_PROJECT_ID }} + CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }} + + # As the files are extracted from a Docker container, they belong to root:root + # We need to fix this before the next steps + - name: Fix file permissions + run: sudo chown -R runner:docker . + + # This is needed to run the normalize step + - name: Set up Ruby environment + uses: ./.github/actions/setup-ruby + + - name: Run i18n normalize task + run: bundle exec i18n-tasks normalize + + # Create or update the pull request + - name: Create Pull Request + uses: peter-evans/create-pull-request@v5.0.2 + with: + commit-message: 'New Crowdin translations' + title: 'New Crowdin Translations (automated)' + author: 'GitHub Actions ' + body: | + New Crowdin translations, automated with Github Actions + + See `.github/workflows/crowdin-download.yml` + + This PR will be updated every day with new translations. + + Due to a limitation in Github Actions, checks are not running on this PR without manual action. + If you want to run the checks, then close and re-open it. + branch: i18n/crowdin/translations + base: main + labels: i18n diff --git a/.github/workflows/crowdin-upload.yml b/.github/workflows/crowdin-upload.yml new file mode 100644 index 0000000000..705af12c02 --- /dev/null +++ b/.github/workflows/crowdin-upload.yml @@ -0,0 +1,35 @@ +name: Crowdin / Upload translations + +on: + push: + branches: + - main + paths: + - crowdin.yml + - app/javascript/mastodon/locales/en.json + - config/locales/en.yml + - config/locales/simple_form.en.yml + - config/locales/activerecord.en.yml + - config/locales/devise.en.yml + - config/locales/doorkeeper.en.yml + - .github/workflows/crowdin-upload.yml + +jobs: + upload-translations: + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: crowdin action + uses: crowdin/github-action@v1 + with: + upload_sources: true + upload_translations: false + download_translations: false + crowdin_branch_name: main + + env: + CROWDIN_PROJECT_ID: ${{ vars.CROWDIN_PROJECT_ID }} + CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }} diff --git a/.github/workflows/format-check.yml b/.github/workflows/format-check.yml deleted file mode 100644 index 2d483b5022..0000000000 --- a/.github/workflows/format-check.yml +++ /dev/null @@ -1,18 +0,0 @@ -name: Check formatting -on: - push: - pull_request: - -jobs: - lint: - runs-on: ubuntu-latest - - steps: - - name: Clone repository - uses: actions/checkout@v4 - - - name: Set up Javascript environment - uses: ./.github/actions/setup-javascript - - - name: Check formatting with Prettier - run: yarn format:check diff --git a/.github/workflows/lint-css.yml b/.github/workflows/lint-css.yml index d3b8035cd8..7229bec582 100644 --- a/.github/workflows/lint-css.yml +++ b/.github/workflows/lint-css.yml @@ -38,5 +38,9 @@ jobs: - name: Set up Javascript environment uses: ./.github/actions/setup-javascript + - uses: xt0rted/stylelint-problem-matcher@v1 + + - run: echo "::add-matcher::.github/stylelint-matcher.json" + - name: Stylelint - run: yarn lint:css -f github + run: yarn lint:sass diff --git a/.github/workflows/lint-haml.yml b/.github/workflows/lint-haml.yml index 25615b720d..8dcab845ee 100644 --- a/.github/workflows/lint-haml.yml +++ b/.github/workflows/lint-haml.yml @@ -36,4 +36,4 @@ jobs: - name: Run haml-lint run: | echo "::add-matcher::.github/workflows/haml-lint-problem-matcher.json" - bundle exec haml-lint --reporter github + bundle exec haml-lint diff --git a/.github/workflows/lint-json.yml b/.github/workflows/lint-json.yml new file mode 100644 index 0000000000..7796bf92c4 --- /dev/null +++ b/.github/workflows/lint-json.yml @@ -0,0 +1,38 @@ +name: JSON Linting +on: + push: + branches-ignore: + - 'dependabot/**' + - 'renovate/**' + paths: + - 'package.json' + - 'yarn.lock' + - '.nvmrc' + - '.prettier*' + - '**/*.json' + - '.github/workflows/lint-json.yml' + - '!app/javascript/mastodon/locales/*.json' + + pull_request: + paths: + - 'package.json' + - 'yarn.lock' + - '.nvmrc' + - '.prettier*' + - '**/*.json' + - '.github/workflows/lint-json.yml' + - '!app/javascript/mastodon/locales/*.json' + +jobs: + lint: + runs-on: ubuntu-latest + + steps: + - name: Clone repository + uses: actions/checkout@v4 + + - name: Set up Javascript environment + uses: ./.github/actions/setup-javascript + + - name: Prettier + run: yarn lint:json diff --git a/.github/workflows/lint-md.yml b/.github/workflows/lint-md.yml new file mode 100644 index 0000000000..51c59937a3 --- /dev/null +++ b/.github/workflows/lint-md.yml @@ -0,0 +1,38 @@ +name: Markdown Linting +on: + push: + branches-ignore: + - 'dependabot/**' + - 'renovate/**' + paths: + - '.github/workflows/lint-md.yml' + - '.nvmrc' + - '.prettier*' + - '**/*.md' + - '!AUTHORS.md' + - 'package.json' + - 'yarn.lock' + + pull_request: + paths: + - '.github/workflows/lint-md.yml' + - '.nvmrc' + - '.prettier*' + - '**/*.md' + - '!AUTHORS.md' + - 'package.json' + - 'yarn.lock' + +jobs: + lint: + runs-on: ubuntu-latest + + steps: + - name: Clone repository + uses: actions/checkout@v4 + + - name: Set up Javascript environment + uses: ./.github/actions/setup-javascript + + - name: Prettier + run: yarn lint:md diff --git a/.github/workflows/lint-yml.yml b/.github/workflows/lint-yml.yml new file mode 100644 index 0000000000..908bdef5cc --- /dev/null +++ b/.github/workflows/lint-yml.yml @@ -0,0 +1,40 @@ +name: YML Linting +on: + push: + branches-ignore: + - 'dependabot/**' + - 'renovate/**' + paths: + - 'package.json' + - 'yarn.lock' + - '.nvmrc' + - '.prettier*' + - '**/*.yaml' + - '**/*.yml' + - '.github/workflows/lint-yml.yml' + - '!config/locales/*.yml' + + pull_request: + paths: + - 'package.json' + - 'yarn.lock' + - '.nvmrc' + - '.prettier*' + - '**/*.yaml' + - '**/*.yml' + - '.github/workflows/lint-yml.yml' + - '!config/locales/*.yml' + +jobs: + lint: + runs-on: ubuntu-latest + + steps: + - name: Clone repository + uses: actions/checkout@v4 + + - name: Set up Javascript environment + uses: ./.github/actions/setup-javascript + + - name: Prettier + run: yarn lint:yml diff --git a/.github/workflows/test-image-build.yml b/.github/workflows/test-image-build.yml new file mode 100644 index 0000000000..980e071897 --- /dev/null +++ b/.github/workflows/test-image-build.yml @@ -0,0 +1,35 @@ +name: Test container image build +on: + pull_request: + paths: + - .github/workflows/build-nightly.yml + - .github/workflows/build-push-pr.yml + - .github/workflows/build-releases.yml + - .github/workflows/test-image-build.yml + - Dockerfile + - streaming/Dockerfile +permissions: + contents: read + +jobs: + build-image: + concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + + uses: ./.github/workflows/build-container-image.yml + with: + file_to_build: Dockerfile + platforms: linux/amd64 # Testing only on native platform so it is performant + cache: true + + build-image-streaming: + concurrency: + group: ${{ github.workflow }}-${{ github.ref }}-streaming + cancel-in-progress: true + + uses: ./.github/workflows/build-container-image.yml + with: + file_to_build: streaming/Dockerfile + platforms: linux/amd64 # Testing only on native platform so it is performant + cache: true diff --git a/.github/workflows/test-js.yml b/.github/workflows/test-js.yml index 481afdba30..79622b6c1f 100644 --- a/.github/workflows/test-js.yml +++ b/.github/workflows/test-js.yml @@ -38,5 +38,5 @@ jobs: - name: Set up Javascript environment uses: ./.github/actions/setup-javascript - - name: JavaScript testing + - name: Jest testing run: yarn jest --reporters github-actions summary diff --git a/.github/workflows/test-migrations-one-step.yml b/.github/workflows/test-migrations-one-step.yml index 1ff5cc06b9..5dca8e376d 100644 --- a/.github/workflows/test-migrations-one-step.yml +++ b/.github/workflows/test-migrations-one-step.yml @@ -78,8 +78,23 @@ jobs: - name: Create database run: './bin/rails db:create' - - name: Run historical migrations with data population - run: './bin/rails tests:migrations:prepare_database' + - name: Run migrations up to v2.0.0 + run: './bin/rails db:migrate VERSION=20171010025614' + + - name: Populate database with test data + run: './bin/rails tests:migrations:populate_v2' + + - name: Run migrations up to v2.4.0 + run: './bin/rails db:migrate VERSION=20180514140000' + + - name: Populate database with test data + run: './bin/rails tests:migrations:populate_v2_4' + + - name: Run migrations up to v2.4.3 + run: './bin/rails db:migrate VERSION=20180707154237' + + - name: Populate database with test data + run: './bin/rails tests:migrations:populate_v2_4_3' - name: Run all remaining migrations run: './bin/rails db:migrate' diff --git a/.github/workflows/test-migrations-two-step.yml b/.github/workflows/test-migrations-two-step.yml index 6698847315..59485d285d 100644 --- a/.github/workflows/test-migrations-two-step.yml +++ b/.github/workflows/test-migrations-two-step.yml @@ -45,7 +45,6 @@ jobs: --health-retries 5 ports: - 5432:5432 - redis: image: redis:7-alpine options: >- @@ -78,11 +77,28 @@ jobs: - name: Create database run: './bin/rails db:create' - - name: Run historical migrations with data population - run: './bin/rails tests:migrations:prepare_database' + - name: Run migrations up to v2.0.0 + run: './bin/rails db:migrate VERSION=20171010025614' + + - name: Populate database with test data + run: './bin/rails tests:migrations:populate_v2' + + - name: Run pre-deployment migrations up to v2.4.0 + run: './bin/rails db:migrate VERSION=20180514140000' env: SKIP_POST_DEPLOYMENT_MIGRATIONS: true + - name: Populate database with test data + run: './bin/rails tests:migrations:populate_v2_4' + + - name: Run migrations up to v2.4.3 + run: './bin/rails db:migrate VERSION=20180707154237' + env: + SKIP_POST_DEPLOYMENT_MIGRATIONS: true + + - name: Populate database with test data + run: './bin/rails tests:migrations:populate_v2_4_3' + - name: Run all remaining pre-deployment migrations run: './bin/rails db:migrate' env: diff --git a/.github/workflows/test-ruby.yml b/.github/workflows/test-ruby.yml index 5892c59066..ae25648a0b 100644 --- a/.github/workflows/test-ruby.yml +++ b/.github/workflows/test-ruby.yml @@ -28,9 +28,6 @@ jobs: env: RAILS_ENV: ${{ matrix.mode }} BUNDLE_WITH: ${{ matrix.mode }} - ACTIVE_RECORD_ENCRYPTION_DETERMINISTIC_KEY: precompile_placeholder - ACTIVE_RECORD_ENCRYPTION_KEY_DERIVATION_SALT: precompile_placeholder - ACTIVE_RECORD_ENCRYPTION_PRIMARY_KEY: precompile_placeholder OTP_SECRET: precompile_placeholder SECRET_KEY_BASE: precompile_placeholder @@ -55,7 +52,7 @@ jobs: run: | tar --exclude={"*.br","*.gz"} -zcf artifacts.tar.gz public/assets public/packs* - - uses: actions/upload-artifact@v4 + - uses: actions/upload-artifact@v3 if: matrix.mode == 'test' with: path: |- @@ -109,19 +106,18 @@ jobs: CAS_ENABLED: true BUNDLE_WITH: 'pam_authentication test' GITHUB_RSPEC: ${{ matrix.ruby-version == '.ruby-version' && github.event.pull_request && 'true' }} - ES_ENABLED: false strategy: fail-fast: false matrix: ruby-version: + - '3.0' - '3.1' - - '3.2' - '.ruby-version' steps: - uses: actions/checkout@v4 - - uses: actions/download-artifact@v4 + - uses: actions/download-artifact@v3 with: path: './' name: ${{ github.sha }} @@ -143,11 +139,9 @@ jobs: - name: Upload coverage reports to Codecov if: matrix.ruby-version == '.ruby-version' - uses: codecov/codecov-action@v4 + uses: codecov/codecov-action@v3 with: files: coverage/lcov/mastodon.lcov - env: - CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} test-e2e: name: End to End testing @@ -187,22 +181,19 @@ jobs: DISABLE_SIMPLECOV: true RAILS_ENV: test BUNDLE_WITH: test - ES_ENABLED: false - LOCAL_DOMAIN: localhost:3000 - LOCAL_HTTPS: false strategy: fail-fast: false matrix: ruby-version: + - '3.0' - '3.1' - - '3.2' - '.ruby-version' steps: - uses: actions/checkout@v4 - - uses: actions/download-artifact@v4 + - uses: actions/download-artifact@v3 with: path: './public' name: ${{ github.sha }} @@ -219,21 +210,21 @@ jobs: - name: Load database schema run: './bin/rails db:create db:schema:load db:seed' - - run: bin/rspec spec/system --tag streaming --tag js + - run: bundle exec rake spec:system - name: Archive logs - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v3 if: failure() with: name: e2e-logs-${{ matrix.ruby-version }} path: log/ - name: Archive test screenshots - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v3 if: failure() with: name: e2e-screenshots - path: tmp/capybara/ + path: tmp/screenshots/ test-search: name: Elastic Search integration testing @@ -266,8 +257,8 @@ jobs: ports: - 6379:6379 - elasticsearch: - image: ${{ contains(matrix.search-image, 'elasticsearch') && matrix.search-image || '' }} + search: + image: ${{ matrix.search-image }} env: discovery.type: single-node xpack.security.enabled: false @@ -279,20 +270,6 @@ jobs: ports: - 9200:9200 - opensearch: - image: ${{ contains(matrix.search-image, 'opensearch') && matrix.search-image || '' }} - env: - discovery.type: single-node - DISABLE_INSTALL_DEMO_CONFIG: true - DISABLE_SECURITY_PLUGIN: true - options: >- - --health-cmd "curl http://localhost:9200/_cluster/health" - --health-interval 10s - --health-timeout 5s - --health-retries 10 - ports: - - 9200:9200 - env: DB_HOST: localhost DB_USER: postgres @@ -308,21 +285,19 @@ jobs: fail-fast: false matrix: ruby-version: + - '3.0' - '3.1' - - '3.2' - '.ruby-version' search-image: - docker.elastic.co/elasticsearch/elasticsearch:7.17.13 include: - ruby-version: '.ruby-version' search-image: docker.elastic.co/elasticsearch/elasticsearch:8.10.2 - - ruby-version: '.ruby-version' - search-image: opensearchproject/opensearch:2 steps: - uses: actions/checkout@v4 - - uses: actions/download-artifact@v4 + - uses: actions/download-artifact@v3 with: path: './public' name: ${{ github.sha }} @@ -342,105 +317,15 @@ jobs: - run: bin/rspec --tag search - name: Archive logs - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v3 if: failure() with: name: test-search-logs-${{ matrix.ruby-version }} path: log/ - name: Archive test screenshots - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v3 if: failure() with: name: test-search-screenshots - path: tmp/capybara/ - - test-back-and-return: - name: Back to original and return test - runs-on: ubuntu-latest - - needs: - - build - - services: - postgres: - image: postgres:14-alpine - env: - POSTGRES_PASSWORD: postgres - POSTGRES_USER: postgres - options: >- - --health-cmd pg_isready - --health-interval 10s - --health-timeout 5s - --health-retries 5 - ports: - - 5432:5432 - - redis: - image: redis:7-alpine - options: >- - --health-cmd "redis-cli ping" - --health-interval 10s - --health-timeout 5s - --health-retries 5 - ports: - - 6379:6379 - - env: - DB_HOST: localhost - DB_USER: postgres - DB_PASS: postgres - DISABLE_SIMPLECOV: ${{ matrix.ruby-version != '.ruby-version' }} - RAILS_ENV: test - ALLOW_NOPAM: true - PAM_ENABLED: true - PAM_DEFAULT_SERVICE: pam_test - PAM_CONTROLLED_SERVICE: pam_test_controlled - OIDC_ENABLED: true - OIDC_SCOPE: read - SAML_ENABLED: true - CAS_ENABLED: true - BUNDLE_WITH: 'pam_authentication test' - GITHUB_RSPEC: ${{ matrix.ruby-version == '.ruby-version' && github.event.pull_request && 'true' }} - ES_ENABLED: false - BACK_UPSTREAM_FORCE: true - - strategy: - fail-fast: false - matrix: - ruby-version: - - '.ruby-version' - steps: - - uses: actions/checkout@v4 - - - uses: actions/download-artifact@v4 - with: - path: './' - name: ${{ github.sha }} - - - name: Expand archived asset artifacts - run: | - tar xvzf artifacts.tar.gz - - - name: Set up Ruby environment - uses: ./.github/actions/setup-ruby - with: - ruby-version: ${{ matrix.ruby-version}} - additional-system-dependencies: ffmpeg imagemagick libpam-dev - - - name: Load database schema - run: './bin/rails db:create db:schema:load db:seed' - - - name: Back to upstream schema - run: 'bundle exec rake dangerous:back_upstream' - - - name: Return to kmyblue - run: './bin/rails db:migrate' - - - run: bin/rspec - - - name: Upload coverage reports to Codecov - if: matrix.ruby-version == '.ruby-version' - uses: codecov/codecov-action@v3 - with: - files: coverage/lcov/mastodon-back-ret.lcov + path: tmp/screenshots/ diff --git a/.gitignore b/.gitignore index 4106e3f7f8..c5af8eb67f 100644 --- a/.gitignore +++ b/.gitignore @@ -24,12 +24,10 @@ /public/packs-test .env .env.production +.env.development /node_modules/ /build/ -# Ignore elasticsearch config -/.elasticsearch.yml - # Ignore Vagrant files .vagrant/ @@ -71,6 +69,3 @@ yarn-debug.log # Ignore Docker option files docker-compose.override.yml - -# Ignore dotenv .local files -.env*.local diff --git a/.haml-lint.yml b/.haml-lint.yml index 7dbc88e9db..8cfcaec8d9 100644 --- a/.haml-lint.yml +++ b/.haml-lint.yml @@ -2,6 +2,7 @@ inherits_from: .haml-lint_todo.yml exclude: - 'vendor/**/*' + - lib/templates/haml/scaffold/_form.html.haml require: - ./lib/linter/haml_middle_dot.rb @@ -12,6 +13,4 @@ linters: MiddleDot: enabled: true LineLength: - max: 300 - ViewLength: - max: 200 # Override default value of 100 inherited from rubocop + max: 320 diff --git a/.haml-lint_todo.yml b/.haml-lint_todo.yml index 841561291f..af2d2e8f4e 100644 --- a/.haml-lint_todo.yml +++ b/.haml-lint_todo.yml @@ -10,27 +10,4 @@ linters: # Offense count: 1 LineLength: exclude: - - 'app/views/admin/ng_rules/_ng_rule_fields.html.haml' - 'app/views/admin/roles/_form.html.haml' - - # Offense count: 9 - RuboCop: - exclude: - - 'app/views/home/index.html.haml' - - ViewLength: - exclude: - - 'app/views/admin/accounts/index.html.haml' - - 'app/views/admin/instances/show.html.haml' - - 'app/views/admin/ng_rules/_ng_rule_fields.html.haml' - - 'app/views/admin/settings/discovery/show.html.haml' - - 'app/views/settings/preferences/appearance/show.html.haml' - - 'app/views/settings/preferences/other/show.html.haml' - - InstanceVariables: - exclude: - - 'app/views/application/_sidebar.html.haml' - - 'app/views/admin/ng_rules/_ng_rule_fields.html.haml' - - 'app/views/admin/ng_words/keywords/_ng_word.html.haml' - - 'app/views/admin/ng_words/white_list/_specified_domain.html.haml' - - 'app/views/admin/sensitive_words/_sensitive_word.html.haml' diff --git a/.husky/pre-commit b/.husky/pre-commit index 3723623171..d2ae35e84b 100755 --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -1 +1,4 @@ +#!/bin/sh +. "$(dirname "$0")/_/husky.sh" + yarn lint-staged diff --git a/.nvmrc b/.nvmrc index 973f49d55c..a3597ecbd1 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -20.13 +20.11 diff --git a/.prettierignore b/.prettierignore index 6b2f0c1889..51850b2b28 100644 --- a/.prettierignore +++ b/.prettierignore @@ -54,13 +54,6 @@ # Ignore Docker option files docker-compose.override.yml -# Ignore public -/public/assets -/public/emoji -/public/packs -/public/packs-test -/public/system - # Ignore emoji map file /app/javascript/mastodon/features/emoji/emoji_map.json @@ -81,5 +74,4 @@ app/javascript/styles/mastodon/reset.scss # Ignore the generated AUTHORS.md AUTHORS.md -# Process a few selected JS files !lint-staged.config.js diff --git a/.rubocop.yml b/.rubocop.yml index 5596727890..a06621d660 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -9,13 +9,12 @@ inherit_mode: require: - rubocop-rails - rubocop-rspec - - rubocop-rspec_rails - rubocop-performance - rubocop-capybara - ./lib/linter/rubocop_middle_dot AllCops: - TargetRubyVersion: 3.1 # Set to minimum supported version of CI + TargetRubyVersion: 3.0 # Set to minimum supported version of CI DisplayCopNames: true DisplayStyleGuide: true ExtraDetails: true @@ -23,7 +22,7 @@ AllCops: CacheRootDirectory: tmp NewCops: enable # Opt-in to newly added rules Exclude: - - 'db/schema.rb' + - db/schema.rb - 'bin/*' - 'node_modules/**/*' - 'Vagrantfile' @@ -40,7 +39,13 @@ Layout/FirstHashElementIndentation: # Reason: Currently disabled in .rubocop_todo.yml # https://docs.rubocop.org/rubocop/cops_layout.html#layoutlinelength Layout/LineLength: - Max: 300 # Default of 120 causes a duplicate entry in generated todo file + Max: 320 # Default of 120 causes a duplicate entry in generated todo file + +# Reason: +# https://docs.rubocop.org/rubocop/cops_lint.html#lintuselessaccessmodifier +Lint/UselessAccessModifier: + ContextCreatingMethods: + - class_methods ## Disable most Metrics/*Length cops # Reason: those are often triggered and force significant refactors when this happend @@ -68,18 +73,12 @@ Metrics/ModuleLength: # https://docs.rubocop.org/rubocop/cops_metrics.html#metricsabcsize Metrics/AbcSize: Exclude: - - 'app/serializers/initial_state_serializer.rb' - 'lib/mastodon/cli/*.rb' # Reason: Currently disabled in .rubocop_todo.yml # https://docs.rubocop.org/rubocop/cops_metrics.html#metricscyclomaticcomplexity Metrics/CyclomaticComplexity: Exclude: - - 'app/lib/feed_manager.rb' - - 'app/policies/status_policy.rb' - - 'app/services/activitypub/process_account_service.rb' - - 'app/services/delivery_antenna_service.rb' - - 'app/services/post_status_service.rb' - lib/mastodon/cli/*.rb # Reason: @@ -87,17 +86,6 @@ Metrics/CyclomaticComplexity: Metrics/ParameterLists: CountKeywordArgs: false -Metrics/PerceivedComplexity: - Exclude: - - 'app/policies/status_policy.rb' - - 'app/services/delivery_antenna_service.rb' - - 'app/services/post_status_service.rb' - -# Reason: Prefer seeing a variable name -# https://docs.rubocop.org/rubocop/cops_naming.html#namingblockforwarding -Naming/BlockForwarding: - EnforcedStyle: explicit - # Reason: Prevailing style is argument file paths # https://docs.rubocop.org/rubocop-rails/cops_rails.html#railsfilepath Rails/FilePath: @@ -108,26 +96,22 @@ Rails/FilePath: Rails/HttpStatus: EnforcedStyle: numeric +# Reason: Allowed in `tootctl` CLI code and in boot ENV checker +# https://docs.rubocop.org/rubocop-rails/cops_rails.html#railsexit +Rails/Exit: + Exclude: + - 'config/boot.rb' + - 'lib/mastodon/cli/*.rb' + # Reason: Conflicts with `Lint/UselessMethodDefinition` for inherited controller actions # https://docs.rubocop.org/rubocop-rails/cops_rails.html#railslexicallyscopedactionfilter Rails/LexicallyScopedActionFilter: Exclude: - 'app/controllers/auth/*' -# Reason: These tasks are doing local work which do not need full env loaded -# https://docs.rubocop.org/rubocop-rails/cops_rails.html#railsrakeenvironment -Rails/RakeEnvironment: - Exclude: - - 'lib/tasks/auto_annotate_models.rake' - - 'lib/tasks/emojis.rake' - - 'lib/tasks/mastodon.rake' - - 'lib/tasks/repo.rake' - - 'lib/tasks/statistics.rake' - -# Reason: There are appropriate times to use these features -# https://docs.rubocop.org/rubocop-rails/cops_rails.html#railsskipsmodelvalidations Rails/SkipsModelValidations: - Enabled: false + Exclude: + - 'db/*migrate/**/*' # Reason: We want to preserve the ability to migrate from arbitrary old versions, # and cannot guarantee that every installation has run every migration as they upgrade. @@ -140,11 +124,6 @@ Rails/UnusedIgnoredColumns: Rails/NegateInclude: Enabled: false -# Reason: Enforce default limit, but allow some elements to span lines -# https://docs.rubocop.org/rubocop-rspec/cops_rspec.html#rspecexamplelength -RSpec/ExampleLength: - CountAsOne: ['array', 'heredoc', 'method_call'] - # Reason: Deprecated cop, will be removed in 3.0, replaced by SpecFilePathFormat # https://docs.rubocop.org/rubocop-rspec/cops_rspec.html#rspecfilepath RSpec/FilePath: @@ -160,6 +139,11 @@ RSpec/NamedSubject: RSpec/NotToNot: EnforcedStyle: to_not +# Reason: Prevailing style uses numeric status codes, matches Rails/HttpStatus +# https://docs.rubocop.org/rubocop-rspec/cops_rspec_rails.html#rspecrailshttpstatus +RSpec/Rails/HttpStatus: + EnforcedStyle: numeric + # Reason: Match overrides from Rspec/FilePath rule above # https://docs.rubocop.org/rubocop-rspec/cops_rspec.html#rspecspecfilepathformat RSpec/SpecFilePathFormat: @@ -170,11 +154,6 @@ RSpec/SpecFilePathFormat: OEmbedController: oembed_controller OStatus: ostatus -# Reason: Prevailing style uses numeric status codes, matches Rails/HttpStatus -# https://docs.rubocop.org/rubocop-rspec/cops_rspec_rails.html#rspecrailshttpstatus -RSpecRails/HttpStatus: - EnforcedStyle: numeric - # Reason: # https://docs.rubocop.org/rubocop/cops_style.html#styleclassandmodulechildren Style/ClassAndModuleChildren: @@ -185,25 +164,10 @@ Style/ClassAndModuleChildren: Style/Documentation: Enabled: false -# Reason: Route redirects are not token-formatted and must be skipped -# https://docs.rubocop.org/rubocop/cops_style.html#styleformatstringtoken -Style/FormatStringToken: - inherit_mode: - merge: - - AllowedMethods # The rubocop-rails config adds `redirect` - AllowedMethods: - - redirect_with_vary - -# Reason: Prevailing style choice -# https://docs.rubocop.org/rubocop/cops_style.html#stylehashaslastarrayitem -Style/HashAsLastArrayItem: - Enabled: false - # Reason: Enforce modern Ruby style # https://docs.rubocop.org/rubocop/cops_style.html#stylehashsyntax Style/HashSyntax: EnforcedStyle: ruby19_no_mixed_keys - EnforcedShorthandSyntax: either # Reason: # https://docs.rubocop.org/rubocop/cops_style.html#stylenumericliterals @@ -223,16 +187,16 @@ Style/PercentLiteralDelimiters: Style/RedundantBegin: Enabled: false -# Reason: Prevailing style choice -# https://docs.rubocop.org/rubocop/cops_style.html#styleredundantfetchblock -Style/RedundantFetchBlock: - Enabled: false - # Reason: Overridden to reduce implicit StandardError rescues # https://docs.rubocop.org/rubocop/cops_style.html#stylerescuestandarderror Style/RescueStandardError: EnforcedStyle: implicit +# Reason: Simplify some spec layouts +# https://docs.rubocop.org/rubocop/cops_style.html#stylesemicolon +Style/Semicolon: + AllowAsExpressionSeparator: true + # Reason: Originally disabled for CodeClimate, and no config consensus has been found # https://docs.rubocop.org/rubocop/cops_style.html#stylesymbolarray Style/SymbolArray: diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml index 119df96090..602d99c9f0 100644 --- a/.rubocop_todo.yml +++ b/.rubocop_todo.yml @@ -1,11 +1,25 @@ # This configuration was generated by # `rubocop --auto-gen-config --auto-gen-only-exclude --no-exclude-limit --no-offense-counts --no-auto-gen-timestamp` -# using RuboCop version 1.63.5. +# using RuboCop version 1.59.0. # The point is for the user to remove these configuration records # one by one as the offenses are removed from the code base. # Note that changes in the inspected code, or installation of new # versions of RuboCop, may require this file to be generated again. +# This cop supports safe autocorrection (--autocorrect). +# Configuration parameters: TreatCommentsAsGroupSeparators, ConsiderPunctuation, Include. +# Include: **/*.gemfile, **/Gemfile, **/gems.rb +Bundler/OrderedGems: + Exclude: + - 'Gemfile' + +# This cop supports safe autocorrection (--autocorrect). +# Configuration parameters: Max, AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, AllowedPatterns. +# URISchemes: http, https +Layout/LineLength: + Exclude: + - 'app/models/account.rb' + Lint/NonLocalExitFromIterator: Exclude: - 'app/helpers/jsonld_helper.rb' @@ -29,27 +43,119 @@ Metrics/PerceivedComplexity: # Configuration parameters: CountAsOne. RSpec/ExampleLength: - Max: 18 + Max: 22 RSpec/MultipleExpectations: - Max: 7 + Max: 8 # Configuration parameters: AllowSubject. RSpec/MultipleMemoizedHelpers: Max: 17 - Exclude: - - 'spec/lib/activitypub/activity/create_spec.rb' - - 'spec/services/delete_account_service_spec.rb' - - 'spec/services/fan_out_on_write_service_spec.rb' # Configuration parameters: AllowedGroups. RSpec/NestedGroups: Max: 6 +# Configuration parameters: Include. +# Include: app/models/**/*.rb +Rails/HasAndBelongsToMany: + Exclude: + - 'app/models/concerns/account/associations.rb' + - 'app/models/status.rb' + - 'app/models/tag.rb' + Rails/OutputSafety: Exclude: - 'config/initializers/simple_form.rb' +# This cop supports unsafe autocorrection (--autocorrect-all). +# Configuration parameters: Include. +# Include: **/Rakefile, **/*.rake +Rails/RakeEnvironment: + Exclude: + - 'lib/tasks/auto_annotate_models.rake' + - 'lib/tasks/db.rake' + - 'lib/tasks/emojis.rake' + - 'lib/tasks/mastodon.rake' + - 'lib/tasks/repo.rake' + - 'lib/tasks/statistics.rake' + +# Configuration parameters: ForbiddenMethods, AllowedMethods. +# ForbiddenMethods: decrement!, decrement_counter, increment!, increment_counter, insert, insert!, insert_all, insert_all!, toggle!, touch, touch_all, update_all, update_attribute, update_column, update_columns, update_counters, upsert, upsert_all +Rails/SkipsModelValidations: + Exclude: + - 'app/controllers/admin/invites_controller.rb' + - 'app/controllers/concerns/session_tracking_concern.rb' + - 'app/models/concerns/account/merging.rb' + - 'app/models/concerns/expireable.rb' + - 'app/models/status.rb' + - 'app/models/trends/links.rb' + - 'app/models/trends/preview_card_batch.rb' + - 'app/models/trends/preview_card_provider_batch.rb' + - 'app/models/trends/status_batch.rb' + - 'app/models/trends/statuses.rb' + - 'app/models/trends/tag_batch.rb' + - 'app/models/trends/tags.rb' + - 'app/models/user.rb' + - 'app/services/activitypub/process_status_update_service.rb' + - 'app/services/approve_appeal_service.rb' + - 'app/services/block_domain_service.rb' + - 'app/services/delete_account_service.rb' + - 'app/services/process_mentions_service.rb' + - 'app/services/unallow_domain_service.rb' + - 'app/services/unblock_domain_service.rb' + - 'app/services/update_status_service.rb' + - 'app/workers/activitypub/post_upgrade_worker.rb' + - 'app/workers/move_worker.rb' + - 'app/workers/scheduler/ip_cleanup_scheduler.rb' + - 'app/workers/scheduler/scheduled_statuses_scheduler.rb' + - 'lib/mastodon/cli/accounts.rb' + - 'lib/mastodon/cli/maintenance.rb' + - 'spec/lib/activitypub/activity/follow_spec.rb' + - 'spec/services/follow_service_spec.rb' + - 'spec/services/update_account_service_spec.rb' + +# Configuration parameters: Include. +# Include: app/models/**/*.rb +Rails/UniqueValidationWithoutIndex: + Exclude: + - 'app/models/account_alias.rb' + - 'app/models/custom_filter_status.rb' + - 'app/models/identity.rb' + - 'app/models/webauthn_credential.rb' + +# This cop supports unsafe autocorrection (--autocorrect-all). +# Configuration parameters: EnforcedStyle. +# SupportedStyles: exists, where +Rails/WhereExists: + Exclude: + - 'app/controllers/activitypub/inboxes_controller.rb' + - 'app/controllers/admin/email_domain_blocks_controller.rb' + - 'app/lib/activitypub/activity/create.rb' + - 'app/lib/delivery_failure_tracker.rb' + - 'app/lib/feed_manager.rb' + - 'app/lib/status_cache_hydrator.rb' + - 'app/lib/suspicious_sign_in_detector.rb' + - 'app/models/concerns/account/interactions.rb' + - 'app/models/featured_tag.rb' + - 'app/models/poll.rb' + - 'app/models/session_activation.rb' + - 'app/models/status.rb' + - 'app/models/user.rb' + - 'app/policies/status_policy.rb' + - 'app/serializers/rest/announcement_serializer.rb' + - 'app/serializers/rest/tag_serializer.rb' + - 'app/services/activitypub/fetch_remote_status_service.rb' + - 'app/services/vote_service.rb' + - 'app/validators/reaction_validator.rb' + - 'app/validators/vote_validator.rb' + - 'app/workers/move_worker.rb' + - 'lib/tasks/tests.rake' + - 'spec/models/account_spec.rb' + - 'spec/services/activitypub/process_collection_service_spec.rb' + - 'spec/services/purge_domain_service_spec.rb' + - 'spec/services/unallow_domain_service_spec.rb' + # This cop supports unsafe autocorrection (--autocorrect-all). # Configuration parameters: AllowedMethods, AllowedPatterns. # AllowedMethods: ==, equal?, eql? @@ -58,12 +164,17 @@ Style/ClassEqualityComparison: - 'app/helpers/jsonld_helper.rb' - 'app/serializers/activitypub/outbox_serializer.rb' +Style/ClassVars: + Exclude: + - 'config/initializers/devise.rb' + # This cop supports safe autocorrection (--autocorrect). # Configuration parameters: AllowedVars. Style/FetchEnvVar: Exclude: - 'app/lib/redis_configuration.rb' - 'app/lib/translation_service.rb' + - 'config/environments/development.rb' - 'config/environments/production.rb' - 'config/initializers/2_limited_federation_mode.rb' - 'config/initializers/3_omniauth.rb' @@ -73,8 +184,9 @@ Style/FetchEnvVar: - 'config/initializers/paperclip.rb' - 'config/initializers/vapid.rb' - 'lib/mastodon/redis_config.rb' + - 'lib/premailer_webpack_strategy.rb' - 'lib/tasks/repo.rake' - - 'spec/system/profile_spec.rb' + - 'spec/features/profile_spec.rb' # This cop supports safe autocorrection (--autocorrect). # Configuration parameters: EnforcedStyle, MaxUnannotatedPlaceholdersAllowed, AllowedMethods, AllowedPatterns. @@ -82,6 +194,7 @@ Style/FetchEnvVar: # AllowedMethods: redirect Style/FormatStringToken: Exclude: + - 'app/models/privacy_policy.rb' - 'config/initializers/devise.rb' - 'lib/paperclip/color_extractor.rb' @@ -95,6 +208,10 @@ Style/GlobalStdStream: # Configuration parameters: MinBodyLength, AllowConsecutiveConditionals. Style/GuardClause: Exclude: + - 'app/controllers/admin/confirmations_controller.rb' + - 'app/controllers/auth/confirmations_controller.rb' + - 'app/controllers/auth/passwords_controller.rb' + - 'app/controllers/settings/two_factor_authentication/webauthn_credentials_controller.rb' - 'app/lib/activitypub/activity/block.rb' - 'app/lib/request.rb' - 'app/lib/request_pool.rb' @@ -118,14 +235,35 @@ Style/GuardClause: - 'lib/mastodon/cli/accounts.rb' - 'lib/mastodon/cli/maintenance.rb' - 'lib/mastodon/cli/media.rb' + - 'lib/paperclip/attachment_extensions.rb' - 'lib/tasks/repo.rake' +# This cop supports safe autocorrection (--autocorrect). +# Configuration parameters: EnforcedStyle. +# SupportedStyles: braces, no_braces +Style/HashAsLastArrayItem: + Exclude: + - 'app/controllers/admin/statuses_controller.rb' + - 'app/controllers/api/v1/statuses_controller.rb' + - 'app/models/concerns/account/counters.rb' + - 'app/models/concerns/status/threading_concern.rb' + - 'app/models/status.rb' + - 'app/services/batched_remove_status_service.rb' + - 'app/services/notify_service.rb' + # This cop supports unsafe autocorrection (--autocorrect-all). Style/HashTransformValues: Exclude: - 'app/serializers/rest/web_push_subscription_serializer.rb' - 'app/services/import_service.rb' +# This cop supports safe autocorrection (--autocorrect). +Style/IfUnlessModifier: + Exclude: + - 'config/environments/production.rb' + - 'config/initializers/devise.rb' + - 'config/initializers/ffmpeg.rb' + # This cop supports unsafe autocorrection (--autocorrect-all). Style/MapToHash: Exclude: @@ -160,6 +298,13 @@ Style/OptionalBooleanParameter: - 'app/workers/unfollow_follow_worker.rb' - 'lib/mastodon/redis_config.rb' +# This cop supports safe autocorrection (--autocorrect). +# Configuration parameters: PreferredDelimiters. +Style/PercentLiteralDelimiters: + Exclude: + - 'config/deploy.rb' + - 'config/initializers/doorkeeper.rb' + # This cop supports unsafe autocorrection (--autocorrect-all). # Configuration parameters: EnforcedStyle. # SupportedStyles: short, verbose @@ -173,6 +318,16 @@ Style/RedundantConstantBase: - 'config/environments/production.rb' - 'config/initializers/sidekiq.rb' +# This cop supports unsafe autocorrection (--autocorrect-all). +# Configuration parameters: SafeForConstants. +Style/RedundantFetchBlock: + Exclude: + - 'config/initializers/1_hosts.rb' + - 'config/initializers/chewy.rb' + - 'config/initializers/devise.rb' + - 'config/initializers/paperclip.rb' + - 'config/puma.rb' + # This cop supports unsafe autocorrection (--autocorrect-all). # Configuration parameters: ConvertCodeThatCanStartToReturnNil, AllowedMethods, MaxChainLength. # AllowedMethods: present?, blank?, presence, try, try! @@ -180,12 +335,59 @@ Style/SafeNavigation: Exclude: - 'app/models/concerns/account/finder_concern.rb' +# This cop supports safe autocorrection (--autocorrect). +# Configuration parameters: EnforcedStyle. +# SupportedStyles: only_raise, only_fail, semantic +Style/SignalException: + Exclude: + - 'lib/devise/strategies/two_factor_ldap_authenticatable.rb' + - 'lib/devise/strategies/two_factor_pam_authenticatable.rb' + +# This cop supports unsafe autocorrection (--autocorrect-all). +Style/SingleArgumentDig: + Exclude: + - 'lib/webpacker/manifest_extensions.rb' + # This cop supports unsafe autocorrection (--autocorrect-all). # Configuration parameters: Mode. Style/StringConcatenation: Exclude: - 'config/initializers/paperclip.rb' +# This cop supports safe autocorrection (--autocorrect). +# Configuration parameters: EnforcedStyle, ConsistentQuotesInMultiline. +# SupportedStyles: single_quotes, double_quotes +Style/StringLiterals: + Exclude: + - 'config/environments/production.rb' + - 'config/initializers/backtrace_silencers.rb' + - 'config/initializers/http_client_proxy.rb' + - 'config/initializers/rack_attack.rb' + - 'config/initializers/webauthn.rb' + - 'config/routes.rb' + +# This cop supports safe autocorrection (--autocorrect). +# Configuration parameters: EnforcedStyle, AllowSafeAssignment. +# SupportedStyles: require_parentheses, require_no_parentheses, require_parentheses_when_complex +Style/TernaryParentheses: + Exclude: + - 'config/environments/development.rb' + +# This cop supports safe autocorrection (--autocorrect). +# Configuration parameters: EnforcedStyleForMultiline. +# SupportedStylesForMultiline: comma, consistent_comma, no_comma +Style/TrailingCommaInArguments: + Exclude: + - 'config/initializers/paperclip.rb' + +# This cop supports safe autocorrection (--autocorrect). +# Configuration parameters: EnforcedStyleForMultiline. +# SupportedStylesForMultiline: comma, consistent_comma, no_comma +Style/TrailingCommaInHashLiteral: + Exclude: + - 'config/environments/production.rb' + - 'config/environments/test.rb' + # This cop supports safe autocorrection (--autocorrect). # Configuration parameters: WordRegex. # SupportedStyles: percent, brackets diff --git a/.ruby-version b/.ruby-version index bea438e9ad..be94e6f53d 100644 --- a/.ruby-version +++ b/.ruby-version @@ -1 +1 @@ -3.3.1 +3.2.2 diff --git a/.simplecov b/.simplecov new file mode 100644 index 0000000000..fbd0207bec --- /dev/null +++ b/.simplecov @@ -0,0 +1,22 @@ +# frozen_string_literal: true + +if ENV['CI'] + require 'simplecov-lcov' + SimpleCov::Formatter::LcovFormatter.config.report_with_single_file = true + SimpleCov.formatter = SimpleCov::Formatter::LcovFormatter +else + SimpleCov.formatter = SimpleCov::Formatter::HTMLFormatter +end + +SimpleCov.start 'rails' do + enable_coverage :branch + + add_filter 'lib/linter' + + add_group 'Libraries', 'lib' + add_group 'Policies', 'app/policies' + add_group 'Presenters', 'app/presenters' + add_group 'Serializers', 'app/serializers' + add_group 'Services', 'app/services' + add_group 'Validators', 'app/validators' +end diff --git a/AUTHORS_KB.md b/AUTHORS_KB.md deleted file mode 100644 index 2cda5fd31d..0000000000 --- a/AUTHORS_KB.md +++ /dev/null @@ -1,18 +0,0 @@ -# Authors for kmyblue fork - -## 貢献者 - -kmyblueフォークは、以下の方の貢献によって成り立っています。 -本家Mastodonの貢献者については、`AUTHORS.md`をご覧ください。 - -- [aoisensi](https://github.com/aoisensi) -- [KMY](https://github.com/kmycode) -- [S-H-GAMELINKS](https://github.com/S-H-GAMELINKS) -- [Yuicho](https://github.com/yuicho) - -## 特記 - -kmyblueフォークの開発にあたって、API・Activity仕様の設計(一部機能については内部仕様)策定の過程で下記リポジトリのコードを参考にしました。 -kmyblueフォークに直接貢献したわけではありませんが、以下のリポジトリにある絵文字リアクション機能・検索範囲機能のコードのうち一部にkmyblueへ転写した箇所がございますため、お名前記載させていただきます。 - -- [Fedibird](https://github.com/fedibird/mastodon) diff --git a/CHANGELOG.md b/CHANGELOG.md index a53790afaf..6f775fcfa8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,101 +2,6 @@ All notable changes to this project will be documented in this file. -## [4.2.7] - 2024-02-16 - -### Fixed - -- Fix OmniAuth tests and edge cases in error handling ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/29201), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/29207)) -- Fix new installs by upgrading to the latest release of the `nsa` gem, instead of a no longer existing commit ([mjankowski](https://github.com/mastodon/mastodon/pull/29065)) - -### Security - -- Fix insufficient checking of remote posts ([GHSA-jhrq-qvrm-qr36](https://github.com/mastodon/mastodon/security/advisories/GHSA-jhrq-qvrm-qr36)) - -## [4.2.6] - 2024-02-14 - -### Security - -- Update the `sidekiq-unique-jobs` dependency (see [GHSA-cmh9-rx85-xj38](https://github.com/mhenrixon/sidekiq-unique-jobs/security/advisories/GHSA-cmh9-rx85-xj38)) - In addition, we have disabled the web interface for `sidekiq-unique-jobs` out of caution. - If you need it, you can re-enable it by setting `ENABLE_SIDEKIQ_UNIQUE_JOBS_UI=true`. - If you only need to clear all locks, you can now use `bundle exec rake sidekiq_unique_jobs:delete_all_locks`. -- Update the `nokogiri` dependency (see [GHSA-xc9x-jj77-9p9j](https://github.com/sparklemotion/nokogiri/security/advisories/GHSA-xc9x-jj77-9p9j)) -- Disable administrative Doorkeeper routes ([ThisIsMissEm](https://github.com/mastodon/mastodon/pull/29187)) -- Fix ongoing streaming sessions not being invalidated when applications get deleted in some cases ([GHSA-7w3c-p9j8-mq3x](https://github.com/mastodon/mastodon/security/advisories/GHSA-7w3c-p9j8-mq3x)) - In some rare cases, the streaming server was not notified of access tokens revocation on application deletion. -- Change external authentication behavior to never reattach a new identity to an existing user by default ([GHSA-vm39-j3vx-pch3](https://github.com/mastodon/mastodon/security/advisories/GHSA-vm39-j3vx-pch3)) - Up until now, Mastodon has allowed new identities from external authentication providers to attach to an existing local user based on their verified e-mail address. - This allowed upgrading users from a database-stored password to an external authentication provider, or move from one authentication provider to another. - However, this behavior may be unexpected, and means that when multiple authentication providers are configured, the overall security would be that of the least secure authentication provider. - For these reasons, this behavior is now locked under the `ALLOW_UNSAFE_AUTH_PROVIDER_REATTACH` environment variable. - In addition, regardless of this environment variable, Mastodon will refuse to attach two identities from the same authentication provider to the same account. - -## [4.2.5] - 2024-02-01 - -### Security - -- Fix insufficient origin validation (CVE-2024-23832, [GHSA-3fjr-858r-92rw](https://github.com/mastodon/mastodon/security/advisories/GHSA-3fjr-858r-92rw)) - -## [4.2.4] - 2024-01-24 - -### Fixed - -- Fix error when processing remote files with unusually long names ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/28823)) -- Fix processing of compacted single-item JSON-LD collections ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/28816)) -- Retry 401 errors on replies fetching ([ShadowJonathan](https://github.com/mastodon/mastodon/pull/28788)) -- Fix `RecordNotUnique` errors in LinkCrawlWorker ([tribela](https://github.com/mastodon/mastodon/pull/28748)) -- Fix Mastodon not correctly processing HTTP Signatures with query strings ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/28443), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/28476)) -- Fix potential redirection loop of streaming endpoint ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/28665)) -- Fix streaming API redirection ignoring the port of `streaming_api_base_url` ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/28558)) -- Fix error when processing link preview with an array as `inLanguage` ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/28252)) -- Fix unsupported time zone or locale preventing sign-up ([Gargron](https://github.com/mastodon/mastodon/pull/28035)) -- Fix "Hide these posts from home" list setting not refreshing when switching lists ([brianholley](https://github.com/mastodon/mastodon/pull/27763)) -- Fix missing background behind dismissable banner in web UI ([Gargron](https://github.com/mastodon/mastodon/pull/27479)) -- Fix line wrapping of language selection button with long locale codes ([gunchleoc](https://github.com/mastodon/mastodon/pull/27100), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/27127)) -- Fix `Undo Announce` activity not being sent to non-follower authors ([MitarashiDango](https://github.com/mastodon/mastodon/pull/18482)) -- Fix N+1s because of association preloaders not actually getting called ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/28339)) -- Fix empty column explainer getting cropped under certain conditions ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/28337)) -- Fix `LinkCrawlWorker` error when encountering empty OEmbed response ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/28268)) -- Fix call to inefficient `delete_matched` cache method in domain blocks ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/28367)) - -### Security - -- Add rate-limit of TOTP authentication attempts at controller level ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/28801)) - -## [4.2.3] - 2023-12-05 - -### Fixed - -- Fix dependency on `json-canonicalization` version that has been made unavailable since last release - -## [4.2.2] - 2023-12-04 - -### Changed - -- Change dismissed banners to be stored server-side ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/27055)) -- Change GIF max matrix size error to explicitly mention GIF files ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/27927)) -- Change `Follow` activities delivery to bypass availability check ([ShadowJonathan](https://github.com/mastodon/mastodon/pull/27586)) -- Change single-column navigation notice to be displayed outside of the logo container ([renchap](https://github.com/mastodon/mastodon/pull/27462), [renchap](https://github.com/mastodon/mastodon/pull/27476)) -- Change Content-Security-Policy to be tighter on media paths ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/26889)) -- Change post language code to include country code when relevant ([gunchleoc](https://github.com/mastodon/mastodon/pull/27099), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/27207)) - -### Fixed - -- Fix upper border radius of onboarding columns ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/27890)) -- Fix incoming status creation date not being restricted to standard ISO8601 ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/27655), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/28081)) -- Fix some posts from threads received out-of-order sometimes not being inserted into timelines ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/27653)) -- Fix posts from force-sensitized accounts being able to trend ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/27620)) -- Fix error when trying to delete already-deleted file with OpenStack Swift ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/27569)) -- Fix batch attachment deletion when using OpenStack Swift ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/27554)) -- Fix processing LDSigned activities from actors with unknown public keys ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/27474)) -- Fix error and incorrect URLs in `/api/v1/accounts/:id/featured_tags` for remote accounts ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/27459)) -- Fix report processing notice not mentioning the report number when performing a custom action ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/27442)) -- Fix handling of `inLanguage` attribute in preview card processing ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/27423)) -- Fix own posts being removed from home timeline when unfollowing a used hashtag ([kmycode](https://github.com/mastodon/mastodon/pull/27391)) -- Fix some link anchors being recognized as hashtags ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/27271), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/27584)) -- Fix format-dependent redirects being cached regardless of requested format ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/27634)) - ## [4.2.1] - 2023-10-10 ### Added diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 43f8a79249..b68a9bde3e 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,35 +1,50 @@ -# CONTRIBUTING +# Contributing -kmyblueは、コミュニティの意見も聞くには聞きますが導入する・しないは管理人が決定します。 +Thank you for considering contributing to Mastodon 🐘 -## バグ報告 +You can contribute in the following ways: -バグについて、L最新よりも過去のバージョンへの対応は、LTSや特別な場合以外は行いません。 +- Finding and reporting bugs +- Translating the Mastodon interface into various languages +- Contributing code to Mastodon by fixing bugs or implementing features +- Improving the documentation -以下のいずれかの方法で報告してください。 +If your contributions are accepted into Mastodon, you can request to be paid through [our OpenCollective](https://opencollective.com/mastodon). -- [GitHub Issues](https://github.com/kmycode/mastodon/issues) (セキュリティインシデントはここの一番下から) -- [kmyblue開発者への連絡](https://kmy.blue/@askyq) -- [kmyblue開発者へのメール](https://kmy.blue/about) +## API Changes and Additions -## 翻訳、プルリクエスト +Please note that any changes or additions made to the API should have an accompanying pull request on [our documentation repository](https://github.com/mastodon/documentation). -新しい機能や既存機能の修正については、プルリクエストのためにコードを作成する前に、まずGitHub Issuesで機能の提案を行いkmyblue開発者の考えを聞くことをおすすめします。バグ修正、翻訳、テストコードなどは基本受け入れますが、依存モジュールのバージョンアップについては特別な事情がなければ本家Mastodonよりも先に行かないようにしてください。 +## Bug reports -プルリクエストのタイトルには、プルリクエストの内容が明確になるようなものを設定してください。 +Bug reports and feature suggestions must use descriptive and concise titles and be submitted to [GitHub Issues](https://github.com/mastodon/mastodon/issues). Please use the search function to make sure that you are not submitting duplicates, and that a similar report or request has not already been resolved or rejected. -### kmyblueの開発方針 +## Translations -下記のものに矛盾がなければ、あとは管理人の意向次第です。 +You can submit translations via [Crowdin](https://crowdin.com/project/mastodon). They are periodically merged into the codebase. -- **自分の投稿を見せたくない人に見せない** -- **他人の見たくない投稿を見ない** -- ただし本家Mastodonで上記原則に矛盾した機能が追加された場合は従う -- 画面を騒がしくするような機能(絵文字を大きく表示するなど)は追加しないか、控えめにする。ただし他のソフトウェアにも導入され利用者が多くいる場合などは別途判断して、オプトアウト可能な設定項目とともに追加する -- 負荷を著しく上げるような機能はできるだけ追加しない +[![Crowdin](https://d322cqt584bo4o.cloudfront.net/mastodon/localized.svg)](https://crowdin.com/project/mastodon) -kmyblueが意図的に実装していない機能は、例えば以下のものがあります。詳しい理由が知りたい場合は[この記事を参照するか](https://note.com/kmycode/n/n463410b5e03c)、別途お問い合わせください。もちろん明確な根拠がある場合、あなたはこれに抗議する権利を有しますが、あなたがこのkmyblueをフォークして新しいリポジトリを作るほうがより自由でしょう。 +## Pull requests -- お気に入り一覧の公開 -- ブックマーク分類の公開 -- Fedibird、Misskeyにあるような詳細な画面表示オプション +**Please use clean, concise titles for your pull requests.** Unless the pull request is about refactoring code, updating dependencies or other internal tasks, assume that the person reading the pull request title is not a programmer or Mastodon developer, but instead a Mastodon user or server administrator, and **try to describe your change or fix from their perspective**. We use commit squashing, so the final commit in the main branch will carry the title of the pull request, and commits from the main branch are fed into the changelog. The changelog is separated into [keepachangelog.com categories](https://keepachangelog.com/en/1.0.0/), and while that spec does not prescribe how the entries ought to be named, for easier sorting, start your pull request titles using one of the verbs "Add", "Change", "Deprecate", "Remove", or "Fix" (present tense). + +Example: + +| Not ideal | Better | +| ------------------------------------ | ------------------------------------------------------------- | +| Fixed NoMethodError in RemovalWorker | Fix nil error when removing statuses caused by race condition | + +It is not always possible to phrase every change in such a manner, but it is desired. + +**The smaller the set of changes in the pull request is, the quicker it can be reviewed and merged.** Splitting tasks into multiple smaller pull requests is often preferable. + +**Pull requests that do not pass automated checks may not be reviewed**. In particular, you need to keep in mind: + +- Unit and integration tests (rspec, jest) +- Code style rules (rubocop, eslint) +- Normalization of locale files (i18n-tasks) + +## Documentation + +The [Mastodon documentation](https://docs.joinmastodon.org) is a statically generated site. You can [submit merge requests to mastodon/documentation](https://github.com/mastodon/documentation). diff --git a/Dockerfile b/Dockerfile index 4278242bc9..96f8b5cd27 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -# syntax=docker/dockerfile:1.7 +# syntax=docker/dockerfile:1.4 # Please see https://docs.docker.com/engine/reference/builder for information about # the extended buildx capabilities used in this file. @@ -7,20 +7,20 @@ ARG TARGETPLATFORM=${TARGETPLATFORM} ARG BUILDPLATFORM=${BUILDPLATFORM} -# Ruby image to use for base image, change with [--build-arg RUBY_VERSION="3.3.1"] -ARG RUBY_VERSION="3.3.1" +# Ruby image to use for base image, change with [--build-arg RUBY_VERSION="3.2.2"] +ARG RUBY_VERSION="3.2.2" # # Node version to use in base image, change with [--build-arg NODE_MAJOR_VERSION="20"] ARG NODE_MAJOR_VERSION="20" # Debian image to use for base image, change with [--build-arg DEBIAN_VERSION="bookworm"] ARG DEBIAN_VERSION="bookworm" # Node image to use for base image based on combined variables (ex: 20-bookworm-slim) FROM docker.io/node:${NODE_MAJOR_VERSION}-${DEBIAN_VERSION}-slim as node -# Ruby image to use for base image based on combined variables (ex: 3.3.1-slim-bookworm) +# Ruby image to use for base image based on combined variables (ex: 3.2.2-slim-bookworm) FROM docker.io/ruby:${RUBY_VERSION}-slim-${DEBIAN_VERSION} as ruby # Resulting version string is vX.X.X-MASTODON_VERSION_PRERELEASE+MASTODON_VERSION_METADATA # Example: v4.2.0-nightly.2023.11.09+something -# Overwrite existence of 'alpha.0' in version.rb [--build-arg MASTODON_VERSION_PRERELEASE="nightly.2023.11.09"] +# Overwrite existance of 'alpha.0' in version.rb [--build-arg MASTODON_VERSION_PRERELEASE="nightly.2023.11.09"] ARG MASTODON_VERSION_PRERELEASE="" # Append build metadata or fork information to version.rb [--build-arg MASTODON_VERSION_METADATA="something"] ARG MASTODON_VERSION_METADATA="" @@ -29,7 +29,7 @@ ARG MASTODON_VERSION_METADATA="" # See: https://docs.joinmastodon.org/admin/config/#rails_serve_static_files ARG RAILS_SERVE_STATIC_FILES="true" # Allow to use YJIT compiler -# See: https://github.com/ruby/ruby/blob/v3_2_4/doc/yjit/yjit.md +# See: https://github.com/ruby/ruby/blob/master/doc/yjit/yjit.md ARG RUBY_YJIT_ENABLE="1" # Timezone used by the Docker container and runtime, change with [--build-arg TZ=Europe/Berlin] ARG TZ="Etc/UTC" @@ -205,12 +205,7 @@ ARG TARGETPLATFORM RUN \ # Use Ruby on Rails to create Mastodon assets - ACTIVE_RECORD_ENCRYPTION_DETERMINISTIC_KEY=precompile_placeholder \ - ACTIVE_RECORD_ENCRYPTION_KEY_DERIVATION_SALT=precompile_placeholder \ - ACTIVE_RECORD_ENCRYPTION_PRIMARY_KEY=precompile_placeholder \ - OTP_SECRET=precompile_placeholder \ - SECRET_KEY_BASE=precompile_placeholder \ - bundle exec rails assets:precompile; \ + OTP_SECRET=precompile_placeholder SECRET_KEY_BASE=precompile_placeholder bundle exec rails assets:precompile; \ # Cleanup temporary files rm -fr /opt/mastodon/tmp; @@ -262,4 +257,4 @@ USER mastodon # Expose default Puma ports EXPOSE 3000 # Set container tini as default entry point -ENTRYPOINT ["/usr/bin/tini", "--"] +ENTRYPOINT ["/usr/bin/tini", "--"] \ No newline at end of file diff --git a/FEDERATION.md b/FEDERATION.md index 2819fa935a..e3721d7241 100644 --- a/FEDERATION.md +++ b/FEDERATION.md @@ -1,35 +1,19 @@ -# Federation - -## Supported federation protocols and standards - -- [ActivityPub](https://www.w3.org/TR/activitypub/) (Server-to-Server) -- [WebFinger](https://webfinger.net/) -- [Http Signatures](https://datatracker.ietf.org/doc/html/draft-cavage-http-signatures) -- [NodeInfo](https://nodeinfo.diaspora.software/) - -## Supported FEPs - -- [FEP-67ff: FEDERATION.md](https://codeberg.org/fediverse/fep/src/branch/main/fep/67ff/fep-67ff.md) -- [FEP-f1d5: NodeInfo in Fediverse Software](https://codeberg.org/fediverse/fep/src/branch/main/fep/f1d5/fep-f1d5.md) -- [FEP-8fcf: Followers collection synchronization across servers](https://codeberg.org/fediverse/fep/src/branch/main/fep/8fcf/fep-8fcf.md) -- [FEP-5feb: Search indexing consent for actors](https://codeberg.org/fediverse/fep/src/branch/main/fep/5feb/fep-5feb.md) - -## ActivityPub in Mastodon +## ActivityPub federation in Mastodon Mastodon largely follows the ActivityPub server-to-server specification but it makes uses of some non-standard extensions, some of which are required for interacting with Mastodon at all. -- [Supported ActivityPub vocabulary](https://docs.joinmastodon.org/spec/activitypub/) +Supported vocabulary: https://docs.joinmastodon.org/spec/activitypub/ ### Required extensions -#### WebFinger +#### Webfinger In Mastodon, users are identified by a `username` and `domain` pair (e.g., `Gargron@mastodon.social`). This is used both for discovery and for unambiguously mentioning users across the fediverse. Furthermore, this is part of Mastodon's database design from its very beginnings. As a result, Mastodon requires that each ActivityPub actor uniquely maps back to an `acct:` URI that can be resolved via WebFinger. -- [WebFinger information and examples](https://docs.joinmastodon.org/spec/webfinger/) +More information and examples are available at: https://docs.joinmastodon.org/spec/webfinger/ #### HTTP Signatures @@ -37,13 +21,11 @@ In order to authenticate activities, Mastodon relies on HTTP Signatures, signing Mastodon requires all `POST` requests to be signed, and MAY require `GET` requests to be signed, depending on the configuration of the Mastodon server. -- [HTTP Signatures information and examples](https://docs.joinmastodon.org/spec/security/#http) +More information on HTTP Signatures, as well as examples, can be found here: https://docs.joinmastodon.org/spec/security/#http ### Optional extensions -- [Linked-Data Signatures](https://docs.joinmastodon.org/spec/security/#ld) -- [Bearcaps](https://docs.joinmastodon.org/spec/bearcaps/) - -### Additional documentation - -- [Mastodon documentation](https://docs.joinmastodon.org/) +- Linked-Data Signatures: https://docs.joinmastodon.org/spec/security/#ld +- Bearcaps: https://docs.joinmastodon.org/spec/bearcaps/ +- Followers collection synchronization: https://codeberg.org/fediverse/fep/src/branch/main/fep/8fcf/fep-8fcf.md +- Search indexing consent for actors: https://codeberg.org/fediverse/fep/src/branch/main/fep/5feb/fep-5feb.md diff --git a/Gemfile b/Gemfile index 240dcce95a..2d4e504ac7 100644 --- a/Gemfile +++ b/Gemfile @@ -1,37 +1,37 @@ # frozen_string_literal: true source 'https://rubygems.org' -ruby '>= 3.1.0' +ruby '>= 3.0.0' -gem 'propshaft' gem 'puma', '~> 6.3' -gem 'rack', '~> 2.2.7' gem 'rails', '~> 7.1.1' +gem 'propshaft' gem 'thor', '~> 1.2' +gem 'rack', '~> 2.2.7' # For why irb is in the Gemfile, see: https://ruby.social/@st0012/111444685161478182 gem 'irb', '~> 1.8' -gem 'dotenv' gem 'haml-rails', '~>2.0' gem 'pg', '~> 1.5' gem 'pghero' +gem 'dotenv-rails', '~> 2.8' gem 'aws-sdk-s3', '~> 1.123', require: false -gem 'blurhash', '~> 0.1' gem 'fog-core', '<= 2.4.0' gem 'fog-openstack', '~> 1.0', require: false gem 'kt-paperclip', '~> 7.2' gem 'md-paperclip-azure', '~> 2.2', require: false +gem 'blurhash', '~> 0.1' gem 'active_model_serializers', '~> 0.10' gem 'addressable', '~> 2.8' -gem 'bootsnap', '~> 1.18.0', require: false +gem 'bootsnap', '~> 1.17.0', require: false gem 'browser' gem 'charlock_holmes', '~> 0.7.7' gem 'chewy', '~> 7.3' gem 'devise', '~> 4.9' -gem 'devise-two-factor' +gem 'devise-two-factor', '~> 4.1' group :pam_authentication, optional: true do gem 'devise_pam_authenticatable2', '~> 9.2' @@ -39,11 +39,11 @@ end gem 'net-ldap', '~> 0.18' -gem 'omniauth', '~> 2.0' gem 'omniauth-cas', '~> 3.0.0.beta.1' -gem 'omniauth_openid_connect', '~> 0.6.1' -gem 'omniauth-rails_csrf_protection', '~> 1.0' gem 'omniauth-saml', '~> 2.0' +gem 'omniauth_openid_connect', '~> 0.6.1' +gem 'omniauth', '~> 2.0' +gem 'omniauth-rails_csrf_protection', '~> 1.0' gem 'color_diff', '~> 0.1' gem 'csv', '~> 3.2' @@ -53,49 +53,48 @@ gem 'ed25519', '~> 1.3' gem 'fast_blank', '~> 1.0' gem 'fastimage' gem 'hiredis', '~> 0.6' +gem 'redis-namespace', '~> 1.10' gem 'htmlentities', '~> 4.3' -gem 'http', '~> 5.2.0' +gem 'http', '~> 5.1' gem 'http_accept_language', '~> 2.1' gem 'httplog', '~> 1.6.2' -gem 'i18n' gem 'idn-ruby', require: 'idn' -gem 'inline_svg' gem 'kaminari', '~> 1.2' gem 'link_header', '~> 0.0' -gem 'mario-redis-lock', '~> 1.2', require: 'redis_lock' gem 'mime-types', '~> 3.5.0', require: 'mime/types/columnar' gem 'nokogiri', '~> 1.15' -gem 'nsa' +gem 'nsa', github: 'jhawthorn/nsa', ref: 'e020fcc3a54d993ab45b7194d89ab720296c111b' gem 'oj', '~> 3.14' gem 'ox', '~> 2.14' gem 'parslet' -gem 'premailer-rails' +gem 'posix-spawn' gem 'public_suffix', '~> 5.0' gem 'pundit', '~> 2.3' +gem 'premailer-rails' gem 'rack-attack', '~> 6.6' gem 'rack-cors', '~> 2.0', require: 'rack/cors' gem 'rails-i18n', '~> 7.0' gem 'redcarpet', '~> 3.6' gem 'redis', '~> 4.5', require: ['redis', 'redis/connection/hiredis'] -gem 'redis-namespace', '~> 1.10' +gem 'mario-redis-lock', '~> 1.2', require: 'redis_lock' gem 'rqrcode', '~> 2.2' gem 'ruby-progressbar', '~> 1.13' gem 'sanitize', '~> 6.0' gem 'scenic', '~> 1.7' gem 'sidekiq', '~> 6.5' -gem 'sidekiq-bulk', '~> 0.2.0' gem 'sidekiq-scheduler', '~> 5.0' gem 'sidekiq-unique-jobs', '~> 7.1' -gem 'simple_form', '~> 5.2' +gem 'sidekiq-bulk', '~> 0.2.0' gem 'simple-navigation', '~> 4.4' -gem 'stoplight', '~> 4.1' -gem 'strong_migrations', '1.8.0' +gem 'simple_form', '~> 5.2' +gem 'stoplight', '~> 3.0.1' +gem 'strong_migrations', '1.7.0' gem 'tty-prompt', '~> 0.23', require: false gem 'twitter-text', '~> 3.1.0' gem 'tzinfo-data', '~> 1.2023' -gem 'webauthn', '~> 3.0' gem 'webpacker', '~> 5.4' gem 'webpush', github: 'ClearlyClaire/webpush', ref: 'f14a4d52e201128b1b00245d11b6de80d6cfdcd9' +gem 'webauthn', '~> 3.0' gem 'json-ld' gem 'json-ld-preloaded', '~> 3.2' @@ -103,24 +102,6 @@ gem 'rdf-normalize', '~> 0.5' gem 'private_address_check', '~> 0.5' -group :opentelemetry do - gem 'opentelemetry-exporter-otlp', '~> 0.26.3', require: false - gem 'opentelemetry-instrumentation-active_job', '~> 0.7.1', require: false - gem 'opentelemetry-instrumentation-active_model_serializers', '~> 0.20.1', require: false - gem 'opentelemetry-instrumentation-concurrent_ruby', '~> 0.21.2', require: false - gem 'opentelemetry-instrumentation-excon', '~> 0.22.0', require: false - gem 'opentelemetry-instrumentation-faraday', '~> 0.24.1', require: false - gem 'opentelemetry-instrumentation-http', '~> 0.23.2', require: false - gem 'opentelemetry-instrumentation-http_client', '~> 0.22.3', require: false - gem 'opentelemetry-instrumentation-net_http', '~> 0.22.4', require: false - gem 'opentelemetry-instrumentation-pg', '~> 0.27.1', require: false - gem 'opentelemetry-instrumentation-rack', '~> 0.24.1', require: false - gem 'opentelemetry-instrumentation-rails', '~> 0.30.0', require: false - gem 'opentelemetry-instrumentation-redis', '~> 0.25.3', require: false - gem 'opentelemetry-instrumentation-sidekiq', '~> 0.25.2', require: false - gem 'opentelemetry-sdk', '~> 1.4', require: false -end - group :test do # Adds RSpec Error/Warning annotations to GitHub PRs on the Files tab gem 'rspec-github', '~> 2.4', require: false @@ -131,8 +112,8 @@ group :test do # RSpec helpers for email specs gem 'email_spec' - # Extra RSpec extension methods and helpers for sidekiq - gem 'rspec-sidekiq', '~> 5.0' + # Extra RSpec extenion methods and helpers for sidekiq + gem 'rspec-sidekiq', '~> 4.0' # Browser integration testing gem 'capybara', '~> 3.39' @@ -142,7 +123,13 @@ group :test do gem 'database_cleaner-active_record' # Used to mock environment variables - gem 'climate_control' + gem 'climate_control', '~> 0.2' + + # Generating fake data for specs + gem 'faker', '~> 3.2' + + # Generate test objects for specs + gem 'fabrication', '~> 2.30' # Add back helpers functions removed in Rails 5.1 gem 'rails-controller-testing', '~> 1.0' @@ -178,7 +165,7 @@ group :development do # Preview mail in the browser gem 'letter_opener', '~> 1.8' - gem 'letter_opener_web', '~> 3.0' + gem 'letter_opener_web', '~> 2.0' # Security analysis CLI tools gem 'brakeman', '~> 6.0', require: false @@ -195,12 +182,6 @@ group :development, :test do # Interactive Debugging tools gem 'debug', '~> 1.8' - # Generate fake data values - gem 'faker', '~> 3.2' - - # Generate factory objects - gem 'fabrication', '~> 2.30' - # Profiling tools gem 'memory_profiler', require: false gem 'ruby-prof', require: false @@ -215,14 +196,12 @@ group :production do gem 'lograge', '~> 0.12' end -gem 'cocoon', '~> 1.2' gem 'concurrent-ruby', require: false gem 'connection_pool', require: false gem 'xorcist', '~> 1.1' +gem 'cocoon', '~> 1.2' gem 'net-http', '~> 0.4.0' gem 'rubyzip', '~> 2.3' gem 'hcaptcha', '~> 7.1' - -gem 'mail', '~> 2.8' diff --git a/Gemfile.lock b/Gemfile.lock index 6001c73db4..e9c62eb115 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -7,38 +7,49 @@ GIT hkdf (~> 0.2) jwt (~> 2.0) +GIT + remote: https://github.com/jhawthorn/nsa.git + revision: e020fcc3a54d993ab45b7194d89ab720296c111b + ref: e020fcc3a54d993ab45b7194d89ab720296c111b + specs: + nsa (0.2.8) + activesupport (>= 4.2, < 7.2) + concurrent-ruby (~> 1.0, >= 1.0.2) + sidekiq (>= 3.5) + statsd-ruby (~> 1.4, >= 1.4.0) + GEM remote: https://rubygems.org/ specs: - actioncable (7.1.3.2) - actionpack (= 7.1.3.2) - activesupport (= 7.1.3.2) + actioncable (7.1.2) + actionpack (= 7.1.2) + activesupport (= 7.1.2) nio4r (~> 2.0) websocket-driver (>= 0.6.1) zeitwerk (~> 2.6) - actionmailbox (7.1.3.2) - actionpack (= 7.1.3.2) - activejob (= 7.1.3.2) - activerecord (= 7.1.3.2) - activestorage (= 7.1.3.2) - activesupport (= 7.1.3.2) + actionmailbox (7.1.2) + actionpack (= 7.1.2) + activejob (= 7.1.2) + activerecord (= 7.1.2) + activestorage (= 7.1.2) + activesupport (= 7.1.2) mail (>= 2.7.1) net-imap net-pop net-smtp - actionmailer (7.1.3.2) - actionpack (= 7.1.3.2) - actionview (= 7.1.3.2) - activejob (= 7.1.3.2) - activesupport (= 7.1.3.2) + actionmailer (7.1.2) + actionpack (= 7.1.2) + actionview (= 7.1.2) + activejob (= 7.1.2) + activesupport (= 7.1.2) mail (~> 2.5, >= 2.5.4) net-imap net-pop net-smtp rails-dom-testing (~> 2.2) - actionpack (7.1.3.2) - actionview (= 7.1.3.2) - activesupport (= 7.1.3.2) + actionpack (7.1.2) + actionview (= 7.1.2) + activesupport (= 7.1.2) nokogiri (>= 1.8.5) racc rack (>= 2.2.4) @@ -46,15 +57,15 @@ GEM rack-test (>= 0.6.3) rails-dom-testing (~> 2.2) rails-html-sanitizer (~> 1.6) - actiontext (7.1.3.2) - actionpack (= 7.1.3.2) - activerecord (= 7.1.3.2) - activestorage (= 7.1.3.2) - activesupport (= 7.1.3.2) + actiontext (7.1.2) + actionpack (= 7.1.2) + activerecord (= 7.1.2) + activestorage (= 7.1.2) + activesupport (= 7.1.2) globalid (>= 0.6.0) nokogiri (>= 1.8.5) - actionview (7.1.3.2) - activesupport (= 7.1.3.2) + actionview (7.1.2) + activesupport (= 7.1.2) builder (~> 3.1) erubi (~> 1.11) rails-dom-testing (~> 2.2) @@ -64,22 +75,22 @@ GEM activemodel (>= 4.1) case_transform (>= 0.2) jsonapi-renderer (>= 0.1.1.beta1, < 0.3) - activejob (7.1.3.2) - activesupport (= 7.1.3.2) + activejob (7.1.2) + activesupport (= 7.1.2) globalid (>= 0.3.6) - activemodel (7.1.3.2) - activesupport (= 7.1.3.2) - activerecord (7.1.3.2) - activemodel (= 7.1.3.2) - activesupport (= 7.1.3.2) + activemodel (7.1.2) + activesupport (= 7.1.2) + activerecord (7.1.2) + activemodel (= 7.1.2) + activesupport (= 7.1.2) timeout (>= 0.4.0) - activestorage (7.1.3.2) - actionpack (= 7.1.3.2) - activejob (= 7.1.3.2) - activerecord (= 7.1.3.2) - activesupport (= 7.1.3.2) + activestorage (7.1.2) + actionpack (= 7.1.2) + activejob (= 7.1.2) + activerecord (= 7.1.2) + activesupport (= 7.1.2) marcel (~> 1.0) - activesupport (7.1.3.2) + activesupport (7.1.2) base64 bigdecimal concurrent-ruby (~> 1.0, >= 1.0.2) @@ -97,20 +108,22 @@ GEM activerecord (>= 3.2, < 8.0) rake (>= 10.4, < 14.0) ast (2.4.2) - attr_required (1.0.2) + attr_encrypted (4.0.0) + encryptor (~> 3.0.0) + attr_required (1.0.1) awrence (1.2.1) aws-eventstream (1.3.0) - aws-partitions (1.929.0) - aws-sdk-core (3.196.1) + aws-partitions (1.873.0) + aws-sdk-core (3.190.1) aws-eventstream (~> 1, >= 1.3.0) aws-partitions (~> 1, >= 1.651.0) aws-sigv4 (~> 1.8) jmespath (~> 1, >= 1.6.1) - aws-sdk-kms (1.81.0) - aws-sdk-core (~> 3, >= 3.193.0) + aws-sdk-kms (1.75.0) + aws-sdk-core (~> 3, >= 3.188.0) aws-sigv4 (~> 1.1) - aws-sdk-s3 (1.151.0) - aws-sdk-core (~> 3, >= 3.194.0) + aws-sdk-s3 (1.142.0) + aws-sdk-core (~> 3, >= 3.189.0) aws-sdk-kms (~> 1) aws-sigv4 (~> 1.8) aws-sigv4 (1.8.0) @@ -130,14 +143,21 @@ GEM erubi (>= 1.0.0) rack (>= 0.9.0) rouge (>= 1.0.0) - bigdecimal (3.1.8) - bindata (2.5.0) - binding_of_caller (1.0.1) - debug_inspector (>= 1.2.0) + better_html (2.0.2) + actionview (>= 6.0) + activesupport (>= 6.0) + ast (~> 2.0) + erubi (~> 1.4) + parser (>= 2.4) + smart_properties + bigdecimal (3.1.5) + bindata (2.4.15) + binding_of_caller (1.0.0) + debug_inspector (>= 0.0.1) blurhash (0.1.7) - bootsnap (1.18.3) + bootsnap (1.17.0) msgpack (~> 1.2) - brakeman (6.1.2) + brakeman (6.1.1) racc browser (5.3.1) brpoplpush-redis_script (0.1.3) @@ -147,91 +167,97 @@ GEM bundler-audit (0.9.1) bundler (>= 1.2.0, < 3) thor (~> 1.0) - capybara (3.40.0) + capybara (3.39.2) addressable matrix mini_mime (>= 0.1.3) - nokogiri (~> 1.11) + nokogiri (~> 1.8) rack (>= 1.6.0) rack-test (>= 0.6.3) regexp_parser (>= 1.5, < 3.0) xpath (~> 3.2) case_transform (0.2) activesupport - cbor (0.5.9.8) + cbor (0.5.9.6) charlock_holmes (0.7.7) - chewy (7.6.0) + chewy (7.4.0) activesupport (>= 5.2) - elasticsearch (>= 7.14.0, < 8) + elasticsearch (>= 7.12.0, < 7.14.0) elasticsearch-dsl chunky_png (1.4.0) - climate_control (1.2.0) + climate_control (0.2.0) cocoon (1.2.15) color_diff (0.1) - concurrent-ruby (1.2.3) + concurrent-ruby (1.2.2) connection_pool (2.4.1) cose (1.3.0) cbor (~> 0.5.9) openssl-signature_algorithm (~> 1.0) - crack (1.0.0) - bigdecimal + crack (0.4.5) rexml crass (1.0.6) - css_parser (1.17.1) + css_parser (1.14.0) addressable - csv (3.3.0) + csv (3.2.8) database_cleaner-active_record (2.1.0) activerecord (>= 5.a) database_cleaner-core (~> 2.0.0) database_cleaner-core (2.0.1) date (3.3.4) - debug (1.9.2) + debug (1.9.1) irb (~> 1.10) reline (>= 0.3.8) - debug_inspector (1.2.0) - devise (4.9.4) + debug_inspector (1.1.0) + devise (4.9.3) bcrypt (~> 3.0) orm_adapter (~> 0.1) railties (>= 4.1.0) responders warden (~> 1.2.3) - devise-two-factor (5.0.0) + devise-two-factor (4.1.1) activesupport (~> 7.0) + attr_encrypted (>= 1.3, < 5, != 2) devise (~> 4.0) railties (~> 7.0) rotp (~> 6.0) devise_pam_authenticatable2 (9.2.0) devise (>= 4.0.0) rpam2 (~> 4.0) - diff-lcs (1.5.1) + diff-lcs (1.5.0) discard (1.3.0) activerecord (>= 4.2, < 8) docile (1.4.0) - domain_name (0.6.20240107) - doorkeeper (5.6.9) + domain_name (0.5.20190701) + unf (>= 0.0.5, < 1.0.0) + doorkeeper (5.6.8) railties (>= 5) - dotenv (3.1.2) - drb (2.2.1) + dotenv (2.8.1) + dotenv-rails (2.8.1) + dotenv (= 2.8.1) + railties (>= 3.2) + drb (2.2.0) + ruby2_keywords ed25519 (1.3.0) - elasticsearch (7.17.10) - elasticsearch-api (= 7.17.10) - elasticsearch-transport (= 7.17.10) - elasticsearch-api (7.17.10) + elasticsearch (7.13.3) + elasticsearch-api (= 7.13.3) + elasticsearch-transport (= 7.13.3) + elasticsearch-api (7.13.3) multi_json elasticsearch-dsl (0.1.10) - elasticsearch-transport (7.17.10) - faraday (>= 1, < 3) + elasticsearch-transport (7.13.3) + faraday (~> 1) multi_json email_spec (2.2.2) htmlentities (~> 4.3.3) launchy (~> 2.1) mail (~> 2.7) + encryptor (3.0.0) erubi (1.12.0) - et-orbi (1.2.11) + et-orbi (1.2.7) tzinfo - excon (0.110.0) + excon (0.109.0) fabrication (2.31.0) - faker (3.3.1) + faker (3.2.2) i18n (>= 1.8.11, < 2) faraday (1.10.3) faraday-em_http (~> 1.0) @@ -259,10 +285,10 @@ GEM faraday_middleware (1.2.0) faraday (~> 1.0) fast_blank (1.0.1) - fastimage (2.3.1) - ffi (1.16.3) - ffi-compiler (1.3.2) - ffi (>= 1.15.5) + fastimage (2.3.0) + ffi (1.15.5) + ffi-compiler (1.0.1) + ffi (>= 1.0.0) rake fog-core (2.4.0) builder @@ -272,11 +298,11 @@ GEM fog-json (1.2.0) fog-core multi_json (~> 1.10) - fog-openstack (1.1.1) + fog-openstack (1.1.0) fog-core (~> 2.1) fog-json (>= 1.0) formatador (1.1.0) - fugit (1.10.1) + fugit (1.8.1) et-orbi (~> 1, >= 1.2.7) raabro (~> 1.4) fuubar (2.5.1) @@ -284,9 +310,6 @@ GEM ruby-progressbar (~> 1.4) globalid (1.2.1) activesupport (>= 6.1) - google-protobuf (3.25.3) - googleapis-common-protos-types (1.14.0) - google-protobuf (~> 3.18) haml (6.3.0) temple (>= 0.8.2) thor @@ -296,39 +319,39 @@ GEM activesupport (>= 5.1) haml (>= 4.0.6) railties (>= 5.1) - haml_lint (0.58.0) + haml_lint (0.53.0) haml (>= 5.0) parallel (~> 1.10) rainbow rubocop (>= 1.0) sysexits (~> 1.1) - hashdiff (1.1.0) + hashdiff (1.0.1) hashie (5.0.0) hcaptcha (7.1.0) json - highline (3.0.1) + highline (2.1.0) hiredis (0.6.3) hkdf (0.3.0) htmlentities (4.3.4) - http (5.2.0) + http (5.1.1) addressable (~> 2.8) - base64 (~> 0.1) http-cookie (~> 1.0) http-form_data (~> 2.2) - llhttp-ffi (~> 0.5.0) + llhttp-ffi (~> 0.4.0) http-cookie (1.0.5) domain_name (~> 0.5) http-form_data (2.3.0) http_accept_language (2.1.1) httpclient (2.8.3) - httplog (1.6.3) + httplog (1.6.2) rack (>= 2.0) rainbow (>= 2.0.0) - i18n (1.14.5) + i18n (1.14.1) concurrent-ruby (~> 1.0) - i18n-tasks (1.0.14) + i18n-tasks (1.0.13) activesupport (>= 4.0.2) ast (>= 2.1.0) + better_html (>= 1.0, < 3.0) erubi highline (>= 2.0.0) i18n @@ -337,17 +360,14 @@ GEM rainbow (>= 2.2.2, < 4.0) terminal-table (>= 1.5.1) idn-ruby (0.1.5) - inline_svg (1.9.0) - activesupport (>= 3.0) - nokogiri (>= 1.6) - io-console (0.7.2) - irb (1.13.1) - rdoc (>= 4.0.0) + io-console (0.7.1) + irb (1.11.1) + rdoc reline (>= 0.4.2) jmespath (1.6.2) - json (2.7.2) + json (2.7.1) json-canonicalization (1.0.0) - json-jwt (1.15.3.1) + json-jwt (1.15.3) activesupport (>= 4.2) aes_key_wrap bindata @@ -362,7 +382,7 @@ GEM json-ld-preloaded (3.3.0) json-ld (~> 3.3) rdf (~> 3.3) - json-schema (4.3.0) + json-schema (4.1.1) addressable (>= 2.8) jsonapi-renderer (0.2.2) jwt (2.7.1) @@ -378,24 +398,24 @@ GEM activerecord kaminari-core (= 1.2.2) kaminari-core (1.2.2) - kt-paperclip (7.2.2) + kt-paperclip (7.2.1) activemodel (>= 4.2.0) activesupport (>= 4.2.0) marcel (~> 1.0.1) mime-types - terrapin (>= 0.6.0, < 2.0) + terrapin (~> 0.6.0) language_server-protocol (3.17.0.3) launchy (2.5.2) addressable (~> 2.8) - letter_opener (1.10.0) - launchy (>= 2.2, < 4) - letter_opener_web (3.0.0) - actionmailer (>= 6.1) - letter_opener (~> 1.9) - railties (>= 6.1) + letter_opener (1.8.1) + launchy (>= 2.2, < 3) + letter_opener_web (2.0.0) + actionmailer (>= 5.2) + letter_opener (~> 1.7) + railties (>= 5.2) rexml link_header (0.0.8) - llhttp-ffi (0.5.0) + llhttp-ffi (0.4.0) ffi-compiler (~> 1.0) rake (~> 13.0) lograge (0.14.0) @@ -411,7 +431,7 @@ GEM net-imap net-pop net-smtp - marcel (1.0.4) + marcel (1.0.2) mario-redis-lock (1.2.1) redis (>= 3.0.5) matrix (0.4.2) @@ -422,19 +442,19 @@ GEM memory_profiler (1.0.1) mime-types (3.5.2) mime-types-data (~> 3.2015) - mime-types-data (3.2024.0507) + mime-types-data (3.2023.1205) mini_mime (1.1.5) - mini_portile2 (2.8.6) - minitest (5.22.3) + mini_portile2 (2.8.5) + minitest (5.20.0) msgpack (1.7.2) multi_json (1.15.0) - multipart-post (2.4.0) + multipart-post (2.3.0) mutex_m (0.2.0) net-http (0.4.1) uri net-http-persistent (4.0.2) connection_pool (~> 2.2) - net-imap (0.4.11) + net-imap (0.4.4) date net-protocol net-ldap (0.19.0) @@ -442,24 +462,19 @@ GEM net-protocol net-protocol (0.2.2) timeout - net-smtp (0.5.0) + net-smtp (0.4.0) net-protocol - nio4r (2.7.1) - nokogiri (1.16.5) + nio4r (2.5.9) + nokogiri (1.16.0) mini_portile2 (~> 2.8.2) racc (~> 1.4) - nsa (0.3.0) - activesupport (>= 4.2, < 7.2) - concurrent-ruby (~> 1.0, >= 1.0.2) - sidekiq (>= 3.5) - statsd-ruby (~> 1.4, >= 1.4.0) oj (3.16.3) bigdecimal (>= 3.0) - omniauth (2.1.2) + omniauth (2.1.1) hashie (>= 3.4.6) rack (>= 2.2.3) rack-protection - omniauth-cas (3.0.0) + omniauth-cas (3.0.0.beta.1) addressable (~> 2.8) nokogiri (~> 1.12) omniauth (~> 2.1) @@ -486,109 +501,20 @@ GEM openssl (3.2.0) openssl-signature_algorithm (1.3.0) openssl (> 2.0) - opentelemetry-api (1.2.5) - opentelemetry-common (0.20.1) - opentelemetry-api (~> 1.0) - opentelemetry-exporter-otlp (0.26.3) - google-protobuf (~> 3.14) - googleapis-common-protos-types (~> 1.3) - opentelemetry-api (~> 1.1) - opentelemetry-common (~> 0.20) - opentelemetry-sdk (~> 1.2) - opentelemetry-semantic_conventions - opentelemetry-helpers-sql-obfuscation (0.1.0) - opentelemetry-common (~> 0.20) - opentelemetry-instrumentation-action_pack (0.9.0) - opentelemetry-api (~> 1.0) - opentelemetry-instrumentation-base (~> 0.22.1) - opentelemetry-instrumentation-rack (~> 0.21) - opentelemetry-instrumentation-action_view (0.7.0) - opentelemetry-api (~> 1.0) - opentelemetry-instrumentation-active_support (~> 0.1) - opentelemetry-instrumentation-base (~> 0.22.1) - opentelemetry-instrumentation-active_job (0.7.1) - opentelemetry-api (~> 1.0) - opentelemetry-instrumentation-base (~> 0.22.1) - opentelemetry-instrumentation-active_model_serializers (0.20.1) - opentelemetry-api (~> 1.0) - opentelemetry-instrumentation-base (~> 0.22.1) - opentelemetry-instrumentation-active_record (0.7.2) - opentelemetry-api (~> 1.0) - opentelemetry-instrumentation-base (~> 0.22.1) - opentelemetry-instrumentation-active_support (0.5.1) - opentelemetry-api (~> 1.0) - opentelemetry-instrumentation-base (~> 0.22.1) - opentelemetry-instrumentation-base (0.22.3) - opentelemetry-api (~> 1.0) - opentelemetry-registry (~> 0.1) - opentelemetry-instrumentation-concurrent_ruby (0.21.3) - opentelemetry-api (~> 1.0) - opentelemetry-instrumentation-base (~> 0.22.1) - opentelemetry-instrumentation-excon (0.22.1) - opentelemetry-api (~> 1.0) - opentelemetry-common (~> 0.20.0) - opentelemetry-instrumentation-base (~> 0.22.1) - opentelemetry-instrumentation-faraday (0.24.2) - opentelemetry-api (~> 1.0) - opentelemetry-common (~> 0.20.0) - opentelemetry-instrumentation-base (~> 0.22.1) - opentelemetry-instrumentation-http (0.23.3) - opentelemetry-api (~> 1.0) - opentelemetry-instrumentation-base (~> 0.22.1) - opentelemetry-instrumentation-http_client (0.22.4) - opentelemetry-api (~> 1.0) - opentelemetry-common (~> 0.20.0) - opentelemetry-instrumentation-base (~> 0.22.1) - opentelemetry-instrumentation-net_http (0.22.4) - opentelemetry-api (~> 1.0) - opentelemetry-common (~> 0.20.0) - opentelemetry-instrumentation-base (~> 0.22.1) - opentelemetry-instrumentation-pg (0.27.3) - opentelemetry-api (~> 1.0) - opentelemetry-helpers-sql-obfuscation - opentelemetry-instrumentation-base (~> 0.22.1) - opentelemetry-instrumentation-rack (0.24.3) - opentelemetry-api (~> 1.0) - opentelemetry-common (~> 0.20.0) - opentelemetry-instrumentation-base (~> 0.22.1) - opentelemetry-instrumentation-rails (0.30.1) - opentelemetry-api (~> 1.0) - opentelemetry-instrumentation-action_pack (~> 0.9.0) - opentelemetry-instrumentation-action_view (~> 0.7.0) - opentelemetry-instrumentation-active_job (~> 0.7.0) - opentelemetry-instrumentation-active_record (~> 0.7.0) - opentelemetry-instrumentation-active_support (~> 0.5.0) - opentelemetry-instrumentation-base (~> 0.22.1) - opentelemetry-instrumentation-redis (0.25.4) - opentelemetry-api (~> 1.0) - opentelemetry-common (~> 0.20.0) - opentelemetry-instrumentation-base (~> 0.22.1) - opentelemetry-instrumentation-sidekiq (0.25.3) - opentelemetry-api (~> 1.0) - opentelemetry-common (~> 0.20.0) - opentelemetry-instrumentation-base (~> 0.22.1) - opentelemetry-registry (0.3.1) - opentelemetry-api (~> 1.1) - opentelemetry-sdk (1.4.1) - opentelemetry-api (~> 1.1) - opentelemetry-common (~> 0.20) - opentelemetry-registry (~> 0.2) - opentelemetry-semantic_conventions - opentelemetry-semantic_conventions (1.10.0) - opentelemetry-api (~> 1.0) orm_adapter (0.5.0) - ox (2.14.18) + ox (2.14.17) parallel (1.24.0) - parser (3.3.1.0) + parser (3.2.2.4) ast (~> 2.4.1) racc parslet (2.0.0) pastel (0.8.0) tty-color (~> 0.5) - pg (1.5.6) - pghero (3.4.1) + pg (1.5.4) + pghero (3.4.0) activerecord (>= 6) - premailer (1.23.0) + posix-spawn (0.3.15) + premailer (1.21.0) addressable css_parser (>= 1.12.0) htmlentities (>= 4.0.0) @@ -604,17 +530,17 @@ GEM railties (>= 7.0.0) psych (5.1.2) stringio - public_suffix (5.0.5) + public_suffix (5.0.4) puma (6.4.2) nio4r (~> 2.0) - pundit (2.3.2) + pundit (2.3.1) activesupport (>= 3.0.0) raabro (1.4.0) racc (1.7.3) - rack (2.2.9) + rack (2.2.8) rack-attack (6.7.0) rack (>= 1.0, < 4) - rack-cors (2.0.2) + rack-cors (2.0.1) rack (>= 2.0.0) rack-oauth2 (1.21.3) activesupport @@ -622,32 +548,31 @@ GEM httpclient json-jwt (>= 1.11.0) rack (>= 2.1.0) - rack-protection (3.2.0) - base64 (>= 0.1.0) - rack (~> 2.2, >= 2.2.4) - rack-proxy (0.7.7) + rack-protection (3.0.5) rack - rack-session (1.0.2) + rack-proxy (0.7.6) + rack + rack-session (1.0.1) rack (< 3) rack-test (2.1.0) rack (>= 1.3) rackup (1.0.0) rack (< 3) webrick - rails (7.1.3.2) - actioncable (= 7.1.3.2) - actionmailbox (= 7.1.3.2) - actionmailer (= 7.1.3.2) - actionpack (= 7.1.3.2) - actiontext (= 7.1.3.2) - actionview (= 7.1.3.2) - activejob (= 7.1.3.2) - activemodel (= 7.1.3.2) - activerecord (= 7.1.3.2) - activestorage (= 7.1.3.2) - activesupport (= 7.1.3.2) + rails (7.1.2) + actioncable (= 7.1.2) + actionmailbox (= 7.1.2) + actionmailer (= 7.1.2) + actionpack (= 7.1.2) + actiontext (= 7.1.2) + actionview (= 7.1.2) + activejob (= 7.1.2) + activemodel (= 7.1.2) + activerecord (= 7.1.2) + activestorage (= 7.1.2) + activesupport (= 7.1.2) bundler (>= 1.15.0) - railties (= 7.1.3.2) + railties (= 7.1.2) rails-controller-testing (1.0.5) actionpack (>= 5.0.1.rc1) actionview (>= 5.0.1.rc1) @@ -659,25 +584,25 @@ GEM rails-html-sanitizer (1.6.0) loofah (~> 2.21) nokogiri (~> 1.14) - rails-i18n (7.0.9) + rails-i18n (7.0.8) i18n (>= 0.7, < 2) railties (>= 6.0.0, < 8) - railties (7.1.3.2) - actionpack (= 7.1.3.2) - activesupport (= 7.1.3.2) + railties (7.1.2) + actionpack (= 7.1.2) + activesupport (= 7.1.2) irb rackup (>= 1.0.0) rake (>= 12.2) thor (~> 1.0, >= 1.2.2) zeitwerk (~> 2.6) rainbow (3.1.1) - rake (13.2.1) + rake (13.1.0) rdf (3.3.1) bcp47_spec (~> 0.2) link_header (~> 0.0, >= 0.0.8) - rdf-normalize (0.7.0) - rdf (~> 3.3) - rdoc (6.6.3.1) + rdf-normalize (0.6.1) + rdf (~> 3.2) + rdoc (6.6.2) psych (>= 4.0.0) redcarpet (3.6.0) redis (4.8.1) @@ -685,82 +610,78 @@ GEM redis (>= 4) redlock (1.3.2) redis (>= 3.0.0, < 6.0) - regexp_parser (2.9.0) - reline (0.5.7) + regexp_parser (2.8.3) + reline (0.4.2) io-console (~> 0.5) - request_store (1.6.0) + request_store (1.5.1) rack (>= 1.4) responders (3.1.1) actionpack (>= 5.2) railties (>= 5.2) - rexml (3.2.8) - strscan (>= 3.0.9) + rexml (3.2.6) rotp (6.3.0) - rouge (4.2.1) + rouge (4.1.2) rpam2 (4.0.2) rqrcode (2.2.0) chunky_png (~> 1.0) rqrcode_core (~> 1.0) rqrcode_core (1.2.0) - rspec-core (3.13.0) - rspec-support (~> 3.13.0) - rspec-expectations (3.13.0) + rspec-core (3.12.2) + rspec-support (~> 3.12.0) + rspec-expectations (3.12.3) diff-lcs (>= 1.2.0, < 2.0) - rspec-support (~> 3.13.0) + rspec-support (~> 3.12.0) rspec-github (2.4.0) rspec-core (~> 3.0) - rspec-mocks (3.13.1) + rspec-mocks (3.12.6) diff-lcs (>= 1.2.0, < 2.0) - rspec-support (~> 3.13.0) - rspec-rails (6.1.2) + rspec-support (~> 3.12.0) + rspec-rails (6.1.0) actionpack (>= 6.1) activesupport (>= 6.1) railties (>= 6.1) - rspec-core (~> 3.13) - rspec-expectations (~> 3.13) - rspec-mocks (~> 3.13) - rspec-support (~> 3.13) - rspec-sidekiq (5.0.0) + rspec-core (~> 3.12) + rspec-expectations (~> 3.12) + rspec-mocks (~> 3.12) + rspec-support (~> 3.12) + rspec-sidekiq (4.1.0) rspec-core (~> 3.0) rspec-expectations (~> 3.0) rspec-mocks (~> 3.0) sidekiq (>= 5, < 8) - rspec-support (3.13.1) - rubocop (1.63.5) + rspec-support (3.12.1) + rubocop (1.59.0) json (~> 2.3) language_server-protocol (>= 3.17.0) parallel (~> 1.10) - parser (>= 3.3.0.2) + parser (>= 3.2.2.4) rainbow (>= 2.2.2, < 4.0) regexp_parser (>= 1.8, < 3.0) rexml (>= 3.2.5, < 4.0) - rubocop-ast (>= 1.31.1, < 2.0) + rubocop-ast (>= 1.30.0, < 2.0) ruby-progressbar (~> 1.7) unicode-display_width (>= 2.4.0, < 3.0) - rubocop-ast (1.31.3) - parser (>= 3.3.1.0) + rubocop-ast (1.30.0) + parser (>= 3.2.1.0) rubocop-capybara (2.20.0) rubocop (~> 1.41) - rubocop-factory_bot (2.25.1) - rubocop (~> 1.41) - rubocop-performance (1.21.0) + rubocop-factory_bot (2.25.0) + rubocop (~> 1.33) + rubocop-performance (1.20.2) rubocop (>= 1.48.1, < 2.0) - rubocop-ast (>= 1.31.1, < 2.0) - rubocop-rails (2.24.1) + rubocop-ast (>= 1.30.0, < 2.0) + rubocop-rails (2.23.1) activesupport (>= 4.2.0) rack (>= 1.1) rubocop (>= 1.33.0, < 2.0) - rubocop-ast (>= 1.31.1, < 2.0) - rubocop-rspec (2.29.2) + rubocop-ast (>= 1.30.0, < 2.0) + rubocop-rspec (2.26.1) rubocop (~> 1.40) rubocop-capybara (~> 2.17) rubocop-factory_bot (~> 2.22) - rubocop-rspec_rails (~> 2.28) - rubocop-rspec_rails (2.28.3) - rubocop (~> 1.40) ruby-prof (1.7.0) ruby-progressbar (1.13.0) - ruby-saml (1.16.0) + ruby-saml (1.15.0) nokogiri (>= 1.13.10) rexml ruby2_keywords (0.0.5) @@ -772,11 +693,10 @@ GEM sanitize (6.1.0) crass (~> 1.0.2) nokogiri (>= 1.12.0) - scenic (1.8.0) + scenic (1.7.0) activerecord (>= 4.0.0) railties (>= 4.0.0) - selenium-webdriver (4.21.0) - base64 (~> 0.2) + selenium-webdriver (4.16.0) rexml (~> 3.2, >= 3.2.5) rubyzip (>= 1.2.2, < 3.0) websocket (~> 1.0) @@ -791,7 +711,7 @@ GEM rufus-scheduler (~> 3.2) sidekiq (>= 6, < 8) tilt (>= 1.4.0) - sidekiq-unique-jobs (7.1.33) + sidekiq-unique-jobs (7.1.31) brpoplpush-redis_script (> 0.1.1, <= 2.0.0) concurrent-ruby (~> 1.0, >= 1.0.5) redis (< 5.0) @@ -809,14 +729,14 @@ GEM simplecov-html (0.12.3) simplecov-lcov (0.8.0) simplecov_json_formatter (0.1.4) - stackprof (0.2.26) + smart_properties (1.17.0) + stackprof (0.2.25) statsd-ruby (1.5.0) - stoplight (4.1.0) + stoplight (3.0.2) redlock (~> 1.0) stringio (3.1.0) - strong_migrations (1.8.0) + strong_migrations (1.7.0) activerecord (>= 5.2) - strscan (3.1.0) swd (1.3.0) activesupport (>= 3) attr_required (>= 0.0.5) @@ -825,10 +745,10 @@ GEM temple (0.10.3) terminal-table (3.0.2) unicode-display_width (>= 1.1.1, < 3) - terrapin (1.0.1) - climate_control - test-prof (1.3.3) - thor (1.3.1) + terrapin (0.6.0) + climate_control (>= 0.0.3, < 1.0) + test-prof (1.3.1) + thor (1.3.0) tilt (2.3.0) timeout (0.4.1) tpm-key_attestation (0.12.0) @@ -844,19 +764,19 @@ GEM tty-cursor (~> 0.7) tty-screen (~> 0.8) wisper (~> 2.0) - tty-screen (0.8.2) + tty-screen (0.8.1) twitter-text (3.1.0) idn-ruby unf (~> 0.1.0) tzinfo (2.0.6) concurrent-ruby (~> 1.0) - tzinfo-data (1.2024.1) + tzinfo-data (1.2023.4) tzinfo (>= 1.0.0) unf (0.1.4) unf_ext - unf_ext (0.0.9.1) + unf_ext (0.0.8.2) unicode-display_width (2.5.0) - uri (0.13.0) + uri (0.12.2) validate_email (0.1.6) activemodel (>= 3.0) mail (>= 2.2.5) @@ -877,7 +797,7 @@ GEM webfinger (1.2.0) activesupport httpclient (>= 2.4) - webmock (3.23.0) + webmock (3.19.1) addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) @@ -895,7 +815,7 @@ GEM xorcist (1.1.3) xpath (3.2.0) nokogiri (~> 1.8) - zeitwerk (2.6.14) + zeitwerk (2.6.12) PLATFORMS ruby @@ -908,14 +828,14 @@ DEPENDENCIES better_errors (~> 2.9) binding_of_caller (~> 1.0) blurhash (~> 0.1) - bootsnap (~> 1.18.0) + bootsnap (~> 1.17.0) brakeman (~> 6.0) browser bundler-audit (~> 0.9) capybara (~> 3.39) charlock_holmes (~> 0.7.7) chewy (~> 7.3) - climate_control + climate_control (~> 0.2) cocoon (~> 1.2) color_diff (~> 0.1) concurrent-ruby @@ -924,11 +844,11 @@ DEPENDENCIES database_cleaner-active_record debug (~> 1.8) devise (~> 4.9) - devise-two-factor + devise-two-factor (~> 4.1) devise_pam_authenticatable2 (~> 9.2) discard (~> 1.2) doorkeeper (~> 5.6) - dotenv + dotenv-rails (~> 2.8) ed25519 (~> 1.3) email_spec fabrication (~> 2.30) @@ -943,13 +863,11 @@ DEPENDENCIES hcaptcha (~> 7.1) hiredis (~> 0.6) htmlentities (~> 4.3) - http (~> 5.2.0) + http (~> 5.1) http_accept_language (~> 2.1) httplog (~> 1.6.2) - i18n i18n-tasks (~> 1.0) idn-ruby - inline_svg irb (~> 1.8) json-ld json-ld-preloaded (~> 3.2) @@ -957,10 +875,9 @@ DEPENDENCIES kaminari (~> 1.2) kt-paperclip (~> 7.2) letter_opener (~> 1.8) - letter_opener_web (~> 3.0) + letter_opener_web (~> 2.0) link_header (~> 0.0) lograge (~> 0.12) - mail (~> 2.8) mario-redis-lock (~> 1.2) md-paperclip-azure (~> 2.2) memory_profiler @@ -968,32 +885,18 @@ DEPENDENCIES net-http (~> 0.4.0) net-ldap (~> 0.18) nokogiri (~> 1.15) - nsa + nsa! oj (~> 3.14) omniauth (~> 2.0) omniauth-cas (~> 3.0.0.beta.1) omniauth-rails_csrf_protection (~> 1.0) omniauth-saml (~> 2.0) omniauth_openid_connect (~> 0.6.1) - opentelemetry-exporter-otlp (~> 0.26.3) - opentelemetry-instrumentation-active_job (~> 0.7.1) - opentelemetry-instrumentation-active_model_serializers (~> 0.20.1) - opentelemetry-instrumentation-concurrent_ruby (~> 0.21.2) - opentelemetry-instrumentation-excon (~> 0.22.0) - opentelemetry-instrumentation-faraday (~> 0.24.1) - opentelemetry-instrumentation-http (~> 0.23.2) - opentelemetry-instrumentation-http_client (~> 0.22.3) - opentelemetry-instrumentation-net_http (~> 0.22.4) - opentelemetry-instrumentation-pg (~> 0.27.1) - opentelemetry-instrumentation-rack (~> 0.24.1) - opentelemetry-instrumentation-rails (~> 0.30.0) - opentelemetry-instrumentation-redis (~> 0.25.3) - opentelemetry-instrumentation-sidekiq (~> 0.25.2) - opentelemetry-sdk (~> 1.4) ox (~> 2.14) parslet pg (~> 1.5) pghero + posix-spawn premailer-rails private_address_check (~> 0.5) propshaft @@ -1014,7 +917,7 @@ DEPENDENCIES rqrcode (~> 2.2) rspec-github (~> 2.4) rspec-rails (~> 6.0) - rspec-sidekiq (~> 5.0) + rspec-sidekiq (~> 4.0) rubocop rubocop-capybara rubocop-performance @@ -1035,8 +938,8 @@ DEPENDENCIES simplecov (~> 0.22) simplecov-lcov (~> 0.8) stackprof - stoplight (~> 4.1) - strong_migrations (= 1.8.0) + stoplight (~> 3.0.1) + strong_migrations (= 1.7.0) test-prof thor (~> 1.2) tty-prompt (~> 0.23) @@ -1049,7 +952,7 @@ DEPENDENCIES xorcist (~> 1.1) RUBY VERSION - ruby 3.3.1p55 + ruby 3.2.2p53 BUNDLED WITH - 2.5.9 + 2.4.20 diff --git a/README.md b/README.md index e438d0bd7b..267f0ed295 100644 --- a/README.md +++ b/README.md @@ -1,112 +1,142 @@ -# ![kmyblue icon](https://raw.githubusercontent.com/kmycode/mastodon/kb_development/app/javascript/icons/favicon-32x32.png) kmyblue +

+ + + Mastodon +

-[![Ruby Testing](https://github.com/kmycode/mastodon/actions/workflows/test-ruby.yml/badge.svg)](https://github.com/kmycode/mastodon/actions/workflows/test-ruby.yml) +[![GitHub release](https://img.shields.io/github/release/mastodon/mastodon.svg)][releases] +[![Ruby Testing](https://github.com/mastodon/mastodon/actions/workflows/test-ruby.yml/badge.svg)](https://github.com/mastodon/mastodon/actions/workflows/test-ruby.yml) +[![Crowdin](https://d322cqt584bo4o.cloudfront.net/mastodon/localized.svg)][crowdin] -kmyblueは[Mastodon](https://github.com/mastodon/mastodon)のフォークです。創作作家のためのMastodonを目指して開発しました。 +[releases]: https://github.com/mastodon/mastodon/releases +[crowdin]: https://crowdin.com/project/mastodon -kmyblueはフォーク名であり、同時に[サーバー名](https://kmy.blue)でもあります。以下は特に記述がない限り、フォークとしてのkmyblueをさします。 +Mastodon is a **free, open-source social network server** based on ActivityPub where users can follow friends and discover new ones. On Mastodon, users can publish anything they want: links, pictures, text, and video. All Mastodon servers are interoperable as a federated network (users on one server can seamlessly communicate with users from another one, including non-Mastodon software that implements ActivityPub!) -kmyblueは AGPL ライセンスで公開されているため、どなたでも自由にフォークし、このソースコードを元に自分でサーバーを立てて公開することができます。確かにサーバーkmyblueは創作作家向けのものですが、フォークとしてのkmyblueはAGPLでライセンスつけられており、ルールは全くの別物です。創作活動の一部(エロ関係含む)または全体を否定するコミュニティなどにも平等にお使いいただけます。サーバーkmyblueのルールを適用する必要もなく、「Anyone But Kmyblue」なルールを設定することすら許容されます。 -kmyblueは、特に非収載投稿の検索が強化されているため、ローカルタイムラインに掲載されていない投稿も検索・購読することが可能な場合があります。閉鎖的なコミュニティ、あまり目立ちたくないコミュニティには特に強力な機能を提供します。それ以外のコミュニティに対しても、kmyblueはプライバシーを考慮したうえで強力な検索・購読機能を提供するため、汎用サーバーとして利用するにもある程度十分な機能が揃っています。 +Click below to **learn more** in a video: -ただしkmyblueにおいて**テストコードは飾り**でしかありません。これはkmyblueを利用する人が本家Mastodonより圧倒的に少なく、バグやセキュリティインシデントを発見するだけの人数が足りないことを意味します。kmyblueは対策として自動テストを拡充しています。独自機能のテストを記述するだけでなく、本家のテストコードの補強も行っておりますが、確認漏れは必ず発生するものです。不具合が発生しても自己責任になります。既知のバグもいくつかありますし、直す予定のないものも含まれます。 +[![Screenshot](https://blog.joinmastodon.org/2018/06/why-activitypub-is-the-future/ezgif-2-60f1b00403.gif)][youtube_demo] -テストコード、Lint どちらも動いています。 +[youtube_demo]: https://www.youtube.com/watch?v=IPSbNdBmWKE -## インストール方法 +## Navigation -[Wiki](https://github.com/kmycode/mastodon/wiki/Installation)を参照してください。 +- [Project homepage 🐘](https://joinmastodon.org) +- [Support the development via Patreon][patreon] +- [View sponsors](https://joinmastodon.org/sponsors) +- [Blog](https://blog.joinmastodon.org) +- [Documentation](https://docs.joinmastodon.org) +- [Roadmap](https://joinmastodon.org/roadmap) +- [Official Docker image](https://github.com/mastodon/mastodon/pkgs/container/mastodon) +- [Browse Mastodon servers](https://joinmastodon.org/communities) +- [Browse Mastodon apps](https://joinmastodon.org/apps) -## 開発への参加方法 +[patreon]: https://www.patreon.com/mastodon -CONTRIBUTING.mdを参照してください。 +## Features -## テスト + -``` -# デバッグ実行(以下のいずれか) -foreman start -DB_USER=postgres DB_PASS=password foreman start +### No vendor lock-in: Fully interoperable with any conforming platform -# 一部を除く全てのテストを行う -RAILS_ENV=test bundle exec rspec spec +It doesn't have to be Mastodon; whatever implements ActivityPub is part of the social network! [Learn more](https://blog.joinmastodon.org/2018/06/why-activitypub-is-the-future/) -# ElasticSearch連携テストを行う -新 -RAILS_ENV=test ES_ENABLED=true bundle exec rspec --tag search -旧 -RAILS_ENV=test ES_ENABLED=true RUN_SEARCH_SPECS=true bundle exec rspec spec/search -``` +### Real-time, chronological timeline updates -## kmyblueのブランチ +Updates of people you're following appear in real-time in the UI via WebSockets. There's a firehose view as well! -- **main** - 管理者が本家MastodonにPRするときに使うことがあります -- **kb_development** - 開発中の最新のソースコードです。メジャーバージョンアップデートは通常このブランチから公開されます -- **kb_lts** - LTSの管理に使います。LTSはこのブランチから公開されます -- **kb_patch** - 修正パッチの管理に使います。マイナーバージョンアップデートは通常このブランチから公開されます +### Media attachments like images and short videos -## kmyblueの強み +Upload and view images and WebM/MP4 videos attached to the updates. Videos with no audio track are treated like GIFs; normal videos loop continuously! -追加の詳細は下記記事もご覧ください。 +### Safety and moderation tools -https://note.com/kmycode/n/n5fd5e823ed40 +Mastodon includes private posts, locked accounts, phrase filtering, muting, blocking, and all sorts of other features, along with a reporting and moderation system. [Learn more](https://blog.joinmastodon.org/2018/07/cage-the-mastodon/) -以下に書いているもの以外にも多数の機能が存在します。 +### OAuth2 and a straightforward REST API -### 本家Mastodonへの積極的追従 +Mastodon acts as an OAuth2 provider, so 3rd party apps can use the REST and Streaming APIs. This results in a rich app ecosystem with a lot of choices! -kmyblueは、追加機能を控えめにする代わりに本家Mastodonに積極的に追従を行います。kmyblueの追加機能そのままに、Mastodonの新機能も利用できるよう調整を行います。 +## Deployment -### ゆるやかな内輪での運用 +### Tech stack -kmyblueは同人向けサーバーとして出発したため、同人作家に需要のある「内輪ノリを外部にできるだけもらさない」という部分に特化しています。 +- **Ruby on Rails** powers the REST API and other web pages +- **React.js** and Redux are used for the dynamic parts of the interface +- **Node.js** powers the streaming API -「ローカル公開」という機能によって、「ローカルタイムラインに流すが他のサーバーの連合タイムラインに流さない」投稿が可能です。ただしMisskeyのローカル限定とは異なり、他のサーバーのフォロワーのタイムラインにも投稿は流れます。自分のサーバーの中で内輪で盛り上がって、他のサーバーの連合タイムラインには外面だけの投稿を流すことも可能です。 +### Requirements -「サークル」という機能によって、特定のフォロワーにだけ見える投稿を行うことも可能です。その投稿に返信することで、相手サークルの会話に参加することも可能です。ただしサークル投稿を正常に処理できるソフトウェアは現在、kmyblue・Fedibirdに限ります。 +- **PostgreSQL** 12+ +- **Redis** 4+ +- **Ruby** 2.7+ +- **Node.js** 16+ -また、通常のMastodonでは公開投稿を他のサーバーの人に自由に検索できるようにすることも可能ですが、kmyblueでは非収載投稿に対して同様の設定が可能です。つまり、ローカルタイムラインにも連合タイムラインにも流れない、誰かの目に自然に触れることはない、でも特定キーワードを使った検索では引っかかりたい、そのような需要に対応できます。 +The repository includes deployment configurations for **Docker and docker-compose** as well as specific platforms like **Heroku**, **Scalingo**, and **Nanobox**. For Helm charts, reference the [mastodon/chart repository](https://github.com/mastodon/chart). The [**standalone** installation guide](https://docs.joinmastodon.org/admin/install/) is available in the documentation. -内輪とは自分のサーバーに限ったものではありません。内輪同士で複数のサーバーを運営するとき、お互いが深く繋がれるフレンドサーバーというシステムも用意しています。 +## Development -ただしkmyblueは、同時に連合も重視しています。ローカル限定投稿など、連合を大きく制限させるような機能は作る予定はありません。 +### Vagrant -### 少人数サーバーでの運用 +A **Vagrant** configuration is included for development purposes. To use it, complete the following steps: -kmyblueは、人の少ないサーバーでの運用を考慮して設計しています。そのため、他のサーバーのアカウントの購読機能はFedibirdほど発達していませんし、人の多いサーバー向けの独自改造もほとんど存在しません。 +- Install Vagrant and Virtualbox +- Install the `vagrant-hostsupdater` plugin: `vagrant plugin install vagrant-hostsupdater` +- Run `vagrant up` +- Run `vagrant ssh -c "cd /vagrant && foreman start"` +- Open `http://mastodon.local` in your browser -ただしサーバーの負荷については一部度外視している部分があります。たとえば絵文字リアクション機能はサーバーへ著しい負荷をかける場合があります。絵文字リアクション機能そのものを無効にする管理者オプションも存在します。 +### MacOS -もちろん人の多いサーバーでの運用が不便になるような修正は行っていません。人の多いサーバーでもそのままお使いいただけます。 +To set up **MacOS** for native development, complete the following steps: -### 比較的高い防御力 +- Install the latest stable Ruby version (use a Ruby version manager for easy installation and management of Ruby versions) +- Run `brew install postgresql@14` +- Run `brew install redis` +- Run `brew install imagemagick` +- Run `brew install libidn` +- Install Foreman or a similar tool (such as [overmind](https://github.com/DarthSim/overmind)) to handle multiple process launching. +- Navigate to Mastodon's root directory and run `brew install nvm` then `nvm use` to use the version from .nvmrc +- Run `corepack enable && corepack prepare` +- Run `bundle exec rails db:setup` (optionally prepend `RAILS_ENV=development` to target the dev environment) +- Finally, run `overmind start -f Procfile.dev` -kmyblueでは、「Fediverseは将来的に荒むのではないか」「Fediverseは将来的にスパムに溢れるのではないか」を念頭に設計している部分があります。 +### Docker -個別ユーザー向けの設定項目が複数あります。 +For development with **Docker**, complete the following steps: -- Misskeyは、たとえMastodonの投稿であっても非収載投稿を自由に検索できますが、kmyblueではそれをブロックできるユーザー設定が存在します -- 他の人からの絵文字リアクションの受け入れを制限する設定も可能であり、例えば他のサーバーから好ましくない絵文字リアクションを受け取ることを防止できます -- 公開タイムラインの引用表示はデフォルトで無効になっています。不快な投稿を引用したものが公開タイムラインに流れても、ある程度は防止できます - - フィルター(ワードミュート)は、引用された投稿の内容にも適用されます。この場合、引用投稿そのものが表示されなくなります -- 自分のフォローしている相手の投稿をフィルターから除外する設定が存在します。防御を上げすぎると不便な箇所が出てくるので、そちらも緩和できるよう可能な限り配慮しています +- Install Docker Desktop +- Run `docker compose -f .devcontainer/docker-compose.yml up -d` +- Run `docker compose -f .devcontainer/docker-compose.yml exec app .devcontainer/post-create.sh` +- Finally, run `docker compose -f .devcontainer/docker-compose.yml exec app foreman start -f Procfile.dev` -管理者向けには、スパムへの利用を前提とした正規表現可能なNGワード設定、細かい指定が可能な拡張ドメインブロック機能を用意しています。 +If you are using an IDE with [support for the Development Container specification](https://containers.dev/supporting), it will run the above `docker compose` commands automatically. For **Visual Studio Code** this requires the [Dev Container extension](https://containers.dev/supporting#dev-containers). -ただし防御力の高さは自由を犠牲にします。例えばkmyblueは、絵文字リアクションの表示サイズ調整機能など、MisskeyやFedibirdには当たり前のようにある表示設定は存在しません。騒がしくなるようなものはあまり作りたいとは考えていません。 +### GitHub Codespaces -### その他の主な機能 +To get you coding in just a few minutes, GitHub Codespaces provides a web-based version of Visual Studio Code and a cloud-hosted development environment fully configured with the software needed for this project.. -- 絵文字リアクションによる手軽な交流 -- 絵文字デッキによる頻繁に使用する絵文字の登録・選択 -- 検索機能の強化(検索許可) -- 投稿の引用 -- ブックマークの分類 +- Click this button to create a new codespace:
+ [![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://github.com/codespaces/new?hide_repo_select=true&ref=main&repo=52281283&devcontainer_path=.devcontainer%2Fcodespaces%2Fdevcontainer.json) +- Wait for the environment to build. This will take a few minutes. +- When the editor is ready, run `foreman start -f Procfile.dev` in the terminal. +- After a few seconds, a popup will appear with a button labeled _Open in Browser_. This will open Mastodon. +- On the _Ports_ tab, right click on the “stream” row and select _Port visibility_ → _Public_. -## kmyblueは何でないか +## Contributing -kmyblueは、Misskeyではありません。絵文字リアクションなどMisskeyと同様の機能はありますが、根本的にUIの使い勝手が違う他にも、例えばブックマークを分類できてもそれを公開する機能を作っていません。Misskeyは「楽しむ」をコンセプトにしていますが、kmyblueはMastodonの思想を受け継ぎ、炎上や喧騒を避けることのできる落ち着いた場所を目指しています。そのため、思想に合わない機能は実装しないか、大幅に弱体化しています。 +Mastodon is **free, open-source software** licensed under **AGPLv3**. -kmyblueは、Fedibirdではありません。確かにローカルタイムラインを無効にしFedibirdのような運営を可能にする設定は存在します。しかしkmyblueは本家追従を優先する観点からWebで対応する範囲をある程度絞り込んでいるため、Fedibirdにあるような豊富な表示設定は作っていません。絵文字の大きさすら調整することはできません。また、Fedibirdではアカウントの購読機能があります。kmyblueにも同様の機能はあるものの、Fedibirdのように一発ですぐできるようなUIではありません。購読機能は相手のフォローを伴わないため、特に利用者に擬似的なフォロー体験を与えるアカウント購読は、人の少ない小規模サーバーには向いていません。これは、小規模サーバーの運用を想定しているkmyblueがあえて作っていない部分です。 +You can open issues for bugs you've found or features you think are missing. You can also submit pull requests to this repository or submit translations using Crowdin. To get started, take a look at [CONTRIBUTING.md](CONTRIBUTING.md). If your contributions are accepted into Mastodon, you can request to be paid through [our OpenCollective](https://opencollective.com/mastodon). -kmyblueは、企業・政府機関向けに開発されたものではありません。そもそも管理者はセキュリティに関する資格や専門知識を有しておらず、高度なセキュリティの求められる機関向けのソフトウェアを制作する能力はありません。kmyblueは確かに本家Mastodonに対して大幅に機能を追加していますが、そもそも個人によるフォークは、開発者が飽きたらそこで終わりというリスクも伴います。高い信頼性・安全性を保証することはできないので、導入の際はご自身で安全を十分に確認してからお使いになることを強くおすすめします。 +**IRC channel**: #mastodon on irc.libera.chat + +## License + +Copyright (C) 2016-2024 Eugen Rochko & other Mastodon contributors (see [AUTHORS.md](AUTHORS.md)) + +This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License along with this program. If not, see . diff --git a/SECURITY.md b/SECURITY.md index d5b27adfac..81472b01b4 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -1,25 +1,20 @@ -# セキュリティポリシー +# Security Policy -kmyblueのプログラムにおいてセキュリティインシデントを発見した場合、kmyblueに報告してください。 +If you believe you've identified a security vulnerability in Mastodon (a bug that allows something to happen that shouldn't be possible), you can either: -kmyblueにセキュリティインシデントを報告する場合、以下の手順を踏んでください。 +- open a [Github security issue on the Mastodon project](https://github.com/mastodon/mastodon/security/advisories/new) +- reach us at -- [こちらのリンクから新規インシデントを起票してください](https://github.com/kmycode/mastodon/security/advisories/new) -- メール 、または[@askyq@kmy.blue](https://kmy.blue/@askyq)宛に、**セキュリティインシデントを起票したことだけ**を連絡してください。セキュリティインシデントの内容は、絶対に連絡に含めないでください(リンクくらいなら含めていいかな) +You should _not_ report such issues on public GitHub issues or in other public spaces to give us time to publish a fix for the issue without exposing Mastodon's users to increased risk. -他のkmyblueフォークの利用者の安全のために少しでも時間稼ぎをしなければいけないので、この問題をIssueを含む公開された場所で記述しないでください。 +## Scope -## 範囲 +A "vulnerability in Mastodon" is a vulnerability in the code distributed through our main source code repository on GitHub. Vulnerabilities that are specific to a given installation (e.g. misconfiguration) should be reported to the owner of that installation and not us. -こちらが対応できる範囲は、当リポジトリで公開しているソースコードのみとなります。当リポジトリの依存パッケージ内に問題がある場合は、そちらに報告してください。 +## Supported Versions -もしあなたに専門知識があり、それが本家Mastodon由来の問題であると信じるに足る根拠がある場合、kmyblueではなくMastodonのほうに報告してください。kmyblueに報告されても、Mastodonより先に修正してしまうことでMastodonにセキュリティリスクを発生させる可能性がありますし、本家Mastodonの対応を待つにしてもkmyblueのほうに来てしまったセキュリティインシデントの対応に困ります(本家がなかなか対応してくれない可能性を考えると削除しづらい)。もし間違ってkmyblueに来た場合、kmyblue開発者の責任で振り分けを行います。 - -## サポートするバージョン - -下記以外のバージョンは、セキュリティインシデントを起票されても対応しません。 - -- 最新メジャーバージョン、かつ、最新マイナーバージョン - - 最新メジャーバージョンのサポートは、次のメジャーバージョンが出た時点で終了します -- LTS - - LTSのサポートは、次のLTSが出た時点で終了します(ただし移行期間があってもいいと思ってるので、1〜3ヶ月以内ならセキュリティインシデントの程度に応じて対応する可能性があります) +| Version | Supported | +| ------- | --------- | +| 4.2.x | Yes | +| 4.1.x | Yes | +| < 4.1 | No | diff --git a/Vagrantfile b/Vagrantfile index 8a95e91f36..6f0f511095 100644 --- a/Vagrantfile +++ b/Vagrantfile @@ -173,7 +173,6 @@ Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| # Otherwise, you can access the site at http://localhost:3000 and http://localhost:4000 , http://localhost:8080 config.vm.network :forwarded_port, guest: 3000, host: 3000 - config.vm.network :forwarded_port, guest: 3035, host: 3035 config.vm.network :forwarded_port, guest: 4000, host: 4000 config.vm.network :forwarded_port, guest: 8080, host: 8080 config.vm.network :forwarded_port, guest: 9200, host: 9200 @@ -189,7 +188,7 @@ Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| config.vm.post_up_message = <(account) { account.public_following_count }) - field(:followers_count, type: 'long', value: ->(account) { account.public_followers_count }) + field(:following_count, type: 'long') + field(:followers_count, type: 'long') field(:properties, type: 'keyword', value: ->(account) { account.searchable_properties }) field(:last_status_at, type: 'date', value: ->(account) { clamp_date(account.last_status_at || account.created_at) }) - field(:domain, type: 'keyword', value: ->(account) { account.domain || '' }) - field(:display_name, type: 'text', analyzer: ChewyConfig.instance.accounts_analyzers.dig('display_name', 'analyzer')) do - field :edge_ngram, type: 'text', analyzer: ChewyConfig.instance.accounts_analyzers.dig('display_name', 'edge_ngram', 'analyzer'), search_analyzer: ChewyConfig.instance.accounts_analyzers.dig('display_name', 'edge_ngram', 'search_analyzer') - end - field(:username, type: 'text', analyzer: ChewyConfig.instance.accounts_analyzers.dig('username', 'analyzer'), value: lambda { |account| - [account.username, account.domain].compact.join('@') - }) do - field :edge_ngram, type: 'text', analyzer: ChewyConfig.instance.accounts_analyzers.dig('username', 'edge_ngram', 'analyzer'), - search_analyzer: ChewyConfig.instance.accounts_analyzers.dig('username', 'edge_ngram', 'search_analyzer') - end - field(:text, type: 'text', analyzer: ChewyConfig.instance.accounts_analyzers.dig('text', 'analyzer'), value: ->(account) { account.searchable_text }) { field(:stemmed, type: 'text', analyzer: ChewyConfig.instance.accounts_analyzers.dig('text', 'stemmed', 'analyzer')) } + field(:display_name, type: 'text', analyzer: 'verbatim') { field :edge_ngram, type: 'text', analyzer: 'edge_ngram', search_analyzer: 'verbatim' } + field(:username, type: 'text', analyzer: 'verbatim', value: ->(account) { [account.username, account.domain].compact.join('@') }) { field :edge_ngram, type: 'text', analyzer: 'edge_ngram', search_analyzer: 'verbatim' } + field(:text, type: 'text', analyzer: 'verbatim', value: ->(account) { account.searchable_text }) { field :stemmed, type: 'text', analyzer: 'natural' } end end diff --git a/app/chewy/public_statuses_index.rb b/app/chewy/public_statuses_index.rb index b71406d3e3..09a4dfc093 100644 --- a/app/chewy/public_statuses_index.rb +++ b/app/chewy/public_statuses_index.rb @@ -3,22 +3,66 @@ class PublicStatusesIndex < Chewy::Index include DatetimeClampingConcern - # ElasticSearch config is moved to "/config/elasticsearch.default.yml". - # Edit it when original Mastodon changed ElasticSearch config. - settings index: index_preset(refresh_interval: '30s', number_of_shards: 5), analysis: ChewyConfig.instance.public_statuses + settings index: index_preset(refresh_interval: '30s', number_of_shards: 5), analysis: { + filter: { + english_stop: { + type: 'stop', + stopwords: '_english_', + }, + + english_stemmer: { + type: 'stemmer', + language: 'english', + }, + + english_possessive_stemmer: { + type: 'stemmer', + language: 'possessive_english', + }, + }, + + analyzer: { + verbatim: { + tokenizer: 'uax_url_email', + filter: %w(lowercase), + }, + + content: { + tokenizer: 'standard', + filter: %w( + lowercase + asciifolding + cjk_width + elision + english_possessive_stemmer + english_stop + english_stemmer + ), + }, + + hashtag: { + tokenizer: 'keyword', + filter: %w( + word_delimiter_graph + lowercase + asciifolding + cjk_width + ), + }, + }, + } index_scope ::Status.unscoped .kept .indexable - .includes(:media_attachments, :preloadable_poll, :tags, :account, preview_cards_status: :preview_card) + .includes(:media_attachments, :preloadable_poll, :tags, preview_cards_status: :preview_card) root date_detection: false do field(:id, type: 'long') field(:account_id, type: 'long') - field(:text, type: 'text', analyzer: ChewyConfig.instance.public_statuses_analyzers.dig('text', 'analyzer'), value: ->(status) { status.searchable_text }) { field(:stemmed, type: 'text', analyzer: ChewyConfig.instance.public_statuses_analyzers.dig('text', 'stemmed', 'analyzer')) } - field(:tags, type: 'text', analyzer: ChewyConfig.instance.public_statuses_analyzers.dig('tags', 'analyzer'), value: ->(status) { status.tags.map(&:display_name) }) + field(:text, type: 'text', analyzer: 'verbatim', value: ->(status) { status.searchable_text }) { field(:stemmed, type: 'text', analyzer: 'content') } + field(:tags, type: 'text', analyzer: 'hashtag', value: ->(status) { status.tags.map(&:display_name) }) field(:language, type: 'keyword') - field(:domain, type: 'keyword', value: ->(status) { status.account.domain || '' }) field(:properties, type: 'keyword', value: ->(status) { status.searchable_properties }) field(:created_at, type: 'date', value: ->(status) { clamp_date(status.created_at) }) end diff --git a/app/chewy/statuses_index.rb b/app/chewy/statuses_index.rb index 44cb86d755..e739ccecb4 100644 --- a/app/chewy/statuses_index.rb +++ b/app/chewy/statuses_index.rb @@ -3,49 +3,64 @@ class StatusesIndex < Chewy::Index include DatetimeClampingConcern - # ElasticSearch config is moved to "/config/elasticsearch.default.yml". - # Edit it when original Mastodon changed ElasticSearch config. - settings index: index_preset(refresh_interval: '30s', number_of_shards: 5), analysis: ChewyConfig.instance.statuses + settings index: index_preset(refresh_interval: '30s', number_of_shards: 5), analysis: { + filter: { + english_stop: { + type: 'stop', + stopwords: '_english_', + }, - index_scope ::Status.unscoped.kept.without_reblogs.includes( - :account, - :media_attachments, - :local_mentioned, - :local_favorited, - :local_reblogged, - :local_bookmarked, - :local_emoji_reacted, - :tags, - :local_referenced, - preview_cards_status: :preview_card, - preloadable_poll: :local_voters - ), - delete_if: lambda { |status| - if status.searchability == 'direct' - status.searchable_by.empty? - else - status.searchability == 'limited' ? !status.local? : false - end - } + english_stemmer: { + type: 'stemmer', + language: 'english', + }, + + english_possessive_stemmer: { + type: 'stemmer', + language: 'possessive_english', + }, + }, + + analyzer: { + verbatim: { + tokenizer: 'uax_url_email', + filter: %w(lowercase), + }, + + content: { + tokenizer: 'standard', + filter: %w( + lowercase + asciifolding + cjk_width + elision + english_possessive_stemmer + english_stop + english_stemmer + ), + }, + + hashtag: { + tokenizer: 'keyword', + filter: %w( + word_delimiter_graph + lowercase + asciifolding + cjk_width + ), + }, + }, + } + + index_scope ::Status.unscoped.kept.without_reblogs.includes(:media_attachments, :local_mentioned, :local_favorited, :local_reblogged, :local_bookmarked, :tags, preview_cards_status: :preview_card, preloadable_poll: :local_voters), delete_if: ->(status) { status.searchable_by.empty? } root date_detection: false do field(:id, type: 'long') field(:account_id, type: 'long') - field(:text, type: 'text', analyzer: ChewyConfig.instance.statuses_analyzers.dig('text', 'analyzer'), value: ->(status) { status.searchable_text }) { field(:stemmed, type: 'text', analyzer: ChewyConfig.instance.statuses_analyzers.dig('text', 'stemmed', 'analyzer')) } - field(:tags, type: 'text', analyzer: ChewyConfig.instance.statuses_analyzers.dig('tags', 'analyzer'), value: ->(status) { status.tags.map(&:display_name) }) + field(:text, type: 'text', analyzer: 'verbatim', value: ->(status) { status.searchable_text }) { field(:stemmed, type: 'text', analyzer: 'content') } + field(:tags, type: 'text', analyzer: 'hashtag', value: ->(status) { status.tags.map(&:display_name) }) field(:searchable_by, type: 'long', value: ->(status) { status.searchable_by }) - field(:mentioned_by, type: 'long', value: ->(status) { status.mentioned_by }) - field(:favourited_by, type: 'long', value: ->(status) { status.favourited_by }) - field(:reblogged_by, type: 'long', value: ->(status) { status.reblogged_by }) - field(:bookmarked_by, type: 'long', value: ->(status) { status.bookmarked_by }) - field(:bookmark_categoried_by, type: 'long', value: ->(status) { status.bookmark_categoried_by }) - field(:emoji_reacted_by, type: 'long', value: ->(status) { status.emoji_reacted_by }) - field(:referenced_by, type: 'long', value: ->(status) { status.referenced_by }) - field(:voted_by, type: 'long', value: ->(status) { status.voted_by }) - field(:searchability, type: 'keyword', value: ->(status) { status.compute_searchability }) - field(:visibility, type: 'keyword', value: ->(status) { status.searchable_visibility }) field(:language, type: 'keyword') - field(:domain, type: 'keyword', value: ->(status) { status.account.domain || '' }) field(:properties, type: 'keyword', value: ->(status) { status.searchable_properties }) field(:created_at, type: 'date', value: ->(status) { clamp_date(status.created_at) }) end diff --git a/app/chewy/tags_index.rb b/app/chewy/tags_index.rb index 965718e83e..c99218a47f 100644 --- a/app/chewy/tags_index.rb +++ b/app/chewy/tags_index.rb @@ -3,9 +3,36 @@ class TagsIndex < Chewy::Index include DatetimeClampingConcern - # ElasticSearch config is moved to "/config/elasticsearch.default.yml". - # Edit it when original Mastodon changed ElasticSearch config. - settings index: index_preset(refresh_interval: '30s'), analysis: ChewyConfig.instance.tags + settings index: index_preset(refresh_interval: '30s'), analysis: { + analyzer: { + content: { + tokenizer: 'keyword', + filter: %w( + word_delimiter_graph + lowercase + asciifolding + cjk_width + ), + }, + + edge_ngram: { + tokenizer: 'edge_ngram', + filter: %w( + lowercase + asciifolding + cjk_width + ), + }, + }, + + tokenizer: { + edge_ngram: { + type: 'edge_ngram', + min_gram: 2, + max_gram: 15, + }, + }, + } index_scope ::Tag.listable @@ -14,9 +41,7 @@ class TagsIndex < Chewy::Index end root date_detection: false do - field(:name, type: 'text', analyzer: ChewyConfig.instance.tags_analyzers.dig('name', 'analyzer'), value: :display_name) do - field(:edge_ngram, type: 'text', analyzer: ChewyConfig.instance.tags_analyzers.dig('name', 'edge_ngram', 'analyzer'), search_analyzer: ChewyConfig.instance.tags_analyzers.dig('name', 'edge_ngram', 'search_analyzer')) - end + field(:name, type: 'text', analyzer: 'content', value: :display_name) { field(:edge_ngram, type: 'text', analyzer: 'edge_ngram', search_analyzer: 'content') } field(:reviewed, type: 'boolean', value: ->(tag) { tag.reviewed? }) field(:usage, type: 'long', value: ->(tag, crutches) { tag.history.aggregate(crutches.time_period).accounts }) field(:last_status_at, type: 'date', value: ->(tag) { clamp_date(tag.last_status_at || tag.created_at) }) diff --git a/app/controllers/accounts_controller.rb b/app/controllers/accounts_controller.rb index 98e68bd873..4e475fe782 100644 --- a/app/controllers/accounts_controller.rb +++ b/app/controllers/accounts_controller.rb @@ -25,7 +25,7 @@ class AccountsController < ApplicationController limit = params[:limit].present? ? [params[:limit].to_i, PAGE_SIZE_MAX].min : PAGE_SIZE @statuses = filtered_statuses.without_reblogs.limit(limit) - @statuses = preload_collection(@statuses, Status) + @statuses = cache_collection(@statuses, Status) end format.json do @@ -46,11 +46,7 @@ class AccountsController < ApplicationController end def default_statuses - if current_account.present? - @account.statuses.distributable_visibility - else - @account.statuses.distributable_visibility_for_anonymous - end + @account.statuses.where(visibility: [:public, :unlisted]) end def only_media_scope diff --git a/app/controllers/activitypub/base_controller.rb b/app/controllers/activitypub/base_controller.rb index c2563c492e..388d4b9e1d 100644 --- a/app/controllers/activitypub/base_controller.rb +++ b/app/controllers/activitypub/base_controller.rb @@ -1,9 +1,6 @@ # frozen_string_literal: true class ActivityPub::BaseController < Api::BaseController - include SignatureVerification - include AccountOwnedConcern - skip_before_action :require_authenticated_user! skip_before_action :require_not_suspended! skip_around_action :set_locale diff --git a/app/controllers/activitypub/claims_controller.rb b/app/controllers/activitypub/claims_controller.rb index 480baaf2bc..339333e462 100644 --- a/app/controllers/activitypub/claims_controller.rb +++ b/app/controllers/activitypub/claims_controller.rb @@ -1,6 +1,9 @@ # frozen_string_literal: true class ActivityPub::ClaimsController < ActivityPub::BaseController + include SignatureVerification + include AccountOwnedConcern + skip_before_action :authenticate_user! before_action :require_account_signature! diff --git a/app/controllers/activitypub/collections_controller.rb b/app/controllers/activitypub/collections_controller.rb index c25362c9bc..2188eb72a3 100644 --- a/app/controllers/activitypub/collections_controller.rb +++ b/app/controllers/activitypub/collections_controller.rb @@ -1,6 +1,9 @@ # frozen_string_literal: true class ActivityPub::CollectionsController < ActivityPub::BaseController + include SignatureVerification + include AccountOwnedConcern + vary_by -> { 'Signature' if authorized_fetch_mode? } before_action :require_account_signature!, if: :authorized_fetch_mode? @@ -18,7 +21,7 @@ class ActivityPub::CollectionsController < ActivityPub::BaseController def set_items case params[:id] when 'featured' - @items = for_signed_account { preload_collection(@account.pinned_statuses, Status) } + @items = for_signed_account { cache_collection(@account.pinned_statuses, Status) } @items = @items.map { |item| item.distributable? ? item : ActivityPub::TagManager.instance.uri_for(item) } when 'tags' @items = for_signed_account { @account.featured_tags } diff --git a/app/controllers/activitypub/contexts_controller.rb b/app/controllers/activitypub/contexts_controller.rb deleted file mode 100644 index a3263ed82e..0000000000 --- a/app/controllers/activitypub/contexts_controller.rb +++ /dev/null @@ -1,23 +0,0 @@ -# frozen_string_literal: true - -class ActivityPub::ContextsController < ActivityPub::BaseController - include SignatureVerification - - vary_by -> { 'Signature' if authorized_fetch_mode? } - - before_action :set_context - - def show - expires_in 3.minutes, public: true - render json: @context, - serializer: ActivityPub::ContextSerializer, - adapter: ActivityPub::Adapter, - content_type: 'application/activity+json' - end - - private - - def set_context - @context = Conversation.find(params[:id]) - end -end diff --git a/app/controllers/activitypub/followers_synchronizations_controller.rb b/app/controllers/activitypub/followers_synchronizations_controller.rb index 392dd36bcd..976caa3445 100644 --- a/app/controllers/activitypub/followers_synchronizations_controller.rb +++ b/app/controllers/activitypub/followers_synchronizations_controller.rb @@ -1,6 +1,9 @@ # frozen_string_literal: true class ActivityPub::FollowersSynchronizationsController < ActivityPub::BaseController + include SignatureVerification + include AccountOwnedConcern + vary_by -> { 'Signature' if authorized_fetch_mode? } before_action :require_account_signature! @@ -21,7 +24,7 @@ class ActivityPub::FollowersSynchronizationsController < ActivityPub::BaseContro end def set_items - @items = @account.followers.matches_uri_prefix(uri_prefix).pluck(:uri) + @items = @account.followers.where(Account.arel_table[:uri].matches("#{Account.sanitize_sql_like(uri_prefix)}/%", false, true)).or(@account.followers.where(uri: uri_prefix)).pluck(:uri) end def collection_presenter diff --git a/app/controllers/activitypub/inboxes_controller.rb b/app/controllers/activitypub/inboxes_controller.rb index 49cfc8ad1c..5ee85474e7 100644 --- a/app/controllers/activitypub/inboxes_controller.rb +++ b/app/controllers/activitypub/inboxes_controller.rb @@ -1,7 +1,9 @@ # frozen_string_literal: true class ActivityPub::InboxesController < ActivityPub::BaseController + include SignatureVerification include JsonLdHelper + include AccountOwnedConcern before_action :skip_unknown_actor_activity before_action :require_actor_signature! @@ -22,7 +24,7 @@ class ActivityPub::InboxesController < ActivityPub::BaseController def unknown_affected_account? json = Oj.load(body, mode: :strict) - json.is_a?(Hash) && %w(Delete Update).include?(json['type']) && json['actor'].present? && json['actor'] == value_or_id(json['object']) && !Account.exists?(uri: json['actor']) + json.is_a?(Hash) && %w(Delete Update).include?(json['type']) && json['actor'].present? && json['actor'] == value_or_id(json['object']) && !Account.where(uri: json['actor']).exists? rescue Oj::ParseError false end @@ -60,10 +62,11 @@ class ActivityPub::InboxesController < ActivityPub::BaseController return if raw_params.blank? || ENV['DISABLE_FOLLOWERS_SYNCHRONIZATION'] == 'true' || signed_request_account.nil? # Re-using the syntax for signature parameters - params = SignatureParser.parse(raw_params) + tree = SignatureParamsParser.new.parse(raw_params) + params = SignatureParamsTransformer.new.apply(tree) ActivityPub::PrepareFollowersSynchronizationService.new.call(signed_request_account, params) - rescue SignatureParser::ParsingError + rescue Parslet::ParseFailed Rails.logger.warn 'Error parsing Collection-Synchronization header' end diff --git a/app/controllers/activitypub/outboxes_controller.rb b/app/controllers/activitypub/outboxes_controller.rb index 82b1830941..bf10ba762a 100644 --- a/app/controllers/activitypub/outboxes_controller.rb +++ b/app/controllers/activitypub/outboxes_controller.rb @@ -3,6 +3,9 @@ class ActivityPub::OutboxesController < ActivityPub::BaseController LIMIT = 20 + include SignatureVerification + include AccountOwnedConcern + vary_by -> { 'Signature' if authorized_fetch_mode? || page_requested? } before_action :require_account_signature!, if: :authorized_fetch_mode? @@ -34,7 +37,7 @@ class ActivityPub::OutboxesController < ActivityPub::BaseController ActivityPub::CollectionPresenter.new( id: outbox_url, type: :ordered, - size: @account.user&.setting_hide_statuses_count ? 0 : @account.statuses_count, + size: @account.statuses_count, first: outbox_url(page: true), last: outbox_url(page: true, min_id: 0) ) @@ -60,7 +63,7 @@ class ActivityPub::OutboxesController < ActivityPub::BaseController def set_statuses return unless page_requested? - @statuses = preload_collection_paginated_by_id( + @statuses = cache_collection_paginated_by_id( AccountStatusesFilter.new(@account, signed_request_account).results, Status, LIMIT, diff --git a/app/controllers/activitypub/references_controller.rb b/app/controllers/activitypub/references_controller.rb deleted file mode 100644 index 8f41fd6922..0000000000 --- a/app/controllers/activitypub/references_controller.rb +++ /dev/null @@ -1,89 +0,0 @@ -# frozen_string_literal: true - -class ActivityPub::ReferencesController < ActivityPub::BaseController - include SignatureVerification - include Authorization - include AccountOwnedConcern - - before_action :require_signature!, if: :authorized_fetch_mode? - before_action :set_status - - def index - expires_in 0, public: public_fetch_mode? - render json: references_collection_presenter, serializer: ActivityPub::CollectionSerializer, adapter: ActivityPub::Adapter, content_type: 'application/activity+json', skip_activities: true - end - - private - - def pundit_user - signed_request_account - end - - def set_status - @status = @account.statuses.find(params[:status_id]) - authorize @status, :show? - rescue Mastodon::NotPermittedError - not_found - end - - def load_statuses - cached_references - end - - def cached_references - preload_collection(Status.where(id: results).reorder(:id), Status) - end - - def results - @results ||= begin - references = @status.reference_objects.order(target_status_id: :asc) - references = references.where('target_status_id > ?', page_params[:min_id]) if page_params[:min_id].present? - references = references.limit(limit_param(references_limit)) - references.pluck(:target_status_id) - end - end - - def references_limit - StatusReference::REFERENCES_LIMIT - end - - def pagination_min_id - results.last - end - - def records_continue? - results.size == limit_param(references_limit) - end - - def references_collection_presenter - page = ActivityPub::CollectionPresenter.new( - id: ActivityPub::TagManager.instance.references_uri_for(@status, page_params), - type: :unordered, - part_of: ActivityPub::TagManager.instance.references_uri_for(@status), - items: load_statuses.map(&:uri), - next: next_page - ) - - return page if page_requested? - - ActivityPub::CollectionPresenter.new( - type: :unordered, - id: ActivityPub::TagManager.instance.references_uri_for(@status), - first: page - ) - end - - def page_requested? - truthy_param?(:page) - end - - def next_page - return unless records_continue? - - ActivityPub::TagManager.instance.references_uri_for(@status, page_params.merge(min_id: pagination_min_id)) - end - - def page_params - params_slice(:min_id, :limit).merge(page: true) - end -end diff --git a/app/controllers/activitypub/replies_controller.rb b/app/controllers/activitypub/replies_controller.rb index 11aac48c9c..c38ff89d1c 100644 --- a/app/controllers/activitypub/replies_controller.rb +++ b/app/controllers/activitypub/replies_controller.rb @@ -1,7 +1,9 @@ # frozen_string_literal: true class ActivityPub::RepliesController < ActivityPub::BaseController + include SignatureVerification include Authorization + include AccountOwnedConcern DESCENDANTS_LIMIT = 60 @@ -31,7 +33,7 @@ class ActivityPub::RepliesController < ActivityPub::BaseController def set_replies @replies = only_other_accounts? ? Status.where.not(account_id: @account.id).joins(:account).merge(Account.without_suspended) : @account.statuses - @replies = @replies.distributable_visibility.where(in_reply_to_id: @status.id) + @replies = @replies.where(in_reply_to_id: @status.id, visibility: [:public, :unlisted]) @replies = @replies.paginate_by_min_id(DESCENDANTS_LIMIT, params[:min_id]) end diff --git a/app/controllers/admin/accounts_controller.rb b/app/controllers/admin/accounts_controller.rb index 724af2360d..9beb8fde6b 100644 --- a/app/controllers/admin/accounts_controller.rb +++ b/app/controllers/admin/accounts_controller.rb @@ -3,13 +3,13 @@ module Admin class AccountsController < BaseController before_action :set_account, except: [:index, :batch] - before_action :require_remote_account!, only: [:redownload, :approve_remote, :reject_remote] + before_action :require_remote_account!, only: [:redownload] before_action :require_local_account!, only: [:enable, :memorialize, :approve, :reject] def index authorize :account, :index? - @accounts = filtered_accounts.page(params[:page]).without_count + @accounts = filtered_accounts.page(params[:page]) @form = Form::AccountBatch.new end @@ -66,20 +66,6 @@ module Admin redirect_to admin_accounts_path(status: 'pending'), notice: I18n.t('admin.accounts.rejected_msg', username: @account.acct) end - def approve_remote - authorize @account, :approve_remote? - @account.approve_remote! - log_action :approve_remote, @account - redirect_to admin_account_path(@account.id), notice: I18n.t('admin.accounts.approved_msg', username: @account.acct) - end - - def reject_remote - authorize @account, :reject_remote? - @account.reject_remote! - log_action :reject_remote, @account - redirect_to admin_account_path(@account.id), notice: I18n.t('admin.accounts.rejected_msg', username: @account.acct) - end - def destroy authorize @account, :destroy? Admin::AccountDeletionWorker.perform_async(@account.id) @@ -142,7 +128,7 @@ module Admin def unblock_email authorize @account, :unblock_email? - CanonicalEmailBlock.matching_account(@account).delete_all + CanonicalEmailBlock.where(reference_account: @account).delete_all log_action :unblock_email, @account @@ -182,12 +168,6 @@ module Admin 'approve' elsif params[:reject] 'reject' - elsif params[:approve_remote] - 'approve_remote' - elsif params[:approve_remote_domain] - 'approve_remote_domain' - elsif params[:reject_remote] - 'reject_remote' end end end diff --git a/app/controllers/admin/action_logs_controller.rb b/app/controllers/admin/action_logs_controller.rb index 8b8e83fde7..37a00ad225 100644 --- a/app/controllers/admin/action_logs_controller.rb +++ b/app/controllers/admin/action_logs_controller.rb @@ -6,7 +6,7 @@ module Admin def index authorize :audit_log, :index? - @auditable_accounts = Account.auditable.select(:id, :username) + @auditable_accounts = Account.where(id: Admin::ActionLog.select('distinct account_id')).select(:id, :username) end private diff --git a/app/controllers/admin/confirmations_controller.rb b/app/controllers/admin/confirmations_controller.rb index 702550eecc..6f4e426797 100644 --- a/app/controllers/admin/confirmations_controller.rb +++ b/app/controllers/admin/confirmations_controller.rb @@ -3,11 +3,11 @@ module Admin class ConfirmationsController < BaseController before_action :set_user - before_action :redirect_confirmed_user, only: [:resend], if: :user_confirmed? + before_action :check_confirmation, only: [:resend] def create authorize @user, :confirm? - @user.mark_email_as_confirmed! + @user.confirm! log_action :confirm, @user redirect_to admin_accounts_path end @@ -25,13 +25,11 @@ module Admin private - def redirect_confirmed_user - flash[:error] = I18n.t('admin.accounts.resend_confirmation.already_confirmed') - redirect_to admin_accounts_path - end - - def user_confirmed? - @user.confirmed? + def check_confirmation + if @user.confirmed? + flash[:error] = I18n.t('admin.accounts.resend_confirmation.already_confirmed') + redirect_to admin_accounts_path + end end end end diff --git a/app/controllers/admin/custom_emojis_controller.rb b/app/controllers/admin/custom_emojis_controller.rb index 34368f08a2..00d069cdfb 100644 --- a/app/controllers/admin/custom_emojis_controller.rb +++ b/app/controllers/admin/custom_emojis_controller.rb @@ -2,12 +2,10 @@ module Admin class CustomEmojisController < BaseController - before_action :set_custom_emoji, only: [:edit, :update] - def index authorize :custom_emoji, :index? - @custom_emojis = filtered_custom_emojis.eager_load(:local_counterpart).page(params[:page]).without_count + @custom_emojis = filtered_custom_emojis.eager_load(:local_counterpart).page(params[:page]) @form = Form::CustomEmojiBatch.new end @@ -17,10 +15,6 @@ module Admin @custom_emoji = CustomEmoji.new end - def edit - authorize :custom_emoji, :create? - end - def create authorize :custom_emoji, :create? @@ -34,19 +28,6 @@ module Admin end end - def update - authorize :custom_emoji, :create? - - @custom_emoji.assign_attributes(update_params) - - if @custom_emoji.save - log_action :update, @custom_emoji - redirect_to admin_custom_emojis_path(filter_params), notice: I18n.t('admin.custom_emojis.updated_msg') - else - render :new - end - end - def batch authorize :custom_emoji, :index? @@ -62,16 +43,8 @@ module Admin private - def set_custom_emoji - @custom_emoji = CustomEmoji.find(params[:id]) - end - def resource_params - params.require(:custom_emoji).permit(:shortcode, :image, :category_id, :visible_in_picker, :aliases_raw, :license) - end - - def update_params - params.require(:custom_emoji).permit(:category_id, :visible_in_picker, :aliases_raw, :license) + params.require(:custom_emoji).permit(:shortcode, :image, :visible_in_picker) end def filtered_custom_emojis diff --git a/app/controllers/admin/domain_allows_controller.rb b/app/controllers/admin/domain_allows_controller.rb index b0f139e3a8..31be1978bb 100644 --- a/app/controllers/admin/domain_allows_controller.rb +++ b/app/controllers/admin/domain_allows_controller.rb @@ -25,8 +25,6 @@ class Admin::DomainAllowsController < Admin::BaseController def destroy authorize @domain_allow, :destroy? UnallowDomainService.new.call(@domain_allow) - log_action :destroy, @domain_allow - redirect_to admin_instances_path, notice: I18n.t('admin.domain_allows.destroyed_msg') end diff --git a/app/controllers/admin/domain_blocks_controller.rb b/app/controllers/admin/domain_blocks_controller.rb index 2a2faf9cce..325b33df80 100644 --- a/app/controllers/admin/domain_blocks_controller.rb +++ b/app/controllers/admin/domain_blocks_controller.rb @@ -88,19 +88,15 @@ module Admin end def update_params - params.require(:domain_block).permit(:severity, :reject_media, :reject_favourite, :reject_reply_exclude_followers, :reject_send_sensitive, :reject_hashtag, - :reject_straight_follow, :reject_new_follow, :reject_friend, :block_trends, :detect_invalid_subscription, :reject_reports, :private_comment, :public_comment, :obfuscate, :hidden) + params.require(:domain_block).permit(:severity, :reject_media, :reject_reports, :private_comment, :public_comment, :obfuscate) end def resource_params - params.require(:domain_block).permit(:domain, :severity, :reject_media, :reject_favourite, :reject_reply_exclude_followers, :reject_send_sensitive, :reject_hashtag, - :reject_straight_follow, :reject_new_follow, :reject_friend, :block_trends, :detect_invalid_subscription, :reject_reports, :private_comment, :public_comment, :obfuscate, :hidden) + params.require(:domain_block).permit(:domain, :severity, :reject_media, :reject_reports, :private_comment, :public_comment, :obfuscate) end def form_domain_block_batch_params - params.require(:form_domain_block_batch).permit(domain_blocks_attributes: [:enabled, :domain, :severity, :reject_media, :reject_favourite, :reject_reply_exclude_followers, - :reject_send_sensitive, :reject_hashtag, :reject_straight_follow, :reject_new_follow, :reject_friend, :block_trends, :detect_invalid_subscription, - :reject_reports, :private_comment, :public_comment, :obfuscate, :hidden]) + params.require(:form_domain_block_batch).permit(domain_blocks_attributes: [:enabled, :domain, :severity, :reject_media, :reject_reports, :private_comment, :public_comment, :obfuscate]) end def action_from_button diff --git a/app/controllers/admin/email_domain_blocks_controller.rb b/app/controllers/admin/email_domain_blocks_controller.rb index faa0a061a6..ff754bc0b4 100644 --- a/app/controllers/admin/email_domain_blocks_controller.rb +++ b/app/controllers/admin/email_domain_blocks_controller.rb @@ -38,7 +38,7 @@ module Admin log_action :create, @email_domain_block (@email_domain_block.other_domains || []).uniq.each do |domain| - next if EmailDomainBlock.exists?(domain: domain) + next if EmailDomainBlock.where(domain: domain).exists? other_email_domain_block = EmailDomainBlock.create!(domain: domain, allow_with_approval: @email_domain_block.allow_with_approval, parent: @email_domain_block) log_action :create, other_email_domain_block diff --git a/app/controllers/admin/export_domain_blocks_controller.rb b/app/controllers/admin/export_domain_blocks_controller.rb index 8d7350c765..ffc4478172 100644 --- a/app/controllers/admin/export_domain_blocks_controller.rb +++ b/app/controllers/admin/export_domain_blocks_controller.rb @@ -36,17 +36,7 @@ module Admin reject_reports: row.fetch('#reject_reports', false), private_comment: @global_private_comment, public_comment: row['#public_comment'], - obfuscate: row.fetch('#obfuscate', false), - reject_favourite: row.fetch('#reject_favourite', false), - reject_send_sensitive: row.fetch('#reject_send_sensitive', false), - reject_hashtag: row.fetch('#reject_hashtag', false), - reject_straight_follow: row.fetch('#reject_straight_follow', false), - reject_new_follow: row.fetch('#reject_new_follow', false), - hidden: row.fetch('#hidden', false), - detect_invalid_subscription: row.fetch('#detect_invalid_subscription', false), - reject_reply_exclude_followers: row.fetch('#reject_reply_exclude_followers', false), - reject_friend: row.fetch('#reject_friend', false), - block_trends: row.fetch('#block_trends', false)) + obfuscate: row.fetch('#obfuscate', false)) if domain_block.invalid? flash.now[:alert] = I18n.t('admin.export_domain_blocks.invalid_domain_block', error: domain_block.errors.full_messages.join(', ')) @@ -59,7 +49,7 @@ module Admin next end - @warning_domains = instances_from_imported_blocks.pluck(:domain) + @warning_domains = Instance.where(domain: @domain_blocks.map(&:domain)).where('EXISTS (SELECT 1 FROM follows JOIN accounts ON follows.account_id = accounts.id OR follows.target_account_id = accounts.id WHERE accounts.domain = instances.domain)').pluck(:domain) rescue ActionController::ParameterMissing flash.now[:alert] = I18n.t('admin.export_domain_blocks.no_file') set_dummy_import! @@ -68,56 +58,18 @@ module Admin private - def instances_from_imported_blocks - Instance.with_domain_follows(@domain_blocks.map(&:domain)) - end - def export_filename 'domain_blocks.csv' end def export_headers - %w( - #domain - #severity - #reject_media - #reject_reports - #public_comment - #obfuscate - #reject_favourite - #reject_send_sensitive - #reject_hashtag - #reject_straight_follow - #reject_new_follow - #hidden - #detect_invalid_subscription - #reject_reply_exclude_followers - #reject_friend - #block_trends - ) + %w(#domain #severity #reject_media #reject_reports #public_comment #obfuscate) end def export_data CSV.generate(headers: export_headers, write_headers: true) do |content| DomainBlock.with_limitations.order(id: :asc).each do |instance| - content << [ - instance.domain, - instance.severity, - instance.reject_media, - instance.reject_reports, - instance.public_comment, - instance.obfuscate, - instance.reject_favourite, - instance.reject_send_sensitive, - instance.reject_hashtag, - instance.reject_straight_follow, - instance.reject_new_follow, - instance.hidden, - instance.detect_invalid_subscription, - instance.reject_reply_exclude_followers, - instance.reject_friend, - instance.block_trends, - ] + content << [instance.domain, instance.severity, instance.reject_media, instance.reject_reports, instance.public_comment, instance.obfuscate] end end end diff --git a/app/controllers/admin/friend_servers_controller.rb b/app/controllers/admin/friend_servers_controller.rb deleted file mode 100644 index 729d3b3912..0000000000 --- a/app/controllers/admin/friend_servers_controller.rb +++ /dev/null @@ -1,93 +0,0 @@ -# frozen_string_literal: true - -module Admin - class FriendServersController < BaseController - before_action :set_friend, except: [:index, :new, :create] - before_action :warn_signatures_not_enabled!, only: [:new, :edit, :create, :follow, :unfollow, :accept, :reject] - - def index - authorize :friend_server, :update? - @friends = FriendDomain.all - end - - def new - authorize :friend_server, :update? - @friend = FriendDomain.new - end - - def edit - authorize :friend_server, :update? - end - - def create - authorize :friend_server, :update? - - @friend = FriendDomain.new(resource_params) - - if @friend.save - @friend.follow! - redirect_to admin_friend_servers_path - else - render action: :new - end - end - - def update - authorize :friend_server, :update? - - if @friend.update(update_resource_params) - redirect_to admin_friend_servers_path - else - render action: :edit - end - end - - def destroy - authorize :friend_server, :update? - @friend.destroy - redirect_to admin_friend_servers_path - end - - def follow - authorize :friend_server, :update? - @friend.follow! - render action: :edit - end - - def unfollow - authorize :friend_server, :update? - @friend.unfollow! - render action: :edit - end - - def accept - authorize :friend_server, :update? - @friend.accept! - render action: :edit - end - - def reject - authorize :friend_server, :update? - @friend.reject! - render action: :edit - end - - private - - def set_friend - @friend = FriendDomain.find(params[:id]) - end - - def resource_params - params.require(:friend_domain).permit(:domain, :inbox_url, :available, :pseudo_relay, :delivery_local, :unlocked, :allow_all_posts) - end - - def update_resource_params - params.require(:friend_domain).permit(:inbox_url, :available, :pseudo_relay, :delivery_local, :unlocked, :allow_all_posts) - end - - def warn_signatures_not_enabled! - flash.now[:error] = I18n.t('admin.relays.signatures_not_enabled') if authorized_fetch_mode? - end - end -end diff --git a/app/controllers/admin/ng_rule_histories_controller.rb b/app/controllers/admin/ng_rule_histories_controller.rb deleted file mode 100644 index 9dccefaf49..0000000000 --- a/app/controllers/admin/ng_rule_histories_controller.rb +++ /dev/null @@ -1,24 +0,0 @@ -# frozen_string_literal: true - -module Admin - class NgRuleHistoriesController < BaseController - before_action :set_ng_rule - before_action :set_histories - - PER_PAGE = 20 - - def show - authorize :ng_words, :show? - end - - private - - def set_ng_rule - @ng_rule = ::NgRule.find(params[:id]) - end - - def set_histories - @histories = NgRuleHistory.where(ng_rule_id: params[:id]).order(id: :desc).page(params[:page]).per(PER_PAGE) - end - end -end diff --git a/app/controllers/admin/ng_rules_controller.rb b/app/controllers/admin/ng_rules_controller.rb deleted file mode 100644 index f37424cced..0000000000 --- a/app/controllers/admin/ng_rules_controller.rb +++ /dev/null @@ -1,115 +0,0 @@ -# frozen_string_literal: true - -module Admin - class NgRulesController < BaseController - before_action :set_ng_rule, only: [:edit, :update, :destroy, :duplicate] - - def index - authorize :ng_words, :show? - - @ng_rules = ::NgRule.order(id: :asc) - end - - def new - authorize :ng_words, :show? - - @ng_rule = ::NgRule.build - end - - def edit - authorize :ng_words, :show? - end - - def create - authorize :ng_words, :create? - - begin - test_words! - rescue - flash[:alert] = I18n.t('admin.ng_rules.test_error') - redirect_to new_admin_ng_rule_path - return - end - - @ng_rule = ::NgRule.build(resource_params) - - if @ng_rule.save - redirect_to admin_ng_rules_path - else - render :new - end - end - - def update - authorize :ng_words, :create? - - begin - test_words! - rescue - flash[:alert] = I18n.t('admin.ng_rules.test_error') - redirect_to edit_admin_ng_rule_path(id: @ng_rule.id) - return - end - - if @ng_rule.update(resource_params) - redirect_to admin_ng_rules_path - else - render :edit - end - end - - def duplicate - authorize :ng_words, :create? - - @ng_rule = @ng_rule.copy! - - flash[:alert] = I18n.t('admin.ng_rules.copy_error') unless @ng_rule.save - - redirect_to admin_ng_rules_path - end - - def destroy - authorize :ng_words, :create? - - @ng_rule.destroy - redirect_to admin_ng_rules_path - end - - private - - def set_ng_rule - @ng_rule = ::NgRule.find(params[:id]) - end - - def resource_params - params.require(:ng_rule).permit(:title, :expires_in, :available, :account_domain, :account_username, :account_display_name, - :account_note, :account_field_name, :account_field_value, :account_avatar_state, - :account_header_state, :account_include_local, :status_spoiler_text, :status_text, :status_tag, - :status_sensitive_state, :status_cw_state, :status_media_state, :status_poll_state, - :status_mention_state, :status_reference_state, - :status_quote_state, :status_reply_state, :status_media_threshold, :status_poll_threshold, - :status_mention_threshold, :status_allow_follower_mention, - :reaction_allow_follower, :emoji_reaction_name, :emoji_reaction_origin_domain, - :status_reference_threshold, :account_allow_followed_by_local, :record_history_also_local, - status_visibility: [], status_searchability: [], reaction_type: []) - end - - def test_words! - arr = [ - resource_params[:account_domain], - resource_params[:account_username], - resource_params[:account_display_name], - resource_params[:account_note], - resource_params[:account_field_name], - resource_params[:account_field_value], - resource_params[:status_spoiler_text], - resource_params[:status_text], - resource_params[:status_tag], - resource_params[:emoji_reaction_name], - resource_params[:emoji_reaction_origin_domain], - ].compact_blank.join("\n") - - Admin::NgRule.extract_test!(arr) if arr.present? - end - end -end diff --git a/app/controllers/admin/ng_words/keywords_controller.rb b/app/controllers/admin/ng_words/keywords_controller.rb deleted file mode 100644 index 9af38fab7b..0000000000 --- a/app/controllers/admin/ng_words/keywords_controller.rb +++ /dev/null @@ -1,30 +0,0 @@ -# frozen_string_literal: true - -module Admin - class NgWords::KeywordsController < NgWordsController - def show - super - @ng_words = ::NgWord.caches.presence || [::NgWord.new] - end - - protected - - def validate - begin - ::NgWord.save_from_raws(settings_params_test) - return true - rescue - flash[:alert] = I18n.t('admin.ng_words.test_error') - redirect_to after_update_redirect_path - end - - false - end - - private - - def after_update_redirect_path - admin_ng_words_keywords_path - end - end -end diff --git a/app/controllers/admin/ng_words/settings_controller.rb b/app/controllers/admin/ng_words/settings_controller.rb deleted file mode 100644 index 63edadfce5..0000000000 --- a/app/controllers/admin/ng_words/settings_controller.rb +++ /dev/null @@ -1,11 +0,0 @@ -# frozen_string_literal: true - -module Admin - class NgWords::SettingsController < NgWordsController - protected - - def after_update_redirect_path - admin_ng_words_settings_path - end - end -end diff --git a/app/controllers/admin/ng_words/white_list_controller.rb b/app/controllers/admin/ng_words/white_list_controller.rb deleted file mode 100644 index 8fdb7df327..0000000000 --- a/app/controllers/admin/ng_words/white_list_controller.rb +++ /dev/null @@ -1,34 +0,0 @@ -# frozen_string_literal: true - -module Admin - class NgWords::WhiteListController < NgWordsController - def show - super - @white_list_domains = SpecifiedDomain.white_list_domain_caches.presence || [SpecifiedDomain.new] - end - - protected - - def validate - begin - SpecifiedDomain.save_from_raws_as_white_list(settings_params_list) - return true - rescue - flash[:alert] = I18n.t('admin.ng_words.save_error') - redirect_to after_update_redirect_path - end - - false - end - - def after_update_redirect_path - admin_ng_words_white_list_path - end - - private - - def settings_params_list - params.require(:form_admin_settings)[:specified_domains] - end - end -end diff --git a/app/controllers/admin/ng_words_controller.rb b/app/controllers/admin/ng_words_controller.rb deleted file mode 100644 index a70a435fa4..0000000000 --- a/app/controllers/admin/ng_words_controller.rb +++ /dev/null @@ -1,46 +0,0 @@ -# frozen_string_literal: true - -module Admin - class NgWordsController < BaseController - def show - authorize :ng_words, :show? - - @admin_settings = Form::AdminSettings.new - end - - def create - authorize :ng_words, :create? - - return unless validate - - @admin_settings = Form::AdminSettings.new(settings_params) - - if @admin_settings.save - flash[:notice] = I18n.t('generic.changes_saved_msg') - redirect_to after_update_redirect_path - else - render :show - end - end - - protected - - def validate - true - end - - def after_update_redirect_path - admin_ng_words_path - end - - private - - def settings_params - params.require(:form_admin_settings).permit(*Form::AdminSettings::KEYS) - end - - def settings_params_test - params.require(:form_admin_settings)[:ng_words_test] - end - end -end diff --git a/app/controllers/admin/ngword_histories_controller.rb b/app/controllers/admin/ngword_histories_controller.rb deleted file mode 100644 index 90f13db2fe..0000000000 --- a/app/controllers/admin/ngword_histories_controller.rb +++ /dev/null @@ -1,19 +0,0 @@ -# frozen_string_literal: true - -module Admin - class NgwordHistoriesController < BaseController - before_action :set_histories - - PER_PAGE = 20 - - def index - authorize :ng_words, :show? - end - - private - - def set_histories - @histories = NgwordHistory.order(id: :desc).page(params[:page]).per(PER_PAGE) - end - end -end diff --git a/app/controllers/admin/reports/actions_controller.rb b/app/controllers/admin/reports/actions_controller.rb index 5572108d59..554f7906f8 100644 --- a/app/controllers/admin/reports/actions_controller.rb +++ b/app/controllers/admin/reports/actions_controller.rb @@ -12,7 +12,7 @@ class Admin::Reports::ActionsController < Admin::BaseController authorize @report, :show? case action_from_button - when 'delete', 'mark_as_sensitive', 'force_cw' + when 'delete', 'mark_as_sensitive' status_batch_action = Admin::StatusBatchAction.new( type: action_from_button, status_ids: @report.status_ids, @@ -52,8 +52,6 @@ class Admin::Reports::ActionsController < Admin::BaseController 'delete' elsif params[:mark_as_sensitive] 'mark_as_sensitive' - elsif params[:force_cw] - 'force_cw' elsif params[:silence] 'silence' elsif params[:suspend] diff --git a/app/controllers/admin/rules_controller.rb b/app/controllers/admin/rules_controller.rb index b8def22ba3..d31aec6ea8 100644 --- a/app/controllers/admin/rules_controller.rb +++ b/app/controllers/admin/rules_controller.rb @@ -53,7 +53,7 @@ module Admin end def resource_params - params.require(:rule).permit(:text, :hint, :priority) + params.require(:rule).permit(:text, :priority) end end end diff --git a/app/controllers/admin/sensitive_words_controller.rb b/app/controllers/admin/sensitive_words_controller.rb deleted file mode 100644 index 24cdd4efcb..0000000000 --- a/app/controllers/admin/sensitive_words_controller.rb +++ /dev/null @@ -1,47 +0,0 @@ -# frozen_string_literal: true - -module Admin - class SensitiveWordsController < BaseController - def show - authorize :sensitive_words, :show? - - @admin_settings = Form::AdminSettings.new - @sensitive_words = ::SensitiveWord.caches.presence || [::SensitiveWord.new] - end - - def create - authorize :sensitive_words, :create? - - begin - ::SensitiveWord.save_from_raws(settings_params_test) - rescue - flash[:alert] = I18n.t('admin.ng_words.test_error') - redirect_to after_update_redirect_path - return - end - - @admin_settings = Form::AdminSettings.new(settings_params) - - if @admin_settings.save - flash[:notice] = I18n.t('generic.changes_saved_msg') - redirect_to after_update_redirect_path - else - render :index - end - end - - private - - def after_update_redirect_path - admin_sensitive_words_path - end - - def settings_params - params.require(:form_admin_settings).permit(*Form::AdminSettings::KEYS) - end - - def settings_params_test - params.require(:form_admin_settings)[:sensitive_words_test] - end - end -end diff --git a/app/controllers/admin/settings/registrations_controller.rb b/app/controllers/admin/settings/registrations_controller.rb index 6dbc86df9a..b4a74349c0 100644 --- a/app/controllers/admin/settings/registrations_controller.rb +++ b/app/controllers/admin/settings/registrations_controller.rb @@ -1,18 +1,9 @@ # frozen_string_literal: true class Admin::Settings::RegistrationsController < Admin::SettingsController - include RegistrationLimitationHelper - - before_action :set_limitation_counts, only: :show # rubocop:disable Rails/LexicallyScopedActionFilter - private def after_update_redirect_path admin_settings_registrations_path end - - def set_limitation_counts - @current_users_count = user_count_for_registration - @current_users_count_today = today_increase_user_count - end end diff --git a/app/controllers/admin/site_uploads_controller.rb b/app/controllers/admin/site_uploads_controller.rb index 96e61cf6bb..a5d2cf41cf 100644 --- a/app/controllers/admin/site_uploads_controller.rb +++ b/app/controllers/admin/site_uploads_controller.rb @@ -9,7 +9,7 @@ module Admin @site_upload.destroy! - redirect_back fallback_location: admin_settings_path, notice: I18n.t('admin.site_uploads.destroyed_msg') + redirect_to admin_settings_path, notice: I18n.t('admin.site_uploads.destroyed_msg') end private diff --git a/app/controllers/admin/special_domains_controller.rb b/app/controllers/admin/special_domains_controller.rb deleted file mode 100644 index 0ddbf26786..0000000000 --- a/app/controllers/admin/special_domains_controller.rb +++ /dev/null @@ -1,34 +0,0 @@ -# frozen_string_literal: true - -module Admin - class SpecialDomainsController < BaseController - def show - authorize :instance, :show? - - @admin_settings = Form::AdminSettings.new - end - - def create - authorize :instance, :destroy? - - @admin_settings = Form::AdminSettings.new(settings_params) - - if @admin_settings.save - flash[:notice] = I18n.t('generic.changes_saved_msg') - redirect_to after_update_redirect_path - else - render :show - end - end - - private - - def after_update_redirect_path - admin_special_domains_path - end - - def settings_params - params.require(:form_admin_settings).permit(*Form::AdminSettings::KEYS) - end - end -end diff --git a/app/controllers/admin/special_instances_controller.rb b/app/controllers/admin/special_instances_controller.rb deleted file mode 100644 index 3fd35d474e..0000000000 --- a/app/controllers/admin/special_instances_controller.rb +++ /dev/null @@ -1,34 +0,0 @@ -# frozen_string_literal: true - -module Admin - class SpecialInstancesController < BaseController - def show - authorize :instance, :show? - - @admin_settings = Form::AdminSettings.new - end - - def create - authorize :instance, :destroy? - - @admin_settings = Form::AdminSettings.new(settings_params) - - if @admin_settings.save - flash[:notice] = I18n.t('generic.changes_saved_msg') - redirect_to after_update_redirect_path - else - render :show - end - end - - private - - def after_update_redirect_path - admin_special_instances_path - end - - def settings_params - params.require(:form_admin_settings).permit(*Form::AdminSettings::KEYS) - end - end -end diff --git a/app/controllers/admin/statuses_controller.rb b/app/controllers/admin/statuses_controller.rb index 2070a7c70c..e53b22dca3 100644 --- a/app/controllers/admin/statuses_controller.rb +++ b/app/controllers/admin/statuses_controller.rb @@ -4,7 +4,7 @@ module Admin class StatusesController < BaseController before_action :set_account before_action :set_statuses, except: :show - before_action :set_status, only: [:show, :remove_history, :remove_media, :force_sensitive, :force_cw, :remove_status] + before_action :set_status, only: :show PER_PAGE = 20 @@ -29,65 +29,6 @@ module Admin redirect_to after_create_redirect_path end - def remove_history - authorize [:admin, @status], :show? - UpdateStatusService.new.call( - @status, - edit_status_account_id, - no_history: true, - bypass_validation: true - ) - log_action(:remove_history, @status) - redirect_to admin_account_status_path - end - - def remove_media - authorize [:admin, @status], :show? - UpdateStatusService.new.call( - @status, - edit_status_account_id, - media_ids: [], - media_attributes: [], - bypass_validation: true - ) - log_action(:remove_media, @status) - redirect_to admin_account_status_path - end - - def force_sensitive - authorize [:admin, @status], :show? - UpdateStatusService.new.call( - @status, - edit_status_account_id, - sensitive: true, - bypass_validation: true - ) - log_action(:force_sensitive, @status) - redirect_to admin_account_status_path - end - - def force_cw - authorize [:admin, @status], :show? - UpdateStatusService.new.call( - @status, - edit_status_account_id, - spoiler_text: 'CW', - bypass_validation: true - ) - log_action(:force_cw, @status) - redirect_to admin_account_status_path - end - - def remove_status - authorize [:admin, @status], :show? - @status.discard_with_reblogs - StatusPin.find_by(status: @status)&.destroy - @status.account.statuses_count = @status.account.statuses_count - 1 - RemovalWorker.perform_async(@status.id, { 'redraft' => false }) - log_action(:remove_status, @status) - redirect_to admin_account_path - end - private def batched_ordered_status_edits @@ -121,13 +62,6 @@ module Admin @statuses = Admin::StatusFilter.new(@account, filter_params).results.preload(:application, :preloadable_poll, :media_attachments, active_mentions: :account, reblog: [:account, :application, :preloadable_poll, :media_attachments, active_mentions: :account]).page(params[:page]).per(PER_PAGE) end - def edit_status_account_id - return @edit_account_id || @account.id if @edit_account_checked - - @edit_account_checked = true - @edit_account_id = Account.representative.id - end - def filter_params params.slice(*Admin::StatusFilter::KEYS).permit(*Admin::StatusFilter::KEYS) end diff --git a/app/controllers/antennas_controller.rb b/app/controllers/antennas_controller.rb deleted file mode 100644 index ca7ee5d2a2..0000000000 --- a/app/controllers/antennas_controller.rb +++ /dev/null @@ -1,51 +0,0 @@ -# frozen_string_literal: true - -class AntennasController < ApplicationController - layout 'admin' - - before_action :authenticate_user! - before_action :set_antenna, only: [:edit, :update, :destroy] - before_action :set_body_classes - before_action :set_cache_headers - - def index - @antennas = current_account.antennas.includes(:antenna_domains).includes(:antenna_tags).includes(:antenna_accounts) - end - - def edit; end - - def update - if @antenna.update(resource_params) - redirect_to antennas_path - else - render action: :edit - end - end - - def destroy - @antenna.destroy - redirect_to antennas_path - end - - private - - def set_antenna - @antenna = current_account.antennas.find(params[:id]) - end - - def resource_params - params.require(:antenna).permit(:title, :available, :expires_in) - end - - def thin_resource_params - params.require(:antenna).permit(:title) - end - - def set_body_classes - @body_classes = 'admin' - end - - def set_cache_headers - response.cache_control.replace(private: true, no_store: true) - end -end diff --git a/app/controllers/api/base_controller.rb b/app/controllers/api/base_controller.rb index cc4e22d27d..98fa1897ef 100644 --- a/app/controllers/api/base_controller.rb +++ b/app/controllers/api/base_controller.rb @@ -1,15 +1,13 @@ # frozen_string_literal: true class Api::BaseController < ApplicationController - DEFAULT_STATUSES_LIMIT = 20 - DEFAULT_ACCOUNTS_LIMIT = 40 + DEFAULT_STATUSES_LIMIT = 20 + DEFAULT_ACCOUNTS_LIMIT = 40 include Api::RateLimitHeaders include Api::AccessTokenTrackingConcern include Api::CachingConcern include Api::ContentSecurityPolicy - include Api::ErrorHandling - include Api::Pagination skip_before_action :require_functional!, unless: :limited_federation_mode? @@ -20,6 +18,51 @@ class Api::BaseController < ApplicationController protect_from_forgery with: :null_session + rescue_from ActiveRecord::RecordInvalid, Mastodon::ValidationError do |e| + render json: { error: e.to_s }, status: 422 + end + + rescue_from ActiveRecord::RecordNotUnique do + render json: { error: 'Duplicate record' }, status: 422 + end + + rescue_from Date::Error do + render json: { error: 'Invalid date supplied' }, status: 422 + end + + rescue_from ActiveRecord::RecordNotFound do + render json: { error: 'Record not found' }, status: 404 + end + + rescue_from HTTP::Error, Mastodon::UnexpectedResponseError do + render json: { error: 'Remote data could not be fetched' }, status: 503 + end + + rescue_from OpenSSL::SSL::SSLError do + render json: { error: 'Remote SSL certificate could not be verified' }, status: 503 + end + + rescue_from Mastodon::NotPermittedError do + render json: { error: 'This action is not allowed' }, status: 403 + end + + rescue_from Seahorse::Client::NetworkingError do |e| + Rails.logger.warn "Storage server error: #{e}" + render json: { error: 'There was a temporary problem serving your request, please try again' }, status: 503 + end + + rescue_from Mastodon::RaceConditionError, Stoplight::Error::RedLight do + render json: { error: 'There was a temporary problem serving your request, please try again' }, status: 503 + end + + rescue_from Mastodon::RateLimitExceededError do + render json: { error: I18n.t('errors.429') }, status: 429 + end + + rescue_from ActionController::ParameterMissing, Mastodon::InvalidParameterError do |e| + render json: { error: e.to_s }, status: 400 + end + def doorkeeper_unauthorized_render_options(error: nil) { json: { error: error.try(:description) || 'Not authorized' } } end @@ -30,6 +73,13 @@ class Api::BaseController < ApplicationController protected + def set_pagination_headers(next_path = nil, prev_path = nil) + links = [] + links << [next_path, [%w(rel next)]] if next_path + links << [prev_path, [%w(rel prev)]] if prev_path + response.headers['Link'] = LinkHeader.new(links) unless links.empty? + end + def limit_param(default_limit) return default_limit unless params[:limit] @@ -58,6 +108,10 @@ class Api::BaseController < ApplicationController render json: { error: 'Your login is currently disabled' }, status: 403 if current_user&.account&.unavailable? end + def require_valid_pagination_options! + render json: { error: 'Pagination values for `offset` and `limit` must be positive' }, status: 400 if pagination_options_invalid? + end + def require_user! if !current_user render json: { error: 'This method requires an authenticated user' }, status: 422 @@ -86,6 +140,10 @@ class Api::BaseController < ApplicationController private + def pagination_options_invalid? + params.slice(:limit, :offset).values.map(&:to_i).any?(&:negative?) + end + def respond_with_error(code) render json: { error: Rack::Utils::HTTP_STATUS_CODES[code] }, status: code end diff --git a/app/controllers/api/v1/accounts/antennas_controller.rb b/app/controllers/api/v1/accounts/antennas_controller.rb deleted file mode 100644 index 957a4fb555..0000000000 --- a/app/controllers/api/v1/accounts/antennas_controller.rb +++ /dev/null @@ -1,18 +0,0 @@ -# frozen_string_literal: true - -class Api::V1::Accounts::AntennasController < Api::BaseController - before_action -> { doorkeeper_authorize! :read, :'read:lists' } - before_action :require_user! - before_action :set_account - - def index - @antennas = @account.suspended? ? [] : @account.joined_antennas.where(account: current_account) - render json: @antennas, each_serializer: REST::AntennaSerializer - end - - private - - def set_account - @account = Account.find(params[:account_id]) - end -end diff --git a/app/controllers/api/v1/accounts/circles_controller.rb b/app/controllers/api/v1/accounts/circles_controller.rb deleted file mode 100644 index 1b21eb7ce4..0000000000 --- a/app/controllers/api/v1/accounts/circles_controller.rb +++ /dev/null @@ -1,18 +0,0 @@ -# frozen_string_literal: true - -class Api::V1::Accounts::CirclesController < Api::BaseController - before_action -> { doorkeeper_authorize! :read, :'read:lists' } - before_action :require_user! - before_action :set_account - - def index - @circles = @account.suspended? ? [] : @account.joined_circles.where(account: current_account) - render json: @circles, each_serializer: REST::CircleSerializer - end - - private - - def set_account - @account = Account.find(params[:account_id]) - end -end diff --git a/app/controllers/api/v1/accounts/credentials_controller.rb b/app/controllers/api/v1/accounts/credentials_controller.rb index daa7f87364..8f31336b9f 100644 --- a/app/controllers/api/v1/accounts/credentials_controller.rb +++ b/app/controllers/api/v1/accounts/credentials_controller.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true class Api::V1::Accounts::CredentialsController < Api::BaseController - before_action -> { doorkeeper_authorize! :read, :'read:accounts', :'read:me' }, except: [:update] + before_action -> { doorkeeper_authorize! :read, :'read:accounts' }, except: [:update] before_action -> { doorkeeper_authorize! :write, :'write:accounts' }, only: [:update] before_action :require_user! @@ -31,8 +31,6 @@ class Api::V1::Accounts::CredentialsController < Api::BaseController :locked, :bot, :discoverable, - :searchability, - :dissubscribable, :hide_collections, :indexable, fields_attributes: [:name, :value] @@ -47,7 +45,6 @@ class Api::V1::Accounts::CredentialsController < Api::BaseController { settings_attributes: { default_privacy: source_params.fetch(:privacy, @account.user.setting_default_privacy), - default_searchability: source_params.fetch(:searchability, @account.user.setting_default_searchability), default_sensitive: source_params.fetch(:sensitive, @account.user.setting_default_sensitive), default_language: source_params.fetch(:language, @account.user.setting_default_language), }, diff --git a/app/controllers/api/v1/accounts/exclude_antennas_controller.rb b/app/controllers/api/v1/accounts/exclude_antennas_controller.rb deleted file mode 100644 index c1f5c5981c..0000000000 --- a/app/controllers/api/v1/accounts/exclude_antennas_controller.rb +++ /dev/null @@ -1,18 +0,0 @@ -# frozen_string_literal: true - -class Api::V1::Accounts::ExcludeAntennasController < Api::BaseController - before_action -> { doorkeeper_authorize! :read, :'read:lists' } - before_action :require_user! - before_action :set_account - - def index - @antennas = @account.suspended? ? [] : current_account.antennas.where('exclude_accounts @> \'[?]\'', @account.id) - render json: @antennas, each_serializer: REST::AntennaSerializer - end - - private - - def set_account - @account = Account.find(params[:account_id]) - end -end diff --git a/app/controllers/api/v1/accounts/follower_accounts_controller.rb b/app/controllers/api/v1/accounts/follower_accounts_controller.rb index 449866fa55..21b1095f18 100644 --- a/app/controllers/api/v1/accounts/follower_accounts_controller.rb +++ b/app/controllers/api/v1/accounts/follower_accounts_controller.rb @@ -21,7 +21,7 @@ class Api::V1::Accounts::FollowerAccountsController < Api::BaseController return [] if hide_results? scope = default_accounts - scope = scope.not_excluded_by_account(current_account) unless current_account.nil? || current_account.id == @account.id + scope = scope.where.not(id: current_account.excluded_from_timeline_account_ids) unless current_account.nil? || current_account.id == @account.id scope.merge(paginated_follows).to_a end @@ -30,7 +30,7 @@ class Api::V1::Accounts::FollowerAccountsController < Api::BaseController end def default_accounts - Account.includes(:active_relationships, :account_stat, :user).references(:active_relationships) + Account.includes(:active_relationships, :account_stat).references(:active_relationships) end def paginated_follows @@ -41,6 +41,10 @@ class Api::V1::Accounts::FollowerAccountsController < Api::BaseController ) end + def insert_pagination_headers + set_pagination_headers(next_path, prev_path) + end + def next_path api_v1_account_followers_url pagination_params(max_id: pagination_max_id) if records_continue? end diff --git a/app/controllers/api/v1/accounts/following_accounts_controller.rb b/app/controllers/api/v1/accounts/following_accounts_controller.rb index c4f4313f8f..1db521f79c 100644 --- a/app/controllers/api/v1/accounts/following_accounts_controller.rb +++ b/app/controllers/api/v1/accounts/following_accounts_controller.rb @@ -21,7 +21,7 @@ class Api::V1::Accounts::FollowingAccountsController < Api::BaseController return [] if hide_results? scope = default_accounts - scope = scope.not_excluded_by_account(current_account) unless current_account.nil? || current_account.id == @account.id + scope = scope.where.not(id: current_account.excluded_from_timeline_account_ids) unless current_account.nil? || current_account.id == @account.id scope.merge(paginated_follows).to_a end @@ -30,7 +30,7 @@ class Api::V1::Accounts::FollowingAccountsController < Api::BaseController end def default_accounts - Account.includes(:passive_relationships, :account_stat, :user).references(:passive_relationships) + Account.includes(:passive_relationships, :account_stat).references(:passive_relationships) end def paginated_follows @@ -41,6 +41,10 @@ class Api::V1::Accounts::FollowingAccountsController < Api::BaseController ) end + def insert_pagination_headers + set_pagination_headers(next_path, prev_path) + end + def next_path api_v1_account_following_index_url pagination_params(max_id: pagination_max_id) if records_continue? end diff --git a/app/controllers/api/v1/accounts/search_controller.rb b/app/controllers/api/v1/accounts/search_controller.rb index 0ac7858e16..3061fcb7e7 100644 --- a/app/controllers/api/v1/accounts/search_controller.rb +++ b/app/controllers/api/v1/accounts/search_controller.rb @@ -18,7 +18,6 @@ class Api::V1::Accounts::SearchController < Api::BaseController limit: limit_param(DEFAULT_ACCOUNTS_LIMIT), resolve: truthy_param?(:resolve), following: truthy_param?(:following), - follower: truthy_param?(:follower), offset: params[:offset] ) end diff --git a/app/controllers/api/v1/accounts/statuses_controller.rb b/app/controllers/api/v1/accounts/statuses_controller.rb index 6213f6f9e1..fe4279302f 100644 --- a/app/controllers/api/v1/accounts/statuses_controller.rb +++ b/app/controllers/api/v1/accounts/statuses_controller.rb @@ -4,14 +4,12 @@ class Api::V1::Accounts::StatusesController < Api::BaseController before_action -> { authorize_if_got_token! :read, :'read:statuses' } before_action :set_account - after_action :insert_pagination_headers + after_action :insert_pagination_headers, unless: -> { truthy_param?(:pinned) } def index cache_if_unauthenticated! @statuses = load_statuses - render json: @statuses, each_serializer: REST::StatusSerializer, - relationships: StatusRelationshipsPresenter.new(@statuses, current_user&.account_id), - emoji_reaction_permitted_account_ids: EmojiReactionAccountsPresenter.new(@statuses, current_user&.account_id) + render json: @statuses, each_serializer: REST::StatusSerializer, relationships: StatusRelationshipsPresenter.new(@statuses, current_user&.account_id) end private @@ -21,11 +19,11 @@ class Api::V1::Accounts::StatusesController < Api::BaseController end def load_statuses - @account.unavailable? ? [] : preloaded_account_statuses + @account.unavailable? ? [] : cached_account_statuses end - def preloaded_account_statuses - preload_collection_paginated_by_id( + def cached_account_statuses + cache_collection_paginated_by_id( AccountStatusesFilter.new(@account, current_account, params).results, Status, limit_param(DEFAULT_STATUSES_LIMIT), @@ -37,6 +35,10 @@ class Api::V1::Accounts::StatusesController < Api::BaseController params.slice(:limit, *AccountStatusesFilter::KEYS).permit(:limit, *AccountStatusesFilter::KEYS).merge(core_params) end + def insert_pagination_headers + set_pagination_headers(next_path, prev_path) + end + def next_path api_v1_account_statuses_url pagination_params(max_id: pagination_max_id) if records_continue? end @@ -49,7 +51,11 @@ class Api::V1::Accounts::StatusesController < Api::BaseController @statuses.size == limit_param(DEFAULT_STATUSES_LIMIT) end - def pagination_collection - @statuses + def pagination_max_id + @statuses.last.id + end + + def pagination_since_id + @statuses.first.id end end diff --git a/app/controllers/api/v1/accounts_controller.rb b/app/controllers/api/v1/accounts_controller.rb index 881aec13e2..23fc85b475 100644 --- a/app/controllers/api/v1/accounts_controller.rb +++ b/app/controllers/api/v1/accounts_controller.rb @@ -9,22 +9,16 @@ class Api::V1::AccountsController < Api::BaseController before_action -> { doorkeeper_authorize! :follow, :write, :'write:blocks' }, only: [:block, :unblock] before_action -> { doorkeeper_authorize! :write, :'write:accounts' }, only: [:create] - before_action :require_user!, except: [:index, :show, :create] - before_action :set_account, except: [:index, :create] - before_action :set_accounts, only: [:index] - before_action :check_account_approval, except: [:index, :create] - before_action :check_account_confirmation, except: [:index, :create] + before_action :require_user!, except: [:show, :create] + before_action :set_account, except: [:create] + before_action :check_account_approval, except: [:create] + before_action :check_account_confirmation, except: [:create] before_action :check_enabled_registrations, only: [:create] - before_action :check_accounts_limit, only: [:index] skip_before_action :require_authenticated_user!, only: :create override_rate_limit_headers :follow, family: :follows - def index - render json: @accounts, each_serializer: REST::AccountSerializer - end - def show cache_if_unauthenticated! render json: @account, serializer: REST::AccountSerializer @@ -44,12 +38,7 @@ class Api::V1::AccountsController < Api::BaseController def follow follow = FollowService.new.call(current_user.account, @account, reblogs: params.key?(:reblogs) ? truthy_param?(:reblogs) : nil, notify: params.key?(:notify) ? truthy_param?(:notify) : nil, languages: params.key?(:languages) ? params[:languages] : nil, with_rate_limit: true) - options = if @account.locked? || current_user.account.silenced? || (current_user.account.bot? && @account.user&.setting_lock_follow_from_bot) - {} - else - { following_map: { @account.id => { reblogs: follow.show_reblogs?, notify: follow.notify?, languages: follow.languages } }, - requested_map: { @account.id => false } } - end + options = @account.locked? || current_user.account.silenced? ? {} : { following_map: { @account.id => { reblogs: follow.show_reblogs?, notify: follow.notify?, languages: follow.languages } }, requested_map: { @account.id => false } } render json: @account, serializer: REST::RelationshipSerializer, relationships: relationships(**options) end @@ -90,10 +79,6 @@ class Api::V1::AccountsController < Api::BaseController @account = Account.find(params[:id]) end - def set_accounts - @accounts = Account.where(id: account_ids).without_unapproved - end - def check_account_approval raise(ActiveRecord::RecordNotFound) if @account.local? && @account.user_pending? end @@ -102,22 +87,10 @@ class Api::V1::AccountsController < Api::BaseController raise(ActiveRecord::RecordNotFound) if @account.local? && !@account.user_confirmed? end - def check_accounts_limit - raise(Mastodon::ValidationError) if account_ids.size > DEFAULT_ACCOUNTS_LIMIT - end - def relationships(**options) AccountRelationshipsPresenter.new([@account], current_user.account_id, **options) end - def account_ids - Array(accounts_params[:ids]).uniq.map(&:to_i) - end - - def accounts_params - params.permit(ids: []) - end - def account_params params.permit(:username, :email, :password, :agreement, :locale, :reason, :time_zone, :invite_code) end diff --git a/app/controllers/api/v1/admin/accounts_controller.rb b/app/controllers/api/v1/admin/accounts_controller.rb index ff6f41e01d..ff9cae6398 100644 --- a/app/controllers/api/v1/admin/accounts_controller.rb +++ b/app/controllers/api/v1/admin/accounts_controller.rb @@ -125,6 +125,10 @@ class Api::V1::Admin::AccountsController < Api::BaseController translated_params end + def insert_pagination_headers + set_pagination_headers(next_path, prev_path) + end + def next_path api_v1_admin_accounts_url(pagination_params(max_id: pagination_max_id)) if records_continue? end @@ -133,8 +137,12 @@ class Api::V1::Admin::AccountsController < Api::BaseController api_v1_admin_accounts_url(pagination_params(min_id: pagination_since_id)) unless @accounts.empty? end - def pagination_collection - @accounts + def pagination_max_id + @accounts.last.id + end + + def pagination_since_id + @accounts.first.id end def records_continue? diff --git a/app/controllers/api/v1/admin/canonical_email_blocks_controller.rb b/app/controllers/api/v1/admin/canonical_email_blocks_controller.rb index 701f668de6..7b192b979f 100644 --- a/app/controllers/api/v1/admin/canonical_email_blocks_controller.rb +++ b/app/controllers/api/v1/admin/canonical_email_blocks_controller.rb @@ -65,6 +65,10 @@ class Api::V1::Admin::CanonicalEmailBlocksController < Api::BaseController @canonical_email_block = CanonicalEmailBlock.find(params[:id]) end + def insert_pagination_headers + set_pagination_headers(next_path, prev_path) + end + def next_path api_v1_admin_canonical_email_blocks_url(pagination_params(max_id: pagination_max_id)) if records_continue? end @@ -73,8 +77,12 @@ class Api::V1::Admin::CanonicalEmailBlocksController < Api::BaseController api_v1_admin_canonical_email_blocks_url(pagination_params(min_id: pagination_since_id)) unless @canonical_email_blocks.empty? end - def pagination_collection - @canonical_email_blocks + def pagination_max_id + @canonical_email_blocks.last.id + end + + def pagination_since_id + @canonical_email_blocks.first.id end def records_continue? diff --git a/app/controllers/api/v1/admin/domain_allows_controller.rb b/app/controllers/api/v1/admin/domain_allows_controller.rb index a7ae84e306..dd54d67106 100644 --- a/app/controllers/api/v1/admin/domain_allows_controller.rb +++ b/app/controllers/api/v1/admin/domain_allows_controller.rb @@ -61,6 +61,10 @@ class Api::V1::Admin::DomainAllowsController < Api::BaseController DomainAllow.all end + def insert_pagination_headers + set_pagination_headers(next_path, prev_path) + end + def next_path api_v1_admin_domain_allows_url(pagination_params(max_id: pagination_max_id)) if records_continue? end @@ -69,8 +73,12 @@ class Api::V1::Admin::DomainAllowsController < Api::BaseController api_v1_admin_domain_allows_url(pagination_params(min_id: pagination_since_id)) unless @domain_allows.empty? end - def pagination_collection - @domain_allows + def pagination_max_id + @domain_allows.last.id + end + + def pagination_since_id + @domain_allows.first.id end def records_continue? diff --git a/app/controllers/api/v1/admin/domain_blocks_controller.rb b/app/controllers/api/v1/admin/domain_blocks_controller.rb index e225de1f2f..2538c7c7c2 100644 --- a/app/controllers/api/v1/admin/domain_blocks_controller.rb +++ b/app/controllers/api/v1/admin/domain_blocks_controller.rb @@ -29,11 +29,10 @@ class Api::V1::Admin::DomainBlocksController < Api::BaseController def create authorize :domain_block, :create? - @domain_block = DomainBlock.new(resource_params) existing_domain_block = resource_params[:domain].present? ? DomainBlock.rule_for(resource_params[:domain]) : nil - return render json: existing_domain_block, serializer: REST::Admin::ExistingDomainBlockErrorSerializer, status: 422 if conflicts_with_existing_block?(@domain_block, existing_domain_block) + return render json: existing_domain_block, serializer: REST::Admin::ExistingDomainBlockErrorSerializer, status: 422 if existing_domain_block.present? - @domain_block.save! + @domain_block = DomainBlock.create!(resource_params) DomainBlockWorker.perform_async(@domain_block.id) log_action :create, @domain_block render json: @domain_block, serializer: REST::Admin::DomainBlockSerializer @@ -56,10 +55,6 @@ class Api::V1::Admin::DomainBlocksController < Api::BaseController private - def conflicts_with_existing_block?(domain_block, existing_domain_block) - existing_domain_block.present? && (existing_domain_block.domain == TagManager.instance.normalize_domain(domain_block.domain) || !domain_block.stricter_than?(existing_domain_block)) - end - def set_domain_blocks @domain_blocks = filtered_domain_blocks.order(id: :desc).to_a_paginated_by_id(limit_param(LIMIT), params_slice(:max_id, :since_id, :min_id)) end @@ -74,8 +69,11 @@ class Api::V1::Admin::DomainBlocksController < Api::BaseController end def domain_block_params - params.permit(:severity, :reject_media, :reject_favourite, :reject_reply_exclude_followers, :reject_reports, :reject_send_sensitive, :reject_hashtag, :reject_straight_follow, - :reject_new_follow, :reject_friend, :block_trends, :detect_invalid_subscription, :private_comment, :public_comment, :obfuscate, :hidden) + params.permit(:severity, :reject_media, :reject_reports, :private_comment, :public_comment, :obfuscate) + end + + def insert_pagination_headers + set_pagination_headers(next_path, prev_path) end def next_path @@ -86,8 +84,12 @@ class Api::V1::Admin::DomainBlocksController < Api::BaseController api_v1_admin_domain_blocks_url(pagination_params(min_id: pagination_since_id)) unless @domain_blocks.empty? end - def pagination_collection - @domain_blocks + def pagination_max_id + @domain_blocks.last.id + end + + def pagination_since_id + @domain_blocks.first.id end def records_continue? @@ -99,7 +101,6 @@ class Api::V1::Admin::DomainBlocksController < Api::BaseController end def resource_params - params.permit(:domain, :severity, :reject_media, :reject_favourite, :reject_reply_exclude_followers, :reject_send_sensitive, :reject_hashtag, :reject_straight_follow, - :reject_new_follow, :reject_friend, :block_trends, :detect_invalid_subscription, :reject_reports, :private_comment, :public_comment, :obfuscate, :hidden) + params.permit(:domain, :severity, :reject_media, :reject_reports, :private_comment, :public_comment, :obfuscate) end end diff --git a/app/controllers/api/v1/admin/email_domain_blocks_controller.rb b/app/controllers/api/v1/admin/email_domain_blocks_controller.rb index bdedb9d040..df54b9f0a4 100644 --- a/app/controllers/api/v1/admin/email_domain_blocks_controller.rb +++ b/app/controllers/api/v1/admin/email_domain_blocks_controller.rb @@ -58,6 +58,10 @@ class Api::V1::Admin::EmailDomainBlocksController < Api::BaseController params.permit(:domain, :allow_with_approval) end + def insert_pagination_headers + set_pagination_headers(next_path, prev_path) + end + def next_path api_v1_admin_email_domain_blocks_url(pagination_params(max_id: pagination_max_id)) if records_continue? end @@ -66,8 +70,12 @@ class Api::V1::Admin::EmailDomainBlocksController < Api::BaseController api_v1_admin_email_domain_blocks_url(pagination_params(min_id: pagination_since_id)) unless @email_domain_blocks.empty? end - def pagination_collection - @email_domain_blocks + def pagination_max_id + @email_domain_blocks.last.id + end + + def pagination_since_id + @email_domain_blocks.first.id end def records_continue? diff --git a/app/controllers/api/v1/admin/ip_blocks_controller.rb b/app/controllers/api/v1/admin/ip_blocks_controller.rb index 3625781149..61c1912344 100644 --- a/app/controllers/api/v1/admin/ip_blocks_controller.rb +++ b/app/controllers/api/v1/admin/ip_blocks_controller.rb @@ -63,6 +63,10 @@ class Api::V1::Admin::IpBlocksController < Api::BaseController params.permit(:ip, :severity, :comment, :expires_in) end + def insert_pagination_headers + set_pagination_headers(next_path, prev_path) + end + def next_path api_v1_admin_ip_blocks_url(pagination_params(max_id: pagination_max_id)) if records_continue? end @@ -71,8 +75,12 @@ class Api::V1::Admin::IpBlocksController < Api::BaseController api_v1_admin_ip_blocks_url(pagination_params(min_id: pagination_since_id)) unless @ip_blocks.empty? end - def pagination_collection - @ip_blocks + def pagination_max_id + @ip_blocks.last.id + end + + def pagination_since_id + @ip_blocks.first.id end def records_continue? diff --git a/app/controllers/api/v1/admin/reports_controller.rb b/app/controllers/api/v1/admin/reports_controller.rb index 9b5beeab67..9dfb181a28 100644 --- a/app/controllers/api/v1/admin/reports_controller.rb +++ b/app/controllers/api/v1/admin/reports_controller.rb @@ -35,7 +35,6 @@ class Api::V1::Admin::ReportsController < Api::BaseController def update authorize @report, :update? @report.update!(report_params) - log_action :update, @report render json: @report, serializer: REST::Admin::ReportSerializer end @@ -89,6 +88,10 @@ class Api::V1::Admin::ReportsController < Api::BaseController params.permit(*FILTER_PARAMS) end + def insert_pagination_headers + set_pagination_headers(next_path, prev_path) + end + def next_path api_v1_admin_reports_url(pagination_params(max_id: pagination_max_id)) if records_continue? end @@ -97,8 +100,12 @@ class Api::V1::Admin::ReportsController < Api::BaseController api_v1_admin_reports_url(pagination_params(min_id: pagination_since_id)) unless @reports.empty? end - def pagination_collection - @reports + def pagination_max_id + @reports.last.id + end + + def pagination_since_id + @reports.first.id end def records_continue? diff --git a/app/controllers/api/v1/admin/tags_controller.rb b/app/controllers/api/v1/admin/tags_controller.rb index c754980720..6a7c9f5bf3 100644 --- a/app/controllers/api/v1/admin/tags_controller.rb +++ b/app/controllers/api/v1/admin/tags_controller.rb @@ -44,6 +44,10 @@ class Api::V1::Admin::TagsController < Api::BaseController params.permit(:display_name, :trendable, :usable, :listable) end + def insert_pagination_headers + set_pagination_headers(next_path, prev_path) + end + def next_path api_v1_admin_tags_url(pagination_params(max_id: pagination_max_id)) if records_continue? end @@ -52,8 +56,12 @@ class Api::V1::Admin::TagsController < Api::BaseController api_v1_admin_tags_url(pagination_params(min_id: pagination_since_id)) unless @tags.empty? end - def pagination_collection - @tags + def pagination_max_id + @tags.last.id + end + + def pagination_since_id + @tags.first.id end def records_continue? diff --git a/app/controllers/api/v1/admin/trends/links/preview_card_providers_controller.rb b/app/controllers/api/v1/admin/trends/links/preview_card_providers_controller.rb index 8bb5e22716..5d9fcc82c0 100644 --- a/app/controllers/api/v1/admin/trends/links/preview_card_providers_controller.rb +++ b/app/controllers/api/v1/admin/trends/links/preview_card_providers_controller.rb @@ -42,6 +42,10 @@ class Api::V1::Admin::Trends::Links::PreviewCardProvidersController < Api::BaseC @providers = PreviewCardProvider.all.to_a_paginated_by_id(limit_param(LIMIT), params_slice(:max_id, :since_id, :min_id)) end + def insert_pagination_headers + set_pagination_headers(next_path, prev_path) + end + def next_path api_v1_admin_trends_links_preview_card_providers_url(pagination_params(max_id: pagination_max_id)) if records_continue? end @@ -50,8 +54,12 @@ class Api::V1::Admin::Trends::Links::PreviewCardProvidersController < Api::BaseC api_v1_admin_trends_links_preview_card_providers_url(pagination_params(min_id: pagination_since_id)) unless @providers.empty? end - def pagination_collection - @providers + def pagination_max_id + @providers.last.id + end + + def pagination_since_id + @providers.first.id end def records_continue? diff --git a/app/controllers/api/v1/annual_reports_controller.rb b/app/controllers/api/v1/annual_reports_controller.rb deleted file mode 100644 index 9bc8e68ac2..0000000000 --- a/app/controllers/api/v1/annual_reports_controller.rb +++ /dev/null @@ -1,30 +0,0 @@ -# frozen_string_literal: true - -class Api::V1::AnnualReportsController < Api::BaseController - before_action -> { doorkeeper_authorize! :read, :'read:accounts' }, only: :index - before_action -> { doorkeeper_authorize! :write, :'write:accounts' }, except: :index - before_action :require_user! - before_action :set_annual_report, except: :index - - def index - with_read_replica do - @presenter = AnnualReportsPresenter.new(GeneratedAnnualReport.where(account_id: current_account.id).pending) - @relationships = StatusRelationshipsPresenter.new(@presenter.statuses, current_account.id) - end - - render json: @presenter, - serializer: REST::AnnualReportsSerializer, - relationships: @relationships - end - - def read - @annual_report.view! - render_empty - end - - private - - def set_annual_report - @annual_report = GeneratedAnnualReport.find_by!(account_id: current_account.id, year: params[:id]) - end -end diff --git a/app/controllers/api/v1/antennas/accounts_controller.rb b/app/controllers/api/v1/antennas/accounts_controller.rb deleted file mode 100644 index c50cbcdf3f..0000000000 --- a/app/controllers/api/v1/antennas/accounts_controller.rb +++ /dev/null @@ -1,95 +0,0 @@ -# frozen_string_literal: true - -class Api::V1::Antennas::AccountsController < Api::BaseController - before_action -> { doorkeeper_authorize! :read, :'read:lists' }, only: [:show] - before_action -> { doorkeeper_authorize! :write, :'write:lists' }, except: [:show] - - before_action :require_user! - before_action :set_antenna - - after_action :insert_pagination_headers, only: :show - - def show - @accounts = load_accounts - render json: @accounts, each_serializer: REST::AccountSerializer - end - - def create - ApplicationRecord.transaction do - antenna_accounts.each do |account| - @antenna.antenna_accounts.create!(account: account, exclude: false) - @antenna.update!(any_accounts: false) if @antenna.any_accounts - end - end - - render_empty - end - - def destroy - AntennaAccount.where(antenna: @antenna, account_id: account_ids).destroy_all - @antenna.update!(any_accounts: true) unless @antenna.antenna_accounts.where(exclude: false).any? - render_empty - end - - private - - def set_antenna - @antenna = Antenna.where(account: current_account).find(params[:antenna_id]) - end - - def load_accounts - if unlimited? - @antenna.accounts.without_suspended.includes(:account_stat).all - else - @antenna.accounts.without_suspended.includes(:account_stat).paginate_by_max_id(limit_param(DEFAULT_ACCOUNTS_LIMIT), params[:max_id], params[:since_id]) - end - end - - def antenna_accounts - Account.find(account_ids) - end - - def account_ids - Array(resource_params[:account_ids]) - end - - def resource_params - params.permit(account_ids: []) - end - - def insert_pagination_headers - set_pagination_headers(next_path, prev_path) - end - - def next_path - return if unlimited? - - api_v1_list_accounts_url pagination_params(max_id: pagination_max_id) if records_continue? - end - - def prev_path - return if unlimited? - - api_v1_list_accounts_url pagination_params(since_id: pagination_since_id) unless @accounts.empty? - end - - def pagination_max_id - @accounts.last.id - end - - def pagination_since_id - @accounts.first.id - end - - def records_continue? - @accounts.size == limit_param(DEFAULT_ACCOUNTS_LIMIT) - end - - def pagination_params(core_params) - params.slice(:limit).permit(:limit).merge(core_params) - end - - def unlimited? - params[:limit] == '0' - end -end diff --git a/app/controllers/api/v1/antennas/domains_controller.rb b/app/controllers/api/v1/antennas/domains_controller.rb deleted file mode 100644 index 554b8d613c..0000000000 --- a/app/controllers/api/v1/antennas/domains_controller.rb +++ /dev/null @@ -1,54 +0,0 @@ -# frozen_string_literal: true - -class Api::V1::Antennas::DomainsController < Api::BaseController - before_action -> { doorkeeper_authorize! :read, :'read:lists' }, only: [:show] - before_action -> { doorkeeper_authorize! :write, :'write:lists' }, except: [:show] - - before_action :require_user! - before_action :set_antenna - - def show - @domains = load_domains - @exclude_domains = load_exclude_domains - render json: { domains: @domains, exclude_domains: @exclude_domains } - end - - def create - ApplicationRecord.transaction do - domains.each do |domain| - @antenna.antenna_domains.create!(name: domain, exclude: false) - @antenna.update!(any_domains: false) if @antenna.any_domains - end - end - - render_empty - end - - def destroy - AntennaDomain.where(antenna: @antenna, name: domains).destroy_all - @antenna.update!(any_domains: true) unless @antenna.antenna_domains.where(exclude: false).any? - render_empty - end - - private - - def set_antenna - @antenna = Antenna.where(account: current_account).find(params[:antenna_id]) - end - - def load_domains - @antenna.antenna_domains.pluck(:name) - end - - def load_exclude_domains - @antenna.exclude_domains || [] - end - - def domains - Array(resource_params[:domains]) - end - - def resource_params - params.permit(domains: []) - end -end diff --git a/app/controllers/api/v1/antennas/exclude_accounts_controller.rb b/app/controllers/api/v1/antennas/exclude_accounts_controller.rb deleted file mode 100644 index cdb9173c11..0000000000 --- a/app/controllers/api/v1/antennas/exclude_accounts_controller.rb +++ /dev/null @@ -1,104 +0,0 @@ -# frozen_string_literal: true - -class Api::V1::Antennas::ExcludeAccountsController < Api::BaseController - before_action -> { doorkeeper_authorize! :read, :'read:lists' }, only: [:show] - before_action -> { doorkeeper_authorize! :write, :'write:lists' }, except: [:show] - - before_action :require_user! - before_action :set_antenna - - after_action :insert_pagination_headers, only: :show - - def show - @accounts = load_accounts - render json: @accounts, each_serializer: REST::AccountSerializer - end - - def create - new_accounts = @antenna.exclude_accounts || [] - antenna_accounts.each do |account| - raise Mastodon::ValidationError, I18n.t('antennas.errors.duplicate_account') if new_accounts.include?(account.id) - - new_accounts << account.id - end - - raise Mastodon::ValidationError, I18n.t('antennas.errors.limit.accounts') if new_accounts.size > Antenna::ACCOUNTS_PER_ANTENNA_LIMIT - - @antenna.update!(exclude_accounts: new_accounts) - - render_empty - end - - def destroy - new_accounts = @antenna.exclude_accounts || [] - new_accounts -= antenna_accounts.pluck(:id) - - @antenna.update!(exclude_accounts: new_accounts) - - render_empty - end - - private - - def set_antenna - @antenna = Antenna.where(account: current_account).find(params[:antenna_id]) - end - - def load_accounts - return [] if @antenna.exclude_accounts.nil? - - if unlimited? - Account.where(id: @antenna.exclude_accounts).without_suspended.includes(:account_stat).all - else - Account.where(id: @antenna.exclude_accounts).without_suspended.includes(:account_stat).paginate_by_max_id(limit_param(DEFAULT_ACCOUNTS_LIMIT), params[:max_id], params[:since_id]) - end - end - - def antenna_accounts - Account.find(account_ids) - end - - def account_ids - Array(resource_params[:account_ids]) - end - - def resource_params - params.permit(account_ids: []) - end - - def insert_pagination_headers - set_pagination_headers(next_path, prev_path) - end - - def next_path - return if unlimited? - - api_v1_list_accounts_url pagination_params(max_id: pagination_max_id) if records_continue? - end - - def prev_path - return if unlimited? - - api_v1_list_accounts_url pagination_params(since_id: pagination_since_id) unless @accounts.empty? - end - - def pagination_max_id - @accounts.last.id - end - - def pagination_since_id - @accounts.first.id - end - - def records_continue? - @accounts.size == limit_param(DEFAULT_ACCOUNTS_LIMIT) - end - - def pagination_params(core_params) - params.slice(:limit).permit(:limit).merge(core_params) - end - - def unlimited? - params[:limit] == '0' - end -end diff --git a/app/controllers/api/v1/antennas/exclude_domains_controller.rb b/app/controllers/api/v1/antennas/exclude_domains_controller.rb deleted file mode 100644 index 235a44d593..0000000000 --- a/app/controllers/api/v1/antennas/exclude_domains_controller.rb +++ /dev/null @@ -1,46 +0,0 @@ -# frozen_string_literal: true - -class Api::V1::Antennas::ExcludeDomainsController < Api::BaseController - before_action -> { doorkeeper_authorize! :write, :'write:lists' } - - before_action :require_user! - before_action :set_antenna - - def create - new_domains = @antenna.exclude_domains || [] - domains.each do |domain| - raise Mastodon::ValidationError, I18n.t('antennas.errors.duplicate_domain') if new_domains.include?(domain) - - new_domains << domain - end - - raise Mastodon::ValidationError, I18n.t('antennas.errors.limit.domains') if new_domains.size > Antenna::KEYWORDS_PER_ANTENNA_LIMIT - - @antenna.update!(exclude_domains: new_domains) - - render_empty - end - - def destroy - new_domains = @antenna.exclude_domains || [] - new_domains -= domains - - @antenna.update!(exclude_domains: new_domains) - - render_empty - end - - private - - def set_antenna - @antenna = Antenna.where(account: current_account).find(params[:antenna_id]) - end - - def domains - Array(resource_params[:domains]) - end - - def resource_params - params.permit(domains: []) - end -end diff --git a/app/controllers/api/v1/antennas/exclude_keywords_controller.rb b/app/controllers/api/v1/antennas/exclude_keywords_controller.rb deleted file mode 100644 index 171dac5f80..0000000000 --- a/app/controllers/api/v1/antennas/exclude_keywords_controller.rb +++ /dev/null @@ -1,46 +0,0 @@ -# frozen_string_literal: true - -class Api::V1::Antennas::ExcludeKeywordsController < Api::BaseController - before_action -> { doorkeeper_authorize! :write, :'write:lists' } - - before_action :require_user! - before_action :set_antenna - - def create - new_keywords = @antenna.exclude_keywords || [] - keywords.each do |keyword| - raise Mastodon::ValidationError, I18n.t('antennas.errors.duplicate_keyword') if new_keywords.include?(keyword) - - new_keywords << keyword - end - - raise Mastodon::ValidationError, I18n.t('antennas.errors.limit.keywords') if new_keywords.size > Antenna::KEYWORDS_PER_ANTENNA_LIMIT - - @antenna.update!(exclude_keywords: new_keywords) - - render_empty - end - - def destroy - new_keywords = @antenna.exclude_keywords || [] - new_keywords -= keywords - - @antenna.update!(exclude_keywords: new_keywords) - - render_empty - end - - private - - def set_antenna - @antenna = Antenna.where(account: current_account).find(params[:antenna_id]) - end - - def keywords - Array(resource_params[:keywords]) - end - - def resource_params - params.permit(keywords: []) - end -end diff --git a/app/controllers/api/v1/antennas/exclude_tags_controller.rb b/app/controllers/api/v1/antennas/exclude_tags_controller.rb deleted file mode 100644 index bf9e087369..0000000000 --- a/app/controllers/api/v1/antennas/exclude_tags_controller.rb +++ /dev/null @@ -1,50 +0,0 @@ -# frozen_string_literal: true - -class Api::V1::Antennas::ExcludeTagsController < Api::BaseController - before_action -> { doorkeeper_authorize! :write, :'write:lists' } - - before_action :require_user! - before_action :set_antenna - - def create - new_tags = @antenna.exclude_tags || [] - tags.map(&:id).each do |tag| - raise Mastodon::ValidationError, I18n.t('antennas.errors.duplicate_tag') if new_tags.include?(tag) - - new_tags << tag - end - - raise Mastodon::ValidationError, I18n.t('antennas.errors.limit.tags') if new_tags.size > Antenna::TAGS_PER_ANTENNA_LIMIT - - @antenna.update!(exclude_tags: new_tags) - - render_empty - end - - def destroy - new_tags = @antenna.exclude_tags || [] - new_tags -= exist_tags.pluck(:id) - - @antenna.update!(exclude_tags: new_tags) - - render_empty - end - - private - - def set_antenna - @antenna = Antenna.where(account: current_account).find(params[:antenna_id]) - end - - def tags - Tag.find_or_create_by_names(Array(resource_params[:tags])) - end - - def exist_tags - Tag.matching_name(Array(resource_params[:tags])) - end - - def resource_params - params.permit(tags: []) - end -end diff --git a/app/controllers/api/v1/antennas/keywords_controller.rb b/app/controllers/api/v1/antennas/keywords_controller.rb deleted file mode 100644 index 5260a66bc0..0000000000 --- a/app/controllers/api/v1/antennas/keywords_controller.rb +++ /dev/null @@ -1,62 +0,0 @@ -# frozen_string_literal: true - -class Api::V1::Antennas::KeywordsController < Api::BaseController - before_action -> { doorkeeper_authorize! :read, :'read:lists' }, only: [:show] - before_action -> { doorkeeper_authorize! :write, :'write:lists' }, except: [:show] - - before_action :require_user! - before_action :set_antenna - - def show - @keywords = load_keywords - @exclude_keywords = load_exclude_keywords - render json: { keywords: @keywords, exclude_keywords: @exclude_keywords } - end - - def create - new_keywords = @antenna.keywords || [] - keywords.each do |keyword| - raise Mastodon::ValidationError, I18n.t('antennas.errors.duplicate_keyword') if new_keywords.include?(keyword) - raise Mastodon::ValidationError, I18n.t('antennas.errors.too_short_keyword') if keyword.length < 2 - - new_keywords << keyword - end - - raise Mastodon::ValidationError, I18n.t('antennas.errors.limit.keywords') if new_keywords.size > Antenna::KEYWORDS_PER_ANTENNA_LIMIT - - @antenna.update!(keywords: new_keywords, any_keywords: new_keywords.empty?) - - render_empty - end - - def destroy - new_keywords = @antenna.keywords || [] - new_keywords -= keywords - - @antenna.update!(keywords: new_keywords, any_keywords: new_keywords.empty?) - - render_empty - end - - private - - def set_antenna - @antenna = Antenna.where(account: current_account).find(params[:antenna_id]) - end - - def load_keywords - @antenna.keywords || [] - end - - def load_exclude_keywords - @antenna.exclude_keywords || [] - end - - def keywords - Array(resource_params[:keywords]) - end - - def resource_params - params.permit(keywords: []) - end -end diff --git a/app/controllers/api/v1/antennas/tags_controller.rb b/app/controllers/api/v1/antennas/tags_controller.rb deleted file mode 100644 index fe0bb6b4eb..0000000000 --- a/app/controllers/api/v1/antennas/tags_controller.rb +++ /dev/null @@ -1,58 +0,0 @@ -# frozen_string_literal: true - -class Api::V1::Antennas::TagsController < Api::BaseController - before_action -> { doorkeeper_authorize! :read, :'read:lists' }, only: [:show] - before_action -> { doorkeeper_authorize! :write, :'write:lists' }, except: [:show] - - before_action :require_user! - before_action :set_antenna - - def show - @tags = load_tags - @exclude_tags = load_exclude_tags - render json: { tags: @tags, exclude_tags: @exclude_tags.pluck(:name) } - end - - def create - ApplicationRecord.transaction do - tags.each do |tag| - @antenna.antenna_tags.create!(tag: tag, exclude: false) - @antenna.update!(any_tags: false) if @antenna.any_tags - end - end - - render_empty - end - - def destroy - AntennaTag.where(antenna: @antenna, tag: exist_tags).destroy_all - @antenna.update!(any_tags: true) unless @antenna.antenna_tags.where(exclude: false).any? - render_empty - end - - private - - def set_antenna - @antenna = Antenna.where(account: current_account).find(params[:antenna_id]) - end - - def load_tags - @antenna.tags.pluck(:name) - end - - def load_exclude_tags - Tag.where(id: @antenna.exclude_tags || []) - end - - def tags - Tag.find_or_create_by_names(Array(resource_params[:tags])) - end - - def exist_tags - Tag.matching_name(Array(resource_params[:tags])) - end - - def resource_params - params.permit(tags: []) - end -end diff --git a/app/controllers/api/v1/antennas_controller.rb b/app/controllers/api/v1/antennas_controller.rb deleted file mode 100644 index 37bfb7f552..0000000000 --- a/app/controllers/api/v1/antennas_controller.rb +++ /dev/null @@ -1,47 +0,0 @@ -# frozen_string_literal: true - -class Api::V1::AntennasController < Api::BaseController - before_action -> { doorkeeper_authorize! :read, :'read:lists' }, only: [:index, :show] - before_action -> { doorkeeper_authorize! :write, :'write:lists' }, except: [:index, :show] - - before_action :require_user! - before_action :set_antenna, except: [:index, :create] - - rescue_from ArgumentError do |e| - render json: { error: e.to_s }, status: 422 - end - - def index - @antennas = Antenna.where(account: current_account).all - render json: @antennas, each_serializer: REST::AntennaSerializer - end - - def show - render json: @antenna, serializer: REST::AntennaSerializer - end - - def create - @antenna = Antenna.create!(antenna_params.merge(account: current_account, list_id: 0)) - render json: @antenna, serializer: REST::AntennaSerializer - end - - def update - @antenna.update!(antenna_params) - render json: @antenna, serializer: REST::AntennaSerializer - end - - def destroy - @antenna.destroy! - render_empty - end - - private - - def set_antenna - @antenna = Antenna.where(account: current_account).find(params[:id]) - end - - def antenna_params - params.permit(:title, :list_id, :insert_feeds, :stl, :ltl, :with_media_only, :ignore_reblog) - end -end diff --git a/app/controllers/api/v1/blocks_controller.rb b/app/controllers/api/v1/blocks_controller.rb index 234ab2e82c..06a8bfa891 100644 --- a/app/controllers/api/v1/blocks_controller.rb +++ b/app/controllers/api/v1/blocks_controller.rb @@ -17,7 +17,7 @@ class Api::V1::BlocksController < Api::BaseController end def paginated_blocks - @paginated_blocks ||= Block.eager_load(target_account: [:account_stat, :user]) + @paginated_blocks ||= Block.eager_load(target_account: :account_stat) .joins(:target_account) .merge(Account.without_suspended) .where(account: current_account) @@ -28,6 +28,10 @@ class Api::V1::BlocksController < Api::BaseController ) end + def insert_pagination_headers + set_pagination_headers(next_path, prev_path) + end + def next_path api_v1_blocks_url pagination_params(max_id: pagination_max_id) if records_continue? end @@ -36,8 +40,12 @@ class Api::V1::BlocksController < Api::BaseController api_v1_blocks_url pagination_params(since_id: pagination_since_id) unless paginated_blocks.empty? end - def pagination_collection - paginated_blocks + def pagination_max_id + paginated_blocks.last.id + end + + def pagination_since_id + paginated_blocks.first.id end def records_continue? diff --git a/app/controllers/api/v1/bookmark_categories/statuses_controller.rb b/app/controllers/api/v1/bookmark_categories/statuses_controller.rb deleted file mode 100644 index a195fce97d..0000000000 --- a/app/controllers/api/v1/bookmark_categories/statuses_controller.rb +++ /dev/null @@ -1,94 +0,0 @@ -# frozen_string_literal: true - -class Api::V1::BookmarkCategories::StatusesController < Api::BaseController - before_action -> { doorkeeper_authorize! :read, :'read:lists' }, only: [:show] - before_action -> { doorkeeper_authorize! :write, :'write:lists' }, except: [:show] - - before_action :require_user! - before_action :set_bookmark_category - - after_action :insert_pagination_headers, only: :show - - def show - @statuses = load_statuses - render json: @statuses, each_serializer: REST::StatusSerializer - end - - def create - ApplicationRecord.transaction do - bookmark_category_statuses.each do |status| - Bookmark.find_or_create_by!(account: current_account, status: status) - @bookmark_category.statuses << status - end - end - - render_empty - end - - def destroy - BookmarkCategoryStatus.where(bookmark_category: @bookmark_category, status_id: status_ids).destroy_all - render_empty - end - - private - - def set_bookmark_category - @bookmark_category = current_account.bookmark_categories.find(params[:bookmark_category_id]) - end - - def load_statuses - if unlimited? - @bookmark_category.statuses.includes(:status_stat).all - else - @bookmark_category.statuses.includes(:status_stat).paginate_by_max_id(limit_param(DEFAULT_STATUSES_LIMIT), params[:max_id], params[:since_id]) - end - end - - def bookmark_category_statuses - Status.find(status_ids) - end - - def status_ids - Array(resource_params[:status_ids]) - end - - def resource_params - params.permit(status_ids: []) - end - - def insert_pagination_headers - set_pagination_headers(next_path, prev_path) - end - - def next_path - return if unlimited? - - api_v1_bookmark_category_statuses_url pagination_params(max_id: pagination_max_id) if records_continue? - end - - def prev_path - return if unlimited? - - api_v1_bookmark_category_statuses_url pagination_params(since_id: pagination_since_id) unless @statuses.empty? - end - - def pagination_max_id - @statuses.last.id - end - - def pagination_since_id - @statuses.first.id - end - - def records_continue? - @statuses.size == limit_param(DEFAULT_STATUSES_LIMIT) - end - - def pagination_params(core_params) - params.slice(:limit).permit(:limit).merge(core_params) - end - - def unlimited? - params[:limit] == '0' - end -end diff --git a/app/controllers/api/v1/bookmark_categories_controller.rb b/app/controllers/api/v1/bookmark_categories_controller.rb deleted file mode 100644 index c32828630d..0000000000 --- a/app/controllers/api/v1/bookmark_categories_controller.rb +++ /dev/null @@ -1,47 +0,0 @@ -# frozen_string_literal: true - -class Api::V1::BookmarkCategoriesController < Api::BaseController - before_action -> { doorkeeper_authorize! :read, :'read:lists' }, only: [:index, :show] - before_action -> { doorkeeper_authorize! :write, :'write:lists' }, except: [:index, :show] - - before_action :require_user! - before_action :set_bookmark_category, except: [:index, :create] - - rescue_from ArgumentError do |e| - render json: { error: e.to_s }, status: 422 - end - - def index - @bookmark_categories = BookmarkCategory.where(account: current_account).all - render json: @bookmark_categories, each_serializer: REST::BookmarkCategorySerializer - end - - def show - render json: @bookmark_category, serializer: REST::BookmarkCategorySerializer - end - - def create - @bookmark_category = BookmarkCategory.create!(bookmark_category_params.merge(account: current_account)) - render json: @bookmark_category, serializer: REST::BookmarkCategorySerializer - end - - def update - @bookmark_category.update!(bookmark_category_params) - render json: @bookmark_category, serializer: REST::BookmarkCategorySerializer - end - - def destroy - @bookmark_category.destroy! - render_empty - end - - private - - def set_bookmark_category - @bookmark_category = BookmarkCategory.where(account: current_account).find(params[:id]) - end - - def bookmark_category_params - params.permit(:title) - end -end diff --git a/app/controllers/api/v1/bookmarks_controller.rb b/app/controllers/api/v1/bookmarks_controller.rb index a2209d812e..498eb16f44 100644 --- a/app/controllers/api/v1/bookmarks_controller.rb +++ b/app/controllers/api/v1/bookmarks_controller.rb @@ -7,19 +7,17 @@ class Api::V1::BookmarksController < Api::BaseController def index @statuses = load_statuses - render json: @statuses, each_serializer: REST::StatusSerializer, - relationships: StatusRelationshipsPresenter.new(@statuses, current_user&.account_id), - emoji_reaction_permitted_account_ids: EmojiReactionAccountsPresenter.new(@statuses, current_user&.account_id) + render json: @statuses, each_serializer: REST::StatusSerializer, relationships: StatusRelationshipsPresenter.new(@statuses, current_user&.account_id) end private def load_statuses - preloaded_bookmarks + cached_bookmarks end - def preloaded_bookmarks - preload_collection(results.map(&:status), Status) + def cached_bookmarks + cache_collection(results.map(&:status), Status) end def results @@ -33,6 +31,10 @@ class Api::V1::BookmarksController < Api::BaseController current_account.bookmarks end + def insert_pagination_headers + set_pagination_headers(next_path, prev_path) + end + def next_path api_v1_bookmarks_url pagination_params(max_id: pagination_max_id) if records_continue? end @@ -41,8 +43,12 @@ class Api::V1::BookmarksController < Api::BaseController api_v1_bookmarks_url pagination_params(min_id: pagination_since_id) unless results.empty? end - def pagination_collection - results + def pagination_max_id + results.last.id + end + + def pagination_since_id + results.first.id end def records_continue? diff --git a/app/controllers/api/v1/circles/accounts_controller.rb b/app/controllers/api/v1/circles/accounts_controller.rb deleted file mode 100644 index e0d43bd950..0000000000 --- a/app/controllers/api/v1/circles/accounts_controller.rb +++ /dev/null @@ -1,93 +0,0 @@ -# frozen_string_literal: true - -class Api::V1::Circles::AccountsController < Api::BaseController - before_action -> { doorkeeper_authorize! :read, :'read:lists' }, only: [:show] - before_action -> { doorkeeper_authorize! :write, :'write:lists' }, except: [:show] - - before_action :require_user! - before_action :set_circle - - after_action :insert_pagination_headers, only: :show - - def show - @accounts = load_accounts - render json: @accounts, each_serializer: REST::AccountSerializer - end - - def create - ApplicationRecord.transaction do - circle_accounts.each do |account| - @circle.accounts << account - end - end - - render_empty - end - - def destroy - CircleAccount.where(circle: @circle, account_id: account_ids).destroy_all - render_empty - end - - private - - def set_circle - @circle = Circle.where(account: current_account).find(params[:circle_id]) - end - - def load_accounts - if unlimited? - @circle.accounts.without_suspended.includes(:account_stat).all - else - @circle.accounts.without_suspended.includes(:account_stat).paginate_by_max_id(limit_param(DEFAULT_ACCOUNTS_LIMIT), params[:max_id], params[:since_id]) - end - end - - def circle_accounts - Account.find(account_ids) - end - - def account_ids - Array(resource_params[:account_ids]) - end - - def resource_params - params.permit(account_ids: []) - end - - def insert_pagination_headers - set_pagination_headers(next_path, prev_path) - end - - def next_path - return if unlimited? - - api_v1_circle_accounts_url pagination_params(max_id: pagination_max_id) if records_continue? - end - - def prev_path - return if unlimited? - - api_v1_circle_accounts_url pagination_params(since_id: pagination_since_id) unless @accounts.empty? - end - - def pagination_max_id - @accounts.last.id - end - - def pagination_since_id - @accounts.first.id - end - - def records_continue? - @accounts.size == limit_param(DEFAULT_ACCOUNTS_LIMIT) - end - - def pagination_params(core_params) - params.slice(:limit).permit(:limit).merge(core_params) - end - - def unlimited? - params[:limit] == '0' - end -end diff --git a/app/controllers/api/v1/circles/statuses_controller.rb b/app/controllers/api/v1/circles/statuses_controller.rb deleted file mode 100644 index 705731936b..0000000000 --- a/app/controllers/api/v1/circles/statuses_controller.rb +++ /dev/null @@ -1,65 +0,0 @@ -# frozen_string_literal: true - -class Api::V1::Circles::StatusesController < Api::BaseController - before_action -> { doorkeeper_authorize! :read, :'read:lists' }, only: [:show] - - before_action :require_user! - before_action :set_circle - - after_action :insert_pagination_headers, only: :show - - def show - @statuses = load_statuses - render json: @statuses, each_serializer: REST::StatusSerializer - end - - private - - def set_circle - @circle = current_account.circles.find(params[:circle_id]) - end - - def load_statuses - if unlimited? - @circle.statuses.includes(:status_stat).all - else - @circle.statuses.includes(:status_stat).paginate_by_max_id(limit_param(DEFAULT_STATUSES_LIMIT), params[:max_id], params[:since_id]) - end - end - - def insert_pagination_headers - set_pagination_headers(next_path, prev_path) - end - - def next_path - return if unlimited? - - api_v1_circle_statuses_url pagination_params(max_id: pagination_max_id) if records_continue? - end - - def prev_path - return if unlimited? - - api_v1_circle_statuses_url pagination_params(since_id: pagination_since_id) unless @statuses.empty? - end - - def pagination_max_id - @statuses.last.id - end - - def pagination_since_id - @statuses.first.id - end - - def records_continue? - @statuses.size == limit_param(DEFAULT_STATUSES_LIMIT) - end - - def pagination_params(core_params) - params.slice(:limit).permit(:limit).merge(core_params) - end - - def unlimited? - params[:limit] == '0' - end -end diff --git a/app/controllers/api/v1/circles_controller.rb b/app/controllers/api/v1/circles_controller.rb deleted file mode 100644 index 53c9adf14e..0000000000 --- a/app/controllers/api/v1/circles_controller.rb +++ /dev/null @@ -1,47 +0,0 @@ -# frozen_string_literal: true - -class Api::V1::CirclesController < Api::BaseController - before_action -> { doorkeeper_authorize! :read, :'read:lists' }, only: [:index, :show] - before_action -> { doorkeeper_authorize! :write, :'write:lists' }, except: [:index, :show] - - before_action :require_user! - before_action :set_circle, except: [:index, :create] - - rescue_from ArgumentError do |e| - render json: { error: e.to_s }, status: 422 - end - - def index - @circles = Circle.where(account: current_account).all - render json: @circles, each_serializer: REST::CircleSerializer - end - - def show - render json: @circle, serializer: REST::CircleSerializer - end - - def create - @circle = Circle.create!(circle_params.merge(account: current_account)) - render json: @circle, serializer: REST::CircleSerializer - end - - def update - @circle.update!(circle_params) - render json: @circle, serializer: REST::CircleSerializer - end - - def destroy - @circle.destroy! - render_empty - end - - private - - def set_circle - @circle = Circle.where(account: current_account).find(params[:id]) - end - - def circle_params - params.permit(:title) - end -end diff --git a/app/controllers/api/v1/conversations_controller.rb b/app/controllers/api/v1/conversations_controller.rb index a95c816e1c..6a3567e624 100644 --- a/app/controllers/api/v1/conversations_controller.rb +++ b/app/controllers/api/v1/conversations_controller.rb @@ -53,6 +53,10 @@ class Api::V1::ConversationsController < Api::BaseController .to_a_paginated_by_id(limit_param(LIMIT), params_slice(:max_id, :since_id, :min_id)) end + def insert_pagination_headers + set_pagination_headers(next_path, prev_path) + end + def next_path api_v1_conversations_url pagination_params(max_id: pagination_max_id) if records_continue? end diff --git a/app/controllers/api/v1/crypto/encrypted_messages_controller.rb b/app/controllers/api/v1/crypto/encrypted_messages_controller.rb index d3de220393..68cf4384f7 100644 --- a/app/controllers/api/v1/crypto/encrypted_messages_controller.rb +++ b/app/controllers/api/v1/crypto/encrypted_messages_controller.rb @@ -29,6 +29,10 @@ class Api::V1::Crypto::EncryptedMessagesController < Api::BaseController @encrypted_messages = @current_device.encrypted_messages.to_a_paginated_by_id(limit_param(LIMIT), params_slice(:max_id, :since_id, :min_id)) end + def insert_pagination_headers + set_pagination_headers(next_path, prev_path) + end + def next_path api_v1_crypto_encrypted_messages_url pagination_params(max_id: pagination_max_id) if records_continue? end @@ -37,8 +41,12 @@ class Api::V1::Crypto::EncryptedMessagesController < Api::BaseController api_v1_crypto_encrypted_messages_url pagination_params(min_id: pagination_since_id) unless @encrypted_messages.empty? end - def pagination_collection - @encrypted_messages + def pagination_max_id + @encrypted_messages.last.id + end + + def pagination_since_id + @encrypted_messages.first.id end def records_continue? diff --git a/app/controllers/api/v1/directories_controller.rb b/app/controllers/api/v1/directories_controller.rb index 6c540404ea..e79b20ce42 100644 --- a/app/controllers/api/v1/directories_controller.rb +++ b/app/controllers/api/v1/directories_controller.rb @@ -27,7 +27,7 @@ class Api::V1::DirectoriesController < Api::BaseController scope.merge!(local_account_scope) if local_accounts? scope.merge!(account_exclusion_scope) if current_account scope.merge!(account_domain_block_scope) if current_account && !local_accounts? - end.includes(:account_stat, user: :role) + end end def local_accounts? diff --git a/app/controllers/api/v1/domain_blocks_controller.rb b/app/controllers/api/v1/domain_blocks_controller.rb index 3dee2d176c..34def3c44a 100644 --- a/app/controllers/api/v1/domain_blocks_controller.rb +++ b/app/controllers/api/v1/domain_blocks_controller.rb @@ -38,6 +38,10 @@ class Api::V1::DomainBlocksController < Api::BaseController current_account.domain_blocks end + def insert_pagination_headers + set_pagination_headers(next_path, prev_path) + end + def next_path api_v1_domain_blocks_url pagination_params(max_id: pagination_max_id) if records_continue? end @@ -46,8 +50,12 @@ class Api::V1::DomainBlocksController < Api::BaseController api_v1_domain_blocks_url pagination_params(since_id: pagination_since_id) unless @blocks.empty? end - def pagination_collection - @blocks + def pagination_max_id + @blocks.last.id + end + + def pagination_since_id + @blocks.first.id end def records_continue? diff --git a/app/controllers/api/v1/emoji_reactions_controller.rb b/app/controllers/api/v1/emoji_reactions_controller.rb deleted file mode 100644 index 5e913eef2a..0000000000 --- a/app/controllers/api/v1/emoji_reactions_controller.rb +++ /dev/null @@ -1,63 +0,0 @@ -# frozen_string_literal: true - -class Api::V1::EmojiReactionsController < Api::BaseController - before_action -> { doorkeeper_authorize! :read, :'read:favourites' } - before_action :require_user! - after_action :insert_pagination_headers - - def index - @statuses = load_statuses - render json: @statuses, each_serializer: REST::StatusSerializer, - relationships: StatusRelationshipsPresenter.new(@statuses, current_user&.account_id), - emoji_reaction_permitted_account_ids: EmojiReactionAccountsPresenter.new(@statuses, current_user&.account_id) - end - - private - - def load_statuses - cached_emoji_reactions - end - - def cached_emoji_reactions - preload_collection(results.map(&:status), EmojiReaction) - end - - def results - @results ||= account_emoji_reactions.joins(:status).eager_load(:status).to_a_paginated_by_id( - limit_param(DEFAULT_STATUSES_LIMIT), - params_slice(:max_id, :since_id, :min_id) - ) - end - - def account_emoji_reactions - current_account.emoji_reactions - end - - def insert_pagination_headers - set_pagination_headers(next_path, prev_path) - end - - def next_path - api_v1_emoji_reactions_url pagination_params(max_id: pagination_max_id) if records_continue? - end - - def prev_path - api_v1_emoji_reactions_url pagination_params(min_id: pagination_since_id) unless results.empty? - end - - def pagination_max_id - results.last.id - end - - def pagination_since_id - results.first.id - end - - def records_continue? - results.size == limit_param(DEFAULT_STATUSES_LIMIT) - end - - def pagination_params(core_params) - params.slice(:limit).permit(:limit).merge(core_params) - end -end diff --git a/app/controllers/api/v1/endorsements_controller.rb b/app/controllers/api/v1/endorsements_controller.rb index 9a723d89e4..46e3fcd647 100644 --- a/app/controllers/api/v1/endorsements_controller.rb +++ b/app/controllers/api/v1/endorsements_controller.rb @@ -25,7 +25,11 @@ class Api::V1::EndorsementsController < Api::BaseController end def endorsed_accounts - current_account.endorsed_accounts.includes(:account_stat, :user).without_suspended + current_account.endorsed_accounts.includes(:account_stat).without_suspended + end + + def insert_pagination_headers + set_pagination_headers(next_path, prev_path) end def next_path @@ -40,8 +44,12 @@ class Api::V1::EndorsementsController < Api::BaseController api_v1_endorsements_url pagination_params(since_id: pagination_since_id) unless @accounts.empty? end - def pagination_collection - @accounts + def pagination_max_id + @accounts.last.id + end + + def pagination_since_id + @accounts.first.id end def records_continue? diff --git a/app/controllers/api/v1/favourites_controller.rb b/app/controllers/api/v1/favourites_controller.rb index 95c795468b..faf1bda96a 100644 --- a/app/controllers/api/v1/favourites_controller.rb +++ b/app/controllers/api/v1/favourites_controller.rb @@ -7,19 +7,17 @@ class Api::V1::FavouritesController < Api::BaseController def index @statuses = load_statuses - render json: @statuses, each_serializer: REST::StatusSerializer, - relationships: StatusRelationshipsPresenter.new(@statuses, current_user&.account_id), - emoji_reaction_permitted_account_ids: EmojiReactionAccountsPresenter.new(@statuses, current_user&.account_id) + render json: @statuses, each_serializer: REST::StatusSerializer, relationships: StatusRelationshipsPresenter.new(@statuses, current_user&.account_id) end private def load_statuses - preloaded_favourites + cached_favourites end - def preloaded_favourites - preload_collection(results.map(&:status), Status) + def cached_favourites + cache_collection(results.map(&:status), Status) end def results @@ -33,6 +31,10 @@ class Api::V1::FavouritesController < Api::BaseController current_account.favourites end + def insert_pagination_headers + set_pagination_headers(next_path, prev_path) + end + def next_path api_v1_favourites_url pagination_params(max_id: pagination_max_id) if records_continue? end @@ -41,8 +43,12 @@ class Api::V1::FavouritesController < Api::BaseController api_v1_favourites_url pagination_params(min_id: pagination_since_id) unless results.empty? end - def pagination_collection - results + def pagination_max_id + results.last.id + end + + def pagination_since_id + results.first.id end def records_continue? diff --git a/app/controllers/api/v1/featured_tags/suggestions_controller.rb b/app/controllers/api/v1/featured_tags/suggestions_controller.rb index 9c72e4380d..76633210a1 100644 --- a/app/controllers/api/v1/featured_tags/suggestions_controller.rb +++ b/app/controllers/api/v1/featured_tags/suggestions_controller.rb @@ -12,6 +12,6 @@ class Api::V1::FeaturedTags::SuggestionsController < Api::BaseController private def set_recently_used_tags - @recently_used_tags = Tag.suggestions_for_account(current_account).limit(10) + @recently_used_tags = Tag.recently_used(current_account).where.not(id: current_account.featured_tags).limit(10) end end diff --git a/app/controllers/api/v1/filters_controller.rb b/app/controllers/api/v1/filters_controller.rb index 4345b61ac7..ed98acce30 100644 --- a/app/controllers/api/v1/filters_controller.rb +++ b/app/controllers/api/v1/filters_controller.rb @@ -52,11 +52,11 @@ class Api::V1::FiltersController < Api::BaseController end def resource_params - params.permit(:phrase, :expires_in, :irreversible, :exclude_follows, :exclude_localusers, :with_quote, :whole_word, context: []) + params.permit(:phrase, :expires_in, :irreversible, :whole_word, context: []) end def filter_params - resource_params.slice(:phrase, :expires_in, :irreversible, :exclude_follows, :exclude_localusers, :with_quote, :context) + resource_params.slice(:phrase, :expires_in, :irreversible, :context) end def keyword_params diff --git a/app/controllers/api/v1/follow_requests_controller.rb b/app/controllers/api/v1/follow_requests_controller.rb index 7ffd7614bb..ee717ebbcc 100644 --- a/app/controllers/api/v1/follow_requests_controller.rb +++ b/app/controllers/api/v1/follow_requests_controller.rb @@ -37,7 +37,7 @@ class Api::V1::FollowRequestsController < Api::BaseController end def default_accounts - Account.without_suspended.includes(:follow_requests, :account_stat, :user).references(:follow_requests) + Account.without_suspended.includes(:follow_requests, :account_stat).references(:follow_requests) end def paginated_follow_requests @@ -48,6 +48,10 @@ class Api::V1::FollowRequestsController < Api::BaseController ) end + def insert_pagination_headers + set_pagination_headers(next_path, prev_path) + end + def next_path api_v1_follow_requests_url pagination_params(max_id: pagination_max_id) if records_continue? end diff --git a/app/controllers/api/v1/followed_tags_controller.rb b/app/controllers/api/v1/followed_tags_controller.rb index 8888612b16..eae2bdc010 100644 --- a/app/controllers/api/v1/followed_tags_controller.rb +++ b/app/controllers/api/v1/followed_tags_controller.rb @@ -22,6 +22,10 @@ class Api::V1::FollowedTagsController < Api::BaseController ) end + def insert_pagination_headers + set_pagination_headers(next_path, prev_path) + end + def next_path api_v1_followed_tags_url pagination_params(max_id: pagination_max_id) if records_continue? end @@ -30,8 +34,12 @@ class Api::V1::FollowedTagsController < Api::BaseController api_v1_followed_tags_url pagination_params(since_id: pagination_since_id) unless @results.empty? end - def pagination_collection - @results + def pagination_max_id + @results.last.id + end + + def pagination_since_id + @results.first.id end def records_continue? diff --git a/app/controllers/api/v1/lists/accounts_controller.rb b/app/controllers/api/v1/lists/accounts_controller.rb index aecf391049..8e12cb7b65 100644 --- a/app/controllers/api/v1/lists/accounts_controller.rb +++ b/app/controllers/api/v1/lists/accounts_controller.rb @@ -37,9 +37,9 @@ class Api::V1::Lists::AccountsController < Api::BaseController def load_accounts if unlimited? - @list.accounts.without_suspended.includes(:account_stat, :user).all + @list.accounts.without_suspended.includes(:account_stat).all else - @list.accounts.without_suspended.includes(:account_stat, :user).paginate_by_max_id(limit_param(DEFAULT_ACCOUNTS_LIMIT), params[:max_id], params[:since_id]) + @list.accounts.without_suspended.includes(:account_stat).paginate_by_max_id(limit_param(DEFAULT_ACCOUNTS_LIMIT), params[:max_id], params[:since_id]) end end @@ -55,6 +55,10 @@ class Api::V1::Lists::AccountsController < Api::BaseController params.permit(account_ids: []) end + def insert_pagination_headers + set_pagination_headers(next_path, prev_path) + end + def next_path return if unlimited? @@ -67,8 +71,12 @@ class Api::V1::Lists::AccountsController < Api::BaseController api_v1_list_accounts_url pagination_params(since_id: pagination_since_id) unless @accounts.empty? end - def pagination_collection - @accounts + def pagination_max_id + @accounts.last.id + end + + def pagination_since_id + @accounts.first.id end def records_continue? diff --git a/app/controllers/api/v1/lists_controller.rb b/app/controllers/api/v1/lists_controller.rb index 0bacd7fdb0..4bbbed2673 100644 --- a/app/controllers/api/v1/lists_controller.rb +++ b/app/controllers/api/v1/lists_controller.rb @@ -31,9 +31,6 @@ class Api::V1::ListsController < Api::BaseController end def destroy - antenna = Antenna.find_by(list_id: @list.id) - antenna.update!(list_id: 0) if antenna.present? - @list.destroy! render_empty end @@ -45,6 +42,6 @@ class Api::V1::ListsController < Api::BaseController end def list_params - params.permit(:title, :replies_policy, :exclusive, :notify) + params.permit(:title, :replies_policy, :exclusive) end end diff --git a/app/controllers/api/v1/markers_controller.rb b/app/controllers/api/v1/markers_controller.rb index 8eaf7767df..f8dfba8a94 100644 --- a/app/controllers/api/v1/markers_controller.rb +++ b/app/controllers/api/v1/markers_controller.rb @@ -19,7 +19,7 @@ class Api::V1::MarkersController < Api::BaseController @markers = {} resource_params.each_pair do |timeline, timeline_params| - @markers[timeline] = current_user.markers.find_or_create_by(timeline: timeline) + @markers[timeline] = current_user.markers.find_or_initialize_by(timeline: timeline) @markers[timeline].update!(timeline_params) end end diff --git a/app/controllers/api/v1/mutes_controller.rb b/app/controllers/api/v1/mutes_controller.rb index dbfd7e103a..555485823c 100644 --- a/app/controllers/api/v1/mutes_controller.rb +++ b/app/controllers/api/v1/mutes_controller.rb @@ -17,7 +17,7 @@ class Api::V1::MutesController < Api::BaseController end def paginated_mutes - @paginated_mutes ||= Mute.eager_load(target_account: [:account_stat, :user]) + @paginated_mutes ||= Mute.eager_load(:target_account) .joins(:target_account) .merge(Account.without_suspended) .where(account: current_account) @@ -28,6 +28,10 @@ class Api::V1::MutesController < Api::BaseController ) end + def insert_pagination_headers + set_pagination_headers(next_path, prev_path) + end + def next_path api_v1_mutes_url pagination_params(max_id: pagination_max_id) if records_continue? end @@ -36,8 +40,12 @@ class Api::V1::MutesController < Api::BaseController api_v1_mutes_url pagination_params(since_id: pagination_since_id) unless paginated_mutes.empty? end - def pagination_collection - paginated_mutes + def pagination_max_id + paginated_mutes.last.id + end + + def pagination_since_id + paginated_mutes.first.id end def records_continue? diff --git a/app/controllers/api/v1/notifications/policies_controller.rb b/app/controllers/api/v1/notifications/policies_controller.rb deleted file mode 100644 index 1ec336f9a5..0000000000 --- a/app/controllers/api/v1/notifications/policies_controller.rb +++ /dev/null @@ -1,37 +0,0 @@ -# frozen_string_literal: true - -class Api::V1::Notifications::PoliciesController < Api::BaseController - before_action -> { doorkeeper_authorize! :read, :'read:notifications' }, only: :show - before_action -> { doorkeeper_authorize! :write, :'write:notifications' }, only: :update - - before_action :require_user! - before_action :set_policy - - def show - render json: @policy, serializer: REST::NotificationPolicySerializer - end - - def update - @policy.update!(resource_params) - render json: @policy, serializer: REST::NotificationPolicySerializer - end - - private - - def set_policy - @policy = NotificationPolicy.find_or_initialize_by(account: current_account) - - with_read_replica do - @policy.summarize! - end - end - - def resource_params - params.permit( - :filter_not_following, - :filter_not_followers, - :filter_new_accounts, - :filter_private_mentions - ) - end -end diff --git a/app/controllers/api/v1/notifications/requests_controller.rb b/app/controllers/api/v1/notifications/requests_controller.rb deleted file mode 100644 index 0e58379a38..0000000000 --- a/app/controllers/api/v1/notifications/requests_controller.rb +++ /dev/null @@ -1,75 +0,0 @@ -# frozen_string_literal: true - -class Api::V1::Notifications::RequestsController < Api::BaseController - before_action -> { doorkeeper_authorize! :read, :'read:notifications' }, only: :index - before_action -> { doorkeeper_authorize! :write, :'write:notifications' }, except: :index - - before_action :require_user! - before_action :set_request, except: :index - - after_action :insert_pagination_headers, only: :index - - def index - with_read_replica do - @requests = load_requests - @relationships = relationships - end - - render json: @requests, each_serializer: REST::NotificationRequestSerializer, relationships: @relationships - end - - def show - render json: @request, serializer: REST::NotificationRequestSerializer - end - - def accept - AcceptNotificationRequestService.new.call(@request) - render_empty - end - - def dismiss - @request.update!(dismissed: true) - render_empty - end - - private - - def load_requests - requests = NotificationRequest.where(account: current_account).where(dismissed: truthy_param?(:dismissed) || false).includes(:last_status, from_account: [:account_stat, :user]).to_a_paginated_by_id( - limit_param(DEFAULT_ACCOUNTS_LIMIT), - params_slice(:max_id, :since_id, :min_id) - ) - - NotificationRequest.preload_cache_collection(requests) do |statuses| - preload_collection(statuses, Status) - end - end - - def relationships - StatusRelationshipsPresenter.new(@requests.map(&:last_status), current_user&.account_id) - end - - def set_request - @request = NotificationRequest.where(account: current_account).find(params[:id]) - end - - def next_path - api_v1_notifications_requests_url pagination_params(max_id: pagination_max_id) unless @requests.empty? - end - - def prev_path - api_v1_notifications_requests_url pagination_params(min_id: pagination_since_id) unless @requests.empty? - end - - def pagination_max_id - @requests.last.id - end - - def pagination_since_id - @requests.first.id - end - - def pagination_params(core_params) - params.slice(:dismissed).permit(:dismissed).merge(core_params) - end -end diff --git a/app/controllers/api/v1/notifications_controller.rb b/app/controllers/api/v1/notifications_controller.rb index 1d0aa10d2e..406ab97538 100644 --- a/app/controllers/api/v1/notifications_controller.rb +++ b/app/controllers/api/v1/notifications_controller.rb @@ -41,7 +41,7 @@ class Api::V1::NotificationsController < Api::BaseController ) Notification.preload_cache_collection_target_statuses(notifications) do |target_statuses| - preload_collection(target_statuses, Status) + cache_collection(target_statuses, Status) end end @@ -49,8 +49,7 @@ class Api::V1::NotificationsController < Api::BaseController current_account.notifications.without_suspended.browserable( types: Array(browserable_params[:types]), exclude_types: Array(browserable_params[:exclude_types]), - from_account_id: browserable_params[:account_id], - include_filtered: truthy_param?(:include_filtered) + from_account_id: browserable_params[:account_id] ) end @@ -58,6 +57,10 @@ class Api::V1::NotificationsController < Api::BaseController @notifications.reject { |notification| notification.target_status.nil? }.map(&:target_status) end + def insert_pagination_headers + set_pagination_headers(next_path, prev_path) + end + def next_path api_v1_notifications_url pagination_params(max_id: pagination_max_id) unless @notifications.empty? end @@ -66,15 +69,19 @@ class Api::V1::NotificationsController < Api::BaseController api_v1_notifications_url pagination_params(min_id: pagination_since_id) unless @notifications.empty? end - def pagination_collection - @notifications + def pagination_max_id + @notifications.last.id + end + + def pagination_since_id + @notifications.first.id end def browserable_params - params.permit(:account_id, :include_filtered, types: [], exclude_types: []) + params.permit(:account_id, types: [], exclude_types: []) end def pagination_params(core_params) - params.slice(:limit, :account_id, :types, :exclude_types, :include_filtered).permit(:limit, :account_id, :include_filtered, types: [], exclude_types: []).merge(core_params) + params.slice(:limit, :account_id, :types, :exclude_types).permit(:limit, :account_id, types: [], exclude_types: []).merge(core_params) end end diff --git a/app/controllers/api/v1/peers/search_controller.rb b/app/controllers/api/v1/peers/search_controller.rb index 1780554c5d..0c503d9bc5 100644 --- a/app/controllers/api/v1/peers/search_controller.rb +++ b/app/controllers/api/v1/peers/search_controller.rb @@ -27,7 +27,7 @@ class Api::V1::Peers::SearchController < Api::BaseController @domains = InstancesIndex.query(function_score: { query: { prefix: { - domain: normalized_domain, + domain: TagManager.instance.normalize_domain(params[:q].strip), }, }, @@ -37,18 +37,11 @@ class Api::V1::Peers::SearchController < Api::BaseController }, }).limit(10).pluck(:domain) else - domain = normalized_domain - @domains = Instance.searchable.domain_starts_with(domain).limit(10).pluck(:domain) + domain = params[:q].strip + domain = TagManager.instance.normalize_domain(domain) + @domains = Instance.searchable.where(Instance.arel_table[:domain].matches("#{Instance.sanitize_sql_like(domain)}%", false, true)).limit(10).pluck(:domain) end rescue Addressable::URI::InvalidURIError @domains = [] end - - def normalized_domain - TagManager.instance.normalize_domain(query_value) - end - - def query_value - params[:q].strip - end end diff --git a/app/controllers/api/v1/push/subscriptions_controller.rb b/app/controllers/api/v1/push/subscriptions_controller.rb index e1ad89ee3e..3634acf956 100644 --- a/app/controllers/api/v1/push/subscriptions_controller.rb +++ b/app/controllers/api/v1/push/subscriptions_controller.rb @@ -1,12 +1,9 @@ # frozen_string_literal: true class Api::V1::Push::SubscriptionsController < Api::BaseController - include Redisable - include Lockable - before_action -> { doorkeeper_authorize! :push } before_action :require_user! - before_action :set_push_subscription, only: [:show, :update] + before_action :set_push_subscription before_action :check_push_subscription, only: [:show, :update] def show @@ -14,18 +11,16 @@ class Api::V1::Push::SubscriptionsController < Api::BaseController end def create - with_redis_lock("push_subscription:#{current_user.id}") do - destroy_web_push_subscriptions! + @push_subscription&.destroy! - @push_subscription = Web::PushSubscription.create!( - endpoint: subscription_params[:endpoint], - key_p256dh: subscription_params[:keys][:p256dh], - key_auth: subscription_params[:keys][:auth], - data: data_params, - user_id: current_user.id, - access_token_id: doorkeeper_token.id - ) - end + @push_subscription = Web::PushSubscription.create!( + endpoint: subscription_params[:endpoint], + key_p256dh: subscription_params[:keys][:p256dh], + key_auth: subscription_params[:keys][:auth], + data: data_params, + user_id: current_user.id, + access_token_id: doorkeeper_token.id + ) render json: @push_subscription, serializer: REST::WebPushSubscriptionSerializer end @@ -36,18 +31,14 @@ class Api::V1::Push::SubscriptionsController < Api::BaseController end def destroy - destroy_web_push_subscriptions! + @push_subscription&.destroy! render_empty end private - def destroy_web_push_subscriptions! - doorkeeper_token.web_push_subscriptions.destroy_all - end - def set_push_subscription - @push_subscription = doorkeeper_token.web_push_subscriptions.first + @push_subscription = Web::PushSubscription.find_by(access_token_id: doorkeeper_token.id) end def check_push_subscription diff --git a/app/controllers/api/v1/reaction_deck_controller.rb b/app/controllers/api/v1/reaction_deck_controller.rb deleted file mode 100644 index 6229eb89d4..0000000000 --- a/app/controllers/api/v1/reaction_deck_controller.rb +++ /dev/null @@ -1,92 +0,0 @@ -# frozen_string_literal: true - -class Api::V1::ReactionDeckController < Api::BaseController - include RoutingHelper - - before_action -> { doorkeeper_authorize! :read, :'read:lists' }, only: [:index] - before_action -> { doorkeeper_authorize! :write, :'write:lists' }, only: [:create] - - before_action :require_user! - before_action :set_deck, only: [:index, :create] - - rescue_from ArgumentError do |e| - render json: { error: e.to_s }, status: 422 - end - - def index - render json: remove_metas(@deck) - end - - def create - deck = [] - - shortcodes = [] - (deck_params['emojis'] || []).each do |shortcode| - shortcodes << shortcode.delete(':') - break if shortcodes.length >= User::REACTION_DECK_MAX - end - - custom_emojis = CustomEmoji.where(shortcode: shortcodes, domain: nil) - - shortcodes.each do |shortcode| - custom_emoji = custom_emojis.find { |em| em.shortcode == shortcode } - - emoji_data = {} - - if custom_emoji - emoji_data['name'] = custom_emoji.shortcode - emoji_data['url'] = full_asset_url(custom_emoji.image.url) - emoji_data['static_url'] = full_asset_url(custom_emoji.image.url(:static)) - emoji_data['width'] = custom_emoji.image_width - emoji_data['height'] = custom_emoji.image_height - emoji_data['custom_emoji_id'] = custom_emoji.id - else - emoji_data['name'] = shortcode - end - - deck << emoji_data - end - - current_user.settings['reaction_deck'] = deck.to_json - current_user.save! - - render json: remove_metas(deck) - end - - private - - def set_deck - deck = current_user.setting_reaction_deck ? JSON.parse(current_user.setting_reaction_deck) : [] - @deck = remove_unused_custom_emojis(deck) - end - - def remove_unused_custom_emojis(deck) - custom_ids = [] - deck.each do |item| - custom_ids << item['custom_emoji_id'].to_i if item.key?('custom_emoji_id') - end - custom_emojis = CustomEmoji.where(id: custom_ids) - - deck.each do |item| - next if item['custom_emoji_id'].nil? - - custom_emoji = custom_emojis.find { |em| em.id == item['custom_emoji_id'].to_i } - remove = custom_emoji.nil? || custom_emoji.disabled - item['remove'] = remove if remove - end - deck.filter { |item| !item.key?('remove') } - end - - def remove_metas(deck) - deck.tap do |d| - d.each do |item| - item.delete('custom_emoji_id') - # item.delete('id') if item.key?('id') - end - end - end - - def deck_params - params - end -end diff --git a/app/controllers/api/v1/scheduled_statuses_controller.rb b/app/controllers/api/v1/scheduled_statuses_controller.rb index 1217ed014e..2220b6d22e 100644 --- a/app/controllers/api/v1/scheduled_statuses_controller.rb +++ b/app/controllers/api/v1/scheduled_statuses_controller.rb @@ -47,6 +47,10 @@ class Api::V1::ScheduledStatusesController < Api::BaseController params.slice(:limit).permit(:limit).merge(core_params) end + def insert_pagination_headers + set_pagination_headers(next_path, prev_path) + end + def next_path api_v1_scheduled_statuses_url pagination_params(max_id: pagination_max_id) if records_continue? end @@ -59,7 +63,11 @@ class Api::V1::ScheduledStatusesController < Api::BaseController @statuses.size == limit_param(DEFAULT_STATUSES_LIMIT) end - def pagination_collection - @statuses + def pagination_max_id + @statuses.last.id + end + + def pagination_since_id + @statuses.first.id end end diff --git a/app/controllers/api/v1/statuses/bookmark_categories_controller.rb b/app/controllers/api/v1/statuses/bookmark_categories_controller.rb deleted file mode 100644 index 9d65b96296..0000000000 --- a/app/controllers/api/v1/statuses/bookmark_categories_controller.rb +++ /dev/null @@ -1,18 +0,0 @@ -# frozen_string_literal: true - -class Api::V1::Statuses::BookmarkCategoriesController < Api::BaseController - before_action -> { doorkeeper_authorize! :read, :'read:lists' } - before_action :require_user! - before_action :set_status - - def index - @statuses = @status.deleted_at.present? ? [] : @status.joined_bookmark_categories.where(account: current_account) - render json: @statuses, each_serializer: REST::BookmarkCategorySerializer - end - - private - - def set_status - @status = Status.find(params[:status_id]) - end -end diff --git a/app/controllers/api/v1/statuses/emoji_reactioned_by_accounts_controller.rb b/app/controllers/api/v1/statuses/emoji_reactioned_by_accounts_controller.rb deleted file mode 100644 index 9c2fb3d4a5..0000000000 --- a/app/controllers/api/v1/statuses/emoji_reactioned_by_accounts_controller.rb +++ /dev/null @@ -1,76 +0,0 @@ -# frozen_string_literal: true - -class Api::V1::Statuses::EmojiReactionedByAccountsController < Api::BaseController - include Authorization - - before_action -> { authorize_if_got_token! :read, :'read:accounts' } - before_action :set_status - after_action :insert_pagination_headers - - def index - @accounts = load_accounts - render json: @accounts, each_serializer: REST::EmojiReactionAccountSerializer - end - - private - - def load_accounts - return [] unless Setting.enable_emoji_reaction - return [] if current_account.nil? && @status.account.emoji_reaction_policy != :allow - return [] if current_account.present? && !@status.account.show_emoji_reaction?(current_account) - - scope = default_accounts - scope = scope.where.not(account_id: current_account.excluded_from_timeline_account_ids) unless current_account.nil? - scope.merge(paginated_emoji_reactions).to_a - end - - def default_accounts - EmojiReaction - .where(status_id: @status.id) - .includes(:account) - .where(account: { suspended_at: nil }) - end - - def paginated_emoji_reactions - EmojiReaction.paginate_by_max_id( - limit_param(DEFAULT_ACCOUNTS_LIMIT), - params[:max_id], - params[:since_id] - ) - end - - def insert_pagination_headers - set_pagination_headers(next_path, prev_path) - end - - def next_path - api_v1_status_emoji_reactioned_by_index_url pagination_params(max_id: pagination_max_id) if records_continue? - end - - def prev_path - api_v1_status_emoji_reactioned_by_index_url pagination_params(since_id: pagination_since_id) unless @accounts.empty? - end - - def pagination_max_id - @accounts.last.id - end - - def pagination_since_id - @accounts.first.id - end - - def records_continue? - @accounts.size == limit_param(DEFAULT_ACCOUNTS_LIMIT) - end - - def set_status - @status = Status.find(params[:status_id]) - authorize @status, :show? - rescue Mastodon::NotPermittedError - not_found - end - - def pagination_params(core_params) - params.slice(:limit).permit(:limit).merge(core_params) - end -end diff --git a/app/controllers/api/v1/statuses/emoji_reactions_controller.rb b/app/controllers/api/v1/statuses/emoji_reactions_controller.rb deleted file mode 100644 index 1f103beb71..0000000000 --- a/app/controllers/api/v1/statuses/emoji_reactions_controller.rb +++ /dev/null @@ -1,63 +0,0 @@ -# frozen_string_literal: true - -class Api::V1::Statuses::EmojiReactionsController < Api::BaseController - include Authorization - - before_action -> { doorkeeper_authorize! :write, :'write:favourites' } - before_action :require_user! - before_action :set_status, only: %i(create update) - before_action :set_status_without_authorize, only: [:destroy] - - def create - create_private(params[:emoji] || params[:id]) - end - - # For compatible with Fedibird API - def update - create_private(params[:id]) - end - - def destroy - emoji = params[:emoji] || params[:id] - - if emoji - shortcode, domain = emoji.split('@') - emoji_reaction = EmojiReaction.where(account_id: current_account.id).where(status_id: @status.id).where(name: shortcode) - .find { |reaction| domain == '' ? reaction.custom_emoji.nil? : reaction.custom_emoji&.domain == domain } - - authorize @status, :show? if emoji_reaction.nil? - - UnEmojiReactService.new.call(current_account, @status, emoji_reaction) if emoji_reaction.present? - else - authorize @status, :show? - end - - render json: @status, serializer: REST::StatusSerializer, relationships: StatusRelationshipsPresenter.new( - [@status], current_account.id - ) - rescue Mastodon::NotPermittedError - not_found - end - - private - - def create_private(emoji) - count = EmojiReaction.where(account: current_account, status: @status).count - raise Mastodon::ValidationError, I18n.t('reactions.errors.limit_reached') if count >= EmojiReaction::EMOJI_REACTION_PER_ACCOUNT_LIMIT - raise Mastodon::ValidationError, I18n.t('reactions.errors.disabled') unless Setting.enable_emoji_reaction - - EmojiReactService.new.call(current_account, @status, emoji) - render json: @status, serializer: REST::StatusSerializer - end - - def set_status - set_status_without_authorize - authorize @status, :show? - rescue Mastodon::NotPermittedError - not_found - end - - def set_status_without_authorize - @status = Status.find(params[:status_id]) - end -end diff --git a/app/controllers/api/v1/statuses/favourited_by_accounts_controller.rb b/app/controllers/api/v1/statuses/favourited_by_accounts_controller.rb index bbc8082e0c..3cca246ce8 100644 --- a/app/controllers/api/v1/statuses/favourited_by_accounts_controller.rb +++ b/app/controllers/api/v1/statuses/favourited_by_accounts_controller.rb @@ -14,14 +14,14 @@ class Api::V1::Statuses::FavouritedByAccountsController < Api::V1::Statuses::Bas def load_accounts scope = default_accounts - scope = scope.not_excluded_by_account(current_account) unless current_account.nil? + scope = scope.where.not(id: current_account.excluded_from_timeline_account_ids) unless current_account.nil? scope.merge(paginated_favourites).to_a end def default_accounts Account .without_suspended - .includes(:favourites, :account_stat, :user) + .includes(:favourites, :account_stat) .references(:favourites) .where(favourites: { status_id: @status.id }) end @@ -34,6 +34,10 @@ class Api::V1::Statuses::FavouritedByAccountsController < Api::V1::Statuses::Bas ) end + def insert_pagination_headers + set_pagination_headers(next_path, prev_path) + end + def next_path api_v1_status_favourited_by_index_url pagination_params(max_id: pagination_max_id) if records_continue? end diff --git a/app/controllers/api/v1/statuses/mentioned_accounts_controller.rb b/app/controllers/api/v1/statuses/mentioned_accounts_controller.rb deleted file mode 100644 index 4d905ef1a6..0000000000 --- a/app/controllers/api/v1/statuses/mentioned_accounts_controller.rb +++ /dev/null @@ -1,74 +0,0 @@ -# frozen_string_literal: true - -class Api::V1::Statuses::MentionedAccountsController < Api::BaseController - include Authorization - - before_action -> { authorize_if_got_token! :read, :'read:accounts' } - before_action :set_status - after_action :insert_pagination_headers - - def index - cache_if_unauthenticated! - @accounts = load_accounts - render json: @accounts, each_serializer: REST::AccountSerializer - end - - private - - def load_accounts - scope = default_accounts - scope = scope.where.not(id: current_account.excluded_from_timeline_account_ids) unless current_account.nil? - scope.merge(paginated_mentioned_users).to_a - end - - def default_accounts - Account - .without_suspended - .includes(:mentions, :account_stat) - .references(:mentions) - .where(mentions: { status_id: @status.id }) - end - - def paginated_mentioned_users - Mention.paginate_by_max_id( - limit_param(DEFAULT_ACCOUNTS_LIMIT), - params[:max_id], - params[:since_id] - ) - end - - def insert_pagination_headers - set_pagination_headers(next_path, prev_path) - end - - def next_path - api_v1_status_mentioned_by_index_url pagination_params(max_id: pagination_max_id) if records_continue? - end - - def prev_path - api_v1_status_mentioned_by_index_url pagination_params(since_id: pagination_since_id) unless @accounts.empty? - end - - def pagination_max_id - @accounts.last.mentions.last.id - end - - def pagination_since_id - @accounts.first.mentions.first.id - end - - def records_continue? - @accounts.size == limit_param(DEFAULT_ACCOUNTS_LIMIT) - end - - def set_status - @status = Status.find(params[:status_id]) - authorize @status, :show_mentioned_users? - rescue Mastodon::NotPermittedError - not_found - end - - def pagination_params(core_params) - params.slice(:limit).permit(:limit).merge(core_params) - end -end diff --git a/app/controllers/api/v1/statuses/reblogged_by_accounts_controller.rb b/app/controllers/api/v1/statuses/reblogged_by_accounts_controller.rb index bac96b032b..dd3e60846b 100644 --- a/app/controllers/api/v1/statuses/reblogged_by_accounts_controller.rb +++ b/app/controllers/api/v1/statuses/reblogged_by_accounts_controller.rb @@ -14,22 +14,26 @@ class Api::V1::Statuses::RebloggedByAccountsController < Api::V1::Statuses::Base def load_accounts scope = default_accounts - scope = scope.not_excluded_by_account(current_account) unless current_account.nil? + scope = scope.where.not(id: current_account.excluded_from_timeline_account_ids) unless current_account.nil? scope.merge(paginated_statuses).to_a end def default_accounts - Account.without_suspended.includes(:statuses, :account_stat, :user).references(:statuses) + Account.without_suspended.includes(:statuses, :account_stat).references(:statuses) end def paginated_statuses - Status.where(reblog_of_id: @status.id).distributable_visibility.paginate_by_max_id( + Status.where(reblog_of_id: @status.id).where(visibility: [:public, :unlisted]).paginate_by_max_id( limit_param(DEFAULT_ACCOUNTS_LIMIT), params[:max_id], params[:since_id] ) end + def insert_pagination_headers + set_pagination_headers(next_path, prev_path) + end + def next_path api_v1_status_reblogged_by_index_url pagination_params(max_id: pagination_max_id) if records_continue? end diff --git a/app/controllers/api/v1/statuses/referred_by_statuses_controller.rb b/app/controllers/api/v1/statuses/referred_by_statuses_controller.rb deleted file mode 100644 index c13c5ff0e8..0000000000 --- a/app/controllers/api/v1/statuses/referred_by_statuses_controller.rb +++ /dev/null @@ -1,80 +0,0 @@ -# frozen_string_literal: true - -class Api::V1::Statuses::ReferredByStatusesController < Api::BaseController - include Authorization - - before_action -> { authorize_if_got_token! :read, :'read:accounts' } - before_action :set_status - after_action :insert_pagination_headers - - def index - @statuses = load_statuses - render json: @statuses, each_serializer: REST::StatusSerializer, - relationships: StatusRelationshipsPresenter.new(@statuses, current_user&.account_id), - emoji_reaction_permitted_account_ids: EmojiReactionAccountsPresenter.new(@statuses, current_user&.account_id) - end - - private - - def load_statuses - cached_references - end - - def cached_references - results - end - - def results - return @results if @results - - account = current_user&.account - statuses = Status.where(id: @status.referenced_by_status_objects.select(:status_id)) - account_ids = statuses.map(&:account_id).uniq - domains = statuses.filter_map(&:account_domain).uniq - relations = account&.relations_map(account_ids, domains) || {} - - statuses = preload_collection_paginated_by_id( - statuses, - Status, - limit_param(DEFAULT_STATUSES_LIMIT), - params_slice(:max_id, :since_id, :min_id) - ) - - @results = statuses.filter { |status| !StatusFilter.new(status, account, relations).filtered? } - end - - def insert_pagination_headers - set_pagination_headers(next_path, prev_path) - end - - def next_path - api_v1_status_referred_by_index_url pagination_params(max_id: pagination_max_id) if records_continue? - end - - def prev_path - api_v1_status_referred_by_index_url pagination_params(min_id: pagination_since_id) unless results.empty? - end - - def pagination_max_id - results.last.id - end - - def pagination_since_id - results.first.id - end - - def records_continue? - results.size == limit_param(DEFAULT_STATUSES_LIMIT) - end - - def set_status - @status = Status.find(params[:status_id]) - authorize @status, :show? - rescue Mastodon::NotPermittedError - not_found - end - - def pagination_params(core_params) - params.slice(:limit).permit(:limit).merge(core_params) - end -end diff --git a/app/controllers/api/v1/statuses_controller.rb b/app/controllers/api/v1/statuses_controller.rb index e8636f2138..064e7632a8 100644 --- a/app/controllers/api/v1/statuses_controller.rb +++ b/app/controllers/api/v1/statuses_controller.rb @@ -5,11 +5,9 @@ class Api::V1::StatusesController < Api::BaseController before_action -> { authorize_if_got_token! :read, :'read:statuses' }, except: [:create, :update, :destroy] before_action -> { doorkeeper_authorize! :write, :'write:statuses' }, only: [:create, :update, :destroy] - before_action :require_user!, except: [:index, :show, :context] - before_action :set_statuses, only: [:index] - before_action :set_status, only: [:show, :context] - before_action :set_thread, only: [:create] - before_action :check_statuses_limit, only: [:index] + before_action :require_user!, except: [:show, :context] + before_action :set_status, only: [:show, :context] + before_action :set_thread, only: [:create] override_rate_limit_headers :create, family: :statuses override_rate_limit_headers :update, family: :statuses @@ -25,14 +23,9 @@ class Api::V1::StatusesController < Api::BaseController DESCENDANTS_LIMIT = 60 DESCENDANTS_DEPTH_LIMIT = 20 - def index - @statuses = preload_collection(@statuses, Status) - render json: @statuses, each_serializer: REST::StatusSerializer - end - def show cache_if_unauthenticated! - @status = preload_collection([@status], Status).first + @status = cache_collection([@status], Status).first render json: @status, serializer: REST::StatusSerializer end @@ -51,20 +44,11 @@ class Api::V1::StatusesController < Api::BaseController ancestors_results = @status.in_reply_to_id.nil? ? [] : @status.ancestors(ancestors_limit, current_account) descendants_results = @status.descendants(descendants_limit, current_account, descendants_depth_limit) - references_results = @status.readable_references(current_account) - loaded_ancestors = preload_collection(ancestors_results, Status) - loaded_descendants = preload_collection(descendants_results, Status) - loaded_references = preload_collection(references_results, Status) + loaded_ancestors = cache_collection(ancestors_results, Status) + loaded_descendants = cache_collection(descendants_results, Status) - if params[:with_reference] - loaded_references.reject! { |status| loaded_ancestors.any? { |ancestor| ancestor.id == status.id } } - else - loaded_ancestors = (loaded_ancestors + loaded_references).uniq(&:id) - loaded_references = [] - end - - @context = Context.new(ancestors: loaded_ancestors, descendants: loaded_descendants, references: loaded_references) - statuses = [@status] + @context.ancestors + @context.descendants + @context.references + @context = Context.new(ancestors: loaded_ancestors, descendants: loaded_descendants) + statuses = [@status] + @context.ancestors + @context.descendants render json: @context, serializer: REST::ContextSerializer, relationships: StatusRelationshipsPresenter.new(statuses, current_user&.account_id) end @@ -77,11 +61,7 @@ class Api::V1::StatusesController < Api::BaseController media_ids: status_params[:media_ids], sensitive: status_params[:sensitive], spoiler_text: status_params[:spoiler_text], - markdown: status_params[:markdown], visibility: status_params[:visibility], - force_visibility: status_params[:force_visibility], - searchability: status_params[:searchability], - circle_id: status_params[:circle_id], language: status_params[:language], scheduled_at: status_params[:scheduled_at], application: doorkeeper_token.application, @@ -91,9 +71,13 @@ class Api::V1::StatusesController < Api::BaseController with_rate_limit: true ) - render json: @status, serializer: serializer_for_status + render json: @status, serializer: @status.is_a?(ScheduledStatus) ? REST::ScheduledStatusSerializer : REST::StatusSerializer rescue PostStatusService::UnexpectedMentionsError => e - render json: unexpected_accounts_error_json(e), status: 422 + unexpected_accounts = ActiveModel::Serializer::CollectionSerializer.new( + e.accounts, + serializer: REST::AccountSerializer + ) + render json: { error: e.message, unexpected_accounts: unexpected_accounts }, status: 422 end def update @@ -109,7 +93,6 @@ class Api::V1::StatusesController < Api::BaseController sensitive: status_params[:sensitive], language: status_params[:language], spoiler_text: status_params[:spoiler_text], - markdown: status_params[:markdown], poll: status_params[:poll] ) @@ -132,10 +115,6 @@ class Api::V1::StatusesController < Api::BaseController private - def set_statuses - @statuses = Status.permitted_statuses_from_ids(status_ids, current_account) - end - def set_status @status = Status.find(params[:id]) authorize @status, :show? @@ -150,18 +129,6 @@ class Api::V1::StatusesController < Api::BaseController render json: { error: I18n.t('statuses.errors.in_reply_not_found') }, status: 404 end - def check_statuses_limit - raise(Mastodon::ValidationError) if status_ids.size > DEFAULT_STATUSES_LIMIT - end - - def status_ids - Array(statuses_params[:ids]).uniq.map(&:to_i) - end - - def statuses_params - params.permit(ids: []) - end - def status_params params.permit( :status, @@ -169,13 +136,8 @@ class Api::V1::StatusesController < Api::BaseController :sensitive, :spoiler_text, :visibility, - :force_visibility, - :searchability, - :circle_id, :language, - :markdown, :scheduled_at, - :status_reference_ids, allowed_mentions: [], media_ids: [], media_attributes: [ @@ -193,21 +155,6 @@ class Api::V1::StatusesController < Api::BaseController ) end - def serializer_for_status - @status.is_a?(ScheduledStatus) ? REST::ScheduledStatusSerializer : REST::StatusSerializer - end - - def unexpected_accounts_error_json(error) - { - error: error.message, - unexpected_accounts: serialized_accounts(error.accounts), - } - end - - def serialized_accounts(accounts) - ActiveModel::Serializer::CollectionSerializer.new(accounts, serializer: REST::AccountSerializer) - end - def pagination_params(core_params) params.slice(:limit).permit(:limit).merge(core_params) end diff --git a/app/controllers/api/v1/timelines/antenna_controller.rb b/app/controllers/api/v1/timelines/antenna_controller.rb deleted file mode 100644 index 69554361be..0000000000 --- a/app/controllers/api/v1/timelines/antenna_controller.rb +++ /dev/null @@ -1,51 +0,0 @@ -# frozen_string_literal: true - -class Api::V1::Timelines::AntennaController < Api::V1::Timelines::BaseController - before_action -> { doorkeeper_authorize! :read, :'read:lists' } - before_action :require_user! - before_action :set_antenna - before_action :set_statuses - - PERMITTED_PARAMS = %i(limit).freeze - - def show - render json: @statuses, - each_serializer: REST::StatusSerializer, - relationships: StatusRelationshipsPresenter.new(@statuses, current_user.account_id) - end - - private - - def set_antenna - @antenna = Antenna.where(account: current_account).find(params[:id]) - end - - def set_statuses - @statuses = cached_list_statuses - end - - def cached_list_statuses - preload_collection list_statuses, Status - end - - def list_statuses - list_feed.get( - limit_param(DEFAULT_STATUSES_LIMIT), - params[:max_id], - params[:since_id], - params[:min_id] - ) - end - - def list_feed - AntennaFeed.new(@antenna) - end - - def next_path - api_v1_timelines_antenna_url params[:id], next_path_params - end - - def prev_path - api_v1_timelines_antenna_url params[:id], prev_path_params - end -end diff --git a/app/controllers/api/v1/timelines/base_controller.rb b/app/controllers/api/v1/timelines/base_controller.rb index e79eba79ee..173e173cc9 100644 --- a/app/controllers/api/v1/timelines/base_controller.rb +++ b/app/controllers/api/v1/timelines/base_controller.rb @@ -5,8 +5,16 @@ class Api::V1::Timelines::BaseController < Api::BaseController private - def pagination_collection - @statuses + def insert_pagination_headers + set_pagination_headers(next_path, prev_path) + end + + def pagination_max_id + @statuses.last.id + end + + def pagination_since_id + @statuses.first.id end def next_path_params diff --git a/app/controllers/api/v1/timelines/home_controller.rb b/app/controllers/api/v1/timelines/home_controller.rb index e48c5ae251..36fdbea647 100644 --- a/app/controllers/api/v1/timelines/home_controller.rb +++ b/app/controllers/api/v1/timelines/home_controller.rb @@ -10,24 +10,22 @@ class Api::V1::Timelines::HomeController < Api::V1::Timelines::BaseController with_read_replica do @statuses = load_statuses @relationships = StatusRelationshipsPresenter.new(@statuses, current_user&.account_id) - @emoji_reactions = EmojiReactionAccountsPresenter.new(@statuses, current_user&.account_id) end render json: @statuses, each_serializer: REST::StatusSerializer, relationships: @relationships, - emoji_reaction_permitted_account_ids: @emoji_reactions, status: account_home_feed.regenerating? ? 206 : 200 end private def load_statuses - preloaded_home_statuses + cached_home_statuses end - def preloaded_home_statuses - preload_collection home_statuses, Status + def cached_home_statuses + cache_collection home_statuses, Status end def home_statuses diff --git a/app/controllers/api/v1/timelines/list_controller.rb b/app/controllers/api/v1/timelines/list_controller.rb index d8cdbdb74c..14b884ecd9 100644 --- a/app/controllers/api/v1/timelines/list_controller.rb +++ b/app/controllers/api/v1/timelines/list_controller.rb @@ -21,11 +21,11 @@ class Api::V1::Timelines::ListController < Api::V1::Timelines::BaseController end def set_statuses - @statuses = preloaded_list_statuses + @statuses = cached_list_statuses end - def preloaded_list_statuses - preload_collection list_statuses, Status + def cached_list_statuses + cache_collection list_statuses, Status end def list_statuses diff --git a/app/controllers/api/v1/timelines/public_controller.rb b/app/controllers/api/v1/timelines/public_controller.rb index cb56d309d4..35af8dc4b5 100644 --- a/app/controllers/api/v1/timelines/public_controller.rb +++ b/app/controllers/api/v1/timelines/public_controller.rb @@ -8,9 +8,7 @@ class Api::V1::Timelines::PublicController < Api::V1::Timelines::BaseController def show cache_if_unauthenticated! @statuses = load_statuses - render json: @statuses, each_serializer: REST::StatusSerializer, - relationships: StatusRelationshipsPresenter.new(@statuses, current_user&.account_id), - emoji_reaction_permitted_account_ids: EmojiReactionAccountsPresenter.new(@statuses, current_user&.account_id) + render json: @statuses, each_serializer: REST::StatusSerializer, relationships: StatusRelationshipsPresenter.new(@statuses, current_user&.account_id) end private @@ -20,11 +18,11 @@ class Api::V1::Timelines::PublicController < Api::V1::Timelines::BaseController end def load_statuses - preloaded_public_statuses_page + cached_public_statuses_page end - def preloaded_public_statuses_page - preload_collection(public_statuses, Status) + def cached_public_statuses_page + cache_collection(public_statuses, Status) end def public_statuses diff --git a/app/controllers/api/v1/timelines/tag_controller.rb b/app/controllers/api/v1/timelines/tag_controller.rb index 761a4299b8..4ba439dbb2 100644 --- a/app/controllers/api/v1/timelines/tag_controller.rb +++ b/app/controllers/api/v1/timelines/tag_controller.rb @@ -9,9 +9,7 @@ class Api::V1::Timelines::TagController < Api::V1::Timelines::BaseController def show cache_if_unauthenticated! @statuses = load_statuses - render json: @statuses, each_serializer: REST::StatusSerializer, - relationships: StatusRelationshipsPresenter.new(@statuses, current_user&.account_id), - emoji_reaction_permitted_account_ids: EmojiReactionAccountsPresenter.new(@statuses, current_user&.account_id) + render json: @statuses, each_serializer: REST::StatusSerializer, relationships: StatusRelationshipsPresenter.new(@statuses, current_user&.account_id) end private @@ -25,11 +23,11 @@ class Api::V1::Timelines::TagController < Api::V1::Timelines::BaseController end def load_statuses - preloaded_tagged_statuses + cached_tagged_statuses end - def preloaded_tagged_statuses - @tag.nil? ? [] : preload_collection(tag_timeline_statuses, Status) + def cached_tagged_statuses + @tag.nil? ? [] : cache_collection(tag_timeline_statuses, Status) end def tag_timeline_statuses diff --git a/app/controllers/api/v1/trends/links_controller.rb b/app/controllers/api/v1/trends/links_controller.rb index 8edf5bbcef..57cfa0b7e4 100644 --- a/app/controllers/api/v1/trends/links_controller.rb +++ b/app/controllers/api/v1/trends/links_controller.rb @@ -34,6 +34,10 @@ class Api::V1::Trends::LinksController < Api::BaseController scope end + def insert_pagination_headers + set_pagination_headers(next_path, prev_path) + end + def pagination_params(core_params) params.slice(:limit).permit(:limit).merge(core_params) end diff --git a/app/controllers/api/v1/trends/statuses_controller.rb b/app/controllers/api/v1/trends/statuses_controller.rb index c6fbbce167..c186864c3b 100644 --- a/app/controllers/api/v1/trends/statuses_controller.rb +++ b/app/controllers/api/v1/trends/statuses_controller.rb @@ -20,7 +20,7 @@ class Api::V1::Trends::StatusesController < Api::BaseController def set_statuses @statuses = if enabled? - preload_collection(statuses_from_trends.offset(offset_param).limit(limit_param(DEFAULT_STATUSES_LIMIT)), Status) + cache_collection(statuses_from_trends.offset(offset_param).limit(limit_param(DEFAULT_STATUSES_LIMIT)), Status) else [] end @@ -32,6 +32,10 @@ class Api::V1::Trends::StatusesController < Api::BaseController scope end + def insert_pagination_headers + set_pagination_headers(next_path, prev_path) + end + def pagination_params(core_params) params.slice(:limit).permit(:limit).merge(core_params) end diff --git a/app/controllers/api/v1/trends/tags_controller.rb b/app/controllers/api/v1/trends/tags_controller.rb index 6d3855a90a..aca3dd7089 100644 --- a/app/controllers/api/v1/trends/tags_controller.rb +++ b/app/controllers/api/v1/trends/tags_controller.rb @@ -30,6 +30,10 @@ class Api::V1::Trends::TagsController < Api::BaseController Trends.tags.query.allowed end + def insert_pagination_headers + set_pagination_headers(next_path, prev_path) + end + def pagination_params(core_params) params.slice(:limit).permit(:limit).merge(core_params) end diff --git a/app/controllers/api/v2/filters_controller.rb b/app/controllers/api/v2/filters_controller.rb index 0b63caa36a..2fcdeeae45 100644 --- a/app/controllers/api/v2/filters_controller.rb +++ b/app/controllers/api/v2/filters_controller.rb @@ -35,7 +35,7 @@ class Api::V2::FiltersController < Api::BaseController private def set_filters - @filters = current_account.custom_filters.includes(:keywords, :statuses) + @filters = current_account.custom_filters.includes(:keywords) end def set_filter @@ -43,6 +43,6 @@ class Api::V2::FiltersController < Api::BaseController end def resource_params - params.permit(:title, :expires_in, :filter_action, :exclude_follows, :exclude_localusers, :with_quote, context: [], keywords_attributes: [:id, :keyword, :whole_word, :_destroy]) + params.permit(:title, :expires_in, :filter_action, context: [], keywords_attributes: [:id, :keyword, :whole_word, :_destroy]) end end diff --git a/app/controllers/api/v2/search_controller.rb b/app/controllers/api/v2/search_controller.rb index a701cbe582..3cfc6e7919 100644 --- a/app/controllers/api/v2/search_controller.rb +++ b/app/controllers/api/v2/search_controller.rb @@ -3,7 +3,7 @@ class Api::V2::SearchController < Api::BaseController include Authorization - RESULTS_LIMIT = 40 + RESULTS_LIMIT = 20 before_action -> { authorize_if_got_token! :read, :'read:search' } before_action :validate_search_params! @@ -63,6 +63,6 @@ class Api::V2::SearchController < Api::BaseController end def search_params - params.permit(:type, :offset, :min_id, :max_id, :account_id, :following, :searchability) + params.permit(:type, :offset, :min_id, :max_id, :account_id, :following) end end diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 66e0f7e305..5f8725f6fc 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -9,7 +9,6 @@ class ApplicationController < ActionController::Base include UserTrackingConcern include SessionTrackingConcern include CacheConcern - include PreloadingConcern include DomainControlHelper include DatabaseHelper include AuthorizedFetchHelper @@ -130,7 +129,7 @@ class ApplicationController < ActionController::Base end def single_user_mode? - @single_user_mode ||= Rails.configuration.x.single_user_mode && Account.without_internal.exists? + @single_user_mode ||= Rails.configuration.x.single_user_mode && Account.where('id > 0').exists? end def use_seamless_external_login? @@ -179,7 +178,7 @@ class ApplicationController < ActionController::Base respond_to do |format| format.any { render 'errors/self_destruct', layout: 'auth', status: 410, formats: [:html] } - format.json { render json: { error: Rack::Utils::HTTP_STATUS_CODES[410] }, status: 410 } + format.json { render json: { error: Rack::Utils::HTTP_STATUS_CODES[410] }, status: code } end end diff --git a/app/controllers/auth/confirmations_controller.rb b/app/controllers/auth/confirmations_controller.rb index a99dceeb25..d9cd630905 100644 --- a/app/controllers/auth/confirmations_controller.rb +++ b/app/controllers/auth/confirmations_controller.rb @@ -2,13 +2,12 @@ class Auth::ConfirmationsController < Devise::ConfirmationsController include Auth::CaptchaConcern - include RegistrationLimitationHelper layout 'auth' before_action :set_body_classes before_action :set_confirmation_user!, only: [:show, :confirm_captcha] - before_action :redirect_confirmed_user, if: :signed_in_confirmed_user? + before_action :require_unconfirmed! before_action :extend_csp_for_captcha!, only: [:show, :confirm_captcha] before_action :require_captcha_if_needed!, only: [:show] @@ -17,11 +16,6 @@ class Auth::ConfirmationsController < Devise::ConfirmationsController skip_before_action :require_functional! def show - if reach_registrations_limit? && !current_user&.valid_invitation? - render :limitation_error - return - end - old_session_values = session.to_hash reset_session session.update old_session_values.except('session_id') @@ -71,12 +65,10 @@ class Auth::ConfirmationsController < Devise::ConfirmationsController @confirmation_user.nil? || @confirmation_user.confirmed? end - def redirect_confirmed_user - redirect_to(current_user.approved? ? root_path : edit_user_registration_path) - end - - def signed_in_confirmed_user? - user_signed_in? && current_user.confirmed? && current_user.unconfirmed_email.blank? + def require_unconfirmed! + if user_signed_in? && current_user.confirmed? && current_user.unconfirmed_email.blank? + redirect_to(current_user.approved? ? root_path : edit_user_registration_path) + end end def set_body_classes diff --git a/app/controllers/auth/omniauth_callbacks_controller.rb b/app/controllers/auth/omniauth_callbacks_controller.rb index 9d496220a3..707b50ef9e 100644 --- a/app/controllers/auth/omniauth_callbacks_controller.rb +++ b/app/controllers/auth/omniauth_callbacks_controller.rb @@ -7,7 +7,7 @@ class Auth::OmniauthCallbacksController < Devise::OmniauthCallbacksController def self.provides_callback_for(provider) define_method provider do @provider = provider - @user = User.find_for_omniauth(request.env['omniauth.auth'], current_user) + @user = User.find_for_oauth(request.env['omniauth.auth'], current_user) if @user.persisted? record_login_activity @@ -17,9 +17,6 @@ class Auth::OmniauthCallbacksController < Devise::OmniauthCallbacksController session["devise.#{provider}_data"] = request.env['omniauth.auth'] redirect_to new_user_registration_url end - rescue ActiveRecord::RecordInvalid - flash[:alert] = I18n.t('devise.failure.omniauth_user_creation_failure') if is_navigational_format? - redirect_to new_user_session_url end end diff --git a/app/controllers/auth/passwords_controller.rb b/app/controllers/auth/passwords_controller.rb index de001f062b..a752194d5b 100644 --- a/app/controllers/auth/passwords_controller.rb +++ b/app/controllers/auth/passwords_controller.rb @@ -2,7 +2,7 @@ class Auth::PasswordsController < Devise::PasswordsController skip_before_action :check_self_destruct! - before_action :redirect_invalid_reset_token, only: :edit, unless: :reset_password_token_is_valid? + before_action :check_validity_of_reset_password_token, only: :edit before_action :set_body_classes layout 'auth' @@ -19,9 +19,11 @@ class Auth::PasswordsController < Devise::PasswordsController private - def redirect_invalid_reset_token - flash[:error] = I18n.t('auth.invalid_reset_password_token') - redirect_to new_password_path(resource_name) + def check_validity_of_reset_password_token + unless reset_password_token_is_valid? + flash[:error] = I18n.t('auth.invalid_reset_password_token') + redirect_to new_password_path(resource_name) + end end def set_body_classes diff --git a/app/controllers/auth/sessions_controller.rb b/app/controllers/auth/sessions_controller.rb index 6ed7b2baac..148ad53755 100644 --- a/app/controllers/auth/sessions_controller.rb +++ b/app/controllers/auth/sessions_controller.rb @@ -1,10 +1,6 @@ # frozen_string_literal: true class Auth::SessionsController < Devise::SessionsController - include Redisable - - MAX_2FA_ATTEMPTS_PER_HOUR = 10 - layout 'auth' skip_before_action :check_self_destruct! @@ -134,23 +130,9 @@ class Auth::SessionsController < Devise::SessionsController session.delete(:attempt_user_updated_at) end - def clear_2fa_attempt_from_user(user) - redis.del(second_factor_attempts_key(user)) - end - - def check_second_factor_rate_limits(user) - attempts, = redis.multi do |multi| - multi.incr(second_factor_attempts_key(user)) - multi.expire(second_factor_attempts_key(user), 1.hour) - end - - attempts >= MAX_2FA_ATTEMPTS_PER_HOUR - end - def on_authentication_success(user, security_measure) @on_authentication_success_called = true - clear_2fa_attempt_from_user(user) clear_attempt_from_session user.update_sign_in!(new_sign_in: true) @@ -181,16 +163,5 @@ class Auth::SessionsController < Devise::SessionsController ip: request.remote_ip, user_agent: request.user_agent ) - - # Only send a notification email every hour at most - return if redis.get("2fa_failure_notification:#{user.id}").present? - - redis.set("2fa_failure_notification:#{user.id}", '1', ex: 1.hour) - - UserMailer.failed_2fa(user, request.remote_ip, request.user_agent, Time.now.utc).deliver_later! - end - - def second_factor_attempts_key(user) - "2fa_auth_attempts:#{user.id}:#{Time.now.utc.hour}" end end diff --git a/app/controllers/concerns/api/error_handling.rb b/app/controllers/concerns/api/error_handling.rb deleted file mode 100644 index ad559fe2d7..0000000000 --- a/app/controllers/concerns/api/error_handling.rb +++ /dev/null @@ -1,52 +0,0 @@ -# frozen_string_literal: true - -module Api::ErrorHandling - extend ActiveSupport::Concern - - included do - rescue_from ActiveRecord::RecordInvalid, Mastodon::ValidationError do |e| - render json: { error: e.to_s }, status: 422 - end - - rescue_from ActiveRecord::RecordNotUnique do - render json: { error: 'Duplicate record' }, status: 422 - end - - rescue_from Date::Error do - render json: { error: 'Invalid date supplied' }, status: 422 - end - - rescue_from ActiveRecord::RecordNotFound do - render json: { error: 'Record not found' }, status: 404 - end - - rescue_from HTTP::Error, Mastodon::UnexpectedResponseError do - render json: { error: 'Remote data could not be fetched' }, status: 503 - end - - rescue_from OpenSSL::SSL::SSLError do - render json: { error: 'Remote SSL certificate could not be verified' }, status: 503 - end - - rescue_from Mastodon::NotPermittedError do - render json: { error: 'This action is not allowed' }, status: 403 - end - - rescue_from Seahorse::Client::NetworkingError do |e| - Rails.logger.warn "Storage server error: #{e}" - render json: { error: 'There was a temporary problem serving your request, please try again' }, status: 503 - end - - rescue_from Mastodon::RaceConditionError, Stoplight::Error::RedLight do - render json: { error: 'There was a temporary problem serving your request, please try again' }, status: 503 - end - - rescue_from Mastodon::RateLimitExceededError do - render json: { error: I18n.t('errors.429') }, status: 429 - end - - rescue_from ActionController::ParameterMissing, Mastodon::InvalidParameterError do |e| - render json: { error: e.to_s }, status: 400 - end - end -end diff --git a/app/controllers/concerns/api/pagination.rb b/app/controllers/concerns/api/pagination.rb deleted file mode 100644 index d84a1d99f7..0000000000 --- a/app/controllers/concerns/api/pagination.rb +++ /dev/null @@ -1,36 +0,0 @@ -# frozen_string_literal: true - -module Api::Pagination - extend ActiveSupport::Concern - - protected - - def pagination_max_id - pagination_collection.last.id - end - - def pagination_since_id - pagination_collection.first.id - end - - def set_pagination_headers(next_path = nil, prev_path = nil) - links = [] - links << [next_path, [%w(rel next)]] if next_path - links << [prev_path, [%w(rel prev)]] if prev_path - response.headers['Link'] = LinkHeader.new(links) unless links.empty? - end - - def require_valid_pagination_options! - render json: { error: 'Pagination values for `offset` and `limit` must be positive' }, status: 400 if pagination_options_invalid? - end - - private - - def insert_pagination_headers - set_pagination_headers(next_path, prev_path) - end - - def pagination_options_invalid? - params.slice(:limit, :offset).values.map(&:to_i).any?(&:negative?) - end -end diff --git a/app/controllers/concerns/auth/two_factor_authentication_concern.rb b/app/controllers/concerns/auth/two_factor_authentication_concern.rb index 404164751a..effdb8d21c 100644 --- a/app/controllers/concerns/auth/two_factor_authentication_concern.rb +++ b/app/controllers/concerns/auth/two_factor_authentication_concern.rb @@ -66,11 +66,6 @@ module Auth::TwoFactorAuthenticationConcern end def authenticate_with_two_factor_via_otp(user) - if check_second_factor_rate_limits(user) - flash.now[:alert] = I18n.t('users.rate_limited') - return prompt_for_two_factor(user) - end - if valid_otp_attempt?(user) on_authentication_success(user, :otp) else diff --git a/app/controllers/concerns/cache_concern.rb b/app/controllers/concerns/cache_concern.rb index 3dc0ea840a..62f763fe2f 100644 --- a/app/controllers/concerns/cache_concern.rb +++ b/app/controllers/concerns/cache_concern.rb @@ -28,16 +28,6 @@ module CacheConcern def render_with_cache(**options) raise ArgumentError, 'Only JSON render calls are supported' unless options.key?(:json) || block_given? - if options.delete(:cancel_cache) - if block_given? - options[:json] = yield - elsif options[:json].is_a?(Symbol) - options[:json] = send(options[:json]) - end - - return render(options) - end - key = options.delete(:key) || [[params[:controller], params[:action]].join('/'), options[:json].respond_to?(:cache_key) ? options[:json].cache_key : nil, options[:fields].nil? ? nil : options[:fields].join(',')].compact.join(':') expires_in = options.delete(:expires_in) || 3.minutes body = Rails.cache.read(key, raw: true) @@ -55,4 +45,28 @@ module CacheConcern Rails.cache.write(key, response.body, expires_in: expires_in, raw: true) end end + + def cache_collection(raw, klass) + return raw unless klass.respond_to?(:with_includes) + + raw = raw.cache_ids.to_a if raw.is_a?(ActiveRecord::Relation) + return [] if raw.empty? + + cached_keys_with_value = Rails.cache.read_multi(*raw).transform_keys(&:id) + + uncached_ids = raw.map(&:id) - cached_keys_with_value.keys + + klass.reload_stale_associations!(cached_keys_with_value.values) if klass.respond_to?(:reload_stale_associations!) + + unless uncached_ids.empty? + uncached = klass.where(id: uncached_ids).with_includes.index_by(&:id) + Rails.cache.write_multi(uncached.values.to_h { |i| [i, i] }) + end + + raw.filter_map { |item| cached_keys_with_value[item.id] || uncached[item.id] } + end + + def cache_collection_paginated_by_id(raw, klass, limit, options) + cache_collection raw.cache_ids.to_a_paginated_by_id(limit, options), klass + end end diff --git a/app/controllers/concerns/preloading_concern.rb b/app/controllers/concerns/preloading_concern.rb deleted file mode 100644 index 61e2213649..0000000000 --- a/app/controllers/concerns/preloading_concern.rb +++ /dev/null @@ -1,17 +0,0 @@ -# frozen_string_literal: true - -module PreloadingConcern - extend ActiveSupport::Concern - - def preload_collection(scope, klass) - return scope unless klass.respond_to?(:preload_cacheable_associations) - - scope.to_a.tap do |records| - klass.preload_cacheable_associations(records) - end - end - - def preload_collection_paginated_by_id(scope, klass, limit, options) - preload_collection scope.to_a_paginated_by_id(limit, options), klass - end -end diff --git a/app/controllers/concerns/signature_verification.rb b/app/controllers/concerns/signature_verification.rb index 68f09ee023..35391e64c4 100644 --- a/app/controllers/concerns/signature_verification.rb +++ b/app/controllers/concerns/signature_verification.rb @@ -12,6 +12,39 @@ module SignatureVerification class SignatureVerificationError < StandardError; end + class SignatureParamsParser < Parslet::Parser + rule(:token) { match("[0-9a-zA-Z!#$%&'*+.^_`|~-]").repeat(1).as(:token) } + rule(:quoted_string) { str('"') >> (qdtext | quoted_pair).repeat.as(:quoted_string) >> str('"') } + # qdtext and quoted_pair are not exactly according to spec but meh + rule(:qdtext) { match('[^\\\\"]') } + rule(:quoted_pair) { str('\\') >> any } + rule(:bws) { match('\s').repeat } + rule(:param) { (token.as(:key) >> bws >> str('=') >> bws >> (token | quoted_string).as(:value)).as(:param) } + rule(:comma) { bws >> str(',') >> bws } + # Old versions of node-http-signature add an incorrect "Signature " prefix to the header + rule(:buggy_prefix) { str('Signature ') } + rule(:params) { buggy_prefix.maybe >> (param >> (comma >> param).repeat).as(:params) } + root(:params) + end + + class SignatureParamsTransformer < Parslet::Transform + rule(params: subtree(:param)) do + (param.is_a?(Array) ? param : [param]).each_with_object({}) { |(key, value), hash| hash[key] = value } + end + + rule(param: { key: simple(:key), value: simple(:val) }) do + [key, val] + end + + rule(quoted_string: simple(:string)) do + string.to_s + end + + rule(token: simple(:string)) do + string.to_s + end + end + def require_account_signature! render json: signature_verification_failure_reason, status: signature_verification_failure_code unless signed_request_account end @@ -66,7 +99,7 @@ module SignatureVerification compare_signed_string = build_signed_string(include_query_string: false) return actor unless verify_signature(actor, signature, compare_signed_string).nil? - actor = stoplight_wrapper.run { actor_refresh_key!(actor) } + actor = stoplight_wrap_request { actor_refresh_key!(actor) } raise SignatureVerificationError, "Could not refresh public key #{signature_params['keyId']}" if actor.nil? @@ -102,8 +135,12 @@ module SignatureVerification end def signature_params - @signature_params ||= SignatureParser.parse(request.headers['Signature']) - rescue SignatureParser::ParsingError + @signature_params ||= begin + raw_signature = request.headers['Signature'] + tree = SignatureParamsParser.new.parse(raw_signature) + SignatureParamsTransformer.new.apply(tree) + end + rescue Parslet::ParseFailed raise SignatureVerificationError, 'Error parsing signature parameters' end @@ -226,10 +263,10 @@ module SignatureVerification end if key_id.start_with?('acct:') - stoplight_wrapper.run { ResolveAccountService.new.call(key_id.delete_prefix('acct:'), suppress_errors: false) } + stoplight_wrap_request { ResolveAccountService.new.call(key_id.delete_prefix('acct:'), suppress_errors: false) } elsif !ActivityPub::TagManager.instance.local_uri?(key_id) account = ActivityPub::TagManager.instance.uri_to_actor(key_id) - account ||= stoplight_wrapper.run { ActivityPub::FetchRemoteKeyService.new.call(key_id, suppress_errors: false) } + account ||= stoplight_wrap_request { ActivityPub::FetchRemoteKeyService.new.call(key_id, id: false, suppress_errors: false) } account end rescue Mastodon::PrivateNetworkAddressError => e @@ -238,11 +275,12 @@ module SignatureVerification raise SignatureVerificationError, e.message end - def stoplight_wrapper - Stoplight("source:#{request.remote_ip}") + def stoplight_wrap_request(&block) + Stoplight("source:#{request.remote_ip}", &block) .with_threshold(1) .with_cool_off_time(5.minutes.seconds) .with_error_handler { |error, handle| error.is_a?(HTTP::Error) || error.is_a?(OpenSSL::SSL::SSLError) ? handle.call(error) : raise(error) } + .run end def actor_refresh_key!(actor) diff --git a/app/controllers/concerns/web_app_controller_concern.rb b/app/controllers/concerns/web_app_controller_concern.rb index b8c909877b..5687d6e5b6 100644 --- a/app/controllers/concerns/web_app_controller_concern.rb +++ b/app/controllers/concerns/web_app_controller_concern.rb @@ -21,19 +21,10 @@ module WebAppControllerConcern def redirect_unauthenticated_to_permalinks! return if user_signed_in? && current_account.moved_to_account_id.nil? - permalink_redirector = PermalinkRedirector.new(request.path) - return if permalink_redirector.redirect_path.blank? + redirect_path = PermalinkRedirector.new(request.path).redirect_path + return if redirect_path.blank? expires_in(15.seconds, public: true, stale_while_revalidate: 30.seconds, stale_if_error: 1.day) unless user_signed_in? - - respond_to do |format| - format.html do - redirect_to(permalink_redirector.redirect_confirmation_path, allow_other_host: false) - end - - format.json do - redirect_to(permalink_redirector.redirect_uri, allow_other_host: true) - end - end + redirect_to(redirect_path) end end diff --git a/app/controllers/custom_css_controller.rb b/app/controllers/custom_css_controller.rb index eb6417698a..62f8e0d772 100644 --- a/app/controllers/custom_css_controller.rb +++ b/app/controllers/custom_css_controller.rb @@ -16,6 +16,6 @@ class CustomCssController < ActionController::Base # rubocop:disable Rails/Appli helper_method :custom_css_styles def set_user_roles - @user_roles = UserRole.providing_styles + @user_roles = UserRole.where(highlighted: true).where.not(color: [nil, '']) end end diff --git a/app/controllers/filters_controller.rb b/app/controllers/filters_controller.rb index 0b7f9f9e68..bd9964426b 100644 --- a/app/controllers/filters_controller.rb +++ b/app/controllers/filters_controller.rb @@ -49,7 +49,7 @@ class FiltersController < ApplicationController end def resource_params - params.require(:custom_filter).permit(:title, :expires_in, :filter_action, :exclude_follows, :exclude_localusers, :exclude_quote, context: [], keywords_attributes: [:id, :keyword, :whole_word, :_destroy]) + params.require(:custom_filter).permit(:title, :expires_in, :filter_action, context: [], keywords_attributes: [:id, :keyword, :whole_word, :_destroy]) end def set_body_classes diff --git a/app/controllers/follower_accounts_controller.rb b/app/controllers/follower_accounts_controller.rb index 44d90ec671..5effd9495e 100644 --- a/app/controllers/follower_accounts_controller.rb +++ b/app/controllers/follower_accounts_controller.rb @@ -62,7 +62,7 @@ class FollowerAccountsController < ApplicationController ActivityPub::CollectionPresenter.new( id: account_followers_url(@account, page: params.fetch(:page, 1)), type: :ordered, - size: @account.public_followers_count, + size: @account.followers_count, items: follows.map { |follow| ActivityPub::TagManager.instance.uri_for(follow.account) }, part_of: account_followers_url(@account), next: next_page_url, @@ -72,7 +72,7 @@ class FollowerAccountsController < ApplicationController ActivityPub::CollectionPresenter.new( id: account_followers_url(@account), type: :ordered, - size: @account.public_followers_count, + size: @account.followers_count, first: page_url(1) ) end diff --git a/app/controllers/following_accounts_controller.rb b/app/controllers/following_accounts_controller.rb index 87a702f711..268fad96d0 100644 --- a/app/controllers/following_accounts_controller.rb +++ b/app/controllers/following_accounts_controller.rb @@ -65,7 +65,7 @@ class FollowingAccountsController < ApplicationController ActivityPub::CollectionPresenter.new( id: account_following_index_url(@account, page: params.fetch(:page, 1)), type: :ordered, - size: @account.public_following_count, + size: @account.following_count, items: follows.map { |follow| ActivityPub::TagManager.instance.uri_for(follow.target_account) }, part_of: account_following_index_url(@account), next: next_page_url, @@ -75,7 +75,7 @@ class FollowingAccountsController < ApplicationController ActivityPub::CollectionPresenter.new( id: account_following_index_url(@account), type: :ordered, - size: @account.public_following_count, + size: @account.following_count, first: page_url(1) ) end diff --git a/app/controllers/instance_actors_controller.rb b/app/controllers/instance_actors_controller.rb index f2b1eaa3e7..8422d74bc3 100644 --- a/app/controllers/instance_actors_controller.rb +++ b/app/controllers/instance_actors_controller.rb @@ -6,8 +6,6 @@ class InstanceActorsController < ActivityPub::BaseController serialization_scope nil before_action :set_account - - skip_before_action :authenticate_user! # From `AccountOwnedConcern` skip_before_action :require_functional! skip_before_action :update_user_sign_in @@ -18,11 +16,6 @@ class InstanceActorsController < ActivityPub::BaseController private - # Skips various `before_action` from `AccountOwnedConcern` - def account_required? - false - end - def set_account @account = Account.representative end diff --git a/app/controllers/intents_controller.rb b/app/controllers/intents_controller.rb index 65c315208d..ea024e30e6 100644 --- a/app/controllers/intents_controller.rb +++ b/app/controllers/intents_controller.rb @@ -1,26 +1,27 @@ # frozen_string_literal: true class IntentsController < ApplicationController - EXPECTED_SCHEME = 'web+mastodon' + before_action :check_uri - before_action :handle_invalid_uri, unless: :valid_uri? rescue_from Addressable::URI::InvalidURIError, with: :handle_invalid_uri def show - case uri.host - when 'follow' - redirect_to authorize_interaction_path(uri: uri.query_values['uri'].delete_prefix('acct:')) - when 'share' - redirect_to share_path(text: uri.query_values['text']) - else - handle_invalid_uri + if uri.scheme == 'web+mastodon' + case uri.host + when 'follow' + return redirect_to authorize_interaction_path(uri: uri.query_values['uri'].delete_prefix('acct:')) + when 'share' + return redirect_to share_path(text: uri.query_values['text']) + end end + + not_found end private - def valid_uri? - uri.present? && uri.scheme == EXPECTED_SCHEME + def check_uri + not_found if uri.blank? end def handle_invalid_uri diff --git a/app/controllers/redirect/accounts_controller.rb b/app/controllers/redirect/accounts_controller.rb deleted file mode 100644 index 713ccf2ca1..0000000000 --- a/app/controllers/redirect/accounts_controller.rb +++ /dev/null @@ -1,10 +0,0 @@ -# frozen_string_literal: true - -class Redirect::AccountsController < Redirect::BaseController - private - - def set_resource - @resource = Account.find(params[:id]) - not_found if @resource.local? - end -end diff --git a/app/controllers/redirect/base_controller.rb b/app/controllers/redirect/base_controller.rb deleted file mode 100644 index 90894ec1ed..0000000000 --- a/app/controllers/redirect/base_controller.rb +++ /dev/null @@ -1,24 +0,0 @@ -# frozen_string_literal: true - -class Redirect::BaseController < ApplicationController - vary_by 'Accept-Language' - - before_action :set_resource - before_action :set_app_body_class - - def show - @redirect_path = ActivityPub::TagManager.instance.url_for(@resource) - - render 'redirects/show', layout: 'application' - end - - private - - def set_app_body_class - @body_classes = 'app-body' - end - - def set_resource - raise NotImplementedError - end -end diff --git a/app/controllers/redirect/statuses_controller.rb b/app/controllers/redirect/statuses_controller.rb deleted file mode 100644 index 37a938c651..0000000000 --- a/app/controllers/redirect/statuses_controller.rb +++ /dev/null @@ -1,10 +0,0 @@ -# frozen_string_literal: true - -class Redirect::StatusesController < Redirect::BaseController - private - - def set_resource - @resource = Status.find(params[:id]) - not_found if @resource.local? || !@resource.distributable? - end -end diff --git a/app/controllers/settings/applications_controller.rb b/app/controllers/settings/applications_controller.rb index 6849979b11..d4b7205681 100644 --- a/app/controllers/settings/applications_controller.rb +++ b/app/controllers/settings/applications_controller.rb @@ -13,7 +13,7 @@ class Settings::ApplicationsController < Settings::BaseController def new @application = Doorkeeper::Application.new( redirect_uri: Doorkeeper.configuration.native_redirect_uri, - scopes: 'read:me' + scopes: 'read write follow' ) end diff --git a/app/controllers/settings/featured_tags_controller.rb b/app/controllers/settings/featured_tags_controller.rb index 90c112e219..c384402650 100644 --- a/app/controllers/settings/featured_tags_controller.rb +++ b/app/controllers/settings/featured_tags_controller.rb @@ -38,7 +38,7 @@ class Settings::FeaturedTagsController < Settings::BaseController end def set_recently_used_tags - @recently_used_tags = Tag.suggestions_for_account(current_account).limit(10) + @recently_used_tags = Tag.recently_used(current_account).where.not(id: @featured_tags.map(&:id)).limit(10) end def featured_tag_params diff --git a/app/controllers/settings/imports_controller.rb b/app/controllers/settings/imports_controller.rb index 569aa07c53..983caf22fa 100644 --- a/app/controllers/settings/imports_controller.rb +++ b/app/controllers/settings/imports_controller.rb @@ -31,7 +31,7 @@ class Settings::ImportsController < Settings::BaseController def show; end def failures - @bulk_import = current_account.bulk_imports.state_finished.find(params[:id]) + @bulk_import = current_account.bulk_imports.where(state: :finished).find(params[:id]) respond_to do |format| format.csv do @@ -92,7 +92,7 @@ class Settings::ImportsController < Settings::BaseController end def set_bulk_import - @bulk_import = current_account.bulk_imports.state_unconfirmed.find(params[:id]) + @bulk_import = current_account.bulk_imports.where(state: :unconfirmed).find(params[:id]) end def set_recent_imports diff --git a/app/controllers/settings/preferences/base_controller.rb b/app/controllers/settings/preferences/base_controller.rb index ce6e2bba44..c1f8b49898 100644 --- a/app/controllers/settings/preferences/base_controller.rb +++ b/app/controllers/settings/preferences/base_controller.rb @@ -19,16 +19,6 @@ class Settings::Preferences::BaseController < Settings::BaseController end def user_params - original_user_params.tap do |params| - params[:settings_attributes]&.merge!(disabled_visibilities_params[:settings_attributes] || {}) - end - end - - def original_user_params params.require(:user).permit(:locale, :time_zone, chosen_languages: [], settings_attributes: UserSettings.keys) end - - def disabled_visibilities_params - params.require(:user).permit(settings_attributes: { enabled_visibilities: [] }) - end end diff --git a/app/controllers/settings/preferences/other_controller.rb b/app/controllers/settings/preferences/other_controller.rb index 02925fa6e5..a19fbf5c48 100644 --- a/app/controllers/settings/preferences/other_controller.rb +++ b/app/controllers/settings/preferences/other_controller.rb @@ -1,13 +1,6 @@ # frozen_string_literal: true class Settings::Preferences::OtherController < Settings::Preferences::BaseController - include DtlHelper - - def show - @dtl_enabled = dtl_enabled? - @dtl_tag = dtl_tag_name - end - private def after_update_redirect_path diff --git a/app/controllers/settings/preferences/reaching_controller.rb b/app/controllers/settings/preferences/reaching_controller.rb deleted file mode 100644 index bd3e6ae9b2..0000000000 --- a/app/controllers/settings/preferences/reaching_controller.rb +++ /dev/null @@ -1,9 +0,0 @@ -# frozen_string_literal: true - -class Settings::Preferences::ReachingController < Settings::Preferences::BaseController - private - - def after_update_redirect_path - settings_preferences_reaching_path - end -end diff --git a/app/controllers/settings/privacy_extra_controller.rb b/app/controllers/settings/privacy_extra_controller.rb deleted file mode 100644 index 49c71d5071..0000000000 --- a/app/controllers/settings/privacy_extra_controller.rb +++ /dev/null @@ -1,27 +0,0 @@ -# frozen_string_literal: true - -class Settings::PrivacyExtraController < Settings::BaseController - before_action :set_account - - def show; end - - def update - if UpdateAccountService.new.call(@account, account_params.except(:settings)) - current_user.update!(settings_attributes: account_params[:settings]) - ActivityPub::UpdateDistributionWorker.perform_async(@account.id) - redirect_to settings_privacy_extra_path, notice: I18n.t('generic.changes_saved_msg') - else - render :show - end - end - - private - - def account_params - params.require(:account).permit(:subscription_policy, settings: UserSettings.keys) - end - - def set_account - @account = current_account - end -end diff --git a/app/controllers/settings/profiles_controller.rb b/app/controllers/settings/profiles_controller.rb index a023b073b3..8ae69b7fe0 100644 --- a/app/controllers/settings/profiles_controller.rb +++ b/app/controllers/settings/profiles_controller.rb @@ -20,8 +20,7 @@ class Settings::ProfilesController < Settings::BaseController private def account_params - # params.require(:account).permit(:display_name, :note, :bio_markdown, :avatar, :header, :locked, :my_actor_type, :searchability, :dissubscribable, :discoverable, :discoverable_local, :hide_collections, fields_attributes: [:name, :value]) - params.require(:account).permit(:display_name, :note, :bio_markdown, :avatar, :header, :bot, :my_actor_type, :dissubscribable, fields_attributes: [:name, :value]) + params.require(:account).permit(:display_name, :note, :avatar, :header, :bot, fields_attributes: [:name, :value]) end def set_account diff --git a/app/controllers/settings/two_factor_authentication/webauthn_credentials_controller.rb b/app/controllers/settings/two_factor_authentication/webauthn_credentials_controller.rb index 9714d54f95..c86ede4f3a 100644 --- a/app/controllers/settings/two_factor_authentication/webauthn_credentials_controller.rb +++ b/app/controllers/settings/two_factor_authentication/webauthn_credentials_controller.rb @@ -6,8 +6,8 @@ module Settings skip_before_action :check_self_destruct! skip_before_action :require_functional! - before_action :redirect_invalid_otp, unless: -> { current_user.otp_enabled? } - before_action :redirect_invalid_webauthn, only: [:index, :destroy], unless: -> { current_user.webauthn_enabled? } + before_action :require_otp_enabled + before_action :require_webauthn_enabled, only: [:index, :destroy] def index; end def new; end @@ -85,14 +85,18 @@ module Settings private - def redirect_invalid_otp - flash[:error] = t('webauthn_credentials.otp_required') - redirect_to settings_two_factor_authentication_methods_path + def require_otp_enabled + unless current_user.otp_enabled? + flash[:error] = t('webauthn_credentials.otp_required') + redirect_to settings_two_factor_authentication_methods_path + end end - def redirect_invalid_webauthn - flash[:error] = t('webauthn_credentials.not_enabled') - redirect_to settings_two_factor_authentication_methods_path + def require_webauthn_enabled + unless current_user.webauthn_enabled? + flash[:error] = t('webauthn_credentials.not_enabled') + redirect_to settings_two_factor_authentication_methods_path + end end end end diff --git a/app/controllers/severed_relationships_controller.rb b/app/controllers/severed_relationships_controller.rb deleted file mode 100644 index 168e85e3fe..0000000000 --- a/app/controllers/severed_relationships_controller.rb +++ /dev/null @@ -1,61 +0,0 @@ -# frozen_string_literal: true - -class SeveredRelationshipsController < ApplicationController - layout 'admin' - - before_action :authenticate_user! - before_action :set_body_classes - before_action :set_cache_headers - - before_action :set_event, only: [:following, :followers] - - def index - @events = AccountRelationshipSeveranceEvent.where(account: current_account) - end - - def following - respond_to do |format| - format.csv { send_data following_data, filename: "following-#{@event.target_name}-#{@event.created_at.to_date.iso8601}.csv" } - end - end - - def followers - respond_to do |format| - format.csv { send_data followers_data, filename: "followers-#{@event.target_name}-#{@event.created_at.to_date.iso8601}.csv" } - end - end - - private - - def set_event - @event = AccountRelationshipSeveranceEvent.find(params[:id]) - end - - def following_data - CSV.generate(headers: ['Account address', 'Show boosts', 'Notify on new posts', 'Languages'], write_headers: true) do |csv| - @event.severed_relationships.active.about_local_account(current_account).includes(:remote_account).reorder(id: :desc).each do |follow| - csv << [acct(follow.target_account), follow.show_reblogs, follow.notify, follow.languages&.join(', ')] - end - end - end - - def followers_data - CSV.generate(headers: ['Account address'], write_headers: true) do |csv| - @event.severed_relationships.passive.about_local_account(current_account).includes(:remote_account).reorder(id: :desc).each do |follow| - csv << [acct(follow.account)] - end - end - end - - def acct(account) - account.local? ? account.local_username_and_domain : account.acct - end - - def set_body_classes - @body_classes = 'admin' - end - - def set_cache_headers - response.cache_control.replace(private: true, no_store: true) - end -end diff --git a/app/controllers/statuses_cleanup_controller.rb b/app/controllers/statuses_cleanup_controller.rb index 04c3c0e05c..4a3fc10ca4 100644 --- a/app/controllers/statuses_cleanup_controller.rb +++ b/app/controllers/statuses_cleanup_controller.rb @@ -31,7 +31,7 @@ class StatusesCleanupController < ApplicationController end def resource_params - params.require(:account_statuses_cleanup_policy).permit(:enabled, :min_status_age, :keep_direct, :keep_pinned, :keep_polls, :keep_media, :keep_self_fav, :keep_self_bookmark, :keep_self_emoji, :min_favs, :min_reblogs, :min_emojis) + params.require(:account_statuses_cleanup_policy).permit(:enabled, :min_status_age, :keep_direct, :keep_pinned, :keep_polls, :keep_media, :keep_self_fav, :keep_self_bookmark, :min_favs, :min_reblogs) end def set_body_classes diff --git a/app/controllers/statuses_controller.rb b/app/controllers/statuses_controller.rb index be87161cc8..db7eddd78b 100644 --- a/app/controllers/statuses_controller.rb +++ b/app/controllers/statuses_controller.rb @@ -29,15 +29,15 @@ class StatusesController < ApplicationController end format.json do - expires_in 3.minutes, public: true if @status.distributable? && public_fetch_mode? && !misskey_software? && !@status.expires? - render_with_cache json: @status, content_type: 'application/activity+json', serializer: status_activity_serializer, adapter: ActivityPub::Adapter, cancel_cache: misskey_software? + expires_in 3.minutes, public: true if @status.distributable? && public_fetch_mode? + render_with_cache json: @status, content_type: 'application/activity+json', serializer: ActivityPub::NoteSerializer, adapter: ActivityPub::Adapter end end end def activity - expires_in 3.minutes, public: @status.distributable? && public_fetch_mode? && !misskey_software? - render_with_cache json: ActivityPub::ActivityPresenter.from_status(@status, for_misskey: misskey_software?), content_type: 'application/activity+json', serializer: ActivityPub::ActivitySerializer, adapter: ActivityPub::Adapter, cancel_cache: misskey_software? + expires_in 3.minutes, public: @status.distributable? && public_fetch_mode? + render_with_cache json: ActivityPub::ActivityPresenter.from_status(@status), content_type: 'application/activity+json', serializer: ActivityPub::ActivitySerializer, adapter: ActivityPub::Adapter end def embed @@ -61,41 +61,11 @@ class StatusesController < ApplicationController def set_status @status = @account.statuses.find(params[:id]) - - if request.authorization.present? && request.authorization.match(/^Bearer /i) - raise Mastodon::NotPermittedError unless @status.capability_tokens.find_by(token: request.authorization.gsub(/^Bearer /i, '')) - elsif request.format == :json && @status.expires? - raise Mastodon::NotPermittedError unless StatusPolicy.new(signed_request_account, @status).show_activity? - else - authorize @status, :show? - end + authorize @status, :show? rescue Mastodon::NotPermittedError not_found end - def misskey_software? - return @misskey_software if defined?(@misskey_software) - - @misskey_software = false - - return false if !@status.local? || signed_request_account&.domain.blank? || !@status.sending_maybe_compromised_privacy? - - return @misskey_software = true if DomainBlock.detect_invalid_subscription?(signed_request_account.domain) - - info = InstanceInfo.find_by(domain: signed_request_account.domain) - return false if info.nil? - - @misskey_software = %w(misskey calckey cherrypick sharkey).include?(info.software) - end - - def status_activity_serializer - if misskey_software? - ActivityPub::NoteForMisskeySerializer - else - ActivityPub::NoteSerializer - end - end - def redirect_to_original redirect_to(ActivityPub::TagManager.instance.url_for(@status.reblog), allow_other_host: true) if @status.reblog? end diff --git a/app/controllers/tags_controller.rb b/app/controllers/tags_controller.rb index d6c0d872c8..b0bdbde956 100644 --- a/app/controllers/tags_controller.rb +++ b/app/controllers/tags_controller.rb @@ -45,7 +45,7 @@ class TagsController < ApplicationController end def set_statuses - @statuses = preload_collection(TagFeed.new(@tag, nil, local: @local).get(limit_param), Status) + @statuses = cache_collection(TagFeed.new(@tag, nil, local: @local).get(limit_param), Status) end def limit_param diff --git a/app/controllers/well_known/oauth_metadata_controller.rb b/app/controllers/well_known/oauth_metadata_controller.rb deleted file mode 100644 index c80be2d652..0000000000 --- a/app/controllers/well_known/oauth_metadata_controller.rb +++ /dev/null @@ -1,23 +0,0 @@ -# frozen_string_literal: true - -module WellKnown - class OauthMetadataController < ActionController::Base # rubocop:disable Rails/ApplicationController - include CacheConcern - - # Prevent `active_model_serializer`'s `ActionController::Serialization` from calling `current_user` - # and thus re-issuing session cookies - serialization_scope nil - - def show - # Due to this document potentially changing between Mastodon versions (as - # new OAuth scopes are added), we don't use expires_in to cache upstream, - # instead just caching in the rails cache: - render_with_cache( - json: ::OauthMetadataPresenter.new, - serializer: ::OauthMetadataSerializer, - content_type: 'application/json', - expires_in: 15.minutes - ) - end - end -end diff --git a/app/helpers/accounts_helper.rb b/app/helpers/accounts_helper.rb index 6136c82ce7..6301919a9e 100644 --- a/app/helpers/accounts_helper.rb +++ b/app/helpers/accounts_helper.rb @@ -27,25 +27,21 @@ module AccountsHelper end end - def account_formatted_stat(value) - number_to_human(value, precision: 3, strip_insignificant_zeros: true) - end - def account_description(account) prepend_str = [ [ - account_formatted_stat(account.public_statuses_count), - I18n.t('accounts.posts', count: account.public_statuses_count), + number_to_human(account.statuses_count, precision: 3, strip_insignificant_zeros: true), + I18n.t('accounts.posts', count: account.statuses_count), ].join(' '), [ - account_formatted_stat(account.public_following_count), - I18n.t('accounts.following', count: account.public_following_count), + number_to_human(account.following_count, precision: 3, strip_insignificant_zeros: true), + I18n.t('accounts.following', count: account.following_count), ].join(' '), [ - account_formatted_stat(account.public_followers_count), - I18n.t('accounts.followers', count: account.public_followers_count), + number_to_human(account.followers_count, precision: 3, strip_insignificant_zeros: true), + I18n.t('accounts.followers', count: account.followers_count), ].join(' '), ].join(', ') diff --git a/app/helpers/admin/accounts_helper.rb b/app/helpers/admin/accounts_helper.rb index a2d2f75308..a936797e88 100644 --- a/app/helpers/admin/accounts_helper.rb +++ b/app/helpers/admin/accounts_helper.rb @@ -7,7 +7,6 @@ module Admin::AccountsHelper [t('admin.accounts.moderation.silenced'), 'silenced'], [t('admin.accounts.moderation.disabled'), 'disabled'], [t('admin.accounts.moderation.suspended'), 'suspended'], - [t('admin.accounts.moderation.remote_pending'), 'remote_pending'], [safe_join([t('admin.accounts.moderation.pending'), "(#{pending_user_count_label})"], ' '), 'pending'], ] end diff --git a/app/helpers/admin/action_logs_helper.rb b/app/helpers/admin/action_logs_helper.rb index 4355b5f787..4018ef6b1c 100644 --- a/app/helpers/admin/action_logs_helper.rb +++ b/app/helpers/admin/action_logs_helper.rb @@ -23,9 +23,7 @@ module Admin::ActionLogsHelper link_to log.human_identifier, disputes_strike_path(log.target_id) when 'Announcement' link_to truncate(log.human_identifier), edit_admin_announcement_path(log.target_id) - when 'CustomEmoji' - link_to log.human_identifier, edit_admin_custom_emoji_path(log.target_id) - when 'IpBlock', 'Instance' + when 'IpBlock', 'Instance', 'CustomEmoji' log.human_identifier when 'CanonicalEmailBlock' content_tag(:samp, (log.human_identifier.presence || '')[0...7], title: log.human_identifier) diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 8dee31e18d..4f7f66985d 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -1,8 +1,6 @@ # frozen_string_literal: true module ApplicationHelper - include RegistrationLimitationHelper - DANGEROUS_SCOPES = %w( read write @@ -30,12 +28,20 @@ module ApplicationHelper number_to_human(number, **options) end + def active_nav_class(*paths) + paths.any? { |path| current_page?(path) } ? 'active' : '' + end + + def show_landing_strip? + !user_signed_in? && !single_user_mode? + end + def open_registrations? - Setting.registrations_mode == 'open' && registrations_in_time? + Setting.registrations_mode == 'open' end def approved_registrations? - Setting.registrations_mode == 'approved' || (Setting.registrations_mode == 'open' && !registrations_in_time?) + Setting.registrations_mode == 'approved' end def closed_registrations? @@ -115,16 +121,8 @@ module ApplicationHelper content_tag(:i, nil, attributes.merge(class: class_names.join(' '))) end - def material_symbol(icon, attributes = {}) - inline_svg_tag( - "400-24px/#{icon}.svg", - class: %w(icon).concat(attributes[:class].to_s.split), - role: :img - ) - end - def check_icon - inline_svg_tag 'check.svg' + content_tag(:svg, tag.path('fill-rule': 'evenodd', 'clip-rule': 'evenodd', d: 'M16.704 4.153a.75.75 0 01.143 1.052l-8 10.5a.75.75 0 01-1.127.075l-4.5-4.5a.75.75 0 011.06-1.06l3.894 3.893 7.48-9.817a.75.75 0 011.05-.143z'), xmlns: 'http://www.w3.org/2000/svg', viewBox: '0 0 20 20', fill: 'currentColor') end def visibility_icon(status) @@ -132,10 +130,6 @@ module ApplicationHelper fa_icon('globe', title: I18n.t('statuses.visibilities.public')) elsif status.unlisted_visibility? fa_icon('unlock', title: I18n.t('statuses.visibilities.unlisted')) - elsif status.public_unlisted_visibility? - fa_icon('cloud', title: I18n.t('statuses.visibilities.public_unlisted')) - elsif status.login_visibility? - fa_icon('key', title: I18n.t('statuses.visibilities.login')) elsif status.private_visibility? || status.limited_visibility? fa_icon('lock', title: I18n.t('statuses.visibilities.private')) elsif status.direct_visibility? @@ -201,14 +195,10 @@ module ApplicationHelper text: [params[:title], params[:text], params[:url]].compact.join(' '), } - permit_visibilities = %w(public unlisted public_unlisted login private direct) - permit_searchabilities = %w(public unlisted public_unlisted login private direct) - default_privacy = current_account&.user&.setting_default_privacy + permit_visibilities = %w(public unlisted private direct) + default_privacy = current_account&.user&.setting_default_privacy permit_visibilities.shift(permit_visibilities.index(default_privacy) + 1) if default_privacy.present? state_params[:visibility] = params[:visibility] if permit_visibilities.include? params[:visibility] - default_searchability = current_account&.user&.setting_default_searchability - permit_searchabilities.shift(permit_searchabilities.index(default_privacy) + 1) if default_searchability.present? - state_params[:searchability] = params[:searchability] if permit_searchabilities.include? params[:searchability] if user_signed_in? && current_user.functional? state_params[:settings] = state_params[:settings].merge(Web::Setting.find_by(user: current_user)&.data || {}) @@ -223,7 +213,7 @@ module ApplicationHelper state_params[:moved_to_account] = current_account.moved_to_account end - state_params[:owner] = Account.local.without_suspended.without_internal.first if single_user_mode? + state_params[:owner] = Account.local.without_suspended.where('id > 0').first if single_user_mode? json = ActiveModelSerializers::SerializableResource.new(InitialStatePresenter.new(state_params), serializer: InitialStateSerializer).to_json # rubocop:disable Rails/OutputSafety @@ -250,22 +240,6 @@ module ApplicationHelper EmojiFormatter.new(html, custom_emojis, other_options.merge(animate: prefers_autoplay?)).to_s end - def prerender_custom_emojis_from_hash(html, custom_emojis_hash) - prerender_custom_emojis(html, JSON.parse([custom_emojis_hash].to_json, object_class: OpenStruct)) # rubocop:disable Style/OpenStructUse - end - - def instance_presenter - @instance_presenter ||= InstancePresenter.new - end - - def favicon_path(size = '48') - instance_presenter.favicon&.file&.url(size) - end - - def app_icon_path(size = '48') - instance_presenter.app_icon&.file&.url(size) - end - private def storage_host_var diff --git a/app/helpers/branding_helper.rb b/app/helpers/branding_helper.rb index 8201f36e3c..2b9c233c23 100644 --- a/app/helpers/branding_helper.rb +++ b/app/helpers/branding_helper.rb @@ -19,6 +19,17 @@ module BrandingHelper end def render_logo - image_tag(frontend_asset_path('images/logo.svg'), alt: 'Mastodon', class: 'logo logo--icon') + image_pack_tag('logo.svg', alt: 'Mastodon', class: 'logo logo--icon') + end + + def render_symbol(version = :icon) + path = case version + when :icon + 'logo-symbol-icon.svg' + when :wordmark + 'logo-symbol-wordmark.svg' + end + + render(file: Rails.root.join('app', 'javascript', 'images', path)).html_safe # rubocop:disable Rails/OutputSafety end end diff --git a/app/helpers/context_helper.rb b/app/helpers/context_helper.rb index 804c48c7b0..945ef9b91a 100644 --- a/app/helpers/context_helper.rb +++ b/app/helpers/context_helper.rb @@ -23,31 +23,13 @@ module ContextHelper indexable: { 'toot' => 'http://joinmastodon.org/ns#', 'indexable' => 'toot:indexable' }, memorial: { 'toot' => 'http://joinmastodon.org/ns#', 'memorial' => 'toot:memorial' }, voters_count: { 'toot' => 'http://joinmastodon.org/ns#', 'votersCount' => 'toot:votersCount' }, - emoji_reactions: { 'fedibird' => 'http://fedibird.com/ns#', 'emojiReactions' => { '@id' => 'fedibird:emojiReactions', '@type' => '@id' } }, - searchable_by: { 'fedibird' => 'http://fedibird.com/ns#', 'searchableBy' => { '@id' => 'fedibird:searchableBy', '@type' => '@id' } }, - subscribable_by: { 'kmyblue' => 'http://kmy.blue/ns#', 'subscribableBy' => { '@id' => 'kmyblue:subscribableBy', '@type' => '@id' } }, - limited_scope: { 'kmyblue' => 'http://kmy.blue/ns#', 'limitedScope' => 'kmyblue:limitedScope' }, - other_setting: { 'fedibird' => 'http://fedibird.com/ns#', 'otherSetting' => 'fedibird:otherSetting' }, - references: { 'fedibird' => 'http://fedibird.com/ns#', 'references' => { '@id' => 'fedibird:references', '@type' => '@id' } }, - quote_uri: { 'fedibird' => 'http://fedibird.com/ns#', 'quoteUri' => 'fedibird:quoteUri' }, - keywords: { 'schema' => 'http://schema.org#', 'keywords' => 'schema:keywords' }, - license: { 'schema' => 'http://schema.org#', 'license' => 'schema:license' }, olm: { - 'toot' => 'http://joinmastodon.org/ns#', - 'Device' => 'toot:Device', - 'Ed25519Signature' => 'toot:Ed25519Signature', - 'Ed25519Key' => 'toot:Ed25519Key', - 'Curve25519Key' => 'toot:Curve25519Key', - 'EncryptedMessage' => 'toot:EncryptedMessage', - 'publicKeyBase64' => 'toot:publicKeyBase64', - 'deviceId' => 'toot:deviceId', + 'toot' => 'http://joinmastodon.org/ns#', 'Device' => 'toot:Device', 'Ed25519Signature' => 'toot:Ed25519Signature', 'Ed25519Key' => 'toot:Ed25519Key', 'Curve25519Key' => 'toot:Curve25519Key', 'EncryptedMessage' => 'toot:EncryptedMessage', 'publicKeyBase64' => 'toot:publicKeyBase64', 'deviceId' => 'toot:deviceId', 'claim' => { '@type' => '@id', '@id' => 'toot:claim' }, 'fingerprintKey' => { '@type' => '@id', '@id' => 'toot:fingerprintKey' }, 'identityKey' => { '@type' => '@id', '@id' => 'toot:identityKey' }, 'devices' => { '@type' => '@id', '@id' => 'toot:devices' }, - 'messageFranking' => 'toot:messageFranking', - 'messageType' => 'toot:messageType', - 'cipherText' => 'toot:cipherText', + 'messageFranking' => 'toot:messageFranking', 'messageType' => 'toot:messageType', 'cipherText' => 'toot:cipherText' }, suspended: { 'toot' => 'http://joinmastodon.org/ns#', 'suspended' => 'toot:suspended' }, }.freeze @@ -57,11 +39,13 @@ module ContextHelper end def serialized_context(named_contexts_map, context_extensions_map) + context_array = [] + named_contexts = named_contexts_map.keys context_extensions = context_extensions_map.keys - context_array = named_contexts.map do |key| - NAMED_CONTEXT_MAP[key] + named_contexts.each do |key| + context_array << NAMED_CONTEXT_MAP[key] end extensions = context_extensions.each_with_object({}) do |key, h| diff --git a/app/helpers/dtl_helper.rb b/app/helpers/dtl_helper.rb deleted file mode 100644 index aa2c414c5f..0000000000 --- a/app/helpers/dtl_helper.rb +++ /dev/null @@ -1,11 +0,0 @@ -# frozen_string_literal: true - -module DtlHelper - def dtl_enabled? - ENV.fetch('DTL_ENABLED', 'false') == 'true' - end - - def dtl_tag_name - ENV.fetch('DTL_TAG', 'kmyblue') - end -end diff --git a/app/helpers/follow_helper.rb b/app/helpers/follow_helper.rb deleted file mode 100644 index d7d7ff35e9..0000000000 --- a/app/helpers/follow_helper.rb +++ /dev/null @@ -1,35 +0,0 @@ -# frozen_string_literal: true - -module FollowHelper - def request_pending_follow?(source_account, target_account) - target_account.locked? || source_account.silenced? || block_straight_follow?(source_account) || - ((source_account.bot? || proxy_account?(source_account)) && target_account.user&.setting_lock_follow_from_bot) - end - - def block_straight_follow?(account) - return false if account.local? - - DomainBlock.reject_straight_follow?(account.domain) - end - - def proxy_account?(account) - (account.username.downcase.include?('_proxy') || - account.username.downcase.end_with?('proxy') || - account.username.downcase.include?('_bot_') || - account.username.downcase.end_with?('bot') || - account.display_name&.downcase&.include?('proxy') || - account.display_name&.include?('プロキシ') || - account.note&.include?('プロキシ')) && - (account.following_count.zero? || account.following_count > account.followers_count) && - proxyable_software?(account) - end - - def proxyable_software?(account) - return false if account.local? - - info = InstanceInfo.find_by(domain: account.domain) - return false if info.nil? - - %w(misskey calckey firefish meisskey cherrypick sharkey).include?(info.software) - end -end diff --git a/app/helpers/formatting_helper.rb b/app/helpers/formatting_helper.rb index f0faf69b43..7d1423e52d 100644 --- a/app/helpers/formatting_helper.rb +++ b/app/helpers/formatting_helper.rb @@ -18,16 +18,8 @@ module FormattingHelper end module_function :extract_status_plain_text - def extract_status_plain_text_with_spoiler_text(status) - PlainTextFormatter.new("#{status.spoiler_text}\n#{status.text}", status.local?).to_s - end - def status_content_format(status) - html_aware_format(status.text, status.local?, markdown: status.markdown, preloaded_accounts: [status.account] + (status.respond_to?(:active_mentions) ? status.active_mentions.map(&:account) : [])) - end - - def emoji_name_format(emoji_reaction, status) - html_aware_format(emoji_reaction['url'].present? ? ":#{emoji_reaction['name']}:" : emoji_reaction['name'], status.local?, markdown: status.markdown) + html_aware_format(status.text, status.local?, preloaded_accounts: [status.account] + (status.respond_to?(:active_mentions) ? status.active_mentions.map(&:account) : [])) end def rss_status_content_format(status) @@ -57,19 +49,19 @@ module FormattingHelper prerender_custom_emojis( safe_join([before_html, html, after_html]), status.emojis, - style: 'min-width: 1.1em; height: 1.1em; object-fit: contain; vertical-align: middle; margin: -.2ex .15em .2ex' + style: 'width: 1.1em; height: 1.1em; object-fit: contain; vertical-align: middle; margin: -.2ex .15em .2ex' ).to_str end def account_bio_format(account) - html_aware_format(account.note, account.local?, markdown: account.user&.setting_bio_markdown) + html_aware_format(account.note, account.local?) end def account_field_value_format(field, with_rel_me: true) if field.verified? && !field.account.local? TextFormatter.shortened_link(field.value_for_verification) else - html_aware_format(field.value, field.account.local?, markdown: false, with_rel_me: with_rel_me, with_domains: true, multiline: false) + html_aware_format(field.value, field.account.local?, with_rel_me: with_rel_me, with_domains: true, multiline: false) end end end diff --git a/app/helpers/high_load_helper.rb b/app/helpers/high_load_helper.rb deleted file mode 100644 index b4606c039f..0000000000 --- a/app/helpers/high_load_helper.rb +++ /dev/null @@ -1,8 +0,0 @@ -# frozen_string_literal: true - -module HighLoadHelper - def allow_high_load? - ENV.fetch('ALLOW_HIGH_LOAD', 'true') == 'true' - end - module_function :allow_high_load? -end diff --git a/app/helpers/jsonld_helper.rb b/app/helpers/jsonld_helper.rb index 75901e3ff1..ce3ff094f6 100644 --- a/app/helpers/jsonld_helper.rb +++ b/app/helpers/jsonld_helper.rb @@ -51,14 +51,6 @@ module JsonLdHelper end end - def as_array_ex(value) - if value.is_a?(Hash) - [] - else - as_array(value) - end - end - def value_or_id(value) value.is_a?(String) || value.nil? ? value : value['id'] end @@ -119,7 +111,7 @@ module JsonLdHelper patch_for_forwarding!(value, compacted_value) elsif value.is_a?(Array) compacted_value = [compacted_value] unless compacted_value.is_a?(Array) - next if value.size != compacted_value.size + return if value.size != compacted_value.size compacted[key] = value.zip(compacted_value).map do |v, vc| if v.is_a?(Hash) && vc.is_a?(Hash) @@ -163,8 +155,8 @@ module JsonLdHelper end end - def fetch_resource(uri, id_is_known, on_behalf_of = nil, request_options: {}) - unless id_is_known + def fetch_resource(uri, id, on_behalf_of = nil) + unless id json = fetch_resource_without_id_validation(uri, on_behalf_of) return if !json.is_a?(Hash) || unsupported_uri_scheme?(json['id']) @@ -172,29 +164,17 @@ module JsonLdHelper uri = json['id'] end - json = fetch_resource_without_id_validation(uri, on_behalf_of, request_options: request_options) + json = fetch_resource_without_id_validation(uri, on_behalf_of) json.present? && json['id'] == uri ? json : nil end - def fetch_resource_without_id_validation(uri, on_behalf_of = nil, raise_on_temporary_error = false, request_options: {}) + def fetch_resource_without_id_validation(uri, on_behalf_of = nil, raise_on_temporary_error = false) on_behalf_of ||= Account.representative - build_request(uri, on_behalf_of, options: request_options).perform do |response| + build_request(uri, on_behalf_of).perform do |response| raise Mastodon::UnexpectedResponseError, response unless response_successful?(response) || response_error_unsalvageable?(response) || !raise_on_temporary_error - body_to_json(response.body_with_limit) if response.code == 200 && valid_activitypub_content_type?(response) - end - end - - def valid_activitypub_content_type?(response) - return true if response.mime_type == 'application/activity+json' - - # When the mime type is `application/ld+json`, we need to check the profile, - # but `http.rb` does not parse it for us. - return false unless response.mime_type == 'application/ld+json' - - response.headers[HTTP::Headers::CONTENT_TYPE]&.split(';')&.map(&:strip)&.any? do |str| - str.start_with?('profile="') && str[9...-1].split.include?('https://www.w3.org/ns/activitystreams') + body_to_json(response.body_with_limit) if response.code == 200 end end @@ -224,8 +204,8 @@ module JsonLdHelper response.code == 501 || ((400...500).cover?(response.code) && ![401, 408, 429].include?(response.code)) end - def build_request(uri, on_behalf_of = nil, options: {}) - Request.new(:get, uri, **options).tap do |request| + def build_request(uri, on_behalf_of = nil) + Request.new(:get, uri).tap do |request| request.on_behalf_of(on_behalf_of) if on_behalf_of request.add_headers('Accept' => 'application/activity+json, application/ld+json') end diff --git a/app/helpers/kmyblue_capabilities_helper.rb b/app/helpers/kmyblue_capabilities_helper.rb deleted file mode 100644 index 075869ee60..0000000000 --- a/app/helpers/kmyblue_capabilities_helper.rb +++ /dev/null @@ -1,54 +0,0 @@ -# frozen_string_literal: true - -module KmyblueCapabilitiesHelper - def fedibird_capabilities - capabilities = %i( - enable_wide_emoji - kmyblue_searchability - searchability - kmyblue_markdown - kmyblue_reaction_deck - kmyblue_visibility_login - status_reference - visibility_mutual - visibility_limited - kmyblue_limited_scope - kmyblue_antenna - kmyblue_bookmark_category - kmyblue_quote - kmyblue_searchability_limited - kmyblue_circle_history - kmyblue_list_notification - kmyblue_server_features - ) - - capabilities << :full_text_search if Chewy.enabled? - if Setting.enable_emoji_reaction - capabilities << :emoji_reaction - capabilities << :enable_wide_emoji_reaction - end - capabilities << :kmyblue_visibility_public_unlisted if Setting.enable_public_unlisted_visibility - capabilities << :kmyblue_searchability_public_unlisted if Setting.enable_public_unlisted_visibility - capabilities << :kmyblue_no_public_visibility unless Setting.enable_public_visibility - capabilities << :timeline_no_local unless Setting.enable_local_timeline - - capabilities - end - - def capabilities_for_nodeinfo - capabilities = %i( - enable_wide_emoji - status_reference - quote - emoji_keywords - circle - ) - - if Setting.enable_emoji_reaction - capabilities << :emoji_reaction - capabilities << :enable_wide_emoji_reaction - end - - capabilities - end -end diff --git a/app/helpers/languages_helper.rb b/app/helpers/languages_helper.rb index 9e1c0a7db1..87f0f288d3 100644 --- a/app/helpers/languages_helper.rb +++ b/app/helpers/languages_helper.rb @@ -109,7 +109,6 @@ module LanguagesHelper mn: ['Mongolian', 'Монгол хэл'].freeze, mr: ['Marathi', 'मराठी'].freeze, ms: ['Malay', 'Bahasa Melayu'].freeze, - 'ms-Arab': ['Jawi Malay', 'بهاس ملايو'].freeze, mt: ['Maltese', 'Malti'].freeze, my: ['Burmese', 'ဗမာစာ'].freeze, na: ['Nauru', 'Ekakairũ Naoero'].freeze, @@ -128,7 +127,7 @@ module LanguagesHelper om: ['Oromo', 'Afaan Oromoo'].freeze, or: ['Oriya', 'ଓଡ଼ିଆ'].freeze, os: ['Ossetian', 'ирон æвзаг'].freeze, - pa: ['Punjabi', 'ਪੰਜਾਬੀ'].freeze, + pa: ['Panjabi', 'ਪੰਜਾਬੀ'].freeze, pi: ['Pāli', 'पाऴि'].freeze, pl: ['Polish', 'Polski'].freeze, ps: ['Pashto', 'پښتو'].freeze, @@ -192,20 +191,15 @@ module LanguagesHelper chr: ['Cherokee', 'ᏣᎳᎩ ᎦᏬᏂᎯᏍᏗ'].freeze, ckb: ['Sorani (Kurdish)', 'سۆرانی'].freeze, cnr: ['Montenegrin', 'crnogorski'].freeze, - csb: ['Kashubian', 'Kaszëbsczi'].freeze, jbo: ['Lojban', 'la .lojban.'].freeze, kab: ['Kabyle', 'Taqbaylit'].freeze, ldn: ['Láadan', 'Láadan'].freeze, lfn: ['Lingua Franca Nova', 'lingua franca nova'].freeze, - moh: ['Mohawk', 'Kanienʼkéha'].freeze, - nds: ['Low German', 'Plattdüütsch'].freeze, - pdc: ['Pennsylvania Dutch', 'Pennsilfaani-Deitsch'].freeze, sco: ['Scots', 'Scots'].freeze, sma: ['Southern Sami', 'Åarjelsaemien Gïele'].freeze, smj: ['Lule Sami', 'Julevsámegiella'].freeze, szl: ['Silesian', 'ślůnsko godka'].freeze, tok: ['Toki Pona', 'toki pona'].freeze, - vai: ['Vai', 'ꕙꔤ'].freeze, xal: ['Kalmyk', 'Хальмг келн'].freeze, zba: ['Balaibalan', 'باليبلن'].freeze, zgh: ['Standard Moroccan Tamazight', 'ⵜⴰⵎⴰⵣⵉⵖⵜ'].freeze, diff --git a/app/helpers/mascot_helper.rb b/app/helpers/mascot_helper.rb index 34b656411e..8ee04383ec 100644 --- a/app/helpers/mascot_helper.rb +++ b/app/helpers/mascot_helper.rb @@ -2,7 +2,7 @@ module MascotHelper def mascot_url - full_asset_url(instance_presenter.mascot&.file&.url || frontend_asset_path('images/elephant_ui_plane.svg')) + full_asset_url(instance_presenter.mascot&.file&.url || asset_pack_path('media/images/elephant_ui_plane.svg')) end def instance_presenter diff --git a/app/helpers/ng_rule_helper.rb b/app/helpers/ng_rule_helper.rb deleted file mode 100644 index 104442b117..0000000000 --- a/app/helpers/ng_rule_helper.rb +++ /dev/null @@ -1,28 +0,0 @@ -# frozen_string_literal: true - -module NgRuleHelper - def check_invalid_status_for_ng_rule!(account, **options) - (check_for_ng_rule!(account, **options) { |rule| !rule.check_status_or_record! }).none? - end - - def check_invalid_reaction_for_ng_rule!(account, **options) - (check_for_ng_rule!(account, **options) { |rule| !rule.check_reaction_or_record! }).none? - end - - private - - def check_for_ng_rule!(account, **options, &block) - NgRule.cached_rules - .map { |raw_rule| Admin::NgRule.new(raw_rule, account, **options) } - .filter(&block) - end - - def do_account_action_for_rule!(account, action) - case action - when :silence - account.silence! - when :suspend - account.suspend! - end - end -end diff --git a/app/helpers/react_component_helper.rb b/app/helpers/react_component_helper.rb index 821a6f1e2d..ce616e8306 100644 --- a/app/helpers/react_component_helper.rb +++ b/app/helpers/react_component_helper.rb @@ -15,20 +15,9 @@ module ReactComponentHelper div_tag_with_data(data) end - def serialized_media_attachments(media_attachments) - media_attachments.map { |attachment| serialized_attachment(attachment) } - end - private def div_tag_with_data(data) content_tag(:div, nil, data: data) end - - def serialized_attachment(attachment) - ActiveModelSerializers::SerializableResource.new( - attachment, - serializer: REST::MediaAttachmentSerializer - ).as_json - end end diff --git a/app/helpers/registration_helper.rb b/app/helpers/registration_helper.rb index c3db46c027..ef5462ac88 100644 --- a/app/helpers/registration_helper.rb +++ b/app/helpers/registration_helper.rb @@ -3,10 +3,8 @@ module RegistrationHelper extend ActiveSupport::Concern - include RegistrationLimitationHelper - def allowed_registration?(remote_ip, invite) - !Rails.configuration.x.single_user_mode && !omniauth_only? && ((registrations_open? && !reach_registrations_limit?) || invite&.valid_for_use?) && !ip_blocked?(remote_ip) + !Rails.configuration.x.single_user_mode && !omniauth_only? && (registrations_open? || invite&.valid_for_use?) && !ip_blocked?(remote_ip) end def registrations_open? diff --git a/app/helpers/registration_limitation_helper.rb b/app/helpers/registration_limitation_helper.rb deleted file mode 100644 index 56523b816c..0000000000 --- a/app/helpers/registration_limitation_helper.rb +++ /dev/null @@ -1,55 +0,0 @@ -# frozen_string_literal: true - -module RegistrationLimitationHelper - def reach_registrations_limit? - ((Setting.registrations_limit.presence || 0).positive? && Setting.registrations_limit <= user_count_for_registration) || - ((Setting.registrations_limit_per_day.presence || 0).positive? && Setting.registrations_limit_per_day <= today_increase_user_count) - end - - def user_count_for_registration - Rails.cache.fetch('registrations:user_count') { User.confirmed.enabled.joins(:account).merge(Account.without_suspended).count } - end - - def today_increase_user_count - today_date = Time.now.utc.beginning_of_day.to_i - count = 0 - - if Rails.cache.fetch('registrations:today_date') { today_date } == today_date - count = Rails.cache.fetch('registrations:today_increase_user_count') { today_increase_user_count_value } - else - count = today_increase_user_count_value - Rails.cache.write('registrations:today_date', today_date) - Rails.cache.write('registrations:today_increase_user_count', count) - end - - count - end - - def today_increase_user_count_value - User.confirmed.enabled.where('users.created_at >= ?', Time.now.utc.beginning_of_day).joins(:account).merge(Account.without_suspended).count - end - - def registrations_in_time? - start_hour = Setting.registrations_start_hour - end_hour = Setting.registrations_end_hour - secondary_start_hour = Setting.registrations_secondary_start_hour - secondary_end_hour = Setting.registrations_secondary_end_hour - - start_hour = 0 unless start_hour.is_a?(Integer) - end_hour = 0 unless end_hour.is_a?(Integer) - secondary_start_hour = 0 unless secondary_start_hour.is_a?(Integer) - secondary_end_hour = 0 unless secondary_end_hour.is_a?(Integer) - - return true if start_hour >= end_hour && secondary_start_hour >= secondary_end_hour - - current_hour = Time.now.utc.hour - - (start_hour < end_hour && end_hour.positive? && current_hour.between?(start_hour, end_hour - 1)) || - (secondary_start_hour < secondary_end_hour && secondary_end_hour.positive? && current_hour.between?(secondary_start_hour, secondary_end_hour - 1)) - end - - def reset_registration_limit_caches! - Rails.cache.delete('registrations:user_count') - Rails.cache.delete('registrations:today_increase_user_count') - end -end diff --git a/app/helpers/routing_helper.rb b/app/helpers/routing_helper.rb index 15d988f64d..2fb9ce72cb 100644 --- a/app/helpers/routing_helper.rb +++ b/app/helpers/routing_helper.rb @@ -24,12 +24,8 @@ module RoutingHelper Rails.configuration.action_controller.asset_host || root_url end - def frontend_asset_path(source, **options) - asset_pack_path("media/#{source}", **options) - end - - def frontend_asset_url(source, **options) - full_asset_url(frontend_asset_path(source, **options)) + def full_pack_url(source, **options) + full_asset_url(asset_pack_path(source, **options)) end def use_storage? diff --git a/app/helpers/statuses_helper.rb b/app/helpers/statuses_helper.rb index 8ded11e03d..286c53d834 100644 --- a/app/helpers/statuses_helper.rb +++ b/app/helpers/statuses_helper.rb @@ -4,6 +4,14 @@ module StatusesHelper EMBEDDED_CONTROLLER = 'statuses' EMBEDDED_ACTION = 'embed' + def link_to_newer(url) + link_to t('statuses.show_newer'), url, class: 'load-more load-gap' + end + + def link_to_older(url) + link_to t('statuses.show_older'), url, class: 'load-more load-gap' + end + def nothing_here(extra_classes = '') content_tag(:div, class: "nothing-here #{extra_classes}") do t('accounts.nothing_here') @@ -63,14 +71,8 @@ module StatusesHelper fa_icon 'globe fw' when 'unlisted' fa_icon 'unlock fw' - when 'public_unlisted' - fa_icon 'cloud fw' - when 'login' - fa_icon 'key fw' when 'private' fa_icon 'lock fw' - when 'limited' - fa_icon 'get-pocket fw' when 'direct' fa_icon 'at fw' end diff --git a/app/helpers/theme_helper.rb b/app/helpers/theme_helper.rb deleted file mode 100644 index d15259851c..0000000000 --- a/app/helpers/theme_helper.rb +++ /dev/null @@ -1,27 +0,0 @@ -# frozen_string_literal: true - -module ThemeHelper - def theme_style_tags(theme) - if theme == 'system' - stylesheet_pack_tag('mastodon-light', media: 'not all and (prefers-color-scheme: dark)', crossorigin: 'anonymous') + - stylesheet_pack_tag('default', media: '(prefers-color-scheme: dark)', crossorigin: 'anonymous') - else - stylesheet_pack_tag theme, media: 'all', crossorigin: 'anonymous' - end - end - - def theme_color_tags(theme) - if theme == 'system' - tag.meta(name: 'theme-color', content: Themes::THEME_COLORS[:dark], media: '(prefers-color-scheme: dark)') + - tag.meta(name: 'theme-color', content: Themes::THEME_COLORS[:light], media: '(prefers-color-scheme: light)') - else - tag.meta name: 'theme-color', content: theme_color_for(theme) - end - end - - private - - def theme_color_for(theme) - theme == 'mastodon-light' ? Themes::THEME_COLORS[:light] : Themes::THEME_COLORS[:dark] - end -end diff --git a/app/javascript/entrypoints/admin.tsx b/app/javascript/entrypoints/admin.tsx deleted file mode 100644 index 64192f54ad..0000000000 --- a/app/javascript/entrypoints/admin.tsx +++ /dev/null @@ -1,440 +0,0 @@ -import './public-path'; -import { createRoot } from 'react-dom/client'; - -import Rails from '@rails/ujs'; - -import ready from '../mastodon/ready'; - -const setAnnouncementEndsAttributes = (target: HTMLInputElement) => { - const valid = target.value && target.validity.valid; - const element = document.querySelector( - 'input[type="datetime-local"]#announcement_ends_at', - ); - - if (!element) return; - - if (valid) { - element.classList.remove('optional'); - element.required = true; - element.min = target.value; - } else { - element.classList.add('optional'); - element.removeAttribute('required'); - element.removeAttribute('min'); - } -}; - -Rails.delegate( - document, - 'input[type="datetime-local"]#announcement_starts_at', - 'change', - ({ target }) => { - if (target instanceof HTMLInputElement) - setAnnouncementEndsAttributes(target); - }, -); - -const batchCheckboxClassName = '.batch-checkbox input[type="checkbox"]'; - -const showSelectAll = () => { - const selectAllMatchingElement = document.querySelector( - '.batch-table__select-all', - ); - selectAllMatchingElement?.classList.add('active'); -}; - -const hideSelectAll = () => { - const selectAllMatchingElement = document.querySelector( - '.batch-table__select-all', - ); - const hiddenField = document.querySelector( - 'input#select_all_matching', - ); - const selectedMsg = document.querySelector( - '.batch-table__select-all .selected', - ); - const notSelectedMsg = document.querySelector( - '.batch-table__select-all .not-selected', - ); - - selectAllMatchingElement?.classList.remove('active'); - selectedMsg?.classList.remove('active'); - notSelectedMsg?.classList.add('active'); - if (hiddenField) hiddenField.value = '0'; -}; - -Rails.delegate(document, '#batch_checkbox_all', 'change', ({ target }) => { - if (!(target instanceof HTMLInputElement)) return; - - const selectAllMatchingElement = document.querySelector( - '.batch-table__select-all', - ); - - document - .querySelectorAll(batchCheckboxClassName) - .forEach((content) => { - content.checked = target.checked; - }); - - if (selectAllMatchingElement) { - if (target.checked) { - showSelectAll(); - } else { - hideSelectAll(); - } - } -}); - -Rails.delegate(document, '.batch-table__select-all button', 'click', () => { - const hiddenField = document.querySelector( - '#select_all_matching', - ); - - if (!hiddenField) return; - - const active = hiddenField.value === '1'; - const selectedMsg = document.querySelector( - '.batch-table__select-all .selected', - ); - const notSelectedMsg = document.querySelector( - '.batch-table__select-all .not-selected', - ); - - if (!selectedMsg || !notSelectedMsg) return; - - if (active) { - hiddenField.value = '0'; - selectedMsg.classList.remove('active'); - notSelectedMsg.classList.add('active'); - } else { - hiddenField.value = '1'; - notSelectedMsg.classList.remove('active'); - selectedMsg.classList.add('active'); - } -}); - -Rails.delegate(document, batchCheckboxClassName, 'change', () => { - const checkAllElement = document.querySelector( - 'input#batch_checkbox_all', - ); - const selectAllMatchingElement = document.querySelector( - '.batch-table__select-all', - ); - - if (checkAllElement) { - const allCheckboxes = Array.from( - document.querySelectorAll(batchCheckboxClassName), - ); - checkAllElement.checked = allCheckboxes.every((content) => content.checked); - checkAllElement.indeterminate = - !checkAllElement.checked && - allCheckboxes.some((content) => content.checked); - - if (selectAllMatchingElement) { - if (checkAllElement.checked) { - showSelectAll(); - } else { - hideSelectAll(); - } - } - } -}); - -Rails.delegate( - document, - '.filter-subset--with-select select', - 'change', - ({ target }) => { - if (target instanceof HTMLSelectElement) target.form?.submit(); - }, -); - -const onDomainBlockSeverityChange = (target: HTMLSelectElement) => { - const rejectMediaDiv = document.querySelector( - '.input.with_label.domain_block_reject_media', - ); - const rejectReportsDiv = document.querySelector( - '.input.with_label.domain_block_reject_reports', - ); - - if (rejectMediaDiv && rejectMediaDiv instanceof HTMLElement) { - rejectMediaDiv.style.display = - target.value === 'suspend' ? 'none' : 'block'; - } - - if (rejectReportsDiv && rejectReportsDiv instanceof HTMLElement) { - rejectReportsDiv.style.display = - target.value === 'suspend' ? 'none' : 'block'; - } -}; - -Rails.delegate(document, '#domain_block_severity', 'change', ({ target }) => { - if (target instanceof HTMLSelectElement) onDomainBlockSeverityChange(target); -}); - -const onEnableBootstrapTimelineAccountsChange = (target: HTMLInputElement) => { - const bootstrapTimelineAccountsField = - document.querySelector( - '#form_admin_settings_bootstrap_timeline_accounts', - ); - - if (bootstrapTimelineAccountsField) { - bootstrapTimelineAccountsField.disabled = !target.checked; - if (target.checked) { - bootstrapTimelineAccountsField.parentElement?.classList.remove( - 'disabled', - ); - bootstrapTimelineAccountsField.parentElement?.parentElement?.classList.remove( - 'disabled', - ); - } else { - bootstrapTimelineAccountsField.parentElement?.classList.add('disabled'); - bootstrapTimelineAccountsField.parentElement?.parentElement?.classList.add( - 'disabled', - ); - } - } -}; - -Rails.delegate( - document, - '#form_admin_settings_enable_bootstrap_timeline_accounts', - 'change', - ({ target }) => { - if (target instanceof HTMLInputElement) - onEnableBootstrapTimelineAccountsChange(target); - }, -); - -const onChangeRegistrationMode = (target: HTMLSelectElement) => { - const enabled = target.value === 'approved'; - - document - .querySelectorAll( - '.form_admin_settings_registrations_mode .warning-hint', - ) - .forEach((warning_hint) => { - warning_hint.style.display = target.value === 'open' ? 'inline' : 'none'; - }); - - const toggleEnabled = (input: HTMLInputElement, value: boolean) => { - input.disabled = !value; - if (value) { - let element: HTMLElement | null = input; - do { - element.classList.remove('disabled'); - element = element.parentElement; - } while (element && !element.classList.contains('fields-group')); - } else { - let element: HTMLElement | null = input; - do { - element.classList.add('disabled'); - element = element.parentElement; - } while (element && !element.classList.contains('fields-group')); - } - }; - - document - .querySelectorAll( - 'input#form_admin_settings_require_invite_text', - ) - .forEach((input) => { - toggleEnabled(input, enabled); - }); - - document - .querySelectorAll( - '#form_admin_settings_registrations_start_hour, #form_admin_settings_registrations_end_hour, #form_admin_settings_registrations_secondary_start_hour, #form_admin_settings_registrations_secondary_end_hour', - ) - .forEach((input) => { - toggleEnabled(input, target.value === 'open'); - }); -}; - -const convertUTCDateTimeToLocal = (value: string) => { - const date = new Date(value + 'Z'); - const twoChars = (x: number) => x.toString().padStart(2, '0'); - return `${date.getFullYear()}-${twoChars(date.getMonth() + 1)}-${twoChars(date.getDate())}T${twoChars(date.getHours())}:${twoChars(date.getMinutes())}`; -}; - -function convertLocalDatetimeToUTC(value: string) { - const date = new Date(value); - const fullISO8601 = date.toISOString(); - return fullISO8601.slice(0, fullISO8601.indexOf('T') + 6); -} - -Rails.delegate( - document, - '#form_admin_settings_registrations_mode', - 'change', - ({ target }) => { - if (target instanceof HTMLSelectElement) onChangeRegistrationMode(target); - }, -); - -const addTableRow = (tableId: string) => { - const templateElement = document.querySelector(`#${tableId} .template-row`)!; // eslint-disable-line @typescript-eslint/no-non-null-assertion - const tableElement = document.querySelector(`#${tableId} tbody`)!; // eslint-disable-line @typescript-eslint/no-non-null-assertion - - if ( - typeof templateElement === 'undefined' || - typeof tableElement === 'undefined' - ) - return; - - let temporaryId = 0; - tableElement - .querySelectorAll('.temporary_id') - .forEach((input) => { - if (parseInt(input.value) + 1 > temporaryId) { - temporaryId = parseInt(input.value) + 1; - } - }); - - const cloned = templateElement.cloneNode(true) as HTMLTableRowElement; - cloned.className = ''; - cloned.querySelector('.temporary_id')!.value = // eslint-disable-line @typescript-eslint/no-non-null-assertion - temporaryId.toString(); - cloned - .querySelectorAll('input[type=checkbox]') - .forEach((input) => { - input.value = temporaryId.toString(); - }); - tableElement.appendChild(cloned); -}; - -const removeTableRow = (target: EventTarget | null, tableId: string) => { - const tableRowElement = (target as HTMLElement).closest('tr') as Node; - const tableElement = document.querySelector(`#${tableId} tbody`)!; // eslint-disable-line @typescript-eslint/no-non-null-assertion - - if ( - typeof tableRowElement === 'undefined' || - typeof tableElement === 'undefined' - ) - return; - - tableElement.removeChild(tableRowElement); -}; - -const setupTableList = (id: string) => { - Rails.delegate(document, `#${id} .add-row-button`, 'click', (ev) => { - ev.preventDefault(); - addTableRow(id); - }); - - Rails.delegate(document, `#${id} .delete-row-button`, 'click', (ev) => { - ev.preventDefault(); - removeTableRow(ev.target, id); - }); -}; - -setupTableList('sensitive-words-table'); -setupTableList('ng-words-table'); -setupTableList('white-list-table'); - -async function mountReactComponent(element: Element) { - const componentName = element.getAttribute('data-admin-component'); - const stringProps = element.getAttribute('data-props'); - - if (!stringProps) return; - - const componentProps = JSON.parse(stringProps) as object; - - const { default: AdminComponent } = await import( - '@/mastodon/containers/admin_component' - ); - - const { default: Component } = (await import( - `@/mastodon/components/admin/${componentName}` - )) as { default: React.ComponentType }; - - const root = createRoot(element); - - root.render( - - - , - ); -} - -ready(() => { - const domainBlockSeveritySelect = document.querySelector( - 'select#domain_block_severity', - ); - if (domainBlockSeveritySelect) - onDomainBlockSeverityChange(domainBlockSeveritySelect); - - const enableBootstrapTimelineAccounts = - document.querySelector( - 'input#form_admin_settings_enable_bootstrap_timeline_accounts', - ); - if (enableBootstrapTimelineAccounts) - onEnableBootstrapTimelineAccountsChange(enableBootstrapTimelineAccounts); - - const registrationMode = document.querySelector( - 'select#form_admin_settings_registrations_mode', - ); - if (registrationMode) onChangeRegistrationMode(registrationMode); - - const checkAllElement = document.querySelector( - 'input#batch_checkbox_all', - ); - if (checkAllElement) { - const allCheckboxes = Array.from( - document.querySelectorAll(batchCheckboxClassName), - ); - checkAllElement.checked = allCheckboxes.every((content) => content.checked); - checkAllElement.indeterminate = - !checkAllElement.checked && - allCheckboxes.some((content) => content.checked); - } - - document - .querySelector('a#add-instance-button') - ?.addEventListener('click', (e) => { - const domain = document.querySelector( - 'input[type="text"]#by_domain', - )?.value; - - if (domain && e.target instanceof HTMLAnchorElement) { - const url = new URL(e.target.href); - url.searchParams.set('_domain', domain); - e.target.href = url.toString(); - } - }); - - document - .querySelectorAll('input[type="datetime-local"]') - .forEach((element) => { - if (element.value) { - element.value = convertUTCDateTimeToLocal(element.value); - } - if (element.placeholder) { - element.placeholder = convertUTCDateTimeToLocal(element.placeholder); - } - }); - - Rails.delegate(document, 'form', 'submit', ({ target }) => { - if (target instanceof HTMLFormElement) - target - .querySelectorAll('input[type="datetime-local"]') - .forEach((element) => { - if (element.value && element.validity.valid) { - element.value = convertLocalDatetimeToUTC(element.value); - } - }); - }); - - const announcementStartsAt = document.querySelector( - 'input[type="datetime-local"]#announcement_starts_at', - ); - if (announcementStartsAt) { - setAnnouncementEndsAttributes(announcementStartsAt); - } - - document.querySelectorAll('[data-admin-component]').forEach((element) => { - void mountReactComponent(element); - }); -}).catch((reason: unknown) => { - throw reason; -}); diff --git a/app/javascript/entrypoints/public.tsx b/app/javascript/entrypoints/public.tsx deleted file mode 100644 index d45927226c..0000000000 --- a/app/javascript/entrypoints/public.tsx +++ /dev/null @@ -1,462 +0,0 @@ -import { createRoot } from 'react-dom/client'; - -import './public-path'; - -import { IntlMessageFormat } from 'intl-messageformat'; -import type { MessageDescriptor, PrimitiveType } from 'react-intl'; -import { defineMessages } from 'react-intl'; - -import Rails from '@rails/ujs'; -import axios from 'axios'; -import { throttle } from 'lodash'; - -import { start } from '../mastodon/common'; -import { timeAgoString } from '../mastodon/components/relative_timestamp'; -import emojify from '../mastodon/features/emoji/emoji'; -import loadKeyboardExtensions from '../mastodon/load_keyboard_extensions'; -import { loadLocale, getLocale } from '../mastodon/locales'; -import { loadPolyfills } from '../mastodon/polyfills'; -import ready from '../mastodon/ready'; - -import 'cocoon-js-vanilla'; - -start(); - -const messages = defineMessages({ - usernameTaken: { - id: 'username.taken', - defaultMessage: 'That username is taken. Try another', - }, - passwordExceedsLength: { - id: 'password_confirmation.exceeds_maxlength', - defaultMessage: 'Password confirmation exceeds the maximum password length', - }, - passwordDoesNotMatch: { - id: 'password_confirmation.mismatching', - defaultMessage: 'Password confirmation does not match', - }, -}); - -interface SetHeightMessage { - type: 'setHeight'; - id: string; - height: number; -} - -function isSetHeightMessage(data: unknown): data is SetHeightMessage { - if ( - data && - typeof data === 'object' && - 'type' in data && - data.type === 'setHeight' - ) - return true; - else return false; -} - -window.addEventListener('message', (e) => { - // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- typings are not correct, it can be null in very rare cases - if (!e.data || !isSetHeightMessage(e.data) || !window.parent) return; - - const data = e.data; - - ready(() => { - window.parent.postMessage( - { - type: 'setHeight', - id: data.id, - height: document.getElementsByTagName('html')[0].scrollHeight, - }, - '*', - ); - }).catch((e: unknown) => { - console.error('Error in setHeightMessage postMessage', e); - }); -}); - -function loaded() { - const { messages: localeData } = getLocale(); - - const locale = document.documentElement.lang; - - const dateTimeFormat = new Intl.DateTimeFormat(locale, { - year: 'numeric', - month: 'long', - day: 'numeric', - hour: 'numeric', - minute: 'numeric', - }); - - const dateFormat = new Intl.DateTimeFormat(locale, { - year: 'numeric', - month: 'short', - day: 'numeric', - }); - - const timeFormat = new Intl.DateTimeFormat(locale, { - timeStyle: 'short', - }); - - const formatMessage = ( - { id, defaultMessage }: MessageDescriptor, - values?: Record, - ) => { - let message: string | undefined = undefined; - - if (id) message = localeData[id]; - - if (!message) message = defaultMessage as string; - - const messageFormat = new IntlMessageFormat(message, locale); - return messageFormat.format(values) as string; - }; - - document.querySelectorAll('.emojify').forEach((content) => { - content.innerHTML = emojify(content.innerHTML); - }); - - document - .querySelectorAll('time.formatted') - .forEach((content) => { - const datetime = new Date(content.dateTime); - const formattedDate = dateTimeFormat.format(datetime); - - content.title = formattedDate; - content.textContent = formattedDate; - }); - - const isToday = (date: Date) => { - const today = new Date(); - - return ( - date.getDate() === today.getDate() && - date.getMonth() === today.getMonth() && - date.getFullYear() === today.getFullYear() - ); - }; - const todayFormat = new IntlMessageFormat( - localeData['relative_format.today'] || 'Today at {time}', - locale, - ); - - document - .querySelectorAll('time.relative-formatted') - .forEach((content) => { - const datetime = new Date(content.dateTime); - - let formattedContent: string; - - if (isToday(datetime)) { - const formattedTime = timeFormat.format(datetime); - - formattedContent = todayFormat.format({ - time: formattedTime, - }) as string; - } else { - formattedContent = dateFormat.format(datetime); - } - - content.title = formattedContent; - content.textContent = formattedContent; - }); - - document - .querySelectorAll('time.time-ago') - .forEach((content) => { - const datetime = new Date(content.dateTime); - const now = new Date(); - - const timeGiven = content.dateTime.includes('T'); - content.title = timeGiven - ? dateTimeFormat.format(datetime) - : dateFormat.format(datetime); - content.textContent = timeAgoString( - { - formatMessage, - formatDate: (date: Date, options) => - new Intl.DateTimeFormat(locale, options).format(date), - }, - datetime, - now.getTime(), - now.getFullYear(), - timeGiven, - ); - }); - - const reactComponents = document.querySelectorAll('[data-component]'); - - if (reactComponents.length > 0) { - import( - /* webpackChunkName: "containers/media_container" */ '../mastodon/containers/media_container' - ) - .then(({ default: MediaContainer }) => { - reactComponents.forEach((component) => { - Array.from(component.children).forEach((child) => { - component.removeChild(child); - }); - }); - - const content = document.createElement('div'); - - const root = createRoot(content); - root.render( - , - ); - document.body.appendChild(content); - - return true; - }) - .catch((error: unknown) => { - console.error(error); - }); - } - - Rails.delegate( - document, - 'input#user_account_attributes_username', - 'input', - throttle( - ({ target }) => { - if (!(target instanceof HTMLInputElement)) return; - - if (target.value && target.value.length > 0) { - axios - .get('/api/v1/accounts/lookup', { params: { acct: target.value } }) - .then(() => { - target.setCustomValidity(formatMessage(messages.usernameTaken)); - return true; - }) - .catch(() => { - target.setCustomValidity(''); - }); - } else { - target.setCustomValidity(''); - } - }, - 500, - { leading: false, trailing: true }, - ), - ); - - Rails.delegate( - document, - '#user_password,#user_password_confirmation', - 'input', - () => { - const password = document.querySelector( - 'input#user_password', - ); - const confirmation = document.querySelector( - 'input#user_password_confirmation', - ); - if (!confirmation || !password) return; - - if ( - confirmation.value && - confirmation.value.length > password.maxLength - ) { - confirmation.setCustomValidity( - formatMessage(messages.passwordExceedsLength), - ); - } else if (password.value && password.value !== confirmation.value) { - confirmation.setCustomValidity( - formatMessage(messages.passwordDoesNotMatch), - ); - } else { - confirmation.setCustomValidity(''); - } - }, - ); - - Rails.delegate( - document, - 'button.status__content__spoiler-link', - 'click', - function () { - if (!(this instanceof HTMLButtonElement)) return; - - const statusEl = this.parentNode?.parentNode; - - if ( - !( - statusEl instanceof HTMLDivElement && - statusEl.classList.contains('.status__content') - ) - ) - return; - - if (statusEl.dataset.spoiler === 'expanded') { - statusEl.dataset.spoiler = 'folded'; - this.textContent = new IntlMessageFormat( - localeData['status.show_more'] || 'Show more', - locale, - ).format() as string; - } else { - statusEl.dataset.spoiler = 'expanded'; - this.textContent = new IntlMessageFormat( - localeData['status.show_less'] || 'Show less', - locale, - ).format() as string; - } - }, - ); - - document - .querySelectorAll('button.status__content__spoiler-link') - .forEach((spoilerLink) => { - const statusEl = spoilerLink.parentNode?.parentNode; - - if ( - !( - statusEl instanceof HTMLDivElement && - statusEl.classList.contains('.status__content') - ) - ) - return; - - const message = - statusEl.dataset.spoiler === 'expanded' - ? localeData['status.show_less'] || 'Show less' - : localeData['status.show_more'] || 'Show more'; - spoilerLink.textContent = new IntlMessageFormat( - message, - locale, - ).format() as string; - }); -} - -Rails.delegate( - document, - '#edit_profile input[type=file]', - 'change', - ({ target }) => { - if (!(target instanceof HTMLInputElement)) return; - - const avatar = document.querySelector( - `img#${target.id}-preview`, - ); - - if (!avatar) return; - - let file: File | undefined; - if (target.files) file = target.files[0]; - - const url = file ? URL.createObjectURL(file) : avatar.dataset.originalSrc; - - if (url) avatar.src = url; - }, -); - -Rails.delegate(document, '.input-copy input', 'click', ({ target }) => { - if (!(target instanceof HTMLInputElement)) return; - - target.focus(); - target.select(); - target.setSelectionRange(0, target.value.length); -}); - -Rails.delegate(document, '.input-copy button', 'click', ({ target }) => { - if (!(target instanceof HTMLButtonElement)) return; - - const input = target.parentNode?.querySelector( - '.input-copy__wrapper input', - ); - - if (!input) return; - - const oldReadOnly = input.readOnly; - - input.readOnly = false; - input.focus(); - input.select(); - input.setSelectionRange(0, input.value.length); - - try { - if (document.execCommand('copy')) { - input.blur(); - - const parent = target.parentElement; - - if (!parent) return; - parent.classList.add('copied'); - - setTimeout(() => { - parent.classList.remove('copied'); - }, 700); - } - } catch (err) { - console.error(err); - } - - input.readOnly = oldReadOnly; -}); - -const toggleSidebar = () => { - const sidebar = document.querySelector('.sidebar ul'); - const toggleButton = document.querySelector( - 'a.sidebar__toggle__icon', - ); - - if (!sidebar || !toggleButton) return; - - if (sidebar.classList.contains('visible')) { - document.body.style.overflow = ''; - toggleButton.setAttribute('aria-expanded', 'false'); - } else { - document.body.style.overflow = 'hidden'; - toggleButton.setAttribute('aria-expanded', 'true'); - } - - toggleButton.classList.toggle('active'); - sidebar.classList.toggle('visible'); -}; - -Rails.delegate(document, '.sidebar__toggle__icon', 'click', () => { - toggleSidebar(); -}); - -Rails.delegate(document, '.sidebar__toggle__icon', 'keydown', (e) => { - if (e.key === ' ' || e.key === 'Enter') { - e.preventDefault(); - toggleSidebar(); - } -}); - -Rails.delegate(document, 'img.custom-emoji', 'mouseover', ({ target }) => { - if (target instanceof HTMLImageElement && target.dataset.original) - target.src = target.dataset.original; -}); -Rails.delegate(document, 'img.custom-emoji', 'mouseout', ({ target }) => { - if (target instanceof HTMLImageElement && target.dataset.static) - target.src = target.dataset.static; -}); - -// Empty the honeypot fields in JS in case something like an extension -// automatically filled them. -Rails.delegate(document, '#registration_new_user,#new_user', 'submit', () => { - [ - 'user_website', - 'user_confirm_password', - 'registration_user_website', - 'registration_user_confirm_password', - ].forEach((id) => { - const field = document.querySelector(`input#${id}`); - if (field) { - field.value = ''; - } - }); -}); - -function main() { - ready(loaded).catch((error: unknown) => { - console.error(error); - }); -} - -loadPolyfills() - .then(loadLocale) - .then(main) - .then(loadKeyboardExtensions) - .catch((error: unknown) => { - console.error(error); - }); diff --git a/app/javascript/entrypoints/sign_up.ts b/app/javascript/entrypoints/sign_up.ts deleted file mode 100644 index 880738fcb7..0000000000 --- a/app/javascript/entrypoints/sign_up.ts +++ /dev/null @@ -1,48 +0,0 @@ -import './public-path'; -import axios from 'axios'; - -import ready from '../mastodon/ready'; - -async function checkConfirmation() { - const response = await axios.get('/api/v1/emails/check_confirmation'); - - if (response.data) { - window.location.href = '/start'; - } -} - -ready(() => { - setInterval(() => { - void checkConfirmation(); - }, 5000); - - document - .querySelectorAll('button.timer-button') - .forEach((button) => { - let counter = 30; - - const container = document.createElement('span'); - - const updateCounter = () => { - container.innerText = ` (${counter})`; - }; - - updateCounter(); - - const countdown = setInterval(() => { - counter--; - - if (counter === 0) { - button.disabled = false; - button.removeChild(container); - clearInterval(countdown); - } else { - updateCounter(); - } - }, 1000); - - button.appendChild(container); - }); -}).catch((e: unknown) => { - throw e; -}); diff --git a/app/javascript/entrypoints/two_factor_authentication.ts b/app/javascript/entrypoints/two_factor_authentication.ts deleted file mode 100644 index 981481694b..0000000000 --- a/app/javascript/entrypoints/two_factor_authentication.ts +++ /dev/null @@ -1,197 +0,0 @@ -import * as WebAuthnJSON from '@github/webauthn-json'; -import axios, { AxiosError } from 'axios'; - -import ready from '../mastodon/ready'; - -import 'regenerator-runtime/runtime'; - -type PublicKeyCredentialCreationOptionsJSON = - WebAuthnJSON.CredentialCreationOptionsJSON['publicKey']; - -function exceptionHasAxiosError( - error: unknown, -): error is AxiosError<{ error: unknown }> { - return ( - error instanceof AxiosError && - typeof error.response?.data === 'object' && - 'error' in error.response.data - ); -} - -function logAxiosResponseError(error: unknown) { - if (exceptionHasAxiosError(error)) console.error(error); -} - -function getCSRFToken() { - return document - .querySelector('meta[name="csrf-token"]') - ?.getAttribute('content'); -} - -function hideFlashMessages() { - document.querySelectorAll('.flash-message').forEach((flashMessage) => { - flashMessage.classList.add('hidden'); - }); -} - -async function callback( - url: string, - body: - | { - credential: WebAuthnJSON.PublicKeyCredentialWithAttestationJSON; - nickname: string; - } - | { - user: { credential: WebAuthnJSON.PublicKeyCredentialWithAssertionJSON }; - }, -) { - try { - const response = await axios.post<{ redirect_path: string }>( - url, - JSON.stringify(body), - { - headers: { - 'Content-Type': 'application/json', - Accept: 'application/json', - 'X-CSRF-Token': getCSRFToken(), - }, - }, - ); - - window.location.replace(response.data.redirect_path); - } catch (error) { - if (error instanceof AxiosError && error.response?.status === 422) { - const errorMessage = document.getElementById( - 'security-key-error-message', - ); - errorMessage?.classList.remove('hidden'); - - logAxiosResponseError(error); - } else { - console.error(error); - } - } -} - -async function handleWebauthnCredentialRegistration(nickname: string) { - try { - const response = await axios.get( - '/settings/security_keys/options', - ); - - const credentialOptions = response.data; - - try { - const credential = await WebAuthnJSON.create({ - publicKey: credentialOptions, - }); - - const params = { - credential: credential, - nickname: nickname, - }; - - await callback('/settings/security_keys', params); - } catch (error) { - const errorMessage = document.getElementById( - 'security-key-error-message', - ); - errorMessage?.classList.remove('hidden'); - console.error(error); - } - } catch (error) { - logAxiosResponseError(error); - } -} - -async function handleWebauthnCredentialAuthentication() { - try { - const response = await axios.get( - 'sessions/security_key_options', - ); - - const credentialOptions = response.data; - - try { - const credential = await WebAuthnJSON.get({ - publicKey: credentialOptions, - }); - - const params = { user: { credential: credential } }; - void callback('sign_in', params); - } catch (error) { - const errorMessage = document.getElementById( - 'security-key-error-message', - ); - errorMessage?.classList.remove('hidden'); - console.error(error); - } - } catch (error) { - logAxiosResponseError(error); - } -} - -ready(() => { - if (!WebAuthnJSON.supported()) { - const unsupported_browser_message = document.getElementById( - 'unsupported-browser-message', - ); - if (unsupported_browser_message) { - unsupported_browser_message.classList.remove('hidden'); - const button = document.querySelector( - 'button.btn.js-webauthn', - ); - if (button) button.disabled = true; - } - } - - const webAuthnCredentialRegistrationForm = - document.querySelector('form#new_webauthn_credential'); - if (webAuthnCredentialRegistrationForm) { - webAuthnCredentialRegistrationForm.addEventListener('submit', (event) => { - event.preventDefault(); - - if (!(event.target instanceof HTMLFormElement)) return; - - const nickname = event.target.querySelector( - 'input[name="new_webauthn_credential[nickname]"]', - ); - - if (nickname?.value) { - void handleWebauthnCredentialRegistration(nickname.value); - } else { - nickname?.focus(); - } - }); - } - - const webAuthnCredentialAuthenticationForm = - document.getElementById('webauthn-form'); - if (webAuthnCredentialAuthenticationForm) { - webAuthnCredentialAuthenticationForm.addEventListener('submit', (event) => { - event.preventDefault(); - void handleWebauthnCredentialAuthentication(); - }); - - const otpAuthenticationForm = document.getElementById( - 'otp-authentication-form', - ); - - const linkToOtp = document.getElementById('link-to-otp'); - - linkToOtp?.addEventListener('click', () => { - webAuthnCredentialAuthenticationForm.classList.add('hidden'); - otpAuthenticationForm?.classList.remove('hidden'); - hideFlashMessages(); - }); - - const linkToWebAuthn = document.getElementById('link-to-webauthn'); - linkToWebAuthn?.addEventListener('click', () => { - otpAuthenticationForm?.classList.add('hidden'); - webAuthnCredentialAuthenticationForm.classList.remove('hidden'); - hideFlashMessages(); - }); - } -}).catch((e: unknown) => { - throw e; -}); diff --git a/app/javascript/fonts/inter/inter-variable-font-slnt-wght.woff2 b/app/javascript/fonts/inter/inter-variable-font-slnt-wght.woff2 deleted file mode 100644 index e6345f2e3d462ea7f5c0dc51b7aa3ae965acb9fd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 325956 zcmV)UK(N1ePew8T0RR911o=b&6951J3{YSI1o+JW0RR9100000000000000000000 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 z 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%0D=P`fV2uDkPGx&7BPWAix>s_E{D%)Q7;hP3Xnks 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 BdWrx5 diff --git a/app/javascript/icons/android-chrome-144x144.png b/app/javascript/icons/android-chrome-144x144.png old mode 100755 new mode 100644 index d636e94c43bf42f5e77fce4f0301d7251fc2b856..698fb4a260b13621d40468ad5f3fb3438568748d GIT binary patch literal 5810 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 literal 8852 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 diff --git a/app/javascript/icons/android-chrome-192x192.png b/app/javascript/icons/android-chrome-192x192.png old mode 100755 new mode 100644 index 4a2681ffb93418778457313717257e0e36781abc..2b6b632648f6b18918881287c8a8b295cbc81eb7 GIT binary patch literal 8741 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 P00000NkvXXu0mjfxX8FH literal 11510 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 A)&Kwi diff --git a/app/javascript/icons/android-chrome-256x256.png b/app/javascript/icons/android-chrome-256x256.png old mode 100755 new mode 100644 index 8fab493ede6d3d4d7e08efe78b51d029cd21d8b3..51e3849a263062ccefb246dfcd2130114ee040ae GIT binary patch literal 11993 zcmb7qWn7d`{O!_R3sQpA0@Bh7!Y;7jE-j^mf`D{M_tFwlOLvF}NGRR$BLwM=m2RXv zmfg$$-go!az4K;fUd;2%oS8XuzTeM@($;)MLCQ=D001c9FsKdyfb-DA0TAOpRFl+T zQ2;$_bVD_Usw01T1gyLdfrNA%hUEw>}=Q+@!2lvHRS(5 zT^THvIr;Px#o}jvXRq&5$?yT^S<8QpHh60GvuMnVo18APpYT@S6gTytjav`{(g^*Si9jiAV^fy!gk4D(5T1f?3v%?81ME_9mn@lTeMYdm%_z)W4pYk zM`^>GfVTZZgEtH^GT!GUx3_!I()MUf)%owo9z9iW2lRjZwB%zD*`hvo^D)OYM070K ziPSZ?A+kJ=Cc2a^TybVdp1DQH9=K<_mQ@%H7Z-n^7MV(?={9v)s^Zp188}n^GF~y2D`lW$y zqLhO~G@j$a*oB+Eu-!ou276`2$37#H7!R)cK1?H+@0q=55pZ5*Dh@Tmr-h`CDr}j_ z=|7FW`{s;L8w=wj$OQz@3Z5k0?(n+4F-ZyGON@~3f44**h6Jkg|6yJdREucVYrX#D*dCha32% z(MycN^YYI>D1u_EC62+(fsVT;zjL-p4S74CBjrHtrvXhhBUU^oe*Uye0mgsry?d+$ zy05Dp;=nId$C5bILZNidMMC*x`&Q6V5?oe56+obkUx zQ+H~ocFD%oJ`<@Ezc1qB;FB_kcCE55&@=cve_}1p32aLCw4IJSO|k2KaXHz@NbjEq z`)4Dmkiw_go`lYgd{n&DG(7>TU+UyDYFm~D*K*S(RKy1HfdGP_d|tdHX0qZUU8T@~ zWvVq1Op$kCp5!~C@|hH>Zvi&CHQ4%!o(PFSM`T#BlpYbhIO^y=hJ7) znI^3-Y7WHn25-sViIf8q8lz?(jm?EUA*>=9CbOb-Ldb1fzk

?H( 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 VBYhwK;8h0z;L4iNN=37f{{_(>6$k(T literal 14862 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 TZP^?A8$?D@QKCf5=+plJBW(8O diff --git a/app/javascript/icons/android-chrome-36x36.png b/app/javascript/icons/android-chrome-36x36.png old mode 100755 new mode 100644 index 335d012db1c00cd5101475fa2473ed9c76125507..925f69c4fc71093ff043535f516735121518d495 GIT binary patch delta 939 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 KE0-%;hW-aH@Ujj7 literal 24227 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 diff --git a/app/javascript/icons/android-chrome-512x512.png b/app/javascript/icons/android-chrome-512x512.png old mode 100755 new mode 100644 index 1856b80c7cb972002dcd0315b8a3a467313a3ba6..bffacfb699c6b1133f85269342adddcc0d185c14 GIT binary patch literal 31858 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 literal 38207 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 RYk zXZ}BCW@ct)W`0GFncp!pGc#kr5HzzbX?ObBakgB!m2>5)Q>fG>)_g1dwzt0#jDOd= zh5b<;`?4Bf4X_4S1FQko0F(AlFzsVt4ab0nV|g_)W=!K4<$p2+w~skiETo4V%GImc zvV@BltGR?yGmA|$14&Htuv`vF6+svq6M*qC4h(2;5IsF=YsJJV4YpTgY}Kmp?B}>+ zkMrIm6M;+uAnyqRLXxNuvrqtlxpSExKQgRaZq^l-htV7vcjSj#`$`dw?_}W|T zyrHeVb=5~dT|D?;dmNjO?9jt-$L)gZ=$KZlppPuS@9w@cnV_PX(fL9%%>htIlk#X# zdgb}8haPtD|3A(D_Loys&PPRaF-UT9Sap1~dwg|81_SiuJ4PWW9MDq3uAc7j@I9NN;ymXIAQvsN zw|~AXKIBlJ20ijn{MX-?2l~*par4Q)50mhP(!c!2+*iFmTDZ_v6J36B_2Tm?E-C_= z;J@e2^eIove_jJZfT=zi6BNSSdC04+H6hKM0|DTrubiavo*q2r*y#B$(rG7FX&#V| zOUr!o`^NYevokOH-XRuaISC;b2ks$a&SG^tG{?8rb3 zbOKNashN|4#9TF{pkRQxs44d}s#OW~%^0fHnV+3P%5!mwcj^R4HTM|+Qf3iy|jjsjq?QYoLYoy&6ysU|f`$1tmmjg1PsZpA`gU-;(yYE=rNF^Y(s za^-o)0HBVC;@C)9`?*~oilmPyi6rt|dV=zvt^ldN&0}m#yWq}l)NYIz1*h{_ePGzUt~&PgjDRe1xVF6##%XHI$f9vnWp!TyW+P2}(c!Sf`9(ps#0W zV9DJ1u4ZolKyo%vPf&ir8GnQAYdd}1oIS33I3`L2I=56auzYXGZp=nAmEUmX$XS2i zLeiOoRM#I&>0F^>L-o+3iZk>E0K_bnFRzU2%oF?1JGqtSqPPh#0g&qWV-D$C*H%$C z_4lSXT|IKe`9oVaZlif;kuib*sGh$B3t(tnJC0rI!ZQZ8Y)n=i7=KNimadHE%yq>k zBB%0rD37VTE9vP>yS7!kJJWR!kGHKGs8&V+nmOl-<~(hhs&0-6klNM__H-^;yu@P$ z8FA$WZCL>TMp4te179z;^r_;}je)l*|S7C0#b%}-I0IlJnSF+otZGJf6VLoa{h zLd>A!|E-CDz$|a7R)0skw~cmp3fo1I#%w?)h(@!>%!5XA5R}2!*D*;1&HN>2_dosl za~CYCZQ6=8@&7zy#ckL3K|8=gNCFZe0Hgq;_XWUm4Md~^Ioh1gO zj|-pr_Hr{KFX|nSxiAWMgRnuA%y8}N`C>!AAa>;azs&PFy3|R z=0E>5ddEjwkVhj6MSIVumQFN-J8v3kUtbyMOC%NwDl}Ph$<3Ybm#vIeu8Eefj&Htt z==@Xqr#Heqw`zc*a|MO*%g${b8%^H*iKTJT^8b=}U}CyE^vGfsv|8?GKT$~_xrbK` zNOJV>agvm;zkjS_OGoA1pImm}VTC+f{vYSOjFeKs0ouc01Ryy^a7t8O_wd$leZ2C2 z&z|?9*DYGIJgV_QX=Xig-`E{D4oM)icPu&Lb~cOPl_ZtX(cVkX?YZj0t;hZAqT~Lp zbj&|DuQ{|}#+pJ92*T12K&=3?d8s`)sf+TKm{oXoGidc7j2XDrf4%p?H>GNk=$>8zl}Ld?eU^afZ1 jtO3>lYk)Pt_7nXBJ)XA4jyl9|00000NkvXXu0mjf#MWGi literal 4724 zcmZ8l2{e?^+n>tLNU|>>dv-<`p&4W-OLmj8FB7s&mPuqu$P&ib_pzlR6J?7K5{bcx zu{6dmge+PA)A@hr`_B2!d+vMR_qp%y-t)Zo{+|1LZoHX^0g#E02><{94Pkob)Ef4$ zFwjx&R_pH!s1=O|#25kq)TJ;VJJC|#g5+!U`t(bT z%m8NjtL1Mu0DwyjhI$aokjb&UP;dL*r@cBVzNYd`t-c9pSVFV->RZ

E`vklv7) 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 fTOc31B7B7{eSN( diff --git a/app/javascript/icons/android-chrome-96x96.png b/app/javascript/icons/android-chrome-96x96.png old mode 100755 new mode 100644 index d1cb09582205563e59843f116b500b2aa2d4cd5e..9ade87cf32c06bc58161a12b88b2e5b65d822957 GIT binary patch literal 3306 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 diff --git a/app/javascript/icons/apple-touch-icon-1024x1024.png b/app/javascript/icons/apple-touch-icon-1024x1024.png old mode 100755 new mode 100644 index c2a2d516ef5b03e3f30ba83bf42a89286cd4c320..8ec371eb27ddbead63735957fa3464c6ad9420b1 GIT binary patch literal 77950 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%0D-WT%mq9WvsW7+ESM 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

x$PD?pMSt8kZo-Xt$@&-U^KoraSWy@N!k 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 HvJ3t{seCCN diff --git a/app/javascript/icons/apple-touch-icon-114x114.png b/app/javascript/icons/apple-touch-icon-114x114.png old mode 100755 new mode 100644 index 218b4154390789752ac5b4b7d105db9765223e85..e1563f51e5758b72ebddbfad67d50e4af6888916 GIT binary patch literal 4123 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 IM6N<$g5H0PY5)KL literal 7494 zcmZ9R2Q*w=^yudkooET7cQWeeofvHlAsM~*5rPrDOGb~*=!OU*O%N@D5IuU0&LBcW zkKW(S`@i+xT5rv|bMKsc_ndpq+2yzQiGQT8eVd$_90UU0)`4jtfOFu#gOnKfmUogF z15Si4Y7f;wpie0jm-a-!Z%#)T;vonW%nt%Rj{st_rWmZQ+%_wko8yn=sI)%ln?jBJhiDlzhBJ(-p)IntXDjL0|!j_Y6&hmY;)jVM1 z9g?nyeQ-PY8HW^3fZPUlgZ6=lVtba^sOHv@Vh!`n85f_QZy(oqhXiD z$FKEr^i~eWYv6DI#6yPXCfD>XyEwWy-aQH54Ny+o6*YBVqM-P)cx(EByS?S^f5Jq# zyZ58pFTaAg2ssDv(DD1wzS0P>!y3lpiUAQ*vk|Ap5r|GPw*(x-_$3g2OS2kK9mS6n;@-;FWEMxPj z;K#&S=r|G{T_%MuzmB$UCOOiKjp92p(Zz{#6Fy!IYaCqS1S%H8tzEg<*Jz-hsA-5m z7CI|EZ+{|~%I?K{M~bqJXAm2rrWo_7FZ(X^iBqG{cknysS6AePx%;V?m-V$XdOJ;+a?T zMo1jAJ)*3&{S=B76P(mUXG(k*`CyBghw0EFO0M@xRxuNH?lhq+lLdCpznxYy4>Eg7 z)GLA>M=zwof;#M_L_B4PpS`H#GXuL*G2T8=Rzuc)|4PK?7qAQ;lw#v!0Zr!FalLIg z_~1TsB#ogBi-fryFZsJhE)kV8we^kk3ch#1cia%?FQ~c0%o^6Z{aycis#P_ynIVa(G$<^sspSUFHKw5GB>3Ig@tyAWq(pt!TD#MP`Z!6UU7GOnLxH>Iq z4AGg03D&@zvGXQ9Ri8x8D5vtuq?XA9mj7Z6xcmu)q9w(XRurjT&9I3#CD9NJ4-g7O zoUQ9oEzFa$gp-Ts-|m3i|EQ|*_-HXlPTI3eU{}>3VpB6}p7UfpZZz>eos|w|Vj;S0 z#!)7ai_kjh&6nVnt|ZP5i8!*hm zkLVnjm(GH9L%O8HN?m$hQehdjtJ1#1#6&fMykq2XTkS#@N5|>BOPq$ZLIp<6&E!Aa zQLF>Bf+l^mkU{10$aWc9luX_hQ=Cx^PC<((dYSHMxT*Px@&3HpKD1Kpe_}xK;yLx1 zycPLty(;e36@3YBUB`6L8%$fKIe1j%T->s?BrsS&?2EoQ8z*%987<>_=bc5d;(9;lB>x0~Xzt~aFgIBNND{meWj4s{;3>Sk^h3Y@M{iZ;*?B|#` zK{#r@NvovnX(_VgEt2DyP+*j5YD0zEH035e_tT5FZ?!Ga8Go**?Q0a(e3nF*|zgF>q12Q{KXWegXKPjsjNXy0dgM_`T_Ijs5 zBtJfIa^P!a{`{EY>pypC5G9)#8CELi?wHSf1g)sTGRfBN-2;u&E%I2QXm$LV!CjN> zc-=R!PDue8qn$Hirl8Sfq#QO+1`m`K?n)6S(g3MCpu9W!Gwe-3q2-+fS6Nd?BDmsX^g*qh z3|ZJvQCbT`9LUUD2H1DXMe?y~XjIYAxxlq1CShE>89ZODLN{FqFBheAL0o*m(1O3jdV8~gP=q7JdBcBS3;g+_}M<;m-htZgOjYU~0 zHjbgMI=nrz?e8@R1*DokqCHTmePoZd>)`ynMK$LA@^$q!Iae-gi_U>|Wi>mhl_q`T zQ+Ne7lx$(QMnMQrML=zv*M8bkWsxyJQ!!a=b%F%y)O-7us*Vm`9=MZZmvk%TeS(K? zY(5EhA!+~{2zb^hH>$e2Z+4cBcv*VLTEBH3Y{ZR(!jau14MA5tlOfyWr)x}`sL$d5 zIj81X!yMeoX5OK&_S@3N#JSO#rR!N5&L2mwR4Q0Q3O7a<ddIcw?1PP64LPO`r|3-S2AGWjN!w=COQmI^_nhG4kcDIZnGM`R7(p+ zda(=yaW?*n1Sz21o^690&`Wd<#}vnkXhKQ5&*yTBa^vpja4?DqF-Rz2iZd*ONxA}9 zAuBAC)|(Likm5!ejBXYl^EThg>ImA~6O zHS0t6qRCqz8y_ZGW}I2f>5h)ZIMI7(!kE%%xzI#&x3*2Q!p1Wt9`y|{^oo9X-MkFh z`PlURyGYlLo`kC7y_^lHA}owcnpNlBzqt1J$i~wuFdxvc#NOha%pT%IYTu>&BCfVf zG=0AczZx9{De5kK89wyNYtxf^frISbXxMhG`S=Am9ubqAnx5D!@zU-1u~kh`Fb=PRe4zQ|u<0hScZ=NU(Fi$nK-mVVn|4cfB z{oFKkuRUdN=%GlZa+XfXRWp~KvO_&(Vl7nwS5MIDnx79k@@bHk4HMw8Z}rtLJVXn1 z39~&W?t71`p{(Btq2Yx6McnQp3Lj<-`^eZURQY+eVlN2!vps{JzYX2~enHL(JjrK9 zs^nwnD_cla*l)L_r}r~Cq~+n!i&)s8Z%LN9VF@vAy7467-iGUPU(>M28EwZ%Za#CJ z6HE~I+e3ws@t3GQjXQ%Mqw%hEMt!O0Tr{mq!UyJQ+_zUX0?lUhE)igW3 zX`mxs_@9S$Hckzjvo5viH0dwubpzMSU@$#0OXgeQC@YxP??#i{4f&x`Deis7&EV%l zLIS`G_X?J;3ISC1_y>Cw&C|TxC+Fin?^O0iP!vO+(V*ci-v5ev(&d@NJ{CavrymjL z?vNv@=d(U*BaOp3wzC&`#;xt^_r*R~wjNXT0kfTEXZdrkNQYDsBoSJ3=Cg3YvzkU> zXQ)P0Px$6nK2z}XO_%UUykviJWkk{Z-*dkOv@q-P&x-jkt2dkfsR9gmMCGL!l}c8x zNC&Q%aVa!*B11n9C`|6(HM9tbdx<^i>XOlbB^8X#^5G^RzQK9J=3|ikbW#pFOE?oR zZavl5$T?^U0Vh_hTsav)0GyR`JVegob{26mkXS-;xomClAlS2a?CAwFkMOfZ-bTQw z`W&57tYRk9E$ds}pVbW44Yca^ejh}ZXb;B{IOh|jM>WRl*&|22~80moD^vJEzk4IF6gMo7fi8OSMaHiEvR7bA6 zIGUFburAV5B>;L?x{>0x&5r?8jz_qe-==p>`y4b~_Q@()0Cu6m6#u1Y|3*#Rq-ycp3i$f>AD7_W)kRqc0tQFt152 z2Mkg&3Qgf~WLu+I4ixU&njPQbS)k)eiFYsiwe_?%;&PGPmJU#=jn;i}B1`7>F(o*Y zTsq?2^fM0Q3l8!aIqO$u5=>(K);ed$9TV)qQDugeBf-Z>Z++>=gC5rfv!|t^uUR-G zRYuenl=1NvQzy}qQH*GM_&Yw_BPNC5Z^LE=EK@3hxkExdpJvzqqo>^qF~L5dcVD0x z;x5OiS@_e&a@=qM$;v>PRLqOwO`-Xo(6WMb=IVs^-$mcA{Ns#(aDMJgHi@TckH*-P zh-G+M2SUvfF7QMIw^YOmXUNw0wE=tMS~^(5=5vFU*9}SFx@A4*_ntJhPd`ws`Kg|u zl>5~B?HKLiKav~t&bR*oIcR54u?$bn2v4avN*aUTc}~j8KAsFd;w-4{SFzEr!3k z2FX)l?R2??_d<}l%o|-hUdwv=pX>Q(yv}~BdL93GGkRrXRx8!DvP+K?e9e|D(xzjf zzn`ZagF)~%q`y->6;TjvP1!jxlV~&v!x`^cJrMG%ggy@l&)dKD2XyGbu*9Ak0n-5p zUM1*;@m?_K-Ao!H;oRRLH@0U7#@qkZ+4}umO63Qh=4^AjS1z#pg)!aw#vvd8*9u#K znU?VnU}Z5O10LOO>Gg+1dm(FQr&yN(*7tsJb?afeyO!ukEdKOAAXl;nr=k4Fw3hXT zzNO_b*B=Q***R2E?9TI2%;EN0s8xn30odN8t2TT-Ar)n&S_Gi`Ao9&}i@^8FC!~sd zpZ=7SecQ!SD1e3EcD`B_bRL-t6%FmVT9KY)hyM$6X?eLEM+!Wjs=6p#Szi*GlKaJS z+*afW^F!liOai>$DsqGANcm$L_lNXjTKy|b|0E!$=?b1aKEP5$P0%15{T*^XUDrFG z>=rS-EH*TWh!at4WiTl@qQNvmo`#jX(^Fz|_uF1Q9T|{j-*7E!Kt{lF)8T4pp!vD4K@!v3RXgHPRP&#hyo|ca$G;jQt3FdA9NFAHSb}Q+J{_sSwNsa0U^; zI5m99@AUBAc=SV<$nOrB8}_}S(aYrz_J?@L$LYLCBtD@|^fw)%)GD?as&fXipuYPqMzrp4#P&1RM7iC^H?mrHDKqCWK4LNZQEH+;phV$9gr4h}EjX z_dKz+oTxS_o%r40o0wHo8H;;wTvfA}g|(HHy%bk=XSM?83uhOSa^>XSTlw2G9F1F{ zf7yLUOk!-jdgb_CgTHG0JM#}VioED(8a+zi93o@;vF3sgc!=*%%emA?7d)l)l~DBH zvQy6${*Bv>`n0u?9WRFB9%u^)fIsrlQdP75?}7pudb>ERa$1Z=VU? zB3fZOzRmM;@vQ3j^*LWbGD|O7)o6ID{iH zX%u%?rm4f-%QK9qZ2jDP{2`0~bIp>Uf1h< z&5{~u@5j%DCjVNq1VtM+MaI4oPN6ZbbwWDCE$2^lc$*4-D_r6ZGQ6&)7L;aD$0oJa z#6fL$F~v2#)@mK5Mc=ZP5*zPy<`yudB_P0&&jS|!p4?Xc2GDrFD-DjaI^n6wwlRZ* zC47o$tAW|3y%7P#nn9x(deRX;RmR0r#o+wmXw7PxbU;)4cJOCmH62fDEtn}@gltxj zo%^jcTouae77s<++;^4l60UsRw&rE8YbHO=pNM8r`?hZHP$j8U!|~7R z)zqJ64#Sh;+w>Ph*1*gL%{1L=sYryir@3|KwHwi0&jtFlNcH019`Y!W*@Q*OV z*W~TgKy)%X778M^QD3~bZqm|BhbF&LFICLzxMhXx``l5t{>NUv$~5&j)IDNNOaDhk zU&Xj}=dHT+Nm$Bakkt2Ll6k~4m8q{)>SEc+%cEHjMVg*0-x+wA3{jbO1=qS7cs&l; zvy`*y&B|{l1v9y|c0XGG@dGDoCeG#IFIdm9mfUm$2Go?W_49cF;MMclt?RZwMI%d@ z)vc4}oBd<@tWO-HQZ1d!cHFC_Ty>RZUONG-C9W*v)gKXE_%2Y0()!KYbA9p;Ct87P zX?6`4vm!3si`6dnf#>k72H^u4e_j4?DTlp_A87UkO4}Qa3nX} z9Eq5AL44_~dNDunS92oPUW3MP&H2-ZoH_Z-_QAFIt;Q+>;Z0L8-^caE((RQ|V^XR$ z^?x|2>mbv866yX5p!-HnD26OPYOYy_s*xmblfK%k^BH}iCK%}zEnj~Oj7mf^_ zshd_}*`sp|+cdPTWyRRD-!@wGlJm^ViY8a5hD`X0l=AVtX39pCv~Ekd*j)Gjy3n~F zd92$5q_VUIeC}5lZex%Hqp;T9B4-PbD*@L?k2=k$3XS)O~hcQ9iuc!t0s`?Q!W^w z4ubT*o~q^+F(oAMAVHF3T;iFxQZ7UO%1l*G-{WKFqB*p>AvK883?1DZEglG)vFj0V z@52LB4q(#0-D{hI)P!7ArXfN%yz6+F;|mnP@YhZIiRSkA(A1poADTr?Kn_6wLvu2) z((c#ni0UDp4XU`4RW$s`W+L}h{`M=N$nn(`;=8Vmp2pMSD#60U_m*0*lJd$sHqAdc zrCF4xR944ET}E#eD{8N32UIX&Tt~I-%tZW;%_FllNaH1Z6~s8!BLR#bmSmaiKl{aF z)|PaDl9W|On!iL@$@Kvqg}Bv4v@GudJPD|24K@G0vv}R4igb7@t1}oVh~!CB zC$(=pE6~|k&77hgQWORH9dwaD9-!XvREoyS8nk7xA$<<+d)5uayd!4I#;>o6-6(pj z<7JdzFeLsEV`~H5Bfhnrt>eX;W@(WyQcF)}0b%I5n3F&FYYUm2dr5=-hkpXvu-@-{ z;?j~1t_9 zE%nahftd&x_}~7=0ahC*nreD$*;J{%!+WW;X7Z;tprHk4e;BFeCS160V?TmbbJ zU&O1ykt#oLu@N@21N$8bbZigZX;>);4ShUstHB46^$aG0IsUaH(Xwxc9G#MSdcfVb zQlu{)aMl`NWAE3^`F2{ITC{{-EQvA6kY1x5BbUVF{$2dMxus$qsa8LZWd}C?_{n;!;BYE+E9YxBl%k{yzZ^l#?qm=>G@+ zGBQTu;tCK61u6Oe5m^4FS_%l<|Gz!>x_UVK_}Y7T{ePW^ODaf9|BuYXgONo*hUK4( uAqwdmVDIe=Qg?Ru3G(4I^!0OcMR6LTQ0{GSmP3KZKsuWG8Wm7G^#1~=&_vw; diff --git a/app/javascript/icons/apple-touch-icon-144x144.png b/app/javascript/icons/apple-touch-icon-144x144.png old mode 100755 new mode 100644 index cbb055732f186aca5e9661b9b68805312cba6129..698fb4a260b13621d40468ad5f3fb3438568748d GIT binary patch literal 5810 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 literal 8852 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 diff --git a/app/javascript/icons/apple-touch-icon-152x152.png b/app/javascript/icons/apple-touch-icon-152x152.png old mode 100755 new mode 100644 index 3a7975c0541c751aeeea1355a47431eeb61dff02..0cc93cc2888c02a3a2f1b4563858a2fe46d82c0c GIT binary patch literal 6177 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 literal 9125 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 diff --git a/app/javascript/icons/apple-touch-icon-167x167.png b/app/javascript/icons/apple-touch-icon-167x167.png old mode 100755 new mode 100644 index 25be4eb5f5bba5400433a26ab819d3b8c66f0b53..9bbbf53120cc00b5246829f5bc4b51b9cc7e0cc3 GIT binary patch literal 7041 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 literal 10012 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 UfBD|>KkN%&)OFQ9qpU;z2MFg}I@$G1al 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 F{{vvK~#7F?U@67B+VAZ&n*mhCfSMCdbVxb zwr%5wXWO=I+gzKIoqQW^oJ>#SyxHCUeVNpoSxjW+g8gR$fG`V1x@-%Q0Y0sEuUOqIF#2c?d#=0sKInPk+B=GvW1bpf_zscaOBU zBa;yk0}!qR5VFqAiE)gLv9E%iJ9*?VAad4Ot&Q$}4|UtyS(}>cC<0>uY34sN2$0E~ z`t0nIt6mLvxRX?R@wKmp<+7Yb)>4U2f0pU$7ME-hH;EVvU|#k5jeOn<&DXyY{_zj| zpW-#bf2YCp|yul5O0~$vB!*9dC{wW+DrnT6xQSN*Qqy{Bsh;F;Qy6O~VVaLsGqlFMdsrMgyW z5Fis;V}FTKyK*LJRMyYBUs zh;03PFgX!nW~{&5`l66KgFY0`hiuO8xGa#Tq8-wb#EEk;)VRVHnk2E=mAEq_bNAlFk%Kws*wkXR3-t#V~}3??q1X zGJhI@9|3CVenk|)730YSqA@>MD{%>7ta6yZsOdBc10W(4v8W6|EGmMtGm}J%%r7K> z7}jl%_&c5QxUslh>h`tC0bF_>VBpQ18g%PCIsyfBndZvrl*f~u5$C5A)a`4N0hb)F zg2>p6UvpSvpT^&tmb;4S1r96g_5~5BmVchJM46OVjq>>hTb%oFg7V>y&yx_rma7@} z6-dDC5{9SjlL9b_{QzZlmQ9@mx~#XoW0s_d7%ONLn|GO-jNpJSjg>P~A)p&k7h*k) zD9v`X%~|{Ve2|IlUrEl+%(GW$k*ilo2wq`vH>WLscZF(UIUApPTsA56hxVDpMc; zCYJ~5v(>9Ioe{v*kprGL%hl^`v42%#VU3T5Lj(TtqrvX2vpcs|r^bi0PSsJB2*~8_ zv&h-0(Y-s`uYc1V;Htmkf8fpg0d)3s7K$pHSGl}0R=imT0ljK8GsUsdU}9{z!61~e zHkFeYG`Sc6DPn%}lgXy6SGi_7n=g4Y69avN16L4DMbX+^8MXp3HU|g^fPV>}xvkCq z^*5CrcQ0J`CN6G!m%YaWia+>j0L(1>V6myZKpIP&M<>QA5T(o~-aYt=x2*17W1ZRk zz(tx5gnC*$QqUd@XQX7f^PHLKRy)$7tn4pjGSt2$$K7Vim-$qe-mzvUHp`pdem zcI~W_jc$DF6*sz79+2tDP=7?~Q7a9{p09uUeZ+K;OXIUg6*O5v6-P zXr)ancWEG36g5fbHck+cfk2(RJ56gdz8}p@pZwCtM}GPJj=SD}+O>1--F&vxVXRdEYPD#f zuhw6w9o|>%J3b@;aOwnm?(en5*bGSo)iZsM9vnP+Xu(valtJuhk~mj>bsd}mK`^L8 zqiH^ux{S#P1cGxI1B*j1CIJ!vb@$q5N4zZmXM~GK%dE?+%dE?+{{rDsNJ^nf9;N^Q N002ovPDHLkV1g&jN$LOq literal 3787 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 diff --git a/app/javascript/icons/apple-touch-icon-60x60.png b/app/javascript/icons/apple-touch-icon-60x60.png old mode 100755 new mode 100644 index 9143a0bf07360dc7edd46b8923a6e28d908edd73..011285b564703b7bcb85bae65f9cd208e6c883aa GIT binary patch delta 1756 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 diff --git a/app/javascript/icons/apple-touch-icon-72x72.png b/app/javascript/icons/apple-touch-icon-72x72.png old mode 100755 new mode 100644 index 2b7d19484c9e3ab1e85a82f6d648af06473451d3..16679d5731a6d62d7088d02b0590891f884ab737 GIT binary patch delta 2261 zcmV;`2rBpVB-Rm-8Gix*007#LBoF`q2%SkpK~#7F?V1H}8_D{_yT6%T$yPY$aB|G> zXZ}BCW@ct)W`0GFncp!pGc#kr5HzzbX?ObBakgB!m2>5)Q>fG>)_g1dwzt0#jDOd= zh5b<;`?4Bf4X_4S1FQko0F(AlFzsVt4ab0nV|g_)W=!K4<$p2+w~skiETo4V%GImc zvV@BltGR?yGmA|$14&Htuv`vF6+svq6M*qC4h(2;5IsF=YsJJV4YpTgY}Kmp?B}>+ zkMrIm6M;+uAnyqRLXxNuvrqtlxpSExKQgRaZq^l-htV7vcjSj#`$`dw?_}W|T zyrHeVb=5~dT|D?;dmNjO?9jt-$L)gZ=$KZlppPuS@9w@cnV_PX(fL9%%>htIlk#X# zdgb}8haPtD|3A(D_Loys&PPRaF-UT9Sap1~dwg|81_SiuJ4PWW9MDq3uAc7j@I9NN;ymXIAQvsN zw|~AXKIBlJ20ijn{MX-?2l~*par4Q)50mhP(!c!2+*iFmTDZ_v6J36B_2Tm?E-C_= z;J@e2^eIove_jJZfT=zi6BNSSdC04+H6hKM0|DTrubiavo*q2r*y#B$(rG7FX&#V| zOUr!o`^NYevokOH-XRuaISC;b2ks$a&SG^tG{?8rb3 zbOKNashN|4#9TF{pkRQxs44d}s#OW~%^0fHnV+3P%5!mwcj^R4HTM|+Qf3iy|jjsjq?QYoLYoy&6ysU|f`$1tmmjg1PsZpA`gU-;(yYE=rNF^Y(s za^-o)0HBVC;@C)9`?*~oilmPyi6rt|dV=zvt^ldN&0}m#yWq}l)NYIz1*h{_ePGzUt~&PgjDRe1xVF6##%XHI$f9vnWp!TyW+P2}(c!Sf`9(ps#0W zV9DJ1u4ZolKyo%vPf&ir8GnQAYdd}1oIS33I3`L2I=56auzYXGZp=nAmEUmX$XS2i zLeiOoRM#I&>0F^>L-o+3iZk>E0K_bnFRzU2%oF?1JGqtSqPPh#0g&qWV-D$C*H%$C z_4lSXT|IKe`9oVaZlif;kuib*sGh$B3t(tnJC0rI!ZQZ8Y)n=i7=KNimadHE%yq>k zBB%0rD37VTE9vP>yS7!kJJWR!kGHKGs8&V+nmOl-<~(hhs&0-6klNM__H-^;yu@P$ z8FA$WZCL>TMp4te179z;^r_;}je)l*|S7C0#b%}-I0IlJnSF+otZGJf6VLoa{h zLd>A!|E-CDz$|a7R)0skw~cmp3fo1I#%w?)h(@!>%!5XA5R}2!*D*;1&HN>2_dosl za~CYCZQ6=8@&7zy#ckL3K|8=gNCFZe0Hgq;_XWUm4Md~^Ioh1gO zj|-pr_Hr{KFX|nSxiAWMgRnuA%y8}N`C>!AAa>;azs&PFy3|R z=0E>5ddEjwkVhj6MSIVumQFN-J8v3kUtbyMOC%NwDl}Ph$<3Ybm#vIeu8Eefj&Htt z==@Xqr#Heqw`zc*a|MO*%g${b8%^H*iKTJT^8b=}U}CyE^vGfsv|8?GKT$~_xrbK` zNOJV>agvm;zkjS_OGoA1pImm}VTC+f{vYSOjFeKs0ouc01Ryy^a7t8O_wd$leZ2C2 z&z|?9*DYGIJgV_QX=Xig-`E{D4oM)icPu&Lb~cOPl_ZtX(cVkX?YZj0t;hZAqT~Lp zbj&|DuQ{|}#+pJ92*T12K&=3?d8s`)sf+TKm{oXoGidc7j2XDrf4%p?H>GNk=$>8zl}Ld?eU^afZ1 jtO3>lYk)Pt_7nXBJ)XA4jyl9|00000NkvXXu0mjf#MWGi literal 4724 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 M8hYxLsy31T0q^`}#Q*>R diff --git a/app/javascript/icons/favicon-16x16.png b/app/javascript/icons/favicon-16x16.png old mode 100755 new mode 100644 index 1326ba04627bcb9ba19c9ee379bf54b859d9d5d4..eed8e0035c34b51853e2f027f87171e682fecf7a GIT binary patch delta 574 zcmV-E0>S;-2h0SJ8Gi-<001BJ|6u?C0uxC@K~#7FmCgffUQqxA;2X_b%tni~g=1~I zzs+d2?FF-K+qSLRw%ez^vwQ#c&OFJN_s%upv0CBha&@hCySrY}ZynV_p+_TCPko|x zyIdGfzKzo<2RQ9gGlhR*lVq1&auSxYW6|4T>8zr_OdKa*<9|8{^Jk0TW3y*;k4>2< zu+9lqYlk0k7~7NWrZzAO=5(N=Lj}*#Ln3x=6QK4Ci6XFaX(#x4o3Y(X?7EhzHhnXg zr;jDy;)8oTapXWJWEl_y6=zNe*uA|IiUNFmFN3eQ>zZZ|o2GuAOUdn%Tsf zQZ?3+QVE71zLf);Zl~aj1x!hq+Dg#qoAo&j9eXOGr<6V`!(*s0$ zz}I_+l_OFSp{s?KbfKqw5!1@%Uc*mw#?ZDjiCU(FMbeF$MTvhM0o0 zghdnbaey%@N2TzOnyIyxsJHzIk0CtkwIMtcoH624gdzM>q#-QRV2sH0>LW6Z^gq!Q zkvSwbHn%tVF}l!?$@;I~a5_SHsiZuSOPHOyLN0MLUGyJ|vl^yC~-v9sr M07*qoM6N<$g5}g64*&oF literal 986 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstU$g(vPY0F z14ES>14Ba#1H&(%P{RubhEf9thF1v;3|2E37{m+a>pkwA%IP+}FmQPuI`{h;iB&8IkWmTgp7q)EvnA)*TPDxurQeIqA zUf;^6YT5nf%^xck-LmpZQcyLJkW%o^=x*Bh&MT=Yym(e@?egr2hg!FO&Y5&XQQb&f zLauoBg{F;fZT&O!t$k}&JZjwV#x1(iJE_?twnkCSFuY`T>$b0f+5OJpCC!^Yl+M4J z(6FX@`NP1hKG&%7fUI6IahcGN()+)LicEf(%^jq6`0HLo{yiIkL4 zj;UVKxZ!Pb%f{%+h3W=&Dq7~|Zm|vPUe&IAT)yz8k$rGv**ver#^N~_(>ix3sOlHZ zI%n(<5>vfYN>7F6_v8`PR^ThTv^M^&@QlU z&2#_sF8A1KIVBx+eW2P-L)(DD8E0h_G=g#`+WBYJtbAO%>Pc+PvZ7h%8+rm|NsC0d&i3A0Aq+T$=ltf&VGkuF_6Pq;1LO=xrIQO@zUM8 zKR`kD5>H=O_UD}33|s~WH|;qC6nf?9;us=vIXM9cQj*dVQym!0%J}^B^5j|=^yTgM zH!PT7;M3vj65=zbvp3dhlAw};s;-*y=@Sa-%KR6P9bUU&#ga9P4y{|YOpixM;M#>N zm#$s7c=fWmK?*bH3JJ;CGiDVQ&5ACFisEdPNj#gMoUNYs{=thUYu-LOb>P9PXYUq1 zefjk4gU73%K9^?*5q=>jA|s@=BuPIB-gubBm7AzAbBFLKZl2y*qkp z)t^_hqBPkUKAczATiozz3((i9C9V-ADTyViR>?)FK#IZ0z{ptFz*5)HFvP&X%D~df z&_o-=FkqX>3`+e74Y~O#nQ4_!4M06+A%=!l21ZsUmJkgO57;jOYS4h&P?DLOT3nKt zTYzSXp@Ef&1w_vzF0N*v9%+!C;QX|b^2DN42IthA;>u!$;F8jm%zTBA{QR7Q%OBPN Pl`(j_`njxgN@xNA6xVEm diff --git a/app/javascript/icons/favicon-32x32.png b/app/javascript/icons/favicon-32x32.png old mode 100755 new mode 100644 index f5058cb0a56e41a0a7f2bfeb9a3cbbdb99699f53..9165746bcfa5f7c94c013cc9ea9e355c675b454d GIT binary patch delta 1104 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 KMNUMnLSTYVw=x?5 literal 3216 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 diff --git a/app/javascript/images/check.svg b/app/javascript/images/check.svg deleted file mode 100644 index 8a0ebe878d..0000000000 --- a/app/javascript/images/check.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - \ No newline at end of file diff --git a/app/javascript/images/mailer-new/common/header-bg-end.png b/app/javascript/images/mailer-new/common/header-bg-end.png deleted file mode 100644 index 900196678a3346cd6a396e7ae472ade2a6e22bc9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4720 zcmaJ^XIN8Pv)+OriXx(jQX~WfX$hglgx(1q1eEHb1PPJ^lhBKRD1y>NdKE$y6Dd*! zEFd6FKt#Goq@&WM-{5yV-~DmV&5!K0CiA}Yt~Img$wZhK>6|#meGCAA6DVCxGXP+q z(bp&zX8N~hjZ6Ujah{}gjdTU?Lh^PXpaC^!ydxTf!aCeQo1q4e8Z91eUSK3ESr8UPekd^{YSZlXybNAwL0P6_;@t`Q8vI4gm#${9)-dT5|s zF}i*P^c6oNb0@!>P6%hPiZV#i2T3QuqDc-QAFMl$i1bkc|K>%~*9T@O81&nPbW;iZ zA5qr~O+XrW0vd#Xz$Bfdq+lR8eI+X|eHnp(!{HJjX(?$LsFXZZT24}01}O(e!el{z zf57yJ1ZNkdnWpyN@#s4xuq%n=frLW6y}cpcG7voB1{8)sAfQsxP-$sNx`!mu7e{jN zk;D-N|1fBxiB1HJ2ML46fesiQ9PyqcB`{s>e~y9m_=grp{QIitmj?B5@PNV~QU}NS z<7jC3|GQ$b|9BHgX6XOw{XdC`=Dr?is2Q4w_ar#cljkCM5Xu9oK|ni@@C0)_-u=%_ znz-Ugc%m!b10*d6fq^a=Iyhl)2Nu!a5JN*G3P&V4;GEDXO(ig$1cJdhBh}R4Fm;3! z{4zog27_s7smsX2F3ZcR$zE22UzV4W{)5%TJ9%Q!IMN@i^MA3I{}p>s5m*m;WKA>y z{l`Qvpo8T<)l1*}Q~zij zz32(_>ds$n_yz!MqbN-^bDyDw3>!R83ukcnN3({ukRb-O;3lanXVgqYo(Hc#(Mr=( z3!xP~-)80I3iMuP1#i^2KDz#4ipxCEJ!__bX3Fe7ZAQ*_;BsX>jQ*nk&4i4+fe7dA zsWtg%@8Z=MbB(AqSXN!Nx&E^Q5yjQH$;SwoT(N$Zh}hUo>e#)lD771ub%Fr^?)Is+ z9y)kk-{-aoA3TA-_w0m&&E@3jhLvR|j-#tHyV7F)J_r&7uF; zIoQwRC57EtS`QbO93Xi^h|osoOvSyd%`KJdJ*TGfUdNK-tBzzxbn;267i@E?e(kFZg_dlhlTu__UJ3)i>gn!1)`OzNH;@OIdm7>|DqO^7w8q(G z?GD@HkI}rXNGV(*eJ_M|14XJ>bB_#ibwA==RCOiuSe`vah)BMDb4#=95CHyCH4x-9 z*07UU^L+U&X>)eYxMRz|(djL4*x+qVQtPv<*X)d}5IYy@xc?W&xm2*-hU{$3{F*`g zW}*c#gO}csCvNSJF|M>l8F$vK>rbg|gwzmM*my3glLb24sTG|`ReQLtU1c6}S*ZMb zBiFpmFH!I7RSc^zzGB5i5M)-V5tELzXtpRJXeeEGK&w4#NTrRB0bqI1h})603o}M$ z2(Hn=@Q#eg^Fvh1R_oi5d6bt1F5fuYz0b?t^I-XO`k2J-N7F#Pjo(9^_lE zZCk(DMfF-$_B}oe0Kp|;J1zK~){)(>l+6K^eY@dBkm<5WOqPeLIZIn};ujY_t)0SO zrmMxyH)z7N$oz89)IpN2fL-{JM>(dv4I?r(1kbLH_&2yAAMm=~N6>!^*83dlNshmp zC|&~2b%VBD=C@;wS#9xCe)#3uB@d^fWR+4kBQ!laP$+m}TJzag*%Gf%%3YnqhWJxz zC;L_6rR94cArhvN^qbO)CFpJ@T=yfnVk}8z51%T`>**+bo@oC=_ z9G+71;;|^iB`dQONr@tWcq=--iprp{o1bQVpM?dGvZKFq=K;#6RSp5!Y@wA>7l(#y z6}w9-Ym8A!jW%CjJ=2hPWlCTc6?;8dP}v%Fb3EY(=70p^AF6(6w|6;&S^T z02KYYF6G#w?yIyKow^6Hry3vH9=8xvUrCm+Y)PrMQbHsVCyK6`l=iAqW}3Q9x!dI( z*#ID~_Z;hnZmmX?&$K{tP(oyb$h5(^(I|Jph=&@U-FN$N`!0hC%8}istx#&0YCiwO z+(+^|ir=Al1=Fl2-lhD}H<=ASg`2Yj!RZvM_`;1hJ{gN;b??e83k$b@jgWE@7vc*} z_G?_JZ@QvIS6%+sSip)6z7LSe#$citu>+mjlOSns&!qjvpqcWE%G$`tQ$OQDlO3FkROM?9d~$`U$Icl^U-QrU0Y$z z+qxr#DU%u?VpQuH0Xvr6=s(YHS^$BndQu&>jyJb$e(=;Td6XWX$)JNc;?gE(yrAOK zH`Ye^JZ-VfjJ z_SXqnUGGCIBKK8S6(Ej}hzUipf?vIMz7G~q_>$xox0LEyYbBHv+}0{PEU7nZ>v#8d zpHB6!({_ci8!}0YePz4nv2eD`D(bACLcezM_UDZ|t>HsSEL&DYFT=y5K{ecc?~>pW zBFKxU+fq7M6Nou8K=T*lS{l-_K3GRL>OMDRoz%{UITSt5SC@esB0lMZ?{;=~PLE0l zom^^?nKH1UjiPPuH(fsySJfUFh)od;xLq;b6-RaE>R=kI{_*)lkf<S|b~~^5n+u&0I_>{6cCt&k?OU4Rsl) z`R9xhog{F^{+<#uczS)-?z9!{r5nM%<>ilaM>x4%0ba-#?kJ&HK>01nz8h5DwlQ?t zNg%ZJ3V6b6^RnbRBvCYQ-iL*lybXm`^Cw$D;bjK z$#W4wLOi`>;owP@>in$2FveFQ(;e?B2ZN|3Z7HP_z4-&h99rF@JGM;$osJ@gNRFqX`Ge%%BA_scK?-g+f8^?XV(O##Z2i>symL(T&&6FVz*7KP&5t!q z#^b|V0F+Cdt>s+utklGXHcTB3JRvY{(=q;nXPP^l^;N*}dSNYcmFn2C;Yr5ej=_rd z{^6;0;k2A{_A=CGHTg+T1rlu~7K^#JX~w~^pn9gV& zUjPN^_$7^%*>-L6v6!`tn3KMWsHQ9!$+8tB%1D;|_XNnl+1VIyu8${8($)Sj7z|>H@*rNYkzVVP5ub;BIBju7C|A zB1W&3iQa)DIZ2!=(mal@dzuvzKaG2G!nTEqE=ps5x>klIwWS4-PcC ze07oY8GRXq=&nf2rj9@wcNn+dL5Y`uGcB*=-f|yBVj$?RaJF0`{`qqK`EsA`NXsIR z&@q>8{&O?GW+Hscj3V{cJTTXj$}`!yn>j~E69Qf_0ojVOe#+Lds}Jwul3cf!4Vx4S zcZCQSMTOyV{bWjy@dm0=@95_A7|f9xeN{y!3;SHojd*>wv?=d!k4qN;*-gXL74{H)`@e6D3QT0jhI3>&RMAPM{C&)Ojzyc!h89m z0=%6Gd3+uU7EykJ(TsPE1L3*bjac4NT^-R^LIa)&INE~{E$ z%{{dzj%KddX3GuIGJ~cds!rIBV^_Oth5gnx zDFc@#1?A8j6VJ$dQ)jfOAC+c!t1b* z^X{=h3@vI5Sdq>)G!_K!tQ<6ofkw-ywhAJP^2+WVix*WEsh)SE<#&2k6RCSkUZ2wK zh%3CwVaGWyxO4OM(kBY`<(k2Qm0aDeviP;PLdEmULRikmr-1=he3Al+>ZuB+P-(~!7a>*GB;!g>%<^=^+C1U#+TqtE%{Ruj(> z^T8aJJ*9h*i|Qm9w|YEp7^f4rkmgnAwVmIHDn9x)5n2D|E}+`3Yg=@$i{w2U+<>VJj)59mT>{r~^~ diff --git a/app/javascript/images/mailer-new/common/header-bg-start.png b/app/javascript/images/mailer-new/common/header-bg-start.png deleted file mode 100644 index 0037c1ad933ec87c22430b9a3696b54227cb8a01..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3171 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 TZ!x=MpZyND+iVJ~ckcclmW$@9 diff --git a/app/javascript/images/mailer-new/common/logo-footer.png b/app/javascript/images/mailer-new/common/logo-footer.png deleted file mode 100644 index 2baafd8d7f8af9dd87e1f2b4a7fe63bc48c5d118..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2418 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 diff --git a/app/javascript/images/mailer-new/heading/2fa-disabled.png b/app/javascript/images/mailer-new/heading/2fa-disabled.png deleted file mode 100644 index b1e342a87cdcbc1564b8f46716770e54932e42cb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1945 zcmV;K2WI$*P)=^r=r}L96KR-V^(ffSPx#ym9uSX3a z8IMP3adF6RYwJ<@e3U$|SD%g)9>NkCQYz#5embwzEamg5!RhG?trL&x1fu!5+=x;t zt_6#eP!DNEbbUQy)+}IAIHI#87S>3{wD%gVRmhqId=QIW6yd%sT9Cw{sj1N#uCGqA zuP>^7_dR{sOF}cqXloo?i#7VyE_iU@zzHqh42gKn1O_vc?C&3{cHyc51};;nF%p;A z3L>88-Gc_JU9_SLEyTM72`y)}xL8p@m@d>O!5Oq3!-pO|9A9?6{6t~Ef|w_6(=D=k zV6(4$V6!X+YVndJ;<-qqkO`DfB48n4MoDm$-efG6uul|SXu);eM2nnq4lsXhVi~Hn@cB9|G z0^=m`B$pfV$@itoz?WWM`_di~c%oF)*R!Ni5?G=qxO)%-qa<)8Qney4IE@I%9TAW@ zA|P`%P)OO(*-34iHU-E3fA~Nj7Zxatgi64#_wA#uBS&b1L3~EaDh6uZClgz5HoY@7X5SoK5>V=1%5j+LOYHfTXr5U^P_g1 z0M-bXYJkv2@VT2ei8HJP{7#DimuY}#uWsKCTqPbhoqP7sb}e*d|9I%+9Po4~p zpI*8|TxlEb?oJRxcIunIAkktO2WGi%RCU)XPDOm zkxU(N41*Y0tpVr&WIk(a)X_KTLuP-$Jr-Of|Q_M zAl^$o=rL@y21Hz7C!lR5ukPHT_43{tt=c~hF0c|1qetUDVLc1apVN9lx?$WXzTeIl zIlxOmYkJHi>5ahtuJS23*O6)jQAr$am%n<>Z!y=J4J)Rp2y)1@}YwSX+2QIy&PPY}J zbpkcIRux)N?Rcq6RxY<6Iw>G5ZtvBr&Q!=za{A-^c_%H>NdbFq+$a&x?(u9Ez&Q~K`0&2^`nnAO4`iCo5O5V>hY@M%0=wcw&IaFHfj&q!MqgaX1r4fjI zsN3xk-!q=d9yy{^J0N~N&D2%@f!&|$>&r4 zU@Dc>zBEMwH`0UC)4?DHzVrbJtk7eZV72N}BH!Nr3rRY`3++Df6bJ}6Y7`Y%Fb4OD zgU?fGVufr_`TVFkE($1C$OEm>sIflam0ysG#jqboF9|M^iBC=KvQI3lMriZ=iNuw< zNLFhzSblPufG|&e;W-kVLMipL?K%w=>w)^hG5A^%oFIsMj~-Q=F>71tL*p-Aq)v2q zdpbzQNoW~?cvDk}mEQNL3d#QdAcc1r z%^;1zWTlu_&YA=?BxA9J{=h{Nz7#<&zM9J{rzQabtdTq~q21~U5*o$QB#NF53#vmk zP_uxBKuA5n(XMrbB=N5gUB(M4L3Idcs9QiABPRKNucuUxwotr|l3>UN52eytu(_ZM fLKo8O70u=oki*U<_R1`*00000NkvXXu0mjf5?p@1 diff --git a/app/javascript/images/mailer-new/heading/2fa-enabled.png b/app/javascript/images/mailer-new/heading/2fa-enabled.png deleted file mode 100644 index 3ce3e04f848c2ade09c9d2fb61ba1789cd891f78..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1939 zcmV;E2WP)pd6V^!9by&P=B>_q?26GI{g9+R6LB zbMCq4+8^-ial~V1*zQ z2#NOmb6%SQ)vR}$LC70KNU2%Xy%I6=7BC~6QgN}cVuC$0knYM?$h-t>NFMDF;Z_#} z?7S5_)s_48Ij}hyk5(XFL z3zrnIAsO#b2tDF5%YcdE@gg-_OI;RO?1T|d`(qHwP4kQU--3TG{5+KHWY#v&n66eI z1ZO}GKDzb6>2DSs4<4X^h1xuEn~s4nKBLsuU|_SL4XgybBH}rSZWF7rc*S`FQoE-& zQ4pL&rze~0zdhP%AIrE<<2nIHL2w)GN+XkMW2!YVPP-WktOTzE1ozRd^uH=E?(Z54 z6zgM#WrfB9E7MXw-j_sN&(DroU^vRbMPOz{w# z^amP2UL3QAATR|RDGH5(z!RObUbZ4HIE)ej*&_lnM+9V!2*?}}kU1hCb1EQY ztgBoDn`>%e!`c`0r^Xzcn3;q-j~~KskN$+P5gGxvuYVPG*S-dOU*2Iv%mxWLaQ`-( z9r+O+KKU2I0B%XPD_{(Xb)^1XI9RtculxE(e}xk_`i-cZVQqorCcobEvDw;?bzRr) z^5K)mX1}gx18lCYop;^djXR9h9v(Qu+8WtfU^elnjXN`PS#ST!dJhSCaMLa=-uBEf z5|6WpYz4gZ{_%`>;&At{*{dN zQM+~ikE>89bg$nxTvxSb-iyHnb^_WD`K%6DR?5JGk<9l!FVzD#*a^5zhyFg-7l}6W zq5to>wzE!mHMqe_Ks#`mn4T<3=uZ)>|98lZ2K$t*!#0`CJ%ds#q#D5-5s*0|Aag`O z=7@mI5doPa0y0MgWDbjpJXHxOOHv!ilB`D7BvWJ5nH~kdweGecVf7&EUt_GC;fkVfqY!7*gGX4 zz4dlc)qZ&8!nS_0Lf6L4xFulK+{2+Fs|!Ixu>G}vqYFq!o;e~Qb3{Pqgl>MI4^3R5 zxeyd|(CD==&J83&Dd1;s#O8(kM}P+L4w>m>VIy=d^w`#xto=2bmBe-a!%~D!KsymY zSra>R!gc<`QiRHd+WAZBM}B%OX}Ln4V8d)hnobWxegQ4Qwv6Phly|r zs4a`4O+Oi)c>D0Y^K>q3Bf3M^1|GlmUDi1hbd1i0jnH)?{5kIwan`P_F>T(!{SlKG z5954_Q1%1u04D56DvdcJAag`O<~S>$OBoZ_inumT320a0>7i}Y8I*EEc~$>qqTlD* zicZd1pgj)eb6r&^=bZK60zk!BRH4{7H!hUk_V3^OWS($W9^5wTeU=i+pW4G4U0qYn z$$`C8i0#&CFjrQLAh%B96|y4KYU5-OL(5>%1EUN|xuN{&flDWy6pwIzwL-E&dwH!= z5nOZBRh&9aMMEtVu4ISR4Feq4SgW6Bmyw#rCJj@h*5(eutFiEQnAFC=?AJb z41vH3RH~b{M!7vw%^YXl@Ws-7t-a6t8t`=oD~RGL^JAGGy#`QI}FiWTxe z0e1P;M_}-RhTisJ9pN;A;38wUW2ZOT2NqN#bkBaDxKanvnnXbD4jx`0pfOKW?I1XY zYPDUbPbAx=k1qU@TEG8IM8IYc$_}-ABOjjrD%-ipVmE0K2Svp4W5kP{>RjwR!ZK{> zjkoB_&gmXY$K?NU2HSRJ(0DOBAfu|#LCx8x-tVXRR>r!Gbv0--oO6Ru(k5>Kl`xs$hmK2O~$ zG%JN|C>{TTP$nU*h6)kRr(gkX=ET%OA~b3@8wF`E=b*$08Y@dd8t&;AJ{6gQzCuN_ Z`5#^g!s90fo;d&j002ovPDHLkV1mJ?au5Ij diff --git a/app/javascript/images/mailer-new/heading/2fa-recovery.png b/app/javascript/images/mailer-new/heading/2fa-recovery.png deleted file mode 100644 index cefb21e1eb0e2b2e8b586af2d006b9fd166a66e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2461 zcmV;O31aq%P)=W_0H(VMtV1$|GR~4hb6` z39KNjx`8mjLTDB&c!eGw(j-2bFc6rKF7JQoTi&UDPj^q%Y0sB*rmFgOb*KJ1=iYP9 zy)_QCfYjh%j2=8#<#u)Tdxb)r94Da;$BHlEFQt7R#Gz>d z(cH<&VbAjhm0*J;Ooxm|w7D5E8y3(Pj_7L=3u`5#%6n~SRLF(|Jeo|d7vb8A5@clM z*w}^!+SevEFc4S1`+(X^kT4Tul{F64V~uXD21i${Sfj){OCsJ(0)si5TE2W$t%g+v z)GpKWMoC;|7{naMIRFi+HLB=Bi~ZdQ387Q1Uo0yiOc&~t5E+ynYge8)v8&{G@IZ0E zf<8~&X0*twfz7huz^0@RRN|#b#ET-aVk9tyDFPNd%s2^AC6P)dN9+T>3oW|Nt0Y97 zyw}~mcqpCDW5>5ZCEj`xI1r=B$*;|hwm`8ycKB9kEO3wnPWV=+1$4T)hDl(B<9RFf zUvZy&QEv1ZSl}QDJeiza<&x`4m4Pn_SNYO@5_sZyaaUzY<0P;|CAj<12gXU@N~~r@ zUWhazAa_JS=7@mI5doPa0y0MgWX>$=Kzg2gj$(-f%~pTG#HCC0AeWTjpfQ3Ce9 z`z|d|uh_C>W#4~r>lS5q?xfp?4pFDzq?1XHm@~V#mzMnaV@2VD;;5)w&mU2yH~r( zM|bZ|X$OIO-+6}?efF7u43-EHIn%YauWy8yf6J_b>_4{lh85sTKX^S8&9)#d6KoS@B(J$w9p+ytCqD`{Xk16(5pCG}zkIfl6jzOzbLTcBa$;zeqd39H`|3lu_wt$+_L zmpSLvSE*5K3%+;xGI52ifcZ?u-^M`14$^CZ;2(j#p^^SGYOoa$7u^g*Af6qd*8=%c zBRJx~35f&4;r8Lf{x$;o1$D%9XcM=@9^bKpIKw&<1Iw}FIGtf}9Nj;fIL`o!Tl~cr z^rCth5Pn?QyqP$|Kbft>)5&ZrE<_#_eWVF5FvvlDaMn{#`EB4jbuycA{|7pwoTNlt z^8NQy1}4?eI<)^Q20|CyTKj`b4c$k1@HMm84s((v#U@eq{bVh5)WPKVz2-t&WhdQo8eBHV!B`H`TZjz|OViamm{X-fo+lGEB8<>_juQ+!! z>aY;d&TY1HVTyh3de>Qm4G#gWaG{-R891(!U{TOTGWv-{i|G39-SqeA)6_07^27sF z5u%`X#i1GIt8$a6Sj=rwKzl`R zJE|bf5UPOYu^_e3Wu(=sD^?=R`}GKgHn6BlGuO(!U(V{xcPPup2#B}jhadDd z63NI#-U%d+gY`cI+NVGGprq8ZbmK;UPAC%4<#MGE22<*dJ4O580}k+gCTWhg$c+Z; zgJvB@uqGMSvu7evPJ(NCO^IojhH!CopJQF5ditMOv2tNgA;h|gc%6%1aC4aN!A%xi zL*Ku3Yl$13_WyEk0imVRP|L#;BQWjVTrjt%$A91L?w+!5W>eq4cCF-GcQP4$4%@}r z7uh}!fMs3y<(HDDSz!Mkm8yGU;lhg3HSBXi?5o?i(;o*9QdmSHm4?3L<>B)GJO&r( z{I}oMRhz>_hdZs*SK_8Q|J`?WP4LAaXz8X+72n5AaAnJumK2nmA=G3xtfudiPiW!C zAD38(0hS222qCLI&jo!PZi1(mF0I(6d)_=PE(Cm7q4HpU(~F;fUhy{poTvNQXZ3Fi zbNWSS7Kk`4QKmns1}^;XYuA=sFpL`G4J_~kmzDM0w4N7ZK)>7QY_~A0_o0OmdReq3 zp6TNZ5KFHhvMi-i95z2tJR`YsO@s`kUaYlC17rd#oy3I zp%`|fpTUAmTqFn>yz|Y4$4C(UBtBEF|H9`nw8uH{tTeQ-pW=jl)c5ehakxKh2hr`+ zxiFpLuVcsP#=d>JkF#SvERx9`KCEv*{T=G}+be}uj*=>tFa{P&*R7S zs}{zptAThlTSnX*+OpeU9oR2T2GG zE#BDJNTv5{E-pRKI~8W@N>uA5SuaS~>N3bxlOyT_>q%%AIu@_yGJ`a{J|EUdjx(a%>KYPS#p5K3%7*FcPy6^q*?@ShH(-6+kk|$&sG0Alkj_36&3&nn%1VdiGJTIdJ8`rZSR3Ux3 bqS^cl(R|fHyb>yH00000NkvXXu0mjfSdgWZ diff --git a/app/javascript/images/mailer-new/heading/LICENSE b/app/javascript/images/mailer-new/heading/LICENSE deleted file mode 100644 index 974db1ac4b..0000000000 --- a/app/javascript/images/mailer-new/heading/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2020-2024 Paweł Kuna - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/app/javascript/images/mailer-new/heading/README.md b/app/javascript/images/mailer-new/heading/README.md deleted file mode 100644 index ecd4b949e7..0000000000 --- a/app/javascript/images/mailer-new/heading/README.md +++ /dev/null @@ -1 +0,0 @@ -Images in this folder are based on [Tabler.io icons](https://tabler.io/icons). diff --git a/app/javascript/images/mailer-new/heading/appeal-approved.png b/app/javascript/images/mailer-new/heading/appeal-approved.png deleted file mode 100755 index b2476ec346b8dd050c29ea9cde84b7608fdada7b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1937 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 gZ9I1&yqdhC>xB|~|7cmFei$GSmFz4 zuaMW~QCP-el<9g@tSF3#yUw})+;i?9_ngo7_x*i;=luTro!>p2s{;hA3$>5kunV^A7PtQK4OS4lUQ_l_&5#bR)1Y-_+ zG>v|cN3T5);ama|C@F@+CxXpI*C!e zC8dxTgs!kMOZ9%d-&!D(3W|s5to=&c7=W4U^-frR*UVM@3Iel68r;&6`+=cL`K|FL7ChfxI6Mr(UVh3=zINV z1UeXA)b+8_#QTmWjF`i4Jz_wl^BJr%>sm8qSL^f?a8@c<{y!O##Sd(&)--SlyMieG zhEh4=3ACvWNN64*KPJbGe#R8BCwz(&ei6T02>icjq50dECBR`d*Tw7FltgE}s$J{q z#g56Sj&ED_uJyg_@_GruH1~ztH0uz)H_O5uNf5&qKmENGkNajNou6N+Sv_!W_lO#?J?z z%&fa4Tk4oFps&-%siH-^Nq%^CPraxyRUdZ?P@Xe-BZaLqQ_Ja#n%B`CZrrprurONL zY>yFUJXN!3sWtAOtccy5s20sN4XvhgW?$FqqcG9>DCH!w@KkGu424l(1K;0PhB4E_ z{lhsa%bjP8_GRr>ZL6IaQ@XQ?15<{Qup7zE$(}h%Fr@O0D&$BS%QUXfaP{#$>+PMr zSybsMVUhj<^S6nFgh9Ml`0XY=Mn-AoDok-`X<@K_Xqb@9zc6=UUFJX@AFMDSnbMz+kg;?^#$UXJk5%WXRjWkw!$o>t9r=AaF`?M=%a`8^ z%bSbddf4yz+~rRB7yc9nTu;|7$VbA7NxKF)0H^i!q;~*F5PJlr`^c3%H0{iIJ_Kla zS9FSv!4*Gt=jWb6j+CW8y*16QXb#y9SJ9&XB7r#l@dtdTI;aY?BeOowgCdfFcox9#E@0?n|X#_D(mM!^IFXcX85#G3{ zrF?h;`iE0n+!d~k_^X!bPtd*@%ul0}xYpbFIbX{Nbe@H}cX_Vff-mx12P!i11;?sj zt@I2r=)?F`>t;jmH|q_$avNkr=A*O4Z5wnoAEZazWNQjjutyFX!M+s?4g^c&FyNM^ zlIBPbjg{Ze;k90ihbhr@BkDp%U&?NAX;~A4jzD-S3o9A)wO<7X(||?Uj@59N*z6R2 zLrrXjg4cbfML7R7Dh9!4n!VLzDJYd5<)k^r*?&dP)weCNTSAr++m}p0B$r8(hmPuA bzIk#QMBce8ax-kvLk3{%UG1uD{cisaA<@44 diff --git a/app/javascript/images/mailer-new/heading/boost.png b/app/javascript/images/mailer-new/heading/boost.png deleted file mode 100644 index e33b759976fae85374c78ca4d468daddada55541..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1613 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 diff --git a/app/javascript/images/mailer-new/heading/favorite.png b/app/javascript/images/mailer-new/heading/favorite.png deleted file mode 100644 index 0e483ee9b2b18cb84809d59a2267fe069bafec1b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2112 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 Ef&-DKJpcdz diff --git a/app/javascript/images/mailer-new/heading/key-deleted.png b/app/javascript/images/mailer-new/heading/key-deleted.png deleted file mode 100755 index 2930f591a09963cd87ab35f64520ce6d6c9d8eec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1779 zcmVlOlhag;)Lr_5&71Toyap<9mQHXtnQ!0TtrVUp_;EojMfW)zpxI)bl35lM# z+5utGQ=DUksyd<)sRWWGQZ==}(|HrGyLKF}cl~GIYu`_byk5^btNr}GdGls>6!d|7 zIvt0-y#*&0o6@yf0+dRc-SPULuumDZE-S|=)wJG%TCI@T*eFAfCq8ib-syTN9fD zeV`F94PTLys@O6z(1D)z}2W22v91g1gYNwvD* zfaAz417DJk@zN;}c%pT}F;&t82rMxL?kVg86CiLU?mHtdkVXXLjtIyc5s*0|Aag`O z=7@mI83E>uOiaMh>1miadp6K;vsk}eg{S|SJ+12XLEB6@jmSC!p_sD@ZtUYu8%))^{N#PzvJk+bMWrj zGvEkY0lj_R?~fkA_Jaoy1QZWNwBL2+3|j&Jw^=Ag?SBCoMleSNWR3{P91)N?A|P{A zA(he)F~=@kfG=*`2y_e%14fPT*zgi-hy;5{aU~9_RT?x<->xUfZks?&i6%4%oBkW=MCvapvN-D z2ng6}q0}HPAO$}03MdxpPm_iAFgENLW1e%MmcSsSBQQu3GuEZpXo+J1ei&k*0r}|7 zLc6?I1uHo-W~_$eHNRuN&gE>|&+D`Cen=J?kiR^cUbhyCwN$r#r>Mox-S0ecd}YL6p%eD zF=>iVPeZ$Np$1t2E1R2*><`8J>h9g4l-2NmeR=zKBLeXp@LZ@u<_X<)9Gjc7!nt5y zWQ842pM+LDdGTVCW&d*Lj$KHPDx?KO5=%>VL4hd1!G75c{3%0zwL%m z%s~MwAh1OQ!n!)$}V60Ovh1GSn&AYV!jjF0~W0#9nSf|Dr}D#l9- zAaJ9U+1Rj240`E02&^!<%NoA!59CKje*hUy@WR+9zE}a#MqNb(7Ua-AapT`onnWQR zbgj1PZZ`y!DCB|BXw{8AM71_3q*8c8ND>5!l+(rHY445$vk@jdzXh>Uid2j?nbw^L z1jO((4R3)!3a$0`Uh8yeJ0EBo=Fn?FAc5`oUcPKwF^e5`(8JfS3yUXDD$_}(L5K`1 zUa^=x>~jS^nE+uJlrWiW*XOm; zm4Gh!R4Qu@SOH;B*s*vg%WNf(fCxq-D3vv~x(GtQ*e{}(YM7lJ3P4~1U96BM!7Pk`W3v42{Zj9}aLE(kM`9#%9j{{UEj VvhFQN7B2t*002ovPDHLkV1ge1AJ+f? diff --git a/app/javascript/images/mailer-new/heading/key-disabled.png b/app/javascript/images/mailer-new/heading/key-disabled.png deleted file mode 100755 index e0f259359aebd3150822dc05d39366025019bc94..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1940 zcmV;F2W$9=P)wZd%qW7bL}{B>=^r=r}LAnJU>5Mkw1Uu-gD2n&!Z-g zN+hDRv^4BTBE70mh>_>@>C@5TLs%wDN@YFY&lHrJqe3A)G&7T>4dPLQKr}y}A5}^v zv|tGm8X=>Iu5U!lx&D2MyM`Xw?u}9Pg4Ow4Jra#i|0rx=^14XV7|#9Dew4V#WE&6U7M&#ykm|ZjsXy zoBfp&n-ycA7B592o{L0_nLrt30u~3%7zwV@mx{-e_K8vmEr!m&NN}B;>gd=#luqaH zq~t&?-bE5P5T$(nta%bRP~69kk_(Lk6C`k=4_fz-LqqOzVA=*?F&#?6RHRWb!>CNOM zy`7q(u;8WRaYf95aNk|HK%LvSuj_hoxWnFo-;9pZ&SS?`oJYv~s6!`! z8xc|s5ZVYnfAc1BhP8m-Y7r1J4G`_s?b|`9#KWd*?_S!Wg^nILK%L#)!MWJUlfm)R zOP7c%k&&LBBr#-{{_=MoKVEu{v2E_m8G85lF)b}Dthhe^?p-kU;Q=>7P=LR1=s)^> z9APOST(@WRQw@4vk7v)XU86!iU-P|iDMUms3ET+2+_#V3YsXd--gQ{!fpDK;K~F@o z4UA)$#K5%%gkz4d6L5=85zK58j)D6c1!JGd5Am5%J)7kQI{~*24wjB{Po4xRL8Cyt zmwM7;*k(v>Q!edq6nt>r=zdFF_K%n<>Z z6WX2_Z2Am#9_dL3a=7;u+s(p4C2`EC@e5xO)2V;|~vyNb6E z!I<}Ua*|%&y&Jml2|}3%+7pDsfW?6zK5BybJq`a_s6Ko!RYlpAEt~#B0Wlg_@0%lNfwa_`>YF3APKYpZ+#7 z;-q-M`Fm!Yy9jP>u^a!zP0}+N=R#&B&M&3m3tVvgOKc~S$TLR-WR3{P91)N?A|P`_ zK;}Te90_a@0eO>!fEf~aqEyz`>uB>Nuta&@oKJ;D>y_W`f+f^NN@_J)K7NkG*qnz>I=saYe{f|VBCB3sOpMYWVJUp7)DBjFQkwkQJQM;*GC$QB46ss=q(x`F=_t#z<%d8B8Xt zjd_)Isext)nD~e`Dw}UQh{YKsZCg0@@fc$@lv_rFykP@jOO?As0N9%4osngDwbNNN-d$ aoBsjvPRF(g=axakxVSD3cZjU>QyA-Iy7 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 Ef_qVqzW@LL diff --git a/app/javascript/images/mailer-new/heading/mention.png b/app/javascript/images/mailer-new/heading/mention.png deleted file mode 100644 index c4dccff8ef2f2f5c799d5355d7d711994c4e9468..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2522 zcmV<02_^Q4P)$^sV}B2dQY0#*=Q ziV+szl9ITPZmiK|n>55=A~W;6-}mOu+`04by?N8Q_u~B|!~E&Y>-2r^IrrRi&V2|B zfzzks$tO=RAB|&w9Ai4Jp(F$*<&P#2NRa1cL!Ofj5n-(sS_^gVb5X5tlNoiPZUa>{MWWtmY5CX1JT3U*i^%oj0wC*~8 zL%?;ms};OfE{knGX;`3io#znnfywdlBpa5HSYWU|?`T+IVuAluLp8xO8djJH7{xe+ zfLF-H{UP3q;6D9Dy3v=T;6D9j*DlOQq86$QzEYFgMKTWEkAR;DOh+N};xW?rXo1rR z_(_b(z7_d^(*yy1CkW^{K|s$50(wpm&~t)-o->Z;h&@xl-o3!?iS)6~<`%HE2|RrY z{P8EA8@v{9LJBqa7BD-T-uOHV6!Gz6;NcpuzAnYxgtv&rr8tIX%+3Huj-;XugNF}+ zJ9nh0>+lY*EU=$&iF^D*y2`C~tJ<>%n5w&2(^3x{NN;qr*H--!(hCdZ312vxo@A56 z6-oL_?~MA2uJ0!532okrS`6pkYvty1x_Vb!sS~L*bKcYE zojhQL&S;d9DY~j_E}Kops|Hj z7kWV37nLXL&y%hPKD1nh`dKW2ZjeIi)=rDc6IJTpb>BW%#j1dGYl=L zgKoFQ+^97H^}fxl7C5Ne?FHvv-5us>O;ngYsH4QI&g_ZZ&Bssw#?a8k7(_sugw}e` zu_oX^qh7N*-5QJHQhhHk_5{?$$l0PwFL2u(wWOd8> z`|>0rhKRp%bHAZg0e{sJ*m(jHTA^OTp(Pz# z$d;3&)v~ipuV(OADmdcz=rtht`7>vl&xf%;qX=VfzPY>%OE8~!=umRiz2xLGt)=G} zd-2OJ>1R{`#QT!8o_%}M6Z+&y>-&>_8EJ9HkGGb9D8RSh0naMH8*kL#JDVQcJPwa> z`c&&c$y&zRDXi~}pfxDBHAo|Gw~lFZ$N~x6ul03yt4+KBy#9Loar9&G`_XF6&)dL> z-AQN9H0MAH!o3iKknFTAwf4Ozc+$Csbeu?Ln^C2?KW`9vwH4-J7{}O2oT*0W?er?t_c=#7Dx49} z+<(BJgiX7F-Z)hcq$}0?Ga1qcOYDtv1zkpXdZ!s9%g;Wu+xg`(PFCd2iwZETXZmU` zN7vYY1?vm>ZX|0p(Oe(WjjEndCXZc>3P+9e7y4l^!+Fqjp-j86t*~e%fcZ@h4(4Hf z928z$YOC8tcnE88_wUy?on*Ymnc9=6Zlp*C$R=K0t&l=;4@0lg6NTh@l2wgH+kD-6 zY0Xnzwp<4RM~K?%H;kZ$BGVl+6XfG{L%kGGp*qu;z*biv%mRgCHvkLDOmO=g5P2=2 zNzz+WFDp&G(sY%Z^&+vlmgw^o!9G{l%vP6D{x1<)>pdq3=s7_^&j|v0P7u&@f`Fbw z0k;wG7XBy5K|o&-*odTr16+JD-~uA1fHnM%fS1T5=%Yyf6D-hEV(C4jS`D`l@RHgX z?ndRZU=VW`0k04OYvoH~BUuLuz=3@>fjrcJFL<8_SgGJ5!g|mv=stO$2uL?7>WT(D zKuF1?`{ct$DlJ%{KUBxCq8>K{3|8m|Qlk}Ref8(9EH1^|T50)0!hw#+)Y;X`;x+xH zwrWIm9PcBzQWx2luJax9#Wn$Hp0U8E2)IRr1>JQvU+%!_Wl^TDMZgKD#nrFHtu8<7 z&eBr690TVNum;7uaz!ln_<3&@7vp*PE?$0T5`j^&9m%Qevh;?%-qcq>a`Z$zJyyj} zviLiVz>dQ_XJriUcbfCs-isUrm%8I5Yw=z#(oCwZ~IsgCw07*qoM6N<$f)zO0Gynhq diff --git a/app/javascript/images/mailer-new/heading/password.png b/app/javascript/images/mailer-new/heading/password.png deleted file mode 100755 index 552c7c06870404a177c46609133c2df0f3e2d60e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2249 zcmV;)2sZbLP)TF-B^olBJ)h6o}QNCED$Lh6|%USCb6N?%I zqS+mEN!{QCc`u=U^6FuqjU#5=0vf_yCb6*Q;ZUwnpqYAwtV_TPlg_jV*IFE+?EEcj zChGN(1XNbn+tEpPl^^dXq4lV~vha#dMzKb_)&&z^I_EPTv?}7gK^*Eun@>zQqqQ!r zDj-}Y6)8vJGLxW7S>jz+gDQl&(B1wnOG4sQ>lZ5u=$fulpM>;a)7acE)~~_CWddTr z0{=_mHq*vdVTT5S1DmowFw;p7NyJMdUCOY^yy6}K-40WYfJjIy{Ys;(d7$J%cU|Yd zB%~d<(!}S)nVSWz!`RSfO0! zNA6bKCts8sea{y6$rq*FsO?x%W#9_5vu%rxk-!qAU9as(=7lfH_-xA(0omfHaDoKR zh=AM?0huELGDietjtIyc5s*0@)P@{9NObh5+ID;U&z=))Y^d!sYCGCWz`;SHA@%C( zt9*WAlj!~;(eetl4c5e@N~SRfmNq^fE?kf&Ply(Bo>g*(y?_vJYKo}4+dsCw?TMsa z=AlELxcm3}*T5QY+~6-Fdlw4JGsS!G2hrl9C!z_29vmVXIpgn-j}cwJL9Agt3LOme zcMA(dw{Mq=2Vij!c7DM>hQCFh$r;uHemdg6U%Ve}aI&)ES*d1F1WX3>Yua_f;#TSy zS(+{uR*0~JD{KWc8yy3ddIlrzAZN|rN6g3-z83hQ|Gtp`{n>y1`-9!Y7D=Tshpm7Z zRcg>5*2|$D|2^jv8(RUpswo`-X?31?9MA#E2h}+~y2x0TKI|t`uoCSYoBP4i1}E4E2*IYlZme_^734?< z2E3VST&$6efM?I{70*qTDc86CKgDKf$PfPU8OWKMv)9rL3ju@E|KR2pn^;A_{a}5% zB!!I5av)KjR#=Qe&8dHA*u@r0bWU>k z6vYCW6m5NdF_(`G9QU?JD72yq5{EN&Yr-b~hMnKPFZ?r; zUZS0t3x#+Wc4tYS8S$pL{}XU?!TKLu*EipmyReI2`QpJj*fqU(H$GcCkCYjV!#Z>fxdSb3A44(RH-|uatDDDfwO!e(ueul<2*F#hT-$8%Q zPz4WxS>S1MqnYE!vsp?2q^r=#Jw1MdbawjZ@!s6mv#DRaD8JX5I=4^VqsOQhnvHDU z2f$izuUD`39>@M)e-nN1ez=P@?**}c`<>{~BT9@^q|)Ff&z-A$4vqBF&(TJau;hyu z!>jgqXmGD6`BYTq;hMw1LvZI#@*~p3ED*p-PJg0ar^~HGgX3_EFSo0&q{TI;q#rpF ze$9acp14R_hgCK7clzS<@b3g*?eD7lJ%668h>2OC8K*@hEDqCgT0MltnLk_$Ut1AI z+&D81iG>k}%}nvo0OmXth=qOAQo`ae9j9rQ0}EJ|D=cWiJeVM6918HDU_@(v2YjcX zSaIXbI3zX-UHQ}NX8;-rjS_tFQ6a|*A;+ms#My`mwx}Y8ME?k#({CCVVG8*w)vu|tH`^{p;e!fe;j}M z1Y9rvkJ-3c68EPn2R#>^wyB0PrGhz9&}EJY$Q%)nIU*o)L_p?fT>;@nl@-pCzyn7~rramqmQrbAg?uO! zXhy#;2`E;`1C@B0(bl)Szn6(g2lKm_{7%u^g-Uy_&(B$h&0}TNh{6tiM&e3S2XfZM z0-X#VFB1^vsfMUmNJtgRRgRmkQ&X`XI6rUY;A=@p1<+z{&bk+JE}Y3pC#wcF(0KneG0^8_Y`Svurj@I9T}=VO*qGC6XXv42Q7;K^f;!X=)FmK*HD)rDReyP&gr=Z{+fmuD-Re+e>K0Jrx>cJ_ zST`olpQV)Bciu6?N=TS&+R5X*< Xfnf9LBW!=~00000NkvXXu0mjf`*J87 diff --git a/app/javascript/images/mailer-new/heading/user.png b/app/javascript/images/mailer-new/heading/user.png deleted file mode 100644 index f1dd58a18d2f36571834e4a8fa41574004b65a88..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1837 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 P00000NkvXXu0mjfT1tpw diff --git a/app/javascript/images/mailer-new/store-icons/btn-app-store.png b/app/javascript/images/mailer-new/store-icons/btn-app-store.png deleted file mode 100644 index ee3bd9385c4b5cf8feb95d89a25f420e193e6c52..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2054 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 Ppl9%O^>bP0l+XkKKuh;E diff --git a/app/javascript/images/mailer-new/welcome-icons/apps_step-on.png b/app/javascript/images/mailer-new/welcome-icons/apps_step-on.png deleted file mode 100644 index fd631bf97ecf75b75ab3e8b149519c067f640886..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1291 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 diff --git a/app/javascript/images/mailer-new/welcome-icons/follow_step-off.png b/app/javascript/images/mailer-new/welcome-icons/follow_step-off.png deleted file mode 100755 index a262454d2d51eb788973ccb1be7e26c109615c9c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 505 zcmeAS@N?(olHy`uVBq!ia0vp^0U*r53?z4+XPOVBJOX?|T+`D2C#C!c@{&{khlc(K zf|Qj1xw-#=;<2&+GcrJ2AR8!^knq2u0mL;n{$E)5KPCNtbo74*hyO{b|C3YxAB^@) z1DYaU666;w*~5^}%qY$$A|`f}pHqOThm|vkk0s$o*cBrN21ZX$7srr_xVJYi<~1Ae zv<0#s=ag1l6Kj6&zps07qC%AV)juAqr@Y^GDKOxUbi0-Bu{-QlyDmImy{4zQ8tR7lrZAi}TY#i)F6*Ih^d1Amy(R3xltaYPD8 zao(D0B<6D^`QSVzF`h54w$3j;%gDu5D)@4#@wM6$%E#XE`5l<5S+$Zo&N|*Ns%QGLiYwhg s_IfIt#2-B?bewE>bDsSrjn$u+5B^Zzzopr09#4evj6}9 diff --git a/app/javascript/images/mailer-new/welcome-icons/follow_step-on.png b/app/javascript/images/mailer-new/welcome-icons/follow_step-on.png deleted file mode 100644 index 3ac011539bb9dea99d69c66af361273770113129..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1227 zcmV;+1T_1JP)FT(QR z2Xe4>|4X~q?fR46mntNRxXr^(AgvWxV7PFP_wR1lkP?w1X(dM8t#3bD=Zd#r!BI+B z>ub)^=H(sdVXt>e;;9JS`sY{E=`5W$nG`^b@RX1(d+>7qw|~9y^?dvVMjpva2A!ar z?QYi?Uq2Fsa~=*`l9!HPiXW{x?WdP_2GHv%TsMk9Oc*3D8+5c4x{6;%0&(ardbTYB zx{8N#B=E(h?>ayf!rmN20Vl%Ak6-wFxC%re1b2+X?|uZT@Cu;V{dlCW;*Lrg5#L0Yms?Pp|Yg z1+JBxB~y>U^tvsLYU;VNG-3!hNk~yB3u{6GH6ekT%w<2YPUfy3ST_ym2bTB~8uX8~ zR0nE8b)Y7cg*738nvg(EYMlco_503Z-!O$+hU!fsllp!7`<@Cl4B;~UzS;Sml}BLl zI!~8+>%>}y@GRGPSx^?%gam3r0yQClnsDyB72Sd|{}>_&xTnrZAWGqbko8}q1r|t-9=^0MR;%oL?JGDS8V(q z3EbP=lW)YzF%Y@np{u>!-KcsQ719sxF4>k6RMKRCj;@BT;@2nIkk_tX6Oa6jb(bCm znh47K#`yVp9DT@%Q#l;UzCCzJk$4((f^Np;A&HG}io}y7MP5u|GXW#<=DpQtlvv&; zjGfR$k~}2yQVd4pee*(x4gFtQ p&dak0Q5ZH=&WU4hQ1Ih0-T@>J_*{MRBw_#n002ovPDHLkV1klpLdyUE diff --git a/app/javascript/images/mailer-new/welcome-icons/post_step-off.png b/app/javascript/images/mailer-new/welcome-icons/post_step-off.png deleted file mode 100755 index 972de65a569aff9f6854996174fc45d1786a9dfd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 688 zcmeAS@N?(olHy`uVBq!ia0vp^0U*r53?z4+XPOVBCIt9|xTdB32QrgV{-=OZXefvQ z1j(uYb94U#Wn*LiXJmjFK=I_1{|O2IfohVH{x>xIPfiA*)YSilh5wC>L0Y1t|0jV3 zK_t+?bdVrWO-kzjBp^!p@8AFu1Zn}w0=Xa)z-*x5Kr?}YQ74bq10AGa666;w$sB09?~2M*U|?We z;OXKRQW5v|=E=NI4g#$g7j;xC7;ZECEMmm}Kj8iUvc^6q*Dae1e!F!k?bH1<@wRr! z?5g8Ap?o}B&+(j^8TynX?Os4tY8g|Mzijla^9g01b9bK-nX~%3YYoSOee#cFnKPQ% z1#=l}4@Suy=xIo;-r&--&)rnfc$!v|*Y3`$zYk zNV(Og{bWM-zIcJ(jk!-dHCEg^c`!PpV^7`;W&IA$dmi?IPXbqee)T!IXE{T&4Xfk4 zCIx@T3Ck6ZbUU_x5aIc9|HNyKq9=?FUj-IaNqmquUd_(ne9*bU&z8rd&$-VaVNP+x zg-#2B75o1P6x`u?cj>^w6Ir*O+!g7ppTsrs?Tp38xF>QhHJPF>9W*P#q;TN|6ERmoK){kX#}r&1eXk^La0ORn_b=Ffj-w|xwFySwV% uyg0olQ|5hCpU$lq{WSBsd}V5AC3D_RN4+nORXc&v%;4$j=d#Wzp$Pzj&O(L& diff --git a/app/javascript/images/mailer-new/welcome-icons/post_step-on.png b/app/javascript/images/mailer-new/welcome-icons/post_step-on.png deleted file mode 100644 index aa318e66c8573400568c4437d96d5b8baf048582..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1552 zcmV+r2JiWaP)HD3M#0E2m;kDdjfH&Paq5nfE6UoT;J`pMWPEyqU^3gkU z9C;qjIfx=RH(Q%py0%vPeP^dfVowAvfA@u1D^6WBnG~RDQAZ*3R^`?1m*3Yr&-2a$ ziaagPA96x&R?B6h^L$GbwRu!+wY>fahWu!@R(N@BtpYncNatD+NF9cjHyCoXtXwsZ zJ%Lnp&wFnh26EM`%AUY~u6$esO(?9TiWhJ~HGcfkyVV)cghKF|ad`Ff6TYm5XP^m< zBe`-11#YXcEog?KDF4fGCZ|o%48`lZG`Y#%=+tFM43L7m=V*o{Zm1pPpoxSQ7!fTn zB3fWX445DsGhbr1{0ul-04Xgnj9-OoKY;|97=aRu+hEJP$XE$zqKT{Q%tdg(+-Kmf z3y}Me025J#9W=g1U}YeAy(}W|$0+hwAptTkkmMV#MG*HOW=7TqN-kCa`AX}AiwA-^ zTVbx@S8Y`l-A9B|ai|1czLe~@OolEs* zgG%h%=BauqnF(hls^9c_8||0FErIdpf{6XHbVBuzvrn#LmB0 z|Eqgc1`;4qfnMY_<)LcK1$(I4p+=+54g}f*qc2ErOY}%=kfb~!F@av2*Q&Nmr4w>p zxZ$c$PRfoe3ekyUxb_#=>a4e>H1k4RM~LK6f1o=c-VA`{bD zX_ZH$USOK#5vf`eK^JaF-rjB37~7^+9+9p^CAILQq^_Ox4$R%cfZ%pS%hO-42 zF?xSsL`EVI{dY~pba6=T+5t#TAamQBcwF3+AQmBJ=$eSQ)_zTv=w?bk66-|N3fvP1 z`9Wi6Kna0wJ6t>pyFStnFRG=x+1?Y#_LJU?>PMozFca=q-opARiz*Ut2UtfBh8nU^ zhTVEC4y|o%qa@KbkfM-r_m*m>297p{N3A(?c558bMlpmN?M@heW(QvH9-P`KoRQhhz6o<<7e|Xny7dG@-zPaYF9AH0CnA zI08*5uGDW>^xG4-y|FD{i|J#~1cED9+Z!8R_R>nEU+hg;ITSjj82~xDsa!RWyFSIX zzO^p?aOUT1eJfC3NZyCWr++u2kLVi8QB`)V$}1g-y^s@f(xmJC@T9V@Rh5 zJ~%AM_b%jI%gE7<8z<%7gCvY5RZ8NxUJ3bi82S#efZBl~Kq(*tNCMSINB>Vu1Ze?sQ_}xuW`d*=Q~o#im6#{T&e?p1yz^U?|D5x@{X_rcG;gw-Y`X2B zf^DhcmV+$D{k{h63vHak4hNjt(6Us*pmnA96@$=3p5SDc8C@1X*7vQO^E={Tm;TMF z4`!>iHBTK{V6IqM_V&)#$ju(L8&!T9_BI2w%KTejPJACTZIm>t%w})|OpG@06>*S%^=TbOdrEki) znWI)-x&5K(`gQN>54}z+vVXyL{>i^->OvuBp70%S3+}m4m!B&<<=%;#EKAuJFZj~a zbV*v|%cmFLstz}O_&YDZy2#r0{+B0ZT9Yh$=FH2Ov)TU0iiB00>^Y*`BDhXWdf8WA zcqe`5ktwDJmp+`h^6SENA2)vf*~fP*`ZUW@k!|*RArgAa&K+kJTy}NCdHJhbKL32o Zt$4wVVVOzqYGCv;c)I$ztaD0e0su0)U7P>_ diff --git a/app/javascript/images/mailer-new/welcome-icons/share_step-on.png b/app/javascript/images/mailer-new/welcome-icons/share_step-on.png deleted file mode 100644 index 98782d931739c220410da17bb5a5ddba3ab8e2d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1639 zcmV-t2AKJYP)xd-Z*i~ zDHRgwiS$6F3Xv#C1qzMx&-Tu~&KrBzPO^!2{ckq${4VuOcP-`TH#2YEY#fAyl*?uD z)5jadv5G8g=R9w(TJ?%v9^n+Q=hvuMDENNe_wyxHz4LT(Pyf6@l6yM}xLLmGRi-}~ z->Lq0=ClY)f*+{e^UvR{ES1atan~Iw#6;ZmMk!GFaTsBQtZlD6o2$3IqH7> z;H?XSL;*$|BALH%zB)F2?RNE#rKLj>4@KbY_h06!rLl84R1zE!b&{%3*?qP0)erUd ze$n3G$aC`IVJGb7X1VOO_eY|5&f{V01+6A_km-)gfx zLj*T;d&0D}WCF3M0Olm9HL!?vfkfiLK6wHk>eBCmtXDVp4Pn#~hhk2Pyx;7))VNpO z1&df6!aV1-4_QR~#tUj?kL4YJBTZ6$fv<@=^}XgjEMirl4zMtqv^@AuQmy0Sz}M*Y zAuEAo`dviJxd7d;4jzWtIiZy{U2%>pU56dTM7J~q_Jc-Lu z2j`5IuqIFs-zdO`?J~YVQ&%PMS~!eIDs{FKk2=C=Q1DdN&wdc)l<)*{le-T zhytU$PY=m26y`hTbmkhwd(nF!EPzF<3N(pxD++li>q3EdKQ6E1A+C2F-|{uBUR+L+ zd=C=*=*O=o!6J=ff;do2piKnv1Vl5v3GgaGpi5lXHc#Rjf^x+K7N8LBHj4_4gjkCr zpj$dRZ#CLnRcJpv#APk-o^5$dCh|ZQ;bHx*DHISKv!ZHoTyTJz^~ej!R7Kj%X9$mo zxJ7QK*U z={PgQs=(vUfe)egZ2Ef0nnWuCo4b!rXTXQyhsj1gjY)J491E`7-uK2abb(3Ffs@egpLmR@qo&zVP zDeqpZ2M1dAI#pY_gYtNuMWlhIKBq=toIHM-3kJ-o5NJytbK(Wsl*bHFVEfYp{dtnW zwmfEdX-t%}#it%=Y3yo}$m0)-+FtjUp>E~+S`09inTD9-BCp>c+(9yVsFZ{>Vg^~o zIk5tnER?t0nMjW~fjuIGU&~mL{N&*23W=!GgaSub_#l-ySMqD%=nBfox~Rw{oVQxkx+=J7G8N@|f7Ck6k40Cob|rVv7kJiNE}Q_HVbaG!~58+C`i^ zrsMPP9F5O&7fZP3pMepLl9juID=_!kJwA18Qkqp03FlMgChp1-*9w0!p< l3*(~7gxs$0ru=glZvd^Ls7@-yC>Ue2S64sTp+S@rEE-GQHY7r zggBPY+^a-{CNyoP;dsuR4!3dW-^_eB3}I-#@7(V@cjn%TQ2=Rv_aH-eD^Hxqd{t*S&jVEj;<_AHBlj6kl}ndmn(p#@#I z1O#3^Xycueo{ZX5Gm~T@`RXon3f(|tor@bC zuKYQzKaedKFfK0e(;D2`;WT&I@ZPc9nnr&;m;_xv5%p0FYhaLpIVWsQ1PS-Kki+_3 zI*-YmE<}OHMlFlMGx&B#*%}>RG#GoXj_B_x4MjyV+wNLpf* z6!mXXATE*WfACr5bkYLlbe}*K1(LR?k`fkMgclN^W!8lx;L!|fCV6a6;3rRjIjutqBD~U>~l%beAi6o$GK?%qndC*6VXBy5S zF3wTFeMJIb1VB>E@AFB$aQ5edh)u}8NzMxmr?KmAY?U$<{9 diff --git a/app/javascript/images/mailer-new/welcome/checkbox-on.png b/app/javascript/images/mailer-new/welcome/checkbox-on.png deleted file mode 100644 index 162095e7df3df7aded49886f48a7fd4087e96c35..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1074 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBgK_V6+SH32_B-|Ns9FBpVtULPJA= z3?OiDa4@OAB;Y6zQ%g1e&J149o?~0@=Dt3-rL^KodYxV7ow;g6svG36uqzysQuy z4o|Huv zF?!r|3>YqvB|(0{42+CS%uLKItSqeTZ0u|toE(CJLPBC<;$jjCii%3AYK~6M&aQ3= zi76?C1%*W=B@K;@jm<3+CQg_3l=U~w0^^ejhpr#IC${wkSix@3q5;x!vKjI*;s2QS z@BdTs`}!QlL(?Bze^&A5?oxpSo#T@Bau1Hn-%b1<&sli&^yGbc{$V0)Cmb8@8~OF0 zIPhtHjqH=TZF3T$6^k$Y{+OdGg_dn<(2lqw@J? zYY!jpSDKif5R>bp@;Bi0Y*W>)+Y99U&n=r~&de$D{b5n&EW3L#{T(Hv;KWMeC0)*&J0t7h2Lh&W*kdXW1P6}?wR#3I(Wh!d@Q+k zgg<>s!Fe^ompj!CSLP~nZjQ-NA@et+d5~$^LcUKKcDA&(Xsf; z3K6gEdt>kVnu;c@J96K2_2lBiRyMmY%?n!e>DeaJwD7D)az0z0tk~1IM%go6e#)v8 z?)F=qVpm_^c2-;BH|gBV)~jF3kL-(`Ykk#Mc&&zhR4J2Xk@u`JtGn;s<=wiulymv% z>mSeXaXX!e@SnJPu1aU$QWlxmjZfqzs80%7RU<6O{D!CbKHmmCA$FZN1@n)7b2GTJ c(v9_m{km4>nExMI3PCyC)78&qol`;+00|A^7ytkO diff --git a/app/javascript/images/mailer-new/welcome/feature_audience.png b/app/javascript/images/mailer-new/welcome/feature_audience.png deleted file mode 100644 index 902de133b45c99585c623b77a36fd461dbacf939..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 96392 zcmV*cKvTboP)Hnk_&JN&I6o>OK<^}>{zhi25iyqA4{*KQHj*^D|w=sN0$^i!R_w0 zE6<&FoB>;-aXK1}Mx*htH5!dZqtWO9+-Ni!jYbFHyGNtZXfzs)Mgy}lfgGOLUj*$C zk3rrJ>-mX&Su(Cwh5gtb9dr8E1Lyxn?7hX~1*0dtMq~ATRk@6lHSJ7YRc!!NZVT=E z>lNb>j7?A-Jm1zokK8x!&wA9>=q2bEiw>|bPu(85Oqwy-tOx+> zwSTH3&9;&EHO>m1tRJTdy#Nw!6bSm3%FuskKMmJlJ>}2H{&_e)0?r0XO3eJW#EAu1BmJlDtRceOqrQZ?`nSA@z}^m&4uj zt>fYC=Kg*9^l1qGH_FxAcR=n8coBLTS(n@;bh}6)OG<< zPLSvU5UfPxTnDIlJaevD@;u|)2jJQdsNN7Tb4a5Da3h#-AWM&Mfk*2Iv$;v@plt;> zC2kGuAOYaoO>ylyY97R3#zTFC@-cruSgs-V z9NZ3Lhzkhz1?ciO{Ytq$W91V(jQ&PIM5Fn30hLeL;|P{4eS6k@{P?lPdo0R{thGn^ z6l|aC5x;W(VjqmnKxg1fpqu5q54y!U=Q`&+AHPN1tk75fl|k>c?hLqb=B6L89N_iD z#L2b~A3l7ryQIH=|9+SSjk*D~am6NN!hy)nWG9#m2AIhT_Az)6dFs8EIj}t*`>p;t zm^QeKy&eM?Hg%lnhmOD6a2b)dS2+`$^cq@+9lVzN&H>}_T*qGqD4_k;KGE-SKE<`M zsa(&_54viUqtO{~1HlFkW}GYTt1%gFU%q^CZHg0*$eH#rjQ*hB^e6W@&$3tbJJrK; zt#fv@?(N&R#Q@}WJ~8(J-_-X^Q8#A8ILeOwoYGlv2jJ$mZV0~Ma<9C@vijxPPH-&O zP42lZl|LV1UpCDAt60y6zc=oET-a6~Y)j{eaqmqAWCFDVKnLLtz>R=g{%CH^n6N5S zG(MNtm+PIDH?r^FzsJ|FUn`$Dy{%A2<#KNFiQU^tImsV9E5A4LF-zKneAAY1lL!2= z@2g3u|5Js_ zp*H9v%bRx5tDb?FlY_CQ&#b#;ta%=Aop8hUUUo6>;&=MHN&}~>?;zZpu=;@tz~kUs zvl~R1=`h3{126mQ?}54ROz98n4c`#X9<=Tn*TnDNza3AozEjtM zO}XEp^RXWz>j&s}@>!ogSj+DpJZAl=st&%L0XLUNOLV&H(`!8V&+~4A-ms73uY|T4%WS?Rc#|lIzDZPsQ~S zx3yox*elb|y0W}podtIQZg?&kXc2x+!%VCsJA#of4f-kFR&?_^kZ0Na zJPFFx={}3UyeBU6y?k{R+yS_`JpRi|8i2tiX3Y$IR_LL6+|uHkH*dBdKYnZ;DwhZS zc!@dCNxuh%@2;;}m&5DjHB0Y*-f!v;`&qjjM9%w_*Jpf~KC?`92mI=}&+h$-hPEg4 zJPok5gS!7Ypz5Xfy8&P-_{x(iR7Q7DN?UjvenNTu`Za$3{22!|(X|ci`gqOrGZEVk z`e|j%xVknhgMb>y=Q8y3S#q8GKPNqggzd&A43=QU9RDE`EyQg#wP{kF>F(g|E7oO3tqi?b?7Vm z`50nn`}5}yF1u$zea3%sp`6T=?u!XbjJe7~bsot(u0@}Yk?I2L6oxOg&2i?x*|vsn z@teB--d^}puHpE0-13k=Rf#qfFt{l-@Rk4e1*-G5$^fmZ&o{88qs?|7k4#U?nO zevj>w&o=Pu*RP?!#`S()&Ymu@UD{0BqiinMSj_$OX07#HpTvD`H{Y4;&xzuSS&%I& ziad1yZrl@pS`P_AP`UrvI|B$eo+ymZo6Mg7|5TGks^NstOA&Bwfsg{=P@td!K!Jin z3Lu07fLaYupa3Nt1VS8uKmiE|B|?a$b~D|nhNmW(>EYaFzaP&rOB|B@=Dqpmy*~m> z=FDw89$%D8<+oIz7gEY6L==cT008)z#*a9TzpvNpZ{2S9It;_uTcj<|S)y>%1O6ev z$bxNy6v*>zm*(^Nd9_--Qc7L!Mv_S>Mg9N)lhfijHh*t6o6U!IyM2>Z#H`t^F>taz z0^0Xl(oqU8Ojs~p83DFTl%YfCIm_kpWvNv9Dy2LV0DxS>^?``iQ51b_Hk+Skv)R@> z=68tqxusb$pkcx~3KJG0Mf+SiV(^`*wKTn0EG~-0;x!SS2><|KBuVlx2!gBWbb9$$ z>rZkRKT&bbK`&@v|H5k@xAAB+Dpx9%FNH$k0TBrR0N|Vc^xa_Mzm!j@2tT#=fcLtx zNC%G6C=HR9klFf&5nMnmWg^2j@Bd&QQuv&3vk5VCdL z1px+*LHf7&3_3kMt!u6SH>)lH0KjCyCnqP*9imGv5zaeG949beIi?x0Y}yzr%0#4u zKL7xT@FQ!5&JPU%Mh2X@J9!TACE>s_-_-~(iGKh90Jht$(GT7~+V5_!zf+nZ!1o3~ zM7Nzl!`DokN&W?=BuVIwf4F=@0YElELco0{rf0nWU1^`oq6^OD_ri<+GIXtPKueyfE)VUN zF~+Na{}J%QSrB4&&(Y|g=3hKLob9yv?YG~UFku3ZKKdwcyzvI7PoJh#sZzPt^ZobV zkFiWH0n5Svwedz@0_qMxShu$=l|Lq^{!pJSh{p6nVFe7 zRN;|F9%0FnB}&NhoQ4e>y05O}vZ7V}%5<1CYu1bn8#XAJ=NFrP+QfhX14&A{pk!t+ zeD(F$j2tnF%nY@^|EwaFbl-maUB3P9I}H&2q{iJ9w5nQnRek>a1r{w_EWySZov!cb z(c`N0vof==i~*<7W2EFswhCu%!GKuxAJU>lOFDM!A}&HZ0t3hJ%dfxVv~8(t3EQ`C z$ADgkOBus;6|<{uy?1@Ih2Q%3!WD$NGon1#doB6Zo1Tf(=^VX}-5~>C#F@Cr+FoDk_TIyLTgVO;f&ndG`)ws!C<` zC0e#@NkBjVvKkX3M~-Cv{P{|P`5}lbIp@`@soMD9)OtwI$Rsr_9Vge+x5ed4$db9Ll*K{fxXQTyW=8W89>vTX9d5IBaa^e{RwsC0*}W;6gya-k#7prJIx+ z4m&z_tRF zufIXh-o5!FCRX>ijRP#OamaJ@dWseIr*6G^)TmhlW5CXl$?2l7XU?9Z<;}O=Vd$_C z96EfA9pXat69-^kPzX;v`83_+``EN)3l2GdSVTAhqXKyAt+yC4Vua4$TR7p(Q^hBo z6E`YKg1nPCDI(asc@Ha=e=5K2^O&6f$(LV!%ZBwE$rd6;;m9dAT0Bc*BPp%C)Ue)r zvZnuuOB8wu*b7e!FL>%%sE?~xuTBA=xz@nIKrQFaox{h{6;sr5UcY`lHEY%+BO^oe zvO=z^hQIvsOC;B;J)orl(EZJ-x4i47>d<~-Ve@BmY%&t}4;sY2{Wc|<-_ zm#{GAngVvvwR=}ye)%P>qiC^WngS3Nuga%SzdpPz_136WlRf+PX#nx*XP*%s5heuu zrr7iY^gHvS@WIwT4SU$N`yiV(Z6VvXHDKGabthZ5>}I=clh-(V_N;8*#Fi~vIdkSr z9@%2tUUPcL1LxHS>3YF=5vuX5e!ab*y(k1zR4S2OC)1N4UtzxXo8W>za&Rj5ofFS+REeD}jo zVmF_lO6AJja?4GK)vNY%h$z<=UU)%B*Ix-t_Sce~ZDSd*oCfV+_IoTv{QTwETk-Sr zp>yX>3?DH}wpkq5zfaZg<4-)v*>g#xr)S_}87!n20|xHC`z{`rAmPOqp5v}N?&P`W zpOeowQ^^&9{ zP@(*v;&kgqqSTeT(jfar?T@-Fc~3=Y3XKZ(60mpNuQsM=#A$GY*ud^-Ak;1@c$BI6 z+E-qA1sC3V=N%R=UaZ6{s+V`)eU~|N<|x5hIX!r#y^!b5 zolEs<)eAIHyVRko`i?vA5Tb8PQz^A;*8(T_%Ij6CRHj?E?h-J(LU?#MA)z7Esaprj z(tMfj*Q-}ge){PrzW(ML$xpYSMDe21m{rxh?29kHsJ6OXGmRTJk-DrLJ3bq^(|l`o zRwk7ymd9ZD_1759zkc`K5B&JUCb8^yvmq)<6=+CMFlEY=&CS8t7Dl{ zR*hOTY}kmHKVmeuZ5c}gg&jL~@veO46DN#UqOMr6GGNfWpPbObXwPYZe*R@7*DjC% zM1wA|BR6|3=)%juG^k%og3JlrcW)EGfv*KETRhCPsbje9_M0)55y#1&!GrpV6EqAz z-y-A(adC0^B1>(r{$c9ZI~TNfz`OC#dBM0fswR&KIV`b@3068~ORvakavmG;P8ix8J6pjt{C{RTWee0*#8^!0MH&z*uze z-c{b;^F003lcHGD$jr!+0OV!LmMcfKYSo3%UuW{v$p|0gkn3(xzm5b$&3H#_;Ehr1 zId<$AqehM3rkm?iszhj94+$E&QMPnhy*_Lw zHL6#mbm?+@@WF@rS*50?U^}w)48FdW4udkv$4<4YYt^Vhn^vs|3k#=ygZiSv_cM3i zJiI834TaH1K0f*ku)xh-affa-a_{5XVErA9W;~4DHE!FC`}S3fKbX zTv>@l)S{BF3|-P;NI3+mgtBwzPK}Z$PMpZ4OPBboXwaYmvu4kte7W)%$hpSGOc6`E zc=2MQZo4yW`eg3B<2J^P8N>K-WAOL$W%#gRbm-6?jL|?KBqWGP$(PosQ4JphjT+u5 z_VYaMzyChkv}r3u7DkDZCG@?8M}(_tu2!{*oTD9M#snfA&g9z1iS0auhK=qPn>dUv zT{|hci`A|@)Q1flLYU;fA9?5jtlXZf(6()BvCyZ`x=kxOb?!)noIfyNr0y}GUw@iC z){J^}>#2%=;DHAS3>+=z38quW4q|yXVEWX_VkuStLBGEJ=+V6gMg0BsdkP2)kZZV8 zf{7P3Kq!3h!e9aJgz5|UT%SQTQ2Ups!pvV$zeZ5_?dQTE^Sv;h*Z=j{6H$x%b0N3E zWy+L!?{DOOl{D|Y_g)=lB*wQE;atXM&Oe7vZ-50K$ZYI7GWR!r^S#{b9OS#(!!LvdVJne0mYtjg`G z`5a|lm1$pYmxCW5+cGmVGcz+YGq=9=Pu6vxbv&`-@ucTXbkEUIVoO(groVJ?ejc7Z zUA4r?#FB#}bWPuHHBY6mE7xk?I%&$nDc|T@aM*U%6Iaq)vD7J}Q`-rS$Me2Z6Gw|o%JBIs>{bEWU3S?85Dhy$^ut*FqWh)Y znl)>}Zfvi;_HqXtZ~&l-K9b!oqHXxGvj%_xd&IXGZVgLX(U7{Sl>|k_iI0c=V`Npr zKLRTx>9}@Cf#3;-MeOITZTnYAjjzV(X=9s0Kbi53p~b^q>UO>bQN{Zt_{XTp&@*M# z7{*wFJ~)zg>3>aPXKkn9nalv3#n2L0iG~6xDMna;S=x^>mIX9H9I$>wq>RXS_uY2~ zAkovJtAsb9C4+brR|kx>@PB3Q04hdI#DJdPV?KcHnP;BK`2g5+b92G9XYalDMyHIM z1YkeIFrnOrsOv+m`^} zX|{mQ0GxwyNa6#Wt}MGqHf4Ok_TGE%#dQdgvKds>ZaL5nJM2)2e^s%HZs>Q>52OFZ zl?GmBm_-ebJMX*`F*QjYXvdCvbns0{24zW;0b>oBuXX@&*PK!w*#soh=*FQ+Swdti zO(W@9P5WsB;tasq6$$W76EIkw&e2kSi3q@pZngoc=KfRalS9oe{P4pM4|?GJ_S?^$ zciwrysu{2*S{9;c!1bPc?tw=LU%7Ve+7Px9gRBi3HkdUu22J*IE}tc$EMJB+zsW87 z+OY^_&@zKE{iG|>{3X4ge)E8E`Zww)i^ivm^-Db^RCQ(e0rNwrqvTSOEcJx|d^Z=0 zAQnbZ{$Ur=A*og%=hU97G@w&e0yr z=p&Cf(p_-D1@5I6UqWw;;T2#G&v6n5=pZ}rOu7P4X#kCoS7`jPbop*y!Wy+yWAP98 z4tc6XWJQ!!Q>*mOq)A9hEsMlJ99r%^rLE5xa#1BI!Ee91gAYEK7|?)cy$dGhvk_uv zqGMfl*<~RwFz!eA2m{(DopcgnX2847j&$guhq|q|+1f$dZnv#F=9pvHK@+Tl7kkj| zwE8qv-R5%a_h9ERWe2$87cfxAm zYkFW?{C5~)Nhz_jU#>Y8bf#${p|pi{L-gCVGqxHZ)}@m8N(4;?BS03=#rhdu6aYa) zYEVX}%dVHGSmX-E2NpLYasflM!;OhBl_{Z5-fg$tET=I1dVkbD`|R^FoAGUo98 z_dkS>-+S-9Uu86k4T@rMAT(p>Yp=i2z5Md4EE?)_Ma*A(`|WpB^PfyP81?SJOqzJk z=B3Hp?Ks!v^*7&gcinSedEM?TuiO3Z-S<8UA8_fo{`IN4PLDSMzUx+6wx=(?{K}nu z?z!%lUw?CV-F>fn@PP-)h1*Bv{kX>cRn7~NnmNm7zxx)Oiq>&eZ7klW`hK>y{qDQ(+|4)L>7IY?)y9gO5T@7PaHD(t@h5qX z;5jBqhY?nnA(rNRz?r7P*kM4QRz8-50dO3e5)nPF8DFs*KKtym>$uPCT(N*oqh9^X z-c_{8ZUeyzC)Y63DSQgt0uyFVep-%;!pv_`mPhVZ$)8Hy zg8q^1LgKpSYG`pu4-O8Vu9%i`bU}ZM)PL^lGEKw2-XXNMbl|ba9z!Vf8eV$wMUsn! zs_Ggc89qlWC&RRGcytWU_s`1v-es7kCE@)TKUg61F9jBc$9ulVJc$V$bZoZm37OiC zgM&kZpYat+a<8$m1=BMN66oQ92Oh=;?|mp%IHkk3OdM18CI1pmX?w6|nK)b*q@^CN;|M5s-FYXz`0PtA_PY&)5!c;tQ}9k* z$M@pY^Wu6eb1eD=L@Y6$shcUfeVcLAy~`w{E)vxc<+y?=y$Mp6qr)R!L#{=KU_`_E znxY>7rd`%u-S=b=r?BuG_csyS=_1AX#Rc({n3TinNxn}^Y~sai%JM0TcxNrq`MOh& z1iDzqj+|`{$%nLUQ*$#c)@5aF9YpS1gRVcaUpjR`|As9B*P_q$2XZw;_I)!R*SVx-PGT5uW=EU1Y97w zN+(InU0l-hiV>u(=hRw4(04{{cMu_~Yp8?H44E z4iC}P*hK4GLo}9v>v|$y@eFo-!?z3pAyn4Mq1+Bz-r);8(5hesx$N8^a-x>(jEG>J!?DJnyl zd9h@I@r9>E3Oi6*q4OvyEv8QS=%h@+P`(2)9~v4#eu0j{NDP(LjneZ@PcI^sDnlw= zhWvb8@|CyNBq=7+MF?vV#A0#G&d$lvo#PWzxZ}>ddE(b|Oiy5pIH+h(@4fdndWe}} zIq2%?m2i$)L{oL8++mcKmvZ3r4SIVAq+NG+4^T$yStAYwS`6!(>#!XgiBu7iwC1Dn zxU3gQr80uIB7*kLPHD3l;uO|2K3_+QIvT_!YuZR&)n9EPUH zDSuzQ7TwfUwQV>YL1R(}W7%p$dED_}9K4?g}>caWg|9x500_HO|=hs~Ylsr)Kw%X`518H*T!&OVB$g*OUF3w*=OF+Gzvg)Z>s~Ho!tUt+=hzsQoRKj z!t8jz2|f1YGde=M7cN>%F^EkVAcqu-XX{onn=R)Zw|~~DOG(RlKm`SF9B9vbL};}%iBHf zV7Kz7z)5I|3MtlcP7MV%8r0RXk#RT5vA5CBSL=<}KSCk+f~g~c@7S#^^v$s&85l(y z-5%s?+%8kK10c`M&C%Vf@4!`3te0MX3-&zjrr2Z!3f6$8r%uP#UKbH z0sT3`J3KCirv@3D@kEsLr8jY}LX5|^xmPf@o_zuRHD~rLt}$Y19)GVH^h+DlIO+e|U@{B7H=mgo?@v2L|QkX2bk9X=+|BY$GL}mHQo3 zG@9Z3%kj)ivy&iV@X+w!kfuzXqQ!s_pX-u~FH-2BAWPq_PYh!5J(D({#kqH3ez6Ue ztVAAQp09zSVav{3PVrdG%d}p2@pVO_A;59SY&8I+7A;<=+`JrT)XL78q7lHO4+CZO z>YD)Am;rIg;w3t8;DCMkab#X(N*uY>!K z0G!js5$>N+`Zm>OUNsJOIPJpk|QIkUN5t}^2ZKzff2 zf)4gw!#kb3yR4#;e)H?Fbj(J-g!W5g7#SS-m3sU71uz4OyZv=#WjTR<&k0cC8l{d~ zz=uEP0!RzEjx*Q}pdz=^jvP(N%`o^64G&W_s7R^QHjJkuYB{$F*4(A7+XfiNOZhT7YE-ImCNV7=Wu)BUIcYuB!IyH3aa0BN7W=5gXHOejhciAYiIQCPIX z>+Z=QkA*_?21_O~rBPX%uG}Sq-MOsULs`D%BL|~>E?>^)XU1Y? zZlknm=Je_Kt$UHC`|KLn3m^~RvRDEO4$QW~G1*j}=p$pkeuR4aYD+Lu>guZ1NI%|= z5k)_+YwQ`=T!E^;FNM_IN!wQ`ClR*+mP}TuzP3geU34);FD|0JfhAQxPlT_IWFJq@ z8IL7YTU)CJ?=`UT>y-e^&po$UNU|Px4?gga)0&18^J2S0(%=@&wB(%5vF*<@Go!du zrr}#YsGURmdGE^{b-ke{rTl`WZUaV)D-H#&zUA_da(_>lTJso>ZEbBHCli$%-aGv| zH0F~IIG3!jj7^Uu0r1ZUNibEYOLI-(kOJEg6PY9_pKKw#bp0U37sc zXHQ}P8h)~eb??3RYTC4EE=`Ef*uP_a@Wd!*CfbV()&!9_GP=3B*}+(5$zOlzky-85 z?OQbsMw-txkg;LGFvwV3JBfO|ptVIA(F`-+U}Em(Fr=`=0_4AANSH?qkZ-*CHXwA! z)siwIqdqQg$~3dmj*fQN=yEeZN({QNK9f5j-%qK-K5Km0u&RwgUwn=a6O6UjfnYJ($keZmJ^l2FebQjph(7)F6AD>uwE?qzU`u*g7Hy6YaK(AK zxe3~l347fOSRXV1L=2Q+T59xSC{N1CWTjPx!R-V1u;1bPH_W2v&!4XpZLhDdag0DJ z)#qwV$iS!+m6|?n3imoDru_8e@3sl{W@fK|>jy&GE#N(F5eJ|Q4AAy=g>DBRGhs2! zteLYE!GNH2rCC}A0EN+H7XmUb?05ry&SAG-A?#bBpD7T#KOFVJ#|Ns9RjK%iR#~(Qf2UfoL%sYNKpToLfvt}}88DL;94%~umIS2H=|NFn2F;BSu z*8<{&`1j^gb?JqdUZ&(=xhhtcnRzY*nDeIO!V0C}ctm9-CCbe3q{zgy6u)Sm<}wLh ze93v*xS`jRYjMd6&6+VyA>S93Eaga<$us~`+vvyaoGedz7hiOt>+806bXtB-R#h4F zYHH6>S68DwHbR|45OPV2n+Ix!57 z=B6Y;U@=#(3M6U-UtpG5TT`v)pMRbR?46W5Y_uGWTo21HR|d}nh+=3g0XUuMOtZP~ z@g>LooY`3kC9BJAsMOb2tGjChpwgviJPH$SFbE}U%8_>yKA!(=1U29zK78yb_lkQ2 z-*D}^ZR6KIP`*SV5?%to+%$79ihEBIk^Vlii%>4hFk?UD5e8C`KQnR9sC1)CmM?LQB5lJ(TAUi zcJp`J;9#rEFF#)$Jb!0Lr{CELeDFx^+^Y~nD|`H26$Pi64nnN}WL=a)0b_`<>!V~h zO6AJGvv(FiavMt+{(H3cy9=A`keR~F%tc{lW@ZL6lpSVfW@b(dkI5WP%nSkFs^83% zbTu`#??$KFt-H1RbE%{gjlA?v_w;o4wckTUHY$p!7r0S=ZQG$LkLjsM$7(m--Do0iw6Y1ly5y2etZUU^qMeO^ zr0FV+2&X+^WBrtRr{QY%=WzU~*lll)8Wum#_tK@=TE;7>Y^lMP=Gf#uihzt~msPwYvZF-~V9t zoY^*jr_ibucHL!XJAO+95OX?x#awIGL6~YKk^(iNdaLmAR zJLYb^C)Ujjy(X2;CpYcEzE`omM{M1;k&2SfNqVa!c}emdfSs}hMt!bfC~rEOxo4V; zC1wVv9s`c;d%Y}Zu(zAIQv8|ix(6DTsf z5|??T>f2`W#Xfl-$Z3(0Oa*jiA;8`}y~;r~wjAM^_C}=>mb1UFkwK-5mW&9nh;Smn zt_ZtpBWh%NqV9fwnKy6VF>Ttkxu=Zd({_Ay%H%0{?)m31cI;RkyfV$Ct~3_04JJC_ zgcD4btaPrgnFncv*)Bwcrcf`4$yc6uV z7>(>&dx)JvmQ?Za!$7!5egQV_cGfW$z5p9oce>fNfc@huQyyqTp{hc@1tub2XsrN; z-9WzhRt_SvLfThP%eel!>+LidlUT#JnBzFME?N_j>i!U$z^inwaM?(IxS7C28UN#y zj8z)4UZEjQ3-NoR>%Cc2hR_U3SJdE-DuKK`?5rv9x+z3WO4S&9>xPFD{NADe9Yuc6-pn(Z-XdjPMx$nRh7eH?A8kR_OYA&Dvg46_p`=N!MQRZ zxuC1p0?u3y*n=xA!k+ush^r~I5OgP-Ysvw6EIisBNK(^rWbupsK&@PBK( zCKNSFYBLLe2{~!txN?O%q`?4D?($j6J2MW7FWZHjy_7tH_sTkVrnI$8$(9IIYBvZR zNRiRN`=bZlP1~Qtze-n)h7II455io$i3{JW5n0r@0236`y>cUs3tLX zdzGH}1`9bbDoY@ks^Tw>V?nXkVW+^=lu-(Ody|`S)Q6g--SBJ3Im;4phIfLp8)_7G z$x@@=`+)dngmT3@QFigI>}P@;7qqp49XQLi-u&O{5n>TwiGubLn^PkUCo=PZD=56p zD!%#JrtCjcnWS1GKM0ibco|)?6h26KTc@VKxRmz{YW6ppJr{Jj^4XIV~rr5oo4a?L6W(a~Hj`tY(_kUvipv>*tAPGig7 z?+G;!jK%J>Nhh5yd$oWi2&=^*aI%o5A3JXaJnGuy0HIZ3b2Tx8!T zy|#>)dj{?+2trdQVtdmjIT2vL%9~ig)q{M{13?X(MneC;{H(}MYBAfQ^LbdhbSXan z{PQNw37#-vf^nOArJTTjJ(}Cgg*~0VBz8=c>lwX(&{k! znlJFFz79mN=O7;(12bpN!mwc@aP76%IM86<1z~AAkH&Z%@TV7hR%@@}G%w z&N&}r$Bf6US#vOAP(>T587IdkUX`s;7N$tRtPGtW2+ zufP7LErnCR*FSc&%?^%(aZr33d{g0!Xbwqgif8? zqifgou<53oV*dPv*lvgI@!ts(u9NS)O78ufE^MnNp7Gc1Ef!KDtZL!mi zJAoNy5d@)3mHthc)D?ZaS6t8%5p6!`{xl^28j}gjPNHx6_bf(DO=}yp6vqHF+wC6O z+HKRWE&loM|6!-&mjw$J;%)7w9x`MA1`fC$ zM<0EJwTx417qG&Of&$3ygK={k>()+5ikb1-@4uNTO4dys$F?I-Z^;&jz(&2<>4gxm zWa$z-_2g4FDD0eb&ql2lZ8w6AV?Ypu(#)JWlY9a7rXexHNGeL9>L6st%?C|rB1FlT zgv~ZNUl;}f;AFkU7MtVm|M-X9)45Y;5V_%!gbwZ7WAWm}c=CxS?Ye8%_3?z>eojXw zzx?v6_-)xTd+nNQuBipR74Ew0Ui|dSbSvD72yNC}1N-f}FCKsV2|V}QGr0F&ef+1N zvCTHyI1`@$Vk9tp>-VLXUdGeUJcIcQ=HuaqAHm)C+=DmYd@FyV5kU}Rz)nNTJ9UzX zq#9CHAw~JAgd3W*B}`5}=s?2s?DXs32M6kZq+o-lOopx0qTO?^J<+~hJ1fc^JG95; zmtKt8+FBF}5j6T(TO6*(Y$HW>`}%9I!Q{!4(XP!}xaO)Wt@thf{SO?e$AgWPZY)w0 zh&5#J0BzZShSpI5+iHPr)vA@br@q%A=-zF8{PUmxL&oik(Dvj!|7iPB9+eDwQghvLz#85&ukNs6>hVJdk;pk&u%0Z zH>|6gnV<+ja-5md>&@COe$=>qhA67= z$0heUB?;41lmY9Q#R3+px${H;3px)*coUKGnjnCjW+UY~oC$Wzi|F>ZIdK#F_a=fB zQI1`oGFd_OafR4z!#~&jox0L$}yPn(tX0||ma-rCQCC5Q!F-4Ic@XBme5j+dW^qr%VY@As|XiU@!3I6)AE#>09l z66t8@7%mND!ICjxv4E={X3ihLm9CqPAP6!QDHNX~hybq;uva&eb0k3LGW9$KK@h@` z&ta$BgPf8erD$X!0-%?nQ?jd zn3{>1JVJp$Ju%N?qL(Pn(-(1ylR$pZn*ZKNSI5 zQxf+6_sJg69Sk7pv1p#21b9MOggbaOX15t6FM1G0rx;w?^rMGx>^2^`3ek@S1lt3Z z6LprGaokEEggfhmaqC<{?F*7I#v&mD%J+rZEzU~bBdt{gd zctYR&&EHIux)yOa2uBO8#JAu0vjKzSvD8ceI)#9mr+Dm)PJHbC>(vA9H-s=IVu?se z5$_Y0H7rX|gsmAY7hr??I~_DDaIt~3N)c3a%1b}^Gn$xKS;1`~&a_+N+Uv;W*P|%D zlK@X-@$J$lz8Y#l+PQOwG8j2h#)$FpJ&M&)bwe9#d?Zom*~c)Bz{fatCW_4Q?`r^S zd<4~l1j-FmSi)h>#=Xz*eShpv;af-C(IG#%^CEA$d4r2}M1Txxoi_@0UvZWH>=*t5 z4mPf`x!9sAYK-&tCu@RM|33NH6ORW`V39alELh`K^E18T+h2YOa8Hx9CIOy!R5^C= zjX>=Xj|h440+~KWmx_elr}qXK+|?wIgL^6jQGCf50|oXW zzQ0fTg`ecyt=lYP ze{&W%Z%oKXY~MG*{mq^V zP|jwk7IuvdhmIU94!O2@oP`p!+ssuf^{{5e9WC8Orj^#N&jK4G0JT z256=?ZDO~N#fn}zVdZ|{-WI&G+$TH<@PxX3z#RnR<9|E92@Y0XA@%6Bdn{W&VCZTC z6F%Y2D(B4RGjc5LY6(?cL6}1nb*w3hkmf`V5)#zSdK)(>1_*-8U>l%E-f53wTaT$5 z*MtBp1hl3%^~isA0Wpj3(6*1O_)g=1r!rlA+lB(9v+r>;VMIjh$t8-S#MDRt0fm4h zEQm2uRZI5vcEJ&0Bm=^jlcAgj{Iw?@d*bL|00513gLws+X&msxBRVai^0E<6MP+9R zZr+3x#Ri1HZWYcRwvEP(?o+V+CS(wTqM!}}%yPMeDC{{=kx+=Zs5uwrY;Rtma0G*+ z0TU#$P$Lqee^8b+Hexypy3s%!1&fKt69XPu5B+0-1y~Z9X&msxS;i~0Vl2F*`n?Zv z8YYmr#Rz76naG^B*iIO&1(XnQ5D?S6#}KG%;{cL~j?4{M5VJ&PB{U;$RmXgb0^Aky z=}VX*WA!c1;tNclMPTAlqAkAa=B?R~oW*xYEwcj07&VFL*++odee!@!vVac{msGJv zf*8$wKF2XqEtj;Bm47|pq)_Tfquvwv^^5}Vsw$Y6nJh;*mjJ0nU9ZL$o4c3E(C-J>JATaaOPZBGgA{aflR%MZv-~i&%ld5sKNI8gp=T z!1-c^2>57;4-W_zuHv9Czqyy z4*nrC3Gl>t#F*R!?ICkzHE3SrpM{t>TgXbuMC!!>M~8<*1BS&iGAjZFPH7fIP++-O zP}emUfWWck;d~kbIyFtdd@$=E9A=mtBG-?#l{*RW6cc*&kuyer#F~tlIJ@L9fJ6fz zAV#=+={#joB0y-Jo2!?vP?QBS;0Q4y3rn1oNq{GM$`hTmaIrlJ@Wh!!0|Km*H|Z!_ zzd23KjAsZ7Vv~SSfsQJ0q*BS<-F;%cL_~rBg6E^dwV!UjG37DG9gZe zCIOy!B*a(JV2ss1e&Q#7Vz6l^gkY12J%+NFI6IU@fe#mKM=_HrW(6fiF%oTR1PG}} z+k(>aq6{pSht!JMdVc8DiHS!U4Gsj)6Y`IPd*)`)B)}7A3Q6=#N9g`>z$ckKHv*nK zThA-1wcpw*O*AK`AQ<^#KdER$A%N-3HiH*LP|Xt(BySal-^qNO>TzJU9R%QD4cc zR{P(}ON1xKPj})Js4*0pG+u^H0z7fH&@s2m{lEI;CqD_G$0X466c5@E(cjLwlXDhfRz&`8!!jl*D zgaI9Q+uZ-#gW#2hXG4rpJTgp?u!798+QU@TvE=ZmVyh@9qUj?bB$yQi?A;*%ks1-k z>tg7b>pd{Fp-_Mr7uNeEm2-QWGK{DnXNXZX#(`CItAfA{ZUgYA?aAEu_~aYw9V1*>ZTPfgH|EYoaA1I^2# ze;%=8Of_dF9x^hBM8GKlNU*uN2{u?jNV#odj4YN5Ok{buB!mJJPv>*YNs*$AJoD_Q z`0nrhR{qLg|1*5UH~xCQ`I~+Nzvp-V7XHTH_{)6$^Uv^!Pkw^M;s`L050h_7k0Ta+ zG}dq~yE;r>(2o_ttZqButy^>fO*7w|Q6dm!u!vQS1Ynj`wMt83jDWI0-MPbTHskKy zyL|GKA7f|tE+Ghs$CC+-uS1gs{Kzsj^^DgdVeN#~OYQ>(^&}?oJu^h2A`qySHIjiy zRUJ{5U}pga%S6SL%8i1hmk3ku>{Biw`1CAbQS-#P7r9csz}}0W=i+S6jq5kKefu8! zdxsnxELkop_U`ZV!V9+uApjsLrALX0o9>oRuYK)n$(%6Uq$UAA^Gq`!je~~%4k4HU z&X5H>VGvLsEuoHBkuWRRKDSL#mb5|OAVOJUjAJ9#)v1?k22^hGo_Aj3;^vb5#gdm+ z;#*hd+_{U?b;LkbS3Ljx^Tb#KQ(y3-$*pc}ozH&uvnMq!JT*Z-PD}!vo1mTl?z4c; zJ`+MfLA9uGj7TEZHC4T&u4}polHiraoS=fLssWHWMFMvZmb~p9=ec+eUfj7yF`F@) zZ%~xwD$R&7vUBeqAN$zHs48RgXfoje=PS48DIdc2BRx;>Gz@7PmgL5(FuC`4w&^rM zYn^xmt=>s|4T?*GB4sF{u9Jm(uzvu!9RrKS(Ge<3f<#atBBay&6ivb<_xHD1>>cse zH*WElnlJY8AVB4$e}eoS1m{$Uro5L_h?px&|9{%Bxu!D2sq&B-S-H;8so5oC*TA zXC<$H^%H#Z>0A7l@4dpjh$$2%3Ls$_0vsG3Bu6YTk2I6;YML(V>xG2;_DoOa${q|jrdkorEL8ICJh0;1vdaN^-1eXCnto^ z^@PoVB*;jjuIrTY-$ha6eY*Q1i4a0cF~*egdP&{w+lfs3Z%L!6eLs#dejRDa#T;`@Xx^gjwGcp#43pn&^VXkqFEv6i6rn5dp%8m~t=yAlAtl3ekODsCBK9 z^1bvv8vwVSDRxSsEC^x2>tAa=`_a#HeSV(zzjl)ipk9`UfL(!>h?-l^KSzu;lBw%D zpEv#P{$G{Un~xz0I^RTI9%Ce(7jnXOdmC)$cbB$re@}w$HRg4Bzm$TMzeTWf-o4NK zO?SWX_P24Cn(K86`%bZ-Pk?%2f{OmRZN=$xod3K-%e&X!{rkj@RQWjFbs6=aBwNB- zS;397gL>jX8_-ivJq5rs&pZRbbz3h2C~CNC=k!~I>Z;=4@Q|aUBNmGVNvu{0iS4Z| zHdkqHZ?CCTP}g` zAT4Xwb;$*7SrjOQlsD(y+TP~i;2@tf1)^9km+2TGgtYGR<;%${`2OA==gyr=O|s4M z_Vv|OO%cWUgS#B<++~xRs126Ow2rzqrDzc$+sTTAB5-hjk6X_^OLb|V7@9cJhfNf% z=DO1LNJ_cwbe}E3NzcA5(zerco|Pr@jg7Q@5dw9!&vtyCE89oB?_D=};n}-<=&P^s zP0(7PTH@ba&;H&XNa@+7XS%tWo}q0F z`8_klaF(bTcHJ5{u6jOH)?R~J|D8OaUwGk# zMto^`8hY)3l|@)tcvt)N(I=#{yyi&5}oLD%_S$0X3T?F)*ZMyE{8z4ZIV;oeT!3eREsBDzwYcZ? zjTmijZ)YK*UW;ZUz|Fav^9q`MQvqu`A2VCIji{yT*xA|1*Pkl}&AMj$bdKg2&ABgL zyqF5?WmN&B^;z^X2m6P->d7bJ+0XDlm4{rRpf*@$Ru)LK0Tl??+}I)rj+P6mqXobB z_xx_kn@@7Etf?IVxO3-DQ!jtaf{_ZYy zi~xCA@+jZj+~8$6G-bfOExu z0C$XrT&D4WOaeS$-41)m^;^U4|DX`yp_=*IAamp}HT00d?|xy}kvL6!^6oM%g_v4Cu6 zs|vR)(rk$~Rz@g_Y!PMQ#CC2jOzUl{Em!`6jt^RZ^xydpULdh(M@Z4wl+@JqL_?cZS5g~0`1R!?b6@(%nr)`*rz}NnU z-#~ccCY1{6RugFRtg}U!?_pz`=% z8WC>#fpgG}x~|paFW9;ce9yQ3%b)SYmCJt=N1}?+S9=NqoGi<)|N5`z8@}NixO(LZ zTK79<`kMS(&3e6E4cK_Rr6LPv&b!-SJLh?Q@3nN-IY!(%Z+pA$wRX?lcPQda@zR26Y<~K8Y#Ve^) z5=rzv!~8o)L_0qtBz3pzEUO7eKg7`w{8HxOh#&ol4enLvxpLz?zwQrxoR{J@p)PTq zj>&u9`(A$M@AzG*#X?2Mf{6iakPv_&w4PV%{H^!b^WAjc7eMDYL%s--y7!vjFAAae zTWN2PownSgq&1(P%2-{yltu>~x)a$=;^EGey z1%QE=H^`NJAhyMJU3R%O8NWNmP9L5u;NuIoyIq!JLAN`iG%#3uux~kUM=L0Wfou`F zdo3f!(tyWb_jkU|{C79+TIlp#m%2^Oogf=p0pC;YZ3%&y5H4%3({k z1+emhR;j_Zqt7~!`A|I`=#@CgV!(=6WM?ec7a_uY&+G#UzT5ZOY-Ax~W2;K#rJC0_rgZQlL1 zP5$jqh`Nr*#um44-$~8A7cX6+igjDep?wX|6~(?v!03G$pmUs_?Z@v`>MqOlZr6vT z@q1`hChNLRts~3ja=q=D8xP!+JMOoFN#dJnm6aZ_s+k1%!G|5WBc${sb*;Z~Aw;z3 zj)evC-+38%eP{dbSlXeeQr+uSj|HEPrJMuZ^X4XGy4TgFbI*BOf$iSZ6suNU0i-6PifeE6-KeCLneQ`v>WI zOv@vkekMo}&JGWc0MHp|Kt0BEgaVw)+v5lLm;_i4;03I%xaPdOe!K?ME4n%FEFa&m zE!JJDw!2Lh#j)eIuc>pcye$77I8Oh*jh8c^k&m49(4#DDO3o2E`c-zExPG16D-j07 z89{3=*I_31?(Gn(idpKjgu~?#5Ft04S{PHu2!KzLS*FnCgd)vn#Z? zb<24n!;FjX6bWmXG4ag~Q9182w60&2X~d`L?=+y?lrj2p$Je(7(VT$3^A29)aAhFp zb-JA|MO|lL&}1nz*}g!rax!~7w}&3(=vT@5wGAM+BDe#@{60YsN9>BSOdi2`_(iWX%Vhol zk^A@VA{z@FU@lPr1R)?AFqkd^BE%Xa><2eAG+OW*R09!VZeF>@kACbq7V(g`ym7|- z+i!y}PzkEK=7kqu$lm2l3^qSDL#NU(yIlUB{dmyht&x)e4+w8JIK+4}bN{-recR&O z2u$1J1^UEFJ?qsM5Tv!wnCNxaw@ZPSRYHa9oD65g;L z@0*4swVIy0&ztOc6=UT3_3Ny1t;QhgjxFDX7%RnC1I88)gXLn;R49@+bRLS)F66N% z{T0NjPD6!4jD#R4#KqYr3Zhm)QG=q1fP=F=iU248sF&4=h0fCGhcA(kYOY+a*{f<^ zx_8J|zhR44-I(*@GfS3X1Hyvmo_j72|LJeuo5_=! zHHlLe!4%{oM^@?%88J*E41^GfivtdK?yzkWgE^?H6u3c#02GLth!6rS5{eK^!a*1V zdhqu>i%L_jIo@@Nr=U=1}IMjUhbDzuOdI!9bCt{3E zMI}{MA3n-~I3kRX5k8(T!Q_Ock%uI}V>9%u$9?r$sa?x73sNSJYi$kHQD5F;m4?3N z-yA2o|8LyM$AW5zHu-qt*G68K$Lx;pLlWP0Q!_x5cPCm%;=2w9ClWN`tK6EAtzQy% zxXWd@caNGcjmW8y3Y8pA&^EXw5jJtMfGK5W)gIyA7m!Vi=4b=%1raRDD6D`K0V9zR z28nr1f*@> z=XgAUi5#$_Jr4Te;U)%ss@SLCKFP-f_ieZ?+q>)ha(~z52?KPf`*+6!*sC;X*=6x< zTfMC5#4}bm&&{vn*L19P!`t_d0Uo=?-t*<<zBH& zbDwV>b_CE2Jp$0BOP6%-?%gH?qFlwm8L%?FjxyBb?pk6KDGqQr+@op=U?KrhXvun6 zQQFuhVxoiv#t4u>HYgH9Ak0fDBGG{d#V}w28w9ksDIzy62fp+BZ?W^XYdrOeZT^S% zU*%ta?*WI01$Xb>Yg(j|C-lU4OGpmQ`H*SE*8tA~t;)Xv`i-68c>^R(P0+weBSvZM zRji)o*3o{_p;JW!TU!#C*>C*Oa2J%M_&&E~wM3J1jZR-roJ(x-&7%s^z{e}e)D_@kTAt%p z-}vuSC5KZRK_@*{UN^K&M|iX7HqAaw-oBQmNhtUEHcifr<=Ylut%B|=|K8cz5nNCN zq6G*X0b?D1Y^Vr4DAjV23gLr;JuY9lL?$AD!AazWcw8}&j9kO=2&w~$Xiy-8f&wrB zBXGb5aLWo-%4166C_o*IVvS5MLU?$T{s0D7L99T)fI3rlDX&}QU+R75 zp+)528bwjK@pR6@OM*1ne&g+&XS->}4&GfiJ16l?>?%fBxF7(*1|s;u>Krl;ghH88 zDCWedwg)se45@(u8N}m-1rW#-^^(Jvo~Jn6V_pXi%1vr7*xuS;8D?z6B>@vGB0wOQ za9EM38auF1z)IVJMISau0uPtH{nUVoDk+v5L>ELsQ66#rT+J7rU+~UX&v|OQ;61NB z&!=u3P}K!HJNE!O!=olgEQ_{UG258qy!_#R_Xd(NuquO`%eLb?R83A;?nJu!VnH_g z1Wp6u+eY92{ojA>)vtc_yJxf6&G~#j>zPwE2}+X#w0=)?h%u^3Ap|#h`x&;k>F$$L z{(Ea{&s{>@+7S~WE~uY+Gw1%h{}&c9%@A~c zal~5=BU=})5bAwU1RInR!WffK!MWL-`PEmU%?oHY=!1EJ+0rA5uP40v|EI2Y2wD(g zMOg0g)SI5;;~)Php)Qzt!GHPgEBv$X`vM2c1-D;%2}h8IPB5{zzn@wQ9zF(c2wsSd z_;!VJVEAZnAMn%!-Lb&>MEDp^Oc^y+?zevHx4vU#f&HwFjg9{+#&|h|a4skmh>0_U zQ+gO&yavDcm;WjTn6Nm1?W?%{{{IF52k~YCL=hqoTFy^IEPx1r0L2mnQ6g$V$&3fa z9&RP^O*XH+1EPqb2Gs<=$i?^H<%v)IIJ=+!M{Mr?Ft5H@@l}^=KDASEe`gnBgd)&o z0t5t!jdI53#wNBA;^FcF9o!YzftU+!PZ>K2@W4zk{qdYfqnQZc>8GFmMUsAPQ4~+c z^_-oOm^f<)r!;XEkw7{8RRF8i^d5j9tcb}AV#)&s1R+4)loALJUKJA{(}yf%u!JN+ zU2+r_%!`|_d5x#u^)~$04|DkGzsvro|2eOJ(``QeL+1YdU2G!o0VXY zc<6LuK@0FeT!pL|LoKQ=TLD(jc&r?^IsfjPbx1w6905&J$zLvt;-}|hHR3yQwh|9Fa{!8BgGi0%PqFpppU=%3@8Rly_!i<1 zJk3kDZ{r9mg_-F3RahViuftJ_Gl9vzC*WgF#*p{HHq$Vq9`Vh;2T)JMs5~kB*OX{TrUD+hW(KtpfU%JE@K|ln|@o_h* z;>#@%M;LPpm(&d_se!S&?fGUKN2}k^-hEGixqrhe4bRfSjN|El!Z2BYkK^_1 zfAeqt&GoV@-yLIQVq#*Vzvw9uGep5xzwJG|fo2N0DEBUuku{IfLcuqYR%m9))2zg?Cso6T_z?bCW>;#yWaa= zEQ3LGnXpnKI7Qt(tqry(3m8yGc-z079jU}H*XqHC-UFq4|)P~5x+Pl6B82?=eEx=FN^Nv8yJW!YZ&`w8=tPODnbYpMS(dJ zm=0Ndo2gjaWZ?yR198~yw}2-BCWjMi3#?ZUxL1U~60w`>x@L0nnwWT85M?<-2yA3} zmA5egnYh8s89bE9|lK>ZeQ2EW{gDTU+QXcpm~ zzTftgg5t|eRaO6qy{~|hqs-cV-s&F9B$>E-kPumdgedH{Q5*vKaM)dZmv3Eg_!oC~ zx41ijpmE17MnZfhlku5Mch~zr_nxLspE^TtW-=rlrtX~gR8MtxdB4wnu0k5fPn|jy zfB3^6Fm%{Z^y}9Tr=EH$o`3#%uRNPD;ul_cK|UvK_q=rnQ{>p?7_7DXvyGqCaAboZ zmq1da+Oe_52f%?Ct0T^U9b{%?z&LW9QUIcIbM+|vkP;^U33wK4<9b( zj)Mxom6esce`CykF@8DEty{OEmc{F{E7v#@i6D?b4kpS3^4}*`H|8Sdx=0giL24kB zsm;$CW9lRWP7bs_VD^<3vp-iii)bW@Ns}hwyz|b(+_`g6TwIJUUAo}TJMYAR0R!}A z_3hhNK`N2SRa8`{Y5LMjFU3_?T_xsfF;mNXHDY^Te(@#lx#vEz@FH*B(q+r>=;KeI ze6N74h5v%Yti?b7eLdbBJqFg__&hn_YOl{VYd%3)X}JRU_;C~Q=p&C4C|%iCjo9w2 zS#$8Oe_fB8Z@vw;-TEKA_S&2A?E|;pemka3n}$FFNoFu{6NatkH)~IVTF~XiC8%U7 zQi_PJ$!EnB?USGoN0P{9xnN#KfG_V?$IoFhkYIze&OA%mueDavo6xgoPjv3w8DD?> zwWcjd$h$w8n>~louwg@-aKZ_A>#etN+G(fZlTSXWv6*!X+2{Os=Sy=5Al?Rb*REVL z^9At+;zm|_!$QQ;I+Kg?@`|7C@n-!)w}s7{H{;KL{u936^t}T2?|%0?+;r282!$NL z+G_tSTs@2%?!xr@AHR*Qbk$CO(*L7I9$ji-FFpi6YeC$WC_l_+nAQy=BmNE{u zBr4u@sUL7U=QrzF_6|)3EY?YhfUcX8gaP|n4jNzBxc8Z4l~2gp3~DaQ0A+||W@X~u zd+){d*I%zJcFdSD1f!b-3}wGkb2<@xmHo;(Va}IbcA1!0r5~}dVew1U=*PNHoTEalriH2mI}y*W=XF&%$5+{x2#A-@v*yj+GWGR<6S3S6ze3${5#!Z1yQU z@%S@5$Gv#`@ux6y1~LA+l)k zQe1rTr8Kdhj9YKL9h*08fg7_J{nj{~bIy4<<+QVK$DQ}0kXrKI%BWZ5z=R#N@7Nxv zpLsgYJ^z0(@WeqVEiZ+Z{Ii*e*)&x0T20_}8+G3KIQ{Iia5J~Rd(R#$S+){?V6EN< z9(){UoHdHC|BP+hcOvRqELyS*7hH4+PCoTCW!O7*>_i~H#59-~qR|+wNn24?UZD*W zWPNc-ITgjNeAZ%Ky3nq?J=nf|7p#X7u8e)2!L4V_@`fLH1%Uh@?2Wo0*4jgY0sE|_ z9`p6rm++liof(d`HfaSc0&n8Qtdb$e^S-?I9LKRWeW(O5|Ni&C%Mib$tP@5{)9KB) z?Y7&HnVE@izWGK0x^?T;!ZOK5ccHYjR6gs0@H_9kgXznzmVO^*qaPNH&qr9vF4?XlCa&mI;=%Y`_#1uasgLduO z;j1sd!snlV!O1Ivci(*6Bq%Io+Z z%Bc*jB7>G|_pg8c3v1VI5RryBs~4}(|W(AOrDBBeu)yo!Udn;u}5FR zxN*~AjH3$Po3BsBV-LTH#fv^cECxOk1$-8s<8R<`wG!>KScB?{AB5|IkO;_pAn_$B zP=Lhv^(UF@OtL!Az91}H6$_3NDiQqBhhvP{SF?hcp8uPV*X%C?o-=0-UV7;z9g`AUf#|NE0(n;}DfLj_|C-k$dkO3TWTpP!d#F_e2k zlYJHyk)~8!TJbzWm_2)r=TnxYoSXRDzx{SCeeUz9 z^78VriJ&hN!3F1^kIuA4Jo3mxxcrLWBamOFWM`)%i_cI_PD5BI3q_dEQT_V$`0O|^ z25_7-{$HP;Z9ru?3xU+WaQ+igl9J?i%a$!R83Xn+;ks^ycJ@(&H2V+%z2BkZ0-QJ8 za0B9^jQ5K#zwk7_)vH%4vyH~9!N^hqvwolnSkj~Z`q#gb`7M^u3Mi}pcgmD00?zW# z*0|uevhd7woPR#euh(8lhIlzfj2NuR@UT`*-bd1}I%4<`oPE|AJcoayS+i!I|J4|a zb4QKDM<0ERl`B^;aO`+AYSKUfuT$qv7(C=8rdADR(AGcEy=V9M_iTcBEhgLH=hJmr zULoun*s~`eF-z7;rg|$M7f#~phNLA!pUZW^B$9kgxJ79-C-6Bk~1AXIZi))FpS1pq~WsPo=dmOWeke!4aWhWnR?7t_#G`He?Y^W`n4Py z5{TnCV%1BnB1B2LJWf8XEgO07gc%gy@kyYDpEN&rmQ;=lj> zZ;T#2S~M$-X#VW8&kz?c|2GcMUXr>n!hihZ9|F9xEq?_q0d6s6SKHr`#%&p>Xi;<^ zM)1vMU{fEgU;7$)F%a)<2q*#N+97m2ThLB@$!tuxA&fU2*J5Qyr^j}<;h5-Zn zoi_zt94>$Y_lGXw_H!(Z>taY%b|q9XfOr#e&}{hD8LL zJM97;J9fY(el|BZPg5Qo$G{*4uM!}vuJ6F(Y1*_Yo}+(yBz?vY-2VWM=a22LfBOpp z`Gqxthoe@RmMxpb|A#I!Gr}B=;C(jasN$xN9gy%z2m3F9$b2Sqm&{?-+El?^3(i9{ z{Z$E|elv7JEoje17X)GXJ02Z`P8E{lYmA{k^tWmwZ>^I;YRVmlw`yxg5Q>Zl`W`W=84&70xQJMPfv z@QE~c|LRvq<9GD?_GTNm3of`oeZO0`Z^ii+o{uhM)*)lOgx}8mUsAZ{&!3Nl3m0ns z^c{En2lcb-hsaNcP~!5&B@S*sA3>;?6F64^yaze zun@{~3g|Dq_!0&W9*irlyaIvL6;Q5vJ&X-F@6RL>XCanCnePt1SWm+u_*RRc5qt%N zt6^FFWr|6@ton0O1DeG!%ujsJkV#$4V5H}(!!TtMr$1L1u7Crhg3o23&nyL9(e{in z9`H(fkwiEPXh`stu-{FaHetq$8ES%-04*`^UUSVg>I)XXsesNM1TT4C*tM9fyLa!7 zgDqlej=HXQZpsxB9&Ka%)vCOlVz@?!_r6F71|m+vcZ~y2T-3gJ)(4}0z(DG-xHahV zVxgFg^3np7=Izi_8<#`GBrIjUUyS2;@7IOyNHVwGbmL8`==SQ>%WnxhU@`F)4l4G> zMz`$P^%`#_GzjZQKXBqe6-y*vuVU*Y1Eyvo<0r$)3BI+erN{)nbLUPCT(Z_m9xNk@ zA5x!WVgU^?y+{g@1ZPPhj=S%^TcdC#B6#4yfvQyr$P)ZTQ>2gc11ws&NXl2L-&4%n z#u#D0V&0bhrbw$X1IuBOIMWkTt>AsoTj=Bz;_$>ASiclU0KS3LoJSe!_5GD)Rp~bV z_v&H;cbN~x%|w?{Di-Q81m7wf^7{i|6Y<4T>Z}jg2f!A9iQDE)Rp3i|e$^PUpLxIn zzM|cU|5gfZNHOoOUAs#3t*}^0HIj&C@t?}}B}GS?F?j8-1Z2f$D(eNfC5l?skNV$H z!hmVUJql-?brw@7#;Ivq7<2sQA8@VNg(nKT;ZU5lCJpfSkQmnY(Zr!u5WaK6WRs{riyj;-BGXgCMMf@0GAJ?^fMIpz3raL#YCA{p*6? z3&A&;mSVh7gNLeP$BrySF;m#J)_xv0b{rmf-~s&p_rF(jvW!zsIYs@xl7A{}Hu3xN zJ@NfY3dGrGpDj04&C>$h^4<3B+iRq)=38JFFPqL7&R1I6JU{|8Z!JM+Mbx6MdSPS+i&IJQy;GQ zf2H1YT!i5&_*!d~-5O&w^=QzbL9DC1Mrs`kLsszC?PjEVO&n6*QZD#Ldrw{cJbkd`z8f#!wybm5UBPO4OnV z__k@&MgdszdY3L;s*Lu@C!Z8WLCn>R9{#odFUjd*etz-A7d0ZfQKLrMo={BHQlz6> zw{8N;@}6w7##*FX#jy6r+};2FO|_cAsgaw-0*NL%Z+~{5zV6j}{>c`JKbL9C^^X*) zA?(IS)CFR?E)W-%Bk|9s^fYFz1J_s%7nV!?19bR*2*!Hjkn9D_In4W=9&7+6_ts=yA=*>`!2U_-Uo-g7^<4B04d@S6HjC)%^T?3>!8KzxmB? z)YmJOv4r(XSpNF;>(yK>%7grGj1gd#W0TjCLoDe>Ql(0QxFq7bdZGMPh4lITwJsM< zva9ICKW`Jk4~{X_hhk&kT3x`po+j*%;;Q;st|;`h=GBxKy53W2{P#zs zsYU~6naGloQoR4chp4QKDlqCmeCZ~%DRlKbbUO=K2U?kP6~G?vL{w!PI2&KTcI|rR z{?3=z-v0DGSC=}X@twzHxN;6I7A#sKW_mx{)v9AFR;~1|i*DE3p7(!zSm;vMdi(Qz z)~a$)UQvlJzWN$#SZ8|c*6s2}B4ByLmGxFee7_0D;6E=BZyjvH@c`C8Y~ld&_Y|<{ z#6(m^DzSRar>rFQ1$O1;;p2r%Q5kc+ZMd*Hl8U#FDx-3}bI}3oJGTF>?^|!k-@Xgu zA*7|HXX(&;p~KtqPhKYxy`C;OENhs5#cFd~z59@tyBl*^K6M70hwS3(gKIRf@u9zO zxUK_(G{6b#h*$>|2%$2Rj#yd-%Hg0eoafaNzI3Mi^y*cc9YCQab02vCj*p}43FlO|8c@|CL*aza`eODat%;294z zJOGWvtWIW*qwBTm)DGzw1H+MMTK*Ay4Wa^=9Erdp`&|9W=K^f%3-3l>xRb!>j7c=D z>iO#T4LBUb;V|NSCnxBV`1SH&5Cw&W*uiwL#Ova{wBGi;Hxhs+VLgYQgT9AVt3Ty+ z8^iN0)PBZGm#x5<@sm(gSmc3ROecHqo+JXVE*;;tWq3#JAg)N51i-V20PY7weU5te z?4@wA?J2E} z#8uUkA_DNrHJ^IG>ss$TJh8qBFVPkdGKLCfB?BYpW9rm7Si4SIV}jQ!Pk#qlyoN1W zw!mBLcfEb*u7d}{#)Ux?F~_1bJ%l{o(=Uo*_@X$5PYWusWP1TV+?tOmU#!E})nDPk z$#e1C+>h|`!c~~O`dgIRj6;t7s{hw@Q$7eQ`8p3z{I&>h9;kE881|*FFQbiZ5M ziBwXO#svbxl7=K*jHLdvq$Y_ESL!m2Zxqc?ruHUTt*sx)#mQy*Hf;p_lmAgA%x#OBoKj(I~<28tG6ql6Y9d2*RR4LN3oYy7FVX^W1op50givyz!K$cRI zJc0!aSFok!ESBv25aqniE`ZHjwrZ8I=^XOfwVtA-*Z+%ezQ>x+H)5S|xYFodGy_K}&e2Dyl64?gVui(Ah!~3;Htt-=~&&J$&?_qCwB@C=y zXH#uIx7Bl<_u)cRh+7Acc9+u9QeQ7y@;NO|>$$JDX-WBj#}|q3%Z1hFb{p?mTb$6R zA7Yh&<48cw*XY-GAjb*l(fue~a_Pm$%t*)nkTHY(5No_rnXZ$L3Cq90n9tW@+-GYs z@v9AZhv57Ejy+giLQpPqv7y2s->HwS(R$eBW}(=14!JZW@d0OYq)_`siy8>ouh0Bk zRTOlPhGeSHTKpX_Ol>&N#SATlHl*I^!w)}6tgX%X@4x?k$s?9PF0ZoIzRIRen^}XoIk(x2;5wbA+OIH? zlk+ly!tuu)!~egA1*ECH1dVZW>Z9%Zwr*3V$<9LW;izs$v4c?$?J`tYP$X@EzmJsCKn8k7eiiLys-d`XSHP7LA0cn~?7m;zaLURrYJZs#fF_~KdC;4xr^&zbl zQ~0CI#-M@ydA^?$EH|R4sF;Ago~193L;JSv@ZNhL#+ySp1fb1qiFi1=cIiS!Iv)9C zq(B%jVfx@J2y_e8Tz@RfT+W;-AI+vKRqPte<1u#*OIK<0v%BX@t)ST+$H2 z!ty)Ik(QB(2~ig!PlenJjW&4RcqjYzG_`ruy~2~ zz@0H;7CLn7AQjYjE{oL6t74$fS>xud(X3@_Ieu<`Bi{e;V;tSPx0V1MJANYXQw5cl z4NQ&Ojr`pOq8y15BhNUW>lOMeEa7o~{mpmief+Uxv1J75k3BH0UMi2Cn<^upQ4uKN zvuO3%NdrTp7W{K01bB6zrOK7HR@ka)d)Hle zo%cQ?n!JAYbw{MQRnD38nR2%Fe)7tl~G}a%E0zkMqrJh@4P#~q?0y{Xw$l_nCjyb zx6x~U+9@Za5nC6QRYb{fvI!m~dcH>-ez>+Hlu~BRBREc06S$3ckPC!3Mn2JN8u=XPE+_4K?4vncKwZIlK=v_N=;W%N`=kXO#v1mn5 zEGjDF`%USK{zjW)cw#l6g~PzYRe%1s-)!J_+F?&&3EH&nfDN=dxG|U4A&ZuSeBJIj zBhN;5{cOMh7C=^J2I@Dc&*Nw)4KsM(H{tj`$5FxQpmo9g4cuR*phYEyHjD@2AeSV>F43fzwv??kmrEEgKg62M9al~`spWpHrFB* z#8?aCMMWFv61vn8jYM@WfNSID;|ic1atxRRMF7~d-lb?+a1oOPoD*G~whF7J2!81! z?B$aAE=)~AG-*CIQc`k%09ee;&p!LC23bi!R)4ap6Hh!*{H*e0p;>Seo_gvjFE?2H zyfX1~-|~Gi4@)aTntW$t%$PCq9erS1v}hrvD<$}|_QTEO9uWv^b{@zvK~BBybEZSxooso_?dS}5o`#)#Q8?jv@+rHw~- zh4k7&&D(iYNJ51MfE5<6=QncXne5yA8BN;n@VaN>^wUn(YwbmJTkBOdi|jT0P6jOW z_a%y!vi6Q0TjTRDzSS6l!9xb&gZb~P`TWQu510K*Dji1};030|s?>w!ei&cGx>$BJ z&LI8_!dhPnn}M+oY>WdIp)^qn9T+F3&#N1Y`l8^CC^E9}*30>J>DmrWs1P|u6yP2j zP}rRfLk^BuxDLD!MPp>?_(_yL*Y)aU>+iJ*T}2H-4q{PP;}5J4B20<{FqQ9=?akqP zZL874!zQ{0>xzgExYq3d0=~5&YOlm6p|Ni&Ci)mT_h9<_(ar^DJixw;9W~rVf zEOIcEe76A#VdDQ{Xu|pfUG4Z1= zV~3-jWV)GX(Yz^{U3&~9qZD?SMlb>tpac;0yD%~=P2-Iujf*DM?PQ%aAM=>L{$?FE zZrqG6WY0sS%TkASd@mv}4C_Ym?RQ^m@7_HHMPzuJ(5OKU!pZ_InOdP7BbolMc|1M9 zT`I6dqUErNdDXaN#3GjWs}t7Hj9y+|$tL~VX{wz^wwNK{O$N6M19%Qg7A?aJ`Wlbw z)(anfxST99hs?W$FivG-(TL?as^S3)y@niRT<4%&n^wqSkK?|5j-`d+NSc<@6pT$= znF#4|gU>@79z!YCtzCLb$SOOwljkEIxL2zC;@eOrq<|dbxf(t% ztvFiH1l@`#)8fsk#6Pc>OlgHxAcDy)=W8!hBjBDyitT#73I` ziwcX?4N;Jvk7f)EY)*Du!s}jHQHB;x8&P>|Nk8^-9Ckz}7$fH$Nr*OgVG)S~N(dAW z1W%?lfeK3EkC69&Cw-lexkHSY~sDlgo%Z<&$R4R z{v0DC>ILP&Aimy#F%gbRShYBH=5w_cMLh3{@(Azu7PM^95(hIT$eMVjvW=-l3W>}x z&V-E#!NSlw(ag&-h{2$Q&x>mkqUVi{R2DC=E=8rr*@MQII&Oka-kHMuL?I6Ib0nKf z*~keKCWuMdYoH)e(QLj?X4Xm>@`w>5lrg{Y#v8&$Jq=M9vw*gIuQz>gue|b#nAK~l zSrNoK6DT4ywS9{-PCteF9Zoar0Gxl`NM%JW36_9GQ%$^-!W20Rn3~l zF*MU2#!2)$vZnQ9RcYK-wwRmAkdM{Yjbq16RC99IuARtAjv_nx0i(xF&|{a$-f^T~ zYki3XX0X$IjbiOXQ)$aqG;24=qCYR2;NJ+%c~0XeOvd|EZkjb~BqmmVCsTX9S_={B zg)GNPCIDzbm%cYp1H49$9?w9kdD_BIuEQ~0E?v5uChas{x8XEdo{H1Y7>1L6-5)~- z_lE&^{Pj@3UKT$O0ae|mG0G&-oB(BDsZb4+fFQAc(DXV_!Ps>{t43o^xQ1eOQhOvf=5flo((g~d`#XA`%a^Ypu(m{cn!|h6M8KJBB7^&^$8}+vi5tN>4*rM7 zC(+vD#xtmF&OCmnwQgU)boz|h45pjG>)VCbrK$RzKl$tvzyjS4>x6AveqaNTr8L!d z7B(BO$d~RE)dA~ldbN3#Ht2w>{m8?+Mq17Mem;mSFECCYo;=4x!y+i)r8kC9S$5(nE3rh zdLHoQ|JKjuJ!+Vx|8za9gWMzDiz#^d<=1!*nrpzMIhcTy0K(!L^+}v z0o_k3oA`O8q(mdHEv%ZE5H3;IWgQX~C>1&(}ie=Wu0>4X6kV9rByFZ^mL!{{cwn_Z-JC^0yz3BLjv7 zR55TIvc`^NZ0!+K@GuN^=}vZd1Q1V`YSXq2J2;)M=aq;gn%viux{M^l3q+`^%XOZnyivL)Cw93*45B{}I`r;FIG;+KFM0)n< zCXAF|tLzu$Wo10x2Fk<)6q*r~59dBY1}bNsaf$#SKc7uy4hCecaq~2E4URgpt1{z?ioJRrPi^ z&Kl5)(VdE5TS>bT^QBrsxI6mfhpK5^M1tNjEy1WMYRLQ(WNqDv$@&*RV$v0kNys`y+rBuOL?B?l)T0&Ipqpv#*m9S#?6l`#nxwnla?V`_Z#N!v6S z8MT;w;3ljW@P-D|Y2Rj58pIdpc#Oj&4aj$D!5HS57A=yCv9%nbE1OJyZC#V_%uYT3h0$I0jZmZQLoZA8=VoK1z0NhZfXuyc9v7dD34w&cY2r<0c{wFz(B3_^OEO z;!05r>gPwu8l<@f>poe5)?(4=(3R_AIQz&}IIdYHU&niBb66uwjuh<&EGd=J>s(6f z#^qr41HLx#@k`zhSO@koVmc^A>0`kDC}?}2in2;6u9f|X^s+UGa5*)QvR$G5U<^) zul{RwaK(719MZr*2d<6iuS_Ygx6cL-WDq?b`>;KV+q8;p)A3(VdC|>L?p|=VRSk?B(|Dvq=j!dqz!3#iPgw< z>l!YN=PGdGudT62WwFq@^eGgCm0QzpMv6B+462)RPt_-`Cg^Ks(Us93Ff<<#72wNGxW(*z+4j6DCfdq0e#IaB@)}TSQ zj~T|9v13fU7B&>3-KfAXP+C@jSR@8*+lkZ{rd>*UW$L)wa&z~gc1dzjB>?+fh;_yc z?f6U^rfL?fAZ%m+u#$%4XTgC4639W5fCF22U~AzM<8_GAG^I!+3hPD`kYkRc!i6kp4<}u(v0tqCL6cA&9bhqkx+mWG# zc?w`03)hWm0FyM_5GgVi1#S%5j0CAK>FL@HEoDkkvOtnW67i9>WI!8aV0ZwWocf!e zxTx0Chz_I#5=bC{*tn?~GK|;%DJG0D8jW}SifNft>D_Fs3u~Yz>C*BF?O0|(F{$qZ z7Ue-$Fkh!mHN~Hf0kTN~eU0zjf)vPo5SxqvOUcMU0tqCL1BSeCVLaHio=Mtrn0O0M zhs#K0FJFhW=W`~1qquV23*`u6REqmTX-3=9@5T!@7nx7>0Q5+#s80trOG*Rd7`F*M9F zd>sW~6qqe2YKD%%=u1NY&c^mlTaex@1{=;qUTFk-9S3P{>d*M0P)NbowKi24uwK^v zz>j21*w#HCa1vq5KaU0fHxsn2M$>3%tgv*+Qgl1=NVZPvrOnUpy7L~)p7S=~fa`vR zv(Gv^zD>wTWXH1JZ>Ev;{s&ZEd&9Th+ZKoKJzvIn726CXkU$Qy#M=uxh6663%-4*U;l@VA?CO!j8tGxMHynL9|bLQoA`iJWZp48#+$sKd_p}5`%{?X zJ1Wz8nb0?ZMYl@~#o8g8VZbD&U5%ThOxG2WHy$F;je*ON>_wdjI2uY~AqzCpSYI4x6MDrK}V1 z+J9}vGXog~^zGYrpkt>F+QT#Ein)3{TC`|^Aw!1X^wUm9K|!H@_LWy&#cQv8%GD?#bDl6^B1Vop8zac9jRCT0ewsOB7JBvUrCP9!SH=N{Mp7CrONZtJ|36-L z9W~7cm^*JCva;%7@NWjA8A15;(@#an3E{o>KS1j?ZSj}C{Y}5qp+iTE9XB3*`t%{# zr=#{IkU#>lri!lB#^|!XlZH$NDHT>m;~kCwgwkN$7}C)<=Kh5Fe*E#rIPbjkaLzfS@W2BPqMVGnyu1ttP67!e5Z78*fWw88z!j`D zFdU9?RN)r?sp~lC(xnTm0GW-V(!{WvCg_sLUcd?a;zUxf1uM#qBwny%NZUX2C~8xVL$V)CSkm@;`1rcaxOmtJ~NeKZG70tqA# z>oH?XYgHzUpB;0ELM=dTLLo#YpEhq7T;rlLWD!j>$So?+`9i@LsVPDn(#q9JOj9G1bj&D<~+y^5x61gwfD%zVQaGyz)w1bm0Z)NWiu6KAqNe z@$e&$;<@LZ$DaH>sFz(&tJ-8`X5y4nPNARn4t(|X*O)W+ZCrlE70BDY8>7hLpCn)| zU%nEHxb3lH$6>_q5y;5QP%Ze4*WbXpwd*i-%2X7JIol}KEBHba`3+_<8vEv3Zsq4T zAS)w-;GL%6-M4RFEMB}AGiS}gcihGkPd#^`97bPD zaAZbCrse{>07`8o_LLPNT3IRILQ%wE)rPGo4`skL&=GTFnR>OLOG`=+4uy~^Lf4~B za7W7P8g(@a3UO2|#=op>dwsjM?HF*?98(B_;AEMmsNAyo6@xf6^!15`X&BpXmSXjAx&F4)fo84}bmJU&)p`DlngR z`e}HJ5zk}BjKvveo`Df3k5J}&{q@&tK*J-CK8hT&+|$oEo$NJ-{@)hp)vG70g@W)CSZ@l^v zAAagOXpMUVcy0e4m#(Z)8j1)KSj)8xX?uISj=(L;G$bVh83cHoD%7|b%Ma+J32@qk z<4F|Yb}7=*)Yb)&f)GWrLsFX~!Ag&Zq6h%Uq#(6h2<>?d3bY`gR~7(7cbjqm5|W@j z4-1jWWc27xv$?TB2zM|b0uT`(iLxj$o@{U2zRkb?m;aRhXh2o2aqN;e?%(IbPp`u$ zQbuqnsKnCHIsohI>&r3?iD|Ur+cs`$`bRj?o38Gp=t*3Lq^9~=)BANU2MVW$E`roe zLJ+&Lc7eofWHjfXAn+sk9m!-e284M~WYDymbpu4M_6s)0b~H*mBt|4A42BhD*=J*A z9Uq_I^&v47y!hq;_ihH(%ZjQrARw?Tgb?a5^fL9v_bky&8aFBFf|VYhhcV2kel`hp zMe?%H?Fyr*`$3Pe5J1x{lgYfx&ayhM1z@{Za$#)20o>gSK>|Z4N(h0St&4o^OJ74& zld$efZ|-yFaDYQe6@<~!6=8)CCblG~Gm6l;(Z<;XSj-^_Gq9`(2p!90GEWAD3U-Sg zy{aStSm1!8kOC)zAu0kR!_!Yc!)P!fXyRG2cQWMpxAz#S4{-%3SSCUUBn|PGVHBYr zQdHA)C)opD9J2&uGMS7KA)5DIx=c|O1RG@RII*G#2v8`95*IFCC4{=M#Q~PtxbhUw zzx56$6+pqVA*rr&S+=E)2Hb5+3<#JvyvJF9&z`~*nM@|LGzD4a!fHYEF(?8NWI_Nt zay&TVpl;d|dK}tp?_A)O=bvZP2m0&motS&oh+(X-!S+&xprc(k4O*IMNaIEv0@Q6w z40!(V9+X>AE{*_y-~%7vQIg4IG8RP6f++%QuNGWb?I9|lLW&?GF{vP~1xym|6 zmDgT=nP5{nG6Y`U-)9&q>}u(9z;yxEa^!$bI|JY>*nVOiyOQ}(&v6`&lA^(Y>KVR| zEJE$+$JsmqWHQ;?H3q;EK?3RF1(*RFq0hCI9&ZniKs|uwybxogEK2}J7GZ0X)zvkQ z@9eR4=@Rc89rMk%_xRYw4TKS4nFP3QySpUQkaU*iLIyOy@HGo?BfbyLFZcz&fYsGi zun}f9CPo8(Lc5}5GP#GdY(DXkkMLc-!~X|5nSm;Mq(5wHyy91$kPjb$>K>R7{W7%a28+#N*^b5#McPWoD-4BWOCh=16IT`0>pwCkdVyf^>R{-b#QD@ zdo~cz>-QNB257Z_%3RvrWn*iDH(q&}og23Zo7=p!f5h#LP1XTP%c2*{HY(8_qiI9g zU7}i7Lbt_O8jG(Vcy!?tK)HY>>Osa*)d~4n4S|9nBS08zQY12&Ocvi}YtD=Wh%ye@ zj7MDC?D5L+2pdp97-Lp?s{{px)sPiL*;}8i34ZP6=ec#2z-M!Ceu0IW~0AmDz z&UqOB!Qo+DNVaUfpamFcdO)Y*JC$_C0PXYSH6T|(o2fK&Ad_l1X?B1)lgVU6w`pty z`OKZ=OhA~G5V^LqhKLXZfMtXLI6OGy==f-2clP(VeC;Z0>phN-4+#A}uiiak|F}W~ zf(;nNxgrVMyz|aGoIje{3p!~{Wur(`zgA7!g!}L{&xzLLsoZwax2qya_8kyi(%zK4Eo@x5th| zNx_f}Ufhes-WnkY0rL3^a9fCV{+O2Q*RL~=R8zW5I3(pp98-Eicb6i0vDm!lHd4-H zG8ti713xlZkOG%B*15J>5UT@B)fr`GB=OXhT_jjrUjqWW*Kcy??LAfuBg{+t``pJ= z#HA_1sw<$^*49`O%%mITDe5H^(2R&J!37fW`0p`ayo)6yqQc!=`)E(f}u;F$TM5(^kM`DLM#B& zo&Q~pDr^IR)r}2ypSsFR&pt=52;3c>a4;HS1|U@C+p8tFFRin}kf4A7B&2q}Zo$#fF*ev@WqqB>6^Hi^7*&%k z!7L4Lz4aFN?%iWa&^!%kmLsVXf}Wf5wEaX_uuTWikbYTpKj>2s3GtNOnM@{QPD5Z} zzyhDatB{!>M;IRS-m6<|6&1)JApiw}1VB*~L_@41(Pn3-u8@9}GL%%6u|PoJe38WJ z%E~fz!ZKH{sxyvIrz}VEB2iUIPlN?Y*d}Fu4tPNfB9qDF_%k@M$A%%qimU4@T-oU1 z;eZKJ*Au4KD}abG2A;lklf5_I#Dfu|XrhEUf2ykD{{8zL9v-qJs0l;2%TWz5Wm=wQ z6lUp34MT@y4VLGx1IBcD56&X|AY?L`2v}WvycIVNP$0GppS*FE^)NyR5GWu(f}#*1 z7^!LoG_0`q%4^(x{Y|1o#4H1n==b|vxNw1GrkR$PI}gtx&|o_i-ZuQ)Vy5xj@+NsR znM}rl5C`1e-Qwa}(N+G|14gX@D6qD+!6!fYNvhF^t&I(&fE+n*CIcka*LmZOH&_-H z5Lb8fWiC%_E6Su{w&vu3)3slwB9qBvPDO5w$4mgAWW-Ld;@X9Ely(E^yn+A;WI_?+)WO6=D4X&Co;{bufSw7 znJ1Nyh;Fw(vtmIR1HBl|B+imLm9!CTLRGLjsQB>C4!zNkfh#J5F~}$cCWZ)r71-R^ zV101FQ@uU~U@b=odS_>c?d|QQ@_v(6ls=0$E9uD-;It!l+BR%{nBh8r$Ye5^1&{*( zK_hyu5D`6Mg@8aY6t}l`cxp``u!Ql{QXvHqtBRAow^*r0C@#-He%s4cgau9-acGgA z(76#ugQSOEhV&qvP%@cJMya_VB1XPTjC+jY@R7@}nZRZr-g{+(^)ey>3gE^FSOF;z zD}!KVr9bJt>V)ZHnKPGK}Vsy;y-A(#FMmYHi6cCY&6gWCQq+bSBR(c?T1LuvTi4BKC&L2%1 zucLY(|0$$}y~+YSqc>-JmoiU$uU|(@Ky@q1sTgDsnM~$MrCWeZ^LQjCte(6M`~Qwo z2jBpRM~x#qy}8N7vMbD?H6#cYF`B{gG1qo>SPeo;q8YX)g;?0Qv1J)Y*v^F?59DVG zS}+Wq1-Ky%KZ`Dt_&-itQKn=vnT%T#7>EMPh>8^-bMMuEi-xa&hCB`w0&9q;Hr7rp z^fC}s((9Gn9t%quz%p8bS*nsK%MyjalHeu>oX&+$@eFTRq~u=En1;jy_Pj63Mr1OX z%oIeoRU`z1fGVEA;d2b{e~HjL0(U}ZkB9*D4NvtqS*eT-I5Z}Pqalt^jUv5XpO1d@ zLr9)jkj`CzTd%h$ie*dbn}#$5J!c?8r~WtRfVFVfl4KeZfP~3pGMNXO+Zzd(P?+`b z7Wd!$_f*3-feJ7Xd1M%R(LA$#fmPIqYK!QHK2;S7Maj*Z&v5;jYb+BnMh1gHZOhu; z+ervI#a-{W5nv=`0rr?FUagoz9eL<31Iz1x=aR|fb--?(V{oKU07iuUFH_$A5-Xu1 zND&Z1P=Ycgh zjX9$ibm9r;Wk`UTkD5GiCX>mWp_`#7273(N{wj)lfHC4xA&hJ`*7}si6alj!M*1>0 zuUurM3;;_bz_!`HcaIRlvS=>dMjUA#_~Re{xW=Oh>ojI9!nJ8u#8uLw-L(M3Y&8Gz zaxFvh1K+(Y5VFo>G8rY7{uK490rBoPDE$Vg0`Z73MHvtfBqV_ZfEfZO^y}Wy7ca0X zBO-DnIC9?fdOd2flT_PsM4qo+B^AWh{@Z{1Z}lj`_IWMDt){fO;8YOR$#u&%2}(sY z-KI9n>$a`snFpM_xre;#Fqupya|%w41`B`{MsV~BgQM3F6^|ApM}(Omh#i9w8|x)k zw>P-5wn||m11wK3=>7fuB?&!?-QC^EIKrx`S}(W`L)V2^wfF1sSV92?)U-3Ec?_WO zsu=;H%>_4G{i0v=iv*xCbA-2xX7rR+*KBv!RqI^m0Z$7F)KzL}6?7d+cvykW>wq(v zOib1RM}ZL_M8WZ~aiK|mc69%3G$rC2?XKY%Czg5_4}t-!F${uHthlwa$yO){R<~-K zV3uMcQf=ptd5Z~S4Sv1uhA2R77<%meYGq}`fB-idqQ(QRygl*29x84E}Tz9u2M_UP9i*UzzV{2>6ZD+;C`%P)R zVKp|N>G|VY#5GT(ZBG^98IJ+ zdzb-OJUWCWhJztsVr=C%0+B(iczSb{8<+aT;St1$;&L=Mu)sm6EI2wjc^9jOr(eg8 z8i$|(1g`{urXfcy!fG_44n=c(e5~D%x$$@AK#dA;r&qf_dWy2rI*Z5BsoseKA8jvi)T7T-)J zBZHhg$DjxpV`LMm-q<$ARw5oD3JhHG#t|G;B?RH-KZsl^#Ye7OXKS!V89|r;AY&p? zyz4|DCc_v;qY4K>(7D_c7!wHIo$jr+g;*MmMxsMg5k2vUYw@i^(rvo4@rn)9-m>X% zir6v*&-k0uyyp3l-vvD6vv|PnwhB9Ca)s+qLiesFy=Wkl$z&E=m}v|^g&Dd>2p5Rz zV+mnwBZ(B-sM)3i`BOZK90&94-M2X*;!q%&GD1I!_gq-#nVnU9cz_cB#+=je12-F) z=*Z#GA;aMSyWR2bg`g!S7>KU))?050a5IEQAq0;Lvf4r{Gl5Asx-Q7-iZIYl+pF`z zZBf?5^KEm-i8ni|-pI+I2i51Pz1xnKnJFYft+X+fBo@GD5nxjBog%~};+uw^i4}yx z^WS(TlgVJfNFY@V9U0JLYx_DUVHE|TI3xTkVIbI$3UP|fL9BS`=q|&sK_yW*vQoj? zN#x@ndYXQ94?;u+P^Skop!4uHCm@ShMUD=SI669>JPtu%9w*67O$6L+kRrgHAv^-y zc)_(0*Pbxrlx6GLdTapooaNT*6<{EY#n|mopQc!=70Ip^O>+{}*}8LFa?Bhrd3s|i zlW@w-pw245=^JhzpS{q^pd5zIWU}jPaQArx(T)Nvsbsu%9c|pCQb7^H_FQpbo&X!9 zlGpa{@y=jGBoLwq1j^BX_iu0W{tH`_)jlQ=0ofq18xbY~I={R*u(`F_zUH#f$NIsu?Jj>FefJ`s<%KZ$aNmrwO8DVZ?jG~ z)tp*XMHlcikGLbyPMyc(*w)i-@q^}hC7mY50{pN7JWFiV*}56L+?1PV5zb^X^J(=$ z?Q=mPflF|OEUIvka`*Eb_HRHXMes*_1&Hbu}iy;xA z)T>RfAQAu&kqL&Vh^QziIilphy>*A@_wS>ApDGTJVP!Pn#?}VcE^QzmK`Y>ZBy3Pe z?H$ayU=a}gexF__I`6Z==CNR7DJj8%$`%mr+_@9SD(o1efC$tgtPlc4QPfM5JQm>E zVXG%4)%jqLg;+q_Da+$guiKx3`W)@^+M}+;w-Mpgi*3c( z3lYSHLUD4OUK ztcn$zk3Mr7RYzDu6g$m9TH)`0dol8E6C{WcY>p3)YM~+m*o4;G=kehfPc3k}aN&aX z?%d%Hc_s;a0(`RdiHwfNF@$7=GzwHHjgM5z|$`gtV#nDFfhbT}f&vjutctY(h|wsb7`U^)&)@sk|BgFD zQK34;qU!5|<+*xugO-X1L) z3oi|-tD(mtJn0eL(s;>g3bO>XVyq@7+!bO0N-cREK%J1aXh@IgTDL7GpwsH0<_vXE z>iNz)CZ$YOJGuBYl+FTv+~S+bM1yINfk=x0e1`w|=A6LdRAeRh)^WzU7CpIu$U|d6 z@||_DJoj@g{+-RifP@e&!UUW0(uW!Deja-TiU@#Wfe<2~UXT0t?(@>?ukqi$@+H3U z^=}Z$5=k5%olIur3UTG~WsvFj3J%7{-+AK={>7KS%&q_TJ8}K9-;odl4$zCROOMZ7 ze;=Eb5dlI0R{GOPMCTv35EwIx6_yARkDFi`)Rh!$T42YzpbM>z)ZVWF)w$rY2zNE3 z_K4fUEOlE}HsR<=krqJ5D>k!fMY-!SYyRJ&#GwpL$af!nyiOiUt1@RDq=NaR8=rCc4T$6&uDOhi$3=+?DEl@ zAK;M4s02kQM&{P;CeLgI%He>j6h_F#$q)#O^T!~GjrH}(SVG&h_%T&MySe5x6u`FF z-}fGqQ1qlCx~YtgZ6Q{Z6Q;=t*ISQ6(i)p<5iZNJ7Tk$f+^L#&Bf@GbsMBSz?(XYW zGtcuv8x2c~txgS915TDbbx}J!g4uYHD(LoN)7AhR5RZ{e#wdC2#g^Pzr|XH&sAJZ{ z>tYl$(HS(?58_e#@q8{n_`wFmlmQ1ewvho$#2EOGU-_^6i9i46`SO>(L?m*2a!e=! zMXzK~Rh(2K3JO9fQ8eXhkCT&QD#J;PjQS;?_$Db=4NA6d1YCfVRIIyekEevC4b17twOG5#GOgU2vF0jCaxaKM zbEAQoj4OZjTWA-Ks0({{^hJmWe)Y`}mT@m2D8 z>c{AM$_+|h*R-nT##PhFuuJY-mkN&;F71f~<2P9PQN z`G32pK+7V=z~SM5gM(v61ds@{fXwup2k}rCP!LvnQwfy<_NL%I`}+up06RN7+`W6( zW9n9wwKr@4+uddz#26>SJQiZ=EkHBUP)+r88f^`YI5UlDuXj6gbv@~HInflacv>~} zR6$KVU@aoTC?Ohb3DP8hKNkW5qU+sT@buNITzdK{vau^}?BC?4 z{hSgV&09b~yVD~-mrCi%$6na=fm<#{3? zAt%k?eTwg(I9-655;9G_1jVTya4Pn4U{Q=g2Eqe-z};($_+TC|0)rMfH^j4lu6dri z!_;esS>CZhGN1j-=Wr_kh*a*|bIH>q9#LRSB+`$@5|sjF6`%qH4y#DrEJDP9%+evj z>IVG3-~KydC5m8B`hA=cYf9r3b(G266#O7M!Y{scDK?AIclZw9;Y(vD^S6KXt6%-g zpZe6N-kx?V+J>UX;>%f4vaMA;OgXXAZP(J*Zas7DhlWDGGe{jj$Cyk;7!hrrx_Xsg z{cC;=|L6bteWVVcaCcZH#RQ^Jcsn!Q_gJwk<#^66XKlZPMrPR zkM(oS`%c5ue+L<2$HNK+FeyeDE!;jN0u~e<=P(##VcP4)_RLt3rDsmKT0A=9;v(`b zkL}T5F!<{)yzs)$`p8E<@-h=}x4Tv%%+sEGhEr=A%A^2GZRe}G9&sjf2I@S~@BMwh zkB@!)6G-X*ZsLJ)03zQyh>QS3_g~yR76O2iD+??G2D+Qbw+i7ruJZ&S2~64R^}ffg zTeqJ12mjz7e7FDi|NVdO00P`e!A=WD(?QIKa!%i7Epo!ES7DM%FQ%U}lc}l^Wp9OF z@C$ztANlA<8*f-B?P*J(LuYT85^4@ui+8NDI6DF_?t5U75au6$hI608=bA%+nV$Tk z_w43>)=UNzMDS$I^8fys&wS>$eg5;G|6%{)U;K-zDMVhV%6T4vE=fgKf|G4RBfc}p zWQwBXdwh@Y!MM-?DPU-9Iml!(8AXZb1{p-=Nyd(RukZD}2t{BzN^+55V$fKN;=~>wnM@`-429O$*ME3- zNJLA!Hh5MGXGt@s2?nOqRdXl97~D>>Sd>iW+O_L^^kbjE@$9V{vk<=vWHMQV|F{3} zAO6F&q}Ox+)QIrBY>8|yHVvtDscTC~nq?>C9PsI6KKQ{8u(h*|F#-Z203!8#1)k;! zXEK@0yGICN`}XbIp8!Nk+MpwCQQ2%Ik!Y;|!fDfx8WCR9MKLqTWG-LcrB?)m0HGzW z7S3ccnHXcgEXyl%rk1E1j!p%*CDq!Jl#U2D+eKy^Dpwj#BV)wGRA2{!1Qg&-?_v3L zFISPrNhXuY*iOZ=HpLhVK!9hotnBVnGq#Xfgyf=PK4~)AWHJwkB&23bgIQWKnM@Yt zs;WrPRBKYWjpr-o5E7Tz$#xp*&I9H>b+c<)xN-$-#0)Z7gh5j#`UIAVOeT|Q<``?v zvRrqf$7)1)E@4(zu~SZBx;%$odWn|FFa`;qI*u@tL0G`V+-&0%t3Z)uXZkp!2$)PJ z^KCjKEGri%G4xMp?NfFju#Qgj)7?g9tS$ttaO!B({fH-A-Z`sMb2oTH1 z;@$9}c!MH103}2?*b^_k z@HSP9KmZ~b5KAM->+9>>dd~)-4^Tp=00SbE$$Xnb(HLq!GK6M;nb3odZ z!_PkZY-pNsq{EJ>haCfAk^{b?KqfOAC6A3J1`!CInR0>u_%Gk)PyYVrc>dWv97{~V zJ^=y>1wxz)U2&D!SYP3P`OGFi^v8dQOHcKo3Lrxuvj`TTB(iWmWHPpiF)EGp&YJ_= zgq=<538x-#dO%8N=&;7^C_NTo(J&TY1A;aO{3dI+u2D)%u$Or$Qbr<3R8>U?0T2Lo ze5~T@xqAz+dEsk^{Q6)1?-<^{NQ_(H3NT_52*?8I+=s&1X8#@WFaE&+hX-HbXZ@W2 ziIt7y(=I@akq`oll1w+lHtq8e0=8L3YzRTvX4$bpf|eMKBqWxWXuw86h|J=o4(D`| z@bkh0`NbSk4;awYgtdg0T6{C1D7bX#5*K!M2qEy!-rnQ}$~K~lkmffQkF)ltp<;tN zIbC6-&NxC1AolsQf9x9!?_D5T00esA?o=c|5b?X;D@L7+iwmT{XdwRczdhhf|LHFO z>lZda1_~aOcDaKjM4Nj81ug8D@9*zV{ylehciGrXo_%gXbZl;Dz>1)Nd067~weAj&Y$#xKWIRfbgZuZn@ys(=;(?G6MmD4? za10>kA~O?<;c&>;zy5XJ_x|_O@AUylyGMl}zWLm9T)DE##`*@5Fb2%yL=qi`llQ#m zJv{f^bDq%^tEr(%M*B7nZr3voOvf}d?I;bjXx2DFfc8hjEGrq?tgWtb;lc%~s^aqH z%lzOU^n>^bKmNzFdwCZCM-!xp2_cW+6ca}U-+cC^hssaiy?d7*@B@ATpZ@fx`4fNgPmqdljB#S!b%}rO&;2?6 z*+2Vd0NCd3x8LTM{?cE{c#InV*Z=i@@!8LQmS6j8e=P?G2gDe8;lH!@9#B$L`SZ*4?pZiHGSK__*-ou(TYm)DYa0idotNUBB zMjig{l0V~ma?|?&)~#QUQKLuWg%@7LQ%^sQ7hn7r#*LqV($dnDHw%Y_wbC|uep|3; z;Ue9iVXf5lsy9-0=rz^4Qr(PhPIY(vx%r}h|F^jI7kFL!;;pyd22FGTLg#G}{?5|H zn7YsCx+dLKp*35Sm6c)6oH;7%37fpupvt?=GeGhBVhkKK7+PnLI5zQ}xv{KGKKB4Y z+@^H?wW04*-KukKLGm?Jhr0Ham|K?&Y?qd!)yS{)wGO$o6huz2^~cd>B6!aq`w zH2nUPAN#5jS(z#rW{WhUl?e|-DcVrAP8%y6E=OqHm-?q{H4adbNCt|EijbX^g=Wp0 zqoT5soA`7@qcObx`s=vjiYw8uL4%~n&Q#s?Z}k_F90#nfpPi#s1lBsRGe97~Rd+w6 zUXi4Bc0jNCJq^g(Y5=hN&l+duWjFARk=;57+}gZqnK0+hor|$!$725c`S|$bj}eVU z6Pw`wAJ{4?Dqvvr^S$@pD=={E)7$U7jlO;RV*ma3N6#KT(Y9?{JpTCO7&K^*j-Ney zHm<$)TCm2c#ts36v?KvSU^P}1*?~erww2IOUS1B@QWx5AyRV@Zu?B+&4+hiw;o^%g z#y|ggJkWjZh%;U>K_48BMR z3GANU6BxPk6xdj6*x`UNF@nd>83{V?zyCf3q=RtTWtZXFYp$lCa|F+42(_OnFb3*@ z#)=6P0jt*_h-+?l3?Quz0uz0&;Ab4@ay|!Ce0Aqkx~qhM{}y7@7~!;aJtyoomFdW; z8v|aiC}J_L16lyI#y}{i`wRL#?#^3UsS_$wJ?}^e5AJ@6+c@;y8Ss_w!Rq@<%oFnS zKuB1FMlY;ehzEN;h~_PtJJ^6R?z_kaL+A@-U$;6En<*CFkkpPxr9Xsrrs@PXzAxEYfsO~RNlqj3#4mbc#OPi^c% z9+wLsfbY4DY`5EQ#{t6v5EyGSjB6uG3R4%VsfRw}x_(b{ho+#^k|XMpd+O&fY0ki{ z-BIk-vipAW$tNf*EX3uPUoL>$uwesy-xnC(eACT1{q)n(vu96q>eLC}%=iYUopzdN z=JDglZ01gZxgd{FkQFTVH!_uO-j=DPFFJMqL5PXGX> zO`8VRXx6v~9B=?W8}%7tv6wXHBaS!%Teoi2COu@x5FB;XQJRB*$@}CQbne_4`|i81 z<|r#IgYi;d9}A$8pgCpgG#quz(Kw9buIJj<7q3TFRtCD9&;=QpnfPMzmx#k+6Ys}Y zUwa+*-TwgkKKDE}bG~0!tfW%#A?7b!f~To{(rlu0nK0=K^x$zl?t2h3XMLw@|HJG# z7&T@r009Nou3d+L1WF1EJfAIilUnR8x8BOJpVPf>46ta?FBtItAZfMtKkxwhz5Fug z*p9fh*io{R!qMlr{kCps*buoT+@ROJV@=n zA6ERj60g1XDutyUyoMhL+z58mrdQypr=CIgd+x={ue^%woXc8(Yz5DA1n$4T7y3T` z0v0a(g=^f3{%^g5_0(ja?fV=Ro(=k*XU_Z%eI9;<$3B2z!$-*U-~jTYk3PYD_uY@@ z$uv;Aln{|XYE0t#9_rnP_tSkCF>)j-qj8NlWy(}cARE!I-%IG;y$3!YJ6_i>NxSFq zF^nEFhGX=`<4-+_pC~-SgU0{i$Ju!5$*0ky$9)(&Y#5@kO4x*8^5s`wbFB~Kfd?MO zr=NZfYb>_y*n$r~8p-RqOLKko)l~HE^9UYdAI9sjv!oPp8)z?x3%GyZ^t4=)`Hg}^ zCJk68W2>nOfYXT+VF#=#6L@$?*nt0($vA3SW@d(Lg4A|V)TGGSf4LDB^G4r^NfRgH zjn`h|G5NT=`<>h{2IInuE+A;vhOxV!U?L2Yaq!gy+MX@K??T!y;B2VIfmz};85nKq zZfr8*CxNV9LSv@`V68(v8PzqH1q8kVVXeCwDLM^Caw9zKu)_qNn>KBdKx6}H5?Hi& z5hhQbjCu3s;g(x&K_l9H?z-zPWD>MGbm#yAs!R%9x^xl9oO|xM=+>Z+>* z)_d)>7tTBHJb^kv-T}BYVuGWztCLPT371}aDW*@Kj=lHZTk}nrFhRgd%@x#mrB&a2 z^Ud5SzaoG<#ZCS`yz34g@;u* z|NL`BMSGsX(4iyHuyGL{dGrykneUIAfEEP4i!Q#1^S8(CJonm#1(-f-CZ=+&_j3*1 zyLZR?0|pX&f5M)7w8X5Lv#^c#w(lAI{PR4mB_k3cfb}JaHYdpRBU8``&lBY0u>d=^ z@4)zRlW^jRClLVps3`mAWF%k=*E$i0A9)mVa&z&}L%pfVuf>NWM&R)$o`xUE;y4Eo z3}+(Zdk{?=i=h{V5;9Gs*`L8#XPu2+y?S8|*EaX3pU7fV>YOgV=wdwi#8YTe)Kp+a zEsth}kFlY66CQu;QJj0uIRfK)_3H9_yjmurZryI9ZNDLYIeP7E9}lpq|(WFGU`sLv$?-hFpZ3QKb^{hM#4A`R$3+ZE|7a7C^76I$_UrdAY~Q+#8+`-Z)BSF|{_1Nu?$~36 zGyk1@qe*aB-O5PDs;9ow!XR9o)l{R|-5(>Q{mQ{{-MV!G#imW0N)x3CNHnxDqMHS< zuToRG{r1~IXAlC#iDEOF(~NNZ@y9C``MT?_BcMF5_i5|Z?|f#ZT{mvr7_={Ito`=e zPjf6>xR9IfQXNCPuz;NaEwDe9-#0@GK@gW#He<#Ng5>!iRZWfWTkN^#o&q?}^RxzP z*aH95%}ArKTem*8QcGJ-?eCIH|Bg%lelc3@(F$ed70Aoa7gcHjWas8^gI|uN%YH@E zW-ah{`Y6B{#Nvt>*PMo(z@qcmxOo${5a3A-3U~?%YN0{HhFG~`rG(9?)4s;hM;|RM zx~!}mjR}m)moG=FR;{)1Z{D&=V>fTnLg1a5nS}!nI+$zT2;Y+f4m9?hpL885$Z$=U z003gqfX_}nl<*o^#f0bK$Rm$H22DKe+O?H{#ODjOYvrRIg@;nkpPikJuGe3OhFs(7 zHLEq>jvXZc3>krJY}~XN^L}1H6H!at+oL;y8OY4=!1ES;4_JL4haPe;8aHZ)T4buu zJNIn-@WYQVp3(hu(#a?3{kny9apsw4YHa=OhwnkNqQ2XloE)5U&RLjFP?o(r9_Mp@ zH2+qY=Trx6TDOti-7~(U#{mO=E|>S~S}a_&h~H@;ZoTyut?j#6vv}@DQMhl6Y>s{M z$){l1@?Uw*W%!l?(dlQLf`Y<4)UK05)}%W+cI>Egakk+mO^PUB-l*%bj#_@5f&%ST z_KynrPror4*U12xKxV%XCrjq(Dd_4p<$_M0L{3;qQUiNU`*S&7WoPGT)6Aq~ACLW; zmRlof25GyOr}n6SGF7_+jobewz7y*isMe;4Tf zL@kS;A$u^Ln@EAaCT*F=>6nNg(JM7tjmP<9ccz_Fn=>hE0Xj8uYHH)~-FM#sfCL22 zCt8}?vuxI%efAlFtQ8JA=peVYDz2B8pfZiLF&hg+CPXqK@I0SuDUn|S09N9znMlF%_)lqa8AHvwB_JPwkTVi{Hm|kTYz#8Fu1F&8Ji_OvG8!dNW+Im$LsE%r z-;DgcTmgx*=}K@4tN_!xXaWR$^(FMa^6Kl&F%`w@Qpakkb73!F`Dnbbc94;_Z9 zuenB4vgZLB+Bryi2GPn&f?qvn@}mG#3l-(%5(p>^D9XV?z5(2y8m=-kraEH5=mF1450}-Vf}f_5!QfjMn{mYvb%j^xG8L23yi@MmkE4Tf7mu0iR08lf&@-paBGp z544$OWJC~)2UX7>Sojf7^N2>NG7QN}wRjzu*bZR5WSgu9jU$^-pm8DRmBjd-#!h&S zY6Fz!9Etea#DaJxkIm9L;KftN*H>vr39$Q3wo%c$1TfLc0OTx18?8XGM~@y3IMo3- z@YQ#+EfGS-4OetBLpty>?Uya6%@NGC!DbOa_!-%D0Z3aUh)N)%NkTwN3RfE*HCe3% zfaqun2YBqU$3T$PcqJtz(wOt|^60(#hO}dThT2OL&4Uz$HVlAfO&ZIeq)vVw+K|S6 z?Tt67VYTKuwh`cGVdi%;arW6~3J6xOS%))DI|UbAa2}Q|T}FEQW$Z&+vjKRomL@!w ze4b-7F*oO&b(S{gwX4@jgY-OuPSo#95hq1{yXLfM0asg>p2s)=Cqu z$7{FLEKktoS~o=4>K3vR2IkSuc`~)ikt0U%`x?aSunSq#WIra|yJq!TYV;Q+9In`% zXEChabN8`x+ACgHET_8{UwB^ce@)g&-t0D@y>Ms|_ zTR`XEx@~Lt1Vlf>6OFD22nk0X{D=?FH`q!$H18$tC2RQo9DLxx)RvD&EQpaV?t!C@ zJemwbOA3v@z`)98yL#mc)Zt!}pOZHSOMwHH{FDX`}9WhW=#=`Mbmuw7Jeim4Q%&YG5`k&zpMzm4-Wxf%ebc1*t~59 zeqA*ji&wmfC2RX*+4{G!bX|X}-8dXuw@*b`#UglK352d(ikJ3VYJJy>iY5R{$RW_GCv6U*l?-xB}Z}o_R)~N_#L~dg&$6l%#q^U5n-faH5>&&w>*8%%?qR?>%>E6yb;e=yx_+f|W_!%7g%{TkY{!BY8 zfn;xKn1!61PE)k?4nQgI-%|*P(?~B595@Icjr<67*pic#XF}up+PoYgcwYx(X$UHHVma!4p=OhzW~oX z{VZ+f<1u8=P+ixC_3QB-IYRymv;z}M{(Wwr3DnF|6o) zvT2PI;f22ZhxXlPUxM^ZeEP|!oNFiGu{1`$}R9sgNMoB>j1b~ zF`V*(uDTig8Cy-0M4p|KEv3U-7Zn zfzrw!uzb}3Y}h;!Ma`CQW2uLmZtRSE?>r9o+~=WLI=d0-HC~EU>qcV1FYjSj z#cWu!1AxLO5}J>C8X@4n1IA<~xQV{Q4gCT)EI0Ee;07ssFTWdw8$J8Xv(h>NxEN@9 zn?8m91S)FD)Z*$yKm;7Cu@;LSe z_3BcyY=O#XCHCvoN#4|f6=h0Lzkr%jM{4)m1=3egNFcZ=5yKsK+(w$YiKx+{Mn$;i z&bv@Rp(4YNpgYfZ@4ebeOY+#yqDFoBKQ1F}*c1lRpt#=iaLTEth#IAqOsA$>;d>FZ zYP|<8CiR_YVh2v_ay&fW1MQp~>nu|FuTy(mhK~DoAdQ=a9MaS$5YU>^c4+}UW9OcG zo@|)LTD0D?HBLO?1l?2C8pdWHB_}o}NRbm1eJ<3mz4mIHMlIJEL*e9aIG>JZWGQIt zZ%N_iew};WdW95xZbpZFI#8IdBl|El<)ysF1^muC@Sg9cdu+dsofxL}Prla)03?{UYTfG3r0$ujS0Xk! zOhqFZCr#?tR6h%RjpMkJI>NuVXi;>TZ@kySF_}P(Q`R5ZYSpT(4TR1V0%C4F0$Nf_ za>BBJ;ubx~<=$08% zUx246*(b|@Hd(MV0TB1l?Q&{{EAs^EfQ6?ywc4;>AVhcBomjJFGCXfKE;+pm_CH`> z6c*;em~c{vAaqCiC@GEN>mL?i)VL`KDq5gX!4ZgfjbP$F0t0mfzZG>C3Y&rtcODm9 zlZ^|nY$qs(7ofV$2G&vTDIa;~lm+{nwksz@Xgv41Dohm4j;uM|XOmlaPWME+wHV03 z=eLDF)STvU6psG`? z?GLjB*En9~<>ygiu7CpPV=+0DlyCzH%7erP;Bf=VLA0V=pK%)*ov|d*$AUQKGK}M0 zQj>R3Bdb-rRw$%4&Ti$LL#+uzsV$G6I8jb2QO+lDa&}qkDjgXIp6)df#^WJfGx|sj z78x4bAO`rGXqOp-y7kxN{yXkOVP1~r@dP{wZHzvQ3#BkXZA$E?9CHW`+^-cr7&e;T zv+tp(@C;I&2g0H{^@x+6Mx*{8H*Ju`#m(g9HNlQ;Y;hQBJMFUre+ENfp3tEmL@gR zqPaj#x`@>I#qdlB5gf1uq0DS1`OXO4^P%yr^Xm2-GJ5c=h7vG`o4Z!21t_C6c}Z(d zpf8+YYeRr$T>=l|B|l?nnICIxLf8?=BI22po4tVvjp=eyOX7zC+}cu~XZZ65e@OF; zC#Ep9wwva?G`e~uDS3NUDYcUGKnr~T{H><>eng(E0?}wx8ZAQu6h;CIr}b#_q&+Px zO=?4Sc3-{n_o>sSqBCuEr<`&s^gi5XqbFY!Ubk+ypk9Oeie21QUWRzwrjD6~16*5u zZ${aS1pEk4hT=^#QLD}-+;#JHC?K6>prisR{iYmvxDCmRSD+E;%YR;VA%^9S#FWXC zkeA&W#?N!>s|Iq0;+&1!*Z+`K?ew4ye5++l@{$XdS9e`Pt%L@be4m(5Pk(*}2y5o4 z_r=i0Ugeri6{@od1U6Fg5CSs2`iXhjjRcbvJFE`4{7pMAR9@|1Aop|)12duoUWYqLLe3>hc{a|YA>YyCcI_ki5LV*O{d=n zQNwN9uD!yNq@5%lydV~p0|~FHr=QeOwz-A{9bqCKT&qHt)DprETV^DK9=GRGI2lgw)KAf@@%ccIS-qUjA;9(U z$2Q}c|0Q6%hLjpChPJVKGRkpEi|E z&xFCQYIV-dnN0tNSLYTVJ`o2NHd*L2?tfVKhvad>TC+{BZNelaeKkl1|MW7Oj`Kn% zW|J7BBxb?>@jf(FG($GnCTGPW_}c#@4mb&=(;@z!9eisVi!6w4jSEBr7#JlbptdWg zC~Jc-2&MG?b8jbJl*{*JddzO!w$&Y}PP?+asbQfw<3kTQ1is=X;e-J>jr@0-QD{g- z^cSou{s?=v@{pJ7AqdJ4@iSdqq+YAxF{m(=Yp=cp@r-%cRXH2575|asZE9iy{yNQs zwaWBS>jL65`1Ct3ez%V_;huh!|B^;()c@*D;F}sBO|{Dr5`fcrKszehm1P2wTO6>y zq{Nyy;6J9xCP&9B#n>@yM44pDOG@+}?Yh!#gCLO*J)WRzovvtraKL>a8ae{T5DK(C zcKeulzr&YdKqf-+&qJX7qeIOy=UAg$uyj7pYjsD;kpa)bl(x! zr%fwZWTk(WlJzF5?o5tsx<||8B{-mnoatqlEGK@ z?__PKGS{nm5Kt!mC{Lb-8M{uUz}Qgq#F z!}EAmeAFh{qwVi+zAgr$XML^1@t)P4n~q@?vX=RiY1R%WQ= zP#AU{7ge>SEiM}qf3L*Kl`E8p!N6lOh(p12f}*_V%$}`~B_?}Nh9ba#HfLp6swl4r zrzH&a>evu1DuQBUX0Kr)`@a$NML9zwCjPMo>gs9jJ66Yd&i3Y6M7#)&KjsMR*tG<( z@#-uMp4DqO-nphFwZF{8aq;P{Sx>#D?Jj-nh5BErDcjqBD>0Rq{sYyIz`!5gYFa^^ z0wwk*uqyFe<4G&Fuu6>1nGd@y)%&bK!3c#cTO8j9=QVgx@>0uJ;hTT+R?S}7ZV{V5g_3Og(qcC15 z2DO@LGRn(KF>}@o3MZwo3e$+g4-EEhw+FVD{;H5C*obxP9Z06^L1NI_SH znI=R*n{=S;r3pQ%MoW`P-~L`988sQNn7Jrn;|-K-gI&&0q=4lp1*_OLX~j^p0xt^- zfwD;&GXXX*1}^Ca43v*{>GEYtcW13~Evv!|($wny zDl}pB)S8lUAY6f%S%O2DiO7pv*uZDERoNqTEl7i>_z*ZdxY^wF`C3*}%JQ12B&{B-3XFO5l#)~=| zy?PKg?7IoT)*v1=?6&#~PkkQAf_D8|28ooTHu)YjN#{@lyr|hz#R75( zy)+$fzxp+R*lr5SE~O|0=#}MxSOjv5Rrlh3{e2FWX^toT+~G$nb2&VD@*b zamzKsQBj)8CJ<$}iq(DWfl-(+YH6ajY%E0@h2+_Tq+Zkhk2URO%%fnDzNLx9k`34~ zis~N!NlQT|Redl@JS{J1Ck?o2NX4jWe@qLc0YWxdQO>2Md@WP?F-mXBf@O@6Ggcs~ z*>j+osNNDsU<2B64?*kJZ9-Z^mG&QZBS{PXVfK&u-H$|+r^}2lGU{=wEnKNgGk`084@7t8|f*OxW z`JKkBQgF=atGb|b=KQ3Tmt2pEdsC9!y*gWNW)oLEQ6N$UU_X&m?dU|z6aNTclV8iMtrcWvXqCSF{zBe3xRBQa}&C9T7yZVmSO^jm@ui$HxV`=?f zICcf#_(9a;`VHXLVO&UyUSR`h92;eivFjRyGE?ckiRp82%!Y-I4LGjhyhwBjGx}NA zgyZ@;M(;Vn!RXq;hORBw2p#XnQVXhNXxww^-V6O)<#Ea5RDF!VBYE89d(?e4RW1N^ zXUcJ7r3+O{HBM+f>VGvYIJqeVw@OE3IWybDtEtLP93FMIt09FIU}Mbh2);FqAx4VF zEh{UP=0IMAnsvp9TZ6p3S|}*2C(U==+BGmRs(upXx+=@co#vaeW^C2q>xDlDYhwZ(&JGx_ zN{MgH>NRN9zLmVTJ?`oyVtPU8Ww4rJ8;*I0M9=*9kmnlu-&zLa-ciwp? zE~Dv)>(IJFK&qP2tfr+ZS(jXL37&rXY1u;^$nrT?#V(dN4Cf)xTA3HXF=dLPc;%H> zaLqN>sMO}CpMI+K|3#Xu?%$m+Rm$4>RRgdP8&$PXKIp1#$3A}FR%82Bjo*BN980%J z%giA7mJ{$4?`u3K$tDVg2in-&`{O4}P+380!ePl(Her}>1)3@<#Be;;fz^Yo9Mgct z-n4lWHg4GHY$yW!U8SYFMT~-?D`Rbc@`eL^K+DzRO0gM4#doFzr(imnh(C0flX^O z@vmnmqgm57q{iA{&|Ay+`N=5V5lDdAQe1)CuNj3OW^Tbj2X{v8{N{MN&o~14Tmh6A z4`;ZBhpdb`_;mOpESz1E@cy=lmic(&Uq8awIxqy%pMThn`)>aXn>YG6;NXtD_X2e9 zItH_6Y!E&d7B)b3PM$!Dj(BL=ys^evx4HtK3}1?pZIu8FDfCL*{Etx>_sMD;aKPR) z3ADw_1odZnPn5Px%^5E~F%ARXnTDoKTXX&UV#d@p1mX!4P)ZR<%d|W$2aorffDHuD z{W|T3k{uD;(RDaxf4f%NIoE_(6o|)snHgd{pL=f|fuZlrCPUHzdv$1s$>Y|bPmeJa z6m^qe`Jy;Je7_j|p8gs|jas8!+x8gz&Kx{=+n0!zdlELbZ7IjCSC7D$PZp!YzFdEc zmKgf}T)g(eRO~9Ngb9U+I&Eqm{SsJbS(voCr z=BNzh)TvV)_+i9|5xALU4JS>Sq#`*C`4h06aKZ_y5q!uYhsZyNK&_h3W5$ee8mLN0 zvWSWRlf^Mu@AyZR8)V3!+Y9jcoPJ7$bZf!6)*yYFg@!wx$PJ$v?KDaHH$3iPx3Zh&)@^?)NtYOcCJQQIJWb52-x z_3A$`uUJjN1=SOEU`*f?AUh9eS6DqB7xe}csCtb$46thDDy-XM9sYL4-|*pwAG+#D z>0Jr{9UI9|jIku(6Hhu3QO*;qh++Bi<+26m*Q%q09Gf?7c0iaIv^uWBCTu5$hg^dD z7BniTCrZ)UjFf_jyr1JLC?TgY1J7k+0*nJpT{A#V5k_`Z>v;sjcFgAW8I~*=h*)$B zjy${>_G;5onZZg+OE_LsKPNX+4Y!Q2XYK4+8*%Oh?RhW(7V`2lw5F`=GJHH_0Z!=B9t|32!!uCx0PM405nAoh0$)x11sytfMpmwm z#dFH&L|1`hy0ns(+`r#U9D3-!=+^T9L~<+9Wm^M0`@md$Jaj(6tRA|Y(gs^LZNv1b zrMU2l*06qnz*O+F8KP+=yu~aAz4JXhn}NQso`$+bfQ?4bZtp@28Z;5b>q}9mFoO2` z6ycl;55}JDYXgX(Nz+{P?lGR4a|P-)$ZjboD zn}>)WK|x&~Pe1%6ir1E-ar0~p{tu_XZ5AO16K8Lr9Hm)-g~Um zd$=?E@OwB^b-5G8Qv`^lNClDvWsN_7{(PK#^2v^_R+!?04?d_8qkIJb`AVE|#u*AP zyszhdn7?p71`HS=?V59IY}T9Bac{iw20C@>6sDw|fUo(&W-Myo+8+iE94Npi(-)1SH_oB8x;23nhNPU()kwr)69*ZjZ`I2OT@!-zziKL#CGFM*E=h*8Uv3t9kZHRS z_*#o_tzTSs-E}zi)KdWid^6)4+HG6t;mgd(ghgs6EPgK3J$MPN+V?%oUoamViZ^N< zp6B7mAATggTfhybt^|QnX}?KhhO5JvP)9PNx%XvrgBPoZg^QO9RAG@cu2uI;M3j6< zNh!+836=?I$W;+;@fmi^778qMy zgo;WF>sf`~wBEZG8a2%Uj4#T$b=zEO?3E}Z4~oE$3SNy4dp9R&>>_Y)#gc_v=%HSh zG;n}5E4L(Ue1Wc~$mR^-IHvggdHyPF-MmZo%qeuJ>d>h!9jH9)pw_ow?oPCA+Z4-x z*+EUY6l>S)6!8D_{dQ`86|e>ZFm(eUQN7C9nq`-bd6@b2FF5|BHYjN10f-5x4?eCw zdOvY4>NUtjPHqHeoU(7Ud{ueRO7MD?;jkmypng%pw8P`}?$iK}J$n)AH_DfQhakh*gT)dNj09wb zg@q0fapVz4qJ8`J?lzP!20alWoNv;)^gB62TAi~7yV37#pKD8;rX7ZZEDZb)&aORC<7kBQ=jKp zVW4sXgx+&SU8uoJgQmtUT6+EZ^;!#y?f)fHvMLTZbu-RPOYn7!^8d32Y^v>Ay$39Q zg~w~l0A-{H;Tl`;e;ItU*|U@aa>tIHx?!TRn4F26O&2OV7zUky9n?^lVd0`hI+nnU z!9#|K7NRW*KhFL!9BZ1UoSep|55NX|_0^Zuf=^O$e~u&DFH=t1877 zxZ4ocM$n+%VVF4e19Um*802SU>;0q~RT}Do#ngWGK8WBSpl)tvVy#NPfwEnts9RW9 zp3c^Uq1)xd_EEQ10qS-tgr~m%aSKF)7`~sqnCG@HH}5O~m&;deU7@vbx#P4UJAeoN zXM%+N6v*(6sxx`M=x{`G0@$DuNEBD!OnX{Ey=(|LDMPysxdb8$jpKXL(hxDyCXYO3PYix{8rH6iGgQmRYVbMOxm{zx^D+Uk8VaK$IOJ+JBtWgO zZk}R(qm@w@KL;M1SF|q*`IWv?v0&Z?*mn-;m|uCqwyW!Z=;i>)0W+F{9R+S_`HjKl@P#W zI!>!~Ags@a1z8)Y!{~do?tOuA+cs^bMGqf7Tz2Li3`g8+uf1^7O*e`9{;PRGr%pww zW|PgdvH_>pfYbATsT{DH#hMvF;QKqan&#^G5_qM3Zs!f1mzS%bD=R9UmMbmT0iOdu z&-2+0zWnMdtX{QRKl35cP4)hJ?~BfIQgeEV5c(`&Id26PELZ?ofw3O4U1ep|7FU9R zQH?m?pz321;Fg)w0_!&C;-j&jA@Ds|w>BN(!v>&M|1~A_80y#CQ<=NsLOPF{`dmEr zL?67`|0VS5b3dkhJw=lLvSmv#`=>eBvTdt-tVBsWx2nJxL}LNRorN{4V#v#AD-UBQ z9Jub9dl%_#+5)3SO|nRL?tq_ZNdY&(+}Z0;x*gcIA%-u;E`b0i03CvMpq!NWUY+ta zM_?WBrx0us1@p7=N^roT`RMiJ5$N^I5$OHgG3fo|N$At}bhPi#7%<^TF9?7dG>+hi zqdH>Rmn-n|Pg}5MYcWB&rLJvORtAAEhO4@^=9tH`ABWygos7p`JPEz~9)ntSGZW)L z&1ztRoXrq(;_RY656j37xY2KeJZupGBuNCQl+x-kJgN+DzdQ?9Uwa%Leeo1L`1J9( ztb?QW+#uRZ`veNIAl*@%-R0gKHvii}9E)?#3^mWh+b;fAi);mx;c=X&6N3Xd!C$>@<7KXII# zT)6p&P4M8F%P$QIE#KmUVRO*9;1q7W&5>f?s9qefqo84N*wHQV&6k@*N1t|n2Wq`# zxaiE6820oEnzt-KEZBuU4}6YCdJo1wt~wT81dh^8Y;wsho{%DTUCedOeM$j*vzj$(W|@_T}({0qd+cwPo7N+K{pmdppni)l?Tpr&YX^a=aYPW&r2 ztf_#92*=OC*OS)c=IdU@rj2FTNT;e;WdwV+tw+$vMqX|P7R}#81|u#?I8c@===Gz) z^R>Pp9zofT08=I{MTRwmR%rX>g>fzgOe#XkB<(fNMVesAbb-3x;ex&8M!dQqMP=_=^c_!1D zNe)h{RM5^&*K=gys_WsV#<(%DyO;@KdtXzsz%aFY|}xV2t;?X{rSG0i8p zVgAqav2ejc-Pa+27u8H4msd3R0cpnsRXKHy8#hkJ(D6&D7fER=^Bn+iTxqhTrL_iv zxIVXtY?>Q;^_taUz?`x``?EZXjirI%bP4O^xuz-iEbHXE>dH8w1#sJalO z-2q^!X8(~xR4alpTWae@F@4>`Q~v$JzV8*SURRj(%TP?nU)Muf}+xQ2l=Nt>0# z>Ln6&V*?JOL4*a7JESZ_T4!t;2F;T4ZO@fe+qj>W9+XCVfII6t?&d?&u9 zz3Z75-o?Pdvr#MSIMmMWr0^PBReE|`t>^|Z4kw@18PmR6D(~Vtbu;id9k8Bw;YvLG z)D<}A(l&Us@0mFNlEcyK@k?;h-}ZsE<>Aaz3Dl44)zf11vnYcz&hIGA^7gJH@y@FY z@y2sM;mL=`(u+9YCYq;Zm_!;(DO}c*CbwVb`r07Jk6wh6PTLzU^;lNEhpTTq3X{hE zj6QdLg%R&9$McWQL9gzkfXYm1Mlb=|wr`ABd?%furepl4EA^fs_*xUyJsg-AovS*L zLI)n|J^}B&vH)*AKNnB-9)tGn_Ci6OT(s|)i%3=!&-9s&kpmYoyy$ys<*Ouo0-m~3 zP+H*EWgGBRuP-sQ{}MV%&BQN@i)rUQn4gaWfizUeA0i&$h@)G)(Kq$cH_GYY_cCiS}1j^@Kx;NPipXWXjgWsBucV3x~7oMDmj{6*d zq9%nfUbv*8v{gA(b?@FCuf6sfliwVyFd)XN)A6sP1AjV%wL-UU-4y;qsunN2@B;pE z`9I{LEZb=czYN#*-+zBmzO+N4%ZXiZ-udTAFsAphW5nof-a-J)>h@O7>>Dnjmz4u-LH@|C~dFGk&;C}3}#}uZ-up}t~VFxDKe>Kl* zufC?adi3le`!@YVv?lkI|HYa~a$rt{pB7cLNP1W4YB$}ZUQIpV|7j!jDe1MSs0r4s zUx)SVv9Uv!Qyx7H}kHhG~kn&98v*cEVyE z<9?^0GP)kM>a{{F;-k_lLo{x&otkk|dQ4}VDCyW7YROB{u&6PR<3kQPIhhD50<2!S z7Bf^#A_sGptis|YE3j(C7Szt`fEEpoAhp*Hv1o09v(^R=CZ#9z|7$&985i|Zx3Q0| zcN~PCcfW^AEL}`IGvGdPI!XE8w;leB1BELY+J1AHVe5UA~nC*ve)N=f0IAOrpwX^fyQF8@;EF4* zz~z@;t`Nc8oLm^s$jQqYiQ)HStnIc)Ly7lYBKcOQjHO`JGUF~}TK z!0Cz;a9(+8zxCEzV$h0;iWKrh##BG^e9)mo2TYkVMIb!uyII=1D16}f`7;ybvC-+(8WEi9Bg3nUs0|Q@4+H1nEIm1)-S~Rb8iNb2$tK9O)B9Ec zi?q#UgIY3g8{T|%3VxvguxINc#dVgIm!Ukq0+0NE?A-;J+(x!9aP_zYjvccdre#dt zGV_Km1RgCjdUKf}@L(A(Gcz;eGBY!yF?M2#9cTL0Pw7*iUVZAeW<2ir?$vP=O-rRx zsZ^@}p*rW4&#qRl;Sf`WDm2zEN8e@t0QU}4gYulxtQl68#Aq$7i}fWWAsG(hnusnH z2GDx^kobTvpuc78)qFA!U+-e)BAP6^XrF(BcdPU?~9~7UrWuQY0{o{KZ@V@jo$#awbV$`Mby4*qNJwB zJo+*29MU6c(zk{2%HZk#C>$=METY~fVFPgB={oClAN}Y@SJz&9Er~i**I`2r+pxdw z<9Ljxm^zx*l+WdOoR8meojL<-o6cv)v;DUjL}YVfIDWT1|5p4RH1!qDohgoZAl6`G}@DF$HVHxWy6$OG1;a*d?11J;W|Roy5*ay zjrTg$GL%$x+D0eU9<#})m!2VA4`AYc7+SEMCFw}pe;vOouTVuCW5#KaiD;;?7aXQTSWFqVAz zTM>ZTj7O@RH|}p<1nFAKd)Rk_<#z9=-!7b#tV7nG{K~a$98g8OPvEg^th%Xn<^V1o zJH&oG4wp&tr6z8IvHObJHB4orPlwu=e(SRk1~5r=Uya-CyU=#h|41Fqgh>D5(UE4&z9r(ZY)hAwLbJA5A`hJG}a1Q?iA!$ISe^cS}H>| zO!`!Y9oDi#5_CL=dV`wvH;%`#xQE}Zb3^=H0&`ra&VVCj|ASFXOzmJA=WHF<38P`r zc?wMo|mPxWdNO7t;;G~l7xIBT~@|CGPfXa?cp1lU0 z@x%)&LQ-@el7WMfhLHPInfup1{_fs|3aTG6Y0GKnq~#vxtxfk^+xUi?>z>E4hJgcV zw8^{xxxA)%5W;LD0LnNU5c2$v>4Ukr&$2+w0IhL-A?=?$#vT>BE_}X+#oF#6z@&QC z4t?kvV68wA!t*5U#w64)I_u8{p~khAHY9ZI3m(FI1E!8i5$R|=x^bM2Iqo?}uCGtn zdv0|FDx|~X_p3~pJd}!dI}qb+ke^a}qq`gL$JV-p&)Qn{S)dzHr>K7eEIR{KXsb%{ zt^L`b{#nWd_K{j`tiB5_xPXnB1U)n9v7m1z(T*oOZ}1Xa%impWz>80_6yO`{fP0#y z?O&gNqdG(9SMxwGsaj7+YTs?iKEq>lWo?V~j;y5wf;esVVE`4>P&1E#X0eJ8SBP=@ zrOdgLTvo1FVaY?1h;Pozkw&otkimkY+l<#pJ*qj^9c7O^11)I0pFgb+#(N!&a`dE`p8Z-+*e| z_F-Y4UKafwR`(1{04u-s0PXPVb}IBJ1AT3urBFK{ShN>W*~hw{SjK`!@H0k8{UbY` z<&jW7r|Ra5kun_bRpf1FRdivb_j6gu$m0x3*&g1CAns%gII6HF`Z4GLPE1EUW^HZ2 zx)f6cz_s;s)S)OFD!SHW45K!Qm<@PZe*NK6CETAq`1TaR*f}(ifPvi^$u7Ke=MEBX zVv0^rOAAg(PAg|6d+f(a!a_q*Pq(~A62Z~4swO%0hdPS{Y_d@|uk2mBc6SY+T1?EQ z-9R&^fJWKIm^uSIns6LvQ2dHAB%kuWZHZ0-c;amQXfJ;>az;osrK-<>e%MAj~%X;fh>7*MROirL#9*zH6{ShYDSGE_0a6Fi0)V~?1a(iOR zYfu-77daN-JD8*rnd{DRm9xyW7SCp2^aRxQ)C=y}g3mek+_Vn&3%L8_jI}T41Sa|N z&=V5!q-2NX{L)T?ye*a@y=cSoUX6OGty`v$C?rSxtTAdiM5!eQV7NmefT4_ zz4kfJc}{YMTO|oWvfF;Wy6*aGIWvloW{fU5#d4(5S&HgYMkC9Cc*r+QNdFHX?^e(2NE#vtoEg~fTBR1nt*!K#!a!FcT%mz)}6w$ zI#Li~3U1!B$1#!thM}8%w=tUzT0Q#*&GP=WwYKYX6!m2Qwsoi>u5F2DeH@Z?p)Y;u zOH;Vet;IJwXsYn@HfWdnryVW-1(4bo+u|vQg)Ht_-eVy?aK`VaKl!QZ=YIC*Qkp^G zF-P^1o?raMU(BYJfBu($u72&;f4w#N{lK<_6F(;{k*WX-ib-A|3*Wutqxo+N37D^n zY-|h8kfcAPVvN-ROT6G!y~ixV)^GwymIu2hY?$@5)9Xj9`!%Ur^P2|omt|NHR?Y%{ zp&+x@qlEqI*KLT9bIDWsOXBAOVgWQVj2#6oh5*C18V5c;R-Ic91@c z-|=^Rtg&v>ot1b*wYznD!g3eKBh}s* z{BBMmPKA0E_n5|~uA}UK`&O0lplGY#C25`RCa36jAof=e;K8#*&cs4rBz8L2z>T2CYtSuzoYJGhkzd9TvPeRv5K9gcc2vfsZV`Ub`(n)M5tl^1++=x zU0H{ETai>%0vQ;X5;)xRUiVDLBNf`xw#CQA^Vy)^uwf(b>`>z*mD%#HHTf?kRzKg; zkTLjC_1YQ=^A=DJWgtl13sX#F&(Tilr(h z`yJc1$5SoZUM6<%U;ou#=XM9k2o&>{H@_t_3ntCK`m4XHLo7-JAjv?Jl=u9=Gsx1q zfBW};%K`kID@puhQlr?%B1pMUXnW!%iCHds)35&OuZrGOx2KeN1`Unbawlu(sqi{82_fzwK>rs{@Ao;UE5CESZ`Z10dAn z{5_;JR4-8V4uUC(pd%uC0MkG$zkT>49|oX;gg8eE)^E9Oz6sY#Tw#ohLG8FQmSOrH zj5qi7&W#W6&2xU?i(jaI{}1YX%2GS(Gvo7EIl7Hv-*&8_ejc?0@N}oei7IGm5lb)V z`6_d;<;sU1rH>KuddAfmcy%1+6r%Esq=xnZ?Ynu8)fXv1#c~rNbufTV>jKXgooY#) zM$~1%0)Ng}J9h2}-Cjz}f2welS<#Ox=?M*)qdo}?R zY(ROu{=Ou&9|e4qBTr_~w}qz>T@ zef*C9`fvPtwPouTl4DasGpUOIYofJgJ0!B$7R-QQ3O2uFa}LIjOvu76{^_6nY0mtk zP2velF7VpdzE)Z~lXjMlOy0nSL>dyyd*1yX;S=>&Ihneyes;;?*%Dv>`qx)C+;D@u zxb*}dWTIwcH1Pum!76_8Cx6le-F)U|{kgxi0}zQOC1v2@TMyS6e%$AWe)xy#`d;&z z*9fsF@2xs(u#k|RZS#kI=!fce#hxq?gQN+c{NyLAHo}|$4t)o-)fau^ImKNT#~C<_ z*DShKfVp>QTwHb4RhS!nsekpg3{u)u1G=bnuX@$1*ek_v7M8LGa`!Rr#D0GEv!AWa z$_elR^s?j}8;a<6p2^r1j?y!TXDtbTfUM2E)J?MYY%s-~q#rRJ>N3uacXcU`*$|J~ zGwD~%f-FvQBXdIajKXMoZ_BGdBqumPu)o8E#4UWbyF93L= z7j(OqR(NoAPsUIB3NEv!+0ns62U8s6uhkqf+mLw9`_h26{+8qkh^tE4v@O+5yLTr^ zbcJ95f~}K~mk@+&@J*A`d}_yT5=wpVVRFb4cF?gd6y8_o-g$ZTeb+y*y5ECWRLfV3 zCA>dj;w@>vH=W;;wwuR$D()<%z~bOY-^0fA~jsvJ`srZX{mkjTO>^NlnaNp$jo@ivr#tQXx&*dFP#1w<*Z; zXuk+hCQp+&U;$Wv{nvk8w_T!uAN#Q%%WV&pYe}wmuI=8yL4VN-0LnL|l$#HJ@Pljc zLi+bRzw5>3!+ZOAf zHR_mvDwS9Q-__Oq?svb$Ile6cHb6PryqPrs19Z!ew27pUJh6v3>alcI zgne$PivzIo$rO6CPA=%bBAm@#vyP}mYt4d zOyUCk7vA?m*QE99XH?(&z27TTB5BB&j7fOGUc)AP42sB4k`{ymmGeNxH=s{2o&b%M zr3@y3wAQ4si^kRj`{r-$eZ<2bp>r`(5-8N*r7e4s28v`x%E$1k6N3UI0J7h0B!Pk@ zgr3Pe2GsG47$%Z?2t1cwdMQbfS{E2$J|t+sXk>daDH-U#{q1iDq%>62^)w*H6!R4@ z&#HCcC?(<*S6-2ypCoErVq`pTXiFlJoK3yP-YD3n@-zQm!qk8 z&;uWouh&TMZW=M-B;CO$f+SNv_N`h%R#6*g`Rsb=%QZJh* zg;xY_RO~?I#+^6Tj54JbM(81_Z zCzI&>Mu12=N!O&%xTj~-2IB%Vr4H|(ot>lz$T5J9>3il2{Q+nJp0O0bjH%XN%oS~< zUEX=~SuuIu>)sTe_Vl^aog>*ZFKDm!1hW&i_i!FnuIbJo7!MrWf4dj$NO;NzXJD(T0M@7Q52H!D97owkL5wGo9~9Ow!jY*tjTRAtnmBwEL1&0((tS^$MKXTr5NAvPy1ldRvO_n4sCyhejaX(nuv zs7V$e0*%tM7G3+}*OGpk->!cAOT$W^IMyiMbeFNTYwTqhPH(I*fC#CctQh1*Lmk} ze$$()Pks7RG%wW9z?hbR6s;`D5hE2$Mf4TsuhmoE7EFGSwqYb)XTvlEX_K)!mFC+S z!vZArOWco1C!F}0XsGZpkeCvtw?zpR@w3Q*&4#nKPDvfNYV|4~M*R^`-R#)DgTnU-E7HLvUGs>ZPNft(XhqKBlSYNw+16c~4XA7;LcnOUrm{4d zQY*{RO6}|YnIM5QyJ`?XW78z{Y}mLVChAgMn(1jzeHyi>dZ~&zfGG!La+{0=6aAXC zYlJjS=8e2jHBXGfb3h;OvGe{bb7!SXV#T|)p zjQXkEO`x@Hc)V;bC;)fg+~7(29HRL{?T*0b4SN#(U|d`0pR(J$HyZ0~=+`@0@^n`4Yg^|bm6 zm}989qy4uYx|K~D;OqAQO6R&rpHqLwF+d*A&bL6$VGNFEV4FAAd{ex_yHo4(s=<*| z(5M980$&Gt*;hyIYtUs1*}An6pgdHMGo_vkM2;AzC!3n&2fLDuXP;cMb)tronv;pi zEw9B32||usLt;-F#O%2XAE+anj7w>6lB`7H61mEUnT~Y_-}ZP}?Io9bq?L7du745b zb$?9yY;M$N?0Y6THY<{`=u7NhVYlSW#A%7=Gqtq|=lj0z`)V)Z7r*GmF=?APT5gxU zd@*O1caW|*=omjO+K3Fq_OWTl)Um++2oPWXikI_v&XXqwk<=|6-%DTi((1kMdvEmz zfA|O0wbxzid4Olw`*;Df&+?3A_vWyro}BNxyeDTPDrmrKX$ml*uGd$z23K5h1?k0o zOv>tKJLM&d0m%+(x$j2P12ROp*vhi@>g0q45O}TAJZK}eFD7PEKYAW*<-1`SkjzF+ zkdJ?{Jjy<#cIsEpOZ^TE_z$pq8zWTEm~M3%NBY5%9eoyU9G)=r{%Wvw&70o*CQJ-z zm^L8?0hvV18XTtH`L1_XKm9X5%|VJ6vUeZtKias~F)lHXZ0sDZXc>%ss&vop{Tc^6 z)qPJGkziVEOR)~PQzd{m?_JX&R1aIy(S;YY1@%jiX5xrNwdVtq3ea}&P~z<852u9g z`vEH3tn)G^;f8Nd;GY6?_#l0-TeoeqS6fTI&uS_yKV^Ad_^xhskSN$GPfG2=fto-T zMUh2s;`x@fzJqQ+nYRx2p0X{;00*|zx1=@`i3t`MQ=2)~TvsbV12vzW2S= zul(|_RF8dJ9gu)TNP1}oy+FW=q(ckhxU_1dG2W%Xyi?+a@>ogXjPq^Z_H7)=*x;ID zi9Oh|5t2Pk8_!x`z%ePel@0vLE3X7zmaCX#N!9wNb+V?~1gthHX4g|Y16}HK^hl)Ii7`s z7C_35Rc++B=eN;RU{WI1dT2so^IZ!o>YbwX8`kr-2JnDLpIGjsFG-@lOMT52u5a`e z2FLmOoq4W{F1!fiSA!Zg{)=ApBFq3suIQguVw%wJ>N73@qi5w85M!4ltsk|$`9bQl zu*f}*Kqu5$uQ+R zi2IW6+x2~;?!O~DW|Kla{O5o1=gB;?yt@2bF3){sSs3sjonCa&MbjpK&T^RRc>d0W zDcO1BPU8ZD?E27N#CsymQtt!A@_dvb89T?G9jf=%c5)cRBvC}c6A0s6Rm!rS<} zd-?Ew_nar3ctSJK2(6B1b8azAvbtzTHYbh6@A(;9dcIMTuG`WP0{s!q!;u1X3@6!t zo8UV|rya|XMqmAEC)L)XAENg1#P zsmaP@&c23&PTs0JsgkMCI=SsrVV}C{RJLWoKHN8{y-%$FzIkkWc8^ZfA-eJmqAwrs zk)1r8&~SsMLf+ zf08Eci*eKRcxT5B2B#B47k_Wuu(5fsu7=L|yK{MUW3QwYM{KvrnVIwtf9!;^5mwpa>~ zyq9+;Rn~ISRPDSafy1E$s-5p2>-Pp(1qmGLB~m+g-7dw55xw-(9UNy?w{AFk)pVzP z!Lf|PM7fv+g(2-OB~fSd@US@?Y&v769M!ZyCwvRMgPGExXmi0#EK$y7 zYHVuxiN(`+A0>>O78^SM9(LsW;#d=WsTgnpgO=|g8tuvZl!P-Lgy=v5U42cum1qG6 z%N~3f2;ORW$8AaFynnnL_;Zz&Zox-Q3f=VQ2H6~>I|Sl%-#o(8@M_;&Wm9JWiolcnNLA~*=fvCbTP zd&Gt>s ztTNNpHxqHf>S_TjK$nx@Aem!YrQo@xWZa|D`8#|aa8Cetd-8Pl9c)ja`o%ANk)+F> zTYD(8)w0K~NUE^4>()^h3ZBAIi&KUVh_eMXG8^tVd(N=k_IvnnBn*&#Fl<&-+azdF zxzgXul4|?l(yOI^}f7*~F|BmP#;rFYcs{riKQ@dA%d) z`0(Kz3_om;fSRXZ23TDF$;tk_XYU^BZR+V-4R=h1j@~R^rPOeDvidMfivTP7vMZb_w&R5u%1y98WjKOS$DpZ4^p)fsk-vz~gIH3j%~NyN|v zL+3gK;All~A@U|x8aCiK(1Y+%+0c$Aas^v2P$k*UM@YL=FOW5<8c=K3txanLPa&nI zaFk~y74?3XT2N1FCMlCnhvbVmez{k8J%=+6hpl5vJqX9PM7A&MaA`5_5CG=z zB5IVSOc((n9WCb(bV1vC>S+cOSpC9@Pg# zw^DXu3PQGD(n_pLWnYeTh=?>T9&}HW!A8&ophCK1r$0j4JwXOqLn4+G$KyI=OvEwo zt!PVZG5JJ2n7P*bsKaoyjvR9r$C~G(PHJsF2T_mfoR7Mj$ryw`!~h6uD8R#Y*IieK zR21-muR>2f-N7`PV#1Alz@x4JJc@mbD!N^y{%W{pw>V$ex>7#@r?7AjO=0t{q%LMl zFi8T?aWt_2;n9Ks*cDQM2{HMllq1#T$P?KF4|Gj#u^a;6l4K=Oa2ya&IfwmYC=h)M z2x|oi8b~|sI%;mDZflW&@BFA&flLcxLOm};qcxNw_XsU0i%S3!DNx{iAqMYp_j}ad z?QBwFIeULpwZaU_0)*l^ApuE_yws_2Nspmj5uT7wfZVS^;wQ_xB>GVRCx%dHiJ@qsrt&+%UgGHnrjC{a@?l$1qx5t9^5tWsV+NvFd`m`lh zZ#(q>{3n0%$JLIVJE~_s^I0iM&&KL6QvmbG^;%W-qk6*qFBe^;{20)vl?VFZ3sD1bMe7F9p zV+PA)^THRtunwv(gNt#1d6G0iOj~h*m665hr7wM{B=#aZ0XA`P^SH6ZOnh7c9{}9L zANFw4qx)n~H$FtH0;m8H0Ly$M?4b9q9)RngE(EV`WlBv(fI^yT96(0C#`dqzdHW%$wQ3BMqlZP5Qur8Zz>q z7Vp*IJdso#*qXq2S1K1di|gE{7y$`ugnYDLUUtmlCq5(i4VMg;|60# zx&_W8a?b+Pg=5ThUUKmzvhUO&?R+yX@vC0_s`}aG6@JO)m&{}xZ%_U5zN1k~2Q4@d zMg_ z66nDB-Memgq}eEIi-~LB?XLCe;uxh3d&4f5+F|l^o~_Q>;22Ym-PQ;vshsCHl+qm< ztinznP6GhIlhFNEA8DpNkwZ_B^Ob}OJSE=;gjC8*1> z1@&i31&*RFQAcx_BtEKUmYDM_`@U-*-6GhGe*3hv(wCBAt%RnUO;U^ z4@V&9{f=Cz!GkRu4lxWse7x>^;20;YY%dE{veH$WOfZiMbzo zng#XXJ1MU=4OFZMTC8L-Ttpt=LAChc^nFOm!t?oE?|fG?(~GU)#AXx14$z6`yrBl> ze|!DElP;C*gkI`GCNWY7^>Q5JfJ5?S7be-LH}oKpS!Q4x%vtN}T#Pk412cY;bO1T& zEGF5Qc*#I{ZS$xx4s7T@I|hIJ;~%d*ec698S;hqE(J_75g-Dz_l=nO}E6jh4v(3x>sLZ|F=RD^*At`G!FKxaD#zmQt28k6;>X$5^ z4cR$k1&GrCU>dTQw#iN+gD`{iG-K)|;BpCyZ!2qTjzFWx2Rt2sCuU<5;p6|Y_Z2{v z6j{3`Z#NBN-NTNcGlR2&yZku6AnR_(y36lw__|x{TNhYYoM*7X8ny~MEY3Q^DAO}c z*LmkVQC~#HiQ5^;z0+BW1Cl8uU;rz4u3EWDG%H!ix}#7XBZspWRG6Xf{GdyX zJMXkJd9dg|z!I7i6j{eHmw@lN=N?GKC{B;Q>ID499&@Zqz;OOTk$ZSb(Bb z(PJQ2HV325zOt{%2`h#m8Te}XA{`BrY7cf_ylen!D0hX7KhJyq^V}JS8G-y|WZ>vh zWK$dE72`qG0o=Wmr(Cs%a3n|__>7kwKEpAqEmyb!TPDOl}ZS zt{mHnFFo-s?TD#uJ#Srf(z0Ea0SsY}g~zhjjfL|Rz>Lo~#^|c}7RU2AV0aEg4GnK+ zm^b2IIe1#g+u=TLpMCbh_kXjISv0h8{Z~o?Q{I|&8EgZuxyX-Q*2JgS4j3kQIjMrR0}njV)ocK$qmMpXuKmB)LWSrrB}s0J zL(v0IC8-Tn)Q@;Ihuq8nN|U75A>;}6K7cyr0UI$wJ@_&w(6ZiaxpbRL!XmS+;6DhV zMPpgs|tj zl$n3e08!Xdk2>n8_`Uh@OD?%YuD<$eI@`Gf`}MDX9pOmubSA(dt{8KG6wQL{I2WN! zuvhbU0X4Ue{qToAEbn^PyX5=d|GvEQo$sV78^DZtdYrJRcWul_kl)&BVqp%bR{au#s z^g>fJeJD9dD3eEo8Fd6u0~g=d!UzcI_&a;CEnj{+Bw@1+{#35D*h*1xN#Tei zkC3l?`744B0%WbqgfIG~OP5&j{nY?-uI``~q*pYYrXcb9zT0mb2T*@m`@S~Tax;Va z{?^;LXSSW=IiHh=r;f0PN0M$i$_+kyvRb{~6#|u8Q`M zDV|GG{A*)|JF2tUbKCEDETK$o%2iig|g!$4`_q0QCpu{GG`UWm~X|*8SbEBlF)&J#_@Y^(T1${rAfO2Oj8B3xMy6E3a^e z7>~Jy3Rp!(d%dADvQT1Pvt}(4HDDhpB4Ous$+kD*QZ4`)PFRfb1+ct{4pFbfZ$@{iC1>#RMT1LR(L+1o7*2Ga zni`ohX&Uj(ezIh3Q0i!A)VCdV)REeIa0(v`d?T=?2(rWEg4PJa)n3pYt`0~j&LKd-aWF8(g zZ|=CrKvg=TM>3?*-^00z_TM&LJ)>&sEji4o*e>xUB8K4P4cj#QW;7Krq+PG<4&C)tcIfx=I7*aW;@V54B4^CTs zOLGBWbCo#f=J(dd6Z@Ft9@FlG^&kKK@9x5{)k@x;x1^iN?w&PL*bfwsu}^ben|YC- z(oshpZE^5rCAXU|zWCz5u_|1f0^n*TW=gdRdVsQod2AHjv(-#|Y3b5wUV5Dxx>&FG z2S5CQ{Mc;2^C!lUHy0IP2*52!d$`bMN$Sa1;*A?0M*e04TGne#Ik4iCkY14BoA;^L z4hF18^1g%_W1KqJ&mEsIN34~Wi2r4B&N=7GamOETAicFXYsvXjqVDH#*ei&~@pu#F z)E-xMH1+CLUMrqeUx|BoweX)3@0q8LI$~;9O1*0B8hZ!7>dZ6GTv1FXSrIujFaTH9 z14dwS>VK>Q;W~0-KayWS0)@9Ql4HONIX?wbDhejFs$LnAoCmy|-3IJ7-_agCmSNL{ z{Uguc3u)MG#wox|4%U!zF@_)wf*Kq9i2s!YZ|`kTatXen%OW0GKhed|XeKg6KU2nm{1#V-Xdf1D}3s@r; z_I~?4Np{$A2f6FcyXEJ%{){$pJGPajd)(a?OTU-xx7*$q7q?jY&}K?S2gaVMX~4fX zq@z^BHazb*uAXH)Z zEE4C;?-KK6pHxzQe*8`38LZeBi05Dulji$!m*wNX)*?@SVrt{{eX~9WfGvdIYSv%O zc|Kb5>WaV|_ahN}wab7vm`b>n9)J1E+w+Gld+)Wk9B=W#b1fz0c024SFMHX`JY4DW z%Pw>99F%aaMiuI30IvgAtY$+(C=t%LUus;HWuUD-hPGN9_2v(}fgA^H>qE!KISxW86@D%ThEe-5Jt)kce;enNJHqDP( z`cp82X~Va3=g!saV$h=Kym|9{AB(v7a3&@ukkO6%mO*a5zoZ{DEzC0|w-~WIEh^EUjWlJzy23%dxO`86euX+cIypu+PD$H^lV<|Nb3JDf|<<+dQ% zX<3Mi=av^3acq3ng?q{O0lwIv<}^%t@w{5_jpqP-Yuqh!@YON^7wT~`3l?0ghoTOA zt6x_8JZT^K#V?k7l_K=5U%$~*(hqrdsSyJ-yi8oR+g2JHv_>km$pqCB3*~wJ(o!Nk zsV4wCNGb+w>(JZIO@U>;O^wf&b&wrAeIV||&+kd&pFye3s5R!&@75;GPByeli&t?{ z+wXC1Z6&A4$@MlaiC1p|V7JdmwXv;AW76q{jhkq*HgH{pm$&sz%Ds2r?Tekp7a=M~ z9Db;rcIqjzZq-Bb+0R@o>(@<+sL#t(&f8gz><8tnGtZD^OP0!7E0S@>i(h0VB(KA2 zrv1Su--KU&?Cbv?(_R>Wrg3a`z7*b38Vull0-OgTjhCwD9nYg(K0VZ|6QR`G81NE& zDe)47H3MGa552#;4t&)SYjVJ=#5 zJ_z^I=h}S?{jHQK;h6Kbu?@!Z+=@j-X;G7Zj&m*AW3xHLV~U#Vrh2ZDiVM$Or^%V2 zWyg;Iz{x0_0ICIFj_GJfI>4mdd+xcXjn8!;lTEFs@z!HwBFQCIg3%B}sZ`-z4FE$I z!Q8I_klcNbJ?$m9#!L*qZtEA1M1F6(10!0y6K<=bv1wyV2$%zuS0b} z25#ZAv=T4I;2Z|U18GU%LmM;B9~<3@;YB`gfclhO1M?^NAOs33d(0p9+p)1x2kP}U zXYg6M@ZvEM<&VS6jwRhWXHPhLR{g#U^@bf zmJ=oDMhV&~BmiwDaU0M-OdxiN7h4rYt>MgJLNN}<@WMsTY9G^BBiWvNRx>%s>{+v^ zW|YP~xo2Uq0_oWR7EWf#dC#%?fsM9lHrc{rcRW+)_G|k?MAavd;k3N=)vq=i*tj3N z?9y+GxCEVK>5`pI`dut1pM0{cT(!bg+Gm{cVw@%yUG!GJMzp~AUM>w&U0(C|t=W00 zEm)xi4V-5EsR_Jh5P&xeZ&jHC^)m+vK{sbcX;+Pssht~s@2zTCDUlIeLG=<6av3aA z_yC~4lC&V@fu9(^YA2mOV{5>a{D!7D-@-NH+>{Fj?#KDp+hWT7aeM_2G=Oj3H}vPK zzCwQl;1p9()=R+Ui+1G*>+Qg^X3b*3dpYu`Bi%;%xzBx$-pYQg(W%WIc#iE@ZwzG# z0lok?D-3a(Rcc!7Ud;de&;KN+pMILW>s{}X+pMSpLzPlCckD2pj+wT2jGo&7*Qv(A z-W|XI=osq2sD3_y)S5!A3=X-}-zE-G&Kuy#>-Yi&fC~u<*THA>1MpRlQyY@+EG#&j z#i}){4ZK%5z5!&9J?>cft5g00X*Hd0Uw)f|^0H-1#ilGzc>JC=cBAaNbQjrYzkRSU zfQLH1w{}WBVR>y$8F-RH%FS#)fGxJwHe8OYsErbMU=Ac+_m4u!CEvN?q-({gF^Lxw z!gs6$V7AuThBiNq_P!wblGG%jgqLvvR3Z(k0R)(*7$s8skU1BQEfA&1p|z6n{!LA* zCMg#A#Q9Y`OC3_9s++M-3#JDhR;^T&fP?Lq6G`QO;!YBtK?HVBT^2q#=%9n-OJDjD zKBFHX2JnG8bwO7=CtdB;26?hZ#^|N7S>l1r8Z z3*!K`t(x1_(EwP#4vC*#whOVxOlQe$5@rKa2iXmcN@D;{PiX~jNe-+JJ?v^_@@J_< zEE*sg!}bequ6BlJHypB(;+`kWsp@$K(jyFQvZ_=&$&#ISbanW##~$Z#)8q5z%3gc# zCEvO3J2GePJUQghLv2pmwDTwlN0DOx;3Y=uwQ{M>33bbpn&H<~&+|kSZH+Z7uJRje zy_psEM*?pVaI<~d{HTW9%%ml7tPRoR9CNA~TUJpIKtW9#C_K;Dw>iv`I^ZHmW0I&y z19(5jj8_Vb9CqHLA&x89fGcPhQMpTc0@@D06zQmv0H&}(?z-zP7BaEgf3ys_!4?g` zfFCq~?5R(EihTFG-*xbzs&;eJ3>tAnn z&xJ0TJ9xoPJw>1tpC4p&*p(Tgl>C6wd8}2ZXSuN1N5D)DnvCsjk58GTIom>&Hu||F z2VUDB>CwSUeLNVGpO;3oad76riX9pSys+=R_g?3PyFT%R6J__^c6ENqdO!yraFG1w zH@}g?4nItOZQK3!-A}gLetQc8yVPQ~uav+0yT6yDNq+ac-{qd=xw^b8byiW3po^6w zR30-F?g!xOG!Hj15Bg{KaBl6q^gzymHO=Y1$Wj?O2WD z`+)?d&5Zwa4p(IfuK+>=ggnJDX`1JmtWV=y;(f&a0iJnP*7*3{6dckDz+BD}iIRiX zBn!+gCf~?;_M#*b3JaHu@q_N-&2->9h_t!e?z_n`#~v%sde*b#2^Lcd&t7;x1B6Az zrOdtd+RJl8|HzU&pp+lJ%$Xp@1H+MM!Ggzmc+E%}aj7%T9k$e0y!_>I-nr+=0sHUo zQYDB}gGv^k89GFjI<_n@!HiefCjQH%a=Mus<6vKzdm$F+Hr|;S3;-azGNO z_qTxuGbV)RjC7yik6m}VdGeE=V)wGOfH5X zZ}fVO`JN;AmhhDyO51+t#m{j}Z|Twl2^X+74q_zzEpaNK#2(} zb%1^y0^>RhJ9_)u-XT|AbB*Vgb{lXDfB;Zt_(~cx4MpNHZ8Kd7oz4KP1ZAemgw2?e zGmgW9nZ+MkiP$}%aop^L3;g)*29_AK-lX3(YuC89xwfHCPk-vuF3wkSOo04o73zynm`S3w*bKG&T;01b8Tk5rQ8wYXn;o&}!ZlZ+3~8QxKT9Pv>B?` zrwn;=`{TwP4A;yYIC$otx9^^`P;&S+B~0s?c+vl+&0GZFaG>wR(^8c z^uWbJ=$E!Qg5CRn8TbN}&$Rg8lk9w`$S=O+61n{H%Nc6*C~%8N<@V?$O>0vF@MUrh z^ugmfcectMu?%<#zS>H3kboPgLGiM-t$)r^3i4b~)9wrV_Sj<&YzYPtoHe$Rw1n%o zJjjQ9c^x)_biZqmlyfJa@?84PofOZF`*D2a(-h_!KgSm5!~4NAz;hw*$OGSJkvE@_ z@hD2O6{NYXH;iS!MEZ~a_z#sp;rANm5dfGd4(6q|2vTw7l>fk;rs_)Obrp~r#MdIF zq!p?EDuVG5BkNhGlEjpdXfyd-nQvK4-TgH4eBPnGj?ctfEZYZ|LQ9RBQ_{GH?ws}F zGiC1V*)CO%_D1|z59fz_XH%ukH!pSXHeX!dfOyQEtVnP`L!u8)#G%^81ZQ!{))<;J z((=T3NW~Kq<499!Hs5>Xfd^K&MBHnQ);pON0=cN+I7Vl$UK)`#tJj*ncL&+l9DWv= z>iWQg4wg5(>CIL^;uPom)vtb4KKjv*I{0=p#Dan4CdZQoFK4Kq8++CbY`&0c8RlZ& zDRXyftKy}UOHdOuo>KsahTGe3zdhdvHDN!F@z3^7)D~2m&_H>=+PSz+1Rx&QypgAE zBLJ2F57&r1;+(lJ`ML2p8|P7)L!p5Pj2zbl{{9U3{HM9Mrg-g^z$5fkEeKFhKla7M z8d*PuRl&BTepc0KTQ9uK6AjGMfG|^WNiFroijLa2)+PrfuL-=TCHG&tbeR0oXh2u%q$X1c}xF_yOlZTkol+O1AvN&I|XdNkx0` z`)=gmgAS3i&pKP){N}%wH@xAEa>yZvy5re<-}7F1=eyp``3OkSQr4uS+5*k$nXo+6 zNLssZd{Gj7A^AeGbsI0hm$pRPQgTB+=_ui90GynnU;z+AtFbTQoe0g0R-`p->|EvN z5^sVDw}EE~WPCn69>+#W*w5v2$tZvtpG7H|NCaq7gRz`PSSXNx6R$mNVvNG)NHN?t zO2MV?lWOOZ^gC@E%~3lbe>^}(EEeUbji6MJzYqu9Q7^OYf{Jl!Uv$9&89!i9*FGg@Gov`3j&1c0pV}d__RFI<4?=i-ntqc3&8O8Q~{NtVX{D}#< z^Nu@xtZ4G@V9eC!`|PuicpmB&I9aq{r=9EtzidhCmAw_JIk`IeeeZw2+;r1Tapfyo zc2NHRhN%7@mehea35e{NRua-K8k0LPsRLt9GvK9!MX(|$I;dcqfoih9B`pgUaX-HM zoKm~5?8o`_YR~$Z(@4c}Wzu*r?BhG8aGdv7Ydei&HRBumNm|02cwRg<-J%NLcf6NK zH6G8QxB?_#R<9cPZ=p9$j8n4K&$|aVjQz|o9s{o<@=He*e+R(lTqp^qeq=`;b<4Q#oPNKt~&)zzTcv*+MBLi)vv8^`?G zoY#&f8E?P+_F1XLrUlYQM#e^{9(RfS$3Ob9oPYlL^1~nep!HPO;8WCcz&4YJJ1XQO z2MD*#>M1BeSY(9|eCcS#^oJSvDpk$|Uw|%Jl&1K?&tKXlTW(ZI@+HnjKECDo8I|mw zIJe}58zWA5e%Zsfp5na(V8p#uc?O4hmhOpsYiz<{9{DjoJKjSXMEQLO($=;c`}*-> z%fUBhW*Z3Dr%l8`#4jbLr6WK`n=dB#7q|UFb~T{5@x~kF=9_PEHRqv+9*Q54tJ=oL z=gEo(SHy6_&366ck2_9ww(EFGN=oLwiNS|yT06A&x4^c*JdfXE;X0rA#K+~5OTH+R zEg-^Ed9`s%CXe|+p?zCdD$Lwa~SVV58IA4@b! zM@91IjjBN6-wX>Tm@lS$*Vw0u!A}hEdxy9e*2l{vLD;( zoXZ*SD48bAInFho%aD?AvKHsg>+#;>LL}T{p@E^$C!zI?fR z?;>`%{{k`%oqrlJt&F2B5at3YvuNL@bcv)FuQunbH@xu;?x>~e5-=rDt|7g}V(Rb? z2S`UvK?Zr)!u}ktEmT+Iz7WEK`pI}{BNuh+Y(|M&T>ZQaZ0^~k_ zbluN6i}$3Ff3)LrT)rQr-Uz|OEuZ}4C!tyeU_%PSOUbuzJc8s0+OPqYjYg~DfPGI@PCDrXIq#fvT{6u}4k|u} zF`xhZ=gn#96qztPT?F1pism+7mH+j>{HXIi(_{zbbz5{2}il@|=n1 z9Qns<=-|Qi!;k5OmuHQ4SP~<;#b@B#(Xdp=f^zrWcLQk6IqP}ycylO1cC1qj1fTny z=XlI8K<7ZSw?6IZPsf7EtNf@|=%Q5J`Qq#|&xEbDPr?1LbYduwc@mT81zfrg?8?Vk zk%Rv>kVnQZ04hPUpDoyvY9vppkylspBpebzFi)onJ2`Veqpe-L&J%_F)>249^3AV> zvV@2!UbtY9kIm5&yX)6ax*hx5-};tJqRgU7F0sc%5;07xqX80f;A^yEM&4*!Lt>4P zjfqa6?04|Rmf%atDS~fK(bR_hB5};j11;L{*QQiiz8|#W@$&h_YZt(`$P@d4N03(Q z3EwMPl)4#8RGU=2Cj3)FD^pBG8LA<18x8Jsc8C}5Xa;HHh7DE@@KaWM_PcW6fd^Vq zfMY#B@d7iF0YDcoS}X@!jOumQUWfFG0OBg0!<2#Pseg5f?7i3C(jaS;|0q9+%Ak%h8P!VbZiXLaSp6)d|ppJ z_R){YH^2T(%!4KZoHm0=Ejkc3;3d)H*;7j*D5T0XujfmqUiw%A`o1QD=9a z8MEqWVb#Ex;OIFAl@A<)Yy}EOEUZc)30H*rbs+gJVr!$u~OKSgUnz;+TGY zRXITmrSUkI$gB7{&L`g|ziBAmcRnWdNkmb6mhsy0o(sqG#e`17OABMFzM~L6#Lq0I zFq4a|vI;s*v=lE#=fmoJ+B%%f&{1*+DHSmg9Ce`i+~+SgHR>#vjIaC7bvVVpOL+V4 zz4zW!PrF1(O57&(_}FE;F7-UmX@vD_siJkDg(Dd3r!1b}FGP3(gPeQOv?7reD zCi99$%&FX_D`Y=`wgLDCk7P<}QXnlj;*g3VGyPud1XTTRYz$Q)@a~LQa zRJ{3V?xpD2A3-+Gb(*nS<~?{;tGd2=faLrN^BnRT^?**s?XTqU(Y*v8lPvYgMVUK|2avfckmj}hiG z$(b|mcvCYa_n3p52&GxC#|-;pm^;Vy`b;oMN1KfRyr~3^Ncq@ixe^dN}wRYZL%-Bv)# zKs$T^-XsN=td52!*nVxJ0AZLqa)RWG7P1@>g!#^5SW*J;(#aAmns0X8n|Zuoa$#jBYY$9&b$*=nNmd`S3a8^d^^(Y*|M5Y|1TmQ z;~0giZ^1%&%2S`}Qe$#{@pYl(6%PO`;p~Nw57=)90$;@aZkXI4U-;seyx=|5&{U(R zKHkcyEuf!srA<2ZQd>6BRmzaq0ivx9Spm>RrTAU<-0gPaIj}{i9+Gvy{tf1Y+V&nB z`Y~X`&m9d{gdr?ppm{*(kz}6FFqhm1rz-++UQ3p?U#OoG02pA&ME`WMvA$tm{NNc? zswF`U3UG;T(z7f?S9>2kk?zTA!& znllJNnmpiu{jKir;sL8BjX(vB&>l*c1E`@P!Td~q^3$Jq2}S^4EpZ`%4RcSEm^@>} z11qY3xcA?8zx?)hzvJS>vv+MhHpagTZo8nnEkcXhAIf&Z_}}~NAI!gq`;F!1;FA)) zo5PDf1qpM;!0pk%Q&qS8*!l&`mUu24P~%J&0h+PrXj_DOK{Zjnv056DM=^CYy46

Qu#*6Fj=JRFVlcVW_4vkLXPn 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 diff --git a/app/javascript/images/mailer-new/welcome/feature_control.png b/app/javascript/images/mailer-new/welcome/feature_control.png deleted file mode 100644 index 1afb6c238caa18cdb35d3ce9e500742de2e370ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 90297 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

7Qe96H^@(Rka~TF^KYM%o zaq03^F4jqeBW2LT5x@w+7C4~$;%_C^_oS_8k7c2*T?Mw9%LuqF%`IROI4-QS0<*KT z1gK7SnCnW_331fKl?ur%19$Hk5=zjc>s+ z(bSwqZ(pBin`xRT7ERF)b#+R;TLCY}Pm;QVBw$-;vqLv9HZhF0j%E}c3zlQcxe)Y~ zq(tHJiV;Kal!_$v>;zik2sE9Y60+fk=aZ)>xcBUz#f$JwKOBR%wOHky7xzvK{r|}U zYdHV>SI}8;1~u*elQy*WmWTUt$E+(6D8s;84bv0{rC37w2}GEdqajh1!mUp}#=-M# z5INA$+KTM>7~)|AYq!6EE|ygP%8D(yX(MC=MgSZS2ID}m(Y26>w{1^wwMsPQDK1Wl z_29yD`0Tk7RPy-CUq1%n07jU=9o^y4ckc7(WCKdsYMVmgCqZs0SQdDMo-h9<|w5geuv zL5lu`1khQY;irqD4Bdc_Qvd?TWphJftd!@YM52nIFoEZLf5ee_C{R|4wZ)i_i)R_; zFS!l_bxvt}sI70rgKyXI=|69Y?}|lXnnh6uTp^}rc9K}xi-8t_5}}K_e67^Vswyll zUc;|`^-Dw|5x6DxiCrn4wu&~}|6K_S>k6ivQmlc_1PJqjjyx8z`F=Y5%imA?P>{wk@&Zg)MgUoe zd0oj-G8f~(`boO#j5<;X32RM%{_`K8dtumC2%dfdxM7h7=wh=6vAHru-|V6;T;++o z!N>zH5Q~N7@JHl#sQdLpXMHv-rvSK`Uykkka^-VG!V!PWML8RuobxQte*1IRAwd(< zPR?1Oh{>p;II__Z^ULX{AYEipC23KBCo}@od>a?Bg(Xx} z*P^p;2vwx`FN01$XO(;^^ud#-+t&jOXT%BA084 zG(z}k=m22((eWu%*ESM_C(t`E!g4Vbm>x^kU}E+%E?vEbO!fjCJq8;w`2&^tU1L}GB@Z$|PqP~Vis zm8;8`U%H8wu0GZiM!_}^D^Fo`ViwnL{2Vz-AdKmKDg;XkWF_el?v$Jz(Nw=b-qZ=15=E$ig5Q&x{$N2YdypQ>X zMbyI+el# z>$-X41N3G4e2Itz<>uBFEM2>X8#ix~TkB<9pyf_h(@iBoLB@M}~zd z)|%RCWcoW`gj@oqg_e$5EM1?$;ZJUV3HI8{Vk~ImI z^#o7}YfaLK21}x+x1Hlu?YC!$oOPxN^NV9xSQ=$rG4>^dnYm$He{Y6uZ-a{hVsQ@> z(-}0kSK?xBl>M4R|6nVOh;N3`WuH?GFTP5f91=0w*dTLp(CED%jMKm#Oc0P;TlD^1xV# zBSXb82gXH2nxoPKD^|*ANTAK_oKbRn9XXPMIJgkfj<@;fy8fp6G@1(EakxJM0RA6) z&CtH*J>ati1=y-Tq@r*KcfKuXb@c*}iVtwXoPcd&d*cyI7>FmE5KW{B64&7wQGEIJ zH_*69Us+m4q`V51wN045vWU&SeSCiBE~@I%=p7ozVZlXxb2r8(XR-C{1@7EiL+Uhd z?lM5IE2|{H8id z(@bmRcpV-W@nGW#PKq`*x3;jew=cN$OIH@qO0o3n*SGQF;1HA3IkXa-^QH;YDvJJ6 z98b=74SO$MVCVUBJluFBfOh`sA`%r z%U4ih=>7czVH%as!gn>#lKpc|Lq}g<7MqWrU}Iwwa|HL!&JNaLq9@aXsi`TU-GArK z9b~gvjE#*cH<><{27`HR#*ZRi7H6HdII|uc8bbc$gktUlfw)oRPdBGAGc%3HPd4!F zgL~XqwDR2<*pA8ZXh3;+l>M+!EAF%p$g zOihpC=;RevS65J#Ot9>*;M&U*1{xZx#F$0mVPuCok#0$GeAcmlxQq6#X1;R}+t0Vy zj&+Li+mY$%5cykL(#Yi|IR{>1ZGDa98c~sq%khA+wk7+hfcK0KVlR01^A$<*p0aHT zQumWzPsKB2`{HzAEz3U=;tSvA4EVpj)9a~FN-Vv1SB`#!N?333rJZ*V7+kCv|NW6( zlLubPX08S=_~)J9B`g>gr(jtPoIgkx1)=$mk20)PAGXRwMV1hOss4Z zy1E(#i)F$QZ0+pe#WMoN(+!lz%McA2$dJR?-~xE>i_ZkKzu3Hs#>O;4;(CFB=evg# zlYWk)qeDcZArt|Uyt-l-1d@H+`s@>!`6E1f`~;VmZlEUJjzhDER7)E^{?qTVx4Q#8 zVSjaKmX}Z5lgJV zaXcY5{Ku!C;+TNxu02M5x(ziH59^UAqU2uw@X_yCC)0G+380?$M(r|BtgIXZ14G!{+=d4Oce%m&+u#2V*YUXrO==>a|%ylTQiC4-pQ>kgBUDfTj?RaKZ2H#5V-quQ|4^2LfsyQx~VPvT_?ICl&zz ztb6_8IxY-n|IOZ&^+t7`;rA?aX0vDU3K*~mWFaAOKq-`vwPaCJvJjaR$z+DdJeR!xD{^ss8e_gFo3;#MK9=N*u_?4U z!C2HxrdJlh_}LK$;Cex>ez_=hFmS8I1!x)e0&J6bA6$9wy$`A4cHJ`j^VrC4aU7dY zTViHYYt;DBoh%kK^!m5RRCp_Y9sizc`Yr_EF#M?V`v$2bd2QWPl;4GsLa%+DSRp)1M+V~? zy5iC9Wa)TN9ZM@BPIp2q5vf&5GLVI&+na%-)?pF=+Ym}F5rDwV!VS3!>F60q!KG43 zW&j{pFMTF{vq{INLMczF1NJbMb?qt$gG5+&y{?>Q_|bV^*$zFP`FtMN>-ye0C9q^N zA*obax_bKL5LBl1T1BFcEs>}r`2d_O8w3(W*09(g8-Kx7b4)m)rbQ0htyY!okh=xd zCDN5;NLC_|lK%c7+0?&@0~<%V3G^clrXmN1K*G=-9F1yI@;7e^I!HTXK3^2ej*1nD z(iZDCT2d*NM5vN8SdW4GA^^~uTjc?!2ZYuKk3iRQ(pqmwV;~RX0kBM+BVo*WnAY}neX#@7r|GBw&NJ)E@9UZ?*rUP85w~ZxPL2w3+icr(zx!Yey*KBhLYXvjU_1*N|=W}^d&FpRIi*qH74;`66^bU z**q|avONOIr)Ngdj!_n*H#=cDm1>2|nM$(af$6C7{Ze}^dlF77?&rMJ+zPLkD{2mG ztR2_OgF(7qhPQ9Q@1QRhcN5YIISopj6KXE1)!*yd3euGsK)QZwFW>rCI;=% zCdvxxsVciT0K8JGK*}!bHPg}#R;FU)wWoZiN50APnow}`%+RjB4kop}r5<;!7kk@p zfBkhZ zOiDcjV9x>}<({vU@Ooh*jheocRu`lNTj27-qMST=LJ=UthvWmIP)FGys-K@d1ulP7 zQUlv%H|&(#wr!CQ|Mo`!R7FfDA#TgUGZyQ!&Gv3aN|mLPwj1qy%=FJ82sKGWBDTrJ zuf2?|=oD$@ec0^sU&eeU4jn=R4|6Nm4GVH^05`?wXG(G1I`L{q7j zW%AmjOacrH%V66q!{B+9i?|~(2HI#TM>B$wWyf$%=q+t?xG9x!E_Cn_+tC0s5sf&M zHtGFK)t|@n03JFidFZ!oGQO9p<%k{JZ=u zZ$whvy>jZK3p!j#jUigA$*l#zg$Mefr@#=FL0FGrt(0Mh-_P+-Q_Zk4y<-^9@%^Y& zJ*d>DA(i)&0V%B3an$Hd{r>wOh-29b_=0EDn6SQfa+}Wmnp@#{&TnVJ35+Ah0CU3o zOdXK~=8e+m<0B(bZ4b(Yb7!HVUW6Ka5K`=e9N+fVjSYG#lNky(>pFvn^1T3l)1Ww!}ZAqYOzutQrmldu<{wsir*J(+Cqom~9@q?7)>0rnS?Cc)j)ss9=^ zPtwUW2{ukp>SgGW$50y$L`|yUZmulJAP8^+1Zg#&lQg9N;T^-BJLc%|rJpq=y<}Gx z)prj=4ucJ6ZYICsLLzmG9;QB)x{vt zboPOyM2fg|Xgfp4;8+C*riY<^&q-Z}&geq}Iu`@ma09A)gmwYEw()m7k%R-(PM!xL z*IvCQiHk0SAfVRtO#Y_>ZGEyVWi!wl)kuNI`QuODjt zU0jzsMQR9MR5{Pg%)(jh0Q#~bE35g=7-E+H;6o2U8r+R>sX?`S1*+%;$)x+(_I$n| z{V3mYA`*>709r$w!{8H(#$|C~Nmg>J5{tzk2@kSP;Y^Vk)Q&#{&TuWFJvT7tU8r{l z)a0|6KZ77!cReYWt2ioB#h4%jjsQpS^XP4@)1qqCI6>OfYHo(~gdnZw$d?^EcZm~= zQo`JM{{vXZHJD`@;s?bONRvVY&B zvJ>%~hGh~+|8wFb6XgfRdeUT>4c`SJUXTL^_Cv~w!7e%_w$2X5zEVBMTuuRSqkUuY zW*@D5vVy;2`z1Boir=6O%Krldk}T;{A?J706`B ztk0_hEIp47Qe&f|vTyG`fXgFdnI?(l=;#;$q5yy{Luxw$d-BJy&3-;ME~h{F1Wrp& z1h!kMmJ6k#d~*5>9k3W?(@ugx@DwBT0$qfC_ak}!x#!`?Q;}#iit#VV`Sa&7k5tDi z@NG)RM}s8V1pvd5lb7MR^)cEoH~*EkpAwjq^sCg=l%&s`J}b{Y`>Y&2`j&VNCHakx zU&MD0_d6YyLrU(L&w1FGAA__v7Jvl%-{5n?K9tIN8QJ>-I8@z7W*`yog8lhZX?U(o zPEN|6Q}>Q&7wu)QrhSSpparJ@;(7PUX;&Yp+O zeXqQF#qcoGJP+Wmvig~%7Xp-hxDPCo1XT$yiX}3(tYiy9HXkCGnJBpbqJke8e%eVRA`*52f zMSe%v=z3wL_hNv*@6VlaPU~}BdSZ>W*LUsOWx%`iYv;oQ3%mF&;8()!=OTtDUmX9F z{Qft;WELv|oYBA$7D?dH04!7~IkC8Or!u^58bZ5Y4KHWKt%?caY5LSh(WaWhed%;c z%7rpiV@o6`lx1Qzq>?O%yF)M5e4$7O67hXXPN__mZ73B>0GB*Bn~g*hfqIKhCZ^6K z9q-N%q-wPqxb$vH3Z{r;v)xj2Jy`+ZyS1uPXPb^BlQD4nybYGZS%)6gHr z758L&=v7%Lmg$s4+cfHeZI1nS;t3F=1-|@IC(8KO1kN!uYh_sxTee0?aS62bC-3}B z{`!x`P>-|kaVIWLq8rlgazH>CGL*zKzG2eS7$b_`X^dN%67>=sb82Xh zXa>lE)Rs;6vVON(W1Xq)tYk82dNwaF-^3g>)(}9G$p}dSC!q@5M?({WtqI8 zSS*sc!Td3?1^@}5Q=#p*ow6&KbCbZ))fI;nnMC_sO1WL>Zc2lVIum1HjuVU#217=& z6h+&6AbHuA17;*g+ciR^=!d|$6C)(dDA$n;v@7%T^ZFiB5?wJeg@t^X(96Y$k&-j7R}@^Iff}s~D&<>?Aw5dj?ZP3JXOz?sGc%34Jucffi zwOf-1?cpt|Mgp}k6O`KS%xtxDPUE~zE!id*D4zG?7yI2NI0nEoB`^Q@HTgH}(6e(h zwATg?w{&0C$71{7&8f%HB4ZFTJG4cz{aSJg$J%dE{mk}LZP}y~8&0dx5SGU0*k_i( z+2&uK<5&w0PLn!^QYmE`!g_JqV)?cmsxbxULcrnkYNa&)%ih)NMiB$y`Nn%d15^kp zq6iWRh(k~yr9gr=;0chBfSx||P{7MTDhe8S2GT-)3L+sP(dOSZ z^Ko00QJ$*;P?{v7beKDmoOCSOR_7py6X}gm7SnsEBxl!;@uAlfSgrRfSFY09`YH`? z-=dFG5A`2Y4`${8fsSZTv|SyuIjIg*KProai05tfm`$h1F{iTnTU?xi>653AY3uzb zIym^H^t8T@4`kccO3CvgVq@e$41~9`?nvoe%cgH;ZK1l>_9`py!^Z42lyk+GXuT5JkTEN>EHGY$rxyGLTD!SU-*@-v_jEhBgGKIQ z<`_?j?iAaW2J!`<1K>O!He8Q_0D5ks48?Ugn0TtXgVF&UJW=F0iJK5~!B?+7CGu@5 z&L<+Jc3wD0uybm$JDOLwmb>{^kH1zbH46r5(ku-q&s5H>OZ+F2M!xtWDr57`08E(ZOH zH{|LZVGE}h1Z5_b;~QK7Qr3H^3lCigH>^D$Z3RcEm)D0JDDWyUM|WYdTQ5OBWFk=S zVmoZe;PWWsWDA&z1dr1^*WgktSC@_0Hx5>)E$#*ot$nT!kAMSc0B{9}nZ)}`gCZ0+!VyP5PX6y zu!Kx>CkNi>vYbtPZ^hZqs#y#8O}v?XM*H27+rh}}{Q9i$@Pg^N`p zI1#5$B@VTY9_S4R1VOZqd^zldWB~v#*KQ0%Dunl+D(?vk<#VGc0KcG(ho=YN7HpS+ zZy&&(S-^jX6V@O0&ULqK7>2@R_Wln%)I4VfFCas>?y}{_22{ZZMG`5B?uAzDm~TsK zbp~JNHDG_j&^x}4)ZwU-hNHt~#i*qL)#xWKW@P?>Q%vk~N7SVQFn^Slma}Dfos{NZ2d8v3A%r-PgV(k%D2`5JEfsUJ!RDUG|08? zICvL;RayE&mq`WOp5(I~99Dn%+ue{daF~q%HvbKvF0G7l-tPdpf^t*>`6-800Mj^a zqSq}uJ}#GG2j0!JzfMM1QPt6nRmYvwS4H`JqVyPAd<=abx$-+@uE%>PpKq8hQ7Xv> z+~TW+D|cxo1V%j~#Sc-k2v@OkZmbbBqiS^!iR%0sO*$ zAfXdF1uBJN%)zXIC0n4OC2+nD9!HGxxaO~ekO>U!6FA4Fo$j0Po-J=E;DBi(-y0Di z@xCJi(??^0p*XHtHh-56xLLdXF{dRw93a_t`Qen@mOto(4#OAZ_lwE5UP9a(A1!Xu z$m;j^fdBCwFv)K8%~!8nwCAi}PsU%$tcTubz&)X44pwLFgb_jT!1~84PVI;&lIRn7 zLZVi$lZV54Q5=YR-Kewdbo*Lv+o^WQc>Qo7BBmnH96u4SABil~L5^3UCZ($y#8|#h z*8I?u9&bCo6m_=WBI5)pn8A>-7d`T8A}Xm$qBTA||eaf->hCjnzR)yyO{b z<8xt1;RbV-XREp@Y}9q5-qK_sn;OO)pB?$Vj?0&5T~0btbbpL}jV!e6s{CT_>~&>1 zia1_1SD0%gaC8%s0J?U9kS!7LK4b)lfPhzk03jZLw?ag`!L^93GhOv(PIr~6rqtWJ zdvr0!($4Cqp8o#Y-J1TGt`I$#l0V8uE}H|x+)D^A{lr&0VHX0mp<)q2bnuc3z$HP6 z8Z?~+z0z>UmhNK>_%#Y(X09C$e}W1@ygr#Fy^8emrz;a~UHAgjNKLW)VRlf7QDGBu zb}^dL-tBGB@jS9nlfSiM3Vo_;b{u1CIO)a-ek$ z799D&P#A1bswZ9cuhX^XIz{|c78SRkSY25l(J^CA_t2+U^<#TE{6VMU(Wal7Z#ggmv62-rkY>#8u0p% zZcgh7KFx9MENB?~(!#=oQ|qP)#4Bq*KB{t>-i{beWU|gGv%H6!s1x}&3`Eap1)fKB zuY$;gAKQ7oWb36c(?^)xu{JZ5nuj&&8n6mFWlh*e>7@>m)^(B0-0m_X(k^SfBGQTV z%YoE2MnysAh@k_KObHjky~C59pzPJvzx!;?pCi3C^6zl+NG-o zYJEEqzlAk_I5$!}qEvyRM)~8Uj(WUe$6Npd{!mroMJwI^@s#pM2!_H@WA805 zDk*kuF!6F3+JPcXoww@(m~?;{LQ2h$M8qZ4C|4~ed^rLaSS$%p=Z=qLTYaGD{&64F zO-dg=T^pB4%nuZ$g1IEnKFwaVegRd_~C-3BLguC`7&$#B{5fi1gKfbkkm| zboao+W4?ASYQoOebu}Rr_wkN$eczZ!#NNSe9QCRowXr1B-}`Pw$l<_EpF%HfZp3?? zQl?JxI$257B`Za=37-_>`_(M6V#?_03p(%+uFI)BRL_ z$v~|BZV%X$QV_^lU)OcBqqzHjG284U-y&Rr$KdxhAH>1gQr3X)+%Rx|#y@-i1^x1? zuSws$p&itb4g#IA^3xZghR^|KSU70fG!=eo2xLb5pkYh|3sBzktYt*3CF_Y8S%{du z0I_>832g^Vjkg0PNmJH>ZXc%Klew37t}8-hYit9VkSDVNO`|Cn!uvrp0b!=!Lz24~ zY6u~AaGM(f(KEURj@yTT2?2@LQ3EhRXj7li0U6Mdug|x88l(aDcr9L6f*y!rv6<{%ZaO&nw(2(ovGI z2eIA@?e{?u#v=u49*+jDQ&_3T@2(B|!L#p9U;p|m`o;U7f9%ayJh?|P>n><^%VRh6 zD?Ex4K<$`%B;{%i_#+-g$@Iyg7Vi&#{1g5CuYab0|LdRh?V-v{ReOM%up-4bV0_F8 z7BHs-L10AwZ%l&>qUu}yC2-iL&g>~~#evNh0k`DMusQ?tO^*n>z1JIdb~hqr(8l2p z9e%`Yd8(b5%T{KK%Lh6Np#b4RuR@XR^XEeVV;4IqZGJX2M!rCe%e8*PMAR=ID+wLp zl&=gBaK2&asH3+myi1snBd{)?V3ErhZ5a0Ld=%qmCV`1P|7|F5VB*LVTl(F)kGdJ{ zi(D$TTTO95%$NIz)!Lagj+cy9nP?M&!Ip#F6=f6b-$$UvpJ|4;*k4%pYQ$anbFW8l zXSVkCE0>Rr8sE#TK-Z1@<(FU3?|%Q=L;d0>5rJPc0>(kL!(Kz8w{PG2D7e1+ivv2~ zgU4CWuUP;y^Q}UZYnXCYDbtHD9*5TR59$4{enWrx+dt?(-+XiECjFLnk?(rNVl99P zi^hpR>U%Hr6asTK;vSp@I1@^7Y9aU};1S9OuyvClRp&)m0;A27DAKff3Q|+@3EZU`r>+b7Qn={Z<8I%Fk0-D)5#+ri^+C_dY@Ni!7Rxxbeipqc-=eCzaU2xB3ClfMd1-)Eqtgmb?$ zhn-33?Wdp8Pe1>he)QQ7UUUL8fLlhvD6b*mn4x^0ibgtoqYL3G$RB4ze|Hz(?H3!c zI2~tpt2)B9Hl+0xyO;!BXDb1w1k}Cpe-XqenJQy(X#MK%Xzj0y$}LCI%8RfdaEK8% zIg2T1H$%|jq|^YsXm*db62R*}c}stzc+P=Qv|Qn3+ewsQ(e=(BPc^r6(pX$c`M@&& zP+P$3d`taZv4q0^oYmj~`$*EP2>(o6^~9`|G70ulhYw?te!gz<5A~tA6dyN=-&y=D zo3`s6jnzybmR4deX?b55_g`SAnN_R`{`q1C}1Xsjlz_5a2*(!2N;(9N3}D1q7S|&b(vZYXo=)V0)e? zqy0jq3l(rLuzB$qq9N0V>8Q1x%Be?y&AlhWe?C@#)AhwlSw-^Y`T04fbgZHw(Tx+Fpm@OdCBRIA834c>+r0(sBZk?wC^IDv z`V>RA;@abV87xSjc(x8CK(8dg3=Ggh zwcDVyJjaGr@RMr#xZ@In82T~k$Mpw-X^XQ0@*4rB^ErbG$Upcpq~0m%i}+ec92Xo< zfE<|K6u48q2-YmnWj=7K$sw=)pH>S!0_Y77jJYF9?EgJ^(oN@ahT6u1Lv&au9q# z;(I5qC_5Z+SfNKwll-kB5ClOu9rHYMnF(Fi0o#U6vEXd$bLEEejwWHjJ>EW_Dp)}f zgg3(m@kcTbv`a@TK;k=+0QVP6?&8o`f*=UOg#jS117O`$z%|#|Z~ju!0~6`-9|b zGoXFb z!fXQa8&NKAV#|*~>wi_jh@be0-@XF8jst)E_%S>_K6*E1Fz^HN7a>+lc(5*LlDP{y zbziszo5VMz{p()TB7#f zr2%Le(mhPV0#L?)ePE=Sb#%>O2!2dktmc0a@e@Ds`_uUK^eBG*{F&{s;C5ZE-pcC% zUBUPZrYaDBW9IXAK>nrs1W!*-zef;1j2lQ^{KQZE#P0|%FE3oWp8s|nZup-Ico5(p zKYmal2?uNedtDPneA~;BzJLGj3H{oALNde{7h{;`__{@7bL=|*#oEmOE#~Vn*+uT( z&o9m)+q{^`pZVIf_=%tRy+eL6vNkgb>!exCw0;_LoqZ5s0E&QgZSb(`0jQEz%rS*$O-h=qsNK55Z z+AQtep#P3WB$9#YG#ry8ocr!{f9HIkAM%UAHX$JAzb!w)ongQLJwNdizjOKFxT<}b zU)Ci^#v2x$HN8l~hOO2w0Vo*%sE#;Dy5X-

ioyw48J-t>2Qzhn%DpI>C-B{9o@!Eo(t8Y9bJHJp#iX673+TU zHr3O5p6UePIGtu^R0uOx10wif`s)Kc_x|R5ho1*JPvFx0+BcxBhN?8HJkawKKk?g{ zA9wvj#a|+X|r9W*6Ft%=Tq5vbfIRF0k ze1~7hKX6I%O8nSXZ(m{POU)H2uEmvMw)hC>9K6Op_EgO!MdPn3f>f483Q(B3>I*r_7?#T1%#@x z>jDAOv{+hN$hb9&ydgNd39x^CB)c(ue){DKSAlgk3A5ielA3dN)CE1J0K*B!PztjY zE=o7FFX-C`w_Ct5#()X`v3IpGQC(^HIWq$&pk%GuZM6z)*v4J?(QeaC6Qhf+QTu^P zy2Xz|Qk15(C~aD*KsPS2s8#&4&_!aqf(i?4G%Xg$cB@8Bc0pzvchf4MHX>gNBBL-f z%-p$i_U)UQ+{uIvonZ>0okO17n>%56Ip?1DdB4s%5F#*e2k3QlKdHwrOp+DtWax-= zEfx#f+uLyA!Udc?a|X@L&FJavhN9Tvlq&VJ!w(|Dc$O})OscBD=~Q`K91c6~+_}wA z6q{B!C*>rJm(v|7VEN2uGe)dd*lZ&tvjbA9o_!D^;-5?tp77)IfSS)`p*|)dXzj4{ zrFy-NBov`A^h6SH;O7FvyAsbM4DH7mlYWJpnKuEX~2S=h8`6E<(&j9t5OaqiqXmRlzToYFZlWGr0d zD}bw4zeaI!G08(RZQO{|)Kp|=XQQU38hw5J)USe|bM*}nispp~IPi#&-+qi3WBXuD zXZvmc&&HI6$@kUFt$6Rfe3Tw8#o@BUe&M4d zM^I5wj)H>S*t#`?NVo?=APDD$NtSP9#0tCJ&fby>>?J7J;9{+C~ORCCV#~;`oVg4U^+2EiJ>MMT?M^pND<> z_Td5bH+iEhn-H4Cet|{W|Q~vj;Yt4O_Ns!7Hz15W)3f z=gyt1KnnNn#n)ebMW0*Q8+CtA@bkM)9?#y}y~xYmN$<)QHd-!U{x80{c@wufZ=tEF z2}h26gtV7m#?hnY{C|*4A?@;$Azp1h_##{>-E|gxA6UeUzekL!Q|Hg0KW0!-)7d@= zJ5+=m;Ue~ zKL7k5tmq}=xLk9+-hi&IPBb<)V(#3Bv1ZL0=nZ{!q%(Z0EHgUELWR;*Z#9XqlS9$|oI3o{t7;ISwsz16E%ljoUFB)peX58=8n zHVpjVBE@GafsK)OiCiz7KZi%>J&KK+Hel7NRfvs^BjR_$Kr*GJrIQDGl|19qXsE9z zBCJJnax(Js|499=2Qa!vE~OmDIusRm`v<7M-oVg<2grFh2X%FyAu2Kwc9J76ckH9_e>N$=-(hMq%*F-$!VSd3CV=l43`e)I>r;E0v1*C^^kxK%} z${|Vtem*(`hYI;6{@JXDFf=p-sr^19&^BVT!DeIc78Z*c=3z4i2M1xbTF5gVAz1l3 z3fSWtHV@;z$>hHbzWa>($4uXS;J`s5)>U}(t+zO2D!i&6iOe8e{WEXge0;EfKaxp*@>8?}G0 z#p1<@_%)%Sp&pf$Rd6T@qzqL>PyHr91j?}66(YKB3=9nLd{R}F?(d@rk>n2#20lmHU( zadDU)IgQ8Hb@(_63ky+PQsVhClF>Aa(4Mewa)H z*tfqBZEdai;){Qxx~7_yZBEWRM96cHk&%JFe*7_!_BHC`@K7<ASq-v0oi6SQ_ z2j%5QIShE{&>>ddldz_ZJ;<3cF_u9MR;v|Hi`=9(8qf2;Mq<$?(j*dv0M#SB68e@%T=tR*(XA#eq*gsl&>ZE0L1&B8rPkFni8i ztXsDZk3XIORkf3mWI$r#Vm$NAZ}G&FPvZUe3z3=mD&phgP+3(4#cmI2nJJ#*6@ss9 zWVMn9n~?BJNU%o?gIzoW?}Y24+AjZ#`PQM>+i#g z-!CU5Vd>JPXl-pr|DAiTxg-N9>YU^C)I0yn-mf6QQ~!GDZC8*mWE@VRjW{?2?X{N7 z@9mK!0m2P`>I8+Rs6983=;`U^lb0lW#yWJ|y2S(xAtw9Z0$Vef*$#x^ouOvDXF#8ARzD2;>~RDsP=QUq-yhtLv;TM`ZfC2eVG z8bOQ#K~UOCm?)@)N|h+22tsPADi|;nnLO-SB+x!kDU|@j35Db0sY;4Z?JS%%A^b$;`}9Mq-P+7=ZO*!Ja0+=Z zHHI>vM~@`wm=_x5Gp@(u6M7`ourv$`5Lgi=9o|aR^rx@}mDY?eHX~YB(|N9RZ(S^vT{ui0h zw*l`%X-A|?$89t`ebGL^%pb#et%UbGn4~~uGK#Cy)7TW}*iDX$)YQQ|0tL=75Z5i9 z*TVUX33uz30OR)o=J>w`@tRg$RQ$OZaxhiX6$vn2ZV2Nrns=Lgwt3AU5S6dS5ng-Xe&<5K3K# zI9_rfAk@tw7NMx&vWsCW;Jf$kaUzP;%CKR>MAeuqbOAySC!w}`tgYGT8Ufs2-+ukX z!A1{TvxSu@^u9;K8%F0b9ryNl-IA5{oPcmbBZeL@KIipDixQH#gvbK6*q|A0nc_k3 zx0B!BLSDP!XxzNK{4Ub6-r=>Yt13yV+n%>wn3{C66oi}`@OVCA%GsT=JF;ohCdRZY zE2|)=Yvrp51l@rf=OPG#_ke_40^%`Tx`5g4GTfXGVl>cSOfM`hK1re=LQv!}xLllf zocH=%?4uj}(+DF9Xe#wMlPDwu+J26`$VbEz{{Jc9=9CZ@;csHOD+77JqEnF`&CS0R z${Y)QR2detS1HCS|;I3~-NuRx4= zy(B01q{r-bTb%?W3A<4_^-4*BA&|kCFGyJQz^70DE+?cdUy$F$xu{g|1f$|ZchJKW zKxEMZVL%uazm@sDWo2c6)dm3~>kd*=fak)?1A*jI!1|?x^`~Y|V>%UzV^DCQ+hVuj z8&OKX$6AH0o82;icx@Kqh)+nct5;2&qnBaWo?+|rf)$K9pClwENN(;rfk8yF&9a;& zB>E*K^+2JLRf2KOVjSmzSiJt**9B>De9i|B9FSkFUMT#7-RWO|UFbjj1PzKKNAgoh^eQQkKe^3obx=UDN)UYPr zBe!}v!e&ZS8j&=l_N{;ov3rCqr>-j~U!!patlo%G)aZP*#&SvVSaW%B*5&AhDHhRq z6~!Bl795rS0|${c+Yggq*RH?FhBw!P2t`vPpy3 zE0mt1@{DHws!$>G{vnk8;atnnwbcd;l1B4}O*&hdp|$P~qEB_)t2JE=?`*3^KgSP7)7Os3DsM99Vuq@+TMicZQ< z%%`~6t~9oF?r-<*iO4p%1*c#zjWh5okVaV{y^%smPg-ijy+P9=V0myop}`F0`?wXY z^m!5Qw>`3;seD7ng9$;~nrgg%mCDzdM&--&nVg*Er2d-$1$_?%lgZH@qVX#UqH74;(ZY3eVLhk|GhrnJ3fIkZP3AcpVS`j*(v@ zFE}gfc{y>s5M;!^qB_=m*|B2>W7SC0Vrf&v@|jB3sdMLul<9y?S3xt3S{XZb4AS;~ zAhYLuk3B7IsPutxmN_+(#;9p3@&(XfboCWgPZGuFT_!x@ClH>vEf*0-uBxntQTrj$ zIgGE?dcfRCNug||@@>K^Hd(=E?m5Dku{)`l9J@@?c3ysD5E$BQ16^M z-{=0)rAuMd6vz}n>0`!>X4y`}*}TOfyVLJteeQac z9R0Z_pO9Ico107IWA^OX;_-T&PTAr;`Tc&u^CBtk5?ThVjkf8=e;lwh(aoi zmS*|6O0%hSg*U31K2RqI_{*WIuY1C-n`K&@2V9sOf zTw?$J1M;`sdl3K3VO+Yc%K1&4I8hcZTqtknZG&O7SgzF>A$^d4oSdADQw@%z?Cfk5 zLwJ|5{E;I^@_mZcolHRiVlaY+$??Jyh=Wg&->i8J-tbp|=;Hx7cZDa^hwnE5G3qTS zXo7oXfexTB^y*PeB?3Wr;AT&kgYk|zlq#b}JtaC?1;Z9bYPt*tm%?fmxzg=17#E&8 zEkmZkYtEQ5Spq2mkuYn$qX38{bL$aB%2=iMVaPVcfVO9_NQ4F5?rTA_g<6cENwO7V z!8U1o18ih_2skujz-k&w9sr_2OiUM)Z2Uq~nS(x8Yu$yi%nZZim+~JKbiK}i2?wX9 zI>ww01bQMr^l1uc5W;Y*MrO^LML}&U<_I_G-7*%94(poi-?mV7&u3+^sK9~+3*@Kp z>^5%P$kd7Aq9Vf435nfMTq2G4n3tCa=s6z?BfKWV0biSrdYU?REBwva(1S!SBVzY& z3Z5DNp84#vycfW{D2Mrur1W}1ez$cigx(l_UX-M;)uZD#s$u-qg}=?ZeN%Xx=`B;H zWXQKBOrRilBBmJ?9ffo!ra@`t05)`&Fcgz=I;WyO7W|X!Y_gv>z4eyt+_{s=^{Ejf zXpDRY4|v;Ze{f?)YT@@Wi}x4 zxlqb+v9Z=OQqqR$P+XjXi&u;pJx2cU$KSIW67B~nZq@uwx5vX3lG4Yfqh#f)9Gg(S z5$Ww>VL51rlB2|O#vIq#q0A7ZiR8pZgFv% zWy^D&n4WH{lq4sn0}N;<7xHF|G86G#kgd2<)0xw!Wy`T+ymuH2T#aejvK)DG=upC~ zu)4MP+cx)w9yF-9$idQO%TQ5jqPE)U5d(780?2y4Mw==-=1T*5C#foJ*f6FX0oft5 z6~#da&%rWz8uGY3R3xtdvUmQzaTHM; z-`Tx8`{Mkvl=O%K1Sx1pP!JTMp-E*?1c8uJA*G>9iBjY!DBvHUM4~`RLH>Y%VvKY4 z`E+uK6p70Zi4;Ua0x6M#?b~7avQPK))#{lw&iZ_rCx0}%^W)9TzFEJWz1`U~1u_og z;MLW>*_n2Dc;$4M4ZmJ2$kE2rqe%C4Uc{uRFf2@h_qtD=d?VaqeiI9Aq*;oU&RWeD zUOhoyeE5qKi0KjUID&5maypO0U8^4tcIEk>T#i4tY%1&jKGHKo5jbLOo=({am zmQCyRx}WCx=wYkXO48^$qeO`krBu??{kqcaT}*(!y9yg1HBoc{4o-it|hW9@_fBya7jNf{V zJCl`Wx<1Z>>Jhh%Q*}W~U(_}h>7Z>RRNGgtUVZW9mri`0Wa(>Z8lOsz5+zC$%#yP7 zPJgxk-nnxNL&N!cV5hVAIP;z8ThMIK?Y|MsPIfz;!otGB@QW`$e`jlB^J3!tgFGK4 z&1NH!wcH#Q?9UR9-$6F;4PB6w-~jS!^3fK;LZ5(rLFvRc;we8!G|&OvsvSCA_O%YQ zCm?xHzGwsbsOw>U(#O%}CPHqj?gNfpmT})ikCb6VpBz6cA3~*<+RUIF>qUH)I_L-? z2W@mIBhG9yMMNugdE-YCU>9X|!E=>`C1W+ECO7{f#tD{0QZ= zO=X-xR~R2CH`=o751XU6d~wW?hI+fGL)xwFhWr6+3*F^afOutd%8xjW^i|s+j58d+P=<~NbO7vw zu|1_O%7=8pwEt39=RsNN3mro#gZkAt=CLjNG!9F3QQrWcKid9)$E3vZc;|k}Ij8GI zdzN5-m6vR7!+j_n*P>VI)a90zmUTLhJKZ;+z6geRimgbB+D zA1Ig$97I@bD-IEd14j@B!qSOA;%nsSPSfY-=S$+}DSjSMxmx>Iv;L#i`-uEhW|Hkc zzjHfsIXfTkPnrGsnC`j#4;vg}v{T|FEDOJn@)JUnJ_!#a9hT3#unu#g%JYUr?Rxai)q{@V6>6bIF7+Z3#Bu<9&!{Y zk2uo7<*fY*?LEltF!UnNwAvqbtKI(Kf7>5*?vnixk{)IEJ+Z%0ZjQDMr(61aZ|SXP zdA`P){l=N^b2I}cGGII5mN63shBGG09J1cFQU4$e%(9i!>S!1EyS=m9Z5)T8aN;Bl zw)+yj=w09c`LeUZ5C}eSjzf(i#tsP_M5g{Iok%ogr|p2=NObwcak9OH{$;z=XV}HI zcgH`Gu>SwW^IX^A@)@szj`#cf`%33ar&}*xZBvfJ>M&1VAEEQ|Z@gxC*@o4hA!Z-s z*TQT6GuA}su`ONyk^ByOYDK&U|J3F1ukG9u|IE9wp6RLc(lQ^y{Q9d`+n1w)9YIGU z;h&!$M#2q@i0#>k0Piq|!0uirfc7&@ou{8+o1CkJ{+Zuk=?(L5*bM(I;)5<}?q>3@ z`uoR&?PZL3?}2^s@<8NU&wlG!Fpi>$^=HCY`y_ZgZE1X|nf|=H{xlu*#3%Hhf68Nf z{Pc7Rw7sRVn6cR1{5AU&)CQv4<~8#O*7N6)T-w<0d1blL{3E?r{@MP^^55`8{*|5N z${#1&=APv{T?q0Q7j$;ULr`6mYOkMy?rr#_AU`1+57>)-aE-+F+KS4X`7 z9WSvMDhl4G(DAxaFaZZF-;QoyKzqaQE+Pi5B0_efWm_nA4S3Gm7Ld4$)e$+bZm~; zj0D~x2}VHzbs!0fxg>DZbk#!WL?QW^#tngl7Ey<;a}wo zKB7Ejum1~h#;0<;3yz)_;(upbFJA3lwDX0o#~GgmgfkY`L5S!(+;1Qsn~}By`P4J- zL)E2@j#{BwLm#-RBp68HxO@h|$$oRt7sGEnmjm9p zGbZqbQ4W|muOCk{QucLRP|T0Q`A<*snv0uhj0yPxJ1`GkKdLOC#}}Wwvp@DYFS-0{ zzR~Xn`DeeHf7F}Kzoqlmf1H2M*|s*Nu}fx(rW|rsKW*m9dpBkxk#9Q%tZpg|2XvXuaVC`b)(k5wR19v{cj=QbnDo; zoUg+DvkC2l0}(Nc2-S`Km zY5eQG`Db0tzm9g1c2Ul^L`1=%pDRV8V(LeMZR#@GE?zebuqmN_xSa$} z68ehqKcKyYv1af-W?u5`joY|9g5X|zsOP>F4GRRKVq8O?u$iYiLS83qa>(1jyy52Q z)yCOtPd+dC^Y)@#>d4mKW{!Z4SO3(g<(2b&6FEvptiLcz6pWys=-AGpOi-_Zqq|qa z6C?O|q#&H>5Rj7zPHGGM^ExYf)clV>IU2zKL;KgFUbd>|y(PmVVS;yf0q48m%Z@Lz zUc}<(b+ z{sGAqZ0P2n^JCWo`8QpVe=9@I*7=9MV*O|FA3s)h^yPd@raNL{c^0tvh|{R{b^dy} ztT~u8{#V6G*u2&8XWPU6^5-jm{U1G)11@-D_ZB+xMSdpRni1 zvIOff@@Jp4kH7y@WAUK+AXq0d9)s#za3$=E^KX0zdsrvPKhtskfnof^mM!zoHL?r- zF*bsGUgQ54%ITK;-7{kGLILy%h%Jnm&HZ(j31f`(HN*D!T<7yo{RIBe<{Z8fY!8=Z z`7L9qzi3r5(h2h?Oh`X{6Xl&H^)nqT>y33xI`1&n8ELTJbdZ0IgiSwzf7IIu|FkJ> z{S$S}T=J4ahpaY<&W&dou{n=&LJ5m}Q&GSw|8Xp$p8)>>+mra4aFe%r{-?DO$Dy2U zN!GtMY+$5JL7Bsx&7(iEm|$OGq^=!SaQ+$w9xdkcpYOyHK>qW;zxn+8Cx6g4p{|^8 z$(E%5&N{wOhaTm|>$9CE{q~x?&Jp5aLUfeJ|9Bqv&wu~-#nLmzaH#0Dq#QBQp3W^J zL@n5eExIqQkM`X=*61BNbkHjuMMnv6QYahd-`XtxSM0}p?STLIoXDFbNc{=Ol9G~= zl9G~=l9G~=l9G~=l9G~=l9G~=l9G~=l9G~=l9G~=l9DINf1BQO=w^IgkpKVy07*qo IM6N<$f);lkVgLXD diff --git a/app/javascript/images/mailer-new/welcome/feature_creativity.png b/app/javascript/images/mailer-new/welcome/feature_creativity.png deleted file mode 100644 index 3365856699fcaf857a94cce33edd1e70e908a53f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 130496 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

fH{(>2o6S%9)okvJ`3X~jHhY) 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 diff --git a/app/javascript/images/mailer-new/welcome/feature_moderation.png b/app/javascript/images/mailer-new/welcome/feature_moderation.png deleted file mode 100644 index 7cee9b29b86721f3ef856e4c9ef48baaa6f9a2e2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 100525 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

uwUG1ZfKBh(|D}V&vP|oww#~w40 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 diff --git a/app/javascript/images/mailer-new/welcome/purple-extra-soft-spacer.png b/app/javascript/images/mailer-new/welcome/purple-extra-soft-spacer.png deleted file mode 100644 index ec1ad5c957f971681f64f60c85cf69ccf15c2bae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 939 zcmaJ=O^?z*7;fNVNcQa4W$a$uL^^Gulr~fXw75+yA#4*lI<&(wVcV(gAcfQF&BWj0 zAJ9Y(Ui=H*yr~yWyn1lT0_#ESq4Un0_j%s0XI>2lkB%yLDuN&!xu^DspM_nyQR4s7 zaQvMgx0y3$XLQPzD8)i2q!SF>2%X~*M&at&C)^T*@(J`Lr;b=i< zweti8bIia5pOe@Uf4qG!0uox{6U~#oq=#qZbe-a}^}r9-^S}tj_CwIhO->MDhCm)& z#F?2};)d7ccHxF1*o3gTC0-RZ_J*KGQw$7AsRpvF0G(U)hT1d?UDqD~RaR?IZa`J5 zsx?#7O{EUDpU5+&;nW=2{cS#ev&0!=i3#Cyxs;YQiKgdJF$@FBDpb`fkEmv=n4!EH zXU97R8)rdE5=LkY3Pv=c3ucMD+N(CAWKSDs+fnhM!5k$}k>sMSU7+XvKQxN=(HR@z z>w5o5ocXH+!x7HtA`STRrpHC9#O$RQF`D|6UhF10oKZ%z8BKtyNeZ~{p@77N=VSx% zJkyOchT;Ibwk2{BiIC8A8n$kCWZh6ZJwN&vDpKX#_T1o8)jU+Cjc8HauKQ;~*CDVqme`zjnQIaRC+PUcLOX z*FTQA=u@t4N4Tf+mvPIrJAVFo^84qPb~*m=@$%+tpIi!M;l;bsugTr7--_qsIs^Mn H_vy<&)hi%y diff --git a/app/javascript/images/mailer-new/welcome/purple-extra-soft-wave.png b/app/javascript/images/mailer-new/welcome/purple-extra-soft-wave.png deleted file mode 100644 index ba8f6dd3d989dc0dd74fe25cc20233375ecc87c8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2531 zcmaJ@dpuO@8eT;xKf0)t>uT(_h*@J?#*7h@L8H)di5=0HS=E%8HD;z}+)E0v4QE%B zP{-NPCUuG=mnb16QXSbC_YycqJiMVve5m*2Q!3S9!Ta2viJ_cklZ81KU zt~gh&1AK_JBa8=ohPin$!j3SAOpM(&kSrph0&G}72Sw~)4xc2l#eC5vq48oG!hl~O zf+Mz=KTY|%?gkwY9t;w(W~K}r&I}}=k%blBnn)xN2qqvNhc}0CRuJCO6mL$lB#_K3 zz^@kut;k~@AbC)ozScumwwOZ#0ha_pLZJ{VG{+*mgOC}KNQ7{B2#+^K5vKf5j({#Q z-dd$P`3qdU3hK3R>#M*8kq z8rgq12L;t?NeqdV60iOUo9@3`nHazDdupdlQOCUovSZ~rl2gv7lK)7~@>9@NB-%s0 z;kMH@;;7tDR{y z$s)#Z0*x!DBXQ|Ha}jGPmHvf$#^R-9z0^y~`BUZQp_(PdCEdp?%C{oMZiltH?i`rZ zunxA^x6IT3VwZSbb*M?kh{>IY@cWmEn-In@D4C1H<<4Zfv|TCx)$dK&esyg*vDtiH z@t($DhP%N@qm%A$#HFXJIqS#FNU91tyUH}B#r8yg(Gyv$h+HLK)uyi&J)T&>`w9E3 ztYqK1>b%t-ACsM5dUFGsDy|uhRrI@B&$$>rT>kom8s@Wc{jf78Et$7b6ptiMG;Ond zSEKFIb~Q=s#12{Kwx?_FRcO_K;|xlG+HV(zOoH3TYIL9Fk}csB1RRqbOI_(!p)_?{ z&3hm!O}~9<@6D{ymR9duhqJrZRo4r(*At&M#py^V4N?>Tb!oDpxA2BfbS=Awv7u?O z&!nzYV|zyE1peTf*IMtoM;pY6T;Y7eNw=*90na@|suNhnnSTA?m;PRl*l#7cq#>go z{|JS7wJD2SQL1xm8eEiCFtv( zTWf$!^{(U_4K1P+pR=BOu_oEp=_(ohM#c|@LvNfKce#?NXFC9kG|w3s4uv~aEE!~^ zM?cNaJ^C)TJ5s6CT0doY*n2Of4-!)i8qO&;ZudI(jP0GalTo6`1W4= zy%aFgz*+9z;Ju_}zM%n#(FX23;wty2mFP+*Kcx3*bQk=);M86hu{EFjy8Rx|lV-$(OPWxLl0WcS&je-3UA6k}$mb zqt4LI_LiS(63LjTch3Rfwe8ahkeg!|t!`Pbk8g4&_{=N}Vmjlk(eLZ($TH)d20Mjf zqxurZ+1Bxe=Bs7W#0TYx+Kqmj)Pd%^7KfuY_RdZ4og3@)q&9J3$&&#|d99f8axDV@ z2(m1psFvlz*Fwo>>-4ZZuj0?Soy^nPx&aJB{j)7qKB)|acL zjqTL1h&AVD@B>fUuFvt0v?pKY1sk%?mTkFT`zdN&b}6kd8~_BZ?|oF0=b$P;^VO7Z U#)Uf}i@#koM>lHW_Wd#c0U#_+bpQYW diff --git a/app/javascript/images/warning-stripes.svg b/app/javascript/images/warning-stripes.svg deleted file mode 100755 index 9d68acdada..0000000000 --- a/app/javascript/images/warning-stripes.svg +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/javascript/mastodon/actions/antennas.js b/app/javascript/mastodon/actions/antennas.js deleted file mode 100644 index 4716897586..0000000000 --- a/app/javascript/mastodon/actions/antennas.js +++ /dev/null @@ -1,986 +0,0 @@ -import api from '../api'; - -import { showAlertForError } from './alerts'; -import { importFetchedAccounts } from './importer'; - -export const ANTENNA_FETCH_REQUEST = 'ANTENNA_FETCH_REQUEST'; -export const ANTENNA_FETCH_SUCCESS = 'ANTENNA_FETCH_SUCCESS'; -export const ANTENNA_FETCH_FAIL = 'ANTENNA_FETCH_FAIL'; - -export const ANTENNAS_FETCH_REQUEST = 'ANTENNAS_FETCH_REQUEST'; -export const ANTENNAS_FETCH_SUCCESS = 'ANTENNAS_FETCH_SUCCESS'; -export const ANTENNAS_FETCH_FAIL = 'ANTENNAS_FETCH_FAIL'; - -export const ANTENNA_EDITOR_TITLE_CHANGE = 'ANTENNA_EDITOR_TITLE_CHANGE'; -export const ANTENNA_EDITOR_RESET = 'ANTENNA_EDITOR_RESET'; -export const ANTENNA_EDITOR_SETUP = 'ANTENNA_EDITOR_SETUP'; - -export const ANTENNA_CREATE_REQUEST = 'ANTENNA_CREATE_REQUEST'; -export const ANTENNA_CREATE_SUCCESS = 'ANTENNA_CREATE_SUCCESS'; -export const ANTENNA_CREATE_FAIL = 'ANTENNA_CREATE_FAIL'; - -export const ANTENNA_UPDATE_REQUEST = 'ANTENNA_UPDATE_REQUEST'; -export const ANTENNA_UPDATE_SUCCESS = 'ANTENNA_UPDATE_SUCCESS'; -export const ANTENNA_UPDATE_FAIL = 'ANTENNA_UPDATE_FAIL'; - -export const ANTENNA_DELETE_REQUEST = 'ANTENNA_DELETE_REQUEST'; -export const ANTENNA_DELETE_SUCCESS = 'ANTENNA_DELETE_SUCCESS'; -export const ANTENNA_DELETE_FAIL = 'ANTENNA_DELETE_FAIL'; - -export const ANTENNA_ACCOUNTS_FETCH_REQUEST = 'ANTENNA_ACCOUNTS_FETCH_REQUEST'; -export const ANTENNA_ACCOUNTS_FETCH_SUCCESS = 'ANTENNA_ACCOUNTS_FETCH_SUCCESS'; -export const ANTENNA_ACCOUNTS_FETCH_FAIL = 'ANTENNA_ACCOUNTS_FETCH_FAIL'; - -export const ANTENNA_EDITOR_SUGGESTIONS_CHANGE = 'ANTENNA_EDITOR_SUGGESTIONS_CHANGE'; -export const ANTENNA_EDITOR_SUGGESTIONS_READY = 'ANTENNA_EDITOR_SUGGESTIONS_READY'; -export const ANTENNA_EDITOR_SUGGESTIONS_CLEAR = 'ANTENNA_EDITOR_SUGGESTIONS_CLEAR'; - -export const ANTENNA_EDITOR_ADD_REQUEST = 'ANTENNA_EDITOR_ADD_REQUEST'; -export const ANTENNA_EDITOR_ADD_SUCCESS = 'ANTENNA_EDITOR_ADD_SUCCESS'; -export const ANTENNA_EDITOR_ADD_FAIL = 'ANTENNA_EDITOR_ADD_FAIL'; - -export const ANTENNA_EDITOR_REMOVE_REQUEST = 'ANTENNA_EDITOR_REMOVE_REQUEST'; -export const ANTENNA_EDITOR_REMOVE_SUCCESS = 'ANTENNA_EDITOR_REMOVE_SUCCESS'; -export const ANTENNA_EDITOR_REMOVE_FAIL = 'ANTENNA_EDITOR_REMOVE_FAIL'; - -export const ANTENNA_EXCLUDE_ACCOUNTS_FETCH_REQUEST = 'ANTENNA_EXCLUDE_ACCOUNTS_FETCH_REQUEST'; -export const ANTENNA_EXCLUDE_ACCOUNTS_FETCH_SUCCESS = 'ANTENNA_EXCLUDE_ACCOUNTS_FETCH_SUCCESS'; -export const ANTENNA_EXCLUDE_ACCOUNTS_FETCH_FAIL = 'ANTENNA_EXCLUDE_ACCOUNTS_FETCH_FAIL'; - -export const ANTENNA_EDITOR_ADD_EXCLUDE_REQUEST = 'ANTENNA_EDITOR_ADD_EXCLUDE_REQUEST'; -export const ANTENNA_EDITOR_ADD_EXCLUDE_SUCCESS = 'ANTENNA_EDITOR_ADD_EXCLUDE_SUCCESS'; -export const ANTENNA_EDITOR_ADD_EXCLUDE_FAIL = 'ANTENNA_EDITOR_ADD_EXCLUDE_FAIL'; - -export const ANTENNA_EDITOR_REMOVE_EXCLUDE_REQUEST = 'ANTENNA_EDITOR_REMOVE_EXCLUDE_REQUEST'; -export const ANTENNA_EDITOR_REMOVE_EXCLUDE_SUCCESS = 'ANTENNA_EDITOR_REMOVE_EXCLUDE_SUCCESS'; -export const ANTENNA_EDITOR_REMOVE_EXCLUDE_FAIL = 'ANTENNA_EDITOR_REMOVE_EXCLUDE_FAIL'; - -export const ANTENNA_EDITOR_FETCH_DOMAINS_REQUEST = 'ANTENNA_EDITOR_FETCH_DOMAINS_REQUEST'; -export const ANTENNA_EDITOR_FETCH_DOMAINS_SUCCESS = 'ANTENNA_EDITOR_FETCH_DOMAINS_SUCCESS'; -export const ANTENNA_EDITOR_FETCH_DOMAINS_FAIL = 'ANTENNA_EDITOR_FETCH_DOMAINS_FAIL'; - -export const ANTENNA_EDITOR_ADD_DOMAIN_REQUEST = 'ANTENNA_EDITOR_ADD_DOMAIN_REQUEST'; -export const ANTENNA_EDITOR_ADD_DOMAIN_SUCCESS = 'ANTENNA_EDITOR_ADD_DOMAIN_SUCCESS'; -export const ANTENNA_EDITOR_ADD_DOMAIN_FAIL = 'ANTENNA_EDITOR_ADD_DOMAIN_FAIL'; - -export const ANTENNA_EDITOR_ADD_EXCLUDE_DOMAIN_REQUEST = 'ANTENNA_EDITOR_ADD_EXCLUDEDOMAIN_REQUEST'; -export const ANTENNA_EDITOR_ADD_EXCLUDE_DOMAIN_SUCCESS = 'ANTENNA_EDITOR_ADD_EXCLUDE_DOMAIN_SUCCESS'; -export const ANTENNA_EDITOR_ADD_EXCLUDE_DOMAIN_FAIL = 'ANTENNA_EDITOR_ADD_EXCLUDE_DOMAIN_FAIL'; - -export const ANTENNA_EDITOR_REMOVE_DOMAIN_REQUEST = 'ANTENNA_EDITOR_REMOVE_DOMAIN_REQUEST'; -export const ANTENNA_EDITOR_REMOVE_DOMAIN_SUCCESS = 'ANTENNA_EDITOR_REMOVE_DOMAIN_SUCCESS'; -export const ANTENNA_EDITOR_REMOVE_DOMAIN_FAIL = 'ANTENNA_EDITOR_REMOVE_DOMAIN_FAIL'; - -export const ANTENNA_EDITOR_REMOVE_EXCLUDE_DOMAIN_REQUEST = 'ANTENNA_EDITOR_REMOVE_EXCLUDE_DOMAIN_REQUEST'; -export const ANTENNA_EDITOR_REMOVE_EXCLUDE_DOMAIN_SUCCESS = 'ANTENNA_EDITOR_REMOVE_EXCLUDE_DOMAIN_SUCCESS'; -export const ANTENNA_EDITOR_REMOVE_EXCLUDE_DOMAIN_FAIL = 'ANTENNA_EDITOR_REMOVE_EXCLUDE_DOMAIN_FAIL'; - -export const ANTENNA_EDITOR_FETCH_KEYWORDS_REQUEST = 'ANTENNA_EDITOR_FETCH_KEYWORDS_REQUEST'; -export const ANTENNA_EDITOR_FETCH_KEYWORDS_SUCCESS = 'ANTENNA_EDITOR_FETCH_KEYWORDS_SUCCESS'; -export const ANTENNA_EDITOR_FETCH_KEYWORDS_FAIL = 'ANTENNA_EDITOR_FETCH_KEYWORDS_FAIL'; - -export const ANTENNA_EDITOR_ADD_KEYWORD_REQUEST = 'ANTENNA_EDITOR_ADD_KEYWORD_REQUEST'; -export const ANTENNA_EDITOR_ADD_KEYWORD_SUCCESS = 'ANTENNA_EDITOR_ADD_KEYWORD_SUCCESS'; -export const ANTENNA_EDITOR_ADD_KEYWORD_FAIL = 'ANTENNA_EDITOR_ADD_KEYWORD_FAIL'; - -export const ANTENNA_EDITOR_ADD_EXCLUDE_KEYWORD_REQUEST = 'ANTENNA_EDITOR_ADD_EXCLUDE_KEYWORD_REQUEST'; -export const ANTENNA_EDITOR_ADD_EXCLUDE_KEYWORD_SUCCESS = 'ANTENNA_EDITOR_ADD_EXCLUDE_KEYWORD_SUCCESS'; -export const ANTENNA_EDITOR_ADD_EXCLUDE_KEYWORD_FAIL = 'ANTENNA_EDITOR_ADD_EXCLUDE_KEYWORD_FAIL'; - -export const ANTENNA_EDITOR_REMOVE_KEYWORD_REQUEST = 'ANTENNA_EDITOR_REMOVE_KEYWORD_REQUEST'; -export const ANTENNA_EDITOR_REMOVE_KEYWORD_SUCCESS = 'ANTENNA_EDITOR_REMOVE_KEYWORD_SUCCESS'; -export const ANTENNA_EDITOR_REMOVE_KEYWORD_FAIL = 'ANTENNA_EDITOR_REMOVE_KEYWORD_FAIL'; - -export const ANTENNA_EDITOR_REMOVE_EXCLUDE_KEYWORD_REQUEST = 'ANTENNA_EDITOR_REMOVE_EXCLUDE_KEYWORD_REQUEST'; -export const ANTENNA_EDITOR_REMOVE_EXCLUDE_KEYWORD_SUCCESS = 'ANTENNA_EDITOR_REMOVE_EXCLUDE_KEYWORD_SUCCESS'; -export const ANTENNA_EDITOR_REMOVE_EXCLUDE_KEYWORD_FAIL = 'ANTENNA_EDITOR_REMOVE_EXCLUDE_KEYWORD_FAIL'; - -export const ANTENNA_EDITOR_FETCH_TAGS_REQUEST = 'ANTENNA_EDITOR_FETCH_TAGS_REQUEST'; -export const ANTENNA_EDITOR_FETCH_TAGS_SUCCESS = 'ANTENNA_EDITOR_FETCH_TAGS_SUCCESS'; -export const ANTENNA_EDITOR_FETCH_TAGS_FAIL = 'ANTENNA_EDITOR_FETCH_TAGS_FAIL'; - -export const ANTENNA_EDITOR_ADD_TAG_REQUEST = 'ANTENNA_EDITOR_ADD_TAG_REQUEST'; -export const ANTENNA_EDITOR_ADD_TAG_SUCCESS = 'ANTENNA_EDITOR_ADD_TAG_SUCCESS'; -export const ANTENNA_EDITOR_ADD_TAG_FAIL = 'ANTENNA_EDITOR_ADD_TAG_FAIL'; - -export const ANTENNA_EDITOR_ADD_EXCLUDE_TAG_REQUEST = 'ANTENNA_EDITOR_ADD_EXCLUDE_TAG_REQUEST'; -export const ANTENNA_EDITOR_ADD_EXCLUDE_TAG_SUCCESS = 'ANTENNA_EDITOR_ADD_EXCLUDE_TAG_SUCCESS'; -export const ANTENNA_EDITOR_ADD_EXCLUDE_TAG_FAIL = 'ANTENNA_EDITOR_ADD_EXCLUDE_TAG_FAIL'; - -export const ANTENNA_EDITOR_REMOVE_TAG_REQUEST = 'ANTENNA_EDITOR_REMOVE_TAG_REQUEST'; -export const ANTENNA_EDITOR_REMOVE_TAG_SUCCESS = 'ANTENNA_EDITOR_REMOVE_TAG_SUCCESS'; -export const ANTENNA_EDITOR_REMOVE_TAG_FAIL = 'ANTENNA_EDITOR_REMOVE_TAG_FAIL'; - -export const ANTENNA_EDITOR_REMOVE_EXCLUDE_TAG_REQUEST = 'ANTENNA_EDITOR_REMOVE_EXCLUDE_TAG_REQUEST'; -export const ANTENNA_EDITOR_REMOVE_EXCLUDE_TAG_SUCCESS = 'ANTENNA_EDITOR_REMOVE_EXCLUDE_TAG_SUCCESS'; -export const ANTENNA_EDITOR_REMOVE_EXCLUDE_TAG_FAIL = 'ANTENNA_EDITOR_REMOVE_EXCLUDE_TAG_FAIL'; - -export const ANTENNA_ADDER_RESET = 'ANTENNA_ADDER_RESET'; -export const ANTENNA_ADDER_SETUP = 'ANTENNA_ADDER_SETUP'; - -export const ANTENNA_ADDER_ANTENNAS_FETCH_REQUEST = 'ANTENNA_ADDER_ANTENNAS_FETCH_REQUEST'; -export const ANTENNA_ADDER_ANTENNAS_FETCH_SUCCESS = 'ANTENNA_ADDER_ANTENNAS_FETCH_SUCCESS'; -export const ANTENNA_ADDER_ANTENNAS_FETCH_FAIL = 'ANTENNA_ADDER_ANTENNAS_FETCH_FAIL'; - -export const ANTENNA_ADDER_EXCLUDE_ANTENNAS_FETCH_REQUEST = 'ANTENNA_ADDER_EXCLUDE_ANTENNAS_FETCH_REQUEST'; -export const ANTENNA_ADDER_EXCLUDE_ANTENNAS_FETCH_SUCCESS = 'ANTENNA_ADDER_EXCLUDE_ANTENNAS_FETCH_SUCCESS'; -export const ANTENNA_ADDER_EXCLUDE_ANTENNAS_FETCH_FAIL = 'ANTENNA_ADDER_EXCLUDE_ANTENNAS_FETCH_FAIL'; - -export const fetchAntenna = id => (dispatch, getState) => { - if (getState().getIn(['antennas', id])) { - return; - } - - dispatch(fetchAntennaRequest(id)); - - api(getState).get(`/api/v1/antennas/${id}`) - .then(({ data }) => dispatch(fetchAntennaSuccess(data))) - .catch(err => dispatch(fetchAntennaFail(id, err))); -}; - -export const fetchAntennaRequest = id => ({ - type: ANTENNA_FETCH_REQUEST, - id, -}); - -export const fetchAntennaSuccess = antenna => ({ - type: ANTENNA_FETCH_SUCCESS, - antenna, -}); - -export const fetchAntennaFail = (id, error) => ({ - type: ANTENNA_FETCH_FAIL, - id, - error, -}); - -export const fetchAntennas = () => (dispatch, getState) => { - dispatch(fetchAntennasRequest()); - - api(getState).get('/api/v1/antennas') - .then(({ data }) => dispatch(fetchAntennasSuccess(data))) - .catch(err => dispatch(fetchAntennasFail(err))); -}; - -export const fetchAntennasRequest = () => ({ - type: ANTENNAS_FETCH_REQUEST, -}); - -export const fetchAntennasSuccess = antennas => ({ - type: ANTENNAS_FETCH_SUCCESS, - antennas, -}); - -export const fetchAntennasFail = error => ({ - type: ANTENNAS_FETCH_FAIL, - error, -}); - -export const submitAntennaEditor = shouldReset => (dispatch, getState) => { - const antennaId = getState().getIn(['antennaEditor', 'antennaId']); - const title = getState().getIn(['antennaEditor', 'title']); - - if (antennaId === null) { - dispatch(createAntenna(title, shouldReset)); - } else { - dispatch(updateAntenna(antennaId, title, shouldReset)); - } -}; - -export const setupAntennaEditor = antennaId => (dispatch, getState) => { - dispatch({ - type: ANTENNA_EDITOR_SETUP, - antenna: getState().getIn(['antennas', antennaId]), - }); - - dispatch(fetchAntennaAccounts(antennaId)); -}; - -export const setupExcludeAntennaEditor = antennaId => (dispatch, getState) => { - dispatch({ - type: ANTENNA_EDITOR_SETUP, - antenna: getState().getIn(['antennas', antennaId]), - }); - - dispatch(fetchAntennaExcludeAccounts(antennaId)); -}; - -export const changeAntennaEditorTitle = value => ({ - type: ANTENNA_EDITOR_TITLE_CHANGE, - value, -}); - -export const createAntenna = (title, shouldReset) => (dispatch, getState) => { - dispatch(createAntennaRequest()); - - api(getState).post('/api/v1/antennas', { title }).then(({ data }) => { - dispatch(createAntennaSuccess(data)); - - if (shouldReset) { - dispatch(resetAntennaEditor()); - } - }).catch(err => dispatch(createAntennaFail(err))); -}; - -export const createAntennaRequest = () => ({ - type: ANTENNA_CREATE_REQUEST, -}); - -export const createAntennaSuccess = antenna => ({ - type: ANTENNA_CREATE_SUCCESS, - antenna, -}); - -export const createAntennaFail = error => ({ - type: ANTENNA_CREATE_FAIL, - error, -}); - -export const updateAntenna = (id, title, shouldReset, list_id, stl, ltl, with_media_only, ignore_reblog, insert_feeds) => (dispatch, getState) => { - dispatch(updateAntennaRequest(id)); - - api(getState).put(`/api/v1/antennas/${id}`, { title, list_id, stl, ltl, with_media_only, ignore_reblog, insert_feeds }).then(({ data }) => { - dispatch(updateAntennaSuccess(data)); - - if (shouldReset) { - dispatch(resetAntennaEditor()); - } - }).catch(err => dispatch(updateAntennaFail(id, err))); -}; - -export const updateAntennaRequest = id => ({ - type: ANTENNA_UPDATE_REQUEST, - id, -}); - -export const updateAntennaSuccess = antenna => ({ - type: ANTENNA_UPDATE_SUCCESS, - antenna, -}); - -export const updateAntennaFail = (id, error) => ({ - type: ANTENNA_UPDATE_FAIL, - id, - error, -}); - -export const resetAntennaEditor = () => ({ - type: ANTENNA_EDITOR_RESET, -}); - -export const deleteAntenna = id => (dispatch, getState) => { - dispatch(deleteAntennaRequest(id)); - - api(getState).delete(`/api/v1/antennas/${id}`) - .then(() => dispatch(deleteAntennaSuccess(id))) - .catch(err => dispatch(deleteAntennaFail(id, err))); -}; - -export const deleteAntennaRequest = id => ({ - type: ANTENNA_DELETE_REQUEST, - id, -}); - -export const deleteAntennaSuccess = id => ({ - type: ANTENNA_DELETE_SUCCESS, - id, -}); - -export const deleteAntennaFail = (id, error) => ({ - type: ANTENNA_DELETE_FAIL, - id, - error, -}); - -export const fetchAntennaAccounts = antennaId => (dispatch, getState) => { - dispatch(fetchAntennaAccountsRequest(antennaId)); - - api(getState).get(`/api/v1/antennas/${antennaId}/accounts`, { params: { limit: 0 } }).then(({ data }) => { - dispatch(importFetchedAccounts(data)); - dispatch(fetchAntennaAccountsSuccess(antennaId, data)); - }).catch(err => dispatch(fetchAntennaAccountsFail(antennaId, err))); -}; - -export const fetchAntennaAccountsRequest = id => ({ - type: ANTENNA_ACCOUNTS_FETCH_REQUEST, - id, -}); - -export const fetchAntennaAccountsSuccess = (id, accounts, next) => ({ - type: ANTENNA_ACCOUNTS_FETCH_SUCCESS, - id, - accounts, - next, -}); - -export const fetchAntennaAccountsFail = (id, error) => ({ - type: ANTENNA_ACCOUNTS_FETCH_FAIL, - id, - error, -}); - -export const fetchAntennaExcludeAccounts = antennaId => (dispatch, getState) => { - dispatch(fetchAntennaExcludeAccountsRequest(antennaId)); - - api(getState).get(`/api/v1/antennas/${antennaId}/exclude_accounts`, { params: { limit: 0 } }).then(({ data }) => { - dispatch(importFetchedAccounts(data)); - dispatch(fetchAntennaExcludeAccountsSuccess(antennaId, data)); - }).catch(err => dispatch(fetchAntennaExcludeAccountsFail(antennaId, err))); -}; - -export const fetchAntennaExcludeAccountsRequest = id => ({ - type: ANTENNA_EXCLUDE_ACCOUNTS_FETCH_REQUEST, - id, -}); - -export const fetchAntennaExcludeAccountsSuccess = (id, accounts, next) => ({ - type: ANTENNA_EXCLUDE_ACCOUNTS_FETCH_SUCCESS, - id, - accounts, - next, -}); - -export const fetchAntennaExcludeAccountsFail = (id, error) => ({ - type: ANTENNA_EXCLUDE_ACCOUNTS_FETCH_FAIL, - id, - error, -}); - -export const fetchAntennaSuggestions = q => (dispatch, getState) => { - const params = { - q, - resolve: false, - }; - - api(getState).get('/api/v1/accounts/search', { params }).then(({ data }) => { - dispatch(importFetchedAccounts(data)); - dispatch(fetchAntennaSuggestionsReady(q, data)); - }).catch(error => dispatch(showAlertForError(error))); -}; - -export const fetchAntennaSuggestionsReady = (query, accounts) => ({ - type: ANTENNA_EDITOR_SUGGESTIONS_READY, - query, - accounts, -}); - -export const clearAntennaSuggestions = () => ({ - type: ANTENNA_EDITOR_SUGGESTIONS_CLEAR, -}); - -export const changeAntennaSuggestions = value => ({ - type: ANTENNA_EDITOR_SUGGESTIONS_CHANGE, - value, -}); - -export const addToAntennaEditor = accountId => (dispatch, getState) => { - dispatch(addToAntenna(getState().getIn(['antennaEditor', 'antennaId']), accountId)); -}; - -export const addToAntenna = (antennaId, accountId) => (dispatch, getState) => { - dispatch(addToAntennaRequest(antennaId, accountId)); - - api(getState).post(`/api/v1/antennas/${antennaId}/accounts`, { account_ids: [accountId] }) - .then(() => dispatch(addToAntennaSuccess(antennaId, accountId))) - .catch(err => dispatch(addToAntennaFail(antennaId, accountId, err))); -}; - -export const addToAntennaRequest = (antennaId, accountId) => ({ - type: ANTENNA_EDITOR_ADD_REQUEST, - antennaId, - accountId, -}); - -export const addToAntennaSuccess = (antennaId, accountId) => ({ - type: ANTENNA_EDITOR_ADD_SUCCESS, - antennaId, - accountId, -}); - -export const addToAntennaFail = (antennaId, accountId, error) => ({ - type: ANTENNA_EDITOR_ADD_FAIL, - antennaId, - accountId, - error, -}); - -export const addExcludeToAntennaEditor = accountId => (dispatch, getState) => { - dispatch(addExcludeToAntenna(getState().getIn(['antennaEditor', 'antennaId']), accountId)); -}; - -export const addExcludeToAntenna = (antennaId, accountId) => (dispatch, getState) => { - dispatch(addExcludeToAntennaRequest(antennaId, accountId)); - - api(getState).post(`/api/v1/antennas/${antennaId}/exclude_accounts`, { account_ids: [accountId] }) - .then(() => dispatch(addExcludeToAntennaSuccess(antennaId, accountId))) - .catch(err => dispatch(addExcludeToAntennaFail(antennaId, accountId, err))); -}; - -export const addExcludeToAntennaRequest = (antennaId, accountId) => ({ - type: ANTENNA_EDITOR_ADD_EXCLUDE_REQUEST, - antennaId, - accountId, -}); - -export const addExcludeToAntennaSuccess = (antennaId, accountId) => ({ - type: ANTENNA_EDITOR_ADD_EXCLUDE_SUCCESS, - antennaId, - accountId, -}); - -export const addExcludeToAntennaFail = (antennaId, accountId, error) => ({ - type: ANTENNA_EDITOR_ADD_EXCLUDE_FAIL, - antennaId, - accountId, - error, -}); - -export const removeFromAntennaEditor = accountId => (dispatch, getState) => { - dispatch(removeFromAntenna(getState().getIn(['antennaEditor', 'antennaId']), accountId)); -}; - -export const removeFromAntenna = (antennaId, accountId) => (dispatch, getState) => { - dispatch(removeFromAntennaRequest(antennaId, accountId)); - - api(getState).delete(`/api/v1/antennas/${antennaId}/accounts`, { params: { account_ids: [accountId] } }) - .then(() => dispatch(removeFromAntennaSuccess(antennaId, accountId))) - .catch(err => dispatch(removeFromAntennaFail(antennaId, accountId, err))); -}; - -export const removeFromAntennaRequest = (antennaId, accountId) => ({ - type: ANTENNA_EDITOR_REMOVE_REQUEST, - antennaId, - accountId, -}); - -export const removeFromAntennaSuccess = (antennaId, accountId) => ({ - type: ANTENNA_EDITOR_REMOVE_SUCCESS, - antennaId, - accountId, -}); - -export const removeFromAntennaFail = (antennaId, accountId, error) => ({ - type: ANTENNA_EDITOR_REMOVE_FAIL, - antennaId, - accountId, - error, -}); - -export const removeExcludeFromAntennaEditor = accountId => (dispatch, getState) => { - dispatch(removeExcludeFromAntenna(getState().getIn(['antennaEditor', 'antennaId']), accountId)); -}; - -export const removeExcludeFromAntenna = (antennaId, accountId) => (dispatch, getState) => { - dispatch(removeExcludeFromAntennaRequest(antennaId, accountId)); - - api(getState).delete(`/api/v1/antennas/${antennaId}/exclude_accounts`, { params: { account_ids: [accountId] } }) - .then(() => dispatch(removeExcludeFromAntennaSuccess(antennaId, accountId))) - .catch(err => dispatch(removeExcludeFromAntennaFail(antennaId, accountId, err))); -}; - -export const removeExcludeFromAntennaRequest = (antennaId, accountId) => ({ - type: ANTENNA_EDITOR_REMOVE_EXCLUDE_REQUEST, - antennaId, - accountId, -}); - -export const removeExcludeFromAntennaSuccess = (antennaId, accountId) => ({ - type: ANTENNA_EDITOR_REMOVE_EXCLUDE_SUCCESS, - antennaId, - accountId, -}); - -export const removeExcludeFromAntennaFail = (antennaId, accountId, error) => ({ - type: ANTENNA_EDITOR_REMOVE_EXCLUDE_FAIL, - antennaId, - accountId, - error, -}); - -export const fetchAntennaDomains = antennaId => (dispatch, getState) => { - dispatch(fetchAntennaDomainsRequest(antennaId)); - - api(getState).get(`/api/v1/antennas/${antennaId}/domains`, { params: { limit: 0 } }).then(({ data }) => { - dispatch(fetchAntennaDomainsSuccess(antennaId, data)); - }).catch(err => dispatch(fetchAntennaDomainsFail(antennaId, err))); -}; - -export const fetchAntennaDomainsRequest = id => ({ - type: ANTENNA_EDITOR_FETCH_DOMAINS_REQUEST, - id, -}); - -export const fetchAntennaDomainsSuccess = (id, domains) => ({ - type: ANTENNA_EDITOR_FETCH_DOMAINS_SUCCESS, - id, - domains, -}); - -export const fetchAntennaDomainsFail = (id, error) => ({ - type: ANTENNA_EDITOR_FETCH_DOMAINS_FAIL, - id, - error, -}); - -export const addDomainToAntenna = (antennaId, domain) => (dispatch, getState) => { - dispatch(addDomainToAntennaRequest(antennaId, domain)); - - api(getState).post(`/api/v1/antennas/${antennaId}/domains`, { domains: [domain] }) - .then(() => dispatch(addDomainToAntennaSuccess(antennaId, domain))) - .catch(err => dispatch(addDomainToAntennaFail(antennaId, domain, err))); -}; - -export const addDomainToAntennaRequest = (antennaId, domain) => ({ - type: ANTENNA_EDITOR_ADD_DOMAIN_REQUEST, - antennaId, - domain, -}); - -export const addDomainToAntennaSuccess = (antennaId, domain) => ({ - type: ANTENNA_EDITOR_ADD_DOMAIN_SUCCESS, - antennaId, - domain, -}); - -export const addDomainToAntennaFail = (antennaId, domain, error) => ({ - type: ANTENNA_EDITOR_ADD_DOMAIN_FAIL, - antennaId, - domain, - error, -}); - -export const removeDomainFromAntenna = (antennaId, domain) => (dispatch, getState) => { - dispatch(removeDomainFromAntennaRequest(antennaId, domain)); - - api(getState).delete(`/api/v1/antennas/${antennaId}/domains`, { params: { domains: [domain] } }) - .then(() => dispatch(removeDomainFromAntennaSuccess(antennaId, domain))) - .catch(err => dispatch(removeDomainFromAntennaFail(antennaId, domain, err))); -}; - -export const removeDomainFromAntennaRequest = (antennaId, domain) => ({ - type: ANTENNA_EDITOR_REMOVE_DOMAIN_REQUEST, - antennaId, - domain, -}); - -export const removeDomainFromAntennaSuccess = (antennaId, domain) => ({ - type: ANTENNA_EDITOR_REMOVE_DOMAIN_SUCCESS, - antennaId, - domain, -}); - -export const removeDomainFromAntennaFail = (antennaId, domain, error) => ({ - type: ANTENNA_EDITOR_REMOVE_DOMAIN_FAIL, - antennaId, - domain, - error, -}); - -export const addExcludeDomainToAntenna = (antennaId, domain) => (dispatch, getState) => { - dispatch(addExcludeDomainToAntennaRequest(antennaId, domain)); - - api(getState).post(`/api/v1/antennas/${antennaId}/exclude_domains`, { domains: [domain] }) - .then(() => dispatch(addExcludeDomainToAntennaSuccess(antennaId, domain))) - .catch(err => dispatch(addExcludeDomainToAntennaFail(antennaId, domain, err))); -}; - -export const addExcludeDomainToAntennaRequest = (antennaId, domain) => ({ - type: ANTENNA_EDITOR_ADD_EXCLUDE_DOMAIN_REQUEST, - antennaId, - domain, -}); - -export const addExcludeDomainToAntennaSuccess = (antennaId, domain) => ({ - type: ANTENNA_EDITOR_ADD_EXCLUDE_DOMAIN_SUCCESS, - antennaId, - domain, -}); - -export const addExcludeDomainToAntennaFail = (antennaId, domain, error) => ({ - type: ANTENNA_EDITOR_ADD_EXCLUDE_DOMAIN_FAIL, - antennaId, - domain, - error, -}); - -export const removeExcludeDomainFromAntenna = (antennaId, domain) => (dispatch, getState) => { - dispatch(removeExcludeDomainFromAntennaRequest(antennaId, domain)); - - api(getState).delete(`/api/v1/antennas/${antennaId}/exclude_domains`, { params: { domains: [domain] } }) - .then(() => dispatch(removeExcludeDomainFromAntennaSuccess(antennaId, domain))) - .catch(err => dispatch(removeExcludeDomainFromAntennaFail(antennaId, domain, err))); -}; - -export const removeExcludeDomainFromAntennaRequest = (antennaId, domain) => ({ - type: ANTENNA_EDITOR_REMOVE_EXCLUDE_DOMAIN_REQUEST, - antennaId, - domain, -}); - -export const removeExcludeDomainFromAntennaSuccess = (antennaId, domain) => ({ - type: ANTENNA_EDITOR_REMOVE_EXCLUDE_DOMAIN_SUCCESS, - antennaId, - domain, -}); - -export const removeExcludeDomainFromAntennaFail = (antennaId, domain, error) => ({ - type: ANTENNA_EDITOR_REMOVE_EXCLUDE_DOMAIN_FAIL, - antennaId, - domain, - error, -}); - -export const fetchAntennaKeywords = antennaId => (dispatch, getState) => { - dispatch(fetchAntennaKeywordsRequest(antennaId)); - - api(getState).get(`/api/v1/antennas/${antennaId}/keywords`, { params: { limit: 0 } }).then(({ data }) => { - dispatch(fetchAntennaKeywordsSuccess(antennaId, data)); - }).catch(err => dispatch(fetchAntennaKeywordsFail(antennaId, err))); -}; - -export const fetchAntennaKeywordsRequest = id => ({ - type: ANTENNA_EDITOR_FETCH_KEYWORDS_REQUEST, - id, -}); - -export const fetchAntennaKeywordsSuccess = (id, keywords) => ({ - type: ANTENNA_EDITOR_FETCH_KEYWORDS_SUCCESS, - id, - keywords, -}); - -export const fetchAntennaKeywordsFail = (id, error) => ({ - type: ANTENNA_EDITOR_FETCH_KEYWORDS_FAIL, - id, - error, -}); - -export const addKeywordToAntenna = (antennaId, keyword) => (dispatch, getState) => { - dispatch(addKeywordToAntennaRequest(antennaId, keyword)); - - api(getState).post(`/api/v1/antennas/${antennaId}/keywords`, { keywords: [keyword] }) - .then(() => dispatch(addKeywordToAntennaSuccess(antennaId, keyword))) - .catch(err => dispatch(addKeywordToAntennaFail(antennaId, keyword, err))); -}; - -export const addKeywordToAntennaRequest = (antennaId, keyword) => ({ - type: ANTENNA_EDITOR_ADD_KEYWORD_REQUEST, - antennaId, - keyword, -}); - -export const addKeywordToAntennaSuccess = (antennaId, keyword) => ({ - type: ANTENNA_EDITOR_ADD_KEYWORD_SUCCESS, - antennaId, - keyword, -}); - -export const addKeywordToAntennaFail = (antennaId, keyword, error) => ({ - type: ANTENNA_EDITOR_ADD_KEYWORD_FAIL, - antennaId, - keyword, - error, -}); - -export const removeKeywordFromAntenna = (antennaId, keyword) => (dispatch, getState) => { - dispatch(removeKeywordFromAntennaRequest(antennaId, keyword)); - - api(getState).delete(`/api/v1/antennas/${antennaId}/keywords`, { params: { keywords: [keyword] } }) - .then(() => dispatch(removeKeywordFromAntennaSuccess(antennaId, keyword))) - .catch(err => dispatch(removeKeywordFromAntennaFail(antennaId, keyword, err))); -}; - -export const removeKeywordFromAntennaRequest = (antennaId, keyword) => ({ - type: ANTENNA_EDITOR_REMOVE_KEYWORD_REQUEST, - antennaId, - keyword, -}); - -export const removeKeywordFromAntennaSuccess = (antennaId, keyword) => ({ - type: ANTENNA_EDITOR_REMOVE_KEYWORD_SUCCESS, - antennaId, - keyword, -}); - -export const removeKeywordFromAntennaFail = (antennaId, keyword, error) => ({ - type: ANTENNA_EDITOR_REMOVE_KEYWORD_FAIL, - antennaId, - keyword, - error, -}); - -export const addExcludeKeywordToAntenna = (antennaId, keyword) => (dispatch, getState) => { - dispatch(addExcludeKeywordToAntennaRequest(antennaId, keyword)); - - api(getState).post(`/api/v1/antennas/${antennaId}/exclude_keywords`, { keywords: [keyword] }) - .then(() => dispatch(addExcludeKeywordToAntennaSuccess(antennaId, keyword))) - .catch(err => dispatch(addExcludeKeywordToAntennaFail(antennaId, keyword, err))); -}; - -export const addExcludeKeywordToAntennaRequest = (antennaId, keyword) => ({ - type: ANTENNA_EDITOR_ADD_EXCLUDE_KEYWORD_REQUEST, - antennaId, - keyword, -}); - -export const addExcludeKeywordToAntennaSuccess = (antennaId, keyword) => ({ - type: ANTENNA_EDITOR_ADD_EXCLUDE_KEYWORD_SUCCESS, - antennaId, - keyword, -}); - -export const addExcludeKeywordToAntennaFail = (antennaId, keyword, error) => ({ - type: ANTENNA_EDITOR_ADD_EXCLUDE_KEYWORD_FAIL, - antennaId, - keyword, - error, -}); - -export const removeExcludeKeywordFromAntenna = (antennaId, keyword) => (dispatch, getState) => { - dispatch(removeExcludeKeywordFromAntennaRequest(antennaId, keyword)); - - api(getState).delete(`/api/v1/antennas/${antennaId}/exclude_keywords`, { params: { keywords: [keyword] } }) - .then(() => dispatch(removeExcludeKeywordFromAntennaSuccess(antennaId, keyword))) - .catch(err => dispatch(removeExcludeKeywordFromAntennaFail(antennaId, keyword, err))); -}; - -export const removeExcludeKeywordFromAntennaRequest = (antennaId, keyword) => ({ - type: ANTENNA_EDITOR_REMOVE_EXCLUDE_KEYWORD_REQUEST, - antennaId, - keyword, -}); - -export const removeExcludeKeywordFromAntennaSuccess = (antennaId, keyword) => ({ - type: ANTENNA_EDITOR_REMOVE_EXCLUDE_KEYWORD_SUCCESS, - antennaId, - keyword, -}); - -export const removeExcludeKeywordFromAntennaFail = (antennaId, keyword, error) => ({ - type: ANTENNA_EDITOR_REMOVE_EXCLUDE_KEYWORD_FAIL, - antennaId, - keyword, - error, -}); - -export const fetchAntennaTags = antennaId => (dispatch, getState) => { - dispatch(fetchAntennaTagsRequest(antennaId)); - - api(getState).get(`/api/v1/antennas/${antennaId}/tags`, { params: { limit: 0 } }).then(({ data }) => { - dispatch(fetchAntennaTagsSuccess(antennaId, data)); - }).catch(err => dispatch(fetchAntennaTagsFail(antennaId, err))); -}; - -export const fetchAntennaTagsRequest = id => ({ - type: ANTENNA_EDITOR_FETCH_TAGS_REQUEST, - id, -}); - -export const fetchAntennaTagsSuccess = (id, tags) => ({ - type: ANTENNA_EDITOR_FETCH_TAGS_SUCCESS, - id, - tags, -}); - -export const fetchAntennaTagsFail = (id, error) => ({ - type: ANTENNA_EDITOR_FETCH_TAGS_FAIL, - id, - error, -}); - -export const addTagToAntenna = (antennaId, tag) => (dispatch, getState) => { - dispatch(addTagToAntennaRequest(antennaId, tag)); - - api(getState).post(`/api/v1/antennas/${antennaId}/tags`, { tags: [tag] }) - .then(() => dispatch(addTagToAntennaSuccess(antennaId, tag))) - .catch(err => dispatch(addTagToAntennaFail(antennaId, tag, err))); -}; - -export const addTagToAntennaRequest = (antennaId, tag) => ({ - type: ANTENNA_EDITOR_ADD_TAG_REQUEST, - antennaId, - tag, -}); - -export const addTagToAntennaSuccess = (antennaId, tag) => ({ - type: ANTENNA_EDITOR_ADD_TAG_SUCCESS, - antennaId, - tag, -}); - -export const addTagToAntennaFail = (antennaId, tag, error) => ({ - type: ANTENNA_EDITOR_ADD_TAG_FAIL, - antennaId, - tag, - error, -}); - -export const removeTagFromAntenna = (antennaId, tag) => (dispatch, getState) => { - dispatch(removeTagFromAntennaRequest(antennaId, tag)); - - api(getState).delete(`/api/v1/antennas/${antennaId}/tags`, { params: { tags: [tag] } }) - .then(() => dispatch(removeTagFromAntennaSuccess(antennaId, tag))) - .catch(err => dispatch(removeTagFromAntennaFail(antennaId, tag, err))); -}; - -export const removeTagFromAntennaRequest = (antennaId, tag) => ({ - type: ANTENNA_EDITOR_REMOVE_TAG_REQUEST, - antennaId, - tag, -}); - -export const removeTagFromAntennaSuccess = (antennaId, tag) => ({ - type: ANTENNA_EDITOR_REMOVE_TAG_SUCCESS, - antennaId, - tag, -}); - -export const removeTagFromAntennaFail = (antennaId, tag, error) => ({ - type: ANTENNA_EDITOR_REMOVE_TAG_FAIL, - antennaId, - tag, - error, -}); - -export const addExcludeTagToAntenna = (antennaId, tag) => (dispatch, getState) => { - dispatch(addExcludeTagToAntennaRequest(antennaId, tag)); - - api(getState).post(`/api/v1/antennas/${antennaId}/exclude_tags`, { tags: [tag] }) - .then(() => dispatch(addExcludeTagToAntennaSuccess(antennaId, tag))) - .catch(err => dispatch(addExcludeTagToAntennaFail(antennaId, tag, err))); -}; - -export const addExcludeTagToAntennaRequest = (antennaId, tag) => ({ - type: ANTENNA_EDITOR_ADD_EXCLUDE_TAG_REQUEST, - antennaId, - tag, -}); - -export const addExcludeTagToAntennaSuccess = (antennaId, tag) => ({ - type: ANTENNA_EDITOR_ADD_EXCLUDE_TAG_SUCCESS, - antennaId, - tag, -}); - -export const addExcludeTagToAntennaFail = (antennaId, tag, error) => ({ - type: ANTENNA_EDITOR_ADD_EXCLUDE_TAG_FAIL, - antennaId, - tag, - error, -}); - -export const removeExcludeTagFromAntenna = (antennaId, tag) => (dispatch, getState) => { - dispatch(removeExcludeTagFromAntennaRequest(antennaId, tag)); - - api(getState).delete(`/api/v1/antennas/${antennaId}/exclude_tags`, { params: { tags: [tag] } }) - .then(() => dispatch(removeExcludeTagFromAntennaSuccess(antennaId, tag))) - .catch(err => dispatch(removeExcludeTagFromAntennaFail(antennaId, tag, err))); -}; - -export const removeExcludeTagFromAntennaRequest = (antennaId, tag) => ({ - type: ANTENNA_EDITOR_REMOVE_EXCLUDE_TAG_REQUEST, - antennaId, - tag, -}); - -export const removeExcludeTagFromAntennaSuccess = (antennaId, tag) => ({ - type: ANTENNA_EDITOR_REMOVE_EXCLUDE_TAG_SUCCESS, - antennaId, - tag, -}); - -export const removeExcludeTagFromAntennaFail = (antennaId, tag, error) => ({ - type: ANTENNA_EDITOR_REMOVE_EXCLUDE_TAG_FAIL, - antennaId, - tag, - error, -}); - -export const resetAntennaAdder = () => ({ - type: ANTENNA_ADDER_RESET, -}); - -export const setupAntennaAdder = accountId => (dispatch, getState) => { - dispatch({ - type: ANTENNA_ADDER_SETUP, - account: getState().getIn(['accounts', accountId]), - }); - dispatch(fetchAntennas()); - dispatch(fetchAccountAntennas(accountId)); -}; - -export const setupExcludeAntennaAdder = accountId => (dispatch, getState) => { - dispatch({ - type: ANTENNA_ADDER_SETUP, - account: getState().getIn(['accounts', accountId]), - }); - dispatch(fetchAntennas()); - dispatch(fetchExcludeAccountAntennas(accountId)); -}; - -export const fetchAccountAntennas = accountId => (dispatch, getState) => { - dispatch(fetchAccountAntennasRequest(accountId)); - - api(getState).get(`/api/v1/accounts/${accountId}/antennas`) - .then(({ data }) => dispatch(fetchAccountAntennasSuccess(accountId, data))) - .catch(err => dispatch(fetchAccountAntennasFail(accountId, err))); -}; - -export const fetchAccountAntennasRequest = id => ({ - type:ANTENNA_ADDER_ANTENNAS_FETCH_REQUEST, - id, -}); - -export const fetchAccountAntennasSuccess = (id, antennas) => ({ - type: ANTENNA_ADDER_ANTENNAS_FETCH_SUCCESS, - id, - antennas, -}); - -export const fetchAccountAntennasFail = (id, err) => ({ - type: ANTENNA_ADDER_ANTENNAS_FETCH_FAIL, - id, - err, -}); - -export const fetchExcludeAccountAntennas = accountId => (dispatch, getState) => { - dispatch(fetchExcludeAccountAntennasRequest(accountId)); - - api(getState).get(`/api/v1/accounts/${accountId}/exclude_antennas`) - .then(({ data }) => dispatch(fetchExcludeAccountAntennasSuccess(accountId, data))) - .catch(err => dispatch(fetchExcludeAccountAntennasFail(accountId, err))); -}; - -export const fetchExcludeAccountAntennasRequest = id => ({ - type:ANTENNA_ADDER_EXCLUDE_ANTENNAS_FETCH_REQUEST, - id, -}); - -export const fetchExcludeAccountAntennasSuccess = (id, antennas) => ({ - type: ANTENNA_ADDER_EXCLUDE_ANTENNAS_FETCH_SUCCESS, - id, - antennas, -}); - -export const fetchExcludeAccountAntennasFail = (id, err) => ({ - type: ANTENNA_ADDER_EXCLUDE_ANTENNAS_FETCH_FAIL, - id, - err, -}); - -export const addToAntennaAdder = antennaId => (dispatch, getState) => { - dispatch(addToAntenna(antennaId, getState().getIn(['antennaAdder', 'accountId']))); -}; - -export const removeFromAntennaAdder = antennaId => (dispatch, getState) => { - dispatch(removeFromAntenna(antennaId, getState().getIn(['antennaAdder', 'accountId']))); -}; - -export const addExcludeToAntennaAdder = antennaId => (dispatch, getState) => { - dispatch(addExcludeToAntenna(antennaId, getState().getIn(['antennaAdder', 'accountId']))); -}; - -export const removeExcludeFromAntennaAdder = antennaId => (dispatch, getState) => { - dispatch(removeExcludeFromAntenna(antennaId, getState().getIn(['antennaAdder', 'accountId']))); -}; - diff --git a/app/javascript/mastodon/actions/blocks.js b/app/javascript/mastodon/actions/blocks.js index 54296d0905..e293657ad3 100644 --- a/app/javascript/mastodon/actions/blocks.js +++ b/app/javascript/mastodon/actions/blocks.js @@ -12,6 +12,8 @@ export const BLOCKS_EXPAND_REQUEST = 'BLOCKS_EXPAND_REQUEST'; export const BLOCKS_EXPAND_SUCCESS = 'BLOCKS_EXPAND_SUCCESS'; export const BLOCKS_EXPAND_FAIL = 'BLOCKS_EXPAND_FAIL'; +export const BLOCKS_INIT_MODAL = 'BLOCKS_INIT_MODAL'; + export function fetchBlocks() { return (dispatch, getState) => { dispatch(fetchBlocksRequest()); @@ -88,12 +90,11 @@ export function expandBlocksFail(error) { export function initBlockModal(account) { return dispatch => { - dispatch(openModal({ - modalType: 'BLOCK', - modalProps: { - accountId: account.get('id'), - acct: account.get('acct'), - }, - })); + dispatch({ + type: BLOCKS_INIT_MODAL, + account, + }); + + dispatch(openModal({ modalType: 'BLOCK' })); }; } diff --git a/app/javascript/mastodon/actions/bookmark_categories.js b/app/javascript/mastodon/actions/bookmark_categories.js deleted file mode 100644 index 7d458b85ec..0000000000 --- a/app/javascript/mastodon/actions/bookmark_categories.js +++ /dev/null @@ -1,394 +0,0 @@ -import { bookmarkCategoryNeeded } from 'mastodon/initial_state'; -import { makeGetStatus } from 'mastodon/selectors'; - -import api, { getLinks } from '../api'; - -import { importFetchedStatuses } from './importer'; -import { unbookmark } from './interactions'; - -export const BOOKMARK_CATEGORY_FETCH_REQUEST = 'BOOKMARK_CATEGORY_FETCH_REQUEST'; -export const BOOKMARK_CATEGORY_FETCH_SUCCESS = 'BOOKMARK_CATEGORY_FETCH_SUCCESS'; -export const BOOKMARK_CATEGORY_FETCH_FAIL = 'BOOKMARK_CATEGORY_FETCH_FAIL'; - -export const BOOKMARK_CATEGORIES_FETCH_REQUEST = 'BOOKMARK_CATEGORIES_FETCH_REQUEST'; -export const BOOKMARK_CATEGORIES_FETCH_SUCCESS = 'BOOKMARK_CATEGORIES_FETCH_SUCCESS'; -export const BOOKMARK_CATEGORIES_FETCH_FAIL = 'BOOKMARK_CATEGORIES_FETCH_FAIL'; - -export const BOOKMARK_CATEGORY_EDITOR_TITLE_CHANGE = 'BOOKMARK_CATEGORY_EDITOR_TITLE_CHANGE'; -export const BOOKMARK_CATEGORY_EDITOR_RESET = 'BOOKMARK_CATEGORY_EDITOR_RESET'; -export const BOOKMARK_CATEGORY_EDITOR_SETUP = 'BOOKMARK_CATEGORY_EDITOR_SETUP'; - -export const BOOKMARK_CATEGORY_CREATE_REQUEST = 'BOOKMARK_CATEGORY_CREATE_REQUEST'; -export const BOOKMARK_CATEGORY_CREATE_SUCCESS = 'BOOKMARK_CATEGORY_CREATE_SUCCESS'; -export const BOOKMARK_CATEGORY_CREATE_FAIL = 'BOOKMARK_CATEGORY_CREATE_FAIL'; - -export const BOOKMARK_CATEGORY_UPDATE_REQUEST = 'BOOKMARK_CATEGORY_UPDATE_REQUEST'; -export const BOOKMARK_CATEGORY_UPDATE_SUCCESS = 'BOOKMARK_CATEGORY_UPDATE_SUCCESS'; -export const BOOKMARK_CATEGORY_UPDATE_FAIL = 'BOOKMARK_CATEGORY_UPDATE_FAIL'; - -export const BOOKMARK_CATEGORY_DELETE_REQUEST = 'BOOKMARK_CATEGORY_DELETE_REQUEST'; -export const BOOKMARK_CATEGORY_DELETE_SUCCESS = 'BOOKMARK_CATEGORY_DELETE_SUCCESS'; -export const BOOKMARK_CATEGORY_DELETE_FAIL = 'BOOKMARK_CATEGORY_DELETE_FAIL'; - -export const BOOKMARK_CATEGORY_STATUSES_FETCH_REQUEST = 'BOOKMARK_CATEGORY_STATUSES_FETCH_REQUEST'; -export const BOOKMARK_CATEGORY_STATUSES_FETCH_SUCCESS = 'BOOKMARK_CATEGORY_STATUSES_FETCH_SUCCESS'; -export const BOOKMARK_CATEGORY_STATUSES_FETCH_FAIL = 'BOOKMARK_CATEGORY_STATUSES_FETCH_FAIL'; - -export const BOOKMARK_CATEGORY_EDITOR_ADD_REQUEST = 'BOOKMARK_CATEGORY_EDITOR_ADD_REQUEST'; -export const BOOKMARK_CATEGORY_EDITOR_ADD_SUCCESS = 'BOOKMARK_CATEGORY_EDITOR_ADD_SUCCESS'; -export const BOOKMARK_CATEGORY_EDITOR_ADD_FAIL = 'BOOKMARK_CATEGORY_EDITOR_ADD_FAIL'; - -export const BOOKMARK_CATEGORY_EDITOR_REMOVE_REQUEST = 'BOOKMARK_CATEGORY_EDITOR_REMOVE_REQUEST'; -export const BOOKMARK_CATEGORY_EDITOR_REMOVE_SUCCESS = 'BOOKMARK_CATEGORY_EDITOR_REMOVE_SUCCESS'; -export const BOOKMARK_CATEGORY_EDITOR_REMOVE_FAIL = 'BOOKMARK_CATEGORY_EDITOR_REMOVE_FAIL'; - -export const BOOKMARK_CATEGORY_ADDER_RESET = 'BOOKMARK_CATEGORY_ADDER_RESET'; -export const BOOKMARK_CATEGORY_ADDER_SETUP = 'BOOKMARK_CATEGORY_ADDER_SETUP'; - -export const BOOKMARK_CATEGORY_ADDER_BOOKMARK_CATEGORIES_FETCH_REQUEST = 'BOOKMARK_CATEGORY_ADDER_BOOKMARK_CATEGORIES_FETCH_REQUEST'; -export const BOOKMARK_CATEGORY_ADDER_BOOKMARK_CATEGORIES_FETCH_SUCCESS = 'BOOKMARK_CATEGORY_ADDER_BOOKMARK_CATEGORIES_FETCH_SUCCESS'; -export const BOOKMARK_CATEGORY_ADDER_BOOKMARK_CATEGORIES_FETCH_FAIL = 'BOOKMARK_CATEGORY_ADDER_BOOKMARK_CATEGORIES_FETCH_FAIL'; - -export const BOOKMARK_CATEGORY_STATUSES_EXPAND_REQUEST = 'BOOKMARK_CATEGORY_STATUSES_EXPAND_REQUEST'; -export const BOOKMARK_CATEGORY_STATUSES_EXPAND_SUCCESS = 'BOOKMARK_CATEGORY_STATUSES_EXPAND_SUCCESS'; -export const BOOKMARK_CATEGORY_STATUSES_EXPAND_FAIL = 'BOOKMARK_CATEGORY_STATUSES_EXPAND_FAIL'; - -export const fetchBookmarkCategory = id => (dispatch, getState) => { - if (getState().getIn(['bookmark_categories', id])) { - return; - } - - dispatch(fetchBookmarkCategoryRequest(id)); - - api(getState).get(`/api/v1/bookmark_categories/${id}`) - .then(({ data }) => dispatch(fetchBookmarkCategorySuccess(data))) - .catch(err => dispatch(fetchBookmarkCategoryFail(id, err))); -}; - -export const fetchBookmarkCategoryRequest = id => ({ - type: BOOKMARK_CATEGORY_FETCH_REQUEST, - id, -}); - -export const fetchBookmarkCategorySuccess = bookmarkCategory => ({ - type: BOOKMARK_CATEGORY_FETCH_SUCCESS, - bookmarkCategory, -}); - -export const fetchBookmarkCategoryFail = (id, error) => ({ - type: BOOKMARK_CATEGORY_FETCH_FAIL, - id, - error, -}); - -export const fetchBookmarkCategories = () => (dispatch, getState) => { - dispatch(fetchBookmarkCategoriesRequest()); - - api(getState).get('/api/v1/bookmark_categories') - .then(({ data }) => dispatch(fetchBookmarkCategoriesSuccess(data))) - .catch(err => dispatch(fetchBookmarkCategoriesFail(err))); -}; - -export const fetchBookmarkCategoriesRequest = () => ({ - type: BOOKMARK_CATEGORIES_FETCH_REQUEST, -}); - -export const fetchBookmarkCategoriesSuccess = bookmarkCategories => ({ - type: BOOKMARK_CATEGORIES_FETCH_SUCCESS, - bookmarkCategories, -}); - -export const fetchBookmarkCategoriesFail = error => ({ - type: BOOKMARK_CATEGORIES_FETCH_FAIL, - error, -}); - -export const submitBookmarkCategoryEditor = shouldReset => (dispatch, getState) => { - const bookmarkCategoryId = getState().getIn(['bookmarkCategoryEditor', 'bookmarkCategoryId']); - const title = getState().getIn(['bookmarkCategoryEditor', 'title']); - - if (bookmarkCategoryId === null) { - dispatch(createBookmarkCategory(title, shouldReset)); - } else { - dispatch(updateBookmarkCategory(bookmarkCategoryId, title, shouldReset)); - } -}; - -export const setupBookmarkCategoryEditor = bookmarkCategoryId => (dispatch, getState) => { - dispatch({ - type: BOOKMARK_CATEGORY_EDITOR_SETUP, - bookmarkCategory: getState().getIn(['bookmark_categories', bookmarkCategoryId]), - }); - - dispatch(fetchBookmarkCategoryStatuses(bookmarkCategoryId)); -}; - -export const changeBookmarkCategoryEditorTitle = value => ({ - type: BOOKMARK_CATEGORY_EDITOR_TITLE_CHANGE, - value, -}); - -export const createBookmarkCategory = (title, shouldReset) => (dispatch, getState) => { - dispatch(createBookmarkCategoryRequest()); - - api(getState).post('/api/v1/bookmark_categories', { title }).then(({ data }) => { - dispatch(createBookmarkCategorySuccess(data)); - - if (shouldReset) { - dispatch(resetBookmarkCategoryEditor()); - } - }).catch(err => dispatch(createBookmarkCategoryFail(err))); -}; - -export const createBookmarkCategoryRequest = () => ({ - type: BOOKMARK_CATEGORY_CREATE_REQUEST, -}); - -export const createBookmarkCategorySuccess = bookmarkCategory => ({ - type: BOOKMARK_CATEGORY_CREATE_SUCCESS, - bookmarkCategory, -}); - -export const createBookmarkCategoryFail = error => ({ - type: BOOKMARK_CATEGORY_CREATE_FAIL, - error, -}); - -export const updateBookmarkCategory = (id, title, shouldReset) => (dispatch, getState) => { - dispatch(updateBookmarkCategoryRequest(id)); - - api(getState).put(`/api/v1/bookmark_categories/${id}`, { title }).then(({ data }) => { - dispatch(updateBookmarkCategorySuccess(data)); - - if (shouldReset) { - dispatch(resetBookmarkCategoryEditor()); - } - }).catch(err => dispatch(updateBookmarkCategoryFail(id, err))); -}; - -export const updateBookmarkCategoryRequest = id => ({ - type: BOOKMARK_CATEGORY_UPDATE_REQUEST, - id, -}); - -export const updateBookmarkCategorySuccess = bookmarkCategory => ({ - type: BOOKMARK_CATEGORY_UPDATE_SUCCESS, - bookmarkCategory, -}); - -export const updateBookmarkCategoryFail = (id, error) => ({ - type: BOOKMARK_CATEGORY_UPDATE_FAIL, - id, - error, -}); - -export const resetBookmarkCategoryEditor = () => ({ - type: BOOKMARK_CATEGORY_EDITOR_RESET, -}); - -export const deleteBookmarkCategory = id => (dispatch, getState) => { - dispatch(deleteBookmarkCategoryRequest(id)); - - api(getState).delete(`/api/v1/bookmark_categories/${id}`) - .then(() => dispatch(deleteBookmarkCategorySuccess(id))) - .catch(err => dispatch(deleteBookmarkCategoryFail(id, err))); -}; - -export const deleteBookmarkCategoryRequest = id => ({ - type: BOOKMARK_CATEGORY_DELETE_REQUEST, - id, -}); - -export const deleteBookmarkCategorySuccess = id => ({ - type: BOOKMARK_CATEGORY_DELETE_SUCCESS, - id, -}); - -export const deleteBookmarkCategoryFail = (id, error) => ({ - type: BOOKMARK_CATEGORY_DELETE_FAIL, - id, - error, -}); - -export const fetchBookmarkCategoryStatuses = bookmarkCategoryId => (dispatch, getState) => { - dispatch(fetchBookmarkCategoryStatusesRequest(bookmarkCategoryId)); - - api(getState).get(`/api/v1/bookmark_categories/${bookmarkCategoryId}/statuses`).then((response) => { - const next = getLinks(response).refs.find(link => link.rel === 'next'); - dispatch(importFetchedStatuses(response.data)); - dispatch(fetchBookmarkCategoryStatusesSuccess(bookmarkCategoryId, response.data, next ? next.uri : null)); - }).catch(err => dispatch(fetchBookmarkCategoryStatusesFail(bookmarkCategoryId, err))); -}; - -export const fetchBookmarkCategoryStatusesRequest = id => ({ - type: BOOKMARK_CATEGORY_STATUSES_FETCH_REQUEST, - id, -}); - -export const fetchBookmarkCategoryStatusesSuccess = (id, statuses, next) => ({ - type: BOOKMARK_CATEGORY_STATUSES_FETCH_SUCCESS, - id, - statuses, - next, -}); - -export const fetchBookmarkCategoryStatusesFail = (id, error) => ({ - type: BOOKMARK_CATEGORY_STATUSES_FETCH_FAIL, - id, - error, -}); - -export const addToBookmarkCategory = (bookmarkCategoryId, statusId) => (dispatch, getState) => { - dispatch(addToBookmarkCategoryRequest(bookmarkCategoryId, statusId)); - - api(getState).post(`/api/v1/bookmark_categories/${bookmarkCategoryId}/statuses`, { status_ids: [statusId] }) - .then(() => dispatch(addToBookmarkCategorySuccess(bookmarkCategoryId, statusId))) - .catch(err => dispatch(addToBookmarkCategoryFail(bookmarkCategoryId, statusId, err))); -}; - -export const addToBookmarkCategoryRequest = (bookmarkCategoryId, statusId) => ({ - type: BOOKMARK_CATEGORY_EDITOR_ADD_REQUEST, - bookmarkCategoryId, - statusId, -}); - -export const addToBookmarkCategorySuccess = (bookmarkCategoryId, statusId) => ({ - type: BOOKMARK_CATEGORY_EDITOR_ADD_SUCCESS, - bookmarkCategoryId, - statusId, -}); - -export const addToBookmarkCategoryFail = (bookmarkCategoryId, statusId, error) => ({ - type: BOOKMARK_CATEGORY_EDITOR_ADD_FAIL, - bookmarkCategoryId, - statusId, - error, -}); - -export const removeFromBookmarkCategory = (bookmarkCategoryId, statusId) => (dispatch, getState) => { - dispatch(removeFromBookmarkCategoryRequest(bookmarkCategoryId, statusId)); - - api(getState).delete(`/api/v1/bookmark_categories/${bookmarkCategoryId}/statuses`, { params: { status_ids: [statusId] } }) - .then(() => dispatch(removeFromBookmarkCategorySuccess(bookmarkCategoryId, statusId))) - .catch(err => dispatch(removeFromBookmarkCategoryFail(bookmarkCategoryId, statusId, err))); -}; - -export const removeFromBookmarkCategoryRequest = (bookmarkCategoryId, statusId) => ({ - type: BOOKMARK_CATEGORY_EDITOR_REMOVE_REQUEST, - bookmarkCategoryId, - statusId, -}); - -export const removeFromBookmarkCategorySuccess = (bookmarkCategoryId, statusId) => ({ - type: BOOKMARK_CATEGORY_EDITOR_REMOVE_SUCCESS, - bookmarkCategoryId, - statusId, -}); - -export const removeFromBookmarkCategoryFail = (bookmarkCategoryId, statusId, error) => ({ - type: BOOKMARK_CATEGORY_EDITOR_REMOVE_FAIL, - bookmarkCategoryId, - statusId, - error, -}); - -export const resetBookmarkCategoryAdder = () => ({ - type: BOOKMARK_CATEGORY_ADDER_RESET, -}); - -export const setupBookmarkCategoryAdder = statusId => (dispatch, getState) => { - dispatch({ - type: BOOKMARK_CATEGORY_ADDER_SETUP, - status: getState().getIn(['statuses', statusId]), - }); - dispatch(fetchBookmarkCategories()); - dispatch(fetchStatusBookmarkCategories(statusId)); -}; - -export const fetchStatusBookmarkCategories = statusId => (dispatch, getState) => { - dispatch(fetchStatusBookmarkCategoriesRequest(statusId)); - - api(getState).get(`/api/v1/statuses/${statusId}/bookmark_categories`) - .then(({ data }) => dispatch(fetchStatusBookmarkCategoriesSuccess(statusId, data))) - .catch(err => dispatch(fetchStatusBookmarkCategoriesFail(statusId, err))); -}; - -export const fetchStatusBookmarkCategoriesRequest = id => ({ - type:BOOKMARK_CATEGORY_ADDER_BOOKMARK_CATEGORIES_FETCH_REQUEST, - id, -}); - -export const fetchStatusBookmarkCategoriesSuccess = (id, bookmarkCategories) => ({ - type: BOOKMARK_CATEGORY_ADDER_BOOKMARK_CATEGORIES_FETCH_SUCCESS, - id, - bookmarkCategories, -}); - -export const fetchStatusBookmarkCategoriesFail = (id, err) => ({ - type: BOOKMARK_CATEGORY_ADDER_BOOKMARK_CATEGORIES_FETCH_FAIL, - id, - err, -}); - -export const addToBookmarkCategoryAdder = bookmarkCategoryId => (dispatch, getState) => { - dispatch(addToBookmarkCategory(bookmarkCategoryId, getState().getIn(['bookmarkCategoryAdder', 'statusId']))); -}; - -export const removeFromBookmarkCategoryAdder = bookmarkCategoryId => (dispatch, getState) => { - if (bookmarkCategoryNeeded) { - const categories = getState().getIn(['bookmarkCategoryAdder', 'bookmarkCategories', 'items']); - if (categories && categories.count() <= 1) { - const status = makeGetStatus()(getState(), { id: getState().getIn(['bookmarkCategoryAdder', 'statusId']) }); - dispatch(unbookmark(status)); - } else { - dispatch(removeFromBookmarkCategory(bookmarkCategoryId, getState().getIn(['bookmarkCategoryAdder', 'statusId']))); - } - } else { - dispatch(removeFromBookmarkCategory(bookmarkCategoryId, getState().getIn(['bookmarkCategoryAdder', 'statusId']))); - } -}; - -export function expandBookmarkCategoryStatuses(bookmarkCategoryId) { - return (dispatch, getState) => { - const url = getState().getIn(['bookmark_categories', bookmarkCategoryId, 'next'], null); - - if (url === null || getState().getIn(['bookmark_categories', bookmarkCategoryId, 'isLoading'])) { - return; - } - - dispatch(expandBookmarkCategoryStatusesRequest(bookmarkCategoryId)); - - api(getState).get(url).then(response => { - const next = getLinks(response).refs.find(link => link.rel === 'next'); - dispatch(importFetchedStatuses(response.data)); - dispatch(expandBookmarkCategoryStatusesSuccess(bookmarkCategoryId, response.data, next ? next.uri : null)); - }).catch(error => { - dispatch(expandBookmarkCategoryStatusesFail(bookmarkCategoryId, error)); - }); - }; -} - -export function expandBookmarkCategoryStatusesRequest(id) { - return { - type: BOOKMARK_CATEGORY_STATUSES_EXPAND_REQUEST, - id, - }; -} - -export function expandBookmarkCategoryStatusesSuccess(id, statuses, next) { - return { - type: BOOKMARK_CATEGORY_STATUSES_EXPAND_SUCCESS, - id, - statuses, - next, - }; -} - -export function expandBookmarkCategoryStatusesFail(id, error) { - return { - type: BOOKMARK_CATEGORY_STATUSES_EXPAND_FAIL, - id, - error, - }; -} - diff --git a/app/javascript/mastodon/actions/bookmarks.js b/app/javascript/mastodon/actions/bookmarks.js index 91c1d61e10..0b16f61e63 100644 --- a/app/javascript/mastodon/actions/bookmarks.js +++ b/app/javascript/mastodon/actions/bookmarks.js @@ -1,5 +1,3 @@ -// Kmyblue tracking marker: copied bookmark_categories.js - import api, { getLinks } from '../api'; import { importFetchedStatuses } from './importer'; diff --git a/app/javascript/mastodon/actions/boosts.js b/app/javascript/mastodon/actions/boosts.js new file mode 100644 index 0000000000..1fc2e391e2 --- /dev/null +++ b/app/javascript/mastodon/actions/boosts.js @@ -0,0 +1,32 @@ +import { openModal } from './modal'; + +export const BOOSTS_INIT_MODAL = 'BOOSTS_INIT_MODAL'; +export const BOOSTS_CHANGE_PRIVACY = 'BOOSTS_CHANGE_PRIVACY'; + +export function initBoostModal(props) { + return (dispatch, getState) => { + const default_privacy = getState().getIn(['compose', 'default_privacy']); + + const privacy = props.status.get('visibility') === 'private' ? 'private' : default_privacy; + + dispatch({ + type: BOOSTS_INIT_MODAL, + privacy, + }); + + dispatch(openModal({ + modalType: 'BOOST', + modalProps: props, + })); + }; +} + + +export function changeBoostPrivacy(privacy) { + return dispatch => { + dispatch({ + type: BOOSTS_CHANGE_PRIVACY, + privacy, + }); + }; +} diff --git a/app/javascript/mastodon/actions/circles.js b/app/javascript/mastodon/actions/circles.js deleted file mode 100644 index 7ed41b4045..0000000000 --- a/app/javascript/mastodon/actions/circles.js +++ /dev/null @@ -1,470 +0,0 @@ -import api, { getLinks } from '../api'; - -import { showAlertForError } from './alerts'; -import { importFetchedAccounts, importFetchedStatuses } from './importer'; - -export const CIRCLE_FETCH_REQUEST = 'CIRCLE_FETCH_REQUEST'; -export const CIRCLE_FETCH_SUCCESS = 'CIRCLE_FETCH_SUCCESS'; -export const CIRCLE_FETCH_FAIL = 'CIRCLE_FETCH_FAIL'; - -export const CIRCLES_FETCH_REQUEST = 'CIRCLES_FETCH_REQUEST'; -export const CIRCLES_FETCH_SUCCESS = 'CIRCLES_FETCH_SUCCESS'; -export const CIRCLES_FETCH_FAIL = 'CIRCLES_FETCH_FAIL'; - -export const CIRCLE_EDITOR_TITLE_CHANGE = 'CIRCLE_EDITOR_TITLE_CHANGE'; -export const CIRCLE_EDITOR_RESET = 'CIRCLE_EDITOR_RESET'; -export const CIRCLE_EDITOR_SETUP = 'CIRCLE_EDITOR_SETUP'; - -export const CIRCLE_CREATE_REQUEST = 'CIRCLE_CREATE_REQUEST'; -export const CIRCLE_CREATE_SUCCESS = 'CIRCLE_CREATE_SUCCESS'; -export const CIRCLE_CREATE_FAIL = 'CIRCLE_CREATE_FAIL'; - -export const CIRCLE_UPDATE_REQUEST = 'CIRCLE_UPDATE_REQUEST'; -export const CIRCLE_UPDATE_SUCCESS = 'CIRCLE_UPDATE_SUCCESS'; -export const CIRCLE_UPDATE_FAIL = 'CIRCLE_UPDATE_FAIL'; - -export const CIRCLE_DELETE_REQUEST = 'CIRCLE_DELETE_REQUEST'; -export const CIRCLE_DELETE_SUCCESS = 'CIRCLE_DELETE_SUCCESS'; -export const CIRCLE_DELETE_FAIL = 'CIRCLE_DELETE_FAIL'; - -export const CIRCLE_ACCOUNTS_FETCH_REQUEST = 'CIRCLE_ACCOUNTS_FETCH_REQUEST'; -export const CIRCLE_ACCOUNTS_FETCH_SUCCESS = 'CIRCLE_ACCOUNTS_FETCH_SUCCESS'; -export const CIRCLE_ACCOUNTS_FETCH_FAIL = 'CIRCLE_ACCOUNTS_FETCH_FAIL'; - -export const CIRCLE_EDITOR_SUGGESTIONS_CHANGE = 'CIRCLE_EDITOR_SUGGESTIONS_CHANGE'; -export const CIRCLE_EDITOR_SUGGESTIONS_READY = 'CIRCLE_EDITOR_SUGGESTIONS_READY'; -export const CIRCLE_EDITOR_SUGGESTIONS_CLEAR = 'CIRCLE_EDITOR_SUGGESTIONS_CLEAR'; - -export const CIRCLE_EDITOR_ADD_REQUEST = 'CIRCLE_EDITOR_ADD_REQUEST'; -export const CIRCLE_EDITOR_ADD_SUCCESS = 'CIRCLE_EDITOR_ADD_SUCCESS'; -export const CIRCLE_EDITOR_ADD_FAIL = 'CIRCLE_EDITOR_ADD_FAIL'; - -export const CIRCLE_EDITOR_REMOVE_REQUEST = 'CIRCLE_EDITOR_REMOVE_REQUEST'; -export const CIRCLE_EDITOR_REMOVE_SUCCESS = 'CIRCLE_EDITOR_REMOVE_SUCCESS'; -export const CIRCLE_EDITOR_REMOVE_FAIL = 'CIRCLE_EDITOR_REMOVE_FAIL'; - -export const CIRCLE_ADDER_RESET = 'CIRCLE_ADDER_RESET'; -export const CIRCLE_ADDER_SETUP = 'CIRCLE_ADDER_SETUP'; - -export const CIRCLE_ADDER_CIRCLES_FETCH_REQUEST = 'CIRCLE_ADDER_CIRCLES_FETCH_REQUEST'; -export const CIRCLE_ADDER_CIRCLES_FETCH_SUCCESS = 'CIRCLE_ADDER_CIRCLES_FETCH_SUCCESS'; -export const CIRCLE_ADDER_CIRCLES_FETCH_FAIL = 'CIRCLE_ADDER_CIRCLES_FETCH_FAIL'; - -export const CIRCLE_STATUSES_FETCH_REQUEST = 'CIRCLE_STATUSES_FETCH_REQUEST'; -export const CIRCLE_STATUSES_FETCH_SUCCESS = 'CIRCLE_STATUSES_FETCH_SUCCESS'; -export const CIRCLE_STATUSES_FETCH_FAIL = 'CIRCLE_STATUSES_FETCH_FAIL'; - -export const CIRCLE_STATUSES_EXPAND_REQUEST = 'CIRCLE_STATUSES_EXPAND_REQUEST'; -export const CIRCLE_STATUSES_EXPAND_SUCCESS = 'CIRCLE_STATUSES_EXPAND_SUCCESS'; -export const CIRCLE_STATUSES_EXPAND_FAIL = 'CIRCLE_STATUSES_EXPAND_FAIL'; - -export const fetchCircle = id => (dispatch, getState) => { - if (getState().getIn(['circles', id])) { - return; - } - - dispatch(fetchCircleRequest(id)); - - api(getState).get(`/api/v1/circles/${id}`) - .then(({ data }) => dispatch(fetchCircleSuccess(data))) - .catch(err => dispatch(fetchCircleFail(id, err))); -}; - -export const fetchCircleRequest = id => ({ - type: CIRCLE_FETCH_REQUEST, - id, -}); - -export const fetchCircleSuccess = circle => ({ - type: CIRCLE_FETCH_SUCCESS, - circle, -}); - -export const fetchCircleFail = (id, error) => ({ - type: CIRCLE_FETCH_FAIL, - id, - error, -}); - -export const fetchCircles = () => (dispatch, getState) => { - dispatch(fetchCirclesRequest()); - - api(getState).get('/api/v1/circles') - .then(({ data }) => dispatch(fetchCirclesSuccess(data))) - .catch(err => dispatch(fetchCirclesFail(err))); -}; - -export const fetchCirclesRequest = () => ({ - type: CIRCLES_FETCH_REQUEST, -}); - -export const fetchCirclesSuccess = circles => ({ - type: CIRCLES_FETCH_SUCCESS, - circles, -}); - -export const fetchCirclesFail = error => ({ - type: CIRCLES_FETCH_FAIL, - error, -}); - -export const submitCircleEditor = shouldReset => (dispatch, getState) => { - const circleId = getState().getIn(['circleEditor', 'circleId']); - const title = getState().getIn(['circleEditor', 'title']); - - if (circleId === null) { - dispatch(createCircle(title, shouldReset)); - } else { - dispatch(updateCircle(circleId, title, shouldReset)); - } -}; - -export const setupCircleEditor = circleId => (dispatch, getState) => { - dispatch({ - type: CIRCLE_EDITOR_SETUP, - circle: getState().getIn(['circles', circleId]), - }); - - dispatch(fetchCircleAccounts(circleId)); -}; - -export const changeCircleEditorTitle = value => ({ - type: CIRCLE_EDITOR_TITLE_CHANGE, - value, -}); - -export const createCircle = (title, shouldReset) => (dispatch, getState) => { - dispatch(createCircleRequest()); - - api(getState).post('/api/v1/circles', { title }).then(({ data }) => { - dispatch(createCircleSuccess(data)); - - if (shouldReset) { - dispatch(resetCircleEditor()); - } - }).catch(err => dispatch(createCircleFail(err))); -}; - -export const createCircleRequest = () => ({ - type: CIRCLE_CREATE_REQUEST, -}); - -export const createCircleSuccess = circle => ({ - type: CIRCLE_CREATE_SUCCESS, - circle, -}); - -export const createCircleFail = error => ({ - type: CIRCLE_CREATE_FAIL, - error, -}); - -export const updateCircle = (id, title, shouldReset, isExclusive, replies_policy) => (dispatch, getState) => { - dispatch(updateCircleRequest(id)); - - api(getState).put(`/api/v1/circles/${id}`, { title, replies_policy, exclusive: typeof isExclusive === 'undefined' ? undefined : !!isExclusive }).then(({ data }) => { - dispatch(updateCircleSuccess(data)); - - if (shouldReset) { - dispatch(resetCircleEditor()); - } - }).catch(err => dispatch(updateCircleFail(id, err))); -}; - -export const updateCircleRequest = id => ({ - type: CIRCLE_UPDATE_REQUEST, - id, -}); - -export const updateCircleSuccess = circle => ({ - type: CIRCLE_UPDATE_SUCCESS, - circle, -}); - -export const updateCircleFail = (id, error) => ({ - type: CIRCLE_UPDATE_FAIL, - id, - error, -}); - -export const resetCircleEditor = () => ({ - type: CIRCLE_EDITOR_RESET, -}); - -export const deleteCircle = id => (dispatch, getState) => { - dispatch(deleteCircleRequest(id)); - - api(getState).delete(`/api/v1/circles/${id}`) - .then(() => dispatch(deleteCircleSuccess(id))) - .catch(err => dispatch(deleteCircleFail(id, err))); -}; - -export const deleteCircleRequest = id => ({ - type: CIRCLE_DELETE_REQUEST, - id, -}); - -export const deleteCircleSuccess = id => ({ - type: CIRCLE_DELETE_SUCCESS, - id, -}); - -export const deleteCircleFail = (id, error) => ({ - type: CIRCLE_DELETE_FAIL, - id, - error, -}); - -export const fetchCircleAccounts = circleId => (dispatch, getState) => { - dispatch(fetchCircleAccountsRequest(circleId)); - - api(getState).get(`/api/v1/circles/${circleId}/accounts`, { params: { limit: 0 } }).then(({ data }) => { - dispatch(importFetchedAccounts(data)); - dispatch(fetchCircleAccountsSuccess(circleId, data)); - }).catch(err => dispatch(fetchCircleAccountsFail(circleId, err))); -}; - -export const fetchCircleAccountsRequest = id => ({ - type: CIRCLE_ACCOUNTS_FETCH_REQUEST, - id, -}); - -export const fetchCircleAccountsSuccess = (id, accounts, next) => ({ - type: CIRCLE_ACCOUNTS_FETCH_SUCCESS, - id, - accounts, - next, -}); - -export const fetchCircleAccountsFail = (id, error) => ({ - type: CIRCLE_ACCOUNTS_FETCH_FAIL, - id, - error, -}); - -export const fetchCircleSuggestions = q => (dispatch, getState) => { - const params = { - q, - resolve: false, - follower: true, - }; - - api(getState).get('/api/v1/accounts/search', { params }).then(({ data }) => { - dispatch(importFetchedAccounts(data)); - dispatch(fetchCircleSuggestionsReady(q, data)); - }).catch(error => dispatch(showAlertForError(error))); -}; - -export const fetchCircleSuggestionsReady = (query, accounts) => ({ - type: CIRCLE_EDITOR_SUGGESTIONS_READY, - query, - accounts, -}); - -export const clearCircleSuggestions = () => ({ - type: CIRCLE_EDITOR_SUGGESTIONS_CLEAR, -}); - -export const changeCircleSuggestions = value => ({ - type: CIRCLE_EDITOR_SUGGESTIONS_CHANGE, - value, -}); - -export const addToCircleEditor = accountId => (dispatch, getState) => { - dispatch(addToCircle(getState().getIn(['circleEditor', 'circleId']), accountId)); -}; - -export const addToCircle = (circleId, accountId) => (dispatch, getState) => { - dispatch(addToCircleRequest(circleId, accountId)); - - api(getState).post(`/api/v1/circles/${circleId}/accounts`, { account_ids: [accountId] }) - .then(() => dispatch(addToCircleSuccess(circleId, accountId))) - .catch(err => dispatch(addToCircleFail(circleId, accountId, err))); -}; - -export const addToCircleRequest = (circleId, accountId) => ({ - type: CIRCLE_EDITOR_ADD_REQUEST, - circleId, - accountId, -}); - -export const addToCircleSuccess = (circleId, accountId) => ({ - type: CIRCLE_EDITOR_ADD_SUCCESS, - circleId, - accountId, -}); - -export const addToCircleFail = (circleId, accountId, error) => ({ - type: CIRCLE_EDITOR_ADD_FAIL, - circleId, - accountId, - error, -}); - -export const removeFromCircleEditor = accountId => (dispatch, getState) => { - dispatch(removeFromCircle(getState().getIn(['circleEditor', 'circleId']), accountId)); -}; - -export const removeFromCircle = (circleId, accountId) => (dispatch, getState) => { - dispatch(removeFromCircleRequest(circleId, accountId)); - - api(getState).delete(`/api/v1/circles/${circleId}/accounts`, { params: { account_ids: [accountId] } }) - .then(() => dispatch(removeFromCircleSuccess(circleId, accountId))) - .catch(err => dispatch(removeFromCircleFail(circleId, accountId, err))); -}; - -export const removeFromCircleRequest = (circleId, accountId) => ({ - type: CIRCLE_EDITOR_REMOVE_REQUEST, - circleId, - accountId, -}); - -export const removeFromCircleSuccess = (circleId, accountId) => ({ - type: CIRCLE_EDITOR_REMOVE_SUCCESS, - circleId, - accountId, -}); - -export const removeFromCircleFail = (circleId, accountId, error) => ({ - type: CIRCLE_EDITOR_REMOVE_FAIL, - circleId, - accountId, - error, -}); - -export const resetCircleAdder = () => ({ - type: CIRCLE_ADDER_RESET, -}); - -export const setupCircleAdder = accountId => (dispatch, getState) => { - dispatch({ - type: CIRCLE_ADDER_SETUP, - account: getState().getIn(['accounts', accountId]), - }); - dispatch(fetchCircles()); - dispatch(fetchAccountCircles(accountId)); -}; - -export const fetchAccountCircles = accountId => (dispatch, getState) => { - dispatch(fetchAccountCirclesRequest(accountId)); - - api(getState).get(`/api/v1/accounts/${accountId}/circles`) - .then(({ data }) => dispatch(fetchAccountCirclesSuccess(accountId, data))) - .catch(err => dispatch(fetchAccountCirclesFail(accountId, err))); -}; - -export const fetchAccountCirclesRequest = id => ({ - type:CIRCLE_ADDER_CIRCLES_FETCH_REQUEST, - id, -}); - -export const fetchAccountCirclesSuccess = (id, circles) => ({ - type: CIRCLE_ADDER_CIRCLES_FETCH_SUCCESS, - id, - circles, -}); - -export const fetchAccountCirclesFail = (id, err) => ({ - type: CIRCLE_ADDER_CIRCLES_FETCH_FAIL, - id, - err, -}); - -export const addToCircleAdder = circleId => (dispatch, getState) => { - dispatch(addToCircle(circleId, getState().getIn(['circleAdder', 'accountId']))); -}; - -export const removeFromCircleAdder = circleId => (dispatch, getState) => { - dispatch(removeFromCircle(circleId, getState().getIn(['circleAdder', 'accountId']))); -}; - -export function fetchCircleStatuses(circleId) { - return (dispatch, getState) => { - if (getState().getIn(['circles', circleId, 'isLoading'])) { - return; - } - const items = getState().getIn(['circles', circleId, 'items']); - if (items && items.size > 0) { - return; - } - - dispatch(fetchCircleStatusesRequest(circleId)); - - api(getState).get(`/api/v1/circles/${circleId}/statuses`).then(response => { - const next = getLinks(response).refs.find(link => link.rel === 'next'); - dispatch(importFetchedStatuses(response.data)); - dispatch(fetchCircleStatusesSuccess(circleId, response.data, next ? next.uri : null)); - }).catch(error => { - dispatch(fetchCircleStatusesFail(circleId, error)); - }); - }; -} - -export function fetchCircleStatusesRequest(id) { - return { - type: CIRCLE_STATUSES_FETCH_REQUEST, - id, - }; -} - -export function fetchCircleStatusesSuccess(id, statuses, next) { - return { - type: CIRCLE_STATUSES_FETCH_SUCCESS, - id, - statuses, - next, - }; -} - -export function fetchCircleStatusesFail(id, error) { - return { - type: CIRCLE_STATUSES_FETCH_FAIL, - id, - error, - }; -} - -export function expandCircleStatuses(circleId) { - return (dispatch, getState) => { - const url = getState().getIn(['circles', circleId, 'next'], null); - - if (url === null || getState().getIn(['circles', circleId, 'isLoading'])) { - return; - } - - dispatch(expandCircleStatusesRequest(circleId)); - - api(getState).get(url).then(response => { - const next = getLinks(response).refs.find(link => link.rel === 'next'); - dispatch(importFetchedStatuses(response.data)); - dispatch(expandCircleStatusesSuccess(circleId, response.data, next ? next.uri : null)); - }).catch(error => { - dispatch(expandCircleStatusesFail(circleId, error)); - }); - }; -} - -export function expandCircleStatusesRequest(id) { - return { - type: CIRCLE_STATUSES_EXPAND_REQUEST, - id, - }; -} - -export function expandCircleStatusesSuccess(id, statuses, next) { - return { - type: CIRCLE_STATUSES_EXPAND_SUCCESS, - id, - statuses, - next, - }; -} - -export function expandCircleStatusesFail(id, error) { - return { - type: CIRCLE_STATUSES_EXPAND_FAIL, - id, - error, - }; -} - diff --git a/app/javascript/mastodon/actions/compose.js b/app/javascript/mastodon/actions/compose.js index b013e134fe..6abfd6157e 100644 --- a/app/javascript/mastodon/actions/compose.js +++ b/app/javascript/mastodon/actions/compose.js @@ -28,8 +28,6 @@ export const COMPOSE_DIRECT = 'COMPOSE_DIRECT'; export const COMPOSE_MENTION = 'COMPOSE_MENTION'; export const COMPOSE_RESET = 'COMPOSE_RESET'; -export const COMPOSE_WITH_CIRCLE_SUCCESS = 'COMPOSE_WITH_CIRCLE_SUCCESS'; - export const COMPOSE_UPLOAD_REQUEST = 'COMPOSE_UPLOAD_REQUEST'; export const COMPOSE_UPLOAD_SUCCESS = 'COMPOSE_UPLOAD_SUCCESS'; export const COMPOSE_UPLOAD_FAIL = 'COMPOSE_UPLOAD_FAIL'; @@ -56,16 +54,11 @@ export const COMPOSE_UNMOUNT = 'COMPOSE_UNMOUNT'; export const COMPOSE_SENSITIVITY_CHANGE = 'COMPOSE_SENSITIVITY_CHANGE'; export const COMPOSE_SPOILERNESS_CHANGE = 'COMPOSE_SPOILERNESS_CHANGE'; export const COMPOSE_SPOILER_TEXT_CHANGE = 'COMPOSE_SPOILER_TEXT_CHANGE'; -export const COMPOSE_MARKDOWN_CHANGE = 'COMPOSE_MARKDOWN_CHANGE'; export const COMPOSE_VISIBILITY_CHANGE = 'COMPOSE_VISIBILITY_CHANGE'; -export const COMPOSE_SEARCHABILITY_CHANGE= 'COMPOSE_SEARCHABILITY_CHANGE'; export const COMPOSE_COMPOSING_CHANGE = 'COMPOSE_COMPOSING_CHANGE'; export const COMPOSE_LANGUAGE_CHANGE = 'COMPOSE_LANGUAGE_CHANGE'; export const COMPOSE_EMOJI_INSERT = 'COMPOSE_EMOJI_INSERT'; -export const COMPOSE_EXPIRATION_INSERT = 'COMPOSE_EXPIRATION_INSERT'; -export const COMPOSE_FEATURED_TAG_INSERT = 'COMPOSE_FEATURED_TAG_INSERT'; -export const COMPOSE_REFERENCE_INSERT = 'COMPOSE_REFERENCE_INSERT'; export const COMPOSE_UPLOAD_CHANGE_REQUEST = 'COMPOSE_UPLOAD_UPDATE_REQUEST'; export const COMPOSE_UPLOAD_CHANGE_SUCCESS = 'COMPOSE_UPLOAD_UPDATE_SUCCESS'; @@ -78,13 +71,10 @@ export const COMPOSE_POLL_OPTION_CHANGE = 'COMPOSE_POLL_OPTION_CHANGE'; export const COMPOSE_POLL_OPTION_REMOVE = 'COMPOSE_POLL_OPTION_REMOVE'; export const COMPOSE_POLL_SETTINGS_CHANGE = 'COMPOSE_POLL_SETTINGS_CHANGE'; -export const COMPOSE_CIRCLE_CHANGE = 'COMPOSE_CIRCLE_CHANGE'; - export const INIT_MEDIA_EDIT_MODAL = 'INIT_MEDIA_EDIT_MODAL'; export const COMPOSE_CHANGE_MEDIA_DESCRIPTION = 'COMPOSE_CHANGE_MEDIA_DESCRIPTION'; export const COMPOSE_CHANGE_MEDIA_FOCUS = 'COMPOSE_CHANGE_MEDIA_FOCUS'; -export const COMPOSE_CHANGE_MEDIA_ORDER = 'COMPOSE_CHANGE_MEDIA_ORDER'; export const COMPOSE_SET_STATUS = 'COMPOSE_SET_STATUS'; export const COMPOSE_FOCUS = 'COMPOSE_FOCUS'; @@ -178,8 +168,6 @@ export function submitCompose(routerHistory) { const status = getState().getIn(['compose', 'text'], ''); const media = getState().getIn(['compose', 'media_attachments']); const statusId = getState().getIn(['compose', 'id'], null); - const circleId = getState().getIn(['compose', 'circle_id'], null); - const privacy = getState().getIn(['compose', 'privacy']); if ((!status || !status.length) && media.size === 0) { return; @@ -215,12 +203,9 @@ export function submitCompose(routerHistory) { in_reply_to_id: getState().getIn(['compose', 'in_reply_to'], null), media_ids: media.map(item => item.get('id')), media_attributes, - sensitive: media.size > 0 ? getState().getIn(['compose', 'spoiler']) : false, + sensitive: getState().getIn(['compose', 'sensitive']), spoiler_text: getState().getIn(['compose', 'spoiler']) ? getState().getIn(['compose', 'spoiler_text'], '') : '', - markdown: getState().getIn(['compose', 'markdown']), visibility: getState().getIn(['compose', 'privacy']), - searchability: getState().getIn(['compose', 'searchability']), - circle_id: getState().getIn(['compose', 'circle_id']), poll: getState().getIn(['compose', 'poll'], null), language: getState().getIn(['compose', 'language']), }, @@ -249,20 +234,16 @@ export function submitCompose(routerHistory) { dispatch(importFetchedStatus({ ...response.data })); } - if (statusId === null && response.data.visibility_ex !== 'direct') { + if (statusId === null && response.data.visibility !== 'direct') { insertIfOnline('home'); } - if (statusId === null && response.data.in_reply_to_id === null && response.data.visibility_ex === 'public') { + if (statusId === null && response.data.in_reply_to_id === null && response.data.visibility === 'public') { insertIfOnline('community'); insertIfOnline('public'); insertIfOnline(`account:${response.data.account.id}`); } - if (statusId === null && privacy === 'circle' && circleId !== null && circleId !== 0) { - dispatch(submitComposeWithCircleSuccess({ ...response.data }, circleId)); - } - dispatch(showAlert({ message: statusId === null ? messages.published : messages.saved, action: messages.open, @@ -288,14 +269,6 @@ export function submitComposeSuccess(status) { }; } -export function submitComposeWithCircleSuccess(status, circleId) { - return { - type: COMPOSE_WITH_CIRCLE_SUCCESS, - status, - circleId, - }; -} - export function submitComposeFail(error) { return { type: COMPOSE_SUBMIT_FAIL, @@ -308,8 +281,6 @@ export function uploadCompose(files) { const uploadLimit = 4; const media = getState().getIn(['compose', 'media_attachments']); const pending = getState().getIn(['compose', 'pending_media_attachments']); - const defaultSensitive = getState().getIn(['compose', 'default_sensitive']); - const spoiler = getState().getIn(['compose', 'spoiler']); const progress = new Array(files.length).fill(0); let total = Array.from(files).reduce((a, v) => a + v.size, 0); @@ -319,10 +290,15 @@ export function uploadCompose(files) { return; } + if (getState().getIn(['compose', 'poll'])) { + dispatch(showAlert({ message: messages.uploadErrorPoll })); + return; + } + dispatch(uploadComposeRequest()); for (const [i, file] of Array.from(files).entries()) { - if (media.size + i >= 4) break; + if (media.size + i > 3) break; const data = new FormData(); data.append('file', file); @@ -338,10 +314,6 @@ export function uploadCompose(files) { if (status === 200) { dispatch(uploadComposeSuccess(data, file)); - - if (defaultSensitive && !spoiler && (media.size + i) === 0) { - dispatch(changeComposeSpoilerness()); - } } else if (status === 202) { dispatch(uploadComposeProcessing()); @@ -772,12 +744,6 @@ export function changeComposeSpoilerText(text) { }; } -export function changeComposeMarkdown() { - return { - type: COMPOSE_MARKDOWN_CHANGE, - }; -} - export function changeComposeVisibility(value) { return { type: COMPOSE_VISIBILITY_CHANGE, @@ -785,13 +751,6 @@ export function changeComposeVisibility(value) { }; } -export function changeComposeSearchability(value) { - return { - type: COMPOSE_SEARCHABILITY_CHANGE, - value, - }; -} - export function insertEmojiCompose(position, emoji, needsSpace) { return { type: COMPOSE_EMOJI_INSERT, @@ -801,31 +760,6 @@ export function insertEmojiCompose(position, emoji, needsSpace) { }; } -export function insertExpirationCompose(position, data) { - return { - type: COMPOSE_EXPIRATION_INSERT, - position, - data, - }; -} - -export function insertFeaturedTagCompose(position, data) { - return { - type: COMPOSE_FEATURED_TAG_INSERT, - position, - data, - }; -} - -export function insertReferenceCompose(position, url, attributeType) { - return { - type: COMPOSE_REFERENCE_INSERT, - position, - url, - attributeType, - }; -} - export function changeComposing(value) { return { type: COMPOSE_COMPOSING_CHANGE, @@ -852,12 +786,11 @@ export function addPollOption(title) { }; } -export function changePollOption(index, title, maxOptions) { +export function changePollOption(index, title) { return { type: COMPOSE_POLL_OPTION_CHANGE, index, title, - maxOptions, }; } @@ -875,16 +808,3 @@ export function changePollSettings(expiresIn, isMultiple) { isMultiple, }; } - -export const changeMediaOrder = (a, b) => ({ - type: COMPOSE_CHANGE_MEDIA_ORDER, - a, - b, -}); - -export function changeCircle(circleId) { - return { - type: COMPOSE_CIRCLE_CHANGE, - circleId, - }; -} diff --git a/app/javascript/mastodon/actions/domain_blocks.js b/app/javascript/mastodon/actions/domain_blocks.js index 55c0a6ce9d..718002613f 100644 --- a/app/javascript/mastodon/actions/domain_blocks.js +++ b/app/javascript/mastodon/actions/domain_blocks.js @@ -1,8 +1,6 @@ import api, { getLinks } from '../api'; import { blockDomainSuccess, unblockDomainSuccess } from "./domain_blocks_typed"; -import { openModal } from './modal'; - export * from "./domain_blocks_typed"; @@ -152,12 +150,3 @@ export function expandDomainBlocksFail(error) { error, }; } - -export const initDomainBlockModal = account => dispatch => dispatch(openModal({ - modalType: 'DOMAIN_BLOCK', - modalProps: { - domain: account.get('acct').split('@')[1], - acct: account.get('acct'), - accountId: account.get('id'), - }, -})); diff --git a/app/javascript/mastodon/actions/emoji_reactions.js b/app/javascript/mastodon/actions/emoji_reactions.js deleted file mode 100644 index 6b97b1f743..0000000000 --- a/app/javascript/mastodon/actions/emoji_reactions.js +++ /dev/null @@ -1,94 +0,0 @@ -import api, { getLinks } from '../api'; - -import { importFetchedStatuses } from './importer'; - -export const EMOJI_REACTED_STATUSES_FETCH_REQUEST = 'EMOJI_REACTED_STATUSES_FETCH_REQUEST'; -export const EMOJI_REACTED_STATUSES_FETCH_SUCCESS = 'EMOJI_REACTED_STATUSES_FETCH_SUCCESS'; -export const EMOJI_REACTED_STATUSES_FETCH_FAIL = 'EMOJI_REACTED_STATUSES_FETCH_FAIL'; - -export const EMOJI_REACTED_STATUSES_EXPAND_REQUEST = 'EMOJI_REACTED_STATUSES_EXPAND_REQUEST'; -export const EMOJI_REACTED_STATUSES_EXPAND_SUCCESS = 'EMOJI_REACTED_STATUSES_EXPAND_SUCCESS'; -export const EMOJI_REACTED_STATUSES_EXPAND_FAIL = 'EMOJI_REACTED_STATUSES_EXPAND_FAIL'; - -export function fetchEmojiReactedStatuses() { - return (dispatch, getState) => { - if (getState().getIn(['status_lists', 'emoji_reactions', 'isLoading'])) { - return; - } - - dispatch(fetchEmojiReactedStatusesRequest()); - - api(getState).get('/api/v1/emoji_reactions').then(response => { - const next = getLinks(response).refs.find(link => link.rel === 'next'); - dispatch(importFetchedStatuses(response.data)); - dispatch(fetchEmojiReactedStatusesSuccess(response.data, next ? next.uri : null)); - }).catch(error => { - dispatch(fetchEmojiReactedStatusesFail(error)); - }); - }; -} - -export function fetchEmojiReactedStatusesRequest() { - return { - type: EMOJI_REACTED_STATUSES_FETCH_REQUEST, - skipLoading: true, - }; -} - -export function fetchEmojiReactedStatusesSuccess(statuses, next) { - return { - type: EMOJI_REACTED_STATUSES_FETCH_SUCCESS, - statuses, - next, - skipLoading: true, - }; -} - -export function fetchEmojiReactedStatusesFail(error) { - return { - type: EMOJI_REACTED_STATUSES_FETCH_FAIL, - error, - skipLoading: true, - }; -} - -export function expandEmojiReactedStatuses() { - return (dispatch, getState) => { - const url = getState().getIn(['status_lists', 'emoji_reactions', 'next'], null); - - if (url === null || getState().getIn(['status_lists', 'emoji_reactions', 'isLoading'])) { - return; - } - - dispatch(expandEmojiReactedStatusesRequest()); - - api(getState).get(url).then(response => { - const next = getLinks(response).refs.find(link => link.rel === 'next'); - dispatch(importFetchedStatuses(response.data)); - dispatch(expandEmojiReactedStatusesSuccess(response.data, next ? next.uri : null)); - }).catch(error => { - dispatch(expandEmojiReactedStatusesFail(error)); - }); - }; -} - -export function expandEmojiReactedStatusesRequest() { - return { - type: EMOJI_REACTED_STATUSES_EXPAND_REQUEST, - }; -} - -export function expandEmojiReactedStatusesSuccess(statuses, next) { - return { - type: EMOJI_REACTED_STATUSES_EXPAND_SUCCESS, - statuses, - next, - }; -} - -export function expandEmojiReactedStatusesFail(error) { - return { - type: EMOJI_REACTED_STATUSES_EXPAND_FAIL, - error, - }; -} diff --git a/app/javascript/mastodon/actions/favourites.js b/app/javascript/mastodon/actions/favourites.js index e5e2c481aa..2d4d4e6206 100644 --- a/app/javascript/mastodon/actions/favourites.js +++ b/app/javascript/mastodon/actions/favourites.js @@ -1,5 +1,3 @@ -// Kmyblue tracking marker: copied emoji_reactions.js - import api, { getLinks } from '../api'; import { importFetchedStatuses } from './importer'; diff --git a/app/javascript/mastodon/actions/importer/index.js b/app/javascript/mastodon/actions/importer/index.js index 906e384354..16f191b584 100644 --- a/app/javascript/mastodon/actions/importer/index.js +++ b/app/javascript/mastodon/actions/importer/index.js @@ -72,10 +72,6 @@ export function importFetchedStatuses(statuses) { processStatus(status.reblog); } - if (status.quote && status.quote.id && !getState().getIn(['statuses', status.id])) { - processStatus(status.quote); - } - if (status.poll && status.poll.id) { pushUnique(polls, normalizePoll(status.poll, getState().getIn(['polls', status.poll.id]))); } diff --git a/app/javascript/mastodon/actions/importer/normalizer.js b/app/javascript/mastodon/actions/importer/normalizer.js index 05b6250761..b5a30343e4 100644 --- a/app/javascript/mastodon/actions/importer/normalizer.js +++ b/app/javascript/mastodon/actions/importer/normalizer.js @@ -1,7 +1,7 @@ import escapeTextContentForBrowser from 'escape-html'; import emojify from '../../features/emoji/emoji'; -import { expandSpoilers, me } from '../../initial_state'; +import { expandSpoilers } from '../../initial_state'; const domParser = new DOMParser(); @@ -40,14 +40,6 @@ export function normalizeStatus(status, normalOldStatus) { normalStatus.filtered = status.filtered.map(normalizeFilterResult); } - if (status.emoji_reactions) { - normalStatus.emoji_reactions = normalizeEmojiReactions(status.emoji_reactions); - } - - if (!status.visibility_ex) { - normalStatus.visibility_ex = status.visibility; - } - // Only calculate these values when status first encountered and // when the underlying values change. Otherwise keep the ones // already in the reducer @@ -58,11 +50,6 @@ export function normalizeStatus(status, normalOldStatus) { normalStatus.spoiler_text = normalOldStatus.get('spoiler_text'); normalStatus.hidden = normalOldStatus.get('hidden'); - // for quoted post - if (!normalStatus.filtered && normalOldStatus.get('filtered')) { - normalStatus.filtered = normalOldStatus.get('filtered'); - } - if (normalOldStatus.get('translation')) { normalStatus.translation = normalOldStatus.get('translation'); } @@ -74,10 +61,6 @@ export function normalizeStatus(status, normalOldStatus) { normalStatus.spoiler_text = ''; } - if (normalStatus.emojis && normalStatus.emojis.some((emoji) => emoji.is_sensitive) && !normalStatus.spoiler_text) { - normalStatus.spoiler_text = '[Contains sensitive custom emoji(s)]'; - } - const spoilerText = normalStatus.spoiler_text || ''; const searchContent = ([spoilerText, status.content].concat((status.poll && status.poll.options) ? status.poll.options.map(option => option.title) : [])).concat(status.media_attachments.map(att => att.description)).join('\n\n').replace(//g, '\n').replace(/<\/p>

/g, '\n\n'); const emojiMap = makeEmojiMap(normalStatus.emojis); @@ -103,17 +86,6 @@ export function normalizeStatus(status, normalOldStatus) { return normalStatus; } -export function normalizeEmojiReactions(emoji_reactions) { - const myAccountId = me; - let converted = []; - for (let emoji_reaction of emoji_reactions) { - let obj = emoji_reaction; - obj.me = obj.account_ids.some((id) => id === myAccountId); - converted.push(obj); - } - return converted; -} - export function normalizeStatusTranslation(translation, status) { const emojiMap = makeEmojiMap(status.get('emojis').toJS()); diff --git a/app/javascript/mastodon/actions/interactions.js b/app/javascript/mastodon/actions/interactions.js index 640c5c3128..7d0144438a 100644 --- a/app/javascript/mastodon/actions/interactions.js +++ b/app/javascript/mastodon/actions/interactions.js @@ -1,7 +1,7 @@ import api, { getLinks } from '../api'; import { fetchRelationships } from './accounts'; -import { importFetchedAccounts, importFetchedStatus, importFetchedStatuses } from './importer'; +import { importFetchedAccounts, importFetchedStatus } from './importer'; export const REBLOG_REQUEST = 'REBLOG_REQUEST'; export const REBLOG_SUCCESS = 'REBLOG_SUCCESS'; @@ -15,10 +15,6 @@ export const FAVOURITE_REQUEST = 'FAVOURITE_REQUEST'; export const FAVOURITE_SUCCESS = 'FAVOURITE_SUCCESS'; export const FAVOURITE_FAIL = 'FAVOURITE_FAIL'; -export const EMOJIREACT_REQUEST = 'EMOJIREACT_REQUEST'; -export const EMOJIREACT_SUCCESS = 'EMOJIREACT_SUCCESS'; -export const EMOJIREACT_FAIL = 'EMOJIREACT_FAIL'; - export const UNREBLOG_REQUEST = 'UNREBLOG_REQUEST'; export const UNREBLOG_SUCCESS = 'UNREBLOG_SUCCESS'; export const UNREBLOG_FAIL = 'UNREBLOG_FAIL'; @@ -27,10 +23,6 @@ export const UNFAVOURITE_REQUEST = 'UNFAVOURITE_REQUEST'; export const UNFAVOURITE_SUCCESS = 'UNFAVOURITE_SUCCESS'; export const UNFAVOURITE_FAIL = 'UNFAVOURITE_FAIL'; -export const UNEMOJIREACT_REQUEST = 'UNEMOJIREACT_REQUEST'; -export const UNEMOJIREACT_SUCCESS = 'UNEMOJIREACT_SUCCESS'; -export const UNEMOJIREACT_FAIL = 'UNEMOJIREACT_FAIL'; - export const REBLOGS_FETCH_REQUEST = 'REBLOGS_FETCH_REQUEST'; export const REBLOGS_FETCH_SUCCESS = 'REBLOGS_FETCH_SUCCESS'; export const REBLOGS_FETCH_FAIL = 'REBLOGS_FETCH_FAIL'; @@ -41,19 +33,7 @@ export const FAVOURITES_FETCH_FAIL = 'FAVOURITES_FETCH_FAIL'; export const FAVOURITES_EXPAND_REQUEST = 'FAVOURITES_EXPAND_REQUEST'; export const FAVOURITES_EXPAND_SUCCESS = 'FAVOURITES_EXPAND_SUCCESS'; -export const FAVOURITES_EXPAND_FAIL = 'FAVOURITES_EXPAND_FAIL'; - -export const STATUS_REFERENCES_FETCH_REQUEST = 'STATUS_REFERENCES_FETCH_REQUEST'; -export const STATUS_REFERENCES_FETCH_SUCCESS = 'STATUS_REFERENCES_FETCH_SUCCESS'; -export const STATUS_REFERENCES_FETCH_FAIL = 'STATUS_REFERENCES_FETCH_FAIL'; - -export const EMOJI_REACTIONS_FETCH_REQUEST = 'EMOJI_REACTIONS_FETCH_REQUEST'; -export const EMOJI_REACTIONS_FETCH_SUCCESS = 'EMOJI_REACTIONS_FETCH_SUCCESS'; -export const EMOJI_REACTIONS_FETCH_FAIL = 'EMOJI_REACTIONS_FETCH_FAIL'; - -export const EMOJI_REACTIONS_EXPAND_REQUEST = 'EMOJI_REACTIONS_EXPAND_REQUEST'; -export const EMOJI_REACTIONS_EXPAND_SUCCESS = 'EMOJI_REACTIONS_EXPAND_SUCCESS'; -export const EMOJI_REACTIONS_EXPAND_FAIL = 'EMOJI_REACTIONS_EXPAND_FAIL'; +export const FAVOURITES_EXPAND_FAIL = 'FAVOURITES_EXPAND_FAIL'; export const PIN_REQUEST = 'PIN_REQUEST'; export const PIN_SUCCESS = 'PIN_SUCCESS'; @@ -71,14 +51,6 @@ export const UNBOOKMARK_REQUEST = 'UNBOOKMARKED_REQUEST'; export const UNBOOKMARK_SUCCESS = 'UNBOOKMARKED_SUCCESS'; export const UNBOOKMARK_FAIL = 'UNBOOKMARKED_FAIL'; -export const MENTIONED_USERS_FETCH_REQUEST = 'MENTIONED_USERS_FETCH_REQUEST'; -export const MENTIONED_USERS_FETCH_SUCCESS = 'MENTIONED_USERS_FETCH_SUCCESS'; -export const MENTIONED_USERS_FETCH_FAIL = 'MENTIONED_USERS_FETCH_FAIL'; - -export const MENTIONED_USERS_EXPAND_REQUEST = 'MENTIONED_USERS_EXPAND_REQUEST'; -export const MENTIONED_USERS_EXPAND_SUCCESS = 'MENTIONED_USERS_EXPAND_SUCCESS'; -export const MENTIONED_USERS_EXPAND_FAIL = 'MENTIONED_USERS_EXPAND_FAIL'; - export function reblog(status, visibility) { return function (dispatch, getState) { dispatch(reblogRequest(status)); @@ -233,91 +205,6 @@ export function unfavouriteFail(status, error) { }; } -export function emojiReact(status, emoji) { - return function (dispatch, getState) { - dispatch(emojiReactRequest(status, emoji)); - - const api_emoji = typeof emoji !== 'string' ? (emoji.custom ? (emoji.name + (emoji.domain || '')) : emoji.native) : emoji; - - api(getState).post(`/api/v1/statuses/${status.get('id')}/emoji_reactions`, { emoji: api_emoji }).then(function (response) { - dispatch(importFetchedStatus(response.data)); - dispatch(emojiReactSuccess(status, emoji)); - }).catch(function (error) { - dispatch(emojiReactFail(status, emoji, error)); - }); - }; -} - -export function unEmojiReact(status, emoji) { - return (dispatch, getState) => { - dispatch(unEmojiReactRequest(status, emoji)); - - api(getState).post(`/api/v1/statuses/${status.get('id')}/emoji_unreaction`, { emoji }).then((response) => { - // TODO: do not update because this api has a bug - dispatch(importFetchedStatus(response.data)); - dispatch(unEmojiReactSuccess(status, emoji)); - }).catch(error => { - dispatch(unEmojiReactFail(status, emoji, error)); - }); - }; -} - -export function emojiReactRequest(status, emoji) { - return { - type: EMOJIREACT_REQUEST, - status: status, - emoji: emoji, - skipLoading: true, - }; -} - -export function emojiReactSuccess(status, emoji) { - return { - type: EMOJIREACT_SUCCESS, - status: status, - emoji: emoji, - skipLoading: true, - }; -} - -export function emojiReactFail(status, emoji, error) { - return { - type: EMOJIREACT_FAIL, - status: status, - emoji: emoji, - error: error, - skipLoading: true, - }; -} - -export function unEmojiReactRequest(status, emoji) { - return { - type: UNEMOJIREACT_REQUEST, - status: status, - emoji: emoji, - skipLoading: true, - }; -} - -export function unEmojiReactSuccess(status, emoji) { - return { - type: UNEMOJIREACT_SUCCESS, - status: status, - emoji: emoji, - skipLoading: true, - }; -} - -export function unEmojiReactFail(status, emoji, error) { - return { - type: UNEMOJIREACT_FAIL, - status: status, - emoji: emoji, - error: error, - skipLoading: true, - }; -} - export function bookmark(status) { return function (dispatch, getState) { dispatch(bookmarkRequest(status)); @@ -554,120 +441,6 @@ export function expandFavouritesFail(id, error) { }; } -export function fetchEmojiReactions(id) { - return (dispatch, getState) => { - dispatch(fetchEmojiReactionsRequest(id)); - - api(getState).get(`/api/v1/statuses/${id}/emoji_reactioned_by`).then(response => { - const next = getLinks(response).refs.find(link => link.rel === 'next'); - dispatch(importFetchedAccounts(response.data.map((er) => er.account))); - dispatch(fetchEmojiReactionsSuccess(id, response.data, next ? next.uri : null)); - }).catch(error => { - dispatch(fetchEmojiReactionsFail(id, error)); - }); - }; -} - -export function fetchEmojiReactionsRequest(id) { - return { - type: EMOJI_REACTIONS_FETCH_REQUEST, - id, - }; -} - -export function fetchEmojiReactionsSuccess(id, accounts, next) { - return { - type: EMOJI_REACTIONS_FETCH_SUCCESS, - id, - accounts, - next, - }; -} - -export function fetchEmojiReactionsFail(id, error) { - return { - type: EMOJI_REACTIONS_FETCH_FAIL, - error, - }; -} - -export function expandEmojiReactions(id) { - return (dispatch, getState) => { - const url = getState().getIn(['user_lists', 'emoji_reactioned_by', id, 'next']); - if (url === null) { - return; - } - - dispatch(expandEmojiReactionsRequest(id)); - - api(getState).get(url).then(response => { - const next = getLinks(response).refs.find(link => link.rel === 'next'); - - dispatch(importFetchedAccounts(response.data.map((er) => er.account))); - dispatch(expandEmojiReactionsSuccess(id, response.data, next ? next.uri : null)); - }).catch(error => dispatch(expandEmojiReactionsFail(id, error))); - }; -} - -export function expandEmojiReactionsRequest(id) { - return { - type: EMOJI_REACTIONS_EXPAND_REQUEST, - id, - }; -} - -export function expandEmojiReactionsSuccess(id, accounts, next) { - return { - type: EMOJI_REACTIONS_EXPAND_SUCCESS, - id, - accounts, - next, - }; -} - -export function expandEmojiReactionsFail(id, error) { - return { - type: EMOJI_REACTIONS_EXPAND_FAIL, - id, - error, - }; -} - -export function fetchStatusReferences(id) { - return (dispatch, getState) => { - dispatch(fetchStatusReferencesRequest(id)); - - api(getState).get(`/api/v1/statuses/${id}/referred_by`).then(response => { - dispatch(importFetchedStatuses(response.data)); - dispatch(fetchStatusReferencesSuccess(id, response.data)); - }).catch(error => { - dispatch(fetchStatusReferencesFail(id, error)); - }); - }; -} - -export function fetchStatusReferencesRequest(id) { - return { - type: STATUS_REFERENCES_FETCH_REQUEST, - id, - }; -} - -export function fetchStatusReferencesSuccess(id, statuses) { - return { - type: STATUS_REFERENCES_FETCH_SUCCESS, - id, - statuses, - }; -} - -export function fetchStatusReferencesFail(id, error) { - return { - type: STATUS_REFERENCES_FETCH_FAIL, - error, - }; -} - export function pin(status) { return (dispatch, getState) => { dispatch(pinRequest(status)); @@ -743,85 +516,3 @@ export function unpinFail(status, error) { skipLoading: true, }; } - -export function fetchMentionedUsers(id) { - return (dispatch, getState) => { - dispatch(fetchMentionedUsersRequest(id)); - - api(getState).get(`/api/v1/statuses/${id}/mentioned_by`).then(response => { - const next = getLinks(response).refs.find(link => link.rel === 'next'); - dispatch(importFetchedAccounts(response.data)); - dispatch(fetchMentionedUsersSuccess(id, response.data, next ? next.uri : null)); - dispatch(fetchRelationships(response.data.map(item => item.id))); - }).catch(error => { - dispatch(fetchMentionedUsersFail(id, error)); - }); - }; -} - -export function fetchMentionedUsersRequest(id) { - return { - type: MENTIONED_USERS_FETCH_REQUEST, - id, - }; -} - -export function fetchMentionedUsersSuccess(id, accounts, next) { - return { - type: MENTIONED_USERS_FETCH_SUCCESS, - id, - accounts, - next, - }; -} - -export function fetchMentionedUsersFail(id, error) { - return { - type: MENTIONED_USERS_FETCH_FAIL, - id, - error, - }; -} - -export function expandMentionedUsers(id) { - return (dispatch, getState) => { - const url = getState().getIn(['user_lists', 'mentioned_users', id, 'next']); - if (url === null) { - return; - } - - dispatch(expandMentionedUsersRequest(id)); - - api(getState).get(url).then(response => { - const next = getLinks(response).refs.find(link => link.rel === 'next'); - - dispatch(importFetchedAccounts(response.data)); - dispatch(expandMentionedUsersSuccess(id, response.data, next ? next.uri : null)); - dispatch(fetchRelationships(response.data.map(item => item.id))); - }).catch(error => dispatch(expandMentionedUsersFail(id, error))); - }; -} - -export function expandMentionedUsersRequest(id) { - return { - type: MENTIONED_USERS_EXPAND_REQUEST, - id, - }; -} - -export function expandMentionedUsersSuccess(id, accounts, next) { - return { - type: MENTIONED_USERS_EXPAND_SUCCESS, - id, - accounts, - next, - }; -} - -export function expandMentionedUsersFail(id, error) { - return { - type: MENTIONED_USERS_EXPAND_FAIL, - id, - error, - }; -} diff --git a/app/javascript/mastodon/actions/lists.js b/app/javascript/mastodon/actions/lists.js index e494a40a5d..b0789cd426 100644 --- a/app/javascript/mastodon/actions/lists.js +++ b/app/javascript/mastodon/actions/lists.js @@ -1,5 +1,3 @@ -// Kmyblue tracking marker: copied circles.js, antennas.js - import api from '../api'; import { showAlertForError } from './alerts'; @@ -153,15 +151,10 @@ export const createListFail = error => ({ error, }); -export const updateList = (id, title, shouldReset, isExclusive, replies_policy, notify) => (dispatch, getState) => { +export const updateList = (id, title, shouldReset, isExclusive, replies_policy) => (dispatch, getState) => { dispatch(updateListRequest(id)); - api(getState).put(`/api/v1/lists/${id}`, { - title, - replies_policy, - exclusive: typeof isExclusive === 'undefined' ? undefined : !!isExclusive, - notify: typeof notify === 'undefined' ? undefined : !!notify, - }).then(({ data }) => { + api(getState).put(`/api/v1/lists/${id}`, { title, replies_policy, exclusive: typeof isExclusive === 'undefined' ? undefined : !!isExclusive }).then(({ data }) => { dispatch(updateListSuccess(data)); if (shouldReset) { @@ -245,6 +238,7 @@ export const fetchListSuggestions = q => (dispatch, getState) => { const params = { q, resolve: false, + limit: 4, following: true, }; diff --git a/app/javascript/mastodon/actions/markers.js b/app/javascript/mastodon/actions/markers.js new file mode 100644 index 0000000000..cfc329a8b7 --- /dev/null +++ b/app/javascript/mastodon/actions/markers.js @@ -0,0 +1,152 @@ +import { List as ImmutableList } from 'immutable'; + +import { debounce } from 'lodash'; + +import api from '../api'; +import { compareId } from '../compare_id'; + +export const MARKERS_FETCH_REQUEST = 'MARKERS_FETCH_REQUEST'; +export const MARKERS_FETCH_SUCCESS = 'MARKERS_FETCH_SUCCESS'; +export const MARKERS_FETCH_FAIL = 'MARKERS_FETCH_FAIL'; +export const MARKERS_SUBMIT_SUCCESS = 'MARKERS_SUBMIT_SUCCESS'; + +export const synchronouslySubmitMarkers = () => (dispatch, getState) => { + const accessToken = getState().getIn(['meta', 'access_token'], ''); + const params = _buildParams(getState()); + + if (Object.keys(params).length === 0 || accessToken === '') { + return; + } + + // The Fetch API allows us to perform requests that will be carried out + // after the page closes. But that only works if the `keepalive` attribute + // is supported. + if (window.fetch && 'keepalive' in new Request('')) { + fetch('/api/v1/markers', { + keepalive: true, + method: 'POST', + headers: { + 'Content-Type': 'application/json', + 'Authorization': `Bearer ${accessToken}`, + }, + body: JSON.stringify(params), + }); + + return; + } else if (navigator && navigator.sendBeacon) { + // Failing that, we can use sendBeacon, but we have to encode the data as + // FormData for DoorKeeper to recognize the token. + const formData = new FormData(); + + formData.append('bearer_token', accessToken); + + for (const [id, value] of Object.entries(params)) { + formData.append(`${id}[last_read_id]`, value.last_read_id); + } + + if (navigator.sendBeacon('/api/v1/markers', formData)) { + return; + } + } + + // If neither Fetch nor sendBeacon worked, try to perform a synchronous + // request. + try { + const client = new XMLHttpRequest(); + + client.open('POST', '/api/v1/markers', false); + client.setRequestHeader('Content-Type', 'application/json'); + client.setRequestHeader('Authorization', `Bearer ${accessToken}`); + client.send(JSON.stringify(params)); + } catch (e) { + // Do not make the BeforeUnload handler error out + } +}; + +const _buildParams = (state) => { + const params = {}; + + const lastHomeId = state.getIn(['timelines', 'home', 'items'], ImmutableList()).find(item => item !== null); + const lastNotificationId = state.getIn(['notifications', 'lastReadId']); + + if (lastHomeId && compareId(lastHomeId, state.getIn(['markers', 'home'])) > 0) { + params.home = { + last_read_id: lastHomeId, + }; + } + + if (lastNotificationId && compareId(lastNotificationId, state.getIn(['markers', 'notifications'])) > 0) { + params.notifications = { + last_read_id: lastNotificationId, + }; + } + + return params; +}; + +const debouncedSubmitMarkers = debounce((dispatch, getState) => { + const accessToken = getState().getIn(['meta', 'access_token'], ''); + const params = _buildParams(getState()); + + if (Object.keys(params).length === 0 || accessToken === '') { + return; + } + + api(getState).post('/api/v1/markers', params).then(() => { + dispatch(submitMarkersSuccess(params)); + }).catch(() => {}); +}, 300000, { leading: true, trailing: true }); + +export function submitMarkersSuccess({ home, notifications }) { + return { + type: MARKERS_SUBMIT_SUCCESS, + home: (home || {}).last_read_id, + notifications: (notifications || {}).last_read_id, + }; +} + +export function submitMarkers(params = {}) { + const result = (dispatch, getState) => debouncedSubmitMarkers(dispatch, getState); + + if (params.immediate === true) { + debouncedSubmitMarkers.flush(); + } + + return result; +} + +export const fetchMarkers = () => (dispatch, getState) => { + const params = { timeline: ['notifications'] }; + + dispatch(fetchMarkersRequest()); + + api(getState).get('/api/v1/markers', { params }).then(response => { + dispatch(fetchMarkersSuccess(response.data)); + }).catch(error => { + dispatch(fetchMarkersFail(error)); + }); +}; + +export function fetchMarkersRequest() { + return { + type: MARKERS_FETCH_REQUEST, + skipLoading: true, + }; +} + +export function fetchMarkersSuccess(markers) { + return { + type: MARKERS_FETCH_SUCCESS, + markers, + skipLoading: true, + }; +} + +export function fetchMarkersFail(error) { + return { + type: MARKERS_FETCH_FAIL, + error, + skipLoading: true, + skipAlert: true, + }; +} diff --git a/app/javascript/mastodon/actions/markers.ts b/app/javascript/mastodon/actions/markers.ts deleted file mode 100644 index 91f78ee286..0000000000 --- a/app/javascript/mastodon/actions/markers.ts +++ /dev/null @@ -1,146 +0,0 @@ -import { debounce } from 'lodash'; - -import type { MarkerJSON } from 'mastodon/api_types/markers'; -import type { AppDispatch, RootState } from 'mastodon/store'; -import { createAppAsyncThunk } from 'mastodon/store/typed_functions'; - -import api, { authorizationTokenFromState } from '../api'; -import { compareId } from '../compare_id'; - -export const synchronouslySubmitMarkers = createAppAsyncThunk( - 'markers/submit', - async (_args, { getState }) => { - const accessToken = authorizationTokenFromState(getState); - const params = buildPostMarkersParams(getState()); - - if (Object.keys(params).length === 0 || !accessToken) { - return; - } - - // The Fetch API allows us to perform requests that will be carried out - // after the page closes. But that only works if the `keepalive` attribute - // is supported. - if ('fetch' in window && 'keepalive' in new Request('')) { - await fetch('/api/v1/markers', { - keepalive: true, - method: 'POST', - headers: { - 'Content-Type': 'application/json', - Authorization: `Bearer ${accessToken}`, - }, - body: JSON.stringify(params), - }); - - return; - // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition - } else if ('navigator' && 'sendBeacon' in navigator) { - // Failing that, we can use sendBeacon, but we have to encode the data as - // FormData for DoorKeeper to recognize the token. - const formData = new FormData(); - - formData.append('bearer_token', accessToken); - - for (const [id, value] of Object.entries(params)) { - if (value.last_read_id) - formData.append(`${id}[last_read_id]`, value.last_read_id); - } - - if (navigator.sendBeacon('/api/v1/markers', formData)) { - return; - } - } - - // If neither Fetch nor sendBeacon worked, try to perform a synchronous - // request. - try { - const client = new XMLHttpRequest(); - - client.open('POST', '/api/v1/markers', false); - client.setRequestHeader('Content-Type', 'application/json'); - client.setRequestHeader('Authorization', `Bearer ${accessToken}`); - client.send(JSON.stringify(params)); - } catch (e) { - // Do not make the BeforeUnload handler error out - } - }, -); - -interface MarkerParam { - last_read_id?: string; -} - -function getLastNotificationId(state: RootState): string | undefined { - // @ts-expect-error state.notifications is not yet typed - // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-call - return state.getIn(['notifications', 'lastReadId']); -} - -const buildPostMarkersParams = (state: RootState) => { - const params = {} as { home?: MarkerParam; notifications?: MarkerParam }; - - const lastNotificationId = getLastNotificationId(state); - - if ( - lastNotificationId && - compareId(lastNotificationId, state.markers.notifications) > 0 - ) { - params.notifications = { - last_read_id: lastNotificationId, - }; - } - - return params; -}; - -export const submitMarkersAction = createAppAsyncThunk<{ - home: string | undefined; - notifications: string | undefined; -}>('markers/submitAction', async (_args, { getState }) => { - const accessToken = authorizationTokenFromState(getState); - const params = buildPostMarkersParams(getState()); - - if (Object.keys(params).length === 0 || accessToken === '') { - return { home: undefined, notifications: undefined }; - } - - await api(getState).post('/api/v1/markers', params); - - return { - home: params.home?.last_read_id, - notifications: params.notifications?.last_read_id, - }; -}); - -const debouncedSubmitMarkers = debounce( - (dispatch: AppDispatch) => { - void dispatch(submitMarkersAction()); - }, - 300000, - { - leading: true, - trailing: true, - }, -); - -export const submitMarkers = createAppAsyncThunk( - 'markers/submit', - (params: { immediate?: boolean }, { dispatch }) => { - debouncedSubmitMarkers(dispatch); - - if (params.immediate) { - debouncedSubmitMarkers.flush(); - } - }, -); - -export const fetchMarkers = createAppAsyncThunk( - 'markers/fetch', - async (_args, { getState }) => { - const response = await api(getState).get>( - `/api/v1/markers`, - { params: { timeline: ['notifications'] } }, - ); - - return { markers: response.data }; - }, -); diff --git a/app/javascript/mastodon/actions/mutes.js b/app/javascript/mastodon/actions/mutes.js index 99c113f414..fb041078b8 100644 --- a/app/javascript/mastodon/actions/mutes.js +++ b/app/javascript/mastodon/actions/mutes.js @@ -12,6 +12,10 @@ export const MUTES_EXPAND_REQUEST = 'MUTES_EXPAND_REQUEST'; export const MUTES_EXPAND_SUCCESS = 'MUTES_EXPAND_SUCCESS'; export const MUTES_EXPAND_FAIL = 'MUTES_EXPAND_FAIL'; +export const MUTES_INIT_MODAL = 'MUTES_INIT_MODAL'; +export const MUTES_TOGGLE_HIDE_NOTIFICATIONS = 'MUTES_TOGGLE_HIDE_NOTIFICATIONS'; +export const MUTES_CHANGE_DURATION = 'MUTES_CHANGE_DURATION'; + export function fetchMutes() { return (dispatch, getState) => { dispatch(fetchMutesRequest()); @@ -88,12 +92,26 @@ export function expandMutesFail(error) { export function initMuteModal(account) { return dispatch => { - dispatch(openModal({ - modalType: 'MUTE', - modalProps: { - accountId: account.get('id'), - acct: account.get('acct'), - }, - })); + dispatch({ + type: MUTES_INIT_MODAL, + account, + }); + + dispatch(openModal({ modalType: 'MUTE' })); + }; +} + +export function toggleHideNotifications() { + return dispatch => { + dispatch({ type: MUTES_TOGGLE_HIDE_NOTIFICATIONS }); + }; +} + +export function changeMuteDuration(duration) { + return dispatch => { + dispatch({ + type: MUTES_CHANGE_DURATION, + duration, + }); }; } diff --git a/app/javascript/mastodon/actions/notifications.js b/app/javascript/mastodon/actions/notifications.js index c8b1178d77..eafbf42d1b 100644 --- a/app/javascript/mastodon/actions/notifications.js +++ b/app/javascript/mastodon/actions/notifications.js @@ -4,7 +4,7 @@ import { defineMessages } from 'react-intl'; import { List as ImmutableList } from 'immutable'; import { compareId } from 'mastodon/compare_id'; -import { enableEmojiReaction, usePendingItems as preferPendingItems } from 'mastodon/initial_state'; +import { usePendingItems as preferPendingItems } from 'mastodon/initial_state'; import api, { getLinks } from '../api'; import { unescapeHTML } from '../utils/html'; @@ -21,7 +21,6 @@ import { submitMarkers } from './markers'; import { notificationsUpdate } from "./notifications_typed"; import { register as registerPushNotifications } from './push_notifications'; import { saveSettings } from './settings'; -import { STATUS_EMOJI_REACTION_UPDATE } from './statuses'; export * from "./notifications_typed"; @@ -45,38 +44,6 @@ export const NOTIFICATIONS_MARK_AS_READ = 'NOTIFICATIONS_MARK_AS_READ'; export const NOTIFICATIONS_SET_BROWSER_SUPPORT = 'NOTIFICATIONS_SET_BROWSER_SUPPORT'; export const NOTIFICATIONS_SET_BROWSER_PERMISSION = 'NOTIFICATIONS_SET_BROWSER_PERMISSION'; -export const NOTIFICATION_POLICY_FETCH_REQUEST = 'NOTIFICATION_POLICY_FETCH_REQUEST'; -export const NOTIFICATION_POLICY_FETCH_SUCCESS = 'NOTIFICATION_POLICY_FETCH_SUCCESS'; -export const NOTIFICATION_POLICY_FETCH_FAIL = 'NOTIFICATION_POLICY_FETCH_FAIL'; - -export const NOTIFICATION_REQUESTS_FETCH_REQUEST = 'NOTIFICATION_REQUESTS_FETCH_REQUEST'; -export const NOTIFICATION_REQUESTS_FETCH_SUCCESS = 'NOTIFICATION_REQUESTS_FETCH_SUCCESS'; -export const NOTIFICATION_REQUESTS_FETCH_FAIL = 'NOTIFICATION_REQUESTS_FETCH_FAIL'; - -export const NOTIFICATION_REQUESTS_EXPAND_REQUEST = 'NOTIFICATION_REQUESTS_EXPAND_REQUEST'; -export const NOTIFICATION_REQUESTS_EXPAND_SUCCESS = 'NOTIFICATION_REQUESTS_EXPAND_SUCCESS'; -export const NOTIFICATION_REQUESTS_EXPAND_FAIL = 'NOTIFICATION_REQUESTS_EXPAND_FAIL'; - -export const NOTIFICATION_REQUEST_FETCH_REQUEST = 'NOTIFICATION_REQUEST_FETCH_REQUEST'; -export const NOTIFICATION_REQUEST_FETCH_SUCCESS = 'NOTIFICATION_REQUEST_FETCH_SUCCESS'; -export const NOTIFICATION_REQUEST_FETCH_FAIL = 'NOTIFICATION_REQUEST_FETCH_FAIL'; - -export const NOTIFICATION_REQUEST_ACCEPT_REQUEST = 'NOTIFICATION_REQUEST_ACCEPT_REQUEST'; -export const NOTIFICATION_REQUEST_ACCEPT_SUCCESS = 'NOTIFICATION_REQUEST_ACCEPT_SUCCESS'; -export const NOTIFICATION_REQUEST_ACCEPT_FAIL = 'NOTIFICATION_REQUEST_ACCEPT_FAIL'; - -export const NOTIFICATION_REQUEST_DISMISS_REQUEST = 'NOTIFICATION_REQUEST_DISMISS_REQUEST'; -export const NOTIFICATION_REQUEST_DISMISS_SUCCESS = 'NOTIFICATION_REQUEST_DISMISS_SUCCESS'; -export const NOTIFICATION_REQUEST_DISMISS_FAIL = 'NOTIFICATION_REQUEST_DISMISS_FAIL'; - -export const NOTIFICATIONS_FOR_REQUEST_FETCH_REQUEST = 'NOTIFICATIONS_FOR_REQUEST_FETCH_REQUEST'; -export const NOTIFICATIONS_FOR_REQUEST_FETCH_SUCCESS = 'NOTIFICATIONS_FOR_REQUEST_FETCH_SUCCESS'; -export const NOTIFICATIONS_FOR_REQUEST_FETCH_FAIL = 'NOTIFICATIONS_FOR_REQUEST_FETCH_FAIL'; - -export const NOTIFICATIONS_FOR_REQUEST_EXPAND_REQUEST = 'NOTIFICATIONS_FOR_REQUEST_EXPAND_REQUEST'; -export const NOTIFICATIONS_FOR_REQUEST_EXPAND_SUCCESS = 'NOTIFICATIONS_FOR_REQUEST_EXPAND_SUCCESS'; -export const NOTIFICATIONS_FOR_REQUEST_EXPAND_FAIL = 'NOTIFICATIONS_FOR_REQUEST_EXPAND_FAIL'; - defineMessages({ mention: { id: 'notification.mention', defaultMessage: '{name} mentioned you' }, group: { id: 'notifications.group', defaultMessage: '{count} notifications' }, @@ -94,14 +61,6 @@ export const loadPending = () => ({ type: NOTIFICATIONS_LOAD_PENDING, }); -export function updateEmojiReactions(emoji_reaction) { - return (dispatch) => - dispatch({ - type: STATUS_EMOJI_REACTION_UPDATE, - emoji_reaction, - }); -} - export function updateNotifications(notification, intlMessages, intlLocale) { return (dispatch, getState) => { const activeFilter = getState().getIn(['settings', 'notifications', 'quickFilter', 'active']); @@ -114,7 +73,7 @@ export function updateNotifications(notification, intlMessages, intlLocale) { if (['mention', 'status'].includes(notification.type) && notification.status.filtered) { const filters = notification.status.filtered.filter(result => result.filter.context.includes('notifications')); - if (filters.some(result => result.filter.filter_action_ex === 'hide')) { + if (filters.some(result => result.filter.filter_action === 'hide')) { return; } @@ -171,13 +130,10 @@ const excludeTypesFromFilter = filter => { 'follow', 'follow_request', 'favourite', - 'emoji_reaction', 'reblog', - 'status_reference', 'mention', 'poll', 'status', - 'list_status', 'update', 'admin.sign_up', 'admin.report', @@ -206,16 +162,11 @@ export function expandNotifications({ maxId, forceLoad } = {}, done = noOp) { } } - let exclude_types = activeFilter === 'all' - ? excludeTypesFromSettings(getState()) - : excludeTypesFromFilter(activeFilter); - if (!enableEmojiReaction && !exclude_types.includes('emoji_reaction')) { - exclude_types.push('emoji_reaction'); - } - const params = { max_id: maxId, - exclude_types, + exclude_types: activeFilter === 'all' + ? excludeTypesFromSettings(getState()) + : excludeTypesFromFilter(activeFilter), }; if (!params.max_id && (notifications.get('items', ImmutableList()).size + notifications.get('pendingItems', ImmutableList()).size) > 0) { @@ -362,270 +313,3 @@ export function setBrowserPermission (value) { value, }; } - -export const fetchNotificationPolicy = () => (dispatch, getState) => { - dispatch(fetchNotificationPolicyRequest()); - - api(getState).get('/api/v1/notifications/policy').then(({ data }) => { - dispatch(fetchNotificationPolicySuccess(data)); - }).catch(err => { - dispatch(fetchNotificationPolicyFail(err)); - }); -}; - -export const fetchNotificationPolicyRequest = () => ({ - type: NOTIFICATION_POLICY_FETCH_REQUEST, -}); - -export const fetchNotificationPolicySuccess = policy => ({ - type: NOTIFICATION_POLICY_FETCH_SUCCESS, - policy, -}); - -export const fetchNotificationPolicyFail = error => ({ - type: NOTIFICATION_POLICY_FETCH_FAIL, - error, -}); - -export const updateNotificationsPolicy = params => (dispatch, getState) => { - dispatch(fetchNotificationPolicyRequest()); - - api(getState).put('/api/v1/notifications/policy', params).then(({ data }) => { - dispatch(fetchNotificationPolicySuccess(data)); - }).catch(err => { - dispatch(fetchNotificationPolicyFail(err)); - }); -}; - -export const fetchNotificationRequests = () => (dispatch, getState) => { - const params = {}; - - if (getState().getIn(['notificationRequests', 'isLoading'])) { - return; - } - - if (getState().getIn(['notificationRequests', 'items'])?.size > 0) { - params.since_id = getState().getIn(['notificationRequests', 'items', 0, 'id']); - } - - dispatch(fetchNotificationRequestsRequest()); - - api(getState).get('/api/v1/notifications/requests', { params }).then(response => { - const next = getLinks(response).refs.find(link => link.rel === 'next'); - dispatch(importFetchedAccounts(response.data.map(x => x.account))); - dispatch(fetchNotificationRequestsSuccess(response.data, next ? next.uri : null)); - }).catch(err => { - dispatch(fetchNotificationRequestsFail(err)); - }); -}; - -export const fetchNotificationRequestsRequest = () => ({ - type: NOTIFICATION_REQUESTS_FETCH_REQUEST, -}); - -export const fetchNotificationRequestsSuccess = (requests, next) => ({ - type: NOTIFICATION_REQUESTS_FETCH_SUCCESS, - requests, - next, -}); - -export const fetchNotificationRequestsFail = error => ({ - type: NOTIFICATION_REQUESTS_FETCH_FAIL, - error, -}); - -export const expandNotificationRequests = () => (dispatch, getState) => { - const url = getState().getIn(['notificationRequests', 'next']); - - if (!url || getState().getIn(['notificationRequests', 'isLoading'])) { - return; - } - - dispatch(expandNotificationRequestsRequest()); - - api(getState).get(url).then(response => { - const next = getLinks(response).refs.find(link => link.rel === 'next'); - dispatch(importFetchedAccounts(response.data.map(x => x.account))); - dispatch(expandNotificationRequestsSuccess(response.data, next?.uri)); - }).catch(err => { - dispatch(expandNotificationRequestsFail(err)); - }); -}; - -export const expandNotificationRequestsRequest = () => ({ - type: NOTIFICATION_REQUESTS_EXPAND_REQUEST, -}); - -export const expandNotificationRequestsSuccess = (requests, next) => ({ - type: NOTIFICATION_REQUESTS_EXPAND_SUCCESS, - requests, - next, -}); - -export const expandNotificationRequestsFail = error => ({ - type: NOTIFICATION_REQUESTS_EXPAND_FAIL, - error, -}); - -export const fetchNotificationRequest = id => (dispatch, getState) => { - const current = getState().getIn(['notificationRequests', 'current']); - - if (current.getIn(['item', 'id']) === id || current.get('isLoading')) { - return; - } - - dispatch(fetchNotificationRequestRequest(id)); - - api(getState).get(`/api/v1/notifications/requests/${id}`).then(({ data }) => { - dispatch(fetchNotificationRequestSuccess(data)); - }).catch(err => { - dispatch(fetchNotificationRequestFail(id, err)); - }); -}; - -export const fetchNotificationRequestRequest = id => ({ - type: NOTIFICATION_REQUEST_FETCH_REQUEST, - id, -}); - -export const fetchNotificationRequestSuccess = request => ({ - type: NOTIFICATION_REQUEST_FETCH_SUCCESS, - request, -}); - -export const fetchNotificationRequestFail = (id, error) => ({ - type: NOTIFICATION_REQUEST_FETCH_FAIL, - id, - error, -}); - -export const acceptNotificationRequest = id => (dispatch, getState) => { - dispatch(acceptNotificationRequestRequest(id)); - - api(getState).post(`/api/v1/notifications/requests/${id}/accept`).then(() => { - dispatch(acceptNotificationRequestSuccess(id)); - }).catch(err => { - dispatch(acceptNotificationRequestFail(id, err)); - }); -}; - -export const acceptNotificationRequestRequest = id => ({ - type: NOTIFICATION_REQUEST_ACCEPT_REQUEST, - id, -}); - -export const acceptNotificationRequestSuccess = id => ({ - type: NOTIFICATION_REQUEST_ACCEPT_SUCCESS, - id, -}); - -export const acceptNotificationRequestFail = (id, error) => ({ - type: NOTIFICATION_REQUEST_ACCEPT_FAIL, - id, - error, -}); - -export const dismissNotificationRequest = id => (dispatch, getState) => { - dispatch(dismissNotificationRequestRequest(id)); - - api(getState).post(`/api/v1/notifications/requests/${id}/dismiss`).then(() =>{ - dispatch(dismissNotificationRequestSuccess(id)); - }).catch(err => { - dispatch(dismissNotificationRequestFail(id, err)); - }); -}; - -export const dismissNotificationRequestRequest = id => ({ - type: NOTIFICATION_REQUEST_DISMISS_REQUEST, - id, -}); - -export const dismissNotificationRequestSuccess = id => ({ - type: NOTIFICATION_REQUEST_DISMISS_SUCCESS, - id, -}); - -export const dismissNotificationRequestFail = (id, error) => ({ - type: NOTIFICATION_REQUEST_DISMISS_FAIL, - id, - error, -}); - -export const fetchNotificationsForRequest = accountId => (dispatch, getState) => { - const current = getState().getIn(['notificationRequests', 'current']); - const params = { account_id: accountId }; - - if (current.getIn(['item', 'account']) === accountId) { - if (current.getIn(['notifications', 'isLoading'])) { - return; - } - - if (current.getIn(['notifications', 'items'])?.size > 0) { - params.since_id = current.getIn(['notifications', 'items', 0, 'id']); - } - } - - dispatch(fetchNotificationsForRequestRequest()); - - api(getState).get('/api/v1/notifications', { params }).then(response => { - const next = getLinks(response).refs.find(link => link.rel === 'next'); - dispatch(importFetchedAccounts(response.data.map(item => item.account))); - dispatch(importFetchedStatuses(response.data.map(item => item.status).filter(status => !!status))); - dispatch(importFetchedAccounts(response.data.filter(item => item.report).map(item => item.report.target_account))); - - dispatch(fetchNotificationsForRequestSuccess(response.data, next?.uri)); - }).catch(err => { - dispatch(fetchNotificationsForRequestFail(err)); - }); -}; - -export const fetchNotificationsForRequestRequest = () => ({ - type: NOTIFICATIONS_FOR_REQUEST_FETCH_REQUEST, -}); - -export const fetchNotificationsForRequestSuccess = (notifications, next) => ({ - type: NOTIFICATIONS_FOR_REQUEST_FETCH_SUCCESS, - notifications, - next, -}); - -export const fetchNotificationsForRequestFail = (error) => ({ - type: NOTIFICATIONS_FOR_REQUEST_FETCH_FAIL, - error, -}); - -export const expandNotificationsForRequest = () => (dispatch, getState) => { - const url = getState().getIn(['notificationRequests', 'current', 'notifications', 'next']); - - if (!url || getState().getIn(['notificationRequests', 'current', 'notifications', 'isLoading'])) { - return; - } - - dispatch(expandNotificationsForRequestRequest()); - - api(getState).get(url).then(response => { - const next = getLinks(response).refs.find(link => link.rel === 'next'); - dispatch(importFetchedAccounts(response.data.map(item => item.account))); - dispatch(importFetchedStatuses(response.data.map(item => item.status).filter(status => !!status))); - dispatch(importFetchedAccounts(response.data.filter(item => item.report).map(item => item.report.target_account))); - - dispatch(expandNotificationsForRequestSuccess(response.data, next?.uri)); - }).catch(err => { - dispatch(expandNotificationsForRequestFail(err)); - }); -}; - -export const expandNotificationsForRequestRequest = () => ({ - type: NOTIFICATIONS_FOR_REQUEST_EXPAND_REQUEST, -}); - -export const expandNotificationsForRequestSuccess = (notifications, next) => ({ - type: NOTIFICATIONS_FOR_REQUEST_EXPAND_SUCCESS, - notifications, - next, -}); - -export const expandNotificationsForRequestFail = (error) => ({ - type: NOTIFICATIONS_FOR_REQUEST_EXPAND_FAIL, - error, -}); diff --git a/app/javascript/mastodon/actions/picture_in_picture.js b/app/javascript/mastodon/actions/picture_in_picture.js new file mode 100644 index 0000000000..898375abeb --- /dev/null +++ b/app/javascript/mastodon/actions/picture_in_picture.js @@ -0,0 +1,46 @@ +// @ts-check + +export const PICTURE_IN_PICTURE_DEPLOY = 'PICTURE_IN_PICTURE_DEPLOY'; +export const PICTURE_IN_PICTURE_REMOVE = 'PICTURE_IN_PICTURE_REMOVE'; + +/** + * @typedef MediaProps + * @property {string} src + * @property {boolean} muted + * @property {number} volume + * @property {number} currentTime + * @property {string} poster + * @property {string} backgroundColor + * @property {string} foregroundColor + * @property {string} accentColor + */ + +/** + * @param {string} statusId + * @param {string} accountId + * @param {string} playerType + * @param {MediaProps} props + * @returns {object} + */ +export const deployPictureInPicture = (statusId, accountId, playerType, props) => { + // @ts-expect-error + return (dispatch, getState) => { + // Do not open a player for a toot that does not exist + if (getState().hasIn(['statuses', statusId])) { + dispatch({ + type: PICTURE_IN_PICTURE_DEPLOY, + statusId, + accountId, + playerType, + props, + }); + } + }; +}; + +/* + * @return {object} + */ +export const removePictureInPicture = () => ({ + type: PICTURE_IN_PICTURE_REMOVE, +}); diff --git a/app/javascript/mastodon/actions/picture_in_picture.ts b/app/javascript/mastodon/actions/picture_in_picture.ts deleted file mode 100644 index d34b508a33..0000000000 --- a/app/javascript/mastodon/actions/picture_in_picture.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { createAction } from '@reduxjs/toolkit'; - -import type { PIPMediaProps } from 'mastodon/reducers/picture_in_picture'; -import { createAppAsyncThunk } from 'mastodon/store/typed_functions'; - -interface DeployParams { - statusId: string; - accountId: string; - playerType: 'audio' | 'video'; - props: PIPMediaProps; -} - -export const removePictureInPicture = createAction('pip/remove'); - -export const deployPictureInPictureAction = - createAction('pip/deploy'); - -export const deployPictureInPicture = createAppAsyncThunk( - 'pip/deploy', - (args: DeployParams, { dispatch, getState }) => { - const { statusId } = args; - - // Do not open a player for a toot that does not exist - - // @ts-expect-error state.statuses is not yet typed - // eslint-disable-next-line @typescript-eslint/no-unsafe-call - if (getState().hasIn(['statuses', statusId])) { - dispatch(deployPictureInPictureAction(args)); - } - }, -); diff --git a/app/javascript/mastodon/actions/reaction_deck.js b/app/javascript/mastodon/actions/reaction_deck.js deleted file mode 100644 index 11510d5d0d..0000000000 --- a/app/javascript/mastodon/actions/reaction_deck.js +++ /dev/null @@ -1,79 +0,0 @@ -import api from '../api'; - -export const REACTION_DECK_FETCH_REQUEST = 'REACTION_DECK_FETCH_REQUEST'; -export const REACTION_DECK_FETCH_SUCCESS = 'REACTION_DECK_FETCH_SUCCESS'; -export const REACTION_DECK_FETCH_FAIL = 'REACTION_DECK_FETCH_FAIL'; - -export const REACTION_DECK_UPDATE_REQUEST = 'REACTION_DECK_UPDATE_REQUEST'; -export const REACTION_DECK_UPDATE_SUCCESS = 'REACTION_DECK_UPDATE_SUCCESS'; -export const REACTION_DECK_UPDATE_FAIL = 'REACTION_DECK_UPDATE_FAIL'; - -export function fetchReactionDeck() { - return (dispatch, getState) => { - dispatch(fetchReactionDeckRequest()); - - api(getState).get('/api/v1/reaction_deck').then(response => { - dispatch(fetchReactionDeckSuccess(response.data)); - }).catch(error => { - dispatch(fetchReactionDeckFail(error)); - }); - }; -} - -export function fetchReactionDeckRequest() { - return { - type: REACTION_DECK_FETCH_REQUEST, - skipLoading: true, - }; -} - -export function fetchReactionDeckSuccess(emojis) { - return { - type: REACTION_DECK_FETCH_SUCCESS, - emojis, - skipLoading: true, - }; -} - -export function fetchReactionDeckFail(error) { - return { - type: REACTION_DECK_FETCH_FAIL, - error, - skipLoading: true, - }; -} - -export function updateReactionDeck(emojis) { - return (dispatch, getState) => { - dispatch(updateReactionDeckRequest()); - - api(getState).post('/api/v1/reaction_deck', { emojis }).then(response => { - dispatch(updateReactionDeckSuccess(response.data)); - }).catch(error => { - dispatch(updateReactionDeckFail(error)); - }); - }; -} - -export function updateReactionDeckRequest() { - return { - type: REACTION_DECK_UPDATE_REQUEST, - skipLoading: true, - }; -} - -export function updateReactionDeckSuccess(emojis) { - return { - type: REACTION_DECK_UPDATE_SUCCESS, - emojis, - skipLoading: true, - }; -} - -export function updateReactionDeckFail(error) { - return { - type: REACTION_DECK_UPDATE_FAIL, - error, - skipLoading: true, - }; -} diff --git a/app/javascript/mastodon/actions/search.js b/app/javascript/mastodon/actions/search.js index a34a490e76..38a089b486 100644 --- a/app/javascript/mastodon/actions/search.js +++ b/app/javascript/mastodon/actions/search.js @@ -179,11 +179,6 @@ export const openURL = (value, history, onFailure) => (dispatch, getState) => { export const clickSearchResult = (q, type) => (dispatch, getState) => { const previous = getState().getIn(['search', 'recent']); - - if (previous.some(x => x.get('q') === q && x.get('type') === type)) { - return; - } - const me = getState().getIn(['meta', 'me']); const current = previous.add(fromJS({ type, q })).takeLast(4); @@ -212,4 +207,4 @@ export const hydrateSearch = () => (dispatch, getState) => { if (history !== null) { dispatch(updateSearchHistory(history)); } -}; +}; \ No newline at end of file diff --git a/app/javascript/mastodon/actions/settings.js b/app/javascript/mastodon/actions/settings.js index fbd89f9d4b..3685b0684e 100644 --- a/app/javascript/mastodon/actions/settings.js +++ b/app/javascript/mastodon/actions/settings.js @@ -20,7 +20,7 @@ export function changeSetting(path, value) { } const debouncedSave = debounce((dispatch, getState) => { - if (getState().getIn(['settings', 'saved']) || !getState().getIn(['meta', 'me'])) { + if (getState().getIn(['settings', 'saved'])) { return; } diff --git a/app/javascript/mastodon/actions/statuses.js b/app/javascript/mastodon/actions/statuses.js index 9807e6f67c..3aed807358 100644 --- a/app/javascript/mastodon/actions/statuses.js +++ b/app/javascript/mastodon/actions/statuses.js @@ -39,8 +39,6 @@ export const STATUS_TRANSLATE_SUCCESS = 'STATUS_TRANSLATE_SUCCESS'; export const STATUS_TRANSLATE_FAIL = 'STATUS_TRANSLATE_FAIL'; export const STATUS_TRANSLATE_UNDO = 'STATUS_TRANSLATE_UNDO'; -export const STATUS_EMOJI_REACTION_UPDATE = 'STATUS_EMOJI_REACTION_UPDATE'; - export function fetchStatusRequest(id, skipLoading) { return { type: STATUS_FETCH_REQUEST, @@ -180,9 +178,9 @@ export function fetchContext(id) { return (dispatch, getState) => { dispatch(fetchContextRequest(id)); - api(getState).get(`/api/v1/statuses/${id}/context?with_reference=1`).then(response => { - dispatch(importFetchedStatuses(response.data.ancestors.concat(response.data.descendants).concat(response.data.references))); - dispatch(fetchContextSuccess(id, response.data.ancestors, response.data.descendants, response.data.references)); + api(getState).get(`/api/v1/statuses/${id}/context`).then(response => { + dispatch(importFetchedStatuses(response.data.ancestors.concat(response.data.descendants))); + dispatch(fetchContextSuccess(id, response.data.ancestors, response.data.descendants)); }).catch(error => { if (error.response && error.response.status === 404) { @@ -201,13 +199,12 @@ export function fetchContextRequest(id) { }; } -export function fetchContextSuccess(id, ancestors, descendants, references) { +export function fetchContextSuccess(id, ancestors, descendants) { return { type: CONTEXT_FETCH_SUCCESS, id, ancestors, descendants, - references, statuses: ancestors.concat(descendants), }; } @@ -351,8 +348,3 @@ export const undoStatusTranslation = (id, pollId) => ({ id, pollId, }); - -export const updateEmojiReaction = (emoji_reaction) => ({ - type: STATUS_EMOJI_REACTION_UPDATE, - emoji_reaction, -}); diff --git a/app/javascript/mastodon/actions/streaming.js b/app/javascript/mastodon/actions/streaming.js index 6517e5ad20..9daeb3c60f 100644 --- a/app/javascript/mastodon/actions/streaming.js +++ b/app/javascript/mastodon/actions/streaming.js @@ -10,7 +10,7 @@ import { deleteAnnouncement, } from './announcements'; import { updateConversations } from './conversations'; -import { updateNotifications, expandNotifications, updateEmojiReactions } from './notifications'; +import { updateNotifications, expandNotifications } from './notifications'; import { updateStatus } from './statuses'; import { updateTimeline, @@ -22,7 +22,6 @@ import { fillPublicTimelineGaps, fillCommunityTimelineGaps, fillListTimelineGaps, - fillAntennaTimelineGaps, } from './timelines'; /** @@ -103,10 +102,6 @@ export const connectTimelineStream = (timelineId, channelName, params = {}, opti // @ts-expect-error dispatch(updateNotifications(JSON.parse(data.payload), messages, locale)); break; - case 'emoji_reaction': - // @ts-expect-error - dispatch(updateEmojiReactions(JSON.parse(data.payload))); - break; case 'conversation': // @ts-expect-error dispatch(updateConversations(JSON.parse(data.payload))); @@ -186,10 +181,3 @@ export const connectDirectStream = () => */ export const connectListStream = listId => connectTimelineStream(`list:${listId}`, 'list', { list: listId }, { fillGaps: () => fillListTimelineGaps(listId) }); - -/** - * @param {string} antennaId - * @returns {function(): void} - */ -export const connectAntennaStream = antennaId => - connectTimelineStream(`antenna:${antennaId}`, 'antenna', { antenna: antennaId }, { fillGaps: () => fillAntennaTimelineGaps(antennaId) }); diff --git a/app/javascript/mastodon/actions/suggestions.js b/app/javascript/mastodon/actions/suggestions.js index 8eafe38b21..870a311024 100644 --- a/app/javascript/mastodon/actions/suggestions.js +++ b/app/javascript/mastodon/actions/suggestions.js @@ -54,5 +54,12 @@ export const dismissSuggestion = accountId => (dispatch, getState) => { id: accountId, }); - api(getState).delete(`/api/v1/suggestions/${accountId}`).catch(() => {}); + api(getState).delete(`/api/v1/suggestions/${accountId}`).then(() => { + dispatch(fetchSuggestionsRequest()); + + api(getState).get('/api/v2/suggestions').then(response => { + dispatch(importFetchedAccounts(response.data.map(x => x.account))); + dispatch(fetchSuggestionsSuccess(response.data)); + }).catch(error => dispatch(fetchSuggestionsFail(error))); + }).catch(() => {}); }; diff --git a/app/javascript/mastodon/actions/timelines.js b/app/javascript/mastodon/actions/timelines.js index 786eb7e4b3..08561c71f4 100644 --- a/app/javascript/mastodon/actions/timelines.js +++ b/app/javascript/mastodon/actions/timelines.js @@ -21,10 +21,6 @@ export const TIMELINE_DISCONNECT = 'TIMELINE_DISCONNECT'; export const TIMELINE_CONNECT = 'TIMELINE_CONNECT'; export const TIMELINE_MARK_AS_PARTIAL = 'TIMELINE_MARK_AS_PARTIAL'; -export const TIMELINE_INSERT = 'TIMELINE_INSERT'; - -export const TIMELINE_SUGGESTIONS = 'inline-follow-suggestions'; -export const TIMELINE_GAP = null; export const loadPending = timeline => ({ type: TIMELINE_LOAD_PENDING, @@ -116,19 +112,9 @@ export function expandTimeline(timelineId, path, params = {}, done = noOp) { api(getState).get(path, { params }).then(response => { const next = getLinks(response).refs.find(link => link.rel === 'next'); - dispatch(importFetchedStatuses(response.data)); dispatch(expandTimelineSuccess(timelineId, response.data, next ? next.uri : null, response.status === 206, isLoadingRecent, isLoadingMore, isLoadingRecent && preferPendingItems)); - if (timelineId === 'home' && !isLoadingMore && !isLoadingRecent) { - const now = new Date(); - const fittingIndex = response.data.findIndex(status => now - (new Date(status.created_at)) > 4 * 3600 * 1000); - - if (fittingIndex !== -1) { - dispatch(insertIntoTimeline(timelineId, TIMELINE_SUGGESTIONS, Math.max(1, fittingIndex))); - } - } - if (timelineId === 'home') { dispatch(submitMarkers()); } @@ -163,7 +149,6 @@ export const expandAccountTimeline = (accountId, { maxId, withReplies, t export const expandAccountFeaturedTimeline = (accountId, { tagged } = {}) => expandTimeline(`account:${accountId}:pinned${tagged ? `:${tagged}` : ''}`, `/api/v1/accounts/${accountId}/statuses`, { pinned: true, tagged }); export const expandAccountMediaTimeline = (accountId, { maxId } = {}) => expandTimeline(`account:${accountId}:media`, `/api/v1/accounts/${accountId}/statuses`, { max_id: maxId, only_media: true, limit: 40 }); export const expandListTimeline = (id, { maxId } = {}, done = noOp) => expandTimeline(`list:${id}`, `/api/v1/timelines/list/${id}`, { max_id: maxId }, done); -export const expandAntennaTimeline = (id, { maxId } = {}, done = noOp) => expandTimeline(`antenna:${id}`, `/api/v1/timelines/antenna/${id}`, { max_id: maxId }, done); export const expandHashtagTimeline = (hashtag, { maxId, tags, local } = {}, done = noOp) => { return expandTimeline(`hashtag:${hashtag}${local ? ':local' : ''}`, `/api/v1/timelines/tag/${hashtag}`, { max_id: maxId, @@ -178,7 +163,6 @@ export const fillHomeTimelineGaps = (done = noOp) => fillTimelineGaps('home export const fillPublicTimelineGaps = ({ onlyMedia, onlyRemote } = {}, done = noOp) => fillTimelineGaps(`public${onlyRemote ? ':remote' : ''}${onlyMedia ? ':media' : ''}`, '/api/v1/timelines/public', { remote: !!onlyRemote, only_media: !!onlyMedia }, done); export const fillCommunityTimelineGaps = ({ onlyMedia } = {}, done = noOp) => fillTimelineGaps(`community${onlyMedia ? ':media' : ''}`, '/api/v1/timelines/public', { local: true, only_media: !!onlyMedia }, done); export const fillListTimelineGaps = (id, done = noOp) => fillTimelineGaps(`list:${id}`, `/api/v1/timelines/list/${id}`, {}, done); -export const fillAntennaTimelineGaps = (id, done = noOp) => fillTimelineGaps(`antenna:${id}`, `/api/v1/timelines/antenna/${id}`, {}, done); export function expandTimelineRequest(timeline, isLoadingMore) { return { @@ -237,10 +221,3 @@ export const markAsPartial = timeline => ({ type: TIMELINE_MARK_AS_PARTIAL, timeline, }); - -export const insertIntoTimeline = (timeline, key, index) => ({ - type: TIMELINE_INSERT, - timeline, - index, - key, -}); diff --git a/app/javascript/mastodon/api.ts b/app/javascript/mastodon/api.ts index de597a3e3b..f262fd8570 100644 --- a/app/javascript/mastodon/api.ts +++ b/app/javascript/mastodon/api.ts @@ -29,14 +29,9 @@ const setCSRFHeader = () => { void ready(setCSRFHeader); -export const authorizationTokenFromState = (getState?: GetState) => { - return ( - getState && (getState().meta.get('access_token', '') as string | false) - ); -}; - const authorizationHeaderFromState = (getState?: GetState) => { - const accessToken = authorizationTokenFromState(getState); + const accessToken = + getState && (getState().meta.get('access_token', '') as string); if (!accessToken) { return {}; diff --git a/app/javascript/mastodon/api_types/accounts.ts b/app/javascript/mastodon/api_types/accounts.ts index 41694af4b4..5bf3e64288 100644 --- a/app/javascript/mastodon/api_types/accounts.ts +++ b/app/javascript/mastodon/api_types/accounts.ts @@ -12,32 +12,6 @@ export interface ApiAccountRoleJSON { name: string; } -export interface ApiAccountOtherSettingsJSON { - noindex: boolean; - hide_network: boolean; - hide_statuses_count: boolean; - hide_following_count: boolean; - hide_followers_count: boolean; - translatable_private: boolean; - link_preview: boolean; - allow_quote: boolean; - emoji_reaction_policy: - | 'allow' - | 'outside_only' - | 'following_only' - | 'followers_only' - | 'mutuals_only' - | 'block'; - subscription_policy: 'allow' | 'followers_only' | 'block'; -} - -export interface ApiServerFeaturesJSON { - circle: boolean; - emoji_reaction: boolean; - quote: boolean; - status_reference: boolean; -} - // See app/serializers/rest/account_serializer.rb export interface ApiAccountJSON { acct: string; @@ -48,7 +22,6 @@ export interface ApiAccountJSON { discoverable: boolean; indexable: boolean; display_name: string; - emoji_reaction_available_server: boolean; emojis: ApiCustomEmojiJSON[]; fields: ApiAccountFieldJSON[]; followers_count: number; @@ -61,10 +34,7 @@ export interface ApiAccountJSON { locked: boolean; noindex?: boolean; note: string; - other_settings: ApiAccountOtherSettingsJSON; roles?: ApiAccountJSON[]; - server_features: ApiServerFeaturesJSON; - subscribable: boolean; statuses_count: number; uri: string; url: string; diff --git a/app/javascript/mastodon/api_types/custom_emoji.ts b/app/javascript/mastodon/api_types/custom_emoji.ts index 9f25e6e410..05144d6f68 100644 --- a/app/javascript/mastodon/api_types/custom_emoji.ts +++ b/app/javascript/mastodon/api_types/custom_emoji.ts @@ -5,9 +5,4 @@ export interface ApiCustomEmojiJSON { url: string; category?: string; visible_in_picker: boolean; - width?: number; - height?: number; - sensitive?: boolean; - aliases?: string[]; - license?: string; } diff --git a/app/javascript/mastodon/api_types/markers.ts b/app/javascript/mastodon/api_types/markers.ts deleted file mode 100644 index f7664fd7c1..0000000000 --- a/app/javascript/mastodon/api_types/markers.ts +++ /dev/null @@ -1,7 +0,0 @@ -// See app/serializers/rest/account_serializer.rb - -export interface MarkerJSON { - last_read_id: string; - version: string; - updated_at: string; -} diff --git a/app/javascript/mastodon/api_types/media_attachments.ts b/app/javascript/mastodon/api_types/media_attachments.ts deleted file mode 100644 index fc027ccd2a..0000000000 --- a/app/javascript/mastodon/api_types/media_attachments.ts +++ /dev/null @@ -1,22 +0,0 @@ -// See app/serializers/rest/media_attachment_serializer.rb - -export type MediaAttachmentType = - | 'image' - | 'gifv' - | 'video' - | 'unknown' - | 'audio'; - -export interface ApiMediaAttachmentJSON { - id: string; - type: MediaAttachmentType; - url: string; - preview_url: string; - remoteUrl: string; - preview_remote_url: string; - text_url: string; - // TODO: how to define this? - meta: unknown; - description?: string; - blurhash: string; -} diff --git a/app/javascript/mastodon/api_types/polls.ts b/app/javascript/mastodon/api_types/polls.ts deleted file mode 100644 index 8181f7b813..0000000000 --- a/app/javascript/mastodon/api_types/polls.ts +++ /dev/null @@ -1,23 +0,0 @@ -import type { ApiCustomEmojiJSON } from './custom_emoji'; - -// See app/serializers/rest/poll_serializer.rb - -export interface ApiPollOptionJSON { - title: string; - votes_count: number; -} - -export interface ApiPollJSON { - id: string; - expires_at: string; - expired: boolean; - multiple: boolean; - votes_count: number; - voters_count: number; - - options: ApiPollOptionJSON[]; - emojis: ApiCustomEmojiJSON[]; - - voted: boolean; - own_votes: number[]; -} diff --git a/app/javascript/mastodon/api_types/statuses.ts b/app/javascript/mastodon/api_types/statuses.ts deleted file mode 100644 index 51dccd14d6..0000000000 --- a/app/javascript/mastodon/api_types/statuses.ts +++ /dev/null @@ -1,97 +0,0 @@ -// See app/serializers/rest/status_serializer.rb - -import type { ApiAccountJSON } from './accounts'; -import type { ApiCustomEmojiJSON } from './custom_emoji'; -import type { ApiMediaAttachmentJSON } from './media_attachments'; -import type { ApiPollJSON } from './polls'; - -// See app/modals/status.rb visibility+limited_scope -export type StatusVisibility = - | 'public' - | 'unlisted' - | 'private' - | 'direct' - | 'public_unlisted' - | 'login' - | 'mutual' - | 'circle' - | 'personal' - | 'reply' - | 'limited'; - -export interface ApiStatusApplicationJSON { - name: string; - website: string; -} - -export interface ApiTagJSON { - name: string; - url: string; -} - -export interface ApiMentionJSON { - id: string; - username: string; - url: string; - acct: string; -} - -export interface ApiPreviewCardJSON { - url: string; - title: string; - description: string; - language: string; - type: string; - author_name: string; - author_url: string; - provider_name: string; - provider_url: string; - html: string; - width: number; - height: number; - image: string; - image_description: string; - embed_url: string; - blurhash: string; - published_at: string; -} - -export interface ApiStatusJSON { - id: string; - created_at: string; - in_reply_to_id?: string; - in_reply_to_account_id?: string; - sensitive: boolean; - spoiler_text?: string; - visibility: StatusVisibility; - language: string; - uri: string; - url: string; - replies_count: number; - reblogs_count: number; - favorites_count: number; - edited_at?: string; - - favorited?: boolean; - reblogged?: boolean; - muted?: boolean; - bookmarked?: boolean; - pinned?: boolean; - - // filtered: FilterResult[] - filtered: unknown; // TODO - content?: string; - text?: string; - - reblog?: ApiStatusJSON; - application?: ApiStatusApplicationJSON; - account: ApiAccountJSON; - media_attachments: ApiMediaAttachmentJSON[]; - mentions: ApiMentionJSON[]; - - tags: ApiTagJSON[]; - emojis: ApiCustomEmojiJSON[]; - - card?: ApiPreviewCardJSON; - poll?: ApiPollJSON; -} diff --git a/app/javascript/mastodon/common.js b/app/javascript/mastodon/common.js index 511568aa0f..0ec8449343 100644 --- a/app/javascript/mastodon/common.js +++ b/app/javascript/mastodon/common.js @@ -2,7 +2,7 @@ import Rails from '@rails/ujs'; import 'font-awesome/css/font-awesome.css'; export function start() { - require.context('../images/', true, /\.(jpg|png|svg)$/); + require.context('../images/', true); try { Rails.start(); diff --git a/app/javascript/mastodon/components/__tests__/__snapshots__/autosuggest_emoji-test.jsx.snap b/app/javascript/mastodon/components/__tests__/__snapshots__/autosuggest_emoji-test.jsx.snap index dc955b7abe..1c37278483 100644 --- a/app/javascript/mastodon/components/__tests__/__snapshots__/autosuggest_emoji-test.jsx.snap +++ b/app/javascript/mastodon/components/__tests__/__snapshots__/autosuggest_emoji-test.jsx.snap @@ -9,11 +9,7 @@ exports[` renders emoji with custom url 1`] = ` className="emojione" src="http://example.com/emoji.png" /> -

+ :foobar: `; @@ -26,10 +22,6 @@ exports[` renders native emoji 1`] = ` className="emojione" src="/emoji/1f499.svg" /> -
- :foobar: -
+ :foobar: `; diff --git a/app/javascript/mastodon/components/account.jsx b/app/javascript/mastodon/components/account.jsx index 980dc9e100..f82dd9153a 100644 --- a/app/javascript/mastodon/components/account.jsx +++ b/app/javascript/mastodon/components/account.jsx @@ -1,19 +1,17 @@ import PropTypes from 'prop-types'; -import { useCallback } from 'react'; -import { defineMessages, useIntl, FormattedMessage } from 'react-intl'; +import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; import classNames from 'classnames'; import { Link } from 'react-router-dom'; import ImmutablePropTypes from 'react-immutable-proptypes'; +import ImmutablePureComponent from 'react-immutable-pure-component'; -import MoreHorizIcon from '@/material-icons/400-24px/more_horiz.svg?react'; import { EmptyAccount } from 'mastodon/components/empty_account'; import { ShortNumber } from 'mastodon/components/short_number'; import { VerifiedBadge } from 'mastodon/components/verified_badge'; -import DropdownMenuContainer from '../containers/dropdown_menu_container'; import { me } from '../initial_state'; import { Avatar } from './avatar'; @@ -32,162 +30,151 @@ const messages = defineMessages({ unmute_notifications: { id: 'account.unmute_notifications_short', defaultMessage: 'Unmute notifications' }, mute: { id: 'account.mute_short', defaultMessage: 'Mute' }, block: { id: 'account.block_short', defaultMessage: 'Block' }, - more: { id: 'status.more', defaultMessage: 'More' }, }); -const Account = ({ size = 46, account, onFollow, onBlock, onMute, onMuteNotifications, hidden, hideButtons, minimal, defaultAction, children, withBio }) => { - const intl = useIntl(); +class Account extends ImmutablePureComponent { - const handleFollow = useCallback(() => { - onFollow(account); - }, [onFollow, account]); + static propTypes = { + size: PropTypes.number, + account: ImmutablePropTypes.record, + onFollow: PropTypes.func.isRequired, + onBlock: PropTypes.func.isRequired, + onMute: PropTypes.func.isRequired, + onMuteNotifications: PropTypes.func.isRequired, + intl: PropTypes.object.isRequired, + hidden: PropTypes.bool, + minimal: PropTypes.bool, + defaultAction: PropTypes.string, + withBio: PropTypes.bool, + }; - const handleBlock = useCallback(() => { - onBlock(account); - }, [onBlock, account]); + static defaultProps = { + size: 46, + }; - const handleMute = useCallback(() => { - onMute(account); - }, [onMute, account]); + handleFollow = () => { + this.props.onFollow(this.props.account); + }; - const handleMuteNotifications = useCallback(() => { - onMuteNotifications(account, true); - }, [onMuteNotifications, account]); + handleBlock = () => { + this.props.onBlock(this.props.account); + }; - const handleUnmuteNotifications = useCallback(() => { - onMuteNotifications(account, false); - }, [onMuteNotifications, account]); + handleMute = () => { + this.props.onMute(this.props.account); + }; - if (!account) { - return ; - } + handleMuteNotifications = () => { + this.props.onMuteNotifications(this.props.account, true); + }; - if (hidden) { - return ( - <> - {account.get('display_name')} - {account.get('username')} - - ); - } + handleUnmuteNotifications = () => { + this.props.onMuteNotifications(this.props.account, false); + }; - let buttons; + render () { + const { account, intl, hidden, withBio, defaultAction, size, minimal } = this.props; - if (!hideButtons && account.get('id') !== me && account.get('relationship', null) !== null) { - const following = account.getIn(['relationship', 'following']); - const requested = account.getIn(['relationship', 'requested']); - const blocking = account.getIn(['relationship', 'blocking']); - const muting = account.getIn(['relationship', 'muting']); + if (!account) { + return ; + } - if (requested) { - buttons =