move NotificationForConvoOption declaration + getConversationNotificationSettingType created as used twice

pull/1779/head
Brice-W 4 years ago
parent adab2b4506
commit 5d7d58fe05

@ -16,17 +16,13 @@ import {
import { contextMenu } from 'react-contexify'; import { contextMenu } from 'react-contexify';
import { DefaultTheme, withTheme } from 'styled-components'; import { DefaultTheme, withTheme } from 'styled-components';
import { ConversationNotificationSettingType } from '../../models/conversation'; import { ConversationNotificationSettingType } from '../../models/conversation';
import { NotificationForConvoOption } from '../../state/ducks/conversations';
export interface TimerOption { export interface TimerOption {
name: string; name: string;
value: number; value: number;
} }
export interface NotificationForConvoOption {
name: string;
value: ConversationNotificationSettingType;
}
interface Props { interface Props {
id: string; id: string;
name?: string; name?: string;

@ -352,13 +352,7 @@ export class SessionConversation extends React.Component<Props, State> {
const members = conversation.get('members') || []; const members = conversation.get('members') || [];
// exclude mentions_only settings for private chats as this does not make much sense const notificationForConvo = conversation.getConversationNotificationSettingType();
const notificationForConvo = ConversationNotificationSetting.filter(n =>
conversation.isPrivate() ? n !== 'mentions_only' : true
).map((n: ConversationNotificationSettingType) => {
// this link to the notificationForConvo_all, notificationForConvo_mentions_only, ...
return { value: n, name: window.i18n(`notificationForConvo_${n}`) };
});
const headerProps = { const headerProps = {
id: conversation.id, id: conversation.id,

@ -13,11 +13,13 @@ import {
getLeaveGroupMenuItem, getLeaveGroupMenuItem,
getMarkAllReadMenuItem, getMarkAllReadMenuItem,
getNotificationForConvoMenuItem, getNotificationForConvoMenuItem,
getPinConversationMenuItem,
getRemoveModeratorsMenuItem, getRemoveModeratorsMenuItem,
getUpdateGroupNameMenuItem, getUpdateGroupNameMenuItem,
} from './Menu'; } from './Menu';
import { NotificationForConvoOption, TimerOption } from '../../conversation/ConversationHeader'; import { TimerOption } from '../../conversation/ConversationHeader';
import { ConversationNotificationSettingType } from '../../../models/conversation'; import { ConversationNotificationSettingType } from '../../../models/conversation';
import { NotificationForConvoOption } from '../../../state/ducks/conversations';
export type PropsConversationHeaderMenu = { export type PropsConversationHeaderMenu = {
conversationId: string; conversationId: string;

@ -4,6 +4,7 @@ import {
ConversationNotificationSettingType, ConversationNotificationSettingType,
ConversationTypeEnum, ConversationTypeEnum,
} from '../../../models/conversation'; } from '../../../models/conversation';
import { NotificationForConvoOption } from '../../../state/ducks/conversations';
import { import {
getBlockMenuItem, getBlockMenuItem,
@ -18,7 +19,6 @@ import {
getNotificationForConvoMenuItem, getNotificationForConvoMenuItem,
getPinConversationMenuItem, getPinConversationMenuItem,
} from './Menu'; } from './Menu';
import { NotificationForConvoOption } from '../../conversation/ConversationHeader';
export type PropsContextConversationItem = { export type PropsContextConversationItem = {
id: string; id: string;

@ -2,7 +2,7 @@ import React from 'react';
import { getNumberOfPinnedConversations } from '../../../state/selectors/conversations'; import { getNumberOfPinnedConversations } from '../../../state/selectors/conversations';
import { getFocusedSection } from '../../../state/selectors/section'; import { getFocusedSection } from '../../../state/selectors/section';
import { NotificationForConvoOption, TimerOption } from '../../conversation/ConversationHeader'; import { TimerOption } from '../../conversation/ConversationHeader';
import { Item, Submenu } from 'react-contexify'; import { Item, Submenu } from 'react-contexify';
import { ConversationNotificationSettingType } from '../../../models/conversation'; import { ConversationNotificationSettingType } from '../../../models/conversation';
import { useDispatch, useSelector } from 'react-redux'; import { useDispatch, useSelector } from 'react-redux';
@ -26,6 +26,7 @@ import {
} from '../../../interactions/conversationInteractions'; } from '../../../interactions/conversationInteractions';
import { SessionButtonColor } from '../SessionButton'; import { SessionButtonColor } from '../SessionButton';
import { ToastUtils } from '../../../session/utils'; import { ToastUtils } from '../../../session/utils';
import { NotificationForConvoOption } from '../../../state/ducks/conversations';
const maxNumberOfPinnedConversations = 5; const maxNumberOfPinnedConversations = 5;

@ -25,6 +25,7 @@ import {
actions as conversationActions, actions as conversationActions,
ConversationType as ReduxConversationType, ConversationType as ReduxConversationType,
LastMessageStatusType, LastMessageStatusType,
NotificationForConvoOption,
} from '../state/ducks/conversations'; } from '../state/ducks/conversations';
import { ExpirationTimerUpdateMessage } from '../session/messages/outgoing/controlMessage/ExpirationTimerUpdateMessage'; import { ExpirationTimerUpdateMessage } from '../session/messages/outgoing/controlMessage/ExpirationTimerUpdateMessage';
import { TypingMessage } from '../session/messages/outgoing/controlMessage/TypingMessage'; import { TypingMessage } from '../session/messages/outgoing/controlMessage/TypingMessage';
@ -35,7 +36,6 @@ import {
import { GroupInvitationMessage } from '../session/messages/outgoing/visibleMessage/GroupInvitationMessage'; import { GroupInvitationMessage } from '../session/messages/outgoing/visibleMessage/GroupInvitationMessage';
import { ReadReceiptMessage } from '../session/messages/outgoing/controlMessage/receipt/ReadReceiptMessage'; import { ReadReceiptMessage } from '../session/messages/outgoing/controlMessage/receipt/ReadReceiptMessage';
import { OpenGroupUtils } from '../opengroup/utils'; import { OpenGroupUtils } from '../opengroup/utils';
import { ConversationInteraction } from '../interactions';
import { OpenGroupVisibleMessage } from '../session/messages/outgoing/visibleMessage/OpenGroupVisibleMessage'; import { OpenGroupVisibleMessage } from '../session/messages/outgoing/visibleMessage/OpenGroupVisibleMessage';
import { OpenGroupRequestCommonType } from '../opengroup/opengroupV2/ApiUtil'; import { OpenGroupRequestCommonType } from '../opengroup/opengroupV2/ApiUtil';
import { getOpenGroupV2FromConversationId } from '../opengroup/utils/OpenGroupUtils'; import { getOpenGroupV2FromConversationId } from '../opengroup/utils/OpenGroupUtils';
@ -408,16 +408,21 @@ export class ConversationModel extends Backbone.Model<ConversationAttributes> {
groupAdmins, groupAdmins,
members, members,
isPinned: this.isPinned(), isPinned: this.isPinned(),
notificationForConvo: ConversationNotificationSetting.filter(n => notificationForConvo: this.getConversationNotificationSettingType(),
this.isPrivate() ? n !== 'mentions_only' : true
).map((n: ConversationNotificationSettingType) => {
// this link to the notificationForConvo_all, notificationForConvo_mentions_only, ...
return { value: n, name: window.i18n(`notificationForConvo_${n}`) };
}),
currentNotificationSetting: this.get('triggerNotificationsFor'), currentNotificationSetting: this.get('triggerNotificationsFor'),
}; };
} }
public getConversationNotificationSettingType(): Array<NotificationForConvoOption> {
// exclude mentions_only settings for private chats as this does not make much sense
return ConversationNotificationSetting.filter(n =>
this.isPrivate() ? n !== 'mentions_only' : true
).map((n: ConversationNotificationSettingType) => {
// this link to the notificationForConvo_all, notificationForConvo_mentions_only, ...
return { value: n, name: window.i18n(`notificationForConvo_${n}`) };
});
}
public async updateGroupAdmins(groupAdmins: Array<string>) { public async updateGroupAdmins(groupAdmins: Array<string>) {
const existingAdmins = _.uniq(_.sortBy(this.getGroupAdmins())); const existingAdmins = _.uniq(_.sortBy(this.getGroupAdmins()));
const newAdmins = _.uniq(_.sortBy(groupAdmins)); const newAdmins = _.uniq(_.sortBy(groupAdmins));

@ -10,7 +10,6 @@ import {
ConversationTypeEnum, ConversationTypeEnum,
} from '../../models/conversation'; } from '../../models/conversation';
import { MessageDeliveryStatus } from '../../models/messageType'; import { MessageDeliveryStatus } from '../../models/messageType';
import { NotificationForConvoOption } from '../../components/conversation/ConversationHeader';
// State // State
@ -91,6 +90,11 @@ export interface ConversationType {
currentNotificationSetting: ConversationNotificationSettingType; currentNotificationSetting: ConversationNotificationSettingType;
} }
export interface NotificationForConvoOption {
name: string;
value: ConversationNotificationSettingType;
}
export type ConversationLookupType = { export type ConversationLookupType = {
[key: string]: ConversationType; [key: string]: ConversationType;
}; };

Loading…
Cancel
Save