|
|
|
|
@ -1,17 +1,27 @@
|
|
|
|
|
import { createSelector } from '@reduxjs/toolkit'; |
|
|
|
|
|
|
|
|
|
import type { RootState } from 'mastodon/store'; |
|
|
|
|
|
|
|
|
|
/* eslint-disable @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access */ |
|
|
|
|
// state.settings is not yet typed, so we disable some ESLint checks for those selectors
|
|
|
|
|
export const selectSettingsNotificationsShows = (state: RootState) => |
|
|
|
|
state.settings.getIn(['notifications', 'shows']).toJS() as Record< |
|
|
|
|
string, |
|
|
|
|
boolean |
|
|
|
|
>; |
|
|
|
|
|
|
|
|
|
export const selectSettingsNotificationsExcludedTypes = (state: RootState) => |
|
|
|
|
Object.entries(selectSettingsNotificationsShows(state)) |
|
|
|
|
.filter(([_type, enabled]) => !enabled) |
|
|
|
|
.map(([type, _enabled]) => type); |
|
|
|
|
export const selectSettingsNotificationsShows = createSelector( |
|
|
|
|
[ |
|
|
|
|
(state) => |
|
|
|
|
state.settings.getIn(['notifications', 'shows']) as Immutable.Map< |
|
|
|
|
string, |
|
|
|
|
boolean |
|
|
|
|
>, |
|
|
|
|
], |
|
|
|
|
(shows) => shows.toJS() as Record<string, boolean>, |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
export const selectSettingsNotificationsExcludedTypes = createSelector( |
|
|
|
|
[selectSettingsNotificationsShows], |
|
|
|
|
(shows) => |
|
|
|
|
Object.entries(shows) |
|
|
|
|
.filter(([_type, enabled]) => !enabled) |
|
|
|
|
.map(([type, _enabled]) => type), |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
export const selectSettingsNotificationsQuickFilterShow = (state: RootState) => |
|
|
|
|
state.settings.getIn(['notifications', 'quickFilter', 'show']) as boolean; |
|
|
|
|
|