From f8368eab8f23ce90da844f0632c4323b8b461ac9 Mon Sep 17 00:00:00 2001
From: Edmel John Linaugo <68092712+EdmelKun@users.noreply.github.com>
Date: Thu, 7 Dec 2023 04:09:11 +0800
Subject: [PATCH] fix: put alert to encourage user to save changes (#239)
---
.../expo/src/components/modals/AlertModal.tsx | 2 +-
.../ReviewerDetailsHeader.tsx | 4 +-
apps/expo/src/forms/CreateTestForm/index.tsx | 28 ++++++---
apps/expo/src/screens/create-collection.tsx | 2 +-
.../src/screens/create-question/index.tsx | 61 ++++++++++++-------
.../src/screens/create-reviewer/index.tsx | 2 +-
.../src/screens/edit-collection/index.tsx | 2 +-
apps/expo/src/screens/edit-personal-info.tsx | 2 +-
8 files changed, 68 insertions(+), 35 deletions(-)
diff --git a/apps/expo/src/components/modals/AlertModal.tsx b/apps/expo/src/components/modals/AlertModal.tsx
index 6e379337..c9c81283 100644
--- a/apps/expo/src/components/modals/AlertModal.tsx
+++ b/apps/expo/src/components/modals/AlertModal.tsx
@@ -63,7 +63,7 @@ export const AlertModal = ({
Vwidth="24"
Vheight="10"
onPress={onCancel}
- isLoading={isLoading}
+ disabled={isLoading}
/>
)}
diff --git a/apps/expo/src/components/reviewer-details/ReviewerDetailsHeader.tsx b/apps/expo/src/components/reviewer-details/ReviewerDetailsHeader.tsx
index 14bf46ea..8d09d351 100644
--- a/apps/expo/src/components/reviewer-details/ReviewerDetailsHeader.tsx
+++ b/apps/expo/src/components/reviewer-details/ReviewerDetailsHeader.tsx
@@ -1,7 +1,7 @@
import { View, Text, TouchableOpacity } from "react-native";
import useGoBack from "../../hooks/useGoBack";
import EditIcon from "../../icons/EditIcon";
-import LeftArrowIcon from "../../icons/LeftArrowIcon";
+import { Feather } from "@expo/vector-icons";
interface ReviewerHeaderProps {
showEditIcon: boolean;
@@ -21,7 +21,7 @@ export const ReviewerDetailsHeader = ({
onPress={goBack}
className="flex flex-row items-center self-center"
>
-
+
Reviewer Details
diff --git a/apps/expo/src/forms/CreateTestForm/index.tsx b/apps/expo/src/forms/CreateTestForm/index.tsx
index f8accbc9..9e1b7d55 100644
--- a/apps/expo/src/forms/CreateTestForm/index.tsx
+++ b/apps/expo/src/forms/CreateTestForm/index.tsx
@@ -87,7 +87,6 @@ const CreateTestForm: FC = ({
const [selectedReviewer, setSelectedReviewer] = useState(
null,
);
-
const [openAlert, setOpenAlert] = useState(false);
const [isBottomSheetOpen, setBottomSheetOpen] = useState(false);
const [errorInAIQuestion, setErrorInAIQuestion] = useState(false);
@@ -252,7 +251,11 @@ const CreateTestForm: FC = ({
}, [image, testDetails?.image]);
const handleExitScreen = () => {
- if (isDirty || questions.length > 0) {
+ if (
+ (testTitle === "Create Test" && isDirty) ||
+ (testTitle === "Edit Test" && isDirty) ||
+ questions.length > 0
+ ) {
setOpenAlert(true);
} else {
goBack();
@@ -261,7 +264,11 @@ const CreateTestForm: FC = ({
useEffect(() => {
const backAction = () => {
- if (isDirty || questions.length > 0) {
+ if (
+ (testTitle === "Create Test" && isDirty) ||
+ (testTitle === "Edit Test" && isDirty) ||
+ questions.length > 0
+ ) {
setOpenAlert(true);
} else {
goBack();
@@ -440,7 +447,13 @@ const CreateTestForm: FC = ({
screenName={testTitle}
optionIcon={}
onIconPress={() => setIsSidebarOpen(true)}
- backIcon={}
+ backIcon={
+ questions.length > 0 || testTitle === "Create Test" ? (
+
+ ) : (
+ ""
+ )
+ }
handleExit={handleExitScreen}
showDeleteIcon={testTitle === "Edit Test"}
onDeletePress={() =>
@@ -776,9 +789,9 @@ const CreateTestForm: FC = ({
= ({
onCancel={() => {
setOpenAlert(false);
}}
- onConfirm={goBack}
+ isLoading={isCreatingQuiz}
+ onConfirm={handleSubmit(submitForm)}
/>
);
diff --git a/apps/expo/src/screens/create-collection.tsx b/apps/expo/src/screens/create-collection.tsx
index 8cea3528..8d345ea5 100644
--- a/apps/expo/src/screens/create-collection.tsx
+++ b/apps/expo/src/screens/create-collection.tsx
@@ -251,7 +251,7 @@ export const CreateCollection = () => {
isVisible={openAlert}
alertTitle={"Are you sure?"}
alertDescription={
- "You will lose all unsaved progress if you exit this screen"
+ "You will lose all unsaved changes if you exit this screen"
}
confirmButtonText={"Yes"}
isCancelButtonVisible={true}
diff --git a/apps/expo/src/screens/create-question/index.tsx b/apps/expo/src/screens/create-question/index.tsx
index e6265d18..466a28e7 100644
--- a/apps/expo/src/screens/create-question/index.tsx
+++ b/apps/expo/src/screens/create-question/index.tsx
@@ -116,6 +116,7 @@ export const CreateQuestionScreen: FC = () => {
const [choices, setChoices] = useState([]);
const [isDeleting, setIsDeleting] = useState(false);
const [isChoiceModalTouched, setIsChoiceModalTouched] = useState(false);
+ const [promptSaveModal, setPromptSaveModal] = useState(false);
const { height, width } = Dimensions.get("window");
@@ -190,6 +191,7 @@ export const CreateQuestionScreen: FC = () => {
const snapPoints = useMemo(() => ["5%", "25%", "70%"], []);
const openBottomSheet = () => {
+ handleSaveQuestion();
bottomSheetRef.current?.expand();
};
@@ -569,12 +571,7 @@ export const CreateQuestionScreen: FC = () => {
};
const handleExitScreen = () => {
- if (question?.inEdit) {
- setOpenAlert(true);
- } else {
- resetQuestionImage();
- goBack();
- }
+ setOpenAlert(true);
};
const handleDelete = () => {
@@ -979,24 +976,29 @@ export const CreateQuestionScreen: FC = () => {
-
- bottomSheetRef.current?.close()}
- />
-
+ {
+ setPromptSaveModal(false);
+ }}
+ onConfirm={handleSaveAnswer(() => {
+ setIsSaved(false);
+ setPromptSaveModal(false);
+ })}
+ />
{
onCancel={() => {
setOpenAlert(false);
}}
- onConfirm={goBack}
+ onConfirm={() => {
+ handleSaveQuestion();
+ resetQuestionImage();
+ goBack();
+ }}
/>
+
+
+ bottomSheetRef.current?.close()}
+ />
+
);
diff --git a/apps/expo/src/screens/create-reviewer/index.tsx b/apps/expo/src/screens/create-reviewer/index.tsx
index d1254153..bd515a8f 100644
--- a/apps/expo/src/screens/create-reviewer/index.tsx
+++ b/apps/expo/src/screens/create-reviewer/index.tsx
@@ -726,7 +726,7 @@ export const CreateReviewerScreen = ({
isVisible={openAlert}
alertTitle={"Are you sure?"}
alertDescription={
- "You will lose all unsaved progress if you exit this screen"
+ "You will lose all unsaved changes if you exit this screen"
}
confirmButtonText={"Yes"}
isCancelButtonVisible={true}
diff --git a/apps/expo/src/screens/edit-collection/index.tsx b/apps/expo/src/screens/edit-collection/index.tsx
index 286a7174..61d4f430 100644
--- a/apps/expo/src/screens/edit-collection/index.tsx
+++ b/apps/expo/src/screens/edit-collection/index.tsx
@@ -349,7 +349,7 @@ export const EditCollection: FC> = ({
isVisible={openAlert}
alertTitle={"Are you sure?"}
alertDescription={
- "You will lose all unsaved progress if you exit this screen"
+ "You will lose all unsaved changes if you exit this screen"
}
confirmButtonText={"Yes"}
isCancelButtonVisible={true}
diff --git a/apps/expo/src/screens/edit-personal-info.tsx b/apps/expo/src/screens/edit-personal-info.tsx
index 088dde88..90be4755 100644
--- a/apps/expo/src/screens/edit-personal-info.tsx
+++ b/apps/expo/src/screens/edit-personal-info.tsx
@@ -330,7 +330,7 @@ export const EditPersonalInfoScreen = () => {
isVisible={openAlert}
alertTitle={"Are you sure?"}
alertDescription={
- "You will lose all unsaved progress if you exit this screen"
+ "You will lose all unsaved changes if you exit this screen"
}
confirmButtonText={"Yes"}
isCancelButtonVisible={true}