@messenger-box/platform-server 10.0.3-alpha.6 → 10.0.3-alpha.62

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 (144) hide show
  1. package/lib/containers/containers.js +3 -1
  2. package/lib/containers/containers.js.map +1 -1
  3. package/lib/containers/context-services-from-container.d.ts +2 -2
  4. package/lib/containers/context-services-from-container.js +2 -1
  5. package/lib/containers/context-services-from-container.js.map +1 -1
  6. package/lib/graphql/resolvers/channel-member.d.ts +3 -3
  7. package/lib/graphql/resolvers/channel-member.js +30 -5
  8. package/lib/graphql/resolvers/channel-member.js.map +1 -1
  9. package/lib/graphql/resolvers/channel.d.ts +3 -3
  10. package/lib/graphql/resolvers/channel.js +275 -53
  11. package/lib/graphql/resolvers/channel.js.map +1 -1
  12. package/lib/graphql/resolvers/extended-token-account.d.ts +3 -32
  13. package/lib/graphql/resolvers/extended-token-account.js +90 -23
  14. package/lib/graphql/resolvers/extended-token-account.js.map +1 -1
  15. package/lib/graphql/resolvers/index.d.ts +1 -31
  16. package/lib/graphql/resolvers/post-thread.d.ts +2 -3
  17. package/lib/graphql/resolvers/post-thread.js +294 -132
  18. package/lib/graphql/resolvers/post-thread.js.map +1 -1
  19. package/lib/graphql/resolvers/post.d.ts +2 -3
  20. package/lib/graphql/resolvers/post.js +697 -234
  21. package/lib/graphql/resolvers/post.js.map +1 -1
  22. package/lib/graphql/resolvers/reaction.d.ts +3 -3
  23. package/lib/graphql/resolvers/reaction.js +96 -14
  24. package/lib/graphql/resolvers/reaction.js.map +1 -1
  25. package/lib/graphql/schema/channel-member.graphql +110 -21
  26. package/lib/graphql/schema/channel-member.graphql.js +1 -1
  27. package/lib/graphql/schema/channel.graphql +331 -38
  28. package/lib/graphql/schema/channel.graphql.js +1 -1
  29. package/lib/graphql/schema/post-thread.graphql +166 -21
  30. package/lib/graphql/schema/post-thread.graphql.js +1 -1
  31. package/lib/graphql/schema/post.graphql +280 -40
  32. package/lib/graphql/schema/post.graphql.js +1 -1
  33. package/lib/graphql/schema/reaction.graphql +71 -13
  34. package/lib/graphql/schema/reaction.graphql.js +1 -1
  35. package/lib/graphql/schema/services.graphql +2 -0
  36. package/lib/graphql/schema/users.graphql +76 -13
  37. package/lib/graphql/schema/users.graphql.js +1 -1
  38. package/lib/index.js +1 -1
  39. package/lib/index.js.map +1 -1
  40. package/lib/interfaces/index.d.ts +0 -1
  41. package/lib/interfaces/services.d.ts +1 -2
  42. package/lib/migrations/dbMigrations/AddPostsConfigurationsMigration.d.ts +17 -0
  43. package/lib/migrations/dbMigrations/AddPostsConfigurationsMigration.js +44 -0
  44. package/lib/migrations/dbMigrations/AddPostsConfigurationsMigration.js.map +1 -0
  45. package/lib/migrations/dbMigrations/index.d.ts +1 -0
  46. package/lib/migrations/index.d.ts +1 -0
  47. package/lib/migrations/mail-template-migration.js +1 -1
  48. package/lib/migrations/message-notification-template-migration.d.ts +1 -1
  49. package/lib/migrations/message-notification-template-migration.js +1 -1
  50. package/lib/plugins/channel-moleculer-service.d.ts +21 -1
  51. package/lib/plugins/channel-moleculer-service.js +417 -115
  52. package/lib/plugins/channel-moleculer-service.js.map +1 -1
  53. package/lib/plugins/extended-token-account-moleculer-service.d.ts +25 -1
  54. package/lib/plugins/extended-token-account-moleculer-service.js +348 -22
  55. package/lib/plugins/extended-token-account-moleculer-service.js.map +1 -1
  56. package/lib/plugins/messenger-notification-moleculer-service.d.ts +27 -3
  57. package/lib/plugins/messenger-notification-moleculer-service.js +404 -58
  58. package/lib/plugins/messenger-notification-moleculer-service.js.map +1 -1
  59. package/lib/plugins/post-moleculer-service.d.ts +85 -21
  60. package/lib/plugins/post-moleculer-service.js +986 -256
  61. package/lib/plugins/post-moleculer-service.js.map +1 -1
  62. package/lib/plugins/post-thread-moleculer-service.d.ts +33 -1
  63. package/lib/plugins/post-thread-moleculer-service.js +326 -8
  64. package/lib/plugins/post-thread-moleculer-service.js.map +1 -1
  65. package/lib/plugins/reaction-moleculer-service.js +1 -1
  66. package/lib/plugins/reaction-moleculer-service.js.map +1 -1
  67. package/lib/preferences/settings/post-settings.d.ts +2 -0
  68. package/lib/preferences/settings/post-settings.js +47 -9
  69. package/lib/preferences/settings/post-settings.js.map +1 -1
  70. package/lib/services/channel-service.d.ts +178 -33
  71. package/lib/services/channel-service.js +735 -276
  72. package/lib/services/channel-service.js.map +1 -1
  73. package/lib/services/extended-token-account-service.d.ts +130 -14
  74. package/lib/services/extended-token-account-service.js +462 -52
  75. package/lib/services/extended-token-account-service.js.map +1 -1
  76. package/lib/services/messenger-notification-service.d.ts +106 -13
  77. package/lib/services/messenger-notification-service.js +824 -442
  78. package/lib/services/messenger-notification-service.js.map +1 -1
  79. package/lib/services/post-service.d.ts +172 -16
  80. package/lib/services/post-service.js +580 -113
  81. package/lib/services/post-service.js.map +1 -1
  82. package/lib/services/post-thread-service.d.ts +114 -5
  83. package/lib/services/post-thread-service.js +400 -13
  84. package/lib/services/post-thread-service.js.map +1 -1
  85. package/lib/services/proxy-services/channel-microservice.d.ts +5 -3
  86. package/lib/services/proxy-services/channel-microservice.js +19 -10
  87. package/lib/services/proxy-services/channel-microservice.js.map +1 -1
  88. package/lib/services/proxy-services/messenger-notification-microservice.d.ts +128 -8
  89. package/lib/services/proxy-services/messenger-notification-microservice.js +324 -29
  90. package/lib/services/proxy-services/messenger-notification-microservice.js.map +1 -1
  91. package/lib/services/proxy-services/post-microservice.d.ts +186 -12
  92. package/lib/services/proxy-services/post-microservice.js +543 -54
  93. package/lib/services/proxy-services/post-microservice.js.map +1 -1
  94. package/lib/services/proxy-services/post-thread-microservice.d.ts +134 -3
  95. package/lib/services/proxy-services/post-thread-microservice.js +388 -6
  96. package/lib/services/proxy-services/post-thread-microservice.js.map +1 -1
  97. package/lib/services/proxy-services/reaction-microservice.d.ts +161 -3
  98. package/lib/services/proxy-services/reaction-microservice.js +474 -2
  99. package/lib/services/proxy-services/reaction-microservice.js.map +1 -1
  100. package/lib/services/reaction-service.d.ts +124 -4
  101. package/lib/services/reaction-service.js +415 -3
  102. package/lib/services/reaction-service.js.map +1 -1
  103. package/lib/store/models/account-token-store.d.ts +1 -1
  104. package/lib/store/models/account-token-store.js.map +1 -1
  105. package/lib/store/models/channel.d.ts +2 -3
  106. package/lib/store/models/channel.js +180 -71
  107. package/lib/store/models/channel.js.map +1 -1
  108. package/lib/store/models/post-thread.d.ts +3 -3
  109. package/lib/store/models/post-thread.js +96 -14
  110. package/lib/store/models/post-thread.js.map +1 -1
  111. package/lib/store/models/post.d.ts +2 -3
  112. package/lib/store/models/post.js +143 -23
  113. package/lib/store/models/post.js.map +1 -1
  114. package/lib/store/models/reaction.d.ts +2 -3
  115. package/lib/store/models/reaction.js +67 -8
  116. package/lib/store/models/reaction.js.map +1 -1
  117. package/lib/store/repositories/__tests__/__fixtures__/team-repository.d.ts +3 -3
  118. package/lib/store/repositories/channel-repository.d.ts +6 -6
  119. package/lib/store/repositories/channel-repository.js +5 -2
  120. package/lib/store/repositories/channel-repository.js.map +1 -1
  121. package/lib/store/repositories/post-repository.d.ts +6 -6
  122. package/lib/store/repositories/post-repository.js +5 -2
  123. package/lib/store/repositories/post-repository.js.map +1 -1
  124. package/lib/store/repositories/post-thread-repository.d.ts +6 -6
  125. package/lib/store/repositories/post-thread-repository.js +5 -2
  126. package/lib/store/repositories/post-thread-repository.js.map +1 -1
  127. package/lib/store/repositories/reaction-repository.d.ts +6 -6
  128. package/lib/store/repositories/reaction-repository.js +5 -2
  129. package/lib/store/repositories/reaction-repository.js.map +1 -1
  130. package/lib/templates/constants/SERVER_TYPES.ts.template +0 -3
  131. package/lib/templates/repositories/ChannelRepository.ts.template +3 -3
  132. package/lib/templates/repositories/PostRepository.ts.template +3 -3
  133. package/lib/templates/repositories/PostThreadRepository.ts.template +3 -3
  134. package/lib/templates/repositories/ReactionRepository.ts.template +3 -4
  135. package/lib/templates/services/ChannelService.ts.template +278 -39
  136. package/lib/templates/services/ExtendedTokenAccountService.ts.template +107 -3
  137. package/lib/templates/services/MessengerNotificationService.ts.template +94 -19
  138. package/lib/templates/services/PostService.ts.template +184 -20
  139. package/lib/templates/services/PostThreadService.ts.template +151 -6
  140. package/lib/templates/services/ReactionService.ts.template +129 -3
  141. package/package.json +4 -4
  142. package/lib/interfaces/context.d.ts +0 -14
  143. package/lib/store/models/common-options.js +0 -20
  144. package/lib/store/models/common-options.js.map +0 -1
