@planningcenter/chat-react-native 3.42.2-qa-staging.4 → 3.42.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.
- package/build/components/conversation/messages_disabled_banners.d.ts +1 -5
- package/build/components/conversation/messages_disabled_banners.d.ts.map +1 -1
- package/build/components/conversation/messages_disabled_banners.js +4 -8
- package/build/components/conversation/messages_disabled_banners.js.map +1 -1
- package/build/hooks/direct_messages/use_find_or_create_direct_message_conversation.d.ts.map +1 -1
- package/build/hooks/direct_messages/use_find_or_create_direct_message_conversation.js +8 -1
- package/build/hooks/direct_messages/use_find_or_create_direct_message_conversation.js.map +1 -1
- package/build/hooks/use_conversation.d.ts.map +1 -1
- package/build/hooks/use_conversation.js +0 -1
- package/build/hooks/use_conversation.js.map +1 -1
- package/build/hooks/use_conversation_jolt_events.d.ts.map +1 -1
- package/build/hooks/use_conversation_jolt_events.js +9 -1
- package/build/hooks/use_conversation_jolt_events.js.map +1 -1
- package/build/hooks/use_conversation_messages.d.ts +1 -0
- package/build/hooks/use_conversation_messages.d.ts.map +1 -1
- package/build/hooks/use_conversation_messages.js +2 -2
- package/build/hooks/use_conversation_messages.js.map +1 -1
- package/build/hooks/use_conversations_actions.d.ts.map +1 -1
- package/build/hooks/use_conversations_actions.js +12 -1
- package/build/hooks/use_conversations_actions.js.map +1 -1
- package/build/screens/conversation_screen.d.ts.map +1 -1
- package/build/screens/conversation_screen.js +3 -5
- package/build/screens/conversation_screen.js.map +1 -1
- package/build/screens/conversation_select_recipients/conversation_select_direct_message_recipients_screen.d.ts +1 -1
- package/build/screens/conversation_select_recipients/conversation_select_direct_message_recipients_screen.d.ts.map +1 -1
- package/build/screens/conversation_select_recipients/conversation_select_direct_message_recipients_screen.js +2 -13
- package/build/screens/conversation_select_recipients/conversation_select_direct_message_recipients_screen.js.map +1 -1
- package/build/screens/conversation_select_recipients/types/screen_props.d.ts +0 -2
- package/build/screens/conversation_select_recipients/types/screen_props.d.ts.map +1 -1
- package/build/screens/conversation_select_recipients/types/screen_props.js.map +1 -1
- package/build/screens/conversations/components/list_header_component.js +1 -1
- package/build/screens/conversations/components/list_header_component.js.map +1 -1
- package/build/types/jolt_events/reaction_events.d.ts +1 -0
- package/build/types/jolt_events/reaction_events.d.ts.map +1 -1
- package/build/types/jolt_events/reaction_events.js.map +1 -1
- package/build/types/resources/direct_message_candidate.d.ts +0 -1
- package/build/types/resources/direct_message_candidate.d.ts.map +1 -1
- package/build/types/resources/direct_message_candidate.js.map +1 -1
- package/build/types/resources/member.d.ts +0 -1
- package/build/types/resources/member.d.ts.map +1 -1
- package/build/types/resources/member.js.map +1 -1
- package/build/types/resources/member_ability.d.ts +0 -1
- package/build/types/resources/member_ability.d.ts.map +1 -1
- package/build/types/resources/member_ability.js.map +1 -1
- package/package.json +3 -3
- package/src/components/conversation/messages_disabled_banners.tsx +4 -31
- package/src/hooks/direct_messages/use_find_or_create_direct_message_conversation.ts +11 -2
- package/src/hooks/use_conversation.ts +0 -1
- package/src/hooks/use_conversation_jolt_events.ts +6 -1
- package/src/hooks/use_conversation_messages.ts +6 -5
- package/src/hooks/use_conversations_actions.ts +13 -1
- package/src/screens/conversation_screen.tsx +5 -11
- package/src/screens/conversation_select_recipients/conversation_select_direct_message_recipients_screen.tsx +4 -18
- package/src/screens/conversation_select_recipients/types/screen_props.tsx +0 -2
- package/src/screens/conversations/components/list_header_component.tsx +6 -6
- package/src/types/jolt_events/reaction_events.ts +1 -0
- package/src/types/resources/direct_message_candidate.ts +0 -5
- package/src/types/resources/member.ts +0 -1
- package/src/types/resources/member_ability.ts +0 -1
- package/build/hooks/direct_messages/find_direct_message_conversation.d.ts +0 -14
- package/build/hooks/direct_messages/find_direct_message_conversation.d.ts.map +0 -1
- package/build/hooks/direct_messages/find_direct_message_conversation.js +0 -10
- package/build/hooks/direct_messages/find_direct_message_conversation.js.map +0 -1
- package/build/hooks/direct_messages/resolve_message_available_members_link.d.ts +0 -16
- package/build/hooks/direct_messages/resolve_message_available_members_link.d.ts.map +0 -1
- package/build/hooks/direct_messages/resolve_message_available_members_link.js +0 -24
- package/build/hooks/direct_messages/resolve_message_available_members_link.js.map +0 -1
- package/build/hooks/direct_messages/use_message_available_members.d.ts +0 -6
- package/build/hooks/direct_messages/use_message_available_members.d.ts.map +0 -1
- package/build/hooks/direct_messages/use_message_available_members.js +0 -40
- package/build/hooks/direct_messages/use_message_available_members.js.map +0 -1
- package/build/hooks/direct_messages/use_message_available_members_action.d.ts +0 -6
- package/build/hooks/direct_messages/use_message_available_members_action.d.ts.map +0 -1
- package/build/hooks/direct_messages/use_message_available_members_action.js +0 -30
- package/build/hooks/direct_messages/use_message_available_members_action.js.map +0 -1
- package/src/__tests__/hooks/resolve_message_available_members_link.test.ts +0 -72
- package/src/hooks/direct_messages/find_direct_message_conversation.ts +0 -16
- package/src/hooks/direct_messages/resolve_message_available_members_link.ts +0 -42
- package/src/hooks/direct_messages/use_message_available_members.ts +0 -65
- package/src/hooks/direct_messages/use_message_available_members_action.ts +0 -34
|
@@ -3,11 +3,7 @@ export declare const LeaderMessagesDisabledBanner: () => import("react").JSX.Ele
|
|
|
3
3
|
export declare const MemberMessagesDisabledBanner: () => import("react").JSX.Element;
|
|
4
4
|
interface ConversationDisabledBannerProps {
|
|
5
5
|
disabledReason?: ConversationDisabledReason;
|
|
6
|
-
messageLink?: {
|
|
7
|
-
label: string;
|
|
8
|
-
onPress: () => void;
|
|
9
|
-
};
|
|
10
6
|
}
|
|
11
|
-
export declare const ConversationDisabledBanner: ({ disabledReason
|
|
7
|
+
export declare const ConversationDisabledBanner: ({ disabledReason }: ConversationDisabledBannerProps) => import("react").JSX.Element;
|
|
12
8
|
export {};
|
|
13
9
|
//# sourceMappingURL=messages_disabled_banners.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messages_disabled_banners.d.ts","sourceRoot":"","sources":["../../../src/components/conversation/messages_disabled_banners.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAA;AAI7D,eAAO,MAAM,4BAA4B,mCAIxC,CAAA;AAED,eAAO,MAAM,4BAA4B,mCASxC,CAAA;AASD,UAAU,+BAA+B;IACvC,cAAc,CAAC,EAAE,0BAA0B,CAAA;
|
|
1
|
+
{"version":3,"file":"messages_disabled_banners.d.ts","sourceRoot":"","sources":["../../../src/components/conversation/messages_disabled_banners.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAA;AAI7D,eAAO,MAAM,4BAA4B,mCAIxC,CAAA;AAED,eAAO,MAAM,4BAA4B,mCASxC,CAAA;AASD,UAAU,+BAA+B;IACvC,cAAc,CAAC,EAAE,0BAA0B,CAAA;CAC5C;AAED,eAAO,MAAM,0BAA0B,GAAI,oBAAoB,+BAA+B,gCAM7F,CAAA"}
|
|
@@ -2,7 +2,7 @@ import { StyleSheet, View } from 'react-native';
|
|
|
2
2
|
import { useSafeAreaInsets } from 'react-native-safe-area-context';
|
|
3
3
|
import { useTheme } from '../../hooks';
|
|
4
4
|
import { ADULT_REQUIREMENT_BODY } from '../../utils';
|
|
5
|
-
import {
|
|
5
|
+
import { Text } from '../display';
|
|
6
6
|
export const LeaderMessagesDisabledBanner = () => {
|
|
7
7
|
return (<MessagesDisabledBanner description="Only leaders can send messages in this conversation."/>);
|
|
8
8
|
};
|
|
@@ -15,18 +15,17 @@ const DISABLED_REASON_TEXT = {
|
|
|
15
15
|
direct_messages_disabled: 'Direct messages have been turned off by someone in this conversation.',
|
|
16
16
|
};
|
|
17
17
|
const DEFAULT_DISABLED_TEXT = 'This conversation has been disabled.';
|
|
18
|
-
export const ConversationDisabledBanner = ({ disabledReason
|
|
18
|
+
export const ConversationDisabledBanner = ({ disabledReason }) => {
|
|
19
19
|
const styles = useStyles();
|
|
20
20
|
const description = (disabledReason && DISABLED_REASON_TEXT[disabledReason]) ?? DEFAULT_DISABLED_TEXT;
|
|
21
|
-
return
|
|
21
|
+
return <MessagesDisabledBanner description={description} style={styles.memberBanner}/>;
|
|
22
22
|
};
|
|
23
|
-
const MessagesDisabledBanner = ({ description, style
|
|
23
|
+
const MessagesDisabledBanner = ({ description, style }) => {
|
|
24
24
|
const styles = useStyles();
|
|
25
25
|
return (<View style={[styles.baseBanner, style]}>
|
|
26
26
|
<Text style={styles.text} variant="tertiary">
|
|
27
27
|
{description}
|
|
28
28
|
</Text>
|
|
29
|
-
{messageLink && (<Button variant="fill" size="lg" title={messageLink.label} onPress={messageLink.onPress} style={styles.messageButton}/>)}
|
|
30
29
|
</View>);
|
|
31
30
|
};
|
|
32
31
|
const useStyles = () => {
|
|
@@ -48,9 +47,6 @@ const useStyles = () => {
|
|
|
48
47
|
paddingBottom: 16 + bottom,
|
|
49
48
|
marginBottom: -bottom,
|
|
50
49
|
},
|
|
51
|
-
messageButton: {
|
|
52
|
-
marginTop: 12,
|
|
53
|
-
},
|
|
54
50
|
});
|
|
55
51
|
};
|
|
56
52
|
//# sourceMappingURL=messages_disabled_banners.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messages_disabled_banners.js","sourceRoot":"","sources":["../../../src/components/conversation/messages_disabled_banners.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAkB,MAAM,cAAc,CAAA;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAA;AAClE,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAEtC,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAA;AACpD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"messages_disabled_banners.js","sourceRoot":"","sources":["../../../src/components/conversation/messages_disabled_banners.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAkB,MAAM,cAAc,CAAA;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAA;AAClE,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAEtC,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAA;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AAEjC,MAAM,CAAC,MAAM,4BAA4B,GAAG,GAAG,EAAE;IAC/C,OAAO,CACL,CAAC,sBAAsB,CAAC,WAAW,CAAC,sDAAsD,EAAG,CAC9F,CAAA;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,4BAA4B,GAAG,GAAG,EAAE;IAC/C,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAE1B,OAAO,CACL,CAAC,sBAAsB,CACrB,WAAW,CAAC,kEAAkE,CAC9E,KAAK,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,EAC3B,CACH,CAAA;AACH,CAAC,CAAA;AAED,MAAM,oBAAoB,GAA+C;IACvE,YAAY,EAAE,sBAAsB;IACpC,wBAAwB,EAAE,uEAAuE;CAClG,CAAA;AAED,MAAM,qBAAqB,GAAG,sCAAsC,CAAA;AAMpE,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,EAAE,cAAc,EAAmC,EAAE,EAAE;IAChG,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAC1B,MAAM,WAAW,GACf,CAAC,cAAc,IAAI,oBAAoB,CAAC,cAAc,CAAC,CAAC,IAAI,qBAAqB,CAAA;IAEnF,OAAO,CAAC,sBAAsB,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,EAAG,CAAA;AACzF,CAAC,CAAA;AAOD,MAAM,sBAAsB,GAAG,CAAC,EAAE,WAAW,EAAE,KAAK,EAA+B,EAAE,EAAE;IACrF,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAE1B,OAAO,CACL,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,CACtC;MAAA,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,UAAU,CAC1C;QAAA,CAAC,WAAW,CACd;MAAA,EAAE,IAAI,CACR;IAAA,EAAE,IAAI,CAAC,CACR,CAAA;AACH,CAAC,CAAA;AAED,MAAM,SAAS,GAAG,GAAG,EAAE;IACrB,MAAM,EAAE,MAAM,EAAE,GAAG,QAAQ,EAAE,CAAA;IAC7B,MAAM,EAAE,MAAM,EAAE,GAAG,iBAAiB,EAAE,CAAA;IAEtC,OAAO,UAAU,CAAC,MAAM,CAAC;QACvB,UAAU,EAAE;YACV,iBAAiB,EAAE,EAAE;YACrB,eAAe,EAAE,CAAC;YAClB,eAAe,EAAE,MAAM,CAAC,+BAA+B;YACvD,cAAc,EAAE,CAAC;YACjB,cAAc,EAAE,MAAM,CAAC,sBAAsB;SAC9C;QACD,IAAI,EAAE;YACJ,SAAS,EAAE,QAAQ;SACpB;QACD,YAAY,EAAE;YACZ,UAAU,EAAE,EAAE;YACd,aAAa,EAAE,EAAE,GAAG,MAAM;YAC1B,YAAY,EAAE,CAAC,MAAM;SACtB;KACF,CAAC,CAAA;AACJ,CAAC,CAAA","sourcesContent":["import { StyleSheet, View, type ViewStyle } from 'react-native'\nimport { useSafeAreaInsets } from 'react-native-safe-area-context'\nimport { useTheme } from '../../hooks'\nimport type { ConversationDisabledReason } from '../../types'\nimport { ADULT_REQUIREMENT_BODY } from '../../utils'\nimport { Text } from '../display'\n\nexport const LeaderMessagesDisabledBanner = () => {\n return (\n <MessagesDisabledBanner description=\"Only leaders can send messages in this conversation.\" />\n )\n}\n\nexport const MemberMessagesDisabledBanner = () => {\n const styles = useStyles()\n\n return (\n <MessagesDisabledBanner\n description=\"Only leaders can send messages, but you can still add reactions.\"\n style={styles.memberBanner}\n />\n )\n}\n\nconst DISABLED_REASON_TEXT: Record<ConversationDisabledReason, string> = {\n safety_check: ADULT_REQUIREMENT_BODY,\n direct_messages_disabled: 'Direct messages have been turned off by someone in this conversation.',\n}\n\nconst DEFAULT_DISABLED_TEXT = 'This conversation has been disabled.'\n\ninterface ConversationDisabledBannerProps {\n disabledReason?: ConversationDisabledReason\n}\n\nexport const ConversationDisabledBanner = ({ disabledReason }: ConversationDisabledBannerProps) => {\n const styles = useStyles()\n const description =\n (disabledReason && DISABLED_REASON_TEXT[disabledReason]) ?? DEFAULT_DISABLED_TEXT\n\n return <MessagesDisabledBanner description={description} style={styles.memberBanner} />\n}\n\ninterface MessagesDisabledBannerProps {\n description: string\n style?: ViewStyle\n}\n\nconst MessagesDisabledBanner = ({ description, style }: MessagesDisabledBannerProps) => {\n const styles = useStyles()\n\n return (\n <View style={[styles.baseBanner, style]}>\n <Text style={styles.text} variant=\"tertiary\">\n {description}\n </Text>\n </View>\n )\n}\n\nconst useStyles = () => {\n const { colors } = useTheme()\n const { bottom } = useSafeAreaInsets()\n\n return StyleSheet.create({\n baseBanner: {\n paddingHorizontal: 16,\n paddingVertical: 4,\n backgroundColor: colors.statusNeutralComposedBackground,\n borderTopWidth: 1,\n borderTopColor: colors.borderColorDefaultBase,\n },\n text: {\n textAlign: 'center',\n },\n memberBanner: {\n paddingTop: 16,\n paddingBottom: 16 + bottom,\n marginBottom: -bottom,\n },\n })\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use_find_or_create_direct_message_conversation.d.ts","sourceRoot":"","sources":["../../../src/hooks/direct_messages/use_find_or_create_direct_message_conversation.ts"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"use_find_or_create_direct_message_conversation.d.ts","sourceRoot":"","sources":["../../../src/hooks/direct_messages/use_find_or_create_direct_message_conversation.ts"],"names":[],"mappings":"AAEA,OAAO,EAA8B,oBAAoB,EAAE,MAAM,aAAa,CAAA;AAwB9E,UAAU,KAAK;IACb,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB,SAAS,EAAE,CAAC,cAAc,EAAE,oBAAoB,CAAC,IAAI,CAAC,KAAK,IAAI,CAAA;CAChE;AAED,wBAAgB,wCAAwC,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,EAAE,KAAK;+CAchE,MAAM,EAAE;;;;EAoBlC"}
|
|
@@ -1,7 +1,14 @@
|
|
|
1
1
|
import { useQuery } from '@tanstack/react-query';
|
|
2
2
|
import { useState, useCallback } from 'react';
|
|
3
3
|
import { useApiClient } from '../use_api_client';
|
|
4
|
-
|
|
4
|
+
const findDirectMessageConversation = (apiClient, participantIds) => apiClient.chat.get({
|
|
5
|
+
url: '/me/conversations',
|
|
6
|
+
data: {
|
|
7
|
+
fields: { Conversation: ['title'] },
|
|
8
|
+
filter: 'with_exact_direct_message_participants',
|
|
9
|
+
participant_ids: participantIds.join(','),
|
|
10
|
+
},
|
|
11
|
+
});
|
|
5
12
|
const createDirectMessageConversation = (apiClient, ids) => apiClient.chat.post({
|
|
6
13
|
url: '/me/direct_messages',
|
|
7
14
|
data: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use_find_or_create_direct_message_conversation.js","sourceRoot":"","sources":["../../../src/hooks/direct_messages/use_find_or_create_direct_message_conversation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAChD,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,OAAO,CAAA;AAE7C,OAAO,EAAa,YAAY,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"use_find_or_create_direct_message_conversation.js","sourceRoot":"","sources":["../../../src/hooks/direct_messages/use_find_or_create_direct_message_conversation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAChD,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,OAAO,CAAA;AAE7C,OAAO,EAAa,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAE3D,MAAM,6BAA6B,GAAG,CAAC,SAAoB,EAAE,cAAwB,EAAE,EAAE,CACvF,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC;IACjB,GAAG,EAAE,mBAAmB;IACxB,IAAI,EAAE;QACJ,MAAM,EAAE,EAAE,YAAY,EAAE,CAAC,OAAO,CAAC,EAAE;QACnC,MAAM,EAAE,wCAAwC;QAChD,eAAe,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC;KAC1C;CACF,CAAiD,CAAA;AAEpD,MAAM,+BAA+B,GAAG,CAAC,SAAoB,EAAE,GAAa,EAAE,EAAE,CAC9E,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;IAClB,GAAG,EAAE,qBAAqB;IAC1B,IAAI,EAAE;QACJ,IAAI,EAAE;YACJ,IAAI,EAAE,eAAe;YACrB,UAAU,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE;SAChC;KACF;CACF,CAA+C,CAAA;AAOlD,MAAM,UAAU,wCAAwC,CAAC,EAAE,YAAY,EAAE,SAAS,EAAS;IACzF,MAAM,SAAS,GAAG,YAAY,EAAE,CAAA;IAChC,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IACjD,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAE7C,MAAM,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC;QACxB,QAAQ,EAAE,CAAC,MAAM,EAAE,mBAAmB,EAAE,wCAAwC,EAAE,YAAY,CAAC;QAC/F,OAAO,EAAE,GAAG,EAAE,CAAC,6BAA6B,CAAC,SAAS,EAAE,YAAY,CAAC;QACrE,OAAO,EAAE,YAAY,CAAC,MAAM,GAAG,CAAC;KACjC,CAAC,CAAA;IAEF,MAAM,mBAAmB,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAA;IAExD,MAAM,wBAAwB,GAAG,WAAW,CAC1C,KAAK,EAAE,cAAwB,EAAE,EAAE;QACjC,YAAY,CAAC,IAAI,CAAC,CAAA;QAClB,UAAU,CAAC,KAAK,CAAC,CAAA;QACjB,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,MAAM,6BAA6B,CAAC,SAAS,EAAE,cAAc,CAAC,CAAA;YACnF,IAAI,YAAY,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACjC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;YACpC,CAAC;iBAAM,CAAC;gBACN,MAAM,cAAc,GAAG,MAAM,+BAA+B,CAAC,SAAS,EAAE,cAAc,CAAC,CAAA;gBACvF,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YACnC,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,UAAU,CAAC,IAAI,CAAC,CAAA;YAChB,YAAY,CAAC,KAAK,CAAC,CAAA;QACrB,CAAC;IACH,CAAC,EACD,CAAC,SAAS,EAAE,SAAS,CAAC,CACvB,CAAA;IAED,OAAO,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,SAAS,EAAE,OAAO,EAAE,CAAA;AAC9E,CAAC","sourcesContent":["import { useQuery } from '@tanstack/react-query'\nimport { useState, useCallback } from 'react'\nimport { ApiCollection, ApiResource, ConversationResource } from '../../types'\nimport { ApiClient, useApiClient } from '../use_api_client'\n\nconst findDirectMessageConversation = (apiClient: ApiClient, participantIds: string[]) =>\n apiClient.chat.get({\n url: '/me/conversations',\n data: {\n fields: { Conversation: ['title'] },\n filter: 'with_exact_direct_message_participants',\n participant_ids: participantIds.join(','),\n },\n }) as Promise<ApiCollection<ConversationResource>>\n\nconst createDirectMessageConversation = (apiClient: ApiClient, ids: string[]) =>\n apiClient.chat.post({\n url: '/me/direct_messages',\n data: {\n data: {\n type: 'DirectMessage',\n attributes: { recipients: ids },\n },\n },\n }) as Promise<ApiResource<ConversationResource>>\n\ninterface Props {\n recipientIds: string[]\n onSuccess: (conversationId: ConversationResource['id']) => void\n}\n\nexport function useFindOrCreateDirectMessageConversation({ recipientIds, onSuccess }: Props) {\n const apiClient = useApiClient()\n const [isFinding, setIsFinding] = useState(false)\n const [isError, setIsError] = useState(false)\n\n const { data } = useQuery({\n queryKey: ['chat', '/me/conversations', 'with_exact_direct_message_participants', recipientIds],\n queryFn: () => findDirectMessageConversation(apiClient, recipientIds),\n enabled: recipientIds.length > 0,\n })\n\n const directMessageExists = (data?.data.length ?? 0) > 0\n\n const findOrCreateConversation = useCallback(\n async (participantIds: string[]) => {\n setIsFinding(true)\n setIsError(false)\n try {\n const findResponse = await findDirectMessageConversation(apiClient, participantIds)\n if (findResponse.data.length > 0) {\n onSuccess(findResponse.data[0].id)\n } else {\n const createResponse = await createDirectMessageConversation(apiClient, participantIds)\n onSuccess(createResponse.data.id)\n }\n } catch {\n setIsError(true)\n setIsFinding(false)\n }\n },\n [apiClient, onSuccess]\n )\n\n return { findOrCreateConversation, directMessageExists, isFinding, isError }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use_conversation.d.ts","sourceRoot":"","sources":["../../src/hooks/use_conversation.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAA;AAO5D,eAAO,MAAM,0BAA0B,GAAI,qBAAqB;IAAE,eAAe,EAAE,MAAM,CAAA;CAAE;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"use_conversation.d.ts","sourceRoot":"","sources":["../../src/hooks/use_conversation.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAA;AAO5D,eAAO,MAAM,0BAA0B,GAAI,qBAAqB;IAAE,eAAe,EAAE,MAAM,CAAA;CAAE;;;;;;;;;;;;;CA2DzF,CAAA;AAEF,eAAO,MAAM,eAAe,GAAI,qBAAqB;IAAE,eAAe,EAAE,MAAM,CAAA;CAAE;;;;;;;;;;;;;;;;;;;;;;;;;;CAI/E,CAAA;AAED,eAAO,MAAM,mBAAmB,GAAI,qBAAqB;IAAE,eAAe,EAAE,MAAM,CAAA;CAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiDnF,CAAA;AAED,eAAO,MAAM,qBAAqB,GAAI,qBAAqB;IAAE,eAAe,EAAE,MAAM,CAAA;CAAE,qIA+BrF,CAAA;AAED,eAAO,MAAM,qBAAqB,GAAI,qBAAqB;IAAE,eAAe,EAAE,MAAM,CAAA;CAAE,iFAiBrF,CAAA;AAED,eAAO,MAAM,6BAA6B,GAAI,qBAAqB;IAAE,eAAe,EAAE,MAAM,CAAA;CAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6C7F,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use_conversation.js","sourceRoot":"","sources":["../../src/hooks/use_conversation.ts"],"names":[],"mappings":"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","sourcesContent":["import { useMutation, useQueryClient } from '@tanstack/react-query'\nimport { useState } from 'react'\nimport { ApiResource, ConversationResource } from '../types'\nimport { transformGetToPost } from '../utils/client/request_helpers'\nimport { Haptic } from '../utils/native_adapters'\nimport { getConversationsRequestArgs } from '../utils/request/conversation'\nimport { useApiClient } from './use_api_client'\nimport { getRequestQueryKey, useSuspenseGet } from './use_suspense_api'\n\nexport const getConversationRequestArgs = ({ conversation_id }: { conversation_id: number }) => ({\n url: `/me/conversations/${conversation_id}`,\n data: {\n fields: {\n Conversation: [\n 'analytics_metadata',\n 'created_at',\n 'badges',\n 'conversation_membership',\n 'conversation_preview',\n 'gender_option',\n 'groups',\n 'last_message_author_id',\n 'last_message_author_name',\n 'last_message_created_at',\n 'last_message_text_preview',\n 'latest_read_message_sort_key',\n 'preview_avatar_urls',\n 'custom_avatar_type',\n 'custom_avatar_key',\n 'custom_avatar_color',\n 'custom_avatar_image_url',\n 'direct_message',\n 'disabled',\n 'disabled_reason',\n 'member_ability',\n 'muted',\n 'replies_disabled',\n 'title',\n 'unread_count',\n 'unread_reaction',\n 'updated_at',\n ],\n AnalyticsMetadata: ['metadata'],\n MemberAbility: [\n 'can_update',\n 'can_delete',\n 'leader',\n 'can_reply',\n 'can_delete_non_authored_messages',\n 'can_create_direct_messages',\n ],\n ConversationMembership: [\n 'last_read_message_sort_key',\n 'notification_level',\n 'notification_level_description',\n 'notification_level_options',\n 'muted',\n ],\n ConversationBadge: ['app_name', 'pco_resource_type', 'text'],\n Group: ['type', 'id', 'links', 'name', 'source_app_name', 'source_type'],\n },\n include: [\n 'badges',\n 'conversation_membership',\n 'member_ability',\n 'groups',\n 'analytics_metadata',\n ],\n },\n})\n\nexport const useConversation = ({ conversation_id }: { conversation_id: number }) => {\n const args = getConversationRequestArgs({ conversation_id })\n\n return useSuspenseGet<ConversationResource>(args)\n}\n\nexport const useConversationMute = ({ conversation_id }: { conversation_id: number }) => {\n const apiClient = useApiClient()\n const queryClient = useQueryClient()\n const requestArgs = getConversationRequestArgs({ conversation_id })\n const queryKey = getRequestQueryKey(requestArgs)\n const { data: conversation } = useConversation({ conversation_id })\n const [value, setValue] = useState<boolean>(conversation.muted)\n\n const { mutate: setMuted, ...mutation } = useMutation({\n onMutate: async (muted: boolean) => {\n return queryClient.setQueryData<ApiResource<ConversationResource>>(queryKey, prev => {\n if (!prev?.data) return prev\n setValue(muted)\n prev.data.muted = muted\n if (prev.data.conversationMembership) {\n prev.data.conversationMembership.muted = muted\n }\n\n return prev\n })\n },\n mutationKey: ['muteConversation'],\n mutationFn: async (muted: boolean) => {\n const action = muted ? 'mute' : 'unmute'\n\n return apiClient.chat.post<ApiResource<ConversationResource>>({\n url: `/me/conversations/${conversation_id}/${action}`,\n data: { data: { type: '', attributes: {} }, fields: { Conversation: 'muted' } },\n })\n },\n onSuccess: (response: ApiResource<ConversationResource>) => {\n queryClient.invalidateQueries({ queryKey: ['/me/conversations'] })\n queryClient.setQueryData<ApiResource<ConversationResource>>(queryKey, prev => {\n if (!prev?.data) return prev\n\n // Posting to the mute action endpoint can't return all the fields\n // so we need to set only the fields we require\n prev.data.muted = response.data.muted\n if (prev.data.conversationMembership) {\n prev.data.conversationMembership.muted = response.data.muted\n }\n setValue(response.data.muted)\n\n return prev\n })\n },\n })\n\n return { muted: value, setMuted, ...mutation }\n}\n\nexport const useConversationUpdate = ({ conversation_id }: { conversation_id: number }) => {\n const apiClient = useApiClient()\n const queryClient = useQueryClient()\n const requestArgs = getConversationRequestArgs({ conversation_id })\n const queryKey = getRequestQueryKey(requestArgs)\n\n return useMutation({\n onMutate: async (update: Partial<ConversationResource>) => {\n queryClient.setQueryData<ApiResource<ConversationResource>>(queryKey, prev => {\n if (prev?.data) {\n prev.data = {\n ...prev.data,\n ...update,\n }\n }\n\n return prev\n })\n },\n mutationKey: ['mutateConversation'],\n mutationFn: async (update: Partial<ConversationResource>) => {\n const postArgs = transformGetToPost(requestArgs).data\n return apiClient.chat.patch<ApiResource<ConversationResource>>({\n url: `/me/conversations/${conversation_id}/`,\n data: { data: { type: '', attributes: update }, ...postArgs },\n })\n },\n onSuccess: response => {\n queryClient.setQueryData<ApiResource<ConversationResource>>(queryKey, () => response)\n },\n })\n}\n\nexport const useConversationDelete = ({ conversation_id }: { conversation_id: number }) => {\n const apiClient = useApiClient()\n const queryClient = useQueryClient()\n const { url } = getConversationsRequestArgs()\n\n return useMutation({\n mutationKey: ['deleteConversation'],\n mutationFn: async () => {\n return apiClient.chat.delete({\n url: `/me/conversations/${conversation_id}`,\n })\n },\n onSuccess: () => {\n queryClient.invalidateQueries({ queryKey: [url] })\n Haptic.notificationSuccess()\n },\n })\n}\n\nexport const useConversationDisableReplies = ({ conversation_id }: { conversation_id: number }) => {\n const apiClient = useApiClient()\n const queryClient = useQueryClient()\n const requestArgs = getConversationRequestArgs({ conversation_id })\n const queryKey = getRequestQueryKey(requestArgs)\n const { data: conversation } = useConversation({ conversation_id })\n const [value, setValue] = useState<boolean>(conversation.repliesDisabled)\n\n const { mutate: setRepliesDisabled, ...mutation } = useMutation({\n onMutate: async (repliesDisabled: boolean) => {\n return queryClient.setQueryData<ApiResource<ConversationResource>>(queryKey, prev => {\n if (!prev?.data) return prev\n setValue(repliesDisabled)\n prev.data.repliesDisabled = repliesDisabled\n\n return prev\n })\n },\n mutationKey: ['disableRepliesConversation'],\n mutationFn: async (repliesDisabled: boolean) => {\n return apiClient.chat.patch<ApiResource<ConversationResource>>({\n url: `/me/conversations/${conversation_id}`,\n data: {\n data: {\n type: 'Conversation',\n attributes: {\n replies_disabled: repliesDisabled,\n },\n },\n },\n })\n },\n onSuccess: (response: ApiResource<ConversationResource>) => {\n queryClient.setQueryData<ApiResource<ConversationResource>>(queryKey, prev => {\n if (!prev?.data) return prev\n\n prev.data.repliesDisabled = response.data.repliesDisabled\n setValue(response.data.repliesDisabled)\n\n return prev\n })\n },\n })\n\n return { repliesDisabled: value, setRepliesDisabled, ...mutation }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"use_conversation.js","sourceRoot":"","sources":["../../src/hooks/use_conversation.ts"],"names":[],"mappings":"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","sourcesContent":["import { useMutation, useQueryClient } from '@tanstack/react-query'\nimport { useState } from 'react'\nimport { ApiResource, ConversationResource } from '../types'\nimport { transformGetToPost } from '../utils/client/request_helpers'\nimport { Haptic } from '../utils/native_adapters'\nimport { getConversationsRequestArgs } from '../utils/request/conversation'\nimport { useApiClient } from './use_api_client'\nimport { getRequestQueryKey, useSuspenseGet } from './use_suspense_api'\n\nexport const getConversationRequestArgs = ({ conversation_id }: { conversation_id: number }) => ({\n url: `/me/conversations/${conversation_id}`,\n data: {\n fields: {\n Conversation: [\n 'analytics_metadata',\n 'created_at',\n 'badges',\n 'conversation_membership',\n 'conversation_preview',\n 'gender_option',\n 'groups',\n 'last_message_author_id',\n 'last_message_author_name',\n 'last_message_created_at',\n 'last_message_text_preview',\n 'latest_read_message_sort_key',\n 'preview_avatar_urls',\n 'custom_avatar_type',\n 'custom_avatar_key',\n 'custom_avatar_color',\n 'custom_avatar_image_url',\n 'direct_message',\n 'disabled',\n 'disabled_reason',\n 'member_ability',\n 'muted',\n 'replies_disabled',\n 'title',\n 'unread_count',\n 'unread_reaction',\n 'updated_at',\n ],\n AnalyticsMetadata: ['metadata'],\n MemberAbility: [\n 'can_update',\n 'can_delete',\n 'leader',\n 'can_reply',\n 'can_delete_non_authored_messages',\n ],\n ConversationMembership: [\n 'last_read_message_sort_key',\n 'notification_level',\n 'notification_level_description',\n 'notification_level_options',\n 'muted',\n ],\n ConversationBadge: ['app_name', 'pco_resource_type', 'text'],\n Group: ['type', 'id', 'links', 'name', 'source_app_name', 'source_type'],\n },\n include: [\n 'badges',\n 'conversation_membership',\n 'member_ability',\n 'groups',\n 'analytics_metadata',\n ],\n },\n})\n\nexport const useConversation = ({ conversation_id }: { conversation_id: number }) => {\n const args = getConversationRequestArgs({ conversation_id })\n\n return useSuspenseGet<ConversationResource>(args)\n}\n\nexport const useConversationMute = ({ conversation_id }: { conversation_id: number }) => {\n const apiClient = useApiClient()\n const queryClient = useQueryClient()\n const requestArgs = getConversationRequestArgs({ conversation_id })\n const queryKey = getRequestQueryKey(requestArgs)\n const { data: conversation } = useConversation({ conversation_id })\n const [value, setValue] = useState<boolean>(conversation.muted)\n\n const { mutate: setMuted, ...mutation } = useMutation({\n onMutate: async (muted: boolean) => {\n return queryClient.setQueryData<ApiResource<ConversationResource>>(queryKey, prev => {\n if (!prev?.data) return prev\n setValue(muted)\n prev.data.muted = muted\n if (prev.data.conversationMembership) {\n prev.data.conversationMembership.muted = muted\n }\n\n return prev\n })\n },\n mutationKey: ['muteConversation'],\n mutationFn: async (muted: boolean) => {\n const action = muted ? 'mute' : 'unmute'\n\n return apiClient.chat.post<ApiResource<ConversationResource>>({\n url: `/me/conversations/${conversation_id}/${action}`,\n data: { data: { type: '', attributes: {} }, fields: { Conversation: 'muted' } },\n })\n },\n onSuccess: (response: ApiResource<ConversationResource>) => {\n queryClient.invalidateQueries({ queryKey: ['/me/conversations'] })\n queryClient.setQueryData<ApiResource<ConversationResource>>(queryKey, prev => {\n if (!prev?.data) return prev\n\n // Posting to the mute action endpoint can't return all the fields\n // so we need to set only the fields we require\n prev.data.muted = response.data.muted\n if (prev.data.conversationMembership) {\n prev.data.conversationMembership.muted = response.data.muted\n }\n setValue(response.data.muted)\n\n return prev\n })\n },\n })\n\n return { muted: value, setMuted, ...mutation }\n}\n\nexport const useConversationUpdate = ({ conversation_id }: { conversation_id: number }) => {\n const apiClient = useApiClient()\n const queryClient = useQueryClient()\n const requestArgs = getConversationRequestArgs({ conversation_id })\n const queryKey = getRequestQueryKey(requestArgs)\n\n return useMutation({\n onMutate: async (update: Partial<ConversationResource>) => {\n queryClient.setQueryData<ApiResource<ConversationResource>>(queryKey, prev => {\n if (prev?.data) {\n prev.data = {\n ...prev.data,\n ...update,\n }\n }\n\n return prev\n })\n },\n mutationKey: ['mutateConversation'],\n mutationFn: async (update: Partial<ConversationResource>) => {\n const postArgs = transformGetToPost(requestArgs).data\n return apiClient.chat.patch<ApiResource<ConversationResource>>({\n url: `/me/conversations/${conversation_id}/`,\n data: { data: { type: '', attributes: update }, ...postArgs },\n })\n },\n onSuccess: response => {\n queryClient.setQueryData<ApiResource<ConversationResource>>(queryKey, () => response)\n },\n })\n}\n\nexport const useConversationDelete = ({ conversation_id }: { conversation_id: number }) => {\n const apiClient = useApiClient()\n const queryClient = useQueryClient()\n const { url } = getConversationsRequestArgs()\n\n return useMutation({\n mutationKey: ['deleteConversation'],\n mutationFn: async () => {\n return apiClient.chat.delete({\n url: `/me/conversations/${conversation_id}`,\n })\n },\n onSuccess: () => {\n queryClient.invalidateQueries({ queryKey: [url] })\n Haptic.notificationSuccess()\n },\n })\n}\n\nexport const useConversationDisableReplies = ({ conversation_id }: { conversation_id: number }) => {\n const apiClient = useApiClient()\n const queryClient = useQueryClient()\n const requestArgs = getConversationRequestArgs({ conversation_id })\n const queryKey = getRequestQueryKey(requestArgs)\n const { data: conversation } = useConversation({ conversation_id })\n const [value, setValue] = useState<boolean>(conversation.repliesDisabled)\n\n const { mutate: setRepliesDisabled, ...mutation } = useMutation({\n onMutate: async (repliesDisabled: boolean) => {\n return queryClient.setQueryData<ApiResource<ConversationResource>>(queryKey, prev => {\n if (!prev?.data) return prev\n setValue(repliesDisabled)\n prev.data.repliesDisabled = repliesDisabled\n\n return prev\n })\n },\n mutationKey: ['disableRepliesConversation'],\n mutationFn: async (repliesDisabled: boolean) => {\n return apiClient.chat.patch<ApiResource<ConversationResource>>({\n url: `/me/conversations/${conversation_id}`,\n data: {\n data: {\n type: 'Conversation',\n attributes: {\n replies_disabled: repliesDisabled,\n },\n },\n },\n })\n },\n onSuccess: (response: ApiResource<ConversationResource>) => {\n queryClient.setQueryData<ApiResource<ConversationResource>>(queryKey, prev => {\n if (!prev?.data) return prev\n\n prev.data.repliesDisabled = response.data.repliesDisabled\n setValue(response.data.repliesDisabled)\n\n return prev\n })\n },\n })\n\n return { repliesDisabled: value, setRepliesDisabled, ...mutation }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use_conversation_jolt_events.d.ts","sourceRoot":"","sources":["../../src/hooks/use_conversation_jolt_events.ts"],"names":[],"mappings":"AAWA,UAAU,KAAK;IACb,cAAc,EAAE,MAAM,CAAA;CACvB;AAED,wBAAgB,yBAAyB,CAAC,EAAE,cAAc,EAAE,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"use_conversation_jolt_events.d.ts","sourceRoot":"","sources":["../../src/hooks/use_conversation_jolt_events.ts"],"names":[],"mappings":"AAWA,UAAU,KAAK;IACb,cAAc,EAAE,MAAM,CAAA;CACvB;AAED,wBAAgB,yBAAyB,CAAC,EAAE,cAAc,EAAE,EAAE,KAAK,QA0FlE"}
|
|
@@ -61,9 +61,17 @@ export function useConversationJoltEvents({ conversationId }) {
|
|
|
61
61
|
});
|
|
62
62
|
}, [queryClient, queryKey]);
|
|
63
63
|
const handleReactionJoltEvent = useCallback((event) => {
|
|
64
|
+
if (event.event !== 'reaction.created')
|
|
65
|
+
return;
|
|
64
66
|
if (event.data.data.author_id === currentPersonId)
|
|
65
67
|
return;
|
|
66
|
-
|
|
68
|
+
if (event.data.data.message_author_id !== currentPersonId)
|
|
69
|
+
return;
|
|
70
|
+
queryClient.setQueryData(queryKey, prev => {
|
|
71
|
+
if (!prev?.data)
|
|
72
|
+
return prev;
|
|
73
|
+
return { ...prev, data: { ...prev.data, unreadReaction: true } };
|
|
74
|
+
});
|
|
67
75
|
}, [queryClient, queryKey, currentPersonId]);
|
|
68
76
|
useJoltEvent(joltChannel, 'conversation.updated', handleUpdatedConversation);
|
|
69
77
|
useJoltEvent(joltChannel, 'conversation.read', handleConversationRead);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use_conversation_jolt_events.js","sourceRoot":"","sources":["../../src/hooks/use_conversation_jolt_events.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"use_conversation_jolt_events.js","sourceRoot":"","sources":["../../src/hooks/use_conversation_jolt_events.ts"],"names":[],"mappings":"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","sourcesContent":["import { useQueryClient } from '@tanstack/react-query'\nimport { useCallback, useMemo } from 'react'\nimport { ApiResource, ConversationResource } from '../types'\nimport { JoltConversationEvent, JoltReactionEvent } from '../types/jolt_events'\nimport { completeMessageCreationConversationTracking } from '../utils/performance_tracking'\nimport { useApiClient } from './use_api_client'\nimport { getConversationRequestArgs } from './use_conversation'\nimport { useCurrentPerson } from './use_current_person'\nimport { useJoltChannel, useJoltEvent } from './use_jolt'\nimport { getRequestQueryKey } from './use_suspense_api'\n\ninterface Props {\n conversationId: number\n}\n\nexport function useConversationJoltEvents({ conversationId }: Props) {\n const joltChannel = useJoltChannel(`chat.conversations.${conversationId}`)\n const queryClient = useQueryClient()\n const currentPerson = useCurrentPerson()\n const currentPersonId = currentPerson?.id\n const apiClient = useApiClient()\n const queryKey = useMemo(\n () => getRequestQueryKey(getConversationRequestArgs({ conversation_id: conversationId })),\n [conversationId]\n )\n\n const handleUpdatedConversation = useCallback(\n (e: JoltConversationEvent) => {\n const { last_message_idempotent_key, last_message_author_id, disabled, disabled_reason } =\n e.data.data\n\n if (last_message_idempotent_key && last_message_author_id === currentPersonId) {\n completeMessageCreationConversationTracking({\n apiClient,\n idempotentKey: last_message_idempotent_key,\n })\n }\n\n queryClient.setQueryData<ApiResource<ConversationResource>>(queryKey, prev => {\n if (!prev?.data) return prev\n return { ...prev, data: { ...prev.data, disabled, disabledReason: disabled_reason } }\n })\n\n queryClient.invalidateQueries({ queryKey })\n },\n [queryClient, queryKey, currentPersonId, apiClient]\n )\n\n const handleConversationRead = useCallback(\n (e: JoltConversationEvent) => {\n const { latest_read_message_sort_key } = e.data.data\n queryClient.setQueryData<ApiResource<ConversationResource>>(queryKey, prev => {\n if (!prev?.data || !latest_read_message_sort_key) return prev\n if (\n prev.data.latestReadMessageSortKey &&\n prev.data.latestReadMessageSortKey >= latest_read_message_sort_key\n ) {\n return prev\n }\n\n return {\n ...prev,\n data: {\n ...prev.data,\n latestReadMessageSortKey: latest_read_message_sort_key,\n unreadReaction: false,\n },\n }\n })\n },\n [queryClient, queryKey]\n )\n\n const handleConversationDestroyed = useCallback(() => {\n queryClient.setQueryData<ApiResource<ConversationResource>>(queryKey, prev => {\n if (!prev?.data) return prev\n\n return {\n ...prev,\n data: {\n ...prev.data,\n deleted: true,\n },\n }\n })\n }, [queryClient, queryKey])\n\n const handleReactionJoltEvent = useCallback(\n (event: JoltReactionEvent) => {\n if (event.event !== 'reaction.created') return\n if (event.data.data.author_id === currentPersonId) return\n if (event.data.data.message_author_id !== currentPersonId) return\n\n queryClient.setQueryData<ApiResource<ConversationResource>>(queryKey, prev => {\n if (!prev?.data) return prev\n return { ...prev, data: { ...prev.data, unreadReaction: true } }\n })\n },\n [queryClient, queryKey, currentPersonId]\n )\n\n useJoltEvent(joltChannel, 'conversation.updated', handleUpdatedConversation)\n useJoltEvent(joltChannel, 'conversation.read', handleConversationRead)\n useJoltEvent(joltChannel, 'conversation.destroyed', handleConversationDestroyed)\n useJoltEvent(joltChannel, 'reaction.*', handleReactionJoltEvent)\n}\n"]}
|
|
@@ -8,6 +8,7 @@ export declare const useConversationMessages: ({ conversation_id, reply_root_id
|
|
|
8
8
|
refetch: (options?: import("@tanstack/query-core").RefetchOptions) => Promise<import("@tanstack/query-core").QueryObserverResult<import("@tanstack/query-core").InfiniteData<import("..").ApiCollection<MessageResource>, unknown>, Response>>;
|
|
9
9
|
isRefetching: boolean;
|
|
10
10
|
fetchNextPage: (options?: import("@tanstack/query-core").FetchNextPageOptions) => Promise<import("@tanstack/query-core").InfiniteQueryObserverResult<import("@tanstack/query-core").InfiniteData<import("..").ApiCollection<MessageResource>, unknown>, Response>>;
|
|
11
|
+
hasNextPage: boolean;
|
|
11
12
|
queryKey: import("./use_suspense_api").RequestQueryKey;
|
|
12
13
|
};
|
|
13
14
|
//# sourceMappingURL=use_conversation_messages.d.ts.map
|
|
@@ -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
|
|
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"}
|
|
@@ -2,12 +2,12 @@ import { useMemo } from 'react';
|
|
|
2
2
|
import { getMessagesQueryKey, getMessagesRequestArgs } from '../utils/request/get_messages';
|
|
3
3
|
import { useSuspensePaginator } from './use_suspense_api';
|
|
4
4
|
export const useConversationMessages = ({ conversation_id, reply_root_id }, opts) => {
|
|
5
|
-
const { data, refetch, isRefetching, fetchNextPage } = useSuspensePaginator(getMessagesRequestArgs({ conversation_id, reply_root_id }), opts);
|
|
5
|
+
const { data, refetch, isRefetching, fetchNextPage, hasNextPage } = useSuspensePaginator(getMessagesRequestArgs({ conversation_id, reply_root_id }), opts);
|
|
6
6
|
const queryKey = getMessagesQueryKey({ conversation_id, reply_root_id });
|
|
7
7
|
const messages = useMemo(() => data
|
|
8
8
|
.filter(message => (!message.deletedAt || message.replyRootId) &&
|
|
9
9
|
(message.attachments?.length || message.text?.length))
|
|
10
10
|
.sort((a, b) => -a.id.localeCompare(b.id)), [data]);
|
|
11
|
-
return { messages, refetch, isRefetching, fetchNextPage, queryKey };
|
|
11
|
+
return { messages, refetch, isRefetching, fetchNextPage, hasNextPage, queryKey };
|
|
12
12
|
};
|
|
13
13
|
//# sourceMappingURL=use_conversation_messages.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use_conversation_messages.js","sourceRoot":"","sources":["../../src/hooks/use_conversation_messages.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAE/B,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAA;AAC3F,OAAO,EAA4B,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AAEnF,MAAM,CAAC,MAAM,uBAAuB,GAAG,CACrC,EAAE,eAAe,EAAE,aAAa,EAA8D,EAC9F,IAA+B,EAC/B,EAAE;IACF,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,
|
|
1
|
+
{"version":3,"file":"use_conversation_messages.js","sourceRoot":"","sources":["../../src/hooks/use_conversation_messages.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAE/B,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAA;AAC3F,OAAO,EAA4B,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AAEnF,MAAM,CAAC,MAAM,uBAAuB,GAAG,CACrC,EAAE,eAAe,EAAE,aAAa,EAA8D,EAC9F,IAA+B,EAC/B,EAAE;IACF,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,GAC/D,oBAAoB,CAClB,sBAAsB,CAAC,EAAE,eAAe,EAAE,aAAa,EAAE,CAAC,EAC1D,IAAI,CACL,CAAA;IACH,MAAM,QAAQ,GAAG,mBAAmB,CAAC,EAAE,eAAe,EAAE,aAAa,EAAE,CAAC,CAAA;IACxE,MAAM,QAAQ,GAAG,OAAO,CACtB,GAAG,EAAE,CACH,IAAI;SACD,MAAM,CACL,OAAO,CAAC,EAAE,CACR,CAAC,CAAC,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,WAAW,CAAC;QAC3C,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM,IAAI,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CACxD;SACA,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9C,CAAC,IAAI,CAAC,CACP,CAAA;IAED,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAA;AAClF,CAAC,CAAA","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"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use_conversations_actions.d.ts","sourceRoot":"","sources":["../../src/hooks/use_conversations_actions.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"use_conversations_actions.d.ts","sourceRoot":"","sources":["../../src/hooks/use_conversations_actions.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAA;AAO5D,eAAO,MAAM,wBAAwB,GAAI,mBAEtC;IACD,YAAY,EAAE,oBAAoB,CAAA;CACnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwDA,CAAA;AAED,eAAO,MAAM,oBAAoB,GAAI,kBAAkB;IAAE,YAAY,EAAE,oBAAoB,CAAA;CAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuC5F,CAAA;AAED,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuB1B,CAAA"}
|
|
@@ -1,14 +1,18 @@
|
|
|
1
|
-
import { useMutation } from '@tanstack/react-query';
|
|
1
|
+
import { useMutation, useQueryClient } from '@tanstack/react-query';
|
|
2
2
|
import { Alert } from 'react-native';
|
|
3
3
|
import { useConversationsContext } from '../contexts/conversations_context';
|
|
4
4
|
import { useApiClient } from './use_api_client';
|
|
5
|
+
import { getConversationRequestArgs } from './use_conversation';
|
|
5
6
|
import { useConversationsCache } from './use_conversations_cache';
|
|
6
7
|
import { useCurrentPersonCache } from './use_current_person';
|
|
8
|
+
import { getRequestQueryKey } from './use_suspense_api';
|
|
7
9
|
export const useConversationsMarkRead = ({ conversation, }) => {
|
|
8
10
|
const apiClient = useApiClient();
|
|
11
|
+
const queryClient = useQueryClient();
|
|
9
12
|
const { args } = useConversationsContext();
|
|
10
13
|
const currentPersonCache = useCurrentPersonCache();
|
|
11
14
|
const { update, invalidate, fetchUpdate } = useConversationsCache(args);
|
|
15
|
+
const conversationQueryKey = getRequestQueryKey(getConversationRequestArgs({ conversation_id: conversation.id }));
|
|
12
16
|
function handlePersonUnreadCount(read) {
|
|
13
17
|
currentPersonCache.update({}, person => {
|
|
14
18
|
const currentUnread = person.unreadCount;
|
|
@@ -23,6 +27,13 @@ export const useConversationsMarkRead = ({ conversation, }) => {
|
|
|
23
27
|
unreadCount: read ? 0 : 1,
|
|
24
28
|
...(read ? { unreadReaction: false } : {}),
|
|
25
29
|
});
|
|
30
|
+
if (read) {
|
|
31
|
+
queryClient.setQueryData(conversationQueryKey, prev => {
|
|
32
|
+
if (!prev?.data)
|
|
33
|
+
return prev;
|
|
34
|
+
return { ...prev, data: { ...prev.data, unreadReaction: false } };
|
|
35
|
+
});
|
|
36
|
+
}
|
|
26
37
|
handlePersonUnreadCount(read);
|
|
27
38
|
},
|
|
28
39
|
mutationKey: ['markRead', conversation.id],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use_conversations_actions.js","sourceRoot":"","sources":["../../src/hooks/use_conversations_actions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;
|
|
1
|
+
{"version":3,"file":"use_conversations_actions.js","sourceRoot":"","sources":["../../src/hooks/use_conversations_actions.ts"],"names":[],"mappings":"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","sourcesContent":["import { useMutation, useQueryClient } from '@tanstack/react-query'\nimport { Alert } from 'react-native'\nimport { useConversationsContext } from '../contexts/conversations_context'\nimport { ApiResource, ConversationResource } from '../types'\nimport { useApiClient } from './use_api_client'\nimport { getConversationRequestArgs } from './use_conversation'\nimport { useConversationsCache } from './use_conversations_cache'\nimport { useCurrentPersonCache } from './use_current_person'\nimport { getRequestQueryKey } from './use_suspense_api'\n\nexport const useConversationsMarkRead = ({\n conversation,\n}: {\n conversation: ConversationResource\n}) => {\n const apiClient = useApiClient()\n const queryClient = useQueryClient()\n const { args } = useConversationsContext()\n const currentPersonCache = useCurrentPersonCache()\n const { update, invalidate, fetchUpdate } = useConversationsCache(args)\n const conversationQueryKey = getRequestQueryKey(\n getConversationRequestArgs({ conversation_id: conversation.id })\n )\n\n function handlePersonUnreadCount(read: boolean) {\n currentPersonCache.update({}, person => {\n const currentUnread = person.unreadCount\n const updatedUnread = read ? Math.max(currentUnread - 1, 0) : currentUnread + 1\n return { ...person, unreadCount: updatedUnread }\n })\n }\n\n const { mutate: handleMarkRead, ...mutation } = useMutation({\n onMutate: async (read: boolean) => {\n update({\n ...conversation,\n unreadCount: read ? 0 : 1,\n ...(read ? { unreadReaction: false } : {}),\n })\n if (read) {\n queryClient.setQueryData<ApiResource<ConversationResource>>(conversationQueryKey, prev => {\n if (!prev?.data) return prev\n return { ...prev, data: { ...prev.data, unreadReaction: false } }\n })\n }\n handlePersonUnreadCount(read)\n },\n mutationKey: ['markRead', conversation.id],\n mutationFn: async (read: boolean) => {\n const action = read ? 'mark_read' : 'mark_unread'\n\n return apiClient.chat.post({\n url: `/me/conversations/${conversation.id}/${action}`,\n data: { data: { type: '', attributes: {} }, fields: { Conversation: 'unread_count,id' } },\n })\n },\n onSuccess: () => {\n fetchUpdate(conversation)\n },\n onError: () => {\n Alert.alert('Oops', 'Something went wrong updating this conversation, please try again')\n invalidate()\n },\n })\n\n return {\n read: conversation.unreadCount < 1, // prefer cache\n markRead: handleMarkRead,\n ...mutation,\n }\n}\n\nexport const useConversationsMute = ({ conversation }: { conversation: ConversationResource }) => {\n const apiClient = useApiClient()\n const { args } = useConversationsContext()\n const { update, invalidate } = useConversationsCache(args)\n\n const { mutate: setMuted, ...mutation } = useMutation({\n onMutate: async (muted: boolean) => {\n update({\n ...conversation,\n muted,\n conversationMembership: {\n ...conversation?.conversationMembership,\n muted,\n },\n })\n },\n mutationKey: ['muteConversation'],\n mutationFn: async (muted: boolean) => {\n const action = muted ? 'mute' : 'unmute'\n\n return apiClient.chat.post<ApiResource<ConversationResource>>({\n url: `/me/conversations/${conversation.id}/${action}`,\n data: { data: { type: '', attributes: {} }, fields: { Conversation: 'muted' } },\n })\n },\n onSuccess: (response: ApiResource<ConversationResource>) => {\n update(response.data)\n },\n onError: () => {\n Alert.alert('Oops', 'Something went wrong muting this conversation, please try again')\n invalidate()\n },\n })\n\n return {\n muted: conversation.muted, // prefer cache\n setMuted,\n ...mutation,\n }\n}\n\nexport const useMarkAllRead = () => {\n const apiClient = useApiClient()\n const { args } = useConversationsContext()\n const { invalidate, updateAll } = useConversationsCache(args)\n const { mutate: markAllRead, ...query } = useMutation({\n onMutate: () => {\n updateAll({\n unreadCount: 0,\n unreadReaction: false,\n })\n },\n mutationKey: ['markAllRead', args],\n mutationFn: () =>\n apiClient.chat.post({\n url: '/me/mark_all_read',\n }),\n onSettled: invalidate,\n })\n\n return {\n markAllRead,\n ...query,\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conversation_screen.d.ts","sourceRoot":"","sources":["../../src/screens/conversation_screen.tsx"],"names":[],"mappings":"AACA,OAAO,EAAe,gBAAgB,EAAqB,MAAM,4BAA4B,CAAA;AAC7F,OAAO,EAGL,iBAAiB,EAIlB,MAAM,0BAA0B,CAAA;AACjC,OAAO,KAAmD,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"conversation_screen.d.ts","sourceRoot":"","sources":["../../src/screens/conversation_screen.tsx"],"names":[],"mappings":"AACA,OAAO,EAAe,gBAAgB,EAAqB,MAAM,4BAA4B,CAAA;AAC7F,OAAO,EAGL,iBAAiB,EAIlB,MAAM,0BAA0B,CAAA;AACjC,OAAO,KAAmD,MAAM,OAAO,CAAA;AAgCvE,OAAO,EAAE,yBAAyB,EAAE,MAAM,uCAAuC,CAAA;AAOjF,MAAM,MAAM,sBAAsB,GAAG;IACnC,eAAe,EAAE,MAAM,CAAA;IACvB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,sBAAsB,CAAC,EAAE,MAAM,CAAA;IAC/B,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAClC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,yBAAyB,CAAA;IACjC,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB,CAAA;AAED,MAAM,MAAM,uBAAuB,GAAG,iBAAiB,CAAC,sBAAsB,CAAC,CAAA;AAE/E,wBAAgB,kBAAkB,CAAC,EAAE,KAAK,EAAE,EAAE,uBAAuB,qBAkBpE;AAwOD,UAAU,4BAA6B,SAAQ,gBAAgB;IAC7D,eAAe,EAAE,MAAM,CAAA;IACvB,KAAK,CAAC,EAAE,yBAAyB,CAAA;IACjC,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB;AAED,eAAO,MAAM,uBAAuB,GAAI,8DAOrC,4BAA4B,sBAoC9B,CAAA"}
|
|
@@ -17,7 +17,6 @@ import { KeyboardView } from '../components/display/keyboard_view';
|
|
|
17
17
|
import BlankState from '../components/primitive/blank_state_primitive';
|
|
18
18
|
import { ConversationContextProvider } from '../contexts/conversation_context';
|
|
19
19
|
import { useTheme } from '../hooks';
|
|
20
|
-
import { useMessageAvailableMembersAction } from '../hooks/direct_messages/use_message_available_members_action';
|
|
21
20
|
import { useConversation } from '../hooks/use_conversation';
|
|
22
21
|
import { useConversationJoltEvents } from '../hooks/use_conversation_jolt_events';
|
|
23
22
|
import { useConversationMessages } from '../hooks/use_conversation_messages';
|
|
@@ -45,7 +44,7 @@ function ConversationScreenContent({ route }) {
|
|
|
45
44
|
const navigation = useNavigation();
|
|
46
45
|
const { conversation_id, editing_message_id, reply_root_id, reply_root_author_name } = route.params;
|
|
47
46
|
const { data: conversation } = useConversation(route.params);
|
|
48
|
-
const { messages, fetchNextPage } = useConversationMessages({
|
|
47
|
+
const { messages, fetchNextPage, hasNextPage } = useConversationMessages({
|
|
49
48
|
conversation_id,
|
|
50
49
|
reply_root_id,
|
|
51
50
|
});
|
|
@@ -111,7 +110,7 @@ function ConversationScreenContent({ route }) {
|
|
|
111
110
|
<KeyboardView>
|
|
112
111
|
{noMessages ? (<View style={styles.emptyState}>
|
|
113
112
|
<ConversationStartBanner conversation={conversation} hasMessages={false}/>
|
|
114
|
-
</View>) : (<FlatList inverted ref={listRef} contentContainerStyle={styles.listContainer} data={messagesWithSeparators} keyExtractor={item => item.id} onScroll={trackScroll} scrollEventThrottle={10} ListFooterComponent={<ConversationStartBanner conversation={conversation} hasMessages={true}/>} renderItem={({ item }) => {
|
|
113
|
+
</View>) : (<FlatList inverted ref={listRef} contentContainerStyle={styles.listContainer} data={messagesWithSeparators} keyExtractor={item => item.id} onScroll={trackScroll} scrollEventThrottle={10} ListFooterComponent={hasNextPage ? null : (<ConversationStartBanner conversation={conversation} hasMessages={true}/>)} renderItem={({ item }) => {
|
|
115
114
|
if (item.type === 'DateSeparator') {
|
|
116
115
|
return <InlineDateSeparator {...item}/>;
|
|
117
116
|
}
|
|
@@ -131,9 +130,8 @@ function ConversationScreenContent({ route }) {
|
|
|
131
130
|
</View>);
|
|
132
131
|
}
|
|
133
132
|
function ConversationBottomBar({ conversation, canReply, replyRootAuthorFirstName, replyRootId, currentlyEditingMessage, onFlaggedInMessageForm, }) {
|
|
134
|
-
const messageLink = useMessageAvailableMembersAction(conversation);
|
|
135
133
|
if (conversation.disabled)
|
|
136
|
-
return
|
|
134
|
+
return <ConversationDisabledBanner disabledReason={conversation.disabledReason}/>;
|
|
137
135
|
if (!canReply)
|
|
138
136
|
return <MemberMessagesDisabledBanner />;
|
|
139
137
|
return (<MessageForm.Root replyRootAuthorFirstName={replyRootAuthorFirstName} conversation={conversation} replyRootId={replyRootId} currentlyEditingMessage={currentlyEditingMessage} onFlaggedInMessageForm={onFlaggedInMessageForm} key={currentlyEditingMessage
|