Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
97 changes: 66 additions & 31 deletions src/cloud/lib/hooks/useCloudResourceModals.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,25 @@ export function useCloudResourceModals() {

const openRenameFolderForm = useCallback(
(folder: SerializedFolder) => {
let renameSubmitted = false
const updateFolderName = async (inputValue: string, emoji?: string) => {
if (renameSubmitted) {
return
}
try {
renameSubmitted = true
await updateFolder(folder, {
workspaceId: folder.workspaceId,
parentFolderId: folder.parentFolderId,
folderName: inputValue,
emoji: typeof emoji === 'string' ? emoji : null,
})
} catch (error) {
renameSubmitted = false
throw error
}
}

openModal(
<EmojiInputForm
defaultIcon={mdiFolderOutline}
Expand All @@ -82,17 +101,13 @@ export function useCloudResourceModals() {
label: translate(lngKeys.GeneralUpdateVerb),
}}
onSubmit={async (inputValue: string, emoji?: string) => {
await updateFolder(folder, {
workspaceId: folder.workspaceId,
parentFolderId: folder.parentFolderId,
folderName: inputValue,
emoji: typeof emoji === 'string' ? emoji : null,
})
await updateFolderName(inputValue, emoji)
closeLastModal()
}}
/>,
{
showCloseIcon: true,
showCloseIcon: false,
width: 'small',
title: translate(lngKeys.RenameFolder),
}
)
Expand All @@ -102,37 +117,47 @@ export function useCloudResourceModals() {

const openRenameDocForm = useCallback(
(doc: SerializedDoc) => {
let renameSubmitted = false
const updateDocTitle = async (inputValue: string, emoji?: string) => {
if (renameSubmitted) {
return
}
try {
renameSubmitted = true
await updateDoc(doc, {
workspaceId: doc.workspaceId,
parentFolderId: doc.parentFolderId,
title: inputValue,
emoji: emoji == null ? null : emoji,
})
} catch (error) {
renameSubmitted = false
throw error
}
}

openModal(
<EmojiInputForm
defaultIcon={mdiFileDocumentOutline}
defaultInputValue={doc.title}
defaultEmoji={doc.emoji}
placeholder={translate(lngKeys.DocTitlePlaceholder)}
submitButtonProps={{
label: translate(lngKeys.GeneralUpdateVerb),
}}
onSubmit={async (inputValue: string, emoji?: string) => {
await updateDoc(doc, {
workspaceId: doc.workspaceId,
parentFolderId: doc.parentFolderId,
title: inputValue,
emoji: emoji == null ? null : emoji,
})
await updateDocTitle(inputValue, emoji)
closeLastModal()
}}
onBlur={async (inputValue: string, emoji?: string) => {
await updateDoc(doc, {
workspaceId: doc.workspaceId,
parentFolderId: doc.parentFolderId,
title: inputValue,
emoji: emoji == null ? null : emoji,
})
}}
/>,
{
showCloseIcon: false,
width: 'small',
title: translate(lngKeys.RenameDoc),
}
)
},
[closeLastModal, openModal, translate, updateDoc]
[closeLastModal, openModal, updateDoc, translate]
)

const openNewFolderForm = useCallback(
Expand Down Expand Up @@ -237,29 +262,39 @@ export function useCloudResourceModals() {

const openRenameDashboardForm = useCallback(
(dashboard: SerializedDashboard) => {
let renameSubmitted = false
const updateDashboardName = async (inputValue: string) => {
if (renameSubmitted) {
return
}
try {
renameSubmitted = true
await updateDashboard(dashboard, {
name: inputValue,
})
} catch (error) {
renameSubmitted = false
throw error
}
}

openModal(
<InputForm
defaultInputValue={dashboard.name}
placeholder={translate(lngKeys.DocTitlePlaceholder)}
onSubmit={async (inputValue: string) => {
await updateDashboard(dashboard, {
name: inputValue,
})
await updateDashboardName(inputValue)
closeLastModal()
}}
onBlur={async (inputValue: string) => {
await updateDashboard(dashboard, {
name: inputValue,
})
}}
onBlur={updateDashboardName}
/>,
{
showCloseIcon: false,
width: 'small',
}
)
},
[closeLastModal, openModal, translate, updateDashboard]
[closeLastModal, openModal, updateDashboard, translate]
)

const deleteWorkspace = useCallback(
Expand Down