@planningcenter/chat-react-native 4.0.1-qa-staging.0 → 4.0.1-qa-staging.2

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 (91) hide show
  1. package/build/components/conversation/message.d.ts +3 -2
  2. package/build/components/conversation/message.d.ts.map +1 -1
  3. package/build/components/conversation/message.js +23 -22
  4. package/build/components/conversation/message.js.map +1 -1
  5. package/build/components/conversation/message_list.d.ts +21 -0
  6. package/build/components/conversation/message_list.d.ts.map +1 -0
  7. package/build/components/conversation/message_list.js +273 -0
  8. package/build/components/conversation/message_list.js.map +1 -0
  9. package/build/components/conversation/message_read_receipts.d.ts +2 -4
  10. package/build/components/conversation/message_read_receipts.d.ts.map +1 -1
  11. package/build/components/conversation/message_read_receipts.js +2 -3
  12. package/build/components/conversation/message_read_receipts.js.map +1 -1
  13. package/build/components/conversation/reply_shadow_message.d.ts +2 -1
  14. package/build/components/conversation/reply_shadow_message.d.ts.map +1 -1
  15. package/build/components/conversation/reply_shadow_message.js +47 -46
  16. package/build/components/conversation/reply_shadow_message.js.map +1 -1
  17. package/build/components/primitive/form_sheet.d.ts +2 -1
  18. package/build/components/primitive/form_sheet.d.ts.map +1 -1
  19. package/build/components/primitive/form_sheet.js +68 -53
  20. package/build/components/primitive/form_sheet.js.map +1 -1
  21. package/build/hooks/use_conversation_messages.d.ts.map +1 -1
  22. package/build/hooks/use_conversation_messages.js +40 -28
  23. package/build/hooks/use_conversation_messages.js.map +1 -1
  24. package/build/hooks/use_conversation_messages_jolt_events.d.ts.map +1 -1
  25. package/build/hooks/use_conversation_messages_jolt_events.js +6 -1
  26. package/build/hooks/use_conversation_messages_jolt_events.js.map +1 -1
  27. package/build/hooks/use_message_create_or_update.d.ts +99 -4
  28. package/build/hooks/use_message_create_or_update.d.ts.map +1 -1
  29. package/build/hooks/use_message_create_or_update.js +47 -6
  30. package/build/hooks/use_message_create_or_update.js.map +1 -1
  31. package/build/screens/conversation_screen.d.ts.map +1 -1
  32. package/build/screens/conversation_screen.js +184 -365
  33. package/build/screens/conversation_screen.js.map +1 -1
  34. package/build/screens/conversation_select_type_screen.d.ts.map +1 -1
  35. package/build/screens/conversation_select_type_screen.js +82 -98
  36. package/build/screens/conversation_select_type_screen.js.map +1 -1
  37. package/build/types/resources/message.d.ts +2 -0
  38. package/build/types/resources/message.d.ts.map +1 -1
  39. package/build/types/resources/message.js.map +1 -1
  40. package/build/utils/cache/messages_cache.d.ts +1 -0
  41. package/build/utils/cache/messages_cache.d.ts.map +1 -1
  42. package/build/utils/cache/messages_cache.js +14 -7
  43. package/build/utils/cache/messages_cache.js.map +1 -1
  44. package/build/utils/cache/optimistically_create_message.d.ts +2 -1
  45. package/build/utils/cache/optimistically_create_message.d.ts.map +1 -1
  46. package/build/utils/cache/optimistically_create_message.js +4 -2
  47. package/build/utils/cache/optimistically_create_message.js.map +1 -1
  48. package/build/utils/client/transform_response.d.ts.map +1 -1
  49. package/build/utils/client/transform_response.js +9 -5
  50. package/build/utils/client/transform_response.js.map +1 -1
  51. package/build/utils/group_messages.d.ts +1 -0
  52. package/build/utils/group_messages.d.ts.map +1 -1
  53. package/build/utils/group_messages.js +10 -1
  54. package/build/utils/group_messages.js.map +1 -1
  55. package/build/utils/jolt/transform_message_event_data_to_message_resource.d.ts.map +1 -1
  56. package/build/utils/jolt/transform_message_event_data_to_message_resource.js +1 -0
  57. package/build/utils/jolt/transform_message_event_data_to_message_resource.js.map +1 -1
  58. package/build/utils/replace_equal_by_id.d.ts +6 -0
  59. package/build/utils/replace_equal_by_id.d.ts.map +1 -0
  60. package/build/utils/replace_equal_by_id.js +41 -0
  61. package/build/utils/replace_equal_by_id.js.map +1 -0
  62. package/build/utils/request/messages_data_options.d.ts.map +1 -1
  63. package/build/utils/request/messages_data_options.js +2 -2
  64. package/build/utils/request/messages_data_options.js.map +1 -1
  65. package/package.json +3 -3
  66. package/src/components/conversation/__tests__/message_list.test.tsx +271 -0
  67. package/src/components/conversation/__tests__/reply_shadow_message.test.tsx +119 -0
  68. package/src/components/conversation/message.tsx +15 -18
  69. package/src/components/conversation/message_list.tsx +157 -0
  70. package/src/components/conversation/message_read_receipts.tsx +3 -5
  71. package/src/components/conversation/reply_shadow_message.tsx +9 -7
  72. package/src/components/primitive/form_sheet.tsx +10 -3
  73. package/src/hooks/__tests__/use_message_create_or_update.test.tsx +110 -0
  74. package/src/hooks/use_conversation_messages.ts +5 -1
  75. package/src/hooks/use_conversation_messages_jolt_events.ts +7 -0
  76. package/src/hooks/use_message_create_or_update.ts +29 -16
  77. package/src/screens/conversation_screen.tsx +11 -104
  78. package/src/screens/conversation_select_type_screen.tsx +3 -9
  79. package/src/types/resources/message.ts +2 -0
  80. package/src/utils/__tests__/group_messages.test.ts +48 -0
  81. package/src/utils/__tests__/replace_equal_by_id.test.ts +73 -0
  82. package/src/utils/cache/__tests__/messages_cache.test.ts +89 -0
  83. package/src/utils/cache/__tests__/messages_cache_reply_roots.test.ts +70 -0
  84. package/src/utils/cache/messages_cache.ts +27 -11
  85. package/src/utils/cache/optimistically_create_message.ts +3 -0
  86. package/src/utils/client/__tests__/transform_response.test.ts +62 -0
  87. package/src/utils/client/transform_response.ts +7 -5
  88. package/src/utils/group_messages.ts +18 -1
  89. package/src/utils/jolt/transform_message_event_data_to_message_resource.ts +1 -0
  90. package/src/utils/replace_equal_by_id.ts +42 -0
  91. package/src/utils/request/messages_data_options.ts +2 -1
@@ -54,68 +54,80 @@ export default FormSheet;
54
54
  // ====================================
55
55
 
