Remove conversation URI (#11423)
It is not part of ActivityPub and will free up a lot of space
This commit is contained in:
		| @ -67,7 +67,6 @@ class ActivityPub::Activity::Create < ActivityPub::Activity | ||||
|         sensitive: @object['sensitive'] || false, | ||||
|         visibility: visibility_from_audience, | ||||
|         thread: replied_to_status, | ||||
|         conversation: conversation_from_uri(@object['conversation']), | ||||
|         media_attachment_ids: process_attachments.take(4).map(&:id), | ||||
|         poll: process_poll, | ||||
|       } | ||||
| @ -262,16 +261,6 @@ class ActivityPub::Activity::Create < ActivityPub::Activity | ||||
|     ActivityPub::FetchRepliesWorker.perform_async(status.id, uri) unless uri.nil? | ||||
|   end | ||||
|  | ||||
|   def conversation_from_uri(uri) | ||||
|     return nil if uri.nil? | ||||
|     return Conversation.find_by(id: OStatus::TagManager.instance.unique_tag_to_local_id(uri, 'Conversation')) if OStatus::TagManager.instance.local_id?(uri) | ||||
|     begin | ||||
|       Conversation.find_or_create_by!(uri: uri) | ||||
|     rescue ActiveRecord::RecordInvalid, ActiveRecord::RecordNotUnique | ||||
|       retry | ||||
|     end | ||||
|   end | ||||
|  | ||||
|   def visibility_from_audience | ||||
|     if equals_or_includes?(@object['to'], ActivityPub::TagManager::COLLECTIONS[:public]) | ||||
|       :public | ||||
|  | ||||
| @ -4,17 +4,10 @@ | ||||
| # Table name: conversations | ||||
| # | ||||
| #  id         :bigint(8)        not null, primary key | ||||
| #  uri        :string | ||||
| #  created_at :datetime         not null | ||||
| #  updated_at :datetime         not null | ||||
| # | ||||
|  | ||||
| class Conversation < ApplicationRecord | ||||
|   validates :uri, uniqueness: true, if: :uri? | ||||
|  | ||||
|   has_many :statuses | ||||
|  | ||||
|   def local? | ||||
|     uri.nil? | ||||
|   end | ||||
| end | ||||
|  | ||||
| @ -1,14 +1,13 @@ | ||||
| # frozen_string_literal: true | ||||
|  | ||||
| class ActivityPub::NoteSerializer < ActivityPub::Serializer | ||||
|   context_extensions :atom_uri, :conversation, :sensitive, | ||||
|   context_extensions :atom_uri, :sensitive, | ||||
|                      :hashtag, :emoji, :focal_point, :blurhash | ||||
|  | ||||
|   attributes :id, :type, :summary, | ||||
|              :in_reply_to, :published, :url, | ||||
|              :attributed_to, :to, :cc, :sensitive, | ||||
|              :atom_uri, :in_reply_to_atom_uri, | ||||
|              :conversation | ||||
|              :atom_uri, :in_reply_to_atom_uri | ||||
|  | ||||
|   attribute :content | ||||
|   attribute :content_map, if: :language? | ||||
| @ -110,16 +109,6 @@ class ActivityPub::NoteSerializer < ActivityPub::Serializer | ||||
|     OStatus::TagManager.instance.uri_for(object.thread) | ||||
|   end | ||||
|  | ||||
|   def conversation | ||||
|     return if object.conversation.nil? | ||||
|  | ||||
|     if object.conversation.uri? | ||||
|       object.conversation.uri | ||||
|     else | ||||
|       OStatus::TagManager.instance.unique_tag(object.conversation.created_at, object.conversation.id, 'Conversation') | ||||
|     end | ||||
|   end | ||||
|  | ||||
|   def local? | ||||
|     object.account.local? | ||||
|   end | ||||
|  | ||||
| @ -1,3 +1,5 @@ | ||||
| # frozen_string_literal: true | ||||
|  | ||||
| class RemoveBoostsWideningAudience < ActiveRecord::Migration[5.2] | ||||
|   disable_ddl_transaction! | ||||
|  | ||||
|  | ||||
| @ -0,0 +1,12 @@ | ||||
| # frozen_string_literal: true | ||||
|  | ||||
| class RemoveUriFromConversations < ActiveRecord::Migration[5.2] | ||||
|   def up | ||||
|     safety_assured { remove_column :conversations, :uri, :string } | ||||
|   end | ||||
|  | ||||
|   def down | ||||
|     add_column :conversations, :uri, :string | ||||
|     add_index :conversations, :uri, unique: true | ||||
|   end | ||||
| end | ||||
| @ -10,7 +10,7 @@ | ||||
| # | ||||
| # It's strongly recommended that you check this file into your version control system. | ||||
|  | ||||
| ActiveRecord::Schema.define(version: 2019_07_26_175042) do | ||||
| ActiveRecord::Schema.define(version: 2019_07_28_084117) do | ||||
|  | ||||
|   # These are extensions that must be enabled in order to support this database | ||||
|   enable_extension "plpgsql" | ||||
| @ -203,10 +203,8 @@ ActiveRecord::Schema.define(version: 2019_07_26_175042) do | ||||
|   end | ||||
|  | ||||
|   create_table "conversations", force: :cascade do |t| | ||||
|     t.string "uri" | ||||
|     t.datetime "created_at", null: false | ||||
|     t.datetime "updated_at", null: false | ||||
|     t.index ["uri"], name: "index_conversations_on_uri", unique: true | ||||
|   end | ||||
|  | ||||
|   create_table "custom_emoji_categories", force: :cascade do |t| | ||||
|  | ||||
| @ -1,13 +1,5 @@ | ||||
| require 'rails_helper' | ||||
|  | ||||
| RSpec.describe Conversation, type: :model do | ||||
|   describe '#local?' do | ||||
|     it 'returns true when URI is nil' do | ||||
|       expect(Fabricate(:conversation).local?).to be true | ||||
|     end | ||||
|  | ||||
|     it 'returns false when URI is not nil' do | ||||
|       expect(Fabricate(:conversation, uri: 'abc').local?).to be false | ||||
|     end | ||||
|   end | ||||
| end | ||||
|  | ||||
		Reference in New Issue
	
	Block a user