mirror of
https://github.com/element-hq/element-web
synced 2024-11-28 12:28:50 +03:00
Merge branch 'develop' into travis/widget-api
This commit is contained in:
commit
b9b859dd28
12 changed files with 1383 additions and 73 deletions
21
docs/e2ee.md
21
docs/e2ee.md
|
@ -35,6 +35,27 @@ following on your homeserver's `/.well-known/matrix/client` config:
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Preferring setup methods
|
||||||
|
|
||||||
|
By default, Element offers users a choice of a random key or user-chosen
|
||||||
|
passphrase when setting up Secure Backup. If a homeserver admin would like to
|
||||||
|
only offer one of these, you can signal this via the
|
||||||
|
`/.well-known/matrix/client` config, for example:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"io.element.e2ee": {
|
||||||
|
"secure_backup_setup_methods": ["passphrase"]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
The field `secure_backup_setup_methods` is an array listing the methods the
|
||||||
|
client should display. Supported values currently include `key` and
|
||||||
|
`passphrase`. If the `secure_backup_setup_methods` field is not present or
|
||||||
|
exists but does not contain any supported methods, Element will fallback to the
|
||||||
|
default value of: `["key", "passphrase"]`.
|
||||||
|
|
||||||
# Compatibility
|
# Compatibility
|
||||||
|
|
||||||
The settings above were first proposed under a `im.vector.riot.e2ee` key, which
|
The settings above were first proposed under a `im.vector.riot.e2ee` key, which
|
||||||
|
|
|
@ -66,7 +66,7 @@
|
||||||
"prop-types": "^15.7.2",
|
"prop-types": "^15.7.2",
|
||||||
"react": "^16.9.0",
|
"react": "^16.9.0",
|
||||||
"react-dom": "^16.9.0",
|
"react-dom": "^16.9.0",
|
||||||
"sanitize-html": "^1.19.1",
|
"sanitize-html": "github:apostrophecms/sanitize-html#3c7f93f2058f696f5359e3e58d464161647226db",
|
||||||
"ua-parser-js": "^0.7.19",
|
"ua-parser-js": "^0.7.19",
|
||||||
"url": "^0.11.0"
|
"url": "^0.11.0"
|
||||||
},
|
},
|
||||||
|
@ -142,7 +142,8 @@
|
||||||
"typescript": "^3.7.3",
|
"typescript": "^3.7.3",
|
||||||
"webpack": "^4.41.2",
|
"webpack": "^4.41.2",
|
||||||
"webpack-cli": "^3.3.10",
|
"webpack-cli": "^3.3.10",
|
||||||
"webpack-dev-server": "^3.9.0"
|
"webpack-dev-server": "^3.9.0",
|
||||||
|
"workbox-webpack-plugin": "^5.1.4"
|
||||||
},
|
},
|
||||||
"jest": {
|
"jest": {
|
||||||
"testEnvironment": "jest-environment-jsdom-fourteen",
|
"testEnvironment": "jest-environment-jsdom-fourteen",
|
||||||
|
|
|
@ -1 +0,0 @@
|
||||||
self.addEventListener('fetch',() => {});
|
|
|
@ -61,7 +61,6 @@ const INCLUDE_LANGS = [
|
||||||
// "dest/b/...".
|
// "dest/b/...".
|
||||||
const COPY_LIST = [
|
const COPY_LIST = [
|
||||||
["res/manifest.json", "webapp"],
|
["res/manifest.json", "webapp"],
|
||||||
["res/sw.js", "webapp"],
|
|
||||||
["res/welcome.html", "webapp"],
|
["res/welcome.html", "webapp"],
|
||||||
["res/welcome/**", "webapp/welcome"],
|
["res/welcome/**", "webapp/welcome"],
|
||||||
["res/themes/**", "webapp/themes"],
|
["res/themes/**", "webapp/themes"],
|
||||||
|
|
|
@ -1,35 +1,36 @@
|
||||||
{
|
{
|
||||||
"Dismiss": "تجاهل",
|
"Dismiss": "أهمِل",
|
||||||
"Unknown device": "جهاز مجهول",
|
"Unknown device": "جهاز مجهول",
|
||||||
"You need to be using HTTPS to place a screen-sharing call.": "تحتاج الى استخدام الاتصال الآمن (HTTPS) للسماح بمشاركة الشاشة.",
|
"You need to be using HTTPS to place a screen-sharing call.": "عليك استعمال ميفاق HTTPS للاتصال بمشاركة الشاشة.",
|
||||||
"powered by Matrix": "مشغل بواسطة Matrix",
|
"powered by Matrix": "مشغل بواسطة Matrix",
|
||||||
"Welcome to Element": "مرحبا بك في Element",
|
"Welcome to Element": "مرحبًا بك في Element",
|
||||||
"Decentralised, encrypted chat & collaboration powered by [matrix]": "دردشة مشفرة غير مركزية &تطبيق تعاوني مدعوم بواسطة [matrix]",
|
"Decentralised, encrypted chat & collaboration powered by [matrix]": "دردشة وتعاون غير مركزي معمّى، تدعمه [matrix]",
|
||||||
"Create Account": "انشاء حساب",
|
"Create Account": "أنشِئ حسابًا",
|
||||||
"Explore rooms": "استكشف غرف المحادثات",
|
"Explore rooms": "استكشِف الغرف",
|
||||||
"Sign In": "الدخول",
|
"Sign In": "لِج",
|
||||||
"Missing indexeddb worker script!": "منفذ السكريبت الخاص ب Indexeddb غير موجود!",
|
"Missing indexeddb worker script!": "سكربت عامل indexeddb ناقص!",
|
||||||
"Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "خطأ في الاعدادات: يمكنك فقط تحديد واحد فقط من: default_server_config، default_server_name، أو default_hs_url.",
|
"Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "الضبط غير صالح: يمكنك تحديد واحدًا من الآتي فقط: default_server_config أو default_server_name أو default_hs_url.",
|
||||||
"Invalid configuration: no default server specified.": "اعدادات خاطئة: لم يتم تحديد السيرفر الافتراضي.",
|
"Invalid configuration: no default server specified.": "الضبط غير صالح: لم تحدّد خادومًا مبدئيًا.",
|
||||||
"Your Element is misconfigured": "تطبيقك معد بطريقة خاطئة",
|
"Your Element is misconfigured": "لم يُضبط تطبيق Element كما ينبغي",
|
||||||
"Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "اعداداتك تحتوى على بنية JSON غير صحيحة. يرجى تصحيح المشكلة واعادة تحديث الصفحة.",
|
"Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "يحتوي ضبط تطبيق Element على تنسيق JSON غير صالح. من فضلك صحّح المشكلة وأعِد تحميل الصفحة.",
|
||||||
"The message from the parser is: %(message)s": "الرسالة من المدقق هي:%(message)s",
|
"The message from the parser is: %(message)s": "الرسالة القادمة من المحلّل: %(message)s",
|
||||||
"Invalid JSON": "JSON خاطئ",
|
"Invalid JSON": "تنسيق JSON غير صالح",
|
||||||
"Unable to load config file: please refresh the page to try again.": "لم نستطع تحميل ملف الاعداد: يرجى تحديث الصفحة للمحاولة مرة اخرى.",
|
"Unable to load config file: please refresh the page to try again.": "تعذّر تحميل ملف الضبط: من فضلك أنعِش الصفحة لمعاودة المحاولة.",
|
||||||
"Unexpected error preparing the app. See console for details.": "حدث خطأ غير متوقع عند تجهيز التطبيق. انظر الى منصة التحكم للمزيد من التفاصيل.",
|
"Unexpected error preparing the app. See console for details.": "حدث عُطل غير متوقع أثناء تجهيز التطبيق. طالِع المِعراض للتفاصيل.",
|
||||||
"Download Completed": "تم اكتمال التحميل",
|
"Download Completed": "اكتمل التنزيل",
|
||||||
"Open": "فتح",
|
"Open": "افتح",
|
||||||
"Open user settings": "فتح اعدادات المستخدم",
|
"Open user settings": "افتح إعدادات المستخدم",
|
||||||
"Previous/next recently visited room or community": "السابقة/اللاحقة الغرفة او المجتمع الذي تمت زيارته مؤخرا",
|
"Previous/next recently visited room or community": "الغرفة أو المجتمع التالي/السابق الذي زرته حديثًا",
|
||||||
"%(brand)s Desktop (%(platformName)s)": "%(brand)s سطح المكتب (%(platformName)s)",
|
"%(brand)s Desktop (%(platformName)s)": "%(brand)s لسطح المكتب (%(platformName)s)",
|
||||||
"Go to your browser to complete Sign In": "اذهب الى المتصفح لاكمال تسجيل الدخول",
|
"Go to your browser to complete Sign In": "افتح المتصفح لإكمال الولوج",
|
||||||
"%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s (%(browserName)s, %(osName)s)",
|
"%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s (%(browserName)s، %(osName)s)",
|
||||||
"Unsupported browser": "متصفح غير متوافق",
|
"Unsupported browser": "متصفح غير مدعوم",
|
||||||
"Your browser can't run %(brand)s": "متصفحك لايمكنه تشغيل %(brand)s",
|
"Your browser can't run %(brand)s": "لا يمكن لمتصفحك تشغيل %(brand)s",
|
||||||
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s يستخدم مزايا المتصفح المتقدمة والتي لا يدعمها متصفحك الحالي.",
|
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "يستعمل %(brand)s ميزات متقدمة في المتصفحات لا يدعمها متصفحك الحالي.",
|
||||||
"Please install <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, or <safariLink>Safari</safariLink> for the best experience.": "يرجى تثبيت <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, or <safariLink>Safari</safariLink> for the best experience.",
|
"Please install <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, or <safariLink>Safari</safariLink> for the best experience.": "من فضلك ثبّت <chromeLink>كروم</chromeLink> أو <firefoxLink>فَيَرفُكس</firefoxLink> أو <safariLink>سفاري</safariLink> لأفضل تجربة.",
|
||||||
"You can continue using your current browser, but some or all features may not work and the look and feel of the application may be incorrect.": "يمكنك الاستمرار في استخدام متصفحك الحالي، ولكن بعض او كل المزايا ربما لا تعمل ويكون شكل التطبيق وشعورك تجاهه غير صحيح.",
|
"You can continue using your current browser, but some or all features may not work and the look and feel of the application may be incorrect.": "يمكنك مواصل استعمال متصفحك الحالي ولكن قد لا تعمل بعض المزايا (أو كلها) وقد لا يظهر التطبيق كما ينبغي له أن يظهر.",
|
||||||
"I understand the risks and wish to continue": "ادرك المخاطر وارغب في الاستمرار",
|
"I understand the risks and wish to continue": "أفهم المخاطرة وأود المواصلة",
|
||||||
"Go to element.io": "اذهب الى Element.io",
|
"Go to element.io": "انتقل إلى element.io",
|
||||||
"Failed to start": "فشل الاقلاع"
|
"Failed to start": "فشل البدء",
|
||||||
|
"Powered by Matrix": "تدعمه «ماترِكس»"
|
||||||
}
|
}
|
||||||
|
|
|
@ -1 +1,35 @@
|
||||||
{}
|
{
|
||||||
|
"Missing indexeddb worker script!": "Nedostaje indexeddb radna skripta!",
|
||||||
|
"Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Neispravna konfiguracija: navesti se samo može jedan od default_server_config, default_server_name ili default_hs_url.",
|
||||||
|
"Invalid configuration: no default server specified.": "Neispravna konfiguracija: nije naveden zadani server.",
|
||||||
|
"Your Element is misconfigured": "Vaš element je pogrešno konfiguriran",
|
||||||
|
"Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "Konfiguracija vašeg elementa sadrži nevažeći JSON. Ispravite problem i ponovo učitajte stranicu.",
|
||||||
|
"The message from the parser is: %(message)s": "Poruka parsera je: %(message)s",
|
||||||
|
"Invalid JSON": "Nevažeći JSON",
|
||||||
|
"Unable to load config file: please refresh the page to try again.": "Nije moguće učitati konfiguracijsku datoteku: osvježite stranicu i pokušajte ponovo.",
|
||||||
|
"Unexpected error preparing the app. See console for details.": "Neočekivana greška prilikom pripreme aplikacije. Pogledajte konzolu za detalje.",
|
||||||
|
"Download Completed": "Preuzimanje završeno",
|
||||||
|
"Open": "Otvori",
|
||||||
|
"Dismiss": "Odbaci",
|
||||||
|
"Open user settings": "Otvori korisničke postavke",
|
||||||
|
"Previous/next recently visited room or community": "Prethodna / sljedeća nedavno posjećena soba ili zajednica",
|
||||||
|
"%(brand)s Desktop (%(platformName)s)": "%(brand)s Radna povrsina (%(platformName)s)",
|
||||||
|
"Go to your browser to complete Sign In": "Idite na svoj pretraživač da biste dovršili prijavu",
|
||||||
|
"Unknown device": "Nepoznat uređaj",
|
||||||
|
"%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s (%(browserName)s, %(osName)s)",
|
||||||
|
"You need to be using HTTPS to place a screen-sharing call.": "Morate koristiti HTTPS za upućivanje poziva za dijeljenje ekrana.",
|
||||||
|
"Powered by Matrix": "Pokretano uz Matrix",
|
||||||
|
"Unsupported browser": "Nepodržani pretraživač",
|
||||||
|
"Your browser can't run %(brand)s": "Vaš pretraživač ne može pokretati %(brand)s",
|
||||||
|
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s koristi napredne funkcije pretraživača koje vaš trenutni pretraživač ne podržava.",
|
||||||
|
"Please install <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, or <safariLink>Safari</safariLink> for the best experience.": "Molimo instalirajte <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink> ili <safariLink>Safari</safariLink> za najbolje iskustvo.",
|
||||||
|
"You can continue using your current browser, but some or all features may not work and the look and feel of the application may be incorrect.": "Možete nastaviti koristiti svoj trenutni pretraživač, ali neke ili sve funkcije možda neće raditi, a izgled i dojam aplikacije mogu biti neispravani.",
|
||||||
|
"I understand the risks and wish to continue": "Razumijem rizike i želim nastaviti",
|
||||||
|
"Go to element.io": "Idite na element.io",
|
||||||
|
"Failed to start": "Pokretanje nije uspjelo",
|
||||||
|
"Welcome to Element": "Dobrodošli u Element",
|
||||||
|
"Decentralised, encrypted chat & collaboration powered by [matrix]": "Decentralizirani, šifrirani razgovor & suradnja pokrenuta [matrix]",
|
||||||
|
"Sign In": "Prijavite se",
|
||||||
|
"Create Account": "Otvori račun",
|
||||||
|
"Explore rooms": "Istražite sobe"
|
||||||
|
}
|
||||||
|
|
|
@ -10,7 +10,11 @@
|
||||||
"The message from the parser is: %(message)s": "Το μήνυμα από τον αναλυτή είναι: %(message)s",
|
"The message from the parser is: %(message)s": "Το μήνυμα από τον αναλυτή είναι: %(message)s",
|
||||||
"Invalid JSON": "Μη έγκυρο JSON",
|
"Invalid JSON": "Μη έγκυρο JSON",
|
||||||
"Unexpected error preparing the app. See console for details.": "Απρόοπτο σφάλμα κατά την προετοιμασία της εφαρμογής. Δείτε το τερματικό για λεπτομέρειες.",
|
"Unexpected error preparing the app. See console for details.": "Απρόοπτο σφάλμα κατά την προετοιμασία της εφαρμογής. Δείτε το τερματικό για λεπτομέρειες.",
|
||||||
"Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Μη έγκυρη ρύθμιση παραμέτρων: δυνατότητα ορισμού μόνο ένα από τα default_server_config, default_server_name, ή default_hs_url.",
|
"Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Μη έγκυρη ρύθμιση: δυνατότητα ορισμού μόνο ένα από τα default_server_config, default_server_name, ή default_hs_url.",
|
||||||
"Invalid configuration: no default server specified.": "Μη έγκυρη ρύθμιση παραμέτρων: δεν έχει οριστεί προκαθορισμένος διακομιστής.",
|
"Invalid configuration: no default server specified.": "Μη έγκυρη ρύθμιση παραμέτρων: δεν έχει οριστεί προκαθορισμένος διακομιστής.",
|
||||||
"Explore rooms": "Εξερευνήστε δωμάτια"
|
"Explore rooms": "Εξερευνήστε δωμάτια",
|
||||||
|
"Open": "Άνοιγμα",
|
||||||
|
"Go to your browser to complete Sign In": "Επισκεφτείτε τον browser σας για να ολοκληρωθεί η είσοδος",
|
||||||
|
"Powered by Matrix": "Παρέχεται από το Matrix",
|
||||||
|
"Please install <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, or <safariLink>Safari</safariLink> for the best experience.": "Παρακαλούμε εγκαταστήστε <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, ή <safariLink>Safari</safariLink> για καλύτερη εμπειρία χρήσης."
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,7 +29,8 @@
|
||||||
"Download Completed": "Preberanie dokončené",
|
"Download Completed": "Preberanie dokončené",
|
||||||
"Open": "Otvoriť",
|
"Open": "Otvoriť",
|
||||||
"Your Element is misconfigured": "Váš Element je nesprávne nastavený",
|
"Your Element is misconfigured": "Váš Element je nesprávne nastavený",
|
||||||
"Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "Vaša konfigurácia Elementu obsahuje nesprávne JSON. Prosím, opravte chybu a obnovte stránku.",
|
"Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "Vaša konfigurácia Elementu obsahuje nesprávny údaj JSON. Prosím, opravte chybu a obnovte stránku.",
|
||||||
"Your browser can't run %(brand)s": "Váš prehliadač nerozbehne %(brand)s",
|
"Your browser can't run %(brand)s": "Váš prehliadač nerozbehne %(brand)s",
|
||||||
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s používa pokročilé funkcie prehliadača, ktoré nie sú podporované vaším aktuálnym prehliadačom."
|
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s používa pokročilé funkcie prehliadača, ktoré nie sú podporované vaším aktuálnym prehliadačom.",
|
||||||
|
"Powered by Matrix": "používa protokol Matrix"
|
||||||
}
|
}
|
||||||
|
|
|
@ -55,16 +55,6 @@
|
||||||
<section id="matrixchat" style="height: 100%; overflow: auto;" class="notranslate"></section>
|
<section id="matrixchat" style="height: 100%; overflow: auto;" class="notranslate"></section>
|
||||||
<script src="<%= htmlWebpackPlugin.files.chunks['bundle'].entry %>"></script>
|
<script src="<%= htmlWebpackPlugin.files.chunks['bundle'].entry %>"></script>
|
||||||
|
|
||||||
<!-- Legacy supporting Prefetch images -->
|
|
||||||
<img src="<%= require('matrix-react-sdk/res/img/warning.svg') %>" width="24" height="23" style="visibility: hidden; position: absolute; top: 0px; left: 0px;"/>
|
|
||||||
<img src="<%= require('matrix-react-sdk/res/img/e2e/warning.svg') %>" width="24" height="23" style="visibility: hidden; position: absolute; top: 0px; left: 0px;"/>
|
|
||||||
<img src="<%= require('matrix-react-sdk/res/img/feather-customised/warning-triangle.svg') %>" width="24" height="23" style="visibility: hidden; position: absolute; top: 0px; left: 0px;"/>
|
|
||||||
<img src="<%= require('matrix-react-sdk/res/img/format/bold.svg') %>" width="25" height="22" style="visibility: hidden; position: absolute; top: 0px; left: 0px;"/>
|
|
||||||
<img src="<%= require('matrix-react-sdk/res/img/format/code.svg') %>" width="25" height="22" style="visibility: hidden; position: absolute; top: 0px; left: 0px;"/>
|
|
||||||
<img src="<%= require('matrix-react-sdk/res/img/format/italics.svg') %>" width="25" height="22" style="visibility: hidden; position: absolute; top: 0px; left: 0px;"/>
|
|
||||||
<img src="<%= require('matrix-react-sdk/res/img/format/quote.svg') %>" width="25" height="22" style="visibility: hidden; position: absolute; top: 0px; left: 0px;"/>
|
|
||||||
<img src="<%= require('matrix-react-sdk/res/img/format/strikethrough.svg') %>" width="25" height="22" style="visibility: hidden; position: absolute; top: 0px; left: 0px;"/>
|
|
||||||
|
|
||||||
<audio id="messageAudio">
|
<audio id="messageAudio">
|
||||||
<source src="media/message.ogg" type="audio/ogg" />
|
<source src="media/message.ogg" type="audio/ogg" />
|
||||||
<source src="media/message.mp3" type="audio/mpeg" />
|
<source src="media/message.mp3" type="audio/mpeg" />
|
||||||
|
|
|
@ -30,7 +30,7 @@ import './modernizr';
|
||||||
|
|
||||||
// load service worker if available on this platform
|
// load service worker if available on this platform
|
||||||
if ('serviceWorker' in navigator) {
|
if ('serviceWorker' in navigator) {
|
||||||
navigator.serviceWorker.register('sw.js');
|
navigator.serviceWorker.register('service-worker.js');
|
||||||
}
|
}
|
||||||
|
|
||||||
async function settled(...promises: Array<Promise<any>>) {
|
async function settled(...promises: Array<Promise<any>>) {
|
||||||
|
|
|
@ -3,7 +3,7 @@ const HtmlWebpackPlugin = require('html-webpack-plugin');
|
||||||
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
|
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
|
||||||
const TerserPlugin = require('terser-webpack-plugin');
|
const TerserPlugin = require('terser-webpack-plugin');
|
||||||
const OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin');
|
const OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin');
|
||||||
const webpack = require("webpack");
|
const WorkboxPlugin = require('workbox-webpack-plugin');
|
||||||
|
|
||||||
let og_image_url = process.env.RIOT_OG_IMAGE_URL;
|
let og_image_url = process.env.RIOT_OG_IMAGE_URL;
|
||||||
if (!og_image_url) og_image_url = 'https://app.element.io/themes/element/img/logos/opengraph.png';
|
if (!og_image_url) og_image_url = 'https://app.element.io/themes/element/img/logos/opengraph.png';
|
||||||
|
@ -248,9 +248,9 @@ module.exports = (env, argv) => {
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
// cache-bust languages.json file placed in
|
// cache-bust i18n .json files placed in
|
||||||
// riot-web/webapp/i18n during build by copy-res.js
|
// riot-web/webapp/i18n during build by copy-res.js
|
||||||
test: /\.*languages.json$/,
|
test: /i18n\/.*\.json$/,
|
||||||
type: "javascript/auto",
|
type: "javascript/auto",
|
||||||
loader: 'file-loader',
|
loader: 'file-loader',
|
||||||
options: {
|
options: {
|
||||||
|
@ -356,6 +356,20 @@ module.exports = (env, argv) => {
|
||||||
minify: argv.mode === 'production',
|
minify: argv.mode === 'production',
|
||||||
chunks: ['usercontent'],
|
chunks: ['usercontent'],
|
||||||
}),
|
}),
|
||||||
|
|
||||||
|
new WorkboxPlugin.GenerateSW({
|
||||||
|
runtimeCaching: [{
|
||||||
|
urlPattern: /i18n\/.*\.json$/,
|
||||||
|
handler: 'CacheFirst',
|
||||||
|
|
||||||
|
options: {
|
||||||
|
cacheName: 'i18n',
|
||||||
|
expiration: {
|
||||||
|
maxEntries: 2,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}],
|
||||||
|
}),
|
||||||
],
|
],
|
||||||
|
|
||||||
output: {
|
output: {
|
||||||
|
|
Loading…
Reference in a new issue