// pages/admin/storage.js import { useState } from "react"; import Head from "next/head"; import CookieBanner from "../../components/cookieBanner"; import Header from "../../components/header"; import Footer from "../../components/footer"; import { connect } from "react-redux"; import { wrapper } from "../../store/store"; import StorageTab from "../../components/admin/tabs/storage"; import AccountsTab from "../../components/admin/tabs/accounts"; import AppealsTab from "../../components/admin/tabs/appeals"; import DocumentsTab from "../../components/admin/tabs/documents"; import { fetchAdminStorageData } from "../../components/admin/utils/serverside"; import { getNewAppeals } from "../../actions"; import { getSearchDetails } from "../../components/utils"; import { setSearchDetails, setSearchResults, } from "../../store/searchOutput/action"; import { setCurrentPage } from "../../store/currentView/action"; const StoragePage = (props) => { const { data, userData, repCompleteCount, searchResultsObj, docsOffline, showFilteredDocs, } = props; const [whichTab, setWhichTab] = useState("documents"); return (
Admin Browser
); }; export const getServerSideProps = wrapper.getServerSideProps( (store) => async (ctx) => { const { query, req, res } = ctx; // IP restriction check const ALLOWED_IPS = process.env.ALLOWED_IPS ? process.env.ALLOWED_IPS.split(",").map((ip) => ip.trim()) : []; const LOCALHOST_IPS = ["127.0.0.1", "::1"]; const forwarded = req.headers["x-forwarded-for"]; const ip = typeof forwarded === "string" ? forwarded.split(",")[0] : req.socket.remoteAddress; if (![...ALLOWED_IPS, ...LOCALHOST_IPS].includes(ip)) { return { redirect: { destination: "/403", permanent: false }, }; } // 🔹 fetch actual data const { data, userData, repCompleteCount } = await fetchAdminStorageData(); const newAppeals = await getNewAppeals(); const searchDetailsObj = await getSearchDetails(newAppeals); store.dispatch(setSearchResults(newAppeals)); store.dispatch(setSearchDetails(searchDetailsObj)); const state = store.getState(); store.dispatch(setCurrentPage(1)); return { props: { data, userData, repCompleteCount, docsOffline: process.env.DOCAPI_OFFLINE || false, showFilteredDocs: process.env.SHOWFILTERDOCS || false, }, }; } ); const mapDispatchToProps = (dispatch) => { return { setCurrentPage: (currentPage) => { dispatch(setCurrentPage(currentPage)); }, }; }; const mapStateToProps = (state) => { console.log("===============================\n state:", state); return { searchResultsObj: state.searchResultsObj, }; }; export default connect(mapStateToProps, mapDispatchToProps)(StoragePage);