UNPKG

@lucidcms/core

Version:

The core of the Lucid CMS. It's responsible for spinning up the API and serving the CMS.

1 lines 7.5 kB
{"version":3,"file":"update-profile-picture.mjs","names":["mediaServices.updateSingle","mediaServices.createSingle"],"sources":["../../../src/services/account/update-profile-picture.ts"],"sourcesContent":["import { copy } from \"../../libs/i18n/index.js\";\nimport { UsersRepository } from \"../../libs/repositories/index.js\";\nimport type { MediaCropInput, MediaOrigin } from \"../../types/response.js\";\nimport type { ServiceFn } from \"../../utils/services/types.js\";\nimport { mediaServices } from \"../index.js\";\n\nconst updateProfilePicture: ServiceFn<\n\t[\n\t\t{\n\t\t\ttargetUserId: number;\n\t\t\tactorUserId: number;\n\t\t\tallowSelf?: boolean;\n\t\t\tkey?: string;\n\t\t\tfileName?: string;\n\t\t\twidth?: number;\n\t\t\theight?: number;\n\t\t\tfocalPoint?: {\n\t\t\t\tx: number;\n\t\t\t\ty: number;\n\t\t\t} | null;\n\t\t\tblurHash?: string;\n\t\t\taverageColor?: string;\n\t\t\tbase64?: string | null;\n\t\t\tisDark?: boolean;\n\t\t\tisLight?: boolean;\n\t\t\torigin?: MediaOrigin;\n\t\t\taiGenerationRequestId?: string;\n\t\t\ttitle?: {\n\t\t\t\tlocaleCode: string;\n\t\t\t\tvalue: string | null;\n\t\t\t}[];\n\t\t\talt?: {\n\t\t\t\tlocaleCode: string;\n\t\t\t\tvalue: string | null;\n\t\t\t}[];\n\t\t\tcrop?: MediaCropInput | null;\n\t\t},\n\t],\n\tundefined\n> = async (context, data) => {\n\tconst Users = new UsersRepository(context.db.client, context.config.db);\n\n\tif (data.allowSelf !== true && data.actorUserId === data.targetUserId) {\n\t\treturn {\n\t\t\terror: {\n\t\t\t\ttype: \"basic\",\n\t\t\t\tmessage: copy(\"server:core.users.self.update.denied\"),\n\t\t\t\tstatus: 400,\n\t\t\t},\n\t\t\tdata: undefined,\n\t\t};\n\t}\n\n\tconst userRes = await Users.selectSingle({\n\t\tselect: [\"profile_picture_media_id\"],\n\t\twhere: [\n\t\t\t{\n\t\t\t\tkey: \"id\",\n\t\t\t\toperator: \"=\",\n\t\t\t\tvalue: data.targetUserId,\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: \"is_deleted\",\n\t\t\t\toperator: \"=\",\n\t\t\t\tvalue: context.config.db.getDefault(\"boolean\", \"false\"),\n\t\t\t},\n\t\t],\n\t\tvalidation: {\n\t\t\tenabled: true,\n\t\t\tdefaultError: {\n\t\t\t\tmessage:\n\t\t\t\t\tdata.allowSelf === true\n\t\t\t\t\t\t? copy(\"server:core.account.not.found.message\")\n\t\t\t\t\t\t: copy(\"server:core.user.not.found.message\"),\n\t\t\t\tstatus: 404,\n\t\t\t},\n\t\t},\n\t});\n\tif (userRes.error) return userRes;\n\n\tconst existingProfilePictureId = userRes.data.profile_picture_media_id;\n\tif (existingProfilePictureId !== null) {\n\t\tconst updateMediaRes = await mediaServices.updateSingle(context, {\n\t\t\tid: existingProfilePictureId,\n\t\t\tkey: data.key,\n\t\t\tfileName: data.fileName,\n\t\t\tpublic: true,\n\t\t\tfolderId: null,\n\t\t\ttitle: data.title,\n\t\t\talt: data.alt,\n\t\t\twidth: data.width,\n\t\t\theight: data.height,\n\t\t\tfocalPoint: data.focalPoint,\n\t\t\tblurHash: data.blurHash,\n\t\t\taverageColor: data.averageColor,\n\t\t\tbase64: data.base64,\n\t\t\tisDark: data.isDark,\n\t\t\tisLight: data.isLight,\n\t\t\torigin: data.origin ?? (data.key !== undefined ? \"human\" : undefined),\n\t\t\taiGenerationRequestId: data.aiGenerationRequestId,\n\t\t\tcrop: data.crop,\n\t\t\tallowedType: \"image\",\n\t\t\tuserId: data.actorUserId,\n\t\t});\n\t\tif (updateMediaRes.error) return updateMediaRes;\n\n\t\tconst updateUserRes = await Users.updateSingle({\n\t\t\tdata: {\n\t\t\t\tupdated_at: new Date().toISOString(),\n\t\t\t},\n\t\t\twhere: [\n\t\t\t\t{\n\t\t\t\t\tkey: \"id\",\n\t\t\t\t\toperator: \"=\",\n\t\t\t\t\tvalue: data.targetUserId,\n\t\t\t\t},\n\t\t\t],\n\t\t\treturning: [\"id\"],\n\t\t\tvalidation: {\n\t\t\t\tenabled: true,\n\t\t\t},\n\t\t});\n\t\tif (updateUserRes.error) return updateUserRes;\n\n\t\treturn {\n\t\t\terror: undefined,\n\t\t\tdata: undefined,\n\t\t};\n\t}\n\n\tif (data.key === undefined || data.fileName === undefined) {\n\t\treturn {\n\t\t\terror: {\n\t\t\t\ttype: \"basic\",\n\t\t\t\tstatus: 400,\n\t\t\t\terrors: {\n\t\t\t\t\tprofilePicture: {\n\t\t\t\t\t\tcode: \"media_error\",\n\t\t\t\t\t\tmessage: copy(\"server:core.profile.picture.required\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tdata: undefined,\n\t\t};\n\t}\n\n\tconst createMediaRes = await mediaServices.createSingle(context, {\n\t\tkey: data.key,\n\t\tfileName: data.fileName,\n\t\twidth: data.width,\n\t\theight: data.height,\n\t\tfocalPoint: data.focalPoint ?? undefined,\n\t\tblurHash: data.blurHash,\n\t\taverageColor: data.averageColor,\n\t\tbase64: data.base64,\n\t\tisDark: data.isDark,\n\t\tisLight: data.isLight,\n\t\torigin: data.origin ?? \"human\",\n\t\taiGenerationRequestId: data.aiGenerationRequestId,\n\t\ttitle: data.title || [],\n\t\talt: data.alt || [],\n\t\tfolderId: null,\n\t\tisHidden: true,\n\t\tcrop: data.crop ?? undefined,\n\t\tallowedType: \"image\",\n\t\tuserId: data.actorUserId,\n\t});\n\tif (createMediaRes.error) return createMediaRes;\n\n\tconst updateUserRes = await Users.updateSingle({\n\t\tdata: {\n\t\t\tprofile_picture_media_id: createMediaRes.data.id,\n\t\t\tupdated_at: new Date().toISOString(),\n\t\t},\n\t\twhere: [\n\t\t\t{\n\t\t\t\tkey: \"id\",\n\t\t\t\toperator: \"=\",\n\t\t\t\tvalue: data.targetUserId,\n\t\t\t},\n\t\t],\n\t\treturning: [\"id\"],\n\t\tvalidation: {\n\t\t\tenabled: true,\n\t\t},\n\t});\n\tif (updateUserRes.error) return updateUserRes;\n\n\treturn {\n\t\terror: undefined,\n\t\tdata: undefined,\n\t};\n};\n\nexport default updateProfilePicture;\n"],"mappings":"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"}