diff --git a/apps/mobile/src/components/AppLoader/index.js b/apps/mobile/src/components/AppLoader/index.js index 7bacd919e..ee80382d1 100644 --- a/apps/mobile/src/components/AppLoader/index.js +++ b/apps/mobile/src/components/AppLoader/index.js @@ -43,6 +43,7 @@ import Paragraph from '../Typography/Paragraph'; import {checkVersion} from 'react-native-check-version'; import {Placeholder, SvgToPngView} from '../ListPlaceholders'; import {Update} from '../Update'; +import {setRateAppMessage} from '../../services/Message'; let passwordValue = null; let didVerifyUser = false; @@ -126,7 +127,7 @@ const AppLoader = ({onLoad}) => { presentSheet({ noIcon: true, noProgess: true, - component:(ref) => + component: ref => }); return true; @@ -161,7 +162,9 @@ const AppLoader = ({onLoad}) => { if (askForRating !== 'never' || askForRating !== 'completed') { askForRating = JSON.parse(askForRating); if (askForRating?.timestamp < Date.now()) { - eSendEvent(eOpenRateDialog); + if (!useMessageStore.getState().message.visible) { + setRateAppMessage(); + } return true; } } diff --git a/apps/mobile/src/components/RateDialog/index.js b/apps/mobile/src/components/RateDialog/index.js index 4121cdf8e..bbe8a9b74 100644 --- a/apps/mobile/src/components/RateDialog/index.js +++ b/apps/mobile/src/components/RateDialog/index.js @@ -9,7 +9,8 @@ import {Button} from '../Button'; import Seperator from '../Seperator'; import Heading from '../Typography/Heading'; import Paragraph from '../Typography/Paragraph'; -import { STORE_LINK } from '../../utils'; +import {STORE_LINK} from '../../utils'; +import {clearMessage} from '../../services/Message'; const RateDialog = () => { const [visible, setVisible] = useState(false); @@ -49,6 +50,7 @@ const RateDialog = () => { }) ); setVisible(false); + clearMessage(); }}> { await Linking.openURL(STORE_LINK); await MMKV.setItem('askForRating', 'completed'); setVisible(false); + clearMessage(); }} fontSize={SIZE.md} width="100%" @@ -88,6 +91,7 @@ const RateDialog = () => { onPress={async () => { await MMKV.setItem('askForRating', 'never'); setVisible(false); + clearMessage(); }} fontSize={SIZE.md} type="error" @@ -104,6 +108,7 @@ const RateDialog = () => { }) ); setVisible(false); + clearMessage(); }} fontSize={SIZE.md} width="48%" diff --git a/apps/mobile/src/services/Message.js b/apps/mobile/src/services/Message.js index e38ebb4e3..0925780ce 100644 --- a/apps/mobile/src/services/Message.js +++ b/apps/mobile/src/services/Message.js @@ -1,9 +1,32 @@ import {useMessageStore} from '../provider/stores'; -import {eOpenLoginDialog, eOpenRecoveryKeyDialog} from '../utils/Events'; +import { + eOpenLoginDialog, + eOpenRateDialog, + eOpenRecoveryKeyDialog +} from '../utils/Events'; import {eSendEvent} from './EventManager'; import PremiumService from './PremiumService'; import {verifyUser} from '../views/Settings/functions'; import {MMKV} from '../utils/mmkv'; +import {Platform} from 'react-native'; + +const rateAppMessage = { + visible: true, + message: 'We would love to know what you think', + actionText: + 'Rate Notesnook on ' + + `${Platform.OS === 'ios' ? 'App store' : 'Play store'}`, + onPress: () => { + eSendEvent(eOpenRateDialog); + }, + data: {}, + icon: 'star', + type: 'normal' +}; + +export function setRateAppMessage() { + useMessageStore.getState().setMessage(rateAppMessage); +} const recoveryKeyMessage = { visible: true,