From d948f126df55441914a86986cd1cab332a9d849a Mon Sep 17 00:00:00 2001 From: mudabbir-ahmad Date: Sun, 7 Dec 2025 16:03:17 +0000 Subject: [PATCH] Basic refactoring for Users from old modules section --- src/components/screens/UserAddScreen.js | 24 +++++++ src/components/screens/UserListScreen.js | 76 ++++++++++++++++++++++ src/components/screens/UserModifyScreen.js | 28 ++++++++ 3 files changed, 128 insertions(+) create mode 100644 src/components/screens/UserAddScreen.js create mode 100644 src/components/screens/UserListScreen.js create mode 100644 src/components/screens/UserModifyScreen.js diff --git a/src/components/screens/UserAddScreen.js b/src/components/screens/UserAddScreen.js new file mode 100644 index 0000000..d5afba1 --- /dev/null +++ b/src/components/screens/UserAddScreen.js @@ -0,0 +1,24 @@ +import {StyleSheet, Text, TextInput, View} from "react-native"; +import Screen from "../layout/Screen"; +import ModuleForm from "../entity/modules/moduleForm"; + + +export const UserAddScreen = ({navigation, route}) => { +// Initialisation ------------- + const {onAdd} = route.params; +// State ---------------------- +// Handlers ------------------- + + const handleCancel = navigation.goBack; + +// View ----------------------- + return ( + + + + ); +}; + +const styles = StyleSheet.create({}); + +export default UserAddScreen; \ No newline at end of file diff --git a/src/components/screens/UserListScreen.js b/src/components/screens/UserListScreen.js new file mode 100644 index 0000000..fbd9aa7 --- /dev/null +++ b/src/components/screens/UserListScreen.js @@ -0,0 +1,76 @@ +// import {useState, useEffect} from "react"; +import {LogBox, Text} from "react-native"; +import Screen from "../layout/Screen"; +import ModuleList from "../entity/modules/ModuleList"; +import {Button, ButtonTray} from "../UI/Button"; +import Icons from "../UI/Icons"; +import useLoad from "../API/useLoad"; + + +const UserListScreen = ({navigation}) => { +// Initialisation ------------- +// let modules = initialModules; + LogBox.ignoreLogs(['Non-serializable values were found in the navigation state']); + + + const usersEndpoint = 'https://softwarehub.uk/unibase/api/users'; + +// State ---------------------- + + const [users, setUsers, isLoading, loadUsers] = useLoad(usersEndpoint); + +// Handlers ------------------- + + const handleDelete = (user) => + setUsers(users.filter((item) => item.UserID !== module.UserID)); + + + const onDelete = (user) => { + handleDelete(user); + navigation.goBack(); + } + + const handleAdd = (user) => setUsers([...users, user]); + + const handleModify = (updatedUser) => setUsers( + users.map((user) => (module.UserID === updatedUser.UserID) ? updatedUser : user), + ); + + const onAdd = (user) => { + handleAdd(user); + navigation.goBack(); + }; + + const onModify = (user) => { + handleModify(user); + navigation.replace('UserViewScreen', {user, onDelete, onModify}); + }; + + const goToViewScreen = (module) => + navigation.navigate('UserViewScreen', {user, onDelete, onModify}); + + const goToAddScreen = () => + navigation.navigate('UserAddScreen', {onAdd}); + + +// View ----------------------- + + return ( + + {/**/} + +