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

Desktop notifications

parent e616ffc5
No related branches found
No related tags found
No related merge requests found
import api, { getLinks } from '../api'
import Immutable from 'immutable';
import IntlMessageFormat from 'intl-messageformat';
import { fetchRelationships } from './accounts';
......@@ -21,7 +22,7 @@ const fetchRelatedRelationships = (dispatch, notifications) => {
}
};
export function updateNotifications(notification) {
export function updateNotifications(notification, intlMessages, intlLocale) {
return dispatch => {
dispatch({
type: NOTIFICATIONS_UPDATE,
......@@ -31,6 +32,12 @@ export function updateNotifications(notification) {
});
fetchRelatedRelationships(dispatch, [notification]);
// Desktop notifications
const title = new IntlMessageFormat(intlMessages[`notification.${notification.type}`], intlLocale).format({ name: notification.account.display_name.length > 0 ? notification.account.display_name : notification.account.username });
const body = $('<p>').html(notification.status ? notification.status.content : '').text();
new Notification(title, { body });
};
};
......
......@@ -60,8 +60,10 @@ const Mastodon = React.createClass({
mixins: [PureRenderMixin],
componentWillMount() {
store.dispatch(setAccessToken(this.props.token));
store.dispatch(setAccountSelf(JSON.parse(this.props.account)));
const { token, account, locale } = this.props;
store.dispatch(setAccessToken(token));
store.dispatch(setAccountSelf(JSON.parse(account)));
if (typeof App !== 'undefined') {
this.subscription = App.cable.subscriptions.create('TimelineChannel', {
......@@ -78,7 +80,7 @@ const Mastodon = React.createClass({
case 'block':
return store.dispatch(refreshTimeline('mentions', true));
case 'notification':
return store.dispatch(updateNotifications(JSON.parse(data.message)));
return store.dispatch(updateNotifications(JSON.parse(data.message), getMessagesForLocale(locale), locale));
}
}
......
......@@ -13,7 +13,7 @@ class ApplicationController < ActionController::Base
rescue_from ActiveRecord::RecordNotFound, with: :not_found
before_action :store_current_location, except: :raise_not_found, unless: :devise_controller?
before_action :set_locale, if: 'user_signed_in?'
before_action :set_locale
def raise_not_found
raise ActionController::RoutingError, "No route matches #{params[:unmatched_route]}"
......@@ -26,7 +26,7 @@ class ApplicationController < ActionController::Base
end
def set_locale
I18n.locale = current_user.locale || I18n.default_locale
I18n.locale = current_user.try(:locale) || I18n.default_locale
rescue I18n::InvalidLocale
I18n.locale = I18n.default_locale
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