diff --git a/apps/client/src/app/pages/portfolio/transactions/transactions-page.component.ts b/apps/client/src/app/pages/portfolio/transactions/transactions-page.component.ts index 3ef517809..7ec6d9f79 100644 --- a/apps/client/src/app/pages/portfolio/transactions/transactions-page.component.ts +++ b/apps/client/src/app/pages/portfolio/transactions/transactions-page.component.ts @@ -203,9 +203,9 @@ export class TransactionsPageComponent implements OnDestroy, OnInit { } else if (file.name.endsWith('.csv')) { try { await this.importTransactionsService.importCsv({ - user: this.user, fileContent, - primaryDataSource: this.primaryDataSource + primaryDataSource: this.primaryDataSource, + user: this.user, }); this.handleImportSuccess(); diff --git a/apps/client/src/app/services/import-transactions.service.ts b/apps/client/src/app/services/import-transactions.service.ts index 242f272e0..324432d9c 100644 --- a/apps/client/src/app/services/import-transactions.service.ts +++ b/apps/client/src/app/services/import-transactions.service.ts @@ -1,10 +1,10 @@ import { HttpClient } from '@angular/common/http'; import { Injectable } from '@angular/core'; import { CreateOrderDto } from '@ghostfolio/api/app/order/create-order.dto'; -import { DataSource, Type } from '@prisma/client'; import { parse } from 'date-fns'; +import { DataSource, Type } from '@prisma/client'; +import { parse as csvToJson } from 'papaparse'; import { isNumber } from 'lodash'; -import { Papa } from 'ngx-papaparse'; import { EMPTY } from 'rxjs'; import { catchError } from 'rxjs/operators'; import { User } from '@ghostfolio/common/interfaces'; @@ -22,27 +22,25 @@ export class ImportTransactionsService { private static TYPE_KEYS = ['action', 'type']; private static UNIT_PRICE_KEYS = ['price', 'unitprice', 'value']; - public constructor(private http: HttpClient, private papa: Papa) {} + public constructor(private http: HttpClient) {} public async importCsv({ - user, fileContent, - primaryDataSource + primaryDataSource, + user }: { - user: User; fileContent: string; primaryDataSource: DataSource; + user: User; }) { - let content; - - this.papa.parse(fileContent, { + const content = csvToJson(fileContent, { dynamicTyping: true, header: true, skipEmptyLines: true, complete: (parsedData) => { - content = parsedData.data.filter((item) => item['date'] != null); + parsedData.data.filter((item) => item['date'] != null); } - }); + }).data; const orders: CreateOrderDto[] = []; for (const [index, item] of content.entries()) { diff --git a/package.json b/package.json index 0bb45583d..93dd33c1c 100644 --- a/package.json +++ b/package.json @@ -103,7 +103,6 @@ "ngx-markdown": "13.0.0", "ngx-skeleton-loader": "2.9.1", "ngx-stripe": "13.0.0", - "ngx-papaparse": "5.0.0", "passport": "0.4.1", "passport-google-oauth20": "2.0.0", "passport-jwt": "4.0.0",