mirror of
https://github.com/Qortal/Qortal-Hub.git
synced 2025-04-24 11:57:51 +00:00
64 lines
2.2 KiB
TypeScript
64 lines
2.2 KiB
TypeScript
import React, { useMemo } from 'react'
|
|
import QMailLogo from '../assets/QMailLogo.png'
|
|
import { useRecoilState } from 'recoil'
|
|
import { mailsAtom, qMailLastEnteredTimestampAtom } from '../atoms/global'
|
|
import { isLessThanOneWeekOld } from './Group/QMailMessages'
|
|
import { ButtonBase, Tooltip } from '@mui/material'
|
|
import { executeEvent } from '../utils/events'
|
|
export const QMailStatus = () => {
|
|
const [lastEnteredTimestamp, setLastEnteredTimestamp] = useRecoilState(qMailLastEnteredTimestampAtom)
|
|
const [mails, setMails] = useRecoilState(mailsAtom)
|
|
|
|
const hasNewMail = useMemo(()=> {
|
|
if(mails?.length === 0) return false
|
|
const latestMail = mails[0]
|
|
if(!lastEnteredTimestamp && isLessThanOneWeekOld(latestMail?.created)) return true
|
|
if((lastEnteredTimestamp < latestMail?.created) && isLessThanOneWeekOld(latestMail?.created)) return true
|
|
return false
|
|
}, [lastEnteredTimestamp, mails])
|
|
return (
|
|
<ButtonBase onClick={()=> {
|
|
executeEvent("addTab", { data: { service: 'APP', name: 'q-mail' } });
|
|
executeEvent("open-apps-mode", { });
|
|
setLastEnteredTimestamp(Date.now())
|
|
}} style={{
|
|
position: 'relative'
|
|
}}>
|
|
{hasNewMail && (
|
|
<div style={{
|
|
position: 'absolute',
|
|
zIndex: 1,
|
|
top: '-7px',
|
|
right: '-7px',
|
|
backgroundColor: 'var(--unread)',
|
|
height: '15px',
|
|
width: '15px',
|
|
borderRadius: '50%',
|
|
outline: '1px solid white'
|
|
}} />
|
|
)}
|
|
<Tooltip
|
|
title={<span style={{ color: "white", fontSize: "14px", fontWeight: 700 }}>Q-MAIL</span>}
|
|
placement="left"
|
|
arrow
|
|
sx={{ fontSize: "24" }}
|
|
slotProps={{
|
|
tooltip: {
|
|
sx: {
|
|
color: "#ffffff",
|
|
backgroundColor: "#444444",
|
|
},
|
|
},
|
|
arrow: {
|
|
sx: {
|
|
color: "#444444",
|
|
},
|
|
},
|
|
}}
|
|
>
|
|
<img style={{ width: '24px', height: 'auto' }} src={QMailLogo} />
|
|
</Tooltip>
|
|
</ButtonBase>
|
|
)
|
|
}
|