// ==================== ПОДЕЛИТЬСЯ МИРОМ ==================== import { state } from '../core/state.js'; import { isTgWebApp } from './start-menu.js'; import { showToast } from './start-menu.js'; export function initShare() { // Keep worldId click-to-copy as before const worldIdEl = document.getElementById('worldId'); if (worldIdEl) { worldIdEl.onclick = () => shareWorld(); } } export function shareWorld() { const shareUrl = new URL(window.location.href); shareUrl.searchParams.set('world', state.worldId); const url = shareUrl.toString(); // In Telegram WebApp — use native share if (isTgWebApp && window.Telegram && window.Telegram.WebApp && window.Telegram.WebApp.switchInlineQuery) { const inviteUrl = 'https://t.me/' + (state.TELEGRAM_BOT_USERNAME || 'grechka_mkn8n_bot') + '/app?startapp=' + encodeURIComponent(state.worldId); Telegram.WebApp.openTelegramLink( 'https://t.me/share/url?url=' + encodeURIComponent(inviteUrl) + '&text=' + encodeURIComponent('🏗️ Заходи в GrechkaCraft! Код мира: ' + state.worldId) ); return; } // Otherwise — show custom modal with URL + copy button const overlay = document.createElement('div'); overlay.style.cssText = 'position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,0.6);z-index:100000;display:flex;align-items:center;justify-content:center;'; const box = document.createElement('div'); box.style.cssText = 'background:#C6C6C6;border:4px solid #000;padding:20px;max-width:400px;width:90%;box-shadow:4px 4px 0 #000;font-family:Courier New,monospace;'; const title = document.createElement('div'); title.textContent = '📤 Пригласить друзей'; title.style.cssText = 'font-size:18px;font-weight:bold;margin-bottom:12px;color:#222;'; box.appendChild(title); const codeLabel = document.createElement('div'); codeLabel.style.cssText = 'font-size:13px;color:#444;font-weight:bold;margin-bottom:4px;'; codeLabel.textContent = 'Код мира:'; box.appendChild(codeLabel); const codeBox = document.createElement('div'); codeBox.style.cssText = 'font-size:20px;font-weight:bold;background:#fff;border:3px solid #000;padding:8px 12px;margin-bottom:12px;letter-spacing:2px;text-align:center;color:#5A8F3C;'; codeBox.textContent = state.worldId; box.appendChild(codeBox); const linkLabel = document.createElement('div'); linkLabel.style.cssText = 'font-size:13px;color:#444;font-weight:bold;margin-bottom:4px;'; linkLabel.textContent = 'Ссылка:'; box.appendChild(linkLabel); const linkBox = document.createElement('input'); linkBox.type = 'text'; linkBox.readOnly = true; linkBox.value = url; linkBox.style.cssText = 'width:100%;padding:8px;font-family:Courier New,monospace;font-size:13px;background:#fff;border:3px solid #000;color:#222;margin-bottom:12px;box-sizing:border-box;'; linkBox.onclick = () => linkBox.select(); box.appendChild(linkBox); const btnRow = document.createElement('div'); btnRow.style.cssText = 'display:flex;gap:8px;'; const btnCopy = document.createElement('button'); btnCopy.textContent = '📋 Скопировать'; btnCopy.style.cssText = 'flex:1;padding:10px;font-family:Courier New,monospace;font-weight:bold;cursor:pointer;border:3px solid #000;background:#5A8F3C;color:#fff;box-shadow:2px 2px 0 #000;'; btnCopy.onclick = () => { navigator.clipboard.writeText(url).then(() => { showToast('📋 Ссылка скопирована!'); overlay.remove(); }).catch(() => { linkBox.select(); document.execCommand('copy'); showToast('📋 Ссылка скопирована!'); overlay.remove(); }); }; btnRow.appendChild(btnCopy); const btnCode = document.createElement('button'); btnCode.textContent = '📋 Код'; btnCode.style.cssText = 'padding:10px;font-family:Courier New,monospace;font-weight:bold;cursor:pointer;border:3px solid #000;background:#3C5F9E;color:#fff;box-shadow:2px 2px 0 #000;'; btnCode.onclick = () => { navigator.clipboard.writeText(state.worldId).then(() => { showToast('📋 Код скопирован: ' + state.worldId); }).catch(() => { showToast('Код: ' + state.worldId); }); }; btnRow.appendChild(btnCode); const btnClose = document.createElement('button'); btnClose.textContent = '✕'; btnClose.style.cssText = 'padding:10px 14px;font-family:Courier New,monospace;font-weight:bold;cursor:pointer;border:3px solid #000;background:#9E2B2B;color:#fff;box-shadow:2px 2px 0 #000;'; btnClose.onclick = () => overlay.remove(); btnRow.appendChild(btnClose); box.appendChild(btnRow); overlay.appendChild(box); // Close on click outside box overlay.onclick = (e) => { if (e.target === overlay) overlay.remove(); }; document.body.appendChild(overlay); }