@memberjunction/actions-bizapps-social
Version:
Social Media Actions for MemberJunction - Twitter, LinkedIn, Facebook, Instagram, TikTok, YouTube, HootSuite, Buffer
69 lines • 3.13 kB
JavaScript
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
import { RegisterClass } from '@memberjunction/global';
import { BufferBaseAction } from '../buffer-base.action.js';
import { BaseAction } from '@memberjunction/actions';
function formatChannel(channel) {
return {
id: channel.id,
service: channel.service,
displayName: channel.displayName,
name: channel.name,
type: channel.type,
avatar: channel.avatar,
timezone: channel.timezone,
isDisconnected: channel.isDisconnected,
isQueuePaused: channel.isQueuePaused,
createdAt: channel.createdAt,
serviceId: channel.serviceId,
};
}
function groupByService(channels) {
return channels.reduce((acc, ch) => {
const svc = ch.service || 'unknown';
acc[svc] = (acc[svc] || 0) + 1;
return acc;
}, {});
}
/**
* Retrieves all connected channels (formerly "profiles") for a Buffer organization.
*/
let BufferGetChannelsAction = class BufferGetChannelsAction extends BufferBaseAction {
async InternalRunAction(params) {
const { Params } = params;
try {
const authError = await this.ensureAuthenticated(params);
if (authError)
return authError;
const organizationId = await this.resolveOrganizationId(Params);
const channels = await this.fetchChannels(organizationId);
const formatted = channels.map(formatChannel);
const summary = {
totalChannels: formatted.length,
channelsByService: groupByService(formatted),
disconnected: formatted.filter((c) => c.isDisconnected).length,
};
this.setOutputParam(Params, 'Channels', formatted);
this.setOutputParam(Params, 'Summary', summary);
return { Success: true, ResultCode: 'SUCCESS', Message: `Retrieved ${formatted.length} Buffer channels`, Params };
}
catch (error) {
return this.buildErrorResult(error, 'get Buffer channels', Params);
}
}
get Params() {
return [...this.bufferCommonParams, { Name: 'Channels', Type: 'Output', Value: null }, { Name: 'Summary', Type: 'Output', Value: null }];
}
get Description() {
return 'Retrieves all Buffer channels (connected social media accounts) for the organization';
}
};
BufferGetChannelsAction = __decorate([
RegisterClass(BaseAction, 'BufferGetChannelsAction')
], BufferGetChannelsAction);
export { BufferGetChannelsAction };
//# sourceMappingURL=get-channels.action.js.map