// 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 AppealsWithStatusTab from "../../components/admin/tabs/appealsWithStatus";
import AppealStatusDashboard from "../../components/admin/tabs/appealsDashboard";
import AppealLpaStatusDashboard from "../../components/admin/tabs/appealsDashboardLPA";
import { fetchAdminStorageData } from "../../components/admin/utils/serverside";
import {
getNewAppeals,
getStatusByAppeal,
getStatusByAppealLPA
} from "../../actions/services/adminService";
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,
statusObj,
statusLPAObj
} = props;
const [whichTab, setWhichTab] = useState("appealDashboard");
return (
Admin Browser
Contents
{/* Tabs */}
{/* Panels */}
);
};
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 statusObj = await getStatusByAppeal();
const statusLPAObj = await getStatusByAppealLPA();
const searchDetailsObj = await getSearchDetails(newAppeals);
store.dispatch(setSearchResults(newAppeals));
store.dispatch(setSearchDetails(searchDetailsObj));
const state = store.getState();
store.dispatch(setCurrentPage(1));
return {
props: {
statusObj,
statusLPAObj,
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);