{"version":3,"sources":["dashboard.js"],"names":["const","lsKeys","token","viewType","uploads","uploadsAll","selected","users","page","dom","localStorage","username","permissions","menusContainer","menus","currentView","views","type","album","pageNum","filters","all","checkboxes","lastSelected","upload","user","selectAlbumContainer","cache","albums","clipboardJS","lazyLoad","imageExts","videoExts","isTriggerLoading","fadingIn","albumTitleMaxLength","albumDescMaxLength","unhide","document","querySelector","classList","add","remove","onError","error","console","content","createElement","innerHTML","toString","swal","title","icon","onAxiosError","statusText","520","521","522","523","524","525","526","527","530","response","status","description","data","preparePage","verifyToken","window","location","reloadOnError","axios","post","then","success","text","removeItem","defaults","headers","common","prepareDashboard","catch","addEventListener","domClick","event","target","contains","preventDefault","itemMenus","selector","onclick","getUploads","deleteUploadsByNames","getAlbums","changeToken","changePassword","logout","params","group","getStatistics","getUsers","loop","i","item","call","Object","assign","trigger","currentTarget","push","length","moderator","getAlbumsSidebar","prepareShareX","updateTrigger","newState","parentNode","tagName","let","getItemID","element","parent","parseInt","dataset","id","includes","action","hasAttribute","stopPropagation","setUploadsView","addToAlbum","deleteUpload","addSelectedUploadsToAlbum","bulkDeleteUploads","displayPreview","uploadFiltersHelp","filterUploads","submitAlbum","editAlbum","deleteAlbum","createUser","editUser","disableUser","deleteUser","viewUserUploads","getNewToken","clearSelection","select","selectAll","focusJumpToPage","switchPage","fadeAndScroll","disableFading","clearTimeout","setTimeout","scrollIntoView","behavior","block","inline","func","goto","jumpToPage","checkValidity","parsed","value","isNaN","focus","undefined","url","minOffset","Date","getTimezoneOffset","get","pages","Math","ceil","count","files","autoPage","basedomain","pagination","paginate","filter","escape","extraControls","controls","unselected","hasExpiryDateColumn","some","file","expirydate","thumb","exec","extname","toLowerCase","name","original","prettyBytes","getPrettyBytes","size","prettyDate","getPrettyDate","timestamp","prettyExpiryDate","appendix","userid","albumid","table","div","className","appendChild","querySelectorAll","tr","ip","checked","update","view","isimage","isvideo","src","onload","body","onerror","video","autoplay","insertAdjacentElement","buttons","splice","indexOf","JSON","stringify","selectInBetween","lastElement","thisIndex","index","lastIndex","abs","shiftKey","suffix","substring","proceed","style","trim","replace","postBulkDeleteUploads","field","values","cb","failed","textArea","seen","names","split","map","trimmed","test","prototype","hasOwnProperty","join","objective","dangerMode","cancel","confirm","closeModal","fields","Array","isArray","timer","addUploadsToAlbum","ids","callback","choose","added","list","getElementsByTagName","removeAttribute","homeDomain","albumUrl","download","public","requestLink","identifier","purge","albumsContainer","oldAlbums","li","a","sendNewPassword","pass","password","admin","displayGroup","groups","keys","enabled","usage","groupOptions","g","resetPassword","autoClose","displayName","totalItems","itemsPerPage","currentPage","numPages","template","start","end","elementsToShow","step","stats","rows","types","_types","valKeys","j","number","toLocaleString","byte","byteUsage","used","total","round","toUpperCase","defineProperty","varArgs","arguments$1","arguments","TypeError","to","nextSource","nextKey","writable","configurable","documentElement","selectedKeys","ls","parse","ClipboardJS","on","LazyLoad"],"mappings":"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","file":"dashboard.js","sourcesContent":["/* global swal, axios, ClipboardJS, LazyLoad */\n\nconst lsKeys = {\n token: 'token',\n viewType: {\n uploads: 'viewTypeUploads',\n uploadsAll: 'viewTypeUploadsAll'\n },\n selected: {\n uploads: 'selectedUploads',\n uploadsAll: 'selectedUploadsAll',\n users: 'selectedUsers'\n }\n}\n\nconst page = {\n // #page\n dom: null,\n\n // user token\n token: localStorage[lsKeys.token],\n\n // from api/tokens/verify\n username: null,\n permissions: null,\n\n // sidebar menus\n menusContainer: null,\n menus: [],\n\n currentView: null,\n views: {\n // config of uploads view\n uploads: {\n type: localStorage[lsKeys.viewType.uploads],\n album: null, // album's id\n pageNum: null // page num\n },\n // config of uploads view (all)\n uploadsAll: {\n type: localStorage[lsKeys.viewType.uploadsAll],\n filters: null, // uploads' filters\n pageNum: null, // page num\n all: true\n },\n // config of users view\n users: {\n filters: null, // users' filters\n pageNum: null\n }\n },\n\n // id of selected items (shared across pages and will be synced with localStorage)\n selected: {\n uploads: [],\n uploadsAll: [],\n users: []\n },\n checkboxes: {\n uploads: [],\n uploadsAll: [],\n users: []\n },\n lastSelected: {\n upload: null,\n uploadsAll: null,\n user: null\n },\n\n // select album dom for dialogs/modals\n selectAlbumContainer: null,\n\n // cache for dialogs/modals\n cache: {\n uploads: {},\n albums: {},\n users: {}\n },\n\n clipboardJS: null,\n lazyLoad: null,\n\n imageExts: ['.webp', '.jpg', '.jpeg', '.gif', '.png', '.tiff', '.tif', '.svg'],\n // TODO: Disable \"Load original\" button with non-streamable extensions\n videoExts: ['.webm', '.mp4', '.wmv', '.avi', '.mov', '.mkv', '.m4v', '.m2ts'],\n\n isTriggerLoading: null,\n fadingIn: null,\n\n albumTitleMaxLength: 70,\n albumDescMaxLength: 4000\n}\n\npage.unhide = () => {\n document.querySelector('#loader').classList.add('is-hidden')\n document.querySelector('#dashboard').classList.remove('is-hidden')\n}\n\n// Handler for regular JS errors\npage.onError = error => {\n console.error(error)\n\n const content = document.createElement('div')\n content.innerHTML = `${error.toString()}
`\n return swal({\n title: 'An error occurred!',\n icon: 'error',\n content\n })\n}\n\n// Handler for Axios errors\npage.onAxiosError = error => {\n console.error(error)\n\n // Better Cloudflare errors\n const cloudflareErrors = {\n 520: 'Unknown Error',\n 521: 'Web Server Is Down',\n 522: 'Connection Timed Out',\n 523: 'Origin Is Unreachable',\n 524: 'A Timeout Occurred',\n 525: 'SSL Handshake Failed',\n 526: 'Invalid SSL Certificate',\n 527: 'Railgun Error',\n 530: 'Origin DNS Error'\n }\n\n const statusText = cloudflareErrors[error.response.status] || error.response.statusText\n const description = error.response.data && error.response.data.description\n ? error.response.data.description\n : 'There was an error with the request, please check the console for more information.'\n\n return swal(`${error.response.status} ${statusText}`, description, 'error')\n}\n\npage.preparePage = () => {\n if (page.token)\n page.verifyToken(page.token, true)\n else\n window.location = 'auth'\n}\n\npage.verifyToken = (token, reloadOnError) => {\n axios.post('api/tokens/verify', { token }).then(response => {\n if (response.data.success === false)\n return swal({\n title: 'An error occurred!',\n text: response.data.description,\n icon: 'error'\n }).then(() => {\n if (!reloadOnError) return\n localStorage.removeItem(lsKeys.token)\n window.location = 'auth'\n })\n\n axios.defaults.headers.common.token = token\n localStorage[lsKeys.token] = token\n\n page.token = token\n page.username = response.data.username\n page.permissions = response.data.permissions\n page.prepareDashboard()\n }).catch(page.onAxiosError)\n}\n\npage.prepareDashboard = () => {\n page.dom = document.querySelector('#page')\n\n // Capture all click events\n page.dom.addEventListener('click', page.domClick, true)\n\n // Capture all submit events\n page.dom.addEventListener('submit', event => {\n // Prevent default if necessary\n if (event.target && event.target.classList.contains('prevent-default'))\n return event.preventDefault()\n }, true)\n\n page.menusContainer = document.querySelector('#menu')\n\n // All item menus in the sidebar\n const itemMenus = [\n { selector: '#itemUploads', onclick: page.getUploads },\n { selector: '#itemDeleteUploadsByNames', onclick: page.deleteUploadsByNames },\n { selector: '#itemManageAlbums', onclick: page.getAlbums },\n { selector: '#itemManageToken', onclick: page.changeToken },\n { selector: '#itemChangePassword', onclick: page.changePassword },\n { selector: '#itemLogout', onclick: page.logout },\n { selector: '#itemManageUploads', onclick: page.getUploads, params: { all: true }, group: 'moderator' },\n { selector: '#itemStatistics', onclick: page.getStatistics, group: 'admin' },\n { selector: '#itemManageUsers', onclick: page.getUsers, group: 'admin' }\n ]\n\n for (let i = 0; i < itemMenus.length; i++) {\n // Skip item menu if not enough permission\n if (itemMenus[i].group && !page.permissions[itemMenus[i].group])\n continue\n\n // Add onclick event listener\n const item = document.querySelector(itemMenus[i].selector)\n item.addEventListener('click', event => {\n // This class name isn't actually being applied fast enough\n if (page.menusContainer.classList.contains('is-loading'))\n return\n\n // eslint-disable-next-line compat/compat\n itemMenus[i].onclick.call(null, Object.assign({\n trigger: event.currentTarget\n }, itemMenus[i].params || {}))\n })\n\n item.classList.remove('is-hidden')\n page.menus.push(item)\n }\n\n // If at least a moderator, show administration section\n if (page.permissions.moderator) {\n document.querySelector('#itemLabelAdmin').classList.remove('is-hidden')\n document.querySelector('#itemListAdmin').classList.remove('is-hidden')\n }\n\n // Update text of logout button\n document.querySelector('#itemLogout').innerHTML = `Logout ( ${page.username} )`\n\n // Finally display dashboard\n page.unhide()\n\n // Load albums sidebar\n page.getAlbumsSidebar()\n\n if (typeof page.prepareShareX === 'function')\n page.prepareShareX()\n}\n\npage.logout = params => {\n page.updateTrigger(params.trigger, 'active')\n localStorage.removeItem(lsKeys.token)\n window.location = 'auth'\n}\n\npage.updateTrigger = (trigger, newState) => {\n if (!trigger) return\n\n // Disable menus container when loading\n if (newState === 'loading')\n page.menusContainer.classList.add('is-loading')\n else\n page.menusContainer.classList.remove('is-loading')\n\n if (newState === 'loading') {\n trigger.classList.add('is-loading')\n } else if (newState === 'active') {\n if (trigger.parentNode.tagName !== 'LI')\n return\n for (let i = 0; i < page.menus.length; i++)\n page.menus[i].classList.remove('is-active')\n trigger.classList.remove('is-loading')\n trigger.classList.add('is-active')\n } else {\n trigger.classList.remove('is-loading')\n trigger.classList.remove('is-active')\n }\n}\n\npage.getItemID = element => {\n // This expects the item's parent to have the item's ID\n let parent = element.parentNode\n // If the element is part of a set of controls, use the container's parent instead\n if (element.parentNode.classList.contains('controls')) parent = parent.parentNode\n return parseInt(parent.dataset.id)\n}\n\npage.domClick = event => {\n // We are processing clicks this way to avoid using \"onclick\" attribute\n // Apparently we will need to use \"unsafe-inline\" for \"script-src\" directive\n // of Content Security Policy (CSP), if we want to use \"onclick\" attribute\n // Though I think that only applies to some browsers (?)\n // Of course it wouldn't have mattered if we didn't use CSP to begin with\n // Anyway, I personally would rather not use \"onclick\" attribute\n let element = event.target\n if (!element) return\n\n // Delegate click events to their A or BUTTON parents\n if (['I'].includes(element.tagName) && ['SPAN'].includes(element.parentNode.tagName))\n element = element.parentNode\n if (['SPAN'].includes(element.tagName) && ['A', 'BUTTON'].includes(element.parentNode.tagName))\n element = element.parentNode\n\n // Skip elements that have no action data\n if (!element.dataset || !element.dataset.action) return\n\n // Skip disabled elements\n if (element.hasAttribute('disabled')) return\n\n event.stopPropagation() // maybe necessary\n const id = page.getItemID(element)\n const action = element.dataset.action\n\n switch (action) {\n // Uploads\n case 'view-list':\n return page.setUploadsView('list', element)\n case 'view-thumbs':\n return page.setUploadsView('thumbs', element)\n case 'add-to-album':\n return page.addToAlbum(id)\n case 'delete-upload':\n return page.deleteUpload(id)\n case 'add-selected-uploads-to-album':\n return page.addSelectedUploadsToAlbum()\n case 'bulk-delete-uploads':\n return page.bulkDeleteUploads()\n case 'display-preview':\n return page.displayPreview(id)\n // Manage uploads\n case 'upload-filters-help':\n return page.uploadFiltersHelp(element)\n case 'filter-uploads':\n return page.filterUploads(element)\n // Manage your albums\n case 'submit-album':\n return page.submitAlbum(element)\n case 'edit-album':\n return page.editAlbum(id)\n case 'delete-album':\n return page.deleteAlbum(id)\n // Manage users\n case 'create-user':\n return page.createUser()\n case 'edit-user':\n return page.editUser(id)\n case 'disable-user':\n return page.disableUser(id)\n case 'delete-user':\n return page.deleteUser(id)\n case 'view-user-uploads':\n return page.viewUserUploads(id, element)\n /* // WIP\n case 'user-filters-help':\n return page.userFiltersHelp(element)\n case 'filter-users':\n return page.filterUsers(element)\n */\n // Others\n case 'get-new-token':\n return page.getNewToken(element)\n // Uploads & Users\n case 'clear-selection':\n return page.clearSelection()\n case 'select':\n return page.select(element, event)\n case 'select-all':\n return page.selectAll(element)\n case 'page-ellipsis':\n return page.focusJumpToPage()\n case 'page-prev':\n case 'page-next':\n case 'page-goto':\n case 'jump-to-page':\n return page.switchPage(action, element)\n }\n}\n\npage.fadeAndScroll = disableFading => {\n if (page.fadingIn) {\n clearTimeout(page.fadingIn)\n page.dom.classList.remove('fade-in')\n }\n\n if (!disableFading) {\n page.dom.classList.add('fade-in')\n page.fadingIn = setTimeout(() => {\n page.dom.classList.remove('fade-in')\n }, 500)\n }\n\n page.dom.scrollIntoView({\n behavior: disableFading ? 'auto' : 'smooth',\n block: 'start',\n inline: 'nearest'\n })\n}\n\npage.switchPage = (action, element) => {\n // eslint-disable-next-line compat/compat\n const params = Object.assign({\n trigger: element\n }, page.views[page.currentView])\n\n const func = page.currentView === 'users' ? page.getUsers : page.getUploads\n\n switch (action) {\n case 'page-prev':\n params.pageNum = page.views[page.currentView].pageNum - 1\n if (params.pageNum < 0)\n return swal('An error occurred!', 'This is already the first page.', 'error')\n return func(params)\n case 'page-next':\n params.pageNum = page.views[page.currentView].pageNum + 1\n return func(params)\n case 'page-goto':\n params.pageNum = parseInt(element.dataset.goto)\n return func(params)\n case 'jump-to-page': {\n const jumpToPage = document.querySelector('#jumpToPage')\n if (!jumpToPage.checkValidity()) return\n const parsed = parseInt(jumpToPage.value)\n params.pageNum = isNaN(parsed) ? 0 : (parsed - 1)\n if (params.pageNum < 0) params.pageNum = 0\n return func(params)\n }\n }\n}\n\npage.focusJumpToPage = () => {\n const element = document.querySelector('#jumpToPage')\n if (!element) return\n element.focus()\n element.select()\n}\n\npage.getUploads = (params = {}) => {\n if (params === undefined)\n params = {}\n\n if ((params.all || params.filters) && !page.permissions.moderator)\n return swal('An error occurred!', 'You can not do this!', 'error')\n\n page.updateTrigger(params.trigger, 'loading')\n\n if (typeof params.pageNum !== 'number' || params.pageNum < 0)\n params.pageNum = 0\n\n const url = params.album !== undefined\n ? `api/album/${params.album}/${params.pageNum}`\n : `api/uploads/${params.pageNum}`\n\n const headers = {\n all: params.all ? '1' : '',\n filters: params.filters || ''\n }\n\n // Send client timezone offset if using date filter\n // Server will pretend client is on UTC if missing\n if (headers.filters.includes('date:') || headers.filters.includes('expiry:'))\n headers.minOffset = new Date().getTimezoneOffset()\n\n axios.get(url, { headers }).then(response => {\n if (response.data.success === false)\n if (response.data.description === 'No token provided') {\n return page.verifyToken(page.token)\n } else {\n page.updateTrigger(params.trigger)\n return swal('An error occurred!', response.data.description, 'error')\n }\n\n const pages = Math.ceil(response.data.count / 25)\n const files = response.data.files\n if (params.pageNum && (files.length === 0))\n if (params.autoPage) {\n params.pageNum = pages - 1\n return page.getUploads(params)\n } else {\n page.updateTrigger(params.trigger)\n return swal('An error occurred!', `There are no more uploads to populate page ${params.pageNum + 1}.`, 'error')\n }\n\n page.currentView = params.all ? 'uploadsAll' : 'uploads'\n page.cache.uploads = {}\n\n const albums = response.data.albums\n const users = response.data.users\n const basedomain = response.data.basedomain\n const pagination = page.paginate(response.data.count, 25, params.pageNum)\n\n let filter = '
${upload.name}
\n${upload.appendix ? `${upload.appendix} – ` : ''}${upload.prettyBytes}
\n ${hasExpiryDateColumn && upload.prettyExpiryDate ? `\nEXP: ${upload.prettyExpiryDate}
` : ''}\n\n | File name | \n ${params.album === undefined ? `${params.all ? 'User' : 'Album'} | ` : ''}\nSize | \n ${params.all ? 'IP | ' : ''}\nDate | \n ${hasExpiryDateColumn ? 'Expiry date | ' : ''}\n\n |
---|
user:demo
\n Uploads from users named \"demo\" AND/OR \"John Doe\" AND/OR non-registered users:\n user:demo user:\"John Doe\" user:-
\n ALL uploads, including from non-registered users, but NOT the ones from user named \"demo\":\n -user:demo user:-
\n Uploads from IP \"127.0.0.1\" AND which file names match \"*.rar\" OR \"*.zip\":\n ip:127.0.0.1 *.rar *.zip
\n Uploads uploaded since \"1 June 2019 00:00:00\":\n date:2019/06
\n Uploads uploaded between \"7 April 2020 00:00:00\" and \"7 April 2020 23:59:59\":\n date:2020/04/07-2020/04/07 23:59:59
\n Uploads which file names match \"*.gz\" but NOT \"*.tar.gz\":\n *.gz -*.tar.gz
\n Sort matches by \"size\" column in ascending and descending order respectively:\n user:\"John Doe\" orderby:size
\n *.mp4 user:- orderby:size:d
\n\n Friendly reminder: This window can be scrolled up!\n `.trim().replace(/^ {6}/gm, '').replace(/\\n/g, 'You won't be able to recover ${boldObjective}!
`\n\n if (params.all) {\n const obj1 = count === 1 ? 'an upload' : 'some uploads'\n const obj2 = count === 1 ? 'another user' : 'other users'\n text += `\\nWarning: You may be nuking ${obj1} by ${obj2}!
`\n }\n\n const content = document.createElement('div')\n content.innerHTML = text\n\n swal({\n title: 'Are you sure?',\n content,\n icon: 'warning',\n dangerMode: true,\n buttons: {\n cancel: true,\n confirm: {\n text: `Yes, nuke ${params.values.length === 1 ? 'it' : 'them'}!`,\n closeModal: false\n }\n }\n }).then(proceed => {\n if (!proceed) return\n\n axios.post('api/upload/bulkdelete', {\n field: params.fields,\n values: params.values\n }).then(response => {\n if (!response) return\n\n if (response.data.success === false)\n if (response.data.description === 'No token provided') {\n return page.verifyToken(page.token)\n } else {\n return swal('An error occurred!', response.data.description, 'error')\n }\n\n const failed = Array.isArray(response.data.failed) ? response.data.failed : []\n if (failed.length === params.values.length)\n swal('An error occurred!', `Unable to delete any of the ${objective}.`, 'error')\n else if (failed.length && failed.length < params.values.length)\n swal('Warning!', `From ${objective}, unable to delete ${failed.length} of them.`, 'warning')\n else\n swal('Deleted!', `${objective} ${count === 1 ? 'has' : 'have'} been deleted.`, 'success', {\n buttons: false,\n timer: 1500\n })\n\n if (typeof params.cb === 'function')\n params.cb(failed)\n }).catch(page.onAxiosError)\n })\n}\n\npage.addSelectedUploadsToAlbum = () => {\n if (page.currentView !== 'uploads')\n return\n\n const count = page.selected[page.currentView].length\n if (!count)\n return swal('An error occurred!', 'You have not selected any uploads.', 'error')\n\n page.addUploadsToAlbum(page.selected[page.currentView], failed => {\n if (!failed) return\n if (failed.length)\n page.selected[page.currentView] = page.selected[page.currentView].filter(id => {\n return failed.includes(id)\n })\n else\n page.selected[page.currentView] = []\n\n localStorage[lsKeys.selected[page.currentView]] = JSON.stringify(page.selected[page.currentView])\n page.getUploads(page.views[page.currentView])\n })\n}\n\npage.addToAlbum = id => {\n page.addUploadsToAlbum([id], failed => {\n if (!failed) return\n page.getUploads(page.views[page.currentView])\n })\n}\n\npage.addUploadsToAlbum = (ids, callback) => {\n const count = ids.length\n\n const content = document.createElement('div')\n content.innerHTML = `\nYou are about to add ${count} upload${count === 1 ? '' : 's'} to an album.
\nIf an upload is already in an album, it will be moved.
\nID | \nName | \nFiles | \nCreated at | \nPublic link | \n\n |
---|
Max length is ${page.albumTitleMaxLength} characters.
\nMax length is ${page.albumDescMaxLength} characters.
\n\n | Username | \nUploads | \nUsage | \nGroup | \n\n |
---|
Username: ${response.data.username}
\nPassword: ${response.data.password}
User group: ${response.data.group}
\n `\n swal({\n title: 'Created a new user!',\n icon: 'success',\n content: div\n })\n\n page.getUsers(page.views.users)\n }).catch(page.onAxiosError)\n })\n}\n\npage.editUser = id => {\n const user = page.cache.users[id]\n if (!user) return\n\n const groupOptions = Object.keys(page.permissions).map((g, i, a) => {\n const selected = g === user.displayGroup\n const disabled = !(a[i + 1] && page.permissions[a[i + 1]])\n return ``\n }).join('\\n')\n\n const div = document.createElement('div')\n div.innerHTML = `\n${user.username} was renamed into: ${response.data.update.username}.
`\n autoClose = false\n displayName = response.data.update.username\n }\n\n if (response.data.update.password) {\n div.innerHTML += `\n${displayName}'s new password is:
\n${response.data.update.password}
${displayName} has been ${response.data.update.enabled ? 'enabled' : 'disabled'}!
`\n\n if (!div.innerHTML)\n div.innerHTML = `${displayName} was edited!
`\n\n swal({\n title: 'Success!',\n icon: 'success',\n content: div,\n buttons: !autoClose,\n timer: autoClose ? 1500 : null\n })\n page.getUsers(page.views.users)\n }).catch(page.onAxiosError)\n })\n}\n\npage.disableUser = id => {\n const user = page.cache.users[id]\n if (!user || !user.enabled) return\n\n const content = document.createElement('div')\n content.innerHTML = `\nYou will be disabling a user named ${page.cache.users[id].username}.
\nTheir files will remain.
\n `\n\n swal({\n title: 'Are you sure?',\n icon: 'warning',\n content,\n dangerMode: true,\n buttons: {\n cancel: true,\n confirm: {\n text: 'Yes, disable them!',\n closeModal: false\n }\n }\n }).then(proceed => {\n if (!proceed) return\n\n axios.post('api/users/disable', { id }).then(response => {\n if (!response) return\n\n if (response.data.success === false)\n if (response.data.description === 'No token provided')\n return page.verifyToken(page.token)\n else\n return swal('An error occurred!', response.data.description, 'error')\n\n swal('Success!', `${page.cache.users[id].username} has been disabled.`, 'success', {\n buttons: false,\n timer: 1500\n })\n page.getUsers(page.views.users)\n }).catch(page.onAxiosError)\n })\n}\n\npage.deleteUser = id => {\n const user = page.cache.users[id]\n if (!user) return\n\n const content = document.createElement('div')\n content.innerHTML = `\nYou will be deleting a user named ${page.cache.users[id].username}.
\n
Their files will remain, unless you choose otherwise.
\n `\n\n swal({\n title: 'Are you sure?',\n icon: 'warning',\n content,\n dangerMode: true,\n buttons: {\n cancel: true,\n confirm: {\n text: 'Yes, delete it!',\n closeModal: false\n },\n purge: {\n text: 'Yes, and the uploads too!',\n value: 'purge',\n className: 'swal-button--danger',\n closeModal: false\n }\n }\n }).then(proceed => {\n if (!proceed) return\n\n axios.post('api/users/delete', {\n id,\n purge: proceed === 'purge'\n }).then(response => {\n if (!response) return\n\n if (response.data.success === false) {\n const failed = Array.isArray(response.data.failed)\n ? response.data.failed\n : []\n\n if (response.data.description === 'No token provided')\n return page.verifyToken(page.token)\n else if (failed.length)\n return swal('An error occurred!', `Unable to delete ${failed.length} of the user's upload${failed.length === 1 ? '' : 's'}.`, 'error')\n else\n return swal('An error occurred!', response.data.description, 'error')\n }\n\n swal('Success!', `${page.cache.users[id].username} has been deleted.`, 'success', {\n buttons: false,\n timer: 1500\n })\n\n // Reload users list\n // eslint-disable-next-line compat/compat\n page.getUsers(Object.assign({\n autoPage: true\n }, page.views.users))\n }).catch(page.onAxiosError)\n })\n}\n\n// Roughly based on https://github.com/mayuska/pagination/blob/master/index.js\npage.paginate = (totalItems, itemsPerPage, currentPage) => {\n currentPage = currentPage + 1\n const step = 3\n const numPages = Math.ceil(totalItems / itemsPerPage)\n\n let template = ''\n const elementsToShow = step * 2\n const add = {\n pageNum (start, end) {\n for (let i = start; i <= end; ++i)\n template += `${keys[i].toUpperCase()} | \n\n |
---|