some refactoring
This commit is contained in:
@@ -1,11 +1,11 @@
|
||||
import dynamic from "next/dynamic";
|
||||
import Split from "react-split";
|
||||
import { proxy, useSnapshot } from "valtio";
|
||||
import { useSnapshot } from "valtio";
|
||||
import { Box, Container, Flex, Tab, Tabs } from "../../components";
|
||||
import Transaction, { TransactionState } from "../../components/Transaction";
|
||||
import Transaction from "../../components/Transaction";
|
||||
import state from "../../state";
|
||||
import { getSplit, saveSplit } from "../../state/actions/persistSplits";
|
||||
import { deepEqual } from "../../utils/object";
|
||||
import { transactionsState, modifyTransaction } from '../../state';
|
||||
|
||||
const DebugStream = dynamic(() => import("../../components/DebugStream"), {
|
||||
ssr: false,
|
||||
@@ -18,64 +18,9 @@ const Accounts = dynamic(() => import("../../components/Accounts"), {
|
||||
ssr: false,
|
||||
});
|
||||
|
||||
const defaultTransaction: TransactionState = {
|
||||
selectedTransaction: null,
|
||||
selectedAccount: null,
|
||||
selectedDestAccount: null,
|
||||
txIsLoading: false,
|
||||
txIsDisabled: false,
|
||||
txFields: {},
|
||||
};
|
||||
|
||||
const testState = proxy({
|
||||
transactions: [
|
||||
{
|
||||
header: "test1.json",
|
||||
state: defaultTransaction,
|
||||
},
|
||||
],
|
||||
});
|
||||
|
||||
/**
|
||||
* Simple transaction state changer
|
||||
* @param header Unique key and tab name for the transaction tab
|
||||
* @param partialTx partial transaction state, `{}` resets the state and `undefined` deletes the transaction
|
||||
*/
|
||||
const modifyTransaction = (
|
||||
header: string,
|
||||
partialTx?: Partial<TransactionState>
|
||||
) => {
|
||||
const tx = testState.transactions.find(tx => tx.header === header);
|
||||
|
||||
if (partialTx === undefined) {
|
||||
testState.transactions = testState.transactions.filter(
|
||||
tx => tx.header !== header
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!tx) {
|
||||
testState.transactions.push({
|
||||
header,
|
||||
state: {
|
||||
...defaultTransaction,
|
||||
...partialTx,
|
||||
},
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
Object.keys(partialTx).forEach(k => {
|
||||
// Typescript mess here, but is definetly safe!
|
||||
const s = tx.state as any;
|
||||
const p = partialTx as any;
|
||||
if (!deepEqual(s[k], p[k])) s[k] = p[k];
|
||||
});
|
||||
};
|
||||
|
||||
const Test = () => {
|
||||
const { transactionLogs } = useSnapshot(state);
|
||||
const { transactions } = useSnapshot(testState);
|
||||
const { transactions } = useSnapshot(transactionsState);
|
||||
return (
|
||||
<Container css={{ px: 0 }}>
|
||||
<Split
|
||||
|
||||
@@ -159,3 +159,5 @@ if (typeof window !== "undefined") {
|
||||
});
|
||||
}
|
||||
export default state
|
||||
|
||||
export * from './transactions'
|
||||
|
||||
58
state/transactions.ts
Normal file
58
state/transactions.ts
Normal file
@@ -0,0 +1,58 @@
|
||||
import { proxy } from 'valtio';
|
||||
import { TransactionState } from '../components/Transaction';
|
||||
import { deepEqual } from '../utils/object';
|
||||
|
||||
export const defaultTransaction: TransactionState = {
|
||||
selectedTransaction: null,
|
||||
selectedAccount: null,
|
||||
selectedDestAccount: null,
|
||||
txIsLoading: false,
|
||||
txIsDisabled: false,
|
||||
txFields: {},
|
||||
};
|
||||
|
||||
export const transactionsState = proxy({
|
||||
transactions: [
|
||||
{
|
||||
header: "test1.json",
|
||||
state: defaultTransaction,
|
||||
},
|
||||
],
|
||||
});
|
||||
|
||||
/**
|
||||
* Simple transaction state changer
|
||||
* @param header Unique key and tab name for the transaction tab
|
||||
* @param partialTx partial transaction state, `{}` resets the state and `undefined` deletes the transaction
|
||||
*/
|
||||
export const modifyTransaction = (
|
||||
header: string,
|
||||
partialTx?: Partial<TransactionState>
|
||||
) => {
|
||||
const tx = transactionsState.transactions.find(tx => tx.header === header);
|
||||
|
||||
if (partialTx === undefined) {
|
||||
transactionsState.transactions = transactionsState.transactions.filter(
|
||||
tx => tx.header !== header
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!tx) {
|
||||
transactionsState.transactions.push({
|
||||
header,
|
||||
state: {
|
||||
...defaultTransaction,
|
||||
...partialTx,
|
||||
},
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
Object.keys(partialTx).forEach(k => {
|
||||
// Typescript mess here, but is definetly safe!
|
||||
const s = tx.state as any;
|
||||
const p = partialTx as any;
|
||||
if (!deepEqual(s[k], p[k])) s[k] = p[k];
|
||||
});
|
||||
};
|
||||
Reference in New Issue
Block a user