|
1 | 1 | import { Request, Response } from "express"; |
2 | 2 | import { Web3Adapter } from "web3-adapter"; |
3 | 3 | import { UserSearchService } from "../services/UserSearchService"; |
| 4 | +import { downloadUrlAndUploadToFileManager } from "../utils/file-proxy"; |
4 | 5 |
|
5 | 6 | export class WebhookController { |
6 | 7 | private userSearchService: UserSearchService; |
@@ -74,8 +75,20 @@ export class WebhookController { |
74 | 75 | isArchived: localData.isArchived ?? false, |
75 | 76 | }; |
76 | 77 |
|
77 | | - if (localData.avatarFileId) userData.avatarFileId = localData.avatarFileId; |
78 | | - if (localData.bannerFileId) userData.bannerFileId = localData.bannerFileId; |
| 78 | + if (localData.avatar) userData.avatar = localData.avatar; |
| 79 | + if (localData.banner) userData.banner = localData.banner; |
| 80 | + |
| 81 | + // If the source platform sent a URL (Blabsy/Pictique) instead of a |
| 82 | + // file-manager ID, download the image and upload it to file-manager. |
| 83 | + if (!userData.avatar && rawBody.data?.avatarUrl) { |
| 84 | + const fileId = await downloadUrlAndUploadToFileManager(rawBody.data.avatarUrl, ename); |
| 85 | + if (fileId) userData.avatar = fileId; |
| 86 | + } |
| 87 | + if (!userData.banner && rawBody.data?.bannerUrl) { |
| 88 | + const fileId = await downloadUrlAndUploadToFileManager(rawBody.data.bannerUrl, ename); |
| 89 | + if (fileId) userData.banner = fileId; |
| 90 | + } |
| 91 | + |
79 | 92 | if (localData.location) userData.location = localData.location; |
80 | 93 |
|
81 | 94 | const user = await this.userSearchService.upsertFromWebhook(userData); |
@@ -104,10 +117,22 @@ export class WebhookController { |
104 | 117 | } |
105 | 118 | if (localData.headline) profileData.headline = localData.headline; |
106 | 119 | if (localData.bio) profileData.bio = localData.bio; |
107 | | - if (localData.avatarFileId) |
108 | | - profileData.avatarFileId = localData.avatarFileId; |
109 | | - if (localData.bannerFileId) |
110 | | - profileData.bannerFileId = localData.bannerFileId; |
| 120 | + if (localData.avatar) |
| 121 | + profileData.avatar = localData.avatar; |
| 122 | + if (localData.banner) |
| 123 | + profileData.banner = localData.banner; |
| 124 | + |
| 125 | + // If the source platform sent a URL instead of a file-manager ID, |
| 126 | + // download the image and upload it to file-manager. |
| 127 | + if (!profileData.avatar && rawBody.data?.avatarUrl) { |
| 128 | + const fileId = await downloadUrlAndUploadToFileManager(rawBody.data.avatarUrl, ename); |
| 129 | + if (fileId) profileData.avatar = fileId; |
| 130 | + } |
| 131 | + if (!profileData.banner && rawBody.data?.bannerUrl) { |
| 132 | + const fileId = await downloadUrlAndUploadToFileManager(rawBody.data.bannerUrl, ename); |
| 133 | + if (fileId) profileData.banner = fileId; |
| 134 | + } |
| 135 | + |
111 | 136 | if (localData.cvFileId) profileData.cvFileId = localData.cvFileId; |
112 | 137 | if (localData.videoIntroFileId) |
113 | 138 | profileData.videoIntroFileId = localData.videoIntroFileId; |
|
0 commit comments