Skip to content
Snippets Groups Projects
Commit 4bdb6a0e authored by Eugen Rochko's avatar Eugen Rochko
Browse files

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
parent 9b53c7d3
No related branches found
No related tags found
No related merge requests found
...@@ -43,13 +43,15 @@ const Lightbox = React.createClass({ ...@@ -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 = { ...@@ -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 ...@@ -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 ...@@ -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 ...@@ -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 ...@@ -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
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment