/* Relay — Integrations screen */ function IntegrationsScreen() { const { PLATFORMS, INTEGRATIONS } = window.RelayData; const [conns, setConns] = React.useState(() => INTEGRATIONS.map((c) => ({ ...c }))); const [connecting, setConnecting] = React.useState(null); // platform id mid-connect const [modal, setModal] = React.useState(null); // platform being connected const connectedCount = conns.filter((c) => c.connected).length; function startConnect(id) { setModal(id); } function confirmConnect(id, account) { setModal(null); setConnecting(id); setTimeout(() => { setConns((prev) => prev.map((c) => c.id === id ? { ...c, connected: true, account: account || (PLATFORMS[id].short.toLowerCase() + "-store-01"), synced: 0 } : c)); setConnecting(null); window.__relayToast && window.__relayToast(`${PLATFORMS[id].name} bağlandı — siparişler eşitleniyor.`); }, 1400); } function disconnect(id) { setConns((prev) => prev.map((c) => c.id === id ? { ...c, connected: false, account: null, synced: null } : c)); } return ( } subtitle={`${conns.length} kanaldan ${connectedCount} tanesi bağlı ve gerçek zamanlı olarak eşitleniyor.`} /> {/* status banner */}
Bağlı tüm kanallar eşitleniyor. Yeni siparişler otomatik olarak canlı panoda görünür.
{conns.map((c) => { const p = PLATFORMS[c.id]; const isConnecting = connecting === c.id; return (
{p.short}
{p.name}
{p.type === "food" ? "Yemek teslimatı" : "E-ticaret"} · {c.auth === "oauth" ? "OAuth" : "API anahtarı"}
{c.connected ? "Bağlı" : "Bağlı değil"}
{c.connected ? (
{c.account}} /> Gerçek zamanlı} />
) : (
Birleştirilmiş panonuzda {p.name} siparişlerini görmek için bağlanın. {c.auth === "oauth" ? "güvenli giriş" : "bir API anahtarı"} ile birkaç tıklamada tamamlanır.
)}
{c.connected ? ( <> Yönet disconnect(c.id)}>Bağlantıyı Kes ) : ( startConnect(c.id)}> {isConnecting ? <>Bağlanıyor… : <>Bağlan} )}
); })}
{/* connect modal */} {modal && setModal(null)} onConfirm={confirmConnect} />}
); } function Row({ k, v }) { return (
{k} {v}
); } function ConnectModal({ pid, onCancel, onConfirm }) { const { PLATFORMS, INTEGRATIONS } = window.RelayData; const p = PLATFORMS[pid]; const auth = (INTEGRATIONS.find((i) => i.id === pid) || {}).auth || "oauth"; const [key, setKey] = React.useState(""); return ( <>
{p.short}
{p.name} Bağla
{auth === "oauth" ? "Güvenli giriş ile yetkilendirin" : "API kimlik bilgilerinizi girin"}
{auth === "oauth" ? (
Relay'e siparişleriniz için okuma erişimi vermek üzere {p.name} sayfasına yönlendirileceksiniz. Hiçbir şifre kaydedilmez.
) : (
setKey(e.target.value)} placeholder={`${pid}_live_xxxxxxxxxxxx`} className="mono" style={{ width: "100%", marginTop: 6, padding: "10px 12px", borderRadius: "var(--radius-sm)", border: "1px solid var(--border-strong)", fontSize: 13, outline: "none" }} />
)}
İptal onConfirm(pid, auth === "apikey" && key ? p.short.toLowerCase() + "_live_•••" : null)}> {auth === "oauth" ? "Yetkilendir" : "Bağlan"}
); } Object.assign(window, { IntegrationsScreen });