{"version":3,"file":"get-share-access.mjs","names":["formatter","mediaShareLinksFormatter"],"sources":["../../../src/services/media-share-links/get-share-access.ts"],"sourcesContent":["import { isPast } from \"date-fns\";\nimport formatter, {\n\tmediaShareLinksFormatter,\n} from \"../../libs/formatters/index.js\";\nimport { copy } from \"../../libs/i18n/index.js\";\nimport { MediaShareLinksRepository } from \"../../libs/repositories/index.js\";\nimport type { ShareLinkAccess } from \"../../types/response.js\";\nimport { getBaseUrl } from \"../../utils/helpers/index.js\";\nimport { createShareStreamUrl } from \"../../utils/media/index.js\";\nimport type { ServiceFn } from \"../../utils/services/types.js\";\n\nconst getShareAccess: ServiceFn<\n\t[\n\t\t{\n\t\t\ttoken: string;\n\t\t\tsessionCookie?: string;\n\t\t},\n\t],\n\tShareLinkAccess\n> = async (context, data) => {\n\tconst MediaShareLinks = new MediaShareLinksRepository(\n\t\tcontext.db.client,\n\t\tcontext.config.db,\n\t);\n\n\tconst linkRes = await MediaShareLinks.selectSingleWithMediaByToken({\n\t\ttoken: data.token,\n\t});\n\tif (linkRes.error) {\n\t\treturn {\n\t\t\terror: {\n\t\t\t\ttype: \"basic\",\n\t\t\t\tname: copy(\"server:core.share.links.not.found.title\"),\n\t\t\t\tstatus: 404,\n\t\t\t\tmessage: copy(\"server:core.share.links.not.found.message\"),\n\t\t\t},\n\t\t\tdata: undefined,\n\t\t};\n\t}\n\n\tif (linkRes.data.expires_at && isPast(linkRes.data.expires_at)) {\n\t\treturn {\n\t\t\terror: {\n\t\t\t\ttype: \"basic\",\n\t\t\t\tname: copy(\"server:core.share.links.expired.title\"),\n\t\t\t\tstatus: 410,\n\t\t\t\tmessage: copy(\"server:core.share.links.expired.message\"),\n\t\t\t},\n\t\t\tdata: undefined,\n\t\t};\n\t}\n\n\tconst isDeleted = formatter.formatBoolean(linkRes.data.media_is_deleted);\n\tif (isDeleted) {\n\t\treturn {\n\t\t\terror: {\n\t\t\t\ttype: \"basic\",\n\t\t\t\tname: copy(\"server:core.share.links.media.deleted.title\"),\n\t\t\t\tstatus: 410,\n\t\t\t\tmessage: copy(\"server:core.share.links.media.deleted.message\"),\n\t\t\t},\n\t\t\tdata: undefined,\n\t\t};\n\t}\n\n\tconst hasPassword = Boolean(linkRes.data.password);\n\tconst passwordRequired = hasPassword && !data.sessionCookie;\n\n\tconst host = getBaseUrl(context);\n\tconst shareUrl = createShareStreamUrl({\n\t\ttoken: linkRes.data.token,\n\t\thost,\n\t});\n\tconst posterShareUrl =\n\t\tlinkRes.data.media_poster_key && linkRes.data.media_poster_type === \"image\"\n\t\t\t? createShareStreamUrl({\n\t\t\t\t\ttoken: linkRes.data.token,\n\t\t\t\t\thost,\n\t\t\t\t\tposter: true,\n\t\t\t\t})\n\t\t\t: undefined;\n\n\treturn {\n\t\terror: undefined,\n\t\tdata: mediaShareLinksFormatter.formatShareAccess({\n\t\t\tlink: linkRes.data,\n\t\t\tshareUrl,\n\t\t\tposterShareUrl,\n\t\t\tpasswordRequired,\n\t\t}),\n\t};\n};\n\nexport default getShareAccess;\n"],"mappings":"0WAWA,MAAM,EAQF,MAAO,EAAS,IAAS,CAM5B,IAAM,EAAU,MAAM,IALM,EAC3B,EAAQ,GAAG,OACX,EAAQ,OAAO,EAGoB,CAAC,CAAC,6BAA6B,CAClE,MAAO,EAAK,KACb,CAAC,EACD,GAAI,EAAQ,MACX,MAAO,CACN,MAAO,CACN,KAAM,QACN,KAAM,EAAK,yCAAyC,EACpD,OAAQ,IACR,QAAS,EAAK,2CAA2C,CAC1D,EACA,KAAM,IAAA,EACP,EAGD,GAAI,EAAQ,KAAK,YAAc,EAAO,EAAQ,KAAK,UAAU,EAC5D,MAAO,CACN,MAAO,CACN,KAAM,QACN,KAAM,EAAK,uCAAuC,EAClD,OAAQ,IACR,QAAS,EAAK,yCAAyC,CACxD,EACA,KAAM,IAAA,EACP,EAID,GADkBA,EAAU,cAAc,EAAQ,KAAK,gBAC3C,EACX,MAAO,CACN,MAAO,CACN,KAAM,QACN,KAAM,EAAK,6CAA6C,EACxD,OAAQ,IACR,QAAS,EAAK,+CAA+C,CAC9D,EACA,KAAM,IAAA,EACP,EAID,IAAM,EADc,EAAQ,EAAQ,KAAK,UACD,CAAC,EAAK,cAExC,EAAO,EAAW,CAAO,EACzB,EAAW,EAAqB,CACrC,MAAO,EAAQ,KAAK,MACpB,MACD,CAAC,EACK,EACL,EAAQ,KAAK,kBAAoB,EAAQ,KAAK,oBAAsB,QACjE,EAAqB,CACrB,MAAO,EAAQ,KAAK,MACpB,OACA,OAAQ,EACT,CAAC,EACA,IAAA,GAEJ,MAAO,CACN,MAAO,IAAA,GACP,KAAMC,EAAyB,kBAAkB,CAChD,KAAM,EAAQ,KACd,WACA,iBACA,kBACD,CAAC,CACF,CACD"}