fix bug back navigation
This commit is contained in:
parent
9d9e0e80ad
commit
2cfa37ea86
@ -125,6 +125,7 @@ export default class UserProductHandler {
|
||||
const [country, city, district] = callbackQuery.data.replace('shop_district_', '').split('_');
|
||||
|
||||
try {
|
||||
// Получаем информацию о локации
|
||||
const location = await LocationService.getLocation(country, city, district);
|
||||
|
||||
if (!location) {
|
||||
@ -136,7 +137,7 @@ export default class UserProductHandler {
|
||||
message_id: messageId,
|
||||
reply_markup: {
|
||||
inline_keyboard: [[
|
||||
{ text: '« Back', callback_data: 'shop_start' }
|
||||
{ text: '« Back', callback_data: `shop_city_${country}_${city}` }
|
||||
]]
|
||||
}
|
||||
}
|
||||
@ -144,6 +145,12 @@ export default class UserProductHandler {
|
||||
return;
|
||||
}
|
||||
|
||||
// Сохраняем текстовое представление локации в состоянии пользователя
|
||||
userStates.set(chatId, {
|
||||
location: `${country}_${city}_${district}`
|
||||
});
|
||||
|
||||
// Получаем категории для выбранной локации
|
||||
const categories = await CategoryService.getCategoriesByLocationId(location.id);
|
||||
|
||||
const keyboard = {
|
||||
@ -201,7 +208,7 @@ export default class UserProductHandler {
|
||||
{
|
||||
reply_markup: {
|
||||
inline_keyboard: [[
|
||||
{ text: '« Back', callback_data: `shop_district_${locationId}` }
|
||||
{ text: '« Back', callback_data: `shop_district_${state.location}` }
|
||||
]]
|
||||
}
|
||||
}
|
||||
@ -221,7 +228,7 @@ export default class UserProductHandler {
|
||||
|
||||
// Добавляем кнопку "Назад"
|
||||
keyboard.inline_keyboard.push([
|
||||
{ text: '« Back', callback_data: `shop_district_${locationId}` }
|
||||
{ text: '« Back', callback_data: `shop_district_${state.location}` }
|
||||
]);
|
||||
|
||||
// Отправляем сообщение с товарами
|
||||
|
@ -2,10 +2,16 @@ import db from "../config/database.js";
|
||||
|
||||
class CategoryService {
|
||||
static async getCategoriesByLocationId(locationId) {
|
||||
return await db.allAsync(
|
||||
'SELECT id, name FROM categories WHERE location_id = ? ORDER BY name',
|
||||
[locationId]
|
||||
);
|
||||
try {
|
||||
const categories = await db.allAsync(
|
||||
'SELECT * FROM categories WHERE location_id = ?',
|
||||
[locationId]
|
||||
);
|
||||
return categories;
|
||||
} catch (error) {
|
||||
console.error('Error fetching categories by location ID:', error);
|
||||
throw new Error('Failed to fetch categories');
|
||||
}
|
||||
}
|
||||
|
||||
static async getSubcategoriesByCategoryId(categoryId) {
|
||||
|
@ -20,10 +20,16 @@ class LocationService {
|
||||
}
|
||||
|
||||
static async getLocation(country, city, district) {
|
||||
return await db.getAsync(
|
||||
'SELECT id FROM locations WHERE country = ? AND city = ? AND district = ?',
|
||||
[country, city, district]
|
||||
);
|
||||
try {
|
||||
const location = await db.getAsync(
|
||||
'SELECT * FROM locations WHERE country = ? AND city = ? AND district = ?',
|
||||
[country, city, district]
|
||||
);
|
||||
return location;
|
||||
} catch (error) {
|
||||
console.error('Error fetching location:', error);
|
||||
throw new Error('Failed to fetch location');
|
||||
}
|
||||
}
|
||||
|
||||
static async getLocationById(locationId) {
|
||||
|
Loading…
Reference in New Issue
Block a user