added survey

This commit is contained in:
daniel31x13
2024-11-07 11:09:36 -05:00
parent cbf93dcf06
commit 6eac8423f8
11 changed files with 185 additions and 60 deletions
+61 -2
View File
@@ -1,5 +1,5 @@
import MainLayout from "@/layouts/MainLayout";
import { useEffect, useMemo, useState } from "react";
import { BaseSyntheticEvent, useEffect, useMemo, useState } from "react";
import Link from "next/link";
import React from "react";
import { toast } from "react-hot-toast";
@@ -16,7 +16,8 @@ import { useTags } from "@/hooks/store/tags";
import { useDashboardData } from "@/hooks/store/dashboardData";
import Links from "@/components/LinkViews/Links";
import useLocalSettingsStore from "@/store/localSettings";
import Divider from "@/components/ui/Divider";
import { useUpdateUser, useUser } from "@/hooks/store/user";
import SurveyModal from "@/components/ModalContent/SurveyModal";
export default function Dashboard() {
const { t } = useTranslation();
@@ -26,6 +27,7 @@ export default function Dashboard() {
...dashboardData
} = useDashboardData();
const { data: tags = [] } = useTags();
const { data: account = [] } = useUser();
const [numberOfLinks, setNumberOfLinks] = useState(0);
@@ -41,6 +43,19 @@ export default function Dashboard() {
);
}, [collections]);
useEffect(() => {
if (
process.env.NEXT_PUBLIC_STRIPE === "true" &&
account.id &&
account.referredBy === null &&
// if user is using Linkwarden for more than 3 days
new Date().getTime() - new Date(account.createdAt).getTime() >
3 * 24 * 60 * 60 * 1000
) {
setShowsSurveyModal(true);
}
}, [account]);
const numberOfLinksToShow = useMemo(() => {
if (window.innerWidth > 1900) {
return 10;
@@ -101,6 +116,42 @@ export default function Dashboard() {
(localStorage.getItem("viewMode") as ViewMode) || ViewMode.Card
);
const [showSurveyModal, setShowsSurveyModal] = useState(false);
const { data: user } = useUser();
const updateUser = useUpdateUser();
const [submitLoader, setSubmitLoader] = useState(false);
const submitSurvey = async (referer: string, other?: string) => {
if (submitLoader) return;
setSubmitLoader(true);
const load = toast.loading(t("applying"));
await updateUser.mutateAsync(
{
...user,
referredBy: referer === "other" ? "Other: " + other : referer,
},
{
onSettled: (data, error) => {
console.log(data, error);
setSubmitLoader(false);
toast.dismiss(load);
if (error) {
toast.error(error.message);
} else {
toast.success(t("thanks_for_feedback"));
setShowsSurveyModal(false);
}
},
}
);
};
return (
<MainLayout>
<div style={{ flex: "1 1 auto" }} className="p-5 flex flex-col gap-5">
@@ -343,6 +394,14 @@ export default function Dashboard() {
)}
</div>
</div>
{showSurveyModal && (
<SurveyModal
submit={submitSurvey}
onClose={() => {
setShowsSurveyModal(false);
}}
/>
)}
{newLinkModal && <NewLinkModal onClose={() => setNewLinkModal(false)} />}
</MainLayout>
);
-6
View File
@@ -101,12 +101,6 @@ export default function Account() {
password: password ? password : undefined,
},
{
onSuccess: (data) => {
if (data.response.email !== user.email) {
toast.success(t("email_change_request"));
setEmailChangeVerificationModal(false);
}
},
onSettled: (data, error) => {
setSubmitLoader(false);
toast.dismiss(load);
-1
View File
@@ -21,7 +21,6 @@ export default function Subscribe() {
const { data: user = {} } = useUser();
useEffect(() => {
console.log("user", user);
if (
session.status === "authenticated" &&
user.id &&