@@ -1,28 +1,49 @@
1
- import {SortEnum}from'common';import {isEmpty}from'lodash-es';const postThreadResolvers = options => ({
1
+ import {SortEnum}from'common/server';import {isEmpty}from'lodash-es';const postThreadResolvers = options => ({
2
2
  PostThread: {
3
3
  channel(src, args, {
4
4
  channelService
5
5
  }) {
6
- return src?.channel?.toString() ? channelService.get(src.channel.toString()) : null;
6
+ options.logger.trace('(PostThread.channel) src.channel [%s]', src?.channel);
7
+ // Check if channel exists and is not null/undefined before calling service
8
+ if (!src?.channel || src.channel === null || src.channel === undefined) {
9
+ return null;
10
+ }
11
+ return channelService.get(src.channel.toString());
7
12
  },
8
13
  post(src, args, {
9
14
  postService
10
15
  }) {
11
- return src?.post?.toString() ? postService.get(src.post.toString()) : null;
16
+ options.logger.trace('(PostThread.post) src.post [%s]', src?.post);
17
+ // Check if post exists and is not null/undefined before calling service
18
+ if (!src?.post || src.post === null || src.post === undefined) {
19
+ return null;
20
+ }
21
+ return postService.get(src.post.toString());
12
22
  },
13
23
  participants(src, args, {
14
24
  accountService
15
25
  }) {
16
- // return src?.participants
17
- // ?.filter((participant: any) => participant)
18
- // ?.map((u: any) => accountService.findAccountById(u.toString()) as any);
19
- return src?.participants?.filter(participant => participant)?.map(u => {
20
- const participant = {
21
- ...u
22
- };
23
- participant.user = accountService.findAccountById(u?.user.toString());
24
- return participant;
25
- });
26
+ options.logger.trace('(PostThread.participants) participants count [%d]', src?.participants?.length || 0);
27
+ try {
28
+ if (!src?.participants || !Array.isArray(src.participants)) {
29
+ return [];
30
+ }
31
+ return src.participants.filter(participant => participant && participant.user).map(u => {
32
+ try {
33
+ const participant = {
34
+ ...u
35
+ };
36
+ participant.user = accountService.findAccountById(u?.user.toString());
37
+ return participant;
38
+ } catch (error) {
39
+ options.logger.warn('Error loading participant user: %o', error);
40
+ return null;
41
+ }
42
+ }).filter(Boolean); // Remove null entries
43
+ } catch (error) {
44
+ options.logger.error('Error loading participants: %o', error);
45
+ return [];
46
+ }
26
47
  },
27
48
  replies(src, {
28
49
  skip,
@@ -31,20 +52,30 @@ import {SortEnum}from'common';import {isEmpty}from'lodash-es';const postThreadRe
31
52
  }, {
32
53
  postService
33
54
  }) {
34
- const sortValue = sort ? sort?.value == 'ASC' ? SortEnum.Asc : sort?.value == 'DESC' ? SortEnum.Desc : SortEnum.Desc : SortEnum.Desc;
35
- const replies = src?.channel?.toString() || src?.post?.toString() ? postService?.getAll({
36
- criteria: {
37
- parentId: src?.post?.toString(),
38
- channel: src?.channel?.toString()
39
- },
40
- limit: limit || 20,
41
- skip,
42
- sort: {
43
- key: sort?.key || 'createdAt',
44
- value: sortValue
45
- }
46
- }) ?? [] : [];
47
- return replies;
55
+ options.logger.trace('(PostThread.replies) src.post [%s], limit [%d], skip [%d]', src?.post, limit || 20, skip || 0);
56
+ try {
57
+ if (!src?.channel?.toString() && !src?.post?.toString()) {
58
+ options.logger.debug('No channel or post ID available for replies');
59
+ return [];
60
+ }
61
+ const sortValue = sort ? sort?.value == 'ASC' ? SortEnum.Asc : sort?.value == 'DESC' ? SortEnum.Desc : SortEnum.Desc : SortEnum.Desc;
62
+ const replies = postService?.getAll({
63
+ criteria: {
64
+ parentId: src?.post?.toString(),
65
+ channel: src?.channel?.toString()
66
+ },
67
+ limit: limit || 20,
68
+ skip: skip || 0,
69
+ sort: {
70
+ key: sort?.key || 'createdAt',
71
+ value: sortValue
72
+ }
73
+ }) ?? [];
74
+ return replies;
75
+ } catch (error) {
76
+ options.logger.error('Error loading replies: %o', error);
77
+ return [];
78
+ }
48
79
  }
49
80
  },
50
81
  Query: {
@@ -62,27 +93,92 @@ import {SortEnum}from'common';import {isEmpty}from'lodash-es';const postThreadRe
62
93
  postService,
63
94
  userContext
64
95
  }) {
65
- const {
66
- accountId,
67
- orgId
68
- } = userContext;
69
- const parentId = postParentId;
70
- const {
71
- data,
72
- totalCount
73
- } = await postThreadService.getAllWithCount({
74
- criteria: {
75
- channel: channelId,
76
- // participants: {
77
- // // $eq: accountId,
78
- // $eq: participantsIds && participantsIds?.length > 0 ? participantsIds : accountId,
79
- // },
96
+ options.logger.trace('(Query.threadMessages) channelId [%s], postParentId [%s], role [%s]', channelId, postParentId, role);
97
+ try {
98
+ if (!userContext?.accountId) {
99
+ options.logger.warn('Missing accountId in user context');
100
+ return {
101
+ totalCount: 0,
102
+ data: []
103
+ };
104
+ }
105
+ const {
106
+ accountId,
107
+ orgId
108
+ } = userContext;
109
+ const parentId = postParentId;
110
+ const {
111
+ data,
112
+ totalCount
113
+ } = await postThreadService.getAllWithCount({
114
+ criteria: {
115
+ channel: channelId,
116
+ post: parentId == 0 ? null : parentId,
117
+ participants: {
118
+ $elemMatch: {
119
+ ...(isServiceThreads ? {} : {
120
+ user: accountId
121
+ }),
122
+ ...(role ? {
123
+ roles: role
124
+ } : {}),
125
+ ...(orgId ? {
126
+ orgName: orgId
127
+ } : {})
128
+ }
129
+ }
130
+ },
131
+ selectedFields,
132
+ limit: limit || 20,
133
+ skip: skip || 0,
134
+ sort: {
135
+ key: 'updatedAt',
136
+ value: SortEnum.Desc
137
+ }
138
+ });
139
+ options.logger.debug('Retrieved %d thread messages (total: %d)', data?.length || 0, totalCount);
140
+ return {
141
+ totalCount,
142
+ data
143
+ };
144
+ } catch (error) {
145
+ options.logger.error('Error getting thread messages: %o', error);
146
+ return {
147
+ totalCount: 0,
148
+ data: []
149
+ };
150
+ }
151
+ },
152
+ async getPostThread(src, {
153
+ postThreadId,
154
+ channelId,
155
+ postParentId,
156
+ role,
157
+ isServiceThreads,
158
+ selectedFields,
159
+ participantsIds
160
+ }, {
161
+ postThreadService,
162
+ postService,
163
+ userContext
164
+ }) {
165
+ options.logger.trace('(Query.getPostThread) postThreadId [%s], channelId [%s], postParentId [%s]', postThreadId, channelId, postParentId);
166
+ try {
167
+ if (!userContext?.accountId) {
168
+ options.logger.warn('Missing accountId in user context');
169
+ return null;
170
+ }
171
+ const {
172
+ accountId,
173
+ orgId
174
+ } = userContext;
175
+ const _id = postThreadId || null;
176
+ const parentId = postParentId;
177
+ const remaining = {
178
+ channel: channelId?.toString(),
80
179
  post: parentId == 0 ? null : parentId,
81
- // orgName: orgId,
82
180
  participants: {
83
181
  $elemMatch: {
84
- // user: {$eq: participantsIds && participantsIds?.length > 0 ? participantsIds : accountId},
85
- // user: accountId,
86
182
  ...(isServiceThreads ? {} : {
87
183
  user: accountId
88
184
  }),
@@ -94,67 +190,74 @@ import {SortEnum}from'common';import {isEmpty}from'lodash-es';const postThreadRe
94
190
  } : {})
95
191
  }
96
192
  }
97
- },
98
- selectedFields,
99
- limit,
100
- skip,
101
- sort: {
102
- key: 'updatedAt',
103
- value: SortEnum.Desc
104
- }
105
- });
106
- // const threadMessages: any = parentId && parentId == 0 ? [] : data;
107
- return {
108
- totalCount,
109
- data
110
- };
193
+ };
194
+ const postThreadArguments = {
195
+ ...(_id ? {
196
+ _id
197
+ } : {}),
198
+ ...remaining
199
+ };
200
+ if (isEmpty(postThreadArguments)) {
201
+ options.logger.debug('No valid arguments provided for getPostThread');
202
+ return null;
203
+ }
204
+ const postThread = await postThreadService.getPostThread(postThreadArguments);
205
+ if (postThread instanceof Error) {
206
+ options.logger.error('Error from postThreadService.getPostThread: %o', postThread);
207
+ return null;
208
+ }
209
+ return postThread;
210
+ } catch (error) {
211
+ options.logger.error('Error getting post thread: %o', error);
212
+ return null;
213
+ }
111
214
  },
112
- async getPostThread(src, {
113
- postThreadId,
215
+ async threadMessagesCount(src, {
114
216
  channelId,
115
217
  postParentId,
116
218
  role,
117
- isServiceThreads,
118
219
  selectedFields,
119
- participantsIds
220
+ participantsIds,
221
+ isServiceThreads
120
222
  }, {
121
223
  postThreadService,
122
224
  postService,
123
225
  userContext
124
226
  }) {
125
- const {
126
- accountId,
127
- orgId
128
- } = userContext;
129
- const _id = postThreadId || null;
130
- const parentId = postParentId;
131
- const remaining = {
132
- channel: channelId?.toString(),
133
- post: parentId == 0 ? null : parentId,
134
- participants: {
135
- $elemMatch: {
136
- // user: {$eq: participantsIds && participantsIds?.length > 0 ? participantsIds : accountId},
137
- // user: accountId,
138
- ...(isServiceThreads ? {} : {
139
- user: accountId
140
- }),
141
- ...(role ? {
142
- roles: role
143
- } : {}),
144
- ...(orgId ? {
145
- orgName: orgId
146
- } : {})
147
- }
227
+ options.logger.trace('(Query.threadMessagesCount) channelId [%s], postParentId [%s]', channelId, postParentId);
228
+ try {
229
+ if (!userContext?.accountId) {
230
+ options.logger.warn('Missing accountId in user context');
231
+ return 0;
232
+ }
233
+ const {
234
+ accountId,
235
+ orgId
236
+ } = userContext;
237
+ const parentId = postParentId;
238
+ const threadsData = {};
239
+ const participantConditions = {};
240
+ if (channelId) {
241
+ threadsData.channel = channelId;
242
+ threadsData.post = parentId == 0 ? null : parentId;
243
+ }
244
+ if (parentId) {
245
+ threadsData.post = parentId == 0 ? null : parentId;
148
246
  }
149
- };
150
- const postThreadArguments = {
151
- ...(_id ? {
152
- _id
153
- } : {}),
154
- ...remaining
155
- };
156
- const postThread = !isEmpty(postThreadArguments) ? await postThreadService.getPostThread(postThreadArguments) : null;
157
- return postThread;
247
+ if (orgId !== undefined && orgId !== null) {
248
+ participantConditions.orgName = orgId;
249
+ }
250
+ if (Object.keys(participantConditions).length > 0) {
251
+ threadsData.participants = participantConditions;
252
+ }
253
+ const query = threadsData;
254
+ const count = await postThreadService.getPostThreadCount(query);
255
+ options.logger.debug('Thread messages count: %d', count);
256
+ return typeof count === 'number' ? count : count?.valueOf() || 0;
257
+ } catch (error) {
258
+ options.logger.error('Error getting thread messages count: %o', error);
259
+ return 0;
260
+ }
158
261
  }
159
262
  },
160
263
  Mutation: {
@@ -162,60 +265,119 @@ import {SortEnum}from'common';import {isEmpty}from'lodash-es';const postThreadRe
162
265
  postService,
163
266
  userContext
164
267
  }) {
165
- const {
166
- accountId,
167
- orgId
168
- } = userContext;
169
- const {
170
- post,
171
- postThread
172
- } = await postService.createPostWithPostThread({
173
- ...args,
174
- accountId
175
- });
176
- return {
177
- lastMessage: post,
178
- data: postThread
179
- };
268
+ options.logger.trace('(Mutation.sendThreadMessage) args [%j]', args);
269
+ try {
270
+ if (!userContext?.accountId) {
271
+ options.logger.warn('Missing accountId in user context');
272
+ throw new Error('User not authenticated');
273
+ }
274
+ const {
275
+ accountId,
276
+ orgId
277
+ } = userContext;
278
+ const result = await postService.createPostWithPostThread({
279
+ ...args,
280
+ accountId
281
+ });
282
+ if (result instanceof Error) {
283
+ options.logger.error('Error from postService.createPostWithPostThread: %o', result);
284
+ throw result;
285
+ }
286
+ const {
287
+ post,
288
+ postThread
289
+ } = result;
290
+ return {
291
+ lastMessage: post,
292
+ data: postThread
293
+ };
294
+ } catch (error) {
295
+ options.logger.error('Error sending thread message: %o', error);
296
+ throw error;
297
+ }
180
298
  },
181
299
  async createPostThread(src, args, {
182
300
  postService,
183
301
  userContext
184
302
  }) {
185
- const {
186
- accountId,
187
- orgId
188
- } = userContext;
189
- const {
190
- post,
191
- postThread
192
- } = await postService.createPostWithPostThread({
193
- ...args,
194
- orgId,
195
- accountId
196
- });
197
- return {
198
- lastMessage: post,
199
- data: postThread
200
- };
303
+ options.logger.trace('(Mutation.createPostThread) args [%j]', args);
304
+ try {
305
+ if (!userContext?.accountId) {
306
+ options.logger.warn('Missing accountId in user context');
307
+ throw new Error('User not authenticated');
308
+ }
309
+ const {
310
+ accountId,
311
+ orgId
312
+ } = userContext;
313
+ const result = await postService.createPostWithPostThread({
314
+ ...args,
315
+ orgId,
316
+ accountId
317
+ });
318
+ if (result instanceof Error) {
319
+ options.logger.error('Error from postService.createPostWithPostThread: %o', result);
320
+ throw result;
321
+ }
322
+ const {
323
+ post,
324
+ postThread
325
+ } = result;
326
+ return {
327
+ lastMessage: post,
328
+ data: postThread
329
+ };
330
+ } catch (error) {
331
+ options.logger.error('Error creating post thread: %o', error);
332
+ throw error;
333
+ }
201
334
  }
202
335
  },
203
336
  Subscription: {
204
337
  threadChatMessageAdded: {
205
- // More on pubsub below
206
338
  subscribe: (_, {
207
339
  channelId,
208
340
  postParentId
209
- }) => options.pubsub.asyncIterator([`THREAD_POST_CREATED_${channelId}_${postParentId}`]),
210
- resolve: payload => payload
341
+ }) => {
342
+ options.logger.trace('(Subscription.threadChatMessageAdded) channelId [%s], postParentId [%s]', channelId, postParentId);
343
+ try {
344
+ if (!options.pubsub) {
345
+ options.logger.error('PubSub not available for subscription');
346
+ throw new Error('PubSub not configured');
347
+ }
348
+ return options.pubsub.asyncIterator([`THREAD_POST_CREATED_${channelId}_${postParentId}`]);
349
+ } catch (error) {
350
+ options.logger.error('Error setting up threadChatMessageAdded subscription: %o', error);
351
+ throw error;
352
+ }
353
+ },
354
+ resolve: payload => {
355
+ options.logger.trace('(Subscription.threadChatMessageAdded.resolve) payload type [%s]', typeof payload);
356
+ return payload;
357
+ }
211
358
  },
