4
4
5
5
const serverUrl = 'http://localhost:5000/api' ;
6
6
const storageKey = 'savedAccount' ;
7
+ const accountsKey = 'accounts' ; // New key for all accounts
7
8
8
9
// ---------------------------------------------------------------------------
9
10
// Router
@@ -32,7 +33,7 @@ function updateRoute() {
32
33
const app = document . getElementById ( 'app' ) ;
33
34
app . innerHTML = '' ;
34
35
app . appendChild ( view ) ;
35
-
36
+
36
37
if ( typeof route . init === 'function' ) {
37
38
route . init ( ) ;
38
39
}
@@ -41,32 +42,75 @@ function updateRoute() {
41
42
}
42
43
43
44
// ---------------------------------------------------------------------------
44
- // API interactions
45
+ // API interactions (replaced with localStorage logic)
45
46
// ---------------------------------------------------------------------------
46
47
47
- async function sendRequest ( api , method , body ) {
48
- try {
49
- const response = await fetch ( serverUrl + api , {
50
- method : method || 'GET' ,
51
- headers : body ? { 'Content-Type' : 'application/json' } : undefined ,
52
- body
53
- } ) ;
54
- return await response . json ( ) ;
55
- } catch ( error ) {
56
- return { error : error . message || 'Unknown error' } ;
57
- }
48
+ function getAccounts ( ) {
49
+ return JSON . parse ( localStorage . getItem ( accountsKey ) || '[]' ) ;
50
+ }
51
+
52
+ function saveAccounts ( accounts ) {
53
+ localStorage . setItem ( accountsKey , JSON . stringify ( accounts ) ) ;
54
+ }
55
+
56
+ function findAccount ( user ) {
57
+ const accounts = getAccounts ( ) ;
58
+ return accounts . find ( acc => acc . user === user ) || null ;
58
59
}
59
60
60
61
async function getAccount ( user ) {
61
- return sendRequest ( '/accounts/' + encodeURIComponent ( user ) ) ;
62
+ // Simulate async
63
+ return new Promise ( resolve => {
64
+ setTimeout ( ( ) => {
65
+ const acc = findAccount ( user ) ;
66
+ if ( ! acc ) resolve ( { error : 'Account not found' } ) ;
67
+ else resolve ( acc ) ;
68
+ } , 100 ) ;
69
+ } ) ;
62
70
}
63
71
64
- async function createAccount ( account ) {
65
- return sendRequest ( '/accounts' , 'POST' , account ) ;
72
+ async function createAccount ( accountJson ) {
73
+ return new Promise ( resolve => {
74
+ setTimeout ( ( ) => {
75
+ let data ;
76
+ try {
77
+ data = JSON . parse ( accountJson ) ;
78
+ } catch ( e ) {
79
+ return resolve ( { error : 'Malformed account data' } ) ;
80
+ }
81
+ if ( ! data . user ) return resolve ( { error : 'Username required' } ) ;
82
+ if ( findAccount ( data . user ) ) return resolve ( { error : 'User already exists' } ) ;
83
+ // Set up initial account structure
84
+ const newAcc = {
85
+ user : data . user ,
86
+ description : data . description || '' ,
87
+ balance : 0 ,
88
+ currency : data . currency || 'USD' ,
89
+ transactions : [ ]
90
+ } ;
91
+ const accounts = getAccounts ( ) ;
92
+ accounts . push ( newAcc ) ;
93
+ saveAccounts ( accounts ) ;
94
+ resolve ( newAcc ) ;
95
+ } , 100 ) ;
96
+ } ) ;
66
97
}
67
98
68
- async function createTransaction ( user , transaction ) {
69
- return sendRequest ( '/accounts/' + user + '/transactions' , 'POST' , transaction ) ;
99
+ async function createTransaction ( user , transactionJson ) {
100
+ return new Promise ( resolve => {
101
+ setTimeout ( ( ) => {
102
+ const accounts = getAccounts ( ) ;
103
+ const idx = accounts . findIndex ( acc => acc . user === user ) ;
104
+ if ( idx === - 1 ) return resolve ( { error : 'Account not found' } ) ;
105
+ const tx = JSON . parse ( transactionJson ) ;
106
+ tx . amount = parseFloat ( tx . amount ) ;
107
+ tx . date = tx . date || new Date ( ) . toISOString ( ) . slice ( 0 , 10 ) ;
108
+ accounts [ idx ] . balance += tx . amount ;
109
+ accounts [ idx ] . transactions . push ( tx ) ;
110
+ saveAccounts ( accounts ) ;
111
+ resolve ( tx ) ;
112
+ } , 100 ) ;
113
+ } ) ;
70
114
}
71
115
72
116
// ---------------------------------------------------------------------------
0 commit comments