import { View, Text, StyleSheet } from 'react-native';
import React, { useState, useEffect } from 'react';
import type { ViewStyle } from 'react-native';
import LinearGradientRn from 'react-native-linear-gradient';
import type { MessageType } from 'src/hooks/useMessage/MessagesStore/Messagestypes';
import { useUnreadNotifications } from '../../context/UnreadNotificationsContext';
import { useAllNotifications } from '../../context/AllNotificationsContext';
import { FullScreenIndicator, SvgDot } from '../../components';
import { WHITE } from '../../constants/colors';
import { BOLD, SEMI_BOLD } from '../../constants/fontSize';
import { Tab, Tabs } from '../../components/Tabs';
import { Footer } from '../../components/Footer';
import { useBrand } from '../../context/CourierReactNativeProvider';
import NotificationList from './NotificationList';
const UNREAD_TAB_NAME = 'Unread';
const ALL_NOTIFICATIONS_TAB_NAME = 'All notifications';
const LinearGradient = LinearGradientRn as unknown as (_props: {
colors: string[];
children: React.ReactElement;
style: ViewStyle;
}) => JSX.Element;
const styles = StyleSheet.create({
container: {
flex: 1,
// backgroundColor: WHITE,
flexGrow: 1,
},
headerContainer: {
backgroundColor: WHITE,
},
headerStyle: {
flexDirection: 'row',
alignItems: 'center',
marginBottom: 12,
marginLeft: 40,
marginTop: 12,
},
headerTextStyle: {
fontSize: 24,
fontWeight: SEMI_BOLD,
marginRight: 8,
color: 'black',
},
overAll: {
justifyContent: 'space-between',
flexGrow: 1,
},
messagesContainer: {
flexGrow: 1,
padding: 16,
paddingBottom: 0,
},
flatListContainerStyle: {
flex: 1,
},
brandLoadingFailedStyle: {
flex: 1,
alignItems: 'center',
justifyContent: 'center',
padding: 16,
},
brandLoadingFailTextStyle: {
fontSize: 16,
fontWeight: BOLD,
textAlign: 'center',
},
tabBorder: {
borderBottomColor: 'rgba(0,0,0,0.1)',
borderBottomWidth: 1,
},
});
type PropType = {
onMessageClick?: (_m: MessageType) => void;
};
function CourierScreen({ onMessageClick }: PropType) {
const {
unreadNotificationsCount,
unreadNotifications,
fetchUnreadNotifications,
fetchMoreUnreadNotifications,
unreadNotificationsIsLoading,
} = useUnreadNotifications();
const {
allNotificationsCount,
allNotifications,
fetchAllNotifications,
fetchMoreAllCategoryNotifications,
allNotificationsIsLoading,
} = useAllNotifications();
useEffect(() => {
fetchUnreadNotifications({ prevMessages: [] });
fetchAllNotifications({ prevMessages: [] });
}, []);
const [activeTab, setActiveTab] = useState<
typeof UNREAD_TAB_NAME | typeof ALL_NOTIFICATIONS_TAB_NAME
>('Unread');
const setUnreadActive = () => {
setActiveTab('Unread');
};
const setAllNotificationsActive = () => {
setActiveTab('All notifications');
};
const {
isBrandLoading,
borderRadius,
colors: { primary },
widgetBackground,
isBrandLoadingError,
} = useBrand();
let topColor = 'rgb(39,22,55)';
let bottomColor = 'rgb(80,66,82)';
const normalizedBorderRadius = Number(borderRadius.replace('px', ''));
if (widgetBackground?.topColor) {
topColor = widgetBackground.topColor;
}
if (widgetBackground?.bottomColor) {
bottomColor = widgetBackground.bottomColor;
}
const headerContainerStyle = {
...styles.headerContainer,
borderTopLeftRadius: normalizedBorderRadius,
borderTopRightRadius: normalizedBorderRadius,
};
if (isBrandLoading) return ;
if (isBrandLoadingError)
return (
An error has occurred. The inbox could not be loaded
);
return (
Inbox
{activeTab === 'All notifications' && (
)}
{activeTab === 'Unread' && (
)}
);
}
CourierScreen.defaultProps = {
onMessageClick: undefined,
};
export default CourierScreen;