@planningcenter/chat-react-native 2.2.2-rc.1 → 2.3.0-rc.0

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 (95) hide show
  1. package/build/components/conversations.d.ts.map +1 -1
  2. package/build/components/conversations.js +4 -0
  3. package/build/components/conversations.js.map +1 -1
  4. package/build/components/display/action_button.d.ts +8 -0
  5. package/build/components/display/action_button.d.ts.map +1 -0
  6. package/build/components/display/action_button.js +44 -0
  7. package/build/components/display/action_button.js.map +1 -0
  8. package/build/contexts/api_provider.js +2 -2
  9. package/build/contexts/api_provider.js.map +1 -1
  10. package/build/hooks/index.d.ts +2 -0
  11. package/build/hooks/index.d.ts.map +1 -1
  12. package/build/hooks/index.js +2 -0
  13. package/build/hooks/index.js.map +1 -1
  14. package/build/hooks/use_api.d.ts +383 -0
  15. package/build/hooks/use_api.d.ts.map +1 -0
  16. package/build/hooks/use_api.js +40 -0
  17. package/build/hooks/use_api.js.map +1 -0
  18. package/build/hooks/use_api_client.d.ts +5 -3
  19. package/build/hooks/use_api_client.d.ts.map +1 -1
  20. package/build/hooks/use_api_client.js +1 -1
  21. package/build/hooks/use_api_client.js.map +1 -1
  22. package/build/hooks/use_chat_permissions.d.ts +172 -0
  23. package/build/hooks/use_chat_permissions.d.ts.map +1 -0
  24. package/build/hooks/use_chat_permissions.js +17 -0
  25. package/build/hooks/use_chat_permissions.js.map +1 -0
  26. package/build/hooks/use_conversation.d.ts.map +1 -1
  27. package/build/hooks/use_conversation.js +6 -5
  28. package/build/hooks/use_conversation.js.map +1 -1
  29. package/build/hooks/use_suspense_api.d.ts +13 -4
  30. package/build/hooks/use_suspense_api.d.ts.map +1 -1
  31. package/build/hooks/use_suspense_api.js +1 -0
  32. package/build/hooks/use_suspense_api.js.map +1 -1
  33. package/build/index.d.ts +1 -1
  34. package/build/index.d.ts.map +1 -1
  35. package/build/index.js +1 -1
  36. package/build/index.js.map +1 -1
  37. package/build/navigation/index.d.ts +123 -2
  38. package/build/navigation/index.d.ts.map +1 -1
  39. package/build/navigation/index.js +40 -4
  40. package/build/navigation/index.js.map +1 -1
  41. package/build/navigation/screenLayout.js +1 -1
  42. package/build/navigation/screenLayout.js.map +1 -1
  43. package/build/screens/create/conversation_create_screen.d.ts +9 -0
  44. package/build/screens/create/conversation_create_screen.d.ts.map +1 -0
  45. package/build/screens/create/conversation_create_screen.js +123 -0
  46. package/build/screens/create/conversation_create_screen.js.map +1 -0
  47. package/build/screens/create/conversation_filter_recipients_screen.d.ts +8 -0
  48. package/build/screens/create/conversation_filter_recipients_screen.d.ts.map +1 -0
  49. package/build/screens/create/conversation_filter_recipients_screen.js +52 -0
  50. package/build/screens/create/conversation_filter_recipients_screen.js.map +1 -0
  51. package/build/screens/create/conversation_select_recipients_screen.d.ts +8 -0
  52. package/build/screens/create/conversation_select_recipients_screen.d.ts.map +1 -0
  53. package/build/screens/create/conversation_select_recipients_screen.js +105 -0
  54. package/build/screens/create/conversation_select_recipients_screen.js.map +1 -0
  55. package/build/types/resources/app_grant.d.ts +6 -0
  56. package/build/types/resources/app_grant.d.ts.map +1 -0
  57. package/build/types/resources/app_grant.js +2 -0
  58. package/build/types/resources/app_grant.js.map +1 -0
  59. package/build/types/resources/groups/groups_group_resource.d.ts +12 -0
  60. package/build/types/resources/groups/groups_group_resource.d.ts.map +1 -0
  61. package/build/types/resources/groups/groups_group_resource.js +2 -0
  62. package/build/types/resources/groups/groups_group_resource.js.map +1 -0
  63. package/build/types/resources/groups/index.d.ts +2 -0
  64. package/build/types/resources/groups/index.d.ts.map +1 -0
  65. package/build/types/resources/groups/index.js +2 -0
  66. package/build/types/resources/groups/index.js.map +1 -0
  67. package/build/types/resources/index.d.ts +2 -0
  68. package/build/types/resources/index.d.ts.map +1 -1
  69. package/build/types/resources/index.js +2 -0
  70. package/build/types/resources/index.js.map +1 -1
  71. package/package.json +2 -2
  72. package/src/components/conversations.tsx +8 -0
  73. package/src/components/display/action_button.tsx +62 -0
  74. package/src/contexts/api_provider.tsx +2 -2
  75. package/src/hooks/index.ts +2 -0
  76. package/src/hooks/use_api.ts +80 -0
  77. package/src/hooks/use_api_client.ts +13 -15
  78. package/src/hooks/use_chat_permissions.ts +20 -0
  79. package/src/hooks/use_conversation.ts +6 -5
  80. package/src/hooks/use_suspense_api.ts +16 -4
  81. package/src/index.tsx +1 -1
  82. package/src/navigation/index.tsx +46 -7
  83. package/src/navigation/screenLayout.tsx +1 -1
  84. package/src/screens/create/conversation_create_screen.tsx +148 -0
  85. package/src/screens/create/conversation_filter_recipients_screen.tsx +79 -0
  86. package/src/screens/create/conversation_select_recipients_screen.tsx +136 -0
  87. package/src/types/resources/app_grant.ts +6 -0
  88. package/src/types/resources/groups/groups_group_resource.ts +12 -0
  89. package/src/types/resources/groups/index.ts +1 -0
  90. package/src/types/resources/index.ts +2 -0
  91. package/build/contexts/index.d.ts +0 -3
  92. package/build/contexts/index.d.ts.map +0 -1
  93. package/build/contexts/index.js +0 -3
  94. package/build/contexts/index.js.map +0 -1
  95. package/src/contexts/index.ts +0 -2
@@ -1,6 +1,8 @@
1
1
  import { Client } from '../utils/client';
2
- type App = 'chat' | 'groups';
3
- export type ApiClient = Record<App, Client>;
4
- export declare const useApiClient: () => Record<App, Client>;
2
+ type App = 'chat' | 'groups' | 'services';
3
+ export type ApiClient = {
4
+ [_K in App]: Client;
5
+ };
6
+ export declare const useApiClient: () => ApiClient;
5
7
  export {};
6
8
  //# sourceMappingURL=use_api_client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use_api_client.d.ts","sourceRoot":"","sources":["../../src/hooks/use_api_client.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAExC,KAAK,GAAG,GAAG,MAAM,GAAG,QAAQ,CAAA;AAE5B,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;AAE3C,eAAO,MAAM,YAAY,2BAoBxB,CAAA"}
