Merge pull request 'feature/user-section' (#38) from feature/user-section into main

Reviewed-on: https://git.softuniq.eu/Telegram-Market/telegram-shop/pulls/38
This commit is contained in:
1323ed5 2024-12-05 18:31:21 +00:00
commit 37083ca5bc
3 changed files with 62 additions and 6 deletions

View File

@ -0,0 +1,53 @@
import config from '../../config/config.js';
import db from '../../config/database.js';
import bot from "../../context/bot.js";
import UserService from "../../services/userService.js";
import userStates from "../../context/userStates.js";
export default class UserDeletionHandler {
static async handleDeleteAccount(callbackQuery) {
const telegramId = callbackQuery.from.id;
const chatId = callbackQuery.message.chat.id;
try {
const keyboard = {
inline_keyboard: [
[
{text: '✅ Confirm Delete', callback_data: `confirm_delete_account`},
{text: '❌ Cancel', callback_data: `back_to_profile`}
]
]
};
await bot.editMessageText(
`⚠️ Are you sure you want to delete your account?\n\nThis action will:\n- Delete all user data\n- Remove all wallets\n- Erase purchase history\n\nThis action cannot be undone!`,
{
chat_id: chatId,
message_id: callbackQuery.message.message_id,
reply_markup: keyboard,
parse_mode: 'HTML'
}
);
} catch (error) {
console.error('Error in handleDeleteUser:', error);
await bot.sendMessage(chatId, 'Error processing delete request. Please try again.');
}
}
static async handleConfirmDelete(callbackQuery) {
const telegramId = callbackQuery.from.id;
const chatId = callbackQuery.message.chat.id;
try {
await UserService.updateUserStatus(telegramId, 1);
await bot.editMessageText(
'⚠Your account has been successful deleted',
{ chat_id: chatId, message_id: callbackQuery.message.message_id, }
);
} catch (error) {
console.error('Error in handleConfirmDelete:', error);
await bot.sendMessage(chatId, 'Error deleting user. Please try again.');
}
}
}

View File

@ -535,10 +535,7 @@ Subcategory: ${product.subcategory_name}
const keyboard = {
inline_keyboard: [
...cryptoWallets.map(wallet => [{
text: `Pay with ${wallet.wallet_type}`,
callback_data: `pay_with_${wallet.wallet_type}_${productId}_${quantity}`
}]),
[{ text: `Pay`, callback_data: `pay_with_main_${productId}_${quantity}` }],
[{text: '« Cancel', callback_data: `shop_product_${productId}`}]
]
};
@ -547,8 +544,7 @@ Subcategory: ${product.subcategory_name}
`🛒 Purchase Summary:\n\n` +
`Product: ${product.name}\n` +
`Quantity: ${quantity}\n` +
`Total: $${totalPrice}\n\n` +
`Select payment method:`,
`Total: $${totalPrice}\n`,
{
chat_id: chatId,
message_id: callbackQuery.message.message_id,

View File

@ -6,6 +6,7 @@ import userPurchaseHandler from "./handlers/userHandlers/userPurchaseHandler.js"
import userLocationHandler from "./handlers/userHandlers/userLocationHandler.js";
import userProductHandler from "./handlers/userHandlers/userProductHandler.js";
import userWalletsHandler from "./handlers/userHandlers/userWalletsHandler.js";
import userDeletionHandler from "./handlers/userHandlers/userDeletionHandler.js";
import adminHandler from "./handlers/adminHandlers/adminHandler.js";
import adminUserLocationHandler from "./handlers/adminHandlers/adminUserLocationHandler.js";
import adminDumpHandler from "./handlers/adminHandlers/adminDumpHandler.js";
@ -171,6 +172,12 @@ bot.on('callback_query', async (callbackQuery) => {
} else if (action === 'back_to_balance') {
logDebug(action, 'handleBackToBalance');
await userWalletsHandler.handleBackToBalance(callbackQuery);
} else if (action === 'delete_account') {
logDebug(action, 'handleDeleteAccount');
await userDeletionHandler.handleDeleteAccount(callbackQuery);
} else if (action === 'confirm_delete_account') {
logDebug(action, 'handleConfirmDelete');
await userDeletionHandler.handleConfirmDelete(callbackQuery);
}
// Wallet management
else if (action === 'add_wallet') {