|
|
@@ -0,0 +1,184 @@
|
|
|
+/**
|
|
|
+ * 通知消息渲染项目组件
|
|
|
+ * @邠心vbe on 2023/08/17
|
|
|
+ */
|
|
|
+import React from 'react';
|
|
|
+import { Pressable, StyleSheet, View } from 'react-native';
|
|
|
+import TextView from '../../components/TextView';
|
|
|
+
|
|
|
+const IconType = ({type, style, size=32, color=colorAccent}) => {
|
|
|
+ switch (type) {
|
|
|
+ case "Applications":
|
|
|
+ return (
|
|
|
+ <MaterialIcons
|
|
|
+ name="admin-panel-settings"
|
|
|
+ size={size}
|
|
|
+ style={style}
|
|
|
+ color={color}
|
|
|
+ />
|
|
|
+ )
|
|
|
+ case "Admin":
|
|
|
+ return (
|
|
|
+ <MaterialCommunityIcons
|
|
|
+ name="message-draw"
|
|
|
+ size={size}
|
|
|
+ style={style}
|
|
|
+ color={color}
|
|
|
+ />
|
|
|
+ )
|
|
|
+ case "Charging":
|
|
|
+ return (
|
|
|
+ <MaterialIcons
|
|
|
+ name="offline-bolt"
|
|
|
+ size={size}
|
|
|
+ style={style}
|
|
|
+ color={color}
|
|
|
+ />
|
|
|
+ )
|
|
|
+ case "Wallet":
|
|
|
+ return (
|
|
|
+ <MaterialCommunityIcons
|
|
|
+ name="cash-multiple"
|
|
|
+ size={size}
|
|
|
+ style={style}
|
|
|
+ color={color}
|
|
|
+ />
|
|
|
+ )
|
|
|
+ case "Announcement":
|
|
|
+ return (
|
|
|
+ <MaterialCommunityIcons
|
|
|
+ name="message-alert"
|
|
|
+ size={size}
|
|
|
+ style={style}
|
|
|
+ color={color}
|
|
|
+ />
|
|
|
+ )
|
|
|
+ case "Review":
|
|
|
+ return (
|
|
|
+ <MaterialCommunityIcons
|
|
|
+ name="message-draw"
|
|
|
+ size={size}
|
|
|
+ style={style}
|
|
|
+ color={color}
|
|
|
+ />
|
|
|
+ )
|
|
|
+ case "Promotion":
|
|
|
+ return (
|
|
|
+ <MaterialCommunityIcons
|
|
|
+ name="bullhorn-variant"
|
|
|
+ size={size}
|
|
|
+ style={style}
|
|
|
+ color={color}
|
|
|
+ />
|
|
|
+ )
|
|
|
+ default:
|
|
|
+ return (
|
|
|
+ <MaterialCommunityIcons
|
|
|
+ name="message-alert"
|
|
|
+ size={size}
|
|
|
+ style={style}
|
|
|
+ color={color}
|
|
|
+ />
|
|
|
+ )
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+export default ItemAlert = ({item, index, separators, onPress, onLongPress}) => {
|
|
|
+ const getDotColor = () => {
|
|
|
+ if (item.readStatus) {
|
|
|
+ if (item?.notificationTitle.indexOf("Low") >= 0/* || item.notificationType == "Announcement"*/) {
|
|
|
+ return "#F09327";
|
|
|
+ } else {
|
|
|
+ return colorAccent;
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ return "#FF3B30";
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return (
|
|
|
+ <Pressable
|
|
|
+ style={styles.notyItemView}
|
|
|
+ onPress={onPress}
|
|
|
+ android_ripple={ripple}
|
|
|
+ onLongPress={onLongPress}>
|
|
|
+ {/* <IconType
|
|
|
+ style={styles.iconType}
|
|
|
+ type={item.notificationType}
|
|
|
+ color={getDotColor()}
|
|
|
+ /> */}
|
|
|
+ <View style={styles.itemContent}>
|
|
|
+ <TextView
|
|
|
+ style={styles.textTitle}
|
|
|
+ numberOfLines={1}
|
|
|
+ ellipsizeMode="tail">
|
|
|
+ {item.notificationTitle}
|
|
|
+ </TextView>
|
|
|
+ <TextView
|
|
|
+ style={styles.textDate}
|
|
|
+ numberOfLines={1}>
|
|
|
+ <MaterialCommunityIcons
|
|
|
+ name="clock-time-four-outline"
|
|
|
+ size={10}
|
|
|
+ style={styles.textDate}/>
|
|
|
+ {" " + item.createTime}
|
|
|
+ </TextView>
|
|
|
+ <TextView
|
|
|
+ style={styles.textMessage}
|
|
|
+ numberOfLines={1}>
|
|
|
+ {item.notificationText}
|
|
|
+ </TextView>
|
|
|
+ </View>
|
|
|
+ { !item.readStatus &&
|
|
|
+ <MaterialIcons
|
|
|
+ name="circle"
|
|
|
+ size={16}
|
|
|
+ color={"#ED3F3F"}/>
|
|
|
+ }
|
|
|
+ </Pressable>
|
|
|
+ )
|
|
|
+}
|
|
|
+
|
|
|
+const styles = StyleSheet.create({
|
|
|
+ notyItemView: {
|
|
|
+ padding: 16,
|
|
|
+ flexDirection: 'row'
|
|
|
+ },
|
|
|
+ unotyItemView: {
|
|
|
+ padding: 16,
|
|
|
+ flexDirection: 'row',
|
|
|
+ backgroundColor: "#F0F0F0"
|
|
|
+ },
|
|
|
+ iconType: {
|
|
|
+ marginRight: 12
|
|
|
+ },
|
|
|
+ readIcon: {
|
|
|
+ top: 2,
|
|
|
+ left: -5,
|
|
|
+ width: 7,
|
|
|
+ height: 6,
|
|
|
+ position: 'absolute'
|
|
|
+ },
|
|
|
+ itemContent: {
|
|
|
+ flex: 1
|
|
|
+ },
|
|
|
+ textTitle: {
|
|
|
+ flex: 1,
|
|
|
+ color: textPrimary,
|
|
|
+ fontSize: 14,
|
|
|
+ fontWeight: 'bold',
|
|
|
+ paddingBottom: 4
|
|
|
+ },
|
|
|
+ textDate: {
|
|
|
+ color: textSecondary,
|
|
|
+ fontSize: 10,
|
|
|
+ lineHeight: 10,
|
|
|
+ paddingBottom: 4
|
|
|
+ },
|
|
|
+ unread: {
|
|
|
+ fontWeight: 'bold'
|
|
|
+ },
|
|
|
+ textMessage: {
|
|
|
+ color: textPrimary,
|
|
|
+ fontSize: 10
|
|
|
+ }
|
|
|
+})
|