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 } ` ) ;
2024-03-02 16:25:27 +02:00
let deleteMessage = _ ( 'Move notebook "%s" to the trash?\n\nAll notes and sub-notebooks within this notebook will also be moved to the trash.' , substrWithEllipsis ( folder . title , 0 , 32 ) ) ;
2023-07-23 16:57:55 +02:00
if ( folderId === context . state . settings [ 'sync.10.inboxId' ] ) {
2023-07-18 21:15:45 +02:00
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 ;
2024-03-09 12:33:05 +02:00
await Folder . delete ( folderId , { toTrash : true , sourceDescription : 'deleteFolder command' } ) ;
2023-07-16 18:42:42 +02:00
} ,
enabledCondition : '!folderIsReadOnly' ,
} ;
} ;