bookmark-info.ts 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. import { Ref } from '@growi/core';
  2. import { IPageHasId } from '~/interfaces/page';
  3. import { IUser } from '~/interfaces/user';
  4. export interface IBookmarkInfo {
  5. sumOfBookmarks: number,
  6. isBookmarked: boolean,
  7. bookmarkedUsers: IUser[],
  8. pageId: string,
  9. }
  10. export interface BookmarkedPage {
  11. _id: string,
  12. page: IPageHasId,
  13. user: Ref<IUser>,
  14. createdAt: Date,
  15. }
  16. export type MyBookmarkList = BookmarkedPage[]
  17. export interface IBookmarkFolder {
  18. name: string
  19. owner: Ref<IUser>
  20. parent?: Ref<this>
  21. }
  22. export interface BookmarkFolderItems extends IBookmarkFolder {
  23. _id: string;
  24. children: BookmarkFolderItems[];
  25. bookmarks: BookmarkedPage[];
  26. }
  27. export const DRAG_ITEM_TYPE = {
  28. FOLDER: 'FOLDER',
  29. BOOKMARK: 'BOOKMARK',
  30. } as const;
  31. interface BookmarkDragItem {
  32. bookmarkFolder: BookmarkFolderItems
  33. level: number
  34. root: string
  35. }
  36. export interface DragItemDataType extends BookmarkDragItem, IPageHasId {
  37. parentFolder: BookmarkFolderItems | null
  38. }
  39. export type DragItemType = typeof DRAG_ITEM_TYPE[keyof typeof DRAG_ITEM_TYPE];