import {ofetch} from "ofetch"; const BASE_URL = '/'; function encodeBase64Unicode(str) { return btoa(new TextEncoder().encode(str).reduce((data, byte) => data + String.fromCharCode(byte), '')); } export const apiFetch = ofetch.create({ throwHttpErrors: true, onRequest({request, options}) { const data = window.Telegram?.WebApp?.initData; if (data) { const encoded = encodeBase64Unicode(data); options.headers = { ...options.headers, 'X-Telegram-InitData': encoded, }; } }, }); async function ftch(action, query = null, json = null) { const options = { method: json ? 'POST' : 'GET', }; if (query) options.query = query; if (json) options.body = json; return await apiFetch(`${BASE_URL}index.php?route=extension/tgshop/handle&api_action=${action}`, options); } export async function storeOrder(data) { return await apiFetch(`${BASE_URL}index.php?route=extension/tgshop/handle&api_action=storeOrder`, { method: 'POST', body: data, }); } export async function getCart() { return await ftch('getCart'); } export async function addToCart(data) { return await apiFetch(`${BASE_URL}index.php?route=checkout/cart/add`, { method: 'POST', body: data, }); } export async function cartRemoveItem(data) { return await apiFetch(`${BASE_URL}index.php?route=checkout/cart/remove`, { method: 'POST', body: data, }); } export async function cartEditItem(data) { return await apiFetch(`${BASE_URL}index.php?route=checkout/cart/edit`, { redirect: 'manual', method: 'POST', body: data, }); } export async function fetchSettings() { return await ftch('settings'); } export async function getFiltersForMainPage() { return await ftch('filtersForMainPage'); } export async function setCoupon(coupon) { const formData = new FormData(); formData.append('coupon', coupon); return await apiFetch(`${BASE_URL}index.php?route=extension/total/coupon/coupon`, { method: 'POST', body: formData, }); } export async function setVoucher(voucher) { const formData = new FormData(); formData.append('voucher', voucher); return await apiFetch(`${BASE_URL}index.php?route=extension/total/voucher/voucher`, { method: 'POST', body: formData, }); } export async function processBlock(block) { return await ftch('processBlock', null, block); } export default ftch;