{"version":3,"sources":["../src/config/chatCache.ts"],"names":["InMemoryCache","typePolicies","existing","incoming","mergeObjects","readField","merged","chatRef","id","ref","a","b","aCreatedAt","chatCache_default"],"mappings":";AAAA,OAAS,iBAAAA,MAAqB,sBAG9B,IAAMC,EAAwC,CAC5C,SAAU,CACR,MAAMC,EAAUC,EAAU,CAAE,aAAAC,CAAa,EAAG,CAC1C,OAAOA,EAAaF,EAAUC,CAAQ,CACxC,CACF,EACA,mBAAoB,CAClB,UAAW,CAAC,SAAS,CACvB,EACA,KAAM,CACJ,UAAW,CAAC,IAAI,EAChB,OAAQ,CACN,SAAU,CACR,MAAMD,EAAW,CAAC,EAAGC,EAAU,CAC7B,OAAKA,GAAiBD,CAExB,CACF,CACF,CACF,EACA,YAAa,CACX,UAAW,CAAC,SAAS,EACrB,OAAQ,CACN,MAAO,CACL,MAAMA,EAAW,EAAGC,EAAU,CAC5B,OAAOD,EAAWC,CACpB,CACF,EACA,MAAO,CACL,MAAMD,EAAW,CAAC,EAAGC,EAAU,CAAE,UAAAE,CAAU,EAAG,CAC5C,IAAMC,EAASJ,EAAW,CAAC,GAAGA,CAAQ,EAAI,CAAC,EAC3C,OAAAC,EAAS,QAASI,GAAY,CAC5B,IAAMC,EAAKH,EAAkB,KAAME,CAAO,EACrCC,IACDF,EAAO,KAAMG,GAAQJ,EAAU,KAAMI,CAAG,IAAMD,CAAE,GACpDF,EAAO,KAAKC,CAAO,EACrB,CAAC,EAEDD,EAAO,KAAK,CAACI,EAAGC,IAAM,CACpB,IAAMC,EAAa,IAAI,KAAKP,EAAkB,aAAcK,CAAC,CAAC,EAE9D,OADmB,IAAI,KAAKL,EAAkB,aAAcM,CAAC,CAAC,EAC5C,QAAQ,EAAIC,EAAW,QAAQ,CACnD,CAAC,EAEMN,CACT,CACF,CACF,CACF,EACA,WAAY,CACV,UAAW,EACb,EACA,KAAM,CACJ,UAAW,CAAC,IAAI,CAClB,EACA,KAAM,CACJ,UAAW,CAAC,IAAI,EAChB,OAAQ,CACN,OAAQ,CACN,MAAMJ,EAAW,CAAC,EAAGC,EAAU,CAC7B,OAAKA,GAAiBD,CAExB,CACF,CACF,CACF,CACF,EAEOW,EAAQ,IAAIb,EAAc,CAC/B,aAAAC,CACF,CAAC","sourcesContent":["import { InMemoryCache } from '@apollo/client/core';\nimport { StrictTypedTypePolicies } from '@/generated/apollo-helper';\n\nconst typePolicies: StrictTypedTypePolicies = {\n  Metadata: {\n    merge(existing, incoming, { mergeObjects }) {\n      return mergeObjects(existing, incoming);\n    },\n  },\n  AppointmentMessage: {\n    keyFields: ['videoId'],\n  },\n  User: {\n    keyFields: ['id'],\n    fields: {\n      metadata: {\n        merge(existing = [], incoming) {\n          if (!incoming) return existing;\n          return incoming;\n        },\n      },\n    },\n  },\n  ChatResults: {\n    keyFields: ['room_id'],\n    fields: {\n      count: {\n        merge(existing = 0, incoming) {\n          return existing + incoming;\n        },\n      },\n      chats: {\n        merge(existing = [], incoming, { readField }) {\n          const merged = existing ? [...existing] : [];\n          incoming.forEach((chatRef) => {\n            const id = readField<string>('id', chatRef);\n            if (!id) return;\n            if (merged.find((ref) => readField('id', ref) === id)) return;\n            merged.push(chatRef);\n          });\n\n          merged.sort((a, b) => {\n            const aCreatedAt = new Date(readField<string>('created_at', a));\n            const bCreatedAt = new Date(readField<string>('created_at', b));\n            return bCreatedAt.getTime() - aCreatedAt.getTime();\n          });\n\n          return merged;\n        },\n      },\n    },\n  },\n  ChatStatus: {\n    keyFields: false,\n  },\n  Room: {\n    keyFields: ['id'],\n  },\n  Chat: {\n    keyFields: ['id'],\n    fields: {\n      status: {\n        merge(existing = [], incoming) {\n          if (!incoming) return existing;\n          return incoming;\n        },\n      },\n    },\n  },\n};\n\nexport default new InMemoryCache({\n  typePolicies,\n});\n"]}