# Delete Folder
Delete a folder. The folder must be empty (contain no assets) to be deleted.
## Method Signature
```typescript
deleteFolder(folderId: string): Promise<void>
```
## Parameters
### `folderId` (required)
The ID of the folder to delete.
- Type: `string`
- Format: Sui object ID (0x...)
## Returns
`Promise<void>` - Resolves when folder is deleted
## Examples
### Basic Delete
```typescript
await walbucket.deleteFolder(folderId);
console.log('Folder deleted successfully');
```
### Delete with Confirmation
```typescript
async function deleteFolder(folderId: string, folderName: string) {
if (confirm(`Delete folder "${folderName}"?`)) {
try {
await walbucket.deleteFolder(folderId);
alert('Folder deleted successfully');
} catch (error) {
alert(`Failed to delete: ${error.message}`);
}
}
}
```
### Delete Empty Folders
```typescript
async function deleteEmptyFolders() {
const assets = await walbucket.list();
// Get all unique folder IDs
const folderIds = new Set(
assets
.filter(a => a.folderId)
.map(a => a.folderId)
);
// Try to delete folders with no assets
for (const folderId of folderIds) {
const assetsInFolder = assets.filter(a => a.folderId === folderId);
if (assetsInFolder.length === 0) {
try {
await walbucket.deleteFolder(folderId);
console.log(`Deleted empty folder: ${folderId}`);
} catch (error) {
console.error(`Failed to delete ${folderId}:`, error.message);
}
}
}
}
```
### Safe Delete with Validation
```typescript
async function safeFolderDelete(folderId: string) {
// Check if folder has assets
const assets = await walbucket.list();
const folderAssets = assets.filter(a => a.folderId === folderId);
if (folderAssets.length > 0) {
throw new Error(`Cannot delete folder with ${folderAssets.length} assets`);
}
// Delete folder
await walbucket.deleteFolder(folderId);
}
```
## Important Notes
- ⚠️ **Folder must be empty** - Cannot delete folders containing assets
- ⚠️ **Move assets first** - Use `moveToFolder` to relocate assets before deletion
- Only folder owner can delete it
- Deletion is permanent and cannot be undone
- Gas fees apply based on `gasStrategy`
## Error Handling
```typescript
try {
await walbucket.deleteFolder(folderId);
} catch (error) {
if (error instanceof ValidationError) {
console.error('Invalid folder ID');
} else if (error instanceof BlockchainError) {
if (error.message.includes('not empty')) {
console.error('Folder contains assets. Move or delete them first.');
} else if (error.message.includes('E_NOT_OWNER')) {
console.error('You do not own this folder');
} else {
console.error('Blockchain error:', error.message);
}
}
}
```
## Workflow for Deleting Non-Empty Folders
To delete a folder with assets:
```typescript
async function deleteNonEmptyFolder(folderId: string) {
// 1. Get all assets in the folder
const assets = await walbucket.list();
const folderAssets = assets.filter(a => a.folderId === folderId);
// 2. Move assets to root (or delete them)
for (const asset of folderAssets) {
await walbucket.moveToFolder(asset.assetId, null); // null = root
// OR: await walbucket.delete(asset.assetId);
}
// 3. Now delete the empty folder
await walbucket.deleteFolder(folderId);
}
```
## Use Cases
### Cleanup Empty Folders
```typescript
// After reorganization
await safeFolderDelete(oldFolderId);
```
### Remove Temporary Folders
```typescript
// Delete temp folder after processing
const tempId = await walbucket.createFolder('temp');
// ... use folder ...
await walbucket.deleteFolder(tempId);
```
### Folder Reorganization
```typescript
// Move assets then delete old structure
await moveAssetsToNewStructure();
await deleteFolder(oldFolderId);
```
## Related
- [Create Folder](/docs/api/create-folder) - Create new folders
- [Move to Folder](/docs/api/move-to-folder) - Move assets between folders
- [List](/docs/api/list) - List assets and foldersplaintext