@adminide-stack/yantra-mobile 12.0.141-alpha.1 → 12.0.141
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/features/agent-chat/NativeAgentChat.js +21 -4
- package/lib/features/agent-chat/NativeAgentChat.js.map +1 -1
- package/lib/features/chat/ApprovalCard.js +353 -0
- package/lib/features/chat/ApprovalCard.js.map +1 -0
- package/lib/features/chat/AskUserCard.js +9 -2
- package/lib/features/chat/AskUserCard.js.map +1 -1
- package/lib/features/chat/askUser.js +25 -3
- package/lib/features/chat/askUser.js.map +1 -1
- package/lib/features/chat/queuedFollowUpRows.js +13 -0
- package/lib/features/chat/queuedFollowUpRows.js.map +1 -0
- package/lib/features/devices/bodyComposition.js +116 -0
- package/lib/features/devices/bodyComposition.js.map +1 -0
- package/lib/features/devices/readings.js.map +1 -1
- package/lib/features/devices/session.js +22 -2
- package/lib/features/devices/session.js.map +1 -1
- package/lib/features/discover/DiscoverArticle.js +105 -92
- package/lib/features/discover/DiscoverArticle.js.map +1 -1
- package/lib/features/discover/DiscoverFeed.js +97 -48
- package/lib/features/discover/DiscoverFeed.js.map +1 -1
- package/lib/features/discover/DiscoverFollowUp.js +135 -0
- package/lib/features/discover/DiscoverFollowUp.js.map +1 -0
- package/lib/features/discover/DiscoverSidebar.js +555 -0
- package/lib/features/discover/DiscoverSidebar.js.map +1 -0
- package/lib/features/discover/DiscoverSkeletons.js +123 -0
- package/lib/features/discover/DiscoverSkeletons.js.map +1 -0
- package/lib/features/discover/DiscoverStoryCards.js +193 -87
- package/lib/features/discover/DiscoverStoryCards.js.map +1 -1
- package/lib/features/discover/followUpQuery.js +42 -0
- package/lib/features/discover/followUpQuery.js.map +1 -0
- package/lib/features/discover/markets.js +37 -0
- package/lib/features/discover/markets.js.map +1 -0
- package/lib/features/discover/useDiscoverSidebar.js +148 -0
- package/lib/features/discover/useDiscoverSidebar.js.map +1 -0
- package/lib/features/discover/weather.js +42 -0
- package/lib/features/discover/weather.js.map +1 -0
- package/lib/features/expenses/ExpensesAgentChatPane.js +1 -1
- package/lib/features/expenses/ExpensesAgentChatPane.js.map +1 -1
- package/lib/features/inbox/InboxAgentChatPane.js +1 -1
- package/lib/features/inbox/InboxAgentChatPane.js.map +1 -1
- package/lib/features/job-search/JobSearchAgentChatPane.js +1 -0
- package/lib/features/job-search/JobSearchAgentChatPane.js.map +1 -1
- package/lib/features/local-services/LocalServicesAgentChatPane.js +1 -1
- package/lib/features/local-services/LocalServicesAgentChatPane.js.map +1 -1
- package/lib/features/movies/MoviesAgentChatPane.js +1 -1
- package/lib/features/movies/MoviesAgentChatPane.js.map +1 -1
- package/lib/features/notion/NotionBlockSheets.js +206 -0
- package/lib/features/notion/NotionBlockSheets.js.map +1 -0
- package/lib/features/notion/NotionBlockView.js +36 -0
- package/lib/features/notion/NotionBlockView.js.map +1 -0
- package/lib/features/notion/NotionCommentsSheet.js +461 -0
- package/lib/features/notion/NotionCommentsSheet.js.map +1 -0
- package/lib/features/notion/NotionConnectionsSheet.js +244 -0
- package/lib/features/notion/NotionConnectionsSheet.js.map +1 -0
- package/lib/features/notion/NotionHistorySheet.js +439 -0
- package/lib/features/notion/NotionHistorySheet.js.map +1 -0
- package/lib/features/notion/NotionMediaBlocks.js +803 -0
- package/lib/features/notion/NotionMediaBlocks.js.map +1 -0
- package/lib/features/notion/NotionMentionSheet.js +279 -0
- package/lib/features/notion/NotionMentionSheet.js.map +1 -0
- package/lib/features/notion/NotionPageMenu.js +585 -0
- package/lib/features/notion/NotionPageMenu.js.map +1 -0
- package/lib/features/notion/NotionPageTree.js +220 -0
- package/lib/features/notion/NotionPageTree.js.map +1 -0
- package/lib/features/notion/NotionPageView.js +1253 -152
- package/lib/features/notion/NotionPageView.js.map +1 -1
- package/lib/features/notion/NotionShareSheet.js +606 -0
- package/lib/features/notion/NotionShareSheet.js.map +1 -0
- package/lib/features/notion/NotionSheets.js +87 -15
- package/lib/features/notion/NotionSheets.js.map +1 -1
- package/lib/features/notion/NotionSidebarSections.js +492 -0
- package/lib/features/notion/NotionSidebarSections.js.map +1 -0
- package/lib/features/notion/NotionWorkspaceAdmin.js +659 -0
- package/lib/features/notion/NotionWorkspaceAdmin.js.map +1 -0
- package/lib/features/notion/NotionWorkspaceView.js +257 -45
- package/lib/features/notion/NotionWorkspaceView.js.map +1 -1
- package/lib/features/notion/database/DatabaseCells.js +554 -0
- package/lib/features/notion/database/DatabaseCells.js.map +1 -0
- package/lib/features/notion/database/DatabaseDateLayouts.js +792 -0
- package/lib/features/notion/database/DatabaseDateLayouts.js.map +1 -0
- package/lib/features/notion/database/DatabaseLayouts.js +461 -0
- package/lib/features/notion/database/DatabaseLayouts.js.map +1 -0
- package/lib/features/notion/database/DatabaseSheets.js +791 -0
- package/lib/features/notion/database/DatabaseSheets.js.map +1 -0
- package/lib/features/notion/database/NotionDatabaseView.js +817 -0
- package/lib/features/notion/database/NotionDatabaseView.js.map +1 -0
- package/lib/features/notion/database/RowPropertiesPanel.js +162 -0
- package/lib/features/notion/database/RowPropertiesPanel.js.map +1 -0
- package/lib/features/notion/database/chartData.js +89 -0
- package/lib/features/notion/database/chartData.js.map +1 -0
- package/lib/features/notion/database/chartView.js +112 -0
- package/lib/features/notion/database/chartView.js.map +1 -0
- package/lib/features/notion/database/connectorButton.js +33 -0
- package/lib/features/notion/database/connectorButton.js.map +1 -0
- package/lib/features/notion/database/databaseCalc.js +208 -0
- package/lib/features/notion/database/databaseCalc.js.map +1 -0
- package/lib/features/notion/database/databaseCalendar.js +157 -0
- package/lib/features/notion/database/databaseCalendar.js.map +1 -0
- package/lib/features/notion/database/databaseCsv.js +98 -0
- package/lib/features/notion/database/databaseCsv.js.map +1 -0
- package/lib/features/notion/database/databaseCsvActions.js +58 -0
- package/lib/features/notion/database/databaseCsvActions.js.map +1 -0
- package/lib/features/notion/database/databaseFilter.js +473 -0
- package/lib/features/notion/database/databaseFilter.js.map +1 -0
- package/lib/features/notion/database/databaseFormula.js +1072 -0
- package/lib/features/notion/database/databaseFormula.js.map +1 -0
- package/lib/features/notion/database/databaseGroup.js +151 -0
- package/lib/features/notion/database/databaseGroup.js.map +1 -0
- package/lib/features/notion/database/databaseRollup.js +58 -0
- package/lib/features/notion/database/databaseRollup.js.map +1 -0
- package/lib/features/notion/database/databaseTimeline.js +156 -0
- package/lib/features/notion/database/databaseTimeline.js.map +1 -0
- package/lib/features/notion/database/databaseView.js +1188 -0
- package/lib/features/notion/database/databaseView.js.map +1 -0
- package/lib/features/notion/database/databaseViews.js +310 -0
- package/lib/features/notion/database/databaseViews.js.map +1 -0
- package/lib/features/notion/database/relationSource.js +92 -0
- package/lib/features/notion/database/relationSource.js.map +1 -0
- package/lib/features/notion/database/uniqueId.js +17 -0
- package/lib/features/notion/database/uniqueId.js.map +1 -0
- package/lib/features/notion/database/useNotionDatabase.js +617 -0
- package/lib/features/notion/database/useNotionDatabase.js.map +1 -0
- package/lib/features/notion/notionAgentRunStatus.js +39 -0
- package/lib/features/notion/notionAgentRunStatus.js.map +1 -0
- package/lib/features/notion/notionCodeLanguages.js +112 -0
- package/lib/features/notion/notionCodeLanguages.js.map +1 -0
- package/lib/features/notion/notionComments.js +86 -0
- package/lib/features/notion/notionComments.js.map +1 -0
- package/lib/features/notion/notionConnections.js +74 -0
- package/lib/features/notion/notionConnections.js.map +1 -0
- package/lib/features/notion/notionDocuments.js +453 -1
- package/lib/features/notion/notionDocuments.js.map +1 -1
- package/lib/features/notion/notionEditorModel.js +142 -7
- package/lib/features/notion/notionEditorModel.js.map +1 -1
- package/lib/features/notion/notionMarkdownShortcuts.js +51 -0
- package/lib/features/notion/notionMarkdownShortcuts.js.map +1 -0
- package/lib/features/notion/notionMedia.js +119 -0
- package/lib/features/notion/notionMedia.js.map +1 -0
- package/lib/features/notion/notionMentionDate.js +32 -0
- package/lib/features/notion/notionMentionDate.js.map +1 -0
- package/lib/features/notion/notionMentionOptions.js +162 -0
- package/lib/features/notion/notionMentionOptions.js.map +1 -0
- package/lib/features/notion/notionNotesAgent.js +445 -0
- package/lib/features/notion/notionNotesAgent.js.map +1 -0
- package/lib/features/notion/notionPageAccess.js +168 -0
- package/lib/features/notion/notionPageAccess.js.map +1 -0
- package/lib/features/notion/notionPageActions.js +138 -0
- package/lib/features/notion/notionPageActions.js.map +1 -0
- package/lib/features/notion/notionPageHistory.js +154 -0
- package/lib/features/notion/notionPageHistory.js.map +1 -0
- package/lib/features/notion/notionPageKinds.js +200 -0
- package/lib/features/notion/notionPageKinds.js.map +1 -0
- package/lib/features/notion/notionRecents.js +48 -0
- package/lib/features/notion/notionRecents.js.map +1 -0
- package/lib/features/notion/notionRichText.js +177 -0
- package/lib/features/notion/notionRichText.js.map +1 -0
- package/lib/features/notion/notionRichTitle.js +336 -0
- package/lib/features/notion/notionRichTitle.js.map +1 -0
- package/lib/features/notion/useNotionWorkspace.js +272 -13
- package/lib/features/notion/useNotionWorkspace.js.map +1 -1
- package/lib/features/notion/usePageActions.js +155 -0
- package/lib/features/notion/usePageActions.js.map +1 -0
- package/lib/features/resume/ResumeAgentChatPane.js +1 -1
- package/lib/features/resume/ResumeAgentChatPane.js.map +1 -1
- package/lib/features/shopping/ShoppingAgentChatPane.js +1 -1
- package/lib/features/shopping/ShoppingAgentChatPane.js.map +1 -1
- package/lib/features/study/StudyAgentChatPane.js +1 -1
- package/lib/features/study/StudyAgentChatPane.js.map +1 -1
- package/lib/features/travel/TravelAgentChatPane.js +1 -1
- package/lib/features/travel/TravelAgentChatPane.js.map +1 -1
- package/lib/features/webbuilder/WebBuilderExperience.js +40 -8
- package/lib/features/webbuilder/WebBuilderExperience.js.map +1 -1
- package/lib/features/webbuilder/buildFragments.js +1 -1
- package/lib/features/webbuilder/buildFragments.js.map +1 -1
- package/lib/features/webbuilder/codeFiles.js +302 -0
- package/lib/features/webbuilder/codeFiles.js.map +1 -0
- package/lib/features/webbuilder/codeHighlight.js +209 -0
- package/lib/features/webbuilder/codeHighlight.js.map +1 -0
- package/lib/features/webbuilder/components/CodeView.js +682 -52
- package/lib/features/webbuilder/components/CodeView.js.map +1 -1
- package/lib/features/webbuilder/components/PreviewScreen.js +59 -38
- package/lib/features/webbuilder/components/PreviewScreen.js.map +1 -1
- package/lib/features/webbuilder/components/ProjectChat.js +3 -3
- package/lib/features/webbuilder/components/ProjectChat.js.map +1 -1
- package/lib/features/webbuilder/stepLabels.js +68 -0
- package/lib/features/webbuilder/stepLabels.js.map +1 -0
- package/lib/hooks/useHostChatSteering.js +45 -0
- package/lib/hooks/useHostChatSteering.js.map +1 -0
- package/lib/screens/Chat/index.js +2 -12
- package/lib/screens/Chat/index.js.map +1 -1
- package/lib/screens/Devices/index.js +205 -3
- package/lib/screens/Devices/index.js.map +1 -1
- package/lib/screens/ExpensesNative/useExpensesHostChat.js +25 -5
- package/lib/screens/ExpensesNative/useExpensesHostChat.js.map +1 -1
- package/lib/screens/InboxNative/useInboxHostChat.js +25 -5
- package/lib/screens/InboxNative/useInboxHostChat.js.map +1 -1
- package/lib/screens/JobSearchNative/useJobSearchHostChat.js +25 -5
- package/lib/screens/JobSearchNative/useJobSearchHostChat.js.map +1 -1
- package/lib/screens/LocalServicesNative/useLocalServicesHostChat.js +25 -5
- package/lib/screens/LocalServicesNative/useLocalServicesHostChat.js.map +1 -1
- package/lib/screens/MoviesNative/useMoviesHostChat.js +25 -5
- package/lib/screens/MoviesNative/useMoviesHostChat.js.map +1 -1
- package/lib/screens/NotionPage/index.js +2 -2
- package/lib/screens/NotionPage/index.js.map +1 -1
- package/lib/screens/ResumeNative/useResumeHostChat.js +25 -5
- package/lib/screens/ResumeNative/useResumeHostChat.js.map +1 -1
- package/lib/screens/ShoppingNative/useShoppingHostChat.js +25 -5
- package/lib/screens/ShoppingNative/useShoppingHostChat.js.map +1 -1
- package/lib/screens/StudyNative/useStudyHostChat.js +25 -5
- package/lib/screens/StudyNative/useStudyHostChat.js.map +1 -1
- package/lib/screens/TravelNative/useTravelHostChat.js +25 -5
- package/lib/screens/TravelNative/useTravelHostChat.js.map +1 -1
- package/lib/screens/WebBuilderNative/codeWorkspaceApi.js +222 -0
- package/lib/screens/WebBuilderNative/codeWorkspaceApi.js.map +1 -0
- package/lib/screens/WebBuilderNative/index.js +1 -1
- package/lib/screens/WebBuilderNative/index.js.map +1 -1
- package/lib/screens/WebBuilderNative/sandboxProxyApi.js +126 -4
- package/lib/screens/WebBuilderNative/sandboxProxyApi.js.map +1 -1
- package/lib/screens/WebBuilderNative/useWebBuilderHost.js +120 -11
- package/lib/screens/WebBuilderNative/useWebBuilderHost.js.map +1 -1
- package/package.json +4 -4
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {useState,useEffect,useMemo,useCallback}from'react';import {useApolloClient,useQuery}from'@apollo/client/index.js';import {NATIVE_NOTION_WORKSPACES,NATIVE_NOTION_CHILDREN,NATIVE_NOTION_CREATE_WORKSPACE,NATIVE_NOTION_CREATE_BLOCK}from'./notionDocuments.js';import {livePagesByRecent,meetingRowOf,
|
|
1
|
+
import {useState,useEffect,useMemo,useCallback}from'react';import {useApolloClient,useQuery}from'@apollo/client/index.js';import {NATIVE_NOTION_WORKSPACES,NATIVE_NOTION_CHILDREN,NATIVE_NOTION_CREATE_WORKSPACE,NATIVE_NOTION_CREATE_BLOCK,NATIVE_NOTION_FAVORITES,NATIVE_NOTION_SET_FAVORITES,NATIVE_NOTION_UPDATE_BLOCK,NATIVE_NOTION_DUPLICATE_BLOCK,NATIVE_NOTION_MOVE_BLOCK,NATIVE_NOTION_DELETE_BLOCK,NATIVE_NOTION_RESTORE_BLOCK,NATIVE_NOTION_DELETE_WORKSPACE}from'./notionDocuments.js';import {toggleFavorite}from'./notionPageActions.js';import {newBlockId}from'./notionEditorModel.js';import {NOTES_SETTINGS_FLAG,readTeamspaces,classifyRootNodes,agentRowOf,TEAMSPACES_KEY,newSettingsPageProperties,addTeamspace,sectionPatch,removeTeamspace,newSectionPageProperties}from'./notionPageKinds.js';import {templateInstructionBlocks,agentTemplate,templateAgentProperties}from'./notionNotesAgent.js';import {livePagesByRecent,pageKindOf,meetingRowOf,toTitleProperty,newMeetingProperties,meetingEmbedChild}from'./notionBlocks.js';import {isTemplateLibrary,buildTemplateCreatePlan}from'./notionTemplates.js';var __defProp = Object.defineProperty;
|
|
2
2
|
var __defProps = Object.defineProperties;
|
|
3
3
|
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
4
4
|
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
@@ -26,7 +26,7 @@ try {
|
|
|
26
26
|
}
|
|
27
27
|
const LAST_WORKSPACE_KEY = "yantra.notion.lastWorkspace.v1";
|
|
28
28
|
function useNotionWorkspace() {
|
|
29
|
-
var _a2, _b, _c;
|
|
29
|
+
var _a2, _b, _c, _d;
|
|
30
30
|
const client = useApolloClient();
|
|
31
31
|
const [selectedId, setSelectedId] = useState(null);
|
|
32
32
|
const [remembered, setRemembered] = useState(void 0);
|
|
@@ -65,17 +65,48 @@ function useNotionWorkspace() {
|
|
|
65
65
|
});
|
|
66
66
|
const {
|
|
67
67
|
pages,
|
|
68
|
+
myPages,
|
|
68
69
|
meetings,
|
|
70
|
+
agents,
|
|
71
|
+
teamspaces,
|
|
72
|
+
teamspaceGroups,
|
|
73
|
+
settingsPageId,
|
|
69
74
|
templateLibraryId
|
|
70
75
|
} = useMemo(() => {
|
|
71
|
-
var _a3, _b2, _c2,
|
|
76
|
+
var _a3, _b2, _c2, _d2, _e, _f;
|
|
72
77
|
const roots = (_c2 = (_b2 = (_a3 = rootQuery.data) == null ? void 0 : _a3.getBlockChildren) == null ? void 0 : _b2.results) != null ? _c2 : [];
|
|
73
78
|
const live = livePagesByRecent(roots);
|
|
74
79
|
const now = Date.now();
|
|
80
|
+
const settings = roots.find((b) => {
|
|
81
|
+
var _a4;
|
|
82
|
+
return !b.inTrash && ((_a4 = b.properties) == null ? void 0 : _a4[NOTES_SETTINGS_FLAG]) === true;
|
|
83
|
+
});
|
|
84
|
+
const catalog = readTeamspaces(settings == null ? void 0 : settings.properties);
|
|
85
|
+
const nodes = live.map((b) => {
|
|
86
|
+
var _a4;
|
|
87
|
+
const p = (_a4 = b.properties) != null ? _a4 : {};
|
|
88
|
+
return {
|
|
89
|
+
id: b.id,
|
|
90
|
+
block: b,
|
|
91
|
+
kind: pageKindOf(p),
|
|
92
|
+
section: p.section === "teamspace" ? "teamspace" : "private",
|
|
93
|
+
teamspace: typeof p.teamspace === "string" ? p.teamspace : void 0
|
|
94
|
+
};
|
|
95
|
+
});
|
|
96
|
+
const sections = classifyRootNodes(nodes, catalog);
|
|
75
97
|
return {
|
|
76
98
|
pages: live.filter((b) => pageKindOf(b.properties) === "page"),
|
|
99
|
+
myPages: sections.myPages.map((n) => n.block),
|
|
77
100
|
meetings: live.map((b) => meetingRowOf(b, now)).filter((r) => Boolean(r)),
|
|
78
|
-
|
|
101
|
+
agents: sections.agents.map((n) => agentRowOf(n.block, now)).filter((r) => Boolean(r)),
|
|
102
|
+
teamspaces: catalog,
|
|
103
|
+
teamspaceGroups: sections.teamspaces.map((g) => ({
|
|
104
|
+
teamspace: g.teamspace,
|
|
105
|
+
implicit: g.implicit,
|
|
106
|
+
pages: g.nodes.map((n) => n.block)
|
|
107
|
+
})),
|
|
108
|
+
settingsPageId: (_d2 = settings == null ? void 0 : settings.id) != null ? _d2 : null,
|
|
109
|
+
templateLibraryId: (_f = (_e = roots.find((b) => !b.inTrash && isTemplateLibrary(b.properties))) == null ? void 0 : _e.id) != null ? _f : null
|
|
79
110
|
};
|
|
80
111
|
}, [rootQuery.data]);
|
|
81
112
|
const refetchRoots = useCallback(() => {
|
|
@@ -112,7 +143,8 @@ function useNotionWorkspace() {
|
|
|
112
143
|
id: workspace.id
|
|
113
144
|
}
|
|
114
145
|
})
|
|
115
|
-
}
|
|
146
|
+
},
|
|
147
|
+
errorPolicy: "none"
|
|
116
148
|
});
|
|
117
149
|
refetchRoots();
|
|
118
150
|
return (_b2 = (_a3 = res.data) == null ? void 0 : _a3.createBlock) != null ? _b2 : null;
|
|
@@ -123,11 +155,22 @@ function useNotionWorkspace() {
|
|
|
123
155
|
title: toTitleProperty(title)
|
|
124
156
|
}
|
|
125
157
|
}), [createRoot]);
|
|
126
|
-
const createMeeting = useCallback(() =>
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
158
|
+
const createMeeting = useCallback(() => {
|
|
159
|
+
const pageId = newBlockId();
|
|
160
|
+
return createRoot({
|
|
161
|
+
id: pageId,
|
|
162
|
+
type: "page",
|
|
163
|
+
properties: newMeetingProperties(),
|
|
164
|
+
children: [__spreadProps(__spreadValues({
|
|
165
|
+
id: newBlockId()
|
|
166
|
+
}, meetingEmbedChild()), {
|
|
167
|
+
parent: {
|
|
168
|
+
type: "block",
|
|
169
|
+
id: pageId
|
|
170
|
+
}
|
|
171
|
+
})]
|
|
172
|
+
});
|
|
173
|
+
}, [createRoot]);
|
|
131
174
|
const createFromTemplate = useCallback(async (template) => {
|
|
132
175
|
var _a3, _b2, _c2;
|
|
133
176
|
if (!(workspace == null ? void 0 : workspace.id)) return null;
|
|
@@ -160,22 +203,238 @@ function useNotionWorkspace() {
|
|
|
160
203
|
failedRows
|
|
161
204
|
};
|
|
162
205
|
}, [client, refetchRoots, workspace == null ? void 0 : workspace.id]);
|
|
206
|
+
const favoritesQuery = useQuery(NATIVE_NOTION_FAVORITES, {
|
|
207
|
+
variables: {
|
|
208
|
+
workspaceId: (_b = workspace == null ? void 0 : workspace.id) != null ? _b : ""
|
|
209
|
+
},
|
|
210
|
+
skip: !(workspace == null ? void 0 : workspace.id),
|
|
211
|
+
fetchPolicy: "cache-and-network"
|
|
212
|
+
});
|
|
213
|
+
const [localFavorites, setLocalFavorites] = useState(null);
|
|
214
|
+
useEffect(() => setLocalFavorites(null), [favoritesQuery.data, workspace == null ? void 0 : workspace.id]);
|
|
215
|
+
const favoriteIds = useMemo(() => {
|
|
216
|
+
var _a3, _b2;
|
|
217
|
+
return (_b2 = localFavorites != null ? localFavorites : (_a3 = favoritesQuery.data) == null ? void 0 : _a3.notionFavorites) != null ? _b2 : [];
|
|
218
|
+
}, [localFavorites, favoritesQuery.data]);
|
|
219
|
+
const toggleFavoritePage = useCallback(async (pageId) => {
|
|
220
|
+
if (!(workspace == null ? void 0 : workspace.id)) return;
|
|
221
|
+
const next = toggleFavorite(favoriteIds, pageId);
|
|
222
|
+
setLocalFavorites(next);
|
|
223
|
+
try {
|
|
224
|
+
await client.mutate({
|
|
225
|
+
mutation: NATIVE_NOTION_SET_FAVORITES,
|
|
226
|
+
variables: {
|
|
227
|
+
workspaceId: workspace.id,
|
|
228
|
+
blockIds: next
|
|
229
|
+
},
|
|
230
|
+
errorPolicy: "none"
|
|
231
|
+
});
|
|
232
|
+
await favoritesQuery.refetch();
|
|
233
|
+
} catch (err) {
|
|
234
|
+
setLocalFavorites(null);
|
|
235
|
+
throw err;
|
|
236
|
+
}
|
|
237
|
+
}, [client, favoriteIds, favoritesQuery, workspace == null ? void 0 : workspace.id]);
|
|
238
|
+
const mutateNow = useCallback(async (mutation, variables) => {
|
|
239
|
+
const res = await client.mutate({
|
|
240
|
+
mutation,
|
|
241
|
+
variables,
|
|
242
|
+
errorPolicy: "none"
|
|
243
|
+
});
|
|
244
|
+
client.refetchQueries({
|
|
245
|
+
include: ["NativeNotionChildren"]
|
|
246
|
+
}).catch(() => void 0);
|
|
247
|
+
return res.data;
|
|
248
|
+
}, [client]);
|
|
249
|
+
const renamePage = useCallback((pageId, title) => mutateNow(NATIVE_NOTION_UPDATE_BLOCK, {
|
|
250
|
+
input: {
|
|
251
|
+
id: pageId,
|
|
252
|
+
properties: {
|
|
253
|
+
title: toTitleProperty(title)
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
}), [mutateNow]);
|
|
257
|
+
const duplicatePage = useCallback(async (pageId) => {
|
|
258
|
+
var _a3;
|
|
259
|
+
const data = await mutateNow(NATIVE_NOTION_DUPLICATE_BLOCK, {
|
|
260
|
+
blockId: pageId,
|
|
261
|
+
includeChildren: true
|
|
262
|
+
});
|
|
263
|
+
return (_a3 = data == null ? void 0 : data.duplicateBlock) != null ? _a3 : null;
|
|
264
|
+
}, [mutateNow]);
|
|
265
|
+
const movePage = useCallback((pageId, toPageId) => {
|
|
266
|
+
if (!(workspace == null ? void 0 : workspace.id)) return Promise.resolve(null);
|
|
267
|
+
const newParent = toPageId ? {
|
|
268
|
+
type: "block",
|
|
269
|
+
id: toPageId
|
|
270
|
+
} : {
|
|
271
|
+
type: "workspace",
|
|
272
|
+
id: workspace.id
|
|
273
|
+
};
|
|
274
|
+
return mutateNow(NATIVE_NOTION_MOVE_BLOCK, {
|
|
275
|
+
input: {
|
|
276
|
+
blockId: pageId,
|
|
277
|
+
newParent
|
|
278
|
+
}
|
|
279
|
+
});
|
|
280
|
+
}, [mutateNow, workspace == null ? void 0 : workspace.id]);
|
|
281
|
+
const trashPage = useCallback((pageId) => mutateNow(NATIVE_NOTION_DELETE_BLOCK, {
|
|
282
|
+
blockId: pageId
|
|
283
|
+
}), [mutateNow]);
|
|
284
|
+
const restorePage = useCallback((pageId) => mutateNow(NATIVE_NOTION_RESTORE_BLOCK, {
|
|
285
|
+
blockId: pageId
|
|
286
|
+
}), [mutateNow]);
|
|
287
|
+
const createSubPage = useCallback(async (parentId) => {
|
|
288
|
+
var _a3, _b2;
|
|
289
|
+
const res = await client.mutate({
|
|
290
|
+
mutation: NATIVE_NOTION_CREATE_BLOCK,
|
|
291
|
+
variables: {
|
|
292
|
+
input: {
|
|
293
|
+
type: "page",
|
|
294
|
+
parent: {
|
|
295
|
+
type: "block",
|
|
296
|
+
id: parentId
|
|
297
|
+
},
|
|
298
|
+
properties: {
|
|
299
|
+
title: []
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
},
|
|
303
|
+
errorPolicy: "none"
|
|
304
|
+
});
|
|
305
|
+
client.refetchQueries({
|
|
306
|
+
include: ["NativeNotionChildren"]
|
|
307
|
+
}).catch(() => void 0);
|
|
308
|
+
return (_b2 = (_a3 = res.data) == null ? void 0 : _a3.createBlock) != null ? _b2 : null;
|
|
309
|
+
}, [client]);
|
|
310
|
+
const deleteWorkspace = useCallback(async (workspaceId) => {
|
|
311
|
+
var _a3, _b2;
|
|
312
|
+
await client.mutate({
|
|
313
|
+
mutation: NATIVE_NOTION_DELETE_WORKSPACE,
|
|
314
|
+
variables: {
|
|
315
|
+
workspaceId
|
|
316
|
+
},
|
|
317
|
+
errorPolicy: "none"
|
|
318
|
+
});
|
|
319
|
+
const res = await workspacesQuery.refetch();
|
|
320
|
+
const next = ((_b2 = (_a3 = res.data) == null ? void 0 : _a3.listWorkspaces) != null ? _b2 : []).find((w) => w.id !== workspaceId);
|
|
321
|
+
if (next) selectWorkspace(next.id);
|
|
322
|
+
}, [client, selectWorkspace, workspacesQuery]);
|
|
323
|
+
const saveTeamspaces = useCallback(async (next) => {
|
|
324
|
+
if (!(workspace == null ? void 0 : workspace.id)) return;
|
|
325
|
+
if (settingsPageId) {
|
|
326
|
+
await client.mutate({
|
|
327
|
+
mutation: NATIVE_NOTION_UPDATE_BLOCK,
|
|
328
|
+
variables: {
|
|
329
|
+
input: {
|
|
330
|
+
id: settingsPageId,
|
|
331
|
+
properties: {
|
|
332
|
+
[TEAMSPACES_KEY]: next
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
},
|
|
336
|
+
errorPolicy: "none"
|
|
337
|
+
});
|
|
338
|
+
} else {
|
|
339
|
+
await client.mutate({
|
|
340
|
+
mutation: NATIVE_NOTION_CREATE_BLOCK,
|
|
341
|
+
variables: {
|
|
342
|
+
input: {
|
|
343
|
+
type: "page",
|
|
344
|
+
parent: {
|
|
345
|
+
type: "workspace",
|
|
346
|
+
id: workspace.id
|
|
347
|
+
},
|
|
348
|
+
properties: newSettingsPageProperties(next)
|
|
349
|
+
}
|
|
350
|
+
},
|
|
351
|
+
errorPolicy: "none"
|
|
352
|
+
});
|
|
353
|
+
}
|
|
354
|
+
await rootQuery.refetch();
|
|
355
|
+
}, [client, rootQuery, settingsPageId, workspace == null ? void 0 : workspace.id]);
|
|
356
|
+
const addTeamspace$1 = useCallback((name, color) => saveTeamspaces(addTeamspace(teamspaces, __spreadValues({
|
|
357
|
+
name
|
|
358
|
+
}, color ? {
|
|
359
|
+
color
|
|
360
|
+
} : {}))), [saveTeamspaces, teamspaces]);
|
|
361
|
+
const moveToSection = useCallback(async (pageIds, teamspace) => {
|
|
362
|
+
await Promise.all(pageIds.map((id) => client.mutate({
|
|
363
|
+
mutation: NATIVE_NOTION_UPDATE_BLOCK,
|
|
364
|
+
variables: {
|
|
365
|
+
input: {
|
|
366
|
+
id,
|
|
367
|
+
properties: sectionPatch(teamspace)
|
|
368
|
+
}
|
|
369
|
+
},
|
|
370
|
+
errorPolicy: "none"
|
|
371
|
+
})));
|
|
372
|
+
await rootQuery.refetch();
|
|
373
|
+
}, [client, rootQuery]);
|
|
374
|
+
const removeTeamspace$1 = useCallback(async (id) => {
|
|
375
|
+
const group = teamspaceGroups.find((g) => g.teamspace.id === id);
|
|
376
|
+
if (group == null ? void 0 : group.pages.length) await moveToSection(group.pages.map((p) => p.id), null);
|
|
377
|
+
await saveTeamspaces(removeTeamspace(teamspaces, id));
|
|
378
|
+
}, [moveToSection, saveTeamspaces, teamspaceGroups, teamspaces]);
|
|
379
|
+
const createSectionPage = useCallback((teamspace) => createRoot({
|
|
380
|
+
type: "page",
|
|
381
|
+
properties: newSectionPageProperties(teamspace)
|
|
382
|
+
}), [createRoot]);
|
|
383
|
+
const createAgent = useCallback((template, teamspace = null) => {
|
|
384
|
+
const pageId = newBlockId();
|
|
385
|
+
const blocks = templateInstructionBlocks(agentTemplate(template));
|
|
386
|
+
return createRoot(__spreadValues({
|
|
387
|
+
id: pageId,
|
|
388
|
+
type: "page",
|
|
389
|
+
properties: templateAgentProperties(template, {
|
|
390
|
+
teamspace
|
|
391
|
+
})
|
|
392
|
+
}, blocks.length ? {
|
|
393
|
+
children: blocks.map((b) => __spreadProps(__spreadValues({
|
|
394
|
+
id: newBlockId()
|
|
395
|
+
}, b), {
|
|
396
|
+
parent: {
|
|
397
|
+
type: "block",
|
|
398
|
+
id: pageId
|
|
399
|
+
}
|
|
400
|
+
}))
|
|
401
|
+
} : {}));
|
|
402
|
+
}, [createRoot]);
|
|
163
403
|
const refresh = useCallback(async () => {
|
|
164
|
-
await Promise.all([workspacesQuery.refetch(), (workspace == null ? void 0 : workspace.id) ? rootQuery.refetch() : null]);
|
|
165
|
-
}, [rootQuery, workspace == null ? void 0 : workspace.id, workspacesQuery]);
|
|
404
|
+
await Promise.all([workspacesQuery.refetch(), (workspace == null ? void 0 : workspace.id) ? rootQuery.refetch() : null, (workspace == null ? void 0 : workspace.id) ? favoritesQuery.refetch() : null]);
|
|
405
|
+
}, [favoritesQuery, rootQuery, workspace == null ? void 0 : workspace.id, workspacesQuery]);
|
|
166
406
|
return {
|
|
167
407
|
workspaces,
|
|
168
408
|
workspace,
|
|
169
409
|
selectWorkspace,
|
|
170
410
|
pages,
|
|
411
|
+
myPages,
|
|
171
412
|
meetings,
|
|
413
|
+
agents,
|
|
414
|
+
teamspaces,
|
|
415
|
+
teamspaceGroups,
|
|
416
|
+
addTeamspace: addTeamspace$1,
|
|
417
|
+
removeTeamspace: removeTeamspace$1,
|
|
418
|
+
moveToSection,
|
|
419
|
+
createSectionPage,
|
|
420
|
+
createAgent,
|
|
172
421
|
templateLibraryId,
|
|
173
422
|
loading: workspacesQuery.loading && !workspacesQuery.data || rootQuery.loading && !rootQuery.data,
|
|
174
|
-
error: (
|
|
423
|
+
error: (_d = (_c = workspacesQuery.error) != null ? _c : rootQuery.error) != null ? _d : null,
|
|
175
424
|
createWorkspace,
|
|
176
425
|
createPage,
|
|
177
426
|
createMeeting,
|
|
178
427
|
createFromTemplate,
|
|
428
|
+
favoriteIds,
|
|
429
|
+
toggleFavoritePage,
|
|
430
|
+
renamePage,
|
|
431
|
+
duplicatePage,
|
|
432
|
+
movePage,
|
|
433
|
+
trashPage,
|
|
434
|
+
restorePage,
|
|
435
|
+
createSubPage,
|
|
436
|
+
deleteWorkspace,
|
|
437
|
+
refetchWorkspaces: workspacesQuery.refetch,
|
|
179
438
|
refresh
|
|
180
439
|
};
|
|
181
440
|
}export{useNotionWorkspace};//# sourceMappingURL=useNotionWorkspace.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useNotionWorkspace.js","sources":["../../../src/features/notion/useNotionWorkspace.ts"],"sourcesContent":["/**\n * Workspace state for the native Notion surface - the web flow\n * (NotionWorkspaceFlow): list workspaces, pick the one used last (else the\n * first), load its root blocks and split them like the web sidebar (My pages,\n * Meetings, the hidden template library), create workspaces, pages, meetings\n * and pages from templates.\n */\nimport { useCallback, useEffect, useMemo, useState } from 'react';\nimport { useApolloClient, useQuery } from '@apollo/client';\nimport {\n NATIVE_NOTION_CHILDREN,\n NATIVE_NOTION_CREATE_BLOCK,\n NATIVE_NOTION_CREATE_WORKSPACE,\n NATIVE_NOTION_WORKSPACES,\n} from './notionDocuments';\nimport {\n livePagesByRecent,\n meetingEmbedChild,\n meetingRowOf,\n newMeetingProperties,\n pageKindOf,\n toTitleProperty,\n type MeetingRow,\n type NotionBlock,\n type NotionWorkspace,\n} from './notionBlocks';\nimport { buildTemplateCreatePlan, isTemplateLibrary, type PageTemplate } from './notionTemplates';\n\ntype StorageLike = {\n getItem(key: string): Promise<string | null>;\n setItem(key: string, value: string): Promise<void>;\n};\n\nlet AsyncStorage: StorageLike | null = null;\ntry {\n // eslint-disable-next-line @typescript-eslint/no-var-requires, global-require\n AsyncStorage = require('@react-native-async-storage/async-storage').default ?? null;\n} catch {\n AsyncStorage = null;\n}\n\nconst LAST_WORKSPACE_KEY = 'yantra.notion.lastWorkspace.v1';\n\ntype CreatedBlock = { createBlock?: NotionBlock | null };\n\nexport function useNotionWorkspace() {\n const client = useApolloClient();\n const [selectedId, setSelectedId] = useState<string | null>(null);\n const [remembered, setRemembered] = useState<string | null | undefined>(undefined);\n\n useEffect(() => {\n let alive = true;\n (AsyncStorage?.getItem(LAST_WORKSPACE_KEY) ?? Promise.resolve(null))\n .catch(() => null)\n .then((id) => alive && setRemembered(id || null));\n return () => {\n alive = false;\n };\n }, []);\n\n const workspacesQuery = useQuery<{ listWorkspaces?: NotionWorkspace[] | null }>(NATIVE_NOTION_WORKSPACES, {\n fetchPolicy: 'cache-and-network',\n });\n const workspaces = useMemo(() => workspacesQuery.data?.listWorkspaces ?? [], [workspacesQuery.data]);\n\n const workspace = useMemo<NotionWorkspace | null>(() => {\n if (!workspaces.length) return null;\n const wanted = selectedId ?? remembered;\n return workspaces.find((w) => w.id === wanted) ?? workspaces[0];\n }, [workspaces, selectedId, remembered]);\n\n const selectWorkspace = useCallback((id: string) => {\n setSelectedId(id);\n AsyncStorage?.setItem(LAST_WORKSPACE_KEY, id).catch(() => undefined);\n }, []);\n\n const rootQuery = useQuery<{ getBlockChildren?: { results?: NotionBlock[] | null } | null }>(\n NATIVE_NOTION_CHILDREN,\n {\n variables: { blockId: workspace?.id ?? '', pageSize: 200 },\n skip: !workspace?.id,\n fetchPolicy: 'cache-and-network',\n },\n );\n\n const { pages, meetings, templateLibraryId } = useMemo(() => {\n const roots = rootQuery.data?.getBlockChildren?.results ?? [];\n const live = livePagesByRecent(roots);\n const now = Date.now();\n return {\n pages: live.filter((b) => pageKindOf(b.properties) === 'page'),\n meetings: live.map((b) => meetingRowOf(b, now)).filter((r): r is MeetingRow => Boolean(r)),\n templateLibraryId: roots.find((b) => !b.inTrash && isTemplateLibrary(b.properties))?.id ?? null,\n };\n }, [rootQuery.data]);\n\n const refetchRoots = useCallback(() => {\n rootQuery.refetch().catch(() => undefined);\n }, [rootQuery]);\n\n const createWorkspace = useCallback(\n async (name: string) => {\n const res = await client.mutate<{ createWorkspace?: NotionWorkspace | null }>({\n mutation: NATIVE_NOTION_CREATE_WORKSPACE,\n variables: {\n input: { name: name.trim() || 'Untitled workspace', icon: { type: 'emoji', emoji: '📒' } },\n },\n });\n const created = res.data?.createWorkspace;\n await workspacesQuery.refetch();\n if (created?.id) selectWorkspace(created.id);\n return created ?? null;\n },\n [client, selectWorkspace, workspacesQuery],\n );\n\n const createRoot = useCallback(\n async (input: Record<string, unknown>) => {\n if (!workspace?.id) return null;\n const res = await client.mutate<CreatedBlock>({\n mutation: NATIVE_NOTION_CREATE_BLOCK,\n variables: { input: { ...input, parent: { type: 'workspace', id: workspace.id } } },\n });\n refetchRoots();\n return res.data?.createBlock ?? null;\n },\n [client, refetchRoots, workspace?.id],\n );\n\n /** A new top-level page in the active workspace (web \"New page\"). */\n const createPage = useCallback(\n (title = '') => createRoot({ type: 'page', properties: { title: toTitleProperty(title) } }),\n [createRoot],\n );\n\n /** Web \"New meeting\": a meeting page with the meeting recorder widget inside. */\n const createMeeting = useCallback(\n () => createRoot({ type: 'page', properties: newMeetingProperties(), children: [meetingEmbedChild()] }),\n [createRoot],\n );\n\n /**\n * Web `createPageFromTemplate` (per-block path): one nested createBlock for the page,\n * then each database row parented to its database. Returns the new page id.\n */\n const createFromTemplate = useCallback(\n async (template: Pick<PageTemplate, 'root'>) => {\n if (!workspace?.id) return null;\n const plan = buildTemplateCreatePlan(template, { type: 'workspace', id: workspace.id });\n const res = await client.mutate<CreatedBlock>({\n mutation: NATIVE_NOTION_CREATE_BLOCK,\n variables: { input: plan.root },\n });\n let failedRows = 0;\n // Sequential on purpose: rows keep their template order.\n // eslint-disable-next-line no-restricted-syntax\n for (const row of plan.rows) {\n try {\n // eslint-disable-next-line no-await-in-loop\n await client.mutate({ mutation: NATIVE_NOTION_CREATE_BLOCK, variables: { input: row } });\n } catch {\n failedRows += 1;\n }\n }\n refetchRoots();\n return { id: String(res.data?.createBlock?.id ?? plan.rootId), failedRows };\n },\n [client, refetchRoots, workspace?.id],\n );\n\n const refresh = useCallback(async () => {\n await Promise.all([workspacesQuery.refetch(), workspace?.id ? rootQuery.refetch() : null]);\n }, [rootQuery, workspace?.id, workspacesQuery]);\n\n return {\n workspaces,\n workspace,\n selectWorkspace,\n pages,\n meetings,\n templateLibraryId,\n loading: (workspacesQuery.loading && !workspacesQuery.data) || (rootQuery.loading && !rootQuery.data),\n error: workspacesQuery.error ?? rootQuery.error ?? null,\n createWorkspace,\n createPage,\n createMeeting,\n createFromTemplate,\n refresh,\n };\n}\n\nexport type NotionWorkspaceState = ReturnType<typeof useNotionWorkspace>;\n"],"names":["_a","_b","_c"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA,IAAA,EAAA;AAgBA,IAAI,YAAmC,GAAA,IAAA;AACvC,IAAI;AAEF,EAAA,YAAA,GAAA,CAAe,EAAQ,GAAA,OAAA,CAAA,2CAA2C,CAAE,CAAA,OAAA,KAArD,IAAgE,GAAA,EAAA,GAAA,IAAA;AACjF,CAAQ,CAAA,OAAA,CAAA,EAAA;AACN,EAAe,YAAA,GAAA,IAAA;AACjB;AACA,MAAM,kBAAqB,GAAA,gCAAA;AAIpB,SAAS,kBAAqB,GAAA;AA3BrC,EAAA,IAAAA,GAAA,EAAA,EAAA,EAAA,EAAA;AA4BE,EAAA,MAAM,SAAS,eAAgB,EAAA;AAC/B,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAI,SAAwB,IAAI,CAAA;AAChE,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAI,SAAoC,MAAS,CAAA;AACjF,EAAA,SAAA,CAAU,MAAM;AA/BlB,IAAAA,IAAAA,GAAAA;AAgCI,IAAA,IAAI,KAAQ,GAAA,IAAA;AACZ,IAACA,CAAAA,CAAAA,GAAAA,GAAA,6CAAc,OAAQ,CAAA,kBAAA,CAAA,KAAtB,OAAAA,GAA6C,GAAA,OAAA,CAAQ,QAAQ,IAAI,CAAA,EAAG,MAAM,MAAM,IAAI,EAAE,IAAK,CAAA,CAAA,EAAA,KAAM,SAAS,aAAc,CAAA,EAAA,IAAM,IAAI,CAAC,CAAA;AACpI,IAAA,OAAO,MAAM;AACX,MAAQ,KAAA,GAAA,KAAA;AAAA,KACV;AAAA,GACF,EAAG,EAAE,CAAA;AACL,EAAM,MAAA,eAAA,GAAkB,SAErB,wBAA0B,EAAA;AAAA,IAC3B,WAAa,EAAA;AAAA,GACd,CAAA;AACD,EAAM,MAAA,UAAA,GAAa,QAAQ,MAAG;AA3ChC,IAAA,IAAAA,GAAAC,EAAAA,GAAAA;AA2CmC,IAAAA,OAAAA,CAAAA,GAAAA,GAAAA,CAAAD,MAAA,eAAgB,CAAA,IAAA,KAAhB,gBAAAA,GAAsB,CAAA,cAAA,KAAtB,IAAAC,GAAAA,GAAAA,GAAwC,EAAC;AAAA,GAAG,EAAA,CAAC,eAAgB,CAAA,IAAI,CAAC,CAAA;AACnG,EAAM,MAAA,SAAA,GAAY,QAAgC,MAAM;AA5C1D,IAAAD,IAAAA,GAAAA;AA6CI,IAAI,IAAA,CAAC,UAAW,CAAA,MAAA,EAAe,OAAA,IAAA;AAC/B,IAAA,MAAM,SAAS,UAAc,IAAA,IAAA,GAAA,UAAA,GAAA,UAAA;AAC7B,IAAOA,OAAAA,CAAAA,GAAAA,GAAA,UAAW,CAAA,IAAA,CAAK,CAAK,CAAA,KAAA,CAAA,CAAE,EAAO,KAAA,MAAM,CAApC,KAAA,IAAA,GAAAA,GAAyC,GAAA,UAAA,CAAW,CAAC,CAAA;AAAA,GAC3D,EAAA,CAAC,UAAY,EAAA,UAAA,EAAY,UAAU,CAAC,CAAA;AACvC,EAAM,MAAA,eAAA,GAAkB,WAAY,CAAA,CAAC,EAAe,KAAA;AAClD,IAAA,aAAA,CAAc,EAAE,CAAA;AAChB,IAAA,YAAA,IAAA,IAAA,GAAA,MAAA,GAAA,YAAA,CAAc,OAAQ,CAAA,kBAAA,EAAoB,EAAI,CAAA,CAAA,KAAA,CAAM,MAAM,MAAA,CAAA;AAAA,GAC5D,EAAG,EAAE,CAAA;AACL,EAAM,MAAA,SAAA,GAAY,SAIf,sBAAwB,EAAA;AAAA,IACzB,SAAW,EAAA;AAAA,MACT,OAASA,EAAAA,CAAAA,GAAAA,GAAA,SAAW,IAAA,IAAA,GAAA,MAAA,GAAA,SAAA,CAAA,EAAA,KAAX,OAAAA,GAAiB,GAAA,EAAA;AAAA,MAC1B,QAAU,EAAA;AAAA,KACZ;AAAA,IACA,IAAA,EAAM,EAAC,SAAW,IAAA,IAAA,GAAA,MAAA,GAAA,SAAA,CAAA,EAAA,CAAA;AAAA,IAClB,WAAa,EAAA;AAAA,GACd,CAAA;AACD,EAAM,MAAA;AAAA,IACJ,KAAA;AAAA,IACA,QAAA;AAAA,IACA;AAAA,GACF,GAAI,QAAQ,MAAM;AArEpB,IAAAA,IAAAA,GAAAA,EAAAC,KAAAC,GAAA,EAAA,EAAA,EAAA,EAAA;AAsEI,IAAA,MAAM,KAAQA,GAAAA,CAAAA,GAAAA,GAAAA,CAAAD,GAAAD,GAAAA,CAAAA,GAAAA,GAAA,UAAU,IAAV,KAAA,IAAA,GAAA,MAAA,GAAAA,GAAgB,CAAA,gBAAA,KAAhB,IAAAC,GAAAA,MAAAA,GAAAA,GAAAA,CAAkC,OAAlC,KAAA,IAAA,GAAAC,MAA6C,EAAC;AAC5D,IAAM,MAAA,IAAA,GAAO,kBAAkB,KAAK,CAAA;AACpC,IAAM,MAAA,GAAA,GAAM,KAAK,GAAI,EAAA;AACrB,IAAO,OAAA;AAAA,MACL,KAAA,EAAO,KAAK,MAAO,CAAA,CAAA,CAAA,KAAK,WAAW,CAAE,CAAA,UAAU,MAAM,MAAM,CAAA;AAAA,MAC3D,QAAU,EAAA,IAAA,CAAK,GAAI,CAAA,CAAA,CAAA,KAAK,aAAa,CAAG,EAAA,GAAG,CAAC,CAAA,CAAE,MAAO,CAAA,CAAC,CAAuB,KAAA,OAAA,CAAQ,CAAC,CAAC,CAAA;AAAA,MACvF,iBAAmB,EAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,KAAA,CAAM,IAAK,CAAA,CAAA,CAAA,KAAK,CAAC,CAAE,CAAA,OAAA,IAAW,iBAAkB,CAAA,CAAA,CAAE,UAAU,CAAC,CAA7D,KAAA,IAAA,GAAA,MAAA,GAAA,EAAA,CAAgE,OAAhE,IAAsE,GAAA,EAAA,GAAA;AAAA,KAC3F;AAAA,GACC,EAAA,CAAC,SAAU,CAAA,IAAI,CAAC,CAAA;AACnB,EAAM,MAAA,YAAA,GAAe,YAAY,MAAM;AACrC,IAAA,SAAA,CAAU,OAAQ,EAAA,CAAE,KAAM,CAAA,MAAM,MAAS,CAAA;AAAA,GAC3C,EAAG,CAAC,SAAS,CAAC,CAAA;AACd,EAAM,MAAA,eAAA,GAAkB,WAAY,CAAA,OAAO,IAAiB,KAAA;AAlF9D,IAAAF,IAAAA,GAAAA;AAmFI,IAAM,MAAA,GAAA,GAAM,MAAM,MAAA,CAAO,MAEtB,CAAA;AAAA,MACD,QAAU,EAAA,8BAAA;AAAA,MACV,SAAW,EAAA;AAAA,QACT,KAAO,EAAA;AAAA,UACL,IAAA,EAAM,IAAK,CAAA,IAAA,EAAU,IAAA,oBAAA;AAAA,UACrB,IAAM,EAAA;AAAA,YACJ,IAAM,EAAA,OAAA;AAAA,YACN,KAAO,EAAA;AAAA;AACT;AACF;AACF,KACD,CAAA;AACD,IAAA,MAAM,OAAUA,GAAAA,CAAAA,GAAAA,GAAA,GAAI,CAAA,IAAA,KAAJ,gBAAAA,GAAU,CAAA,eAAA;AAC1B,IAAA,MAAM,gBAAgB,OAAQ,EAAA;AAC9B,IAAA,IAAI,OAAS,IAAA,IAAA,GAAA,MAAA,GAAA,OAAA,CAAA,EAAA,EAAoB,eAAA,CAAA,OAAA,CAAQ,EAAE,CAAA;AAC3C,IAAA,OAAO,OAAW,IAAA,IAAA,GAAA,OAAA,GAAA,IAAA;AAAA,GACjB,EAAA,CAAC,MAAQ,EAAA,eAAA,EAAiB,eAAe,CAAC,CAAA;AAC7C,EAAM,MAAA,UAAA,GAAa,WAAY,CAAA,OAAO,KAAmC,KAAA;AAtG3E,IAAA,IAAAA,GAAAC,EAAAA,GAAAA;AAuGI,IAAI,IAAA,EAAC,SAAW,IAAA,IAAA,GAAA,MAAA,GAAA,SAAA,CAAA,EAAA,CAAA,EAAW,OAAA,IAAA;AAC3B,IAAM,MAAA,GAAA,GAAM,MAAM,MAAA,CAAO,MAAqB,CAAA;AAAA,MAC5C,QAAU,EAAA,0BAAA;AAAA,MACV,SAAW,EAAA;AAAA,QACT,KAAA,EAAO,iCACF,KADE,CAAA,EAAA;AAAA,UAEL,MAAQ,EAAA;AAAA,YACN,IAAM,EAAA,WAAA;AAAA,YACN,IAAI,SAAU,CAAA;AAAA;AAChB,SACF;AAAA;AACF,KACD,CAAA;AACD,IAAa,YAAA,EAAA;AACb,IAAOA,OAAAA,CAAAA,GAAAA,GAAAA,CAAAD,MAAA,GAAI,CAAA,IAAA,KAAJ,gBAAAA,GAAU,CAAA,WAAA,KAAV,OAAAC,GAAyB,GAAA,IAAA;AAAA,KAC/B,CAAC,MAAA,EAAQ,YAAc,EAAA,SAAA,IAAA,IAAA,GAAA,MAAA,GAAA,SAAA,CAAW,EAAE,CAAC,CAAA;AAGxC,EAAA,MAAM,UAAa,GAAA,WAAA,CAAY,CAAC,KAAA,GAAQ,OAAO,UAAW,CAAA;AAAA,IACxD,IAAM,EAAA,MAAA;AAAA,IACN,UAAY,EAAA;AAAA,MACV,KAAA,EAAO,gBAAgB,KAAK;AAAA;AAC9B,GACD,CAAA,EAAG,CAAC,UAAU,CAAC,CAAA;AAGhB,EAAM,MAAA,aAAA,GAAgB,WAAY,CAAA,MAAM,UAAW,CAAA;AAAA,IACjD,IAAM,EAAA,MAAA;AAAA,IACN,YAAY,oBAAqB,EAAA;AAAA,IACjC,QAAA,EAAU,CAAC,iBAAA,EAAmB;AAAA,GAC/B,CAAA,EAAG,CAAC,UAAU,CAAC,CAAA;AAMhB,EAAM,MAAA,kBAAA,GAAqB,WAAY,CAAA,OAAO,QAAyC,KAAA;AA3IzF,IAAA,IAAAD,KAAAC,GAAAC,EAAAA,GAAAA;AA4II,IAAI,IAAA,EAAC,SAAW,IAAA,IAAA,GAAA,MAAA,GAAA,SAAA,CAAA,EAAA,CAAA,EAAW,OAAA,IAAA;AAC3B,IAAM,MAAA,IAAA,GAAO,wBAAwB,QAAU,EAAA;AAAA,MAC7C,IAAM,EAAA,WAAA;AAAA,MACN,IAAI,SAAU,CAAA;AAAA,KACf,CAAA;AACD,IAAM,MAAA,GAAA,GAAM,MAAM,MAAA,CAAO,MAAqB,CAAA;AAAA,MAC5C,QAAU,EAAA,0BAAA;AAAA,MACV,SAAW,EAAA;AAAA,QACT,OAAO,IAAK,CAAA;AAAA;AACd,KACD,CAAA;AACD,IAAA,IAAI,UAAa,GAAA,CAAA;AAGjB,IAAW,KAAA,MAAA,GAAA,IAAO,KAAK,IAAM,EAAA;AAC3B,MAAI,IAAA;AAEF,QAAA,MAAM,OAAO,MAAO,CAAA;AAAA,UAClB,QAAU,EAAA,0BAAA;AAAA,UACV,SAAW,EAAA;AAAA,YACT,KAAO,EAAA;AAAA;AACT,SACD,CAAA;AAAA,OACK,CAAA,OAAA,CAAA,EAAA;AACN,QAAc,UAAA,IAAA,CAAA;AAAA;AAChB;AAEF,IAAa,YAAA,EAAA;AACb,IAAO,OAAA;AAAA,MACL,IAAI,MAAOA,CAAAA,CAAAA,GAAAA,GAAAA,CAAAD,GAAAD,GAAAA,CAAAA,GAAAA,GAAA,IAAI,IAAJ,KAAA,IAAA,GAAA,MAAA,GAAAA,GAAU,CAAA,WAAA,KAAV,gBAAAC,GAAuB,CAAA,EAAA,KAAvB,IAAAC,GAAAA,GAAAA,GAA6B,KAAK,MAAM,CAAA;AAAA,MACnD;AAAA,KACF;AAAA,KACC,CAAC,MAAA,EAAQ,YAAc,EAAA,SAAA,IAAA,IAAA,GAAA,MAAA,GAAA,SAAA,CAAW,EAAE,CAAC,CAAA;AACxC,EAAM,MAAA,OAAA,GAAU,YAAY,YAAY;AACtC,IAAA,MAAM,OAAQ,CAAA,GAAA,CAAI,CAAC,eAAA,CAAgB,OAAQ,EAAA,EAAA,CAAG,SAAW,IAAA,IAAA,GAAA,MAAA,GAAA,SAAA,CAAA,EAAA,IAAK,SAAU,CAAA,OAAA,EAAY,GAAA,IAAI,CAAC,CAAA;AAAA,KACxF,CAAC,SAAA,EAAW,SAAW,IAAA,IAAA,GAAA,MAAA,GAAA,SAAA,CAAA,EAAA,EAAI,eAAe,CAAC,CAAA;AAC9C,EAAO,OAAA;AAAA,IACL,UAAA;AAAA,IACA,SAAA;AAAA,IACA,eAAA;AAAA,IACA,KAAA;AAAA,IACA,QAAA;AAAA,IACA,iBAAA;AAAA,IACA,OAAA,EAAS,gBAAgB,OAAW,IAAA,CAAC,gBAAgB,IAAQ,IAAA,SAAA,CAAU,OAAW,IAAA,CAAC,SAAU,CAAA,IAAA;AAAA,IAC7F,QAAO,EAAgB,GAAA,CAAA,EAAA,GAAA,eAAA,CAAA,KAAA,KAAhB,IAAyB,GAAA,EAAA,GAAA,SAAA,CAAU,UAAnC,IAA4C,GAAA,EAAA,GAAA,IAAA;AAAA,IACnD,eAAA;AAAA,IACA,UAAA;AAAA,IACA,aAAA;AAAA,IACA,kBAAA;AAAA,IACA;AAAA,GACF;AACF"}
|
|
1
|
+
{"version":3,"file":"useNotionWorkspace.js","sources":["../../../src/features/notion/useNotionWorkspace.ts"],"sourcesContent":["/**\n * Workspace state for the native Notion surface - the web flow\n * (NotionWorkspaceFlow): list workspaces, pick the one used last (else the\n * first), load its root blocks and split them like the web sidebar (My pages,\n * Meetings, the hidden template library), create workspaces, pages, meetings\n * and pages from templates.\n */\nimport { useCallback, useEffect, useMemo, useState } from 'react';\nimport { useApolloClient, useQuery } from '@apollo/client';\nimport {\n NATIVE_NOTION_CHILDREN,\n NATIVE_NOTION_CREATE_BLOCK,\n NATIVE_NOTION_CREATE_WORKSPACE,\n NATIVE_NOTION_DELETE_BLOCK,\n NATIVE_NOTION_DELETE_WORKSPACE,\n NATIVE_NOTION_DUPLICATE_BLOCK,\n NATIVE_NOTION_FAVORITES,\n NATIVE_NOTION_MOVE_BLOCK,\n NATIVE_NOTION_RESTORE_BLOCK,\n NATIVE_NOTION_SET_FAVORITES,\n NATIVE_NOTION_UPDATE_BLOCK,\n NATIVE_NOTION_WORKSPACES,\n} from './notionDocuments';\nimport { toggleFavorite } from './notionPageActions';\nimport { newBlockId } from './notionEditorModel';\nimport {\n NOTES_SETTINGS_FLAG,\n TEAMSPACES_KEY,\n addTeamspace as addTeamspaceEntry,\n agentRowOf,\n classifyRootNodes,\n newSectionPageProperties,\n newSettingsPageProperties,\n readTeamspaces,\n removeTeamspace as removeTeamspaceEntry,\n sectionPatch,\n type AgentSummaryRow,\n type TeamspaceDef,\n} from './notionPageKinds';\nimport {\n agentTemplate,\n templateAgentProperties,\n templateInstructionBlocks,\n type AgentTemplateId,\n} from './notionNotesAgent';\nimport {\n livePagesByRecent,\n meetingEmbedChild,\n meetingRowOf,\n newMeetingProperties,\n pageKindOf,\n toTitleProperty,\n type MeetingRow,\n type NotionBlock,\n type NotionWorkspace,\n} from './notionBlocks';\nimport { buildTemplateCreatePlan, isTemplateLibrary, type PageTemplate } from './notionTemplates';\n\ntype StorageLike = {\n getItem(key: string): Promise<string | null>;\n setItem(key: string, value: string): Promise<void>;\n};\n\nlet AsyncStorage: StorageLike | null = null;\ntry {\n // eslint-disable-next-line @typescript-eslint/no-var-requires, global-require\n AsyncStorage = require('@react-native-async-storage/async-storage').default ?? null;\n} catch {\n AsyncStorage = null;\n}\n\nconst LAST_WORKSPACE_KEY = 'yantra.notion.lastWorkspace.v1';\n\ntype CreatedBlock = { createBlock?: NotionBlock | null };\n\nexport function useNotionWorkspace() {\n const client = useApolloClient();\n const [selectedId, setSelectedId] = useState<string | null>(null);\n const [remembered, setRemembered] = useState<string | null | undefined>(undefined);\n\n useEffect(() => {\n let alive = true;\n (AsyncStorage?.getItem(LAST_WORKSPACE_KEY) ?? Promise.resolve(null))\n .catch(() => null)\n .then((id) => alive && setRemembered(id || null));\n return () => {\n alive = false;\n };\n }, []);\n\n const workspacesQuery = useQuery<{ listWorkspaces?: NotionWorkspace[] | null }>(NATIVE_NOTION_WORKSPACES, {\n fetchPolicy: 'cache-and-network',\n });\n const workspaces = useMemo(() => workspacesQuery.data?.listWorkspaces ?? [], [workspacesQuery.data]);\n\n const workspace = useMemo<NotionWorkspace | null>(() => {\n if (!workspaces.length) return null;\n const wanted = selectedId ?? remembered;\n return workspaces.find((w) => w.id === wanted) ?? workspaces[0];\n }, [workspaces, selectedId, remembered]);\n\n const selectWorkspace = useCallback((id: string) => {\n setSelectedId(id);\n AsyncStorage?.setItem(LAST_WORKSPACE_KEY, id).catch(() => undefined);\n }, []);\n\n const rootQuery = useQuery<{ getBlockChildren?: { results?: NotionBlock[] | null } | null }>(\n NATIVE_NOTION_CHILDREN,\n {\n variables: { blockId: workspace?.id ?? '', pageSize: 200 },\n skip: !workspace?.id,\n fetchPolicy: 'cache-and-network',\n },\n );\n\n const { pages, myPages, meetings, agents, teamspaces, teamspaceGroups, settingsPageId, templateLibraryId } =\n useMemo(() => {\n const roots = rootQuery.data?.getBlockChildren?.results ?? [];\n const live = livePagesByRecent(roots);\n const now = Date.now();\n // The hidden settings page holds the teamspace catalog (web notesSettings).\n const settings = roots.find(\n (b) => !b.inTrash && (b.properties as Record<string, unknown> | null)?.[NOTES_SETTINGS_FLAG] === true,\n );\n const catalog = readTeamspaces(settings?.properties as Record<string, unknown> | undefined);\n const nodes = live.map((b) => {\n const p = (b.properties ?? {}) as Record<string, unknown>;\n return {\n id: b.id,\n block: b,\n kind: pageKindOf(p),\n section: p.section === 'teamspace' ? ('teamspace' as const) : ('private' as const),\n teamspace: typeof p.teamspace === 'string' ? p.teamspace : undefined,\n };\n });\n const sections = classifyRootNodes(nodes, catalog);\n return {\n pages: live.filter((b) => pageKindOf(b.properties) === 'page'),\n myPages: sections.myPages.map((n) => n.block),\n meetings: live.map((b) => meetingRowOf(b, now)).filter((r): r is MeetingRow => Boolean(r)),\n agents: sections.agents\n .map((n) => agentRowOf(n.block, now))\n .filter((r): r is AgentSummaryRow => Boolean(r)),\n teamspaces: catalog,\n teamspaceGroups: sections.teamspaces.map((g) => ({\n teamspace: g.teamspace,\n implicit: g.implicit,\n pages: g.nodes.map((n) => n.block),\n })),\n settingsPageId: settings?.id ?? null,\n templateLibraryId: roots.find((b) => !b.inTrash && isTemplateLibrary(b.properties))?.id ?? null,\n };\n }, [rootQuery.data]);\n\n const refetchRoots = useCallback(() => {\n rootQuery.refetch().catch(() => undefined);\n }, [rootQuery]);\n\n const createWorkspace = useCallback(\n async (name: string) => {\n const res = await client.mutate<{ createWorkspace?: NotionWorkspace | null }>({\n mutation: NATIVE_NOTION_CREATE_WORKSPACE,\n variables: {\n input: { name: name.trim() || 'Untitled workspace', icon: { type: 'emoji', emoji: '📒' } },\n },\n });\n const created = res.data?.createWorkspace;\n await workspacesQuery.refetch();\n if (created?.id) selectWorkspace(created.id);\n return created ?? null;\n },\n [client, selectWorkspace, workspacesQuery],\n );\n\n const createRoot = useCallback(\n async (input: Record<string, unknown>) => {\n if (!workspace?.id) return null;\n const res = await client.mutate<CreatedBlock>({\n mutation: NATIVE_NOTION_CREATE_BLOCK,\n variables: { input: { ...input, parent: { type: 'workspace', id: workspace.id } } },\n errorPolicy: 'none',\n });\n refetchRoots();\n return res.data?.createBlock ?? null;\n },\n [client, refetchRoots, workspace?.id],\n );\n\n /** A new top-level page in the active workspace (web \"New page\"). */\n const createPage = useCallback(\n (title = '') => createRoot({ type: 'page', properties: { title: toTitleProperty(title) } }),\n [createRoot],\n );\n\n /** Web \"New meeting\": a meeting page with the meeting recorder widget inside. */\n /**\n * Web \"New meeting\": a meeting page with the meeting recorder widget inside. The page gets a\n * client id so the nested widget can name its parent (NotionCreateBlockInput.parent is required -\n * without it the server rejected the whole create with a 400).\n */\n const createMeeting = useCallback(() => {\n const pageId = newBlockId();\n return createRoot({\n id: pageId,\n type: 'page',\n properties: newMeetingProperties(),\n children: [{ id: newBlockId(), ...meetingEmbedChild(), parent: { type: 'block', id: pageId } }],\n });\n }, [createRoot]);\n\n /**\n * Web `createPageFromTemplate` (per-block path): one nested createBlock for the page,\n * then each database row parented to its database. Returns the new page id.\n */\n const createFromTemplate = useCallback(\n async (template: Pick<PageTemplate, 'root'>) => {\n if (!workspace?.id) return null;\n const plan = buildTemplateCreatePlan(template, { type: 'workspace', id: workspace.id });\n const res = await client.mutate<CreatedBlock>({\n mutation: NATIVE_NOTION_CREATE_BLOCK,\n variables: { input: plan.root },\n });\n let failedRows = 0;\n // Sequential on purpose: rows keep their template order.\n // eslint-disable-next-line no-restricted-syntax\n for (const row of plan.rows) {\n try {\n // eslint-disable-next-line no-await-in-loop\n await client.mutate({ mutation: NATIVE_NOTION_CREATE_BLOCK, variables: { input: row } });\n } catch {\n failedRows += 1;\n }\n }\n refetchRoots();\n return { id: String(res.data?.createBlock?.id ?? plan.rootId), failedRows };\n },\n [client, refetchRoots, workspace?.id],\n );\n\n // ---- Favorites (web sidebar ★ section) ------------------------------------\n const favoritesQuery = useQuery<{ notionFavorites?: string[] | null }>(NATIVE_NOTION_FAVORITES, {\n variables: { workspaceId: workspace?.id ?? '' },\n skip: !workspace?.id,\n fetchPolicy: 'cache-and-network',\n });\n const [localFavorites, setLocalFavorites] = useState<string[] | null>(null);\n useEffect(() => setLocalFavorites(null), [favoritesQuery.data, workspace?.id]);\n const favoriteIds = useMemo(\n () => localFavorites ?? favoritesQuery.data?.notionFavorites ?? [],\n [localFavorites, favoritesQuery.data],\n );\n\n const toggleFavoritePage = useCallback(\n async (pageId: string) => {\n if (!workspace?.id) return;\n const next = toggleFavorite(favoriteIds, pageId);\n setLocalFavorites(next);\n try {\n await client.mutate({\n mutation: NATIVE_NOTION_SET_FAVORITES,\n variables: { workspaceId: workspace.id, blockIds: next },\n errorPolicy: 'none',\n });\n await favoritesQuery.refetch();\n } catch (err) {\n setLocalFavorites(null);\n throw err;\n }\n },\n [client, favoriteIds, favoritesQuery, workspace?.id],\n );\n\n // ---- Page actions (web sidebar row ••• / page •••) --------------------------\n const mutateNow = useCallback(\n async (mutation: Parameters<typeof client.mutate>[0]['mutation'], variables: Record<string, unknown>) => {\n const res = await client.mutate({ mutation, variables, errorPolicy: 'none' });\n client.refetchQueries({ include: ['NativeNotionChildren'] }).catch(() => undefined);\n return res.data as Record<string, any> | null | undefined;\n },\n [client],\n );\n\n const renamePage = useCallback(\n (pageId: string, title: string) =>\n mutateNow(NATIVE_NOTION_UPDATE_BLOCK, {\n input: { id: pageId, properties: { title: toTitleProperty(title) } },\n }),\n [mutateNow],\n );\n\n /** Duplicate with its content; returns the copy (web Duplicate, Undo = delete the copy). */\n const duplicatePage = useCallback(\n async (pageId: string) => {\n const data = await mutateNow(NATIVE_NOTION_DUPLICATE_BLOCK, { blockId: pageId, includeChildren: true });\n return (data?.duplicateBlock as NotionBlock | undefined) ?? null;\n },\n [mutateNow],\n );\n\n /** Move under another page, or to the workspace top level (`toPageId` null). */\n const movePage = useCallback(\n (pageId: string, toPageId: string | null) => {\n if (!workspace?.id) return Promise.resolve(null);\n const newParent = toPageId ? { type: 'block', id: toPageId } : { type: 'workspace', id: workspace.id };\n return mutateNow(NATIVE_NOTION_MOVE_BLOCK, { input: { blockId: pageId, newParent } });\n },\n [mutateNow, workspace?.id],\n );\n\n const trashPage = useCallback(\n (pageId: string) => mutateNow(NATIVE_NOTION_DELETE_BLOCK, { blockId: pageId }),\n [mutateNow],\n );\n\n const restorePage = useCallback(\n (pageId: string) => mutateNow(NATIVE_NOTION_RESTORE_BLOCK, { blockId: pageId }),\n [mutateNow],\n );\n\n /** Web \"New subpage\": an untitled page inside `parentId`. */\n const createSubPage = useCallback(\n async (parentId: string) => {\n const res = await client.mutate<CreatedBlock>({\n mutation: NATIVE_NOTION_CREATE_BLOCK,\n variables: {\n input: { type: 'page', parent: { type: 'block', id: parentId }, properties: { title: [] } },\n },\n errorPolicy: 'none',\n });\n client.refetchQueries({ include: ['NativeNotionChildren'] }).catch(() => undefined);\n return res.data?.createBlock ?? null;\n },\n [client],\n );\n\n /** Web workspace menu \"Move workspace to trash\"; picks another workspace after. */\n const deleteWorkspace = useCallback(\n async (workspaceId: string) => {\n await client.mutate({\n mutation: NATIVE_NOTION_DELETE_WORKSPACE,\n variables: { workspaceId },\n errorPolicy: 'none',\n });\n const res = await workspacesQuery.refetch();\n const next = (res.data?.listWorkspaces ?? []).find((w) => w.id !== workspaceId);\n if (next) selectWorkspace(next.id);\n },\n [client, selectWorkspace, workspacesQuery],\n );\n\n // ---- Teamspaces (web sidebar \"Add teamspace\"): catalog on the hidden settings page ----\n const saveTeamspaces = useCallback(\n async (next: TeamspaceDef[]) => {\n if (!workspace?.id) return;\n if (settingsPageId) {\n await client.mutate({\n mutation: NATIVE_NOTION_UPDATE_BLOCK,\n variables: { input: { id: settingsPageId, properties: { [TEAMSPACES_KEY]: next } } },\n errorPolicy: 'none',\n });\n } else {\n await client.mutate({\n mutation: NATIVE_NOTION_CREATE_BLOCK,\n variables: {\n input: {\n type: 'page',\n parent: { type: 'workspace', id: workspace.id },\n properties: newSettingsPageProperties(next),\n },\n },\n errorPolicy: 'none',\n });\n }\n await rootQuery.refetch();\n },\n [client, rootQuery, settingsPageId, workspace?.id],\n );\n\n const addTeamspace = useCallback(\n (name: string, color?: string) =>\n saveTeamspaces(addTeamspaceEntry(teamspaces, { name, ...(color ? { color } : {}) })),\n [saveTeamspaces, teamspaces],\n );\n\n /** Put top-level pages in a teamspace (null = My pages) - web \"Move to teamspace…\" (setPageTeamspace). */\n const moveToSection = useCallback(\n async (pageIds: string[], teamspace: string | null) => {\n await Promise.all(\n pageIds.map((id) =>\n client.mutate({\n mutation: NATIVE_NOTION_UPDATE_BLOCK,\n variables: { input: { id, properties: sectionPatch(teamspace) } },\n errorPolicy: 'none',\n }),\n ),\n );\n await rootQuery.refetch();\n },\n [client, rootQuery],\n );\n\n /** Remove a teamspace from the catalog; its pages go back to My pages. */\n const removeTeamspace = useCallback(\n async (id: string) => {\n const group = teamspaceGroups.find((g) => g.teamspace.id === id);\n if (group?.pages.length)\n await moveToSection(\n group.pages.map((p) => p.id),\n null,\n );\n await saveTeamspaces(removeTeamspaceEntry(teamspaces, id));\n },\n [moveToSection, saveTeamspaces, teamspaceGroups, teamspaces],\n );\n\n /** Web \"Add a page to <teamspace>\" (null = My pages). */\n const createSectionPage = useCallback(\n (teamspace: string | null) => createRoot({ type: 'page', properties: newSectionPageProperties(teamspace) }),\n [createRoot],\n );\n\n /** Web \"New agent\" from a template: an agent page plus its instruction blocks (nested, one call). */\n const createAgent = useCallback(\n (template: AgentTemplateId, teamspace: string | null = null) => {\n const pageId = newBlockId();\n const blocks = templateInstructionBlocks(agentTemplate(template));\n return createRoot({\n id: pageId,\n type: 'page',\n properties: templateAgentProperties(template, { teamspace }),\n ...(blocks.length\n ? {\n children: blocks.map((b) => ({\n id: newBlockId(),\n ...b,\n parent: { type: 'block', id: pageId },\n })),\n }\n : {}),\n });\n },\n [createRoot],\n );\n\n const refresh = useCallback(async () => {\n await Promise.all([\n workspacesQuery.refetch(),\n workspace?.id ? rootQuery.refetch() : null,\n workspace?.id ? favoritesQuery.refetch() : null,\n ]);\n }, [favoritesQuery, rootQuery, workspace?.id, workspacesQuery]);\n\n return {\n workspaces,\n workspace,\n selectWorkspace,\n pages,\n myPages,\n meetings,\n agents,\n teamspaces,\n teamspaceGroups,\n addTeamspace,\n removeTeamspace,\n moveToSection,\n createSectionPage,\n createAgent,\n templateLibraryId,\n loading: (workspacesQuery.loading && !workspacesQuery.data) || (rootQuery.loading && !rootQuery.data),\n error: workspacesQuery.error ?? rootQuery.error ?? null,\n createWorkspace,\n createPage,\n createMeeting,\n createFromTemplate,\n favoriteIds,\n toggleFavoritePage,\n renamePage,\n duplicatePage,\n movePage,\n trashPage,\n restorePage,\n createSubPage,\n deleteWorkspace,\n refetchWorkspaces: workspacesQuery.refetch,\n refresh,\n };\n}\n\nexport type NotionWorkspaceState = ReturnType<typeof useNotionWorkspace>;\n"],"names":["_a","_b","_c","_d","addTeamspace","addTeamspaceEntry","removeTeamspace","removeTeamspaceEntry"],"mappings":"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"}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import {jsxs,Fragment,jsx}from'react/jsx-runtime';import {useState,useCallback}from'react';import {Alert,Clipboard}from'react-native';import {pageTitle}from'./notionBlocks.js';import {serverErrorText,pageLinkUrl}from'./notionPageActions.js';import {useNotionToast,PageActionsSheet,TextPromptDialog,MoveToSheet,NotionToast}from'./NotionPageMenu.js';import {config}from'../../config/env-config.js';import {resolveMobileWebUrl,getPackagerHost}from'../../bridge/resolveMobileWebUrl.js';var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
3
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
4
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
5
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
6
|
+
var __spreadValues = (a, b) => {
|
|
7
|
+
for (var prop in b || (b = {}))
|
|
8
|
+
if (__hasOwnProp.call(b, prop))
|
|
9
|
+
__defNormalProp(a, prop, b[prop]);
|
|
10
|
+
if (__getOwnPropSymbols)
|
|
11
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
12
|
+
if (__propIsEnum.call(b, prop))
|
|
13
|
+
__defNormalProp(a, prop, b[prop]);
|
|
14
|
+
}
|
|
15
|
+
return a;
|
|
16
|
+
};
|
|
17
|
+
function webOrigin() {
|
|
18
|
+
return resolveMobileWebUrl(config.CLIENT_URL, getPackagerHost());
|
|
19
|
+
}
|
|
20
|
+
function usePageActions({
|
|
21
|
+
notion,
|
|
22
|
+
palette,
|
|
23
|
+
onOpenPage,
|
|
24
|
+
onTrashed,
|
|
25
|
+
extrasFor,
|
|
26
|
+
onRenamed
|
|
27
|
+
}) {
|
|
28
|
+
var _a, _b, _c, _d, _e, _f;
|
|
29
|
+
const {
|
|
30
|
+
toast,
|
|
31
|
+
show,
|
|
32
|
+
hide
|
|
33
|
+
} = useNotionToast();
|
|
34
|
+
const [target, setTarget] = useState(null);
|
|
35
|
+
const [extras, setExtras] = useState({});
|
|
36
|
+
const [menuOpen, setMenuOpen] = useState(false);
|
|
37
|
+
const [renaming, setRenaming] = useState(null);
|
|
38
|
+
const [moving, setMoving] = useState(null);
|
|
39
|
+
const fail = useCallback((what, err) => show({
|
|
40
|
+
message: `${what}. ${serverErrorText(err)}`
|
|
41
|
+
}), [show]);
|
|
42
|
+
const open = useCallback((page, more = {}) => {
|
|
43
|
+
setTarget(page);
|
|
44
|
+
setExtras(more);
|
|
45
|
+
setMenuOpen(true);
|
|
46
|
+
}, []);
|
|
47
|
+
const actionsFor = (page) => {
|
|
48
|
+
var _a2;
|
|
49
|
+
const favorite = notion.favoriteIds.includes(page.id);
|
|
50
|
+
return [[{
|
|
51
|
+
key: "favorite",
|
|
52
|
+
label: favorite ? "Remove from Favorites" : "Add to Favorites",
|
|
53
|
+
icon: favorite ? "star" : "star-outline",
|
|
54
|
+
onPress: () => notion.toggleFavoritePage(page.id).then(() => show({
|
|
55
|
+
message: favorite ? "Removed from Favorites" : "Added to Favorites"
|
|
56
|
+
})).catch((e) => fail("Couldn't update Favorites", e))
|
|
57
|
+
}, {
|
|
58
|
+
key: "subpage",
|
|
59
|
+
label: "New subpage",
|
|
60
|
+
icon: "add-circle-outline",
|
|
61
|
+
onPress: () => notion.createSubPage(page.id).then((created) => (created == null ? void 0 : created.id) && onOpenPage(created.id)).catch((e) => fail("Couldn't create the subpage", e))
|
|
62
|
+
}, {
|
|
63
|
+
key: "rename",
|
|
64
|
+
label: "Rename",
|
|
65
|
+
icon: "create-outline",
|
|
66
|
+
onPress: () => setRenaming(page)
|
|
67
|
+
}, {
|
|
68
|
+
key: "duplicate",
|
|
69
|
+
label: "Duplicate",
|
|
70
|
+
icon: "copy-outline",
|
|
71
|
+
onPress: () => notion.duplicatePage(page.id).then((copy) => show(__spreadValues({
|
|
72
|
+
message: `Duplicated \u201C${pageTitle(page)}\u201D`
|
|
73
|
+
}, (copy == null ? void 0 : copy.id) ? {
|
|
74
|
+
actionLabel: "Undo",
|
|
75
|
+
onAction: () => {
|
|
76
|
+
notion.trashPage(copy.id).catch((e) => fail("Couldn't undo", e));
|
|
77
|
+
}
|
|
78
|
+
} : {}))).catch((e) => fail("Couldn't duplicate", e))
|
|
79
|
+
}, {
|
|
80
|
+
key: "move",
|
|
81
|
+
label: "Move to\u2026",
|
|
82
|
+
icon: "return-up-forward-outline",
|
|
83
|
+
onPress: () => setMoving(page)
|
|
84
|
+
}, ...notion.teamspaces.length && notion.pages.some((p) => p.id === page.id) ? [{
|
|
85
|
+
key: "teamspace",
|
|
86
|
+
label: "Move to teamspace\u2026",
|
|
87
|
+
icon: "people-outline",
|
|
88
|
+
onPress: () => Alert.alert("Move to teamspace", pageTitle(page), [...notion.teamspaces.map((t) => ({
|
|
89
|
+
text: t.name,
|
|
90
|
+
onPress: () => {
|
|
91
|
+
notion.moveToSection([page.id], t.name).then(() => show({
|
|
92
|
+
message: `Moved to ${t.name}`
|
|
93
|
+
})).catch((e) => fail("Couldn't move the page", e));
|
|
94
|
+
}
|
|
95
|
+
})), {
|
|
96
|
+
text: "My pages",
|
|
97
|
+
onPress: () => {
|
|
98
|
+
notion.moveToSection([page.id], null).then(() => show({
|
|
99
|
+
message: "Moved to My pages"
|
|
100
|
+
})).catch((e) => fail("Couldn't move the page", e));
|
|
101
|
+
}
|
|
102
|
+
}, {
|
|
103
|
+
text: "Cancel",
|
|
104
|
+
style: "cancel"
|
|
105
|
+
}])
|
|
106
|
+
}] : [], {
|
|
107
|
+
key: "link",
|
|
108
|
+
label: "Copy link",
|
|
109
|
+
icon: "link-outline",
|
|
110
|
+
onPress: () => {
|
|
111
|
+
Clipboard.setString(pageLinkUrl(webOrigin(), page.id));
|
|
112
|
+
show({
|
|
113
|
+
message: "Link copied"
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
}], ...(_a2 = live.groups) != null ? _a2 : [], [{
|
|
117
|
+
key: "trash",
|
|
118
|
+
label: "Move to trash",
|
|
119
|
+
icon: "trash-outline",
|
|
120
|
+
destructive: true,
|
|
121
|
+
onPress: () => notion.trashPage(page.id).then(() => {
|
|
122
|
+
onTrashed == null ? void 0 : onTrashed(page.id);
|
|
123
|
+
show({
|
|
124
|
+
message: `Moved \u201C${pageTitle(page)}\u201D to Trash`,
|
|
125
|
+
actionLabel: "Undo",
|
|
126
|
+
onAction: () => {
|
|
127
|
+
notion.restorePage(page.id).catch((e) => fail("Couldn't restore", e));
|
|
128
|
+
}
|
|
129
|
+
});
|
|
130
|
+
}).catch((e) => fail("Couldn't move to Trash", e))
|
|
131
|
+
}]];
|
|
132
|
+
};
|
|
133
|
+
const live = target ? (_a = extrasFor == null ? void 0 : extrasFor(target)) != null ? _a : extras : extras;
|
|
134
|
+
const element = /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
135
|
+
target ? /* @__PURE__ */ jsx(PageActionsSheet, { visible: menuOpen, palette, title: pageTitle(target), subtitle: live.subtitle, groups: actionsFor(target), pageSettings: live.pageSettings, onClose: () => setMenuOpen(false) }) : null,
|
|
136
|
+
/* @__PURE__ */ jsx(TextPromptDialog, { visible: Boolean(renaming), palette, title: "Rename page", initial: renaming ? pageTitle(renaming).replace(/^Untitled$/, "") : "", placeholder: "Untitled", confirmLabel: "Rename", allowEmpty: true, onClose: () => setRenaming(null), onConfirm: async (title) => {
|
|
137
|
+
if (!renaming) return;
|
|
138
|
+
await notion.renamePage(renaming.id, title.trim());
|
|
139
|
+
onRenamed == null ? void 0 : onRenamed(renaming.id, title.trim());
|
|
140
|
+
} }),
|
|
141
|
+
/* @__PURE__ */ jsx(MoveToSheet, { visible: Boolean(moving), palette, pageId: (_b = moving == null ? void 0 : moving.id) != null ? _b : null, pages: notion.pages, workspaceName: (_d = (_c = notion.workspace) == null ? void 0 : _c.name) != null ? _d : "Workspace", workspaceId: (_f = (_e = notion.workspace) == null ? void 0 : _e.id) != null ? _f : null, onClose: () => setMoving(null), onMove: async (to) => {
|
|
142
|
+
if (!moving) return;
|
|
143
|
+
await notion.movePage(moving.id, to);
|
|
144
|
+
show({
|
|
145
|
+
message: `Moved \u201C${pageTitle(moving)}\u201D`
|
|
146
|
+
});
|
|
147
|
+
} }),
|
|
148
|
+
/* @__PURE__ */ jsx(NotionToast, { toast, palette, onHide: hide })
|
|
149
|
+
] });
|
|
150
|
+
return {
|
|
151
|
+
open,
|
|
152
|
+
element,
|
|
153
|
+
showToast: show
|
|
154
|
+
};
|
|
155
|
+
}export{usePageActions,webOrigin};//# sourceMappingURL=usePageActions.js.map
|