Skip to content

Commit 0879a59

Browse files
committed
Improve sync error messages displayed to users
Resolves: #216
1 parent e9eeb3e commit 0879a59

File tree

4 files changed

+48
-14
lines changed

4 files changed

+48
-14
lines changed

CHANGELOG.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
* Show selective sync on separate page in startup wizard #172
1515
* Remove windows registry entries on uninstall #32
1616
* New tray behaviour for linux #207
17-
17+
* Improve sync error messages displayed to users #216
1818

1919
## 1.2.1
2020
**Maintainer**: balloon-team <[email protected]>\

app/i18n/de-CH.json

+10-4
Original file line numberDiff line numberDiff line change
@@ -94,13 +94,19 @@
9494
"status.nav.quota": "Speicher",
9595

9696
"status.activities.waiting": "Ausstehend...",
97-
"status.activities.upload": "%s (Upload)",
98-
"status.activities.download": "%s (Download)",
99-
"status.activities.upload_failed": "%s (Upload fehlgeschlagen)",
100-
"status.activities.download_failed": "%s (Download fehlgeschagen)",
97+
"status.activities.upload": "%s: Hochgeladen",
98+
"status.activities.download": "%s: Heruntergeladen",
99+
"status.activities.upload_failed": "%s: Upload fehlgeschlagen",
100+
"status.activities.download_failed": "%s: Download fehlgeschagen",
101101
"status.activities.empty": "Keine Aktivitäten vorhanden.",
102102
"status.errors.empty": "Gute Arbeit, keine Fehler vorhanden.",
103103

104+
"status.activities.upload_failed.errors.code.E_BLN_API_REQUEST_QUOTA_FULL": "%s: Upload fehlgeschlagen, kein freier Speicherplatz",
105+
"status.activities.upload_failed.errors.code.E_BLN_API_UPLOAD_SRC_NOTEXISTS": "%s: Upload fehlgeschlagen, die Datei existiert nicht mehr",
106+
"status.activities.upload_failed.errors.code.E_BLN_API_OUT_OF_RANGE": "%s: Upload fehlgeschlagen, die Datei ist zu gross",
107+
"status.activities.upload_failed.errors.code.E_BLN_API_REQUEST_NETWORK": "%s: Upload fehlgeschlagen, der Server ist nicht erreichbar",
108+
"status.activities.download_failed.errors.code.E_BLN_API_REQUEST_NETWORK": "%s: Download fehlgeschlagen, der Server ist nicht erreichbar",
109+
104110
"status.quota.used": "Benutzt",
105111
"status.quota.left": "Frei",
106112
"status.quota.max": "Gesamt",

app/i18n/en-US.json

+10-4
Original file line numberDiff line numberDiff line change
@@ -93,13 +93,19 @@
9393
"status.nav.quota": "Storage",
9494

9595
"status.activities.waiting": "Waiting...",
96-
"status.activities.upload": "%s (uploaded)",
97-
"status.activities.download": "%s (downloaded)",
98-
"status.activities.upload_failed": "%s (upload failed)",
99-
"status.activities.download_failed": "%s (download failed)",
96+
"status.activities.upload": "%s: uploaded",
97+
"status.activities.download": "%s: downloaded",
98+
"status.activities.upload_failed": "%s: upload failed",
99+
"status.activities.download_failed": "%s: download failed",
100100
"status.activities.empty": "There is no activity yet.",
101101
"status.errors.empty": "Good job, there are no errors.",
102102

103+
"status.activities.upload_failed.errors.code.E_BLN_API_REQUEST_QUOTA_FULL": "%s: upload failed, no free space on the server",
104+
"status.activities.upload_failed.errors.code.E_BLN_API_UPLOAD_SRC_NOTEXISTS": "%s: upload failed, the file does not exist anymore",
105+
"status.activities.upload_failed.errors.code.E_BLN_API_OUT_OF_RANGE": "%s: upload failed, the file is too big",
106+
"status.activities.upload_failed.errors.code.E_BLN_API_REQUEST_NETWORK": "%s: upload failed, the server is not reachable",
107+
"status.activities.download_failed.errors.code.E_BLN_API_REQUEST_NETWORK": "%s: download failed, the server is not reachable",
108+
103109
"status.quota.used": "Used",
104110
"status.quota.left": "Available",
105111
"status.quota.max": "Total",

app/ui/status/browser.js

+27-5
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ module.exports = function() {
7676
ipcRenderer.on('transfer-task', function(event, task) {
7777
if(taskHistory[task.id]) {
7878
taskHistory[task.id].subtype = task.subtype;
79+
taskHistory[task.id].info = task.info;
7980
} else {
8081
taskHistory[task.id] = task;
8182
taskHistory[task.id].percent = 0;
@@ -177,11 +178,7 @@ module.exports = function() {
177178
dom += '<div class="task-finish">'+i18n.__('status.activities.download', [ta.format(task.datetime)])+'</div>';
178179
}
179180
} else if(task.subtype == 'error' || task.subtype == 'aborted') {
180-
if(task.type == 'upload') {
181-
dom += '<div class="task-finish">'+i18n.__('status.activities.upload_failed', [ta.format(task.datetime)])+'</div>';
182-
} else if(task.type == 'download') {
183-
dom += '<div class="task-finish">'+i18n.__('status.activities.download_failed', [ta.format(task.datetime)])+'</div>';
184-
}
181+
dom += '<div class="task-finish">'+getTaskErrorMessage(task)+'</div>';
185182
} else if(percent == 0) {
186183
dom += '<div class="task-queued">'+i18n.__('status.activities.waiting')+'</div>';
187184
} else {
@@ -193,6 +190,31 @@ module.exports = function() {
193190
return $(dom);
194191
}
195192

193+
function getTaskErrorMessage(task) {
194+
const type = task.type;
195+
const code = task.info ? task.info.code : undefined;
196+
const formatedTime = ta.format(task.datetime);
197+
let msg;
198+
199+
if(code) {
200+
const key = `status.activities.${type}_failed.errors.code.${code.toUpperCase()}`
201+
202+
msg = i18n.__(key, [formatedTime]);
203+
204+
if(msg === key) msg = undefined;
205+
}
206+
207+
if(!msg) {
208+
msg = task.info && task.info.message ? `${formatedTime}: ${task.info.message}` : undefined;
209+
}
210+
211+
if(!msg) {
212+
msg = i18n.__(`status.activities.${type}_failed`, [formatedTime])
213+
}
214+
215+
return msg;
216+
}
217+
196218
function renderError(error) {
197219
return $(`<li id="${error.hash}" class="clearfix" >
198220
<div class="status-error-message">${error.message}</div>

0 commit comments

Comments
 (0)