Speak-Up Africa Admin Dashboard
🛡 Speak-Up Africa Admin Control Room
0
0
0
Loading live alerts…
import { initializeApp }
from "https://www.gstatic.com/firebasejs/10.12.2/firebase-app.js";
import {
getFirestore, collection, query, where, orderBy, onSnapshot, doc, updateDoc
}
from "https://www.gstatic.com/firebasejs/10.12.2/firebase-firestore.js";
// FIREBASE CONFIG
const firebaseConfig = { apiKey: "AIzaSyB9LrXZzvTwdq-dMpMf84_Ddc7C1lHmHr0", authDomain: "silent-springs-africa.firebaseapp.com", databaseURL: "https://silent-springs-africa-default-rtdb.europe-west1.firebasedatabase.app", projectId: "silent-springs-africa", storageBucket: "silent-springs-africa.firebasestorage.app", messagingSenderId: "784723501007", appId: "1:784723501007:web:dd84bf5f52015938ff7cba" };
// INITIALIZE FIREBASE
const app = initializeApp(firebaseConfig);
const db = getFirestore(app);
// LOAD REPORTS
window.loadReports = function(status){
const container = document.getElementById("reportList");
container.innerHTML = "";
let q;
if(status === "all"){
q = query( collection(db,"reports"), orderBy("timestamp","desc") );
}else{
q = query( collection(db,"reports"), where("status","==",status), orderBy("timestamp","desc") );
}
onSnapshot(q,(snapshot)=>{
container.innerHTML = "";
snapshot.forEach((docSnap)=>{
const data = docSnap.data();
const div = document.createElement("div");
div.className = "report-card";
div.innerHTML = `
${data.type || "Report"}
Location: ${data.location || "Unknown"}
${data.description || ""}
${data.fileURL
? ``
: ""
}
Approve
Reject
`;
container.appendChild(div);
});
});
};
// APPROVE REPORT
window.approveReport = async function(id){
await updateDoc( doc(db,"reports",id), { status:"approved" } );
};
// REJECT REPORT
window.rejectReport = async function(id){
await updateDoc( doc(db,"reports",id), { status:"rejected" } );
};
// LIVE ALERT TICKER
const alertRef = doc(db,"liveAlerts","current");
onSnapshot(alertRef,(docSnap)=>{
if(docSnap.exists()){
const data = docSnap.data();
document.getElementById("tickerText") .innerText = data.message;
}
});
// INITIAL LOAD
loadReports("pending");
