Files
notesnook/apps/mobile/app/services/message.js
2022-08-27 15:23:11 +05:00

106 lines
2.3 KiB
JavaScript

import { useMessageStore } from "../stores/use-message-store";
import {
eOpenLoginDialog,
eOpenRateDialog,
eOpenRecoveryKeyDialog
} from "../utils/events";
import { eSendEvent } from "./event-manager";
import PremiumService from "./premium";
import { verifyUser } from "../screens/settings/functions";
import { Platform } from "react-native";
import umami from "../common/analytics";
import SettingsService from "./settings";
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,
message: "Keep your data safe if you lose password",
actionText: "Save your account recovery key",
onPress: () => {
verifyUser(
null,
() => {
eSendEvent(eOpenRecoveryKeyDialog);
},
true,
async () => {
SettingsService.set({
recoveryKeySaved: true
});
clearMessage();
},
"I have saved my key already"
);
},
data: {},
icon: "key",
type: "normal"
};
export function setRecoveryKeyMessage() {
useMessageStore.getState().setMessage(recoveryKeyMessage);
}
const loginMessage = {
visible: true,
message: "You are not logged in",
actionText: "Login to encrypt and sync notes",
onPress: () => {
umami.pageView("/signup", "/welcome/home");
eSendEvent(eOpenLoginDialog);
},
data: {},
icon: "account-outline",
type: "normal"
};
export function setLoginMessage() {
useMessageStore.getState().setMessage(loginMessage);
}
const emailMessage = {
visible: true,
message: "Email not confirmed",
actionText: "Please confirm your email to sync notes.",
onPress: () => {
PremiumService.showVerifyEmailDialog();
},
data: {},
icon: "email",
type: "error"
};
export function setEmailVerifyMessage() {
useMessageStore.getState().setMessage(emailMessage);
}
const noMessage = {
visible: false,
message: "",
actionText: "",
onPress: null,
data: {},
icon: "account-outline"
};
export function clearMessage() {
useMessageStore.getState().setMessage(noMessage);
}