|
11 | 11 |
|
12 | 12 | import { selectedFolder } from '$lib/stores'; |
13 | 13 |
|
14 | | - import { deleteFolderById, getFolderById, updateFolderById } from '$lib/apis/folders'; |
| 14 | + import { |
| 15 | + deleteFolderById, |
| 16 | + getFolderById, |
| 17 | + updateFolderById, |
| 18 | + createNewFolder |
| 19 | + } from '$lib/apis/folders'; |
15 | 20 | import { getChatsByFolderId } from '$lib/apis/chats'; |
16 | 21 |
|
17 | 22 | import FolderModal from '$lib/components/layout/Sidebar/Folders/FolderModal.svelte'; |
|
30 | 35 | export let onDelete: Function = (folderId) => {}; |
31 | 36 |
|
32 | 37 | let showFolderModal = false; |
| 38 | + let showCreateSubFolderModal = false; |
33 | 39 | let showDeleteConfirm = false; |
34 | 40 | let deleteFolderContents = true; |
35 | 41 |
|
|
127 | 133 |
|
128 | 134 | saveAs(blob, `folder-${folder.name}-export-${Date.now()}.json`); |
129 | 135 | }; |
| 136 | +
|
| 137 | + const createSubFolderHandler = async ({ name, meta, data, parent_id }) => { |
| 138 | + if (name === '') { |
| 139 | + toast.error($i18n.t('Folder name cannot be empty.')); |
| 140 | + return; |
| 141 | + } |
| 142 | +
|
| 143 | + name = name.trim(); |
| 144 | +
|
| 145 | + const res = await createNewFolder(localStorage.token, { |
| 146 | + name, |
| 147 | + data, |
| 148 | + meta, |
| 149 | + parent_id |
| 150 | + }).catch((error) => { |
| 151 | + toast.error(`${error}`); |
| 152 | + return null; |
| 153 | + }); |
| 154 | +
|
| 155 | + if (res) { |
| 156 | + toast.success($i18n.t('Folder created successfully')); |
| 157 | + onUpdate(); |
| 158 | + } |
| 159 | + }; |
130 | 160 | </script> |
131 | 161 |
|
132 | 162 | {#if folder} |
|
137 | 167 | onSubmit={updateHandler} |
138 | 168 | /> |
139 | 169 |
|
| 170 | + <FolderModal |
| 171 | + bind:show={showCreateSubFolderModal} |
| 172 | + parentId={folder.id} |
| 173 | + onSubmit={createSubFolderHandler} |
| 174 | + /> |
| 175 | + |
140 | 176 | <DeleteConfirmDialog |
141 | 177 | bind:show={showDeleteConfirm} |
142 | 178 | title={$i18n.t('Delete folder?')} |
|
146 | 182 | > |
147 | 183 | <div class=" text-sm text-gray-700 dark:text-gray-300 flex-1 line-clamp-3 mb-2"> |
148 | 184 | <!-- {$i18n.t('This will delete <strong>{{NAME}}</strong> and <strong>all its contents</strong>.', { |
149 | | - NAME: folders[folderId].name |
| 185 | + NAME: folder.name |
150 | 186 | })} --> |
151 | 187 |
|
152 | 188 | {$i18n.t(`Are you sure you want to delete "{{NAME}}"?`, { |
153 | | - NAME: folders[folderId].name |
| 189 | + NAME: folder.name |
154 | 190 | })} |
155 | 191 | </div> |
156 | 192 |
|
|
202 | 238 | onExport={() => { |
203 | 239 | exportHandler(); |
204 | 240 | }} |
| 241 | + onCreateSubFolder={() => { |
| 242 | + showCreateSubFolderModal = true; |
| 243 | + }} |
205 | 244 | > |
206 | 245 | <button |
207 | 246 | class="p-1.5 dark:hover:bg-gray-850 rounded-full touch-auto" |
|
0 commit comments