Merge branch 'master' into windows

This commit is contained in:
Tom French 2022-08-30 15:07:32 +01:00 committed by GitHub
commit fecca411b0
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
216 changed files with 25803 additions and 19720 deletions

View file

@ -1,121 +0,0 @@
default_config: &default_config
environment:
SENTRY_ORG: shift-reset-llc
SENTRY_PROJECT: actual
YARN_CACHE_FOLDER: ~/.cache/yarn
CSC_LINK: ~/windows-shift-reset-llc.p12
cached_files: &cached_files
paths:
- ~/.cache/yarn
- node_modules
- ./packages/desktop-electron/node_modules
- ./packages/loot-core/node_modules
- ./mobile/node_modules
- ./import-ynab4/node_modules
- ./api/node_modules
- ./node-libofx/node_modules
- ./loot-design/node_modules
- ./desktop-client/node_modules
key: v3-dependencies-{{ checksum "yarn.lock" }}
version_tag_only: &version_tag_only
filters:
branches:
ignore: /.*/
tags:
only: /^\d+\.\d+\.\d+$/
version: 2.1
orbs:
win: circleci/windows@2.2.0
jobs:
test:
<<: *default_config
docker:
- image: circleci/node:16.15.0
working_directory: ~/repo
steps:
- checkout
- restore_cache:
keys:
- v3-dependencies-{{ checksum "yarn.lock" }}
- run: yarn install --pure-lockfile
- save_cache:
<<: *cached_files
- run: yarn test
build_windows:
<<: *default_config
executor:
name: win/default
working_directory: ~/repo
steps:
- checkout
- run:
command: npm install -g @sentry/cli --unsafe-perm
shell: bash
- run:
command: echo $WINDOWS_CERT | base64 --decode >> ${HOME}/windows-shift-reset-llc.p12
shell: bash
- run:
command: yarn install --pure-lockfile
shell: bash
- run:
command: ./bin/package --release --version ${CIRCLE_TAG}
shell: bash
build_linux:
<<: *default_config
docker:
- image: circleci/node:16.15.0
working_directory: ~/repo
steps:
- checkout
- restore_cache:
keys:
- v3-dependencies-{{ checksum "yarn.lock" }}
- run: yarn install --pure-lockfile
- run: sudo npm install -g @sentry/cli --unsafe-perm
- run: ./bin/package --release --version ${CIRCLE_TAG}
workflows:
version: 2
test:
jobs:
- test
build_version:
jobs:
- test:
<<: *version_tag_only
- build_windows:
<<: *version_tag_only
requires:
- test
- build_linux:
<<: *version_tag_only
requires:
- test

10
.eslintrc.js Normal file
View file

@ -0,0 +1,10 @@
module.exports = {
plugins: ['prettier'],
extends: ['react-app'],
rules: {
'prettier/prettier': 'error',
'no-unused-vars': 'off',
'no-loop-func': 'off',
'no-restricted-globals': 'off'
}
};

76
.github/ISSUE_TEMPLATE/bug-report.yml vendored Normal file
View file

@ -0,0 +1,76 @@
name: Bug Report
description: File a bug report also known as an issue or problem.
title: '[Bug]: '
labels: ['bug', 'needs triage']
body:
- type: markdown
id: intro-md
attributes:
value: |
Thanks for taking the time to fill out this bug report! Please ensure you provide as much information as asked to better assist in confirming and identifying a fix for the bug report.
- type: dropdown
id: existing-issue
attributes:
label: 'Verified issue does not already exist?'
description: 'Please search to see if an issue already exists for the issue you encountered.'
options:
- 'I have searched and found no existing issue'
validations:
required: true
- type: textarea
id: what-happened
attributes:
label: What happened?
description: Also tell us, what did you expect to happen?
placeholder: Tell us what you see!
value: 'A bug happened!'
validations:
required: true
- type: textarea
id: errors-received
attributes:
label: 'What error did you receive?'
description: 'If you received an error or a message on the screen, please provide that here.'
validations:
required: false
- type: markdown
id: env-info
attributes:
value: '## Environment Details'
- type: dropdown
id: hosting
attributes:
label: Where are you hosting Actual?
description: Where are you running your instance of Actual from?
options:
- Locally via Yarn
- Docker
- Fly.io
- NAS
- Other
validations:
required: false
- type: dropdown
id: browsers
attributes:
label: What browsers are you seeing the problem on?
multiple: true
options:
- Firefox
- Chrome
- Safari
- Microsoft Edge
- Other
- type: dropdown
id: operating-system
attributes:
label: Operating System
description: What version of our software are you running?
options:
- Windows 11
- Windows 10
- Linux
- Mobile Device
- Other
validations:
required: false

5
.github/ISSUE_TEMPLATE/config.yml vendored Normal file
View file

@ -0,0 +1,5 @@
blank_issues_enabled: false
contact_links:
- name: Feature Request?
url: https://github.com/actualbudget/actual/discussions/new?category=ideas
about: Website is hosted via GitHub Discussions under actualbudget/actual

View file

@ -0,0 +1,14 @@
name: Mark new issue for triage
on:
issues:
types: [opened]
jobs:
needs-triage:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions-ecosystem/action-add-labels@v1
with:
labels: needs triage

18
.github/workflows/test.yml vendored Normal file
View file

@ -0,0 +1,18 @@
name: Test
on:
push:
branches:
- master
pull_request:
branches: '*'
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up environment
uses: ./.github/actions/setup
- name: Test
run: yarn test

9
.gitignore vendored
View file

@ -20,3 +20,12 @@ bundle.mobile.js.map
export-2020-01-10.csv
**/*.log
# Yarn
.pnp.*
.yarn/*
!.yarn/patches
!.yarn/plugins
!.yarn/releases
!.yarn/sdks
!.yarn/versions

4
.prettierrc.json Normal file
View file

@ -0,0 +1,4 @@
{
"singleQuote": true,
"trailingComma": "none"
}

File diff suppressed because one or more lines are too long

785
.yarn/releases/yarn-3.2.0.cjs vendored Executable file

File diff suppressed because one or more lines are too long

7
.yarnrc.yml Normal file
View file

@ -0,0 +1,7 @@
nodeLinker: node-modules
plugins:
- path: .yarn/plugins/@yarnpkg/plugin-workspace-tools.cjs
spec: "@yarnpkg/plugin-workspace-tools"
yarnPath: .yarn/releases/yarn-3.2.0.cjs

View file

@ -80,27 +80,14 @@ if [[ $CI != true && "$OSTYPE" == "darwin"* ]]; then
yarn lint
fi
./node_modules/.bin/patch-package
yarn patch-package
(
cd packages/loot-design;
../../node_modules/.bin/patch-package
)
yarn workspace mobile patch-package
(
cd packages/mobile;
../../node_modules/.bin/patch-package
)
yarn workspace loot-core build:node
(
cd packages/loot-core;
NODE_ENV=production yarn build:node
)
yarn workspace @actual-app/web build
(
cd packages/desktop-client;
yarn build
)
rm -fr packages/desktop-electron/client-build
cp -r packages/desktop-client/build packages/desktop-electron/client-build

View file

@ -56,19 +56,8 @@ if [ $CI != true ]; then
yarn lint
fi
(
cd packages/loot-design;
../../node_modules/.bin/patch-package
)
ACTUAL_RELEASE_TYPE=$RELEASE yarn workspace loot-core build:browser
(
cd packages/loot-core;
ACTUAL_RELEASE_TYPE=$RELEASE yarn build:browser
)
(
cd packages/desktop-client;
REACT_APP_RELEASE_TYPE=$RELEASE yarn build:browser
)
REACT_APP_RELEASE_TYPE=$RELEASE yarn workspace @actual-app/web build:browser
echo "packages/desktop-client/build"

View file

@ -1,24 +0,0 @@
const { join, resolve } = require('path');
const { createTransformer } = require('babel-jest');
const packagePath = resolve('./');
const packageGlob = join(packagePath, 'packages/*');
module.exports = createTransformer({
babelrcRoots: packageGlob,
// TODO: This is awful and a mess and we should fix it.
//
// Forcing this on allows certain packages in node_modules to be
// exported as ESM, which jest usually errors on. node_modules are
// usually not transformed, but you can allowlist one in the
// `jest.config.js` for your project like this:
//
// transformIgnorePatterns: [
// '/node_modules/(?!absurd-sql)'
// ],
//
// Without this explicit plugin, even though Jest transforms the
// module it won't recognize ESM
plugins: ['@babel/plugin-transform-modules-commonjs']
});

View file

@ -1,9 +0,0 @@
const { join, resolve } = require('path');
const { createTransformer } = require('babel-jest');
const packagePath = resolve('./');
const packageGlob = join(packagePath, 'packages/*');
module.exports = createTransformer({
babelrcRoots: packageGlob
});

View file

@ -1,8 +0,0 @@
module.exports = {
projects: [
'<rootDir>/packages/loot-core',
'<rootDir>/packages/loot-core/jest.web.config.js',
'<rootDir>/packages/loot-design',
'<rootDir>/packages/loot-design/jest.rn.config.js'
]
};

View file

@ -15,74 +15,39 @@
"workspaces": {
"packages": [
"packages/*"
],
"nohoist": [
"**/better-sqlite3",
"**/better-sqlite3/**",
"mobile/react-native",
"mobile/react-native-*",
"mobile/rn-fetch-blob",
"mobile/**/event-target-shim",
"mobile/@sentry/react-native",
"mobile/nodejs-mobile-react-native",
"**/mobile/nodejs-mobile-react-native/**",
"**/@react-native-community/**",
"**/@react-navigation/**",
"mobile/react-navigation",
"mobile/react-navigation-tabs",
"mobile/rn-snoopy",
"mobile/rn-snoopy/**",
"mobile/detox",
"mobile/detox/**",
"mobile/jsc-android",
"mobile/jsc-android/**",
"**/react-native-web",
"**/react-native-web/**",
"**/@sentry/cli"
]
},
"scripts": {
"start": "npm-run-all --parallel start:desktop-*",
"start:desktop-node": "cd packages/loot-core && yarn watch:node",
"start:desktop-client": "cd packages/desktop-client && yarn watch",
"start:desktop-electron": "cd packages/desktop-electron && yarn watch",
"start:browser": "npm-run-all --parallel start:browser-*",
"start:browser-backend": "cd packages/loot-core && yarn watch:browser",
"start:browser-frontend": "cd packages/desktop-client && yarn start:browser",
"test": "./node_modules/.bin/jest --maxWorkers=4",
"test:debug": "node ./node_modules/.bin/jest --runInBand --useStderr",
"test:debug-brk": "node --inspect-brk ./node_modules/.bin/jest --runInBand",
"start": "npm-run-all --parallel 'start:desktop-*'",
"start:desktop-node": "yarn workspace loot-core watch:node",
"start:desktop-client": "yarn workspace @actual-app/web watch",
"start:desktop-electron": "yarn workspace Actual watch",
"start:browser": "npm-run-all --parallel 'start:browser-*'",
"start:browser-backend": "yarn workspace loot-core watch:browser",
"start:browser-frontend": "yarn workspace @actual-app/web start:browser",
"test": "yarn workspaces foreach --parallel --verbose run test",
"test:debug": "yarn workspaces foreach --verbose run test",
"rebuild-electron": "./node_modules/.bin/electron-rebuild -f -m ./packages/loot-core",
"rebuild-node": "cd packages/loot-core && npm rebuild",
"lint": "cd packages/loot-core && yarn lint",
"rebuild-node": "yarn workspace loot-core rebuild",
"lint": "yarn workspaces foreach --verbose run lint",
"postinstall": "rm -rf ./packages/loot-design/node_modules/react && rm -rf ./packages/mobile/node_modules/react && rm -rf ./node_modules/react-native && patch-package"
},
"devDependencies": {
"@babel/plugin-transform-modules-commonjs": "^7.18.2",
"cross-env": "^5.1.5",
"husky": "^3.0.4",
"npm-run-all": "^4.1.3",
"patch-package": "^6.1.2",
"prettier": "^1.18.1",
"pretty-quick": "^1.11.1",
"shelljs": "^0.8.2",
"source-map-support": "^0.5.21"
},
"eslintConfig": {
"extends": "react-app",
"rules": {
"no-unused-vars": "off",
"no-loop-func": "off",
"no-restricted-globals": "off"
}
},
"prettier": {
"singleQuote": true,
"trailingComma": "none"
},
"resolutions": {
"@babel/preset-env": "^7.15.1",
"@babel/core": "^7.15.1",
"@babel/runtime": "^7.15.1",
"@babel/helper-plugin-utils": "^7.14.5"
}
"@babel/helper-plugin-utils": "^7.14.5",
"react-error-overlay": "6.0.9"
},
"packageManager": "yarn@3.2.0"
}

