Basic code cleanup on Intercom Node

This commit is contained in:
Jan Oberhauser 2021-04-24 17:49:52 +02:00
parent 223f0130f0
commit 3904f7d568
4 changed files with 153 additions and 166 deletions

View file

@ -46,9 +46,9 @@ export const companyOperations = [
export const companyFields = [ export const companyFields = [
/* -------------------------------------------------------------------------- */ /* -------------------------------------------------------------------------- */
/* company:users */ /* company:users */
/* -------------------------------------------------------------------------- */ /* -------------------------------------------------------------------------- */
{ {
displayName: 'List By', displayName: 'List By',
name: 'listBy', name: 'listBy',
@ -138,10 +138,9 @@ export const companyFields = [
description: 'How many results to return.', description: 'How many results to return.',
}, },
/* -------------------------------------------------------------------------- */ /* -------------------------------------------------------------------------- */
/* company:getAll */ /* company:getAll */
/* -------------------------------------------------------------------------- */ /* -------------------------------------------------------------------------- */
{ {
displayName: 'Return All', displayName: 'Return All',
name: 'returnAll', name: 'returnAll',
@ -217,10 +216,9 @@ export const companyFields = [
], ],
}, },
/* -------------------------------------------------------------------------- */ /* -------------------------------------------------------------------------- */
/* company:get */ /* company:get */
/* -------------------------------------------------------------------------- */ /* -------------------------------------------------------------------------- */
{ {
displayName: 'Select By', displayName: 'Select By',
name: 'selectBy', name: 'selectBy',
@ -274,10 +272,9 @@ export const companyFields = [
description: 'View by value', description: 'View by value',
}, },
/* -------------------------------------------------------------------------- */ /* -------------------------------------------------------------------------- */
/* company:create/update */ /* company:create/update */
/* -------------------------------------------------------------------------- */ /* -------------------------------------------------------------------------- */
{ {
displayName: 'Company Id', displayName: 'Company Id',
name: 'companyId', name: 'companyId',

View file

@ -24,7 +24,7 @@ import {
IAvatar, IAvatar,
ILead, ILead,
ILeadCompany, ILeadCompany,
} from './LeadInterface'; } from './LeadInterface';
import { import {
userFields, userFields,
userOpeations, userOpeations,
@ -179,7 +179,7 @@ export class Intercom implements INodeType {
if (additionalFields.companies) { if (additionalFields.companies) {
const companies: ILeadCompany[] = []; const companies: ILeadCompany[] = [];
// @ts-ignore // @ts-ignore
additionalFields.companies.forEach( o => { additionalFields.companies.forEach(o => {
const company: ILeadCompany = {}; const company: ILeadCompany = {};
company.company_id = o; company.company_id = o;
companies.push(company); companies.push(company);
@ -270,9 +270,9 @@ export class Intercom implements INodeType {
qs.user_id = value; qs.user_id = value;
responseData = await intercomApiRequest.call(this, '/contacts', 'DELETE', {}, qs); responseData = await intercomApiRequest.call(this, '/contacts', 'DELETE', {}, qs);
} }
} catch (error) { } catch (error) {
throw new NodeApiError(this.getNode(), error); throw new NodeApiError(this.getNode(), error);
} }
} }
} }
//https://developers.intercom.com/intercom-api-reference/reference#users //https://developers.intercom.com/intercom-api-reference/reference#users
@ -337,7 +337,7 @@ export class Intercom implements INodeType {
if (additionalFields.companies) { if (additionalFields.companies) {
const companies: IUserCompany[] = []; const companies: IUserCompany[] = [];
// @ts-ignore // @ts-ignore
additionalFields.companies.forEach( o => { additionalFields.companies.forEach(o => {
const company: IUserCompany = {}; const company: IUserCompany = {};
company.company_id = o; company.company_id = o;
companies.push(company); companies.push(company);
@ -421,9 +421,9 @@ export class Intercom implements INodeType {
const id = this.getNodeParameter('id', i) as string; const id = this.getNodeParameter('id', i) as string;
try { try {
responseData = await intercomApiRequest.call(this, `/users/${id}`, 'DELETE'); responseData = await intercomApiRequest.call(this, `/users/${id}`, 'DELETE');
} catch (error) { } catch (error) {
throw new NodeOperationError(this.getNode(), `Intercom Error: ${JSON.stringify(error)}`); throw new NodeOperationError(this.getNode(), `Intercom Error: ${JSON.stringify(error)}`);
} }
} }
} }
//https://developers.intercom.com/intercom-api-reference/reference#companies //https://developers.intercom.com/intercom-api-reference/reference#companies

View file

@ -18,6 +18,11 @@ export const leadOpeations = [
value: 'create', value: 'create',
description: 'Create a new lead', description: 'Create a new lead',
}, },
{
name: 'Delete',
value: 'delete',
description: 'Delete a lead',
},
{ {
name: 'Get', name: 'Get',
value: 'get', value: 'get',
@ -33,11 +38,6 @@ export const leadOpeations = [
value: 'update', value: 'update',
description: 'Update new lead', description: 'Update new lead',
}, },
{
name: 'Delete',
value: 'delete',
description: 'Delete a lead',
},
], ],
default: 'create', default: 'create',
description: 'The operation to perform.', description: 'The operation to perform.',
@ -46,10 +46,9 @@ export const leadOpeations = [
export const leadFields = [ export const leadFields = [
/* -------------------------------------------------------------------------- */ /* -------------------------------------------------------------------------- */
/* lead:delete */ /* lead:delete */
/* -------------------------------------------------------------------------- */ /* -------------------------------------------------------------------------- */
{ {
displayName: 'Delete By', displayName: 'Delete By',
name: 'deleteBy', name: 'deleteBy',
@ -97,10 +96,9 @@ export const leadFields = [
description: 'Delete by value', description: 'Delete by value',
}, },
/* -------------------------------------------------------------------------- */ /* -------------------------------------------------------------------------- */
/* lead:get */ /* lead:get */
/* -------------------------------------------------------------------------- */ /* -------------------------------------------------------------------------- */
{ {
displayName: 'Select By', displayName: 'Select By',
name: 'selectBy', name: 'selectBy',
@ -159,10 +157,9 @@ export const leadFields = [
description: 'View by value', description: 'View by value',
}, },
/* -------------------------------------------------------------------------- */ /* -------------------------------------------------------------------------- */
/* lead:getAll */ /* lead:getAll */
/* -------------------------------------------------------------------------- */ /* -------------------------------------------------------------------------- */
{ {
displayName: 'Return All', displayName: 'Return All',
name: 'returnAll', name: 'returnAll',
@ -238,10 +235,9 @@ export const leadFields = [
], ],
}, },
/* -------------------------------------------------------------------------- */ /* -------------------------------------------------------------------------- */
/* lead:update */ /* lead:update */
/* -------------------------------------------------------------------------- */ /* -------------------------------------------------------------------------- */
{ {
displayName: 'Update By', displayName: 'Update By',
name: 'updateBy', name: 'updateBy',
@ -290,10 +286,9 @@ export const leadFields = [
description: 'Value of the property to identify the lead to update', description: 'Value of the property to identify the lead to update',
}, },
/* -------------------------------------------------------------------------- */ /* -------------------------------------------------------------------------- */
/* lead:create */ /* lead:create */
/* -------------------------------------------------------------------------- */ /* -------------------------------------------------------------------------- */
{ {
displayName: 'Email', displayName: 'Email',
name: 'email', name: 'email',
@ -355,6 +350,33 @@ export const leadFields = [
default: '', default: '',
description: 'An avatar image URL. note: the image url needs to be https.', description: 'An avatar image URL. note: the image url needs to be https.',
}, },
{
displayName: 'Companies',
name: 'companies',
type: 'multiOptions',
typeOptions: {
loadOptionsMethod: 'getCompanies',
},
default: [],
description: 'Identifies the companies this user belongs to.',
},
{
displayName: 'Email',
name: 'email',
type: 'string',
default: '',
displayOptions: {
show: {
'/resource': [
'lead',
],
'/operation': [
'update',
],
},
},
description: 'The email of the user.',
},
{ {
displayName: 'Name', displayName: 'Name',
name: 'name', name: 'name',
@ -384,38 +406,18 @@ export const leadFields = [
description: 'A boolean value, which if true, instructs Intercom to update the<br />users last_request_at value to the current API service time in<br />UTC. default value if not sent is false.', description: 'A boolean value, which if true, instructs Intercom to update the<br />users last_request_at value to the current API service time in<br />UTC. default value if not sent is false.',
}, },
{ {
displayName: 'Companies', displayName: 'UTM Campaign',
name: 'companies', name: 'utmCampaign',
type: 'multiOptions',
typeOptions: {
loadOptionsMethod: 'getCompanies',
},
default: [],
description: 'Identifies the companies this user belongs to.',
},
{
displayName: 'Email',
name: 'email',
type: 'string', type: 'string',
default: '', default: '',
displayOptions: { description: 'Identifies a specific product promotion or strategic campaign',
show: {
'/resource': [
'lead',
],
'/operation': [
'update',
],
},
},
description: 'The email of the user.',
}, },
{ {
displayName: 'UTM Source', displayName: 'UTM Content',
name: 'utmSource', name: 'utmContent',
type: 'string', type: 'string',
default: '', default: '',
description: 'An avatar image URL. note: the image url needs to be https.', description: 'Identifies what specifically was clicked to bring the user to the site',
}, },
{ {
displayName: 'UTM Medium', displayName: 'UTM Medium',
@ -425,11 +427,11 @@ export const leadFields = [
description: 'Identifies what type of link was used', description: 'Identifies what type of link was used',
}, },
{ {
displayName: 'UTM Campaign', displayName: 'UTM Source',
name: 'utmCampaign', name: 'utmSource',
type: 'string', type: 'string',
default: '', default: '',
description: 'Identifies a specific product promotion or strategic campaign', description: 'An avatar image URL. note: the image url needs to be https.',
}, },
{ {
displayName: 'UTM Term', displayName: 'UTM Term',
@ -438,13 +440,6 @@ export const leadFields = [
default: '', default: '',
description: 'Identifies search terms', description: 'Identifies search terms',
}, },
{
displayName: 'UTM Content',
name: 'utmContent',
type: 'string',
default: '',
description: 'Identifies what specifically was clicked to bring the user to the site',
},
], ],
}, },
{ {

View file

@ -18,6 +18,11 @@ export const userOpeations = [
value: 'create', value: 'create',
description: 'Create a new user', description: 'Create a new user',
}, },
{
name: 'Delete',
value: 'delete',
description: 'Delete a user',
},
{ {
name: 'Get', name: 'Get',
value: 'get', value: 'get',
@ -33,11 +38,6 @@ export const userOpeations = [
value: 'update', value: 'update',
description: 'Update a user', description: 'Update a user',
}, },
{
name: 'Delete',
value: 'delete',
description: 'Delete a user',
},
], ],
default: 'create', default: 'create',
description: 'The operation to perform.', description: 'The operation to perform.',
@ -46,10 +46,9 @@ export const userOpeations = [
export const userFields = [ export const userFields = [
/* -------------------------------------------------------------------------- */ /* -------------------------------------------------------------------------- */
/* user:delete */ /* user:delete */
/* -------------------------------------------------------------------------- */ /* -------------------------------------------------------------------------- */
{ {
displayName: 'ID', displayName: 'ID',
name: 'id', name: 'id',
@ -69,10 +68,9 @@ export const userFields = [
description: 'The Intercom defined id representing the Lead', description: 'The Intercom defined id representing the Lead',
}, },
/* -------------------------------------------------------------------------- */ /* -------------------------------------------------------------------------- */
/* user:getAll */ /* user:getAll */
/* -------------------------------------------------------------------------- */ /* -------------------------------------------------------------------------- */
{ {
displayName: 'Return All', displayName: 'Return All',
name: 'returnAll', name: 'returnAll',
@ -145,13 +143,6 @@ export const userFields = [
default: '', default: '',
description: 'The email address of the user', description: 'The email address of the user',
}, },
{
displayName: 'Tag ID',
name: 'tag_id',
type: 'string',
default: '',
description: 'Tag representing the user',
},
{ {
displayName: 'Segment ID', displayName: 'Segment ID',
name: 'segment_id', name: 'segment_id',
@ -159,14 +150,20 @@ export const userFields = [
default: '', default: '',
description: 'Segment representing the user', description: 'Segment representing the user',
}, },
{
displayName: 'Tag ID',
name: 'tag_id',
type: 'string',
default: '',
description: 'Tag representing the user',
},
], ],
}, },
/* -------------------------------------------------------------------------- */ /* -------------------------------------------------------------------------- */
/* user:get */ /* user:get */
/* -------------------------------------------------------------------------- */ /* -------------------------------------------------------------------------- */
{ {
displayName: 'Select By', displayName: 'Select By',
name: 'selectBy', name: 'selectBy',
@ -217,10 +214,9 @@ export const userFields = [
description: 'View by value', description: 'View by value',
}, },
/* -------------------------------------------------------------------------- */ /* -------------------------------------------------------------------------- */
/* user:update */ /* user:update */
/* -------------------------------------------------------------------------- */ /* -------------------------------------------------------------------------- */
{ {
displayName: 'Update By', displayName: 'Update By',
name: 'updateBy', name: 'updateBy',
@ -275,10 +271,9 @@ export const userFields = [
description: 'Value of the property to identify the user to update', description: 'Value of the property to identify the user to update',
}, },
/* -------------------------------------------------------------------------- */ /* -------------------------------------------------------------------------- */
/* user:create */ /* user:create */
/* -------------------------------------------------------------------------- */ /* -------------------------------------------------------------------------- */
{ {
displayName: 'Identifier Type', displayName: 'Identifier Type',
name: 'identifierType', name: 'identifierType',
@ -362,6 +357,23 @@ export const userFields = [
}, },
}, },
options: [ options: [
{
displayName: 'Avatar',
name: 'avatar',
type: 'string',
default: '',
description: 'An avatar image URL. note: the image url needs to be https.',
},
{
displayName: 'Companies',
name: 'companies',
type: 'multiOptions',
typeOptions: {
loadOptionsMethod: 'getCompanies',
},
default: [],
description: 'Identifies the companies this user belongs to.',
},
{ {
displayName: 'Email', displayName: 'Email',
name: 'email', name: 'email',
@ -384,6 +396,29 @@ export const userFields = [
default: '', default: '',
description: 'Email of the user', description: 'Email of the user',
}, },
{
displayName: 'Name',
name: 'name',
type: 'string',
default: '',
placeholder: '',
description: 'Name of the user',
},
{
displayName: 'Phone',
name: 'phone',
type: 'string',
default: '',
description: 'The phone number of the user',
},
{
displayName: 'Session Count',
name: 'sessionCount',
type: 'number',
default: false,
options: [],
description: `How many sessions the user has recorded`,
},
{ {
displayName: 'User ID', displayName: 'User ID',
name: 'userId', name: 'userId',
@ -407,21 +442,6 @@ export const userFields = [
default: '', default: '',
description: 'Email of the user', description: 'Email of the user',
}, },
{
displayName: 'Phone',
name: 'phone',
type: 'string',
default: '',
description: 'The phone number of the user',
},
{
displayName: 'Name',
name: 'name',
type: 'string',
default: '',
placeholder: '',
description: 'Name of the user',
},
{ {
displayName: 'Unsubscribed From Emails', displayName: 'Unsubscribed From Emails',
name: 'unsubscribedFromEmails', name: 'unsubscribedFromEmails',
@ -439,36 +459,18 @@ export const userFields = [
description: 'A boolean value, which if true, instructs Intercom to update the users<br />last_request_at value to the current API service time in UTC.', description: 'A boolean value, which if true, instructs Intercom to update the users<br />last_request_at value to the current API service time in UTC.',
}, },
{ {
displayName: 'Session Count', displayName: 'UTM Campaign',
name: 'sessionCount', name: 'utmCampaign',
type: 'number',
default: false,
options: [],
description: `How many sessions the user has recorded`,
},
{
displayName: 'Companies',
name: 'companies',
type: 'multiOptions',
typeOptions: {
loadOptionsMethod: 'getCompanies',
},
default: [],
description: 'Identifies the companies this user belongs to.',
},
{
displayName: 'Avatar',
name: 'avatar',
type: 'string', type: 'string',
default: '', default: '',
description: 'An avatar image URL. note: the image url needs to be https.', description: 'Identifies a specific product promotion or strategic campaign',
}, },
{ {
displayName: 'UTM Source', displayName: 'UTM Content',
name: 'utmSource', name: 'utmContent',
type: 'string', type: 'string',
default: '', default: '',
description: 'An avatar image URL. note: the image url needs to be https.', description: 'Identifies what specifically was clicked to bring the user to the site',
}, },
{ {
displayName: 'UTM Medium', displayName: 'UTM Medium',
@ -478,11 +480,11 @@ export const userFields = [
description: 'Identifies what type of link was used', description: 'Identifies what type of link was used',
}, },
{ {
displayName: 'UTM Campaign', displayName: 'UTM Source',
name: 'utmCampaign', name: 'utmSource',
type: 'string', type: 'string',
default: '', default: '',
description: 'Identifies a specific product promotion or strategic campaign', description: 'An avatar image URL. note: the image url needs to be https.',
}, },
{ {
displayName: 'UTM Term', displayName: 'UTM Term',
@ -491,13 +493,6 @@ export const userFields = [
default: '', default: '',
description: 'Identifies search terms', description: 'Identifies search terms',
}, },
{
displayName: 'UTM Content',
name: 'utmContent',
type: 'string',
default: '',
description: 'Identifies what specifically was clicked to bring the user to the site',
},
], ],
}, },
{ {