I've written this AppSync schema through Amplify. I wanna use subscriptions in a way I'll explain below. Will it work?
type ChatMessage @model
@key(name: "messageBySender", fields: ["sender_sub"], queryField: "messageBySender")
@key(name: "messageByReceiver", fields: ["receiver_sub"], queryField: "messageByReceiver")
@auth(rules: [
{allow: groups, provider: userPools, groups: ["admins", "moderators"], operations: [read, delete]},
{allow: owner, ownerField: "sender_sub", identityClaim: "sub", operations: [read, create, delete]},
{allow: groups, groupsField: "receiver_sub", operations: [read], groupClaim: "sub", provider: userPools}
])
{
id: ID!
receiver_sub: String!
sender_sub: String!
date: AWSDate!
message: String!
}
And the way I wanna use it is:
const subscription = API.graphql(
graphqlOperation(onCreateChatMessages)
).subscribe({
next: (chatMessageData) => {
console.log(chatMessageData);
const {attributes} = Auth.currentUserInfo();
const {receiver_sub, message} = chatMessageData;
if (receiver_sub === attributes.sub) {
//show message
}
}
});