diff --git a/enum/modals/NotionDatabase.ts b/enum/modals/NotionDatabase.ts index fc75c66..0d777a8 100644 --- a/enum/modals/NotionDatabase.ts +++ b/enum/modals/NotionDatabase.ts @@ -49,4 +49,6 @@ export enum DatabaseModal { PROPERTY_TYPE_TITLE = "title", OVERFLOW_MENU_ACTION = "create-notion-database-overflow-menu-action-id", OVERFLOW_MENU_TEXT = "Create Database", + OVERFLOW_CHANGE_WORKSPACE_ACTION = "change-notion-workspace-overflow-menu-action-id", + OVERFLOW_CHANGE_WORKSPACE_TEXT = "Change Workspace" } diff --git a/enum/modals/NotionPageOrRecord.ts b/enum/modals/NotionPageOrRecord.ts index 0122b49..1fb3dab 100644 --- a/enum/modals/NotionPageOrRecord.ts +++ b/enum/modals/NotionPageOrRecord.ts @@ -14,4 +14,6 @@ export enum NotionPageOrRecord { CHANGE_DATABASE_TEXT = "Change Database", CHANGE_DATABASE_ACTION = "create-page-or-record-change-database-action-id", PROPERTY_SELECTED_BLOCK_ELEMENT = "property-selected-element-create-page-or-record-block-id", + OVERFLOW_CHANGE_TO_PAGE_ACTION = "create-notion-page-overflow-menu-action-id", + OVERFLOW_CHANGE_TO_PAGE_TEXT = "Create Page or Record", } diff --git a/src/handlers/ExecuteBlockActionHandler.ts b/src/handlers/ExecuteBlockActionHandler.ts index d5fdd90..b271677 100644 --- a/src/handlers/ExecuteBlockActionHandler.ts +++ b/src/handlers/ExecuteBlockActionHandler.ts @@ -804,7 +804,9 @@ export class ExecuteBlockActionHandler { // Check if the value is pageId. if not then it is not a refresh comment action const OverFlowActions = [ DatabaseModal.OVERFLOW_MENU_ACTION.toString(), + DatabaseModal.OVERFLOW_CHANGE_WORKSPACE_ACTION.toString(), NotionPageOrRecord.CHANGE_DATABASE_ACTION.toString(), + NotionPageOrRecord.OVERFLOW_CHANGE_TO_PAGE_ACTION.toString() ]; if (!OverFlowActions.includes(value)) { @@ -834,6 +836,17 @@ export class ExecuteBlockActionHandler { await handler.createNotionDatabase(); break; } + + case DatabaseModal.OVERFLOW_CHANGE_WORKSPACE_ACTION:{ + await handler.changeNotionWorkspace(); + break; + } + + case NotionPageOrRecord.OVERFLOW_CHANGE_TO_PAGE_ACTION:{ + await handler.createNotionPageOrRecord(); + break; + } + case NotionPageOrRecord.CHANGE_DATABASE_ACTION: { await handler.createNotionPageOrRecord(true); break; diff --git a/src/modals/createDatabaseModal.ts b/src/modals/createDatabaseModal.ts index 23e45f5..840b20f 100644 --- a/src/modals/createDatabaseModal.ts +++ b/src/modals/createDatabaseModal.ts @@ -15,6 +15,7 @@ import { searchPageComponent } from "./common/searchPageComponent"; import { NotionApp } from "../../NotionApp"; import { inputElementComponent } from "./common/inputElementComponent"; import { ButtonInSectionComponent } from "./common/buttonInSectionComponent"; +import { OverflowMenuComponent } from "./common/OverflowMenuComponent"; import { IUser } from "@rocket.chat/apps-engine/definition/users"; import { ModalInteractionStorage } from "../storage/ModalInteraction"; import { ITokenInfo } from "../../definition/authorization/IOAuth2Storage"; @@ -35,6 +36,7 @@ import { import { NotionObjectTypes } from "../../enum/Notion"; import { ButtonInActionComponent } from "./common/buttonInActionComponent"; import { SearchPage } from "../../enum/modals/common/SearchPageComponent"; +import { NotionPageOrRecord } from "../../enum/modals/NotionPageOrRecord"; export async function createDatabaseModal( app: NotionApp, @@ -49,6 +51,14 @@ export async function createDatabaseModal( const { elementBuilder, blockBuilder } = app.getUtils(); const divider = blockBuilder.createDividerBlock(); const connectBlock = getConnectPreview(app.getID(), tokenInfo); + const overFlowMenuText = [ + NotionPageOrRecord.OVERFLOW_CHANGE_TO_PAGE_TEXT.toString(), + DatabaseModal.OVERFLOW_CHANGE_WORKSPACE_TEXT.toString(), + ]; + const overFlowMenuValue = [ + NotionPageOrRecord.OVERFLOW_CHANGE_TO_PAGE_ACTION.toString(), + DatabaseModal.OVERFLOW_CHANGE_WORKSPACE_ACTION.toString(), + ]; const searchForPageComponent = await searchPageComponent( app, @@ -61,6 +71,19 @@ export async function createDatabaseModal( return searchForPageComponent; } + const overflowMenu = await OverflowMenuComponent( + { + app, + text: overFlowMenuText, + value: overFlowMenuValue, + }, + { + blockId: Modals.OVERFLOW_MENU_BLOCK, + actionId: Modals.OVERFLOW_MENU_ACTION, + } + ); + + const titleOfDatabaseBlock = inputElementComponent( { app, @@ -99,6 +122,7 @@ export async function createDatabaseModal( } ); const blocks: Block[] = [ + overflowMenu, connectBlock, searchForPageComponent, titleOfDatabaseBlock,