Don't forget to lycansubscribe
35
fork

Configure Feed

Select the types of activity you want to include in your feed.

at 97ffc3de7a1c30ddf8eb445b90a727cd318920c8 39 lines 959 B view raw
1require 'active_record' 2require 'time' 3 4require_relative '../at_uri' 5require_relative 'post' 6require_relative 'searchable' 7require_relative 'user' 8 9class Quote < ActiveRecord::Base 10 include Searchable 11 include Importable 12 13 validates_presence_of :time, :rkey 14 validates_length_of :rkey, is: 13 15 validates :quote_text, length: { minimum: 0, maximum: 1000, allow_nil: false } 16 17 belongs_to :user, foreign_key: 'actor_id' 18 belongs_to :post, optional: true 19 20 def self.new_from_record(uri, record) 21 return nil unless record['embed'] 22 23 quoted_post_uri = case record['embed']['$type'] 24 when 'app.bsky.embed.record' 25 record['embed']['record']['uri'] 26 when 'app.bsky.embed.recordWithMedia' 27 record['embed']['record']['record']['uri'] 28 else 29 return nil 30 end 31 32 self.new( 33 rkey: AT_URI(uri).rkey, 34 time: Time.parse(record['createdAt']), 35 post_uri: quoted_post_uri, 36 quote_text: record['text'] 37 ) 38 end 39end