diff --git a/src/App.tsx b/src/App.tsx
index 7131676..c8704cb 100644
--- a/src/App.tsx
+++ b/src/App.tsx
@@ -115,7 +115,9 @@ import {
hasSettingsChangedAtom,
isDisabledEditorEnterAtom,
isUsingImportExportSettingsAtom,
+ mailsAtom,
oldPinnedAppsAtom,
+ qMailLastEnteredTimestampAtom,
settingsLocalLastUpdatedAtom,
settingsQDNLastUpdatedAtom,
sortablePinnedAppsAtom,
@@ -138,6 +140,7 @@ import BoundedNumericTextField from "./common/BoundedNumericTextField";
import { useHandleUserInfo } from "./components/Group/useHandleUserInfo";
import { Minting } from "./components/Minting/Minting";
import { isRunningGateway } from "./qortalRequests";
+import { QMailStatus } from "./components/QMailStatus";
type extStates =
| "not-authenticated"
@@ -471,6 +474,8 @@ function App() {
settingsLocalLastUpdatedAtom
);
const resetAtomOldPinnedAppsAtom = useResetRecoilState(oldPinnedAppsAtom);
+ const resetAtomQMailLastEnteredTimestampAtom = useResetRecoilState(qMailLastEnteredTimestampAtom)
+ const resetAtomMailsAtom = useResetRecoilState(mailsAtom)
const resetAllRecoil = () => {
resetAtomSortablePinnedAppsAtom();
@@ -479,6 +484,8 @@ function App() {
resetAtomSettingsLocalLastUpdatedAtom();
resetAtomOldPinnedAppsAtom();
resetAtomIsUsingImportExportSettingsAtom()
+ resetAtomQMailLastEnteredTimestampAtom()
+ resetAtomMailsAtom()
};
useEffect(() => {
if (!isMobile) return;
@@ -1585,6 +1592,8 @@ function App() {
)}
+
+
+
)}
diff --git a/src/components/Group/HomeDesktop.tsx b/src/components/Group/HomeDesktop.tsx
index 67bf811..e3b847d 100644
--- a/src/components/Group/HomeDesktop.tsx
+++ b/src/components/Group/HomeDesktop.tsx
@@ -21,18 +21,18 @@ export const HomeDesktop = ({
setOpenManageMembers,
setOpenAddGroup,
setMobileViewMode,
- setDesktopViewMode
+ setDesktopViewMode,
+ desktopViewMode
}) => {
return (
@@ -85,7 +85,9 @@ export const HomeDesktop = ({
hasGroups={groups?.length !== 0}
/>
-
+
+ >
+ )}
+
)}
{!isLoadingGroups && (
diff --git a/src/components/Group/QMailMessages.tsx b/src/components/Group/QMailMessages.tsx
index 6603e27..ccce59b 100644
--- a/src/components/Group/QMailMessages.tsx
+++ b/src/components/Group/QMailMessages.tsx
@@ -13,7 +13,9 @@ import MailIcon from '@mui/icons-material/Mail';
import MailOutlineIcon from '@mui/icons-material/MailOutline';
import { executeEvent } from '../../utils/events';
import { CustomLoader } from '../../common/CustomLoader';
-const isLessThanOneWeekOld = (timestamp) => {
+import { useRecoilState } from 'recoil';
+import { mailsAtom, qMailLastEnteredTimestampAtom } from '../../atoms/global';
+export const isLessThanOneWeekOld = (timestamp) => {
// Current time in milliseconds
const now = Date.now();
@@ -39,8 +41,8 @@ export function formatEmailDate(timestamp: number) {
}
}
export const QMailMessages = ({userName, userAddress}) => {
- const [mails, setMails] = useState([])
- const [lastEnteredTimestamp, setLastEnteredTimestamp] = useState(null)
+ const [mails, setMails] = useRecoilState(mailsAtom)
+ const [lastEnteredTimestamp, setLastEnteredTimestamp] = useRecoilState(qMailLastEnteredTimestampAtom)
const [loading, setLoading] = useState(true)
const getMails = useCallback(async () => {
@@ -187,6 +189,8 @@ export const QMailMessages = ({userName, userAddress}) => {
onClick={()=> {
executeEvent("addTab", { data: { service: 'APP', name: 'q-mail' } });
executeEvent("open-apps-mode", { });
+ setLastEnteredTimestamp(Date.now())
+
}}
>
{
- ): lastEnteredTimestamp < mail?.created ? (
+ ): (lastEnteredTimestamp < mail?.created) && isLessThanOneWeekOld(mail?.created) ? (
diff --git a/src/components/QMailStatus.tsx b/src/components/QMailStatus.tsx
new file mode 100644
index 0000000..2787336
--- /dev/null
+++ b/src/components/QMailStatus.tsx
@@ -0,0 +1,43 @@
+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 } 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 (
+ {
+ executeEvent("addTab", { data: { service: 'APP', name: 'q-mail' } });
+ executeEvent("open-apps-mode", { });
+ setLastEnteredTimestamp(Date.now())
+ }} style={{
+ position: 'relative'
+ }}>{hasNewMail && (
+
+ )}
+ )
+}