diff --git a/src/components/ActivityLoader.js b/src/components/ActivityLoader.js new file mode 100644 index 0000000..f8a283c --- /dev/null +++ b/src/components/ActivityLoader.js @@ -0,0 +1,30 @@ +import { View } from "react-native"; + +import { LoaderIndicator } from "../providers/LoadingProvider"; + +export default ({ + message, + defaultMessage = "Chargement...", + containerStyle = {}, + indicatorProps = {}, + messageStyle = {}, +}) => { + return ( + + + + ); +}; diff --git a/src/providers/LoadingProvider.js b/src/providers/LoadingProvider.js index de98474..6fc11a2 100644 --- a/src/providers/LoadingProvider.js +++ b/src/providers/LoadingProvider.js @@ -9,8 +9,6 @@ export default ({ children }) => { const [loadingMessage] = useGlobal("_loadingMessage"); const { isDesktopWeb = false, isMobileWeb = false } = useLayoutType(); - const isWeb = isDesktopWeb || isMobileWeb; - return ( <> {children} @@ -36,29 +34,47 @@ export default ({ children }) => { : { position: "absolute" }, ]} > - + )} ); }; -export const LoaderIndicator = ({ isWeb = false, message = null }) => { +export const LoaderIndicator = ({ + message, + defaultMessage = "Chargement...", + messageStyle = null, + indicatorProps = {}, +}) => { + const { + size = "large", + color = Palette.primary, + ...restIndicatorProps + } = indicatorProps; + + const resolvedMessage = + message === undefined ? defaultMessage : message; + const shouldShowMessage = + resolvedMessage !== null && + resolvedMessage !== undefined && + String(resolvedMessage).length > 0; + return ( - - {isWeb && message ? ( + + {shouldShowMessage ? ( - {message} + {resolvedMessage} ) : null} diff --git a/src/screens/Home/Home.js b/src/screens/Home/Home.js index c54b61f..ad18581 100644 --- a/src/screens/Home/Home.js +++ b/src/screens/Home/Home.js @@ -85,6 +85,7 @@ const Home = () => { const [menuAnchor, setMenuAnchor] = useState(null); const [menuProject, setMenuProject] = useState(null); const menuAnchorRef = useRef(null); + const testLoaderTimeoutRef = useRef(null); useEffect(() => { setActiveStageIndex((prev) => { @@ -218,6 +219,15 @@ const Home = () => { stageRoute, ]); + useEffect(() => { + return () => { + if (testLoaderTimeoutRef.current) { + clearTimeout(testLoaderTimeoutRef.current); + testLoaderTimeoutRef.current = null; + } + }; + }, []); + const songwriterAction = useMemo( () => getStageAction("songwriter", null), [] @@ -304,6 +314,7 @@ const Home = () => { onPress={handleStageAction} disabled={continueDisabled} /> + {/* { condition: !!projectId, }); + console.log("project is : ", project); + const { data: owner } = useDataFromRef({ ref: project?.userId ? usersRef.doc(project.userId) : null, simpleRef: true,