From 8b6dbf0604a689f994ea447df173a08ef3615f16 Mon Sep 17 00:00:00 2001 From: Hongbo Wu Date: Mon, 30 Oct 2023 11:47:54 +0800 Subject: [PATCH] filter out archived items by default when importing from pocket --- packages/integration-handler/src/index.ts | 2 ++ .../src/integrations/integration.ts | 1 + .../src/integrations/pocket.ts | 22 +++++++++++++------ 3 files changed, 18 insertions(+), 7 deletions(-) diff --git a/packages/integration-handler/src/index.ts b/packages/integration-handler/src/index.ts index d32ef8a08..4d739c8de 100644 --- a/packages/integration-handler/src/index.ts +++ b/packages/integration-handler/src/index.ts @@ -12,6 +12,7 @@ interface IntegrationRequest { integrationId: string syncAt: number // unix timestamp in milliseconds integrationName: string + includeArchived?: boolean } interface Claims { @@ -229,6 +230,7 @@ export const importer = Sentry.GCPFunction.wrapHttpFunction( token: claims.token, since, offset, + includeArchived: req.body.includeArchived, }) syncedAt = retrieved.since || Date.now() retrievedData = retrieved.data diff --git a/packages/integration-handler/src/integrations/integration.ts b/packages/integration-handler/src/integrations/integration.ts index 78b035db9..d501f88bd 100644 --- a/packages/integration-handler/src/integrations/integration.ts +++ b/packages/integration-handler/src/integrations/integration.ts @@ -16,6 +16,7 @@ export interface RetrieveRequest { since?: number // unix timestamp in milliseconds count?: number offset?: number + includeArchived?: boolean } export abstract class IntegrationClient { diff --git a/packages/integration-handler/src/integrations/pocket.ts b/packages/integration-handler/src/integrations/pocket.ts index fa4003c4d..1a68d4fe4 100644 --- a/packages/integration-handler/src/integrations/pocket.ts +++ b/packages/integration-handler/src/integrations/pocket.ts @@ -95,6 +95,7 @@ export class PocketClient extends IntegrationClient { since = 0, count = 100, offset = 0, + includeArchived = false, }: RetrieveRequest): Promise => { const pocketData = await this.retrievePocketData( token, @@ -112,13 +113,20 @@ export class PocketClient extends IntegrationClient { '1': 'ARCHIVED', '2': 'DELETED', } - const data = pocketItems.map((item) => ({ - url: item.given_url, - labels: item.tags - ? Object.values(item.tags).map((tag) => tag.tag) - : undefined, - state: statusToState[item.status], - })) + const data = pocketItems + .map((item) => ({ + url: item.given_url, + labels: item.tags + ? Object.values(item.tags).map((tag) => tag.tag) + : undefined, + state: statusToState[item.status], + })) + .filter((item) => { + if (item.state === 'DELETED') { + return false + } + return includeArchived || item.state !== 'ARCHIVED' + }) if (pocketData.error) { throw new Error(`Error retrieving pocket data: ${pocketData.error}`)