split `i:am` signatures into their very own `footer` column

staging
multiple creatures 2019-05-18 12:58:54 -05:00
parent 5c9aed40f6
commit 09b7532805
4 changed files with 36 additions and 1 deletions

View File

@ -28,6 +28,7 @@ class PostStatusService < BaseService
@account = account
@options = options
@text = @options[:text] || ''
@footer = @options[:footer]
@in_reply_to = @options[:thread]
@tags = @options[:tags]
@local_only = @options[:local_only]
@ -53,12 +54,20 @@ class PostStatusService < BaseService
private
def set_footer_from_i_am
name = @account.vars['_they:are']
return if name.blank?
@account.vars["_they:are:#{name}"]
end
def preprocess_attributes!
if @text.blank? && @options[:spoiler_text].present?
@text = '.'
@text = @media.find(&:video?) ? '📹' : '🖼' if @media.size > 0
end
@footer = set_footer_from_i_am if @footer.nil?
@visibility = @options[:visibility] || @account.user_default_visibility
@visibility = :unlisted if @visibility.in?([nil, 'public']) && @account.silenced? || @account.force_unlisted
@ -178,6 +187,7 @@ class PostStatusService < BaseService
{
created_at: @options[:created_at] ? @options[:created_at].to_datetime : Time.now.utc,
text: @text,
footer: @footer,
media_attachments: @media || [],
thread: @in_reply_to,
poll_attributes: poll_attributes,

View File

@ -0,0 +1,5 @@
class AddFooterToStatuses < ActiveRecord::Migration[5.2]
def change
add_column :statuses, :footer, :text
end
end

View File

@ -0,0 +1,19 @@
class ReformatLocalStatuses < ActiveRecord::Migration[5.2]
disable_ddl_transaction!
def up
Status.local.without_reblogs.find_each do |status|
status.content_type = 'text/x-bbcode+markdown'
text = status.text
matches = text.match(/\[(right|rfloat)\][\u200c\u200b—-]+ *(.*?)\[\/\1\]\u200c?\Z/)
if matches
status.footer = matches[2].strip
text = text.sub(/\[(right|rfloat)\][\u200c\u200b—-]+.*?\[\/\1\]\u200c?\Z/, '').rstrip
end
text = text.gsub(/\[(color|colorhex|hexcolor)=\w+\](.*?)\[\/\1\]/, '[b]\2[/b]')
text = text.gsub(/\[(spin|pulse)\](.*?)\[\/\1\]/, '[b]\2[/b]')
status.text = text unless text.blank?
Rails.logger.info("Rewrote status ID #{status.id}")
status.save
end
end
end

View File

@ -644,11 +644,12 @@ ActiveRecord::Schema.define(version: 2019_05_19_130537) do
t.bigint "in_reply_to_account_id"
t.boolean "local_only"
t.bigint "poll_id"
t.string "content_type"
t.tsvector "tsv"
t.boolean "curated", default: false, null: false
t.string "sharekey"
t.boolean "network", default: false, null: false
t.string "content_type"
t.text "footer"
t.index ["account_id", "id", "visibility", "updated_at"], name: "index_statuses_20180106", order: { id: :desc }
t.index ["in_reply_to_account_id"], name: "index_statuses_on_in_reply_to_account_id"
t.index ["in_reply_to_id"], name: "index_statuses_on_in_reply_to_id"