|
1 |
| -import type { Media } from '@chronocat/red' |
| 1 | +import type { AssetRequest } from '@chronocat/red' |
2 | 2 | import { ChatType } from '@chronocat/red'
|
3 | 3 | import type { ChronocatContext } from '@chronocat/shell'
|
4 |
| -import { downloadRichMedia } from '../../../definitions/msgService' |
5 |
| -import { richMediaDownloadMap } from '../../../globalVars' |
| 4 | +import { |
| 5 | + downloadRichMedia, |
| 6 | + fetchMarketEmoticonAioImage, |
| 7 | +} from '../../../definitions/msgService' |
| 8 | +import { emojiDownloadMap, richMediaDownloadMap } from '../../../globalVars' |
6 | 9 |
|
7 | 10 | export const buildAssetsGet =
|
8 | 11 | (ctx: ChronocatContext) => async (raw: string) => {
|
9 | 12 | const data = JSON.parse(
|
10 | 13 | Buffer.from(raw, 'base64url').toString('utf-8'),
|
11 |
| - ) as Media |
| 14 | + ) as AssetRequest |
12 | 15 |
|
13 |
| - const downloadId = data.msgId + '::' + data.elementId |
| 16 | + if ('type' in data) { |
| 17 | + switch (data.type) { |
| 18 | + case 'marketface': { |
| 19 | + const downloadId = data.tabId + '::' + data.faceId |
14 | 20 |
|
15 |
| - const downloadCompletePromise = new Promise<string>((res, rej) => { |
16 |
| - richMediaDownloadMap[downloadId] = res |
17 |
| - void ctx.chronocat.sleep(1000).then(rej) |
18 |
| - }) |
| 21 | + const downloadCompletePromise = new Promise<string>((res, rej) => { |
| 22 | + emojiDownloadMap[downloadId] = res |
| 23 | + void ctx.chronocat.sleep(5000).then(rej) |
| 24 | + }) |
19 | 25 |
|
20 |
| - if (data.chatType === ChatType.Private && !data.peerUid.startsWith('u_')) |
21 |
| - data.peerUid = ctx.chronocat.uix.getUid(data.peerUid)! |
| 26 | + await fetchMarketEmoticonAioImage({ |
| 27 | + marketEmoticonAioImageReq: { |
| 28 | + eId: data.faceId, |
| 29 | + epId: data.tabId, |
| 30 | + name: data.name, |
| 31 | + width: 200, |
| 32 | + height: 200, |
| 33 | + jobType: 0, |
| 34 | + encryptKey: data.key, |
| 35 | + filePath: data.filePath, |
| 36 | + downloadType: 3, |
| 37 | + }, |
| 38 | + }) |
22 | 39 |
|
23 |
| - await downloadRichMedia({ |
24 |
| - getReq: { |
25 |
| - ...data, |
26 |
| - downloadType: 1, |
27 |
| - }, |
28 |
| - }) |
| 40 | + return await downloadCompletePromise |
| 41 | + } |
| 42 | + } |
| 43 | + } else { |
| 44 | + const downloadId = data.msgId + '::' + data.elementId |
29 | 45 |
|
30 |
| - return await downloadCompletePromise |
| 46 | + const downloadCompletePromise = new Promise<string>((res, rej) => { |
| 47 | + richMediaDownloadMap[downloadId] = res |
| 48 | + void ctx.chronocat.sleep(1000).then(rej) |
| 49 | + }) |
| 50 | + |
| 51 | + if (data.chatType === ChatType.Private && !data.peerUid.startsWith('u_')) |
| 52 | + data.peerUid = ctx.chronocat.uix.getUid(data.peerUid)! |
| 53 | + |
| 54 | + await downloadRichMedia({ |
| 55 | + getReq: { |
| 56 | + ...data, |
| 57 | + downloadType: 1, |
| 58 | + }, |
| 59 | + }) |
| 60 | + |
| 61 | + return await downloadCompletePromise |
| 62 | + } |
31 | 63 | }
|
0 commit comments