1
0
Fork 0
mirror of https://github.com/muerwre/vault-frontend.git synced 2025-04-25 12:56:41 +07:00

notification clicking

This commit is contained in:
Fedor Katurov 2019-11-13 12:16:12 +07:00
parent 9b0c3dd1fb
commit 83c9900af1
4 changed files with 18 additions and 9 deletions

View file

@ -40,9 +40,11 @@ const HeaderUnconnected: FC<IProps> = memo(
<Filler />
<div className={style.plugs}>
<Notifications />
</div>
{is_user && (
<div className={style.plugs}>
<Notifications />
</div>
)}
{is_user && (
<UserButton user={user} onLogout={authLogout} onProfileClick={onProfileClick} />

View file

@ -20,6 +20,7 @@ const NotificationBubble: FC<IProps> = ({ notifications }) => {
.map(notification =>
createElement(NOTIFICATION_RENDERERS[notification.type], {
notification,
onClick: console.log,
key: notification.content.id,
})
)}

View file

@ -1,19 +1,24 @@
import React, { FC } from 'react';
import React, { FC, useCallback } from 'react';
import styles from '~/components/notifications/NotificationBubble/styles.scss';
import { Icon } from '~/components/input/Icon';
import { IMessageNotification } from '~/redux/types';
import { IMessageNotification, INotification } from '~/redux/types';
interface IProps {
notification: IMessageNotification;
onClick: (notification: INotification) => void;
}
const NotificationMessage: FC<IProps> = ({
notification,
notification: {
content: { text, from },
},
onClick,
}) => {
const onMouseDown = useCallback(() => onClick(notification), [onClick, notification]);
return (
<div className={styles.item}>
<div className={styles.item} onMouseDown={onMouseDown}>
<div className={styles.item_head}>
<Icon icon="message" />
<div className={styles.item_title}>Сообщение от ~{from.username}:</div>

View file

@ -171,18 +171,19 @@ export const NOTIFICATION_TYPES = {
export type IMessageNotification = {
type: typeof NOTIFICATION_TYPES['message'];
content: Partial<IMessage>;
created_at: string;
};
export type ICommentNotification = {
type: typeof NOTIFICATION_TYPES['comment'];
content: Partial<IComment>;
created_at: string;
};
export type INodeNotification = {
type: typeof NOTIFICATION_TYPES['node'];
content: Partial<INode>;
};
export type INotification = (IMessageNotification | ICommentNotification) & {
created_at: string;
};
export type INotification = IMessageNotification | ICommentNotification;