Hi, I cannot figure out why my subscription doesn't work.
I have a model:
const schema = a
.schema({
...
Relationship: a
.model({
id: a.id().required(),
initiatorId: a.id().required(),
recipientEmail: a.string(),
recipientId: a.id(),
status: a.enum(['ACTIVE', 'PENDING', "CANCELLED", "REJECTED"]),
establishedAt: a.datetime(),
// Relationships
initiator: a.belongsTo('User', 'initiatorId'),
recipient: a.belongsTo('User', 'recipientId'),
})
.identifier(['id'])
.secondaryIndexes(index => [
index('initiatorId').name('byInitiator'),
index('recipientId').name('byRecipient'),
index('recipientEmail').name('byRecipientEmail'),
])
.authorization(allow => [allow.publicApiKey()]),
...
})
.authorization(allow => [
allow.resource(postConfirmation).to(['query', 'listen', 'mutate']),
]);
Then I have my frontend code:
useEffect(() => {
console.log("useEffect to subscribe")
if (currentUser?.email) {
console.log("subscribed, email: ", currentUser?.email)
const sub = client.models.Relationship.onCreate({
filter:{},
// filter: {id: {contains: "-"}},
// filter: {recipientEmail: {eq: currentUser?.email}},
authMode: "apiKey",
}).subscribe({
next: newdata => {
console.log('subscription data', newdata);
// if(newdata){
// setData((prevData) => [...prevData, newdata]);
// }
},
error: (error) => console.warn(error),
});
return () => sub.unsubscribe();
}
}, [currentUser?.email]);
As you see I tried different filters, but none worked.
If I use empty it triggers and prints null, but if I use real filter it doesn't trigger at all. What am I missing?