From 650820d62d46e803083b1178a95ba2a29f7d8b6e Mon Sep 17 00:00:00 2001 From: ThibG Date: Mon, 4 Nov 2019 13:00:16 +0100 Subject: Fix remote media descriptions being cut off at 420 chars (#12262) * Fix remote media descriptions being cut off at 420 chars Fixes #12258 * Fix tests --- app/models/media_attachment.rb | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'app/models') diff --git a/app/models/media_attachment.rb b/app/models/media_attachment.rb index 137377422..1f9d92b22 100644 --- a/app/models/media_attachment.rb +++ b/app/models/media_attachment.rb @@ -26,6 +26,8 @@ class MediaAttachment < ApplicationRecord enum type: [:image, :gifv, :video, :unknown, :audio] + MAX_DESCRIPTION_LENGTH = 1_500 + IMAGE_FILE_EXTENSIONS = %w(.jpg .jpeg .png .gif).freeze VIDEO_FILE_EXTENSIONS = %w(.webm .mp4 .m4v .mov).freeze AUDIO_FILE_EXTENSIONS = %w(.ogg .oga .mp3 .wav .flac .opus .aac .m4a .3gp .wma).freeze @@ -139,7 +141,7 @@ class MediaAttachment < ApplicationRecord include Attachmentable validates :account, presence: true - validates :description, length: { maximum: 1_500 }, if: :local? + validates :description, length: { maximum: MAX_DESCRIPTION_LENGTH }, if: :local? scope :attached, -> { where.not(status_id: nil).or(where.not(scheduled_status_id: nil)) } scope :unattached, -> { where(status_id: nil, scheduled_status_id: nil) } @@ -243,7 +245,7 @@ class MediaAttachment < ApplicationRecord end def prepare_description - self.description = description.strip[0...420] unless description.nil? + self.description = description.strip[0...MAX_DESCRIPTION_LENGTH] unless description.nil? end def set_type_and_extension -- cgit From 65e13cfacf0d1a862fbc4da44ad84b1522b01b34 Mon Sep 17 00:00:00 2001 From: ThibG Date: Mon, 4 Nov 2019 13:02:01 +0100 Subject: Add abilityto add oneself to lists (#12271) * Add ability to add oneself to lists * Change search results to include oneself when searching through followers * Mark follow relation as optional in ListAccount --- app/models/account.rb | 4 +++- app/models/list_account.rb | 6 +++--- app/services/account_search_service.rb | 2 +- db/migrate/20191031163205_change_list_account_follow_nullable.rb | 5 +++++ db/schema.rb | 4 ++-- 5 files changed, 14 insertions(+), 7 deletions(-) create mode 100644 db/migrate/20191031163205_change_list_account_follow_nullable.rb (limited to 'app/models') diff --git a/app/models/account.rb b/app/models/account.rb index 05936def3..cae82da16 100644 --- a/app/models/account.rb +++ b/app/models/account.rb @@ -429,6 +429,8 @@ class Account < ApplicationRecord SELECT target_account_id FROM follows WHERE account_id = ? + UNION ALL + SELECT ? ) SELECT accounts.*, @@ -444,7 +446,7 @@ class Account < ApplicationRecord LIMIT ? OFFSET ? SQL - records = find_by_sql([sql, account.id, account.id, account.id, limit, offset]) + records = find_by_sql([sql, account.id, account.id, account.id, account.id, limit, offset]) else sql = <<-SQL.squish SELECT diff --git a/app/models/list_account.rb b/app/models/list_account.rb index 87b498224..785923c4c 100644 --- a/app/models/list_account.rb +++ b/app/models/list_account.rb @@ -6,13 +6,13 @@ # id :bigint(8) not null, primary key # list_id :bigint(8) not null # account_id :bigint(8) not null -# follow_id :bigint(8) not null +# follow_id :bigint(8) # class ListAccount < ApplicationRecord belongs_to :list belongs_to :account - belongs_to :follow + belongs_to :follow, optional: true validates :account_id, uniqueness: { scope: :list_id } @@ -21,6 +21,6 @@ class ListAccount < ApplicationRecord private def set_follow - self.follow = Follow.find_by(account_id: list.account_id, target_account_id: account.id) + self.follow = Follow.find_by!(account_id: list.account_id, target_account_id: account.id) unless list.account_id == account.id end end diff --git a/app/services/account_search_service.rb b/app/services/account_search_service.rb index 40c5f8590..7e74cc893 100644 --- a/app/services/account_search_service.rb +++ b/app/services/account_search_service.rb @@ -127,7 +127,7 @@ class AccountSearchService < BaseService end def following_ids - @following_ids ||= account.active_relationships.pluck(:target_account_id) + @following_ids ||= account.active_relationships.pluck(:target_account_id) + [account.id] end def limit_for_non_exact_results diff --git a/db/migrate/20191031163205_change_list_account_follow_nullable.rb b/db/migrate/20191031163205_change_list_account_follow_nullable.rb new file mode 100644 index 000000000..ff8911546 --- /dev/null +++ b/db/migrate/20191031163205_change_list_account_follow_nullable.rb @@ -0,0 +1,5 @@ +class ChangeListAccountFollowNullable < ActiveRecord::Migration[5.1] + def change + change_column_null :list_accounts, :follow_id, true + end +end diff --git a/db/schema.rb b/db/schema.rb index 62e2d3a6d..1bcc003a5 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 2019_10_07_013357) do +ActiveRecord::Schema.define(version: 2019_10_31_163205) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -373,7 +373,7 @@ ActiveRecord::Schema.define(version: 2019_10_07_013357) do create_table "list_accounts", force: :cascade do |t| t.bigint "list_id", null: false t.bigint "account_id", null: false - t.bigint "follow_id", null: false + t.bigint "follow_id" t.index ["account_id", "list_id"], name: "index_list_accounts_on_account_id_and_list_id", unique: true t.index ["follow_id"], name: "index_list_accounts_on_follow_id" t.index ["list_id", "account_id"], name: "index_list_accounts_on_list_id_and_account_id" -- cgit