Disable cleanup by default and show errors in admin area

This commit is contained in:
Stefan Müller 2024-09-10 17:25:51 +02:00
parent 593d1021b6
commit 3330ed8d1b
6 changed files with 53 additions and 1 deletions

View file

@ -23,6 +23,7 @@ export const PadPage = ()=>{
const pads = useStore(state=>state.pads) const pads = useStore(state=>state.pads)
const [currentPage, setCurrentPage] = useState<number>(0) const [currentPage, setCurrentPage] = useState<number>(0)
const [deleteDialog, setDeleteDialog] = useState<boolean>(false) const [deleteDialog, setDeleteDialog] = useState<boolean>(false)
const [errorText, setErrorText] = useState<string|null>(null)
const [padToDelete, setPadToDelete] = useState<string>('') const [padToDelete, setPadToDelete] = useState<string>('')
const pages = useMemo(()=>{ const pages = useMemo(()=>{
if(!pads){ if(!pads){
@ -72,6 +73,11 @@ export const PadPage = ()=>{
settingsSocket.on('results:cleanupPadRevisions', (data)=>{ settingsSocket.on('results:cleanupPadRevisions', (data)=>{
let newPads = useStore.getState().pads?.results ?? [] let newPads = useStore.getState().pads?.results ?? []
if (data.error) {
setErrorText(data.error)
return
}
newPads.forEach((pad)=>{ newPads.forEach((pad)=>{
if (pad.padName === data.padId) { if (pad.padName === data.padId) {
pad.revisionNumber = data.keepRevisions pad.revisionNumber = data.keepRevisions
@ -118,6 +124,21 @@ export const PadPage = ()=>{
</Dialog.Content> </Dialog.Content>
</Dialog.Portal> </Dialog.Portal>
</Dialog.Root> </Dialog.Root>
<Dialog.Root open={errorText !== null}>
<Dialog.Portal>
<Dialog.Overlay className="dialog-confirm-overlay"/>
<Dialog.Content className="dialog-confirm-content">
<div>
<div>Error occured: {errorText}</div>
<div className="settings-button-bar">
<button onClick={() => {
setErrorText(null)
}}>OK</button>
</div>
</div>
</Dialog.Content>
</Dialog.Portal>
</Dialog.Root>
<h1><Trans i18nKey="ep_admin_pads:ep_adminpads2_manage-pads"/></h1> <h1><Trans i18nKey="ep_admin_pads:ep_adminpads2_manage-pads"/></h1>
<SearchField value={searchTerm} onChange={v=>setSearchTerm(v.target.value)} placeholder={t('ep_admin_pads:ep_adminpads2_search-heading')}/> <SearchField value={searchTerm} onChange={v=>setSearchTerm(v.target.value)} placeholder={t('ep_admin_pads:ep_adminpads2_search-heading')}/>
<table> <table>

View file

@ -171,6 +171,14 @@
*/ */
"showSettingsInAdminPage": "${SHOW_SETTINGS_IN_ADMIN_PAGE:true}", "showSettingsInAdminPage": "${SHOW_SETTINGS_IN_ADMIN_PAGE:true}",
/*
* Settings for cleanup of pads
*/
"cleanup": {
"enabled": false,
"keepRevisions": 5
},
/* /*
The authentication method used by the server. The authentication method used by the server.
The default value is sso The default value is sso

View file

@ -162,6 +162,14 @@
*/ */
"showSettingsInAdminPage": true, "showSettingsInAdminPage": true,
/*
* Settings for cleanup of pads
*/
"cleanup": {
"enabled": false,
"keepRevisions": 5
},
/* /*
* Node native SSL support * Node native SSL support
* *

View file

@ -254,6 +254,13 @@ exports.socketio = (hookName: string, {io}: any) => {
}) })
socket.on('cleanupPadRevisions', async (padId: string) => { socket.on('cleanupPadRevisions', async (padId: string) => {
if (!settings.cleanup.enabled) {
socket.emit('results:cleanupPadRevisions', {
error: 'Cleanup disabled. Enable cleanup in settings.json: cleanup.enabled => true',
});
return;
}
const padExists = await padManager.doesPadExists(padId); const padExists = await padManager.doesPadExists(padId);
if (padExists) { if (padExists) {
logger.info(`Cleanup pad revisions: ${padId}`); logger.info(`Cleanup pad revisions: ${padId}`);
@ -265,9 +272,16 @@ exports.socketio = (hookName: string, {io}: any) => {
keepRevisions: settings.cleanup.keepRevisions, keepRevisions: settings.cleanup.keepRevisions,
}); });
logger.info('successful cleaned up pad: ', padId) logger.info('successful cleaned up pad: ', padId)
} else {
socket.emit('results:cleanupPadRevisions', {
error: 'Error cleaning up pad',
});
} }
} catch (err: any) { } catch (err: any) {
logger.error(`Error in pad ${padId}: ${err.stack || err}`); logger.error(`Error in pad ${padId}: ${err.stack || err}`);
socket.emit('results:cleanupPadRevisions', {
error: err.toString(),
});
return; return;
} }
} }

View file

@ -48,7 +48,7 @@ exports.deleteRevisions = async (padId: string, keepRevisions: number): Promise<
logger.debug('Initial pad is valid') logger.debug('Initial pad is valid')
if (pad.head < keepRevisions) { if (pad.head <= keepRevisions) {
logger.debug('Pad has not enough revisions') logger.debug('Pad has not enough revisions')
return false return false
} }

View file

@ -384,6 +384,7 @@ exports.showSettingsInAdminPage = true;
* Settings for cleanup of pads * Settings for cleanup of pads
*/ */
exports.cleanup = { exports.cleanup = {
enabled: false,
keepRevisions: 100, keepRevisions: 100,
} }