Clear stories notification after visiting stories view
This commit is contained in:
parent
f611256afc
commit
22b05b6d11
3 changed files with 12 additions and 5 deletions
|
@ -84,6 +84,7 @@ export type SelectedStoryDataType = {
|
||||||
// State
|
// State
|
||||||
|
|
||||||
export type StoriesStateType = {
|
export type StoriesStateType = {
|
||||||
|
readonly lastOpenedAtTimestamp: number | undefined;
|
||||||
readonly openedAtTimestamp: number | undefined;
|
readonly openedAtTimestamp: number | undefined;
|
||||||
readonly replyState?: {
|
readonly replyState?: {
|
||||||
messageId: string;
|
messageId: string;
|
||||||
|
@ -1099,6 +1100,7 @@ export function getEmptyState(
|
||||||
overrideState: Partial<StoriesStateType> = {}
|
overrideState: Partial<StoriesStateType> = {}
|
||||||
): StoriesStateType {
|
): StoriesStateType {
|
||||||
return {
|
return {
|
||||||
|
lastOpenedAtTimestamp: undefined,
|
||||||
openedAtTimestamp: undefined,
|
openedAtTimestamp: undefined,
|
||||||
stories: [],
|
stories: [],
|
||||||
...overrideState,
|
...overrideState,
|
||||||
|
@ -1114,6 +1116,9 @@ export function reducer(
|
||||||
|
|
||||||
return {
|
return {
|
||||||
...state,
|
...state,
|
||||||
|
lastOpenedAtTimestamp: !isShowingStoriesView
|
||||||
|
? state.openedAtTimestamp || Date.now()
|
||||||
|
: state.lastOpenedAtTimestamp,
|
||||||
openedAtTimestamp: isShowingStoriesView ? undefined : Date.now(),
|
openedAtTimestamp: isShowingStoriesView ? undefined : Date.now(),
|
||||||
replyState: undefined,
|
replyState: undefined,
|
||||||
sendStoryModalData: undefined,
|
sendStoryModalData: undefined,
|
||||||
|
|
|
@ -350,14 +350,16 @@ export const getStories = createSelector(
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
export const getUnreadStorySenderCount = createSelector(
|
export const getStoriesNotificationCount = createSelector(
|
||||||
getStoriesState,
|
getStoriesState,
|
||||||
({ stories }): number => {
|
({ lastOpenedAtTimestamp, stories }): number => {
|
||||||
return new Set(
|
return new Set(
|
||||||
stories
|
stories
|
||||||
.filter(
|
.filter(
|
||||||
story =>
|
story =>
|
||||||
story.readStatus === ReadStatus.Unread && !story.deletedForEveryone
|
story.readStatus === ReadStatus.Unread &&
|
||||||
|
!story.deletedForEveryone &&
|
||||||
|
story.timestamp > (lastOpenedAtTimestamp || 0)
|
||||||
)
|
)
|
||||||
.map(story => story.conversationId)
|
.map(story => story.conversationId)
|
||||||
).size;
|
).size;
|
||||||
|
|
|
@ -17,7 +17,7 @@ import {
|
||||||
} from '../selectors/user';
|
} from '../selectors/user';
|
||||||
import { getMe } from '../selectors/conversations';
|
import { getMe } from '../selectors/conversations';
|
||||||
import { getStoriesEnabled } from '../selectors/items';
|
import { getStoriesEnabled } from '../selectors/items';
|
||||||
import { getUnreadStorySenderCount } from '../selectors/stories';
|
import { getStoriesNotificationCount } from '../selectors/stories';
|
||||||
|
|
||||||
const mapStateToProps = (state: StateType) => {
|
const mapStateToProps = (state: StateType) => {
|
||||||
const me = getMe(state);
|
const me = getMe(state);
|
||||||
|
@ -32,7 +32,7 @@ const mapStateToProps = (state: StateType) => {
|
||||||
badge: getPreferredBadgeSelector(state)(me.badges),
|
badge: getPreferredBadgeSelector(state)(me.badges),
|
||||||
theme: getTheme(state),
|
theme: getTheme(state),
|
||||||
i18n: getIntl(state),
|
i18n: getIntl(state),
|
||||||
unreadStoriesCount: getUnreadStorySenderCount(state),
|
unreadStoriesCount: getStoriesNotificationCount(state),
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue