70 lines
1.8 KiB
JavaScript
70 lines
1.8 KiB
JavaScript
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;
|
|
}
|
|
}
|