|
46 | 46 | deleteAllChats, |
47 | 47 | getChatListBySearchText |
48 | 48 | } from '$lib/apis/chats'; |
49 | | - import { createNewFolder, getFolders, updateFolderParentIdById } from '$lib/apis/folders'; |
| 49 | + import { createNewFolder, getFolders, getSharedFolders, updateFolderParentIdById } from '$lib/apis/folders'; |
50 | 50 | import { createNewNote, getPinnedNoteList, toggleNotePinnedStatusById } from '$lib/apis/notes'; |
51 | 51 | import { updateUserSettings } from '$lib/apis/users'; |
52 | 52 | import { checkActiveChats } from '$lib/apis/tasks'; |
|
61 | 61 | import Folder from '../common/Folder.svelte'; |
62 | 62 | import Tooltip from '../common/Tooltip.svelte'; |
63 | 63 | import Folders from './Sidebar/Folders.svelte'; |
| 64 | + import SharedFolderItem from './Sidebar/SharedFolderItem.svelte'; |
64 | 65 | import { getChannels, createNewChannel } from '$lib/apis/channels'; |
65 | 66 | import ChannelModal from './Sidebar/ChannelModal.svelte'; |
66 | 67 | import ChannelItem from './Sidebar/ChannelItem.svelte'; |
|
98 | 99 | let showPinnedNotes = false; |
99 | 100 | let showChannels = false; |
100 | 101 | let showFolders = false; |
| 102 | + let showSharedFolders = false; |
101 | 103 |
|
102 | 104 | let folders = {}; |
103 | 105 | let folderRegistry = {}; |
104 | 106 |
|
105 | 107 | let newFolderId = null; |
106 | 108 |
|
| 109 | + let sharedFolders: any[] = []; |
| 110 | +
|
107 | 111 | $: pinnedItems = $settings?.pinnedMenuItems ?? DEFAULT_PINNED_ITEMS; |
108 | 112 |
|
109 | 113 | const isMenuItemVisible = (id) => { |
|
215 | 219 | }); |
216 | 220 | } |
217 | 221 | } |
| 222 | +
|
| 223 | + // Merge shared folders into the same structure |
| 224 | + try { |
| 225 | + sharedFolders = await getSharedFolders(localStorage.token); |
| 226 | + } catch (e) { |
| 227 | + sharedFolders = []; |
| 228 | + } |
| 229 | +
|
| 230 | + for (const sf of sharedFolders) { |
| 231 | + if (folders[sf.id]) continue; // Already owned by user |
| 232 | + folders[sf.id] = { ...sf, shared: true }; |
| 233 | + } |
| 234 | +
|
| 235 | + // Build parent-child relationships for shared folders |
| 236 | + for (const sf of sharedFolders) { |
| 237 | + if (folders[sf.id]?.shared && sf.parent_id && folders[sf.parent_id]) { |
| 238 | + folders[sf.parent_id].childrenIds = folders[sf.parent_id].childrenIds |
| 239 | + ? [...new Set([...folders[sf.parent_id].childrenIds, sf.id])] |
| 240 | + : [sf.id]; |
| 241 | + } |
| 242 | + } |
| 243 | + }; |
| 244 | +
|
| 245 | + const initSharedFolders = async () => { |
| 246 | + await initFolders(); |
218 | 247 | }; |
219 | 248 |
|
220 | 249 | const createFolder = async ({ name, data, parent_id }) => { |
|
291 | 320 | scrollPaginationEnabled.set(false); |
292 | 321 |
|
293 | 322 | initFolders(); |
| 323 | + initSharedFolders(); |
294 | 324 | await Promise.all([ |
295 | 325 | await (async () => { |
296 | 326 | console.log('Init tags'); |
|
0 commit comments