Skip to content

Commit ca92f3b

Browse files
committed
Emojis foram adicionados
1 parent 33e299f commit ca92f3b

File tree

7 files changed

+93
-39
lines changed

7 files changed

+93
-39
lines changed

components/drawer/CustomDrawerContent.tsx

+5-5
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ export default function CustomDrawerContent(props: DrawerNavigationProps) {
1515
<Container>
1616
<TopContainer onPress={() => props.navigation.navigate("Perfil", {id: meusDados.id, navigation: props.navigation, apelido: meusDados.apelido})}>
1717
<ImageAvatar source={avatarMasculino}/>
18-
{(meusDados.apelido !== "")? <TextAvatar>@{meusDados.apelido}</TextAvatar>:
18+
{(meusDados.apelido !== "")? <TextAvatar>@{meusDados.apelido} {meusDados.emoji}</TextAvatar>:
1919
<IntroducaoContainer>
2020
<NavText>Friend Zone</NavText>
2121
<NavTextDescricao>Chat e desabafo</NavTextDescricao>
@@ -87,15 +87,15 @@ const TopContainer = styled.TouchableOpacity`
8787
`
8888

8989
const ImageAvatar = styled.Image`
90-
width: 100px;
91-
height: 100px;
92-
border-radius: 50px;
90+
width: 80px;
91+
height: 80px;
92+
border-radius: 40px;
9393
margin-left: 10px;
9494
`
9595

9696
const TextAvatar = styled.Text`
9797
color: white;
98-
font-size: 19px;
98+
font-size: 18px;
9999
font-weight: 500;
100100
`
101101

components/drawer/Modals.tsx

+27-26
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,18 @@
1-
import { Dispatch, SetStateAction, useState } from "react"
1+
import { Dispatch, SetStateAction, useCallback, useContext, useState } from "react"
22
import { Dimensions, Modal } from "react-native"
33
import { FlatList } from "react-native-gesture-handler"
44
import styled from "styled-components/native"
5+
import { ContextProvider, Provider } from "../../utils/Provider"
6+
import { alterarEmoji, emojis } from "./Service"
57

68
interface ModalDrawerProps {
79
aberto: boolean,
810
setAberto: Dispatch<SetStateAction<boolean>>
911
}
10-
export const ModalDrawer = (props: ModalDrawerProps) => {
11-
const [indexSelecionado, setIndexSelecionado] = useState<number>(-1);
12-
13-
const alterarEmoji = async(emoji: number) => {
14-
props.setAberto(false);
15-
}
1612

17-
const removerEmoji = async() => {
18-
props.setAberto(false);
19-
}
20-
21-
const bandeiras = [{emoji: "🇧🇷"}, {emoji: "🇨🇦"}, {emoji: "🇺🇸"}, {emoji: "🇦🇷"}, {emoji: "🇺🇾"}, {emoji: "🇲🇽"}, {emoji: "🇻🇪"}, {emoji: "🇯🇲"}]
13+
export const ModalDrawer = (props: ModalDrawerProps) => {
14+
const { meusDados, setMeusDados } = useContext<ContextProvider>(Provider);
15+
const [indexSelecionado, setIndexSelecionado] = useState({indexArray: -1, indexEmoji: -1});
2216

2317
return (
2418
<Modal
@@ -30,37 +24,44 @@ export const ModalDrawer = (props: ModalDrawerProps) => {
3024
<Emojis>
3125
<TextEmojiPrincipal>Como você está se sentindo?</TextEmojiPrincipal>
3226
<EmojiScroll>
33-
<EmoteTextContainer>
34-
<EmoteText>Bandeiras</EmoteText>
35-
</EmoteTextContainer>
3627
<EmoteContainer>
3728
<FlatList
38-
data={bandeiras}
39-
numColumns={7}
29+
data={emojis}
4030
keyExtractor={(item, index) => index.toString()}
41-
renderItem={({item, index}) =>
42-
<EmojiButton
43-
style={{borderColor: (index === indexSelecionado)? "white": "#303030"}}
44-
onPress={() => setIndexSelecionado(index)}
45-
>
46-
<EmojiText>{item.emoji}</EmojiText>
47-
</EmojiButton>
31+
renderItem={(props1) =>
32+
<>
33+
<EmoteTextContainer>
34+
<EmoteText>{props1.item.titulo}</EmoteText>
35+
</EmoteTextContainer>
36+
<FlatList
37+
data={props1.item.emojis}
38+
numColumns={7}
39+
renderItem={({item, index}) =>
40+
<EmojiButton
41+
style={{borderColor: (props1.index === indexSelecionado.indexArray && index === indexSelecionado.indexEmoji)? "white": "#303030"}}
42+
onPress={() => setIndexSelecionado({indexArray: props1.index, indexEmoji: index})}
43+
>
44+
<EmojiText>{item.emoji}</EmojiText>
45+
</EmojiButton>
46+
}
47+
/>
48+
</>
4849
}
4950
/>
5051
</EmoteContainer>
5152
</EmojiScroll>
5253
</Emojis>
5354
<ModalOptions>
5455
<Buttons>
55-
<ButtonChoice onPress={() => removerEmoji()}>
56+
<ButtonChoice onPress={() => alterarEmoji(-1, -1, props.setAberto, meusDados, setMeusDados)}>
5657
<TextButtonChoice>Remover</TextButtonChoice>
5758
</ButtonChoice>
5859
</Buttons>
5960
<Buttons>
6061
<ButtonChoice onPress={() => props.setAberto(false)}>
6162
<TextButtonChoice>Cancelar</TextButtonChoice>
6263
</ButtonChoice>
63-
<ButtonChoice onPress={() => alterarEmoji(indexSelecionado)}>
64+
<ButtonChoice onPress={() => alterarEmoji(indexSelecionado.indexArray, indexSelecionado.indexEmoji, props.setAberto, meusDados, setMeusDados)}>
6465
<TextButtonChoice>Ok</TextButtonChoice>
6566
</ButtonChoice>
6667
</Buttons>

components/drawer/Service.tsx

+49
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
import { Dispatch, SetStateAction } from "react";
2+
import { keyUser, uri_principal } from "../../data/constants";
3+
import { LoginCadastroReturns } from "../usuario/cadastro/Interface";
4+
import AsyncStorage from "@react-native-async-storage/async-storage";
5+
6+
const bandeiras = [{ emoji: "🇧🇷" }, { emoji: "🇨🇦" }, { emoji: "🇺🇸" }, { emoji: "🇦🇷" }, { emoji: "🇺🇾" }, { emoji: "🇲🇽" }, { emoji: "🇻🇪" }, { emoji: "🇯🇲" }]
7+
const animais = [{ emoji: "🐶" }, { emoji: "🐢" }, { emoji: "🦖" }, { emoji: "🦕" }, { emoji: "🦀" }, { emoji: "🦀" }, { emoji: "🐬" }, { emoji: "🦭" }]
8+
export const emojis = [{ titulo: "Bandeiras paises", emojis: bandeiras }, { titulo: "Animais", emojis: animais }]
9+
10+
export const alterarEmoji = async (indexArray: number, indexEmoji: number, setAberto: Dispatch<SetStateAction<boolean>>, meusDados: LoginCadastroReturns, setMeusDados: Dispatch<SetStateAction<LoginCadastroReturns>>): Promise<void> => {
11+
let emoji: string = "";
12+
13+
if (meusDados.id !== -1 && meusDados.codigoAcesso !== -1) {
14+
if (indexArray !== -1 && indexEmoji !== -1) {
15+
emoji = emojis[indexArray].emojis[indexEmoji].emoji;
16+
}
17+
18+
const dados = {
19+
emoji: emoji,
20+
codigoAcesso: meusDados.codigoAcesso
21+
};
22+
23+
const url: string = uri_principal + `/v1/usuarios/usuario/${meusDados.id}/emoji`;
24+
25+
const response = await fetch(url, {
26+
method: "PATCH",
27+
headers: {
28+
'Content-Type': 'application/json'
29+
},
30+
body: JSON.stringify(dados)
31+
});
32+
33+
if (response.ok) {
34+
await gravarEmoji(emoji, setAberto, meusDados, setMeusDados);
35+
}
36+
}
37+
}
38+
39+
const gravarEmoji = async (emoji: string, setAberto: Dispatch<SetStateAction<boolean>>, meusDados: LoginCadastroReturns, setMeusDados: Dispatch<SetStateAction<LoginCadastroReturns>>): Promise<void> => {
40+
meusDados.emoji = emoji;
41+
const dadosAsync = await AsyncStorage.getItem(keyUser);
42+
if (dadosAsync !== null) {
43+
const dadosUser = JSON.parse(dadosAsync);
44+
dadosUser.emoji = emoji;
45+
await AsyncStorage.setItem(keyUser, JSON.stringify(dadosUser));
46+
setMeusDados(meusDados)
47+
}
48+
setAberto(false);
49+
}

components/perfil/Interface.tsx

+4-2
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,8 @@ interface PerfilInterface {
2020
sexo: SexoSelecionado,
2121
descricao: string,
2222
loginType: LoginType,
23-
date: string
23+
date: string,
24+
emoji: string
2425
}
2526

2627
const dadosIniciaisPerfil = {
@@ -30,7 +31,8 @@ const dadosIniciaisPerfil = {
3031
sexo: SexoSelecionado.NENHUM,
3132
descricao: "Carregando...",
3233
loginType: LoginType.GitHub,
33-
date: ""
34+
date: "",
35+
emoji: ""
3436
}
3537

3638
export { PerfilProps, PerfilInterface, dadosIniciaisPerfil }

components/perfil/Perfil.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ const Perfil: React.FC<PerfilProps> = ({ route }) => {
3434
</NavContainer>
3535
<PerfilContainer>
3636
<ImageAvatar source={avatarMasculino}/>
37-
<TextAvatar>@{dadosPerfilUsuario.apelido}</TextAvatar>
37+
<TextAvatar>@{dadosPerfilUsuario.apelido} {dadosPerfilUsuario.emoji}</TextAvatar>
3838
</PerfilContainer>
3939
<SobreContainer>
4040
{(dadosPerfilUsuario.descricao !== "")?

components/usuario/cadastro/Interface.tsx

+2-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,8 @@ export interface LoginCadastroReturns {
3131
idade: number;
3232
sexo: SexoSelecionado,
3333
loginType: LoginType,
34-
descricao: string
34+
descricao: string,
35+
emoji: string
3536
}
3637

3738
export interface CadastroActionProps {

data/constants.tsx

+5-4
Original file line numberDiff line numberDiff line change
@@ -14,16 +14,17 @@ export const dadosIniciaisUsuario: LoginCadastroReturns = {
1414
idade: -1,
1515
loginType: LoginType.GitHub,
1616
sexo: SexoSelecionado.NENHUM,
17-
descricao: ""
17+
descricao: "",
18+
emoji: ""
1819
}
1920

2021
export const dadosNecesassariosCriacaoUsuario: LoginCadastro = {
2122
apelido: "",
2223
codigoAcesso: -1,
2324
email: "",
24-
idade: -1,
25-
loginType: LoginType.GitHub,
25+
idade: -1,
26+
loginType: LoginType.GitHub,
2627
sexo: SexoSelecionado.NENHUM,
2728
}
2829

29-
export const uri_principal = "https://friendzone-qhwk.onrender.com";
30+
export const uri_principal = "http://10.0.0.181:8080";

0 commit comments

Comments
 (0)