forked from cybrespace/mastodon
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
|
@ -43,13 +43,15 @@ const Lightbox = React.createClass({
|
||||||
render () {
|
render () {
|
||||||
const { intl, isVisible, onOverlayClicked, onCloseClicked, children } = this.props;
|
const { intl, isVisible, onOverlayClicked, onCloseClicked, children } = this.props;
|
||||||
|
|
||||||
|
const content = isVisible ? children : <div />;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className='lightbox' style={{...overlayStyle, display: isVisible ? 'flex' : 'none'}} onClick={onOverlayClicked}>
|
<div className='lightbox' style={{...overlayStyle, display: isVisible ? 'flex' : 'none'}} onClick={onOverlayClicked}>
|
||||||
<Motion defaultStyle={{ y: -200 }} style={{ y: spring(isVisible ? 0 : -200) }}>
|
<Motion defaultStyle={{ y: -200 }} style={{ y: spring(isVisible ? 0 : -200) }}>
|
||||||
{({ y }) =>
|
{({ y }) =>
|
||||||
<div style={{...dialogStyle, transform: `translateY(${y}px)`}}>
|
<div style={{...dialogStyle, transform: `translateY(${y}px)`}}>
|
||||||
<IconButton title={intl.formatMessage({ id: 'lightbox.close', defaultMessage: 'Close' })} icon='times' onClick={onCloseClicked} size={16} style={closeStyle} />
|
<IconButton title={intl.formatMessage({ id: 'lightbox.close', defaultMessage: 'Close' })} icon='times' onClick={onCloseClicked} size={16} style={closeStyle} />
|
||||||
{children}
|
{content}
|
||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
</Motion>
|
</Motion>
|
||||||
|
|
|
@ -34,7 +34,7 @@ const en = {
|
||||||
"tabs_bar.public": "Public",
|
"tabs_bar.public": "Public",
|
||||||
"tabs_bar.notifications": "Notifications",
|
"tabs_bar.notifications": "Notifications",
|
||||||
"compose_form.placeholder": "What is on your mind?",
|
"compose_form.placeholder": "What is on your mind?",
|
||||||
"compose_form.publish": "Publish",
|
"compose_form.publish": "Toot",
|
||||||
"navigation_bar.settings": "Settings",
|
"navigation_bar.settings": "Settings",
|
||||||
"navigation_bar.public_timeline": "Public timeline",
|
"navigation_bar.public_timeline": "Public timeline",
|
||||||
"navigation_bar.logout": "Logout",
|
"navigation_bar.logout": "Logout",
|
||||||
|
|
|
@ -7,7 +7,8 @@ class Api::V1::NotificationsController < ApiController
|
||||||
respond_to :json
|
respond_to :json
|
||||||
|
|
||||||
def index
|
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)
|
statuses = @notifications.select { |n| !n.target_status.nil? }.map(&:target_status)
|
||||||
|
|
||||||
set_maps(statuses)
|
set_maps(statuses)
|
||||||
|
@ -19,4 +20,25 @@ class Api::V1::NotificationsController < ApiController
|
||||||
|
|
||||||
set_pagination_headers(next_path, prev_path)
|
set_pagination_headers(next_path, prev_path)
|
||||||
end
|
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
|
end
|
||||||
|
|
|
@ -59,11 +59,11 @@ class ApiController < ApplicationController
|
||||||
end
|
end
|
||||||
|
|
||||||
def current_resource_owner
|
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
|
end
|
||||||
|
|
||||||
def current_user
|
def current_user
|
||||||
@user ||= super || current_resource_owner
|
super || current_resource_owner
|
||||||
rescue ActiveRecord::RecordNotFound
|
rescue ActiveRecord::RecordNotFound
|
||||||
nil
|
nil
|
||||||
end
|
end
|
||||||
|
|
|
@ -51,6 +51,6 @@ class ApplicationController < ActionController::Base
|
||||||
end
|
end
|
||||||
|
|
||||||
def current_account
|
def current_account
|
||||||
@account ||= current_user.try(:account)
|
@current_account ||= current_user.try(:account)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue