From 7fa3a2034a5e7eef5d89025ce81bd04e68c4635f Mon Sep 17 00:00:00 2001 From: James Wyndham Date: Tue, 12 Mar 2024 07:16:07 +0800 Subject: [PATCH] feature - fixed modal --- Backend/bin/pb_hooks/emails/signup.html | 817 ++++++++++++++++++ Backend/bin/pb_hooks/emails/signup.mjml | 132 +++ Backend/bin/pb_hooks/main.pb.js | 60 +- Frontend/app/favicon.ico | Bin 15406 -> 15406 bytes Frontend/components/Header.tsx | 2 + .../components/Modals/ModalEmailChange.tsx | 124 +++ .../components/Modals/ModalPasswordReset.tsx | 103 +++ Frontend/components/Modals/ModalSignIn.tsx | 41 +- Frontend/components/Modals/ModalSignUp.tsx | 76 +- Frontend/components/Navigation.tsx | 8 +- Frontend/sections/AccountContent.tsx | 27 +- .../Hero/WaitingListWithImageHero.tsx | 35 +- Frontend/sections/PageHeader.tsx | 2 +- Frontend/utils/form.ts | 4 - version.txt => version | 0 15 files changed, 1303 insertions(+), 128 deletions(-) create mode 100644 Backend/bin/pb_hooks/emails/signup.html create mode 100644 Backend/bin/pb_hooks/emails/signup.mjml create mode 100644 Frontend/components/Modals/ModalEmailChange.tsx create mode 100644 Frontend/components/Modals/ModalPasswordReset.tsx rename version.txt => version (100%) diff --git a/Backend/bin/pb_hooks/emails/signup.html b/Backend/bin/pb_hooks/emails/signup.html new file mode 100644 index 0000000..a4172be --- /dev/null +++ b/Backend/bin/pb_hooks/emails/signup.html @@ -0,0 +1,817 @@ + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ + + + + + +
+ +
+
+
+ +
+
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ You're Going To Love What Happens Next +
+
+
+ +
+
+ +
+ + + + + + +
+ +
+ + + + + + + + + + + + + + + +
+
+ {{.firstName}} your next launch is closer than you + think - FastPocket will make it closer. +
+
+
+ We're really excited to help you develop apps + quickly. Check out the + tools + we are using to help you build at 10x. When you are + ready to start producing apps at max capacity click + the button below. +
+
+ + + + +
+ Build Now +
+
+
+ Thanks,
The {{.company}} Team +
+
+
+ +
+
+ +
+ + + + + + +
+ +
+ + + + + + +
+ + + + + + +
+ + + + +
+ +
+
+ Web +
+ + + + + + +
+ + + + +
+ +
+
+ Github +
+ + + + + + +
+ + + + +
+ +
+
+ Youtube +
+ + + + + + +
+ + + + +
+ +
+
+ X +
+ +
+
+ +
+
+ +
+ + diff --git a/Backend/bin/pb_hooks/emails/signup.mjml b/Backend/bin/pb_hooks/emails/signup.mjml new file mode 100644 index 0000000..c870b0d --- /dev/null +++ b/Backend/bin/pb_hooks/emails/signup.mjml @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + You're Going To Love What Happens Next + + + + + {{.firstName}} your next launch is closer than you think - FastPocket + will make it closer. + We're really excited to help you develop apps quickly. Check out + the + tools + we are using to help you build at 10x. When you are ready to start + producing apps at max capacity click the button below. + Build Now + Thanks,
+ The {{.company}} Team
+
+
+ + + + + Web + + + Github + + + Youtube + + + X + + + + +
+
diff --git a/Backend/bin/pb_hooks/main.pb.js b/Backend/bin/pb_hooks/main.pb.js index be44d3c..9b8bc48 100644 --- a/Backend/bin/pb_hooks/main.pb.js +++ b/Backend/bin/pb_hooks/main.pb.js @@ -1,45 +1,25 @@ onRecordAfterCreateRequest((e) => { - const message = new MailerMessage({ - from: { - address: $app.settings().meta.senderAddress, - name: $app.settings().meta.senderName, - }, - to: [{address: e.record.email()}], - subject: "Are you ready to launch 10x faster?", - html: ` -
You're Going To Love What Happens Next
${e.record.get("firstName")} your next launch is closer than you think.

FastPocket will 10x your development process
We're really excited to help you develop apps quickly. Check out the tools we are using to help you build at 10x. When you are ready to start producing apps at max capacity click the button below.
Build Now!
Thanks,
The FastPocket Team
- - `, - // bcc, cc and custom headers are also supported... - }) + const message = new MailerMessage({ + from: { + address: $app.settings().meta.senderAddress, + name: $app.settings().meta.senderName, + }, + to: [{ address: e.record.email() }], + subject: "Are you ready to launch 10x faster?", + html: $template + .loadFiles(`${__hooks}/emails/signup.html`) + .render({ + firstName: e.record.get("firstName"), + company: $app.settings().meta.appName, + }), + // bcc, cc and custom headers are also supported... + }); - $app.newMailClient().send(message) -}, "user") + $app.newMailClient().send(message); +}, "user"); routerAdd("GET", "/hello/:name", (c) => { - let name = c.pathParam("name") + let name = c.pathParam("name"); - return c.json(200, { "message": "Hello " + name }) -}) \ No newline at end of file + return c.json(200, { message: "Hello " + name }); +}); diff --git a/Frontend/app/favicon.ico b/Frontend/app/favicon.ico index 83c631f2e2649296c4d8c350563f759d082f7257..80d7e9f0fa87e758698479861373c8671f005490 100644 GIT binary patch literal 15406 zcmeI232YQ)6vwB6cx&+hjm9(@1T@}?w-SvYatPh|won8r=A;#%fHACMGJE zlBfaHXf&b{6;KitL<1U)LQqlTjiOZyRNLK|`TV`zu3ffWm(uN4aVB~BX1?qFzc=rD z-|?Pdlo@@D@^XW;!m#=p#xTP$Dk{?7L;4%WW8|H7T3h)EhOzbt!x%yxn$RMhPx8Nc zW=_%rZBvi3l^*Sy-WWHkubidyp}QggYoe~OO@AAtv&m8ZH`B-Ig9`OwE3Z1cUG{ri zCC@9=-ZAx5Y2%oF(pA3gME%B0AC5|1Sg5@n^`_Cb#WB4~+w?}&Mw1sf5q}na1dh@L z+gr+;Lc3LUqx3%4BFBdDzm?ZO^tl0H+w_K%0f6kJ8^VM|pGH%H+j` z+FPbK*-^nO$Z;|K%#n7qU*wp<>z0`uUZ{Otr9OuCFVQ~6nCo2AZ?L1zF8mdFD3@otDExi%99_k$2hZC z7?AbSJbd!X!;1LzMdNRJE4s=bnawU1fByYzx%}A!?10A&=-XV%f)3^UvtseLRj_L3 z{sZ=b?Ry@|8gem!@8%xjztvWWlx|5{U#$lTANGfFF!&jqJ;9$ozjvzi(9F1y%Qoiz z+RV4?QQ40r+c4ac$?tBOkw5*9$nHz_gl=@_y`#NHQu!ZHw`ly)^QW*Umx!!+{}P>7&P08_J5is*e)NJ`_P>n#MtC+;zL35C z)$DJJCV%$GGXJ*8xrz73d2fP`{AZ8xdg(OSLV7EG{Uf)qGj|>GNr1>ZjIW$Vj*Py1oRa7&r;_jWW#yVzpbl03fI?VoFOlx?|a}k z4?chIJ<{*~Jo4{wD-&lF?klVjN+6U#D1qLWfZUUCMQhYR;XMgL2%k^_p#(w+gc1lP zu*XS2m&KGmBsNJOZcWewW=`5MPze9ik+I6=qjITkvOf6VAcDq5y_fh4Iom(SIqy@> zTbntLZnh)-=P6R8D(FC*$2M^ee%P&Q!Ta1hPb{YQ=A3#xn0G*(pW6%NbFO!)5@+|u z2sqnMMvg7JjXg6q<$q{R(F0032GL*i<^67BZySRXNz5uGez|8t_TLr@KlfP6N{OGl z%3;h?xi{NAz3%9i5YT5kRTiggv@r5+8KN_7WV@~wL4>KNrSaW6!%=7h`@=~PP_`$KhGv8G_ zk~jS8a@ODks-EJ?^1k(*do>rV%+>z`uLXj$I-8Kxnu0fZ;2~pU%xb7-7*La;#+Ix z`)51iU7b3!aE=kXlOcRkN65LRKB5N^gYgLU6V(3(J&b~V96DH1`!D#@>u>Nj=a-R= znY@E`)T(EM1WbqM~*v4S1a;D5iA_{Bd7R>6{h ze+#nzUTl(_f9=t_{|%%s?RFJ=4Ek zl{go^TaYb&&D0$JgZJOSv6A!|&b}!>DDR78ehN{45tyGupH`>sX7Cl?_mRJqdK+Y3 zXZr8yl=bvf_=+!lW4+SHvVP70JMjaZ>}@*c$vjyS;|wJ8oq7B_ZQm@V{$OJcgy&jt zNL<70*jT;)aQ?r6tw( z^W6TiIU`aw)AWB~918@u9nq)6v5~Uh$xuAfGDz-8h_M*#Mp{p*Q;A_RF4`_ zJ9u`tZ5*9p9QT4r?jzE7SDoHlrSG(;_bKC8BQf&5A@_Xal=zSK`$Ii2_s&qx0)_Ylt3tfPy(R@LJ5Qt2qmy*OW-e|ceuv@ literal 15406 zcmeI336LCB8OLV@K~7QRP>~8}04)R!hYA=Dg#co*Gd;5b5<&=@Id&E>a>!Avp&))|k%TiK31B$FnaB|cAcPQ(5RyRd-I?xr{{G$D+1^giwHd0YlBs&z-S55c zec$`u_rB}Bjm4T`8^yNSCdRX0EWL3oc3>

(|fw-s@|z*k7sJZ@=#LJ!7$_wu{B~ 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 diff --git a/Frontend/components/Header.tsx b/Frontend/components/Header.tsx index a2745f2..a2fe9c7 100644 --- a/Frontend/components/Header.tsx +++ b/Frontend/components/Header.tsx @@ -11,6 +11,7 @@ import pb from "@/lib/pocketbase"; import { useTheme } from "next-themes"; import Link from "next/link"; import Icon from "@/components/Icons/Icon"; +import ModalPasswordReset from "./Modals/ModalPasswordReset"; interface HeaderProps { isUserLoggedIn: boolean; @@ -148,6 +149,7 @@ export default function Header({ isUserLoggedIn }: HeaderProps) { + ); diff --git a/Frontend/components/Modals/ModalEmailChange.tsx b/Frontend/components/Modals/ModalEmailChange.tsx new file mode 100644 index 0000000..f475b2f --- /dev/null +++ b/Frontend/components/Modals/ModalEmailChange.tsx @@ -0,0 +1,124 @@ +import React from "react"; +import Icon from "@/components/Icons/Icon"; +import { useForm } from "react-hook-form"; +import { yupResolver } from "@hookform/resolvers/yup"; +import { signInValidationSchema } from "@/utils/form"; +import { login } from "@/app/actions"; +import { toast } from "react-toastify"; +import pb from "@/lib/pocketbase"; + +function ModalPasswordReset() { + const { + register, + handleSubmit, + reset, + formState: { errors, isSubmitting }, + } = useForm({ + resolver: yupResolver(signInValidationSchema), + }); + + const onSubmit = async (data: any) => { + try { + //login user + if ( + (await login({ email: data.email, password: data.password })).success + ) { + reset(); + document.getElementById("sign-in-modal")?.click(); + } + } catch (error) { + if (error instanceof Error) { + toast.error(error.message, { + position: "bottom-left", + autoClose: 5000, + hideProgressBar: false, + closeOnClick: true, + pauseOnHover: true, + draggable: true, + progress: undefined, + theme: "colored", + }); + } + } + }; + return ( + <> + { + reset(); + }} + /> +

+ +
+
+
+

+ Welcome back! +

+

Lets kick some more ass?

+
+
+
+ +
+ {errors.email?.message}  +
+
+
+ +
+ {errors.password?.message}  +
+
+ +
+ + +
+
+
+ + + + ); +} + +export default ModalPasswordReset; diff --git a/Frontend/components/Modals/ModalPasswordReset.tsx b/Frontend/components/Modals/ModalPasswordReset.tsx new file mode 100644 index 0000000..a2a5167 --- /dev/null +++ b/Frontend/components/Modals/ModalPasswordReset.tsx @@ -0,0 +1,103 @@ +import React, { useRef } from "react"; +import Icon from "@/components/Icons/Icon"; +import { useForm } from "react-hook-form"; +import { yupResolver } from "@hookform/resolvers/yup"; +import { signInValidationSchema } from "@/utils/form"; +import { toast } from "react-toastify"; +import pb from "@/lib/pocketbase"; + +function ModalPasswordReset() { + const { + register, + handleSubmit, + reset, + formState: { errors, isSubmitting }, + } = useForm({ + resolver: yupResolver(signInValidationSchema), + }); + + const onSubmit = async (data: any) => { + console.log(data); + try { + //login user + if (await pb.collection("user").requestPasswordReset(data.email)) { + reset(); + document.getElementById("password-reset-modal")?.click(); + document.getElementById("sign-in-modal")?.click(); + } + } catch (error) { + if (error instanceof Error) { + toast.error(error.message, { + position: "bottom-left", + autoClose: 5000, + hideProgressBar: false, + closeOnClick: true, + pauseOnHover: true, + draggable: true, + progress: undefined, + theme: "colored", + }); + } + } + }; + return ( + <> + { + reset(); + }} + /> + + + ); +} + +export default ModalPasswordReset; diff --git a/Frontend/components/Modals/ModalSignIn.tsx b/Frontend/components/Modals/ModalSignIn.tsx index 903d577..bf3b47a 100644 --- a/Frontend/components/Modals/ModalSignIn.tsx +++ b/Frontend/components/Modals/ModalSignIn.tsx @@ -1,19 +1,18 @@ import React from "react"; import Icon from "@/components/Icons/Icon"; -import { useTheme } from "next-themes"; -import colors from "@/utils/colors"; import { useForm } from "react-hook-form"; import { yupResolver } from "@hookform/resolvers/yup"; import { signInValidationSchema } from "@/utils/form"; import { login } from "@/app/actions"; import { toast } from "react-toastify"; +import pb from "@/lib/pocketbase"; function ModalSignIn() { const { register, handleSubmit, reset, - formState: { errors }, + formState: { errors, isSubmitting }, } = useForm({ resolver: yupResolver(signInValidationSchema), }); @@ -63,47 +62,57 @@ function ModalSignIn() {
-
+

Welcome back!

Lets kick some more ass?

-
+
{errors.email?.message} 
-
+
{errors.password?.message} 
- +
+ + +
diff --git a/Frontend/components/Modals/ModalSignUp.tsx b/Frontend/components/Modals/ModalSignUp.tsx index bc6002d..7c99255 100644 --- a/Frontend/components/Modals/ModalSignUp.tsx +++ b/Frontend/components/Modals/ModalSignUp.tsx @@ -21,7 +21,7 @@ function ModalSignUp({ register, handleSubmit, reset, - formState: { errors }, + formState: { errors, isSubmitting }, } = useForm({ resolver: yupResolver(signUpValidationSchema), }); @@ -55,6 +55,7 @@ function ModalSignUp({ lastSeen: new Date(), role: "Admin", displayName: `${data.firstName} ${data.lastName}`, + passwordConfirm: data.password, ...data, }; try { @@ -82,16 +83,21 @@ function ModalSignUp({ } } catch (error) { if (error instanceof Error) { - toast.error(error.message, { - position: "bottom-left", - autoClose: 5000, - hideProgressBar: false, - closeOnClick: true, - pauseOnHover: true, - draggable: true, - progress: undefined, - theme: "colored", - }); + toast.error( + Object.values((error as any).data.data) + .map((x: any) => x.message) + .join(), + { + position: "bottom-left", + autoClose: 5000, + hideProgressBar: false, + closeOnClick: true, + pauseOnHover: true, + draggable: true, + progress: undefined, + theme: "colored", + } + ); } } }; @@ -120,10 +126,7 @@ function ModalSignUp({
-
+

We Are Growing Fast, and We Want You To Join The Party!

@@ -131,14 +134,10 @@ function ModalSignUp({ Excited to see what we've got! Signup and get started!

-
+
-
+
-
+
-
+
-
+
-
+
-
- -
- {errors.passwordConfirm?.message}  -
-
-
diff --git a/Frontend/components/Navigation.tsx b/Frontend/components/Navigation.tsx index 11d3365..8363551 100644 --- a/Frontend/components/Navigation.tsx +++ b/Frontend/components/Navigation.tsx @@ -37,7 +37,9 @@ function Navigation({ isUserLoggedIn }: { isUserLoggedIn: boolean }) { {/* Site branding */}
{/* Logo */} - + + +
{/* Navbar menu content here */}
  • @@ -79,7 +81,9 @@ function Navigation({ isUserLoggedIn }: { isUserLoggedIn: boolean }) { {/* Sidebar content here */}
    {/* Logo */} - + + +
  • Get Your FastPocket diff --git a/Frontend/sections/AccountContent.tsx b/Frontend/sections/AccountContent.tsx index e5b571c..29877ba 100644 --- a/Frontend/sections/AccountContent.tsx +++ b/Frontend/sections/AccountContent.tsx @@ -10,6 +10,7 @@ import { useState, useEffect } from "react"; import { toast } from "react-toastify"; import { useRouter } from "next/navigation"; import { useQRCode } from "next-qrcode"; +import pb from "@/lib/pocketbase"; interface ManageSubscriptionProps { user: User; @@ -107,7 +108,7 @@ function AccountContent({ user }: ManageSubscriptionProps) {
  • - @@ -147,7 +148,7 @@ function AccountContent({ user }: ManageSubscriptionProps) {

    @@ -157,19 +158,35 @@ function AccountContent({ user }: ManageSubscriptionProps) {

    {"You haven’t upgraded your workflow yet"}

    -
    +
    + +
    )} diff --git a/Frontend/sections/Hero/WaitingListWithImageHero.tsx b/Frontend/sections/Hero/WaitingListWithImageHero.tsx index 95a8cf8..aa2d852 100644 --- a/Frontend/sections/Hero/WaitingListWithImageHero.tsx +++ b/Frontend/sections/Hero/WaitingListWithImageHero.tsx @@ -16,7 +16,7 @@ const WaitingListWithImageHero = () => { const { register, handleSubmit, - formState: { errors }, + formState: { errors, isSubmitting }, } = useForm({ resolver: yupResolver(waitinglistValidationSchema), }); @@ -177,22 +177,27 @@ const WaitingListWithImageHero = () => {
    diff --git a/Frontend/sections/PageHeader.tsx b/Frontend/sections/PageHeader.tsx index 669a167..799ee3b 100644 --- a/Frontend/sections/PageHeader.tsx +++ b/Frontend/sections/PageHeader.tsx @@ -8,7 +8,7 @@ interface PageHeaderProps { function PageHeader({ title, subtitle, className }: PageHeaderProps) { return (
    -

    +

    {title}

    {subtitle} diff --git a/Frontend/utils/form.ts b/Frontend/utils/form.ts index a7cc036..ae3b97b 100644 --- a/Frontend/utils/form.ts +++ b/Frontend/utils/form.ts @@ -50,10 +50,6 @@ const signUpValidationSchema = Yup.object().shape({ .password() .required("Password is required.") .min(8, "Password is too short - should be 8 characters minimum.") - .minUppercase(1, "password must contain at least 1 upper case letter"), - passwordConfirm: Yup.string() - .required("Please retype your password.") - .oneOf([Yup.ref("password")], "Your passwords do not match."), }); const waitinglistValidationSchema = Yup.object().shape({ firstName: Yup.string().required("First Name is required"), diff --git a/version.txt b/version similarity index 100% rename from version.txt rename to version