arabdullah commited on
Commit
e4c2c80
·
verified ·
1 Parent(s): 4210f76

Update index.js

Browse files
Files changed (1) hide show
  1. index.js +35 -26
index.js CHANGED
@@ -51,7 +51,8 @@ app.get('/checkState', async (req, res) => {
51
  const sessionData = { ip, apiKey };
52
  fs.writeFileSync(sessionFile, JSON.stringify(sessionData, null, 2));
53
 
54
- connectToWhatsApp(apiKey, ip); // Start WhatsApp connection
 
55
  }
56
 
57
  res.cookie('apiKey', apiKey, {
@@ -71,12 +72,18 @@ app.get('/checkState', async (req, res) => {
71
  }
72
  });
73
 
74
- app.get('/qrCode', (req, res) => {
 
75
  const { apiKey } = req.query;
76
 
77
  if (apiKey) {
78
  const qrFile = path.join(sessionDir, `${apiKey}_qr.svg`);
79
 
 
 
 
 
 
80
  if (fs.existsSync(qrFile)) {
81
  res.sendFile(qrFile);
82
  } else {
@@ -115,35 +122,37 @@ async function connectToWhatsApp(apiKey, ip) {
115
  printQRInTerminal: true
116
  });
117
 
118
- sock.ev.on('connection.update', (update) => {
119
- const { connection, lastDisconnect, qr } = update;
120
- if (connection === 'close') {
121
- const shouldReconnect = (lastDisconnect.error instanceof Boom) ? lastDisconnect.error.output.statusCode !== DisconnectReason.loggedOut : true;
122
- console.log('Connection closed due to ', lastDisconnect.error, ', reconnecting ', shouldReconnect);
123
- if (shouldReconnect) {
124
- connectToWhatsApp(apiKey, ip);
 
 
 
 
 
 
 
 
 
125
  }
126
- } else if (connection === 'open') {
127
- console.log('Opened connection');
128
- } else if (qr) {
129
- // Send QR code to client
130
- const qrImage = qri.imageSync(qr, { type: 'svg' });
131
- fs.writeFileSync(path.join(sessionDir, `${apiKey}_qr.svg`), qrImage);
132
- }
133
- });
134
 
135
- sock.ev.on('messages.upsert', async m => {
136
- console.log(JSON.stringify(m, undefined, 2));
137
- console.log('Replying to', m.messages[0].key.remoteJid);
138
- await sock.sendMessage(m.messages[0].key.remoteJid, { text: 'Hello there!' });
139
- });
140
 
141
- // Save session to file
142
- const sessionFile = path.join(sessionDir, `${ip}.json`);
143
- fs.writeFileSync(sessionFile, JSON.stringify({ apiKey, ip, session: sock.state }, null, 2));
 
144
  }
145
 
146
-
147
  const PORT = 7860;
148
  app.listen(PORT, () => {
149
  console.log(`Server is running on port ${PORT}`);
 
51
  const sessionData = { ip, apiKey };
52
  fs.writeFileSync(sessionFile, JSON.stringify(sessionData, null, 2));
53
 
54
+ // Initialize WhatsApp connection
55
+ await connectToWhatsApp(apiKey, ip);
56
  }
57
 
58
  res.cookie('apiKey', apiKey, {
 
72
  }
73
  });
74
 
75
+ // Serve QR code for login
76
+ app.get('/qrCode', async (req, res) => {
77
  const { apiKey } = req.query;
78
 
79
  if (apiKey) {
80
  const qrFile = path.join(sessionDir, `${apiKey}_qr.svg`);
81
 
82
+ if (!fs.existsSync(qrFile)) {
83
+ // Generate QR code if it does not exist
84
+ await connectToWhatsApp(apiKey);
85
+ }
86
+
87
  if (fs.existsSync(qrFile)) {
88
  res.sendFile(qrFile);
89
  } else {
 
122
  printQRInTerminal: true
123
  });
124
 
125
+ return new Promise((resolve, reject) => {
126
+ sock.ev.on('connection.update', (update) => {
127
+ const { connection, lastDisconnect, qr } = update;
128
+ if (connection === 'close') {
129
+ const shouldReconnect = (lastDisconnect.error instanceof Boom) ? lastDisconnect.error.output.statusCode !== DisconnectReason.loggedOut : true;
130
+ console.log('Connection closed due to ', lastDisconnect.error, ', reconnecting ', shouldReconnect);
131
+ if (shouldReconnect) {
132
+ connectToWhatsApp(apiKey, ip);
133
+ }
134
+ } else if (connection === 'open') {
135
+ console.log('Opened connection');
136
+ resolve();
137
+ } else if (qr) {
138
+ // Generate QR code
139
+ const qrImage = qri.imageSync(qr, { type: 'svg' });
140
+ fs.writeFileSync(path.join(sessionDir, `${apiKey}_qr.svg`), qrImage);
141
  }
142
+ });
 
 
 
 
 
 
 
143
 
144
+ sock.ev.on('messages.upsert', async m => {
145
+ console.log(JSON.stringify(m, undefined, 2));
146
+ console.log('Replying to', m.messages[0].key.remoteJid);
147
+ await sock.sendMessage(m.messages[0].key.remoteJid, { text: 'Hello there!' });
148
+ });
149
 
150
+ // Save session to file
151
+ const sessionFile = path.join(sessionDir, `${ip}.json`);
152
+ fs.writeFileSync(sessionFile, JSON.stringify({ apiKey, ip, session: sock.state }, null, 2));
153
+ });
154
  }
155
 
 
156
  const PORT = 7860;
157
  app.listen(PORT, () => {
158
  console.log(`Server is running on port ${PORT}`);