Rename "publish" to "toot" in english locale, fix lightbox showing old image
before loading new one, cache notifications API, fix missing follow button on public profiles
This commit is contained in:
parent
9b53c7d353
commit
4bdb6a0eaf
5 changed files with 30 additions and 6 deletions
|
@ -7,7 +7,8 @@ class Api::V1::NotificationsController < ApiController
|
|||
respond_to :json
|
||||
|
||||
def index
|
||||
@notifications = Notification.where(account: current_account).with_includes.paginate_by_max_id(20, params[:max_id], params[:since_id])
|
||||
@notifications = Notification.where(account: current_account).paginate_by_max_id(20, params[:max_id], params[:since_id])
|
||||
@notifications = cache(@notifications)
|
||||
statuses = @notifications.select { |n| !n.target_status.nil? }.map(&:target_status)
|
||||
|
||||
set_maps(statuses)
|
||||
|
@ -19,4 +20,25 @@ class Api::V1::NotificationsController < ApiController
|
|||
|
||||
set_pagination_headers(next_path, prev_path)
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def cache(raw)
|
||||
uncached_ids = []
|
||||
cached_keys_with_value = Rails.cache.read_multi(*raw.map(&:cache_key))
|
||||
|
||||
raw.each do |notification|
|
||||
uncached_ids << notification.id unless cached_keys_with_value.key?(notification.cache_key)
|
||||
end
|
||||
|
||||
unless uncached_ids.empty?
|
||||
uncached = Notification.where(id: uncached_ids).with_includes.map { |n| [n.id, n] }.to_h
|
||||
|
||||
uncached.values.each do |notification|
|
||||
Rails.cache.write(notification.cache_key, notification)
|
||||
end
|
||||
end
|
||||
|
||||
raw.map { |notification| cached_keys_with_value[notification.cache_key] || uncached[notification.id] }
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue