mirror of
https://github.com/actualbudget/actual.git
synced 2026-03-11 20:44:32 -05:00
Compare commits
3 Commits
matiss/bro
...
fix-exhaus
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a1ea12c3dd | ||
|
|
f522d18636 | ||
|
|
900b294975 |
@@ -715,7 +715,6 @@ export default [
|
|||||||
'packages/desktop-client/src/components/accounts/Account.jsx',
|
'packages/desktop-client/src/components/accounts/Account.jsx',
|
||||||
'packages/desktop-client/src/components/accounts/MobileAccount.jsx',
|
'packages/desktop-client/src/components/accounts/MobileAccount.jsx',
|
||||||
'packages/desktop-client/src/components/accounts/MobileAccounts.jsx',
|
'packages/desktop-client/src/components/accounts/MobileAccounts.jsx',
|
||||||
'packages/desktop-client/src/components/App.tsx',
|
|
||||||
'packages/desktop-client/src/components/budget/BudgetCategories.jsx',
|
'packages/desktop-client/src/components/budget/BudgetCategories.jsx',
|
||||||
'packages/desktop-client/src/components/budget/BudgetSummaries.tsx',
|
'packages/desktop-client/src/components/budget/BudgetSummaries.tsx',
|
||||||
'packages/desktop-client/src/components/budget/DynamicBudgetTable.tsx',
|
'packages/desktop-client/src/components/budget/DynamicBudgetTable.tsx',
|
||||||
@@ -724,7 +723,6 @@ export default [
|
|||||||
'packages/desktop-client/src/components/budget/envelope/HoldMenu.tsx',
|
'packages/desktop-client/src/components/budget/envelope/HoldMenu.tsx',
|
||||||
'packages/desktop-client/src/components/budget/envelope/TransferMenu.tsx',
|
'packages/desktop-client/src/components/budget/envelope/TransferMenu.tsx',
|
||||||
'packages/desktop-client/src/components/common/Menu.tsx',
|
'packages/desktop-client/src/components/common/Menu.tsx',
|
||||||
'packages/desktop-client/src/components/FinancesApp.tsx',
|
|
||||||
'packages/desktop-client/src/components/GlobalKeys.ts',
|
'packages/desktop-client/src/components/GlobalKeys.ts',
|
||||||
'packages/desktop-client/src/components/LoggedInUser.tsx',
|
'packages/desktop-client/src/components/LoggedInUser.tsx',
|
||||||
'packages/desktop-client/src/components/manager/ManagementApp.jsx',
|
'packages/desktop-client/src/components/manager/ManagementApp.jsx',
|
||||||
|
|||||||
@@ -53,74 +53,78 @@ function AppInner() {
|
|||||||
const userData = useSelector(state => state.user.data);
|
const userData = useSelector(state => state.user.data);
|
||||||
const { signOut, addNotification } = useActions();
|
const { signOut, addNotification } = useActions();
|
||||||
|
|
||||||
const maybeUpdate = async <T,>(cb?: () => T): Promise<T> => {
|
|
||||||
if (global.Actual.isUpdateReadyForDownload()) {
|
|
||||||
dispatch(
|
|
||||||
setAppState({
|
|
||||||
loadingText: t('Downloading and applying update...'),
|
|
||||||
}),
|
|
||||||
);
|
|
||||||
await global.Actual.applyAppUpdate();
|
|
||||||
}
|
|
||||||
return cb?.();
|
|
||||||
};
|
|
||||||
|
|
||||||
async function init() {
|
|
||||||
const socketName = await maybeUpdate(() => global.Actual.getServerSocket());
|
|
||||||
|
|
||||||
dispatch(
|
|
||||||
setAppState({
|
|
||||||
loadingText: t('Initializing the connection to the local database...'),
|
|
||||||
}),
|
|
||||||
);
|
|
||||||
await initConnection(socketName);
|
|
||||||
|
|
||||||
// Load any global prefs
|
|
||||||
dispatch(
|
|
||||||
setAppState({
|
|
||||||
loadingText: t('Loading global preferences...'),
|
|
||||||
}),
|
|
||||||
);
|
|
||||||
await dispatch(loadGlobalPrefs());
|
|
||||||
|
|
||||||
// Open the last opened budget, if any
|
|
||||||
dispatch(
|
|
||||||
setAppState({
|
|
||||||
loadingText: t('Opening last budget...'),
|
|
||||||
}),
|
|
||||||
);
|
|
||||||
const budgetId = await send('get-last-opened-backup');
|
|
||||||
if (budgetId) {
|
|
||||||
await dispatch(loadBudget(budgetId));
|
|
||||||
|
|
||||||
// Check to see if this file has been remotely deleted (but
|
|
||||||
// don't block on this in case they are offline or something)
|
|
||||||
dispatch(
|
|
||||||
setAppState({
|
|
||||||
loadingText: t('Retrieving remote files...'),
|
|
||||||
}),
|
|
||||||
);
|
|
||||||
|
|
||||||
const files = await send('get-remote-files');
|
|
||||||
if (files) {
|
|
||||||
const remoteFile = files.find(f => f.fileId === cloudFileId);
|
|
||||||
if (remoteFile && remoteFile.deleted) {
|
|
||||||
dispatch(closeBudget());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
await maybeUpdate();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
const maybeUpdate = async <T,>(cb?: () => T): Promise<T> => {
|
||||||
|
if (global.Actual.isUpdateReadyForDownload()) {
|
||||||
|
dispatch(
|
||||||
|
setAppState({
|
||||||
|
loadingText: t('Downloading and applying update...'),
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
await global.Actual.applyAppUpdate();
|
||||||
|
}
|
||||||
|
return cb?.();
|
||||||
|
};
|
||||||
|
|
||||||
|
async function init() {
|
||||||
|
const socketName = await maybeUpdate(() =>
|
||||||
|
global.Actual.getServerSocket(),
|
||||||
|
);
|
||||||
|
|
||||||
|
dispatch(
|
||||||
|
setAppState({
|
||||||
|
loadingText: t(
|
||||||
|
'Initializing the connection to the local database...',
|
||||||
|
),
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
await initConnection(socketName);
|
||||||
|
|
||||||
|
// Load any global prefs
|
||||||
|
dispatch(
|
||||||
|
setAppState({
|
||||||
|
loadingText: t('Loading global preferences...'),
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
await dispatch(loadGlobalPrefs());
|
||||||
|
|
||||||
|
// Open the last opened budget, if any
|
||||||
|
dispatch(
|
||||||
|
setAppState({
|
||||||
|
loadingText: t('Opening last budget...'),
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
const budgetId = await send('get-last-opened-backup');
|
||||||
|
if (budgetId) {
|
||||||
|
await dispatch(loadBudget(budgetId));
|
||||||
|
|
||||||
|
// Check to see if this file has been remotely deleted (but
|
||||||
|
// don't block on this in case they are offline or something)
|
||||||
|
dispatch(
|
||||||
|
setAppState({
|
||||||
|
loadingText: t('Retrieving remote files...'),
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
|
||||||
|
const files = await send('get-remote-files');
|
||||||
|
if (files) {
|
||||||
|
const remoteFile = files.find(f => f.fileId === cloudFileId);
|
||||||
|
if (remoteFile && remoteFile.deleted) {
|
||||||
|
dispatch(closeBudget());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
await maybeUpdate();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
async function initAll() {
|
async function initAll() {
|
||||||
await Promise.all([installPolyfills(), init()]);
|
await Promise.all([installPolyfills(), init()]);
|
||||||
dispatch(setAppState({ loadingText: null }));
|
dispatch(setAppState({ loadingText: null }));
|
||||||
}
|
}
|
||||||
|
|
||||||
initAll().catch(showErrorBoundary);
|
initAll().catch(showErrorBoundary);
|
||||||
}, []);
|
}, [cloudFileId, dispatch, showErrorBoundary, t]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
global.Actual.updateAppMenu(budgetId);
|
global.Actual.updateAppMenu(budgetId);
|
||||||
@@ -140,7 +144,7 @@ function AppInner() {
|
|||||||
},
|
},
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}, [userData, userData?.tokenExpired]);
|
}, [addNotification, signOut, t, userData?.tokenExpired]);
|
||||||
|
|
||||||
return budgetId ? <FinancesApp /> : <ManagementApp />;
|
return budgetId ? <FinancesApp /> : <ManagementApp />;
|
||||||
}
|
}
|
||||||
@@ -185,7 +189,7 @@ export function App() {
|
|||||||
window.removeEventListener('focus', checkScrollbars);
|
window.removeEventListener('focus', checkScrollbars);
|
||||||
window.removeEventListener('visibilitychange', onVisibilityChange);
|
window.removeEventListener('visibilitychange', onVisibilityChange);
|
||||||
};
|
};
|
||||||
}, [dispatch]);
|
}, [dispatch, hiddenScrollbars]);
|
||||||
|
|
||||||
const [theme] = useTheme();
|
const [theme] = useTheme();
|
||||||
|
|
||||||
|
|||||||
@@ -103,7 +103,7 @@ export function FinancesApp() {
|
|||||||
setTimeout(async () => {
|
setTimeout(async () => {
|
||||||
await dispatch(sync());
|
await dispatch(sync());
|
||||||
}, 100);
|
}, 100);
|
||||||
}, []);
|
}, [dispatch]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
async function run() {
|
async function run() {
|
||||||
@@ -126,7 +126,7 @@ export function FinancesApp() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
run();
|
run();
|
||||||
}, []);
|
}, [dispatch, t]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
async function run() {
|
async function run() {
|
||||||
@@ -159,7 +159,7 @@ export function FinancesApp() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
run();
|
run();
|
||||||
}, [lastUsedVersion, setLastUsedVersion]);
|
}, [dispatch, lastUsedVersion, setLastUsedVersion, t]);
|
||||||
|
|
||||||
const scrollableRef = useRef<HTMLDivElement>(null);
|
const scrollableRef = useRef<HTMLDivElement>(null);
|
||||||
|
|
||||||
|
|||||||
6
upcoming-release-notes/4124.md
Normal file
6
upcoming-release-notes/4124.md
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
---
|
||||||
|
category: Maintenance
|
||||||
|
authors: [joel-jeremy]
|
||||||
|
---
|
||||||
|
|
||||||
|
[Address suppressed ESLint errors] Fix exhaustive deps errors in App.tsx
|
||||||
Reference in New Issue
Block a user