diff --git a/package.json b/package.json index f3f21050..f0074cc9 100644 --- a/package.json +++ b/package.json @@ -48,7 +48,7 @@ "electron-updater": "^5.2.4", "emittery": "^0.10.0", "googleapis": "^87.0.0", - "israeli-bank-scrapers-core": "4.0.3", + "israeli-bank-scrapers-core": "4.2.2", "keytar": "^7.4.0", "lint-staged": "~13.2.3", "lodash": "^4.17.15", diff --git a/src/accountsMetadata.ts b/src/accountsMetadata.ts index 3bdf90be..1388aace 100644 --- a/src/accountsMetadata.ts +++ b/src/accountsMetadata.ts @@ -1,5 +1,7 @@ import { CompanyTypes } from '@/backend'; +import { OutputVendorName } from './backend/commonTypes'; import americanExpressLogo from './ui/assets/logos/americanExpress.jpeg'; +import behatsdaaLogo from './ui/assets/logos/behatsdaa.png'; import beinleumiLogo from './ui/assets/logos/beinleumi.jpeg'; import beyahadLogo from './ui/assets/logos/beyahadLogo.png'; import discountLogo from './ui/assets/logos/discount.jpeg'; @@ -13,14 +15,13 @@ import leumiCardLogo from './ui/assets/logos/leumicard.png'; import massadLogo from './ui/assets/logos/massad.png'; import maxLogo from './ui/assets/logos/max.jpeg'; import mizrahiLogo from './ui/assets/logos/mizrahi.png'; +import oneZeroLogo from './ui/assets/logos/oneZero.jpeg'; import otsarHahayalLogo from './ui/assets/logos/otsarHahayal.jpeg'; import poalimLogo from './ui/assets/logos/poalim.jpeg'; import googleSheetsLogo from './ui/assets/logos/sheets.png'; import visaCalLogo from './ui/assets/logos/visa-cal.jpeg'; import yahavLogo from './ui/assets/logos/yahavLogo.jpg'; import ynabLogo from './ui/assets/logos/ynab.jpeg'; -import oneZeroLogo from './ui/assets/logos/oneZero.jpeg'; -import { OutputVendorName } from './backend/commonTypes'; export type AccountMetadata = { companyKey: string; @@ -119,6 +120,11 @@ const ACCOUNT_METADATA: AccountsMetadata = { companyKey: CompanyTypes.oneZero, companyName: 'ONE ZERO', logo: oneZeroLogo + }, + [CompanyTypes.behatsdaa]: { + companyKey: CompanyTypes.behatsdaa, + companyName: 'בחצדעה', + logo: behatsdaaLogo } }, exporters: { diff --git a/src/ui/assets/logos/behatsdaa.png b/src/ui/assets/logos/behatsdaa.png new file mode 100644 index 00000000..a151937f Binary files /dev/null and b/src/ui/assets/logos/behatsdaa.png differ diff --git a/ui-react/src/accountMetadata.tsx b/ui-react/src/accountMetadata.tsx index f69cb3e8..ab2e9c55 100644 --- a/ui-react/src/accountMetadata.tsx +++ b/ui-react/src/accountMetadata.tsx @@ -1,43 +1,58 @@ import mapValues from 'lodash/mapValues'; import { - Account, AccountMetadata, AccountType, CompanyTypes, Exporter, ExporterResultType, - ExportResultMetadata, GoogleSheetsConfig, JsonConfig, OutputVendorName, YnabConfig, CsvConfig + Account, + AccountMetadata, + AccountType, + CompanyTypes, + Exporter, + ExporterResultType, + ExportResultMetadata, + GoogleSheetsConfig, + JsonConfig, + OutputVendorName, + YnabConfig, + CsvConfig, } from './types'; import { exporterIcons, importerIcons } from './assets'; const icons = { ...importerIcons, - ...exporterIcons + ...exporterIcons, }; -const accountIdToDisplayName: Record = { - [CompanyTypes.MAX]: 'Max', - [CompanyTypes.AMEX]: 'אמריקן אקספרס', - [CompanyTypes.BEINLEUMI]: 'הבינלאומי', - [CompanyTypes.HAPOALIM_BE_ONLINE]: 'הפועלים בי אונליין', - [CompanyTypes.ISRACARD]: 'ישראכרט', - [CompanyTypes.LEUMI_CARD]: 'לאומי קארד', - [CompanyTypes.OTSAR_HAHAYAL]: 'אוצר החייל', - [CompanyTypes.UNION]: 'איגוד', - [CompanyTypes.LEUMI]: 'לאומי', - [CompanyTypes.MIZRAHI]: 'מזרחי', - [CompanyTypes.HAPOALIM]: 'הפועלים', - [CompanyTypes.VISACAL]: 'ויזה כאל', - [CompanyTypes.DISCOUNT]: 'דיסקונט', - [CompanyTypes.YAHAV]: 'יהב', - [CompanyTypes.BEYAHAD_BISHVILHA]: 'ביחד בשבילך', - [CompanyTypes.MASSAD]: 'מסד', - [OutputVendorName.CSV]: 'אקסל', - [OutputVendorName.GOOGLE_SHEETS]: 'Google Sheets', - [OutputVendorName.YNAB]: 'Ynab', - [OutputVendorName.JSON]: 'Json', -}; +const accountIdToDisplayName: Record = + { + [CompanyTypes.MAX]: 'Max', + [CompanyTypes.AMEX]: 'אמריקן אקספרס', + [CompanyTypes.BEINLEUMI]: 'הבינלאומי', + [CompanyTypes.HAPOALIM_BE_ONLINE]: 'הפועלים בי אונליין', + [CompanyTypes.ISRACARD]: 'ישראכרט', + [CompanyTypes.LEUMI_CARD]: 'לאומי קארד', + [CompanyTypes.OTSAR_HAHAYAL]: 'אוצר החייל', + [CompanyTypes.UNION]: 'איגוד', + [CompanyTypes.LEUMI]: 'לאומי', + [CompanyTypes.MIZRAHI]: 'מזרחי', + [CompanyTypes.HAPOALIM]: 'הפועלים', + [CompanyTypes.VISACAL]: 'ויזה כאל', + [CompanyTypes.DISCOUNT]: 'דיסקונט', + [CompanyTypes.YAHAV]: 'יהב', + [CompanyTypes.BEYAHAD_BISHVILHA]: 'ביחד בשבילך', + [CompanyTypes.MASSAD]: 'מסד', + [CompanyTypes.BEHATSDAA]: 'בהצדעה', + [OutputVendorName.CSV]: 'אקסל', + [OutputVendorName.GOOGLE_SHEETS]: 'Google Sheets', + [OutputVendorName.YNAB]: 'Ynab', + [OutputVendorName.JSON]: 'Json', + }; -const accountMetadata: Record = mapValues(accountIdToDisplayName, (displayName, accountId) => { +const accountMetadata: Record< + CompanyTypes | OutputVendorName, + AccountMetadata +> = mapValues(accountIdToDisplayName, (displayName, accountId) => { return { companyId: accountId, companyName: displayName, - logo: icons[accountId] + logo: icons[accountId], }; }); @@ -65,7 +80,8 @@ export const IMPORTERS_LOGIN_FIELDS = { [CompanyTypes.BEINLEUMI]: [USERNAME_FIELD, PASSWORD_FIELD], [CompanyTypes.MASSAD]: [USERNAME_FIELD, PASSWORD_FIELD], [CompanyTypes.YAHAV]: [USERNAME_FIELD, PASSWORD_FIELD, NATIONAL_ID_FIELD], - [CompanyTypes.BEYAHAD_BISHVILHA]: [USERNAME_FIELD, PASSWORD_FIELD] + [CompanyTypes.BEYAHAD_BISHVILHA]: [USERNAME_FIELD, PASSWORD_FIELD], + [CompanyTypes.BEHATSDAA]: [ID_FIELD, PASSWORD_FIELD], }; export const LOGIN_FIELD_DISPLAY_NAMES = { @@ -88,46 +104,55 @@ export const LOGIN_FIELD_MIN_LENGTH = { [NATIONAL_ID_FIELD]: 9, }; -export const importers: Account[] = Object.values(CompanyTypes).map((importerName) => { - const { companyId, companyName, logo } = accountMetadata[importerName]; +export const importers: Account[] = Object.values(CompanyTypes).map( + (importerName) => { + const { companyId, companyName, logo } = accountMetadata[importerName]; - const importer: Account = { - id: importerName, - companyId, - displayName: companyName, - logo, - type: AccountType.IMPORTER, - active: true, - logs: [] - }; - return importer; -}); + const importer: Account = { + id: importerName, + companyId, + displayName: companyName, + logo, + type: AccountType.IMPORTER, + active: true, + logs: [], + }; + return importer; + }, +); -export const exporterUIHandlers : Record = { +export const exporterUIHandlers: Record< + OutputVendorName, + ExportResultMetadata +> = { [OutputVendorName.YNAB]: { resultType: ExporterResultType.WEBSITE_URL, getResultUri(exporter: Exporter): string { - return `https://app.youneedabudget.com/${(exporter as YnabConfig).options.budgetId}`; - } + return `https://app.youneedabudget.com/${ + (exporter as YnabConfig).options.budgetId + }`; + }, }, [OutputVendorName.GOOGLE_SHEETS]: { resultType: ExporterResultType.WEBSITE_URL, getResultUri(exporter: Exporter): string { - return `https://docs.google.com/spreadsheets/d/${(exporter as GoogleSheetsConfig).options.spreadsheetId}/edit`; - } + return `https://docs.google.com/spreadsheets/d/${ + (exporter as GoogleSheetsConfig).options.spreadsheetId + }/edit`; + }, }, [OutputVendorName.CSV]: { resultType: ExporterResultType.WEBSITE_URL, getResultUri(exporter: Exporter): string { return (exporter as CsvConfig).options.filePath; - } + }, }, [OutputVendorName.JSON]: { resultType: ExporterResultType.WEBSITE_URL, getResultUri(exporter: Exporter): string { return (exporter as JsonConfig).options.filePath; - } - } + }, + }, }; export default accountMetadata; diff --git a/ui-react/src/types.tsx b/ui-react/src/types.tsx index eed044e8..d4e93587 100644 --- a/ui-react/src/types.tsx +++ b/ui-react/src/types.tsx @@ -103,6 +103,7 @@ export enum CompanyTypes { MASSAD = 'massad', YAHAV = 'yahav', BEYAHAD_BISHVILHA = 'beyahadBishvilha', + BEHATSDAA = 'behatsdaa', } export enum AccountType { diff --git a/yarn.lock b/yarn.lock index e8b604e5..78cad128 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9967,10 +9967,10 @@ isobject@^3.0.0, isobject@^3.0.1: resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= -israeli-bank-scrapers-core@4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/israeli-bank-scrapers-core/-/israeli-bank-scrapers-core-4.0.3.tgz#2a1230ea8bcd2824e561228cbbcdc139d655a592" - integrity sha512-9aUV8xz330mGZtvf60FcMOisKVQ1LjnBtLHVN97Fc09K2jbgewQ20wRVZl2bMIO/HnOfiJ8TyNLe0GSI33Jqjw== +israeli-bank-scrapers-core@4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/israeli-bank-scrapers-core/-/israeli-bank-scrapers-core-4.2.2.tgz#021a9b0987de27b99a44a26bb90793d275e7bac4" + integrity sha512-RCbpF/Gzf6gCZWfeeLQVg1FachrBhxaDU3k/H/RwTDkIIs7haii8BvQIYv2ettN+QwjZ9QGOYVPndBpF9yNF5g== dependencies: build-url "^2.0.0" core-js "^3.1.4"