mirror of
https://github.com/wassname/talk.git
synced 2026-07-18 12:40:13 +08:00
* Create preliminary schema for setting Slack channels CORL-645 * Implement preliminary slack notification using tenant slack channels CORL-645 * Very preliminarily get data loading with FieldArray's for slack channels CORL-645 * Update settings input on schema to allow saving Slack settings to tenant CORL-645 * Filter off UNMODERATED queue events from slack channels We don't send these to slack through our filters, we only care about pending, reported, and featured CORL-645 * Include a moderation link in comments pushed to Slack CORL-645 * Hook up proper callback functions for adding/removing slack channels CORL-645 * Add missing translation for Slack navigation item CORL-645 * Update snapshots for preliminary Slack configuration changes CORL-645 * Add some FormField wrappers around slack config elements Makes the UI appear a little nicer CORL-645 * Set up slack config to only provide one slack channel We need to do this until we can get ArrayField's working in final-form. CORL-645 * Disable the other trigger checkboxes when "All Comments" is checked CORL-645 * Clean up the formatting of Slack messages CORL-645 * Add error handling around sending comments to Slack CORL-645 * Add links to external Slack setup documentation CORL-645 * Replace form state with wrapped field element CORL-645 * Clean up fetch request sending Slack notifications CORL-645 * Prefer global string replacement over RegEx CORL-645 * Use URL class to construct comment URL's CORL-645 * Require slack configuration in schema CORL-645 * Initialize Slack in fixtures Also fix up a flaky test that wasn't waiting on form submission and on-change events. CORL-645 * Preliminarily fix up styles to match other config pages CORL-645 * Create placeholder add/remove buttons * Convert SlackConfigContainer to FunctionalComponent CORL-645 * Add name field to slack channels CORL-645 * Disable inner fields on Slack channel when not enabled CORL-645 * Improve the delete channel button CORL-645 * Use pureMerge to extract slack channel settings CORL-645 * Do a bit of cleanup on the add channel button CORL-645
73 lines
2.3 KiB
TypeScript
73 lines
2.3 KiB
TypeScript
import CommonContext, {
|
|
CommonContextOptions,
|
|
} from "coral-server/graph/common/context";
|
|
import {
|
|
createPublisher,
|
|
Publisher,
|
|
} from "coral-server/graph/tenant/subscriptions/publisher";
|
|
import logger from "coral-server/logger";
|
|
import { Tenant } from "coral-server/models/tenant";
|
|
import { User } from "coral-server/models/user";
|
|
import { MailerQueue } from "coral-server/queue/tasks/mailer";
|
|
import { NotifierQueue } from "coral-server/queue/tasks/notifier";
|
|
import { ScraperQueue } from "coral-server/queue/tasks/scraper";
|
|
import { JWTSigningConfig } from "coral-server/services/jwt";
|
|
import createSlackPublisher from "coral-server/services/slack/publisher";
|
|
import TenantCache from "coral-server/services/tenant/cache";
|
|
|
|
import loaders from "./loaders";
|
|
import mutators from "./mutators";
|
|
|
|
export interface TenantContextOptions extends CommonContextOptions {
|
|
tenant: Tenant;
|
|
tenantCache: TenantCache;
|
|
mailerQueue: MailerQueue;
|
|
notifierQueue: NotifierQueue;
|
|
scraperQueue: ScraperQueue;
|
|
signingConfig?: JWTSigningConfig;
|
|
clientID?: string;
|
|
}
|
|
|
|
export default class TenantContext extends CommonContext {
|
|
public readonly tenant: Tenant;
|
|
public readonly tenantCache: TenantCache;
|
|
|
|
public readonly mailerQueue: MailerQueue;
|
|
public readonly scraperQueue: ScraperQueue;
|
|
public readonly publisher: Publisher;
|
|
public readonly user?: User;
|
|
public readonly signingConfig?: JWTSigningConfig;
|
|
public readonly clientID?: string;
|
|
public readonly loaders: ReturnType<typeof loaders>;
|
|
public readonly mutators: ReturnType<typeof mutators>;
|
|
|
|
constructor({
|
|
tenant,
|
|
logger: log = logger,
|
|
notifierQueue,
|
|
...options
|
|
}: TenantContextOptions) {
|
|
super({
|
|
...options,
|
|
lang: tenant.locale,
|
|
logger: logger.child({ tenantID: tenant.id }, true),
|
|
});
|
|
|
|
this.tenant = tenant;
|
|
this.tenantCache = options.tenantCache;
|
|
this.scraperQueue = options.scraperQueue;
|
|
this.mailerQueue = options.mailerQueue;
|
|
this.signingConfig = options.signingConfig;
|
|
this.clientID = options.clientID;
|
|
this.publisher = createPublisher({
|
|
pubsub: this.pubsub,
|
|
slackPublisher: createSlackPublisher(this.mongo, this.tenant),
|
|
notifierQueue,
|
|
tenantID: this.tenant.id,
|
|
clientID: this.clientID,
|
|
});
|
|
this.loaders = loaders(this);
|
|
this.mutators = mutators(this);
|
|
}
|
|
}
|