View file

@ -518,6 +518,10 @@ module.exports = function(webpackEnv) {
// https://github.com/jmblog/how-to-optimize-momentjs-with-webpack
// You can remove this if you don't use Moment.js:
new webpack.IgnorePlugin(/^\.\/locale$/, /moment$/),
// Pikaday throws a warning if Moment.js is not installed however it doesn't
// actually require it to be installed. As we don't use Moment.js ourselves
// then we can just silence this warning.
new webpack.IgnorePlugin(/moment$/, /pikaday$/),
!(isEnvDevelopment || process.env.PERF_BUILD) &&
new webpack.IgnorePlugin(/perf-deets\/frontend/),
// Generate a service worker script that will precache, and keep up to date,

View file

@ -14,7 +14,6 @@
"@reactions/component": "^2.0.2",
"@sentry/browser": "6.12.0",
"@svgr/webpack": "2.4.1",
"add": "^2.0.6",
"babel-eslint": "9.0.0",
"babel-loader": "8.0.4",
"babel-preset-jwl-app": "6.1.12",
@ -23,6 +22,7 @@
"case-sensitive-paths-webpack-plugin": "2.1.2",
"chalk": "2.4.1",
"codemirror": "^5.37.0",
"cross-env": "^7.0.3",
"css-loader": "1.0.0",
"date-fns": "2.0.0-alpha.27",
"debounce": "^1.2.0",
@ -34,6 +34,7 @@
"eslint-plugin-flowtype": "2.50.1",
"eslint-plugin-import": "2.14.0",
"eslint-plugin-jsx-a11y": "6.1.2",
"eslint-plugin-prettier": "^3.1.4",
"eslint-plugin-react": "7.11.1",
"file-loader": "2.0.0",
"focus-visible": "^4.1.1",
@ -41,10 +42,8 @@
"fs-extra": "7.0.0",
"glamor": "^2.20.40",
"html-webpack-plugin": "4.0.0-alpha.2",
"http-client": "^4.3.1",
"identity-obj-proxy": "3.0.0",
"load-js": "^3.0.3",
"lodash.memoize": "^4.1.2",
"mini-css-extract-plugin": "0.4.3",
"mitt": "^1.1.2",
"optimize-css-assets-webpack-plugin": "5.0.1",
@ -55,7 +54,6 @@
"postcss-preset-env": "6.3.1",
"postcss-safe-parser": "4.0.1",
"prop-types": "15.6.0",
"raven-js": "^3.21.0",
"react": "16.13.1",
"react-addons-shallow-compare": "^15.6.0",
"react-app-polyfill": "^0.1.3",
@ -75,7 +73,6 @@
"sass-loader": "7.1.0",
"style-loader": "0.23.0",
"terser-webpack-plugin": "1.1.0",
"url-loader": "1.1.1",
"victory": "^0.26.1",
"webpack": "4.19.1",
"webpack-dev-server": "3.11.0",
@ -88,7 +85,8 @@
"start:browser": "cross-env ./bin/watch-browser",
"watch": "cross-env PORT=3001 node scripts/start.js",
"build": "cross-env INLINE_RUNTIME_CHUNK=false node scripts/build.js",
"build:browser": "cross-env./bin/build-browser"
"build:browser": "cross-env ./bin/build-browser",
"lint": "eslint src"
},
"browserslist": [
"electron 3.0"

View file

@ -6,8 +6,8 @@ import {
init as initConnection,
send
} from 'loot-core/src/platform/client/fetch';
import installPolyfills from '../polyfills';
import { styles, hasHiddenScrollbars } from 'loot-design/src/style';
import installPolyfills from '../polyfills';
import FatalError from './FatalError';
import ManagementApp from './manager/ManagementApp';
import FinancesApp from './FinancesApp';

View file

@ -1,9 +1,9 @@
import React, { useState } from 'react';
import React from 'react';
import { View, Block } from 'loot-design/src/components/common';
import { css } from 'glamor';
import Background from './Background';
import AnimatedLoading from 'loot-design/src/svg/v1/AnimatedLoading';
import { colors } from 'loot-design/src/style';
import Background from './Background';
function AppBackground({ initializing, loadingText }) {
return (

View file

@ -1,4 +1,4 @@
import React, { useState } from 'react';
import React from 'react';
import { connect } from 'react-redux';
import { useTransition, animated } from 'react-spring';
import * as actions from 'loot-core/src/client/actions';

View file

@ -9,14 +9,18 @@ function getFlex(flex) {
}
function Box({ flex, children, direction, style }) {
return <div
return (
<div
style={{
...style,
flex: getFlex(flex),
display: 'flex',
flexDirection: direction || 'column'
}}
>{children}</div>;
>
{children}
</div>
);
}
export default Box;

View file

@ -1,5 +1,4 @@
import React from 'react';
import PropTypes from 'prop-types';
import {
send,
init as initConnection
@ -12,7 +11,7 @@ import {
Input,
InlineField
} from 'loot-design/src/components/common';
import { styles, colors } from 'loot-design/src/style';
import { colors } from 'loot-design/src/style';
require('codemirror/lib/codemirror.css');
require('codemirror/theme/monokai.css');
@ -206,7 +205,7 @@ class Debugger extends React.Component {
height: 10,
backgroundColor: '#303030',
marginRight: 10,
borderRadius: 10,
borderRadius: 10
}}
/>
<Button onClick={this.toggleRecord} style={{ marginRight: 10 }}>

View file

@ -99,7 +99,9 @@ class FatalError extends React.Component {
.
</P>
<P>
<Button onClick={() => window.Actual.relaunch()}>{buttonText}</Button>
<Button onClick={() => window.Actual.relaunch()}>
{buttonText}
</Button>
</P>
<P isLast={true} style={{ fontSize: 11 }}>
<Link

View file

@ -10,15 +10,15 @@ import { SpreadsheetProvider } from 'loot-core/src/client/SpreadsheetProvider';
import checkForUpgradeNotifications from 'loot-core/src/client/upgrade-notifications';
import { colors } from 'loot-design/src/style';
import { View } from 'loot-design/src/components/common';
import BankSyncStatus from './BankSyncStatus';
import { BudgetMonthCountProvider } from 'loot-design/src/components/budget/BudgetMonthCountContext';
import * as undo from 'loot-core/src/platform/client/undo';
import { PageTypeProvider } from './Page';
import { getLocationState } from '../util/location-state';
import { ActiveLocationProvider } from './ActiveLocation';
import { makeLocationState } from '../util/location-state';
import { PayeesProvider } from 'loot-core/src/client/data-hooks/payees';
import { AccountsProvider } from 'loot-core/src/client/data-hooks/accounts';
import { getLocationState } from '../util/location-state';
import { makeLocationState } from '../util/location-state';
import { PageTypeProvider } from './Page';
import { ActiveLocationProvider } from './ActiveLocation';
import BankSyncStatus from './BankSyncStatus';
import Titlebar, { TitlebarProvider } from './Titlebar';
import FloatableSidebar, { SidebarProvider } from './FloatableSidebar';
@ -277,7 +277,4 @@ function FinancesAppWithContext(props) {
);
}
export default connect(
null,
actions
)(FinancesAppWithContext);
export default connect(null, actions)(FinancesAppWithContext);

View file

@ -2,7 +2,6 @@ import React, { useState, useEffect } from 'react';
import { connect } from 'react-redux';
import { withRouter } from 'react-router';
import * as actions from 'loot-core/src/client/actions';
import { send } from 'loot-core/src/platform/client/fetch';
import {
View,
Text,
@ -11,7 +10,6 @@ import {
Menu
} from 'loot-design/src/components/common';
import { colors } from 'loot-design/src/style';
import ExclamationSolid from 'loot-design/src/svg/v1/ExclamationSolid';
function LoggedInUser({
history,

View file

@ -6,25 +6,24 @@ import { createLocation } from 'history';
import Component from '@reactions/component';
import * as actions from 'loot-core/src/client/actions';
import { send, listen, unlisten } from 'loot-core/src/platform/client/fetch';
import { getModalRoute } from '../util';
import CreateAccount from './modals/CreateAccount';
import CreateLocalAccount from 'loot-design/src/components/modals/CreateLocalAccount';
import CloseAccount from 'loot-design/src/components/modals/CloseAccount';
import SelectLinkedAccounts from 'loot-design/src/components/modals/SelectLinkedAccounts';
import ConfigureLinkedAccounts from 'loot-design/src/components/modals/ConfigureLinkedAccounts';
import LoadBackup from 'loot-design/src/components/modals/LoadBackup';
import PlaidExternalMsg from 'loot-design/src/components/modals/PlaidExternalMsg';
import ImportTransactions from 'loot-design/src/components/modals/ImportTransactions';
import EditField from 'loot-design/src/components/modals/EditField';
import CreateAccount from './modals/CreateAccount';
import ManagePayeesWithData from './payees/ManagePayeesWithData';
import ManageRules from './modals/ManageRules';
import EditRule from './modals/EditRule';
import MergeUnusedPayees from './modals/MergeUnusedPayees';
import PlaidExternalMsg from 'loot-design/src/components/modals/PlaidExternalMsg';
import ConfirmCategoryDelete from './modals/ConfirmCategoryDelete';
import WelcomeScreen from './modals/WelcomeScreen';
import ImportTransactions from 'loot-design/src/components/modals/ImportTransactions';
import CreateEncryptionKey from './modals/CreateEncryptionKey';
import FixEncryptionKey from './modals/FixEncryptionKey';
import EditField from 'loot-design/src/components/modals/EditField';
function Modals({
history,

View file

@ -1,7 +1,7 @@
import React from 'react';
import { useHistory } from 'react-router-dom';
import { Modal, View, Text } from 'loot-design/src/components/common';
import { colors, styles } from 'loot-design/src/style';
import { styles } from 'loot-design/src/style';
let PageTypeContext = React.createContext({ type: 'page' });

View file

@ -1,5 +1,4 @@
import React, { useState, useEffect, useRef } from 'react';
import { bindActionCreators } from 'redux';
import { connect } from 'react-redux';
import { css } from 'glamor';
import { Route, Switch, Redirect } from 'react-router-dom';
@ -8,20 +7,14 @@ import {
View,
Text,
Button,
ButtonLink,
ButtonWithLoading,
AnchorLink,
Link,
Input
AnchorLink
} from 'loot-design/src/components/common';
import { send, listen } from 'loot-core/src/platform/client/fetch';
import { numberFormats } from 'loot-core/src/shared/util';
import { styles, colors } from 'loot-design/src/style';
import { Information, Warning, Error } from 'loot-design/src/components/alerts';
import Checkmark from 'loot-design/src/svg/v1/Checkmark';
import CheveronDown from 'loot-design/src/svg/v1/CheveronDown';
import { Information } from 'loot-design/src/components/alerts';
import ExpandArrow from 'loot-design/src/svg/ExpandArrow';
import ExclamationSolid from 'loot-design/src/svg/v1/ExclamationSolid';
import Platform from 'loot-core/src/client/platform';
import useServerVersion from '../hooks/useServerVersion';

View file

@ -2,15 +2,12 @@ import React, { useState, useEffect } from 'react';
import { bindActionCreators } from 'redux';
import { connect } from 'react-redux';
import { withRouter } from 'react-router-dom';
import { select } from 'glamor';
import lively from '@jlongster/lively';
import { send } from 'loot-core/src/platform/client/fetch';
import { styles, colors } from 'loot-design/src/style';
import {
Button,
Input,
InitialFocus,
View,
Text
} from 'loot-design/src/components/common';
import { Sidebar } from 'loot-design/src/components/sidebar';

View file

@ -1,4 +1,4 @@
import React, { Component } from 'react';
import React from 'react';
import Cell from 'loot-design/src/components/spreadsheet/Cell';
import { View } from 'loot-design/src/components/common';

View file

@ -1,13 +1,3 @@
import React, { useState } from 'react';
import {
View,
Text,
Stack,
Button,
ButtonWithLoading
} from 'loot-design/src/components/common';
import { colors } from 'loot-design/src/style';
export function RepairSyncNotification() {}
// TODO: sync button shouldn't show error status if it's a local file

View file

@ -1,10 +1,4 @@
import React, {
useState,
useEffect,
useRef,
useCallback,
useContext
} from 'react';
import React, { useState, useEffect, useRef, useContext } from 'react';
import { Switch, Route, withRouter } from 'react-router-dom';
import { connect } from 'react-redux';
import * as actions from 'loot-core/src/client/actions';
@ -22,11 +16,11 @@ import {
P
} from 'loot-design/src/components/common';
import SheetValue from 'loot-design/src/components/spreadsheet/SheetValue';
import { MonthCountSelector } from './budget/MonthCountSelector';
import ArrowButtonRight1 from 'loot-design/src/svg/v2/ArrowButtonRight1';
import NavigationMenu from 'loot-design/src/svg/v2/NavigationMenu';
import ArrowLeft from 'loot-design/src/svg/v1/ArrowLeft';
import AlertTriangle from 'loot-design/src/svg/v2/AlertTriangle';
import { MonthCountSelector } from './budget/MonthCountSelector';
import AccountSyncCheck from './accounts/AccountSyncCheck';
import LoggedInUser from './LoggedInUser';
import AnimatedRefresh from './AnimatedRefresh';

View file

@ -4,20 +4,16 @@ import PropTypes from 'prop-types';
import { bindActionCreators } from 'redux';
import { connect } from 'react-redux';
import * as actions from 'loot-core/src/client/actions';
import { View } from 'loot-design/src/components/common';
import { colors } from 'loot-design/src/style';
import Intro from './tutorial/Intro';
import BudgetSummary from './tutorial/BudgetSummary';
import BudgetCategories from './tutorial/BudgetCategories';
import BudgetInitial from './tutorial/BudgetInitial';
import TransactionAdd from './tutorial/TransactionAdd';
import TransactionEnter from './tutorial/TransactionEnter';
import TransactionFinalize from './tutorial/TransactionFinalize';
import BudgetNewIncome from './tutorial/BudgetNewIncome';
import CategoryBalance from './tutorial/CategoryBalance';
import Overspending from './tutorial/Overspending';
import BudgetNextMonth from './tutorial/BudgetNextMonth';
import DeleteTransactions from './tutorial/DeleteTransactions';
import Final from './tutorial/Final';
function generatePath(innerRect, outerRect) {

View file

@ -1,7 +1,6 @@
import React from 'react';
import { connect } from 'react-redux';
import PropTypes from 'prop-types';
import lively from '@jlongster/lively';
class Tutorial extends React.Component {
static childContextTypes = {

View file

@ -2,13 +2,7 @@ import React from 'react';
import { bindActionCreators } from 'redux';
import { connect } from 'react-redux';
import * as actions from 'loot-core/src/client/actions';
import {
View,
Text,
Block,
Link,
Button
} from 'loot-design/src/components/common';
import { View, Text, Link, Button } from 'loot-design/src/components/common';
import { colors } from 'loot-design/src/style';
import Close from 'loot-design/src/svg/v1/Close';

View file

@ -1,27 +1,8 @@
import React, {
useState,
useLayoutEffect,
useEffect,
useRef,
useMemo,
useReducer,
useCallback
} from 'react';
import React, { useState, useEffect, useRef, useMemo } from 'react';
import { bindActionCreators } from 'redux';
import { connect } from 'react-redux';
import { useSelector, useDispatch } from 'react-redux';
import {
Redirect,
withRouter,
useParams,
useHistory,
useLocation
} from 'react-router-dom';
import { css } from 'glamor';
import Modal from 'react-modal';
import Component from '@reactions/component';
import { Redirect, useParams, useHistory, useLocation } from 'react-router-dom';
import { debounce } from 'debounce';
import SpreadsheetContext from 'loot-design/src/components/spreadsheet/SpreadsheetContext';
import { send, listen } from 'loot-core/src/platform/client/fetch';
import * as actions from 'loot-core/src/client/actions';
import {
@ -33,7 +14,6 @@ import {
InitialFocus,
Tooltip,
Menu,
Block,
Stack
} from 'loot-design/src/components/common';
import {
@ -41,55 +21,47 @@ import {
applyChanges,
groupById
} from 'loot-core/src/shared/util';
import * as monthUtils from 'loot-core/src/shared/months';
import TutorialPoint from 'loot-design/src/components/TutorialPoint';
import DotsHorizontalTriple from 'loot-design/src/svg/v1/DotsHorizontalTriple';
import Pencil1 from 'loot-design/src/svg/v2/Pencil1';
import SearchAlternate from 'loot-design/src/svg/v2/SearchAlternate';
import DownloadThickBottom from 'loot-design/src/svg/v2/DownloadThickBottom';
import AnimatedRefresh from '../AnimatedRefresh';
import Add from 'loot-design/src/svg/v1/Add';
import format from 'loot-design/src/components/spreadsheet/format';
import useSheetValue from 'loot-design/src/components/spreadsheet/useSheetValue';
import CellValue from 'loot-design/src/components/spreadsheet/CellValue';
import ArrowButtonRight1 from 'loot-design/src/svg/v2/ArrowButtonRight1';
import CheveronDown from 'loot-design/src/svg/v1/CheveronDown';
import CheckCircle1 from 'loot-design/src/svg/v2/CheckCircle1';
import Loading from 'loot-design/src/svg/v1/AnimatedLoading';
import ArrowsExpand3 from 'loot-design/src/svg/v2/ArrowsExpand3';
import ArrowsShrink3 from 'loot-design/src/svg/v2/ArrowsShrink3';
import * as queries from 'loot-core/src/client/queries';
import q, { runQuery, pagedQuery } from 'loot-core/src/client/query-helpers';
import { queryContext } from 'loot-core/src/client/query-hooks';
import { SelectedItemsButton } from 'loot-design/src/components/table';
import { Query } from 'loot-core/src/shared/query';
import * as aql from 'loot-core/src/client/query-helpers';
import {
deleteTransaction,
updateTransaction,
ungroupTransactions
} from 'loot-core/src/shared/transactions';
import { styles, colors } from 'loot-design/src/style';
import {
SelectedProviderWithItems,
useSelectedItems
} from 'loot-design/src/components/useSelected';
import { KeyHandlers } from 'loot-design/src/components/KeyHandlers';
import {
SchedulesProvider,
useCachedSchedules
} from 'loot-core/src/client/data-hooks/schedules';
import { authorizeBank } from '../../plaid';
import AnimatedRefresh from '../AnimatedRefresh';
import { useActiveLocation } from '../ActiveLocation';
import { FilterButton, AppliedFilters } from './Filters';
import TransactionList from './TransactionList';
import {
SplitsExpandedProvider,
useSplitsExpanded,
isPreviewId
} from './TransactionsTable';
import { styles, colors } from 'loot-design/src/style';
import TransactionList from './TransactionList';
import { authorizeBank } from '../../plaid';
import {
SelectedProviderWithItems,
useSelectedItems
} from 'loot-design/src/components/useSelected';
import { keys } from 'loot-design/src/util/keys';
import { KeyHandlers } from 'loot-design/src/components/KeyHandlers';
import { FilterButton, AppliedFilters } from './Filters';
import {
SchedulesProvider,
useCachedSchedules
} from 'loot-core/src/client/data-hooks/schedules';
import { getPayeesById } from 'loot-core/src/client/reducers/queries';
import { useActiveLocation } from '../ActiveLocation';
function EmptyMessage({ onAdd }) {
return (
@ -642,7 +614,7 @@ const AccountHeader = React.memo(
let searchInput = useRef(null);
let splitsExpanded = useSplitsExpanded();
let canSync = syncEnabled && (account && account.account_id);
let canSync = syncEnabled && account && account.account_id;
if (!account) {
// All accounts - check for any syncable account
canSync = !!accounts.find(account => !!account.account_id);
@ -1701,9 +1673,9 @@ class AccountInternal extends React.PureComponent {
}
showAccount={
!accountId ||
(accountId === 'offbudget' ||
accountId === 'offbudget' ||
accountId === 'budgeted' ||
accountId === 'uncategorized')
accountId === 'uncategorized'
}
isAdding={this.state.isAdding}
isNew={this.isNew}

View file

@ -1,8 +1,7 @@
import React, { useState } from 'react';
import { Route, withRouter } from 'react-router-dom';
import { connect } from 'react-redux';
import * as actions from 'loot-core/src/client/actions';
import { View, Text, Button, Tooltip } from 'loot-design/src/components/common';
import { View, Button, Tooltip } from 'loot-design/src/components/common';
import ExclamationOutline from 'loot-design/src/svg/v1/ExclamationOutline';
import { colors } from 'loot-design/src/style';
import { reauthorizeBank } from '../../plaid';

View file

@ -15,7 +15,6 @@ import {
Tooltip,
Stack,
Button,
InitialFocus,
Menu,
CustomSelect
} from 'loot-design/src/components/common';
@ -31,9 +30,9 @@ import {
} from 'loot-core/src/shared/rules';
import DeleteIcon from 'loot-design/src/svg/Delete';
import SettingsSliderAlternate from 'loot-design/src/svg/v2/SettingsSliderAlternate';
import { colors } from 'loot-design/src/style';
import GenericInput from '../util/GenericInput';
import { Value } from '../modals/ManageRules';
import { styles, colors } from 'loot-design/src/style';
let filterFields = [
'date',
@ -149,7 +148,11 @@ function ConfigureField({ field, op, value, dispatch, onApply }) {
['amount-outflow', 'Amount (outflow)']
]
: field === 'date'
? [['date', 'Date'], ['month', 'Month'], ['year', 'Year']]
? [
['date', 'Date'],
['month', 'Month'],
['year', 'Year']
]
: null
}
value={subfield}

View file

@ -2,7 +2,6 @@ import React, { useMemo, useCallback } from 'react';
import { useSelector } from 'react-redux';
import {
format as formatDate,
parse as parseDate,
parseISO,
isValid as isDateValid
} from 'date-fns';
@ -17,14 +16,9 @@ import {
useSelectedItems,
useSelectedDispatch
} from 'loot-design/src/components/useSelected';
import {
integerToAmount,
amountToInteger,
integerToCurrency
} from 'loot-core/src/shared/util';
import { integerToCurrency } from 'loot-core/src/shared/util';
import {
getAccountsById,
getPayeesById,
getCategoriesById
} from 'loot-core/src/client/reducers/queries';
import ArrowsSynchronize from 'loot-design/src/svg/v2/ArrowsSynchronize';

View file

@ -1,13 +1,5 @@
import React, {
useRef,
useEffect,
useCallback,
useLayoutEffect,
useMemo
} from 'react';
import React, { useRef, useEffect, useCallback, useLayoutEffect } from 'react';
import { useDispatch } from 'react-redux';
import { TransactionTable } from './TransactionsTable';
import lively from '@jlongster/lively';
import {
splitTransaction,
updateTransaction,
@ -16,8 +8,8 @@ import {
applyTransactionDiff
} from 'loot-core/src/shared/transactions';
import { send } from 'loot-core/src/platform/client/fetch';
import { pushModal } from 'loot-core/src/client/actions/modals';
import { getChangedValues, applyChanges } from 'loot-core/src/shared/util';
import { TransactionTable } from './TransactionsTable';
const uuid = require('loot-core/src/platform/uuid');
// When data changes, there are two ways to update the UI:

View file

@ -5,25 +5,16 @@ import React, {
useCallback,
useLayoutEffect,
useEffect,
useImperativeHandle,
useContext,
useReducer
} from 'react';
import { useSelector, useDispatch } from 'react-redux';
import {
format as formatDate,
parse as parseDate,
parseISO,
isValid as isDateValid
} from 'date-fns';
import q, { runQuery } from 'loot-core/src/client/query-helpers';
import {
View,
Text,
Stack,
Tooltip,
Button
} from 'loot-design/src/components/common';
import { View, Text, Tooltip, Button } from 'loot-design/src/components/common';
import CategoryAutocomplete from 'loot-design/src/components/CategorySelect';
import PayeeAutocomplete from 'loot-design/src/components/PayeeAutocomplete';
import AccountAutocomplete from 'loot-design/src/components/AccountAutocomplete';
@ -31,15 +22,12 @@ import DateSelect from 'loot-design/src/components/DateSelect';
import RightArrow2 from 'loot-design/src/svg/RightArrow2';
import LeftArrow2 from 'loot-design/src/svg/LeftArrow2';
import Hyperlink2 from 'loot-design/src/svg/v2/Hyperlink2';
import DeleteIcon from 'loot-design/src/svg/Delete';
import CheveronDown from 'loot-design/src/svg/v1/CheveronDown';
import CalendarIcon from 'loot-design/src/svg/v2/Calendar';
import ArrowsSynchronize from 'loot-design/src/svg/v2/ArrowsSynchronize';
import {
integerToCurrency,
amountToInteger,
applyChanges,
debugMemoFailure,
titleFirst
} from 'loot-core/src/shared/util';
import evalArithmetic from 'loot-core/src/shared/arithmetic';
@ -48,13 +36,12 @@ import {
getPayeesById,
getCategoriesById
} from 'loot-core/src/client/reducers/queries';
import { currentDay, dayFromDate, addDays } from 'loot-core/src/shared/months';
import { currentDay } from 'loot-core/src/shared/months';
import {
splitTransaction,
updateTransaction,
deleteTransaction,
addSplitTransaction,
ungroupTransaction
addSplitTransaction
} from 'loot-core/src/shared/transactions';
import { styles, colors } from 'loot-design/src/style';
import {
@ -67,18 +54,16 @@ import {
CustomCell,
CellButton,
useTableNavigator,
Table,
ROW_HEIGHT
Table
} from 'loot-design/src/components/table';
import {
useSelectedDispatch,
useSelectedItems
} from 'loot-design/src/components/useSelected';
import { keys } from 'loot-design/src/util/keys';
import { useMergedRefs } from 'loot-design/src/components/useMergedRefs';
import { getStatusProps } from '../schedules/StatusBadge';
import { useCachedSchedules } from 'loot-core/src/client/data-hooks/schedules';
import { getScheduledAmount } from 'loot-core/src/shared/schedules';
import { getStatusProps } from '../schedules/StatusBadge';
let TABLE_BACKGROUND_COLOR = colors.n11;

View file

@ -1,15 +1,23 @@
import React from 'react';
import { act } from 'react-dom/test-utils';
import { render, fireEvent } from '@testing-library/react';
import { debugDOM } from 'loot-core/src/mocks/util';
import { format as formatDate, parse as parseDate } from 'date-fns';
import { integerToCurrency } from 'loot-core/src/shared/util';
import { initServer } from 'loot-core/src/platform/client/fetch';
import {
generateTransaction,
generateAccount,
generateCategoryGroups
generateCategoryGroups,
TestProvider
} from 'loot-core/src/mocks';
import {
addSplitTransaction,
realizeTempTransactions,
splitTransaction,
updateTransaction
} from 'loot-core/src/shared';
import { SelectedProviderWithItems } from 'loot-design/src/components';
import { SplitsExpandedProvider, TransactionTable } from './TransactionsTable';
const uuid = require('loot-core/src/platform/uuid');
const accounts = [generateAccount('Bank of America')];

View file

@ -1,6 +1,6 @@
import React, { useState, useLayoutEffect } from 'react';
import { styles, colors } from 'loot-design/src/style';
import { View, Text } from 'loot-design/src/components/common';
import React from 'react';
import { colors } from 'loot-design/src/style';
import { View } from 'loot-design/src/components/common';
import { useBudgetMonthCount } from 'loot-design/src/components/budget/BudgetMonthCountContext';
import CalendarIcon from 'loot-design/src/svg/v2/Calendar';

View file

@ -1,3 +1,7 @@
import React from 'react';
/* eslint-disable */
function BudgetSheetHeader({ row }) {
return (
<Row style={{ zIndex: 200, backgroundColor: colors.grey1, marginLeft: 20 }}>

View file

@ -1,14 +1,9 @@
import React, { useEffect, useContext, useMemo } from 'react';
import React, { useContext, useMemo } from 'react';
import { connect } from 'react-redux';
import { withRouter } from 'react-router-dom';
import { bindActionCreators } from 'redux';
import AutoSizer from 'react-virtualized-auto-sizer';
import memoizeOne from 'memoize-one';
import * as actions from 'loot-core/src/client/actions';
import { send, listen } from 'loot-core/src/platform/client/fetch';
import * as monthUtils from 'loot-core/src/shared/months';
import { getValidMonthBounds } from 'loot-design/src/components/budget/MonthsContext';
import { TitlebarContext } from '../Titlebar';
import * as rollover from 'loot-design/src/components/budget/rollover/rollover-components';
import { RolloverContext } from 'loot-design/src/components/budget/rollover/RolloverContext';
@ -19,7 +14,7 @@ import { ReportProvider } from 'loot-design/src/components/budget/report/ReportC
import DynamicBudgetTable from 'loot-design/src/components/budget/DynamicBudgetTable';
import SpreadsheetContext from 'loot-design/src/components/spreadsheet/SpreadsheetContext';
import { View } from 'loot-design/src/components/common';
import { styles, colors } from 'loot-design/src/style';
import { styles } from 'loot-design/src/style';
import {
addCategory,
updateCategory,
@ -30,6 +25,7 @@ import {
updateGroup,
deleteGroup
} from 'loot-core/src/shared/categories.js';
import { TitlebarContext } from '../Titlebar';
let _initialBudgetMonth = null;

View file

@ -1,23 +1,16 @@
import React, { useState, useEffect, useCallback } from 'react';
import React, { useState, useEffect } from 'react';
import { useDispatch } from 'react-redux';
import { useHistory } from 'react-router-dom';
import * as actions from 'loot-core/src/client/actions';
import {
View,
Text,
Button,
ButtonWithLoading
} from 'loot-design/src/components/common';
import { colors, styles } from 'loot-design/src/style';
import { colors } from 'loot-design/src/style';
import { signOut, loggedIn } from 'loot-core/src/client/actions/user';
import { send } from 'loot-core/src/platform/client/fetch';
import {
useBootstrapped,
Title,
Input,
Link,
ExternalLink
} from './subscribe/common';
import { Title, Input } from './subscribe/common';
export default function ConfigServer() {
let dispatch = useDispatch();

View file

@ -2,13 +2,13 @@ import React from 'react';
import { connect } from 'react-redux';
import { createBrowserHistory } from 'history';
import { Switch, Redirect, Router, Route } from 'react-router-dom';
import { send } from 'loot-core/src/platform/client/fetch';
import * as actions from 'loot-core/src/client/actions';
import { View, Text } from 'loot-design/src/components/common';
import { colors } from 'loot-design/src/style';
import ServerURL from './ServerURL';
import LoggedInUser from '../LoggedInUser';
import Notifications from '../Notifications';
import useServerVersion from '../../hooks/useServerVersion';
import ServerURL from './ServerURL';
import Modals from './Modals';
import Login from './subscribe/Login';
@ -16,7 +16,6 @@ import Bootstrap from './subscribe/Bootstrap';
import Error from './subscribe/Error';
import ChangePassword from './subscribe/ChangePassword';
import ConfigServer from './ConfigServer';
import useServerVersion from '../../hooks/useServerVersion';
function Version() {
const version = useServerVersion();
@ -230,8 +229,7 @@ class ManagementApp extends React.Component {
}
}
export default connect(
state => {
export default connect(state => {
let { modalStack } = state.modals;
return {
@ -241,6 +239,4 @@ export default connect(
loadingText: state.app.loadingText,
currentModals: modalStack.map(modal => modal.name)
};
},
actions
)(ManagementApp);
}, actions)(ManagementApp);

View file

@ -14,7 +14,6 @@ import ImportActual from 'loot-design/src/components/manager/ImportActual';
import DeleteFile from 'loot-design/src/components/manager/DeleteFile';
import CreateEncryptionKey from '../modals/CreateEncryptionKey';
import FixEncryptionKey from '../modals/FixEncryptionKey';
import { colors } from 'loot-design/src/style';
function Modals({
modalStack,

View file

@ -1,10 +1,5 @@
import React, { useState, useEffect } from 'react';
import {
View,
Text,
AnchorLink,
Button
} from 'loot-design/src/components/common';
import { View, Text, AnchorLink } from 'loot-design/src/components/common';
import { send } from 'loot-core/src/platform/client/fetch';
export default function ServerURL() {

View file

@ -1,14 +1,13 @@
import React, { useState, useEffect, useCallback } from 'react';
import React, { useState } from 'react';
import { useDispatch } from 'react-redux';
import { useHistory } from 'react-router-dom';
import * as actions from 'loot-core/src/client/actions';
import { View, Text, Button } from 'loot-design/src/components/common';
import { colors, styles } from 'loot-design/src/style';
import { colors } from 'loot-design/src/style';
import { loggedIn } from 'loot-core/src/client/actions/user';
import { createBudget } from 'loot-core/src/client/actions/budgets';
import { send } from 'loot-core/src/platform/client/fetch';
import { ConfirmPasswordForm } from './ConfirmPasswordForm';
import { useBootstrapped, Title, Input, Link, ExternalLink } from './common';
import { useBootstrapped, Title } from './common';
export default function Bootstrap() {
let dispatch = useDispatch();

View file

@ -1,19 +1,11 @@
import React, { useState, useCallback } from 'react';
import React, { useState } from 'react';
import { useDispatch } from 'react-redux';
import { useHistory } from 'react-router-dom';
import * as actions from 'loot-core/src/client/actions';
import {
View,
Text,
Button,
ButtonWithLoading
} from 'loot-design/src/components/common';
import { colors, styles } from 'loot-design/src/style';
import { loggedIn } from 'loot-core/src/client/actions/user';
import { createBudget } from 'loot-core/src/client/actions/budgets';
import { View, Text, Button } from 'loot-design/src/components/common';
import { colors } from 'loot-design/src/style';
import { send } from 'loot-core/src/platform/client/fetch';
import { ConfirmPasswordForm } from './ConfirmPasswordForm';
import { useBootstrapped, Title, Input, Link, ExternalLink } from './common';
import { Title } from './common';
export default function ChangePassword() {
let dispatch = useDispatch();

View file

@ -1,9 +1,5 @@
import React, { useState } from 'react';
import {
View,
Button,
ButtonWithLoading
} from 'loot-design/src/components/common';
import { View, ButtonWithLoading } from 'loot-design/src/components/common';
import { Input } from './common';
export function ConfirmPasswordForm({ buttons, onSetPassword, onError }) {
@ -47,6 +43,7 @@ export function ConfirmPasswordForm({ buttons, onSetPassword, onError }) {
type={showPassword ? 'text' : 'password'}
value={password1}
onChange={e => setPassword1(e.target.value)}
onEnter={onSubmit}
/>
<Input
placeholder="Confirm password"
@ -54,6 +51,7 @@ export function ConfirmPasswordForm({ buttons, onSetPassword, onError }) {
value={password2}
onChange={e => setPassword2(e.target.value)}
style={{ marginTop: 10 }}
onEnter={onSubmit}
/>
<View
@ -69,10 +67,7 @@ export function ConfirmPasswordForm({ buttons, onSetPassword, onError }) {
</label>
<View style={{ flex: 1 }} />
{buttons}
<ButtonWithLoading
primary
loading={loading}
>
<ButtonWithLoading primary loading={loading}>
OK
</ButtonWithLoading>
</View>

View file

@ -1,12 +1,7 @@
import React, { useState, useEffect } from 'react';
import React from 'react';
import { useHistory, useLocation } from 'react-router-dom';
import {
View,
Text,
Button,
ButtonWithLoading
} from 'loot-design/src/components/common';
import { colors, styles } from 'loot-design/src/style';
import { View, Text, Button } from 'loot-design/src/components/common';
import { colors } from 'loot-design/src/style';
function getErrorMessage(reason) {
switch (reason) {

View file

@ -1,18 +1,17 @@
import React, { useState, useCallback } from 'react';
import React, { useState } from 'react';
import { useDispatch } from 'react-redux';
import { useHistory } from 'react-router-dom';
import * as actions from 'loot-core/src/client/actions';
import {
View,
Text,
Button,
ButtonWithLoading
} from 'loot-design/src/components/common';
import { colors, styles } from 'loot-design/src/style';
import { colors } from 'loot-design/src/style';
import { loggedIn } from 'loot-core/src/client/actions/user';
import { createBudget } from 'loot-core/src/client/actions/budgets';
import { send } from 'loot-core/src/platform/client/fetch';
import { useBootstrapped, Title, Input, Link, ExternalLink } from './common';
import { useBootstrapped, Title, Input } from './common';
export default function Login() {
let dispatch = useDispatch();

View file

@ -1,10 +1,8 @@
import React, { useEffect, useState } from 'react';
import { useHistory, useLocation } from 'react-router-dom';
import {
AnchorLink,
Text,
Button,
ButtonLink,
Input as BaseInput
} from 'loot-design/src/components/common';
import { colors, styles } from 'loot-design/src/style';

View file

@ -4,8 +4,7 @@ import {
Text,
Block,
Modal,
Button,
Select
Button
} from 'loot-design/src/components/common';
import { colors } from 'loot-design/src/style';
import { NativeCategorySelect } from 'loot-design/src/components/CategorySelect';

View file

@ -2,15 +2,7 @@ import React from 'react';
import { bindActionCreators } from 'redux';
import { connect } from 'react-redux';
import * as actions from 'loot-core/src/client/actions';
import { send } from 'loot-core/src/platform/client/fetch';
import {
View,
Text,
Modal,
Button,
Strong,
P
} from 'loot-design/src/components/common';
import { View, Text, Modal, Button } from 'loot-design/src/components/common';
import { colors } from 'loot-design/src/style';
import { authorizeBank } from '../../plaid';

View file

@ -3,9 +3,7 @@ import { css } from 'glamor';
import {
View,
Text,
Stack,
Modal,
Button,
ButtonWithLoading,
ExternalLink,
P,
@ -14,7 +12,7 @@ import {
InitialFocus
} from 'loot-design/src/components/common';
import { send } from 'loot-core/src/platform/client/fetch';
import { styles, colors } from 'loot-design/src/style';
import { colors } from 'loot-design/src/style';
import { getCreateKeyError } from 'loot-core/src/shared/errors';
export default function CreateEncryptionKey({

View file

@ -1,28 +1,21 @@
import React, { useState, useEffect, useRef, useCallback } from 'react';
import { bindActionCreators } from 'redux';
import { useDispatch, useSelector } from 'react-redux';
import {
initiallyLoadPayees,
setUndoEnabled
} from 'loot-core/src/client/actions/queries';
import * as undo from 'loot-core/src/platform/client/undo';
import q, { runQuery } from 'loot-core/src/client/query-helpers';
import {
View,
Text,
Modal,
Button,
Select,
Stack,
Input,
CustomSelect,
Tooltip
} from 'loot-design/src/components/common';
import GenericInput from '../util/GenericInput';
import { keys } from 'loot-design/src/util/keys';
import { send, listen, unlisten } from 'loot-core/src/platform/client/fetch';
import { getStatus } from 'loot-core/src/shared/schedules';
import { colors, styles } from 'loot-design/src/style';
import { send } from 'loot-core/src/platform/client/fetch';
import { colors } from 'loot-design/src/style';
import SubtractIcon from 'loot-design/src/svg/Subtract';
import AddIcon from 'loot-design/src/svg/Add';
import InformationOutline from 'loot-design/src/svg/v1/InformationOutline';
@ -39,9 +32,6 @@ import {
import useSelected, {
SelectedProvider
} from 'loot-design/src/components/useSelected';
import SimpleTransactionsTable from '../accounts/SimpleTransactionsTable';
import { StatusBadge } from '../schedules/StatusBadge';
import DisplayId from '../util/DisplayId';
import { useSchedules } from 'loot-core/src/client/data-hooks/schedules';
import {
integerToCurrency,
@ -49,6 +39,10 @@ import {
amountToInteger
} from 'loot-core/src/shared/util';
import * as monthUtils from 'loot-core/src/shared/months';
import SimpleTransactionsTable from '../accounts/SimpleTransactionsTable';
import { StatusBadge } from '../schedules/StatusBadge';
import DisplayId from '../util/DisplayId';
import GenericInput from '../util/GenericInput';
import { BetweenAmountInput } from '../util/AmountInput';
function updateValue(array, value, update) {

View file

@ -12,7 +12,7 @@ import {
ExternalLink
} from 'loot-design/src/components/common';
import { send } from 'loot-core/src/platform/client/fetch';
import { styles, colors } from 'loot-design/src/style';
import { colors } from 'loot-design/src/style';
import { getTestKeyError } from 'loot-core/src/shared/errors';
export default function FixEncryptionKey({

View file

@ -1,16 +1,8 @@
import React, {
useState,
useEffect,
useRef,
useCallback,
useMemo,
useImperativeHandle
} from 'react';
import React, { useState, useEffect, useRef, useCallback } from 'react';
import { useDispatch, useSelector } from 'react-redux';
import { css } from 'glamor';
import { format as formatDate, parseISO } from 'date-fns';
import * as undo from 'loot-core/src/platform/client/undo';
import * as actions from 'loot-core/src/client/actions';
import { initiallyLoadPayees } from 'loot-core/src/client/actions/queries';
import q from 'loot-core/src/client/query-helpers';
import { liveQueryContext } from 'loot-core/src/client/query-hooks';
@ -37,14 +29,12 @@ import useSelected, {
SelectedProvider
} from 'loot-design/src/components/useSelected';
import { integerToCurrency } from 'loot-core/src/shared/util';
import { send, listen, unlisten } from 'loot-core/src/platform/client/fetch';
import { send } from 'loot-core/src/platform/client/fetch';
import { pushModal } from 'loot-core/src/client/actions/modals';
import { mapField, friendlyOp } from 'loot-core/src/shared/rules';
import ArrowRight from 'loot-design/src/svg/RightArrow2';
import InformationOutline from 'loot-design/src/svg/v1/InformationOutline';
import ExpandArrow from 'loot-design/src/svg/ExpandArrow';
import { colors, styles } from 'loot-design/src/style';
import { dayFromDate, getMonthYearFormat } from 'loot-core/src/shared/months';
import { colors } from 'loot-design/src/style';
import { getMonthYearFormat } from 'loot-core/src/shared/months';
import {
extractScheduleConds,
getRecurringDescription

View file

@ -6,11 +6,10 @@ import {
Modal,
ModalButtons,
Button,
P,
Stack
P
} from 'loot-design/src/components/common';
import { Information } from 'loot-design/src/components/alerts';
import { colors, styles } from 'loot-design/src/style';
import { colors } from 'loot-design/src/style';
import { send } from 'loot-core/src/platform/client/fetch';
import { replaceModal } from 'loot-core/src/client/actions/modals';

View file

@ -3,9 +3,7 @@ import { connect } from 'react-redux';
import * as actions from 'loot-core/src/client/actions';
import {
View,
Text,
Modal,
Button,
P,
ExternalLink
} from 'loot-design/src/components/common';
@ -70,7 +68,4 @@ function WelcomeScreen({ modalProps, actions }) {
);
}
export default connect(
null,
actions
)(WelcomeScreen);
export default connect(null, actions)(WelcomeScreen);

View file

@ -1,10 +1,8 @@
import React, { useState, useEffect, useRef } from 'react';
import { bindActionCreators } from 'redux';
import { connect } from 'react-redux';
import * as actions from 'loot-core/src/client/actions';
import * as undo from 'loot-core/src/platform/client/undo';
import uuid from 'loot-core/src/platform/uuid';
import { send, listen, unlisten } from 'loot-core/src/platform/client/fetch';
import { send, listen } from 'loot-core/src/platform/client/fetch';
import { ManagePayees } from 'loot-design/src/components/payees';
import { applyChanges } from 'loot-core/src/shared/util';

View file

@ -11,14 +11,13 @@ import { styles } from 'loot-design/src/style';
import { send } from 'loot-core/src/platform/client/fetch';
import * as monthUtils from 'loot-core/src/shared/months';
import { integerToCurrency } from 'loot-core/src/shared/util';
import { fromDateRepr } from './util';
import { colors } from 'loot-design/src/style';
import Header from './Header';
import Change from './Change';
import CashFlowGraph from './graphs/CashFlowGraph';
import { cashFlowByDate } from './graphs/cash-flow-spreadsheet';
import useReport from './useReport';
import { useArgsMemo } from './util';
import { colors } from 'loot-design/src/style';
function CashFlow() {
const [earliestMonth, setEarliestMonth] = useState(null);

View file

@ -2,7 +2,7 @@ import React from 'react';
import { styles } from 'loot-design/src/style';
import { integerToCurrency } from 'loot-core/src/shared/util';
import { Block } from 'loot-design/src/components/common';
import { colors } from 'loot-design/src/style'
import { colors } from 'loot-design/src/style';
function Change({ amount, style }) {
return (

View file

@ -1,9 +1,8 @@
import React from 'react';
import { colors, styles } from 'loot-design/src/style';
import { styles } from 'loot-design/src/style';
import {
View,
Select,
Link,
Button,
ButtonLink
} from 'loot-design/src/components/common';

View file

@ -110,7 +110,10 @@ function CashFlowCard() {
const end = monthUtils.currentDay();
const start = monthUtils.currentMonth() + '-01';
const data = useReport('cash_flow_simple', useArgsMemo(simpleCashFlow)(start, end));
const data = useReport(
'cash_flow_simple',
useArgsMemo(simpleCashFlow)(start, end)
);
if (!data) {
return null;
}

View file

@ -8,10 +8,10 @@ import {
VictoryGroup
} from 'victory';
import * as d from 'date-fns';
import { colors } from 'loot-design/src/style';
import Container from '../Container';
import Tooltip from '../Tooltip';
import theme from '../chart-theme';
import { colors } from 'loot-design/src/style';
function CashFlowGraph({ style, start, end, graphData, isConcise, compact }) {
return (

View file

@ -1,5 +1,4 @@
import React from 'react';
import { mergeObjects, flattenArray } from 'loot-core/src/shared/util';
import * as monthUtils from 'loot-core/src/shared/months';
import * as d from 'date-fns';
import { AlignedText } from 'loot-design/src/components/common';
@ -9,7 +8,7 @@ import {
integerToAmount,
amountToInteger
} from 'loot-core/src/shared/util';
import { fromDateRepr, runAll, index } from '../util';
import { index } from '../util';
export default function createSpreadsheet(start, end, accounts) {
return async (spreadsheet, setData) => {

View file

@ -1,5 +1,5 @@
import { useMemo } from 'react';
import q, { runQuery } from 'loot-core/src/client/query-helpers';
import { runQuery } from 'loot-core/src/client/query-helpers';
export function useArgsMemo(func) {
return (...args) => {

View file

@ -1,13 +1,10 @@
import React, { useCallback, useState, useEffect } from 'react';
import { useSelector } from 'react-redux';
import React, { useState, useEffect } from 'react';
import { useLocation, useHistory } from 'react-router-dom';
import q, { runQuery } from 'loot-core/src/client/query-helpers';
import Platform from 'loot-core/src/client/platform';
import { useSchedules } from 'loot-core/src/client/data-hooks/schedules';
import { send } from 'loot-core/src/platform/client/fetch';
import {
View,
Text,
Stack,
Button,
ButtonWithLoading,
@ -18,19 +15,18 @@ import {
TableHeader,
Row,
Field,
Cell,
SelectCell
} from 'loot-design/src/components/table';
import { getRecurringDescription } from 'loot-core/src/shared/schedules';
import { colors, styles } from 'loot-design/src/style';
import { colors } from 'loot-design/src/style';
import useSelected, {
useSelectedDispatch,
useSelectedItems,
SelectedProvider
} from 'loot-design/src/components/useSelected';
import { Page } from '../Page';
import { ScheduleAmountCell } from './SchedulesTable';
import DisplayId from '../util/DisplayId';
import { ScheduleAmountCell } from './SchedulesTable';
let ROW_HEIGHT = 43;

View file

@ -1,8 +1,7 @@
import React, { useEffect, useState, useReducer } from 'react';
import React, { useEffect, useReducer } from 'react';
import { useParams, useHistory } from 'react-router-dom';
import { useDispatch, useSelector } from 'react-redux';
import { pushModal } from 'loot-core/src/client/actions/modals';
import { css } from 'glamor';
import { send, sendCatch } from 'loot-core/src/platform/client/fetch';
import q, { runQuery, liveQuery } from 'loot-core/src/client/query-helpers';
import { extractScheduleConds } from 'loot-core/src/shared/schedules';
@ -13,31 +12,21 @@ import {
FormLabel,
Checkbox
} from 'loot-design/src/components/forms';
import { colors, styles } from 'loot-design/src/style';
import { colors } from 'loot-design/src/style';
import PayeeAutocomplete from 'loot-design/src/components/PayeeAutocomplete';
import AccountAutocomplete from 'loot-design/src/components/AccountAutocomplete';
import {
Stack,
Input,
InputWithContent,
View,
Text,
Button,
ModalButtons
} from 'loot-design/src/components/common';
import { Stack, View, Text, Button } from 'loot-design/src/components/common';
import DateSelect from 'loot-design/src/components/DateSelect';
import { SelectedItemsButton } from 'loot-design/src/components/table';
import SimpleTransactionsTable from '../accounts/SimpleTransactionsTable';
import { usePageType } from '../Page';
import { Page } from '../Page';
import useSelected, {
SelectedProvider
} from 'loot-design/src/components/useSelected';
import RecurringSchedulePicker from 'loot-design/src/components/RecurringSchedulePicker';
import SimpleTransactionsTable from '../accounts/SimpleTransactionsTable';
import { usePageType } from '../Page';
import { Page } from '../Page';
import { OpSelect } from '../modals/EditRule';
import { AmountInput, BetweenAmountInput } from '../util/AmountInput';
import { SchedulesProviderRaw } from 'loot-core/src/client/data-hooks/schedules';
import RecurringSchedulePicker from 'loot-design/src/components/RecurringSchedulePicker';
function mergeFields(defaults, initial) {
let res = { ...defaults };

View file

@ -3,7 +3,7 @@ import { useSelector } from 'react-redux';
import { useLocation, useHistory } from 'react-router-dom';
import { useSchedules } from 'loot-core/src/client/data-hooks/schedules';
import { send } from 'loot-core/src/platform/client/fetch';
import { View, Text } from 'loot-design/src/components/common';
import { Text } from 'loot-design/src/components/common';
import { Page } from '../Page';
import { SchedulesTable } from './SchedulesTable';

View file

@ -1,19 +1,10 @@
import React from 'react';
import { useSelector } from 'react-redux';
import { useLocation, useHistory } from 'react-router-dom';
import { useSchedules } from 'loot-core/src/client/data-hooks/schedules';
import { send } from 'loot-core/src/platform/client/fetch';
import {
View,
Text,
P,
Button,
Stack
} from 'loot-design/src/components/common';
import { Text, P, Button, Stack } from 'loot-design/src/components/common';
import { colors } from 'loot-design/src/style';
import { Page } from '../Page';
import { SchedulesTable } from './SchedulesTable';
import DisplayId from '../util/DisplayId';
import { colors, styles } from 'loot-design/src/style';
export default function PostsOfflineNotification() {
let location = useLocation();

View file

@ -1,7 +1,7 @@
import React, { useState, useMemo } from 'react';
import { useSelector } from 'react-redux';
import { integerToCurrency } from 'loot-core/src/shared/util';
import { colors, styles } from 'loot-design/src/style';
import { colors } from 'loot-design/src/style';
import {
View,
Text,
@ -14,8 +14,7 @@ import {
TableHeader,
Row,
Field,
Cell,
SelectCell
Cell
} from 'loot-design/src/components/table';
import * as monthUtils from 'loot-core/src/shared/months';
import { getScheduledAmount } from 'loot-core/src/shared/schedules';

View file

@ -1,16 +1,9 @@
import React, { useMemo, useEffect, useState } from 'react';
import React from 'react';
import { useHistory } from 'react-router-dom';
import {
View,
Text,
Button,
Tooltip,
Menu
} from 'loot-design/src/components/common';
import { colors, styles } from 'loot-design/src/style';
import { View, Button } from 'loot-design/src/components/common';
import { send } from 'loot-core/src/platform/client/fetch';
import { Page } from '../Page';
import { useSchedules } from 'loot-core/src/client/data-hooks/schedules';
import { Page } from '../Page';
import { SchedulesTable, ROW_HEIGHT } from './SchedulesTable';
export default function Schedules() {

View file

@ -1,12 +1,7 @@
import React, { useCallback, useState, useEffect } from 'react';
import React, { useState } from 'react';
import { send } from 'loot-core/src/platform/client/fetch';
import { colors } from 'loot-design/src/style';
import {
View,
Text,
P,
ButtonWithLoading
} from 'loot-design/src/components/common';
import { View, P, ButtonWithLoading } from 'loot-design/src/components/common';
import { Page } from '../Page';
function renderResults(results) {

View file

@ -1,7 +1,7 @@
import React from 'react';
import { Tooltip, Pointer, P } from 'loot-design/src/components/common';
import { colors } from 'loot-design/src/style';
import Navigation from './Navigation';
import { styles, colors } from 'loot-design/src/style';
import { Title } from './common';
function BudgetInitial({ targetRect, navigationProps }) {

View file

@ -1,8 +1,8 @@
import React, { useState } from 'react';
import React from 'react';
import { bindActionCreators } from 'redux';
import { connect } from 'react-redux';
import * as actions from 'loot-core/src/client/actions';
import { View, P, Button } from 'loot-design/src/components/common';
import { P, Button } from 'loot-design/src/components/common';
import { Title, Standalone, useMinimized } from './common';
import Navigation from './Navigation';
@ -15,9 +15,9 @@ function BudgetInitial({ accounts, navigationProps }) {
{!minimized && (
<React.Fragment>
<P>
You should see all of your current accounts' balance available
to budget. Click on the budgeted column for a category create a
budget. Keep doing this until your "To Budget" amount is zero.
You should see all of your current accounts' balance available to
budget. Click on the budgeted column for a category create a budget.
Keep doing this until your "To Budget" amount is zero.
</P>
<P>
Don't worry too much about your initial budget. Just guess. You'll

View file

@ -1,7 +1,7 @@
import React from 'react';
import { Tooltip, Pointer, P } from 'loot-design/src/components/common';
import { colors } from 'loot-design/src/style';
import Navigation from './Navigation';
import { styles, colors } from 'loot-design/src/style';
import { Title } from './common';
function BudgetSummary({ targetRect, navigationProps }) {

View file

@ -2,15 +2,8 @@ import React from 'react';
import { bindActionCreators } from 'redux';
import { connect } from 'react-redux';
import * as actions from 'loot-core/src/client/actions';
import {
View,
Tooltip,
Pointer,
P,
Button
} from 'loot-design/src/components/common';
import { View, P, Button } from 'loot-design/src/components/common';
import Navigation from './Navigation';
import { styles, colors } from 'loot-design/src/style';
import { Standalone, Title, useMinimized } from './common';
function BudgetNextMonth({ stepTwo, navigationProps }) {
@ -61,7 +54,6 @@ function BudgetNextMonth({ stepTwo, navigationProps }) {
);
}
export default connect(
null,
dispatch => bindActionCreators(actions, dispatch)
)(BudgetNextMonth);
export default connect(null, dispatch => bindActionCreators(actions, dispatch))(
BudgetNextMonth
);

View file

@ -1,7 +1,7 @@
import React from 'react';
import { Tooltip, Pointer, P } from 'loot-design/src/components/common';
import { colors } from 'loot-design/src/style';
import Navigation from './Navigation';
import { styles, colors } from 'loot-design/src/style';
import { Title } from './common';
function BudgetSummary({ fromYNAB, targetRect, navigationProps }) {

View file

@ -1,11 +1,10 @@
import React, { useState } from 'react';
import { Tooltip, Pointer, P, Button } from 'loot-design/src/components/common';
import React from 'react';
import { P, Button } from 'loot-design/src/components/common';
import Navigation from './Navigation';
import { styles, colors } from 'loot-design/src/style';
import { Standalone, Title, useMinimized } from './common';
function CategoryBalance({ targetRect, navigationProps }) {
let [minimized, toggle] = useMinimized()
let [minimized, toggle] = useMinimized();
return (
<Standalone>

View file

@ -1,7 +1,6 @@
import React from 'react';
import { P } from 'loot-design/src/components/common';
import Navigation from './Navigation';
import { styles, colors } from 'loot-design/src/style';
import { Standalone, Title } from './common';
function DeleteTransactions({ targetRect, navigationProps }) {

View file

@ -1,7 +1,5 @@
import React from 'react';
import { P, ModalButtons, Button } from 'loot-design/src/components/common';
import Navigation from './Navigation';
import { styles, colors } from 'loot-design/src/style';
import { Standalone, Title, ExternalLink } from './common';
function Final({ targetRect, navigationProps }) {

View file

@ -2,12 +2,10 @@ import React from 'react';
import {
View,
Text,
Block,
P,
ModalButtons,
Button
} from 'loot-design/src/components/common';
import { styles, colors } from 'loot-design/src/style';
import { Standalone, Title, ExternalLink } from './common';
function Intro({ fromYNAB, nextTutorialStage, closeTutorial }) {

View file

@ -2,21 +2,12 @@ import React from 'react';
import { bindActionCreators } from 'redux';
import { connect } from 'react-redux';
import * as actions from 'loot-core/src/client/actions';
import * as spreadsheet from 'loot-core/src/client/sheetql/spreadsheet';
import SheetValue from 'loot-design/src/components/spreadsheet/SheetValue';
import NamespaceContext from 'loot-design/src/components/spreadsheet/NamespaceContext';
import {
Tooltip,
Pointer,
P,
View,
Text,
Button
} from 'loot-design/src/components/common';
import { P, View, Text, Button } from 'loot-design/src/components/common';
import * as monthUtils from 'loot-core/src/shared/months';
import { integerToCurrency } from 'loot-core/src/shared/util';
import Navigation from './Navigation';
import { colors } from 'loot-design/src/style';
import { Standalone, Title, useMinimized } from './common';
function Overspending({ navigationProps, stepTwo }) {
@ -96,7 +87,6 @@ function Overspending({ navigationProps, stepTwo }) {
);
}
export default connect(
null,
dispatch => bindActionCreators(actions, dispatch)
)(Overspending);
export default connect(null, dispatch => bindActionCreators(actions, dispatch))(
Overspending
);

View file

@ -1,7 +1,7 @@
import React from 'react';
import { Tooltip, Pointer, P } from 'loot-design/src/components/common';
import { colors } from 'loot-design/src/style';
import Navigation from './Navigation';
import { styles, colors } from 'loot-design/src/style';
import { Title } from './common';
function TransactionAdd({ targetRect, navigationProps }) {
@ -33,8 +33,8 @@ function TransactionAdd({ targetRect, navigationProps }) {
</P>
<P isLast={true}>
Try <strong>clicking "Add New"</strong> to see how adding
transactions affects your budget.
Try <strong>clicking "Add New"</strong> to see how adding transactions
affects your budget.
</P>
<Navigation {...navigationProps} showBack={false} />

View file

@ -1,8 +1,7 @@
import React from 'react';
import { View, Tooltip, Pointer, P } from 'loot-design/src/components/common';
import Navigation from './Navigation';
import { styles, colors } from 'loot-design/src/style';
import { P } from 'loot-design/src/components/common';
import * as monthUtils from 'loot-core/src/shared/months';
import Navigation from './Navigation';
import { Standalone, Title } from './common';
function TransactionEnter({ fromYNAB, navigationProps }) {

View file

@ -2,8 +2,7 @@ import React from 'react';
import { P } from 'loot-design/src/components/common';
import { css } from 'glamor';
import Navigation from './Navigation';
import * as monthUtils from 'loot-core/src/shared/months';
import {Standalone} from './common';
import { Standalone } from './common';
function TransactionFinalize({ navigationProps }) {
return (

View file

@ -1,7 +1,7 @@
import React, { useState } from 'react';
import { View, AnchorLink } from 'loot-design/src/components/common';
import AnimateIn from './AnimateIn';
import { colors } from 'loot-design/src/style';
import AnimateIn from './AnimateIn';
export function Title({ children }) {
return (

View file

@ -1,10 +1,8 @@
import React, { useMemo, useEffect, useState } from 'react';
import React from 'react';
import { CachedPayees } from 'loot-core/src/client/data-hooks/payees';
import { CachedAccounts } from 'loot-core/src/client/data-hooks/accounts';
import { getPayeesById } from 'loot-core/src/client/reducers/queries';
import { groupById } from 'loot-core/src/shared/util';
import { Text } from 'loot-design/src/components/common';
import { colors, styles } from 'loot-design/src/style';
import { colors } from 'loot-design/src/style';
export default function DisplayId({ type, id, noneColor = colors.n8 }) {
let DataComponent;

View file

@ -1,7 +1,6 @@
import React from 'react';
import { useSelector } from 'react-redux';
import { format as formatDate, parse as parseDate, parseISO } from 'date-fns';
import { dayFromDate, getMonthYearFormat } from 'loot-core/src/shared/months';
import { getMonthYearFormat } from 'loot-core/src/shared/months';
import { View, Input } from 'loot-design/src/components/common';
import PayeeAutocomplete from 'loot-design/src/components/PayeeAutocomplete';
import AccountAutocomplete from 'loot-design/src/components/AccountAutocomplete';

View file

@ -1,4 +1,4 @@
import React, { useState, useEffect } from 'react';
import { useState, useEffect } from 'react';
import { send } from 'loot-core/src/platform/client/fetch';
function useServerVersion() {

View file

@ -7,7 +7,6 @@ import '@reach/listbox/styles.css';
import React from 'react';
import ReactDOM from 'react-dom';
import App from './components/App';
import {
createStore,
combineReducers,
@ -21,8 +20,9 @@ import { send } from 'loot-core/src/platform/client/fetch';
import q, { runQuery } from 'loot-core/src/client/query-helpers';
import * as actions from 'loot-core/src/client/actions';
import thunk from 'redux-thunk';
import { handleGlobalEvents } from './global-events';
import { initialState as initialAppState } from 'loot-core/src/client/reducers/app';
import { handleGlobalEvents } from './global-events';
import App from './components/App';
// See https://github.com/WICG/focus-visible. Only makes the blue
// focus outline appear from keyboard events.

View file

@ -2,8 +2,8 @@ const d = require('date-fns');
const normalizePathSep = require('slash');
const uuid = require('uuid');
const AdmZip = require('adm-zip');
const actual = require('@actual-app/api/methods');
const { amountToInteger } = require('@actual-app/api/utils');
const actual = require('@actual-app/api');
const amountToInteger = actual.utils.amountToInteger;
// Utils

View file

@ -1,7 +1,6 @@
const d = require('date-fns');
const uuid = require('uuid');
const actual = require('@actual-app/api/methods');
const { amountToInteger } = require('@actual-app/api/utils');
const actual = require('@actual-app/api');
function amountFromYnab(amount) {
// ynabs multiplies amount by 1000 and actual by 100

Some files were not shown because too many files have changed in this diff Show more