Browse Source

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

undefined
multiple creatures 4 months ago
parent
commit
214f704878

+ 10
- 0
app/services/post_status_service.rb 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,

+ 5
- 0
db/migrate/20190518044851_add_footer_to_statuses.rb View File

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

+ 19
- 0
db/migrate/20190518150215_reformat_local_statuses.rb 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

+ 3
- 2
db/schema.rb View File

@@ -10,7 +10,7 @@
#
# It's strongly recommended that you check this file into your version control system.

ActiveRecord::Schema.define(version: 2019_05_12_200918) do
ActiveRecord::Schema.define(version: 2019_05_18_150215) do

# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"
@@ -644,11 +644,12 @@ ActiveRecord::Schema.define(version: 2019_05_12_200918) 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"

Loading…
Cancel
Save