diff options
author | Reverite <github@reverite.sh> | 2019-06-27 21:10:01 -0700 |
---|---|---|
committer | Reverite <github@reverite.sh> | 2019-06-27 21:10:01 -0700 |
commit | 9861df046853b71370cede86afbba1a371714756 (patch) | |
tree | 38416f38dfc2a2349b7a5df20646bb7d0f51361f /app/models | |
parent | 2d396aa3a0bf2674194b9f4c0e0a1052b8d23a06 (diff) | |
parent | ca17bae904783dfb1f4899a533d28a79da0c6fe9 (diff) |
Merge branch 'glitch' into production
Diffstat (limited to 'app/models')
-rw-r--r-- | app/models/direct_feed.rb | 31 | ||||
-rw-r--r-- | app/models/user.rb | 2 |
2 files changed, 32 insertions, 1 deletions
diff --git a/app/models/direct_feed.rb b/app/models/direct_feed.rb new file mode 100644 index 000000000..c0b8a0a35 --- /dev/null +++ b/app/models/direct_feed.rb @@ -0,0 +1,31 @@ +# frozen_string_literal: true + +class DirectFeed < Feed + include Redisable + + def initialize(account) + @type = :direct + @id = account.id + @account = account + end + + def get(limit, max_id = nil, since_id = nil, min_id = nil) + unless redis.exists("account:#{@account.id}:regeneration") + statuses = super + return statuses unless statuses.empty? + end + from_database(limit, max_id, since_id, min_id) + end + + private + + def from_database(limit, max_id, since_id, min_id) + loop do + statuses = Status.as_direct_timeline(@account, limit, max_id, since_id, min_id) + return statuses if statuses.empty? + max_id = statuses.last.id + statuses = statuses.reject { |status| FeedManager.instance.filter?(:direct, status, @account.id) } + return statuses unless statuses.empty? + end + end +end diff --git a/app/models/user.rb b/app/models/user.rb index f6936cb9d..9bc3dd608 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -106,7 +106,7 @@ class User < ApplicationRecord delegate :auto_play_gif, :default_sensitive, :unfollow_modal, :boost_modal, :favourite_modal, :delete_modal, :reduce_motion, :system_font_ui, :noindex, :flavour, :skin, :display_media, :hide_network, :hide_followers_count, :expand_spoilers, :default_language, :aggregate_reblogs, :show_application, - :advanced_layout, :default_content_type, to: :settings, prefix: :setting, allow_nil: false + :advanced_layout, :default_content_type, :use_blurhash, to: :settings, prefix: :setting, allow_nil: false attr_reader :invite_code attr_writer :external |