Skip to content

Commit

Permalink
Inject the chromePath outside the backend
Browse files Browse the repository at this point in the history
  • Loading branch information
baruchiro committed Dec 26, 2020
1 parent 812be09 commit 97e3e1f
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 7 deletions.
9 changes: 5 additions & 4 deletions src/backend/import/importTransactions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ import * as configManager from '@/backend/configManager/configManager';
import * as bankScraper from '@/backend/import/bankScraper';
import { ScaperScrapingResult, Transaction } from '@/backend/import/bankScraper';
import * as categoryCalculation from '@/backend/import/categoryCalculationScript';
import electron from 'electron';
import _ from 'lodash';
import moment from 'moment';
import {
Expand All @@ -18,17 +17,19 @@ type ScrapingConfig = Config['scraping'];

const TRANSACTION_STATUS_COMPLETED = 'completed';

export async function scrapeFinancialAccountsAndFetchTransactions(scrapingConfig: ScrapingConfig, startDate: Date, eventPublisher: EventPublisher) {
export async function scrapeFinancialAccountsAndFetchTransactions(
scrapingConfig: ScrapingConfig, startDate: Date, eventPublisher: EventPublisher, chromePath?: string
) {
const companyIdToTransactions: Record<string, EnrichedTransaction[]> = {};

const chromePath = await getChrome(electron.remote.app.getPath('userData'), ({ percent }) => emitChromeDownload(eventPublisher, percent));
const dowloadedChrome = await getChrome(chromePath, ({ percent }) => emitChromeDownload(eventPublisher, percent));

const accountsToScrape = scrapingConfig.accountsToScrape.filter((accountToScrape) => accountToScrape.active !== false);
const scrapingPromises = accountsToScrape.map(async (accountToScrape) => {
const companyId = accountToScrape.key;
try {
await eventPublisher.emit(EventNames.IMPORTER_START, buildImporterEvent(accountToScrape, { message: 'Importer start' }));
const scrapeResult = await fetchTransactions(accountToScrape, startDate, scrapingConfig, eventPublisher, chromePath);
const scrapeResult = await fetchTransactions(accountToScrape, startDate, scrapingConfig, eventPublisher, dowloadedChrome);
const transactions = await postProcessTransactions(accountToScrape, scrapeResult);
companyIdToTransactions[companyId] = transactions;
await eventPublisher.emit(EventNames.IMPORTER_END, buildImporterEvent(accountToScrape, { message: 'Importer end', status: AccountStatus.DONE }));
Expand Down
4 changes: 2 additions & 2 deletions src/backend/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ export { BudgetTrackingEvent };

export const { inputVendors } = bankScraper;

export async function scrapeAndUpdateOutputVendors(optionalEventPublisher?: EventPublisher) {
export async function scrapeAndUpdateOutputVendors(optionalEventPublisher?: EventPublisher, chromePath?: string) {
const eventPublisher = createEventPublisher(optionalEventPublisher);
const config = await configManager.getConfig();

Expand All @@ -32,7 +32,7 @@ export async function scrapeAndUpdateOutputVendors(optionalEventPublisher?: Even

await eventPublisher.emit(EventNames.IMPORT_PROCESS_START, { message: `Starting to scrape from ${startDate} to today` });

const companyIdToTransactions = await scrapeFinancialAccountsAndFetchTransactions(config.scraping, startDate, eventPublisher);
const companyIdToTransactions = await scrapeFinancialAccountsAndFetchTransactions(config.scraping, startDate, eventPublisher, chromePath);
try {
const executionResult = await createTransactionsInExternalVendors(config.outputVendors, companyIdToTransactions, startDate, eventPublisher);

Expand Down
5 changes: 4 additions & 1 deletion src/ui/components/app/MainContent.vue
Original file line number Diff line number Diff line change
Expand Up @@ -57,8 +57,11 @@ import { EventEmitter, scrapeAndUpdateOutputVendors } from '@/backend';
import { AccountsState, handleEvent } from '@/ui/components/app/accountsState';
import store from '@/ui/store';
import ConfigEditor from '@/ui/components/app/ConfigEditor.vue';
import electron from 'electron';
import { Levels } from '../shared/log/types';
const userDataPath = electron.remote.app.getPath('userData');
const statusToColor = {
NOT_STARTED: null,
IN_PROGRESS: null,
Expand Down Expand Up @@ -94,7 +97,7 @@ export default defineComponent({
accountsState.value = new AccountsState(config.getActiveImporters, config.getActiveExporters);
accountsState.value.setPendingStatus();
scrapingStatus.value = 'IN_PROGRESS';
scrapeAndUpdateOutputVendors(eventEmitter)
scrapeAndUpdateOutputVendors(eventEmitter, userDataPath)
.then(() => scrapingStatus.value = 'SUCCESS')
.catch((e) => {
accountsState.value.clear();
Expand Down

0 comments on commit 97e3e1f

Please sign in to comment.