From fcb1bba7fa7ccad9d5cb4a4ff6d2a3d3b6571af8 Mon Sep 17 00:00:00 2001 From: Shazib Hussain <me@shazib.com> Date: Sun, 18 Jun 2023 00:49:48 +0100 Subject: [PATCH] Removing Tutorial code (#1146) --- .../src/components/accounts/Account.js | 1 - .../src/components/tutorial/AnimateIn.js | 16 ---- .../components/tutorial/BudgetCategories.js | 47 --------- .../src/components/tutorial/BudgetInitial.js | 49 ---------- .../components/tutorial/BudgetNewIncome.js | 48 ---------- .../components/tutorial/BudgetNextMonth.js | 63 ------------ .../src/components/tutorial/BudgetSummary.js | 56 ----------- .../components/tutorial/CategoryBalance.js | 32 ------- .../components/tutorial/DeleteTransactions.js | 21 ---- .../src/components/tutorial/Final.js | 57 ----------- .../src/components/tutorial/Intro.js | 64 ------------- .../src/components/tutorial/Navigation.js | 39 -------- .../src/components/tutorial/Overspending.js | 95 ------------------- .../src/components/tutorial/TransactionAdd.js | 48 ---------- .../components/tutorial/TransactionEnter.js | 28 ------ .../tutorial/TransactionFinalize.js | 31 ------ .../src/components/tutorial/common.js | 68 ------------- packages/desktop-electron/index.js | 6 +- packages/desktop-electron/menu.js | 14 --- packages/loot-core/src/client/constants.ts | 3 - .../loot-core/src/client/reducers/index.ts | 2 - .../loot-core/src/client/reducers/tutorial.ts | 23 ----- packages/loot-core/src/client/tutorial.ts | 5 - .../loot-core/src/types/main-handlers.d.ts | 3 - upcoming-release-notes/1146.md | 6 ++ 25 files changed, 7 insertions(+), 818 deletions(-) delete mode 100644 packages/desktop-client/src/components/tutorial/AnimateIn.js delete mode 100644 packages/desktop-client/src/components/tutorial/BudgetCategories.js delete mode 100644 packages/desktop-client/src/components/tutorial/BudgetInitial.js delete mode 100644 packages/desktop-client/src/components/tutorial/BudgetNewIncome.js delete mode 100644 packages/desktop-client/src/components/tutorial/BudgetNextMonth.js delete mode 100644 packages/desktop-client/src/components/tutorial/BudgetSummary.js delete mode 100644 packages/desktop-client/src/components/tutorial/CategoryBalance.js delete mode 100644 packages/desktop-client/src/components/tutorial/DeleteTransactions.js delete mode 100644 packages/desktop-client/src/components/tutorial/Final.js delete mode 100644 packages/desktop-client/src/components/tutorial/Intro.js delete mode 100644 packages/desktop-client/src/components/tutorial/Navigation.js delete mode 100644 packages/desktop-client/src/components/tutorial/Overspending.js delete mode 100644 packages/desktop-client/src/components/tutorial/TransactionAdd.js delete mode 100644 packages/desktop-client/src/components/tutorial/TransactionEnter.js delete mode 100644 packages/desktop-client/src/components/tutorial/TransactionFinalize.js delete mode 100644 packages/desktop-client/src/components/tutorial/common.js delete mode 100644 packages/loot-core/src/client/reducers/tutorial.ts delete mode 100644 packages/loot-core/src/client/tutorial.ts create mode 100644 upcoming-release-notes/1146.md diff --git a/packages/desktop-client/src/components/accounts/Account.js b/packages/desktop-client/src/components/accounts/Account.js index 921799996..7c25affc3 100644 --- a/packages/desktop-client/src/components/accounts/Account.js +++ b/packages/desktop-client/src/components/accounts/Account.js @@ -2033,7 +2033,6 @@ export default function Account() { modalShowing: state.modals.modalStack.length > 0, accountsSyncing: state.account.accountsSyncing, lastUndoState: state.app.lastUndoState, - tutorialStage: state.tutorial.stage, })); let dispatch = useDispatch(); diff --git a/packages/desktop-client/src/components/tutorial/AnimateIn.js b/packages/desktop-client/src/components/tutorial/AnimateIn.js deleted file mode 100644 index 21465e727..000000000 --- a/packages/desktop-client/src/components/tutorial/AnimateIn.js +++ /dev/null @@ -1,16 +0,0 @@ -import { Component } from 'react'; - -class AnimateIn extends Component { - state = { animating: false }; - - componentDidMount() { - setTimeout(() => this.setState({ animating: true }), this.props.delay || 0); - } - - render() { - const { children } = this.props; - return children(this.state.animating); - } -} - -export default AnimateIn; diff --git a/packages/desktop-client/src/components/tutorial/BudgetCategories.js b/packages/desktop-client/src/components/tutorial/BudgetCategories.js deleted file mode 100644 index c1ff56e30..000000000 --- a/packages/desktop-client/src/components/tutorial/BudgetCategories.js +++ /dev/null @@ -1,47 +0,0 @@ -import React from 'react'; - -import { colors } from '../../style'; -import { Tooltip, Pointer, P } from '../common'; - -import { Title } from './common'; -import Navigation from './Navigation'; - -function BudgetInitial({ targetRect, navigationProps }) { - return ( - <Tooltip - targetRect={targetRect} - position="left-center" - width={300} - style={{ - border: 'none', - backgroundColor: 'transparent', - boxShadow: 'none', - transform: 'translateX(-5px)', - fontSize: 14, - }} - > - <Pointer - backgroundColor="white" - color={colors.n1} - pointerPosition="center" - pointerDirection="right" - innerStyle={{ padding: 20 }} - > - <Title>This is where you budget money for the current month</Title> - - <P> - As money comes in, you put it in categories. As money is spent, you - can see each categories’ balance. - </P> - - <P isLast={true}> - Don’t overthink categories. If you haven’t budgeted before, start with - just a few. - </P> - <Navigation {...navigationProps} /> - </Pointer> - </Tooltip> - ); -} - -export default BudgetInitial; diff --git a/packages/desktop-client/src/components/tutorial/BudgetInitial.js b/packages/desktop-client/src/components/tutorial/BudgetInitial.js deleted file mode 100644 index 56cedf0e2..000000000 --- a/packages/desktop-client/src/components/tutorial/BudgetInitial.js +++ /dev/null @@ -1,49 +0,0 @@ -import React from 'react'; -import { connect } from 'react-redux'; - -import { bindActionCreators } from 'redux'; - -import * as actions from 'loot-core/src/client/actions'; - -import { P, Button } from '../common'; - -import { Title, Standalone, useMinimized } from './common'; -import Navigation from './Navigation'; - -function BudgetInitial({ accounts, navigationProps }) { - let [minimized, toggle] = useMinimized(); - - return ( - <Standalone> - <Title>Go ahead and budget your money</Title> - {!minimized && ( - <> - <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. - </P> - <P> - Don’t worry too much about your initial budget. Just guess. You’ll - learn more about your spending in the first couple months. - </P> - </> - )} - <Navigation - {...navigationProps} - leftContent={ - <Button bare onClick={toggle}> - {minimized ? 'Show more' : 'Show less'} - </Button> - } - /> - </Standalone> - ); -} - -export default connect( - state => ({ - accounts: state.queries.accounts, - }), - dispatch => bindActionCreators(actions, dispatch), -)(BudgetInitial); diff --git a/packages/desktop-client/src/components/tutorial/BudgetNewIncome.js b/packages/desktop-client/src/components/tutorial/BudgetNewIncome.js deleted file mode 100644 index cf20b997a..000000000 --- a/packages/desktop-client/src/components/tutorial/BudgetNewIncome.js +++ /dev/null @@ -1,48 +0,0 @@ -import React from 'react'; - -import { colors } from '../../style'; -import { Tooltip, Pointer, P } from '../common'; - -import { Title } from './common'; -import Navigation from './Navigation'; - -function BudgetSummary({ targetRect, navigationProps }) { - return ( - <Tooltip - targetRect={targetRect} - position="bottom-center" - width={450} - style={{ - border: 'none', - backgroundColor: 'transparent', - color: colors.n1, - boxShadow: 'none', - marginTop: 5, - fontSize: 14, - }} - > - <Pointer - backgroundColor="white" - color={colors.n1} - pointerPosition="center" - innerStyle={{ padding: 20 }} - > - <Title>More money!</Title> - <P> - If you added any deposit transactions, you’ll see that you have more - money to budget. Any income becomes{' '} - <strong>immediately available</strong> to budget. Hooray! - </P> - - <P isLast={true}> - If you’ve already budgeted all you need this month, you can click the - “To Budget†amount and select “Hold for next month.†This puts the - money away for next month. - </P> - <Navigation {...navigationProps} showBack={false} /> - </Pointer> - </Tooltip> - ); -} - -export default BudgetSummary; diff --git a/packages/desktop-client/src/components/tutorial/BudgetNextMonth.js b/packages/desktop-client/src/components/tutorial/BudgetNextMonth.js deleted file mode 100644 index 65bf0418d..000000000 --- a/packages/desktop-client/src/components/tutorial/BudgetNextMonth.js +++ /dev/null @@ -1,63 +0,0 @@ -import React from 'react'; -import { connect } from 'react-redux'; - -import { bindActionCreators } from 'redux'; - -import * as actions from 'loot-core/src/client/actions'; - -import { View, P, Button } from '../common'; - -import { Standalone, Title, useMinimized } from './common'; -import Navigation from './Navigation'; - -function BudgetNextMonth({ stepTwo, navigationProps }) { - let [minimized, toggle] = useMinimized(); - - return ( - <Standalone width={500}> - <Title>Budgeting the next month</Title> - {!minimized && - (!stepTwo ? ( - <View> - <P> - When a new month comes around, you distribute money again to fund - each category for the new month. Move to the next month by - clicking the right arrow. - </P> - - <P isLast={true}> - Tip: Show multiple months at once with the control in the top left - of the screen. - </P> - </View> - ) : ( - <View> - <P> - It’s easier this time though! Just hover over the new month and - click 3 dots menu and select “Copy last month’s budget†to use the - same budget as last month. - </P> - - <P isLast={true}> - You likely need to tweak the budget for the new month, depending - on overspending and other factors. That’s ok! Adjusting your - budget as life happens is crucial to a realistic budget. - </P> - </View> - ))} - - <Navigation - {...navigationProps} - leftContent={ - <Button bare onClick={toggle}> - {minimized ? 'Show more' : 'Show less'} - </Button> - } - /> - </Standalone> - ); -} - -export default connect(null, dispatch => bindActionCreators(actions, dispatch))( - BudgetNextMonth, -); diff --git a/packages/desktop-client/src/components/tutorial/BudgetSummary.js b/packages/desktop-client/src/components/tutorial/BudgetSummary.js deleted file mode 100644 index 4c3c4551b..000000000 --- a/packages/desktop-client/src/components/tutorial/BudgetSummary.js +++ /dev/null @@ -1,56 +0,0 @@ -import React from 'react'; - -import { colors } from '../../style'; -import { Tooltip, Pointer, P } from '../common'; - -import { Title } from './common'; -import Navigation from './Navigation'; - -function BudgetSummary({ fromYNAB, targetRect, navigationProps }) { - return ( - <Tooltip - targetRect={targetRect} - position="bottom-center" - width={450} - style={{ - border: 'none', - backgroundColor: 'transparent', - color: colors.n1, - boxShadow: 'none', - marginTop: 5, - fontSize: 14, - }} - > - <Pointer - backgroundColor="white" - pointerPosition="center" - innerStyle={{ padding: 20 }} - > - <Title>Budget Overview</Title> - - <P> - Actual uses a system where{' '} - <strong>you can only budget money that you currently have</strong>. - </P> - - <P isLast={!fromYNAB}> - This is a summary of what money you have to budget and how Actual - calculated it. It’s your current income (including anything leftover - from last month) minus any overspending from last month and any - already budgeted amount. - </P> - - {fromYNAB && ( - <P isLast={true}> - Since you’re coming from YNAB 4, an important distinction is that - money is always immediately available. - </P> - )} - - <Navigation {...navigationProps} showBack={false} /> - </Pointer> - </Tooltip> - ); -} - -export default BudgetSummary; diff --git a/packages/desktop-client/src/components/tutorial/CategoryBalance.js b/packages/desktop-client/src/components/tutorial/CategoryBalance.js deleted file mode 100644 index 198f0e0a5..000000000 --- a/packages/desktop-client/src/components/tutorial/CategoryBalance.js +++ /dev/null @@ -1,32 +0,0 @@ -import React from 'react'; - -import { P, Button } from '../common'; - -import { Standalone, Title, useMinimized } from './common'; -import Navigation from './Navigation'; - -function CategoryBalance({ targetRect, navigationProps }) { - let [minimized, toggle] = useMinimized(); - - return ( - <Standalone> - <Title>Tracking categories</Title> - {!minimized && ( - <P isLast={true}> - If you categorized any expenses, the budget has updated to show the - amount spent in those categories and the new balance. - </P> - )} - <Navigation - {...navigationProps} - leftContent={ - <Button bare onClick={toggle}> - {minimized ? 'Show more' : 'Show less'} - </Button> - } - /> - </Standalone> - ); -} - -export default CategoryBalance; diff --git a/packages/desktop-client/src/components/tutorial/DeleteTransactions.js b/packages/desktop-client/src/components/tutorial/DeleteTransactions.js deleted file mode 100644 index 5d68fb04b..000000000 --- a/packages/desktop-client/src/components/tutorial/DeleteTransactions.js +++ /dev/null @@ -1,21 +0,0 @@ -import React from 'react'; - -import { P } from '../common'; - -import { Standalone, Title } from './common'; -import Navigation from './Navigation'; - -function DeleteTransactions({ targetRect, navigationProps }) { - return ( - <Standalone width={500}> - <Title>Deleting transactions</Title> - <P isLast={true}> - Let’s cleanup the fake transactions we added. You can delete - transactions by hovering over them and clicking the “X†beside them. - </P> - <Navigation {...navigationProps} showBack={false} /> - </Standalone> - ); -} - -export default DeleteTransactions; diff --git a/packages/desktop-client/src/components/tutorial/Final.js b/packages/desktop-client/src/components/tutorial/Final.js deleted file mode 100644 index 3070d812d..000000000 --- a/packages/desktop-client/src/components/tutorial/Final.js +++ /dev/null @@ -1,57 +0,0 @@ -import React from 'react'; - -import { P, ModalButtons, Button } from '../common'; - -import { Standalone, Title, ExternalLink } from './common'; - -function Final({ targetRect, navigationProps }) { - return ( - <Standalone width={500}> - <Title>That’s it!</Title> - <P> - With that workflow you can have peace of mind that what you are looking - at reflects reality.{' '} - <span role="img" aria-label="Relieved smile" aria-hidden="true"> - 😌 - </span>{' '} - The amount of money in a category is cash that you can safely spend - right now. - </P> - - <P> - You probably want to delete the transactions you added and clean up your - budget. If you have any questions or feedback, please get{' '} - <a - href="https://actualbudget.org/contact/" - target="_blank" - rel="noopener noreferrer" - > - in touch - </a> - . - </P> - - <P isLast={true}> - Read{' '} - <ExternalLink asAnchor href="https://actualbudget.org/docs/budgeting/"> - How it Works - </ExternalLink>{' '} - for an in-depth explanation of the budgeting workflow. - </P> - - <ModalButtons style={{ marginTop: 20 }}> - <Button - style={{ marginRight: 10 }} - onClick={() => navigationProps.previousTutorialStage()} - > - Back - </Button> - <Button onClick={() => navigationProps.endTutorial()} primary> - End Tutorial - </Button> - </ModalButtons> - </Standalone> - ); -} - -export default Final; diff --git a/packages/desktop-client/src/components/tutorial/Intro.js b/packages/desktop-client/src/components/tutorial/Intro.js deleted file mode 100644 index e51db49b1..000000000 --- a/packages/desktop-client/src/components/tutorial/Intro.js +++ /dev/null @@ -1,64 +0,0 @@ -import React from 'react'; - -import { View, Text, P, ModalButtons, Button } from '../common'; - -import { Standalone, Title, ExternalLink } from './common'; - -function Intro({ fromYNAB, nextTutorialStage, closeTutorial }) { - return ( - <Standalone width={500}> - <Title>Let’s get started</Title> - <P> - Welcome to Actual!{' '} - <span role="img" aria-label="Party" aria-hidden="true"> - 🎉 - </span>{' '} - <strong>Learn the basic workflow with this quick tutorial.</strong> You - can always restart it from the File menu. - </P> - - <P>We also recommend reading these articles:</P> - - <View style={{ lineHeight: '1.5em' }}> - <Text> - <ExternalLink asAnchor href="https://actualbudget.org/docs/tour/"> - Tour - </ExternalLink> - : A guide on what to do first - </Text> - <Text> - <ExternalLink - asAnchor - href="https://actualbudget.org/docs/budgeting/" - > - How it Works - </ExternalLink> - : An in-depth explanation of the budgeting workflow - </Text> - </View> - - <ModalButtons style={{ marginTop: 20 }}> - <Button style={{ marginRight: 10 }} onClick={() => closeTutorial()}> - Skip - </Button> - <Button - primary - onClick={() => { - if (window.location.hash !== '#/budget') { - window.location.hash = '#/budget'; - setTimeout(() => { - nextTutorialStage(); - }, 500); - } else { - nextTutorialStage(); - } - }} - > - Start Tutorial - </Button> - </ModalButtons> - </Standalone> - ); -} - -export default Intro; diff --git a/packages/desktop-client/src/components/tutorial/Navigation.js b/packages/desktop-client/src/components/tutorial/Navigation.js deleted file mode 100644 index f673d7cec..000000000 --- a/packages/desktop-client/src/components/tutorial/Navigation.js +++ /dev/null @@ -1,39 +0,0 @@ -import React from 'react'; - -import { Button, ModalButtons } from '../common'; - -function Navigation({ - nextTutorialStage, - previousTutorialStage, - closeTutorial, - showBack = true, - showNext = true, - leftContent, - disableNext, -}) { - return ( - <ModalButtons leftContent={leftContent} style={{ marginTop: 20 }}> - <Button onClick={() => closeTutorial()}>Close</Button> - {showBack && ( - <Button - onClick={() => previousTutorialStage()} - style={{ marginLeft: 10 }} - > - Back - </Button> - )} - {showNext && ( - <Button - primary - onClick={() => nextTutorialStage()} - disabled={disableNext} - style={{ marginLeft: 10 }} - > - Next - </Button> - )} - </ModalButtons> - ); -} - -export default Navigation; diff --git a/packages/desktop-client/src/components/tutorial/Overspending.js b/packages/desktop-client/src/components/tutorial/Overspending.js deleted file mode 100644 index 6ad541dca..000000000 --- a/packages/desktop-client/src/components/tutorial/Overspending.js +++ /dev/null @@ -1,95 +0,0 @@ -import React from 'react'; -import { connect } from 'react-redux'; - -import { bindActionCreators } from 'redux'; - -import * as actions from 'loot-core/src/client/actions'; -import * as monthUtils from 'loot-core/src/shared/months'; -import { integerToCurrency } from 'loot-core/src/shared/util'; - -import { P, View, Text, Button } from '../common'; -import NamespaceContext from '../spreadsheet/NamespaceContext'; -import SheetValue from '../spreadsheet/SheetValue'; - -import { Standalone, Title, useMinimized } from './common'; -import Navigation from './Navigation'; - -function Overspending({ navigationProps, stepTwo }) { - let currentMonth = monthUtils.currentMonth(); - let sheetName = monthUtils.sheetForMonth(currentMonth); - let month = monthUtils.format(currentMonth, 'MMM'); - let [minimized, toggle] = useMinimized(); - - return ( - <NamespaceContext.Provider value={sheetName}> - <SheetValue binding={{ name: 'total-spent' }}> - {({ value: spentTotal }) => { - return ( - <Standalone width={400}> - <Title>Overspending</Title> - {!minimized && - (stepTwo ? ( - <View> - <P> - The category balance becomes negative. Next month will - reset this balance to zero, and you’ll see it in - “Overspent in {month}†in next month’s summary, which in - turn takes it out of next month’s “To Budget†amount.{' '} - </P> - - <P isLast={true}> - <strong> - When you overspend, it’s taken out of next month’s - available budget. - </strong>{' '} - A simple workflow would be to just take it out of next - month’s savings, or whatever you like. - </P> - </View> - ) : ( - <View> - <P> - What happens when you overspend? Let’s find out. - {spentTotal === 0 && ( - <Text> - You haven’t spent any money yet so add some expenses - in your account to see it in action. - </Text> - )} - </P> - - <P isLast={true}> - {spentTotal !== 0 && ( - <Text> - You’ve spent{' '} - <strong> - ${integerToCurrency(Math.abs(spentTotal))} - </strong> - . - </Text> - )}{' '} - Try zeroing out a budget for a category that already has - spent money in it. You’ll see how overspending works. - </P> - </View> - ))} - - <Navigation - {...navigationProps} - leftContent={ - <Button bare onClick={toggle}> - {minimized ? 'Show more' : 'Show less'} - </Button> - } - /> - </Standalone> - ); - }} - </SheetValue> - </NamespaceContext.Provider> - ); -} - -export default connect(null, dispatch => bindActionCreators(actions, dispatch))( - Overspending, -); diff --git a/packages/desktop-client/src/components/tutorial/TransactionAdd.js b/packages/desktop-client/src/components/tutorial/TransactionAdd.js deleted file mode 100644 index 081ca6836..000000000 --- a/packages/desktop-client/src/components/tutorial/TransactionAdd.js +++ /dev/null @@ -1,48 +0,0 @@ -import React from 'react'; - -import { colors } from '../../style'; -import { Tooltip, Pointer, P } from '../common'; - -import { Title } from './common'; -import Navigation from './Navigation'; - -function TransactionAdd({ targetRect, navigationProps }) { - return ( - <Tooltip - targetRect={targetRect} - position="bottom-center" - width={400} - style={{ - border: 'none', - backgroundColor: 'transparent', - color: colors.n1, - boxShadow: 'none', - marginTop: 5, - fontSize: 14, - }} - > - <Pointer - backgroundColor="white" - pointerPosition="center" - innerStyle={{ padding: 20 }} - > - <Title>Let’s add some transactions</Title> - <P> - You can add transactions in two ways: import files from your bank or - manually add individual transactions. You can usually download these - files straight from your online bank account. (QIF/OFX/QFX is - supported, sometimes called a “Quicken Fileâ€) - </P> - - <P isLast={true}> - Try <strong>clicking “Add Newâ€</strong> to see how adding transactions - affects your budget. - </P> - - <Navigation {...navigationProps} showBack={false} /> - </Pointer> - </Tooltip> - ); -} - -export default TransactionAdd; diff --git a/packages/desktop-client/src/components/tutorial/TransactionEnter.js b/packages/desktop-client/src/components/tutorial/TransactionEnter.js deleted file mode 100644 index 6f4eae659..000000000 --- a/packages/desktop-client/src/components/tutorial/TransactionEnter.js +++ /dev/null @@ -1,28 +0,0 @@ -import React from 'react'; - -import { P } from '../common'; - -import { Standalone, Title } from './common'; -import Navigation from './Navigation'; - -function TransactionEnter({ navigationProps }) { - return ( - <Standalone width={400}> - <Title>Add a transaction</Title> - <P> - Categorize the new transaction (you can use anything, try “Foodâ€) and - enter any amount in the “payment†column. You’ll see how it affects the - budget. - </P> - - <P> - Next, try adding an income transaction by categorizing a new transaction - as “Income†and entering an amount in the “deposit†column. - </P> - - <Navigation {...navigationProps} /> - </Standalone> - ); -} - -export default TransactionEnter; diff --git a/packages/desktop-client/src/components/tutorial/TransactionFinalize.js b/packages/desktop-client/src/components/tutorial/TransactionFinalize.js deleted file mode 100644 index 71a9fb998..000000000 --- a/packages/desktop-client/src/components/tutorial/TransactionFinalize.js +++ /dev/null @@ -1,31 +0,0 @@ -import React from 'react'; - -import { css } from 'glamor'; - -import { P } from '../common'; - -import { Standalone } from './common'; -import Navigation from './Navigation'; - -function TransactionFinalize({ navigationProps }) { - return ( - <Standalone width={400}> - <P style={{ fontSize: 16 }}>All done!</P> - <P isLast={true}> - You can edit transactions by clicking anywhere on the table, or move - around with the keyboard. A few keybindings: - <ul {...css({ padding: '0 15px', '& li': { marginTop: 5 } })}> - <li> - Tab and enter are the same and will move right (holding shift will - move left). - </li> - <li>Alt or command with arrow keys will move in any direction.</li> - </ul> - </P> - - <Navigation {...navigationProps} /> - </Standalone> - ); -} - -export default TransactionFinalize; diff --git a/packages/desktop-client/src/components/tutorial/common.js b/packages/desktop-client/src/components/tutorial/common.js deleted file mode 100644 index f77426e6d..000000000 --- a/packages/desktop-client/src/components/tutorial/common.js +++ /dev/null @@ -1,68 +0,0 @@ -import React, { forwardRef, useState } from 'react'; - -import { colors } from '../../style'; -import { View, AnchorLink } from '../common'; - -import AnimateIn from './AnimateIn'; - -export function Title({ children }) { - return ( - <View style={{ fontSize: 25, fontWeight: 700, marginBottom: 15 }}> - {children} - </View> - ); -} - -export function Standalone({ children, width = 320, skipAnimation = false }) { - return ( - <AnimateIn> - {animating => ( - <View - style={{ - position: 'absolute', - bottom: 0, - right: 0, - transform: `translateY(${skipAnimation || animating ? 0 : 10}px)`, - opacity: skipAnimation || animating ? 1 : 0, - transition: 'opacity .2s, transform .2s', - padding: 20, - margin: 40, - backgroundColor: 'white', - width: width, - boxShadow: '0 2px 8px rgba(0, 0, 0, .3)', - borderRadius: 4, - zIndex: 1000, - fontSize: 14, - }} - > - {children} - </View> - )} - </AnimateIn> - ); -} - -export const ExternalLink = forwardRef((props, ref) => { - let { href, ...linkProps } = props; - return ( - <AnchorLink - to="/" - {...linkProps} - style={{ fontSize: 14, color: colors.p4 }} - onClick={e => { - e.preventDefault(); - window.Actual.openURLInBrowser(href); - }} - /> - ); -}); - -export function useMinimized() { - let [minimized, setMinimized] = useState(false); - - function toggleContent() { - setMinimized(!minimized); - } - - return [minimized, toggleContent]; -} diff --git a/packages/desktop-electron/index.js b/packages/desktop-electron/index.js index 898c42aa3..1b1a9a3ed 100644 --- a/packages/desktop-electron/index.js +++ b/packages/desktop-electron/index.js @@ -204,11 +204,7 @@ function updateMenu(isBudgetOpen) { const file = menu.items.filter(item => item.label === 'File')[0]; const fileItems = file.submenu.items; fileItems - .filter( - item => - item.label === 'Start Tutorial' || item.label === 'Load Backup...', - ) - + .filter(item => item.label === 'Load Backup...') .map(item => (item.enabled = isBudgetOpen)); let tools = menu.items.filter(item => item.label === 'Tools')[0]; diff --git a/packages/desktop-electron/menu.js b/packages/desktop-electron/menu.js index ff463b5db..f6a23e037 100644 --- a/packages/desktop-electron/menu.js +++ b/packages/desktop-electron/menu.js @@ -5,20 +5,6 @@ function getMenu(isDev, createWindow) { { label: 'File', submenu: [ - // { - // label: 'Start Tutorial', - // enabled: false, - // click(item, focusedWindow) { - // if ( - // focusedWindow && - // focusedWindow.webContents.getTitle() === 'Actual' - // ) { - // focusedWindow.webContents.executeJavaScript( - // '__actionsForMenu.startTutorial()' - // ); - // } - // } - // }, { label: 'Load Backup...', enabled: false, diff --git a/packages/loot-core/src/client/constants.ts b/packages/loot-core/src/client/constants.ts index 528d2769c..1fbe8a11a 100644 --- a/packages/loot-core/src/client/constants.ts +++ b/packages/loot-core/src/client/constants.ts @@ -36,6 +36,3 @@ export const SET_ACCOUNTS_SYNCING = 'SET_ACCOUNTS_SYNCING'; export const ACCOUNT_SYNC_STATUS = 'ACCOUNT_SYNC_STATUS'; export const ACCOUNT_SYNC_FAILURES = 'ACCOUNT_SYNC_FAILURES'; export const SIGN_OUT = 'SIGN_OUT'; - -export const SET_TUTORIAL_STAGE = 'SET_TUTORIAL_STAGE'; -export const DEACTIVATE_TUTORIAL = 'DEACTIVATE_TUTORIAL'; diff --git a/packages/loot-core/src/client/reducers/index.ts b/packages/loot-core/src/client/reducers/index.ts index 1253ce09e..17d0f7529 100644 --- a/packages/loot-core/src/client/reducers/index.ts +++ b/packages/loot-core/src/client/reducers/index.ts @@ -7,7 +7,6 @@ import notifications from './notifications'; import prefs from './prefs'; import profile from './profile'; import queries from './queries'; -import tutorial from './tutorial'; import user from './user'; const reducers = { @@ -20,7 +19,6 @@ const reducers = { modals, notifications, budgets, - tutorial, user, }; export default reducers; diff --git a/packages/loot-core/src/client/reducers/tutorial.ts b/packages/loot-core/src/client/reducers/tutorial.ts deleted file mode 100644 index ea4bcc757..000000000 --- a/packages/loot-core/src/client/reducers/tutorial.ts +++ /dev/null @@ -1,23 +0,0 @@ -import * as constants from '../constants'; - -const initialState = { - stage: null, - fromYNAB: false, -}; - -export default function update(state = initialState, action) { - switch (action.type) { - case constants.SET_TUTORIAL_STAGE: - return { - ...state, - deactivated: false, - stage: action.stage, - fromYNAB: 'fromYNAB' in action ? action.fromYNAB : state.fromYNAB, - }; - case constants.DEACTIVATE_TUTORIAL: - return { ...state, stage: null }; - default: - } - - return state; -} diff --git a/packages/loot-core/src/client/tutorial.ts b/packages/loot-core/src/client/tutorial.ts deleted file mode 100644 index 96c513a81..000000000 --- a/packages/loot-core/src/client/tutorial.ts +++ /dev/null @@ -1,5 +0,0 @@ -export const stages = { - BUDGET: 'budget', -}; - -export const order = [stages.BUDGET]; diff --git a/packages/loot-core/src/types/main-handlers.d.ts b/packages/loot-core/src/types/main-handlers.d.ts index 669d1acbc..79ff5d41d 100644 --- a/packages/loot-core/src/types/main-handlers.d.ts +++ b/packages/loot-core/src/types/main-handlers.d.ts @@ -229,7 +229,6 @@ export interface MainHandlers { 'load-global-prefs': () => Promise<{ floatingSidebar: boolean; - seenTutorial: boolean; maxMonths: number; autoUpdate: boolean; documentDir: string; @@ -303,8 +302,6 @@ export interface MainHandlers { testBudgetId?; }) => Promise<unknown>; - 'set-tutorial-seen': () => Promise<'ok'>; - 'import-budget': (arg: { filepath; type }) => Promise<{ error }>; 'export-budget': () => Promise<unknown>; diff --git a/upcoming-release-notes/1146.md b/upcoming-release-notes/1146.md new file mode 100644 index 000000000..9c82768ef --- /dev/null +++ b/upcoming-release-notes/1146.md @@ -0,0 +1,6 @@ +--- +category: Maintenance +authors: [Shazib] +--- + +Remove all legacy 'Tutorial' code -- GitLab