This commit is contained in:
thanawat saiyota 2026-06-16 13:49:26 +07:00
commit b5e0705f79
14 changed files with 262 additions and 103 deletions

View file

@ -15,14 +15,14 @@ import {
import type { PriceSlot } from '../stores/sheetStore';
import { setGenLayoutGenerating } from '../stores/genLayoutStore';
export function requestCatalogs(country: string): boolean {
return sendCommandRequest('sheet', {
export async function requestCatalogs(country: string): Promise<boolean> {
return await sendCommandRequest('sheet', {
country: country,
param: 'catalogs'
});
}
export function requestPriceSlots(country: string): boolean {
export async function requestPriceSlots(country: string): Promise<boolean> {
setPendingPriceSlotsCountry(country);
resetPriceSlotsCountry(country);
const request_id = crypto.randomUUID();
@ -46,7 +46,7 @@ export function requestPriceSlots(country: string): boolean {
request_id
};
console.log('[sheetService] Sending PriceSlot request:', values);
const sent = sendCommandRequest('sheet', values);
const sent = await sendCommandRequest('sheet', values);
console.log('[sheetService] PriceSlot request sent:', sent);
if (!sent) {
priceSlotsLoading.set(false);
@ -54,48 +54,52 @@ export function requestPriceSlots(country: string): boolean {
return sent;
}
export function updatePriceSlot(country: string, content: PriceSlot): boolean {
return sendCommandRequest('sheet', {
export async function updatePriceSlot(country: string, content: PriceSlot): Promise<boolean> {
return await sendCommandRequest('sheet', {
country: country,
content: content,
param: 'update/priceslot'
});
}
export function enterRoom(country: string, catalog: string): boolean {
return sendCommandRequest('sheet', {
export async function enterRoom(country: string, catalog: string): Promise<boolean> {
return await sendCommandRequest('sheet', {
country: country,
catalog: catalog,
param: 'enter'
});
}
export function sendHeartbeat(country: string, catalog: string): boolean {
return sendCommandRequest('sheet', {
export async function sendHeartbeat(country: string, catalog: string): Promise<boolean> {
return await sendCommandRequest('sheet', {
country: country,
catalog: catalog,
param: 'heartbeat'
});
}
export function exitRoom(country: string, catalog: string): boolean {
return sendCommandRequest('sheet', {
export async function exitRoom(country: string, catalog: string): Promise<boolean> {
return await sendCommandRequest('sheet', {
country: country,
catalog: catalog,
param: 'exit'
});
}
export function requestCatalogMenu(country: string, catalog: string): boolean {
return sendCommandRequest('sheet', {
export async function requestCatalogMenu(country: string, catalog: string): Promise<boolean> {
return await sendCommandRequest('sheet', {
country: country,
catalog: catalog,
param: 'catalog/menu'
});
}
export function updateMenu(country: string, catalog: string, content: any[]): boolean {
return sendCommandRequest('sheet', {
export async function updateMenu(
country: string,
catalog: string,
content: any[]
): Promise<boolean> {
return await sendCommandRequest('sheet', {
country: country,
catalog: catalog,
content: content,
@ -103,9 +107,9 @@ export function updateMenu(country: string, catalog: string, content: any[]): bo
});
}
export function addMenu(country: string, catalog: string, content: any[]): boolean {
export async function addMenu(country: string, catalog: string, content: any[]): Promise<boolean> {
console.log('[sheetService] Adding menu:', { country, catalog, content });
const sent = sendCommandRequest('sheet', {
const sent = await sendCommandRequest('sheet', {
country: country,
catalog: catalog,
content: content,
@ -115,9 +119,13 @@ export function addMenu(country: string, catalog: string, content: any[]): boole
return sent;
}
export function deleteMenu(country: string, catalog: string, targetIds: number[]): boolean {
export async function deleteMenu(
country: string,
catalog: string,
targetIds: number[]
): Promise<boolean> {
const content = targetIds.map((id) => ({ target_id: id }));
return sendCommandRequest('sheet', {
return await sendCommandRequest('sheet', {
country: country,
catalog: catalog,
content: content,
@ -125,12 +133,12 @@ export function deleteMenu(country: string, catalog: string, targetIds: number[]
});
}
export function swapMenu(
export async function swapMenu(
country: string,
catalog: string,
swaps: { source_id: number; target_id: number }[]
): boolean {
return sendCommandRequest('sheet', {
): Promise<boolean> {
return await sendCommandRequest('sheet', {
country: country,
catalog: catalog,
content: swaps,
@ -138,7 +146,7 @@ export function swapMenu(
});
}
export function requestListMenu(country: string, boxid?: string): boolean {
export async function requestListMenu(country: string, boxid?: string): Promise<boolean> {
const curr_user = get(auth);
let user_info: any = {};
@ -155,7 +163,7 @@ export function requestListMenu(country: string, boxid?: string): boolean {
console.log('[sheetService] Sending list_menu request for country:', country, 'boxid:', boxid);
return sendMessage({
return await sendMessage({
type: 'list_menu',
payload: {
user_info,
@ -165,7 +173,7 @@ export function requestListMenu(country: string, boxid?: string): boolean {
});
}
export function requestGenLayout(country: string): boolean {
export async function requestGenLayout(country: string): Promise<boolean> {
const curr_user = get(auth);
let user_info: any = {};
@ -181,7 +189,7 @@ export function requestGenLayout(country: string): boolean {
console.log('[sheetService] Sending gen-layout request for country:', country);
return sendMessage({
return await sendMessage({
type: 'command',
payload: {
user_info,
@ -200,7 +208,7 @@ export function requestGenLayout(country: string): boolean {
* Request price data from sheet for specific product codes
* NOTE: Can only send once per type (price). Use hasSheetPriceBeenSent to check.
*/
export function requestSheetPrice(country: string, productCodes: string[]): boolean {
export async function requestSheetPrice(country: string, productCodes: string[]): Promise<boolean> {
// Check if already sent
if (hasSheetPriceBeenSent('price')) {
console.warn('[sheetService] Price request already sent, skipping');
@ -240,7 +248,7 @@ export function requestSheetPrice(country: string, productCodes: string[]): bool
request_id
);
const sent = sendCommandRequest('sheet', {
const sent = await sendCommandRequest('sheet', {
country: country,
content: content,
param: 'price',
@ -261,10 +269,10 @@ export function requestSheetPrice(country: string, productCodes: string[]): bool
* Update price data in sheet
* content: [{ row_index: number, cells: [{ value: string, coord: { row: number, col: number } }] }]
*/
export function updateSheetPrice(
export async function updateSheetPrice(
country: string,
content: { row_index: number; cells: { value: string; coord: { row: number; col: number } }[] }[]
): boolean {
): Promise<boolean> {
if (!content || content.length === 0) {
console.warn('[sheetService] No content to update');
return false;
@ -277,7 +285,7 @@ export function updateSheetPrice(
content.length
);
return sendCommandRequest('sheet', {
return await sendCommandRequest('sheet', {
country: country,
content: content,
param: 'update/price'
@ -288,7 +296,10 @@ export function updateSheetPrice(
* Add new price rows to sheet (for product codes that don't exist in price sheet)
* content: [{ cells: [product_code, name_en, name_th, ..., price, ...] }]
*/
export function addSheetPrice(country: string, content: { cells: string[] }[]): boolean {
export async function addSheetPrice(
country: string,
content: { cells: string[] }[]
): Promise<boolean> {
if (!content || content.length === 0) {
console.warn('[sheetService] No content to add');
return false;
@ -302,7 +313,7 @@ export function addSheetPrice(country: string, content: { cells: string[] }[]):
content
);
return sendCommandRequest('sheet', {
return await sendCommandRequest('sheet', {
country: country,
content: content,
param: 'add/price'