@planningcenter/chat-react-native 4.4.1-qa-staging.26 → 4.4.1-qa-staging.27

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. package/build/components/conversations/conversations.d.ts.map +1 -1
  2. package/build/components/conversations/conversations.js +3 -2
  3. package/build/components/conversations/conversations.js.map +1 -1
  4. package/build/components/display/filter_dropdown.d.ts.map +1 -1
  5. package/build/components/display/filter_dropdown.js +3 -1
  6. package/build/components/display/filter_dropdown.js.map +1 -1
  7. package/build/components/display/index.d.ts +1 -0
  8. package/build/components/display/index.d.ts.map +1 -1
  9. package/build/components/display/index.js +1 -0
  10. package/build/components/display/index.js.map +1 -1
  11. package/build/components/display/popover_menu_view.d.ts +8 -0
  12. package/build/components/display/popover_menu_view.d.ts.map +1 -0
  13. package/build/components/display/popover_menu_view.js +482 -0
  14. package/build/components/display/popover_menu_view.js.map +1 -0
  15. package/build/contexts/conversations_context.d.ts.map +1 -1
  16. package/build/contexts/conversations_context.js +20 -17
  17. package/build/contexts/conversations_context.js.map +1 -1
  18. package/build/hooks/use_clear_conversation_filters.d.ts.map +1 -1
  19. package/build/hooks/use_clear_conversation_filters.js +2 -1
  20. package/build/hooks/use_clear_conversation_filters.js.map +1 -1
  21. package/build/hooks/use_conversations_cache.d.ts +1 -1
  22. package/build/hooks/use_conversations_cache.d.ts.map +1 -1
  23. package/build/hooks/use_conversations_cache.js +64 -55
  24. package/build/hooks/use_conversations_cache.js.map +1 -1
  25. package/build/hooks/use_conversations_jolt_events.js +2 -2
  26. package/build/hooks/use_conversations_jolt_events.js.map +1 -1
  27. package/build/hooks/use_jolt.d.ts.map +1 -1
  28. package/build/hooks/use_jolt.js +37 -9
  29. package/build/hooks/use_jolt.js.map +1 -1
  30. package/build/screens/conversation_filters/context/conversation_filter_context.d.ts.map +1 -1
  31. package/build/screens/conversation_filters/context/conversation_filter_context.js +8 -4
  32. package/build/screens/conversation_filters/context/conversation_filter_context.js.map +1 -1
  33. package/build/screens/conversation_filters/screen_props.d.ts +1 -0
  34. package/build/screens/conversation_filters/screen_props.d.ts.map +1 -1
  35. package/build/screens/conversation_filters/screen_props.js.map +1 -1
  36. package/build/screens/conversations/components/filter_dropdown_list_header_component.d.ts.map +1 -1
  37. package/build/screens/conversations/components/filter_dropdown_list_header_component.js +211 -188
  38. package/build/screens/conversations/components/filter_dropdown_list_header_component.js.map +1 -1
  39. package/build/screens/conversations/conversations_screen.d.ts +1 -0
  40. package/build/screens/conversations/conversations_screen.d.ts.map +1 -1
  41. package/build/screens/conversations/conversations_screen.js +1 -2
  42. package/build/screens/conversations/conversations_screen.js.map +1 -1
  43. package/build/screens/design_system_screen.d.ts.map +1 -1
  44. package/build/screens/design_system_screen.js +289 -201
  45. package/build/screens/design_system_screen.js.map +1 -1
  46. package/build/utils/native_adapters/menu.d.ts +1 -2
  47. package/build/utils/native_adapters/menu.d.ts.map +1 -1
  48. package/build/utils/native_adapters/menu.js +2 -41
  49. package/build/utils/native_adapters/menu.js.map +1 -1
  50. package/build/utils/request/conversation.d.ts +2 -1
  51. package/build/utils/request/conversation.d.ts.map +1 -1
  52. package/build/utils/request/conversation.js +4 -1
  53. package/build/utils/request/conversation.js.map +1 -1
  54. package/package.json +3 -3
  55. package/src/components/conversations/__tests__/conversations_blank_state.test.tsx +1 -0
  56. package/src/components/conversations/conversations.tsx +12 -2
  57. package/src/components/display/__tests__/filter_dropdown.test.tsx +18 -2
  58. package/src/components/display/__tests__/popover_menu_view.test.tsx +63 -0
  59. package/src/components/display/filter_dropdown.tsx +4 -2
  60. package/src/components/display/index.ts +1 -0
  61. package/src/components/display/popover_menu_view.tsx +239 -0
  62. package/src/contexts/conversations_context.tsx +8 -1
  63. package/src/hooks/__tests__/use_conversations_jolt_events.test.tsx +135 -0
  64. package/src/hooks/__tests__/use_jolt.test.tsx +76 -1
  65. package/src/hooks/use_clear_conversation_filters.ts +1 -0
  66. package/src/hooks/use_conversations_cache.ts +29 -24
  67. package/src/hooks/use_conversations_jolt_events.ts +2 -2
  68. package/src/hooks/use_jolt.ts +26 -2
  69. package/src/screens/conversation_filters/context/conversation_filter_context.tsx +4 -0
  70. package/src/screens/conversation_filters/screen_props.ts +1 -0
  71. package/src/screens/conversations/__tests__/conversations_screen.test.tsx +2 -12
  72. package/src/screens/conversations/components/__tests__/filter_dropdown_list_header_component.test.tsx +55 -3
  73. package/src/screens/conversations/components/filter_dropdown_list_header_component.tsx +17 -2
  74. package/src/screens/conversations/conversations_screen.tsx +2 -2
  75. package/src/screens/design_system_screen.tsx +34 -1
  76. package/src/utils/__tests__/conversation.test.ts +1 -0
  77. package/src/utils/native_adapters/menu.tsx +4 -18
  78. package/src/utils/request/conversation.ts +4 -0
  79. package/src/utils/native_adapters/__tests__/menu.test.tsx +0 -46
