@mx-cartographer/experiences 6.26.1-alpha.mega1 → 6.26.2-ram1-alpha-finstrong-financial-strength-section

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (97) hide show
  1. package/CHANGELOG.md +13 -5
  2. package/dist/categories/util/CategoryUtil.d.ts +2 -3
  3. package/dist/common/context/hooks.d.ts +13 -13
  4. package/dist/common/types/Category.d.ts +8 -2
  5. package/dist/common/types/index.d.ts +1 -1
  6. package/dist/common/types/localization/FinstrongCopy.d.ts +10 -0
  7. package/dist/finstrong/FinancialStrengthCard.d.ts +3 -0
  8. package/dist/finstrong/components/ConnectMoreAccountsCard.d.ts +5 -1
  9. package/dist/finstrong/stores/FinstrongStore.d.ts +2 -2
  10. package/dist/finstrong/util/finstrongUtils.d.ts +1 -1
  11. package/dist/help/components/content/section/index.d.ts +15 -15
  12. package/dist/index.d.ts +22 -0
  13. package/dist/index.es.js +29963 -0
  14. package/dist/index.es.js.map +1 -0
  15. package/dist/trends/components/CategoriesList.d.ts +5 -5
  16. package/dist/trends/components/CategoriesListItem.d.ts +4 -7
  17. package/dist/trends/components/CategoryDetailChart.d.ts +1 -5
  18. package/dist/trends/stores/TrendsStore.d.ts +16 -11
  19. package/package.json +3 -91
  20. package/dist/AccountStore-DkL93tXL.mjs +0 -317
  21. package/dist/AccountStore-DkL93tXL.mjs.map +0 -1
  22. package/dist/BudgetUtil-CVqAdv-j.mjs +0 -187
  23. package/dist/BudgetUtil-CVqAdv-j.mjs.map +0 -1
  24. package/dist/CashflowStore-gPEEBiXo.mjs +0 -53
  25. package/dist/CashflowStore-gPEEBiXo.mjs.map +0 -1
  26. package/dist/CategoryStore-m7oieLzP.mjs +0 -260
  27. package/dist/CategoryStore-m7oieLzP.mjs.map +0 -1
  28. package/dist/ConnectMiniWidget-CQWafYtQ.mjs +0 -22966
  29. package/dist/ConnectMiniWidget-CQWafYtQ.mjs.map +0 -1
  30. package/dist/DebtsStore-cUhIgJx6.mjs +0 -145
  31. package/dist/DebtsStore-cUhIgJx6.mjs.map +0 -1
  32. package/dist/Donut-CGNFni9y.mjs +0 -58
  33. package/dist/Donut-CGNFni9y.mjs.map +0 -1
  34. package/dist/FinstrongStore-BDG7l0nI.mjs +0 -183
  35. package/dist/FinstrongStore-BDG7l0nI.mjs.map +0 -1
  36. package/dist/GoalStore-o2waGeyf.mjs +0 -293
  37. package/dist/GoalStore-o2waGeyf.mjs.map +0 -1
  38. package/dist/Loader-CwdK8lfx.mjs +0 -147
  39. package/dist/Loader-CwdK8lfx.mjs.map +0 -1
  40. package/dist/MerchantStore-Cck9IGIH.mjs +0 -125
  41. package/dist/MerchantStore-Cck9IGIH.mjs.map +0 -1
  42. package/dist/NetWorthStore-D5eUfGQt.mjs +0 -66
  43. package/dist/NetWorthStore-D5eUfGQt.mjs.map +0 -1
  44. package/dist/NotificationStore-DCxw8W7u.mjs +0 -141
  45. package/dist/NotificationStore-DCxw8W7u.mjs.map +0 -1
  46. package/dist/RecurringTransactionsStore-Bijrgllq.mjs +0 -337
  47. package/dist/RecurringTransactionsStore-Bijrgllq.mjs.map +0 -1
  48. package/dist/SettingsStore-BhOYgUOa.mjs +0 -352
  49. package/dist/SettingsStore-BhOYgUOa.mjs.map +0 -1
  50. package/dist/TransactionApi-Dnbyi1JL.mjs +0 -175
  51. package/dist/TransactionApi-Dnbyi1JL.mjs.map +0 -1
  52. package/dist/TransactionStore-CiEtt5XJ.mjs +0 -417
  53. package/dist/TransactionStore-CiEtt5XJ.mjs.map +0 -1
  54. package/dist/TrendsStore-Idq3QfoA.mjs +0 -131
  55. package/dist/TrendsStore-Idq3QfoA.mjs.map +0 -1
  56. package/dist/accounts/index.es.js +0 -18
  57. package/dist/accounts/index.es.js.map +0 -1
  58. package/dist/analytics/index.es.js +0 -170
  59. package/dist/analytics/index.es.js.map +0 -1
  60. package/dist/budgets/index.es.js +0 -1116
  61. package/dist/budgets/index.es.js.map +0 -1
  62. package/dist/cashflow/index.es.js +0 -118
  63. package/dist/cashflow/index.es.js.map +0 -1
  64. package/dist/categories/index.es.js +0 -10
  65. package/dist/categories/index.es.js.map +0 -1
  66. package/dist/common/index.es.js +0 -1549
  67. package/dist/common/index.es.js.map +0 -1
  68. package/dist/dashboard/index.es.js +0 -257
  69. package/dist/dashboard/index.es.js.map +0 -1
  70. package/dist/debts/index.es.js +0 -9
  71. package/dist/debts/index.es.js.map +0 -1
  72. package/dist/finstrong/index.es.js +0 -11
  73. package/dist/finstrong/index.es.js.map +0 -1
  74. package/dist/goals/index.es.js +0 -9
  75. package/dist/goals/index.es.js.map +0 -1
  76. package/dist/help/index.es.js +0 -6
  77. package/dist/help/index.es.js.map +0 -1
  78. package/dist/investments/index.es.js +0 -1694
  79. package/dist/investments/index.es.js.map +0 -1
  80. package/dist/merchants/index.es.js +0 -7
  81. package/dist/merchants/index.es.js.map +0 -1
  82. package/dist/microinsights/index.es.js +0 -21
  83. package/dist/microinsights/index.es.js.map +0 -1
  84. package/dist/networth/index.es.js +0 -11
  85. package/dist/networth/index.es.js.map +0 -1
  86. package/dist/notifications/index.es.js +0 -116
  87. package/dist/notifications/index.es.js.map +0 -1
  88. package/dist/recurringtransactions/index.es.js +0 -14
  89. package/dist/recurringtransactions/index.es.js.map +0 -1
  90. package/dist/settings/index.es.js +0 -112
  91. package/dist/settings/index.es.js.map +0 -1
  92. package/dist/spending/index.es.js +0 -632
  93. package/dist/spending/index.es.js.map +0 -1
  94. package/dist/transactions/index.es.js +0 -19
  95. package/dist/transactions/index.es.js.map +0 -1
  96. package/dist/trends/index.es.js +0 -10
  97. package/dist/trends/index.es.js.map +0 -1
