/* 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.
) : (
API anahtarı
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 });