Skip to content

Commit

Permalink
fix: "Credentials not found" error when using mailbox autocompletion …
Browse files Browse the repository at this point in the history
…with N8N IMAP credentials
  • Loading branch information
umanamente committed Jul 12, 2024
1 parent b9f391b commit 1f9977b
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 7 deletions.
10 changes: 5 additions & 5 deletions nodes/Imap/utils/CredentialsSelector.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import { IExecuteFunctions } from "n8n-workflow";
import { FunctionsBase, IExecuteFunctions, ILoadOptionsFunctions } from "n8n-workflow";
import { IMAP_CREDENTIALS_NAME, ImapCredentialsData } from "../../../credentials/ImapCredentials.credentials";


interface ImapCredentialsProvider {
credentialsType: string;
credentialsName: string;
getImapCredentials: (context: IExecuteFunctions) => Promise<ImapCredentialsData>;
getImapCredentials: (context: FunctionsBase) => Promise<ImapCredentialsData>;
}

export const CREDENTIALS_TYPE_THIS_NODE = 'imapThisNode';
Expand All @@ -23,15 +23,15 @@ const credentialsProviders: ImapCredentialsProvider[] = [
{
credentialsType: CREDENTIALS_TYPE_THIS_NODE,
credentialsName: credentialNames[CREDENTIALS_TYPE_THIS_NODE],
getImapCredentials: async function(context: IExecuteFunctions) {
getImapCredentials: async function(context: FunctionsBase) {
const credentials = await context.getCredentials(this.credentialsName) as unknown as ImapCredentialsData;
return credentials;
}
},
{
credentialsType: CREDENTIALS_TYPE_CORE_IMAP_ACCOUNT,
credentialsName: credentialNames[CREDENTIALS_TYPE_CORE_IMAP_ACCOUNT],
getImapCredentials: async function(context: IExecuteFunctions) {
getImapCredentials: async function(context: FunctionsBase) {
const credentials = await context.getCredentials(this.credentialsName);
var returnCredentials : ImapCredentialsData = {
host: credentials.host as string,
Expand All @@ -51,7 +51,7 @@ const credentialsProviders: ImapCredentialsProvider[] = [
},*/
];

export async function getImapCredentials(context: IExecuteFunctions) : Promise<ImapCredentialsData> {
export async function getImapCredentials(context: ILoadOptionsFunctions | IExecuteFunctions) : Promise<ImapCredentialsData> {
const FIRST_NODE_INDEX = 0; // authentification is the same for all nodes
const credentialsType = context.getNodeParameter('authentication', FIRST_NODE_INDEX) as string;
const provider = credentialsProviders.find(provider => provider.credentialsType === credentialsType);
Expand Down
5 changes: 3 additions & 2 deletions nodes/Imap/utils/SearchFieldParameters.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,12 @@ E.g. the list of mailboxes, the list of emails in a mailbox, etc.

import { ListResponse } from "imapflow";
import { IDataObject, IExecuteFunctions, ILoadOptionsFunctions, INodeListSearchResult, INodeProperties } from "n8n-workflow";
import { IMAP_CREDENTIALS_NAME, ImapCredentialsData } from "../../../credentials/ImapCredentials.credentials";
import { ImapCredentialsData } from "../../../credentials/ImapCredentials.credentials";
import { createImapClient } from "./ImapUtils";
import { getImapCredentials } from "./CredentialsSelector";

export async function loadMailboxList(this: ILoadOptionsFunctions): Promise<INodeListSearchResult> {
const credentials = await this.getCredentials(IMAP_CREDENTIALS_NAME) as unknown as ImapCredentialsData;
const credentials = await getImapCredentials(this) as ImapCredentialsData;
const client = createImapClient(credentials, this.logger);
await client.connect();

Expand Down

0 comments on commit 1f9977b

Please sign in to comment.