212
359
  threadCreatedUpdated: {
213
- // More on pubsub below
214
360
  subscribe: (_, {
215
361
  channelId,
216
362
  postParentId
217
- }) => options.pubsub.asyncIterator([`THREAD_CREATED_UPDATED${channelId ? `_${channelId}` : ''}${postParentId ? `_${postParentId}` : ''}`]),
218
- resolve: payload => payload
363
+ }) => {
364
+ options.logger.trace('(Subscription.threadCreatedUpdated) channelId [%s], postParentId [%s]', channelId, postParentId);
365
+ try {
366
+ if (!options.pubsub) {
367
+ options.logger.error('PubSub not available for subscription');
368
+ throw new Error('PubSub not configured');
369
+ }
370
+ const subscriptionKey = `THREAD_CREATED_UPDATED${channelId ? `_${channelId}` : ''}${postParentId ? `_${postParentId}` : ''}`;
371
+ return options.pubsub.asyncIterator([subscriptionKey]);
372
+ } catch (error) {
373
+ options.logger.error('Error setting up threadCreatedUpdated subscription: %o', error);
374
+ throw error;
375
+ }
376
+ },
377
+ resolve: payload => {
378
+ options.logger.trace('(Subscription.threadCreatedUpdated.resolve) payload type [%s]', typeof payload);
379
+ return payload;
380
+ }
219
381
  }