@@ -1,8 +1,8 @@
1
- import { DetailedCategory } from '../../common';
1
+ import { default as React } from 'react';
2
+ import { CategoryListItem, Transaction } from '../../common';
2
3
  interface CategoriesListProps {
3
- onCategoryClick: (data: DetailedCategory) => void;
4
+ onListItemClick: (data: CategoryListItem) => void;
5
+ transactions: Transaction[];
4
6
  }
5
- declare const CategoriesList: (({ onCategoryClick }: CategoriesListProps) => import("react/jsx-runtime").JSX.Element) & {
6
- displayName: string;
7
- };
7
+ declare const CategoriesList: React.FC<CategoriesListProps>;
8
8
  export default CategoriesList;
@@ -1,10 +1,7 @@
1
- import { DetailedCategory } from '../../common';
2
- interface CategoriesListItemProps extends DetailedCategory {
1
+ import { default as React } from 'react';
2
+ import { CategoryListItem } from '../../common';
3
+ interface CategoriesListItemProps extends CategoryListItem {
3
4
  onClick?: () => void;
4
- isLastItem?: boolean;
5
- showDivider?: boolean;
6
5
  }
7
- declare const CategoriesListItem: (({ totalAmount, guid, name, transactions, onClick, isLastItem, showDivider, }: CategoriesListItemProps) => import("react/jsx-runtime").JSX.Element) & {
8
- displayName: string;
9
- };
6
+ declare const CategoriesListItem: React.FC<CategoriesListItemProps>;
10
7
  export default CategoriesListItem;
@@ -1,8 +1,4 @@
1
- interface CategoryDetailChartProps {
2
- chartColor: string;
3
- chartLabel: string;
4
- }
5
- declare const CategoryDetailChart: (({ chartLabel, chartColor }: CategoryDetailChartProps) => import("react/jsx-runtime").JSX.Element) & {
1
+ declare const CategoryDetailChart: (() => import("react/jsx-runtime").JSX.Element) & {
6
2
  displayName: string;
7
3
  };
8
4
  export default CategoryDetailChart;
@@ -1,18 +1,23 @@
1
- import { DateRange, DetailedCategory, GlobalStore } from '../../common';
2
- import { LineChartDataset } from '../../common/components/charts/LineChart';
1
+ import { CategoryListItem, DateRange, DetailedCategory, GlobalStore } from '../../common';
3
2
  export declare class TrendsStore {
4
3
  globalStore: GlobalStore;
5
- selectedCategoryData: DetailedCategory | null;
4
+ selectedCategoryData: CategoryListItem | null;
6
5
  selectedDateRange: DateRange;
7
6
  constructor(globalStore: GlobalStore);
8
- setSelectedCategoryData: (category: DetailedCategory | null) => void;
7
+ setSelectedCategoryData: (category: CategoryListItem | null) => void;
9
8
  setSelectedDateRange: (dateRange: DateRange) => void;
9
+ sortCategoriesList: () => {
10
+ guid: string;
11
+ name: string;
12
+ amount: number;
13
+ }[];
14
+ get detailedCategories(): DetailedCategory[];
10
15
  get selectedDateRangeMonthRange(): string;
11
- get selectedDateRangeMonthCount(): number;
12
- get sortedDetailedCategories(): DetailedCategory[];
13
- get visibleCategories(): DetailedCategory[];
14
- get collapsedCategories(): DetailedCategory[];
15
- get categoryDetailsChartData(): {
16
- monthlyAmounts: LineChartDataset;
17
- };
16
+ get sortedCategoriesList(): CategoryListItem[];
17
+ get visibleListItems(): CategoryListItem[];
18
+ get collapsedListItems(): CategoryListItem[];
19
+ get categoryDetailsChartData(): Array<Array<{
20
+ x: string;
21
+ y: number;
22
+ }>>;
18
23
  }
package/package.json CHANGED
@@ -1,99 +1,11 @@
1
1
  {
2
2
  "name": "@mx-cartographer/experiences",
3
- "version": "6.26.1-alpha.mega1",
3
+ "version": "6.26.2-ram1-alpha-finstrong-financial-strength-section",
4
4
  "description": "Library containing experience widgets",
5
+ "main": "dist/index.es.js",
6
+ "types": "dist/index.d.ts",
5
7
  "author": "MX",
6
8
  "license": "MIT",
7
- "exports": {
8
- "./accounts": {
9
- "types": "./dist/accounts/index.d.ts",
10
- "import": "./dist/accounts/index.es.js"
11
- },
12
- "./analytics": {
13
- "types": "./dist/analytics/index.d.ts",
14
- "import": "./dist/analytics/index.es.js"
15
- },
16
- "./budgets": {
17
- "types": "./dist/budgets/index.d.ts",
18
- "import": "./dist/budgets/index.es.js"
19
- },
20
- "./cashflow": {
21
- "types": "./dist/cashflow/index.d.ts",
22
- "import": "./dist/cashflow/index.es.js"
23
- },
24
- "./categories": {
25
- "types": "./dist/categories/index.d.ts",
26
- "import": "./dist/categories/index.es.js"
27
- },
28
- "./common": {
29
- "types": "./dist/common/index.d.ts",
30
- "import": "./dist/common/index.es.js"
31
- },
32
- "./dashboard": {
33
- "types": "./dist/dashboard/index.d.ts",
34
- "import": "./dist/dashboard/index.es.js"
35
- },
36
- "./debts": {
37
- "types": "./dist/debts/index.d.ts",
38
- "import": "./dist/debts/index.es.js"
39
- },
40
- "./finstrong": {
41
- "types": "./dist/finstrong/index.d.ts",
42
- "import": "./dist/finstrong/index.es.js"
43
- },
44
- "./goals": {
45
- "types": "./dist/goals/index.d.ts",
46
- "import": "./dist/goals/index.es.js"
47
- },
48
- "./help": {
49
- "types": "./dist/help/index.d.ts",
50
- "import": "./dist/help/index.es.js"
51
- },
52
- "./insights": {
53
- "types": "./dist/insights/index.d.ts",
54
- "import": "./dist/insights/index.es.js"
55
- },
56
- "./investments": {
57
- "types": "./dist/investments/index.d.ts",
58
- "import": "./dist/investments/index.es.js"
59
- },
60
- "./merchants": {
61
- "types": "./dist/merchants/index.d.ts",
62
- "import": "./dist/merchants/index.es.js"
63
- },
64
- "./microinsights": {
65
- "types": "./dist/microinsights/index.d.ts",
66
- "import": "./dist/microinsights/index.es.js"
67
- },
68
- "./networth": {
69
- "types": "./dist/networth/index.d.ts",
70
- "import": "./dist/networth/index.es.js"
71
- },
72
- "./notifications": {
73
- "types": "./dist/notifications/index.d.ts",
74
- "import": "./dist/notifications/index.es.js"
75
- },
76
- "./recurringtransactions": {
77
- "types": "./dist/recurringtransactions/index.d.ts",
78
- "import": "./dist/recurringtransactions/index.es.js"
79
- },
80
- "./settings": {
81
- "types": "./dist/settings/index.d.ts",
82
- "import": "./dist/settings/index.es.js"
83
- },
84
- "./spending": {
85
- "types": "./dist/spending/index.d.ts",
86
- "import": "./dist/spending/index.es.js"
87
- },
88
- "./transactions": {
89
- "types": "./dist/transactions/index.d.ts",
90
- "import": "./dist/transactions/index.es.js"
91
- },
92
- "./trends": {
93
- "types": "./dist/trends/index.d.ts",
94
- "import": "./dist/trends/index.es.js"
95
- }
96
- },
97
9
  "publishConfig": {
98
10
  "access": "public"
99
11
  },
@@ -1,317 +0,0 @@
1
- import { makeAutoObservable as d, runInAction as a } from "mobx";
2
- import "bowser";
3
- import "date-fns/getUnixTime";
4
- import "date-fns/intlFormat";
5
- import { ae as l, af as n, aS as s, aT as u, aU as _, aV as A, aW as g } from "./ConnectMiniWidget-CQWafYtQ.mjs";
6
- import "date-fns/addMonths";
7
- import "date-fns/addQuarters";
8
- import "date-fns/addWeeks";
9
- import "date-fns/addYears";
10
- import "date-fns/getDay";
11
- import "date-fns/isBefore";
12
- import "date-fns/nextDay";
13
- import "date-fns/setDate";
14
- import "date-fns/startOfToday";
15
- import "date-fns/fromUnixTime";
16
- import "react";
17
- import "numeral";
18
- import "@mui/material";
19
- import "react/jsx-runtime";
20
- import "@mui/material/Button";
21
- import "@mxenabled/mxui";
22
- import "@mui/material/Tooltip";
23
- import "@mui/material/Box";
24
- import "@mui/material/IconButton";
25
- import "./Loader-CwdK8lfx.mjs";
26
- import "@mui/material/styles/useTheme";
27
- import "@mui/material/useMediaQuery";
28
- import "@mxenabled/cssinjs";
29
- import "date-fns/addDays";
30
- import "date-fns/eachDayOfInterval";
31
- import "date-fns/eachWeekOfInterval";
32
- import "date-fns/endOfMonth";
33
- import "date-fns/format";
34
- import "date-fns/isSameMonth";
35
- import "date-fns/startOfMonth";
36
- import "date-fns/subMonths";
37
- import "@mui/material/Paper";
38
- import "@mxenabled/mx-icons";
39
- import "date-fns/isSameDay";
40
- import "date-fns/isWithinInterval";
41
- import "d3";
42
- import "@mui/material/styles";
43
- import "@mui/x-charts";
44
- import "@mui/x-charts/ChartsTooltip";
45
- import "@mui/material/Stack";
46
- import "date-fns/differenceInCalendarDays";
47
- import "date-fns/endOfToday";
48
- import "date-fns/endOfYear";
49
- import "date-fns/startOfYear";
50
- import "date-fns/subDays";
51
- import "date-fns/subYears";
52
- import "@mui/material/ButtonGroup";
53
- import "@mui/material/Tab";
54
- import "@mui/material/Tabs";
55
- import "@mui/material/ToggleButton";
56
- import "@mui/material/ToggleButtonGroup";
57
- import "@mui/material/Dialog";
58
- import "@mui/material/DialogContent";
59
- import "@mui/material/Card";
60
- import "@mui/material/CardContent";
61
- import "@mui/material/CardHeader";
62
- import "uuid";
63
- import "@mui/material/CircularProgress";
64
- import "@mui/material/FormControlLabel";
65
- import "@mui/material/Radio";
66
- import "@mui/material/Avatar";
67
- import "@mui/material/ListItem";
68
- import "@mui/material/ListItemAvatar";
69
- import "@mui/material/ListItemButton";
70
- import "@mui/material/ListItemText";
71
- import "@mui/material/ListItemIcon";
72
- import "@mui/material/MenuItem";
73
- import "@mui/material/TextField";
74
- import "@mui/material/Switch";
75
- import "posthog-js";
76
- import "date-fns/differenceInDays";
77
- import "@mui/x-data-grid-pro";
78
- import "date-fns";
79
- import "@mui/material/Divider";
80
- import "@mui/material/List";
81
- import "date-fns/formatISO";
82
- import "date-fns/isAfter";
83
- import "date-fns/parseISO";
84
- import "date-fns/subQuarters";
85
- import "date-fns/lastDayOfMonth";
86
- import "date-fns/setDayOfYear";
87
- import "date-fns/addSeconds";
88
- import "date-fns/differenceInCalendarMonths";
89
- import "date-fns/getMonth";
90
- class p {
91
- fetchInstance;
92
- constructor(t, e) {
93
- this.fetchInstance = new l(t, e);
94
- }
95
- createAccount = async (t) => this.fetchInstance.post(n.ACCOUNTS, t).then((e) => e.account).catch((e) => e);
96
- deleteAccount = async (t) => this.fetchInstance.delete(`${n.ACCOUNTS}/${t}`).catch((e) => e);
97
- getAccounts = async () => this.fetchInstance.get(n.ACCOUNTS).then((t) => t.accounts).catch((t) => t);
98
- getInstitutions = async () => this.fetchInstance.get(n.INSTITUTIONS).then((t) => t).catch((t) => t);
99
- getMembers = async () => this.fetchInstance.get(n.MEMBERS).then((t) => t.members).catch((t) => t);
100
- getMonthlyAccountBalances = async (t) => this.fetchInstance.get(`${n.ACCOUNTS}/${t}/monthly_account_balances`).then((e) => e.monthly_account_balances).catch((e) => e);
101
- mergeAccounts = async (t) => this.fetchInstance.put(`${n.ACCOUNTS}/merge`, { accounts: t }).then((e) => e).catch((e) => e);
102
- refreshAllMembers = async () => this.fetchInstance.get(`${n.MEMBERS}/refresh_all`).then((t) => t).catch((t) => t);
103
- updateAccount = async (t) => this.fetchInstance.put(`${n.ACCOUNTS}/${t.guid}`, t).then((e) => e.account).catch((e) => e);
104
- }
105
- class f {
106
- isLoading = !1;
107
- selectedAccount = {};
108
- selectedMember = {};
109
- constructor() {
110
- d(this);
111
- }
112
- setIsLoading = (t) => this.isLoading = t;
113
- setSelectedAccount = (t) => this.selectedAccount = t;
114
- setSelectedMember = (t) => this.selectedMember = t;
115
- }
116
- class te {
117
- globalStore;
118
- api = new p("/", "");
119
- accounts = [];
120
- institutions = [];
121
- members = [];
122
- uiStore;
123
- constructor(t) {
124
- this.globalStore = t, this.uiStore = new f(), this.api = new p(t.endpoint, t.sessionToken), d(this);
125
- }
126
- loadAccountData = async ({
127
- accounts: t,
128
- institutions: e
129
- } = {}) => {
130
- await Promise.all([this.loadAccounts(t), this.loadInstitutions(e)]);
131
- };
132
- get cashAccounts() {
133
- return this.accounts.filter(
134
- (t) => t.account_type === s.CASH || t.account_type === s.CHECKING || t.account_type === s.PREPAID || t.account_type === s.SAVINGS || t.account_type === s.CHECKING_LINE_OF_CREDIT
135
- );
136
- }
137
- get cashBalance() {
138
- return this.cashAccounts.reduce((t, e) => t + (e?.balance || 0), 0);
139
- }
140
- get checkingAccounts() {
141
- return this.accounts.filter((t) => t.account_type === s.CHECKING);
142
- }
143
- get debtAccounts() {
144
- return this.accounts.filter(
145
- (t) => t.account_type === s.CREDIT_CARD || t.account_type === s.LOAN || t.account_type === s.MORTGAGE || t.account_type === s.LINE_OF_CREDIT || t.account_type === s.CHECKING_LINE_OF_CREDIT
146
- );
147
- }
148
- get finstrongAccounts() {
149
- const t = /* @__PURE__ */ new Set([
150
- s.CHECKING,
151
- s.SAVINGS,
152
- s.CREDIT_CARD,
153
- s.INVESTMENT
154
- ]);
155
- return this.accounts.filter((e) => t.has(e.account_type));
156
- }
157
- get investmentAccounts() {
158
- return this.accounts.filter(
159
- (t) => t.account_type === s.INVESTMENT
160
- );
161
- }
162
- get savingsAccounts() {
163
- return this.accounts.filter((t) => t.account_type === s.SAVINGS);
164
- }
165
- get visibleAccounts() {
166
- return this.accounts.filter((t) => !t.is_hidden);
167
- }
168
- get visibleCashAccounts() {
169
- return this.cashAccounts.filter((t) => !t.is_hidden);
170
- }
171
- get visibleCashBalance() {
172
- return this.visibleCashAccounts.reduce((t, e) => t + (e?.balance || 0), 0);
173
- }
174
- get visibleCheckingAccounts() {
175
- return this.checkingAccounts.filter((t) => !t.is_hidden);
176
- }
177
- get visibleDebtAccounts() {
178
- return this.debtAccounts.filter((t) => !t.is_hidden);
179
- }
180
- get visibleFinstrongAccounts() {
181
- return this.finstrongAccounts.filter(
182
- (t) => !(t.is_closed || t.is_deleted || t.is_hidden)
183
- );
184
- }
185
- get visibleInvestmentAccounts() {
186
- return this.investmentAccounts.filter((t) => !t.is_hidden);
187
- }
188
- get visibleSavingsAccounts() {
189
- return this.savingsAccounts.filter((t) => !t.is_hidden);
190
- }
191
- addAccount = async (t) => {
192
- try {
193
- const e = await this.api.createAccount(t);
194
- a(() => {
195
- this.accounts = [...this.accounts, e];
196
- });
197
- } catch (e) {
198
- console.error(`Error occurred while adding an account: ${e}`);
199
- }
200
- };
201
- augmentAccounts = (t = this.accounts) => {
202
- const e = [];
203
- return t.forEach((c) => {
204
- const r = this.members.findIndex(
205
- (o) => o.guid === c.member_guid
206
- );
207
- if (r > -1) {
208
- let o = u.Connected;
209
- const i = this.members[r];
210
- _.includes(i.connection_status) ? o = u.Error : A.includes(i.connection_status) ? o = u.Processing : g.includes(i.connection_status) && (o = u.RequiresMfa);
211
- let m = c.user_name || c.feed_name || "";
212
- c.account_number && (m = `${m} *${c.account_number}`), e.push({
213
- ...c,
214
- institutionName: m,
215
- memberName: i.name,
216
- connectionStatus: o
217
- }), this.members[r].connectionStatus = o;
218
- }
219
- }), e;
220
- };
221
- loadAccounts = async (t) => {
222
- await this.loadMembers();
223
- try {
224
- const e = t || await this.api.getAccounts();
225
- a(() => {
226
- this.accounts = this.sortAccounts(this.augmentAccounts(e));
227
- });
228
- } catch (e) {
229
- console.error(`Error occurred while loading accounts: ${e}`);
230
- }
231
- };
232
- loadInstitutions = async (t) => {
233
- try {
234
- const e = t || await this.api.getInstitutions();
235
- a(() => {
236
- this.institutions = e;
237
- });
238
- } catch (e) {
239
- console.error(`Error occurred while loading institutions: ${e}`);
240
- }
241
- };
242
- loadMembers = async () => {
243
- try {
244
- const t = await this.api.getMembers();
245
- a(() => {
246
- this.members = t;
247
- });
248
- } catch (t) {
249
- console.error(`Error occurred while loading members: ${t}`);
250
- }
251
- };
252
- mergeAccounts = async (t) => {
253
- try {
254
- const e = await this.api.mergeAccounts(t), c = e[Object.keys(e)[0]];
255
- a(() => {
256
- const r = this.accounts.findIndex((i) => i.guid === t[1]);
257
- this.accounts.splice(r, 1);
258
- const o = this.accounts.findIndex((i) => i.guid === t[0]);
259
- this.accounts.splice(o, 1, c);
260
- });
261
- } catch (e) {
262
- console.error(`Error occurred while merging accounts: ${e}`);
263
- }
264
- };
265
- sortAccounts = (t = this.accounts) => t.sort((e, c) => e.account_type > c.account_type ? 1 : e.account_type < c.account_type ? -1 : (e.name || "") > (c.name || "") ? 1 : (e.name || "") < (c.name || "") ? -1 : 0);
266
- refreshAccounts = async () => {
267
- this.uiStore.setIsLoading(!0), await Promise.all([this.loadAccounts(), this.loadInstitutions()]), this.uiStore.setIsLoading(!1);
268
- };
269
- refreshMembers = async () => {
270
- try {
271
- await this.api.refreshAllMembers(), await this.loadMembers();
272
- } catch (t) {
273
- console.error(`Error occurredwhile refreshing members: ${t}`);
274
- }
275
- };
276
- removeAccount = async (t) => {
277
- try {
278
- await this.api.deleteAccount(t), a(() => {
279
- const e = this.accounts.findIndex((c) => c.guid === t);
280
- this.accounts.splice(e, 1);
281
- });
282
- } catch (e) {
283
- console.error(`Error occurred while removing an account: ${e}`);
284
- }
285
- };
286
- updateAccount = async (t) => {
287
- try {
288
- const e = await this.api.updateAccount(t);
289
- a(() => {
290
- const c = this.accounts.findIndex(
291
- (r) => r.guid === e.guid
292
- );
293
- this.accounts.splice(c, 1, e), this.accounts = this.augmentAccounts(this.accounts);
294
- });
295
- } catch (e) {
296
- console.error(`Error occurred while updating account: ${e}`);
297
- }
298
- };
299
- updateAccountFiltering = async (t, e) => {
300
- for (const c of t) {
301
- const r = this.accounts.find((o) => o.guid === c);
302
- if (r) {
303
- r.is_excluded_from_accounts = e, r.is_excluded_from_budgets = e, r.is_excluded_from_cash_flow = e, r.is_excluded_from_debts = e, r.is_excluded_from_goals = e, r.is_excluded_from_investments = e, r.is_excluded_from_net_worth = e, r.is_excluded_from_spending = e, r.is_excluded_from_transactions = e, r.is_excluded_from_trends = e;
304
- try {
305
- this.updateAccount(r);
306
- } catch (o) {
307
- console.error(`Failed to update account ${c} (added):`, o);
308
- }
309
- }
310
- }
311
- };
312
- }
313
- export {
314
- p as A,
315
- te as a
316
- };
317
- //# sourceMappingURL=AccountStore-DkL93tXL.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AccountStore-DkL93tXL.mjs","sources":["../src/accounts/api/AccountApi.ts","../src/accounts/stores/UiStore.ts","../src/accounts/stores/AccountStore.ts"],"sourcesContent":["import Fetch from '../../common/utils/Fetch'\n\nimport { ApiEndpoints } from '../../common/constants'\nimport type { Account } from '../../common'\n\nexport class AccountApi {\n fetchInstance: Fetch\n\n constructor(endpoint: string, token: string) {\n this.fetchInstance = new Fetch(endpoint, token)\n }\n\n createAccount = async (account: Account) => {\n return this.fetchInstance\n .post(ApiEndpoints.ACCOUNTS, account)\n .then((data) => data.account)\n .catch((error) => error)\n }\n\n deleteAccount = async (accountGuid: string) => {\n return this.fetchInstance\n .delete(`${ApiEndpoints.ACCOUNTS}/${accountGuid}`)\n .catch((error) => error)\n }\n\n getAccounts = async () => {\n return this.fetchInstance\n .get(ApiEndpoints.ACCOUNTS)\n .then((data) => data.accounts)\n .catch((error) => error)\n }\n\n getInstitutions = async () => {\n return this.fetchInstance\n .get(ApiEndpoints.INSTITUTIONS)\n .then((data) => data)\n .catch((error) => error)\n }\n\n getMembers = async () => {\n return this.fetchInstance\n .get(ApiEndpoints.MEMBERS)\n .then((data) => data.members)\n .catch((error) => error)\n }\n\n getMonthlyAccountBalances = async (guid: string) => {\n return this.fetchInstance\n .get(`${ApiEndpoints.ACCOUNTS}/${guid}/monthly_account_balances`)\n .then((data) => data.monthly_account_balances)\n .catch((error) => error)\n }\n\n mergeAccounts = async (accountGuids: string[]) => {\n return this.fetchInstance\n .put(`${ApiEndpoints.ACCOUNTS}/merge`, { accounts: accountGuids })\n .then((data) => data)\n .catch((error) => error)\n }\n\n refreshAllMembers = async () => {\n return this.fetchInstance\n .get(`${ApiEndpoints.MEMBERS}/refresh_all`)\n .then((data) => data)\n .catch((error) => error)\n }\n\n updateAccount = async (account: Account) => {\n return this.fetchInstance\n .put(`${ApiEndpoints.ACCOUNTS}/${account.guid}`, account)\n .then((data) => data.account)\n .catch((error) => error)\n }\n}\n","import { makeAutoObservable } from 'mobx'\nimport { Account, Member } from '../../common'\n\nexport class UiStore {\n isLoading = false\n\n selectedAccount: Account = {} as Account\n selectedMember: Member = {} as Member\n\n constructor() {\n makeAutoObservable(this)\n }\n\n setIsLoading = (isLoading: boolean) => (this.isLoading = isLoading)\n\n setSelectedAccount = (account: Account) => (this.selectedAccount = account)\n setSelectedMember = (member: Member) => (this.selectedMember = member)\n}\n","import { makeAutoObservable, runInAction } from 'mobx'\n\nimport {\n AccountType,\n ErrorStatuses,\n MfaStatuses,\n ConnectionStatus,\n ProcessingStatuses,\n} from '../../common'\n\nimport type { Account, GlobalStore, Institution, Member } from '../../common'\n\nimport { AccountApi } from '../api/AccountApi'\nimport { UiStore } from './UiStore'\n\nexport class AccountStore {\n globalStore: GlobalStore\n api: AccountApi = new AccountApi('/', '')\n\n accounts: Account[] = []\n institutions: Institution[] = []\n members: Member[] = []\n uiStore: UiStore\n\n constructor(globalStore: GlobalStore) {\n this.globalStore = globalStore\n this.uiStore = new UiStore()\n this.api = new AccountApi(globalStore.endpoint, globalStore.sessionToken)\n\n makeAutoObservable(this)\n }\n\n loadAccountData = async ({\n accounts,\n institutions,\n }: {\n accounts?: Account[]\n institutions?: Institution[]\n } = {}) => {\n await Promise.all([this.loadAccounts(accounts), this.loadInstitutions(institutions)])\n }\n\n get cashAccounts(): Account[] {\n return this.accounts.filter(\n (account: Account) =>\n account.account_type === AccountType.CASH ||\n account.account_type === AccountType.CHECKING ||\n account.account_type === AccountType.PREPAID ||\n account.account_type === AccountType.SAVINGS ||\n account.account_type === AccountType.CHECKING_LINE_OF_CREDIT,\n )\n }\n\n get cashBalance(): number {\n return this.cashAccounts.reduce((total, account) => total + (account?.balance || 0), 0)\n }\n\n get checkingAccounts(): Account[] {\n return this.accounts.filter((a: Account) => a.account_type === AccountType.CHECKING)\n }\n\n get debtAccounts(): Account[] {\n return this.accounts.filter(\n (account: Account) =>\n account.account_type === AccountType.CREDIT_CARD ||\n account.account_type === AccountType.LOAN ||\n account.account_type === AccountType.MORTGAGE ||\n account.account_type === AccountType.LINE_OF_CREDIT ||\n account.account_type === AccountType.CHECKING_LINE_OF_CREDIT,\n )\n }\n\n get finstrongAccounts(): Account[] {\n const eligibleTypes = new Set([\n AccountType.CHECKING,\n AccountType.SAVINGS,\n AccountType.CREDIT_CARD,\n AccountType.INVESTMENT,\n ])\n\n return this.accounts.filter((account) => eligibleTypes.has(account.account_type))\n }\n\n get investmentAccounts(): Account[] {\n return this.accounts.filter(\n (account: Account) => account.account_type === AccountType.INVESTMENT,\n )\n }\n\n get savingsAccounts(): Account[] {\n return this.accounts.filter((a: Account) => a.account_type === AccountType.SAVINGS)\n }\n\n get visibleAccounts(): Account[] {\n return this.accounts.filter((a: Account) => !a.is_hidden)\n }\n\n get visibleCashAccounts(): Account[] {\n return this.cashAccounts.filter((account: Account) => !account.is_hidden)\n }\n\n get visibleCashBalance(): number {\n return this.visibleCashAccounts.reduce((total, account) => total + (account?.balance || 0), 0)\n }\n\n get visibleCheckingAccounts(): Account[] {\n return this.checkingAccounts.filter((account: Account) => !account.is_hidden)\n }\n\n get visibleDebtAccounts(): Account[] {\n return this.debtAccounts.filter((account: Account) => !account.is_hidden)\n }\n\n get visibleFinstrongAccounts(): Account[] {\n return this.finstrongAccounts.filter(\n (account: Account) => !(account.is_closed || account.is_deleted || account.is_hidden),\n )\n }\n\n get visibleInvestmentAccounts(): Account[] {\n return this.investmentAccounts.filter((account: Account) => !account.is_hidden)\n }\n\n get visibleSavingsAccounts(): Account[] {\n return this.savingsAccounts.filter((account: Account) => !account.is_hidden)\n }\n\n addAccount = async (account: Account) => {\n try {\n const newAccount = await this.api.createAccount(account)\n\n runInAction(() => {\n this.accounts = [...this.accounts, newAccount]\n })\n } catch (error) {\n console.error(`Error occurred while adding an account: ${error}`)\n }\n }\n\n augmentAccounts = (accounts: Account[] = this.accounts) => {\n const augmentedAccounts: Account[] = []\n\n accounts.forEach((account: Account) => {\n const memberLocation = this.members.findIndex(\n (member: Member) => member.guid === account.member_guid,\n )\n if (memberLocation > -1) {\n let connectionStatus = ConnectionStatus.Connected\n const member = this.members[memberLocation]\n if (ErrorStatuses.includes(member.connection_status)) {\n connectionStatus = ConnectionStatus.Error\n } else if (ProcessingStatuses.includes(member.connection_status)) {\n connectionStatus = ConnectionStatus.Processing\n } else if (MfaStatuses.includes(member.connection_status)) {\n connectionStatus = ConnectionStatus.RequiresMfa\n }\n\n let institutionName = account.user_name || account.feed_name || ''\n if (account.account_number) {\n institutionName = `${institutionName} *${account.account_number}`\n }\n\n augmentedAccounts.push({\n ...account,\n institutionName,\n memberName: member.name,\n connectionStatus,\n })\n\n this.members[memberLocation].connectionStatus = connectionStatus\n }\n })\n\n return augmentedAccounts\n }\n\n loadAccounts = async (accountsOverride?: Account[]) => {\n await this.loadMembers()\n\n try {\n const accounts = accountsOverride || (await this.api.getAccounts())\n\n runInAction(() => {\n this.accounts = this.sortAccounts(this.augmentAccounts(accounts))\n })\n } catch (error) {\n console.error(`Error occurred while loading accounts: ${error}`)\n }\n }\n\n loadInstitutions = async (institutionsOverride?: Institution[]) => {\n try {\n const institutions = institutionsOverride || (await this.api.getInstitutions())\n\n runInAction(() => {\n this.institutions = institutions\n })\n } catch (error) {\n console.error(`Error occurred while loading institutions: ${error}`)\n }\n }\n\n loadMembers = async () => {\n try {\n const members = await this.api.getMembers()\n\n runInAction(() => {\n this.members = members\n })\n } catch (error) {\n console.error(`Error occurred while loading members: ${error}`)\n }\n }\n\n mergeAccounts = async (accountGuids: string[]) => {\n try {\n const response = await this.api.mergeAccounts(accountGuids)\n // the response from the api is a funky database key here, so this is essentially just getting the first item in the returned object\n // to prevent making multiple api calls here\n const mergedAccount = response[Object.keys(response)[0]]\n\n runInAction(() => {\n const account2Index = this.accounts.findIndex((account) => account.guid === accountGuids[1])\n this.accounts.splice(account2Index, 1)\n\n const account1Index = this.accounts.findIndex((account) => account.guid === accountGuids[0])\n this.accounts.splice(account1Index, 1, mergedAccount)\n })\n } catch (error) {\n console.error(`Error occurred while merging accounts: ${error}`)\n }\n }\n\n sortAccounts = (accounts: Account[] = this.accounts) => {\n return accounts.sort((a: Account, b: Account) => {\n // orders by account type descending (Checking -> Savings -> Credit card)\n if (a.account_type > b.account_type) return 1\n if (a.account_type < b.account_type) return -1\n // orders by name (Emergency Savings -> Health Savings -> Rainy Day Savings)\n if ((a.name || '') > (b.name || '')) return 1\n if ((a.name || '') < (b.name || '')) return -1\n return 0\n })\n }\n\n refreshAccounts = async () => {\n this.uiStore.setIsLoading(true)\n await Promise.all([this.loadAccounts(), this.loadInstitutions()])\n this.uiStore.setIsLoading(false)\n }\n\n refreshMembers = async () => {\n try {\n await this.api.refreshAllMembers()\n await this.loadMembers()\n } catch (error) {\n console.error(`Error occurredwhile refreshing members: ${error}`)\n }\n }\n\n removeAccount = async (accountGuid: string) => {\n try {\n await this.api.deleteAccount(accountGuid)\n\n runInAction(() => {\n const deletedIndex = this.accounts.findIndex((account) => account.guid === accountGuid)\n this.accounts.splice(deletedIndex, 1)\n })\n } catch (error) {\n console.error(`Error occurred while removing an account: ${error}`)\n }\n }\n\n updateAccount = async (account: Account) => {\n try {\n const updatedAccount = await this.api.updateAccount(account)\n\n runInAction(() => {\n const updatedAccountIndex = this.accounts.findIndex(\n (account) => account.guid === updatedAccount.guid,\n )\n\n this.accounts.splice(updatedAccountIndex, 1, updatedAccount)\n\n this.accounts = this.augmentAccounts(this.accounts)\n })\n } catch (error) {\n console.error(`Error occurred while updating account: ${error}`)\n }\n }\n\n updateAccountFiltering = async (guids: string[], isExcluded: boolean) => {\n for (const guid of guids) {\n const account = this.accounts.find((acc) => acc.guid === guid)\n\n if (account) {\n account.is_excluded_from_accounts = isExcluded\n account.is_excluded_from_budgets = isExcluded\n account.is_excluded_from_cash_flow = isExcluded\n account.is_excluded_from_debts = isExcluded\n account.is_excluded_from_goals = isExcluded\n account.is_excluded_from_investments = isExcluded\n account.is_excluded_from_net_worth = isExcluded\n account.is_excluded_from_spending = isExcluded\n account.is_excluded_from_transactions = isExcluded\n account.is_excluded_from_trends = isExcluded\n\n try {\n this.updateAccount(account)\n } catch (error) {\n console.error(`Failed to update account ${guid} (added):`, error)\n }\n }\n }\n }\n}\n"],"names":["AccountApi","endpoint","token","Fetch","account","ApiEndpoints","data","error","accountGuid","guid","accountGuids","UiStore","makeAutoObservable","isLoading","member","AccountStore","globalStore","accounts","institutions","AccountType","total","a","eligibleTypes","newAccount","runInAction","augmentedAccounts","memberLocation","connectionStatus","ConnectionStatus","ErrorStatuses","ProcessingStatuses","MfaStatuses","institutionName","accountsOverride","institutionsOverride","members","response","mergedAccount","account2Index","account1Index","b","deletedIndex","updatedAccount","updatedAccountIndex","guids","isExcluded","acc"],"mappings":"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"}