Newer
Older
import {useMemo} from 'react';
import {AgentNotification} from "src/utils/agentUtils";
import {Results, useQuery} from "@realm/react";
import {useConnections, useCredentialByState, useProofByState} from "@aries-framework/react-hooks";
import {CredentialState, ProofState} from "@aries-framework/core";
import {ConnectionRecord} from "@aries-framework/core/build/modules/connections/repository/ConnectionRecord";
export const useAgentNotifications = (): AgentNotification[] => {
const allConnections = useConnections();
const newOffers = useCredentialByState(CredentialState.OfferReceived);
const newProofRequests = useProofByState(ProofState.RequestReceived);
const notifications = useMemo(() => {
const result: AgentNotification[] = [];
for (const offer of newOffers) {
let connection: ConnectionRecord | null = null;
if (offer.connectionId) {
connection = allConnections.records.find(p => p.id === offer.connectionId) || null;
}
result.push({ key: offer.id, credentialOffer: offer, connection: connection });
}
for (const request of newProofRequests) {
let connection: ConnectionRecord | null = null;
if (request.connectionId) {
connection = allConnections.records.find(p => p.id === request.connectionId) || null;
}
result.push({ key: request.id, proofRequest: request, connection: connection });
}
return result;
}, [newOffers, newProofRequests, allConnections]);
return notifications;
};
export const useEmailNotifications = (): Results<Email> => {
let emailQuery = useQuery(Email);
emailQuery = emailQuery.filtered(`read == $0`, false);
emailQuery = emailQuery.sorted('createdAt', true);
return emailQuery;
};