export default async function FcmHandler({ client, payload }) { switch (payload.type) { case "messaging-inbound": client.cache.modify({ id: client.cache.identify({ __typename: "conversations", id: payload.conversationid }), fields: { messages_aggregate(cached) { return { aggregate: { count: cached.aggregate.count + 1 } }; } } }); client.cache.modify({ fields: { messages_aggregate(cached) { return { aggregate: { count: cached.aggregate.count + 1 } }; } } }); break; case "messaging-outbound": client.cache.modify({ id: client.cache.identify({ __typename: "conversations", id: payload.conversationid }), fields: { updated_at(oldupdated0) { return new Date(); } // messages_aggregate(cached) { // return { aggregate: { count: cached.aggregate.count + 1 } }; // }, } }); break; case "messaging-mark-conversation-read": let previousUnreadCount = 0; client.cache.modify({ id: client.cache.identify({ __typename: "conversations", id: payload.conversationid }), fields: { messages_aggregate(cached) { previousUnreadCount = cached.aggregate.count; return { aggregate: { count: 0 } }; } } }); client.cache.modify({ fields: { messages_aggregate(cached) { return { aggregate: { count: cached.aggregate.count - previousUnreadCount } }; } } }); break; default: console.log("No payload type set."); break; } }