(session: ClientSession)
| 187 | } |
| 188 | |
| 189 | const create = async (session: ClientSession) => { |
| 190 | const resourceRefs = extractAppResourceRefsFromNodes(modules); |
| 191 | const _avatar = await (async () => { |
| 192 | if (!templateId || isPluginSystemTemplate(templateId)) return avatar; |
| 193 | |
| 194 | const template = await MongoAppTemplate.findOne({ templateId }, 'avatar').lean(); |
| 195 | if (!template?.avatar) return avatar; |
| 196 | |
| 197 | const s3AvatarSource = getS3AvatarSource(); |
| 198 | if (!isS3ObjectKey(template.avatar?.slice(s3AvatarSource.prefix.length), 'avatar')) { |
| 199 | return template.avatar; |
| 200 | } |
| 201 | |
| 202 | return await copyAvatarImage({ |
| 203 | teamId, |
| 204 | imageUrl: template.avatar, |
| 205 | temporary: true, |
| 206 | session |
| 207 | }); |
| 208 | })(); |
| 209 | |
| 210 | const [app] = await MongoApp.create( |
| 211 | [ |
| 212 | { |
| 213 | ...parseParentIdInMongo(parentId), |
| 214 | avatar: _avatar, |
| 215 | name, |
| 216 | intro, |
| 217 | teamId, |
| 218 | tmbId, |
| 219 | modules, |
| 220 | edges, |
| 221 | chatConfig, |
| 222 | type, |
| 223 | version: 'v2', |
| 224 | pluginData, |
| 225 | templateId, |
| 226 | ...(!AppFolderTypeList.includes(type!) && { resourceRefs }) |
| 227 | } |
| 228 | ], |
| 229 | { session, ordered: true } |
| 230 | ); |
| 231 | |
| 232 | const appId = String(app._id); |
| 233 | |
| 234 | if (!AppFolderTypeList.includes(type!)) { |
| 235 | await MongoAppVersion.create( |
| 236 | [ |
| 237 | { |
| 238 | tmbId, |
| 239 | appId, |
| 240 | nodes: modules, |
| 241 | edges, |
| 242 | chatConfig, |
| 243 | versionName: name, |
| 244 | username, |
| 245 | avatar: userAvatar, |
| 246 | isPublish: true, |
no test coverage detected