{"version":3,"file":"useGetDocPermissions.js","names":["formatAdminURL","qs","React","hasSavePermission","getHasSavePermission","isEditing","getIsEditing","useGetDocPermissions","id","api","collectionSlug","globalSlug","i18n","locale","permissions","setDocPermissions","setHasPublishPermission","setHasSavePermission","useCallback","data","params","undefined","idToUse","newIsEditing","docAccessPath","res","fetch","apiRoute","path","stringify","addQueryPrefix","body","JSON","doc","_status","credentials","headers","language","method","json","publishedAccessJSON","then","docPermissions","update","newDocPermissions","collections","globals"],"sources":["../../../src/providers/DocumentInfo/useGetDocPermissions.tsx"],"sourcesContent":["import type { Data, SanitizedDocumentPermissions, SanitizedPermissions } from 'payload'\n\nimport { formatAdminURL } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React from 'react'\n\nimport { hasSavePermission as getHasSavePermission } from '../../utilities/hasSavePermission.js'\nimport { isEditing as getIsEditing } from '../../utilities/isEditing.js'\n\nexport type GetDocPermissions = (data?: Data) => Promise\n\nexport const useGetDocPermissions = ({\n id,\n api,\n collectionSlug,\n globalSlug,\n i18n,\n locale,\n permissions,\n setDocPermissions,\n setHasPublishPermission,\n setHasSavePermission,\n}: {\n api: string\n collectionSlug: string\n globalSlug: string\n i18n: any\n id: string\n locale: string\n permissions: SanitizedPermissions\n setDocPermissions: React.Dispatch>\n setHasPublishPermission: React.Dispatch>\n setHasSavePermission: React.Dispatch>\n}): GetDocPermissions =>\n React.useCallback(\n async (data: Data) => {\n const params = {\n locale: locale || undefined,\n }\n\n const idToUse = data?.id || id\n const newIsEditing = getIsEditing({ id: idToUse, collectionSlug, globalSlug })\n\n if (newIsEditing) {\n const docAccessPath: `/${string}` = collectionSlug\n ? `/${collectionSlug}/access/${idToUse}`\n : globalSlug\n ? `/globals/${globalSlug}/access`\n : null\n\n if (docAccessPath) {\n const res = await fetch(\n formatAdminURL({\n apiRoute: api,\n path: `${docAccessPath}${qs.stringify(params, { addQueryPrefix: true })}`,\n }),\n {\n body: JSON.stringify({\n ...(data?.doc || data || {}),\n _status: 'draft',\n }),\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n method: 'post',\n },\n )\n\n const json: SanitizedDocumentPermissions = await res.json()\n\n const publishedAccessJSON = await fetch(\n formatAdminURL({\n apiRoute: api,\n path: `${docAccessPath}${qs.stringify(params, { addQueryPrefix: true })}`,\n }),\n {\n body: JSON.stringify({\n ...(data?.doc || data || {}),\n _status: 'published',\n }),\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n method: 'POST',\n },\n ).then((res) => res.json())\n\n setDocPermissions(json)\n\n setHasSavePermission(\n getHasSavePermission({\n collectionSlug,\n docPermissions: json,\n globalSlug,\n isEditing: newIsEditing,\n }),\n )\n\n setHasPublishPermission(publishedAccessJSON?.update)\n }\n } else {\n // when creating new documents, there is no permissions saved for this document yet\n // use the generic entity permissions instead\n const newDocPermissions = collectionSlug\n ? permissions?.collections?.[collectionSlug]\n : permissions?.globals?.[globalSlug]\n\n setDocPermissions(newDocPermissions)\n\n setHasSavePermission(\n getHasSavePermission({\n collectionSlug,\n docPermissions: newDocPermissions,\n globalSlug,\n isEditing: newIsEditing,\n }),\n )\n }\n },\n [\n locale,\n id,\n collectionSlug,\n globalSlug,\n api,\n i18n.language,\n setDocPermissions,\n setHasSavePermission,\n setHasPublishPermission,\n permissions?.collections,\n permissions?.globals,\n ],\n )\n"],"mappings":"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","ignoreList":[]}