Clear stories notification after visiting stories view

This commit is contained in:
Josh Perez 2022-08-23 13:37:48 -04:00 committed by GitHub
parent f611256afc
commit 22b05b6d11
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 12 additions and 5 deletions

View file

@ -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,

View file

@ -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;

View file

@ -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),
}; };
}; };