Browse Source

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
master
Eugen Rochko 7 years ago
parent
commit
4bdb6a0eaf
5 changed files with 30 additions and 6 deletions
  1. +3
    -1
      app/assets/javascripts/components/components/lightbox.jsx
  2. +1
    -1
      app/assets/javascripts/components/locales/en.jsx
  3. +23
    -1
      app/controllers/api/v1/notifications_controller.rb
  4. +2
    -2
      app/controllers/api_controller.rb
  5. +1
    -1
      app/controllers/application_controller.rb

+ 3
- 1
app/assets/javascripts/components/components/lightbox.jsx View File

@ -43,13 +43,15 @@ const Lightbox = React.createClass({
render () {
const { intl, isVisible, onOverlayClicked, onCloseClicked, children } = this.props;
const content = isVisible ? children : <div />;
return (
<div className='lightbox' style={{...overlayStyle, display: isVisible ? 'flex' : 'none'}} onClick={onOverlayClicked}>
<Motion defaultStyle={{ y: -200 }} style={{ y: spring(isVisible ? 0 : -200) }}>
{({ y }) =>
<div style={{...dialogStyle, transform: `translateY(${y}px)`}}>
<IconButton title={intl.formatMessage({ id: 'lightbox.close', defaultMessage: 'Close' })} icon='times' onClick={onCloseClicked} size={16} style={closeStyle} />
{children}
{content}
</div>
}
</Motion>

+ 1
- 1
app/assets/javascripts/components/locales/en.jsx View File

@ -34,7 +34,7 @@ const en = {
"tabs_bar.public": "Public",
"tabs_bar.notifications": "Notifications",
"compose_form.placeholder": "What is on your mind?",
"compose_form.publish": "Publish",
"compose_form.publish": "Toot",
"navigation_bar.settings": "Settings",
"navigation_bar.public_timeline": "Public timeline",
"navigation_bar.logout": "Logout",

+ 23
- 1
app/controllers/api/v1/notifications_controller.rb 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

+ 2
- 2
app/controllers/api_controller.rb View File

@ -59,11 +59,11 @@ class ApiController < ApplicationController
end
def current_resource_owner
@user ||= User.find(doorkeeper_token.resource_owner_id) if doorkeeper_token
@current_user ||= User.find(doorkeeper_token.resource_owner_id) if doorkeeper_token
end
def current_user
@user ||= super || current_resource_owner
super || current_resource_owner
rescue ActiveRecord::RecordNotFound
nil
end

+ 1
- 1
app/controllers/application_controller.rb View File

@ -51,6 +51,6 @@ class ApplicationController < ActionController::Base
end
def current_account
@account ||= current_user.try(:account)
@current_account ||= current_user.try(:account)
end
end

Loading…
Cancel
Save