Просмотр исходного кода

Merge pull request #10337 from overleaf/jpa-localized-network-error-messages

[web] pdf-caching: handle localize network error messages

GitOrigin-RevId: 41b0b9e87818d87d08c4cf24991751779243ae32
Jakob Ackermann 3 лет назад
Родитель
Сommit
665ab24cbd

+ 1 - 1
services/web/frontend/js/features/pdf-preview/util/pdf-caching-transport.js

@@ -9,6 +9,7 @@ import {
   prefetchLargeEnabled,
   prefetchLargeEnabled,
   trackPdfDownloadEnabled,
   trackPdfDownloadEnabled,
 } from './pdf-caching-flags'
 } from './pdf-caching-flags'
+import { isNetworkError } from '../../../utils/isNetworkError'
 
 
 // 30 seconds: The shutdown grace period of a clsi pre-emp instance.
 // 30 seconds: The shutdown grace period of a clsi pre-emp instance.
 const STALE_OUTPUT_REQUEST_THRESHOLD_MS = 30 * 1000
 const STALE_OUTPUT_REQUEST_THRESHOLD_MS = 30 * 1000
@@ -79,7 +80,6 @@ export function generatePdfCachingTransportFactory(PDFJS) {
       const isStaleOutputRequest = () =>
       const isStaleOutputRequest = () =>
         performance.now() - this.startTime > STALE_OUTPUT_REQUEST_THRESHOLD_MS
         performance.now() - this.startTime > STALE_OUTPUT_REQUEST_THRESHOLD_MS
       const is404 = err => err.message === 'non successful response status: 404'
       const is404 = err => err.message === 'non successful response status: 404'
-      const isNetworkError = err => err.message === 'Failed to fetch'
       const isFromOutputPDFRequest = err =>
       const isFromOutputPDFRequest = err =>
         OError.getFullInfo(err).url === this.url
         OError.getFullInfo(err).url === this.url
 
 

+ 73 - 0
services/web/frontend/js/utils/isNetworkError.js

@@ -0,0 +1,73 @@
+const NETWORK_ERRORS = [
+  // fetch
+  'Failed to fetch',
+  // fetch
+  'NetworkError when attempting to fetch resource.',
+  // download body
+  'Load failed',
+  // dns
+  'A server with the specified hostname could not be found.',
+  'Es wurde kein Server mit dem angegebenen Hostnamen gefunden.',
+  'Impossibile trovare un server con il nome host specificato.',
+  '未能找到使用指定主机名的服务器。',
+  // offline
+  'The Internet connection appears to be offline.',
+  'Internetanslutningen verkar vara nedkopplad.',
+  // connection error
+  'Could not connect to the server.',
+  'Impossible de se connecter au serveur.',
+  'Verbindung zum Server konnte nicht hergestellt werden.',
+  'Не удалось подключиться к серверу.',
+  'يبدو أنه لا يوجد اتصال بالإنترنت.',
+  '无法连接服务器。',
+  // disconnected
+  'The network connection was lost.',
+  'A conexão de rede foi perdida.',
+  'A hálózati kapcsolat megszakadt.',
+  'A ligação de rede foi cortada.',
+  'Ağ bağlantısı kesildi.',
+  'Conexiunea de rețea a fost pierdută.',
+  'De netwerkverbinding is verbroken.',
+  'Die Netzwerkverbindung wurde unterbrochen.',
+  'La conexión de red se ha perdido.',
+  'La conexión de red se perdió.',
+  'La connessione è stata persa.',
+  'La connexion réseau a été perdue.',
+  'La connexió de xarxa s’ha perdut.',
+  'Mistet nettverksforbindelsen.',
+  'Netværksforbindelsen gik tabt.',
+  'Nätverksanslutningen förlorades.',
+  'Połączenie sieciowe zostało przerwane.',
+  'Veza s mrežom je prekinuta.',
+  'la connessione è stata persa.',
+  'Đã mất kết nối mạng.',
+  'Сетевое соединение потеряно.',
+  'החיבור לרשת אבד.',
+  'تم فقدان اتصال الشبكة.',
+  'キャンセルしました',
+  'ネットワーク接続が切れました。',
+  '已取消',
+  '網絡連線中斷。',
+  '網路連線中斷。',
+  // slow network
+  'The request timed out.',
+  'Begäran nådde en maxtidsgräns.',
+  'Esgotou-se o tempo limite da solicitação.',
+  'Il tempo di attesa della richiesta è scaduto.',
+  'La requête a expiré.',
+  'Przekroczenie limitu czasu żądania.',
+  'Se agotó el tiempo de espera.',
+  'Se ha agotado el tiempo de espera.',
+  'Tempo di richiesta scaduto.',
+  'Temps esgotat per a la sol·licitud.',
+  'Zeitüberschreitung bei der Anforderung.',
+  'Превышен лимит времени на запрос.',
+  'انتهت مهلة الطلب.',
+  'データベースの要求が時間切れになりました。',
+  '要求逾時。',
+  '요청한 시간이 초과되었습니다.',
+]
+
+export function isNetworkError(err) {
+  return NETWORK_ERRORS.includes(err?.message)
+}