diff --git a/app/javascript/mastodon/actions/markers.ts b/app/javascript/mastodon/actions/markers.ts
index 6254e3f083..0b3280c212 100644
--- a/app/javascript/mastodon/actions/markers.ts
+++ b/app/javascript/mastodon/actions/markers.ts
@@ -2,7 +2,6 @@ import { debounce } from 'lodash';
import type { MarkerJSON } from 'mastodon/api_types/markers';
import { getAccessToken } from 'mastodon/initial_state';
-import { selectUseGroupedNotifications } from 'mastodon/selectors/settings';
import type { AppDispatch, RootState } from 'mastodon/store';
import { createAppAsyncThunk } from 'mastodon/store/typed_functions';
@@ -76,12 +75,7 @@ interface MarkerParam {
}
function getLastNotificationId(state: RootState): string | undefined {
- // eslint-disable-next-line @typescript-eslint/no-unsafe-return
- return selectUseGroupedNotifications(state)
- ? state.notificationGroups.lastReadId
- : // @ts-expect-error state.notifications is not yet typed
- // eslint-disable-next-line @typescript-eslint/no-unsafe-call
- state.getIn(['notifications', 'lastReadId']);
+ return state.notificationGroups.lastReadId;
}
const buildPostMarkersParams = (state: RootState) => {
diff --git a/app/javascript/mastodon/actions/notifications_migration.tsx b/app/javascript/mastodon/actions/notifications_migration.tsx
index 0d4da765ec..cd9f5ca3d6 100644
--- a/app/javascript/mastodon/actions/notifications_migration.tsx
+++ b/app/javascript/mastodon/actions/notifications_migration.tsx
@@ -1,14 +1,10 @@
-import { selectUseGroupedNotifications } from 'mastodon/selectors/settings';
import { createAppAsyncThunk } from 'mastodon/store';
import { fetchNotifications } from './notification_groups';
-import { expandNotifications } from './notifications';
export const initializeNotifications = createAppAsyncThunk(
'notifications/initialize',
- (_, { dispatch, getState }) => {
- if (selectUseGroupedNotifications(getState()))
- void dispatch(fetchNotifications());
- else void dispatch(expandNotifications({}));
+ (_, { dispatch }) => {
+ void dispatch(fetchNotifications());
},
);
diff --git a/app/javascript/mastodon/actions/streaming.js b/app/javascript/mastodon/actions/streaming.js
index 03013110c3..b6fc31fae8 100644
--- a/app/javascript/mastodon/actions/streaming.js
+++ b/app/javascript/mastodon/actions/streaming.js
@@ -1,7 +1,5 @@
// @ts-check
-import { selectUseGroupedNotifications } from 'mastodon/selectors/settings';
-
import { getLocale } from '../locales';
import { connectStream } from '../stream';
@@ -105,18 +103,14 @@ export const connectTimelineStream = (timelineId, channelName, params = {}, opti
const notificationJSON = JSON.parse(data.payload);
dispatch(updateNotifications(notificationJSON, messages, locale));
// TODO: remove this once the groups feature replaces the previous one
- if(selectUseGroupedNotifications(getState())) {
- dispatch(processNewNotificationForGroups(notificationJSON));
- }
+ dispatch(processNewNotificationForGroups(notificationJSON));
break;
}
case 'notifications_merged':
const state = getState();
if (state.notifications.top || !state.notifications.mounted)
dispatch(expandNotifications({ forceLoad: true, maxId: undefined }));
- if (selectUseGroupedNotifications(state)) {
- dispatch(refreshStaleNotificationGroups());
- }
+ dispatch(refreshStaleNotificationGroups());
break;
case 'conversation':
// @ts-expect-error
@@ -141,21 +135,15 @@ export const connectTimelineStream = (timelineId, channelName, params = {}, opti
/**
* @param {Function} dispatch
- * @param {Function} getState
*/
-async function refreshHomeTimelineAndNotification(dispatch, getState) {
+async function refreshHomeTimelineAndNotification(dispatch) {
await dispatch(expandHomeTimeline({ maxId: undefined }));
- // TODO: remove this once the groups feature replaces the previous one
- if(selectUseGroupedNotifications(getState())) {
- // TODO: polling for merged notifications
- try {
- await dispatch(pollRecentGroupNotifications());
- } catch {
- // TODO
- }
- } else {
- await dispatch(expandNotifications({}));
+ // TODO: polling for merged notifications
+ try {
+ await dispatch(pollRecentGroupNotifications());
+ } catch {
+ // TODO
}
await dispatch(fetchAnnouncements());
diff --git a/app/javascript/mastodon/features/notifications/components/column_settings.jsx b/app/javascript/mastodon/features/notifications/components/column_settings.jsx
index ed2f4ada3a..ed2947c175 100644
--- a/app/javascript/mastodon/features/notifications/components/column_settings.jsx
+++ b/app/javascript/mastodon/features/notifications/components/column_settings.jsx
@@ -6,7 +6,6 @@ import { FormattedMessage } from 'react-intl';
import ImmutablePropTypes from 'react-immutable-proptypes';
import { identityContextPropShape, withIdentity } from 'mastodon/identity_context';
-import { forceGroupedNotifications } from 'mastodon/initial_state';
import { PERMISSION_MANAGE_USERS, PERMISSION_MANAGE_REPORTS } from 'mastodon/permissions';
import ClearColumnButton from './clear_column_button';
@@ -36,7 +35,6 @@ class ColumnSettings extends PureComponent {
const filterAdvancedStr = ;
const unreadMarkersShowStr = ;
- const groupingShowStr = ;
const alertStr = ;
const showStr = ;
const soundStr = ;
@@ -68,18 +66,6 @@ class ColumnSettings extends PureComponent {
- {!forceGroupedNotifications && (
-
- )}
-
diff --git a/app/javascript/mastodon/features/notifications_wrapper.jsx b/app/javascript/mastodon/features/notifications_wrapper.jsx
index 4b3efeb54e..50383d5ebf 100644
--- a/app/javascript/mastodon/features/notifications_wrapper.jsx
+++ b/app/javascript/mastodon/features/notifications_wrapper.jsx
@@ -1,13 +1,8 @@
-import Notifications from 'mastodon/features/notifications';
import Notifications_v2 from 'mastodon/features/notifications_v2';
-import { selectUseGroupedNotifications } from 'mastodon/selectors/settings';
-import { useAppSelector } from 'mastodon/store';
export const NotificationsWrapper = (props) => {
- const optedInGroupedNotifications = useAppSelector(selectUseGroupedNotifications);
-
return (
- optedInGroupedNotifications ? :
+
);
};
diff --git a/app/javascript/mastodon/features/ui/components/navigation_panel.jsx b/app/javascript/mastodon/features/ui/components/navigation_panel.jsx
index 407276d126..0ca21e8976 100644
--- a/app/javascript/mastodon/features/ui/components/navigation_panel.jsx
+++ b/app/javascript/mastodon/features/ui/components/navigation_panel.jsx
@@ -37,7 +37,6 @@ import { timelinePreview, trendsEnabled } from 'mastodon/initial_state';
import { transientSingleColumn } from 'mastodon/is_mobile';
import { canManageReports, canViewAdminDashboard } from 'mastodon/permissions';
import { selectUnreadNotificationGroupsCount } from 'mastodon/selectors/notifications';
-import { selectUseGroupedNotifications } from 'mastodon/selectors/settings';
import ColumnLink from './column_link';
import DisabledAccountBanner from './disabled_account_banner';
@@ -65,19 +64,17 @@ const messages = defineMessages({
});
const NotificationsLink = () => {
- const optedInGroupedNotifications = useSelector(selectUseGroupedNotifications);
- const count = useSelector(state => state.getIn(['notifications', 'unread']));
- const intl = useIntl();
- const newCount = useSelector(selectUnreadNotificationGroupsCount);
+ const count = useSelector(selectUnreadNotificationGroupsCount);
+ const intl = useIntl();
return (
}
- activeIcon={}
+ icon={}
+ activeIcon={}
text={intl.formatMessage(messages.notifications)}
/>
);
diff --git a/app/javascript/mastodon/initial_state.js b/app/javascript/mastodon/initial_state.js
index cf33b12dd9..60b35cb31a 100644
--- a/app/javascript/mastodon/initial_state.js
+++ b/app/javascript/mastodon/initial_state.js
@@ -43,7 +43,6 @@
* @property {boolean=} use_pending_items
* @property {string} version
* @property {string} sso_redirect
- * @property {boolean} force_grouped_notifications
*/
/**
@@ -119,7 +118,6 @@ export const criticalUpdatesPending = initialState?.critical_updates_pending;
// @ts-expect-error
export const statusPageUrl = getMeta('status_page_url');
export const sso_redirect = getMeta('sso_redirect');
-export const forceGroupedNotifications = getMeta('force_grouped_notifications');
/**
* @returns {string | undefined}
diff --git a/app/javascript/mastodon/locales/en.json b/app/javascript/mastodon/locales/en.json
index 1de2dce440..7f2e88d440 100644
--- a/app/javascript/mastodon/locales/en.json
+++ b/app/javascript/mastodon/locales/en.json
@@ -559,8 +559,6 @@
"notifications.column_settings.admin.report": "New reports:",
"notifications.column_settings.admin.sign_up": "New sign-ups:",
"notifications.column_settings.alert": "Desktop notifications",
- "notifications.column_settings.beta.category": "Experimental features",
- "notifications.column_settings.beta.grouping": "Group notifications",
"notifications.column_settings.favourite": "Favorites:",
"notifications.column_settings.filter_bar.advanced": "Display all categories",
"notifications.column_settings.filter_bar.category": "Quick filter bar",
diff --git a/app/javascript/mastodon/selectors/settings.ts b/app/javascript/mastodon/selectors/settings.ts
index 22e7c13b93..93276c6692 100644
--- a/app/javascript/mastodon/selectors/settings.ts
+++ b/app/javascript/mastodon/selectors/settings.ts
@@ -1,4 +1,3 @@
-import { forceGroupedNotifications } from 'mastodon/initial_state';
import type { RootState } from 'mastodon/store';
/* eslint-disable @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access */
@@ -26,10 +25,6 @@ export const selectSettingsNotificationsQuickFilterAdvanced = (
) =>
state.settings.getIn(['notifications', 'quickFilter', 'advanced']) as boolean;
-export const selectUseGroupedNotifications = (state: RootState) =>
- forceGroupedNotifications ||
- (state.settings.getIn(['notifications', 'groupingBeta']) as boolean);
-
export const selectSettingsNotificationsShowUnread = (state: RootState) =>
state.settings.getIn(['notifications', 'showUnread']) as boolean;
diff --git a/app/serializers/initial_state_serializer.rb b/app/serializers/initial_state_serializer.rb
index 25a352806f..13f332c95c 100644
--- a/app/serializers/initial_state_serializer.rb
+++ b/app/serializers/initial_state_serializer.rb
@@ -109,7 +109,6 @@ class InitialStateSerializer < ActiveModel::Serializer
trends_as_landing_page: Setting.trends_as_landing_page,
trends_enabled: Setting.trends,
version: instance_presenter.version,
- force_grouped_notifications: ENV['FORCE_GROUPED_NOTIFICATIONS'] == 'true',
}
end