diff --git a/apps/mobile/src/libs/components/components.tsx b/apps/mobile/src/libs/components/components.tsx index a672b76e3..bd7a6dae2 100644 --- a/apps/mobile/src/libs/components/components.tsx +++ b/apps/mobile/src/libs/components/components.tsx @@ -21,6 +21,7 @@ export { Logo } from "./logo/logo"; export { Modal } from "./modal/modal"; export { MultipleCheckboxInput } from "./multiple-checkbox-input/multiple-checkbox-input"; export { MultipleSliderInput } from "./multiple-slider-input/multiple-slider-input"; +export { OnLeaveModal } from "./on-leave-modal/on-leave-modal"; export { PageSwitcher } from "./page-switcher/page-switcher"; export { Planet } from "./planet/planet"; export { ProgressBar } from "./progress-bar/progress-bar"; diff --git a/apps/mobile/src/screens/settings/libs/components/sign-out-modal/sign-out-modal.tsx b/apps/mobile/src/libs/components/on-leave-modal/on-leave-modal.tsx similarity index 86% rename from apps/mobile/src/screens/settings/libs/components/sign-out-modal/sign-out-modal.tsx rename to apps/mobile/src/libs/components/on-leave-modal/on-leave-modal.tsx index 4e7945560..de9c58bf9 100644 --- a/apps/mobile/src/screens/settings/libs/components/sign-out-modal/sign-out-modal.tsx +++ b/apps/mobile/src/libs/components/on-leave-modal/on-leave-modal.tsx @@ -20,14 +20,16 @@ type ModalButtonConfiguration = { type Properties = { buttonsConfiguration: ModalButtonConfiguration[]; + description: string; isVisible: boolean; onBackdropPress: () => void; }; const ICON_SIZE = 70; -const SignOutModal: FC = ({ +const OnLeaveModal: FC = ({ buttonsConfiguration, + description, isVisible, onBackdropPress, }) => { @@ -46,9 +48,8 @@ const SignOutModal: FC = ({ name="directions-run" size={ICON_SIZE} /> - - Oh no! You're one step away from life balance. Are you sure you - want to leave? + + {description} @@ -66,4 +67,4 @@ const SignOutModal: FC = ({ ); }; -export { SignOutModal }; +export { OnLeaveModal }; diff --git a/apps/mobile/src/screens/settings/libs/components/sign-out-modal/styles.ts b/apps/mobile/src/libs/components/on-leave-modal/styles.ts similarity index 100% rename from apps/mobile/src/screens/settings/libs/components/sign-out-modal/styles.ts rename to apps/mobile/src/libs/components/on-leave-modal/styles.ts diff --git a/apps/mobile/src/screens/edit-wheel-results/edit-wheel-results.tsx b/apps/mobile/src/screens/edit-wheel-results/edit-wheel-results.tsx index bb82198f2..f23b70b73 100644 --- a/apps/mobile/src/screens/edit-wheel-results/edit-wheel-results.tsx +++ b/apps/mobile/src/screens/edit-wheel-results/edit-wheel-results.tsx @@ -1,9 +1,10 @@ import { StackActions } from "@react-navigation/native"; -import React from "react"; +import React, { type ComponentProps } from "react"; import { CheckboxCategoriesForm, LoaderWrapper, + OnLeaveModal, PageSwitcher, ScreenWrapper, ScrollView, @@ -42,8 +43,31 @@ const EditWheelResults: React.FC = () => { >(); const { dataStatus, scores } = useAppSelector((state) => state.quiz); + const dispatch = useAppDispatch(); + const [isConfirmationModalVisible, setIsConfirmationModalVisible] = + useState(false); + + const handleModalDismiss = useCallback((): void => { + setIsConfirmationModalVisible(false); + }, []); + + const modalButtonsConfiguration: ComponentProps< + typeof OnLeaveModal + >["buttonsConfiguration"] = [ + { + appearance: "filled", + label: "Yes", + onPress: handleModalDismiss, + }, + { + appearance: "outlined", + label: "Cancel", + onPress: handleModalDismiss, + }, + ]; + const handleEditScores = useCallback( (payload: QuizScoresUpdateRequestDto) => { void dispatch(quizActions.editScores(payload)); @@ -136,6 +160,12 @@ const EditWheelResults: React.FC = () => { )} + ); }; diff --git a/apps/mobile/src/screens/settings/libs/components/components.ts b/apps/mobile/src/screens/settings/libs/components/components.ts deleted file mode 100644 index c0583f8d9..000000000 --- a/apps/mobile/src/screens/settings/libs/components/components.ts +++ /dev/null @@ -1 +0,0 @@ -export { SignOutModal } from "./sign-out-modal/sign-out-modal"; diff --git a/apps/mobile/src/screens/settings/settings.tsx b/apps/mobile/src/screens/settings/settings.tsx index f9834f51a..2d9969387 100644 --- a/apps/mobile/src/screens/settings/settings.tsx +++ b/apps/mobile/src/screens/settings/settings.tsx @@ -3,6 +3,7 @@ import { type ComponentProps } from "react"; import { Button, MultipleCheckboxInput, + OnLeaveModal, RadioGroup, ScreenWrapper, ScrollView, @@ -34,7 +35,6 @@ import { import { actions as authActions } from "~/slices/auth/auth"; import { actions as userActions } from "~/slices/users/users"; -import { SignOutModal } from "./libs/components/components"; import { styles } from "./styles"; const Settings: React.FC = () => { @@ -70,7 +70,7 @@ const Settings: React.FC = () => { ); const modalButtonsConfiguration: ComponentProps< - typeof SignOutModal + typeof OnLeaveModal >["buttonsConfiguration"] = [ { appearance: "outlined", @@ -166,8 +166,10 @@ const Settings: React.FC = () => { /> - diff --git a/package-lock.json b/package-lock.json index d59fc5f61..f96d11300 100644 --- a/package-lock.json +++ b/package-lock.json @@ -53,7 +53,7 @@ } }, "apps/backend": { - "version": "1.26.0", + "version": "1.29.1", "dependencies": { "@aws-sdk/client-s3": "3.637.0", "@fastify/multipart": "8.3.0", @@ -92,7 +92,7 @@ } }, "apps/frontend": { - "version": "1.44.0", + "version": "1.48.1", "dependencies": { "@hookform/resolvers": "3.9.0", "@reduxjs/toolkit": "2.2.7", @@ -20150,7 +20150,7 @@ } }, "packages/shared": { - "version": "1.27.0", + "version": "1.31.0", "dependencies": { "date-fns": "3.6.0", "zod": "3.23.8"