diff --git a/src/app/private/pages/editarRotina.tsx b/src/app/private/pages/editarRotina.tsx index a1293453..d921bc2b 100644 --- a/src/app/private/pages/editarRotina.tsx +++ b/src/app/private/pages/editarRotina.tsx @@ -5,6 +5,8 @@ import { Text, View, TextInput, + Platform, + Switch, } from "react-native"; import React, { useEffect, useState } from "react"; import { ScrollView } from "react-native-gesture-handler"; @@ -23,6 +25,7 @@ import AsyncStorage from "@react-native-async-storage/async-storage"; import ErrorMessage from "../../components/ErrorMessage"; import ModalConfirmation from "../../components/ModalConfirmation"; import { IIdoso } from "../../interfaces/idoso.interface"; +import * as Notifications from "expo-notifications"; interface IErrors { titulo?: string; @@ -51,6 +54,10 @@ export default function EditarRotina() { const [hora, setHora] = useState(""); const [showLoadingApagar, setShowLoadingApagar] = useState(false); const [modalVisible, setModalVisible] = useState(false); + const [notificacao, setNotificacao] = useState( + String(params.notificacao) === "true", + ); + const [expoToken, setExpoToken] = useState(params.token); const getIdoso = () => { AsyncStorage.getItem("idoso").then((idosoString) => { @@ -139,6 +146,8 @@ export default function EditarRotina() { dataHora: getDateIsoString(data, hora), categoria: categoria as ECategoriaRotina, dias, + token: expoToken, + notificacao, descricao, }; @@ -188,10 +197,48 @@ export default function EditarRotina() { } }; + const handleNotificacao = async () => { + if (!notificacao) return; + + if (Platform.OS === "android") { + Notifications.setNotificationChannelAsync("default", { + name: "default", + importance: Notifications.AndroidImportance.MAX, + vibrationPattern: [0, 250, 250, 250], + lightColor: "#FF231F7C", + }); + } + + const { status: existingStatus } = + await Notifications.getPermissionsAsync(); + + let finalStatus = existingStatus; + + if (existingStatus !== "granted") { + const { status } = await Notifications.requestPermissionsAsync(); + finalStatus = status; + } + + if (finalStatus !== "granted") { + alert("É necessário permitir as notificações!"); + setNotificacao(false); + return; + } + + const response = await Notifications.getExpoPushTokenAsync({ + projectId: "7028a81c-adee-41de-91a7-b7e80535a448", + }); + + setExpoToken(response.data); + }; + useEffect(() => getIdoso(), []); useEffect(() => getToken(), []); useEffect(() => handleErrors(), [titulo, data, hora, categoria, descricao]); useEffect(() => handleDataHora(), []); + useEffect(() => { + handleNotificacao(); + }, [notificacao]); const confirmation = () => { setModalVisible(!modalVisible); @@ -294,8 +341,16 @@ export default function EditarRotina() { + + + Ativar notificação + + - {/* */}