ref: applications/channels

This commit is contained in:
montaghanmy
2023-04-10 13:10:07 +01:00
parent b26d6b33c1
commit d037cdc6fd
5 changed files with 14 additions and 73 deletions
@@ -18,7 +18,6 @@ import SearchRepository from "../../../core/platform/services/search/repository"
import assert from "assert";
import gr from "../../global-resolver";
import { InternalToHooksProcessor } from "./internal-event-to-hooks";
export class ApplicationServiceImpl implements TwakeServiceProvider, Initializable {
version: "1";
@@ -37,8 +36,6 @@ export class ApplicationServiceImpl implements TwakeServiceProvider, Initializab
logger.error("Error while initializing applications service");
}
gr.platformServices.messageQueue.processor.addHandler(new InternalToHooksProcessor());
return this;
}
@@ -1,64 +0,0 @@
import { logger } from "../../../core/platform/framework";
import { HookType } from "../../applications-api/types";
import { MessageQueueHandler } from "../../../core/platform/services/message-queue/api";
import { MessageHook } from "../../messages/types";
import gr from "../../global-resolver";
import { ExecutionContext } from "../../../core/platform/framework/api/crud-service";
export class InternalToHooksProcessor implements MessageQueueHandler<MessageHook, void> {
readonly topics = {
in: "application:hook:message",
};
readonly options = {
unique: true,
ack: true,
queue: "application:hook:message:consumer1",
};
readonly name = "Application::InternalToHooksProcessor";
validate(_: HookType): boolean {
return true;
}
async process(message: HookType, context?: ExecutionContext): Promise<void> {
logger.debug(`${this.name} - Receive hook of type ${message.type}`);
const application = await gr.services.applications.marketplaceApps.get(
{
id: message.application_id,
},
context,
);
//TODO Check application access rights (hooks)
const _access = application.access;
// Check application still exists in the company
if (
!(await gr.services.applications.companyApps.get({
company_id: message.company_id,
application_id: message.application_id,
id: undefined,
}))
) {
logger.error(
`${this.name} - Application ${message.application_id} not found in company ${message.company_id}`,
);
return;
}
await gr.services.applications.hooks.notifyApp(
message.application_id,
null,
null,
"hook",
null,
{ message },
null,
null,
context,
);
}
}
@@ -26,7 +26,6 @@ import {
ChannelMemberType,
ChannelVisibility,
WorkspaceExecutionContext,
CompanyExecutionContext,
} from "../../types";
import { Channel, ResourceEventsPayload, User } from "../../../../utils/types";
import { cloneDeep, isNil, omitBy } from "lodash";
@@ -53,7 +52,7 @@ import { WorkspacePrimaryKey } from "../../../workspaces/entities/workspace";
import gr from "../../../global-resolver";
import uuidTime from "uuid-time";
import { ChannelObject } from "../channel/types";
import { CompanyExecutionContext } from "../../../applications/web/types";
const USER_CHANNEL_KEYS = [
"id",
"company_id",
@@ -52,7 +52,3 @@ export type ChannelActivityNotification = {
sender_name: string;
body: string;
};
export interface CompanyExecutionContext extends ExecutionContext {
company: { id: string };
}
@@ -25,6 +25,8 @@ import { UserExternalLinksServiceImpl } from "./user/services/external_links";
import { UserNotificationBadgeService } from "./notifications/services/bages";
import { NotificationPreferencesService } from "./notifications/services/preferences";
import { UserServiceImpl } from "./user/services/users/service";
import { CompanyApplicationServiceImpl } from "./applications/services/company-applications";
import { ApplicationServiceImpl } from "./applications/services/applications";
import { FileServiceImpl } from "./files/services";
import { ChannelServiceImpl } from "./channels/services/channel/service";
import { MemberServiceImpl } from "./channels/services/member/service";
@@ -36,6 +38,7 @@ import { NotificationEngine } from "./notifications/services/engine";
import { MobilePushService } from "./notifications/services/mobile-push";
import { ChannelMemberPreferencesServiceImpl } from "./notifications/services/channel-preferences";
import { ChannelThreadUsersServiceImpl } from "./notifications/services/channel-thread-users";
import { ApplicationHooksService } from "./applications/services/hooks";
import OnlineServiceImpl from "./online/service";
import { ChannelsMessageQueueListener } from "./channels/services/pubsub";
import { UserNotificationDigestService } from "./notifications/services/digest";
@@ -75,6 +78,11 @@ type TwakeServices = {
mobilePush: MobilePushService;
digest: UserNotificationDigestService;
};
applications: {
marketplaceApps: ApplicationServiceImpl;
companyApps: CompanyApplicationServiceImpl;
hooks: ApplicationHooksService;
};
files: FileServiceImpl;
channels: {
channels: ChannelServiceImpl;
@@ -145,6 +153,11 @@ class GlobalResolver {
mobilePush: await new MobilePushService().init(),
digest: await new UserNotificationDigestService().init(),
},
applications: {
marketplaceApps: await new ApplicationServiceImpl().init(),
companyApps: await new CompanyApplicationServiceImpl().init(),
hooks: await new ApplicationHooksService().init(),
},
files: await new FileServiceImpl().init(),
channels: {
channels: await new ChannelServiceImpl().init(),