@planningcenter/chat-react-native 4.4.1-qa-staging.9 → 4.4.1-qa-staging.10

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 (44) hide show
  1. package/build/components/conversation/system_message.d.ts.map +1 -1
  2. package/build/components/conversation/system_message.js +85 -74
  3. package/build/components/conversation/system_message.js.map +1 -1
  4. package/build/components/conversations/conversation_preview.js +2 -0
  5. package/build/components/conversations/conversation_preview.js.map +1 -1
  6. package/build/types/jolt_events/message_events.d.ts +2 -0
  7. package/build/types/jolt_events/message_events.d.ts.map +1 -1
  8. package/build/types/jolt_events/message_events.js.map +1 -1
  9. package/build/types/resources/conversation.d.ts +1 -1
  10. package/build/types/resources/conversation.d.ts.map +1 -1
  11. package/build/types/resources/conversation.js.map +1 -1
  12. package/build/types/resources/message.d.ts +2 -0
  13. package/build/types/resources/message.d.ts.map +1 -1
  14. package/build/types/resources/message.js.map +1 -1
  15. package/build/utils/date.d.ts +1 -0
  16. package/build/utils/date.d.ts.map +1 -1
  17. package/build/utils/date.js +15 -1
  18. package/build/utils/date.js.map +1 -1
  19. package/build/utils/jolt/transform_message_event_data_to_message_resource.d.ts.map +1 -1
  20. package/build/utils/jolt/transform_message_event_data_to_message_resource.js +2 -1
  21. package/build/utils/jolt/transform_message_event_data_to_message_resource.js.map +1 -1
  22. package/build/utils/request/messages_data_options.d.ts.map +1 -1
  23. package/build/utils/request/messages_data_options.js +1 -1
  24. package/build/utils/request/messages_data_options.js.map +1 -1
  25. package/build/utils/system_messages.d.ts +7 -5
  26. package/build/utils/system_messages.d.ts.map +1 -1
  27. package/build/utils/system_messages.js +10 -2
  28. package/build/utils/system_messages.js.map +1 -1
  29. package/package.json +3 -3
  30. package/src/__tests__/utils/system_messages.ts +19 -32
  31. package/src/components/conversation/__tests__/system_message.test.tsx +104 -0
  32. package/src/components/conversation/system_message.tsx +20 -6
  33. package/src/components/conversations/__tests__/conversation_preview.test.tsx +70 -0
  34. package/src/components/conversations/conversation_preview.tsx +4 -0
  35. package/src/types/jolt_events/message_events.ts +2 -0
  36. package/src/types/resources/conversation.ts +1 -1
  37. package/src/types/resources/message.ts +3 -0
  38. package/src/utils/__tests__/date.test.ts +19 -0
  39. package/src/utils/__tests__/group_messages.test.ts +1 -0
  40. package/src/utils/date.ts +8 -1
  41. package/src/utils/jolt/__tests__/transform_message_event_data_to_message_resource.test.ts +35 -0
  42. package/src/utils/jolt/transform_message_event_data_to_message_resource.ts +1 -0
  43. package/src/utils/request/messages_data_options.ts +1 -0
  44. package/src/utils/system_messages.ts +19 -10
@@ -0,0 +1,35 @@
1
+ import type { MessageCreatedEvent } from '../../../types/jolt_events/message_events'
2
+ import { isSystemMessage } from '../../system_messages'
3
+ import { transformMessageEventDataToMessageResource } from '../transform_message_event_data_to_message_resource'
4
+
5
+ const archivedEventData: MessageCreatedEvent['data']['data'] = {
6
+ author_avatar: '',
7
+ author_id: 1,
8
+ author_name: 'Wes',
9
+ conversation_id: 1,
10
+ created_at: '2026-01-01T00:00:00Z',
11
+ deleted_at: null,
12
+ organization_id: 1,
13
+ sort_key: '01J0000000000000000000001',
14
+ text: 'This conversation was archived by Wes',
15
+ text_edited_at: null,
16
+ html: '',
17
+ attachments: [],
18
+ reply_count: 0,
19
+ reply_root_id: null,
20
+ message_type: 'conversation_archived',
21
+ system_event_person_ids: [1],
22
+ system_text_parts: null,
23
+ system_text_format: 'actor',
24
+ }
25
+
26
+ describe('transformMessageEventDataToMessageResource', () => {
27
+ it('keeps the system text format so realtime archive events render as system messages', () => {
28
+ const message = transformMessageEventDataToMessageResource({
29
+ data: archivedEventData,
30
+ currentPersonId: 2,
31
+ })
32
+
33
+ expect(isSystemMessage(message)).toBe(true)
34
+ })
35
+ })
@@ -39,5 +39,6 @@ export function transformMessageEventDataToMessageResource({
39
39
  action: data.system_text_parts.action,
40
40
  }
41
41
  : null,
42
+ systemTextFormat: data.system_text_format,
42
43
  }
43
44
  }
@@ -14,6 +14,7 @@ export const getMessageFields = {
14
14
  'message_type',
15
15
  'person_ids_for_system_event',
16
16
  'system_text_parts',
17
+ 'system_text_format',
17
18
  ],
18
19
  Person: ['name', 'avatar'],
19
20
  ReactionCount: ['value', 'count', 'mine', 'message_id', 'author_ids'],
@@ -1,16 +1,25 @@
1
1
  import type { MessageResource } from '../types'
2
2
 
3
- const SYSTEM_MESSAGE_TYPES = ['user_joined'] as const
4
-
5
- type SystemMessageType = (typeof SYSTEM_MESSAGE_TYPES)[number]
6
-
7
- export interface SystemMessageResource extends MessageResource {
8
- messageType: SystemMessageType
3
+ export interface PeopleSystemMessageResource extends MessageResource {
4
+ systemTextFormat: 'people'
9
5
  systemTextParts: { names: string[]; overflowCount: number; action: string }
10
6
  personIdsForSystemEvent: number[]
11
7
  }
12
8
 
13
- export const isSystemMessage = (message: MessageResource): message is SystemMessageResource =>
14
- SYSTEM_MESSAGE_TYPES.includes(message.messageType as SystemMessageType) &&
15
- message.systemTextParts != null &&
16
- message.personIdsForSystemEvent != null
9
+ export interface ActorSystemMessageResource extends MessageResource {
10
+ systemTextFormat: 'actor'
11
+ text: string
12
+ }
13
+
14
+ export type SystemMessageResource = PeopleSystemMessageResource | ActorSystemMessageResource
15
+
16
+ export const isSystemMessage = (message: MessageResource): message is SystemMessageResource => {
17
+ switch (message.systemTextFormat) {
18
+ case 'people':
19
+ return message.systemTextParts != null && message.personIdsForSystemEvent != null
20
+ case 'actor':
21
+ return !!message.text
22
+ default:
23
+ return false
24
+ }
25
+ }