220
382
  }
221
383
  });export{postThreadResolvers};//# sourceMappingURL=post-thread.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"post-thread.js","sources":["../../../src/graphql/resolvers/post-thread.ts"],"sourcesContent":[null],"names":[],"mappings":"oEAKa,mBAAmB,GAAG,OAA0B,KAA0B;AACnF,EAAA,UAAA,EAAU;AACN,IAAA,OAAA,CAAA,GAAO,EAAI,IAAE;;;AAGb,MAAA,OAAK,GAAG,EAAE,OAAM,YAAa,GAAE,cAAA,CAAA,GAAA,CAAA,GAAA,CAAA,OAAA,CAAA,QAAA,EAAA,CAAA,GAAA,IAAA;;QAE/B,CAAC,GAAA,EAAA,IAAA,EAAA;AACD,MAAA;;aAEsD,GAAA,EAAA,IAAA,EAAA,QAAA,EAAA,GAAA,WAAA,CAAA,GAAA,CAAA,GAAA,CAAA,IAAA,CAAA,QAAA,EAAA,CAAA,GAAA,IAAA;;gBAE3C,CAAA,GAAA,EAAG,IAAc,EAAA;;AAEpB,KAAA,EAAA;AACI;AACA;AACA;AACJ,MAAA,OAAC,GAAE,EAAA,YAAA,EAAA,MAAA,CAAA,WAAA,IAAA,WAAA,CAAA,EAAA,GAAA,CAAA,CAAA,IAAA;QACX,MAAC,WAAA,GAAA;AACD,UAAA,GAAA;;AAEQ,QAAA,WAAE,CAAA,IAAM,GAAA,cAAc,CAAA,eAAA,CAAA,CAAA,EAAA,IAAA,CAAA,QAAA,EAAA,CAAA;0BACR;AACV,OAAA,CAAA;;;AAGJ,MAAA,IAAA;AACJ,MAAA,KAAA;AAEQ,MAAA;AACM,KAAA,EAAA;AACI,MAAA;AACA,KAAA,EAAA;AACH,MAAA,MAAA,SAAA,GAAA,IAAA,GAAA,IAAA,EAAA,KAAA,IAAA,KAAA,GAAA,QAAA,CAAA,GAAA,GAAA,IAAA,EAAA,KAAA,IAAA,MAAA,GAAA,QAAA,CAAA,IAAA,GAAA,QAAA,CAAA,IAAA,GAAA,QAAA,CAAA,IAAA;sBACI,GAAA,EAAE,OAAK,EAAI,QAAE,EAAA,IAAA,GAAA,EAAA,IAAA,EAAA,QAAA,EAAA,GAAA,WAAA,EAAA,MAAA,CAAA;;AAElB,UAAA,QAAA,EAAA,GAAA,EAAM,IAAA,EAAA,QAAA,EAAA;AACF,UAAA,OAAA,EAAA,GAAA,EAAA,OAAK,EAAI;AACT,SAAA;AACH,QAAA,KAAA,EAAA,KAAA,IAAA,EAAA;AACJ,QAAA,IAAA;;AAEX,UAAA,GAAA,EAAA,IAAO,SAAQ,WAAA;UAClB,KAAA,EAAA;AACJ;AACD,OAAA,CAAA,IAAO,EAAA,GAAA,EAAA;AACH,MAAA,OAAK,OAAC;AAKF;;;AAII,IAAA,MAAA,cAAQ,CAAE,GAAA,EAAA;AACN,MAAA,SAAA;;;oBAGA;qBACK;;;AAGL,MAAA;AACI,KAAA,EAAA;;;AAGI,MAAA;AACA,KAAA,EAAA;AACA,MAAA,MAAA;AACH,QAAA,SAAA;AACJ,QAAA;AACJ,OAAA,GAAA,WAAA;oBACa,GAAA,YAAA;;;AAGd,QAAA;AACI,OAAA,GAAA,MAAA,iBAAgB,CAAA,eAAA,CAAA;;AAEnB,UAAA,OAAA,EAAA,SAAA;AACJ;;;;gBAMG,QAAI,IAAA,CAAA,GAAA,IAAA,GAAA,QAAA;;UAEX,YAAA,EAAA;YACI,UAAc,EAAA;AAKf;AACA;cACM,IAAA,gBAAgB,GAAA,EAAA,GAAa;AACnC,gBAAA;AACI,eAAA,CAAA;kBACI,IAAE,GAAQ;AACd,gBAAA,KAAA,EAAA;AACI,eAAA,GAAA,EAAA,CAAA;0BACiG;yBAC1E;AACnB,eAAA,GAAA,EAAA;AACA;AACA;AACH,SAAA;AACJ,QAAA,cAAA;aACJ;AACD,QAAA,IAAA;AACI,QAAA,IAAA,EAAA;AACA,UAAA,GAAA,EAAA,WAAY;eACd,EAAA,QAAA,CAAA;AACF;AACI,OAAA,CAAA;;AAEJ,MAAA,OAAA;QACJ,UAAC;AACJ,QAAA;AACD,OAAA;;AAEQ,IAAA,MAAA,aAAiB,CAAA,GAAA,EAAA;kBACX;AACF,MAAA,SAAA;kBACS;AACZ,MAAA,IAAA;;oBAEJ;;AAEG,KAAA,EAAA;uBACY;AACR,MAAA,WAAA;;;AAGH,MAAA,MAAA;iBACM;QACX;AACH,OAAA,GAAA,WAAA;AACD,MAAA,MAAA,GAAA,GAAc,YAAA,IAAA,IAAA;AACV,MAAA,MAAA,QAAA,GAAA,YAAwB;YACpB,SAAuB,GAAA;eACd,EAAA,SAAM,EAAA,UAAW;AAE1B,QAAA,IAAA,EAAA,QAAU,IAAA,CAAA,GAAc,IAAG,GAAO,QAAA;AACrC,QAAA,YAAA,EAAA;AACD,UAAA,UAAA,EAAA;;AAEI;gBAEQ,gBAAyB,GAAA,EAAA,GAAA;cAG3B,IAAA,EAAA;AACN,aAAA,CAAA;AACH,YAAA,IAAA,IAAA,GAAA;AACJ,cAAA,KAAA,EAAA;AACJ,aAAE,GAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"post-thread.js","sources":["../../../src/graphql/resolvers/post-thread.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -1,4 +1,3 @@
1
- import { IResolvers } from 'common';
1
+ import { IResolvers } from 'common/server';
2
2
  import { IResolverOptions } from '@common-stack/server-core';
3
- import { IContext } from '../../interfaces';
4
- export declare const postResolvers: (options: IResolverOptions) => IResolvers<IContext>;
3
+ export declare const postResolvers: (options: IResolverOptions) => IResolvers;