dsql-admin/dsql-app/.local_dist/server/pages/admin/[user_id]/media.js
Benjamin Toby 748ff55092 Bug Fixes
2024-11-05 15:18:40 +01:00

616 lines
22 KiB
JavaScript

"use strict";
(() => {
var exports = {};
exports.id = 3400;
exports.ids = [3400];
exports.modules = {
/***/ 8333:
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
// ESM COMPAT FLAG
__webpack_require__.r(__webpack_exports__);
// EXPORTS
__webpack_require__.d(__webpack_exports__, {
"MediaContext": () => (/* binding */ MediaContext),
"default": () => (/* binding */ Dashboard),
"getServerSideProps": () => (/* binding */ getServerSideProps)
});
// EXTERNAL MODULE: external "react/jsx-runtime"
var jsx_runtime_ = __webpack_require__(997);
// EXTERNAL MODULE: external "react"
var external_react_ = __webpack_require__(6689);
var external_react_default = /*#__PURE__*/__webpack_require__.n(external_react_);
// EXTERNAL MODULE: ./layouts/AdminLayout.jsx + 2 modules
var AdminLayout = __webpack_require__(4858);
// EXTERNAL MODULE: ./functions/backend/userAuth.js
var userAuth = __webpack_require__(370);
var userAuth_default = /*#__PURE__*/__webpack_require__.n(userAuth);
// EXTERNAL MODULE: ./components/general/Breadcrumbs.jsx
var Breadcrumbs = __webpack_require__(424);
// EXTERNAL MODULE: ./components/general/GeneralPopup.jsx
var GeneralPopup = __webpack_require__(5472);
// EXTERNAL MODULE: ./components/general/VerificationBanner.jsx
var VerificationBanner = __webpack_require__(7946);
// EXTERNAL MODULE: ./components/admin/media/MediaList.jsx + 5 modules
var MediaList = __webpack_require__(7604);
// EXTERNAL MODULE: ./components/general/ui/ButtonGroup.jsx
var ButtonGroup = __webpack_require__(5449);
;// CONCATENATED MODULE: ./components/admin/media/MediaContent.jsx
// @ts-check
/**
* ==============================================================================
* Imports
* ==============================================================================
*/
/** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /**
* ==============================================================================
* Main Component { Functional }
* ==============================================================================
* @param {Object} props - Server props
*/ function MediaContent(props) {
/**
* Get Contexts
*
* @abstract { React.useContext }
*/ const { media , setTargetMedia , user , folders , staticHost } = external_react_default().useContext(MediaContext);
////////////////////////////////////////
////////////////////////////////////////
////////////////////////////////////////
/**
* Javascript Variables
*
* @abstract Non hook variables and functions
*/ ////////////////////////////////////////
////////////////////////////////////////
////////////////////////////////////////
/**
* React Hooks
*
* @abstract { useState, useEffect, useRef, etc ... }
*/ ////////////////////////////////////////
////////////////////////////////////////
////////////////////////////////////////
/**
* Function Return
*
* @abstract Main Function Return
*/ return /*#__PURE__*/ (0,jsx_runtime_.jsxs)((external_react_default()).Fragment, {
children: [
/*#__PURE__*/ (0,jsx_runtime_.jsxs)("div", {
className: "flex-col items-start gap-0 w-full",
children: [
/*#__PURE__*/ (0,jsx_runtime_.jsxs)("div", {
className: "w-full justify-between flex-wrap",
children: [
/*#__PURE__*/ jsx_runtime_.jsx("h1", {
className: "text-3xl m-0",
children: "Media"
}),
/*#__PURE__*/ (0,jsx_runtime_.jsxs)(ButtonGroup/* default */.Z, {
children: [
/*#__PURE__*/ (0,jsx_runtime_.jsxs)("button", {
className: "flex items-center gap-2",
onClick: (e)=>{
(0,GeneralPopup/* openPopup */.Mw)("choose-media-type-popoup");
},
children: [
/*#__PURE__*/ jsx_runtime_.jsx("span", {
className: "symbol",
children: "+"
}),
/*#__PURE__*/ jsx_runtime_.jsx("span", {
children: "Add Media"
})
]
}),
/*#__PURE__*/ (0,jsx_runtime_.jsxs)("button", {
className: "flex items-center gap-2 outlined gray",
onClick: (e)=>{
(0,GeneralPopup/* openPopup */.Mw)("add-folder-popoup");
},
children: [
/*#__PURE__*/ jsx_runtime_.jsx("span", {
className: "symbol",
children: "+"
}),
/*#__PURE__*/ jsx_runtime_.jsx("span", {
children: "Add Folder"
})
]
})
]
})
]
}),
/*#__PURE__*/ jsx_runtime_.jsx(Breadcrumbs/* default */.Z, {
user: user
})
]
}),
user?.verification_status?.toString().match(/1/) ? /*#__PURE__*/ (0,jsx_runtime_.jsxs)((external_react_default()).Fragment, {
children: [
/*#__PURE__*/ jsx_runtime_.jsx(MediaList/* default */.Z, {
media: media,
setTargetMedia: setTargetMedia,
folders: folders,
staticHost: staticHost,
user: user
}),
media && media[0] && /*#__PURE__*/ (0,jsx_runtime_.jsxs)("a", {
className: "border-dotted border-slate-400 border-2 px-4 py-3 w-full rounded flex items-center hover:border-primary/50 gap-2 cursor-pointer justify-center",
onClick: (e)=>{
(0,GeneralPopup/* openPopup */.Mw)("choose-media-type-popoup");
},
children: [
/*#__PURE__*/ jsx_runtime_.jsx("span", {
className: "symbol",
children: "+"
}),
/*#__PURE__*/ jsx_runtime_.jsx("span", {
className: "",
children: "Add Media"
})
]
})
]
}) : /*#__PURE__*/ jsx_runtime_.jsx(VerificationBanner/* default */.Z, {})
]
});
////////////////////////////////////////
////////////////////////////////////////
////////////////////////////////////////
} /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */
// EXTERNAL MODULE: ./components/general/UploadImageComponent.jsx
var UploadImageComponent = __webpack_require__(3770);
// EXTERNAL MODULE: ./components/admin/media/NewMediaPopup.jsx + 3 modules
var NewMediaPopup = __webpack_require__(4891);
// EXTERNAL MODULE: ./components/admin/media/TargetMediaPreviewPopup.jsx
var TargetMediaPreviewPopup = __webpack_require__(3428);
// EXTERNAL MODULE: ./components/admin/media/NewFolderPopup.jsx
var NewFolderPopup = __webpack_require__(1597);
// EXTERNAL MODULE: ./components/general/UploadFileComponent.jsx
var UploadFileComponent = __webpack_require__(8916);
// EXTERNAL MODULE: ./components/admin/media/ChooseMediaTypePopup.jsx
var ChooseMediaTypePopup = __webpack_require__(9201);
// EXTERNAL MODULE: ./components/general/LoadingBlock.jsx
var LoadingBlock = __webpack_require__(5264);
// EXTERNAL MODULE: ./package-shared/utils/backend/global-db/DB_HANDLER.js
var DB_HANDLER = __webpack_require__(9395);
var DB_HANDLER_default = /*#__PURE__*/__webpack_require__.n(DB_HANDLER);
// EXTERNAL MODULE: external "path"
var external_path_ = __webpack_require__(1017);
var external_path_default = /*#__PURE__*/__webpack_require__.n(external_path_);
// EXTERNAL MODULE: ./components/general/UploadVideoComponent.jsx
var UploadVideoComponent = __webpack_require__(7525);
;// CONCATENATED MODULE: ./pages/admin/[user_id]/media/index.jsx
// @ts-check
/**
* ==============================================================================
* Imports
* ==============================================================================
*/
const fs = __webpack_require__(7147);
////////////////////////////////////////
////////////////////////////////////////
////////////////////////////////////////
/** ****************************************************************************** */ /** @type {import("@/package-shared/types").MediaContextType} */ // @ts-ignore
const init = {};
const MediaContext = /*#__PURE__*/ external_react_default().createContext(init);
/** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /**
* ==============================================================================
* Main Component { Functional }
* ==============================================================================
* @param {Object} props - Server props
* @param {import("@/package-shared/types").UserType} props.user
* @param {import("@/package-shared/types").MYSQL_user_media_table_def[]} props.media
* @param {string[]} props.folders
* @param {string} props.staticHost
*/ function Dashboard({ user , media , folders , staticHost }) {
/**
* Get Contexts
*
* @abstract { React.useContext }
*/ ////////////////////////////////////////
////////////////////////////////////////
////////////////////////////////////////
/**
* Javascript Variables
*
* @abstract Non hook variables and functions
*/ const pageTitle = "User Dashboard | Datasquirel";
const pageDescription = "Welcome to your data app";
let head = /*#__PURE__*/ (0,jsx_runtime_.jsxs)(jsx_runtime_.Fragment, {
children: [
/*#__PURE__*/ jsx_runtime_.jsx("title", {
children: pageTitle
}),
/*#__PURE__*/ jsx_runtime_.jsx("meta", {
name: "description",
content: pageDescription
})
]
});
////////////////////////////////////////
////////////////////////////////////////
////////////////////////////////////////
/**
* React Hooks
*
* @abstract { useState, useEffect, useRef, etc ... }
*/ /** @type {[ newMedia: import("@/package-shared/types").ImageObjectType[] | null, setNewMedia: React.Dispatch<React.SetStateAction<import("@/package-shared/types").ImageObjectType[] | null>> ]} */ // @ts-ignore
const [newMedia, setNewMedia] = external_react_default().useState(null);
/** @type {[ newFile: any | null, setNewFile: React.Dispatch<React.SetStateAction<any>> ]} */ // @ts-ignore
const [newFile, setNewFile] = external_react_default().useState(null);
/** @type {[ newFile: any | null, setNewFile: React.Dispatch<React.SetStateAction<any>> ]} */ // @ts-ignore
const [newVideo, setNewVideo] = external_react_default().useState(null);
const [loading, setLoading] = external_react_default().useState(false);
/** @type {[ targetMedia: import("@/package-shared/types").MYSQL_user_media_table_def | null, setTargetMedia: React.Dispatch<React.SetStateAction<import("@/package-shared/types").MYSQL_user_media_table_def | null>> ]} */ // @ts-ignore
const [targetMedia, setTargetMedia] = external_react_default().useState(null);
////////////////////////////////////////
////////////////////////////////////////
////////////////////////////////////////
/**
* Function Return
*
* @abstract Main Function Return
*/ return /*#__PURE__*/ jsx_runtime_.jsx(AdminLayout/* default */.Z, {
head: head,
user: user,
children: /*#__PURE__*/ (0,jsx_runtime_.jsxs)(MediaContext.Provider, {
value: {
user,
media,
targetMedia,
setTargetMedia,
folders,
staticHost
},
children: [
loading && /*#__PURE__*/ jsx_runtime_.jsx(LoadingBlock/* default */.Z, {
screen: true,
title: "Processing Files ..."
}),
/*#__PURE__*/ jsx_runtime_.jsx(MediaContent, {}),
/*#__PURE__*/ jsx_runtime_.jsx(UploadImageComponent/* default */.Z, {
setNewMedia: setNewMedia,
setLoading: setLoading
}),
/*#__PURE__*/ jsx_runtime_.jsx(UploadFileComponent/* default */.Z, {
setNewFile: setNewFile,
setLoading: setLoading
}),
/*#__PURE__*/ jsx_runtime_.jsx(UploadVideoComponent/* default */.Z, {
setNewVideo: setNewVideo,
setLoading: setLoading
}),
/*#__PURE__*/ jsx_runtime_.jsx(NewMediaPopup/* default */.Z, {
newMedia: newMedia,
setNewMedia: setNewMedia,
newFile: newFile,
setNewFile: setNewFile,
newVideo: newVideo,
setNewVideo: setNewVideo
}),
/*#__PURE__*/ jsx_runtime_.jsx(TargetMediaPreviewPopup/* default */.Z, {
targetMedia: targetMedia,
setTargetMedia: setTargetMedia,
staticHost: staticHost,
media: media
}),
/*#__PURE__*/ jsx_runtime_.jsx(NewFolderPopup/* default */.Z, {}),
/*#__PURE__*/ jsx_runtime_.jsx(ChooseMediaTypePopup/* default */.Z, {
user: user
})
]
})
});
////////////////////////////////////////
////////////////////////////////////////
////////////////////////////////////////
}
/** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /**
* ==============================================================================
* Server Side Props or Static Props
* ==============================================================================
* @type {import("next").GetServerSideProps}
*/ async function getServerSideProps({ req , res , query }) {
/**
* User Auth
*
* @description User Auth
*/ const user = await userAuth_default()(req, res);
if (!user?.logged_in_status) {
return {
redirect: {
destination: "/login",
permanent: false
}
};
}
/**
* Page/Site Data Data Fetching
*
* @description Fetch data on the server before returning
*/ const media = await DB_HANDLER_default()(`SELECT * FROM user_media WHERE user_id='${user.id}' AND folder IS NULL`);
const STATIC_ROOT = process.env.DSQL_STATIC_SERVER_DIR;
if (!STATIC_ROOT) {
console.log("Static File ENV not Found!");
return {
redirect: {
destination: "/admin",
permanent: false
}
};
}
const folderPath = external_path_default().join(STATIC_ROOT, `images/user-images/user-${user.id}/`);
if (!fs.existsSync(folderPath)) {
return {
redirect: {
destination: "/admin",
permanent: false
}
};
}
const folders = fs.readdirSync(folderPath).filter((name)=>!name.match(/\..{3,4}$/));
////////////////////////////////////////
////////////////////////////////////////
////////////////////////////////////////
/**
* Server props return
*
* @description Return data fetched on the server side
*/ return {
props: {
user: user,
media: media,
folders: folders,
staticHost: process.env.DSQL_STATIC_HOST || ""
}
};
////////////////////////////////////////
////////////////////////////////////////
////////////////////////////////////////
}
/***/ }),
/***/ 4003:
/***/ ((module) => {
module.exports = require("@mui/icons-material/AdminPanelSettingsTwoTone");
/***/ }),
/***/ 9765:
/***/ ((module) => {
module.exports = require("@mui/icons-material/AssignmentTwoTone");
/***/ }),
/***/ 69:
/***/ ((module) => {
module.exports = require("@mui/icons-material/CloudOffTwoTone");
/***/ }),
/***/ 4008:
/***/ ((module) => {
module.exports = require("@mui/icons-material/CloudQueueRounded");
/***/ }),
/***/ 7306:
/***/ ((module) => {
module.exports = require("@mui/icons-material/CollectionsTwoTone");
/***/ }),
/***/ 386:
/***/ ((module) => {
module.exports = require("@mui/icons-material/CottageTwoTone");
/***/ }),
/***/ 8757:
/***/ ((module) => {
module.exports = require("@mui/icons-material/DeleteOutlineOutlined");
/***/ }),
/***/ 8979:
/***/ ((module) => {
module.exports = require("@mui/icons-material/DynamicFormTwoTone");
/***/ }),
/***/ 8398:
/***/ ((module) => {
module.exports = require("@mui/icons-material/FolderCopyTwoTone");
/***/ }),
/***/ 300:
/***/ ((module) => {
module.exports = require("@mui/icons-material/LanguageOutlined");
/***/ }),
/***/ 8083:
/***/ ((module) => {
module.exports = require("@mui/icons-material/LockOpenOutlined");
/***/ }),
/***/ 4624:
/***/ ((module) => {
module.exports = require("@mui/icons-material/LockPersonRounded");
/***/ }),
/***/ 2814:
/***/ ((module) => {
module.exports = require("@mui/icons-material/LockTwoTone");
/***/ }),
/***/ 5557:
/***/ ((module) => {
module.exports = require("@mui/icons-material/MenuBookTwoTone");
/***/ }),
/***/ 9806:
/***/ ((module) => {
module.exports = require("@mui/icons-material/PeopleOutlineTwoTone");
/***/ }),
/***/ 5580:
/***/ ((module) => {
module.exports = require("@mui/icons-material/PermMediaTwoTone");
/***/ }),
/***/ 36:
/***/ ((module) => {
module.exports = require("@mui/icons-material/RefreshRounded");
/***/ }),
/***/ 1799:
/***/ ((module) => {
module.exports = require("@mui/icons-material/SchemaTwoTone");
/***/ }),
/***/ 871:
/***/ ((module) => {
module.exports = require("@mui/icons-material/VideoCameraBackTwoTone");
/***/ }),
/***/ 2423:
/***/ ((module) => {
module.exports = require("lucide-react");
/***/ }),
/***/ 968:
/***/ ((module) => {
module.exports = require("next/head");
/***/ }),
/***/ 6689:
/***/ ((module) => {
module.exports = require("react");
/***/ }),
/***/ 997:
/***/ ((module) => {
module.exports = require("react/jsx-runtime");
/***/ }),
/***/ 2261:
/***/ ((module) => {
module.exports = require("serverless-mysql");
/***/ }),
/***/ 4300:
/***/ ((module) => {
module.exports = require("buffer");
/***/ }),
/***/ 6113:
/***/ ((module) => {
module.exports = require("crypto");
/***/ }),
/***/ 7147:
/***/ ((module) => {
module.exports = require("fs");
/***/ }),
/***/ 3685:
/***/ ((module) => {
module.exports = require("http");
/***/ }),
/***/ 1017:
/***/ ((module) => {
module.exports = require("path");
/***/ })
};
;
// load runtime
var __webpack_require__ = require("../../../webpack-runtime.js");
__webpack_require__.C(exports);
var __webpack_exec__ = (moduleId) => (__webpack_require__(__webpack_require__.s = moduleId))
var __webpack_exports__ = __webpack_require__.X(0, [4017,8313,5264,6729,5449,913,4480,370,424,4858,5472,8345,6718,7946,6390], () => (__webpack_exec__(8333)));
module.exports = __webpack_exports__;
})();