Skip to content

Commit 00b1bc7

Browse files
chore: update mulitple audio
1 parent 208daad commit 00b1bc7

File tree

3 files changed

+61
-39
lines changed

3 files changed

+61
-39
lines changed

frontend-dev/src/components/AllIntegrations/Line/Line.jsx

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -92,13 +92,13 @@ function Line({ formFields, setFlow, flow, allIntegURL }) {
9292
accessToken: '',
9393
parse_mode: 'HTML',
9494
messageTypes,
95-
emojis_field_map: generateMappedField(emojisFields),
95+
emojis_field_map: generateMappedField(emojisFields, 'emoji'),
9696
message_field_map: generateMappedField(messageField),
97-
sticker_field_map: generateMappedField(stickerFields),
98-
image_field_map: generateMappedField(imageFields),
99-
audio_field_map: generateMappedField(audioFields),
100-
video_field_map: generateMappedField(videoFields),
101-
location_field_map: generateMappedField(locationFields),
97+
sticker_field_map: generateMappedField(stickerFields, 'sticker'),
98+
image_field_map: generateMappedField(imageFields, 'image'),
99+
audio_field_map: generateMappedField(audioFields, 'audio'),
100+
video_field_map: generateMappedField(videoFields, 'video'),
101+
location_field_map: generateMappedField(locationFields, 'location'),
102102
body: '',
103103
actions: {},
104104
sendEmojis: false,

frontend-dev/src/components/AllIntegrations/Line/LineCommonFunc.js

Lines changed: 31 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
/* eslint-disable no-else-return */
21
import { __ } from '../../../Utils/i18nwrap'
32
import bitsFetch from '../../../Utils/bitsFetch'
43

@@ -108,34 +107,48 @@ const getFieldTypeGroup = lineFormField => {
108107
}
109108

110109
const generateGroupId = (fieldType, existingFieldMap) => {
110+
if (fieldType === 'audio') {
111+
const existingAudioGroups = [
112+
...new Set(
113+
existingFieldMap.filter(field => field.fieldType === 'audio').map(field => field.groupId)
114+
)
115+
]
116+
return `audio_${existingAudioGroups.length + 1}`
117+
}
111118
const existingGroups = [
112119
...new Set(
113120
existingFieldMap
114121
.filter(field => getFieldTypeGroup(field.lineFormField) === fieldType)
115122
.map(field => field.groupId)
116123
)
117124
]
118-
119125
return `${fieldType}_${existingGroups.length + 1}`
120126
}
121127

122128
export const addFieldMap = (i, confTmp, setConf, FieldMappings, mapKey) => {
123129
setConf(prev => {
124130
const newConf = { ...prev }
125131
if (!Array.isArray(newConf[mapKey])) newConf[mapKey] = []
126-
127-
const newFieldMap = FieldMappings.map(field => {
128-
const fieldType = getFieldTypeGroup(field.value)
129-
const groupId = generateGroupId(fieldType, newConf[mapKey])
130-
131-
return {
132+
if (mapKey === 'audio_field_map') {
133+
const fieldType = 'audio'
134+
const groupId = generateGroupId('audio', newConf[mapKey])
135+
const newFieldMap = FieldMappings.map(field => ({
132136
formField: '',
133137
lineFormField: field.value,
134138
groupId,
135-
fieldType
136-
}
137-
})
138-
139+
fieldType: 'audio'
140+
}))
141+
newConf[mapKey].splice(i, 0, ...newFieldMap)
142+
return newConf
143+
}
144+
let fieldType = getFieldTypeGroup(FieldMappings[0].value)
145+
let groupId = generateGroupId(fieldType, newConf[mapKey])
146+
const newFieldMap = FieldMappings.map(field => ({
147+
formField: '',
148+
lineFormField: field.value,
149+
groupId,
150+
fieldType
151+
}))
139152
newConf[mapKey].splice(i, 0, ...newFieldMap)
140153
return newConf
141154
})
@@ -195,13 +208,11 @@ export const getLineValidationMessages = lineConf => {
195208
case 'sendPushMessage':
196209
if (!lineConf.recipientId?.trim())
197210
messages.push(__('Recipient ID is required', 'bit-integrations'))
198-
199211
if (!isMessageFieldConfigured(lineConf))
200212
messages.push(__('Message field mapping is required', 'bit-integrations'))
201213
break
202214
case 'sendReplyMessage':
203215
if (!lineConf.replyToken?.trim()) messages.push(__('Reply Token is required', 'bit-integrations'))
204-
205216
if (!isMessageFieldConfigured(lineConf))
206217
messages.push(__('Message field mapping is required', 'bit-integrations'))
207218
break
@@ -222,20 +233,20 @@ export const getLineValidationMessages = lineConf => {
222233
return messages
223234
}
224235

225-
export const generateMappedField = fields => {
236+
export const generateMappedField = (fields, fieldType = null) => {
226237
const requiredFlds = fields.filter(f => f.required)
227238
if (requiredFlds.length) {
228239
const typeToGroupId = {}
229240
return requiredFlds.map(f => {
230-
const fieldType = getFieldTypeGroup(f.value)
231-
if (!typeToGroupId[fieldType]) {
232-
typeToGroupId[fieldType] = `${fieldType}_1`
241+
const actualFieldType = fieldType || getFieldTypeGroup(f.value)
242+
if (!typeToGroupId[actualFieldType]) {
243+
typeToGroupId[actualFieldType] = `${actualFieldType}_1`
233244
}
234245
return {
235246
formField: '',
236247
lineFormField: f.value,
237-
groupId: typeToGroupId[fieldType],
238-
fieldType
248+
groupId: typeToGroupId[actualFieldType],
249+
fieldType: actualFieldType
239250
}
240251
})
241252
}

includes/Actions/Line/RecordApiHelper.php

Lines changed: 24 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -99,19 +99,30 @@ function ($data) {
9999
}
100100

101101
if (!empty($details->sendAudio) && !empty($details->audio_field_map)) {
102-
$audios = $this->processGrouped(
103-
$values,
104-
$details->audio_field_map,
105-
['originalContentUrl'],
106-
function ($data) {
107-
return array_filter([
108-
'type' => 'audio',
109-
'originalContentUrl' => $data['originalContentUrl'],
110-
'duration' => isset($data['duration']) ? (int) $data['duration'] : null
111-
]);
112-
}
113-
);
114-
$messages = array_merge($messages, $audios);
102+
error_log(print_r($details->audio_field_map, true));
103+
$audioFields = array_filter($details->audio_field_map, function ($field) {
104+
return $field->fieldType === 'audio';
105+
});
106+
if (!empty($audioFields)) {
107+
$audios = $this->processGrouped(
108+
$values,
109+
$audioFields,
110+
['originalContentUrl'],
111+
function ($data) {
112+
if (empty($data['duration'])) {
113+
return;
114+
}
115+
116+
return [
117+
'type' => 'audio',
118+
'originalContentUrl' => $data['originalContentUrl'],
119+
'duration' => $data['duration']
120+
];
121+
}
122+
);
123+
$audios = array_filter($audios);
124+
$messages = array_merge($messages, $audios);
125+
}
115126
}
116127

117128
if (!empty($details->sendVideo) && !empty($details->video_field_map)) {

0 commit comments

Comments
 (0)