1
+ {"version":3,"file":"use_api_client.d.ts","sourceRoot":"","sources":["../../src/hooks/use_api_client.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAExC,KAAK,GAAG,GAAG,MAAM,GAAG,QAAQ,GAAG,UAAU,CAAA;AAGzC,MAAM,MAAM,SAAS,GAAG;KAAG,EAAE,IAAI,GAAG,GAAG,MAAM;CAAE,CAAA;AAE/C,eAAO,MAAM,YAAY,iBAiBxB,CAAA"}
@@ -1,7 +1,7 @@
1
1
  import { useContext, useMemo } from 'react';
2
2
  import { ChatContext } from '../contexts/chat_context';
3
3
  import { Client } from '../utils/client';
4
- const apps = ['chat', 'groups'];
4
+ const apps = ['chat', 'groups', 'services'];
5
5
  export const useApiClient = () => {
6
6
  const { session, onTokenExpired } = useContext(ChatContext);
7
7
  const api = useMemo(() => apps.reduce((acc, app) => {
@@ -1 +1 @@
1
- {"version":3,"file":"use_api_client.js","sourceRoot":"","sources":["../../src/hooks/use_api_client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAGxC,MAAM,IAAI,GAAU,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;AAGtC,MAAM,CAAC,MAAM,YAAY,GAAG,GAAG,EAAE;IAC/B,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,UAAU,CAAC,WAAW,CAAC,CAAA;IAC3D,MAAM,GAAG,GAAG,OAAO,CACjB,GAAG,EAAE,CACH,IAAI,CAAC,MAAM,CACT,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QACX,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,MAAM,CAAC;YACpB,GAAG;YACH,OAAO;YACP,OAAO,EAAE,YAAY;YACrB,cAAc;SACf,CAAC,CAAA;QACF,OAAO,GAAG,CAAA;IACZ,CAAC,EACD,EAAyB,CAC1B,EACH,CAAC,OAAO,EAAE,cAAc,CAAC,CAC1B,CAAA;IAED,OAAO,GAAG,CAAA;AACZ,CAAC,CAAA","sourcesContent":["import { useContext, useMemo } from 'react'\nimport { ChatContext } from '../contexts/chat_context'\nimport { Client } from '../utils/client'\n\ntype App = 'chat' | 'groups'\nconst apps: App[] = ['chat', 'groups']\nexport type ApiClient = Record<App, Client>\n\nexport const useApiClient = () => {\n const { session, onTokenExpired } = useContext(ChatContext)\n const api = useMemo(\n () =>\n apps.reduce(\n (acc, app) => {\n acc[app] = new Client({\n app,\n session,\n version: '2018-11-01',\n onTokenExpired,\n })\n return acc\n },\n {} as Record<App, Client>\n ),\n [session, onTokenExpired]\n )\n\n return api\n}\n"]}
1
+ {"version":3,"file":"use_api_client.js","sourceRoot":"","sources":["../../src/hooks/use_api_client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAGxC,MAAM,IAAI,GAAU,CAAC,MAAM,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAA;AAIlD,MAAM,CAAC,MAAM,YAAY,GAAG,GAAG,EAAE;IAC/B,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,UAAU,CAAC,WAAW,CAAC,CAAA;IAC3D,MAAM,GAAG,GAAG,OAAO,CACjB,GAAG,EAAE,CACH,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QACvB,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,MAAM,CAAC;YACpB,GAAG;YACH,OAAO;YACP,OAAO,EAAE,YAAY;YACrB,cAAc;SACf,CAAC,CAAA;QACF,OAAO,GAAG,CAAA;IACZ,CAAC,EAAE,EAAe,CAAC,EACrB,CAAC,OAAO,EAAE,cAAc,CAAC,CAC1B,CAAA;IAED,OAAO,GAAG,CAAA;AACZ,CAAC,CAAA","sourcesContent":["import { useContext, useMemo } from 'react'\nimport { ChatContext } from '../contexts/chat_context'\nimport { Client } from '../utils/client'\n\ntype App = 'chat' | 'groups' | 'services'\nconst apps: App[] = ['chat', 'groups', 'services']\n\nexport type ApiClient = { [_K in App]: Client }\n\nexport const useApiClient = () => {\n const { session, onTokenExpired } = useContext(ChatContext)\n const api = useMemo(\n () =>\n apps.reduce((acc, app) => {\n acc[app] = new Client({\n app,\n session,\n version: '2018-11-01',\n onTokenExpired,\n })\n return acc\n }, {} as ApiClient),\n [session, onTokenExpired]\n )\n\n return api\n}\n"]}
@@ -0,0 +1,172 @@
1
+ import { AppGrantsResource } from '../types';
2
+ export declare function useAppGrants(): {
3
+ error: Response;
4
+ isError: true;
5
+ isPending: false;
6
+ isLoading: false;
7
+ isLoadingError: false;
8
+ isRefetchError: true;
9
+ isSuccess: false;
10
+ isPlaceholderData: false;
11
+ status: "error";
12
+ dataUpdatedAt: number;
13
+ errorUpdatedAt: number;
14
+ failureCount: number;
15
+ failureReason: Response | null;
16
+ errorUpdateCount: number;
17
+ isFetched: boolean;
18
+ isFetchedAfterMount: boolean;
19
+ isFetching: boolean;
20
+ isInitialLoading: boolean;
21
+ isPaused: boolean;
22
+ isRefetching: boolean;
23
+ isStale: boolean;
24
+ refetch: (options?: import("@tanstack/query-core").RefetchOptions) => Promise<import("@tanstack/query-core").QueryObserverResult<import("../types").ApiResource<AppGrantsResource[]>, Response>>;
25
+ fetchStatus: import("@tanstack/query-core").FetchStatus;
26
+ promise: Promise<import("../types").ApiResource<AppGrantsResource[]>>;
27
+ data?: AppGrantsResource[] | undefined;
28
+ links?: Record<string, string> | undefined;
29
+ meta?: Record<string, unknown> | undefined;
30
+ } | {
31
+ error: null;
32
+ isError: false;
33
+ isPending: false;
34
+ isLoading: false;
35
+ isLoadingError: false;
36
+ isRefetchError: false;
37
+ isSuccess: true;
38
+ isPlaceholderData: false;
39
+ status: "success";
40
+ dataUpdatedAt: number;
41
+ errorUpdatedAt: number;
42
+ failureCount: number;
43
+ failureReason: Response | null;
44
+ errorUpdateCount: number;
45
+ isFetched: boolean;
46
+ isFetchedAfterMount: boolean;
47
+ isFetching: boolean;
48
+ isInitialLoading: boolean;
49
+ isPaused: boolean;
50
+ isRefetching: boolean;
51
+ isStale: boolean;
52
+ refetch: (options?: import("@tanstack/query-core").RefetchOptions) => Promise<import("@tanstack/query-core").QueryObserverResult<import("../types").ApiResource<AppGrantsResource[]>, Response>>;
53
+ fetchStatus: import("@tanstack/query-core").FetchStatus;
54
+ promise: Promise<import("../types").ApiResource<AppGrantsResource[]>>;
55
+ data?: AppGrantsResource[] | undefined;
56
+ links?: Record<string, string> | undefined;
57
+ meta?: Record<string, unknown> | undefined;
58
+ } | {
59
+ error: Response;
60
+ isError: true;
61
+ isPending: false;
62
+ isLoading: false;
63
+ isLoadingError: true;
64
+ isRefetchError: false;
65
+ isSuccess: false;
66
+ isPlaceholderData: false;
67
+ status: "error";
68
+ dataUpdatedAt: number;
69
+ errorUpdatedAt: number;
70
+ failureCount: number;
71
+ failureReason: Response | null;
72
+ errorUpdateCount: number;
73
+ isFetched: boolean;
74
+ isFetchedAfterMount: boolean;
75
+ isFetching: boolean;
76
+ isInitialLoading: boolean;
77
+ isPaused: boolean;
78
+ isRefetching: boolean;
79
+ isStale: boolean;
80
+ refetch: (options?: import("@tanstack/query-core").RefetchOptions) => Promise<import("@tanstack/query-core").QueryObserverResult<import("../types").ApiResource<AppGrantsResource[]>, Response>>;
81
+ fetchStatus: import("@tanstack/query-core").FetchStatus;
82
+ promise: Promise<import("../types").ApiResource<AppGrantsResource[]>>;
83
+ data?: AppGrantsResource[] | undefined;
84
+ links?: Record<string, string> | undefined;
85
+ meta?: Record<string, unknown> | undefined;
86
+ } | {
87
+ error: null;
88
+ isError: false;
89
+ isPending: true;
90
+ isLoading: true;
91
+ isLoadingError: false;
92
+ isRefetchError: false;
93
+ isSuccess: false;
94
+ isPlaceholderData: false;
95
+ status: "pending";
96
+ dataUpdatedAt: number;
97
+ errorUpdatedAt: number;
98
+ failureCount: number;
99
+ failureReason: Response | null;
100
+ errorUpdateCount: number;
101
+ isFetched: boolean;
102
+ isFetchedAfterMount: boolean;
103
+ isFetching: boolean;
104
+ isInitialLoading: boolean;
105
+ isPaused: boolean;
106
+ isRefetching: boolean;
107
+ isStale: boolean;
108
+ refetch: (options?: import("@tanstack/query-core").RefetchOptions) => Promise<import("@tanstack/query-core").QueryObserverResult<import("../types").ApiResource<AppGrantsResource[]>, Response>>;
109
+ fetchStatus: import("@tanstack/query-core").FetchStatus;
110
+ promise: Promise<import("../types").ApiResource<AppGrantsResource[]>>;
111
+ data?: AppGrantsResource[] | undefined;
112
+ links?: Record<string, string> | undefined;
113
+ meta?: Record<string, unknown> | undefined;
114
+ } | {
115
+ error: null;
116
+ isError: false;
117
+ isPending: true;
118
+ isLoadingError: false;
119
+ isRefetchError: false;
120
+ isSuccess: false;
121
+ isPlaceholderData: false;
122
+ status: "pending";
123
+ dataUpdatedAt: number;
124
+ errorUpdatedAt: number;
125
+ failureCount: number;
126
+ failureReason: Response | null;
127
+ errorUpdateCount: number;
128
+ isFetched: boolean;
129
+ isFetchedAfterMount: boolean;
130
+ isFetching: boolean;
131
+ isLoading: boolean;
132
+ isInitialLoading: boolean;
133
+ isPaused: boolean;
134
+ isRefetching: boolean;
135
+ isStale: boolean;
136
+ refetch: (options?: import("@tanstack/query-core").RefetchOptions) => Promise<import("@tanstack/query-core").QueryObserverResult<import("../types").ApiResource<AppGrantsResource[]>, Response>>;
137
+ fetchStatus: import("@tanstack/query-core").FetchStatus;
138
+ promise: Promise<import("../types").ApiResource<AppGrantsResource[]>>;
139
+ data?: AppGrantsResource[] | undefined;
140
+ links?: Record<string, string> | undefined;
141
+ meta?: Record<string, unknown> | undefined;
142
+ } | {
143
+ isError: false;
144
+ error: null;
145
+ isPending: false;
146
+ isLoading: false;
147
+ isLoadingError: false;
148
+ isRefetchError: false;
149
+ isSuccess: true;
150
+ isPlaceholderData: true;
151
+ status: "success";
152
+ dataUpdatedAt: number;
153
+ errorUpdatedAt: number;
154
+ failureCount: number;
155
+ failureReason: Response | null;
156
+ errorUpdateCount: number;
157
+ isFetched: boolean;
158
+ isFetchedAfterMount: boolean;
159
+ isFetching: boolean;
160
+ isInitialLoading: boolean;
161
+ isPaused: boolean;
162
+ isRefetching: boolean;
163
+ isStale: boolean;
164
+ refetch: (options?: import("@tanstack/query-core").RefetchOptions) => Promise<import("@tanstack/query-core").QueryObserverResult<import("../types").ApiResource<AppGrantsResource[]>, Response>>;
165
+ fetchStatus: import("@tanstack/query-core").FetchStatus;
166
+ promise: Promise<import("../types").ApiResource<AppGrantsResource[]>>;
167
+ data?: AppGrantsResource[] | undefined;
168
+ links?: Record<string, string> | undefined;
169
+ meta?: Record<string, unknown> | undefined;
170
+ };
171
+ export declare function useCanCreateConversations(): boolean;
172
+ //# sourceMappingURL=use_chat_permissions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use_chat_permissions.d.ts","sourceRoot":"","sources":["../../src/hooks/use_chat_permissions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAA;AAG5C,wBAAgB,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAU3B;AAED,wBAAgB,yBAAyB,IAAI,OAAO,CAInD"}
@@ -0,0 +1,17 @@
1
+ import { useApiGet } from './use_api';
2
+ export function useAppGrants() {
3
+ return useApiGet({
4
+ url: '/me/app_grants',
5
+ data: {
6
+ fields: {
7
+ AppGrant: ['create_conversations', 'app_name'],
8
+ },
9
+ },
10
+ app: 'chat',
11
+ });
12
+ }
13
+ export function useCanCreateConversations() {
14
+ const { data: appGrants = [] } = useAppGrants();
15
+ return appGrants.some(appGrant => appGrant.createConversations);
16
+ }
17
+ //# sourceMappingURL=use_chat_permissions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use_chat_permissions.js","sourceRoot":"","sources":["../../src/hooks/use_chat_permissions.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAErC,MAAM,UAAU,YAAY;IAC1B,OAAO,SAAS,CAAsB;QACpC,GAAG,EAAE,gBAAgB;QACrB,IAAI,EAAE;YACJ,MAAM,EAAE;gBACN,QAAQ,EAAE,CAAC,sBAAsB,EAAE,UAAU,CAAC;aAC/C;SACF;QACD,GAAG,EAAE,MAAM;KACZ,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,UAAU,yBAAyB;IACvC,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,EAAE,EAAE,GAAG,YAAY,EAAE,CAAA;IAE/C,OAAO,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAA;AACjE,CAAC","sourcesContent":["import { AppGrantsResource } from '../types'\nimport { useApiGet } from './use_api'\n\nexport function useAppGrants() {\n return useApiGet<AppGrantsResource[]>({\n url: '/me/app_grants',\n data: {\n fields: {\n AppGrant: ['create_conversations', 'app_name'],\n },\n },\n app: 'chat',\n })\n}\n\nexport function useCanCreateConversations(): boolean {\n const { data: appGrants = [] } = useAppGrants()\n\n return appGrants.some(appGrant => appGrant.createConversations)\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"use_conversation.d.ts","sourceRoot":"","sources":["../../src/hooks/use_conversation.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAA;AAO5D,eAAO,MAAM,0BAA0B,wBAAyB;IAAE,eAAe,EAAE,MAAM,CAAA;CAAE;;;;;;;;;;CAyBzF,CAAA;AAEF,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAE3B,CAAA;AAED,eAAO,MAAM,mBAAmB,wBAAyB;IAAE,eAAe,EAAE,MAAM,CAAA;CAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyCnF,CAAA;AAED,eAAO,MAAM,qBAAqB,wBAAyB;IAAE,eAAe,EAAE,MAAM,CAAA;CAAE,qIA8BrF,CAAA"}
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;AAK5D,eAAO,MAAM,0BAA0B,wBAAyB;IAAE,eAAe,EAAE,MAAM,CAAA;CAAE;;;;;;;;;;CAyBzF,CAAA;AAEF,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAE3B,CAAA;AAED,eAAO,MAAM,mBAAmB,wBAAyB;IAAE,eAAe,EAAE,MAAM,CAAA;CAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0CnF,CAAA;AAED,eAAO,MAAM,qBAAqB,wBAAyB;IAAE,eAAe,EAAE,MAAM,CAAA;CAAE,qIA+BrF,CAAA"}
@@ -1,9 +1,8 @@
1
- import { useMutation } from '@tanstack/react-query';
2
- import { getRequestQueryKey, useSuspenseGet } from './use_suspense_api';
3
- import { queryClient } from '../contexts';
4
- import { useApiClient } from './use_api_client';
5
- import { transformGetToPost } from '../utils/client/request_helpers';
1
+ import { useMutation, useQueryClient } from '@tanstack/react-query';
6
2
  import { useState } from 'react';
3
+ import { transformGetToPost } from '../utils/client/request_helpers';
4
+ import { useApiClient } from './use_api_client';
5
+ import { getRequestQueryKey, useSuspenseGet } from './use_suspense_api';
7
6
  export const getConversationRequestArgs = ({ conversation_id }) => ({
8
7
  url: `/me/conversations/${conversation_id}`,
9
8
  data: {
@@ -35,6 +34,7 @@ export const useConversation = ({ conversation_id }) => {
35
34
  };
36
35
  export const useConversationMute = ({ conversation_id }) => {
37
36
  const apiClient = useApiClient();
37
+ const queryClient = useQueryClient();
38
38
  const requestArgs = getConversationRequestArgs({ conversation_id });
39
39
  const queryKey = getRequestQueryKey(requestArgs);
40
40
  const { data: conversation } = useConversation({ conversation_id });
@@ -73,6 +73,7 @@ export const useConversationMute = ({ conversation_id }) => {
73
73
  };
74
74
  export const useConversationUpdate = ({ conversation_id }) => {
75
75
  const apiClient = useApiClient();
76
+ const queryClient = useQueryClient();
76
77
  const requestArgs = getConversationRequestArgs({ conversation_id });
77
78
  const queryKey = getRequestQueryKey(requestArgs);
78
79
  return useMutation({
@@ -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 } from '@tanstack/react-query'\nimport { ApiResource, ConversationResource } from '../types'\nimport { getRequestQueryKey, useSuspenseGet } from './use_suspense_api'\nimport { queryClient } from '../contexts'\nimport { useApiClient } from './use_api_client'\nimport { transformGetToPost } from '../utils/client/request_helpers'\nimport { useState } from 'react'\n\nexport const getConversationRequestArgs = ({ conversation_id }: { conversation_id: string }) => ({\n url: `/me/conversations/${conversation_id}`,\n data: {\n fields: {\n Conversation: [\n 'created_at',\n 'badges',\n 'groups',\n 'last_message_author_id',\n 'last_message_author_name',\n 'last_message_created_at',\n 'last_message_text_preview',\n 'preview_avatar_urls',\n 'member_ability',\n 'muted',\n 'replies_disabled',\n 'title',\n 'unread_count',\n 'updated_at',\n ],\n MemberAbility: ['can_update', 'can_delete'],\n ConversationBadge: ['app_name', 'pco_resource_type', 'text'],\n },\n include: ['badges', 'member_ability'],\n },\n})\n\nexport const useConversation = ({ conversation_id }) => {\n return useSuspenseGet<ConversationResource>(getConversationRequestArgs({ conversation_id }))\n}\n\nexport const useConversationMute = ({ conversation_id }: { conversation_id: string }) => {\n const apiClient = useApiClient()\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\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({\n url: `/me/conversations/${conversation_id}/${action}`,\n data: { data: { type: '', attributes: {} }, fields: { Conversation: 'muted' } },\n })\n },\n onSuccess: (response: ApiResource<ConversationResource>) => {\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 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: string }) => {\n const apiClient = useApiClient()\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({\n url: `/me/conversations/${conversation_id}/`,\n data: { data: { type: '', attributes: update }, ...postArgs },\n })\n },\n onSuccess: (response: ApiResource<ConversationResource>) => {\n queryClient.setQueryData<ApiResource<ConversationResource>>(queryKey, () => response)\n },\n })\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 { useApiClient } from './use_api_client'\nimport { getRequestQueryKey, useSuspenseGet } from './use_suspense_api'\n\nexport const getConversationRequestArgs = ({ conversation_id }: { conversation_id: string }) => ({\n url: `/me/conversations/${conversation_id}`,\n data: {\n fields: {\n Conversation: [\n 'created_at',\n 'badges',\n 'groups',\n 'last_message_author_id',\n 'last_message_author_name',\n 'last_message_created_at',\n 'last_message_text_preview',\n 'preview_avatar_urls',\n 'member_ability',\n 'muted',\n 'replies_disabled',\n 'title',\n 'unread_count',\n 'updated_at',\n ],\n MemberAbility: ['can_update', 'can_delete'],\n ConversationBadge: ['app_name', 'pco_resource_type', 'text'],\n },\n include: ['badges', 'member_ability'],\n },\n})\n\nexport const useConversation = ({ conversation_id }) => {\n return useSuspenseGet<ConversationResource>(getConversationRequestArgs({ conversation_id }))\n}\n\nexport const useConversationMute = ({ conversation_id }: { conversation_id: string }) => {\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\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({\n url: `/me/conversations/${conversation_id}/${action}`,\n data: { data: { type: '', attributes: {} }, fields: { Conversation: 'muted' } },\n })\n },\n onSuccess: (response: ApiResource<ConversationResource>) => {\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 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: string }) => {\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({\n url: `/me/conversations/${conversation_id}/`,\n data: { data: { type: '', attributes: update }, ...postArgs },\n })\n },\n onSuccess: (response: ApiResource<ConversationResource>) => {\n queryClient.setQueryData<ApiResource<ConversationResource>>(queryKey, () => response)\n },\n })\n}\n"]}
@@ -1,7 +1,10 @@
1
1
  import { AnyUseSuspenseInfiniteQueryOptions, InfiniteData } from '@tanstack/react-query';
2
2
  import { ApiCollection, ApiResource, ResourceObject } from '../types';
3
3
  import { GetRequest } from '../utils/client/types';
4
- export declare const useSuspenseGet: <T extends ResourceObject | ResourceObject[]>(args: GetRequest) => {
4
+ interface SuspenseGetOptions extends GetRequest {
5
+ app?: 'chat' | 'groups';
6
+ }
7
+ export declare const useSuspenseGet: <T extends ResourceObject | ResourceObject[]>(args: SuspenseGetOptions) => {
5
8
  error: Response | null;
6
9
  isError: boolean;
7
10
  isPending: false;
@@ -29,7 +32,7 @@ export declare const useSuspenseGet: <T extends ResourceObject | ResourceObject[
29
32
  meta: Record<string, unknown>;
30
33
  };
31
34
  export type SuspensePaginatorOptions = Omit<AnyUseSuspenseInfiniteQueryOptions, 'getNextPageParam' | 'initialPageParam' | 'queryFn' | 'queryKey'>;
32
- export declare const useSuspensePaginator: <T extends ResourceObject>(args: GetRequest, opts?: SuspensePaginatorOptions) => {
35
+ export declare const useSuspensePaginator: <T extends ResourceObject>(args: SuspenseGetOptions, opts?: SuspensePaginatorOptions) => {
33
36
  data: T[];
34
37
  error: Response | null;
35
38
  isError: boolean;
@@ -62,6 +65,12 @@ export declare const useSuspensePaginator: <T extends ResourceObject>(args: GetR
62
65
  isFetchPreviousPageError: boolean;
63
66
  isFetchingPreviousPage: boolean;
64
67
  };
65
- export type RequestQueryKey = [GetRequest['url'], GetRequest['data'], GetRequest['headers']];
66
- export declare const getRequestQueryKey: (args: GetRequest) => RequestQueryKey;
68
+ export type RequestQueryKey = [
69
+ SuspenseGetOptions['url'],
70
+ SuspenseGetOptions['data'],
71
+ SuspenseGetOptions['headers'],
72
+ SuspenseGetOptions['app']
73
+ ];
74
+ export declare const getRequestQueryKey: (args: SuspenseGetOptions) => RequestQueryKey;
75
+ export {};
67
76
  //# sourceMappingURL=use_suspense_api.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use_suspense_api.d.ts","sourceRoot":"","sources":["../../src/hooks/use_suspense_api.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kCAAkC,EAClC,YAAY,EAGb,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AACrE,OAAO,EAAE,UAAU,EAAe,MAAM,uBAAuB,CAAA;AAG/D,eAAO,MAAM,cAAc,GAAI,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,QAAQ,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;CAQ3F,CAAA;AAOD,MAAM,MAAM,wBAAwB,GAAG,IAAI,CACzC,kCAAkC,EAClC,kBAAkB,GAAG,kBAAkB,GAAG,SAAS,GAAG,UAAU,CACjE,CAAA;AAED,eAAO,MAAM,oBAAoB,GAAI,CAAC,SAAS,cAAc,QACrD,UAAU,SACT,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwChC,CAAA;AAED,MAAM,MAAM,eAAe,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,CAAA;AAC5F,eAAO,MAAM,kBAAkB,SAAU,UAAU,KAAG,eAIrD,CAAA"}
1
+ {"version":3,"file":"use_suspense_api.d.ts","sourceRoot":"","sources":["../../src/hooks/use_suspense_api.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kCAAkC,EAClC,YAAY,EAGb,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AACrE,OAAO,EAAE,UAAU,EAAe,MAAM,uBAAuB,CAAA;AAG/D,UAAU,kBAAmB,SAAQ,UAAU;IAC7C,GAAG,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAA;CACxB;AAED,eAAO,MAAM,cAAc,GAAI,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,QAClE,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;CASzB,CAAA;AAOD,MAAM,MAAM,wBAAwB,GAAG,IAAI,CACzC,kCAAkC,EAClC,kBAAkB,GAAG,kBAAkB,GAAG,SAAS,GAAG,UAAU,CACjE,CAAA;AAED,eAAO,MAAM,oBAAoB,GAAI,CAAC,SAAS,cAAc,QACrD,kBAAkB,SACjB,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwChC,CAAA;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,kBAAkB,CAAC,KAAK,CAAC;IACzB,kBAAkB,CAAC,MAAM,CAAC;IAC1B,kBAAkB,CAAC,SAAS,CAAC;IAC7B,kBAAkB,CAAC,KAAK,CAAC;CAC1B,CAAA;AACD,eAAO,MAAM,kBAAkB,SAAU,kBAAkB,KAAG,eAK7D,CAAA"}
@@ -40,5 +40,6 @@ export const getRequestQueryKey = (args) => [
40
40
  args.url,
41
41
  args.data,
42
42
  args.headers,
43
+ args.app || 'chat',
43
44
  ];
44
45
  //# sourceMappingURL=use_suspense_api.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"use_suspense_api.js","sourceRoot":"","sources":["../../src/hooks/use_suspense_api.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,wBAAwB,EACxB,gBAAgB,GACjB,MAAM,uBAAuB,CAAA;AAG9B,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAE/C,MAAM,CAAC,MAAM,cAAc,GAAG,CAA8C,IAAgB,EAAE,EAAE;IAG9F,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,GAAG,gBAAgB,CAAqB;QAC9D,QAAQ,EAAE,kBAAkB,CAAC,IAAI,CAAC;KACnC,CAAC,CAAA;IAEF,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,EAAE,CAAA;AAC9B,CAAC,CAAA;AAYD,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,IAAgB,EAChB,IAA+B,EAC/B,EAAE;IACF,MAAM,SAAS,GAAG,YAAY,EAAE,CAAA;IAChC,MAAM,KAAK,GAAG,wBAAwB,CAMpC;QACA,QAAQ,EAAE,kBAAkB,CAAC,IAAI,CAAC;QAClC,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE;YACzB,MAAM,aAAa,GAAG,SAAS,EAAE,KAAK,IAAI,EAAE,CAAA;YAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAA;YACvC,MAAM,KAAK,GAAG,EAAE,GAAG,SAAS,EAAE,GAAG,aAAa,EAAE,CAAA;YAEhD,MAAM,MAAM,GAAG,SAAS,EAAE,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAA;YACpD,MAAM,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAA;YAE5C,OAAO,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC;gBACxB,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,IAAI;aACL,CAAC,CAAA;QACJ,CAAC;QACD,gBAAgB,EAAE,EAA0B;QAC5C,gBAAgB,EAAE,QAAQ,CAAC,EAAE;YAC3B,MAAM,IAAI,GAAa,QAAQ,CAAC,IAAI,EAAE,IAAI,IAAI,EAAE,CAAA;YAChD,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAA;YAE7B,IAAI,IAAI;gBAAE,OAAO,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAA;YAC3C,IAAI,MAAM;gBAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAA;YAE7C,OAAO,SAAS,CAAA;QAClB,CAAC;QACD,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;KAChB,CAAC,CAAA;IAEF,MAAM,IAAI,GAAQ,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAA;IAEpE,OAAO,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,CAAA;AAC3B,CAAC,CAAA;AAGD,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,IAAgB,EAAmB,EAAE,CAAC;IACvE,IAAI,CAAC,GAAG;IACR,IAAI,CAAC,IAAI;IACT,IAAI,CAAC,OAAO;CACb,CAAA","sourcesContent":["import {\n AnyUseSuspenseInfiniteQueryOptions,\n InfiniteData,\n useSuspenseInfiniteQuery,\n useSuspenseQuery,\n} from '@tanstack/react-query'\nimport { ApiCollection, ApiResource, ResourceObject } from '../types'\nimport { GetRequest, RequestData } from '../utils/client/types'\nimport { useApiClient } from './use_api_client'\n\nexport const useSuspenseGet = <T extends ResourceObject | ResourceObject[]>(args: GetRequest) => {\n type Resource = ApiResource<T>\n\n const { data, ...query } = useSuspenseQuery<Resource, Response>({\n queryKey: getRequestQueryKey(args),\n })\n\n return { ...data, ...query }\n}\n\ntype NextMeta = Partial<{\n offset: string\n idLt: string\n}>\n\nexport type SuspensePaginatorOptions = Omit<\n AnyUseSuspenseInfiniteQueryOptions,\n 'getNextPageParam' | 'initialPageParam' | 'queryFn' | 'queryKey'\n>\n\nexport const useSuspensePaginator = <T extends ResourceObject>(\n args: GetRequest,\n opts?: SuspensePaginatorOptions\n) => {\n const apiClient = useApiClient()\n const query = useSuspenseInfiniteQuery<\n ApiCollection<T>,\n Response,\n InfiniteData<ApiCollection<T>>,\n any,\n Partial<RequestData> | undefined\n >({\n queryKey: getRequestQueryKey(args),\n queryFn: ({ pageParam }) => {\n const pageParmWhere = pageParam?.where || {}\n const argsWhere = args.data.where || {}\n const where = { ...argsWhere, ...pageParmWhere }\n\n const offset = pageParam?.offset || args.data.offset\n const data = { ...args.data, where, offset }\n\n return apiClient.chat.get({\n url: args.url,\n data,\n })\n },\n initialPageParam: {} as Partial<RequestData>,\n getNextPageParam: lastPage => {\n const next: NextMeta = lastPage.meta?.next || {}\n const { offset, idLt } = next\n\n if (idLt) return { where: { id_lt: idLt } }\n if (offset) return { offset: Number(offset) }\n\n return undefined\n },\n ...(opts || {}),\n })\n\n const data: T[] = query.data?.pages.flatMap(page => page.data) || []\n\n return { ...query, data }\n}\n\nexport type RequestQueryKey = [GetRequest['url'], GetRequest['data'], GetRequest['headers']]\nexport const getRequestQueryKey = (args: GetRequest): RequestQueryKey => [\n args.url,\n args.data,\n args.headers,\n]\n"]}
1
+ {"version":3,"file":"use_suspense_api.js","sourceRoot":"","sources":["../../src/hooks/use_suspense_api.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,wBAAwB,EACxB,gBAAgB,GACjB,MAAM,uBAAuB,CAAA;AAG9B,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAM/C,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,IAAwB,EACxB,EAAE;IAGF,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,GAAG,gBAAgB,CAAqB;QAC9D,QAAQ,EAAE,kBAAkB,CAAC,IAAI,CAAC;KACnC,CAAC,CAAA;IAEF,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,EAAE,CAAA;AAC9B,CAAC,CAAA;AAYD,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,IAAwB,EACxB,IAA+B,EAC/B,EAAE;IACF,MAAM,SAAS,GAAG,YAAY,EAAE,CAAA;IAChC,MAAM,KAAK,GAAG,wBAAwB,CAMpC;QACA,QAAQ,EAAE,kBAAkB,CAAC,IAAI,CAAC;QAClC,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE;YACzB,MAAM,aAAa,GAAG,SAAS,EAAE,KAAK,IAAI,EAAE,CAAA;YAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAA;YACvC,MAAM,KAAK,GAAG,EAAE,GAAG,SAAS,EAAE,GAAG,aAAa,EAAE,CAAA;YAEhD,MAAM,MAAM,GAAG,SAAS,EAAE,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAA;YACpD,MAAM,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAA;YAE5C,OAAO,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC;gBACxB,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,IAAI;aACL,CAAC,CAAA;QACJ,CAAC;QACD,gBAAgB,EAAE,EAA0B;QAC5C,gBAAgB,EAAE,QAAQ,CAAC,EAAE;YAC3B,MAAM,IAAI,GAAa,QAAQ,CAAC,IAAI,EAAE,IAAI,IAAI,EAAE,CAAA;YAChD,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAA;YAE7B,IAAI,IAAI;gBAAE,OAAO,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAA;YAC3C,IAAI,MAAM;gBAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAA;YAE7C,OAAO,SAAS,CAAA;QAClB,CAAC;QACD,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;KAChB,CAAC,CAAA;IAEF,MAAM,IAAI,GAAQ,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAA;IAEpE,OAAO,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,CAAA;AAC3B,CAAC,CAAA;AAQD,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,IAAwB,EAAmB,EAAE,CAAC;IAC/E,IAAI,CAAC,GAAG;IACR,IAAI,CAAC,IAAI;IACT,IAAI,CAAC,OAAO;IACZ,IAAI,CAAC,GAAG,IAAI,MAAM;CACnB,CAAA","sourcesContent":["import {\n AnyUseSuspenseInfiniteQueryOptions,\n InfiniteData,\n useSuspenseInfiniteQuery,\n useSuspenseQuery,\n} from '@tanstack/react-query'\nimport { ApiCollection, ApiResource, ResourceObject } from '../types'\nimport { GetRequest, RequestData } from '../utils/client/types'\nimport { useApiClient } from './use_api_client'\n\ninterface SuspenseGetOptions extends GetRequest {\n app?: 'chat' | 'groups'\n}\n\nexport const useSuspenseGet = <T extends ResourceObject | ResourceObject[]>(\n args: SuspenseGetOptions\n) => {\n type Resource = ApiResource<T>\n\n const { data, ...query } = useSuspenseQuery<Resource, Response>({\n queryKey: getRequestQueryKey(args),\n })\n\n return { ...data, ...query }\n}\n\ntype NextMeta = Partial<{\n offset: string\n idLt: string\n}>\n\nexport type SuspensePaginatorOptions = Omit<\n AnyUseSuspenseInfiniteQueryOptions,\n 'getNextPageParam' | 'initialPageParam' | 'queryFn' | 'queryKey'\n>\n\nexport const useSuspensePaginator = <T extends ResourceObject>(\n args: SuspenseGetOptions,\n opts?: SuspensePaginatorOptions\n) => {\n const apiClient = useApiClient()\n const query = useSuspenseInfiniteQuery<\n ApiCollection<T>,\n Response,\n InfiniteData<ApiCollection<T>>,\n any,\n Partial<RequestData> | undefined\n >({\n queryKey: getRequestQueryKey(args),\n queryFn: ({ pageParam }) => {\n const pageParmWhere = pageParam?.where || {}\n const argsWhere = args.data.where || {}\n const where = { ...argsWhere, ...pageParmWhere }\n\n const offset = pageParam?.offset || args.data.offset\n const data = { ...args.data, where, offset }\n\n return apiClient.chat.get({\n url: args.url,\n data,\n })\n },\n initialPageParam: {} as Partial<RequestData>,\n getNextPageParam: lastPage => {\n const next: NextMeta = lastPage.meta?.next || {}\n const { offset, idLt } = next\n\n if (idLt) return { where: { id_lt: idLt } }\n if (offset) return { offset: Number(offset) }\n\n return undefined\n },\n ...(opts || {}),\n })\n\n const data: T[] = query.data?.pages.flatMap(page => page.data) || []\n\n return { ...query, data }\n}\n\nexport type RequestQueryKey = [\n SuspenseGetOptions['url'],\n SuspenseGetOptions['data'],\n SuspenseGetOptions['headers'],\n SuspenseGetOptions['app'],\n]\nexport const getRequestQueryKey = (args: SuspenseGetOptions): RequestQueryKey => [\n args.url,\n args.data,\n args.headers,\n args.app || 'chat',\n]\n"]}
package/build/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export { ChatProvider, ChatContext, CreateChatThemeProps } from './contexts';
1
+ export { ChatProvider, ChatContext, CreateChatThemeProps } from './contexts/chat_context';
2
2
  export { DesignSystemScreen } from './screens';
3
3
  export { ChatStack } from './navigation';
4
4
  export { TemporaryDefaultColorsType, ChatAdapters, ClipboardAdapter, Session, Client, } from './utils';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAC5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAA;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AACxC,OAAO,EACL,0BAA0B,EAC1B,YAAY,EACZ,gBAAgB,EAChB,OAAO,EACP,MAAM,GACP,MAAM,SAAS,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AACzF,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAA;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AACxC,OAAO,EACL,0BAA0B,EAC1B,YAAY,EACZ,gBAAgB,EAChB,OAAO,EACP,MAAM,GACP,MAAM,SAAS,CAAA"}
package/build/index.js CHANGED
@@ -1,4 +1,4 @@
1
- export { ChatProvider, ChatContext } from './contexts';
1
+ export { ChatProvider, ChatContext } from './contexts/chat_context';
2
2
  export { DesignSystemScreen } from './screens';
3
3
  export { ChatStack } from './navigation';
4
4
  export { ChatAdapters, ClipboardAdapter, Session, Client, } from './utils';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAwB,MAAM,YAAY,CAAA;AAC5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAA;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AACxC,OAAO,EAEL,YAAY,EACZ,gBAAgB,EAChB,OAAO,EACP,MAAM,GACP,MAAM,SAAS,CAAA","sourcesContent":["export { ChatProvider, ChatContext, CreateChatThemeProps } from './contexts'\nexport { DesignSystemScreen } from './screens'\nexport { ChatStack } from './navigation'\nexport {\n TemporaryDefaultColorsType,\n ChatAdapters,\n ClipboardAdapter,\n Session,\n Client,\n} from './utils'\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAwB,MAAM,yBAAyB,CAAA;AACzF,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAA;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AACxC,OAAO,EAEL,YAAY,EACZ,gBAAgB,EAChB,OAAO,EACP,MAAM,GACP,MAAM,SAAS,CAAA","sourcesContent":["export { ChatProvider, ChatContext, CreateChatThemeProps } from './contexts/chat_context'\nexport { DesignSystemScreen } from './screens'\nexport { ChatStack } from './navigation'\nexport {\n TemporaryDefaultColorsType,\n ChatAdapters,\n ClipboardAdapter,\n Session,\n Client,\n} from './utils'\n"]}
@@ -1,5 +1,5 @@
1
1
  import { StaticParamList } from '@react-navigation/native';
2
- import { NativeStackHeaderLeftProps, NativeStackHeaderRightProps } from '@react-navigation/native-stack';
2
+ import { NativeStackHeaderRightProps } from '@react-navigation/native-stack';
3
3
  import React from 'react';
4
4
  import { ConversationDetailsScreen } from '../screens/conversation_details_screen';
5
5
  import { ConversationScreen } from '../screens/conversation_screen';
@@ -8,6 +8,64 @@ import { MessageActionsScreen } from '../screens/message_actions_screen';
8
8
  import { NotFound } from '../screens/not_found';
9
9
  import { ReactionsScreen } from '../screens/reactions_screen';
10
10
  import { ScreenLayout } from './screenLayout';
11
+ export declare const CreateConversationStack: import("@react-navigation/native").TypedNavigator<{
12
+ ParamList: import("@react-navigation/native").ParamListBase;
13
+ NavigatorID: undefined;
14
+ State: import("@react-navigation/native").StackNavigationState<import("@react-navigation/native").ParamListBase>;
15
+ ScreenOptions: import("@react-navigation/native-stack").NativeStackNavigationOptions;
16
+ EventMap: import("@react-navigation/native-stack").NativeStackNavigationEventMap;
17
+ NavigationList: {
18
+ [x: string]: import("@react-navigation/native-stack").NativeStackNavigationProp<import("@react-navigation/native").ParamListBase, string, undefined>;
19
+ };
20
+ Navigator: ({ id, initialRouteName, children, layout, screenListeners, screenOptions, screenLayout, UNSTABLE_getStateForRouteNamesChange, ...rest }: import("@react-navigation/native-stack").NativeStackNavigatorProps) => import("react/jsx-runtime").JSX.Element;
21
+ }, {
22
+ readonly initialRouteName: "ConversationSelectRecipients";
23
+ readonly screenOptions: {
24
+ readonly headerBackButtonDisplayMode: "minimal";
25
+ };
26
+ readonly screenLayout: typeof ScreenLayout;
27
+ readonly screens: {
28
+ readonly ConversationSelectRecipients: {
29
+ readonly screen: ({}: {
30
+ route: {
31
+ params: {
32
+ chat_group_graph_id?: string;
33
+ };
34
+ };
35
+ }) => React.JSX.Element;
36
+ readonly options: ({ navigation }: {
37
+ route: import("@react-navigation/native").RouteProp<import("@react-navigation/native").ParamListBase, string>;
38
+ navigation: import("@react-navigation/native-stack").NativeStackNavigationProp<import("@react-navigation/native").ParamListBase, string, undefined>;
39
+ theme: ReactNavigation.Theme;
40
+ }) => {
41
+ title: string;
42
+ headerRight: (props: NativeStackHeaderRightProps) => React.JSX.Element;
43
+ };
44
+ };
45
+ readonly ConversationFilterRecipients: {
46
+ readonly screen: ({}: {
47
+ route: {
48
+ params: {};
49
+ };
50
+ }) => React.JSX.Element;
51
+ readonly options: import("@react-navigation/native-stack").NativeStackNavigationOptions;
52
+ };
53
+ readonly ConversationCreate: {
54
+ readonly screen: ({ route }: {
55
+ route: {
56
+ params: {
57
+ group_id?: string;
58
+ team_ids?: string[];
59
+ };
60
+ };
61
+ }) => React.JSX.Element;
62
+ readonly options: {
63
+ readonly title: "New conversation";
64
+ readonly headerLeft: () => null;
65
+ };
66
+ };
67
+ };
68
+ }>;
11
69
  export declare const ChatStack: import("@react-navigation/native").TypedNavigator<{
12
70
  ParamList: import("@react-navigation/native").ParamListBase;
13
71
  NavigatorID: undefined;
@@ -32,7 +90,6 @@ export declare const ChatStack: import("@react-navigation/native").TypedNavigato
32
90
  theme: ReactNavigation.Theme;
33
91
  }) => {
34
92
  headerTitle: string;
35
- headerLeft: ({ tintColor }: NativeStackHeaderLeftProps) => React.JSX.Element;
36
93
  headerRight: (props: NativeStackHeaderRightProps) => React.JSX.Element;
37
94
  };
38
95
  };
@@ -51,6 +108,70 @@ export declare const ChatStack: import("@react-navigation/native").TypedNavigato
51
108
  headerRight: (props: NativeStackHeaderRightProps) => React.JSX.Element;
52
109
  };
53
110
  };
111
+ readonly Create: {
112
+ readonly screen: import("@react-navigation/native").TypedNavigator<{
113
+ ParamList: import("@react-navigation/native").ParamListBase;
114
+ NavigatorID: undefined;
115
+ State: import("@react-navigation/native").StackNavigationState<import("@react-navigation/native").ParamListBase>;
116
+ ScreenOptions: import("@react-navigation/native-stack").NativeStackNavigationOptions;
117
+ EventMap: import("@react-navigation/native-stack").NativeStackNavigationEventMap;
118
+ NavigationList: {
119
+ [x: string]: import("@react-navigation/native-stack").NativeStackNavigationProp<import("@react-navigation/native").ParamListBase, string, undefined>;
120
+ };
121
+ Navigator: ({ id, initialRouteName, children, layout, screenListeners, screenOptions, screenLayout, UNSTABLE_getStateForRouteNamesChange, ...rest }: import("@react-navigation/native-stack").NativeStackNavigatorProps) => import("react/jsx-runtime").JSX.Element;
122
+ }, {
123
+ readonly initialRouteName: "ConversationSelectRecipients";
124
+ readonly screenOptions: {
125
+ readonly headerBackButtonDisplayMode: "minimal";
126
+ };
127
+ readonly screenLayout: typeof ScreenLayout;
128
+ readonly screens: {
129
+ readonly ConversationSelectRecipients: {
130
+ readonly screen: ({}: {
131
+ route: {
132
+ params: {
133
+ chat_group_graph_id?: string;
134
+ };
135
+ };
136
+ }) => React.JSX.Element;
137
+ readonly options: ({ navigation }: {
138
+ route: import("@react-navigation/native").RouteProp<import("@react-navigation/native").ParamListBase, string>;
139
+ navigation: import("@react-navigation/native-stack").NativeStackNavigationProp<import("@react-navigation/native").ParamListBase, string, undefined>;
140
+ theme: ReactNavigation.Theme;
141
+ }) => {
142
+ title: string;
143
+ headerRight: (props: NativeStackHeaderRightProps) => React.JSX.Element;
144
+ };
145
+ };
146
+ readonly ConversationFilterRecipients: {
147
+ readonly screen: ({}: {
148
+ route: {
149
+ params: {};
150
+ };
151
+ }) => React.JSX.Element;
152
+ readonly options: import("@react-navigation/native-stack").NativeStackNavigationOptions;
153
+ };
154
+ readonly ConversationCreate: {
155
+ readonly screen: ({ route }: {
156
+ route: {
157
+ params: {
158
+ group_id?: string;
159
+ team_ids?: string[];
160
+ };
161
+ };
162
+ }) => React.JSX.Element;
163
+ readonly options: {
164
+ readonly title: "New conversation";
165
+ readonly headerLeft: () => null;
166
+ };
167
+ };
168
+ };
169
+ }>;
170
+ readonly options: {
171
+ readonly headerShown: false;
172
+ readonly presentation: "modal";
173
+ };
174
+ };
54
175
  readonly MessageActions: {
55
176
  readonly screen: typeof MessageActionsScreen;
56
177
  readonly options: import("@react-navigation/native-stack").NativeStackNavigationOptions;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/navigation/index.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,EAEL,0BAA0B,EAC1B,2BAA2B,EAC5B,MAAM,gCAAgC,CAAA;AACvC,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAE,yBAAyB,EAAE,MAAM,wCAAwC,CAAA;AAClF,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAA;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAA;AACrE,OAAO,EACL,oBAAoB,EAErB,MAAM,mCAAmC,CAAA;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAC/C,OAAO,EAAE,eAAe,EAA0B,MAAM,6BAA6B,CAAA;AAErF,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAE7C,eAAO,MAAM,SAAS;;;;;;;;;uOAVG,mBAAmB;;;;;;;;;;;;uBA6E6rf,gBAAiB,KAAK;;;4CAzD3tf,0BAA0B;qCAKjC,2BAA2B;;;;;;;;;;;uBAoDirf,gBAAiB,KAAK;;;;qCAnCluf,2BAA2B;;;;;;;;;;;;;;;;;;;;;EA0BtD,CAAA;AAEF,KAAK,kBAAkB,GAAG,eAAe,CAAC,OAAO,SAAS,CAAC,CAAA;AAE3D,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,eAAe,CAAC;QACxB,UAAU,aAAc,SAAQ,kBAAkB;SAAG;KACtD;CACF"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/navigation/index.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,EAEL,2BAA2B,EAC5B,MAAM,gCAAgC,CAAA;AACvC,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAE,yBAAyB,EAAE,MAAM,wCAAwC,CAAA;AAClF,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAA;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAA;AAOrE,OAAO,EACL,oBAAoB,EAErB,MAAM,mCAAmC,CAAA;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAC/C,OAAO,EAAE,eAAe,EAA0B,MAAM,6BAA6B,CAAA;AAErF,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAE7C,eAAO,MAAM,uBAAuB;;;;;;;;;uOAfpC,mBAAkB;;;;;;;;;;;;;;;;;;;uBAoH+kd,gBAAiB,KAAK;;;qCA1F1ld,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;EAmBtD,CAAA;AAEF,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;uBAqE2kd,gBAAiB,KAAK;;;qCA3D1ld,2BAA2B;;;;;;;;;;;uBA2Dyid,gBAAiB,KAAK;;;;qCA1C1ld,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mDA0C0jd,KAAK;;;iDA1F1ld,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiFtD,CAAA;AAEF,KAAK,kBAAkB,GAAG,eAAe,CAAC,OAAO,SAAS,CAAC,CAAA;AAE3D,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,eAAe,CAAC;QACxB,UAAU,aAAc,SAAQ,kBAAkB;SAAG;KACtD;CACF"}