@messenger-box/platform-server 10.0.3-alpha.7 → 10.0.3-alpha.72
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/lib/containers/containers.js +4 -1
- package/lib/containers/containers.js.map +1 -1
- package/lib/containers/context-services-from-container.d.ts +1 -1
- package/lib/containers/context-services-from-container.js +1 -1
- package/lib/containers/context-services-from-container.js.map +1 -1
- package/lib/graphql/resolvers/channel-member.d.ts +3 -2
- package/lib/graphql/resolvers/channel-member.js +30 -5
- package/lib/graphql/resolvers/channel-member.js.map +1 -1
- package/lib/graphql/resolvers/channel.d.ts +3 -2
- package/lib/graphql/resolvers/channel.js +279 -53
- package/lib/graphql/resolvers/channel.js.map +1 -1
- package/lib/graphql/resolvers/extended-token-account.d.ts +3 -2
- package/lib/graphql/resolvers/extended-token-account.js +90 -23
- package/lib/graphql/resolvers/extended-token-account.js.map +1 -1
- package/lib/graphql/resolvers/index.d.ts +1 -1
- package/lib/graphql/resolvers/post-thread.d.ts +1 -1
- package/lib/graphql/resolvers/post-thread.js +294 -132
- package/lib/graphql/resolvers/post-thread.js.map +1 -1
- package/lib/graphql/resolvers/post.d.ts +2 -3
- package/lib/graphql/resolvers/post.js +696 -234
- package/lib/graphql/resolvers/post.js.map +1 -1
- package/lib/graphql/resolvers/reaction.d.ts +3 -2
- package/lib/graphql/resolvers/reaction.js +96 -14
- package/lib/graphql/resolvers/reaction.js.map +1 -1
- package/lib/graphql/schema/channel-member.graphql +110 -21
- package/lib/graphql/schema/channel-member.graphql.js +1 -1
- package/lib/graphql/schema/channel.graphql +337 -38
- package/lib/graphql/schema/channel.graphql.js +1 -1
- package/lib/graphql/schema/post-thread.graphql +167 -21
- package/lib/graphql/schema/post-thread.graphql.js +1 -1
- package/lib/graphql/schema/post.graphql +284 -40
- package/lib/graphql/schema/post.graphql.js +1 -1
- package/lib/graphql/schema/reaction.graphql +71 -13
- package/lib/graphql/schema/reaction.graphql.js +1 -1
- package/lib/graphql/schema/services.graphql +2 -0
- package/lib/graphql/schema/users.graphql +76 -13
- package/lib/graphql/schema/users.graphql.js +1 -1
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/lib/interfaces/index.d.ts +0 -1
- package/lib/interfaces/services.d.ts +1 -1
- package/lib/migrations/dbMigrations/AddPostsConfigurationsMigration.d.ts +17 -0
- package/lib/migrations/dbMigrations/AddPostsConfigurationsMigration.js +44 -0
- package/lib/migrations/dbMigrations/AddPostsConfigurationsMigration.js.map +1 -0
- package/lib/migrations/dbMigrations/index.d.ts +1 -0
- package/lib/migrations/index.d.ts +1 -0
- package/lib/migrations/mail-template-migration.js +1 -1
- package/lib/migrations/message-notification-template-migration.d.ts +1 -1
- package/lib/migrations/message-notification-template-migration.js +1 -1
- package/lib/plugins/channel-moleculer-service.d.ts +21 -1
- package/lib/plugins/channel-moleculer-service.js +417 -115
- package/lib/plugins/channel-moleculer-service.js.map +1 -1
- package/lib/plugins/extended-token-account-moleculer-service.d.ts +25 -1
- package/lib/plugins/extended-token-account-moleculer-service.js +348 -22
- package/lib/plugins/extended-token-account-moleculer-service.js.map +1 -1
- package/lib/plugins/messenger-notification-moleculer-service.d.ts +27 -3
- package/lib/plugins/messenger-notification-moleculer-service.js +404 -58
- package/lib/plugins/messenger-notification-moleculer-service.js.map +1 -1
- package/lib/plugins/post-moleculer-service.d.ts +85 -21
- package/lib/plugins/post-moleculer-service.js +986 -256
- package/lib/plugins/post-moleculer-service.js.map +1 -1
- package/lib/plugins/post-thread-moleculer-service.d.ts +33 -1
- package/lib/plugins/post-thread-moleculer-service.js +326 -8
- package/lib/plugins/post-thread-moleculer-service.js.map +1 -1
- package/lib/plugins/reaction-moleculer-service.js +1 -1
- package/lib/plugins/reaction-moleculer-service.js.map +1 -1
- package/lib/preferences/settings/post-settings.d.ts +2 -0
- package/lib/preferences/settings/post-settings.js +47 -9
- package/lib/preferences/settings/post-settings.js.map +1 -1
- package/lib/services/channel-service.d.ts +179 -33
- package/lib/services/channel-service.js +821 -274
- package/lib/services/channel-service.js.map +1 -1
- package/lib/services/extended-token-account-service.d.ts +130 -14
- package/lib/services/extended-token-account-service.js +462 -52
- package/lib/services/extended-token-account-service.js.map +1 -1
- package/lib/services/index.d.ts +1 -0
- package/lib/services/messenger-notification-service.d.ts +106 -13
- package/lib/services/messenger-notification-service.js +824 -442
- package/lib/services/messenger-notification-service.js.map +1 -1
- package/lib/services/post-service.d.ts +182 -16
- package/lib/services/post-service.js +731 -115
- package/lib/services/post-service.js.map +1 -1
- package/lib/services/post-thread-service.d.ts +114 -5
- package/lib/services/post-thread-service.js +400 -13
- package/lib/services/post-thread-service.js.map +1 -1
- package/lib/services/proxy-services/channel-microservice.d.ts +5 -3
- package/lib/services/proxy-services/channel-microservice.js +19 -10
- package/lib/services/proxy-services/channel-microservice.js.map +1 -1
- package/lib/services/proxy-services/messenger-notification-microservice.d.ts +128 -8
- package/lib/services/proxy-services/messenger-notification-microservice.js +324 -29
- package/lib/services/proxy-services/messenger-notification-microservice.js.map +1 -1
- package/lib/services/proxy-services/post-microservice.d.ts +186 -12
- package/lib/services/proxy-services/post-microservice.js +543 -54
- package/lib/services/proxy-services/post-microservice.js.map +1 -1
- package/lib/services/proxy-services/post-thread-microservice.d.ts +134 -3
- package/lib/services/proxy-services/post-thread-microservice.js +388 -6
- package/lib/services/proxy-services/post-thread-microservice.js.map +1 -1
- package/lib/services/proxy-services/reaction-microservice.d.ts +161 -3
- package/lib/services/proxy-services/reaction-microservice.js +474 -2
- package/lib/services/proxy-services/reaction-microservice.js.map +1 -1
- package/lib/services/reaction-service.d.ts +124 -4
- package/lib/services/reaction-service.js +415 -3
- package/lib/services/reaction-service.js.map +1 -1
- package/lib/services/redis-cache-manager.d.ts +18 -0
- package/lib/services/redis-cache-manager.js +83 -0
- package/lib/services/redis-cache-manager.js.map +1 -0
- package/lib/store/models/account-token-store.d.ts +1 -1
- package/lib/store/models/account-token-store.js.map +1 -1
- package/lib/store/models/channel.d.ts +2 -3
- package/lib/store/models/channel.js +181 -72
- package/lib/store/models/channel.js.map +1 -1
- package/lib/store/models/post-thread.d.ts +3 -3
- package/lib/store/models/post-thread.js +96 -14
- package/lib/store/models/post-thread.js.map +1 -1
- package/lib/store/models/post.d.ts +2 -3
- package/lib/store/models/post.js +143 -23
- package/lib/store/models/post.js.map +1 -1
- package/lib/store/models/reaction.d.ts +2 -3
- package/lib/store/models/reaction.js +67 -8
- package/lib/store/models/reaction.js.map +1 -1
- package/lib/store/repositories/__tests__/__fixtures__/team-repository.d.ts +3 -3
- package/lib/store/repositories/channel-repository.d.ts +6 -6
- package/lib/store/repositories/channel-repository.js +5 -2
- package/lib/store/repositories/channel-repository.js.map +1 -1
- package/lib/store/repositories/post-repository.d.ts +6 -6
- package/lib/store/repositories/post-repository.js +5 -2
- package/lib/store/repositories/post-repository.js.map +1 -1
- package/lib/store/repositories/post-thread-repository.d.ts +6 -6
- package/lib/store/repositories/post-thread-repository.js +5 -2
- package/lib/store/repositories/post-thread-repository.js.map +1 -1
- package/lib/store/repositories/reaction-repository.d.ts +6 -6
- package/lib/store/repositories/reaction-repository.js +5 -2
- package/lib/store/repositories/reaction-repository.js.map +1 -1
- package/lib/templates/constants/SERVER_TYPES.ts.template +0 -3
- package/lib/templates/repositories/ChannelRepository.ts.template +3 -3
- package/lib/templates/repositories/PostRepository.ts.template +3 -3
- package/lib/templates/repositories/PostThreadRepository.ts.template +3 -3
- package/lib/templates/repositories/ReactionRepository.ts.template +3 -4
- package/lib/templates/services/ChannelService.ts.template +280 -39
- package/lib/templates/services/ExtendedTokenAccountService.ts.template +104 -9
- package/lib/templates/services/MessengerNotificationService.ts.template +94 -19
- package/lib/templates/services/PostService.ts.template +184 -20
- package/lib/templates/services/PostThreadService.ts.template +151 -6
- package/lib/templates/services/ReactionService.ts.template +129 -3
- package/lib/templates/services/RedisCacheManager.ts.template +22 -0
- package/package.json +6 -5
- package/lib/interfaces/context.d.ts +0 -14
- package/lib/store/models/common-options.js +0 -20
- package/lib/store/models/common-options.js.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {ContainerModule}from'inversify';import {TaggedType}from'@common-stack/core';import {ChannelService}from'../services/channel-service.js';import {PostService}from'../services/post-service.js';import {PostThreadService}from'../services/post-thread-service.js';import {ReactionService}from'../services/reaction-service.js';import {MessengerNotificationService}from'../services/messenger-notification-service.js';import {ExtendedTokenAccountService}from'../services/extended-token-account-service.js';import {SERVER_TYPES}from'common';import {ChannelRepository}from'../store/repositories/channel-repository.js';import {PostRepository}from'../store/repositories/post-repository.js';import {PostThreadRepository}from'../store/repositories/post-thread-repository.js';import {ReactionRepository}from'../store/repositories/reaction-repository.js';import {MessageNotificationTemplateMigration}from'../migrations/message-notification-template-migration.js';import'../migrations/mail-template-migration.js';import {ChannelProxyService}from'../services/proxy-services/channel-microservice.js';import {PostThreadMicroservice}from'../services/proxy-services/post-thread-microservice.js';import {PostProxyService}from'../services/proxy-services/post-microservice.js';import {ReactionMicroservice}from'../services/proxy-services/reaction-microservice.js';import {MessengerNotificationMicroservice}from'../services/proxy-services/messenger-notification-microservice.js';/**
|
|
1
|
+
import {ContainerModule}from'inversify';import {TaggedType}from'@common-stack/core';import {ChannelService}from'../services/channel-service.js';import {PostService}from'../services/post-service.js';import {PostThreadService}from'../services/post-thread-service.js';import {ReactionService}from'../services/reaction-service.js';import {MessengerNotificationService}from'../services/messenger-notification-service.js';import {ExtendedTokenAccountService}from'../services/extended-token-account-service.js';import {RedisCacheManager}from'../services/redis-cache-manager.js';import {SERVER_TYPES}from'common/server';import {ChannelRepository}from'../store/repositories/channel-repository.js';import {PostRepository}from'../store/repositories/post-repository.js';import {PostThreadRepository}from'../store/repositories/post-thread-repository.js';import {ReactionRepository}from'../store/repositories/reaction-repository.js';import {MessageNotificationTemplateMigration}from'../migrations/message-notification-template-migration.js';import'../migrations/mail-template-migration.js';import {AddPostsConfigurationsMigration}from'../migrations/dbMigrations/AddPostsConfigurationsMigration.js';import {ChannelProxyService}from'../services/proxy-services/channel-microservice.js';import {PostThreadMicroservice}from'../services/proxy-services/post-thread-microservice.js';import {PostProxyService}from'../services/proxy-services/post-microservice.js';import {ReactionMicroservice}from'../services/proxy-services/reaction-microservice.js';import {MessengerNotificationMicroservice}from'../services/proxy-services/messenger-notification-microservice.js';/**
|
|
2
2
|
* Local services and exposed microservices to serve remote connections.
|
|
3
3
|
* Operates within in the Gateway.
|
|
4
4
|
*
|
|
@@ -6,6 +6,8 @@ import {ContainerModule}from'inversify';import {TaggedType}from'@common-stack/co
|
|
|
6
6
|
*/
|
|
7
7
|
const proxyServiceContainerModule = settings => new ContainerModule(bind => {
|
|
8
8
|
bind('MongodbMigration').to(MessageNotificationTemplateMigration).whenTargetNamed(MessageNotificationTemplateMigration.name);
|
|
9
|
+
// add Db migrations
|
|
10
|
+
bind('MongodbMigration').to(AddPostsConfigurationsMigration).whenTargetNamed(AddPostsConfigurationsMigration.name);
|
|
9
11
|
bind(SERVER_TYPES.ExtendedTokenAccountService).to(ExtendedTokenAccountService).inSingletonScope().whenTargetIsDefault();
|
|
10
12
|
bind(SERVER_TYPES.ChannelService).to(ChannelProxyService).inSingletonScope().whenTargetNamed(TaggedType.MICROSERVICE);
|
|
11
13
|
bind(SERVER_TYPES.PostService).to(PostProxyService).inSingletonScope().whenTargetNamed(TaggedType.MICROSERVICE);
|
|
@@ -30,4 +32,5 @@ const serviceContainerModule = settings => new ContainerModule(bind => {
|
|
|
30
32
|
bind(SERVER_TYPES.PostThreadService).to(PostThreadService).inSingletonScope().whenTargetIsDefault();
|
|
31
33
|
bind(SERVER_TYPES.ReactionService).to(ReactionService).inSingletonScope().whenTargetIsDefault();
|
|
32
34
|
bind(SERVER_TYPES.MessengerNotificationService).to(MessengerNotificationService).inSingletonScope().whenTargetIsDefault();
|
|
35
|
+
bind(SERVER_TYPES.IRedisCacheManager).to(RedisCacheManager).inSingletonScope();
|
|
33
36
|
});export{proxyServiceContainerModule,serviceContainerModule};//# sourceMappingURL=containers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"containers.js","sources":["../../src/containers/containers.ts"],"sourcesContent":[null],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"containers.js","sources":["../../src/containers/containers.ts"],"sourcesContent":[null],"names":[],"mappings":"ymDAkCA;;;;;AAKG;AACI,MAAM,2BAA2B,GAA6C,QAAS,IAAI,mBAC3E,CAAA,IAAE;MACb,CAAA,oBAAmB,EAAC,CAAA,oCAAA,CAAA,CAAA,eAAA,CAAA,oCAAA,CAAA,IAAA,CAAA;;AAEnB,EAAA,IAAA,CAAA,kBAAgB,CAAA,CAAA,EAAA,CAAA,+BAAoC,CAAC,CAAA,eAAM,CAAA,+BAAA,CAAA,IAAA,CAAA;MAC5C,CAAA,YAAA,CAAA,2BAAA,CAAA,CAAA,EAAA,CAAA,2BAAA,CAAA,CAAA,gBAAA,EAAA,CAAA,mBAAA,EAAA;MAChB,CAAA,2BAAoB,CAAA,CAAA,EAAA,CAAA,mBAAA,CAAA,CAAA,gBAAA,EAAA,CAAA,eAAA,CAAA,UAAA,CAAA,YAAA,CAAA;oDACgB,CAAA,CAAA,gBAAA,EAAA,CAAA,eAAA,CAAA,UAAA,CAAA,YAAA,CAAA;AACnC,EAAA,IAAA,CAAA,YAAA,CAAA,iBAAgB,CAAA,CAAA,EAAA,CAAA,sBAAsC,CAAA,CAAA,gBAAA,EAAA,CAAA,eAAA,CAAA,UAAA,CAAA,YAAA,CAAA;AAC3D,EAAA,IAAA,CAAA,YAAK,CAAA,eAAa,CAAA,CAAA,EAAA,CAAA,oBAA4B,CAAA,CAAA,gBAAA,EAAA,CAAA,eAAA,CAAA,UAAA,CAAA,YAAA,CAAA;gDACV,CAAA,CAAA,EAAA,CAAA,iCAAA,CAAA,CAAA,gBAAA,EAAA,CAAA,eAAA,CAAA,UAAA,CAAA,YAAA,CAAA;AAC/B,CAAA;AACA;AAEL;;AAEK;AACA;AAEL;AACQ,4BAAwB,GAAA,QAAA,IAAA,IAAA,eAAA,CAAA,IAAA,IAAA;AAC3B,EAAA,IAAA,CAAA,YAAA,CAAA,2BAAkB,CAAA,CAAA,EAAA,CAAA,2BAAA,CAAA,CAAA,gBAAA,EAAA,CAAA,mBAAA,EAAA;AAClB,EAAA,IAAA,CAAA,YAAA,CAAA,iBAA2B,CAAA,CAAA,EAAA,CAAA,iBAAc,CAAA,CAAA,gBAAA,EAAA,CAAA,mBAAA,EAAA;AAC9C,EAAA,IAAA,CAAA,YAAyB,CAAA,cAAa,CAAA,CAAA,EAAA,CAAiB,cAAC,CAAA,CAAA,gBAAA,EAAA,CAAA,mBAAA,EAAA;wCAClB,CAAA,CAAA,EAAA,CAAA,oBAAA,CAAA,CAAA,gBAAA,EAAA,CAAA,mBAAA,EAAA;AACjC,EAAA,IAAA,CAAA,YAAA,CAAA,kBAAkB,CAAA,CAAA,EAAA,CAAA,kBAAA,CAAA,CAAA,gBAAA,EAAA,CAAA,mBAAA,EAAA;AAClB,EAAA,IAAA,CAAA,YAAA,CAAA,cAAgB,CAAU,CAAC,EAAA,CAAA,cAAc,CAAA,CAAA,gBAAA,EAAA,CAAA,mBAAA,EAAA;AAE9C,EAAA,IAAA,CAAA,YAAuB,CAAA,WAAa,CAAA,CAAA,EAAA,CAAA,WAAgB,CAAA,CAAA,gBAAA,EAAA,CAAA,mBAAA,EAAA;qCAChB,CAAA,CAAA,EAAA,CAAA,iBAAA,CAAA,CAAA,gBAAA,EAAA,CAAA,mBAAA,EAAA;AAC/B,EAAA,IAAA,CAAA,YAAA,CAAA,eAAkB,CAAA,CAAA,EAAA,CAAA,eAAA,CAAA,CAAA,gBAAA,EAAA,CAAA,mBAAA,EAAA;AAClB,EAAA,IAAA,CAAA,YAAA,CAAA,4BAAuC,CAAC,CAAC,EAAA,CAAA,4BAAA,CAAA,CAAA,gBAAA,EAAA,CAAA,mBAAA,EAAA;AAE9C,EAAA,IAAA,CAAA,YAAoC,CAAA,kBAAa,CAAA,CAAA,EAAA,CAAA,iBAA6B,CAAA,CAAA,gBAAA,EAAA;"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {TaggedType}from'@common-stack/core';import {SERVER_TYPES}from'common';// import { ExtendedTokenAccountService } from '../services';
|
|
1
|
+
import {TaggedType}from'@common-stack/core';import {SERVER_TYPES}from'common/server';// import { ExtendedTokenAccountService } from '../services';
|
|
2
2
|
const contextServicesFromContainer = container => {
|
|
3
3
|
const services = {
|
|
4
4
|
extendedTokenAccountService: container.get(SERVER_TYPES.ExtendedTokenAccountService),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-services-from-container.js","sources":["../../src/containers/context-services-from-container.ts"],"sourcesContent":[null],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"context-services-from-container.js","sources":["../../src/containers/context-services-from-container.ts"],"sourcesContent":[null],"names":[],"mappings":"qFAaA;AAEa,MAAA,4BAA4B,GAAG,SAAC,IAA2D;AACpG,EAAA,MAAA,WAAiB;+BACc,EAAA,aAAW,CAAC,YACvB,CAAA;AAEhB,IAAA,MAAA,EAAA,SAAiB,CAAA,GAAA,CAAC;AAClB,IAAA,cAAA,EAAA,SAAgB,CAAA,QAAU,CAAA,YAA0B,CAAA,cAAa,EAAA,UAAgB,CAAA,YAAW,CAAA;AAC5F,IAAA,WAAA,EAAA,SAAa,CAAA,QAAU,CAAA,YAAuB,CAAA,WAAa,EAAA,UAAa,CAAA,YAAW,CAAA;AACnF,IAAA,iBAAA,EAAA,SAAmB,CAAA,QAAU,CAAA,YACzB,CAAA,iBAAa,EAAA,UACb,CAAA,YAAW,CAAA;AAEf,IAAA,eAAA,EAAA,SAAiB,CAAA,QAAU,CAAA,YAA2B,CAAA,eAAa,EAAA,UAAiB,CAAA,YAAW,CAAA;AAC/F,IAAA,4BAAA,EAAA,SAA8B,CAAA,QAAU,CAAA,YACpC,CAAA,4BAAa,EAAA,UACb,CAAA,YAAW;;AAGnB,EAAA,OAAA;AACJ"}
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import { IResolverOptions } from '@common-stack/server-core';
|
|
2
|
+
import { IResolvers } from 'common/server';
|
|
3
|
+
export declare const channelMemberResolvers: (options: IResolverOptions) => IResolvers;
|
|
@@ -1,16 +1,41 @@
|
|
|
1
|
-
const channelMemberResolvers =
|
|
1
|
+
const channelMemberResolvers = options => ({
|
|
2
2
|
Channel: {
|
|
3
3
|
creator(src, args, {
|
|
4
|
-
accountService
|
|
4
|
+
accountService,
|
|
5
|
+
accountUserDataLoader
|
|
5
6
|
}) {
|
|
6
|
-
|
|
7
|
+
options.logger.trace('(Channel.creator) src.creator [%s]', src.creator);
|
|
8
|
+
// Check if creator exists and is not null/undefined before calling service
|
|
9
|
+
if (!src.creator || src.creator === null || src.creator === undefined) {
|
|
10
|
+
return null;
|
|
11
|
+
}
|
|
12
|
+
return accountUserDataLoader.load(src.creator.toString());
|
|
7
13
|
}
|
|
8
14
|
},
|
|
9
15
|
ChannelMember: {
|
|
16
|
+
id(src) {
|
|
17
|
+
// Handle both virtual 'id' and MongoDB '_id' fields
|
|
18
|
+
const memberId = src.id || src._id;
|
|
19
|
+
if (!memberId) {
|
|
20
|
+
// If neither exists, generate an id based on user and other properties
|
|
21
|
+
// This ensures we always have a unique identifier
|
|
22
|
+
if (src.user) {
|
|
23
|
+
return `${src.user.toString()}-${src.createdAt || Date.now()}`;
|
|
24
|
+
}
|
|
25
|
+
throw new Error('ChannelMember id is required but not provided');
|
|
26
|
+
}
|
|
27
|
+
return memberId.toString();
|
|
28
|
+
},
|
|
10
29
|
user(src, args, {
|
|
11
|
-
accountService
|
|
30
|
+
accountService,
|
|
31
|
+
accountUserDataLoader
|
|
12
32
|
}) {
|
|
13
|
-
|
|
33
|
+
options.logger.trace('(ChannelMember.user) src.user [%s]', src.user);
|
|
34
|
+
// Check if user exists and is not null/undefined before calling service
|
|
35
|
+
if (!src.user || src.user === null || src.user === undefined) {
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
return accountUserDataLoader.load(src.user.toString());
|
|
14
39
|
}
|
|
15
40
|
},
|
|
16
41
|
Query: {},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"channel-member.js","sources":["../../../src/graphql/resolvers/channel-member.ts"],"sourcesContent":[null],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"channel-member.js","sources":["../../../src/graphql/resolvers/channel-member.ts"],"sourcesContent":[null],"names":[],"mappings":"MAIa,sBAAsB,GAAG,OAA0B,KAAgB;AAC5E,EAAA,OAAA,EAAO;WACI,CAAA,GAAA,MAAM,EAAA;oBACD;;AAGR,KAAA,EAAA;AACI,MAAA,OAAA,CAAA,MAAA,CAAA,MAAW,oCAAC,EAAA,GAAA,CAAA,OAAA,CAAA;;cAGT,CAAA,OAAA,IAAA,GAAA,CAAA,OAAA,KAAsB,IAAK,IAAI,GAAA,CAAA,OAAQ,KAAQ,SAAwC,EAAA;QAClG,OAAC,IAAA;AACJ;AACD,MAAA,OAAA,qBAAe,CAAA,IAAA,CAAA,GAAA,CAAA,OAAA,CAAA,QAAA,EAAA,CAAA;AACX;;eAEU,EAAA;YACN;;oBAEsD,GAAA,GAAA,CAAA,EAAA,IAAA,GAAA,CAAA,GAAA;AAClD,MAAA,IAAA,CAAA,QAAA,EAAO;AACH;;AAEJ,QAAA,IAAA,GAAA,CAAA,IAAA,EAAM;iBACT,CAAA,EAAA,GAAA,CAAA,IAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA,GAAA,CAAA,SAAA,IAAA,IAAA,CAAA,GAAA,EAAA,CAAA,CAAA;AACD;QACJ,MAAC,IAAA,KAAA,CAAA,+CAAA,CAAA;;aAEU,QAAO,CAAA,QAAM,EAAA;;AAGpB,IAAA,IAAA,CAAA,GAAA,EAAA,IAAQ,EAAA;AACJ,MAAA,cAAA;;;aAIP,CAAA,MAAA,CAAA,KAAA,CAAA,oCAAA,EAAA,GAAA,CAAA,IAAA,CAAA;AACJ;AACD,MAAA,KAAO,GAAE,CAAA,IAAA,IAAA,GAAA,CAAA,IAAA,KAAA,IAAA,IAAA,GAAA,CAAA,IAAA,KAAA,SAAA,EAAA;AACT,QAAA,OAAY,IAAA;AACf;;;;;;"}
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import { IResolverOptions } from '@common-stack/server-core';
|
|
2
|
+
import { IResolvers } from 'common/server';
|
|
3
|
+
export declare const channelResolvers: (options: IResolverOptions) => IResolvers;
|
|
@@ -1,9 +1,24 @@
|
|
|
1
|
-
import {RoomType}from'common';const channelResolvers =
|
|
1
|
+
import {RoomType}from'common/server';const channelResolvers = options => ({
|
|
2
2
|
Channel: {
|
|
3
3
|
creator(src, args, {
|
|
4
4
|
accountService
|
|
5
5
|
}) {
|
|
6
|
+
options.logger.trace('(Channel.creator) src.creator [%s]', src.creator);
|
|
7
|
+
// Check if creator exists and is not null/undefined before calling service
|
|
8
|
+
if (!src.creator || src.creator === null || src.creator === undefined) {
|
|
9
|
+
return null;
|
|
10
|
+
}
|
|
6
11
|
return accountService.findAccountById(src.creator.toString());
|
|
12
|
+
},
|
|
13
|
+
lastMessage(src, args, {
|
|
14
|
+
postService
|
|
15
|
+
}) {
|
|
16
|
+
options.logger.trace('(Channel.lastMessage) src.id [%s]', src.id);
|
|
17
|
+
// Check if src.id exists before calling service
|
|
18
|
+
if (!src.id || src.id === null || src.id === undefined) {
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
return postService.getLastMessage(src.id);
|
|
7
22
|
}
|
|
8
23
|
},
|
|
9
24
|
Query: {
|
|
@@ -13,27 +28,47 @@ import {RoomType}from'common';const channelResolvers = () => ({
|
|
|
13
28
|
channelService,
|
|
14
29
|
userContext
|
|
15
30
|
}) {
|
|
31
|
+
options.logger.trace('(Query.channelByName) name [%s]', name);
|
|
32
|
+
if (!name) {
|
|
33
|
+
options.logger.warn('Missing channel name');
|
|
34
|
+
return null;
|
|
35
|
+
}
|
|
16
36
|
return channelService.getByName(name);
|
|
17
|
-
// return channelService.getByName(userContext.teamId, name) as Promise<IChannel>;
|
|
37
|
+
// return channelService.getByName(userContext.teamId, name) as unknown as Promise<IChannel>;
|
|
18
38
|
},
|
|
19
39
|
channels(src, _, {
|
|
20
40
|
channelService,
|
|
21
41
|
userContext
|
|
22
42
|
}) {
|
|
43
|
+
options.logger.trace('(Query.channels) userContext [%j]', {
|
|
44
|
+
accountId: userContext.accountId,
|
|
45
|
+
teamId: userContext.teamId,
|
|
46
|
+
orgId: userContext.orgId
|
|
47
|
+
});
|
|
23
48
|
const {
|
|
24
49
|
accountId,
|
|
25
50
|
teamId,
|
|
26
51
|
orgId
|
|
27
52
|
} = userContext;
|
|
53
|
+
if (!accountId || !teamId) {
|
|
54
|
+
options.logger.warn('Missing required user context');
|
|
55
|
+
return [];
|
|
56
|
+
}
|
|
28
57
|
return channelService.getChannels(teamId, accountId, false, new Date().getTime(), orgId);
|
|
29
58
|
},
|
|
30
|
-
channelsByUser(src, args, {
|
|
59
|
+
async channelsByUser(src, args, {
|
|
31
60
|
channelService,
|
|
32
61
|
userContext
|
|
33
62
|
}) {
|
|
63
|
+
options.logger.trace('(Query.channelsByUser) args [%j]', args);
|
|
34
64
|
const {
|
|
35
65
|
accountId
|
|
36
66
|
} = userContext;
|
|
67
|
+
console.log('accountId__channelsByUser', accountId);
|
|
68
|
+
if (!accountId) {
|
|
69
|
+
options.logger.warn('Missing accountId in user context');
|
|
70
|
+
return [];
|
|
71
|
+
}
|
|
37
72
|
const {
|
|
38
73
|
criteria,
|
|
39
74
|
role,
|
|
@@ -41,25 +76,113 @@ import {RoomType}from'common';const channelResolvers = () => ({
|
|
|
41
76
|
} = args || {
|
|
42
77
|
criteria: {}
|
|
43
78
|
};
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
79
|
+
console.log('criteria', criteria);
|
|
80
|
+
console.log('role', role);
|
|
81
|
+
try {
|
|
82
|
+
// Check if Service type is included in the query
|
|
83
|
+
const includesService = criteria?.type === RoomType.Service || Array.isArray(criteria?.type) && criteria.type.includes(RoomType.Service) || criteria?.type?.$in && criteria.type.$in.includes(RoomType.Service);
|
|
84
|
+
if (includesService) {
|
|
85
|
+
// If Service type is included, fetch SERVICE and non-SERVICE channels separately
|
|
86
|
+
const {
|
|
87
|
+
type,
|
|
88
|
+
...restCriteria
|
|
89
|
+
} = criteria;
|
|
90
|
+
// Build non-service types from original query
|
|
91
|
+
let nonServiceTypes;
|
|
92
|
+
if (Array.isArray(type)) {
|
|
93
|
+
nonServiceTypes = type.filter(t => t !== RoomType.Service);
|
|
94
|
+
} else if (type?.$in) {
|
|
95
|
+
nonServiceTypes = type.$in.filter(t => t !== RoomType.Service);
|
|
96
|
+
} else {
|
|
97
|
+
// Single type that's not Service (shouldn't happen in this branch but for safety)
|
|
98
|
+
nonServiceTypes = type !== RoomType.Service ? [type] : [];
|
|
99
|
+
}
|
|
100
|
+
// Fetch SERVICE channels separately (no orgName restriction)
|
|
101
|
+
const serviceChannels = await channelService.getAll({
|
|
102
|
+
...rest,
|
|
103
|
+
criteria: {
|
|
104
|
+
type: RoomType.Service
|
|
54
105
|
}
|
|
106
|
+
});
|
|
107
|
+
// Fetch non-SERVICE channels separately (with orgName and member restrictions)
|
|
108
|
+
let otherChannels = [];
|
|
109
|
+
if (nonServiceTypes.length > 0) {
|
|
110
|
+
otherChannels = await channelService.getAll({
|
|
111
|
+
...rest,
|
|
112
|
+
criteria: {
|
|
113
|
+
...restCriteria,
|
|
114
|
+
type: nonServiceTypes.length === 1 ? nonServiceTypes[0] : {
|
|
115
|
+
$in: nonServiceTypes
|
|
116
|
+
},
|
|
117
|
+
members: criteria?.members ?? {
|
|
118
|
+
$elemMatch: {
|
|
119
|
+
user: accountId,
|
|
120
|
+
...(role ? {
|
|
121
|
+
roles: role
|
|
122
|
+
} : {})
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
// Sort each group separately
|
|
129
|
+
const sortedServiceChannels = serviceChannels.sort((a, b) => (a.title || '').localeCompare(b.title || ''));
|
|
130
|
+
const sortedOtherChannels = otherChannels.sort((a, b) => {
|
|
131
|
+
const aTime = a.updatedAt ? new Date(a.updatedAt).getTime() : 0;
|
|
132
|
+
const bTime = b.updatedAt ? new Date(b.updatedAt).getTime() : 0;
|
|
133
|
+
return bTime - aTime;
|
|
134
|
+
});
|
|
135
|
+
options.logger.trace('SERVICE channels count: %d', sortedServiceChannels.length);
|
|
136
|
+
options.logger.trace('Other channels count: %d', sortedOtherChannels.length);
|
|
137
|
+
if (sortedServiceChannels.length > 0) {
|
|
138
|
+
options.logger.trace('First SERVICE channel: %s', sortedServiceChannels[0].title);
|
|
55
139
|
}
|
|
140
|
+
// GUARANTEE: SERVICE channels first, then others
|
|
141
|
+
const finalResult = [...sortedServiceChannels, ...sortedOtherChannels];
|
|
142
|
+
options.logger.trace('Final result order: %j', finalResult.map(ch => `${ch.type}: ${ch.title}`));
|
|
143
|
+
return finalResult;
|
|
144
|
+
} else {
|
|
145
|
+
// No Service type - apply member filter to all channels
|
|
146
|
+
const querycriteria = {
|
|
147
|
+
...criteria,
|
|
148
|
+
members: criteria?.members ?? {
|
|
149
|
+
$elemMatch: {
|
|
150
|
+
user: accountId,
|
|
151
|
+
...(role ? {
|
|
152
|
+
roles: role
|
|
153
|
+
} : {})
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
};
|
|
157
|
+
const results = await channelService.getAll({
|
|
158
|
+
...rest,
|
|
159
|
+
criteria: querycriteria
|
|
160
|
+
});
|
|
161
|
+
// Sort results to put SERVICE channels first
|
|
162
|
+
return results.sort((a, b) => {
|
|
163
|
+
// SERVICE channels always come first
|
|
164
|
+
if (a.type === RoomType.Service && b.type !== RoomType.Service) return -1;
|
|
165
|
+
if (a.type !== RoomType.Service && b.type === RoomType.Service) return 1;
|
|
166
|
+
// If both are SERVICE channels, sort by title/name
|
|
167
|
+
if (a.type === RoomType.Service && b.type === RoomType.Service) {
|
|
168
|
+
return (a.title || '').localeCompare(b.title || '');
|
|
169
|
+
}
|
|
170
|
+
// For non-SERVICE channels, sort by updatedAt (most recent first)
|
|
171
|
+
const aTime = a.updatedAt ? new Date(a.updatedAt).getTime() : 0;
|
|
172
|
+
const bTime = b.updatedAt ? new Date(b.updatedAt).getTime() : 0;
|
|
173
|
+
return bTime - aTime;
|
|
174
|
+
});
|
|
56
175
|
}
|
|
57
|
-
})
|
|
176
|
+
} catch (error) {
|
|
177
|
+
options.logger.error('Error in channelsByUser: %o', error);
|
|
178
|
+
return [];
|
|
179
|
+
}
|
|
58
180
|
},
|
|
59
181
|
supportServiceChannels(src, args, {
|
|
60
182
|
channelService,
|
|
61
183
|
userContext
|
|
62
184
|
}) {
|
|
185
|
+
options.logger.trace('(Query.supportServiceChannels) args [%j]', args);
|
|
63
186
|
const {
|
|
64
187
|
accountId
|
|
65
188
|
} = userContext;
|
|
@@ -70,12 +193,17 @@ import {RoomType}from'common';const channelResolvers = () => ({
|
|
|
70
193
|
} = args || {
|
|
71
194
|
criteria: {}
|
|
72
195
|
};
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
196
|
+
try {
|
|
197
|
+
return channelService.getAll({
|
|
198
|
+
...rest,
|
|
199
|
+
criteria: {
|
|
200
|
+
...criteria
|
|
201
|
+
}
|
|
202
|
+
});
|
|
203
|
+
} catch (error) {
|
|
204
|
+
options.logger.error('Error in supportServiceChannels: %o', error);
|
|
205
|
+
return [];
|
|
206
|
+
}
|
|
79
207
|
},
|
|
80
208
|
directChannel(src, {
|
|
81
209
|
id
|
|
@@ -83,6 +211,15 @@ import {RoomType}from'common';const channelResolvers = () => ({
|
|
|
83
211
|
channelService,
|
|
84
212
|
userContext
|
|
85
213
|
}) {
|
|
214
|
+
options.logger.trace('(Query.directChannel) id [%s]', id);
|
|
215
|
+
if (!id) {
|
|
216
|
+
options.logger.warn('Missing channel id');
|
|
217
|
+
return null;
|
|
218
|
+
}
|
|
219
|
+
if (!userContext.accountId) {
|
|
220
|
+
options.logger.warn('Missing accountId in user context');
|
|
221
|
+
return null;
|
|
222
|
+
}
|
|
86
223
|
return channelService.get({
|
|
87
224
|
criteria: {
|
|
88
225
|
id,
|
|
@@ -97,6 +234,11 @@ import {RoomType}from'common';const channelResolvers = () => ({
|
|
|
97
234
|
channelService,
|
|
98
235
|
userContext
|
|
99
236
|
}) {
|
|
237
|
+
options.logger.trace('(Query.viewChannelDetail) id [%s]', id);
|
|
238
|
+
if (!id) {
|
|
239
|
+
options.logger.warn('Missing channel id');
|
|
240
|
+
return null;
|
|
241
|
+
}
|
|
100
242
|
return channelService.get(id);
|
|
101
243
|
}
|
|
102
244
|
},
|
|
@@ -110,27 +252,52 @@ import {RoomType}from'common';const channelResolvers = () => ({
|
|
|
110
252
|
channelService,
|
|
111
253
|
userContext
|
|
112
254
|
}) {
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
const formatedName = name[0].toUpperCase() + name.slice(1).toLowerCase();
|
|
119
|
-
const title = formatedName?.replace(/-/g, ' ') ?? '';
|
|
120
|
-
// const channelDetail = await channelService.getByName(userContext.teamId, title);
|
|
121
|
-
const channelDetail = await channelService.getByName(title);
|
|
122
|
-
if (channelDetail) return;
|
|
123
|
-
const channel = channelService.saveChannel({
|
|
124
|
-
type: type || RoomType.Channel,
|
|
125
|
-
orgName: orgId,
|
|
126
|
-
creator: accountId,
|
|
127
|
-
title: title,
|
|
128
|
-
displayName: name?.toLowerCase(),
|
|
129
|
-
topic: name?.toLowerCase(),
|
|
130
|
-
team: team || teamId,
|
|
131
|
-
description
|
|
255
|
+
options.logger.trace('(Mutation.createChannel) args [%j]', {
|
|
256
|
+
name,
|
|
257
|
+
description,
|
|
258
|
+
type,
|
|
259
|
+
team
|
|
132
260
|
});
|
|
133
|
-
|
|
261
|
+
try {
|
|
262
|
+
if (!name) {
|
|
263
|
+
options.logger.warn('Missing channel name');
|
|
264
|
+
throw new Error('Channel name is required');
|
|
265
|
+
}
|
|
266
|
+
if (!userContext.accountId) {
|
|
267
|
+
options.logger.warn('Missing accountId in user context');
|
|
268
|
+
throw new Error('User not authenticated');
|
|
269
|
+
}
|
|
270
|
+
const {
|
|
271
|
+
accountId,
|
|
272
|
+
teamId,
|
|
273
|
+
orgId
|
|
274
|
+
} = userContext;
|
|
275
|
+
const formatedName = name[0].toUpperCase() + name.slice(1).toLowerCase();
|
|
276
|
+
const title = formatedName?.replace(/-/g, ' ') ?? '';
|
|
277
|
+
// const channelDetail = await channelService.getByName(userContext.teamId, title);
|
|
278
|
+
const channelDetail = await channelService.getByName(title);
|
|
279
|
+
if (channelDetail) {
|
|
280
|
+
options.logger.warn('Channel already exists with name: %s', title);
|
|
281
|
+
return null;
|
|
282
|
+
}
|
|
283
|
+
const orgName = orgId || '';
|
|
284
|
+
const organization = orgId || '';
|
|
285
|
+
const channel = channelService.saveChannel({
|
|
286
|
+
type: type || RoomType.Channel,
|
|
287
|
+
orgName,
|
|
288
|
+
organization,
|
|
289
|
+
creator: accountId,
|
|
290
|
+
title: title,
|
|
291
|
+
displayName: name?.toLowerCase(),
|
|
292
|
+
topic: name?.toLowerCase(),
|
|
293
|
+
team: team || teamId,
|
|
294
|
+
description
|
|
295
|
+
});
|
|
296
|
+
return channel;
|
|
297
|
+
} catch (error) {
|
|
298
|
+
options.logger.error('Error creating channel: %o', error);
|
|
299
|
+
throw error;
|
|
300
|
+
}
|
|
134
301
|
},
|
|
135
302
|
addMemberToChannel(src, {
|
|
136
303
|
channelId,
|
|
@@ -139,6 +306,11 @@ import {RoomType}from'common';const channelResolvers = () => ({
|
|
|
139
306
|
channelService,
|
|
140
307
|
userContext
|
|
141
308
|
}) {
|
|
309
|
+
options.logger.trace('(Mutation.addMemberToChannel) channelId [%s], memberId [%s]', channelId, memberId);
|
|
310
|
+
if (!channelId || !memberId) {
|
|
311
|
+
options.logger.warn('Missing channelId or memberId');
|
|
312
|
+
throw new Error('Channel ID and Member ID are required');
|
|
313
|
+
}
|
|
142
314
|
return channelService.addMemberToChannel(channelId, memberId);
|
|
143
315
|
},
|
|
144
316
|
saveMembersToChannel(src, {
|
|
@@ -148,6 +320,11 @@ import {RoomType}from'common';const channelResolvers = () => ({
|
|
|
148
320
|
channelService,
|
|
149
321
|
userContext
|
|
150
322
|
}) {
|
|
323
|
+
options.logger.trace('(Mutation.saveMembersToChannel) channelId [%s], membersIds [%j]', channelId, membersIds);
|
|
324
|
+
if (!channelId || !membersIds) {
|
|
325
|
+
options.logger.warn('Missing channelId or membersIds');
|
|
326
|
+
throw new Error('Channel ID and Members IDs are required');
|
|
327
|
+
}
|
|
151
328
|
return channelService.saveMembersToChannel({
|
|
152
329
|
membersIds,
|
|
153
330
|
channelId
|
|
@@ -161,23 +338,43 @@ import {RoomType}from'common';const channelResolvers = () => ({
|
|
|
161
338
|
channelService,
|
|
162
339
|
userContext
|
|
163
340
|
}) {
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
341
|
+
options.logger.trace('(Mutation.createDirectChannel) receiver [%s], displayName [%s]', receiver, displayName);
|
|
342
|
+
try {
|
|
343
|
+
if (!receiver || !displayName) {
|
|
344
|
+
options.logger.warn('Missing receiver or displayName');
|
|
345
|
+
throw new Error('Receiver and display name are required');
|
|
346
|
+
}
|
|
347
|
+
if (!userContext.accountId || !userContext.orgId) {
|
|
348
|
+
options.logger.warn('Missing user context');
|
|
349
|
+
throw new Error('User context required');
|
|
350
|
+
}
|
|
351
|
+
const {
|
|
352
|
+
accountId,
|
|
353
|
+
orgId
|
|
354
|
+
} = userContext;
|
|
355
|
+
return channelService.createDirectChannel({
|
|
356
|
+
sender: accountId,
|
|
357
|
+
receiver: receiver,
|
|
358
|
+
displayName,
|
|
359
|
+
orgName: orgId,
|
|
360
|
+
organization: orgId,
|
|
361
|
+
channelOptions
|
|
362
|
+
});
|
|
363
|
+
} catch (error) {
|
|
364
|
+
options.logger.error('Error creating direct channel: %o', error);
|
|
365
|
+
throw error;
|
|
366
|
+
}
|
|
175
367
|
},
|
|
176
368
|
hideChannel(src, {
|
|
177
369
|
id
|
|
178
370
|
}, {
|
|
179
371
|
channelService
|
|
180
372
|
}) {
|
|
373
|
+
options.logger.trace('(Mutation.hideChannel) id [%s]', id);
|
|
374
|
+
if (!id) {
|
|
375
|
+
options.logger.warn('Missing channel id');
|
|
376
|
+
throw new Error('Channel ID is required');
|
|
377
|
+
}
|
|
181
378
|
return channelService.hideChannel(id);
|
|
182
379
|
},
|
|
183
380
|
leaveChannel(src, {
|
|
@@ -185,6 +382,11 @@ import {RoomType}from'common';const channelResolvers = () => ({
|
|
|
185
382
|
}, {
|
|
186
383
|
channelService
|
|
187
384
|
}) {
|
|
385
|
+
options.logger.trace('(Mutation.leaveChannel) id [%s]', id);
|
|
386
|
+
if (!id) {
|
|
387
|
+
options.logger.warn('Missing channel id');
|
|
388
|
+
throw new Error('Channel ID is required');
|
|
389
|
+
}
|
|
188
390
|
return channelService.leaveChannel(id);
|
|
189
391
|
},
|
|
190
392
|
deleteChannel(src, {
|
|
@@ -192,6 +394,11 @@ import {RoomType}from'common';const channelResolvers = () => ({
|
|
|
192
394
|
}, {
|
|
193
395
|
channelService
|
|
194
396
|
}) {
|
|
397
|
+
options.logger.trace('(Mutation.deleteChannel) id [%s]', id);
|
|
398
|
+
if (!id) {
|
|
399
|
+
options.logger.warn('Missing channel id');
|
|
400
|
+
throw new Error('Channel ID is required');
|
|
401
|
+
}
|
|
195
402
|
return channelService.deleteChannel(id);
|
|
196
403
|
},
|
|
197
404
|
viewChannel(src, {
|
|
@@ -200,6 +407,15 @@ import {RoomType}from'common';const channelResolvers = () => ({
|
|
|
200
407
|
userContext,
|
|
201
408
|
channelService
|
|
202
409
|
}) {
|
|
410
|
+
options.logger.trace('(Mutation.viewChannel) id [%s], accountId [%s]', id, userContext.accountId);
|
|
411
|
+
if (!id) {
|
|
412
|
+
options.logger.warn('Missing channel id');
|
|
413
|
+
throw new Error('Channel ID is required');
|
|
414
|
+
}
|
|
415
|
+
if (!userContext.accountId) {
|
|
416
|
+
options.logger.warn('Missing accountId in user context');
|
|
417
|
+
throw new Error('User context required');
|
|
418
|
+
}
|
|
203
419
|
return channelService.viewChannel(id, userContext.accountId);
|
|
204
420
|
},
|
|
205
421
|
async sendNotificationOfUnreadMessages(src, {
|
|
@@ -208,8 +424,18 @@ import {RoomType}from'common';const channelResolvers = () => ({
|
|
|
208
424
|
}, {
|
|
209
425
|
messengerNotificationService
|
|
210
426
|
}) {
|
|
211
|
-
|
|
212
|
-
|
|
427
|
+
options.logger.trace('(Mutation.sendNotificationOfUnreadMessages) unit [%s], value [%s]', unit, value);
|
|
428
|
+
try {
|
|
429
|
+
if (!unit || value === undefined || value === null) {
|
|
430
|
+
options.logger.warn('Missing unit or value');
|
|
431
|
+
throw new Error('Unit and value are required');
|
|
432
|
+
}
|
|
433
|
+
await messengerNotificationService.sendNotificationOfUnreadMessages(unit, value);
|
|
434
|
+
return true;
|
|
435
|
+
} catch (error) {
|
|
436
|
+
options.logger.error('Error sending notification: %o', error);
|
|
437
|
+
return false;
|
|
438
|
+
}
|
|
213
439
|
}
|
|
214
440
|
}
|
|
215
441
|
});export{channelResolvers};//# sourceMappingURL=channel.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"channel.js","sources":["../../../src/graphql/resolvers/channel.ts"],"sourcesContent":[null],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"channel.js","sources":["../../../src/graphql/resolvers/channel.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import { IResolverOptions } from '@common-stack/server-core';
|
|
2
|
+
import { IResolvers } from 'common/server';
|
|
3
|
+
export declare const resolver: (options: IResolverOptions) => IResolvers;
|