bookmark-info.ts 1.2 KB

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