diff --git a/CHANGELOG.md b/CHANGELOG.md index fe3fb26c..ae8209ad 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,17 @@ +Changes in [0.10.2](https://github.com/vector-im/riot-web/releases/tag/v0.10.2) (2017-06-06) +============================================================================================ +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.10.1...v0.10.2) + + * Hotfix for bugs where navigating straight to a URL like /#/login and + and /#/forgot_password + + +Changes in [0.10.1](https://github.com/vector-im/riot-web/releases/tag/v0.10.1) (2017-06-02) +============================================================================================ +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.10.0...v0.10.1) + + * Update to matrix-react-sdk 0.9.1 to fix i18n error which broke start chat in some circumstances + Changes in [0.10.0](https://github.com/vector-im/riot-web/releases/tag/v0.10.0) (2017-06-02) ============================================================================================ [Full Changelog](https://github.com/vector-im/riot-web/compare/v0.10.0-rc.2...v0.10.0) diff --git a/README.md b/README.md index 388d2d9b..89f2148f 100644 --- a/README.md +++ b/README.md @@ -134,7 +134,7 @@ Running as a Desktop app Riot can also be run as a desktop app, wrapped in electron. You can download a pre-built version from https://riot.im/desktop.html or, if you prefer, -built it yourself. +build it yourself. Requires Electron >=1.6.0 To run as a desktop app: @@ -285,7 +285,7 @@ You'll need to do this in each new terminal you open before building Riot. How to add a new translation? ============================= -[translationsstatus](https://translate.nordgedanken.de/engage/riot-web/?utm_source=widget) +[translationsstatus](https://translate.riot.im/engage/riot-web/?utm_source=widget) Head to the [translating doc](docs/translating.md) diff --git a/config.sample.json b/config.sample.json index c9b3d65b..7f2c97f9 100644 --- a/config.sample.json +++ b/config.sample.json @@ -11,6 +11,7 @@ "matrix.org" ] }, + "welcomeUserId": "@riot-bot:matrix.org", "piwik": { "url": "https://piwik.riot.im/", "siteId": 1 diff --git a/docs/translating-dev.md b/docs/translating-dev.md index 80d4b64a..55ba34be 100644 --- a/docs/translating-dev.md +++ b/docs/translating-dev.md @@ -8,9 +8,9 @@ ## Adding new strings -1. Check if the import ``import _t from 'counterpart-riot'`` is present. If not add it to the other import statements. +1. Check if the import ``import { _t } from 'matrix-react-sdk/lib/languageHandler';`` is present. If not add it to the other import statements. 2. Add ``_t()`` to your string. (Don't forget curly braces when you assign an expression to JSX attributes in the render method) -3. Add the String to the ``en_EN.json`` file in ``src/i18n`` or if you are working in matrix-react-sdk you can find the json file in ``src/i18n/strings`` +3. Add the String to the ``en_EN.json`` file in ``src/i18n/strings`` (respect which repository you are on). ## Adding variables inside a string. diff --git a/docs/translating.md b/docs/translating.md index ca9920d3..3fd0731d 100644 --- a/docs/translating.md +++ b/docs/translating.md @@ -8,25 +8,25 @@ ## Step 0: Join #riotweb-translations:matrix.org -1. Come and join https://riot.im/develop/#/room/#riotweb-translations:matrix.org +1. Come and join https://matrix.to/#/#riotweb-translations:matrix.org 2. Read scrollback and/or ask if anyone else is working on your language, and co-ordinate if needed. In general little-or-no coordination is needed though :) ## Step 1: Preparing your Weblate Profile -1. Head to https://translate.nordgedanken.de and register either via Github or email +1. Head to https://translate.riot.im and register either via Github or email 2. After registering check if you got an email to verify your account and click the link (if there is none head to step 1.4) 3. Log into weblate -4. Head to https://translate.nordgedanken.de/accounts/profile/ and select the languages you know and maybe another language you know too. -6. Head to https://translate.nordgedanken.de/accounts/profile/#subscriptions and select Riot Web as Project +4. Head to https://translate.riot.im/accounts/profile/ and select the languages you know and maybe another language you know too. +6. Head to https://translate.riot.im/accounts/profile/#subscriptions and select Riot Web as Project ## How to check if your language already is being translated -Go to https://translate.nordgedanken.de/projects/riot-web/ and visit the 2 sub-projects. +Go to https://translate.riot.im/projects/riot-web/ and visit the 2 sub-projects. If your language is listed go to Step 2a and if not go to Step 2b ## Step 2a: Helping on existing languages. -1. Head to one of the projects listed https://translate.nordgedanken.de/projects/riot-web/ +1. Head to one of the projects listed https://translate.riot.im/projects/riot-web/ 2. Click on the ``translate`` button on the right side of your language 3. Fill in the translations in the writeable field. You will see the original English string and the string of your second language above. @@ -34,7 +34,7 @@ Head to the explanations under Steb 2b ## Step 2b: Adding a new language -1. Go to one of the projects listed https://translate.nordgedanken.de/projects/riot-web/ +1. Go to one of the projects listed https://translate.riot.im/projects/riot-web/ 2. Click the ``Start new language`` button at the bottom 3. Select a language 4. Start translating like in 2a.3 diff --git a/electron_app/package.json b/electron_app/package.json index 096c1e96..a21fd522 100644 --- a/electron_app/package.json +++ b/electron_app/package.json @@ -2,12 +2,13 @@ "name": "riot-web", "productName": "Riot", "main": "src/electron-main.js", - "version": "0.10.0", + "version": "0.10.2", "description": "A feature-rich client for Matrix.org", "author": "Vector Creations Ltd.", "dependencies": { - "electron-window-state": "^4.1.0", "auto-launch": "^5.0.1", - "minimist": "^1.2.0" + "electron-window-state": "^4.1.0", + "minimist": "^1.2.0", + "png-to-ico": "^1.0.2" } } diff --git a/electron_app/src/electron-main.js b/electron_app/src/electron-main.js index d793ab9b..b0d4de4c 100644 --- a/electron_app/src/electron-main.js +++ b/electron_app/src/electron-main.js @@ -1,6 +1,7 @@ /* Copyright 2016 Aviral Dasgupta Copyright 2016 OpenMarket Ltd +Copyright 2017 Michael Telatynski <7t3chguy@gmail.com> Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -155,6 +156,20 @@ electron.ipcMain.on('settings_set', function(ev, key, value) { }); electron.app.on('ready', () => { + + if (argv.devtools) { + try { + const { default: installExtension, REACT_DEVELOPER_TOOLS, REACT_PERF } = require('electron-devtools-installer'); + installExtension(REACT_DEVELOPER_TOOLS) + .then((name) => console.log(`Added Extension: ${name}`)) + .catch((err) => console.log('An error occurred: ', err)); + installExtension(REACT_PERF) + .then((name) => console.log(`Added Extension: ${name}`)) + .catch((err) => console.log('An error occurred: ', err)); + } catch(e) {console.log(e);} + } + + if (vectorConfig.update_base_url) { console.log(`Starting auto update with base URL: ${vectorConfig.update_base_url}`); updater.start(vectorConfig.update_base_url) diff --git a/electron_app/src/tray.js b/electron_app/src/tray.js index 9df1a0fb..039e7133 100644 --- a/electron_app/src/tray.js +++ b/electron_app/src/tray.js @@ -16,6 +16,9 @@ limitations under the License. */ const {app, Tray, Menu, nativeImage} = require('electron'); +const pngToIco = require('png-to-ico'); +const path = require('path'); +const fs = require('fs'); let trayIcon = null; @@ -57,7 +60,7 @@ exports.create = function(win, config) { trayIcon.on('click', toggleWin); let lastFavicon = null; - win.webContents.on('page-favicon-updated', function(ev, favicons) { + win.webContents.on('page-favicon-updated', async function(ev, favicons) { let newFavicon = config.icon_path; if (favicons && favicons.length > 0 && favicons[0].startsWith('data:')) { newFavicon = favicons[0]; @@ -70,6 +73,15 @@ exports.create = function(win, config) { // if its not default we have to construct into nativeImage if (newFavicon !== config.icon_path) { newFavicon = nativeImage.createFromDataURL(favicons[0]); + + if (process.platform === 'win32') { + try { + const icoPath = path.join(app.getPath('temp'), 'win32_riot_icon.ico') + const icoBuf = await pngToIco(newFavicon.toPNG()); + fs.writeFileSync(icoPath, icoBuf); + newFavicon = icoPath; + } catch (e) {console.error(e);} + } } trayIcon.setImage(newFavicon); diff --git a/package.json b/package.json index 73ebc009..ffed4f17 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "riot-web", "productName": "Riot", "main": "electron_app/src/electron-main.js", - "version": "0.10.0", + "version": "0.10.2", "description": "A feature-rich client for Matrix.org", "author": "Vector Creations Ltd.", "repository": { @@ -46,7 +46,7 @@ "start:prod": "parallelshell \"npm run reskindex:watch\" \"npm run start:res\" \"npm run start:js:prod\"", "lint": "eslint src/", "lintall": "eslint src/ test/", - "clean": "rimraf lib webapp electron/dist", + "clean": "rimraf lib webapp electron_app/dist", "prepublish": "npm run build:compile", "test": "karma start --single-run=true --autoWatch=false --browsers PhantomJS --colors=false", "test-multi": "karma start" @@ -66,7 +66,7 @@ "highlight.js": "^9.0.0", "linkifyjs": "^2.1.3", "matrix-js-sdk": "0.7.10", - "matrix-react-sdk": "0.9.0", + "matrix-react-sdk": "0.9.2", "modernizr": "^3.1.0", "pako": "^1.0.5", "q": "^1.4.1", @@ -76,8 +76,10 @@ "react-dom": "^15.4.0", "react-gemini-scrollbar": "matrix-org/react-gemini-scrollbar#5e97aef", "sanitize-html": "^1.11.1", + "text-encoding-utf-8": "^1.0.1", "ua-parser-js": "^0.7.10", - "url": "^0.11.0" + "url": "^0.11.0", + "velocity-vector": "vector-im/velocity#059e3b2" }, "devDependencies": { "autoprefixer": "^6.6.0", @@ -101,6 +103,7 @@ "css-raw-loader": "^0.1.1", "electron-builder": "^11.2.4", "electron-builder-squirrel-windows": "^11.2.1", + "electron-devtools-installer": "^2.2.0", "emojione": "^2.2.7", "eslint": "^3.14.0", "eslint-config-google": "^0.7.1", @@ -162,7 +165,7 @@ "category": "Network;InstantMessaging;Chat", "maintainer": "support@riot.im", "desktop": { - "StartupWMClass": "riot-web" + "StartupWMClass": "riot" } }, "win": { diff --git a/res/flags/AD.png b/res/flags/AD.png index 8e777b98..d5d59645 100644 Binary files a/res/flags/AD.png and b/res/flags/AD.png differ diff --git a/res/flags/AE.png b/res/flags/AE.png index 1c4a2bb7..05c7418a 100644 Binary files a/res/flags/AE.png and b/res/flags/AE.png differ diff --git a/res/flags/AF.png b/res/flags/AF.png index 7d369371..bc7cef09 100644 Binary files a/res/flags/AF.png and b/res/flags/AF.png differ diff --git a/res/flags/AG.png b/res/flags/AG.png index 78c03626..d48facad 100644 Binary files a/res/flags/AG.png and b/res/flags/AG.png differ diff --git a/res/flags/AI.png b/res/flags/AI.png index 8a707823..8fd27cd3 100644 Binary files a/res/flags/AI.png and b/res/flags/AI.png differ diff --git a/res/flags/AL.png b/res/flags/AL.png index b19c7bc5..883835ff 100644 Binary files a/res/flags/AL.png and b/res/flags/AL.png differ diff --git a/res/flags/AM.png b/res/flags/AM.png index b39695fd..b1bb36b9 100644 Binary files a/res/flags/AM.png and b/res/flags/AM.png differ diff --git a/res/flags/AO.png b/res/flags/AO.png index 5aee75af..ae68b12c 100644 Binary files a/res/flags/AO.png and b/res/flags/AO.png differ diff --git a/res/flags/AQ.png b/res/flags/AQ.png index fa76fbb2..146e9c0a 100644 Binary files a/res/flags/AQ.png and b/res/flags/AQ.png differ diff --git a/res/flags/AR.png b/res/flags/AR.png index 28750f42..8142adfc 100644 Binary files a/res/flags/AR.png and b/res/flags/AR.png differ diff --git a/res/flags/AS.png b/res/flags/AS.png index 36ba9b34..cc5bf30d 100644 Binary files a/res/flags/AS.png and b/res/flags/AS.png differ diff --git a/res/flags/AT.png b/res/flags/AT.png index 487fee82..e32414bd 100644 Binary files a/res/flags/AT.png and b/res/flags/AT.png differ diff --git a/res/flags/AU.png b/res/flags/AU.png index 7004861f..8d1e1437 100644 Binary files a/res/flags/AU.png and b/res/flags/AU.png differ diff --git a/res/flags/AW.png b/res/flags/AW.png index 238084e4..6ec17884 100644 Binary files a/res/flags/AW.png and b/res/flags/AW.png differ diff --git a/res/flags/AX.png b/res/flags/AX.png index 07ac7742..ba269c04 100644 Binary files a/res/flags/AX.png and b/res/flags/AX.png differ diff --git a/res/flags/AZ.png b/res/flags/AZ.png index 686dbed7..2bf3c746 100644 Binary files a/res/flags/AZ.png and b/res/flags/AZ.png differ diff --git a/res/flags/BA.png b/res/flags/BA.png index 5cfbb6d6..3e3ec3fc 100644 Binary files a/res/flags/BA.png and b/res/flags/BA.png differ diff --git a/res/flags/BB.png b/res/flags/BB.png index dcdbae7a..694050ca 100644 Binary files a/res/flags/BB.png and b/res/flags/BB.png differ diff --git a/res/flags/BD.png b/res/flags/BD.png index 3bd977a4..6de2cde8 100644 Binary files a/res/flags/BD.png and b/res/flags/BD.png differ diff --git a/res/flags/BE.png b/res/flags/BE.png index 555ac8bb..742ba923 100644 Binary files a/res/flags/BE.png and b/res/flags/BE.png differ diff --git a/res/flags/BF.png b/res/flags/BF.png index 5a80be2a..17f9f67d 100644 Binary files a/res/flags/BF.png and b/res/flags/BF.png differ diff --git a/res/flags/BG.png b/res/flags/BG.png index 6d8be358..b01d3ff5 100644 Binary files a/res/flags/BG.png and b/res/flags/BG.png differ diff --git a/res/flags/BH.png b/res/flags/BH.png index 0d98e0e0..d0f82e82 100644 Binary files a/res/flags/BH.png and b/res/flags/BH.png differ diff --git a/res/flags/BI.png b/res/flags/BI.png index e2659e3b..21865ac7 100644 Binary files a/res/flags/BI.png and b/res/flags/BI.png differ diff --git a/res/flags/BJ.png b/res/flags/BJ.png index 13fa3c91..a7c60914 100644 Binary files a/res/flags/BJ.png and b/res/flags/BJ.png differ diff --git a/res/flags/BL.png b/res/flags/BL.png index 8e50a796..6d50a0f5 100644 Binary files a/res/flags/BL.png and b/res/flags/BL.png differ diff --git a/res/flags/BM.png b/res/flags/BM.png index 53de7c39..310a25ea 100644 Binary files a/res/flags/BM.png and b/res/flags/BM.png differ diff --git a/res/flags/BN.png b/res/flags/BN.png index 3ed976eb..bc4da8d9 100644 Binary files a/res/flags/BN.png and b/res/flags/BN.png differ diff --git a/res/flags/BO.png b/res/flags/BO.png index 8e20ea8c..144b8d32 100644 Binary files a/res/flags/BO.png and b/res/flags/BO.png differ diff --git a/res/flags/BQ.png b/res/flags/BQ.png index 15472266..08979437 100644 Binary files a/res/flags/BQ.png and b/res/flags/BQ.png differ diff --git a/res/flags/BR.png b/res/flags/BR.png index 7a2bc17a..02784925 100644 Binary files a/res/flags/BR.png and b/res/flags/BR.png differ diff --git a/res/flags/BS.png b/res/flags/BS.png index 2a152575..2b05a8fc 100644 Binary files a/res/flags/BS.png and b/res/flags/BS.png differ diff --git a/res/flags/BT.png b/res/flags/BT.png index 4782cf34..1f031df0 100644 Binary files a/res/flags/BT.png and b/res/flags/BT.png differ diff --git a/res/flags/BV.png b/res/flags/BV.png index 991a6cd7..aafb0f17 100644 Binary files a/res/flags/BV.png and b/res/flags/BV.png differ diff --git a/res/flags/BW.png b/res/flags/BW.png index cd788955..30840167 100644 Binary files a/res/flags/BW.png and b/res/flags/BW.png differ diff --git a/res/flags/BY.png b/res/flags/BY.png index 40cdd8a7..ce9de9c9 100644 Binary files a/res/flags/BY.png and b/res/flags/BY.png differ diff --git a/res/flags/BZ.png b/res/flags/BZ.png index 5de79b76..33620c3f 100644 Binary files a/res/flags/BZ.png and b/res/flags/BZ.png differ diff --git a/res/flags/CA.png b/res/flags/CA.png index 68bcac99..4bbf8b11 100644 Binary files a/res/flags/CA.png and b/res/flags/CA.png differ diff --git a/res/flags/CC.png b/res/flags/CC.png index 13fe2b7f..fd40fc8a 100644 Binary files a/res/flags/CC.png and b/res/flags/CC.png differ diff --git a/res/flags/CD.png b/res/flags/CD.png index c1930409..230aacd4 100644 Binary files a/res/flags/CD.png and b/res/flags/CD.png differ diff --git a/res/flags/CF.png b/res/flags/CF.png index 6df77507..c58ed4f7 100644 Binary files a/res/flags/CF.png and b/res/flags/CF.png differ diff --git a/res/flags/CG.png b/res/flags/CG.png index 2d37cd50..6c2441e3 100644 Binary files a/res/flags/CG.png and b/res/flags/CG.png differ diff --git a/res/flags/CH.png b/res/flags/CH.png index 00d38717..9fd87167 100644 Binary files a/res/flags/CH.png and b/res/flags/CH.png differ diff --git a/res/flags/CI.png b/res/flags/CI.png index 82c7606e..9741b9b1 100644 Binary files a/res/flags/CI.png and b/res/flags/CI.png differ diff --git a/res/flags/CK.png b/res/flags/CK.png index 26bca5f9..6cca3596 100644 Binary files a/res/flags/CK.png and b/res/flags/CK.png differ diff --git a/res/flags/CL.png b/res/flags/CL.png index 317ec573..13b993d1 100644 Binary files a/res/flags/CL.png and b/res/flags/CL.png differ diff --git a/res/flags/CM.png b/res/flags/CM.png index c5605d63..bca5730f 100644 Binary files a/res/flags/CM.png and b/res/flags/CM.png differ diff --git a/res/flags/CN.png b/res/flags/CN.png index 1c25ab86..e086855c 100644 Binary files a/res/flags/CN.png and b/res/flags/CN.png differ diff --git a/res/flags/CO.png b/res/flags/CO.png index b328c1ea..65c0aba4 100644 Binary files a/res/flags/CO.png and b/res/flags/CO.png differ diff --git a/res/flags/CR.png b/res/flags/CR.png index df959197..b351c67a 100644 Binary files a/res/flags/CR.png and b/res/flags/CR.png differ diff --git a/res/flags/CU.png b/res/flags/CU.png index 60f6a8c8..e7a25c60 100644 Binary files a/res/flags/CU.png and b/res/flags/CU.png differ diff --git a/res/flags/CV.png b/res/flags/CV.png index 2dfe516d..f249bbaa 100644 Binary files a/res/flags/CV.png and b/res/flags/CV.png differ diff --git a/res/flags/CW.png b/res/flags/CW.png index 2380de15..e02cacd3 100644 Binary files a/res/flags/CW.png and b/res/flags/CW.png differ diff --git a/res/flags/CX.png b/res/flags/CX.png index 49a51c16..3ea21422 100644 Binary files a/res/flags/CX.png and b/res/flags/CX.png differ diff --git a/res/flags/CY.png b/res/flags/CY.png index 08a0e372..3182f48b 100644 Binary files a/res/flags/CY.png and b/res/flags/CY.png differ diff --git a/res/flags/CZ.png b/res/flags/CZ.png index 90ceaa24..54623346 100644 Binary files a/res/flags/CZ.png and b/res/flags/CZ.png differ diff --git a/res/flags/DE.png b/res/flags/DE.png index 90cab7e9..93e26916 100644 Binary files a/res/flags/DE.png and b/res/flags/DE.png differ diff --git a/res/flags/DJ.png b/res/flags/DJ.png index c424a807..243bb739 100644 Binary files a/res/flags/DJ.png and b/res/flags/DJ.png differ diff --git a/res/flags/DK.png b/res/flags/DK.png index 5a3845ad..fc74cc39 100644 Binary files a/res/flags/DK.png and b/res/flags/DK.png differ diff --git a/res/flags/DM.png b/res/flags/DM.png index e7fb60c0..c3a0e9d1 100644 Binary files a/res/flags/DM.png and b/res/flags/DM.png differ diff --git a/res/flags/DO.png b/res/flags/DO.png index 03c2f1b9..5c4a004f 100644 Binary files a/res/flags/DO.png and b/res/flags/DO.png differ diff --git a/res/flags/DZ.png b/res/flags/DZ.png index 9d63939e..1589d0cc 100644 Binary files a/res/flags/DZ.png and b/res/flags/DZ.png differ diff --git a/res/flags/EC.png b/res/flags/EC.png index 92e2a9e9..4c53dead 100644 Binary files a/res/flags/EC.png and b/res/flags/EC.png differ diff --git a/res/flags/EE.png b/res/flags/EE.png index 08156869..3668de79 100644 Binary files a/res/flags/EE.png and b/res/flags/EE.png differ diff --git a/res/flags/EG.png b/res/flags/EG.png index 7e9d6c5c..66ec709d 100644 Binary files a/res/flags/EG.png and b/res/flags/EG.png differ diff --git a/res/flags/EH.png b/res/flags/EH.png index f8e59b21..148be93c 100644 Binary files a/res/flags/EH.png and b/res/flags/EH.png differ diff --git a/res/flags/ER.png b/res/flags/ER.png index ffeb28da..7cb84415 100644 Binary files a/res/flags/ER.png and b/res/flags/ER.png differ diff --git a/res/flags/ES.png b/res/flags/ES.png index 3ce59fe8..aae73b6f 100644 Binary files a/res/flags/ES.png and b/res/flags/ES.png differ diff --git a/res/flags/ET.png b/res/flags/ET.png index f9d92859..7b420f02 100644 Binary files a/res/flags/ET.png and b/res/flags/ET.png differ diff --git a/res/flags/FI.png b/res/flags/FI.png index 0930988c..42f64bf3 100644 Binary files a/res/flags/FI.png and b/res/flags/FI.png differ diff --git a/res/flags/FJ.png b/res/flags/FJ.png index 2a78075d..cecc683c 100644 Binary files a/res/flags/FJ.png and b/res/flags/FJ.png differ diff --git a/res/flags/FK.png b/res/flags/FK.png index 52543390..6074fea0 100644 Binary files a/res/flags/FK.png and b/res/flags/FK.png differ diff --git a/res/flags/FM.png b/res/flags/FM.png index 0ba546ed..45fdb664 100644 Binary files a/res/flags/FM.png and b/res/flags/FM.png differ diff --git a/res/flags/FO.png b/res/flags/FO.png index 2a0cd645..d8fd75c6 100644 Binary files a/res/flags/FO.png and b/res/flags/FO.png differ diff --git a/res/flags/FR.png b/res/flags/FR.png index ef05d74b..6d50a0f5 100644 Binary files a/res/flags/FR.png and b/res/flags/FR.png differ diff --git a/res/flags/GA.png b/res/flags/GA.png index 6539d6dd..3808a61f 100644 Binary files a/res/flags/GA.png and b/res/flags/GA.png differ diff --git a/res/flags/GB.png b/res/flags/GB.png index 2938e61b..589be700 100644 Binary files a/res/flags/GB.png and b/res/flags/GB.png differ diff --git a/res/flags/GD.png b/res/flags/GD.png index a55638e7..babe1e4c 100644 Binary files a/res/flags/GD.png and b/res/flags/GD.png differ diff --git a/res/flags/GE.png b/res/flags/GE.png index c6cfd2b0..d34cddec 100644 Binary files a/res/flags/GE.png and b/res/flags/GE.png differ diff --git a/res/flags/GF.png b/res/flags/GF.png index dfc1badf..98828a59 100644 Binary files a/res/flags/GF.png and b/res/flags/GF.png differ diff --git a/res/flags/GG.png b/res/flags/GG.png index a79f8c1f..aec8969b 100644 Binary files a/res/flags/GG.png and b/res/flags/GG.png differ diff --git a/res/flags/GH.png b/res/flags/GH.png index bda5d6f6..70b1a623 100644 Binary files a/res/flags/GH.png and b/res/flags/GH.png differ diff --git a/res/flags/GI.png b/res/flags/GI.png index 620b50b3..9aa58327 100644 Binary files a/res/flags/GI.png and b/res/flags/GI.png differ diff --git a/res/flags/GL.png b/res/flags/GL.png index c3d6bcf3..cf1645c2 100644 Binary files a/res/flags/GL.png and b/res/flags/GL.png differ diff --git a/res/flags/GM.png b/res/flags/GM.png index fa2d771e..ec374fb3 100644 Binary files a/res/flags/GM.png and b/res/flags/GM.png differ diff --git a/res/flags/GN.png b/res/flags/GN.png index dabe7ce4..46874b4d 100644 Binary files a/res/flags/GN.png and b/res/flags/GN.png differ diff --git a/res/flags/GP.png b/res/flags/GP.png index 7bf76956..81b7abdf 100644 Binary files a/res/flags/GP.png and b/res/flags/GP.png differ diff --git a/res/flags/GQ.png b/res/flags/GQ.png index edae61e9..7fd1015e 100644 Binary files a/res/flags/GQ.png and b/res/flags/GQ.png differ diff --git a/res/flags/GR.png b/res/flags/GR.png index 5abc59d3..101de51e 100644 Binary files a/res/flags/GR.png and b/res/flags/GR.png differ diff --git a/res/flags/GS.png b/res/flags/GS.png index baa930d0..772c2cbe 100644 Binary files a/res/flags/GS.png and b/res/flags/GS.png differ diff --git a/res/flags/GT.png b/res/flags/GT.png index 10ef0cdd..d5bd8c1e 100644 Binary files a/res/flags/GT.png and b/res/flags/GT.png differ diff --git a/res/flags/GU.png b/res/flags/GU.png index 166c121e..8923085d 100644 Binary files a/res/flags/GU.png and b/res/flags/GU.png differ diff --git a/res/flags/GW.png b/res/flags/GW.png index fb59de83..20c268ce 100644 Binary files a/res/flags/GW.png and b/res/flags/GW.png differ diff --git a/res/flags/GY.png b/res/flags/GY.png index 65499a7c..86f56635 100644 Binary files a/res/flags/GY.png and b/res/flags/GY.png differ diff --git a/res/flags/HK.png b/res/flags/HK.png index 39588384..907dc596 100644 Binary files a/res/flags/HK.png and b/res/flags/HK.png differ diff --git a/res/flags/HM.png b/res/flags/HM.png index 26a61cbf..8d1e1437 100644 Binary files a/res/flags/HM.png and b/res/flags/HM.png differ diff --git a/res/flags/HN.png b/res/flags/HN.png index bf923cb8..4cf8c311 100644 Binary files a/res/flags/HN.png and b/res/flags/HN.png differ diff --git a/res/flags/HR.png b/res/flags/HR.png index 139e143b..413ceb15 100644 Binary files a/res/flags/HR.png and b/res/flags/HR.png differ diff --git a/res/flags/HT.png b/res/flags/HT.png index 2583da39..097abeb4 100644 Binary files a/res/flags/HT.png and b/res/flags/HT.png differ diff --git a/res/flags/HU.png b/res/flags/HU.png index 625846af..23499bf6 100644 Binary files a/res/flags/HU.png and b/res/flags/HU.png differ diff --git a/res/flags/ID.png b/res/flags/ID.png index f88d48af..80200657 100644 Binary files a/res/flags/ID.png and b/res/flags/ID.png differ diff --git a/res/flags/IE.png b/res/flags/IE.png index 17f255fc..63f22201 100644 Binary files a/res/flags/IE.png and b/res/flags/IE.png differ diff --git a/res/flags/IL.png b/res/flags/IL.png index 6c9a6b57..02688263 100644 Binary files a/res/flags/IL.png and b/res/flags/IL.png differ diff --git a/res/flags/IM.png b/res/flags/IM.png index 936e801d..c777acc4 100644 Binary files a/res/flags/IM.png and b/res/flags/IM.png differ diff --git a/res/flags/IN.png b/res/flags/IN.png index ecba2f9c..85fa9bfe 100644 Binary files a/res/flags/IN.png and b/res/flags/IN.png differ diff --git a/res/flags/IO.png b/res/flags/IO.png index b0edb161..1675d8e7 100644 Binary files a/res/flags/IO.png and b/res/flags/IO.png differ diff --git a/res/flags/IQ.png b/res/flags/IQ.png index 19055f14..f2c21f72 100644 Binary files a/res/flags/IQ.png and b/res/flags/IQ.png differ diff --git a/res/flags/IR.png b/res/flags/IR.png index 9056d21e..0b8e6750 100644 Binary files a/res/flags/IR.png and b/res/flags/IR.png differ diff --git a/res/flags/IS.png b/res/flags/IS.png index 06be01a8..5ee3e63c 100644 Binary files a/res/flags/IS.png and b/res/flags/IS.png differ diff --git a/res/flags/IT.png b/res/flags/IT.png index 50e17b22..53b967be 100644 Binary files a/res/flags/IT.png and b/res/flags/IT.png differ diff --git a/res/flags/JE.png b/res/flags/JE.png index 456a1a83..a1437aba 100644 Binary files a/res/flags/JE.png and b/res/flags/JE.png differ diff --git a/res/flags/JM.png b/res/flags/JM.png index 5e4e73d3..0d462fa3 100644 Binary files a/res/flags/JM.png and b/res/flags/JM.png differ diff --git a/res/flags/JO.png b/res/flags/JO.png index 5982705b..8934db7e 100644 Binary files a/res/flags/JO.png and b/res/flags/JO.png differ diff --git a/res/flags/JP.png b/res/flags/JP.png index 009a990a..6f92d523 100644 Binary files a/res/flags/JP.png and b/res/flags/JP.png differ diff --git a/res/flags/KE.png b/res/flags/KE.png index b5a9f733..866b3f15 100644 Binary files a/res/flags/KE.png and b/res/flags/KE.png differ diff --git a/res/flags/KG.png b/res/flags/KG.png index acf6646b..56b433c7 100644 Binary files a/res/flags/KG.png and b/res/flags/KG.png differ diff --git a/res/flags/KH.png b/res/flags/KH.png index 58ad9c61..e1ddd5f8 100644 Binary files a/res/flags/KH.png and b/res/flags/KH.png differ diff --git a/res/flags/KI.png b/res/flags/KI.png index 49902d25..8b7c54bc 100644 Binary files a/res/flags/KI.png and b/res/flags/KI.png differ diff --git a/res/flags/KM.png b/res/flags/KM.png index 9fa9a454..227a3b33 100644 Binary files a/res/flags/KM.png and b/res/flags/KM.png differ diff --git a/res/flags/KN.png b/res/flags/KN.png index 3b39f8f7..bc6189be 100644 Binary files a/res/flags/KN.png and b/res/flags/KN.png differ diff --git a/res/flags/KP.png b/res/flags/KP.png index eacc3ad0..c92248b9 100644 Binary files a/res/flags/KP.png and b/res/flags/KP.png differ diff --git a/res/flags/KR.png b/res/flags/KR.png index a0df8da0..ab1cb949 100644 Binary files a/res/flags/KR.png and b/res/flags/KR.png differ diff --git a/res/flags/KW.png b/res/flags/KW.png index c6839950..0b41c7a5 100644 Binary files a/res/flags/KW.png and b/res/flags/KW.png differ diff --git a/res/flags/KY.png b/res/flags/KY.png index 3f82fa74..7af5290d 100644 Binary files a/res/flags/KY.png and b/res/flags/KY.png differ diff --git a/res/flags/KZ.png b/res/flags/KZ.png index 4b436212..e10a1255 100644 Binary files a/res/flags/KZ.png and b/res/flags/KZ.png differ diff --git a/res/flags/LA.png b/res/flags/LA.png index ee9c41ea..6ad67d42 100644 Binary files a/res/flags/LA.png and b/res/flags/LA.png differ diff --git a/res/flags/LB.png b/res/flags/LB.png index 7b4d6653..865df57a 100644 Binary files a/res/flags/LB.png and b/res/flags/LB.png differ diff --git a/res/flags/LC.png b/res/flags/LC.png index d97f8d8d..e83a2d08 100644 Binary files a/res/flags/LC.png and b/res/flags/LC.png differ diff --git a/res/flags/LI.png b/res/flags/LI.png index c75a229f..57034d36 100644 Binary files a/res/flags/LI.png and b/res/flags/LI.png differ diff --git a/res/flags/LK.png b/res/flags/LK.png index 2ca1a0c1..6e7ad582 100644 Binary files a/res/flags/LK.png and b/res/flags/LK.png differ diff --git a/res/flags/LR.png b/res/flags/LR.png index 41bf4a96..46c3b84a 100644 Binary files a/res/flags/LR.png and b/res/flags/LR.png differ diff --git a/res/flags/LS.png b/res/flags/LS.png index 10cf81b0..79b505d4 100644 Binary files a/res/flags/LS.png and b/res/flags/LS.png differ diff --git a/res/flags/LT.png b/res/flags/LT.png index 17a36c71..7740cdc0 100644 Binary files a/res/flags/LT.png and b/res/flags/LT.png differ diff --git a/res/flags/LU.png b/res/flags/LU.png index 675a891d..8f383e67 100644 Binary files a/res/flags/LU.png and b/res/flags/LU.png differ diff --git a/res/flags/LV.png b/res/flags/LV.png index 763a6120..a0f36d89 100644 Binary files a/res/flags/LV.png and b/res/flags/LV.png differ diff --git a/res/flags/LY.png b/res/flags/LY.png index 5211a902..2884c4c0 100644 Binary files a/res/flags/LY.png and b/res/flags/LY.png differ diff --git a/res/flags/MA.png b/res/flags/MA.png index 098db500..1f76cfc9 100644 Binary files a/res/flags/MA.png and b/res/flags/MA.png differ diff --git a/res/flags/MC.png b/res/flags/MC.png index 8d1a9813..06fc2ad1 100644 Binary files a/res/flags/MC.png and b/res/flags/MC.png differ diff --git a/res/flags/MD.png b/res/flags/MD.png index 6ca6f734..8e54c2b8 100644 Binary files a/res/flags/MD.png and b/res/flags/MD.png differ diff --git a/res/flags/ME.png b/res/flags/ME.png index c7fccac3..97424d4e 100644 Binary files a/res/flags/ME.png and b/res/flags/ME.png differ diff --git a/res/flags/MF.png b/res/flags/MF.png index 7f6824e0..6d50a0f5 100644 Binary files a/res/flags/MF.png and b/res/flags/MF.png differ diff --git a/res/flags/MG.png b/res/flags/MG.png index 55bc8985..28bfccc9 100644 Binary files a/res/flags/MG.png and b/res/flags/MG.png differ diff --git a/res/flags/MH.png b/res/flags/MH.png index 44849779..e482a659 100644 Binary files a/res/flags/MH.png and b/res/flags/MH.png differ diff --git a/res/flags/MK.png b/res/flags/MK.png index ef8d2e55..84e2e65e 100644 Binary files a/res/flags/MK.png and b/res/flags/MK.png differ diff --git a/res/flags/ML.png b/res/flags/ML.png index b8c5737f..38fec347 100644 Binary files a/res/flags/ML.png and b/res/flags/ML.png differ diff --git a/res/flags/MM.png b/res/flags/MM.png index afac4940..70a03c6b 100644 Binary files a/res/flags/MM.png and b/res/flags/MM.png differ diff --git a/res/flags/MN.png b/res/flags/MN.png index 6e3de338..1e1bbe60 100644 Binary files a/res/flags/MN.png and b/res/flags/MN.png differ diff --git a/res/flags/MO.png b/res/flags/MO.png index 02118edf..3833d683 100644 Binary files a/res/flags/MO.png and b/res/flags/MO.png differ diff --git a/res/flags/MP.png b/res/flags/MP.png index a85be51b..63119096 100644 Binary files a/res/flags/MP.png and b/res/flags/MP.png differ diff --git a/res/flags/MQ.png b/res/flags/MQ.png index 92eb0727..9cab441a 100644 Binary files a/res/flags/MQ.png and b/res/flags/MQ.png differ diff --git a/res/flags/MR.png b/res/flags/MR.png index 95a52726..c144de17 100644 Binary files a/res/flags/MR.png and b/res/flags/MR.png differ diff --git a/res/flags/MS.png b/res/flags/MS.png index a811c5bd..12217070 100644 Binary files a/res/flags/MS.png and b/res/flags/MS.png differ diff --git a/res/flags/MT.png b/res/flags/MT.png index 857672bf..7963aa61 100644 Binary files a/res/flags/MT.png and b/res/flags/MT.png differ diff --git a/res/flags/MU.png b/res/flags/MU.png index 8f6abb73..d5d4d400 100644 Binary files a/res/flags/MU.png and b/res/flags/MU.png differ diff --git a/res/flags/MV.png b/res/flags/MV.png index bdb8119f..0f2ecb43 100644 Binary files a/res/flags/MV.png and b/res/flags/MV.png differ diff --git a/res/flags/MW.png b/res/flags/MW.png index c684776a..d0a5d24f 100644 Binary files a/res/flags/MW.png and b/res/flags/MW.png differ diff --git a/res/flags/MX.png b/res/flags/MX.png index aee282de..096cb111 100644 Binary files a/res/flags/MX.png and b/res/flags/MX.png differ diff --git a/res/flags/MY.png b/res/flags/MY.png index 3941aa8c..17f18ac5 100644 Binary files a/res/flags/MY.png and b/res/flags/MY.png differ diff --git a/res/flags/MZ.png b/res/flags/MZ.png index dd497c23..66be6563 100644 Binary files a/res/flags/MZ.png and b/res/flags/MZ.png differ diff --git a/res/flags/NA.png b/res/flags/NA.png index 68e4aeab..7ecfd317 100644 Binary files a/res/flags/NA.png and b/res/flags/NA.png differ diff --git a/res/flags/NC.png b/res/flags/NC.png index ffcc2166..11126ade 100644 Binary files a/res/flags/NC.png and b/res/flags/NC.png differ diff --git a/res/flags/NE.png b/res/flags/NE.png index 08950d2f..d584fa84 100644 Binary files a/res/flags/NE.png and b/res/flags/NE.png differ diff --git a/res/flags/NF.png b/res/flags/NF.png index 2728ed54..c0540425 100644 Binary files a/res/flags/NF.png and b/res/flags/NF.png differ diff --git a/res/flags/NG.png b/res/flags/NG.png index 5812b2d2..73aee15b 100644 Binary files a/res/flags/NG.png and b/res/flags/NG.png differ diff --git a/res/flags/NI.png b/res/flags/NI.png index d09e1329..fd044933 100644 Binary files a/res/flags/NI.png and b/res/flags/NI.png differ diff --git a/res/flags/NL.png b/res/flags/NL.png index f9203282..08979437 100644 Binary files a/res/flags/NL.png and b/res/flags/NL.png differ diff --git a/res/flags/NO.png b/res/flags/NO.png index 0bedee3f..aafb0f17 100644 Binary files a/res/flags/NO.png and b/res/flags/NO.png differ diff --git a/res/flags/NP.png b/res/flags/NP.png index e7775c25..744458e1 100644 Binary files a/res/flags/NP.png and b/res/flags/NP.png differ diff --git a/res/flags/NR.png b/res/flags/NR.png index 4760404b..58c2afb2 100644 Binary files a/res/flags/NR.png and b/res/flags/NR.png differ diff --git a/res/flags/NU.png b/res/flags/NU.png index 7c130d5b..007c99ec 100644 Binary files a/res/flags/NU.png and b/res/flags/NU.png differ diff --git a/res/flags/NZ.png b/res/flags/NZ.png index 67c98728..839368dd 100644 Binary files a/res/flags/NZ.png and b/res/flags/NZ.png differ diff --git a/res/flags/OM.png b/res/flags/OM.png index a6762503..63a89336 100644 Binary files a/res/flags/OM.png and b/res/flags/OM.png differ diff --git a/res/flags/PA.png b/res/flags/PA.png index ed18bdda..3515d95d 100644 Binary files a/res/flags/PA.png and b/res/flags/PA.png differ diff --git a/res/flags/PE.png b/res/flags/PE.png index 7485279c..58f70b8d 100644 Binary files a/res/flags/PE.png and b/res/flags/PE.png differ diff --git a/res/flags/PF.png b/res/flags/PF.png index 6623f413..2f33f257 100644 Binary files a/res/flags/PF.png and b/res/flags/PF.png differ diff --git a/res/flags/PG.png b/res/flags/PG.png index 92504c51..c796f587 100644 Binary files a/res/flags/PG.png and b/res/flags/PG.png differ diff --git a/res/flags/PH.png b/res/flags/PH.png index d6d67621..0d98de03 100644 Binary files a/res/flags/PH.png and b/res/flags/PH.png differ diff --git a/res/flags/PK.png b/res/flags/PK.png index f7c8bb94..87f4e2f4 100644 Binary files a/res/flags/PK.png and b/res/flags/PK.png differ diff --git a/res/flags/PL.png b/res/flags/PL.png index 8303b1ea..273869df 100644 Binary files a/res/flags/PL.png and b/res/flags/PL.png differ diff --git a/res/flags/PM.png b/res/flags/PM.png index 2507c86e..b74c396d 100644 Binary files a/res/flags/PM.png and b/res/flags/PM.png differ diff --git a/res/flags/PN.png b/res/flags/PN.png index c5e1d884..e34c62d5 100644 Binary files a/res/flags/PN.png and b/res/flags/PN.png differ diff --git a/res/flags/PR.png b/res/flags/PR.png index 938c8350..8efdb912 100644 Binary files a/res/flags/PR.png and b/res/flags/PR.png differ diff --git a/res/flags/PS.png b/res/flags/PS.png index d106ba89..7a0cceec 100644 Binary files a/res/flags/PS.png and b/res/flags/PS.png differ diff --git a/res/flags/PT.png b/res/flags/PT.png index 168f0605..49e29082 100644 Binary files a/res/flags/PT.png and b/res/flags/PT.png differ diff --git a/res/flags/PW.png b/res/flags/PW.png index 2d6e5d5b..6cb2e1e7 100644 Binary files a/res/flags/PW.png and b/res/flags/PW.png differ diff --git a/res/flags/PY.png b/res/flags/PY.png index 9cae9a78..a61c42c4 100644 Binary files a/res/flags/PY.png and b/res/flags/PY.png differ diff --git a/res/flags/QA.png b/res/flags/QA.png index ce9d31ed..bb091cc8 100644 Binary files a/res/flags/QA.png and b/res/flags/QA.png differ diff --git a/res/flags/RE.png b/res/flags/RE.png index 85c25710..6d50a0f5 100644 Binary files a/res/flags/RE.png and b/res/flags/RE.png differ diff --git a/res/flags/RO.png b/res/flags/RO.png index e77996d5..4495d29e 100644 Binary files a/res/flags/RO.png and b/res/flags/RO.png differ diff --git a/res/flags/RS.png b/res/flags/RS.png index fc7a2ab7..ebb0f28a 100644 Binary files a/res/flags/RS.png and b/res/flags/RS.png differ diff --git a/res/flags/RU.png b/res/flags/RU.png index 8b3df779..64532ffa 100644 Binary files a/res/flags/RU.png and b/res/flags/RU.png differ diff --git a/res/flags/RW.png b/res/flags/RW.png index 87f71867..64b3cfff 100644 Binary files a/res/flags/RW.png and b/res/flags/RW.png differ diff --git a/res/flags/SA.png b/res/flags/SA.png index d93b91c7..250de6f6 100644 Binary files a/res/flags/SA.png and b/res/flags/SA.png differ diff --git a/res/flags/SB.png b/res/flags/SB.png index e9a2a8f3..5833c130 100644 Binary files a/res/flags/SB.png and b/res/flags/SB.png differ diff --git a/res/flags/SC.png b/res/flags/SC.png index 488ac3be..ce5248f4 100644 Binary files a/res/flags/SC.png and b/res/flags/SC.png differ diff --git a/res/flags/SD.png b/res/flags/SD.png index 6ba8c5ca..d8711a83 100644 Binary files a/res/flags/SD.png and b/res/flags/SD.png differ diff --git a/res/flags/SE.png b/res/flags/SE.png index e7bd806f..81880931 100644 Binary files a/res/flags/SE.png and b/res/flags/SE.png differ diff --git a/res/flags/SG.png b/res/flags/SG.png index 797069fc..6f00e579 100644 Binary files a/res/flags/SG.png and b/res/flags/SG.png differ diff --git a/res/flags/SH.png b/res/flags/SH.png index b2c589d0..055dde68 100644 Binary files a/res/flags/SH.png and b/res/flags/SH.png differ diff --git a/res/flags/SI.png b/res/flags/SI.png index be8e7a89..96359834 100644 Binary files a/res/flags/SI.png and b/res/flags/SI.png differ diff --git a/res/flags/SJ.png b/res/flags/SJ.png index 1dd7e786..aafb0f17 100644 Binary files a/res/flags/SJ.png and b/res/flags/SJ.png differ diff --git a/res/flags/SK.png b/res/flags/SK.png index be3d10f2..84c7021f 100644 Binary files a/res/flags/SK.png and b/res/flags/SK.png differ diff --git a/res/flags/SL.png b/res/flags/SL.png index b3f997b1..c5ed1991 100644 Binary files a/res/flags/SL.png and b/res/flags/SL.png differ diff --git a/res/flags/SM.png b/res/flags/SM.png index b30f77ad..1af1ca28 100644 Binary files a/res/flags/SM.png and b/res/flags/SM.png differ diff --git a/res/flags/SN.png b/res/flags/SN.png index b5cdb210..d0b18435 100644 Binary files a/res/flags/SN.png and b/res/flags/SN.png differ diff --git a/res/flags/SO.png b/res/flags/SO.png index 5f808508..64e2970b 100644 Binary files a/res/flags/SO.png and b/res/flags/SO.png differ diff --git a/res/flags/SR.png b/res/flags/SR.png index a2d124e9..b072dda8 100644 Binary files a/res/flags/SR.png and b/res/flags/SR.png differ diff --git a/res/flags/SS.png b/res/flags/SS.png index 19c65899..83933d45 100644 Binary files a/res/flags/SS.png and b/res/flags/SS.png differ diff --git a/res/flags/ST.png b/res/flags/ST.png index 1d2befe4..c102721a 100644 Binary files a/res/flags/ST.png and b/res/flags/ST.png differ diff --git a/res/flags/SV.png b/res/flags/SV.png index fc3a9ca4..80de92e5 100644 Binary files a/res/flags/SV.png and b/res/flags/SV.png differ diff --git a/res/flags/SX.png b/res/flags/SX.png index 6051aaa6..dd52215c 100644 Binary files a/res/flags/SX.png and b/res/flags/SX.png differ diff --git a/res/flags/SY.png b/res/flags/SY.png index 0d51d071..78f45b7c 100644 Binary files a/res/flags/SY.png and b/res/flags/SY.png differ diff --git a/res/flags/SZ.png b/res/flags/SZ.png index a7366cb6..2182f4ff 100644 Binary files a/res/flags/SZ.png and b/res/flags/SZ.png differ diff --git a/res/flags/TC.png b/res/flags/TC.png index 39971bb9..3e3e19d4 100644 Binary files a/res/flags/TC.png and b/res/flags/TC.png differ diff --git a/res/flags/TD.png b/res/flags/TD.png index 1fb647d4..753bec22 100644 Binary files a/res/flags/TD.png and b/res/flags/TD.png differ diff --git a/res/flags/TF.png b/res/flags/TF.png index 41bd9334..6d50a0f5 100644 Binary files a/res/flags/TF.png and b/res/flags/TF.png differ diff --git a/res/flags/TG.png b/res/flags/TG.png index 560fc098..8501ada6 100644 Binary files a/res/flags/TG.png and b/res/flags/TG.png differ diff --git a/res/flags/TH.png b/res/flags/TH.png index 9ee5ce89..0c884c32 100644 Binary files a/res/flags/TH.png and b/res/flags/TH.png differ diff --git a/res/flags/TJ.png b/res/flags/TJ.png index ca4be077..3c9026fa 100644 Binary files a/res/flags/TJ.png and b/res/flags/TJ.png differ diff --git a/res/flags/TK.png b/res/flags/TK.png index 88a7eb1a..fd605749 100644 Binary files a/res/flags/TK.png and b/res/flags/TK.png differ diff --git a/res/flags/TL.png b/res/flags/TL.png index fa6c365b..b4c834b1 100644 Binary files a/res/flags/TL.png and b/res/flags/TL.png differ diff --git a/res/flags/TM.png b/res/flags/TM.png index 6cc0539d..d18cb939 100644 Binary files a/res/flags/TM.png and b/res/flags/TM.png differ diff --git a/res/flags/TN.png b/res/flags/TN.png index 1cc09ec6..21c4b98b 100644 Binary files a/res/flags/TN.png and b/res/flags/TN.png differ diff --git a/res/flags/TO.png b/res/flags/TO.png index 44c42ce0..c828206e 100644 Binary files a/res/flags/TO.png and b/res/flags/TO.png differ diff --git a/res/flags/TR.png b/res/flags/TR.png index 4e63d61b..f2a5bd22 100644 Binary files a/res/flags/TR.png and b/res/flags/TR.png differ diff --git a/res/flags/TT.png b/res/flags/TT.png index 3831347f..66d69833 100644 Binary files a/res/flags/TT.png and b/res/flags/TT.png differ diff --git a/res/flags/TV.png b/res/flags/TV.png index 2f24fbf7..7a127f51 100644 Binary files a/res/flags/TV.png and b/res/flags/TV.png differ diff --git a/res/flags/TW.png b/res/flags/TW.png index cda05c9b..2353ba1b 100644 Binary files a/res/flags/TW.png and b/res/flags/TW.png differ diff --git a/res/flags/TZ.png b/res/flags/TZ.png index a60d5b3f..7949f65d 100644 Binary files a/res/flags/TZ.png and b/res/flags/TZ.png differ diff --git a/res/flags/UA.png b/res/flags/UA.png index f62089b6..687e3052 100644 Binary files a/res/flags/UA.png and b/res/flags/UA.png differ diff --git a/res/flags/UG.png b/res/flags/UG.png index 8fb590e8..0a21ad15 100644 Binary files a/res/flags/UG.png and b/res/flags/UG.png differ diff --git a/res/flags/US.png b/res/flags/US.png index f6b7ab98..c3a245b7 100644 Binary files a/res/flags/US.png and b/res/flags/US.png differ diff --git a/res/flags/UY.png b/res/flags/UY.png index 11abe8c1..21a347c6 100644 Binary files a/res/flags/UY.png and b/res/flags/UY.png differ diff --git a/res/flags/UZ.png b/res/flags/UZ.png index 5d9168a3..643b6ae0 100644 Binary files a/res/flags/UZ.png and b/res/flags/UZ.png differ diff --git a/res/flags/VA.png b/res/flags/VA.png index 4e5a92bd..63a13c0e 100644 Binary files a/res/flags/VA.png and b/res/flags/VA.png differ diff --git a/res/flags/VC.png b/res/flags/VC.png index 4a8dfa41..da991a93 100644 Binary files a/res/flags/VC.png and b/res/flags/VC.png differ diff --git a/res/flags/VE.png b/res/flags/VE.png index 3632def0..e75e17c9 100644 Binary files a/res/flags/VE.png and b/res/flags/VE.png differ diff --git a/res/flags/VG.png b/res/flags/VG.png index 15a5e5fa..46f93cad 100644 Binary files a/res/flags/VG.png and b/res/flags/VG.png differ diff --git a/res/flags/VI.png b/res/flags/VI.png index 986a53d2..8c849a73 100644 Binary files a/res/flags/VI.png and b/res/flags/VI.png differ diff --git a/res/flags/VN.png b/res/flags/VN.png index f19db790..6ea2122f 100644 Binary files a/res/flags/VN.png and b/res/flags/VN.png differ diff --git a/res/flags/VU.png b/res/flags/VU.png index a322030a..bad3ba4d 100644 Binary files a/res/flags/VU.png and b/res/flags/VU.png differ diff --git a/res/flags/WF.png b/res/flags/WF.png index 5f6e2bed..d94359dc 100644 Binary files a/res/flags/WF.png and b/res/flags/WF.png differ diff --git a/res/flags/WS.png b/res/flags/WS.png index de43a373..f8b80e5b 100644 Binary files a/res/flags/WS.png and b/res/flags/WS.png differ diff --git a/res/flags/YE.png b/res/flags/YE.png index b132bc13..8b9bbd89 100644 Binary files a/res/flags/YE.png and b/res/flags/YE.png differ diff --git a/res/flags/YT.png b/res/flags/YT.png index 5c450dfb..32887936 100644 Binary files a/res/flags/YT.png and b/res/flags/YT.png differ diff --git a/res/flags/ZA.png b/res/flags/ZA.png index adec062d..7f0a52d3 100644 Binary files a/res/flags/ZA.png and b/res/flags/ZA.png differ diff --git a/res/flags/ZM.png b/res/flags/ZM.png index 56287f58..87adc3af 100644 Binary files a/res/flags/ZM.png and b/res/flags/ZM.png differ diff --git a/res/flags/ZW.png b/res/flags/ZW.png index e58dff38..742c9f7e 100644 Binary files a/res/flags/ZW.png and b/res/flags/ZW.png differ diff --git a/res/home.html b/res/home.html new file mode 100644 index 00000000..3ba2e964 --- /dev/null +++ b/res/home.html @@ -0,0 +1,292 @@ + + +
+
+ +
+

_t("Welcome to Riot.im")

+

_t("Decentralised, encrypted chat & collaboration powered by [matrix]")

+
+
+
+
+
+

_t("Search the room directory")

+ + + + + _t("Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!") + +
+
+
+
+

_t("Chat with Riot Bot")

+ + + + + _t("Get started with some tips from Riot Bot!") + +
+
+
+ +

_t("General discussion about Matrix and Riot")

+ +
+
+ + + Matrix HQ + + _t("Discussion of all things Matrix!") +
+
+ + + Riot + + _t("Riot/Web & Desktop chat") +
+
+ + + #riot-ios + + _t("Riot/iOS & matrix-ios-sdk chat") +
+
+ + + #riot-android + + _t("Riot/Android & matrix-android-sdk chat") +
+
+ +

_t("Matrix technical discussions")

+

_t("Running Matrix services")

+ +
+
+ + + Synapse Support Community + + _t("Community-run support for Synapse") +
+
+ + + #dendrite:matrix.org + + _t("Admin support for Dendrite") +
+
+ + + Synapse Homeowners + + _t("Announcements about Synapse releases") +
+
+ + + IRC Matrix Bridges + + _t("Support for those using and running matrix-appservice-irc") +
+
+ +

_t("Building services on Matrix")

+ +
+
+ + + #matrix-dev:matrix.org + + _t("Support for those using the Matrix spec") +
+
+ + + End-to-end crypto in Matrix + + _t("Design and implementation of E2E in Matrix") +
+
+ + + #vr:matrix.org + + _t("Implementing VR services with Matrix") +
+
+ + + #webrtc:matrix.org + + _t("Implementing VoIP services with Matrix") +
+
+ + + Matrix Identity + + _t("Discussion of the Identity Service API") +
+
+ + + Matrix Bridging + + _t("Support for those using, running and writing other bridges") +
+
+ +

_t("Contributing code to Matrix and Riot")

+ +
+
+ + + #riot-dev + + _t("Dev chat for the Riot/Web dev team") +
+
+ + + #dendrite-dev + + _t("Dev chat for the Dendrite dev team") +
+
+ + + Riot-Web Translations + + _t("Co-ordination for Riot/Web translators") +
+
+
diff --git a/res/home/images/logo.svg b/res/home/images/logo.svg new file mode 100644 index 00000000..a5f70e5e --- /dev/null +++ b/res/home/images/logo.svg @@ -0,0 +1,76 @@ + + + + +New_logo + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/res/home/images/matrix.svg b/res/home/images/matrix.svg new file mode 100644 index 00000000..5c7dfbb5 --- /dev/null +++ b/res/home/images/matrix.svg @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/res/home/rooms/bridging.png b/res/home/rooms/bridging.png new file mode 100644 index 00000000..6b3a55e7 Binary files /dev/null and b/res/home/rooms/bridging.png differ diff --git a/res/home/rooms/dendrite-dev.png b/res/home/rooms/dendrite-dev.png new file mode 100644 index 00000000..1d96bd84 Binary files /dev/null and b/res/home/rooms/dendrite-dev.png differ diff --git a/res/home/rooms/dendrite.png b/res/home/rooms/dendrite.png new file mode 100644 index 00000000..1d96bd84 Binary files /dev/null and b/res/home/rooms/dendrite.png differ diff --git a/res/home/rooms/e2e.png b/res/home/rooms/e2e.png new file mode 100644 index 00000000..a2bda4bc Binary files /dev/null and b/res/home/rooms/e2e.png differ diff --git a/res/home/rooms/homeowners.png b/res/home/rooms/homeowners.png new file mode 100644 index 00000000..ed45f11c Binary files /dev/null and b/res/home/rooms/homeowners.png differ diff --git a/res/home/rooms/identity.jpg b/res/home/rooms/identity.jpg new file mode 100644 index 00000000..f2e15056 Binary files /dev/null and b/res/home/rooms/identity.jpg differ diff --git a/res/home/rooms/identity.png b/res/home/rooms/identity.png new file mode 100644 index 00000000..de1ea60d Binary files /dev/null and b/res/home/rooms/identity.png differ diff --git a/res/home/rooms/irc.png b/res/home/rooms/irc.png new file mode 100644 index 00000000..5f611d12 Binary files /dev/null and b/res/home/rooms/irc.png differ diff --git a/res/home/rooms/matrix-dev.png b/res/home/rooms/matrix-dev.png new file mode 100644 index 00000000..fa54f00c Binary files /dev/null and b/res/home/rooms/matrix-dev.png differ diff --git a/res/home/rooms/matrix.png b/res/home/rooms/matrix.png new file mode 100644 index 00000000..fa54f00c Binary files /dev/null and b/res/home/rooms/matrix.png differ diff --git a/res/home/rooms/riot-android.png b/res/home/rooms/riot-android.png new file mode 100644 index 00000000..fa2bec8e Binary files /dev/null and b/res/home/rooms/riot-android.png differ diff --git a/res/home/rooms/riot-bot.png b/res/home/rooms/riot-bot.png new file mode 100644 index 00000000..9efd4a3c Binary files /dev/null and b/res/home/rooms/riot-bot.png differ diff --git a/res/home/rooms/riot-dev.png b/res/home/rooms/riot-dev.png new file mode 100644 index 00000000..ff8b21ad Binary files /dev/null and b/res/home/rooms/riot-dev.png differ diff --git a/res/home/rooms/riot-ios.png b/res/home/rooms/riot-ios.png new file mode 100644 index 00000000..83306f7c Binary files /dev/null and b/res/home/rooms/riot-ios.png differ diff --git a/res/home/rooms/riot-translations.png b/res/home/rooms/riot-translations.png new file mode 100644 index 00000000..ee0f8558 Binary files /dev/null and b/res/home/rooms/riot-translations.png differ diff --git a/res/home/rooms/riot.png b/res/home/rooms/riot.png new file mode 100644 index 00000000..4daa2e4e Binary files /dev/null and b/res/home/rooms/riot.png differ diff --git a/res/home/rooms/synapse.png b/res/home/rooms/synapse.png new file mode 100644 index 00000000..ee0f8558 Binary files /dev/null and b/res/home/rooms/synapse.png differ diff --git a/res/home/rooms/vr.png b/res/home/rooms/vr.png new file mode 100644 index 00000000..98b77802 Binary files /dev/null and b/res/home/rooms/vr.png differ diff --git a/res/home/rooms/webrtc.png b/res/home/rooms/webrtc.png new file mode 100644 index 00000000..98b790f9 Binary files /dev/null and b/res/home/rooms/webrtc.png differ diff --git a/scripts/check-i18n.pl b/scripts/check-i18n.pl new file mode 120000 index 00000000..7d74c7a4 --- /dev/null +++ b/scripts/check-i18n.pl @@ -0,0 +1 @@ +../../matrix-react-sdk/scripts/check-i18n.pl \ No newline at end of file diff --git a/scripts/copy-res.js b/scripts/copy-res.js index 460b2b51..b02946ae 100755 --- a/scripts/copy-res.js +++ b/scripts/copy-res.js @@ -10,15 +10,20 @@ // control when we languages are available. const INCLUDE_LANGS = [ {'value': 'en_EN', 'label': 'English'}, + {'value': 'en_US', 'label': 'English (US)'}, {'value': 'da', 'label': 'Dansk'}, + {'value': 'el', 'label': 'Ελληνικά'}, {'value': 'nl', 'label': 'Nederlands'}, {'value': 'de_DE', 'label': 'Deutsch'}, {'value': 'fr', 'label': 'Français'}, {'value': 'pt', 'label': 'Português'}, {'value': 'pt_BR', 'label': 'Português do Brasil'}, {'value': 'ru', 'label': 'Русский'}, + {'value': 'sv', 'label': 'Svenska'}, {'value': 'es', 'label': 'Español'}, - {'value': 'zh_Hans', 'label': '中文'} + {'value': 'th', 'label': 'ไทย'}, + {'value': 'zh_Hans', 'label': '简体中文'}, // simplified chinese + {'value': 'zh_Hant', 'label': '繁體中文'}, // traditional chinese ]; // cpx includes globbed parts of the filename in the destination, but excludes @@ -26,6 +31,8 @@ const INCLUDE_LANGS = [ // "dest/b/...". const COPY_LIST = [ ["res/manifest.json", "webapp"], + ["res/home.html", "webapp"], + ["res/home/**", "webapp/home"], ["res/{media,vector-icons}/**", "webapp"], ["res/flags/*", "webapp/flags/"], ["src/skins/vector/{fonts,img}/**", "webapp"], @@ -166,9 +173,14 @@ function genLangList() { languages[normalizedLanguage] = {'fileName': lang.value + '.json', 'label': lang.label}; } }); - fs.writeFile('webapp/i18n/languages.json', JSON.stringify(languages, null, 4)); + fs.writeFile('webapp/i18n/languages.json', JSON.stringify(languages, null, 4), function(err) { + if (err) { + console.error("Copy Error occured: " + err); + throw new Error("Failed to generate languages.json"); + } + }); if (verbose) { - console.log("Generated language list"); + console.log("Generated languages.json"); } } diff --git a/scripts/fetch-develop.deps.sh b/scripts/fetch-develop.deps.sh index cc0f221a..4fa1a4a2 100755 --- a/scripts/fetch-develop.deps.sh +++ b/scripts/fetch-develop.deps.sh @@ -25,6 +25,11 @@ else fi fi +# Chop 'origin' off the start as jenkins ends up using +# branches on the origin, but this doesn't work if we +# specify the branch when cloning. +curbranch=${curbranch#origin/} + echo "Determined branch to be $curbranch" # clone a specific branch of a github repo diff --git a/scripts/genflags.sh b/scripts/genflags.sh index 826a0299..d960c6de 100755 --- a/scripts/genflags.sh +++ b/scripts/genflags.sh @@ -18,6 +18,9 @@ # - imagemagick --with-rsvg (because default imagemagick SVG # renderer does not produce accurate results) # +# on macOS, this is most easily done with: +# brew install imagemagick --with-librsvg +# # This will clone the googlei18n flag repo before converting # all phonenumber.js-supported country flags (as SVGs) into # PNGs that can be used by CountryDropdown.js. @@ -42,17 +45,18 @@ for f in region-flags/svg/*.svg; do # Run imagemagick convert # -background none : transparent background - # -thumbnail 25x15 : resize the flag to have a height of 15. + # -resize 50x30 : resize the flag to have a height of 15px (2x) # By default, aspect ratio is respected so the width will # be correct and not necessarily 25px. + # -filter Lanczos : use sharper resampling to avoid muddiness # -gravity Center : keep the image central when adding an -extent # -border 1 : add a 1px border around the flag # -bordercolor : set the border colour - # -extent 27x27 : surround the image with padding so that it - # has the dimensions 27x27. - convert $f -background none -thumbnail 25x15 \ - -gravity Center -border 1 -bordercolor \#e0e0e0 \ - -extent 27x27 $f.png + # -extent 54x54 : surround the image with padding so that it + # has the dimensions 27x27px (2x). + convert $f -background none -filter Lanczos -resize 50x30 \ + -gravity Center -border 1 -bordercolor \#e0e0e0 \ + -extent 54x54 $f.png # $f.png will be region-flags/svg/XX.svg.png at this point @@ -61,6 +65,6 @@ for f in region-flags/svg/*.svg; do # Replace .svg with .png newname=${newname%.svg}.png # Move the file to flags directory - mv $f.png res/flags/$newname + mv $f.png ../res/flags/$newname echo "Generated res/flags/"$newname done diff --git a/src/components/structures/BottomLeftMenu.js b/src/components/structures/BottomLeftMenu.js index c8c7ba2c..eacc500a 100644 --- a/src/components/structures/BottomLeftMenu.js +++ b/src/components/structures/BottomLeftMenu.js @@ -1,5 +1,6 @@ /* Copyright 2015, 2016 OpenMarket Ltd +Copyright 2017 Vector Creations Ltd Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -14,21 +15,21 @@ See the License for the specific language governing permissions and limitations under the License. */ -'use strict'; +import React from 'react'; +import ReactDOM from 'react-dom'; +import sdk from 'matrix-react-sdk'; +import dis from 'matrix-react-sdk/lib/dispatcher'; +import AccessibleButton from 'matrix-react-sdk/lib/components/views/elements/AccessibleButton'; +import Velocity from 'velocity-vector'; +import 'velocity-vector/velocity.ui'; -var React = require('react'); -var ReactDOM = require('react-dom'); -var sdk = require('matrix-react-sdk'); -import { _t } from 'matrix-react-sdk/lib/languageHandler'; -var dis = require('matrix-react-sdk/lib/dispatcher'); -var AccessibleButton = require('matrix-react-sdk/lib/components/views/elements/AccessibleButton'); +const CALLOUT_ANIM_DURATION = 1000; module.exports = React.createClass({ displayName: 'BottomLeftMenu', propTypes: { collapsed: React.PropTypes.bool.isRequired, - teamToken: React.PropTypes.string, }, getInitialState: function() { @@ -41,6 +42,18 @@ module.exports = React.createClass({ }); }, + componentWillMount: function() { + this._dispatcherRef = dis.register(this.onAction); + this._peopleButton = null; + this._directoryButton = null; + this._createRoomButton = null; + this._lastCallouts = {}; + }, + + componentWillUnmount: function() { + dis.unregister(this._dispatcherRef); + }, + // Room events onDirectoryClick: function() { dis.dispatch({ action: 'view_room_directory' }); @@ -105,6 +118,30 @@ module.exports = React.createClass({ this.setState({ settingsHover: false }); }, + onAction: function(payload) { + let calloutElement; + switch (payload.action) { + // Incoming instruction: dance! + case 'callout_start_chat': + calloutElement = this._peopleButton; + break; + case 'callout_room_directory': + calloutElement = this._directoryButton; + break; + case 'callout_create_room': + calloutElement = this._createRoomButton; + break; + } + if (calloutElement) { + const lastCallout = this._lastCallouts[payload.action]; + const now = Date.now(); + if (lastCallout == undefined || lastCallout < now - CALLOUT_ANIM_DURATION) { + this._lastCallouts[payload.action] = now; + Velocity(ReactDOM.findDOMNode(calloutElement), "callout.bounce", CALLOUT_ANIM_DURATION); + } + } + }, + // Get the label/tooltip to show getLabel: function(label, show) { if (show) { @@ -113,39 +150,41 @@ module.exports = React.createClass({ } }, - render: function() { - var TintableSvg = sdk.getComponent('elements.TintableSvg'); + _collectPeopleButton: function(e) { + this._peopleButton = e; + }, - var homeButton; - if (this.props.teamToken) { - homeButton = ( - - - { this.getLabel(_t("Welcome page"), this.state.homeHover) } - - ); - } + _collectDirectoryButton: function(e) { + this._directoryButton = e; + }, + + _collectCreateRoomButton: function(e) { + this._createRoomButton = e; + }, + + render: function() { + const HomeButton = sdk.getComponent('elements.HomeButton'); + const StartChatButton = sdk.getComponent('elements.StartChatButton'); + const RoomDirectoryButton = sdk.getComponent('elements.RoomDirectoryButton'); + const CreateRoomButton = sdk.getComponent('elements.CreateRoomButton'); + const SettingsButton = sdk.getComponent('elements.SettingsButton'); return (
- { homeButton } - - - { this.getLabel(_t("Start chat"), this.state.peopleHover) } - - - - { this.getLabel(_t("Room directory"), this.state.directoryHover) } - - - - { this.getLabel(_t("Create new room"), this.state.roomsHover) } - - - - { this.getLabel(_t("Settings"), this.state.settingsHover) } - + +
+ +
+
+ +
+
+ +
+ + +
); diff --git a/src/components/structures/HomePage.js b/src/components/structures/HomePage.js index 8d44c90a..e1e700f2 100644 --- a/src/components/structures/HomePage.js +++ b/src/components/structures/HomePage.js @@ -18,23 +18,82 @@ limitations under the License. 'use strict'; import React from 'react'; -import MatrixClientPeg from 'matrix-react-sdk/lib/MatrixClientPeg'; -import sdk from 'matrix-react-sdk'; +import GeminiScrollbar from 'react-gemini-scrollbar'; +import request from 'browser-request'; +import { _t } from 'matrix-react-sdk/lib/languageHandler'; +import sanitizeHtml from 'sanitize-html'; module.exports = React.createClass({ displayName: 'HomePage', propTypes: { - teamServerUrl: React.PropTypes.string.isRequired, - teamToken: React.PropTypes.string.isRequired, - collapsedRhs: React.PropTypes.bool, + // URL base of the team server. Optional. + teamServerUrl: React.PropTypes.string, + // Team token. Optional. If set, used to get the static homepage of the team + // associated. If unset, homePageUrl will be used. + teamToken: React.PropTypes.string, + // URL to use as the iFrame src. Defaults to /home.html. + homePageUrl: React.PropTypes.string, + }, + + getInitialState: function() { + return { + iframeSrc: '', + page: '', + }; + }, + + translate: function(s) { + s = sanitizeHtml(_t(s)); + // ugly fix for https://github.com/vector-im/riot-web/issues/4243 + s = s.replace(/Riot\.im/, 'Riot.im'); + s = s.replace(/\[matrix\]/, '[matrix]'); + return s; + }, + + componentWillMount: function() { + if (this.props.teamToken && this.props.teamServerUrl) { + this.setState({ + iframeSrc: `${this.props.teamServerUrl}/static/${this.props.teamToken}/home.html` + }); + } + else { + // we use request() to inline the homepage into the react component + // so that it can inherit CSS and theming easily rather than mess around + // with iframes and trying to synchronise document.stylesheets. + + let src = this.props.homePageUrl || 'home.html'; + + request( + { method: "GET", url: src }, + (err, response, body) => { + if (err || response.status < 200 || response.status >= 300) { + console.log(err); + this.setState({ page: "Couldn't load home page" }); + } + + body = body.replace(/_t\(['"]([\s\S]*?)['"]\)/mg, (match, g1)=>this.translate(g1)); + this.setState({ page: body }); + } + ); + } }, render: function() { - return ( -
-