diff --git a/packages/nodes-base/nodes/Reddit/GenericFunctions.ts b/packages/nodes-base/nodes/Reddit/GenericFunctions.ts index f9cb55b1109f6..85d311ffb6f62 100644 --- a/packages/nodes-base/nodes/Reddit/GenericFunctions.ts +++ b/packages/nodes-base/nodes/Reddit/GenericFunctions.ts @@ -4,7 +4,7 @@ import { } from 'n8n-core'; import { - IDataObject, NodeApiError, NodeOperationError, + IDataObject, JsonObject, NodeApiError, NodeOperationError, } from 'n8n-workflow'; import { @@ -45,7 +45,7 @@ export async function redditApiRequest( try { return await this.helpers.requestOAuth2.call(this, 'redditOAuth2Api', options); } catch (error) { - throw new NodeApiError(this.getNode(), error); + throw new NodeApiError(this.getNode(), error as JsonObject); } } else { @@ -53,7 +53,7 @@ export async function redditApiRequest( try { return await this.helpers.request.call(this, options); } catch (error) { - throw new NodeApiError(this.getNode(), error); + throw new NodeApiError(this.getNode(), error as JsonObject); } } } diff --git a/packages/nodes-base/nodes/Reddit/ProfileDescription.ts b/packages/nodes-base/nodes/Reddit/ProfileDescription.ts index 5f8f65e8c4965..672ed106a360d 100644 --- a/packages/nodes-base/nodes/Reddit/ProfileDescription.ts +++ b/packages/nodes-base/nodes/Reddit/ProfileDescription.ts @@ -60,6 +60,11 @@ export const profileFields: INodeProperties[] = [ value: 'prefs', description: 'Return the settings preferences of the logged-in user', }, + { + name: 'Saved', + value: 'saved', + description: 'Return the saved posts for the user', + }, { name: 'Trophies', value: 'trophies', @@ -77,4 +82,51 @@ export const profileFields: INodeProperties[] = [ }, }, }, + { + displayName: 'Return All', + name: 'returnAll', + type: 'boolean', + default: false, + description: 'Return all results.', + displayOptions: { + show: { + resource: [ + 'profile', + ], + operation: [ + 'get', + ], + details: [ + 'saved', + ], + }, + }, + }, + { + displayName: 'Limit', + name: 'limit', + type: 'number', + default: 100, + description: 'The number of results to return.', + typeOptions: { + minValue: 1, + maxValue: 100, + }, + displayOptions: { + show: { + resource: [ + 'profile', + ], + operation: [ + 'get', + ], + details: [ + 'saved', + ], + returnAll: [ + false, + ], + }, + }, + }, ]; diff --git a/packages/nodes-base/nodes/Reddit/Reddit.node.ts b/packages/nodes-base/nodes/Reddit/Reddit.node.ts index 44fd58d08c3ca..b147cfc2306a7 100644 --- a/packages/nodes-base/nodes/Reddit/Reddit.node.ts +++ b/packages/nodes-base/nodes/Reddit/Reddit.node.ts @@ -352,7 +352,15 @@ export class Reddit implements INodeType { const details = this.getNodeParameter('details', i) as string; const endpoint = `api/v1/${endpoints[details]}`; - responseData = await redditApiRequest.call(this, 'GET', endpoint, {}); + let username; + + if (details === 'saved') { + ({ name: username } = await redditApiRequest.call(this, 'GET', `api/v1/me`, {})); + } + + responseData = details === 'saved' + ? await handleListing.call(this, i, `user/${username}/saved.json`) + : await redditApiRequest.call(this, 'GET', endpoint, {}); if (details === 'identity') { responseData = responseData.features;