0
0
Fork 0

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:
Eugen Rochko 2016-11-23 09:20:34 +01:00
parent 9b53c7d353
commit 4bdb6a0eaf
5 changed files with 30 additions and 6 deletions

View file

@ -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