Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Release 1.46.0 #808

Merged
merged 12 commits into from
Sep 25, 2024
  •  
  •  
  •  
17 changes: 6 additions & 11 deletions deno-runtime/lib/accessors/mod.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ import { AppObjectRegistry } from '../../AppObjectRegistry.ts';
import { ModifyCreator } from './modify/ModifyCreator.ts';
import { ModifyUpdater } from './modify/ModifyUpdater.ts';
import { ModifyExtender } from './modify/ModifyExtender.ts';
import { MessageBuilder } from "./builders/MessageBuilder.ts";
import { Notifier } from './notifier.ts';

const httpMethods = ['get', 'post', 'put', 'delete', 'head', 'options', 'patch'] as const;

Expand Down Expand Up @@ -77,6 +77,7 @@ export class AppAccessors {
) as T;

this.http = new Http(this.getReader(), this.getPersistence(), this.httpExtend, this.getSenderFn());
this.notifier = new Notifier(this.getSenderFn());
}

public getSenderFn() {
Expand Down Expand Up @@ -225,7 +226,7 @@ export class AppAccessors {
getPersistenceReader: () => this.proxify('getReader:getPersistenceReader'),
getRoomReader: () => this.proxify('getReader:getRoomReader'),
getUserReader: () => this.proxify('getReader:getUserReader'),
getNotifier: () => this.getNotifier('getReader:getNotifier'),
getNotifier: () => this.getNotifier(),
getLivechatReader: () => this.proxify('getReader:getLivechatReader'),
getUploadReader: () => this.proxify('getReader:getUploadReader'),
getCloudWorkspaceReader: () => this.proxify('getReader:getCloudWorkspaceReader'),
Expand All @@ -246,7 +247,7 @@ export class AppAccessors {
getUpdater: this.getUpdater.bind(this),
getExtender: this.getExtender.bind(this),
getDeleter: () => this.proxify('getModifier:getDeleter'),
getNotifier: () => this.getNotifier('getModifier:getNotifier'),
getNotifier: () => this.getNotifier(),
getUiController: () => this.proxify('getModifier:getUiController'),
getScheduler: () => this.proxify('getModifier:getScheduler'),
getOAuthAppsModifier: () => this.proxify('getModifier:getOAuthAppsModifier'),
Expand Down Expand Up @@ -293,14 +294,8 @@ export class AppAccessors {
return this.extender;
}

private getNotifier(namespace: string) {
if (!this.notifier) {
this.notifier = this.proxify(namespace, {
getMessageBuilder: () => new MessageBuilder(),
});
}

return this.notifier;
private getNotifier() {
return this.notifier;
}
}

Expand Down
21 changes: 21 additions & 0 deletions deno-runtime/lib/accessors/modify/ModifyCreator.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import type { IModifyCreator } from '@rocket.chat/apps-engine/definition/accessors/IModifyCreator.ts';
import type { IUploadCreator } from '@rocket.chat/apps-engine/definition/accessors/IUploadCreator.ts';
import type { IEmailCreator } from '@rocket.chat/apps-engine/definition/accessors/IEmailCreator.ts';
import type { ILivechatCreator } from '@rocket.chat/apps-engine/definition/accessors/ILivechatCreator.ts';
import type { IMessage } from '@rocket.chat/apps-engine/definition/messages/IMessage.ts';
import type { IRoom } from '@rocket.chat/apps-engine/definition/rooms/IRoom.ts';
Expand Down Expand Up @@ -85,6 +86,26 @@ export class ModifyCreator implements IModifyCreator {
) as IUploadCreator;
}

getEmailCreator(): IEmailCreator {
return new Proxy(
{ __kind: 'getEmailCreator' },
{
get: (_target: unknown, prop: string) =>
(...params: unknown[]) =>
prop === 'toJSON'
? {}
: this.senderFn({
method: `accessor:getModifier:getCreator:getEmailCreator:${prop}`,
params
})
.then((response) => response.result)
.catch((err) => {
throw new Error(err.error);
}),
}
)
}

getBlockBuilder() {
return new BlockBuilder();
}
Expand Down
75 changes: 75 additions & 0 deletions deno-runtime/lib/accessors/notifier.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
import type { IMessageBuilder, INotifier } from '@rocket.chat/apps-engine/definition/accessors';
import type { ITypingOptions } from '@rocket.chat/apps-engine/definition/accessors/INotifier.ts';
import type { _TypingScope } from '@rocket.chat/apps-engine/definition/accessors/INotifier.ts';
import type { IMessage } from '@rocket.chat/apps-engine/definition/messages';
import type { IRoom } from '@rocket.chat/apps-engine/definition/rooms';
import type { IUser } from '@rocket.chat/apps-engine/definition/users';
import { MessageBuilder } from './builders/MessageBuilder.ts';
import { AppObjectRegistry } from '../../AppObjectRegistry.ts';
import * as Messenger from '../messenger.ts';
import { require } from "../require.ts";

const { TypingScope } = require('@rocket.chat/apps-engine/definition/accessors/INotifier.js') as {
TypingScope: typeof _TypingScope;
};

export class Notifier implements INotifier {
private senderFn: typeof Messenger.sendRequest;

constructor(senderFn: typeof Messenger.sendRequest) {
this.senderFn = senderFn;
}

public async notifyUser(user: IUser, message: IMessage): Promise<void> {
if (!message.sender || !message.sender.id) {
const appUser = await this.getAppUser();

message.sender = appUser;
}

await this.callMessageBridge('doNotifyUser', [user, message, AppObjectRegistry.get<string>('id')]);
}

public async notifyRoom(room: IRoom, message: IMessage): Promise<void> {
if (!message.sender || !message.sender.id) {
const appUser = await this.getAppUser();

message.sender = appUser;
}

await this.callMessageBridge('doNotifyRoom', [room, message, AppObjectRegistry.get<string>('id')]);
}

public async typing(options: ITypingOptions): Promise<() => Promise<void>> {
options.scope = options.scope || TypingScope.Room;

if (!options.username) {
const appUser = await this.getAppUser();
options.username = (appUser && appUser.name) || '';
}

const appId = AppObjectRegistry.get<string>('id');

await this.callMessageBridge('doTyping', [{ ...options, isTyping: true }, appId]);

return async () => {
await this.callMessageBridge('doTyping', [{ ...options, isTyping: false }, appId]);
};
}

public getMessageBuilder(): IMessageBuilder {
return new MessageBuilder();
}

private async callMessageBridge(method: string, params: Array<unknown>): Promise<void> {
await this.senderFn({
method: `bridges:getMessageBridge:${method}`,
params,
});
}

private async getAppUser(): Promise<IUser | undefined> {
const response = await this.senderFn({ method: 'bridges:getUserBridge:doGetAppUser', params: [AppObjectRegistry.get<string>('id')] });
return response.result;
}
}
2 changes: 1 addition & 1 deletion docs/assets/search.js

Large diffs are not rendered by default.

2 changes: 2 additions & 0 deletions docs/classes/App.App.html
Original file line number Diff line number Diff line change
Expand Up @@ -548,6 +548,7 @@ <h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="#icon
<li><a href="../modules/accessors_IConfigurationExtend.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-4"></use></svg><span>accessors/IConfiguration<wbr/>Extend</span></a></li>
<li><a href="../modules/accessors_IConfigurationModify.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-4"></use></svg><span>accessors/IConfiguration<wbr/>Modify</span></a></li>
<li><a href="../modules/accessors_IDiscussionBuilder.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-4"></use></svg><span>accessors/IDiscussion<wbr/>Builder</span></a></li>
<li><a href="../modules/accessors_IEmailCreator.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-4"></use></svg><span>accessors/IEmail<wbr/>Creator</span></a></li>
<li><a href="../modules/accessors_IEnvironmentRead.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-4"></use></svg><span>accessors/IEnvironment<wbr/>Read</span></a></li>
<li><a href="../modules/accessors_IEnvironmentWrite.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-4"></use></svg><span>accessors/IEnvironment<wbr/>Write</span></a></li>
<li><a href="../modules/accessors_IEnvironmentalVariableRead.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-4"></use></svg><span>accessors/IEnvironmental<wbr/>Variable<wbr/>Read</span></a></li>
Expand Down Expand Up @@ -617,6 +618,7 @@ <h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="#icon
<li><a href="../modules/cloud_IWorkspaceToken.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-4"></use></svg><span>cloud/IWorkspace<wbr/>Token</span></a></li>
<li><a href="../modules/definition_roles.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-4"></use></svg><span>definition/roles</span></a></li>
<li><a href="../modules/email.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-4"></use></svg><span>email</span></a></li>
<li><a href="../modules/email_IEmail.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-4"></use></svg><span>email/IEmail</span></a></li>
<li><a href="../modules/email_IEmailDescriptor.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-4"></use></svg><span>email/IEmail<wbr/>Descriptor</span></a></li>
<li><a href="../modules/email_IPreEmailSent.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-4"></use></svg><span>email/IPre<wbr/>Email<wbr/>Sent</span></a></li>
<li><a href="../modules/email_IPreEmailSentContext.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-4"></use></svg><span>email/IPre<wbr/>Email<wbr/>Sent<wbr/>Context</span></a></li>
Expand Down
2 changes: 2 additions & 0 deletions docs/classes/AppStatus.AppStatusUtilsDef.html
Original file line number Diff line number Diff line change
Expand Up @@ -130,6 +130,7 @@ <h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="#icon
<li><a href="../modules/accessors_IConfigurationExtend.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-4"></use></svg><span>accessors/IConfiguration<wbr/>Extend</span></a></li>
<li><a href="../modules/accessors_IConfigurationModify.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-4"></use></svg><span>accessors/IConfiguration<wbr/>Modify</span></a></li>
<li><a href="../modules/accessors_IDiscussionBuilder.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-4"></use></svg><span>accessors/IDiscussion<wbr/>Builder</span></a></li>
<li><a href="../modules/accessors_IEmailCreator.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-4"></use></svg><span>accessors/IEmail<wbr/>Creator</span></a></li>
<li><a href="../modules/accessors_IEnvironmentRead.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-4"></use></svg><span>accessors/IEnvironment<wbr/>Read</span></a></li>
<li><a href="../modules/accessors_IEnvironmentWrite.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-4"></use></svg><span>accessors/IEnvironment<wbr/>Write</span></a></li>
<li><a href="../modules/accessors_IEnvironmentalVariableRead.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-4"></use></svg><span>accessors/IEnvironmental<wbr/>Variable<wbr/>Read</span></a></li>
Expand Down Expand Up @@ -199,6 +200,7 @@ <h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="#icon
<li><a href="../modules/cloud_IWorkspaceToken.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-4"></use></svg><span>cloud/IWorkspace<wbr/>Token</span></a></li>
<li><a href="../modules/definition_roles.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-4"></use></svg><span>definition/roles</span></a></li>
<li><a href="../modules/email.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-4"></use></svg><span>email</span></a></li>
<li><a href="../modules/email_IEmail.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-4"></use></svg><span>email/IEmail</span></a></li>
<li><a href="../modules/email_IEmailDescriptor.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-4"></use></svg><span>email/IEmail<wbr/>Descriptor</span></a></li>
<li><a href="../modules/email_IPreEmailSent.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-4"></use></svg><span>email/IPre<wbr/>Email<wbr/>Sent</span></a></li>
<li><a href="../modules/email_IPreEmailSentContext.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-4"></use></svg><span>email/IPre<wbr/>Email<wbr/>Sent<wbr/>Context</span></a></li>
Expand Down
2 changes: 2 additions & 0 deletions docs/classes/api_ApiEndpoint.ApiEndpoint.html
Original file line number Diff line number Diff line change
Expand Up @@ -156,6 +156,7 @@ <h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="#icon
<li><a href="../modules/accessors_IConfigurationExtend.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-4"></use></svg><span>accessors/IConfiguration<wbr/>Extend</span></a></li>
<li><a href="../modules/accessors_IConfigurationModify.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-4"></use></svg><span>accessors/IConfiguration<wbr/>Modify</span></a></li>
<li><a href="../modules/accessors_IDiscussionBuilder.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-4"></use></svg><span>accessors/IDiscussion<wbr/>Builder</span></a></li>
<li><a href="../modules/accessors_IEmailCreator.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-4"></use></svg><span>accessors/IEmail<wbr/>Creator</span></a></li>
<li><a href="../modules/accessors_IEnvironmentRead.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-4"></use></svg><span>accessors/IEnvironment<wbr/>Read</span></a></li>
<li><a href="../modules/accessors_IEnvironmentWrite.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-4"></use></svg><span>accessors/IEnvironment<wbr/>Write</span></a></li>
<li><a href="../modules/accessors_IEnvironmentalVariableRead.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-4"></use></svg><span>accessors/IEnvironmental<wbr/>Variable<wbr/>Read</span></a></li>
Expand Down Expand Up @@ -229,6 +230,7 @@ <h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="#icon
<li><a href="../modules/cloud_IWorkspaceToken.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-4"></use></svg><span>cloud/IWorkspace<wbr/>Token</span></a></li>
<li><a href="../modules/definition_roles.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-4"></use></svg><span>definition/roles</span></a></li>
<li><a href="../modules/email.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-4"></use></svg><span>email</span></a></li>
<li><a href="../modules/email_IEmail.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-4"></use></svg><span>email/IEmail</span></a></li>
<li><a href="../modules/email_IEmailDescriptor.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-4"></use></svg><span>email/IEmail<wbr/>Descriptor</span></a></li>
<li><a href="../modules/email_IPreEmailSent.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-4"></use></svg><span>email/IPre<wbr/>Email<wbr/>Sent</span></a></li>
<li><a href="../modules/email_IPreEmailSentContext.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-4"></use></svg><span>email/IPre<wbr/>Email<wbr/>Sent<wbr/>Context</span></a></li>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -130,13 +130,13 @@ <h4>See</h4><p><a href="https://v8.dev/docs/stack-trace-api#customizing-stack-tr
</div></li></ul></li></ul></div><aside class="tsd-sources">
<p>Inherited from Error.prepareStackTrace</p>
<ul>
<li>Defined in node_modules/.deno/@types[email protected]/node_modules/@types/node/globals.d.ts:27</li></ul></aside></section>
<li>Defined in node_modules/@types/node/globals.d.ts:11</li></ul></aside></section>
<section class="tsd-panel tsd-member tsd-is-inherited tsd-is-external"><a id="stackTraceLimit" class="tsd-anchor"></a>
<h3 class="tsd-anchor-link"><code class="tsd-tag ts-flagStatic">Static</code> <span>stack<wbr/>Trace<wbr/>Limit</span><a href="#stackTraceLimit" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="#icon-anchor"></use></svg></a></h3>
<div class="tsd-signature"><span class="tsd-kind-property">stack<wbr/>Trace<wbr/>Limit</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">number</span></div><aside class="tsd-sources">
<p>Inherited from Error.stackTraceLimit</p>
<ul>
<li>Defined in node_modules/.deno/@types[email protected]/node_modules/@types/node/globals.d.ts:29</li></ul></aside></section></section>
<li>Defined in node_modules/@types/node/globals.d.ts:13</li></ul></aside></section></section>
<section class="tsd-panel-group tsd-member-group">
<h2>Methods</h2>
<section class="tsd-panel tsd-member"><a id="getErrorInfo" class="tsd-anchor"></a>
Expand Down Expand Up @@ -170,7 +170,7 @@ <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</spa
<div class="tsd-comment tsd-typography"></div><aside class="tsd-sources">
<p>Inherited from Error.captureStackTrace</p>
<ul>
<li>Defined in node_modules/.deno/@types[email protected]/node_modules/@types/node/globals.d.ts:20</li></ul></aside></li></ul></section></section></div>
<li>Defined in node_modules/@types/node/globals.d.ts:4</li></ul></aside></li></ul></section></section></div>
<div class="col-sidebar">
<div class="page-menu">
<div class="tsd-navigation settings">
Expand Down Expand Up @@ -214,6 +214,7 @@ <h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="#icon
<li><a href="../modules/accessors_IConfigurationExtend.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-4"></use></svg><span>accessors/IConfiguration<wbr/>Extend</span></a></li>
<li><a href="../modules/accessors_IConfigurationModify.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-4"></use></svg><span>accessors/IConfiguration<wbr/>Modify</span></a></li>
<li><a href="../modules/accessors_IDiscussionBuilder.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-4"></use></svg><span>accessors/IDiscussion<wbr/>Builder</span></a></li>
<li><a href="../modules/accessors_IEmailCreator.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-4"></use></svg><span>accessors/IEmail<wbr/>Creator</span></a></li>
<li><a href="../modules/accessors_IEnvironmentRead.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-4"></use></svg><span>accessors/IEnvironment<wbr/>Read</span></a></li>
<li><a href="../modules/accessors_IEnvironmentWrite.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-4"></use></svg><span>accessors/IEnvironment<wbr/>Write</span></a></li>
<li><a href="../modules/accessors_IEnvironmentalVariableRead.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-4"></use></svg><span>accessors/IEnvironmental<wbr/>Variable<wbr/>Read</span></a></li>
Expand Down Expand Up @@ -283,6 +284,7 @@ <h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="#icon
<li><a href="../modules/cloud_IWorkspaceToken.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-4"></use></svg><span>cloud/IWorkspace<wbr/>Token</span></a></li>
<li><a href="../modules/definition_roles.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-4"></use></svg><span>definition/roles</span></a></li>
<li><a href="../modules/email.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-4"></use></svg><span>email</span></a></li>
<li><a href="../modules/email_IEmail.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-4"></use></svg><span>email/IEmail</span></a></li>
<li><a href="../modules/email_IEmailDescriptor.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-4"></use></svg><span>email/IEmail<wbr/>Descriptor</span></a></li>
<li><a href="../modules/email_IPreEmailSent.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-4"></use></svg><span>email/IPre<wbr/>Email<wbr/>Sent</span></a></li>
<li><a href="../modules/email_IPreEmailSentContext.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-4"></use></svg><span>email/IPre<wbr/>Email<wbr/>Sent<wbr/>Context</span></a></li>
Expand Down
Loading
Loading