feat: automatically clear non-critical error notifications

Closes #253.
pull/321/head
dessant 3 years ago
parent 9d092c2c39
commit ab03085b0e

@ -287,6 +287,7 @@ async function getWitSpeechApiResult(apiKey, audioContent) {
if (rsp.status !== 200) { if (rsp.status !== 200) {
if (rsp.status === 429) { if (rsp.status === 429) {
result.errorId = 'error_apiQuotaExceeded'; result.errorId = 'error_apiQuotaExceeded';
result.errorTimeout = 6000;
} else { } else {
throw new Error(`API response: ${rsp.status}, ${await rsp.text()}`); throw new Error(`API response: ${rsp.status}, ${await rsp.text()}`);
} }
@ -377,7 +378,10 @@ async function transcribeAudio(audioUrl, lang) {
const result = await getWitSpeechApiResult(apiKey, audioContent); const result = await getWitSpeechApiResult(apiKey, audioContent);
if (result.errorId) { if (result.errorId) {
showNotification({messageId: result.errorId}); showNotification({
messageId: result.errorId,
timeout: result.errorTimeout
});
return; return;
} }
solution = result.text; solution = result.text;
@ -390,7 +394,10 @@ async function transcribeAudio(audioUrl, lang) {
} }
const result = await getWitSpeechApiResult(apiKey, audioContent); const result = await getWitSpeechApiResult(apiKey, audioContent);
if (result.errorId) { if (result.errorId) {
showNotification({messageId: result.errorId}); showNotification({
messageId: result.errorId,
timeout: result.errorTimeout
});
return; return;
} }
solution = result.text; solution = result.text;
@ -506,7 +513,7 @@ async function transcribeAudio(audioUrl, lang) {
} }
if (!solution) { if (!solution) {
showNotification({messageId: 'error_captchaNotSolved'}); showNotification({messageId: 'error_captchaNotSolved', timeout: 6000});
} else { } else {
return solution; return solution;
} }
@ -518,7 +525,8 @@ async function onMessage(request, sender) {
message: request.message, message: request.message,
messageId: request.messageId, messageId: request.messageId,
title: request.title, title: request.title,
type: request.type type: request.type,
timeout: request.timeout
}); });
} else if (request.id === 'captchaSolved') { } else if (request.id === 'captchaSolved') {
let {useCount} = await storage.get('useCount', 'sync'); let {useCount} = await storage.get('useCount', 'sync');

@ -9,19 +9,36 @@ import {
sleep sleep
} from 'utils/common'; } from 'utils/common';
function showNotification({message, messageId, title, type = 'info'}) { async function showNotification({
message,
messageId,
title,
type = 'info',
timeout = 0
}) {
if (!title) { if (!title) {
title = getText('extensionName'); title = getText('extensionName');
} }
if (messageId) { if (messageId) {
message = getText(messageId); message = getText(messageId);
} }
return browser.notifications.create(`sbi-notification-${type}`, { const notification = await browser.notifications.create(
type: 'basic', `bc-notification-${type}`,
title: title, {
message: message, type: 'basic',
iconUrl: '/src/icons/app/icon-48.png' title,
}); message,
iconUrl: '/src/icons/app/icon-64.png'
}
);
if (timeout) {
window.setTimeout(() => {
browser.notifications.clear(notification);
}, timeout);
}
return notification;
} }
function getOptionLabels(data, scope = 'optionValue') { function getOptionLabels(data, scope = 'optionValue') {

Loading…
Cancel
Save