Skip to content

Commit

Permalink
Merge pull request #74 from ES2-UFPI/caio#71
Browse files Browse the repository at this point in the history
Utilização de padrão de projeto Container-Presenter e refatoração
  • Loading branch information
CaioBurton authored Jan 21, 2025
2 parents 20103fa + 82345c1 commit 3fc4fbd
Show file tree
Hide file tree
Showing 3 changed files with 104 additions and 79 deletions.
10 changes: 5 additions & 5 deletions app-menu/components/screens/AddReminderScreen.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,11 @@ export default function AddReminderScreen() {

// -- TIPOS DE ATIVIDADES FIXAS
const activitiesList = [
'medir insulina',
'medir pressão arterial',
'alimentação',
'beber água',
'dormir',
'Medir insulina',
'Medir pressão arterial',
'Alimentação',
'Beber água',
'Dormir',
];

// -- ESTADOS PARA CONTROLE DO TIPO DE LEMBRETE E ESCOLHAS
Expand Down
89 changes: 15 additions & 74 deletions app-menu/components/screens/AdicionarMedicamentoScreen.jsx
Original file line number Diff line number Diff line change
@@ -1,79 +1,20 @@
import React, { useState, useEffect } from 'react';
import {
ScrollView,
View,
Text,
TextInput,
TouchableOpacity,
Alert
} from 'react-native';
import AsyncStorage from '@react-native-async-storage/async-storage';
import React from 'react';
import { ScrollView, View, Text, TextInput, TouchableOpacity } from 'react-native';
import { globalStyles } from '../../constants/styles';
import { useMedicamentos } from '../../hooks/useMedicamentos';

const AdicionarMedicamentoScreen = () => {
const [nome, setNome] = useState('');
const [descricao, setDescricao] = useState('');
const [intervalo, setIntervalo] = useState('');
const [listaMedicamentos, setListaMedicamentos] = useState([]);

useEffect(() => {
carregarMedicamentos();
}, []);

const carregarMedicamentos = async () => {
try {
const medicamentosArmazenados = await AsyncStorage.getItem('listaMedicamentos');
if (medicamentosArmazenados) {
setListaMedicamentos(JSON.parse(medicamentosArmazenados));
} else {
setListaMedicamentos([]);
}
} catch (error) {
console.log('Erro ao carregar medicamentos:', error);
}
};

const salvarMedicamento = async () => {
if (!nome || !intervalo) {
Alert.alert('Erro', 'Por favor, preencha o nome e o intervalo do medicamento.');
return;
}

const novoMedicamento = {
nome,
descricao,
interval: intervalo,
};

try {
const medicamentosArmazenados = await AsyncStorage.getItem('listaMedicamentos');
const listaAtual = medicamentosArmazenados ? JSON.parse(medicamentosArmazenados) : [];
listaAtual.push(novoMedicamento);
await AsyncStorage.setItem('listaMedicamentos', JSON.stringify(listaAtual));
setListaMedicamentos(listaAtual);
Alert.alert('Sucesso', 'Medicamento salvo com sucesso!');
setNome('');
setDescricao('');
setIntervalo('');
} catch (error) {
Alert.alert('Erro', 'Não foi possível salvar o medicamento.');
console.log(error);
}
};

const removeMedicamento = async (index) => {
try {
const medicamentosArmazenados = await AsyncStorage.getItem('listaMedicamentos');
let listaAtual = medicamentosArmazenados ? JSON.parse(medicamentosArmazenados) : [];
listaAtual.splice(index, 1);
await AsyncStorage.setItem('listaMedicamentos', JSON.stringify(listaAtual));
setListaMedicamentos(listaAtual);
Alert.alert('Sucesso', 'Medicamento removido com sucesso!');
} catch (error) {
Alert.alert('Erro', 'Não foi possível remover o medicamento.');
console.log(error);
}
};
const {
nome,
setNome,
descricao,
setDescricao,
intervalo,
setIntervalo,
listaMedicamentos,
salvarMedicamento,
removeMedicamento,
} = useMedicamentos();

return (
<ScrollView contentContainerStyle={globalStyles.container}>
Expand Down Expand Up @@ -137,6 +78,6 @@ const AdicionarMedicamentoScreen = () => {
)}
</ScrollView>
);
}
};

export default AdicionarMedicamentoScreen;
84 changes: 84 additions & 0 deletions app-menu/components/screens/useMedicamentos.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
import { useState, useEffect } from 'react';
import AsyncStorage from '@react-native-async-storage/async-storage';
import { Alert } from 'react-native';

export const useMedicamentos = () => {
const [nome, setNome] = useState('');
const [descricao, setDescricao] = useState('');
const [intervalo, setIntervalo] = useState('');
const [listaMedicamentos, setListaMedicamentos] = useState([]);

useEffect(() => {
carregarMedicamentos();
}, []);

const carregarMedicamentos = async () => {
try {
const medicamentosArmazenados = await AsyncStorage.getItem('listaMedicamentos');
if (medicamentosArmazenados) {
setListaMedicamentos(JSON.parse(medicamentosArmazenados));
} else {
setListaMedicamentos([]);
}
} catch (error) {
console.log('Erro ao carregar medicamentos:', error);
}
};

const salvarMedicamento = async () => {
if (!nome || !intervalo) {
Alert.alert('Erro', 'Por favor, preencha o nome e o intervalo do medicamento.');
return;
}

const novoMedicamento = {
nome,
descricao,
interval: intervalo,
};

try {
const medicamentosArmazenados = await AsyncStorage.getItem('listaMedicamentos');
const listaAtual = medicamentosArmazenados ? JSON.parse(medicamentosArmazenados) : [];
listaAtual.push(novoMedicamento);
await AsyncStorage.setItem('listaMedicamentos', JSON.stringify(listaAtual));
setListaMedicamentos(listaAtual);
Alert.alert('Sucesso', 'Medicamento salvo com sucesso!');
limparCampos();
} catch (error) {
Alert.alert('Erro', 'Não foi possível salvar o medicamento.');
console.log(error);
}
};

const removeMedicamento = async (index) => {
try {
let listaAtual = [...listaMedicamentos];
listaAtual.splice(index, 1);
await AsyncStorage.setItem('listaMedicamentos', JSON.stringify(listaAtual));
setListaMedicamentos(listaAtual);
Alert.alert('Sucesso', 'Medicamento removido com sucesso!');
} catch (error) {
Alert.alert('Erro', 'Não foi possível remover o medicamento.');
console.log(error);
}
};

const limparCampos = () => {
setNome('');
setDescricao('');
setIntervalo('');
};

return {
nome,
setNome,
descricao,
setDescricao,
intervalo,
setIntervalo,
listaMedicamentos,
salvarMedicamento,
removeMedicamento,
};
};

0 comments on commit 3fc4fbd

Please sign in to comment.