From e1e784fb0aa55013269a5cec15c3d352c94e9c80 Mon Sep 17 00:00:00 2001 From: alex Date: Thu, 20 Jul 2023 20:35:32 +0000 Subject: [PATCH] opening bug on ios --- src/Components/Modal/index.js | 6 +- .../AddSceneAction/LayerSelection/index.js | 2 +- src/Screens/Device/scene.js | 109 ++++++++++++------ 3 files changed, 78 insertions(+), 39 deletions(-) diff --git a/src/Components/Modal/index.js b/src/Components/Modal/index.js index 38aa2bb..deef790 100644 --- a/src/Components/Modal/index.js +++ b/src/Components/Modal/index.js @@ -47,7 +47,9 @@ export default function MyModal({ closeModal()} transparent > @@ -72,7 +74,7 @@ export default function MyModal({ ); } -export function MyPickerDefaultHeader({ title, closeModal }) { +export function MyDefaultModalHeader({ title, closeModal }) { const appContext = useContext(AppContext); return ( diff --git a/src/Screens/Device/modals/AddSceneAction/LayerSelection/index.js b/src/Screens/Device/modals/AddSceneAction/LayerSelection/index.js index 6930f20..980a3be 100644 --- a/src/Screens/Device/modals/AddSceneAction/LayerSelection/index.js +++ b/src/Screens/Device/modals/AddSceneAction/LayerSelection/index.js @@ -75,7 +75,7 @@ export default function LayerSelectionModalContent({ title={"Hinzufügen"} style={{ marginTop: 20, width: 180 }} disabled={selectedLayer.length === 0} - onPress={() => openLayersActionEditModal()} + onPress={openLayersActionEditModal} /> diff --git a/src/Screens/Device/scene.js b/src/Screens/Device/scene.js index 7916ab9..bfc475a 100644 --- a/src/Screens/Device/scene.js +++ b/src/Screens/Device/scene.js @@ -1,11 +1,16 @@ -import { FlatList, Text, TouchableOpacity, View } from "react-native"; +import { + FlatList, + Text, + TouchableHighlight, + TouchableOpacity, + View, +} from "react-native"; import Card from "../../Components/Card"; -import { AppContext, AppStyles, DevDeviceId } from "../../utils"; +import { AppContext, AppStyles, DevDeviceId, IsPlatformIos } from "../../utils"; import { useContext, useState } from "react"; -import { useTranslation } from "react-i18next"; import MyDropdown from "../../Components/Dropdown"; import MyIcon from "../../Components/Icon"; -import MyModal, { MyPickerDefaultHeader } from "../../Components/Modal"; +import MyModal, { MyDefaultModalHeader } from "../../Components/Modal"; import CreateSceneModalContent from "./modals/ChooseScene/CreateScene"; import ChooseSceneModalContent from "./modals/ChooseScene"; import AddSceneActionModalContent from "./modals/AddSceneAction"; @@ -46,14 +51,11 @@ export default function SceneView() { modalLayersActionEditIsOpen: false, }); - const setModalOpen = (modalName, open) => { - console.log("setModalOpen", modalName, open); - + const setModalOpen = (modalName, open) => setModalOpenStates((prevState) => ({ ...prevState, [modalName]: open, })); - }; const device = appContext.devices.find((device) => device.id === DevDeviceId); @@ -61,12 +63,36 @@ export default function SceneView() { (scene) => scene.id === device.selectedScene ); - const closeChooseSceneModals = () => { + const closeChooseSceneModals = () => setModalOpenStates((prevState) => ({ ...prevState, modalChooseSceneIsOpen: false, modalCreateSceneIsOpen: false, })); + + const openLayersActionEditModal = () => { + setModalOpenStates((prevState) => ({ + ...prevState, + modalChooseSceneIsOpen: false, + modalCreateSceneIsOpen: false, + modalAddSceneActionIsOpen: false, + modalLayerSectionIsOpen: false, + })); + + // setTimeout is needed, otherwise the modal would not open on iOS + IsPlatformIos() + ? setTimeout( + () => + setModalOpenStates((prevState) => ({ + ...prevState, + modalLayersActionEditIsOpen: true, + })), + 600 + ) + : setModalOpenStates((prevState) => ({ + ...prevState, + modalLayersActionEditIsOpen: true, + })); }; const actionColor = @@ -79,10 +105,7 @@ export default function SceneView() { { - console.log("pressed"); - setModalOpen("modalChooseSceneIsOpen", true); - }} + onPress={() => setModalOpen("modalChooseSceneIsOpen", true)} selectedItemLabel={ device.selectedScene === 0 ? "Keine Szene ausgewählt" @@ -91,6 +114,7 @@ export default function SceneView() { } /> + {device.selectedScene === 0 ? ( ) : ( @@ -104,7 +128,24 @@ export default function SceneView() { keyExtractor={(item) => item.id} renderItem={({ item }) => ( - {item.name} + + {item.name} + + setModalOpenStates((prevState) => ({ + ...prevState, + modalLayersActionEditIsOpen: true, + })) + } + > + + + )} /> @@ -138,7 +179,7 @@ export default function SceneView() { isOpen={modalOpenStates.modalChooseSceneIsOpen} closeModal={() => setModalOpen("modalChooseSceneIsOpen", false)} header={ - setModalOpen("modalChooseSceneIsOpen", false)} /> @@ -155,7 +196,7 @@ export default function SceneView() { isOpen={modalOpenStates.modalCreateSceneIsOpen} closeModal={() => setModalOpen("modalCreateSceneIsOpen", false)} header={ - setModalOpen("modalCreateSceneIsOpen", false)} /> @@ -173,7 +214,7 @@ export default function SceneView() { isOpen={modalOpenStates.modalAddSceneActionIsOpen} closeModal={() => setModalOpen("modalAddSceneActionIsOpen", false)} header={ - setModalOpen("modalAddSceneActionIsOpen", false)} /> @@ -191,37 +232,33 @@ export default function SceneView() { isOpen={modalOpenStates.modalLayerSectionIsOpen} closeModal={() => setModalOpen("modalLayerSectionIsOpen", false)} header={ - setModalOpen("modalLayerSectionIsOpen", false)} /> } content={ - setModalOpen("modalLayersActionEditIsOpen", true) - } + openLayersActionEditModal={() => openLayersActionEditModal()} /> } - > - + + + setModalOpen("modalLayersActionEditIsOpen", false)} + header={ + setModalOpen("modalLayersActionEditIsOpen", false) } - header={ - - setModalOpen("modalLayersActionEditIsOpen", false) - } - /> - } - content={} /> - - + } + content={} + /> ); }