2023-07-16 18:42:42 +02:00
import { CommandRuntime , CommandDeclaration , CommandContext } from '@joplin/lib/services/CommandService' ;
import { _ } from '@joplin/lib/locale' ;
import bridge from '../../../services/bridge' ;
import Folder from '@joplin/lib/models/Folder' ;
const { substrWithEllipsis } = require ( '@joplin/lib/string-utils' ) ;
export const declaration : CommandDeclaration = {
name : 'deleteFolder' ,
label : ( ) = > _ ( 'Delete notebook' ) ,
} ;
export const runtime = ( ) : CommandRuntime = > {
return {
execute : async ( context : CommandContext , folderId : string = null ) = > {
if ( folderId === null ) folderId = context . state . selectedFolderId ;
const folder = await Folder . load ( folderId ) ;
if ( ! folder ) throw new Error ( ` No such folder: ${ folderId } ` ) ;
2023-07-18 21:15:45 +02:00
let deleteMessage = _ ( 'Delete notebook "%s"?\n\nAll notes and sub-notebooks within this notebook will also be deleted.' , substrWithEllipsis ( folder . title , 0 , 32 ) ) ;
if ( folderId === context . state . settings [ 'emailToNote.inboxJopId' ] ) {
deleteMessage = _ ( 'Delete the Inbox notebook?\n\nIf you delete the inbox notebook, any email that\'s recently been sent to it may be lost.' ) ;
}
const ok = bridge ( ) . showConfirmMessageBox ( deleteMessage ) ;
2023-07-16 18:42:42 +02:00
if ( ! ok ) return ;
await Folder . delete ( folderId ) ;
} ,
enabledCondition : '!folderIsReadOnly' ,
} ;
} ;