fixed lan and lon on post

This commit is contained in:
SlimusMinus
2026-10-06 01:24:28 +03:00
parent 3cfe389144
commit bd3f997677
6 changed files with 183 additions and 18 deletions

32
src/utils/ymapsApi.js Normal file
View File

@@ -0,0 +1,32 @@
/**
* public/index.html подключает API Яндекс.Карт через <script defer>,
* поэтому к моменту первого рендера window.ymaps может быть ещё undefined:
* скрипт не скачался, медленный CDN, блокировщик рекламы, офлайн.
*
* Без ожидания карта просто не создаётся — пользователь видит вечный спиннер
* без единой ошибки. Поэтому ждём появления API, но с таймаутом, и отдаём
* вызывающему явную ошибку вместо бесконечной загрузки.
*/
const DEFAULT_TIMEOUT_MS = 10000;
const POLL_INTERVAL_MS = 100;
export function whenYmapsReady(timeoutMs = DEFAULT_TIMEOUT_MS) {
if (window.ymaps?.ready) return Promise.resolve(window.ymaps);
return new Promise((resolve, reject) => {
const startedAt = Date.now();
const timer = setInterval(() => {
if (window.ymaps?.ready) {
clearInterval(timer);
resolve(window.ymaps);
return;
}
if (Date.now() - startedAt >= timeoutMs) {
clearInterval(timer);
reject(new Error("YMAPS_LOAD_FAILED"));
}
}, POLL_INTERVAL_MS);
});
}