import { TURKISH_CITIES } from "../utils/locations.js";
export async function renderSettings(pb, currentBg, onBgSelect, currentCity, onCitySelect) {
let bgList = [];
try {
const records = await pb.collection("backgrounds").getFullList();
bgList = records.map((item) => ({
id: item.id,
title: item.title || "Duvar Kağıdı",
url: `https://pocketbase.iontalp.com/api/files/${item.collectionId}/${item.id}/${item.image || item.file}`,
}));
} catch (err) {
console.error("Görseller yüklenemedi:", err);
}
const cityOptions = TURKISH_CITIES.map((c) => {
const selected = c.name === currentCity ? "selected" : "";
return ``;
}).join("");
const html = `
⚙️ Sistem Ayarları
Seçtiğin duvar kağıdı doğrudan PocketBase hesabına kaydedilir.
Bölge Ayarı
Arka Plan Galerisi (${bgList.length})
${bgList
.map(
(bg) => `
${bg.title}
`,
)
.join("")}
`;
return {
html,
initEvents: (container) => {
setupCity(container, pb, onCitySelect);
setupUpload(container, pb, onBgSelect);
setupGallery(container, pb, onBgSelect);
},
};
}
function setupCity(container, pb, onCitySelect) {
const saveBtn = container.querySelector("#saveCityBtn");
const select = container.querySelector("#citySelect");
const msg = container.querySelector("#cityMsg");
if (!saveBtn || !select) return;
saveBtn.addEventListener("click", async () => {
const city = select.value;
try {
await pb.collection("users").update(pb.authStore.model.id, {
selected_city: city,
});
if (onCitySelect) onCitySelect(city);
showMsg(msg, "Bölge kaydedildi!", true);
} catch (err) {
console.error("Bölge kaydedilemedi:", err);
showMsg(msg, "Kaydedilemedi. Varsayılan olarak kullanılacak.", false);
if (onCitySelect) onCitySelect(city);
}
});
}
function setupUpload(container, pb, onBgSelect) {
const form = container.querySelector("#uploadForm");
const msg = container.querySelector("#uploadMsg");
if (!form) return;
form.addEventListener("submit", async (e) => {
e.preventDefault();
const fileInput = container.querySelector("#bgFile");
const titleInput = container.querySelector("#bgTitle");
const file = fileInput?.files?.[0];
if (!file) {
showMsg(msg, "Lütfen bir resim seçin.", false);
return;
}
try {
await pb.collection("backgrounds").create({
title: titleInput?.value || "Duvar Kağıdı",
image: file,
});
showMsg(msg, "Arka plan yüklendi!", true);
fileInput.value = "";
if (titleInput) titleInput.value = "";
setTimeout(() => {
window.location.reload();
}, 800);
} catch (err) {
console.error("Yükleme hatası:", err);
showMsg(msg, "Yükleme başarısız. PocketBase bağlantısını kontrol et.", false);
}
});
}
function setupGallery(container, pb, onBgSelect) {
container.querySelectorAll("[data-url]").forEach((card) => {
card.addEventListener("click", async () => {
const selectedUrl = card.getAttribute("data-url");
try {
await pb.collection("users").update(pb.authStore.model.id, {
selected_bg: selectedUrl,
});
onBgSelect(selectedUrl);
} catch (err) {
console.error("Ayar kaydedilemedi:", err);
}
});
});
}
function showMsg(el, text, success) {
el.textContent = text;
el.className = `text-xs mt-2 ${success ? "text-emerald-400" : "text-rose-400"}`;
el.classList.remove("hidden");
}