+ {banner}
+
@@ -41,6 +50,8 @@ class Tags extends React.PureComponent {
return (
+ {banner}
+
{isLoading ? () : hashtags.map(hashtag => (
))}
diff --git a/app/javascript/flavours/glitch/features/hashtag_timeline/index.js b/app/javascript/flavours/glitch/features/hashtag_timeline/index.js
index 5e098514aa..80b4c82be2 100644
--- a/app/javascript/flavours/glitch/features/hashtag_timeline/index.js
+++ b/app/javascript/flavours/glitch/features/hashtag_timeline/index.js
@@ -14,7 +14,6 @@ import { isEqual } from 'lodash';
import { fetchHashtag, followHashtag, unfollowHashtag } from 'flavours/glitch/actions/tags';
import Icon from 'flavours/glitch/components/icon';
import classNames from 'classnames';
-import { title } from 'flavours/glitch/initial_state';
import { Helmet } from 'react-helmet';
const messages = defineMessages({
@@ -228,7 +227,7 @@ class HashtagTimeline extends React.PureComponent {
/>
- {`#${id}`} - {title}
+ #{id}
);
diff --git a/app/javascript/flavours/glitch/features/home_timeline/index.js b/app/javascript/flavours/glitch/features/home_timeline/index.js
index 86aaa0258e..aa319b5762 100644
--- a/app/javascript/flavours/glitch/features/home_timeline/index.js
+++ b/app/javascript/flavours/glitch/features/home_timeline/index.js
@@ -15,13 +15,12 @@ import classNames from 'classnames';
import IconWithBadge from 'flavours/glitch/components/icon_with_badge';
import NotSignedInIndicator from 'flavours/glitch/components/not_signed_in_indicator';
import { Helmet } from 'react-helmet';
-import { title } from 'flavours/glitch/initial_state';
const messages = defineMessages({
title: { id: 'column.home', defaultMessage: 'Home' },
show_announcements: { id: 'home.show_announcements', defaultMessage: 'Show announcements' },
hide_announcements: { id: 'home.hide_announcements', defaultMessage: 'Hide announcements' },
-});
+});
const mapStateToProps = state => ({
hasUnread: state.getIn(['timelines', 'home', 'unread']) > 0,
@@ -170,7 +169,7 @@ class HomeTimeline extends React.PureComponent {
) : }
- {intl.formatMessage(messages.title)} - {title}
+ {intl.formatMessage(messages.title)}
);
diff --git a/app/javascript/flavours/glitch/features/notifications/index.js b/app/javascript/flavours/glitch/features/notifications/index.js
index 26eeba1685..0b26a3d9e1 100644
--- a/app/javascript/flavours/glitch/features/notifications/index.js
+++ b/app/javascript/flavours/glitch/features/notifications/index.js
@@ -30,7 +30,6 @@ import compareId from 'flavours/glitch/compare_id';
import NotificationsPermissionBanner from './components/notifications_permission_banner';
import NotSignedInIndicator from 'flavours/glitch/components/not_signed_in_indicator';
import { Helmet } from 'react-helmet';
-import { title } from 'flavours/glitch/initial_state';
import NotificationPurgeButtonsContainer from 'flavours/glitch/containers/notification_purge_buttons_container';
@@ -373,7 +372,7 @@ class Notifications extends React.PureComponent {
{scrollContainer}
- {intl.formatMessage(messages.title)} - {title}
+ {intl.formatMessage(messages.title)}
);
diff --git a/app/javascript/flavours/glitch/features/privacy_policy/index.js b/app/javascript/flavours/glitch/features/privacy_policy/index.js
index 8160102946..c1f7c4f1e0 100644
--- a/app/javascript/flavours/glitch/features/privacy_policy/index.js
+++ b/app/javascript/flavours/glitch/features/privacy_policy/index.js
@@ -1,6 +1,5 @@
import React from 'react';
import PropTypes from 'prop-types';
-import { title } from 'flavours/glitch/initial_state';
import { Helmet } from 'react-helmet';
import { FormattedMessage, FormattedDate, injectIntl, defineMessages } from 'react-intl';
import Column from 'flavours/glitch/components/column';
@@ -51,7 +50,7 @@ class PrivacyPolicy extends React.PureComponent {
- {intl.formatMessage(messages.title)} - {title}
+ {intl.formatMessage(messages.title)}
);
diff --git a/app/javascript/flavours/glitch/features/public_timeline/index.js b/app/javascript/flavours/glitch/features/public_timeline/index.js
index aa70acf158..49015c2fbf 100644
--- a/app/javascript/flavours/glitch/features/public_timeline/index.js
+++ b/app/javascript/flavours/glitch/features/public_timeline/index.js
@@ -10,7 +10,7 @@ import { addColumn, removeColumn, moveColumn } from 'flavours/glitch/actions/col
import ColumnSettingsContainer from './containers/column_settings_container';
import { connectPublicStream } from 'flavours/glitch/actions/streaming';
import { Helmet } from 'react-helmet';
-import { title } from 'flavours/glitch/initial_state';
+import DismissableBanner from 'flavours/glitch/components/dismissable_banner';
const messages = defineMessages({
title: { id: 'column.public', defaultMessage: 'Federated timeline' },
@@ -143,6 +143,10 @@ class PublicTimeline extends React.PureComponent {
+
+
+
+
- {intl.formatMessage(messages.title)} - {title}
+ {intl.formatMessage(messages.title)}
);
diff --git a/app/javascript/flavours/glitch/settings.js b/app/javascript/flavours/glitch/settings.js
index 7643a508ea..46cfadfa36 100644
--- a/app/javascript/flavours/glitch/settings.js
+++ b/app/javascript/flavours/glitch/settings.js
@@ -45,3 +45,4 @@ export default class Settings {
export const pushNotificationsSetting = new Settings('mastodon_push_notification_data');
export const tagHistory = new Settings('mastodon_tag_history');
+export const bannerSettings = new Settings('mastodon_banner_settings');
diff --git a/app/javascript/flavours/glitch/styles/components/columns.scss b/app/javascript/flavours/glitch/styles/components/columns.scss
index 1827e8c01b..6f878f7914 100644
--- a/app/javascript/flavours/glitch/styles/components/columns.scss
+++ b/app/javascript/flavours/glitch/styles/components/columns.scss
@@ -936,3 +936,28 @@ $ui-header-height: 55px;
color: $darker-text-color;
}
}
+
+.dismissable-banner {
+ background: $ui-base-color;
+ border-bottom: 1px solid lighten($ui-base-color, 8%);
+ display: flex;
+ align-items: center;
+ gap: 30px;
+
+ &__message {
+ flex: 1 1 auto;
+ padding: 20px 15px;
+ cursor: default;
+ font-size: 14px;
+ line-height: 18px;
+ color: $primary-text-color;
+ }
+
+ &__action {
+ padding: 15px;
+ flex: 0 0 auto;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ }
+}