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:
@ -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
|
||||
|
Reference in New Issue
Block a user