2025-08-25 14:35:59 +00:00
|
|
|
import React, { useState, useRef, useEffect } from "react";
|
|
|
|
|
import styled from "styled-components";
|
|
|
|
|
import { useCallFeed } from "@/hooks";
|
|
|
|
|
import { router } from "expo-router";
|
2024-10-05 23:10:41 +00:00
|
|
|
import {
|
2025-08-25 14:35:59 +00:00
|
|
|
Platform,
|
|
|
|
|
Linking,
|
|
|
|
|
View,
|
|
|
|
|
ScrollView,
|
|
|
|
|
Text,
|
|
|
|
|
TouchableOpacity,
|
|
|
|
|
} from "react-native";
|
|
|
|
|
import { StatusBar } from "expo-status-bar";
|
|
|
|
|
import { SafeAreaView } from "react-native-safe-area-context";
|
|
|
|
|
import { PageHeader, PageFooter } from "@/components/generalHelpers.jsx";
|
|
|
|
|
import { Ionicons } from "@expo/vector-icons";
|
2025-04-19 06:36:25 +00:00
|
|
|
import { AccidentAndEmergency } from "healthicons-react-native/dist/outline";
|
2025-08-25 14:35:59 +00:00
|
|
|
import ActionSheet from "react-native-actions-sheet";
|
2024-10-05 23:10:41 +00:00
|
|
|
|
|
|
|
|
const DepartmentActionSheet = styled(ActionSheet)``;
|
|
|
|
|
|
2025-08-12 20:36:26 +00:00
|
|
|
function toBase64Unicode(str) {
|
2025-08-25 14:35:59 +00:00
|
|
|
return btoa(
|
|
|
|
|
new TextEncoder()
|
|
|
|
|
.encode(str)
|
|
|
|
|
.reduce((data, byte) => data + String.fromCharCode(byte), "")
|
|
|
|
|
);
|
2025-08-12 20:36:26 +00:00
|
|
|
}
|
|
|
|
|
|
2024-10-05 23:10:41 +00:00
|
|
|
export default function Incidents() {
|
2025-04-21 15:41:08 +00:00
|
|
|
const actionSheetRef = useRef(null);
|
|
|
|
|
const callFeed = useCallFeed();
|
2024-10-05 23:10:41 +00:00
|
|
|
|
2025-04-21 15:41:08 +00:00
|
|
|
const {
|
2025-08-10 14:14:56 +00:00
|
|
|
departments,
|
|
|
|
|
callIconMap,
|
|
|
|
|
callDetails,
|
|
|
|
|
callColorSelector,
|
|
|
|
|
formatCallTimePast,
|
2025-08-25 14:35:59 +00:00
|
|
|
formatCallDateTime,
|
2025-04-21 15:41:08 +00:00
|
|
|
} = callFeed;
|
2024-10-05 23:10:41 +00:00
|
|
|
|
2025-08-25 14:35:59 +00:00
|
|
|
const sortedAndFilteredCalls =
|
|
|
|
|
callDetails
|
|
|
|
|
.sort((a, b) => new Date(b.timestamp) - new Date(a.timestamp))
|
|
|
|
|
.filter((item, index, self) => {
|
|
|
|
|
return (
|
|
|
|
|
index ===
|
|
|
|
|
self.findIndex((i) => {
|
|
|
|
|
return (
|
|
|
|
|
`${i?.incident?.incID}${i?.response?.serviceName}` ===
|
|
|
|
|
`${item?.incident?.incID}${item?.response?.serviceName}`
|
|
|
|
|
);
|
|
|
|
|
})
|
|
|
|
|
);
|
|
|
|
|
})
|
|
|
|
|
?.map((item) => {
|
|
|
|
|
return { ...item, timestamp: item?.incident?.incDate };
|
|
|
|
|
}) || [];
|
2025-04-19 06:36:25 +00:00
|
|
|
|
2025-04-21 15:41:08 +00:00
|
|
|
const {
|
2025-08-10 14:14:56 +00:00
|
|
|
departmentTypeMap,
|
|
|
|
|
accountDetails,
|
|
|
|
|
deptList,
|
|
|
|
|
setDeptList,
|
|
|
|
|
selectedDepartment,
|
|
|
|
|
setSelectedDepartment,
|
|
|
|
|
updateSelectedDepartment,
|
|
|
|
|
selectedDepartmentColorPicker,
|
2025-04-21 15:41:08 +00:00
|
|
|
} = departments;
|
2024-10-05 23:10:41 +00:00
|
|
|
|
2025-04-21 15:41:08 +00:00
|
|
|
return (
|
|
|
|
|
<React.Fragment>
|
2025-08-25 14:35:59 +00:00
|
|
|
<PageHeader
|
|
|
|
|
centerHeader={
|
|
|
|
|
<View style={{ flex: 1, alignItems: "center" }}>
|
|
|
|
|
<TouchableOpacity
|
2025-08-10 14:14:56 +00:00
|
|
|
style={{
|
2025-08-25 14:35:59 +00:00
|
|
|
borderRadius: 6,
|
|
|
|
|
elevation: 3,
|
|
|
|
|
backgroundColor: "#fff",
|
|
|
|
|
shadowOffset: { width: 0, height: 0 },
|
|
|
|
|
shadowColor: "#333",
|
|
|
|
|
shadowOpacity: 0.8,
|
|
|
|
|
shadowRadius: 2,
|
|
|
|
|
paddingHorizontal: 10,
|
|
|
|
|
paddingVertical: 2,
|
|
|
|
|
}}
|
|
|
|
|
onPress={() => {
|
|
|
|
|
actionSheetRef.current?.show();
|
2025-04-21 15:41:08 +00:00
|
|
|
}}
|
|
|
|
|
>
|
2025-08-25 14:35:59 +00:00
|
|
|
<Text
|
|
|
|
|
style={{
|
|
|
|
|
color: selectedDepartmentColorPicker(
|
|
|
|
|
selectedDepartment?.type
|
|
|
|
|
),
|
|
|
|
|
fontWeight: 600,
|
|
|
|
|
fontSize: 14,
|
|
|
|
|
}}
|
|
|
|
|
>
|
|
|
|
|
{selectedDepartment?.deptAbv}
|
|
|
|
|
</Text>
|
|
|
|
|
</TouchableOpacity>
|
|
|
|
|
</View>
|
|
|
|
|
}
|
2025-08-12 20:36:26 +00:00
|
|
|
/>
|
2025-04-21 15:41:08 +00:00
|
|
|
<ScrollView>
|
2025-08-10 14:14:56 +00:00
|
|
|
<StatusBar style="dark" />
|
|
|
|
|
<SafeAreaView />
|
2025-08-25 14:35:59 +00:00
|
|
|
<View style={{ flexDirection: "column", padding: 20 }}>
|
2025-08-10 14:14:56 +00:00
|
|
|
{sortedAndFilteredCalls?.length ? (
|
|
|
|
|
sortedAndFilteredCalls?.map((callItem, index) => {
|
2025-08-11 19:34:16 +00:00
|
|
|
const { incident, address, response, timestamp } = callItem;
|
2025-04-21 15:41:08 +00:00
|
|
|
const {
|
2025-08-11 19:34:16 +00:00
|
|
|
serviceNumber,
|
|
|
|
|
incDate,
|
|
|
|
|
incNature,
|
|
|
|
|
incNatureCode,
|
|
|
|
|
incNatureCodeDesc,
|
|
|
|
|
status,
|
|
|
|
|
} = incident;
|
2025-04-21 15:41:08 +00:00
|
|
|
const {
|
2025-08-11 19:34:16 +00:00
|
|
|
streetAddress,
|
|
|
|
|
addressApartment,
|
|
|
|
|
town,
|
|
|
|
|
state,
|
|
|
|
|
locationName,
|
|
|
|
|
} = address;
|
2025-08-25 14:35:59 +00:00
|
|
|
const { serviceName } = response;
|
|
|
|
|
const SelectedIcon =
|
|
|
|
|
callIconMap[incNature] || AccidentAndEmergency;
|
2025-04-21 15:41:08 +00:00
|
|
|
return (
|
2025-08-10 14:14:56 +00:00
|
|
|
<TouchableOpacity
|
|
|
|
|
key={`callDetails - ${timestamp}`}
|
2025-08-11 19:34:16 +00:00
|
|
|
style={{ paddingBottom: 15 }}
|
2025-04-21 15:41:08 +00:00
|
|
|
onPress={() => {
|
|
|
|
|
router.push({
|
2025-08-25 14:35:59 +00:00
|
|
|
pathname: "/call",
|
2025-04-21 15:41:08 +00:00
|
|
|
params: {
|
2025-08-25 14:35:59 +00:00
|
|
|
callDetails: toBase64Unicode(JSON.stringify(callItem)),
|
|
|
|
|
},
|
|
|
|
|
});
|
2025-04-21 15:41:08 +00:00
|
|
|
}}
|
2024-10-05 23:10:41 +00:00
|
|
|
>
|
2025-08-10 14:14:56 +00:00
|
|
|
<View
|
2025-04-21 15:41:08 +00:00
|
|
|
style={{
|
|
|
|
|
borderRadius: 12,
|
|
|
|
|
elevation: 3,
|
2025-08-25 14:35:59 +00:00
|
|
|
backgroundColor: "#fff",
|
2025-04-21 15:41:08 +00:00
|
|
|
shadowOffset: { width: 0, height: 0 },
|
|
|
|
|
shadowColor: callColorSelector(
|
2025-08-11 19:34:16 +00:00
|
|
|
incNatureCodeDesc,
|
|
|
|
|
incNature,
|
|
|
|
|
status
|
2025-04-21 15:41:08 +00:00
|
|
|
),
|
|
|
|
|
shadowOpacity: 1,
|
|
|
|
|
shadowRadius: 5,
|
|
|
|
|
padding: 10,
|
|
|
|
|
}}
|
|
|
|
|
>
|
2025-08-25 14:35:59 +00:00
|
|
|
<View style={{ flexDirection: "column" }}>
|
|
|
|
|
<View
|
|
|
|
|
key="callDateAndTime"
|
2025-08-10 14:14:56 +00:00
|
|
|
style={{
|
2025-04-21 15:41:08 +00:00
|
|
|
paddingBottom: 6,
|
2025-08-25 14:35:59 +00:00
|
|
|
flexDirection: "row",
|
|
|
|
|
justifyContent: "space-between",
|
2024-10-05 23:10:41 +00:00
|
|
|
}}
|
2025-04-21 15:41:08 +00:00
|
|
|
>
|
2025-08-25 14:35:59 +00:00
|
|
|
<Text style={{ fontSize: 12 }}>
|
|
|
|
|
{formatCallDateTime(incDate)}
|
|
|
|
|
</Text>
|
|
|
|
|
<View
|
|
|
|
|
style={{ flexDirection: "row", alignItems: "center" }}
|
|
|
|
|
>
|
|
|
|
|
<Text style={{ fontSize: 12 }}>
|
|
|
|
|
{formatCallTimePast(incDate)}
|
|
|
|
|
</Text>
|
|
|
|
|
{status === "CLOSED" ? (
|
2025-04-21 15:41:08 +00:00
|
|
|
<Ionicons
|
|
|
|
|
name="lock-closed-outline"
|
2025-08-25 14:35:59 +00:00
|
|
|
color="red"
|
2025-04-21 15:41:08 +00:00
|
|
|
style={{
|
2025-08-25 14:35:59 +00:00
|
|
|
shadowColor: "black",
|
2025-04-21 15:41:08 +00:00
|
|
|
shadowOffset: 0,
|
2025-08-10 14:14:56 +00:00
|
|
|
shadowOpacity: 1,
|
2025-08-25 14:35:59 +00:00
|
|
|
shadowRadius: 10,
|
2025-04-21 15:41:08 +00:00
|
|
|
}}
|
|
|
|
|
/>
|
|
|
|
|
) : null}
|
|
|
|
|
</View>
|
|
|
|
|
</View>
|
2025-08-25 14:35:59 +00:00
|
|
|
<View
|
|
|
|
|
style={{ flexDirection: "row", alignItems: "center" }}
|
|
|
|
|
>
|
2025-08-10 14:14:56 +00:00
|
|
|
<SelectedIcon
|
2025-04-21 15:41:08 +00:00
|
|
|
color={callColorSelector(
|
2025-08-11 19:34:16 +00:00
|
|
|
incNatureCodeDesc,
|
|
|
|
|
incNature,
|
|
|
|
|
status
|
2025-08-10 14:14:56 +00:00
|
|
|
)}
|
|
|
|
|
opacity={0.3}
|
|
|
|
|
width={56}
|
2025-04-21 15:41:08 +00:00
|
|
|
height={56}
|
|
|
|
|
/>
|
2025-08-25 14:35:59 +00:00
|
|
|
<View
|
|
|
|
|
style={{
|
|
|
|
|
flex: 1,
|
|
|
|
|
flexDirection: "column",
|
|
|
|
|
alignItems: "flex-start",
|
|
|
|
|
paddingHorizontal: 2,
|
|
|
|
|
maxWidth: "80%",
|
|
|
|
|
}}
|
|
|
|
|
>
|
2025-08-11 19:34:16 +00:00
|
|
|
{locationName ? (
|
2025-08-10 14:14:56 +00:00
|
|
|
<Text
|
|
|
|
|
style={{
|
2025-08-25 14:35:59 +00:00
|
|
|
color: "black",
|
2025-08-10 14:14:56 +00:00
|
|
|
fontWeight: 600,
|
2025-08-25 14:35:59 +00:00
|
|
|
fontSize: 16,
|
2025-08-10 14:14:56 +00:00
|
|
|
}}
|
|
|
|
|
>
|
2025-08-11 19:34:16 +00:00
|
|
|
{`${locationName}`}
|
2025-08-10 14:14:56 +00:00
|
|
|
</Text>
|
2025-04-21 15:41:08 +00:00
|
|
|
) : (
|
2025-08-25 14:35:59 +00:00
|
|
|
<View style={{ flexDirection: "row" }}>
|
2025-08-10 14:14:56 +00:00
|
|
|
<Text
|
2025-08-25 14:35:59 +00:00
|
|
|
style={[
|
|
|
|
|
{
|
|
|
|
|
color: "black",
|
|
|
|
|
fontSize: 12,
|
|
|
|
|
fontWeight: 600,
|
|
|
|
|
},
|
|
|
|
|
]}
|
2025-04-21 15:41:08 +00:00
|
|
|
>
|
2025-08-25 14:35:59 +00:00
|
|
|
{`${streetAddress?.split(",")[0]}`}
|
2025-04-21 15:41:08 +00:00
|
|
|
</Text>
|
2025-08-11 19:34:16 +00:00
|
|
|
{addressApartment ? (
|
2025-08-10 14:14:56 +00:00
|
|
|
<Text
|
2025-08-25 14:35:59 +00:00
|
|
|
style={[
|
|
|
|
|
{
|
|
|
|
|
color: "black",
|
|
|
|
|
fontSize: 12,
|
|
|
|
|
fontWeight: 600,
|
|
|
|
|
},
|
|
|
|
|
]}
|
2025-04-21 15:41:08 +00:00
|
|
|
>
|
2025-08-11 19:34:16 +00:00
|
|
|
{` - ${addressApartment}`}
|
2025-04-21 15:41:08 +00:00
|
|
|
</Text>
|
2025-08-10 14:14:56 +00:00
|
|
|
) : null}
|
|
|
|
|
<Text
|
2025-08-25 14:35:59 +00:00
|
|
|
style={[
|
|
|
|
|
{
|
|
|
|
|
color: "black",
|
|
|
|
|
fontSize: 12,
|
|
|
|
|
fontWeight: 600,
|
|
|
|
|
},
|
|
|
|
|
]}
|
2025-04-21 15:41:08 +00:00
|
|
|
>
|
2025-08-11 19:34:16 +00:00
|
|
|
{` ${town}, ${state}`}
|
2025-04-21 15:41:08 +00:00
|
|
|
</Text>
|
|
|
|
|
</View>
|
|
|
|
|
)}
|
2025-08-10 14:14:56 +00:00
|
|
|
<Text
|
|
|
|
|
style={{
|
2025-08-25 14:35:59 +00:00
|
|
|
color: "black",
|
2025-08-10 14:14:56 +00:00
|
|
|
fontWeight: 600,
|
2025-08-25 14:35:59 +00:00
|
|
|
fontSize: 16,
|
2024-10-05 23:10:41 +00:00
|
|
|
}}
|
2025-04-21 15:41:08 +00:00
|
|
|
>
|
2025-08-11 19:34:16 +00:00
|
|
|
{`${incNature}`}
|
2025-04-21 15:41:08 +00:00
|
|
|
</Text>
|
2025-08-25 14:35:59 +00:00
|
|
|
<View
|
|
|
|
|
style={{
|
|
|
|
|
flexDirection: "row",
|
|
|
|
|
justifyContent: "space-between",
|
|
|
|
|
}}
|
|
|
|
|
>
|
2025-08-10 14:14:56 +00:00
|
|
|
<Text
|
|
|
|
|
style={{
|
2025-08-25 14:35:59 +00:00
|
|
|
color: "black",
|
2025-08-10 14:14:56 +00:00
|
|
|
fontSize: 12,
|
2025-04-21 15:41:08 +00:00
|
|
|
textShadowColor: callColorSelector(
|
2025-08-11 19:34:16 +00:00
|
|
|
incNatureCode,
|
|
|
|
|
incNature,
|
|
|
|
|
status
|
2025-08-10 14:14:56 +00:00
|
|
|
),
|
2025-08-25 14:35:59 +00:00
|
|
|
textShadowRadius: 1,
|
2025-04-21 15:41:08 +00:00
|
|
|
}}
|
|
|
|
|
>
|
2025-08-11 19:34:16 +00:00
|
|
|
{`${incNatureCodeDesc}`}
|
2025-04-21 15:41:08 +00:00
|
|
|
</Text>
|
|
|
|
|
</View>
|
|
|
|
|
</View>
|
|
|
|
|
<View style={{ padding: 0 }}>
|
2025-08-10 14:14:56 +00:00
|
|
|
<View>
|
|
|
|
|
<Ionicons name="chevron-forward-outline" />
|
|
|
|
|
</View>
|
2025-04-21 15:41:08 +00:00
|
|
|
</View>
|
|
|
|
|
</View>
|
2025-08-25 14:35:59 +00:00
|
|
|
<View
|
|
|
|
|
style={{
|
|
|
|
|
paddingTop: 5,
|
|
|
|
|
flexDirection: "row",
|
|
|
|
|
justifyContent: "space-between",
|
|
|
|
|
}}
|
|
|
|
|
>
|
2025-04-21 15:41:08 +00:00
|
|
|
<Text
|
2025-08-10 14:14:56 +00:00
|
|
|
style={{
|
2025-04-21 15:41:08 +00:00
|
|
|
fontSize: 12,
|
|
|
|
|
}}
|
2024-10-05 23:10:41 +00:00
|
|
|
>
|
2025-08-11 19:34:16 +00:00
|
|
|
Service: {serviceName}
|
2024-10-05 23:10:41 +00:00
|
|
|
</Text>
|
2025-04-21 15:41:08 +00:00
|
|
|
<Text
|
|
|
|
|
style={{
|
|
|
|
|
fontSize: 12,
|
2025-08-25 14:35:59 +00:00
|
|
|
textAlign: "right",
|
2025-04-21 15:41:08 +00:00
|
|
|
}}
|
|
|
|
|
>
|
2025-08-11 19:34:16 +00:00
|
|
|
{`Incident #: ${serviceNumber}`}
|
2025-04-21 15:41:08 +00:00
|
|
|
</Text>
|
|
|
|
|
</View>
|
|
|
|
|
</View>
|
|
|
|
|
</View>
|
|
|
|
|
</TouchableOpacity>
|
2025-08-25 14:35:59 +00:00
|
|
|
);
|
|
|
|
|
})
|
|
|
|
|
) : (
|
2025-08-10 14:14:56 +00:00
|
|
|
<Text>There are no Calls</Text>
|
|
|
|
|
)}
|
2025-04-21 15:41:08 +00:00
|
|
|
</View>
|
2025-08-10 14:14:56 +00:00
|
|
|
</ScrollView>
|
|
|
|
|
<PageFooter>
|
|
|
|
|
<View
|
|
|
|
|
style={{
|
2025-08-25 14:35:59 +00:00
|
|
|
flexDirection: "column",
|
2025-08-10 14:14:56 +00:00
|
|
|
height: 100,
|
2025-08-25 14:35:59 +00:00
|
|
|
alignItems: "center",
|
|
|
|
|
justifyContent: "flex-start",
|
|
|
|
|
paddingTop: 7,
|
2025-08-10 14:14:56 +00:00
|
|
|
}}
|
2025-04-21 15:41:08 +00:00
|
|
|
/>
|
2025-08-10 14:14:56 +00:00
|
|
|
</PageFooter>
|
|
|
|
|
<DepartmentActionSheet
|
2025-04-21 15:41:08 +00:00
|
|
|
ref={actionSheetRef}
|
|
|
|
|
gestureEnabled
|
|
|
|
|
containerStyle={{
|
2025-08-10 14:14:56 +00:00
|
|
|
height: "50%",
|
|
|
|
|
width: "100%",
|
2025-08-25 14:35:59 +00:00
|
|
|
backgroundColor: "#ECEDEE",
|
2025-04-21 15:41:08 +00:00
|
|
|
}}
|
2025-08-10 14:14:56 +00:00
|
|
|
>
|
2025-08-25 14:35:59 +00:00
|
|
|
<View style={{ flexDirection: "column", padding: 20 }}>
|
2025-08-10 14:14:56 +00:00
|
|
|
{deptList?.map((item) => {
|
|
|
|
|
return (
|
|
|
|
|
<View style={{ padding: 2 }} key={item?.deptId}>
|
|
|
|
|
<TouchableOpacity
|
|
|
|
|
style={{
|
|
|
|
|
borderRadius: 6,
|
|
|
|
|
elevation: 3,
|
2025-08-25 14:35:59 +00:00
|
|
|
backgroundColor: item?.selected ? "grey" : "#fff",
|
2025-08-10 14:14:56 +00:00
|
|
|
shadowOffset: { width: 1, height: 1 },
|
2025-08-25 14:35:59 +00:00
|
|
|
shadowColor: "#333",
|
2025-08-10 14:14:56 +00:00
|
|
|
shadowOpacity: 0.3,
|
|
|
|
|
shadowRadius: 2,
|
|
|
|
|
marginHorizontal: 20,
|
|
|
|
|
marginVertical: 6,
|
2025-08-25 14:35:59 +00:00
|
|
|
padding: 10,
|
2025-08-10 14:14:56 +00:00
|
|
|
}}
|
|
|
|
|
onPress={() => {
|
|
|
|
|
actionSheetRef.current?.hide();
|
|
|
|
|
return updateSelectedDepartment(
|
|
|
|
|
selectedDepartment?.deptId,
|
|
|
|
|
item?.deptId
|
2025-08-25 14:35:59 +00:00
|
|
|
);
|
2025-08-10 14:14:56 +00:00
|
|
|
}}
|
|
|
|
|
>
|
2025-08-25 14:35:59 +00:00
|
|
|
<View
|
|
|
|
|
style={{
|
|
|
|
|
flexDirection: "row",
|
|
|
|
|
justifyContent: "space-between",
|
|
|
|
|
}}
|
|
|
|
|
>
|
2025-08-10 14:14:56 +00:00
|
|
|
<Text
|
|
|
|
|
style={{
|
2025-08-25 14:35:59 +00:00
|
|
|
color: selectedDepartmentColorPicker(item?.type),
|
2025-08-10 14:14:56 +00:00
|
|
|
fontWeight: 600,
|
2025-08-25 14:35:59 +00:00
|
|
|
fontSize: 16,
|
2025-08-10 14:14:56 +00:00
|
|
|
}}
|
|
|
|
|
>
|
|
|
|
|
{item?.dept}
|
|
|
|
|
</Text>
|
2025-08-25 14:35:59 +00:00
|
|
|
{item?.primary ? (
|
|
|
|
|
<Ionicons
|
|
|
|
|
name="star"
|
|
|
|
|
size={16}
|
|
|
|
|
color="yellow"
|
|
|
|
|
style={{
|
|
|
|
|
paddingLeft: 20,
|
|
|
|
|
shadowColor: "#333",
|
|
|
|
|
shadowOffset: 1,
|
|
|
|
|
shadowOpacity: 1,
|
|
|
|
|
shadowRadius: 6,
|
|
|
|
|
}}
|
|
|
|
|
/>
|
|
|
|
|
) : null}
|
2025-08-10 14:14:56 +00:00
|
|
|
</View>
|
2025-08-25 14:35:59 +00:00
|
|
|
<Text>{`${item?.deptAbv} - ${
|
|
|
|
|
departmentTypeMap[item?.type]
|
|
|
|
|
}`}</Text>
|
2025-08-10 14:14:56 +00:00
|
|
|
</TouchableOpacity>
|
|
|
|
|
</View>
|
|
|
|
|
);
|
|
|
|
|
})}
|
2025-04-21 15:41:08 +00:00
|
|
|
</View>
|
2025-08-10 14:14:56 +00:00
|
|
|
</DepartmentActionSheet>
|
2025-04-21 15:41:08 +00:00
|
|
|
</React.Fragment>
|
2025-08-25 14:35:59 +00:00
|
|
|
);
|
|
|
|
|
}
|