diff --git a/packages/backend/src/apps/slack/data.ts b/packages/backend/src/apps/slack/data.ts index ed4c9bf6..d2743b00 100644 --- a/packages/backend/src/apps/slack/data.ts +++ b/packages/backend/src/apps/slack/data.ts @@ -1,10 +1,12 @@ import ListChannels from './data/list-channels'; -import { IJSONObject } from '@automatisch/types'; +import SlackClient from './client'; export default class Data { + client: SlackClient; listChannels: ListChannels; - constructor(connectionData: IJSONObject) { - this.listChannels = new ListChannels(connectionData); + constructor(client: SlackClient) { + this.client = client; + this.listChannels = new ListChannels(client); } } diff --git a/packages/backend/src/apps/slack/data/list-channels.ts b/packages/backend/src/apps/slack/data/list-channels.ts index 36d0ea8e..e6b8593b 100644 --- a/packages/backend/src/apps/slack/data/list-channels.ts +++ b/packages/backend/src/apps/slack/data/list-channels.ts @@ -1,17 +1,27 @@ -import type { IJSONObject } from '@automatisch/types'; -import { WebClient } from '@slack/web-api'; +import { IJSONObject } from '@automatisch/types'; +import SlackClient from '../client'; export default class ListChannels { - client: WebClient; + client: SlackClient; - constructor(connectionData: IJSONObject) { - this.client = new WebClient(connectionData.accessToken as string); + constructor(client: SlackClient) { + this.client = client; } async run() { - const { channels } = await this.client.conversations.list(); + const response = await this.client.httpClient.get('/conversations.list', { + headers: { + Authorization: `Bearer ${this.client.connection.formattedData.accessToken}`, + }, + }); - return channels.map((channel) => { + if (response.data.ok === 'false') { + throw new Error( + `Error occured while fetching slack channels: ${response.data.error}` + ); + } + + return response.data.channels.map((channel: IJSONObject) => { return { value: channel.id, name: channel.name, diff --git a/packages/backend/src/apps/slack/index.ts b/packages/backend/src/apps/slack/index.ts index 19a2c034..21289148 100644 --- a/packages/backend/src/apps/slack/index.ts +++ b/packages/backend/src/apps/slack/index.ts @@ -26,6 +26,6 @@ export default class Slack implements IService { // this.triggers = new Triggers(this.client); // this.actions = new Actions(this.client); - // this.data = new Data(this.client); + this.data = new Data(this.client); } } diff --git a/packages/backend/src/graphql/queries/get-data.ts b/packages/backend/src/graphql/queries/get-data.ts index 5b8dff1a..f4fd4959 100644 --- a/packages/backend/src/graphql/queries/get-data.ts +++ b/packages/backend/src/graphql/queries/get-data.ts @@ -10,7 +10,10 @@ type Params = { const getData = async (_parent: unknown, params: Params, context: Context) => { const step = await context.currentUser .$relatedQuery('steps') - .withGraphFetched('connection, flow') + .withGraphFetched({ + connection: true, + flow: true, + }) .findById(params.stepId); if (!step) return null;