Harmonize JSON API error messages

This commit is contained in:
2026-08-25 23:44:26 +02:00
parent 0d4b159ab3
commit f1b90a4d83
18 changed files with 254 additions and 175 deletions
+21 -13
View File
@@ -22,7 +22,7 @@ export default {
},
mounted() {
if(!this.project.editable) {
this.logs = [this.lang.get('upload.mode_archived', [this.project.name])];
this.addLog('upload.mode_archived', [this.project.name]);
return;
}
@@ -35,6 +35,9 @@ export default {
}
},
methods: {
addLog(sLangId = 'upload.error', asLangParams = []) {
this.logs.push({lang_id: sLangId, lang_params: asLangParams});
},
initUploader() {
const endpoint = `${this.consts.process_page}?a=upload`;
@@ -66,14 +69,14 @@ export default {
const uploadedFiles = response?.body?.files || [];
uploadedFiles.forEach((uploadedFile) => {
const hasError = Object.prototype.hasOwnProperty.call(uploadedFile, 'error');
this.logs.push(hasError ? uploadedFile.error : this.lang.get('upload.success', [uploadedFile.original_name || uploadedFile.name]));
if(hasError) this.addLog(uploadedFile.desc_lang_id, uploadedFile.desc_lang_params);
else this.addLog('upload.success', [uploadedFile.original_name || uploadedFile.name]);
if(!hasError) this.files.push({...uploadedFile, content: ''});
});
});
this.uppy.on('upload-error', (file, error, response) => {
const message = response?.body?.error || error?.message || this.lang.get('upload.error');
this.logs.push(message);
this.addLog(response?.body?.desc_lang_id || 'upload.error', response?.body?.desc_lang_params || []);
});
this.uppy.on('complete', () => {
@@ -90,29 +93,34 @@ export default {
id: oFile.id,
content: oFile.content
})
.then((asData) => {this.logs.push(this.lang.get('media.comment_update', asData.filename));})
.catch((sMsgId) => {this.logs.push(this.lang.get(sMsgId));});
.then((asData) => {this.addLog('media.comment_update', [asData.filename]);})
.catch((oError) => {this.addLog(oError.desc_lang_id, oError.desc_lang_params);});
},
addPosition() {
if(navigator.geolocation) {
this.logs.push('Determining position...');
this.addLog('upload.position.determining');
navigator.geolocation.getCurrentPosition(
(position) => {
this.logs.push('Sending position...');
this.addLog('upload.position.sending');
this.api.post('add_position', {
'latitude': position.coords.latitude,
'longitude': position.coords.longitude,
'timestamp': Math.round(position.timestamp / 1000)
})
.then(() => {this.logs.push(this.lang.get('upload.success', [this.lang.get('upload.position.new')]));})
.catch((sMsgId) => {this.logs.push(this.lang.get(sMsgId));});
.then(() => {this.addLog('upload.position.success');})
.catch((oError) => {this.addLog(oError.desc_lang_id, oError.desc_lang_params);});
},
(error) => {
this.logs.push(error.message);
const asErrorLangIds = {
1: 'upload.position.permission_denied',
2: 'upload.position.unavailable',
3: 'upload.position.timeout'
};
this.addLog(asErrorLangIds[error.code] || 'upload.position.error');
}
);
}
else this.logs.push('This browser does not support geolocation');
else this.addLog('upload.position.unsupported');
}
}
}
@@ -144,7 +152,7 @@ export default {
<AppButton :icon="'marker'" :text="lang.get('upload.position.new')" @click="addPosition()" />
</div>
<div class="section logs" v-if="logs.length > 0">
<p class="log" v-for="log in logs">{{ log }}.</p>
<p class="log" v-for="(log, index) in logs" :key="index">{{ lang.get(log.lang_id, log.lang_params) }}</p>
</div>
</div>
</template>