@@ -5,7 +5,7 @@ export declare function useConversationsCache(args?: Partial<ConversationRequest
5
5
  destroy: ({ id }: {
6
6
  id: number;
7
7
  }) => void;
8
- fetchCreate: ({ id }: {
8
+ fetchSync: ({ id }: {
9
9
  id: number;
10
10
  }) => Promise<void>;
11
11
  fetchUpdate: ({ id }: {
@@ -1 +1 @@
1
- {"version":3,"file":"use_conversations_cache.d.ts","sourceRoot":"","sources":["../../src/hooks/use_conversations_cache.ts"],"names":[],"mappings":"AACA,OAAO,EAA8B,oBAAoB,EAAE,MAAM,UAAU,CAAA;AAO3E,OAAO,EAAE,uBAAuB,EAA+B,MAAM,+BAA+B,CAAA;AAMpG,wBAAgB,qBAAqB,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,uBAAuB,CAAC;2BAqB/B,oBAAoB;sBAmDrB;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE;0BAPX;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE;0BAPtB;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE;;2BArCR,oBAAoB;wBA4B/B,OAAO,CAAC,oBAAoB,CAAC;EA2C/D"}
1
+ {"version":3,"file":"use_conversations_cache.d.ts","sourceRoot":"","sources":["../../src/hooks/use_conversations_cache.ts"],"names":[],"mappings":"AACA,OAAO,EAAiB,oBAAoB,EAAE,MAAM,UAAU,CAAA;AAO9D,OAAO,EAAE,uBAAuB,EAA+B,MAAM,+BAA+B,CAAA;AAMpG,wBAAgB,qBAAqB,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,uBAAuB,CAAC;2BAkB/B,oBAAoB;sBAqCrB;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE;wBAkBrB;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE;0BAPZ;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE;;2BAhDR,oBAAoB;wBA4B/B,OAAO,CAAC,oBAAoB,CAAC;EAmD/D"}
@@ -5,7 +5,7 @@ import { getConversationsRequestArgs } from '../utils/request/conversation';
5
5
  import { useApiClient } from './use_api_client';
6
6
  import { getRequestQueryKey } from './use_suspense_api';
7
7
  export function useConversationsCache(args) {
8
- const $ = _c(34);
8
+ const $ = _c(35);
9
9
  const apiClient = useApiClient();
10
10
  const queryClient = useQueryClient();
11
11
  let conversationsRequestArgs;
@@ -28,18 +28,23 @@ export function useConversationsCache(args) {
28
28
  return;
29
29
  }
30
30
  const {
31
- data: argsData
31
+ url,
32
+ data
32
33
  } = conversationsRequestArgs;
33
34
  const {
34
- data
35
+ data: conversations
35
36
  } = await apiClient.chat.get({
36
- url: `/me/conversations/${id}`,
37
+ url,
37
38
  data: {
38
- fields: argsData.fields,
39
- include: argsData.include
39
+ ...data,
40
+ where: {
41
+ ...data.where,
42
+ id
43
+ },
44
+ perPage: 1
40
45
  }
41
46
  });
42
- return data;
47
+ return conversations[0];
43
48
  };
44
49
  $[3] = apiClient;
45
50
  $[4] = conversationsRequestArgs;
@@ -105,106 +110,110 @@ export function useConversationsCache(args) {
105
110
  }
106
111
  const updateAll = t4;
107
112
  let t5;
108
- if ($[15] !== fetchConversation || $[16] !== updateOnly) {
109
- t5 = async t6 => {
113
+ if ($[15] !== conversationQueryKey || $[16] !== queryClient) {
114
+ t5 = t6 => {
110
115
  const {
111
116
  id: id_0
112
117
  } = t6;
113
- const conversation_1 = await fetchConversation(id_0).catch(_temp3);
114
- if (!conversation_1.id) {
118
+ if (!id_0) {
115
119
  return;
116
120
  }
117
- updateOnly(conversation_1);
121
+ queryClient.setQueryData(conversationQueryKey, prev_2 => deleteRecordInPagesData({
122
+ data: prev_2,
123
+ record: {
124
+ id: id_0
125
+ }
126
+ }));
118
127
  };
119
- $[15] = fetchConversation;
120
- $[16] = updateOnly;
128
+ $[15] = conversationQueryKey;
129
+ $[16] = queryClient;
121
130
  $[17] = t5;
122
131
  } else {
123
132
  t5 = $[17];
124
133
  }
125
- const fetchAndUpdate = t5;
134
+ const handleConversationDestroy = t5;
126
135
  let t6;
127
- if ($[18] !== fetchConversation || $[19] !== updateOrCreate) {
136
+ if ($[18] !== fetchConversation || $[19] !== updateOnly) {
128
137
  t6 = async t7 => {
129
138
  const {
130
139
  id: id_1
131
140
  } = t7;
132
- const conversation_2 = await fetchConversation(id_1).catch(_temp4);
133
- if (!conversation_2.id) {
141
+ const conversation_1 = await fetchConversation(id_1).catch(_temp3);
142
+ if (!conversation_1) {
134
143
  return;
135
144
  }
136
- updateOrCreate(conversation_2);
145
+ updateOnly(conversation_1);
137
146
  };
138
147
  $[18] = fetchConversation;
139
- $[19] = updateOrCreate;
148
+ $[19] = updateOnly;
140
149
  $[20] = t6;
141
150
  } else {
142
151
  t6 = $[20];
143
152
  }
144
- const fetchAndUpdateOrCreate = t6;
153
+ const fetchAndUpdate = t6;
145
154
  let t7;
146
- if ($[21] !== conversationQueryKey || $[22] !== queryClient) {
147
- t7 = t8 => {
155
+ if ($[21] !== fetchConversation || $[22] !== handleConversationDestroy || $[23] !== updateOrCreate) {
156
+ t7 = async t8 => {
148
157
  const {
149
158
  id: id_2
150
159
  } = t8;
151
- if (!id_2) {
160
+ let conversation_2;
161
+ try {
162
+ conversation_2 = await fetchConversation(id_2);
163
+ } catch {
152
164
  return;
153
165
  }
154
- queryClient.setQueryData(conversationQueryKey, prev_2 => deleteRecordInPagesData({
155
- data: prev_2,
156
- record: {
166
+ if (conversation_2) {
167
+ updateOrCreate(conversation_2);
168
+ } else {
169
+ handleConversationDestroy({
157
170
  id: id_2
158
- }
159
- }));
171
+ });
172
+ }
160
173
  };
161
- $[21] = conversationQueryKey;
162
- $[22] = queryClient;
163
- $[23] = t7;
174
+ $[21] = fetchConversation;
175
+ $[22] = handleConversationDestroy;
176
+ $[23] = updateOrCreate;
177
+ $[24] = t7;
164
178
  } else {
165
- t7 = $[23];
179
+ t7 = $[24];
166
180
  }
167
- const handleConversationDestroy = t7;
181
+ const fetchAndSync = t7;
168
182
  let t8;
169
- if ($[24] !== conversationQueryKey || $[25] !== queryClient) {
183
+ if ($[25] !== conversationQueryKey || $[26] !== queryClient) {
170
184
  t8 = () => queryClient.invalidateQueries({
171
185
  queryKey: conversationQueryKey
172
186
  });
173
- $[24] = conversationQueryKey;
174
- $[25] = queryClient;
175
- $[26] = t8;
187
+ $[25] = conversationQueryKey;
188
+ $[26] = queryClient;
189
+ $[27] = t8;
176
190
  } else {
177
- t8 = $[26];
191
+ t8 = $[27];
178
192
  }
179
193
  let t9;
180
- if ($[27] !== fetchAndUpdate || $[28] !== fetchAndUpdateOrCreate || $[29] !== handleConversationDestroy || $[30] !== t8 || $[31] !== updateAll || $[32] !== updateOrCreate) {
194
+ if ($[28] !== fetchAndSync || $[29] !== fetchAndUpdate || $[30] !== handleConversationDestroy || $[31] !== t8 || $[32] !== updateAll || $[33] !== updateOrCreate) {
181
195
  t9 = {
182
196
  create: updateOrCreate,
183
197
  destroy: handleConversationDestroy,
184
- fetchCreate: fetchAndUpdateOrCreate,
198
+ fetchSync: fetchAndSync,
185
199
  fetchUpdate: fetchAndUpdate,
186
200
  invalidate: t8,
187
201
  update: updateOrCreate,
188
202
  updateAll
189
203
  };
190
- $[27] = fetchAndUpdate;
191
- $[28] = fetchAndUpdateOrCreate;
192
- $[29] = handleConversationDestroy;
193
- $[30] = t8;
194
- $[31] = updateAll;
195
- $[32] = updateOrCreate;
196
- $[33] = t9;
204
+ $[28] = fetchAndSync;
205
+ $[29] = fetchAndUpdate;
206
+ $[30] = handleConversationDestroy;
207
+ $[31] = t8;
208
+ $[32] = updateAll;
209
+ $[33] = updateOrCreate;
210
+ $[34] = t9;
197
211
  } else {
198
- t9 = $[33];
212
+ t9 = $[34];
199
213
  }
200
214
  return t9;
201
215
  }
202
- function _temp4(c_0) {
203
- return c_0;
204
- }
205
- function _temp3(c) {
206
- return c;
207
- }
216
+ function _temp3() {}
208
217
  function _temp2(record_0, current_0) {
209
218
  return {
210
219
  ...current_0,
@@ -1 +1 @@
1
- {"version":3,"file":"use_conversations_cache.js","names":["useQueryClient","deleteRecordInPagesData","updateRecordInPagesData","updateAllRecordsInPagesData","updateOrCreateRecordInPagesData","getConversationsRequestArgs","useApiClient","getRequestQueryKey","useConversationsCache","args","$","_c","apiClient","queryClient","conversationsRequestArgs","t0","conversationQueryKey","t1","id","data","argsData","chat","get","url","fields","include","fetchConversation","t2","conversation","setQueryData","prev","record","processRecord","_temp","updateOrCreate","t3","conversation_0","prev_0","_temp2","updateOnly","t4","update","prev_1","record_1","updateAll","t5","t6","id_0","conversation_1","catch","_temp3","fetchAndUpdate","t7","id_1","conversation_2","_temp4","fetchAndUpdateOrCreate","t8","id_2","prev_2","handleConversationDestroy","invalidateQueries","queryKey","t9","create","destroy","fetchCreate","fetchUpdate","invalidate","c_0","c","record_0","current_0","current"],"sources":["../../src/hooks/use_conversations_cache.ts"],"sourcesContent":["import { InfiniteData, useQueryClient } from '@tanstack/react-query'\nimport { ApiCollection, ApiResource, ConversationResource } from '../types'\nimport {\n deleteRecordInPagesData,\n updateRecordInPagesData,\n updateAllRecordsInPagesData,\n updateOrCreateRecordInPagesData,\n} from '../utils'\nimport { ConversationRequestArgs, getConversationsRequestArgs } from '../utils/request/conversation'\nimport { useApiClient } from './use_api_client'\nimport { getRequestQueryKey } from './use_suspense_api'\n\ntype QueryData = InfiniteData<ApiCollection<ConversationResource>>\n\nexport function useConversationsCache(args?: Partial<ConversationRequestArgs>) {\n const apiClient = useApiClient()\n const queryClient = useQueryClient()\n const conversationsRequestArgs = getConversationsRequestArgs(args)\n const conversationQueryKey = getRequestQueryKey(conversationsRequestArgs)\n\n const fetchConversation = async (id: number) => {\n if (!id) return\n\n const { data: argsData } = conversationsRequestArgs\n const { data } = await apiClient.chat.get<ApiResource<ConversationResource>>({\n url: `/me/conversations/${id}`,\n data: {\n fields: argsData.fields,\n include: argsData.include,\n },\n })\n\n return data\n }\n\n const updateOrCreate = async (conversation: ConversationResource) => {\n if (!conversation.id) return\n\n queryClient.setQueryData<QueryData>(conversationQueryKey, prev =>\n updateOrCreateRecordInPagesData({\n data: prev,\n record: conversation,\n processRecord: (record, current) => {\n return { ...current, ...record }\n },\n })\n )\n }\n\n const updateOnly = async (conversation: ConversationResource) => {\n if (!conversation.id) return\n\n queryClient.setQueryData<QueryData>(conversationQueryKey, prev =>\n updateRecordInPagesData({\n data: prev,\n record: conversation,\n processRecord: (record, current) => {\n return { ...current, ...record }\n },\n })\n )\n }\n\n const updateAll = async (update: Partial<ConversationResource>) => {\n queryClient.setQueryData<QueryData>(conversationQueryKey, prev =>\n updateAllRecordsInPagesData({\n data: prev,\n processRecord: record => ({ ...record, ...update }),\n })\n )\n }\n\n const fetchAndUpdate = async ({ id }: { id: number }) => {\n const conversation: ConversationResource = await fetchConversation(id).catch(c => c)\n if (!conversation.id) return\n\n updateOnly(conversation)\n }\n\n const fetchAndUpdateOrCreate = async ({ id }: { id: number }) => {\n const conversation: ConversationResource = await fetchConversation(id).catch(c => c)\n if (!conversation.id) return\n\n updateOrCreate(conversation)\n }\n\n const handleConversationDestroy = ({ id }: { id: number }) => {\n if (!id) return\n\n queryClient.setQueryData<QueryData>(conversationQueryKey, prev =>\n deleteRecordInPagesData({\n data: prev,\n record: { id },\n })\n )\n }\n\n return {\n create: updateOrCreate,\n destroy: handleConversationDestroy,\n fetchCreate: fetchAndUpdateOrCreate,\n fetchUpdate: fetchAndUpdate,\n invalidate: () => queryClient.invalidateQueries({ queryKey: conversationQueryKey }),\n update: updateOrCreate,\n updateAll,\n }\n}\n"],"mappings":";AAAA,SAAuBA,cAAc,QAAQ,uBAAuB;AAEpE,SACEC,uBAAuB,EACvBC,uBAAuB,EACvBC,2BAA2B,EAC3BC,+BAA+B,QAC1B,UAAU;AACjB,SAAkCC,2BAA2B,QAAQ,+BAA+B;AACpG,SAASC,YAAY,QAAQ,kBAAkB;AAC/C,SAASC,kBAAkB,QAAQ,oBAAoB;AAIvD,OAAO,SAAAC,sBAAAC,IAAA;EAAA,MAAAC,CAAA,GAAAC,EAAA;EACL,MAAAC,SAAA,GAAkBN,YAAY,CAAC,CAAC;EAChC,MAAAO,WAAA,GAAoBb,cAAc,CAAC,CAAC;EAAA,IAAAc,wBAAA;EAAA,IAAAC,EAAA;EAAA,IAAAL,CAAA,QAAAD,IAAA;IACpCK,wBAAA,GAAiCT,2BAA2B,CAACI,IAAI,CAAC;IACrCM,EAAA,GAAAR,kBAAkB,CAACO,wBAAwB,CAAC;IAAAJ,CAAA,MAAAD,IAAA;IAAAC,CAAA,MAAAI,wBAAA;IAAAJ,CAAA,MAAAK,EAAA;EAAA;IAAAD,wBAAA,GAAAJ,CAAA;IAAAK,EAAA,GAAAL,CAAA;EAAA;EAAzE,MAAAM,oBAAA,GAA6BD,EAA4C;EAAA,IAAAE,EAAA;EAAA,IAAAP,CAAA,QAAAE,SAAA,IAAAF,CAAA,QAAAI,wBAAA;IAE/CG,EAAA,SAAAC,EAAA;MACxB,IAAI,CAACA,EAAE;QAAA;MAAA;MAEP;QAAAC,IAAA,EAAAC;MAAA,IAA2BN,wBAAwB;MACnD;QAAAK;MAAA,IAAiB,MAAMP,SAAS,CAAAS,IAAK,CAAAC,GAAI,CAAoC;QAAAC,GAAA,EACtE,qBAAqBL,EAAE,EAAE;QAAAC,IAAA,EACxB;UAAAK,MAAA,EACIJ,QAAQ,CAAAI,MAAO;UAAAC,OAAA,EACdL,QAAQ,CAAAK;QACnB;MACF,CAAC,CAAC;MAAA,OAEKN,IAAI;IAAA,CACZ;IAAAT,CAAA,MAAAE,SAAA;IAAAF,CAAA,MAAAI,wBAAA;IAAAJ,CAAA,MAAAO,EAAA;EAAA;IAAAA,EAAA,GAAAP,CAAA;EAAA;EAbD,MAAAgB,iBAAA,GAA0BT,EAazB;EAAA,IAAAU,EAAA;EAAA,IAAAjB,CAAA,QAAAM,oBAAA,IAAAN,CAAA,QAAAG,WAAA;IAEsBc,EAAA,SAAAC,YAAA;MACrB,IAAI,CAACA,YAAY,CAAAV,EAAG;QAAA;MAAA;MAEpBL,WAAW,CAAAgB,YAAa,CAAYb,oBAAoB,EAAEc,IAAA,IACxD1B,+BAA+B,CAAC;QAAAe,IAAA,EACxBW,IAAI;QAAAC,MAAA,EACFH,YAAY;QAAAI,aAAA,EACLC;MAGjB,CAAC,CACH,CAAC;IAAA,CACF;IAAAvB,CAAA,MAAAM,oBAAA;IAAAN,CAAA,MAAAG,WAAA;IAAAH,CAAA,MAAAiB,EAAA;EAAA;IAAAA,EAAA,GAAAjB,CAAA;EAAA;EAZD,MAAAwB,cAAA,GAAuBP,EAYtB;EAAA,IAAAQ,EAAA;EAAA,IAAAzB,CAAA,QAAAM,oBAAA,IAAAN,CAAA,SAAAG,WAAA;IAEkBsB,EAAA,SAAAC,cAAA;MACjB,IAAI,CAACR,cAAY,CAAAV,EAAG;QAAA;MAAA;MAEpBL,WAAW,CAAAgB,YAAa,CAAYb,oBAAoB,EAAEqB,MAAA,IACxDnC,uBAAuB,CAAC;QAAAiB,IAAA,EAChBW,MAAI;QAAAC,MAAA,EACFH,cAAY;QAAAI,aAAA,EACLM;MAGjB,CAAC,CACH,CAAC;IAAA,CACF;IAAA5B,CAAA,MAAAM,oBAAA;IAAAN,CAAA,OAAAG,WAAA;IAAAH,CAAA,OAAAyB,EAAA;EAAA;IAAAA,EAAA,GAAAzB,CAAA;EAAA;EAZD,MAAA6B,UAAA,GAAmBJ,EAYlB;EAAA,IAAAK,EAAA;EAAA,IAAA9B,CAAA,SAAAM,oBAAA,IAAAN,CAAA,SAAAG,WAAA;IAEiB2B,EAAA,SAAAC,MAAA;MAChB5B,WAAW,CAAAgB,YAAa,CAAYb,oBAAoB,EAAE0B,MAAA,IACxDvC,2BAA2B,CAAC;QAAAgB,IAAA,EACpBW,MAAI;QAAAE,aAAA,EACKW,QAAA,KAAW;UAAA,GAAKZ,QAAM;UAAA,GAAKU;QAAO,CAAC;MACpD,CAAC,CACH,CAAC;IAAA,CACF;IAAA/B,CAAA,OAAAM,oBAAA;IAAAN,CAAA,OAAAG,WAAA;IAAAH,CAAA,OAAA8B,EAAA;EAAA;IAAAA,EAAA,GAAA9B,CAAA;EAAA;EAPD,MAAAkC,SAAA,GAAkBJ,EAOjB;EAAA,IAAAK,EAAA;EAAA,IAAAnC,CAAA,SAAAgB,iBAAA,IAAAhB,CAAA,SAAA6B,UAAA;IAEsBM,EAAA,SAAAC,EAAA;MAAO;QAAA5B,EAAA,EAAA6B;MAAA,IAAAD,EAAsB;MAClD,MAAAE,cAAA,GAA2C,MAAMtB,iBAAiB,CAACR,IAAE,CAAC,CAAA+B,KAAM,CAACC,MAAM,CAAC;MACpF,IAAI,CAACtB,cAAY,CAAAV,EAAG;QAAA;MAAA;MAEpBqB,UAAU,CAACX,cAAY,CAAC;IAAA,CACzB;IAAAlB,CAAA,OAAAgB,iBAAA;IAAAhB,CAAA,OAAA6B,UAAA;IAAA7B,CAAA,OAAAmC,EAAA;EAAA;IAAAA,EAAA,GAAAnC,CAAA;EAAA;EALD,MAAAyC,cAAA,GAAuBN,EAKtB;EAAA,IAAAC,EAAA;EAAA,IAAApC,CAAA,SAAAgB,iBAAA,IAAAhB,CAAA,SAAAwB,cAAA;IAE8BY,EAAA,SAAAM,EAAA;MAAO;QAAAlC,EAAA,EAAAmC;MAAA,IAAAD,EAAsB;MAC1D,MAAAE,cAAA,GAA2C,MAAM5B,iBAAiB,CAACR,IAAE,CAAC,CAAA+B,KAAM,CAACM,MAAM,CAAC;MACpF,IAAI,CAAC3B,cAAY,CAAAV,EAAG;QAAA;MAAA;MAEpBgB,cAAc,CAACN,cAAY,CAAC;IAAA,CAC7B;IAAAlB,CAAA,OAAAgB,iBAAA;IAAAhB,CAAA,OAAAwB,cAAA;IAAAxB,CAAA,OAAAoC,EAAA;EAAA;IAAAA,EAAA,GAAApC,CAAA;EAAA;EALD,MAAA8C,sBAAA,GAA+BV,EAK9B;EAAA,IAAAM,EAAA;EAAA,IAAA1C,CAAA,SAAAM,oBAAA,IAAAN,CAAA,SAAAG,WAAA;IAEiCuC,EAAA,GAAAK,EAAA;MAAC;QAAAvC,EAAA,EAAAwC;MAAA,IAAAD,EAAsB;MACvD,IAAI,CAACvC,IAAE;QAAA;MAAA;MAEPL,WAAW,CAAAgB,YAAa,CAAYb,oBAAoB,EAAE2C,MAAA,IACxD1D,uBAAuB,CAAC;QAAAkB,IAAA,EAChBW,MAAI;QAAAC,MAAA,EACF;UAAAb,EAAA,EAAEA;QAAG;MACf,CAAC,CACH,CAAC;IAAA,CACF;IAAAR,CAAA,OAAAM,oBAAA;IAAAN,CAAA,OAAAG,WAAA;IAAAH,CAAA,OAAA0C,EAAA;EAAA;IAAAA,EAAA,GAAA1C,CAAA;EAAA;EATD,MAAAkD,yBAAA,GAAkCR,EASjC;EAAA,IAAAK,EAAA;EAAA,IAAA/C,CAAA,SAAAM,oBAAA,IAAAN,CAAA,SAAAG,WAAA;IAOa4C,EAAA,GAAAA,CAAA,KAAM5C,WAAW,CAAAgD,iBAAkB,CAAC;MAAAC,QAAA,EAAY9C;IAAqB,CAAC,CAAC;IAAAN,CAAA,OAAAM,oBAAA;IAAAN,CAAA,OAAAG,WAAA;IAAAH,CAAA,OAAA+C,EAAA;EAAA;IAAAA,EAAA,GAAA/C,CAAA;EAAA;EAAA,IAAAqD,EAAA;EAAA,IAAArD,CAAA,SAAAyC,cAAA,IAAAzC,CAAA,SAAA8C,sBAAA,IAAA9C,CAAA,SAAAkD,yBAAA,IAAAlD,CAAA,SAAA+C,EAAA,IAAA/C,CAAA,SAAAkC,SAAA,IAAAlC,CAAA,SAAAwB,cAAA;IAL9E6B,EAAA;MAAAC,MAAA,EACG9B,cAAc;MAAA+B,OAAA,EACbL,yBAAyB;MAAAM,WAAA,EACrBV,sBAAsB;MAAAW,WAAA,EACtBhB,cAAc;MAAAiB,UAAA,EACfX,EAAuE;MAAAhB,MAAA,EAC3EP,cAAc;MAAAU;IAExB,CAAC;IAAAlC,CAAA,OAAAyC,cAAA;IAAAzC,CAAA,OAAA8C,sBAAA;IAAA9C,CAAA,OAAAkD,yBAAA;IAAAlD,CAAA,OAAA+C,EAAA;IAAA/C,CAAA,OAAAkC,SAAA;IAAAlC,CAAA,OAAAwB,cAAA;IAAAxB,CAAA,OAAAqD,EAAA;EAAA;IAAAA,EAAA,GAAArD,CAAA;EAAA;EAAA,OARMqD,EAQN;AAAA;AA3FI,SAAAR,OAAAc,GAAA;EAAA,OAkE+EC,GAAC;AAAA;AAlEhF,SAAApB,OAAAoB,CAAA;EAAA,OA2D+EA,CAAC;AAAA;AA3DhF,SAAAhC,OAAAiC,QAAA,EAAAC,SAAA;EAAA,OA2CU;IAAA,GAAKC,SAAO;IAAA,GAAK1C;EAAO,CAAC;AAAA;AA3CnC,SAAAE,MAAAF,MAAA,EAAA0C,OAAA;EAAA,OA6BU;IAAA,GAAKA,OAAO;IAAA,GAAK1C;EAAO,CAAC;AAAA","ignoreList":[]}
1
+ {"version":3,"file":"use_conversations_cache.js","names":["useQueryClient","deleteRecordInPagesData","updateRecordInPagesData","updateAllRecordsInPagesData","updateOrCreateRecordInPagesData","getConversationsRequestArgs","useApiClient","getRequestQueryKey","useConversationsCache","args","$","_c","apiClient","queryClient","conversationsRequestArgs","t0","conversationQueryKey","t1","id","url","data","conversations","chat","get","where","perPage","fetchConversation","t2","conversation","setQueryData","prev","record","processRecord","_temp","updateOrCreate","t3","conversation_0","prev_0","_temp2","updateOnly","t4","update","prev_1","record_1","updateAll","t5","t6","id_0","prev_2","handleConversationDestroy","t7","id_1","conversation_1","catch","_temp3","fetchAndUpdate","t8","id_2","fetchAndSync","invalidateQueries","queryKey","t9","create","destroy","fetchSync","fetchUpdate","invalidate","record_0","current_0","current"],"sources":["../../src/hooks/use_conversations_cache.ts"],"sourcesContent":["import { InfiniteData, useQueryClient } from '@tanstack/react-query'\nimport { ApiCollection, ConversationResource } from '../types'\nimport {\n deleteRecordInPagesData,\n updateRecordInPagesData,\n updateAllRecordsInPagesData,\n updateOrCreateRecordInPagesData,\n} from '../utils'\nimport { ConversationRequestArgs, getConversationsRequestArgs } from '../utils/request/conversation'\nimport { useApiClient } from './use_api_client'\nimport { getRequestQueryKey } from './use_suspense_api'\n\ntype QueryData = InfiniteData<ApiCollection<ConversationResource>>\n\nexport function useConversationsCache(args?: Partial<ConversationRequestArgs>) {\n const apiClient = useApiClient()\n const queryClient = useQueryClient()\n const conversationsRequestArgs = getConversationsRequestArgs(args)\n const conversationQueryKey = getRequestQueryKey(conversationsRequestArgs)\n\n const fetchConversation = async (id: number) => {\n if (!id) return\n\n const { url, data } = conversationsRequestArgs\n const { data: conversations } = await apiClient.chat.get<ApiCollection<ConversationResource>>({\n url,\n data: { ...data, where: { ...data.where, id }, perPage: 1 },\n })\n\n return conversations[0]\n }\n\n const updateOrCreate = async (conversation: ConversationResource) => {\n if (!conversation.id) return\n\n queryClient.setQueryData<QueryData>(conversationQueryKey, prev =>\n updateOrCreateRecordInPagesData({\n data: prev,\n record: conversation,\n processRecord: (record, current) => {\n return { ...current, ...record }\n },\n })\n )\n }\n\n const updateOnly = async (conversation: ConversationResource) => {\n if (!conversation.id) return\n\n queryClient.setQueryData<QueryData>(conversationQueryKey, prev =>\n updateRecordInPagesData({\n data: prev,\n record: conversation,\n processRecord: (record, current) => {\n return { ...current, ...record }\n },\n })\n )\n }\n\n const updateAll = async (update: Partial<ConversationResource>) => {\n queryClient.setQueryData<QueryData>(conversationQueryKey, prev =>\n updateAllRecordsInPagesData({\n data: prev,\n processRecord: record => ({ ...record, ...update }),\n })\n )\n }\n\n const handleConversationDestroy = ({ id }: { id: number }) => {\n if (!id) return\n\n queryClient.setQueryData<QueryData>(conversationQueryKey, prev =>\n deleteRecordInPagesData({\n data: prev,\n record: { id },\n })\n )\n }\n\n const fetchAndUpdate = async ({ id }: { id: number }) => {\n const conversation = await fetchConversation(id).catch(() => undefined)\n if (!conversation) return\n\n updateOnly(conversation)\n }\n\n const fetchAndSync = async ({ id }: { id: number }) => {\n let conversation: ConversationResource | undefined\n try {\n conversation = await fetchConversation(id)\n } catch {\n return\n }\n\n if (conversation) {\n updateOrCreate(conversation)\n } else {\n handleConversationDestroy({ id })\n }\n }\n\n return {\n create: updateOrCreate,\n destroy: handleConversationDestroy,\n fetchSync: fetchAndSync,\n fetchUpdate: fetchAndUpdate,\n invalidate: () => queryClient.invalidateQueries({ queryKey: conversationQueryKey }),\n update: updateOrCreate,\n updateAll,\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -31,7 +31,7 @@ export function useConversationsJoltEvents() {
31
31
  idempotentKey: e.data.data.last_message_idempotent_key
32
32
  });
33
33
  }
34
- cache.fetchUpdate({
34
+ cache.fetchSync({
35
35
  id: e.data.data.id
36
36
  });
37
37
  };
@@ -45,7 +45,7 @@ export function useConversationsJoltEvents() {
45
45
  useJoltEvent(joltChannel, "conversation.updated", t0);
46
46
  let t1;
47
47
  if ($[4] !== cache) {
48
- t1 = e_0 => cache.fetchCreate({
48
+ t1 = e_0 => cache.fetchSync({
49
49
  id: e_0.data.data.id
50
50
  });
51
51
  $[4] = cache;
@@ -1 +1 @@
1
- {"version":3,"file":"use_conversations_jolt_events.js","names":["useConversationsContext","completeMessageCreationConversationTracking","useApiGet","useApiClient","useConversationsCache","currentPersonRequestArgs","useCurrentPersonCache","useJoltChannel","useJoltEvent","useCurrentPerson","useConversationsJoltEvents","$","_c","data","currentPerson","args","cache","currentPersonCache","apiClient","enabled","id","joltChannel","t0","e","last_message_idempotent_key","last_message_author_id","idempotentKey","fetchUpdate","t1","e_0","fetchCreate","t2","e_1","destroy","invalidate"],"sources":["../../src/hooks/use_conversations_jolt_events.ts"],"sourcesContent":["import { useConversationsContext } from '../contexts/conversations_context'\nimport { CurrentPersonResource } from '../types'\nimport { JoltConversationEvent } from '../types/jolt_events'\nimport { completeMessageCreationConversationTracking } from '../utils/performance_tracking'\nimport { useApiGet } from './use_api'\nimport { useApiClient } from './use_api_client'\nimport { useConversationsCache } from './use_conversations_cache'\nimport { currentPersonRequestArgs, useCurrentPersonCache } from './use_current_person'\nimport { useJoltChannel, useJoltEvent } from './use_jolt'\n\nconst useCurrentPerson = () => {\n return useApiGet<CurrentPersonResource>(currentPersonRequestArgs)\n}\n\nexport function useConversationsJoltEvents() {\n const { data: currentPerson } = useCurrentPerson()\n const { args } = useConversationsContext()\n const cache = useConversationsCache(args)\n const currentPersonCache = useCurrentPersonCache()\n const apiClient = useApiClient()\n const enabled = currentPerson?.id ? true : false\n const joltChannel = useJoltChannel(`chat.people.${currentPerson?.id}`, enabled)\n\n useJoltEvent(joltChannel, 'conversation.updated', (e: JoltConversationEvent) => {\n if (\n e.data.data.last_message_idempotent_key &&\n e.data.data.last_message_author_id === currentPerson?.id\n ) {\n completeMessageCreationConversationTracking({\n apiClient,\n idempotentKey: e.data.data.last_message_idempotent_key,\n })\n }\n cache.fetchUpdate({ id: e.data.data.id })\n })\n useJoltEvent(joltChannel, 'conversation.created', (e: JoltConversationEvent) =>\n cache.fetchCreate({ id: e.data.data.id })\n )\n useJoltEvent(joltChannel, 'conversation.destroyed', (e: JoltConversationEvent) =>\n cache.destroy({ id: e.data.data.id })\n )\n\n useJoltEvent(joltChannel, 'STREAM_USER_UPDATED', currentPersonCache.invalidate) // Would be nice to have a non-stream chat event\n useJoltEvent(joltChannel, 'conversation.read', currentPersonCache.invalidate)\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"use_conversations_jolt_events.js","names":["useConversationsContext","completeMessageCreationConversationTracking","useApiGet","useApiClient","useConversationsCache","currentPersonRequestArgs","useCurrentPersonCache","useJoltChannel","useJoltEvent","useCurrentPerson","useConversationsJoltEvents","$","_c","data","currentPerson","args","cache","currentPersonCache","apiClient","enabled","id","joltChannel","t0","e","last_message_idempotent_key","last_message_author_id","idempotentKey","fetchSync","t1","e_0","t2","e_1","destroy","invalidate"],"sources":["../../src/hooks/use_conversations_jolt_events.ts"],"sourcesContent":["import { useConversationsContext } from '../contexts/conversations_context'\nimport { CurrentPersonResource } from '../types'\nimport { JoltConversationEvent } from '../types/jolt_events'\nimport { completeMessageCreationConversationTracking } from '../utils/performance_tracking'\nimport { useApiGet } from './use_api'\nimport { useApiClient } from './use_api_client'\nimport { useConversationsCache } from './use_conversations_cache'\nimport { currentPersonRequestArgs, useCurrentPersonCache } from './use_current_person'\nimport { useJoltChannel, useJoltEvent } from './use_jolt'\n\nconst useCurrentPerson = () => {\n return useApiGet<CurrentPersonResource>(currentPersonRequestArgs)\n}\n\nexport function useConversationsJoltEvents() {\n const { data: currentPerson } = useCurrentPerson()\n const { args } = useConversationsContext()\n const cache = useConversationsCache(args)\n const currentPersonCache = useCurrentPersonCache()\n const apiClient = useApiClient()\n const enabled = currentPerson?.id ? true : false\n const joltChannel = useJoltChannel(`chat.people.${currentPerson?.id}`, enabled)\n\n useJoltEvent(joltChannel, 'conversation.updated', (e: JoltConversationEvent) => {\n if (\n e.data.data.last_message_idempotent_key &&\n e.data.data.last_message_author_id === currentPerson?.id\n ) {\n completeMessageCreationConversationTracking({\n apiClient,\n idempotentKey: e.data.data.last_message_idempotent_key,\n })\n }\n cache.fetchSync({ id: e.data.data.id })\n })\n useJoltEvent(joltChannel, 'conversation.created', (e: JoltConversationEvent) =>\n cache.fetchSync({ id: e.data.data.id })\n )\n useJoltEvent(joltChannel, 'conversation.destroyed', (e: JoltConversationEvent) =>\n cache.destroy({ id: e.data.data.id })\n )\n\n useJoltEvent(joltChannel, 'STREAM_USER_UPDATED', currentPersonCache.invalidate) // Would be nice to have a non-stream chat event\n useJoltEvent(joltChannel, 'conversation.read', currentPersonCache.invalidate)\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"use_jolt.d.ts","sourceRoot":"","sources":["../../src/hooks/use_jolt.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,6BAA6B,CAAA;AACpD,OAAO,EACL,aAAa,EAEd,MAAM,uDAAuD,CAAA;AAC9D,OAAO,EAEL,gBAAgB,EACjB,MAAM,yDAAyD,CAAA;AAMhE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAA;AAWnE,eAAO,MAAM,aAAa,QAAO,UAAU,GAAG,SAqG7C,CAAA;AA+CD,eAAO,MAAM,qBAAqB,YAQjC,CAAA;AAED,wBAAgB,cAAc,CAC5B,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,OAAc,GACtB,gBAAgB,GAAG,SAAS,GAAG,IAAI,CAoCrC;AAED,KAAK,cAAc,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK,IAAI,CAAA;AAE5C,wBAAgB,YAAY,CAAC,CAAC,SAAS,aAAa,EAClD,OAAO,EAAE,gBAAgB,GAAG,SAAS,GAAG,IAAI,EAC5C,SAAS,EAAE,uBAAuB,EAClC,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC,QAO5B"}
1
+ {"version":3,"file":"use_jolt.d.ts","sourceRoot":"","sources":["../../src/hooks/use_jolt.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,6BAA6B,CAAA;AACpD,OAAO,EACL,aAAa,EAEd,MAAM,uDAAuD,CAAA;AAC9D,OAAO,EAEL,gBAAgB,EACjB,MAAM,yDAAyD,CAAA;AAMhE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAA;AAWnE,eAAO,MAAM,aAAa,QAAO,UAAU,GAAG,SAqG7C,CAAA;AA+CD,eAAO,MAAM,qBAAqB,YAQjC,CAAA;AAqBD,wBAAgB,cAAc,CAC5B,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,OAAc,GACtB,gBAAgB,GAAG,SAAS,GAAG,IAAI,CAyCrC;AAED,KAAK,cAAc,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK,IAAI,CAAA;AAE5C,wBAAgB,YAAY,CAAC,CAAC,SAAS,aAAa,EAClD,OAAO,EAAE,gBAAgB,GAAG,SAAS,GAAG,IAAI,EAC5C,SAAS,EAAE,uBAAuB,EAClC,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC,QAO5B"}
@@ -240,8 +240,24 @@ export const useJoltForegroundPing = () => {
240
240
  }
241
241
  useEffect(t0, t1);
242
242
  };
243
+ const channelConsumers = new WeakMap();
244
+ const retainChannel = (jolt, channelName) => {
245
+ const counts = channelConsumers.get(jolt) ?? new Map();
246
+ channelConsumers.set(jolt, counts);
247
+ counts.set(channelName, (counts.get(channelName) ?? 0) + 1);
248
+ };
249
+ const releaseChannel = (jolt, channelName) => {
250
+ const counts = channelConsumers.get(jolt);
251
+ const remaining = (counts?.get(channelName) ?? 1) - 1;
252
+ if (remaining > 0) {
253
+ counts?.set(channelName, remaining);
254
+ } else {
255
+ counts?.delete(channelName);
256
+ }
257
+ return remaining;
258
+ };
243
259
  export function useJoltChannel(channelName, t0) {
244
- const $ = _c(16);
260
+ const $ = _c(18);
245
261
  const enabled = t0 === undefined ? true : t0;
246
262
  const jolt = useJoltClient();
247
263
  const queryClient = useQueryClient();
@@ -310,15 +326,27 @@ export function useJoltChannel(channelName, t0) {
310
326
  const handleUnsubscribe = t4;
311
327
  let t5;
312
328
  let t6;
313
- if ($[13] !== handleUnsubscribe) {
314
- t5 = () => handleUnsubscribe;
315
- t6 = [handleUnsubscribe];
316
- $[13] = handleUnsubscribe;
317
- $[14] = t5;
318
- $[15] = t6;
329
+ if ($[13] !== channelName || $[14] !== handleUnsubscribe || $[15] !== jolt) {
330
+ t5 = () => {
331
+ if (!jolt) {
332
+ return;
333
+ }
334
+ retainChannel(jolt, channelName);
335
+ return () => {
336
+ if (releaseChannel(jolt, channelName) === 0) {
337
+ handleUnsubscribe();
338
+ }
339
+ };
340
+ };
341
+ t6 = [jolt, channelName, handleUnsubscribe];
342
+ $[13] = channelName;
343
+ $[14] = handleUnsubscribe;
344
+ $[15] = jolt;
345
+ $[16] = t5;
346
+ $[17] = t6;
319
347
  } else {
320
- t5 = $[14];
321
- t6 = $[15];
348
+ t5 = $[16];
349
+ t6 = $[17];
322
350
  }
323
351
  useEffect(t5, t6);
324
352
  return subscription;
@@ -1 +1 @@
1
- {"version":3,"file":"use_jolt.js","names":["JoltClient","useQuery","useQueryClient","useSuspenseQuery","useCallback","useEffect","useMemo","AppState","useChatContext","Client","Uri","throwResponseError","FIVE_SECONDS","useJoltClient","$","_c","session","sessionAccessToken","token","access_token","queryClient","t0","uri","t1","root","api","defaultHeaders","headers","version","apiClient","t2","fetchQuery","queryKey","queryFn","post","url","data","type","attributes","catch","staleTime","fetchJoltToken","t3","Symbol","for","t4","then","_temp","Infinity","gcTime","refetchOnWindowFocus","wssUrl","t5","_temp2","fetchAuthTokenFn","t6","channel","connectionId","cid","_temp3","_temp4","fetchSubscribeToken","t7","channel_0","connectionId_0","options","fetchSubscribeTokenFn","t8","Boolean","t9","t10","logToConsole","t11","enabled","joltClient","pingSubscribedJoltClients","getQueryCache","findAll","forEach","query","state","subscriptions","length","ping","foregroundPingListeners","Map","subscribeToForegroundPing","existing","get","mounts","previousState","currentState","subscription","addEventListener","nextState","set","remove","unsubscribeFromForegroundPing","delete","useJoltForegroundPing","useJoltChannel","channelName","undefined","jolt","ready","alreadySubscribed","find","c","subscribe","handleSubscribe","removeQueries","exact","unsubscribe","handleUnsubscribe","useJoltEvent","eventName","callback","_temp5","bind","e","res","res_0","id","res_1","res_2","console","error"],"sources":["../../src/hooks/use_jolt.ts"],"sourcesContent":["import JoltClient from '@planningcenter/jolt-client'\nimport {\n CustomMessage,\n FetchAuthToken,\n} from '@planningcenter/jolt-client/dist/types/JoltConnection'\nimport {\n FetchSubscribeToken,\n JoltSubscription,\n} from '@planningcenter/jolt-client/dist/types/JoltSubscription'\nimport { QueryClient, useQuery, useQueryClient, useSuspenseQuery } from '@tanstack/react-query'\nimport { useCallback, useEffect, useMemo } from 'react'\nimport { AppState, AppStateStatus } from 'react-native'\nimport { useChatContext } from '../contexts/chat_context'\nimport { ApiResource } from '../types'\nimport type { JoltSubscriptionPattern } from '../types/jolt_events'\nimport { Client, Uri } from '../utils'\nimport { throwResponseError } from '../utils/response_error'\nimport { FIVE_SECONDS } from '../utils/time'\n\ninterface JoltResponse {\n type: 'JoltToken'\n id: string\n wssUrl: string\n}\n\nexport const useJoltClient = (): JoltClient | undefined => {\n const { session } = useChatContext()\n const sessionAccessToken = session.token?.access_token\n const queryClient = useQueryClient()\n const uri = useMemo(() => new Uri({ session }), [session])\n const apiClient = useMemo(\n () =>\n new Client({\n root: uri.api(`/chat/v2`),\n defaultHeaders: uri.headers,\n version: '2018-11-01',\n }),\n [uri]\n )\n\n const fetchJoltToken = async () => {\n return queryClient.fetchQuery({\n queryKey: ['jolt-token'],\n queryFn: () => {\n return apiClient\n .post<ApiResource<JoltResponse>>({\n url: '/me/jolt_authorize',\n data: {\n data: {\n type: 'JoltToken',\n attributes: {},\n },\n },\n })\n .catch(throwResponseError)\n },\n staleTime: FIVE_SECONDS,\n })\n }\n\n /** The wssUrl is static and doesn't change so we can cache it to infinity and beyond */\n const { data: wssUrl } = useSuspenseQuery<string>({\n queryKey: ['wss-url'],\n queryFn: () => fetchJoltToken().then(res => res.data.wssUrl),\n staleTime: Infinity,\n gcTime: Infinity,\n refetchOnWindowFocus: false,\n })\n\n const fetchAuthTokenFn: FetchAuthToken = () => {\n return queryClient.fetchQuery({\n queryKey: ['jolt-auth-token'],\n queryFn: () => fetchJoltToken().then(res => res.data.id),\n })\n }\n\n const fetchSubscribeToken: FetchSubscribeToken = (channel: string, connectionId: string) => {\n return apiClient\n .post<ApiResource<JoltResponse>>({\n url: '/me/jolt_subscribe',\n data: {\n data: {\n type: 'JoltSubscribeToken',\n attributes: { channel, cid: connectionId },\n },\n },\n })\n .then(res => res.data.id)\n .catch((res: unknown) => {\n console.error('failed to subscribe to Jolt channel', res)\n return ''\n })\n }\n\n const fetchSubscribeTokenFn: FetchSubscribeToken = (\n channel: string,\n connectionId: string,\n options\n ) => {\n return queryClient.fetchQuery({\n queryKey: ['jolt-subscribe-token', channel, connectionId],\n queryFn: () => fetchSubscribeToken(channel, connectionId, options),\n })\n }\n\n const { data: joltClient } = useQuery({\n enabled: Boolean(wssUrl),\n queryKey: ['jolt-client', wssUrl, sessionAccessToken],\n queryFn: async () => {\n if (!wssUrl) return undefined\n\n return new JoltClient(\n wssUrl,\n {\n fetchAuthTokenFn,\n fetchSubscribeTokenFn,\n },\n { logToConsole: false }\n )\n },\n refetchOnWindowFocus: false,\n staleTime: Infinity,\n gcTime: Infinity,\n })\n\n return joltClient\n}\n\nconst pingSubscribedJoltClients = (queryClient: QueryClient) => {\n queryClient\n .getQueryCache()\n .findAll({ queryKey: ['jolt-client'] })\n .forEach(query => {\n const joltClient = query.state.data as JoltClient | undefined\n if (!joltClient || joltClient.subscriptions.length === 0) return\n\n try {\n joltClient.ping()\n } catch {}\n })\n}\n\nconst foregroundPingListeners = new Map<QueryClient, { mounts: number; remove: () => void }>()\n\nconst subscribeToForegroundPing = (queryClient: QueryClient) => {\n const existing = foregroundPingListeners.get(queryClient)\n if (existing) {\n existing.mounts += 1\n return\n }\n\n let previousState: AppStateStatus = AppState.currentState\n const subscription = AppState.addEventListener('change', nextState => {\n if (nextState === 'active' && previousState !== 'active') {\n pingSubscribedJoltClients(queryClient)\n }\n previousState = nextState\n })\n\n foregroundPingListeners.set(queryClient, { mounts: 1, remove: () => subscription.remove() })\n}\n\nconst unsubscribeFromForegroundPing = (queryClient: QueryClient) => {\n const existing = foregroundPingListeners.get(queryClient)\n if (!existing) return\n\n existing.mounts -= 1\n if (existing.mounts > 0) return\n\n existing.remove()\n foregroundPingListeners.delete(queryClient)\n}\n\nexport const useJoltForegroundPing = () => {\n const queryClient = useQueryClient()\n\n useEffect(() => {\n subscribeToForegroundPing(queryClient)\n\n return () => unsubscribeFromForegroundPing(queryClient)\n }, [queryClient])\n}\n\nexport function useJoltChannel(\n channelName: string,\n enabled: boolean = true\n): JoltSubscription | undefined | null {\n const jolt = useJoltClient()\n const queryClient = useQueryClient()\n const ready = Boolean(jolt) && enabled\n\n const handleSubscribe = useCallback(async () => {\n if (!jolt) return null\n\n // If the subscription already exists, we don't need to subscribe again\n const alreadySubscribed = jolt.subscriptions.find(c => c.channel === channelName)\n if (alreadySubscribed) return alreadySubscribed\n\n return jolt.subscribe(channelName)\n }, [channelName, jolt])\n\n const { data: subscription } = useQuery<JoltSubscription | null>({\n queryKey: ['jolt-subscription', channelName],\n queryFn: handleSubscribe,\n refetchOnWindowFocus: false,\n enabled: ready,\n })\n\n const handleUnsubscribe = useCallback(() => {\n queryClient.removeQueries({\n queryKey: ['jolt-subscription', channelName],\n exact: true,\n })\n\n jolt?.unsubscribe(channelName)\n }, [queryClient, channelName, jolt])\n\n useEffect(() => {\n return handleUnsubscribe\n }, [handleUnsubscribe])\n\n return subscription\n}\n\ntype UserCallbackFn<T> = (_event: T) => void\n\nexport function useJoltEvent<T extends CustomMessage>(\n channel: JoltSubscription | undefined | null,\n eventName: JoltSubscriptionPattern,\n callback: UserCallbackFn<T>\n) {\n useEffect(() => {\n if (!channel) return () => {}\n\n return channel.bind(eventName, e => callback(e as T))\n }, [channel, eventName, callback])\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"use_jolt.js","names":["JoltClient","useQuery","useQueryClient","useSuspenseQuery","useCallback","useEffect","useMemo","AppState","useChatContext","Client","Uri","throwResponseError","FIVE_SECONDS","useJoltClient","$","_c","session","sessionAccessToken","token","access_token","queryClient","t0","uri","t1","root","api","defaultHeaders","headers","version","apiClient","t2","fetchQuery","queryKey","queryFn","post","url","data","type","attributes","catch","staleTime","fetchJoltToken","t3","Symbol","for","t4","then","_temp","Infinity","gcTime","refetchOnWindowFocus","wssUrl","t5","_temp2","fetchAuthTokenFn","t6","channel","connectionId","cid","_temp3","_temp4","fetchSubscribeToken","t7","channel_0","connectionId_0","options","fetchSubscribeTokenFn","t8","Boolean","t9","t10","logToConsole","t11","enabled","joltClient","pingSubscribedJoltClients","getQueryCache","findAll","forEach","query","state","subscriptions","length","ping","foregroundPingListeners","Map","subscribeToForegroundPing","existing","get","mounts","previousState","currentState","subscription","addEventListener","nextState","set","remove","unsubscribeFromForegroundPing","delete","useJoltForegroundPing","channelConsumers","WeakMap","retainChannel","jolt","channelName","counts","releaseChannel","remaining","useJoltChannel","undefined","ready","alreadySubscribed","find","c","subscribe","handleSubscribe","removeQueries","exact","unsubscribe","handleUnsubscribe","useJoltEvent","eventName","callback","_temp5","bind","e","res","res_0","id","res_1","res_2","console","error"],"sources":["../../src/hooks/use_jolt.ts"],"sourcesContent":["import JoltClient from '@planningcenter/jolt-client'\nimport {\n CustomMessage,\n FetchAuthToken,\n} from '@planningcenter/jolt-client/dist/types/JoltConnection'\nimport {\n FetchSubscribeToken,\n JoltSubscription,\n} from '@planningcenter/jolt-client/dist/types/JoltSubscription'\nimport { QueryClient, useQuery, useQueryClient, useSuspenseQuery } from '@tanstack/react-query'\nimport { useCallback, useEffect, useMemo } from 'react'\nimport { AppState, AppStateStatus } from 'react-native'\nimport { useChatContext } from '../contexts/chat_context'\nimport { ApiResource } from '../types'\nimport type { JoltSubscriptionPattern } from '../types/jolt_events'\nimport { Client, Uri } from '../utils'\nimport { throwResponseError } from '../utils/response_error'\nimport { FIVE_SECONDS } from '../utils/time'\n\ninterface JoltResponse {\n type: 'JoltToken'\n id: string\n wssUrl: string\n}\n\nexport const useJoltClient = (): JoltClient | undefined => {\n const { session } = useChatContext()\n const sessionAccessToken = session.token?.access_token\n const queryClient = useQueryClient()\n const uri = useMemo(() => new Uri({ session }), [session])\n const apiClient = useMemo(\n () =>\n new Client({\n root: uri.api(`/chat/v2`),\n defaultHeaders: uri.headers,\n version: '2018-11-01',\n }),\n [uri]\n )\n\n const fetchJoltToken = async () => {\n return queryClient.fetchQuery({\n queryKey: ['jolt-token'],\n queryFn: () => {\n return apiClient\n .post<ApiResource<JoltResponse>>({\n url: '/me/jolt_authorize',\n data: {\n data: {\n type: 'JoltToken',\n attributes: {},\n },\n },\n })\n .catch(throwResponseError)\n },\n staleTime: FIVE_SECONDS,\n })\n }\n\n /** The wssUrl is static and doesn't change so we can cache it to infinity and beyond */\n const { data: wssUrl } = useSuspenseQuery<string>({\n queryKey: ['wss-url'],\n queryFn: () => fetchJoltToken().then(res => res.data.wssUrl),\n staleTime: Infinity,\n gcTime: Infinity,\n refetchOnWindowFocus: false,\n })\n\n const fetchAuthTokenFn: FetchAuthToken = () => {\n return queryClient.fetchQuery({\n queryKey: ['jolt-auth-token'],\n queryFn: () => fetchJoltToken().then(res => res.data.id),\n })\n }\n\n const fetchSubscribeToken: FetchSubscribeToken = (channel: string, connectionId: string) => {\n return apiClient\n .post<ApiResource<JoltResponse>>({\n url: '/me/jolt_subscribe',\n data: {\n data: {\n type: 'JoltSubscribeToken',\n attributes: { channel, cid: connectionId },\n },\n },\n })\n .then(res => res.data.id)\n .catch((res: unknown) => {\n console.error('failed to subscribe to Jolt channel', res)\n return ''\n })\n }\n\n const fetchSubscribeTokenFn: FetchSubscribeToken = (\n channel: string,\n connectionId: string,\n options\n ) => {\n return queryClient.fetchQuery({\n queryKey: ['jolt-subscribe-token', channel, connectionId],\n queryFn: () => fetchSubscribeToken(channel, connectionId, options),\n })\n }\n\n const { data: joltClient } = useQuery({\n enabled: Boolean(wssUrl),\n queryKey: ['jolt-client', wssUrl, sessionAccessToken],\n queryFn: async () => {\n if (!wssUrl) return undefined\n\n return new JoltClient(\n wssUrl,\n {\n fetchAuthTokenFn,\n fetchSubscribeTokenFn,\n },\n { logToConsole: false }\n )\n },\n refetchOnWindowFocus: false,\n staleTime: Infinity,\n gcTime: Infinity,\n })\n\n return joltClient\n}\n\nconst pingSubscribedJoltClients = (queryClient: QueryClient) => {\n queryClient\n .getQueryCache()\n .findAll({ queryKey: ['jolt-client'] })\n .forEach(query => {\n const joltClient = query.state.data as JoltClient | undefined\n if (!joltClient || joltClient.subscriptions.length === 0) return\n\n try {\n joltClient.ping()\n } catch {}\n })\n}\n\nconst foregroundPingListeners = new Map<QueryClient, { mounts: number; remove: () => void }>()\n\nconst subscribeToForegroundPing = (queryClient: QueryClient) => {\n const existing = foregroundPingListeners.get(queryClient)\n if (existing) {\n existing.mounts += 1\n return\n }\n\n let previousState: AppStateStatus = AppState.currentState\n const subscription = AppState.addEventListener('change', nextState => {\n if (nextState === 'active' && previousState !== 'active') {\n pingSubscribedJoltClients(queryClient)\n }\n previousState = nextState\n })\n\n foregroundPingListeners.set(queryClient, { mounts: 1, remove: () => subscription.remove() })\n}\n\nconst unsubscribeFromForegroundPing = (queryClient: QueryClient) => {\n const existing = foregroundPingListeners.get(queryClient)\n if (!existing) return\n\n existing.mounts -= 1\n if (existing.mounts > 0) return\n\n existing.remove()\n foregroundPingListeners.delete(queryClient)\n}\n\nexport const useJoltForegroundPing = () => {\n const queryClient = useQueryClient()\n\n useEffect(() => {\n subscribeToForegroundPing(queryClient)\n\n return () => unsubscribeFromForegroundPing(queryClient)\n }, [queryClient])\n}\n\nconst channelConsumers = new WeakMap<JoltClient, Map<string, number>>()\n\nconst retainChannel = (jolt: JoltClient, channelName: string) => {\n const counts = channelConsumers.get(jolt) ?? new Map<string, number>()\n channelConsumers.set(jolt, counts)\n counts.set(channelName, (counts.get(channelName) ?? 0) + 1)\n}\n\nconst releaseChannel = (jolt: JoltClient, channelName: string) => {\n const counts = channelConsumers.get(jolt)\n const remaining = (counts?.get(channelName) ?? 1) - 1\n if (remaining > 0) {\n counts?.set(channelName, remaining)\n } else {\n counts?.delete(channelName)\n }\n return remaining\n}\n\nexport function useJoltChannel(\n channelName: string,\n enabled: boolean = true\n): JoltSubscription | undefined | null {\n const jolt = useJoltClient()\n const queryClient = useQueryClient()\n const ready = Boolean(jolt) && enabled\n\n const handleSubscribe = useCallback(async () => {\n if (!jolt) return null\n\n // If the subscription already exists, we don't need to subscribe again\n const alreadySubscribed = jolt.subscriptions.find(c => c.channel === channelName)\n if (alreadySubscribed) return alreadySubscribed\n\n return jolt.subscribe(channelName)\n }, [channelName, jolt])\n\n const { data: subscription } = useQuery<JoltSubscription | null>({\n queryKey: ['jolt-subscription', channelName],\n queryFn: handleSubscribe,\n refetchOnWindowFocus: false,\n enabled: ready,\n })\n\n const handleUnsubscribe = useCallback(() => {\n queryClient.removeQueries({\n queryKey: ['jolt-subscription', channelName],\n exact: true,\n })\n\n jolt?.unsubscribe(channelName)\n }, [queryClient, channelName, jolt])\n\n useEffect(() => {\n if (!jolt) return\n\n retainChannel(jolt, channelName)\n return () => {\n if (releaseChannel(jolt, channelName) === 0) handleUnsubscribe()\n }\n }, [jolt, channelName, handleUnsubscribe])\n\n return subscription\n}\n\ntype UserCallbackFn<T> = (_event: T) => void\n\nexport function useJoltEvent<T extends CustomMessage>(\n channel: JoltSubscription | undefined | null,\n eventName: JoltSubscriptionPattern,\n callback: UserCallbackFn<T>\n) {\n useEffect(() => {\n if (!channel) return () => {}\n\n return channel.bind(eventName, e => callback(e as T))\n }, [channel, eventName, callback])\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"conversation_filter_context.d.ts","sourceRoot":"","sources":["../../../../src/screens/conversation_filters/context/conversation_filter_context.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAiB,iBAAiB,EAAY,MAAM,OAAO,CAAA;AAGlE,OAAO,EAAE,yBAAyB,EAAkC,MAAM,iBAAiB,CAAA;AAI3F,eAAO,MAAM,aAAa;YAChB,yBAAyB;kBACnB,MAAM;qBACH,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI;8BACf,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI;iBACrC,MAAM,IAAI;oBACP,CAAC,MAAM,EAAE,yBAAyB,KAAK,IAAI;kBAC7C,CAAC,MAAM,EAAE,yBAAyB,KAAK,IAAI;kBAC3C,CAAC,MAAM,EAAE,yBAAyB,KAAK,IAAI;+BAC9B,MAAM,GAAG,SAAS;EAgB7C,CAAA;AAEF,eAAO,MAAM,cAAc,GAAI,cAAc,iBAAiB,4CAkD7D,CAAA;AAED,eAAO,MAAM,gBAAgB;YA9EnB,yBAAyB;kBACnB,MAAM;qBACH,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI;8BACf,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI;iBACrC,MAAM,IAAI;oBACP,CAAC,MAAM,EAAE,yBAAyB,KAAK,IAAI;kBAC7C,CAAC,MAAM,EAAE,yBAAyB,KAAK,IAAI;kBAC3C,CAAC,MAAM,EAAE,yBAAyB,KAAK,IAAI;+BAC9B,MAAM,GAAG,SAAS;CAwE9C,CAAA"}
1
+ {"version":3,"file":"conversation_filter_context.d.ts","sourceRoot":"","sources":["../../../../src/screens/conversation_filters/context/conversation_filter_context.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAiB,iBAAiB,EAAY,MAAM,OAAO,CAAA;AAGlE,OAAO,EAAE,yBAAyB,EAAkC,MAAM,iBAAiB,CAAA;AAI3F,eAAO,MAAM,aAAa;YAChB,yBAAyB;kBACnB,MAAM;qBACH,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI;8BACf,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI;iBACrC,MAAM,IAAI;oBACP,CAAC,MAAM,EAAE,yBAAyB,KAAK,IAAI;kBAC7C,CAAC,MAAM,EAAE,yBAAyB,KAAK,IAAI;kBAC3C,CAAC,MAAM,EAAE,yBAAyB,KAAK,IAAI;+BAC9B,MAAM,GAAG,SAAS;EAiB7C,CAAA;AAEF,eAAO,MAAM,cAAc,GAAI,cAAc,iBAAiB,4CAqD7D,CAAA;AAED,eAAO,MAAM,gBAAgB;YAlFnB,yBAAyB;kBACnB,MAAM;qBACH,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI;8BACf,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI;iBACrC,MAAM,IAAI;oBACP,CAAC,MAAM,EAAE,yBAAyB,KAAK,IAAI;kBAC7C,CAAC,MAAM,EAAE,yBAAyB,KAAK,IAAI;kBAC3C,CAAC,MAAM,EAAE,yBAAyB,KAAK,IAAI;+BAC9B,MAAM,GAAG,SAAS;CA4E9C,CAAA"}
@@ -11,7 +11,8 @@ export const FilterContext = createContext({
11
11
  chat_group_graph_id: undefined,
12
12
  group_source_app_name: undefined,
13
13
  show_direct_messages: undefined,
14
- show_archived: undefined
14
+ show_archived: undefined,
15
+ show_unread: undefined
15
16
  },
16
17
  scrollOffset: 0,
17
18
  setScrollOffset: () => {},
@@ -57,7 +58,8 @@ export const FilterProvider = t0 => {
57
58
  chat_group_graph_id: undefined,
58
59
  group_source_app_name: undefined,
59
60
  show_direct_messages: undefined,
60
- show_archived: undefined
61
+ show_archived: undefined,
62
+ show_unread: undefined
61
63
  }));
62
64
  };
63
65
  t3 = params => {
@@ -65,7 +67,8 @@ export const FilterProvider = t0 => {
65
67
  chat_group_graph_id: params.chat_group_graph_id,
66
68
  group_source_app_name: undefined,
67
69
  show_direct_messages: undefined,
68
- show_archived: undefined
70
+ show_archived: undefined,
71
+ show_unread: undefined
69
72
  });
70
73
  };
71
74
  t4 = params_0 => {
@@ -73,7 +76,8 @@ export const FilterProvider = t0 => {
73
76
  chat_group_graph_id: undefined,
74
77
  group_source_app_name: params_0.group_source_app_name,
75
78
  show_direct_messages: params_0.show_direct_messages,
76
- show_archived: params_0.show_archived
79
+ show_archived: params_0.show_archived,
80
+ show_unread: undefined
77
81
  });
78
82
  };
79
83
  t5 = params_1 => {
@@ -1 +1 @@
1
- {"version":3,"file":"conversation_filter_context.js","names":["StackActions","useNavigation","useRoute","React","createContext","useState","Platform","useSafeAreaInsets","jsx","_jsx","DEFAULT_LIST_PADDING_BOTTOM","FilterContext","params","chat_group_graph_id","undefined","group_source_app_name","show_direct_messages","show_archived","scrollOffset","setScrollOffset","setFormSheetHeaderHeight","resetFilter","setGroupFilter","setAppFilter","applyFilters","platformListPaddingBottom","FilterProvider","t0","$","_c","children","formSheetHeaderHeight","navigation","route","bottom","t1","select","ios","android","t2","t3","t4","t5","dispatch","popTo","setParams","params_0","params_1","t6","filterContextValue","t7","Provider","useFilterContext","useContext"],"sources":["../../../../src/screens/conversation_filters/context/conversation_filter_context.tsx"],"sourcesContent":["import { RouteProp, StackActions, useNavigation, useRoute } from '@react-navigation/native'\nimport React from 'react'\nimport { createContext, PropsWithChildren, useState } from 'react'\nimport { Platform } from 'react-native'\nimport { useSafeAreaInsets } from 'react-native-safe-area-context'\nimport { ConversationFiltersParams, ConversationFiltersScreenProps } from '../screen_props'\n\nconst DEFAULT_LIST_PADDING_BOTTOM = 64\n\nexport const FilterContext = createContext<{\n params: ConversationFiltersParams\n scrollOffset: number\n setScrollOffset: (offset: number) => void\n setFormSheetHeaderHeight: (height: number) => void\n resetFilter: () => void\n setGroupFilter: (params: ConversationFiltersParams) => void\n setAppFilter: (params: ConversationFiltersParams) => void\n applyFilters: (params: ConversationFiltersParams) => void\n platformListPaddingBottom: number | undefined\n}>({\n params: {\n chat_group_graph_id: undefined,\n group_source_app_name: undefined,\n show_direct_messages: undefined,\n show_archived: undefined,\n },\n scrollOffset: 0,\n setScrollOffset: () => {},\n setFormSheetHeaderHeight: () => {},\n resetFilter: () => {},\n setGroupFilter: () => {},\n setAppFilter: () => {},\n applyFilters: () => {},\n platformListPaddingBottom: DEFAULT_LIST_PADDING_BOTTOM,\n})\n\nexport const FilterProvider = ({ children }: PropsWithChildren) => {\n const [scrollOffset, setScrollOffset] = useState(0)\n const [formSheetHeaderHeight, setFormSheetHeaderHeight] = useState(56)\n const navigation = useNavigation()\n const route = useRoute<RouteProp<ConversationFiltersScreenProps['route']>>()\n const { bottom } = useSafeAreaInsets()\n\n const platformListPaddingBottom = Platform.select({\n ios: bottom + formSheetHeaderHeight,\n android: bottom + 12,\n })\n\n const filterContextValue = {\n params: route.params,\n scrollOffset,\n setScrollOffset,\n platformListPaddingBottom,\n setFormSheetHeaderHeight,\n resetFilter: () => {\n navigation.dispatch(\n StackActions.popTo('Conversations', {\n chat_group_graph_id: undefined,\n group_source_app_name: undefined,\n show_direct_messages: undefined,\n show_archived: undefined,\n })\n )\n },\n setGroupFilter: (params: Omit<ConversationFiltersParams, 'group_source_app_name'>) => {\n navigation.setParams({\n chat_group_graph_id: params.chat_group_graph_id,\n group_source_app_name: undefined,\n show_direct_messages: undefined,\n show_archived: undefined,\n })\n },\n setAppFilter: (params: Omit<ConversationFiltersParams, 'chat_group_graph_id'>) => {\n navigation.setParams({\n chat_group_graph_id: undefined,\n group_source_app_name: params.group_source_app_name,\n show_direct_messages: params.show_direct_messages,\n show_archived: params.show_archived,\n })\n },\n applyFilters: (params: ConversationFiltersParams) => {\n navigation.dispatch(StackActions.popTo('Conversations', params))\n },\n }\n\n return <FilterContext.Provider value={filterContextValue}>{children}</FilterContext.Provider>\n}\n\nexport const useFilterContext = () => {\n return React.useContext(FilterContext)\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"conversation_filter_context.js","names":["StackActions","useNavigation","useRoute","React","createContext","useState","Platform","useSafeAreaInsets","jsx","_jsx","DEFAULT_LIST_PADDING_BOTTOM","FilterContext","params","chat_group_graph_id","undefined","group_source_app_name","show_direct_messages","show_archived","show_unread","scrollOffset","setScrollOffset","setFormSheetHeaderHeight","resetFilter","setGroupFilter","setAppFilter","applyFilters","platformListPaddingBottom","FilterProvider","t0","$","_c","children","formSheetHeaderHeight","navigation","route","bottom","t1","select","ios","android","t2","t3","t4","t5","dispatch","popTo","setParams","params_0","params_1","t6","filterContextValue","t7","Provider","useFilterContext","useContext"],"sources":["../../../../src/screens/conversation_filters/context/conversation_filter_context.tsx"],"sourcesContent":["import { RouteProp, StackActions, useNavigation, useRoute } from '@react-navigation/native'\nimport React from 'react'\nimport { createContext, PropsWithChildren, useState } from 'react'\nimport { Platform } from 'react-native'\nimport { useSafeAreaInsets } from 'react-native-safe-area-context'\nimport { ConversationFiltersParams, ConversationFiltersScreenProps } from '../screen_props'\n\nconst DEFAULT_LIST_PADDING_BOTTOM = 64\n\nexport const FilterContext = createContext<{\n params: ConversationFiltersParams\n scrollOffset: number\n setScrollOffset: (offset: number) => void\n setFormSheetHeaderHeight: (height: number) => void\n resetFilter: () => void\n setGroupFilter: (params: ConversationFiltersParams) => void\n setAppFilter: (params: ConversationFiltersParams) => void\n applyFilters: (params: ConversationFiltersParams) => void\n platformListPaddingBottom: number | undefined\n}>({\n params: {\n chat_group_graph_id: undefined,\n group_source_app_name: undefined,\n show_direct_messages: undefined,\n show_archived: undefined,\n show_unread: undefined,\n },\n scrollOffset: 0,\n setScrollOffset: () => {},\n setFormSheetHeaderHeight: () => {},\n resetFilter: () => {},\n setGroupFilter: () => {},\n setAppFilter: () => {},\n applyFilters: () => {},\n platformListPaddingBottom: DEFAULT_LIST_PADDING_BOTTOM,\n})\n\nexport const FilterProvider = ({ children }: PropsWithChildren) => {\n const [scrollOffset, setScrollOffset] = useState(0)\n const [formSheetHeaderHeight, setFormSheetHeaderHeight] = useState(56)\n const navigation = useNavigation()\n const route = useRoute<RouteProp<ConversationFiltersScreenProps['route']>>()\n const { bottom } = useSafeAreaInsets()\n\n const platformListPaddingBottom = Platform.select({\n ios: bottom + formSheetHeaderHeight,\n android: bottom + 12,\n })\n\n const filterContextValue = {\n params: route.params,\n scrollOffset,\n setScrollOffset,\n platformListPaddingBottom,\n setFormSheetHeaderHeight,\n resetFilter: () => {\n navigation.dispatch(\n StackActions.popTo('Conversations', {\n chat_group_graph_id: undefined,\n group_source_app_name: undefined,\n show_direct_messages: undefined,\n show_archived: undefined,\n show_unread: undefined,\n })\n )\n },\n setGroupFilter: (params: Omit<ConversationFiltersParams, 'group_source_app_name'>) => {\n navigation.setParams({\n chat_group_graph_id: params.chat_group_graph_id,\n group_source_app_name: undefined,\n show_direct_messages: undefined,\n show_archived: undefined,\n show_unread: undefined,\n })\n },\n setAppFilter: (params: Omit<ConversationFiltersParams, 'chat_group_graph_id'>) => {\n navigation.setParams({\n chat_group_graph_id: undefined,\n group_source_app_name: params.group_source_app_name,\n show_direct_messages: params.show_direct_messages,\n show_archived: params.show_archived,\n show_unread: undefined,\n })\n },\n applyFilters: (params: ConversationFiltersParams) => {\n navigation.dispatch(StackActions.popTo('Conversations', params))\n },\n }\n\n return <FilterContext.Provider value={filterContextValue}>{children}</FilterContext.Provider>\n}\n\nexport const useFilterContext = () => {\n return React.useContext(FilterContext)\n}\n"],"mappings":"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","ignoreList":[]}
@@ -5,6 +5,7 @@ export type ConversationFiltersParams = {
5
5
  group_source_app_name?: string;
6
6
  show_direct_messages?: boolean;
7
7
  show_archived?: boolean;
8
+ show_unread?: boolean;
8
9
  };
9
10
  export type ConversationFiltersScreenProps = StaticScreenProps<ConversationFiltersParams>;
10
11
  export type ConversationFilterStackParamList = {
@@ -1 +1 @@
1
- {"version":3,"file":"screen_props.d.ts","sourceRoot":"","sources":["../../../src/screens/conversation_filters/screen_props.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,EAAE,OAAO,EAAE,MAAM,sCAAsC,CAAA;AAE9D,MAAM,MAAM,yBAAyB,GAAG;IACtC,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB,CAAA;AAED,MAAM,MAAM,8BAA8B,GAAG,iBAAiB,CAAC,yBAAyB,CAAC,CAAA;AAEzF,MAAM,MAAM,gCAAgC,GAAG;IAC7C,OAAO,EAAE,yBAAyB,CAAA;IAClC,YAAY,EAAE,yBAAyB,CAAA;IACvC,WAAW,EAAE,yBAAyB,CAAA;CACvC,CAAA"}
1
+ {"version":3,"file":"screen_props.d.ts","sourceRoot":"","sources":["../../../src/screens/conversation_filters/screen_props.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,EAAE,OAAO,EAAE,MAAM,sCAAsC,CAAA;AAE9D,MAAM,MAAM,yBAAyB,GAAG;IACtC,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB,CAAA;AAED,MAAM,MAAM,8BAA8B,GAAG,iBAAiB,CAAC,yBAAyB,CAAC,CAAA;AAEzF,MAAM,MAAM,gCAAgC,GAAG;IAC7C,OAAO,EAAE,yBAAyB,CAAA;IAClC,YAAY,EAAE,yBAAyB,CAAA;IACvC,WAAW,EAAE,yBAAyB,CAAA;CACvC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"screen_props.js","names":[],"sources":["../../../src/screens/conversation_filters/screen_props.ts"],"sourcesContent":["import { StaticScreenProps } from '@react-navigation/native'\nimport { GraphId } from '../../types/resources/group_resource'\n\nexport type ConversationFiltersParams = {\n chat_group_graph_id?: GraphId\n group_source_app_name?: string\n show_direct_messages?: boolean\n show_archived?: boolean\n}\n\nexport type ConversationFiltersScreenProps = StaticScreenProps<ConversationFiltersParams>\n\nexport type ConversationFilterStackParamList = {\n Filters: ConversationFiltersParams\n GroupFilters: ConversationFiltersParams\n TeamFilters: ConversationFiltersParams\n}\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"file":"screen_props.js","names":[],"sources":["../../../src/screens/conversation_filters/screen_props.ts"],"sourcesContent":["import { StaticScreenProps } from '@react-navigation/native'\nimport { GraphId } from '../../types/resources/group_resource'\n\nexport type ConversationFiltersParams = {\n chat_group_graph_id?: GraphId\n group_source_app_name?: string\n show_direct_messages?: boolean\n show_archived?: boolean\n show_unread?: boolean\n}\n\nexport type ConversationFiltersScreenProps = StaticScreenProps<ConversationFiltersParams>\n\nexport type ConversationFilterStackParamList = {\n Filters: ConversationFiltersParams\n GroupFilters: ConversationFiltersParams\n TeamFilters: ConversationFiltersParams\n}\n"],"mappings":"","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"filter_dropdown_list_header_component.d.ts","sourceRoot":"","sources":["../../../../src/screens/conversations/components/filter_dropdown_list_header_component.tsx"],"names":[],"mappings":"AA+CA,eAAO,MAAM,iCAAiC,+CAsO7C,CAAA"}
1
+ {"version":3,"file":"filter_dropdown_list_header_component.d.ts","sourceRoot":"","sources":["../../../../src/screens/conversations/components/filter_dropdown_list_header_component.tsx"],"names":[],"mappings":"AAiDA,eAAO,MAAM,iCAAiC,+CAmP7C,CAAA"}