about summary refs log tree commit diff
path: root/app/models
AgeCommit message (Collapse)Author
2023-02-27Fix single-record invalid condition on PollVote (#23810)Matt Jankowski
2023-02-22Fix inefficiency when searching accounts per username in admin interface ↵Claire
(#23801)
2023-02-21Autofix Rubocop Rails/WhereEquals (#23759)Nick Schonning
2023-02-20Autofix Rubocop remaining Layout rules (#23679)Nick Schonning
2023-02-20Autofix Rubocop Style/UnpackFirst (#23741)Nick Schonning
2023-02-20Autofix Rubocop Rails/EnumHash (#23737)Nick Schonning
2023-02-20Autofix Rubocop Rails/RedundantForeignKey (#23731)Nick Schonning
2023-02-19Autofix Rubocop Style/RedundantBegin (#23703)Nick Schonning
2023-02-18Autofix Rubocop Style/Lambda (#23696)Nick Schonning
2023-02-18Autofix Rubocop Style/IfUnlessModifier (#23697)Nick Schonning
2023-02-18Autofix Rubocop Lint/AmbiguousOperatorPrecedence (#23681)Nick Schonning
2023-02-18Run rubocop formatting except line length (#23632)Nick Schonning
2023-02-15Upgrade to Ruby 3.2 (#22928)Aaron Patterson
Co-authored-by: Matthew Ford <matt@bitzesty.com>
2023-02-10Fix admin-set follow recommandations being case-sensitive (#23500)Claire
Fixes #23472
2023-02-10Fix server status URL being a required server setting (#23499)Claire
2023-02-08Apply Rubocop Rails/WhereNot (#23448)Nick Schonning
* Apply Rubocop Rails/WhereNot * Update spec for where.not
2023-02-08Apply Rubocop Performance/BlockGivenWithExplicitBlock (#23441)Nick Schonning
* Apply Rubocop Performance/BlockGivenWithExplicitBlock * Unprefix used block parameter
2023-02-08Apply Rubocop Style/NegatedIfElseCondition (#23451)Nick Schonning
2023-02-08Apply Rubocop Style/RedundantAssignment (#23452)Nick Schonning
2023-02-08Apply Rubocop Performance/RedundantBlockCall (#23440)Nick Schonning
2023-02-07Autofix Rails/EagerEvaluationLogMessage (#23429)Nick Schonning
* Autofix Rails/EagerEvaluationLogMessage * Update spec for debug block syntax
2023-02-04Add setting for status page URL (#23390)Eugen Rochko
2023-01-25Add `roles` attribute to Account entities in REST API (#23255)Claire
2023-01-24Fix account activation being triggered before email confirmation (#23245)Claire
* Add tests * Fix account activation being triggered before email confirmation Fixes #23098
2023-01-21Fix Account Strike causing PG not null validation error (#23178)Jeong Arm
2023-01-18Add option to make the landing page be /about even when trends are enabled ↵Claire
(#20808) * Add option to make the landing page be /about even when trends are enabled * Restablish /explore as landing page by default
2023-01-18Add confirmation screen when handling reports (#22375)Claire
* Add confirmation screen on moderation actions * Add flash notice when a report has been processed * Refactor tests * Add tests
2023-01-18Fix situations in which instance actor can be set to a Mastodon-incompatible ↵Claire
name (#22307) * Validate internal actor * Use “internal.actor” by default for the server actor username * Fix instance actor username on the fly if it includes ':' * Change actor name from internal.actor to mastodon.internal
2023-01-18Change domain block CSV parsing to be more robust and handle more lists (#21470)Claire
* Change domain block CSV parsing to be more robust and handle more lists * Add some tests * Improve domain block import validation and reporting
2023-01-13Don't crash on unobtainable avatars (#22462)David Freedman
2023-01-13Fix crash when marking statuses as sensitive while some statuses are deleted ↵Claire
(#22134) * Do not offer to mark statuses as sensitive if there is no undeleted status with media attachments * Fix crash when marking statuses as sensitive while some statuses are deleted Fixes #21910 * Fix multiple strikes being created for a single report when selecting “Mark as sensitive” * Add tests
2023-01-11Fix/remove calling private method with send in model (#22951)Kaspar V
* fix(status): remove send usage for private unlink_from_conversations - make unlink_from_conversations public method - rename unlink_from_conversations to unlink_from_conversations! - fix send call on private method in statuses_vacuum and batched_remove_status_service * fix(feeds_vacuum): replace find_in_batches with in_batches because active record query results should be a little more efficient than itterating with map and each. Postgres can grasp such lists of ids much quicker than ruby can. Will probably make allmost no difference, but cannot hurt either.
2023-01-06Fix account search not returning followed accounts first (#22956)Darius Kazemi
* Make autosuggest for mentions return followed accounts first This makes it so that (when elasticsearch is disabled) when a user types '@foo' in the compose box, they are first going to get accounts they follow ordered by the ranking algorithm, and then second they will get accounts they do not follow, also ordered by the ranking algorithm. This makes behavior more consistent with user expectation and also with results when elasticsearch is enabled. * Fix ranking order to correct direction * One more fixup per @gargron suggestion * Tweak to ranking to no longer include following modifier
2023-01-05Fix site upload validations (#22479)Claire
* Fix site settings media upload handling of DimensionsValidationError Fixes #22234 * Fix underlying validations not being performed for site uploads
2023-01-05Strip spaces around URL when adding a relay (#22655)Claire
* Strip spaces around URL when adding a relay Fixes #22650 * Gracefuly handle URL parsing errors in URL validator
2023-01-05Add webhook `account.approved` (#22938)Alexander Ivanov
* Webhook `account.approved` when preparing new user * Update Webhook.EVENTS
2023-01-04Fix ・ detection in hashtag regex to construct hashtag correctly (#22888)Partho Ghosh
* Fix ・ detection in hashtag regex to construct hashtag correctly * Fixed rubocop liniting issues * More rubocop linting fix
2022-12-15Add follow request banner on account header (#20785)Claire
* Add requested_by to relationship maps * Display whether an account has requested to follow you on their profile
2022-12-15Change remote media files to be downloaded outside of transactions (#21796)Claire
2022-12-15Add "disabled" user filter for admin/accounts UI (#21282)Jeong Arm
2022-12-15Save avatar or header correctly even if other one fails (#18465)Jeong Arm
* Save avatar or header correctly if other one fails * Fix test
2022-12-15Revoke all authorized applications on password reset (#21325)Francis Murillo
* Clear sessions on password change * Rename User::clear_sessions to revoke_access for a clearer meaning * Add reset paassword controller test * Use User.find instead of User.find_for_authentication for reset password test * Use redirect and render for better test meaning in reset password Co-authored-by: Effy Elden <effy@effy.space>
2022-12-07Fix failure when “Require a reason to join” is set with open ↵Claire
registrations (#22127)
2022-12-07Fix 500 error when trying to migrate to an invalid address (#21462)Claire
* Fix 500 error when trying to migrate to an invalid address * Add tests
2022-12-07Fix unbounded recursion in account discovery (#22025)Claire
* Fix trying to fetch posts from other users when fetching featured posts * Rate-limit discovery of new subdomains * Put a limit on recursively discovering new accounts
2022-12-07Fix irreversible and whole_word parameters handling in /api/v1/filters (#21988)Claire
Fixes #21965
2022-11-27Fix spaces not being stripped in admin account search (#21324)Claire
Fixes #21058 Regression from #18641
2022-11-27refactor(vacuum statuses): reduce amount of db queries and load for each ↵Kaspar V
query - improve performance (#21487) * refactor(statuses_vacuum): remove dead code - unused Method is not called inside class and private. Clean up dead code. * refactor(statuses_vacuum): make retention_period present test explicit This private method only hides functionality. It is best practice to be as explicit as possible. * refactor(statuses_vacuum): improve query performance - fix statuses_scope having sub-select for Account.remote scope by `joins(:account).merge(Account.remote)` - fix statuses_scope unnecessary use of `Status.arel_table[:id].lt` because it is inexplicit, bad practice and even slower than normal `.where('statuses.id < ?'` - fix statuses_scope remove select(:id, :visibility) for having reusable active record query batches (no re queries) - fix vacuum_statuses! to use in_batches instead of find_in_batches, because in_batches delivers a full blown active record query result, in stead of an array - no requeries necessary - send(:unlink_from_conversations) not to perform another db query, but reuse the in_batches result instead. - remove now obsolete remove_from_account_conversations method - remove_from_search_index uses array of ids, instead of mapping the ids from an array - this should be more efficient - use the in_batches scope to call delete_all, instead of running another db query for this - because it is again more efficient - add TODO comment for calling models private method with send * refactor(status): simplify unlink_from_conversations - add `has_many through:` relation mentioned_accounts - use model scope local instead of method call `Status#local?` - more readable add account to inbox_owners when account.local? * refactor(status): searchable_by way less sub selects These queries all included a sub-select. Doing the same with a joins should be more efficient. Since this method does 5 such queries, this should be significant, since it technically halves the query count. This is how it was: ```ruby [3] pry(main)> Status.first.mentions.where(account: Account.local, silent: false).explain Status Load (1.6ms) SELECT "statuses".* FROM "statuses" WHERE "statuses"."deleted_at" IS NULL ORDER BY "statuses"."id" DESC LIMIT $1 [["LIMIT", 1]] Mention Load (1.5ms) SELECT "mentions".* FROM "mentions" WHERE "mentions"."status_id" = $1 AND "mentions"."account_id" IN (SELECT "accounts"."id" FROM "accounts" WHERE "accounts"."domain" IS NULL) AND "mentions"."silent" = $2 [["status_id", 109382923142288414], ["silent", false]] => EXPLAIN for: SELECT "mentions".* FROM "mentions" WHERE "mentions"."status_id" = $1 AND "mentions"."account_id" IN (SELECT "accounts"."id" FROM "accounts" WHERE "accounts"."domain" IS NULL) AND "mentions"."silent" = $2 [["status_id", 109382923142288414], ["silent", false]] QUERY PLAN ------------------------------------------------------------------------------------------------------------------ Nested Loop (cost=0.15..23.08 rows=1 width=41) -> Seq Scan on accounts (cost=0.00..10.90 rows=1 width=8) Filter: (domain IS NULL) -> Index Scan using index_mentions_on_account_id_and_status_id on mentions (cost=0.15..8.17 rows=1 width=41) Index Cond: ((account_id = accounts.id) AND (status_id = '109382923142288414'::bigint)) Filter: (NOT silent) (6 rows) ``` This is how it is with this change: ```ruby [4] pry(main)> Status.first.mentions.joins(:account).merge(Account.local).active.explain Status Load (1.7ms) SELECT "statuses".* FROM "statuses" WHERE "statuses"."deleted_at" IS NULL ORDER BY "statuses"."id" DESC LIMIT $1 [["LIMIT", 1]] Mention Load (0.7ms) SELECT "mentions".* FROM "mentions" INNER JOIN "accounts" ON "accounts"."id" = "mentions"."account_id" WHERE "mentions"."status_id" = $1 AND "accounts"."domain" IS NULL AND "mentions"."silent" = $2 [["status_id", 109382923142288414], ["silent", false]] => EXPLAIN for: SELECT "mentions".* FROM "mentions" INNER JOIN "accounts" ON "accounts"."id" = "mentions"."account_id" WHERE "mentions"."status_id" = $1 AND "accounts"."domain" IS NULL AND "mentions"."silent" = $2 [["status_id", 109382923142288414], ["silent", false]] QUERY PLAN ------------------------------------------------------------------------------------------------------------------ Nested Loop (cost=0.15..23.08 rows=1 width=41) -> Seq Scan on accounts (cost=0.00..10.90 rows=1 width=8) Filter: (domain IS NULL) -> Index Scan using index_mentions_on_account_id_and_status_id on mentions (cost=0.15..8.17 rows=1 width=41) Index Cond: ((account_id = accounts.id) AND (status_id = '109382923142288414'::bigint)) Filter: (NOT silent) (6 rows) ```
2022-11-26Clear voter count when poll is reset (#21700)afontenot
When a poll is edited, we reset the poll and remove all previous votes. However, prior to this commit, the voter count on the poll was not reset. This leads to incorrect percentages being shown in poll results. Fixes #21696
2022-11-25fix media uploads with ffmpeg 5 (#21191)Skyler Hawthorne