56
56
  export function FormSheetRoot(t0) {
57
- const $ = _c(15);
57
+ const $ = _c(17);
58
58
  const {
59
59
  children,
60
60
  style,
61
61
  contentStyle,
62
- showAndroidSheetGrabber: t1
62
+ showAndroidSheetGrabber: t1,
63
+ fitToContents: t2
63
64
  } = t0;
64
65
  const showAndroidSheetGrabber = t1 === undefined ? true : t1;
65
- const styles = useStyles();
66
- let t2;
67
- if ($[0] !== style || $[1] !== styles.container) {
68
- t2 = [styles.container, style];
69
- $[0] = style;
70
- $[1] = styles.container;
71
- $[2] = t2;
72
- } else {
73
- t2 = $[2];
74
- }
66
+ const fitToContents = t2 === undefined ? false : t2;
75
67
  let t3;
76
- if ($[3] !== contentStyle || $[4] !== styles.content) {
77
- t3 = [styles.content, contentStyle];
78
- $[3] = contentStyle;
79
- $[4] = styles.content;
80
- $[5] = t3;
68
+ if ($[0] !== fitToContents) {
69
+ t3 = {
70
+ fitToContents
71
+ };
72
+ $[0] = fitToContents;
73
+ $[1] = t3;
81
74
  } else {
82
- t3 = $[5];
75
+ t3 = $[1];
83
76
  }
77
+ const styles = useStyles(t3);
84
78
  let t4;
85
- if ($[6] !== children || $[7] !== t3) {
86
- t4 = /*#__PURE__*/_jsx(View, {
87
- style: t3,
88
- children: children
89
- });
90
- $[6] = children;
91
- $[7] = t3;
92
- $[8] = t4;
79
+ if ($[2] !== style || $[3] !== styles.container) {
80
+ t4 = [styles.container, style];
81
+ $[2] = style;
82
+ $[3] = styles.container;
83
+ $[4] = t4;
93
84
  } else {
94
- t4 = $[8];
85
+ t4 = $[4];
95
86
  }
96
87
  let t5;
97
- if ($[9] !== showAndroidSheetGrabber) {
98
- t5 = showAndroidSheetGrabber && /*#__PURE__*/_jsx(AndroidSheetGrabber, {});
99
- $[9] = showAndroidSheetGrabber;
100
- $[10] = t5;
88
+ if ($[5] !== contentStyle || $[6] !== styles.content) {
89
+ t5 = [styles.content, contentStyle];
90
+ $[5] = contentStyle;
91
+ $[6] = styles.content;
92
+ $[7] = t5;
101
93
  } else {
102
- t5 = $[10];
94
+ t5 = $[7];
103
95
  }
104
96
  let t6;
105
- if ($[11] !== t2 || $[12] !== t4 || $[13] !== t5) {
106
- t6 = /*#__PURE__*/_jsxs(View, {
107
- style: t2,
97
+ if ($[8] !== children || $[9] !== t5) {
98
+ t6 = /*#__PURE__*/_jsx(View, {
99
+ style: t5,
100
+ children: children
101
+ });
102
+ $[8] = children;
103
+ $[9] = t5;
104
+ $[10] = t6;
105
+ } else {
106
+ t6 = $[10];
107
+ }
108
+ let t7;
109
+ if ($[11] !== showAndroidSheetGrabber) {
110
+ t7 = showAndroidSheetGrabber && /*#__PURE__*/_jsx(AndroidSheetGrabber, {});
111
+ $[11] = showAndroidSheetGrabber;
112
+ $[12] = t7;
113
+ } else {
114
+ t7 = $[12];
115
+ }
116
+ let t8;
117
+ if ($[13] !== t4 || $[14] !== t6 || $[15] !== t7) {
118
+ t8 = /*#__PURE__*/_jsxs(View, {
119
+ style: t4,
108
120
  collapsable: false,
109
- children: [t4, t5]
121
+ children: [t6, t7]
110
122
  });
111
- $[11] = t2;
112
- $[12] = t4;
113
- $[13] = t5;
123
+ $[13] = t4;
114
124
  $[14] = t6;
125
+ $[15] = t7;
126
+ $[16] = t8;
115
127
  } else {
116
- t6 = $[14];
128
+ t8 = $[16];
117
129
  }
118
- return t6;
130
+ return t8;
119
131
  }
120
132
  FormSheetRoot.displayName = 'FormSheet.Root';
121
133
 
@@ -421,7 +433,7 @@ FormSheetAction.displayName = 'FormSheet.Action';
421
433
  // ==================================
422
434
 
423
435
  const useStyles = t0 => {
424
- const $ = _c(16);
436
+ const $ = _c(17);
425
437
  let t1;
426
438
  if ($[0] !== t0) {
427
439
  t1 = t0 === undefined ? {} : t0;
@@ -432,10 +444,12 @@ const useStyles = t0 => {
432
444
  }
433
445
  const {
434
446
  appearance: t2,
435
- disabled: t3
447
+ disabled: t3,
448
+ fitToContents: t4
436
449
  } = t1;
437
450
  const appearance = t2 === undefined ? "neutral" : t2;
438
451
  const disabled = t3 === undefined ? false : t3;
452
+ const fitToContents = t4 === undefined ? false : t4;
439
453
  const {
440
454
  colors
441
455
  } = useTheme();
@@ -447,10 +461,10 @@ const useStyles = t0 => {
447
461
  top
448
462
  } = useSafeAreaInsets();
449
463
  const headerHeight = useHeaderHeight();
450
- let t4;
451
- if ($[2] !== appearance || $[3] !== bottom || $[4] !== colors.borderColorDefaultBase || $[5] !== colors.fillColorNeutral040 || $[6] !== colors.fillColorNeutral100Inverted || $[7] !== colors.fillColorStatusErrorMedium || $[8] !== colors.iconColorDefaultPrimary || $[9] !== colors.textColorDefaultDisabled || $[10] !== colors.textColorDefaultPrimary || $[11] !== disabled || $[12] !== headerHeight || $[13] !== height || $[14] !== top) {
464
+ let t5;
465
+ if ($[2] !== appearance || $[3] !== bottom || $[4] !== colors.borderColorDefaultBase || $[5] !== colors.fillColorNeutral040 || $[6] !== colors.fillColorNeutral100Inverted || $[7] !== colors.fillColorStatusErrorMedium || $[8] !== colors.iconColorDefaultPrimary || $[9] !== colors.textColorDefaultDisabled || $[10] !== colors.textColorDefaultPrimary || $[11] !== disabled || $[12] !== fitToContents || $[13] !== headerHeight || $[14] !== height || $[15] !== top) {
452
466
  const containerHeight = Platform.select({
453
- ios: height - top - headerHeight,
467
+ ios: fitToContents ? undefined : height - top - headerHeight,
454
468
  default: null
455
469
  });
456
470
  const appearanceColorsMap = {
@@ -463,7 +477,7 @@ const useStyles = t0 => {
463
477
  textColor: colors.fillColorStatusErrorMedium
464
478
  }
465
479
  };
466
- t4 = StyleSheet.create({
480
+ t5 = StyleSheet.create({
467
481
  container: {
468
482
  justifyContent: "flex-start",
469
483
  paddingBottom: bottom,
@@ -549,13 +563,14 @@ const useStyles = t0 => {
549
563
  $[9] = colors.textColorDefaultDisabled;
550
564
  $[10] = colors.textColorDefaultPrimary;
551
565
  $[11] = disabled;
552
- $[12] = headerHeight;
553
- $[13] = height;
554
- $[14] = top;
555
- $[15] = t4;
566
+ $[12] = fitToContents;
567
+ $[13] = headerHeight;
568
+ $[14] = height;
569
+ $[15] = top;
570
+ $[16] = t5;
556
571
  } else {
557
- t4 = $[15];
572
+ t5 = $[16];
558
573
  }
559
- return t4;
574
+ return t5;
560
575
  };
561
576
  //# sourceMappingURL=form_sheet.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"form_sheet.js","names":["PlatformPressable","useHeaderHeight","React","Platform","StyleSheet","View","useWindowDimensions","useSafeAreaInsets","useTheme","isLiquidGlassEnabled","MAX_FONT_SIZE_MULTIPLIER_LANDMARK","Button","Heading","Icon","Text","TextButton","jsx","_jsx","jsxs","_jsxs","getFormSheetScreenOptions","headerTitle","sheetAllowedDetents","rest","presentation","headerShown","sheetCornerRadius","undefined","sheetGrabberVisible","FormSheet","Root","FormSheetRoot","Action","FormSheetAction","Header","FormSheetHeader","HeaderTitle","FormSheetHeaderTitle","HeaderActions","FormSheetHeaderActions","HeaderTextButton","FormSheetHeaderTextButton","HeaderButton","FormSheetHeaderButton","t0","$","_c","children","style","contentStyle","showAndroidSheetGrabber","t1","styles","useStyles","t2","container","t3","content","t4","t5","AndroidSheetGrabber","t6","collapsable","displayName","androidSheetGrabber","select","android","ios","header","headerContent","variant","headerActions","props","accessibilityShowsLargeContentViewer","accessibilityLargeContentTitle","title","FORM_SHEET_ACTION_APPEARANCES","neutral","danger","iconName","onPress","accessibilityLabel","accessibilityHint","accessibilityRole","appearance","disabled","disabledReason","testID","actionIcon","size","accessibilityElementsHidden","t7","actionTitle","t8","actionDisabledReason","t9","actionTextBlock","t10","actionPressable","colors","height","bottom","top","headerHeight","borderColorDefaultBase","fillColorNeutral040","fillColorNeutral100Inverted","fillColorStatusErrorMedium","iconColorDefaultPrimary","textColorDefaultDisabled","textColorDefaultPrimary","containerHeight","default","appearanceColorsMap","iconColor","textColor","create","justifyContent","paddingBottom","width","backgroundColor","flexGrow","maxHeight","position","borderRadius","alignSelf","paddingHorizontal","paddingTop","gap","borderBottomWidth","borderBottomColor","flexDirection","alignItems","textAlign","flex","paddingVertical","color","fontSize"],"sources":["../../../src/components/primitive/form_sheet.tsx"],"sourcesContent":["import { PlatformPressable, useHeaderHeight } from '@react-navigation/elements'\nimport { NativeStackNavigationOptions } from '@react-navigation/native-stack'\nimport React, { ReactNode } from 'react'\nimport {\n Platform,\n StyleSheet,\n View,\n useWindowDimensions,\n type AccessibilityRole,\n type StyleProp,\n type ViewStyle,\n} from 'react-native'\nimport { useSafeAreaInsets } from 'react-native-safe-area-context'\nimport { useTheme } from '../../hooks'\nimport { isLiquidGlassEnabled, MAX_FONT_SIZE_MULTIPLIER_LANDMARK } from '../../utils'\nimport type { ButtonProps, TextButtonProps } from '../display'\nimport { Button, Heading, Icon, IconString, Text, TextButton } from '../display'\n\n// =================================\n// ====== Exports ==================\n// =================================\n\n/**\n * Screen options for the formsheet's NativeStackNavigation route\n *\n * Returns a factory rather than an object because callers assign it at module\n * scope, which runs before ChatProvider reports the host's liquid glass\n * capability. React Navigation calls the factory per render, so the sheet\n * corner radius is resolved once that capability is known.\n *\n * @param {string} options.headerTitle - Doesn't show in UI but good to have for semantic reasons.\n * @param {number[]} [options.sheetAllowedDetents] - Controls the height increments the sheet grows to. To prevent bugs in Android, do not specify more then two values and use [0.94] instead of [1] to go full screen.\n * @param {NativeStackNavigationOptions} [options.rest] - Adds or overrides any valid NativeStackNavigationOptions\n * @returns {() => NativeStackNavigationOptions} Factory producing merged NativeStackNavigationOptions\n */\nexport const getFormSheetScreenOptions =\n ({ headerTitle, sheetAllowedDetents = [0.25], ...rest }: NativeStackNavigationOptions = {}) =>\n (): NativeStackNavigationOptions => ({\n presentation: 'formSheet',\n headerShown: false,\n sheetAllowedDetents,\n sheetCornerRadius: isLiquidGlassEnabled() ? undefined : 16,\n sheetGrabberVisible: true,\n headerTitle,\n ...rest,\n })\n\nconst FormSheet = {\n Root: FormSheetRoot,\n Action: FormSheetAction,\n Header: FormSheetHeader,\n HeaderTitle: FormSheetHeaderTitle,\n HeaderActions: FormSheetHeaderActions,\n HeaderTextButton: FormSheetHeaderTextButton,\n HeaderButton: FormSheetHeaderButton,\n} as const\n\ntype FormSheetComponents = {\n Root: React.FC<FormSheetRootProps>\n Action: React.FC<FormSheetActionProps>\n Header: React.FC<FormSheetHeaderProps>\n HeaderTitle: React.FC<FormSheetHeaderTitleProps>\n HeaderActions: React.FC<FormSheetHeaderActionsProps>\n HeaderTextButton: React.FC<FormSheetHeaderTextButtonProps>\n HeaderButton: React.FC<FormSheetHeaderButtonProps>\n}\n\nexport default FormSheet as FormSheetComponents\nexport type {\n FormSheetActionProps,\n FormSheetHeaderActionsProps,\n FormSheetHeaderButtonProps,\n FormSheetHeaderProps,\n FormSheetHeaderTextButtonProps,\n FormSheetHeaderTitleProps,\n FormSheetRootProps,\n}\n\n// ====================================\n// ====== ActionsFormSheetRoot ========\n// ====================================\n\ninterface FormSheetRootProps {\n children: ReactNode\n style?: StyleProp<ViewStyle>\n contentStyle?: StyleProp<ViewStyle>\n showAndroidSheetGrabber?: boolean\n}\n\nexport function FormSheetRoot({\n children,\n style,\n contentStyle,\n showAndroidSheetGrabber = true,\n}: FormSheetRootProps) {\n const styles = useStyles()\n\n return (\n <View style={[styles.container, style]} collapsable={false}>\n <View style={[styles.content, contentStyle]}>{children}</View>\n {showAndroidSheetGrabber && <AndroidSheetGrabber />}\n </View>\n )\n}\n\nFormSheetRoot.displayName = 'FormSheet.Root'\n\n// ====================================\n// ====== AndroidSheetGrabber =========\n// ====================================\n\nfunction AndroidSheetGrabber() {\n const styles = useStyles()\n\n return Platform.select({\n android: <View style={styles.androidSheetGrabber} />,\n ios: null,\n })\n}\n\n// ====================================\n// ====== FormSheetHeader =============\n// ====================================\n\ninterface FormSheetHeaderProps {\n children: ReactNode\n style?: StyleProp<ViewStyle>\n}\n\nfunction FormSheetHeader({ children, style }: FormSheetHeaderProps) {\n const styles = useStyles()\n\n return (\n <View style={[styles.header, style]}>\n <View style={styles.headerContent}>{children}</View>\n </View>\n )\n}\n\nFormSheetHeader.displayName = 'FormSheet.Header'\n\n// ====================================\n// ====== FormSheetHeaderTitle ========\n// ====================================\n\ninterface FormSheetHeaderTitleProps {\n children: ReactNode\n}\n\nfunction FormSheetHeaderTitle({ children }: FormSheetHeaderTitleProps) {\n const styles = useStyles()\n\n return (\n <Heading\n variant=\"h3\"\n style={styles.headerTitle}\n maxFontSizeMultiplier={MAX_FONT_SIZE_MULTIPLIER_LANDMARK}\n >\n {children}\n </Heading>\n )\n}\n\nFormSheetHeaderTitle.displayName = 'FormSheet.HeaderTitle'\n\n// ====================================\n// ====== FormSheetHeaderActions ======\n// ====================================\n\ninterface FormSheetHeaderActionsProps {\n children: ReactNode\n}\n\nfunction FormSheetHeaderActions({ children }: FormSheetHeaderActionsProps) {\n const styles = useStyles()\n\n return <View style={styles.headerActions}>{children}</View>\n}\n\nFormSheetHeaderActions.displayName = 'FormSheet.HeaderActions'\n\n// ===========================================\n// ====== FormSheetHeaderTextButton ==========\n// ===========================================\n\n// We are omitting `onLongPress` because we are instead supporting `accessibilityShowsLargeContentViewer`.\n// This is triggered by an `onLongPress` event when an iOS device is in Apple's accessible font scale range.\n// Triggering this prop will display an almost full screen iOS a11y button.\ninterface FormSheetHeaderTextButtonProps\n extends Omit<TextButtonProps, 'maxFontSizeMultiplier' | 'onLongPress'> {\n children: string\n}\n\nfunction FormSheetHeaderTextButton(props: FormSheetHeaderTextButtonProps) {\n return (\n <TextButton\n {...props}\n maxFontSizeMultiplier={MAX_FONT_SIZE_MULTIPLIER_LANDMARK}\n accessibilityShowsLargeContentViewer\n accessibilityLargeContentTitle={props.children}\n />\n )\n}\n\nFormSheetHeaderTextButton.displayName = 'FormSheet.HeaderTextButton'\n\n// =========================================\n// ====== FormSheetHeaderButton ============\n// =========================================\n\n// Same `onLongPress`note as `FormSheetHeaderTextButtonProps`\ninterface FormSheetHeaderButtonProps\n extends Omit<ButtonProps, 'maxFontSizeMultiplier' | 'onLongPress'> {}\n\nfunction FormSheetHeaderButton(props: FormSheetHeaderButtonProps) {\n return (\n <Button\n {...props}\n maxFontSizeMultiplier={MAX_FONT_SIZE_MULTIPLIER_LANDMARK}\n accessibilityShowsLargeContentViewer\n accessibilityLargeContentTitle={props.title}\n />\n )\n}\n\nFormSheetHeaderButton.displayName = 'FormSheet.HeaderButton'\n\n// ====================================\n// ====== ActionsFormSheetAction ======\n// ====================================\n\nconst FORM_SHEET_ACTION_APPEARANCES = {\n neutral: 'neutral',\n danger: 'danger',\n} as const\n\ntype FormSheetActionAppearanceUnion =\n (typeof FORM_SHEET_ACTION_APPEARANCES)[keyof typeof FORM_SHEET_ACTION_APPEARANCES]\n\ninterface FormSheetActionProps {\n title: string\n iconName?: IconString\n onPress: () => void\n accessibilityLabel?: string\n accessibilityHint?: string\n accessibilityRole?: AccessibilityRole\n appearance?: FormSheetActionAppearanceUnion\n disabled?: boolean\n disabledReason?: string\n testID?: string\n}\n\nfunction FormSheetAction({\n title,\n iconName,\n onPress,\n accessibilityLabel,\n accessibilityHint,\n accessibilityRole = 'button',\n appearance = 'neutral',\n disabled = false,\n disabledReason,\n testID,\n}: FormSheetActionProps) {\n const styles = useStyles({ appearance, disabled })\n\n return (\n <PlatformPressable\n testID={testID}\n onPress={onPress}\n accessibilityLabel={accessibilityLabel}\n accessibilityHint={\n accessibilityHint ?? (disabled && disabledReason ? disabledReason : undefined)\n }\n accessibilityRole={accessibilityRole}\n style={styles.actionPressable}\n disabled={disabled}\n >\n {iconName && (\n <Icon name={iconName} size={16} accessibilityElementsHidden style={styles.actionIcon} />\n )}\n <View style={styles.actionTextBlock}>\n <Text style={styles.actionTitle}>{title}</Text>\n {disabled && disabledReason && (\n <Text style={styles.actionDisabledReason}>{disabledReason}</Text>\n )}\n </View>\n </PlatformPressable>\n )\n}\n\nFormSheetAction.displayName = 'FormSheet.Action'\n\n// ==================================\n// ====== Styles ====================\n// ==================================\n\ninterface Styles {\n appearance?: FormSheetActionAppearanceUnion\n disabled?: boolean\n}\n\nconst useStyles = ({ appearance = 'neutral', disabled = false }: Styles = {}) => {\n const { colors } = useTheme()\n const { height } = useWindowDimensions()\n const { bottom, top } = useSafeAreaInsets()\n const headerHeight = useHeaderHeight()\n\n const containerHeight = Platform.select({\n ios: height - top - headerHeight,\n default: null,\n })\n\n const appearanceColorsMap = {\n neutral: {\n iconColor: colors.iconColorDefaultPrimary,\n textColor: colors.textColorDefaultPrimary,\n },\n danger: {\n iconColor: colors.fillColorStatusErrorMedium,\n textColor: colors.fillColorStatusErrorMedium,\n },\n }\n\n return StyleSheet.create({\n container: {\n justifyContent: 'flex-start',\n paddingBottom: bottom,\n width: '100%',\n backgroundColor: colors.fillColorNeutral100Inverted,\n height: containerHeight,\n ...Platform.select({\n ios: {\n flexGrow: 1, // Ensures the FormSheet children respond to the formsheet height changing on iOS\n },\n android: {\n maxHeight: '100%', // Ensures lists to scroll on Android\n },\n }),\n },\n androidSheetGrabber: {\n position: 'absolute',\n top: 5,\n width: 34,\n height: 5,\n backgroundColor: colors.fillColorNeutral040,\n borderRadius: 100,\n alignSelf: 'center',\n },\n content: {\n ...Platform.select({\n android: {\n maxHeight: '100%', // Ensures content above a list (e.g. FormSheet.Header) don't subtract from the FormSheet's height\n },\n }),\n },\n header: {\n paddingHorizontal: 16,\n paddingTop: 20,\n paddingBottom: 16,\n backgroundColor: colors.fillColorNeutral100Inverted,\n gap: 16,\n borderBottomWidth: 1,\n borderBottomColor: colors.borderColorDefaultBase,\n },\n headerContent: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n },\n headerTitle: {\n textAlign: 'left',\n flex: 1,\n },\n headerActions: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: 16,\n },\n actionPressable: {\n flexDirection: 'row',\n alignItems: 'center',\n paddingVertical: 12,\n paddingHorizontal: 16,\n gap: 8,\n },\n actionIcon: {\n color: disabled ? colors.textColorDefaultDisabled : appearanceColorsMap[appearance].iconColor,\n },\n actionTextBlock: {\n flex: 1,\n },\n actionTitle: {\n color: disabled ? colors.textColorDefaultDisabled : appearanceColorsMap[appearance].textColor,\n },\n actionDisabledReason: {\n color: colors.textColorDefaultDisabled,\n fontSize: 12,\n },\n })\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"form_sheet.js","names":["PlatformPressable","useHeaderHeight","React","Platform","StyleSheet","View","useWindowDimensions","useSafeAreaInsets","useTheme","isLiquidGlassEnabled","MAX_FONT_SIZE_MULTIPLIER_LANDMARK","Button","Heading","Icon","Text","TextButton","jsx","_jsx","jsxs","_jsxs","getFormSheetScreenOptions","headerTitle","sheetAllowedDetents","rest","presentation","headerShown","sheetCornerRadius","undefined","sheetGrabberVisible","FormSheet","Root","FormSheetRoot","Action","FormSheetAction","Header","FormSheetHeader","HeaderTitle","FormSheetHeaderTitle","HeaderActions","FormSheetHeaderActions","HeaderTextButton","FormSheetHeaderTextButton","HeaderButton","FormSheetHeaderButton","t0","$","_c","children","style","contentStyle","showAndroidSheetGrabber","t1","fitToContents","t2","t3","styles","useStyles","t4","container","t5","content","t6","t7","AndroidSheetGrabber","t8","collapsable","displayName","androidSheetGrabber","select","android","ios","header","headerContent","variant","headerActions","props","accessibilityShowsLargeContentViewer","accessibilityLargeContentTitle","title","FORM_SHEET_ACTION_APPEARANCES","neutral","danger","iconName","onPress","accessibilityLabel","accessibilityHint","accessibilityRole","appearance","disabled","disabledReason","testID","actionIcon","size","accessibilityElementsHidden","actionTitle","actionDisabledReason","t9","actionTextBlock","t10","actionPressable","colors","height","bottom","top","headerHeight","borderColorDefaultBase","fillColorNeutral040","fillColorNeutral100Inverted","fillColorStatusErrorMedium","iconColorDefaultPrimary","textColorDefaultDisabled","textColorDefaultPrimary","containerHeight","default","appearanceColorsMap","iconColor","textColor","create","justifyContent","paddingBottom","width","backgroundColor","flexGrow","maxHeight","position","borderRadius","alignSelf","paddingHorizontal","paddingTop","gap","borderBottomWidth","borderBottomColor","flexDirection","alignItems","textAlign","flex","paddingVertical","color","fontSize"],"sources":["../../../src/components/primitive/form_sheet.tsx"],"sourcesContent":["import { PlatformPressable, useHeaderHeight } from '@react-navigation/elements'\nimport { NativeStackNavigationOptions } from '@react-navigation/native-stack'\nimport React, { ReactNode } from 'react'\nimport {\n Platform,\n StyleSheet,\n View,\n useWindowDimensions,\n type AccessibilityRole,\n type StyleProp,\n type ViewStyle,\n} from 'react-native'\nimport { useSafeAreaInsets } from 'react-native-safe-area-context'\nimport { useTheme } from '../../hooks'\nimport { isLiquidGlassEnabled, MAX_FONT_SIZE_MULTIPLIER_LANDMARK } from '../../utils'\nimport type { ButtonProps, TextButtonProps } from '../display'\nimport { Button, Heading, Icon, IconString, Text, TextButton } from '../display'\n\n// =================================\n// ====== Exports ==================\n// =================================\n\n/**\n * Screen options for the formsheet's NativeStackNavigation route\n *\n * Returns a factory rather than an object because callers assign it at module\n * scope, which runs before ChatProvider reports the host's liquid glass\n * capability. React Navigation calls the factory per render, so the sheet\n * corner radius is resolved once that capability is known.\n *\n * @param {string} options.headerTitle - Doesn't show in UI but good to have for semantic reasons.\n * @param {number[]} [options.sheetAllowedDetents] - Controls the height increments the sheet grows to. To prevent bugs in Android, do not specify more then two values and use [0.94] instead of [1] to go full screen.\n * @param {NativeStackNavigationOptions} [options.rest] - Adds or overrides any valid NativeStackNavigationOptions\n * @returns {() => NativeStackNavigationOptions} Factory producing merged NativeStackNavigationOptions\n */\nexport const getFormSheetScreenOptions =\n ({ headerTitle, sheetAllowedDetents = [0.25], ...rest }: NativeStackNavigationOptions = {}) =>\n (): NativeStackNavigationOptions => ({\n presentation: 'formSheet',\n headerShown: false,\n sheetAllowedDetents,\n sheetCornerRadius: isLiquidGlassEnabled() ? undefined : 16,\n sheetGrabberVisible: true,\n headerTitle,\n ...rest,\n })\n\nconst FormSheet = {\n Root: FormSheetRoot,\n Action: FormSheetAction,\n Header: FormSheetHeader,\n HeaderTitle: FormSheetHeaderTitle,\n HeaderActions: FormSheetHeaderActions,\n HeaderTextButton: FormSheetHeaderTextButton,\n HeaderButton: FormSheetHeaderButton,\n} as const\n\ntype FormSheetComponents = {\n Root: React.FC<FormSheetRootProps>\n Action: React.FC<FormSheetActionProps>\n Header: React.FC<FormSheetHeaderProps>\n HeaderTitle: React.FC<FormSheetHeaderTitleProps>\n HeaderActions: React.FC<FormSheetHeaderActionsProps>\n HeaderTextButton: React.FC<FormSheetHeaderTextButtonProps>\n HeaderButton: React.FC<FormSheetHeaderButtonProps>\n}\n\nexport default FormSheet as FormSheetComponents\nexport type {\n FormSheetActionProps,\n FormSheetHeaderActionsProps,\n FormSheetHeaderButtonProps,\n FormSheetHeaderProps,\n FormSheetHeaderTextButtonProps,\n FormSheetHeaderTitleProps,\n FormSheetRootProps,\n}\n\n// ====================================\n// ====== ActionsFormSheetRoot ========\n// ====================================\n\ninterface FormSheetRootProps {\n children: ReactNode\n style?: StyleProp<ViewStyle>\n contentStyle?: StyleProp<ViewStyle>\n showAndroidSheetGrabber?: boolean\n fitToContents?: boolean\n}\n\nexport function FormSheetRoot({\n children,\n style,\n contentStyle,\n showAndroidSheetGrabber = true,\n fitToContents = false,\n}: FormSheetRootProps) {\n const styles = useStyles({ fitToContents })\n\n return (\n <View style={[styles.container, style]} collapsable={false}>\n <View style={[styles.content, contentStyle]}>{children}</View>\n {showAndroidSheetGrabber && <AndroidSheetGrabber />}\n </View>\n )\n}\n\nFormSheetRoot.displayName = 'FormSheet.Root'\n\n// ====================================\n// ====== AndroidSheetGrabber =========\n// ====================================\n\nfunction AndroidSheetGrabber() {\n const styles = useStyles()\n\n return Platform.select({\n android: <View style={styles.androidSheetGrabber} />,\n ios: null,\n })\n}\n\n// ====================================\n// ====== FormSheetHeader =============\n// ====================================\n\ninterface FormSheetHeaderProps {\n children: ReactNode\n style?: StyleProp<ViewStyle>\n}\n\nfunction FormSheetHeader({ children, style }: FormSheetHeaderProps) {\n const styles = useStyles()\n\n return (\n <View style={[styles.header, style]}>\n <View style={styles.headerContent}>{children}</View>\n </View>\n )\n}\n\nFormSheetHeader.displayName = 'FormSheet.Header'\n\n// ====================================\n// ====== FormSheetHeaderTitle ========\n// ====================================\n\ninterface FormSheetHeaderTitleProps {\n children: ReactNode\n}\n\nfunction FormSheetHeaderTitle({ children }: FormSheetHeaderTitleProps) {\n const styles = useStyles()\n\n return (\n <Heading\n variant=\"h3\"\n style={styles.headerTitle}\n maxFontSizeMultiplier={MAX_FONT_SIZE_MULTIPLIER_LANDMARK}\n >\n {children}\n </Heading>\n )\n}\n\nFormSheetHeaderTitle.displayName = 'FormSheet.HeaderTitle'\n\n// ====================================\n// ====== FormSheetHeaderActions ======\n// ====================================\n\ninterface FormSheetHeaderActionsProps {\n children: ReactNode\n}\n\nfunction FormSheetHeaderActions({ children }: FormSheetHeaderActionsProps) {\n const styles = useStyles()\n\n return <View style={styles.headerActions}>{children}</View>\n}\n\nFormSheetHeaderActions.displayName = 'FormSheet.HeaderActions'\n\n// ===========================================\n// ====== FormSheetHeaderTextButton ==========\n// ===========================================\n\n// We are omitting `onLongPress` because we are instead supporting `accessibilityShowsLargeContentViewer`.\n// This is triggered by an `onLongPress` event when an iOS device is in Apple's accessible font scale range.\n// Triggering this prop will display an almost full screen iOS a11y button.\ninterface FormSheetHeaderTextButtonProps\n extends Omit<TextButtonProps, 'maxFontSizeMultiplier' | 'onLongPress'> {\n children: string\n}\n\nfunction FormSheetHeaderTextButton(props: FormSheetHeaderTextButtonProps) {\n return (\n <TextButton\n {...props}\n maxFontSizeMultiplier={MAX_FONT_SIZE_MULTIPLIER_LANDMARK}\n accessibilityShowsLargeContentViewer\n accessibilityLargeContentTitle={props.children}\n />\n )\n}\n\nFormSheetHeaderTextButton.displayName = 'FormSheet.HeaderTextButton'\n\n// =========================================\n// ====== FormSheetHeaderButton ============\n// =========================================\n\n// Same `onLongPress`note as `FormSheetHeaderTextButtonProps`\ninterface FormSheetHeaderButtonProps\n extends Omit<ButtonProps, 'maxFontSizeMultiplier' | 'onLongPress'> {}\n\nfunction FormSheetHeaderButton(props: FormSheetHeaderButtonProps) {\n return (\n <Button\n {...props}\n maxFontSizeMultiplier={MAX_FONT_SIZE_MULTIPLIER_LANDMARK}\n accessibilityShowsLargeContentViewer\n accessibilityLargeContentTitle={props.title}\n />\n )\n}\n\nFormSheetHeaderButton.displayName = 'FormSheet.HeaderButton'\n\n// ====================================\n// ====== ActionsFormSheetAction ======\n// ====================================\n\nconst FORM_SHEET_ACTION_APPEARANCES = {\n neutral: 'neutral',\n danger: 'danger',\n} as const\n\ntype FormSheetActionAppearanceUnion =\n (typeof FORM_SHEET_ACTION_APPEARANCES)[keyof typeof FORM_SHEET_ACTION_APPEARANCES]\n\ninterface FormSheetActionProps {\n title: string\n iconName?: IconString\n onPress: () => void\n accessibilityLabel?: string\n accessibilityHint?: string\n accessibilityRole?: AccessibilityRole\n appearance?: FormSheetActionAppearanceUnion\n disabled?: boolean\n disabledReason?: string\n testID?: string\n}\n\nfunction FormSheetAction({\n title,\n iconName,\n onPress,\n accessibilityLabel,\n accessibilityHint,\n accessibilityRole = 'button',\n appearance = 'neutral',\n disabled = false,\n disabledReason,\n testID,\n}: FormSheetActionProps) {\n const styles = useStyles({ appearance, disabled })\n\n return (\n <PlatformPressable\n testID={testID}\n onPress={onPress}\n accessibilityLabel={accessibilityLabel}\n accessibilityHint={\n accessibilityHint ?? (disabled && disabledReason ? disabledReason : undefined)\n }\n accessibilityRole={accessibilityRole}\n style={styles.actionPressable}\n disabled={disabled}\n >\n {iconName && (\n <Icon name={iconName} size={16} accessibilityElementsHidden style={styles.actionIcon} />\n )}\n <View style={styles.actionTextBlock}>\n <Text style={styles.actionTitle}>{title}</Text>\n {disabled && disabledReason && (\n <Text style={styles.actionDisabledReason}>{disabledReason}</Text>\n )}\n </View>\n </PlatformPressable>\n )\n}\n\nFormSheetAction.displayName = 'FormSheet.Action'\n\n// ==================================\n// ====== Styles ====================\n// ==================================\n\ninterface Styles {\n appearance?: FormSheetActionAppearanceUnion\n disabled?: boolean\n fitToContents?: boolean\n}\n\nconst useStyles = ({\n appearance = 'neutral',\n disabled = false,\n fitToContents = false,\n}: Styles = {}) => {\n const { colors } = useTheme()\n const { height } = useWindowDimensions()\n const { bottom, top } = useSafeAreaInsets()\n const headerHeight = useHeaderHeight()\n\n const containerHeight = Platform.select({\n ios: fitToContents ? undefined : height - top - headerHeight,\n default: null,\n })\n\n const appearanceColorsMap = {\n neutral: {\n iconColor: colors.iconColorDefaultPrimary,\n textColor: colors.textColorDefaultPrimary,\n },\n danger: {\n iconColor: colors.fillColorStatusErrorMedium,\n textColor: colors.fillColorStatusErrorMedium,\n },\n }\n\n return StyleSheet.create({\n container: {\n justifyContent: 'flex-start',\n paddingBottom: bottom,\n width: '100%',\n backgroundColor: colors.fillColorNeutral100Inverted,\n height: containerHeight,\n ...Platform.select({\n ios: {\n flexGrow: 1, // Ensures the FormSheet children respond to the formsheet height changing on iOS\n },\n android: {\n maxHeight: '100%', // Ensures lists to scroll on Android\n },\n }),\n },\n androidSheetGrabber: {\n position: 'absolute',\n top: 5,\n width: 34,\n height: 5,\n backgroundColor: colors.fillColorNeutral040,\n borderRadius: 100,\n alignSelf: 'center',\n },\n content: {\n ...Platform.select({\n android: {\n maxHeight: '100%', // Ensures content above a list (e.g. FormSheet.Header) don't subtract from the FormSheet's height\n },\n }),\n },\n header: {\n paddingHorizontal: 16,\n paddingTop: 20,\n paddingBottom: 16,\n backgroundColor: colors.fillColorNeutral100Inverted,\n gap: 16,\n borderBottomWidth: 1,\n borderBottomColor: colors.borderColorDefaultBase,\n },\n headerContent: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n },\n headerTitle: {\n textAlign: 'left',\n flex: 1,\n },\n headerActions: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: 16,\n },\n actionPressable: {\n flexDirection: 'row',\n alignItems: 'center',\n paddingVertical: 12,\n paddingHorizontal: 16,\n gap: 8,\n },\n actionIcon: {\n color: disabled ? colors.textColorDefaultDisabled : appearanceColorsMap[appearance].iconColor,\n },\n actionTextBlock: {\n flex: 1,\n },\n actionTitle: {\n color: disabled ? colors.textColorDefaultDisabled : appearanceColorsMap[appearance].textColor,\n },\n actionDisabledReason: {\n color: colors.textColorDefaultDisabled,\n fontSize: 12,\n },\n })\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"use_conversation_messages.d.ts","sourceRoot":"","sources":["../../src/hooks/use_conversation_messages.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAE1C,OAAO,EAAE,wBAAwB,EAAwB,MAAM,oBAAoB,CAAA;AAEnF,eAAO,MAAM,uBAAuB,GAClC,oCAAoC;IAAE,eAAe,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,EAC9F,OAAO,wBAAwB;;;;;;;CAqBhC,CAAA"}
1
+ {"version":3,"file":"use_conversation_messages.d.ts","sourceRoot":"","sources":["../../src/hooks/use_conversation_messages.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAG1C,OAAO,EAAE,wBAAwB,EAAwB,MAAM,oBAAoB,CAAA;AAEnF,eAAO,MAAM,uBAAuB,GAClC,oCAAoC;IAAE,eAAe,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,EAC9F,OAAO,wBAAwB;;;;;;;CAwBhC,CAAA"}
@@ -1,9 +1,10 @@
1
1
  import { c as _c } from "react/compiler-runtime";
2
2
  import { useMemo } from 'react';
3
+ import { replaceEqualById } from '../utils/replace_equal_by_id';
3
4
  import { getMessagesQueryKey, getMessagesRequestArgs } from '../utils/request/get_messages';
4
5
  import { useSuspensePaginator } from './use_suspense_api';
5
6
  export const useConversationMessages = (t0, opts) => {
6
- const $ = _c(15);
7
+ const $ = _c(17);
7
8
  const {
8
9
  conversation_id,
9
10
  reply_root_id
@@ -20,38 +21,49 @@ export const useConversationMessages = (t0, opts) => {
20
21
  } else {
21
22
  t1 = $[2];
22
23
  }
24
+ let t2;
25
+ if ($[3] !== opts) {
26
+ t2 = {
27
+ structuralSharing: replaceEqualById,
28
+ ...opts
29
+ };
30
+ $[3] = opts;
31
+ $[4] = t2;
32
+ } else {
33
+ t2 = $[4];
34
+ }
23
35
  const {
24
36
  data,
25
37
  refetch,
26
38
  isRefetching,
27
39
  fetchNextPage,
28
40
  hasNextPage
29
- } = useSuspensePaginator(t1, opts);
30
- let t2;
31
- if ($[3] !== conversation_id || $[4] !== reply_root_id) {
32
- t2 = getMessagesQueryKey({
41
+ } = useSuspensePaginator(t1, t2);
42
+ let t3;
43
+ if ($[5] !== conversation_id || $[6] !== reply_root_id) {
44
+ t3 = getMessagesQueryKey({
33
45
  conversation_id,
34
46
  reply_root_id
35
47
  });
36
- $[3] = conversation_id;
37
- $[4] = reply_root_id;
38
- $[5] = t2;
39
- } else {
40
- t2 = $[5];
41
- }
42
- const queryKey = t2;
43
- let t3;
44
- if ($[6] !== data) {
45
- t3 = data.filter(_temp).sort(_temp2);
46
- $[6] = data;
48
+ $[5] = conversation_id;
49
+ $[6] = reply_root_id;
47
50
  $[7] = t3;
48
51
  } else {
49
52
  t3 = $[7];
50
53
  }
51
- const messages = t3;
54
+ const queryKey = t3;
52
55
  let t4;
53
- if ($[8] !== fetchNextPage || $[9] !== hasNextPage || $[10] !== isRefetching || $[11] !== messages || $[12] !== queryKey || $[13] !== refetch) {
54
- t4 = {
56
+ if ($[8] !== data) {
57
+ t4 = data.filter(_temp).sort(_temp2);
58
+ $[8] = data;
59
+ $[9] = t4;
60
+ } else {
61
+ t4 = $[9];
62
+ }
63
+ const messages = t4;
64
+ let t5;
65
+ if ($[10] !== fetchNextPage || $[11] !== hasNextPage || $[12] !== isRefetching || $[13] !== messages || $[14] !== queryKey || $[15] !== refetch) {
66
+ t5 = {
55
67
  messages,
56
68
  refetch,
57
69
  isRefetching,
@@ -59,17 +71,17 @@ export const useConversationMessages = (t0, opts) => {
59
71
  hasNextPage,
60
72
  queryKey
61
73
  };
62
- $[8] = fetchNextPage;
63
- $[9] = hasNextPage;
64
- $[10] = isRefetching;
65
- $[11] = messages;
66
- $[12] = queryKey;
67
- $[13] = refetch;
68
- $[14] = t4;
74
+ $[10] = fetchNextPage;
75
+ $[11] = hasNextPage;
76
+ $[12] = isRefetching;
77
+ $[13] = messages;
78
+ $[14] = queryKey;
79
+ $[15] = refetch;
80
+ $[16] = t5;
69
81
  } else {
70
- t4 = $[14];
82
+ t5 = $[16];
71
83
  }
72
- return t4;
84
+ return t5;
73
85
  };
74
86
  function _temp(message) {
75
87
  return (!message.deletedAt || message.replyRootId) && (message.attachments?.length || message.text?.length);
@@ -1 +1 @@
1
- {"version":3,"file":"use_conversation_messages.js","names":["useMemo","getMessagesQueryKey","getMessagesRequestArgs","useSuspensePaginator","useConversationMessages","t0","opts","$","_c","conversation_id","reply_root_id","t1","data","refetch","isRefetching","fetchNextPage","hasNextPage","t2","queryKey","t3","filter","_temp","sort","_temp2","messages","t4","message","deletedAt","replyRootId","attachments","length","text","a","b","id","localeCompare"],"sources":["../../src/hooks/use_conversation_messages.ts"],"sourcesContent":["import { useMemo } from 'react'\nimport { MessageResource } from '../types'\nimport { getMessagesQueryKey, getMessagesRequestArgs } from '../utils/request/get_messages'\nimport { SuspensePaginatorOptions, useSuspensePaginator } from './use_suspense_api'\n\nexport const useConversationMessages = (\n { conversation_id, reply_root_id }: { conversation_id: number; reply_root_id?: string | null },\n opts?: SuspensePaginatorOptions\n) => {\n const { data, refetch, isRefetching, fetchNextPage, hasNextPage } =\n useSuspensePaginator<MessageResource>(\n getMessagesRequestArgs({ conversation_id, reply_root_id }),\n opts\n )\n const queryKey = getMessagesQueryKey({ conversation_id, reply_root_id })\n const messages = useMemo(\n () =>\n data\n .filter(\n message =>\n (!message.deletedAt || message.replyRootId) &&\n (message.attachments?.length || message.text?.length)\n )\n .sort((a, b) => -a.id.localeCompare(b.id)),\n [data]\n )\n\n return { messages, refetch, isRefetching, fetchNextPage, hasNextPage, queryKey }\n}\n"],"mappings":";AAAA,SAASA,OAAO,QAAQ,OAAO;AAE/B,SAASC,mBAAmB,EAAEC,sBAAsB,QAAQ,+BAA+B;AAC3F,SAAmCC,oBAAoB,QAAQ,oBAAoB;AAEnF,OAAO,MAAMC,uBAAuB,GAAGA,CAAAC,EAAA,EAAAC,IAAA;EAAA,MAAAC,CAAA,GAAAC,EAAA;EACrC;IAAAC,eAAA;IAAAC;EAAA,IAAAL,EAA8F;EAAA,IAAAM,EAAA;EAAA,IAAAJ,CAAA,QAAAE,eAAA,IAAAF,CAAA,QAAAG,aAAA;IAK1FC,EAAA,GAAAT,sBAAsB,CAAC;MAAAO,eAAA;MAAAC;IAAiC,CAAC,CAAC;IAAAH,CAAA,MAAAE,eAAA;IAAAF,CAAA,MAAAG,aAAA;IAAAH,CAAA,MAAAI,EAAA;EAAA;IAAAA,EAAA,GAAAJ,CAAA;EAAA;EAF9D;IAAAK,IAAA;IAAAC,OAAA;IAAAC,YAAA;IAAAC,aAAA;IAAAC;EAAA,IACEb,oBAAoB,CAClBQ,EAA0D,EAC1DL,IACF,CAAC;EAAA,IAAAW,EAAA;EAAA,IAAAV,CAAA,QAAAE,eAAA,IAAAF,CAAA,QAAAG,aAAA;IACcO,EAAA,GAAAhB,mBAAmB,CAAC;MAAAQ,eAAA;MAAAC;IAAiC,CAAC,CAAC;IAAAH,CAAA,MAAAE,eAAA;IAAAF,CAAA,MAAAG,aAAA;IAAAH,CAAA,MAAAU,EAAA;EAAA;IAAAA,EAAA,GAAAV,CAAA;EAAA;EAAxE,MAAAW,QAAA,GAAiBD,EAAuD;EAAA,IAAAE,EAAA;EAAA,IAAAZ,CAAA,QAAAK,IAAA;IAGpEO,EAAA,GAAAP,IAAI,CAAAQ,MACK,CACLC,KAGF,CAAC,CAAAC,IACI,CAACC,MAAmC,CAAC;IAAAhB,CAAA,MAAAK,IAAA;IAAAL,CAAA,MAAAY,EAAA;EAAA;IAAAA,EAAA,GAAAZ,CAAA;EAAA;EARhD,MAAAiB,QAAA,GAEIL,EAM4C;EAE/C,IAAAM,EAAA;EAAA,IAAAlB,CAAA,QAAAQ,aAAA,IAAAR,CAAA,QAAAS,WAAA,IAAAT,CAAA,SAAAO,YAAA,IAAAP,CAAA,SAAAiB,QAAA,IAAAjB,CAAA,SAAAW,QAAA,IAAAX,CAAA,SAAAM,OAAA;IAEMY,EAAA;MAAAD,QAAA;MAAAX,OAAA;MAAAC,YAAA;MAAAC,aAAA;MAAAC,WAAA;MAAAE;IAAwE,CAAC;IAAAX,CAAA,MAAAQ,aAAA;IAAAR,CAAA,MAAAS,WAAA;IAAAT,CAAA,OAAAO,YAAA;IAAAP,CAAA,OAAAiB,QAAA;IAAAjB,CAAA,OAAAW,QAAA;IAAAX,CAAA,OAAAM,OAAA;IAAAN,CAAA,OAAAkB,EAAA;EAAA;IAAAA,EAAA,GAAAlB,CAAA;EAAA;EAAA,OAAzEkB,EAAyE;AAAA,CACjF;AAvBsC,SAAAJ,MAAAK,OAAA;EAAA,OAe3B,CAAC,CAACA,OAAO,CAAAC,SAAiC,IAAnBD,OAAO,CAAAE,WACuB,MAApDF,OAAO,CAAAG,WAAoB,EAAAC,MAAwB,IAApBJ,OAAO,CAAAK,IAAa,EAAAD,MAAC;AAAA;AAhB1B,SAAAP,OAAAS,CAAA,EAAAC,CAAA;EAAA,OAkBf,CAACD,CAAC,CAAAE,EAAG,CAAAC,aAAc,CAACF,CAAC,CAAAC,EAAG,CAAC;AAAA","ignoreList":[]}
1
+ {"version":3,"file":"use_conversation_messages.js","names":["useMemo","replaceEqualById","getMessagesQueryKey","getMessagesRequestArgs","useSuspensePaginator","useConversationMessages","t0","opts","$","_c","conversation_id","reply_root_id","t1","t2","structuralSharing","data","refetch","isRefetching","fetchNextPage","hasNextPage","t3","queryKey","t4","filter","_temp","sort","_temp2","messages","t5","message","deletedAt","replyRootId","attachments","length","text","a","b","id","localeCompare"],"sources":["../../src/hooks/use_conversation_messages.ts"],"sourcesContent":["import { useMemo } from 'react'\nimport { MessageResource } from '../types'\nimport { replaceEqualById } from '../utils/replace_equal_by_id'\nimport { getMessagesQueryKey, getMessagesRequestArgs } from '../utils/request/get_messages'\nimport { SuspensePaginatorOptions, useSuspensePaginator } from './use_suspense_api'\n\nexport const useConversationMessages = (\n { conversation_id, reply_root_id }: { conversation_id: number; reply_root_id?: string | null },\n opts?: SuspensePaginatorOptions\n) => {\n const { data, refetch, isRefetching, fetchNextPage, hasNextPage } =\n useSuspensePaginator<MessageResource>(\n getMessagesRequestArgs({ conversation_id, reply_root_id }),\n {\n structuralSharing: replaceEqualById,\n ...opts,\n }\n )\n const queryKey = getMessagesQueryKey({ conversation_id, reply_root_id })\n const messages = useMemo(\n () =>\n data\n .filter(\n message =>\n (!message.deletedAt || message.replyRootId) &&\n (message.attachments?.length || message.text?.length)\n )\n .sort((a, b) => -a.id.localeCompare(b.id)),\n [data]\n )\n\n return { messages, refetch, isRefetching, fetchNextPage, hasNextPage, queryKey }\n}\n"],"mappings":";AAAA,SAASA,OAAO,QAAQ,OAAO;AAE/B,SAASC,gBAAgB,QAAQ,8BAA8B;AAC/D,SAASC,mBAAmB,EAAEC,sBAAsB,QAAQ,+BAA+B;AAC3F,SAAmCC,oBAAoB,QAAQ,oBAAoB;AAEnF,OAAO,MAAMC,uBAAuB,GAAGA,CAAAC,EAAA,EAAAC,IAAA;EAAA,MAAAC,CAAA,GAAAC,EAAA;EACrC;IAAAC,eAAA;IAAAC;EAAA,IAAAL,EAA8F;EAAA,IAAAM,EAAA;EAAA,IAAAJ,CAAA,QAAAE,eAAA,IAAAF,CAAA,QAAAG,aAAA;IAK1FC,EAAA,GAAAT,sBAAsB,CAAC;MAAAO,eAAA;MAAAC;IAAiC,CAAC,CAAC;IAAAH,CAAA,MAAAE,eAAA;IAAAF,CAAA,MAAAG,aAAA;IAAAH,CAAA,MAAAI,EAAA;EAAA;IAAAA,EAAA,GAAAJ,CAAA;EAAA;EAAA,IAAAK,EAAA;EAAA,IAAAL,CAAA,QAAAD,IAAA;IAC1DM,EAAA;MAAAC,iBAAA,EACqBb,gBAAgB;MAAA,GAChCM;IACL,CAAC;IAAAC,CAAA,MAAAD,IAAA;IAAAC,CAAA,MAAAK,EAAA;EAAA;IAAAA,EAAA,GAAAL,CAAA;EAAA;EANL;IAAAO,IAAA;IAAAC,OAAA;IAAAC,YAAA;IAAAC,aAAA;IAAAC;EAAA,IACEf,oBAAoB,CAClBQ,EAA0D,EAC1DC,EAIF,CAAC;EAAA,IAAAO,EAAA;EAAA,IAAAZ,CAAA,QAAAE,eAAA,IAAAF,CAAA,QAAAG,aAAA;IACcS,EAAA,GAAAlB,mBAAmB,CAAC;MAAAQ,eAAA;MAAAC;IAAiC,CAAC,CAAC;IAAAH,CAAA,MAAAE,eAAA;IAAAF,CAAA,MAAAG,aAAA;IAAAH,CAAA,MAAAY,EAAA;EAAA;IAAAA,EAAA,GAAAZ,CAAA;EAAA;EAAxE,MAAAa,QAAA,GAAiBD,EAAuD;EAAA,IAAAE,EAAA;EAAA,IAAAd,CAAA,QAAAO,IAAA;IAGpEO,EAAA,GAAAP,IAAI,CAAAQ,MACK,CACLC,KAGF,CAAC,CAAAC,IACI,CAACC,MAAmC,CAAC;IAAAlB,CAAA,MAAAO,IAAA;IAAAP,CAAA,MAAAc,EAAA;EAAA;IAAAA,EAAA,GAAAd,CAAA;EAAA;EARhD,MAAAmB,QAAA,GAEIL,EAM4C;EAE/C,IAAAM,EAAA;EAAA,IAAApB,CAAA,SAAAU,aAAA,IAAAV,CAAA,SAAAW,WAAA,IAAAX,CAAA,SAAAS,YAAA,IAAAT,CAAA,SAAAmB,QAAA,IAAAnB,CAAA,SAAAa,QAAA,IAAAb,CAAA,SAAAQ,OAAA;IAEMY,EAAA;MAAAD,QAAA;MAAAX,OAAA;MAAAC,YAAA;MAAAC,aAAA;MAAAC,WAAA;MAAAE;IAAwE,CAAC;IAAAb,CAAA,OAAAU,aAAA;IAAAV,CAAA,OAAAW,WAAA;IAAAX,CAAA,OAAAS,YAAA;IAAAT,CAAA,OAAAmB,QAAA;IAAAnB,CAAA,OAAAa,QAAA;IAAAb,CAAA,OAAAQ,OAAA;IAAAR,CAAA,OAAAoB,EAAA;EAAA;IAAAA,EAAA,GAAApB,CAAA;EAAA;EAAA,OAAzEoB,EAAyE;AAAA,CACjF;AA1BsC,SAAAJ,MAAAK,OAAA;EAAA,OAkB3B,CAAC,CAACA,OAAO,CAAAC,SAAiC,IAAnBD,OAAO,CAAAE,WACuB,MAApDF,OAAO,CAAAG,WAAoB,EAAAC,MAAwB,IAApBJ,OAAO,CAAAK,IAAa,EAAAD,MAAC;AAAA;AAnB1B,SAAAP,OAAAS,CAAA,EAAAC,CAAA;EAAA,OAqBf,CAACD,CAAC,CAAAE,EAAG,CAAAC,aAAc,CAACF,CAAC,CAAAC,EAAG,CAAC;AAAA","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"use_conversation_messages_jolt_events.d.ts","sourceRoot":"","sources":["../../src/hooks/use_conversation_messages_jolt_events.ts"],"names":[],"mappings":"AAyBA,UAAU,KAAK;IACb,cAAc,EAAE,MAAM,CAAA;CACvB;AAED,wBAAgB,iCAAiC,CAAC,EAAE,cAAc,EAAE,EAAE,KAAK,QA+F1E"}
1
+ {"version":3,"file":"use_conversation_messages_jolt_events.d.ts","sourceRoot":"","sources":["../../src/hooks/use_conversation_messages_jolt_events.ts"],"names":[],"mappings":"AA0BA,UAAU,KAAK;IACb,cAAc,EAAE,MAAM,CAAA;CACvB;AAED,wBAAgB,iCAAiC,CAAC,EAAE,cAAc,EAAE,EAAE,KAAK,QAqG1E"}
@@ -1,7 +1,7 @@
1
1
  import { c as _c } from "react/compiler-runtime";
2
2
  import { useQueryClient } from '@tanstack/react-query';
3
3
  import { deleteRecordInPagesData } from '../utils';
4
- import { updateCacheWithMessage, updateCacheWithIndividualMessage, updateCacheWithReaction, getThreadedMessagesQueryKey } from '../utils/cache/messages_cache';
4
+ import { updateCacheWithMessage, updateCacheWithIndividualMessage, updateCacheWithReaction, updateCacheReplyRoots, getThreadedMessagesQueryKey } from '../utils/cache/messages_cache';
5
5
  import { transformMessageEventDataToMessageResource } from '../utils/jolt/transform_message_event_data_to_message_resource';
6
6
  import { completeMessageCreationTracking } from '../utils/performance_tracking';
7
7
  import { getMessageQueryKey } from '../utils/request/get_message';
@@ -47,6 +47,7 @@ export function useConversationMessagesJoltEvents(t0) {
47
47
  data,
48
48
  currentPersonId: currentPerson.id
49
49
  });
50
+ const isReplyRootUpdate = e.event === "message.updated" && data.reply_root_id === data.sort_key;
50
51
  if (e.event === "message.created" && data.author_id) {
51
52
  removeAllTypingEventsByAuthorId(data.author_id);
52
53
  if (data.idempotent_key && data.author_id === currentPerson.id) {
@@ -60,6 +61,10 @@ export function useConversationMessagesJoltEvents(t0) {
60
61
  if (data.reply_root_id) {
61
62
  const threadedMessagesQueryKey = getThreadedMessagesQueryKey(conversationId, data.reply_root_id);
62
63
  updateCacheWithMessage(queryClient, threadedMessagesQueryKey, message, e.event);
64
+ if (isReplyRootUpdate) {
65
+ updateCacheReplyRoots(queryClient, messagesQueryKey, message);
66
+ updateCacheReplyRoots(queryClient, threadedMessagesQueryKey, message);
67
+ }
63
68
  }
64
69
  if (e.event === "message.updated") {
65
70
  const individualMessageQueryKey = getMessageQueryKey({
@@ -1 +1 @@
1
- {"version":3,"file":"use_conversation_messages_jolt_events.js","names":["useQueryClient","deleteRecordInPagesData","updateCacheWithMessage","updateCacheWithIndividualMessage","updateCacheWithReaction","getThreadedMessagesQueryKey","transformMessageEventDataToMessageResource","completeMessageCreationTracking","getMessageQueryKey","getMessagesRequestArgs","useApiClient","useCurrentPerson","useJoltChannel","useJoltEvent","getRequestQueryKey","TYPING_TIMEOUT_INTERVAL","useTypingStatusCache","useConversationMessagesJoltEvents","t0","$","_c","conversationId","queryClient","currentPerson","joltChannel","t1","messagesRequestArgs","conversation_id","messagesQueryKey","apiClient","addTypingEvent","removeTypingEventById","removeAllTypingEventsByAuthorId","t2","id","e","data","message","currentPersonId","event","author_id","idempotent_key","idempotentKey","reply_root_id","threadedMessagesQueryKey","individualMessageQueryKey","messageId","sort_key","handleMessageUpdateOrCreate","t3","e_0","data_0","message_0","setQueryData","prev","record","threadedMessagesQueryKey_0","prev_0","handleMessageDeleted","t4","e_1","replyRootId","threadedMessagesQueryKey_1","handleReactionJoltEvent","t5","e_2","data_1","setTimeout","handleTypingEvent"],"sources":["../../src/hooks/use_conversation_messages_jolt_events.ts"],"sourcesContent":["import { InfiniteData, useQueryClient } from '@tanstack/react-query'\nimport { ApiCollection, MessageResource } from '../types'\nimport { JoltReactionEvent, JoltTypingEvent } from '../types/jolt_events'\nimport {\n MessageCreatedEvent,\n MessageUpdatedEvent,\n MessageDeletedEvent,\n} from '../types/jolt_events/message_events'\nimport { deleteRecordInPagesData } from '../utils'\nimport {\n updateCacheWithMessage,\n updateCacheWithIndividualMessage,\n updateCacheWithReaction,\n getThreadedMessagesQueryKey,\n} from '../utils/cache/messages_cache'\nimport { transformMessageEventDataToMessageResource } from '../utils/jolt/transform_message_event_data_to_message_resource'\nimport { completeMessageCreationTracking } from '../utils/performance_tracking'\nimport { getMessageQueryKey } from '../utils/request/get_message'\nimport { getMessagesRequestArgs } from '../utils/request/get_messages'\nimport { useApiClient } from './use_api_client'\nimport { useCurrentPerson } from './use_current_person'\nimport { useJoltChannel, useJoltEvent } from './use_jolt'\nimport { getRequestQueryKey } from './use_suspense_api'\nimport { TYPING_TIMEOUT_INTERVAL, useTypingStatusCache } from './use_typing_status_cache'\n\ninterface Props {\n conversationId: number\n}\n\nexport function useConversationMessagesJoltEvents({ conversationId }: Props) {\n const queryClient = useQueryClient()\n const currentPerson = useCurrentPerson()\n const joltChannel = useJoltChannel(`chat.conversations.${conversationId}`)\n const messagesRequestArgs = getMessagesRequestArgs({ conversation_id: conversationId })\n const messagesQueryKey = getRequestQueryKey(messagesRequestArgs)\n const apiClient = useApiClient()\n\n const { addTypingEvent, removeTypingEventById, removeAllTypingEventsByAuthorId } =\n useTypingStatusCache(conversationId)\n\n const handleMessageUpdateOrCreate = async (e: MessageCreatedEvent | MessageUpdatedEvent) => {\n const { data } = e.data\n const message = transformMessageEventDataToMessageResource({\n data,\n currentPersonId: currentPerson.id,\n })\n\n if (e.event === 'message.created' && data.author_id) {\n removeAllTypingEventsByAuthorId(data.author_id)\n if (data.idempotent_key && data.author_id === currentPerson.id) {\n completeMessageCreationTracking({ apiClient, idempotentKey: data.idempotent_key })\n }\n }\n\n // Update the main conversation cache\n updateCacheWithMessage(queryClient, messagesQueryKey, message, e.event)\n\n // If message has a reply_root_id, also update the threaded cache\n if (data.reply_root_id) {\n const threadedMessagesQueryKey = getThreadedMessagesQueryKey(\n conversationId,\n data.reply_root_id\n )\n updateCacheWithMessage(queryClient, threadedMessagesQueryKey, message, e.event)\n }\n\n // Update individual message query cache so reply shadow messages update immediately\n if (e.event === 'message.updated') {\n const individualMessageQueryKey = getMessageQueryKey({\n conversation_id: conversationId,\n messageId: data.sort_key,\n })\n updateCacheWithIndividualMessage(queryClient, individualMessageQueryKey, message)\n }\n }\n\n const handleMessageDeleted = async (e: MessageDeletedEvent) => {\n const { data } = e.data\n const message = transformMessageEventDataToMessageResource({\n data,\n currentPersonId: currentPerson.id,\n })\n\n // Update the main conversation cache\n queryClient.setQueryData<QueryData>(messagesQueryKey, prev =>\n deleteRecordInPagesData({ data: prev, record: message })\n )\n\n // If message has a reply_root_id, also update the threaded cache\n if (data.reply_root_id) {\n const threadedMessagesQueryKey = getThreadedMessagesQueryKey(\n conversationId,\n data.reply_root_id\n )\n queryClient.setQueryData<QueryData>(threadedMessagesQueryKey, prev =>\n deleteRecordInPagesData({ data: prev, record: message })\n )\n }\n }\n\n const handleReactionJoltEvent = async (e: JoltReactionEvent) => {\n // Update the main conversation cache and capture the reply_root_id if present\n updateCacheWithReaction(queryClient, messagesQueryKey, e, currentPerson.id)\n\n const replyRootId = e.data.data.reply_root_id\n\n // If the message has a reply_root_id, also update the threaded cache\n if (replyRootId) {\n const threadedMessagesQueryKey = getThreadedMessagesQueryKey(conversationId, replyRootId)\n updateCacheWithReaction(queryClient, threadedMessagesQueryKey, e, currentPerson.id)\n }\n }\n\n const handleTypingEvent = async (e: JoltTypingEvent) => {\n const { data } = e.data\n addTypingEvent(data)\n setTimeout(() => removeTypingEventById(data.id), TYPING_TIMEOUT_INTERVAL)\n }\n\n useJoltEvent(joltChannel, 'message.created', handleMessageUpdateOrCreate)\n useJoltEvent(joltChannel, 'message.updated', handleMessageUpdateOrCreate)\n useJoltEvent(joltChannel, 'message.destroyed', handleMessageDeleted)\n useJoltEvent(joltChannel, 'reaction.*', handleReactionJoltEvent)\n useJoltEvent(joltChannel, 'typing.broadcast', handleTypingEvent)\n}\n\ntype QueryData = InfiniteData<ApiCollection<MessageResource>>\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"use_conversation_messages_jolt_events.js","names":["useQueryClient","deleteRecordInPagesData","updateCacheWithMessage","updateCacheWithIndividualMessage","updateCacheWithReaction","updateCacheReplyRoots","getThreadedMessagesQueryKey","transformMessageEventDataToMessageResource","completeMessageCreationTracking","getMessageQueryKey","getMessagesRequestArgs","useApiClient","useCurrentPerson","useJoltChannel","useJoltEvent","getRequestQueryKey","TYPING_TIMEOUT_INTERVAL","useTypingStatusCache","useConversationMessagesJoltEvents","t0","$","_c","conversationId","queryClient","currentPerson","joltChannel","t1","messagesRequestArgs","conversation_id","messagesQueryKey","apiClient","addTypingEvent","removeTypingEventById","removeAllTypingEventsByAuthorId","t2","id","e","data","message","currentPersonId","isReplyRootUpdate","event","reply_root_id","sort_key","author_id","idempotent_key","idempotentKey","threadedMessagesQueryKey","individualMessageQueryKey","messageId","handleMessageUpdateOrCreate","t3","e_0","data_0","message_0","setQueryData","prev","record","threadedMessagesQueryKey_0","prev_0","handleMessageDeleted","t4","e_1","replyRootId","threadedMessagesQueryKey_1","handleReactionJoltEvent","t5","e_2","data_1","setTimeout","handleTypingEvent"],"sources":["../../src/hooks/use_conversation_messages_jolt_events.ts"],"sourcesContent":["import { InfiniteData, useQueryClient } from '@tanstack/react-query'\nimport { ApiCollection, MessageResource } from '../types'\nimport { JoltReactionEvent, JoltTypingEvent } from '../types/jolt_events'\nimport {\n MessageCreatedEvent,\n MessageUpdatedEvent,\n MessageDeletedEvent,\n} from '../types/jolt_events/message_events'\nimport { deleteRecordInPagesData } from '../utils'\nimport {\n updateCacheWithMessage,\n updateCacheWithIndividualMessage,\n updateCacheWithReaction,\n updateCacheReplyRoots,\n getThreadedMessagesQueryKey,\n} from '../utils/cache/messages_cache'\nimport { transformMessageEventDataToMessageResource } from '../utils/jolt/transform_message_event_data_to_message_resource'\nimport { completeMessageCreationTracking } from '../utils/performance_tracking'\nimport { getMessageQueryKey } from '../utils/request/get_message'\nimport { getMessagesRequestArgs } from '../utils/request/get_messages'\nimport { useApiClient } from './use_api_client'\nimport { useCurrentPerson } from './use_current_person'\nimport { useJoltChannel, useJoltEvent } from './use_jolt'\nimport { getRequestQueryKey } from './use_suspense_api'\nimport { TYPING_TIMEOUT_INTERVAL, useTypingStatusCache } from './use_typing_status_cache'\n\ninterface Props {\n conversationId: number\n}\n\nexport function useConversationMessagesJoltEvents({ conversationId }: Props) {\n const queryClient = useQueryClient()\n const currentPerson = useCurrentPerson()\n const joltChannel = useJoltChannel(`chat.conversations.${conversationId}`)\n const messagesRequestArgs = getMessagesRequestArgs({ conversation_id: conversationId })\n const messagesQueryKey = getRequestQueryKey(messagesRequestArgs)\n const apiClient = useApiClient()\n\n const { addTypingEvent, removeTypingEventById, removeAllTypingEventsByAuthorId } =\n useTypingStatusCache(conversationId)\n\n const handleMessageUpdateOrCreate = async (e: MessageCreatedEvent | MessageUpdatedEvent) => {\n const { data } = e.data\n const message = transformMessageEventDataToMessageResource({\n data,\n currentPersonId: currentPerson.id,\n })\n const isReplyRootUpdate = e.event === 'message.updated' && data.reply_root_id === data.sort_key\n\n if (e.event === 'message.created' && data.author_id) {\n removeAllTypingEventsByAuthorId(data.author_id)\n if (data.idempotent_key && data.author_id === currentPerson.id) {\n completeMessageCreationTracking({ apiClient, idempotentKey: data.idempotent_key })\n }\n }\n\n // Update the main conversation cache\n updateCacheWithMessage(queryClient, messagesQueryKey, message, e.event)\n\n // If message has a reply_root_id, also update the threaded cache\n if (data.reply_root_id) {\n const threadedMessagesQueryKey = getThreadedMessagesQueryKey(\n conversationId,\n data.reply_root_id\n )\n updateCacheWithMessage(queryClient, threadedMessagesQueryKey, message, e.event)\n\n if (isReplyRootUpdate) {\n updateCacheReplyRoots(queryClient, messagesQueryKey, message)\n updateCacheReplyRoots(queryClient, threadedMessagesQueryKey, message)\n }\n }\n\n // Update individual message query cache so reply shadow messages update immediately\n if (e.event === 'message.updated') {\n const individualMessageQueryKey = getMessageQueryKey({\n conversation_id: conversationId,\n messageId: data.sort_key,\n })\n updateCacheWithIndividualMessage(queryClient, individualMessageQueryKey, message)\n }\n }\n\n const handleMessageDeleted = async (e: MessageDeletedEvent) => {\n const { data } = e.data\n const message = transformMessageEventDataToMessageResource({\n data,\n currentPersonId: currentPerson.id,\n })\n\n // Update the main conversation cache\n queryClient.setQueryData<QueryData>(messagesQueryKey, prev =>\n deleteRecordInPagesData({ data: prev, record: message })\n )\n\n // If message has a reply_root_id, also update the threaded cache\n if (data.reply_root_id) {\n const threadedMessagesQueryKey = getThreadedMessagesQueryKey(\n conversationId,\n data.reply_root_id\n )\n queryClient.setQueryData<QueryData>(threadedMessagesQueryKey, prev =>\n deleteRecordInPagesData({ data: prev, record: message })\n )\n }\n }\n\n const handleReactionJoltEvent = async (e: JoltReactionEvent) => {\n // Update the main conversation cache and capture the reply_root_id if present\n updateCacheWithReaction(queryClient, messagesQueryKey, e, currentPerson.id)\n\n const replyRootId = e.data.data.reply_root_id\n\n // If the message has a reply_root_id, also update the threaded cache\n if (replyRootId) {\n const threadedMessagesQueryKey = getThreadedMessagesQueryKey(conversationId, replyRootId)\n updateCacheWithReaction(queryClient, threadedMessagesQueryKey, e, currentPerson.id)\n }\n }\n\n const handleTypingEvent = async (e: JoltTypingEvent) => {\n const { data } = e.data\n addTypingEvent(data)\n setTimeout(() => removeTypingEventById(data.id), TYPING_TIMEOUT_INTERVAL)\n }\n\n useJoltEvent(joltChannel, 'message.created', handleMessageUpdateOrCreate)\n useJoltEvent(joltChannel, 'message.updated', handleMessageUpdateOrCreate)\n useJoltEvent(joltChannel, 'message.destroyed', handleMessageDeleted)\n useJoltEvent(joltChannel, 'reaction.*', handleReactionJoltEvent)\n useJoltEvent(joltChannel, 'typing.broadcast', handleTypingEvent)\n}\n\ntype QueryData = InfiniteData<ApiCollection<MessageResource>>\n"],"mappings":"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","ignoreList":[]}