diff --git a/src/app/assets/avatar/Avatar_1.svg b/src/app/assets/avatar/Avatar_1.svg
new file mode 100644
index 0000000..4a643a6
--- /dev/null
+++ b/src/app/assets/avatar/Avatar_1.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/app/assets/avatar/Avatar_2.svg b/src/app/assets/avatar/Avatar_2.svg
new file mode 100644
index 0000000..7d60515
--- /dev/null
+++ b/src/app/assets/avatar/Avatar_2.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/app/assets/avatar/Avatar_3.svg b/src/app/assets/avatar/Avatar_3.svg
new file mode 100644
index 0000000..db88544
--- /dev/null
+++ b/src/app/assets/avatar/Avatar_3.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/app/assets/avatar/Avatar_4.svg b/src/app/assets/avatar/Avatar_4.svg
new file mode 100644
index 0000000..de630c6
--- /dev/null
+++ b/src/app/assets/avatar/Avatar_4.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/app/assets/avatar/Avatar_5.svg b/src/app/assets/avatar/Avatar_5.svg
new file mode 100644
index 0000000..1b6ec53
--- /dev/null
+++ b/src/app/assets/avatar/Avatar_5.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/app/config/assets.js b/src/app/config/assets.js
index 69676c0..90894a7 100644
--- a/src/app/config/assets.js
+++ b/src/app/config/assets.js
@@ -1,6 +1,6 @@
import Pluviometer from "../assets/pluviometer/pluviometer-logo.svg";
-import OfficialPluviometer from "../assets/pluviometer/PluviometroOficial.svg"
-import SusceptibilityAreas from "../assets/dataMenu/suceptibilitiesAreas.svg"
+import OfficialPluviometer from "../assets/pluviometer/PluviometroOficial.svg";
+import SusceptibilityAreas from "../assets/dataMenu/suceptibilitiesAreas.svg";
import RainIcon from "../assets/rain/rain-icon.svg";
import RiverIcon from "../assets/river/river-logo.svg";
import FloodZones from "../assets/floodZonesAssets/floodZones-logo.svg";
@@ -38,6 +38,12 @@ import FloodNotPassable from "../assets/floodZonesAssets/not_passable.svg";
import PinPluviometerOfficial from "../assets/pluviometer/PinPluviometerOfficial";
import AboutScreenLogos from "../assets/logos/AboutScreenLogos";
+import Avatar0 from "../assets/avatar/Avatar_1.svg";
+import Avatar1 from "../assets/avatar/Avatar_2.svg";
+import Avatar2 from "../assets/avatar/Avatar_3.svg";
+import Avatar3 from "../assets/avatar/Avatar_4.svg";
+import Avatar4 from "../assets/avatar/Avatar_5.svg";
+
export default {
floodZones: {
FloodZonesIcon: FloodZones,
@@ -93,6 +99,7 @@ export default {
Weather_4_cloudy,
Weather_5_clean,
],
+ avatar: [Avatar0, Avatar1, Avatar2, Avatar3, Avatar4],
pluviometer: require("../assets/pluviometer/diario_pluviometrico.png"),
pluviometer_pin: PinPluviometroArt,
officialPluviometer: require("../assets/pluviometer/pluviometroOficial.png"),
diff --git a/src/app/config/utils.js b/src/app/config/utils.js
new file mode 100644
index 0000000..f49d02a
--- /dev/null
+++ b/src/app/config/utils.js
@@ -0,0 +1,18 @@
+// https://stackoverflow.com/questions/7616461/generate-a-hash-from-string-in-javascript
+function hashPhoneNumber(phone) {
+ if (!phone) return undefined
+
+ var hash = 0,
+ i,
+ chr;
+ if (phone.length === 0) return hash;
+
+ for (i = 0; i < phone.length; i++) {
+ chr = phone.charCodeAt(i);
+ hash = (hash << 5) - hash + chr;
+ hash |= 0; // Convert to 32bit integer
+ }
+ return Math.abs(hash);
+}
+
+export default { hashPhoneNumber };
diff --git a/src/app/screens/AccountScreen.js b/src/app/screens/AccountScreen.js
index e6cfa66..3078d52 100644
--- a/src/app/screens/AccountScreen.js
+++ b/src/app/screens/AccountScreen.js
@@ -1,22 +1,23 @@
import React, { useContext, useState } from "react";
-import { Text, Image, View, StyleSheet, ScrollView } from "react-native";
+import { Text, View, StyleSheet, ScrollView } from "react-native";
import Screen from "../components/Screen";
import { AuthContext } from "../auth/context";
import authStorage from "../auth/storage";
import { TouchableOpacity } from "react-native-gesture-handler";
import assets from "../config/assets";
-import { MaterialCommunityIcons, FontAwesome } from "@expo/vector-icons";
+import { MaterialCommunityIcons } from "@expo/vector-icons";
import colors from "../config/colors";
import ConfirmationModal from "../components/ConfirmationModal";
+import utils from "../config/utils";
function UserHeader({ name, fone }) {
+ const index = utils.hashPhoneNumber(fone) % assets.avatar.length || 2
+ const Avatar = assets.avatar[index];
+
return (
-
-
-
+
+
+
{name}
{fone}
@@ -73,6 +74,7 @@ function ProfileItensList({ icon, IconProvider, title, onPress }) {
function AccountScreen(props) {
const { user, setUser } = useContext(AuthContext);
+ const isRegistered = user?.username != null;
const [showLog, setShowLog] = useState(false);
console.log(user);
@@ -90,7 +92,9 @@ function AccountScreen(props) {
};
const showActivation = () => {
- if (user.role === "ROLE_CLIENT")
+ if (!isRegistered)
+ return false
+ else if (user.role === "ROLE_CLIENT")
return !user.active
else
return true
@@ -99,13 +103,22 @@ function AccountScreen(props) {
const profileItems = [
{
icon: "account",
- show: true,
+ show: isRegistered,
IconProvider: MaterialCommunityIcons,
title: "Cadastrar pluviômetro",
onPress: () => {
props.navigation.navigate("PluviometerRegister");
},
},
+ {
+ icon: "account",
+ show: !isRegistered,
+ IconProvider: MaterialCommunityIcons,
+ title: "Cadastra-se",
+ onPress: () => {
+ setUser(false);
+ },
+ },
{
icon: "bank",
show: showActivation(),
@@ -126,7 +139,7 @@ function AccountScreen(props) {
},
{
icon: "logout",
- show: true,
+ show: isRegistered,
IconProvider: MaterialCommunityIcons,
title: "sair",
onPress: () => {
@@ -151,7 +164,7 @@ function AccountScreen(props) {
padding: 16,
}}
>
-
+
{profileItems.map(