From c1c8a2171e362bdf4e24187a7e58737da97adc8b Mon Sep 17 00:00:00 2001 From: Tom Fong Date: Thu, 24 Nov 2022 09:43:30 +0800 Subject: [PATCH 01/11] chore: regular update on dependencies --- package-lock.json | 168 +++++++++++++++++++++++----------------------- package.json | 14 ++-- 2 files changed, 91 insertions(+), 91 deletions(-) diff --git a/package-lock.json b/package-lock.json index e4d9de1..8ac6eec 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,13 +12,13 @@ "@angular/cdk": "^14.2.2", "@angular/common": "^14.2.3", "@angular/core": "^14.2.3", - "@angular/forms": "^14.2.11", - "@angular/localize": "^14.2.11", + "@angular/forms": "^14.2.12", + "@angular/localize": "^14.2.12", "@angular/material": "^14.2.2", "@angular/material-moment-adapter": "^14.2.7", "@angular/platform-browser": "^14.2.3", - "@angular/platform-browser-dynamic": "^14.2.11", - "@angular/router": "^14.2.11", + "@angular/platform-browser-dynamic": "^14.2.12", + "@angular/router": "^14.2.12", "@awesome-cordova-plugins/aes-256": "^6.2.0", "@awesome-cordova-plugins/chooser": "^6.2.0", "@awesome-cordova-plugins/core": "^6.2.0", @@ -26,7 +26,7 @@ "@awesome-cordova-plugins/sms": "^6.2.0", "@awesome-cordova-plugins/social-sharing": "^6.2.0", "@awesome-cordova-plugins/theme-detection": "^6.2.0", - "@capacitor-community/barcode-scanner": "^3.0.0", + "@capacitor-community/barcode-scanner": "^3.0.1", "@capacitor-community/contacts": "^2.0.0-0", "@capacitor-community/screen-brightness": "^4.0.0", "@capacitor/android": "^4.5.0", @@ -43,7 +43,7 @@ "@capacitor/splash-screen": "^4.1.2", "@capacitor/status-bar": "^4.1.0", "@capacitor/toast": "^4.1.0", - "@ionic/angular": "^6.3.7", + "@ionic/angular": "^6.3.8", "@ionic/storage": "^3.0.6", "@ionic/storage-angular": "^3.0.6", "@ng-bootstrap/ng-bootstrap": "^13.1.1", @@ -75,7 +75,7 @@ "@angular/cli": "^14.2.10", "@angular/compiler": "^14.2.3", "@angular/compiler-cli": "^14.2.3", - "@angular/language-service": "^14.2.11", + "@angular/language-service": "^14.2.12", "@capacitor/cli": "^4.5.0", "@ionic/angular-toolkit": "^6.1.0", "@ionic/cli": "6.20.1", @@ -306,9 +306,9 @@ } }, "node_modules/@angular/animations": { - "version": "14.2.11", - "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-14.2.11.tgz", - "integrity": "sha512-HOw8xecbKfs7A5Ezjf+BfXKvvwU7X8I0US5Ey6bOuLvpA3QVOGSLw9BeutY5Q2mPWiRgnNNQW+FOd8Pe9gEkpQ==", + "version": "14.2.12", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-14.2.12.tgz", + "integrity": "sha512-gwdnFZkvVUr+enUNfhfCGRGGqNHn1+vTA81apLfHYhJxgjiLUtETc4KTOrQevtDm022pEd+LSrvr8r+7ag+jkw==", "dependencies": { "tslib": "^2.3.0" }, @@ -316,7 +316,7 @@ "node": "^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/core": "14.2.11" + "@angular/core": "14.2.12" } }, "node_modules/@angular/cdk": { @@ -372,9 +372,9 @@ } }, "node_modules/@angular/common": { - "version": "14.2.11", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-14.2.11.tgz", - "integrity": "sha512-a5w7lz4SoUzCwSDnuUPnfbEYPA8ufFiXz44mOv48P4uIb78q3rZ/R/EyWD1O3yJPof0o8aPNKpKZzuRDv3Q8ow==", + "version": "14.2.12", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-14.2.12.tgz", + "integrity": "sha512-oZunh9wfInFWhNO1P8uoEs/o4u8kerKMhw8GruywKm1TV7gHDP2Fi5WHGjFqq3XYptgBTPCTSEfyLX6Cwq1PUw==", "dependencies": { "tslib": "^2.3.0" }, @@ -382,14 +382,14 @@ "node": "^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/core": "14.2.11", + "@angular/core": "14.2.12", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/compiler": { - "version": "14.2.11", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-14.2.11.tgz", - "integrity": "sha512-QD4tq37qqPxxNK4o0Pd7dJm06evwEPChV67S/ecX3S6UkSDp8lVoWKiVx9htp/5s4iydKZU4eGu9oTOMOLVdOw==", + "version": "14.2.12", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-14.2.12.tgz", + "integrity": "sha512-u2MH9+NRwbbFDRNiPWPexed9CnCq9+pGHLuyACSP2uR6Ik68cE6cayeZbIeoEV5vWpda/XsLmJgPJysw7dAZLQ==", "dependencies": { "tslib": "^2.3.0" }, @@ -397,7 +397,7 @@ "node": "^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/core": "14.2.11" + "@angular/core": "14.2.12" }, "peerDependenciesMeta": { "@angular/core": { @@ -406,9 +406,9 @@ } }, "node_modules/@angular/compiler-cli": { - "version": "14.2.11", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-14.2.11.tgz", - "integrity": "sha512-ipIEgueW8bhxVSq6qlgndBLVRCJoTvk1he/TI3w34m2EnZY1ctgGGCm1VbB3XARh+irVesPVMIAxRtjYds7XOw==", + "version": "14.2.12", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-14.2.12.tgz", + "integrity": "sha512-9Gkb9KFkaQPz8XaS8ZwwTioRZ4ywykdAWyceICEi78/Y9ConYrTX2SbFogzI2dPUZU8a04tMlbqTSmHjVbJftQ==", "dependencies": { "@babel/core": "^7.17.2", "chokidar": "^3.0.0", @@ -430,14 +430,14 @@ "node": "^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/compiler": "14.2.11", + "@angular/compiler": "14.2.12", "typescript": ">=4.6.2 <4.9" } }, "node_modules/@angular/core": { - "version": "14.2.11", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-14.2.11.tgz", - "integrity": "sha512-4uEIA6ESMLt2f/ivKuVBpME0IbuFHWmpweN4dwJt83DfJBiBfpqdrFYZHz/Kbkh9cGCiP7L4/eKPRWTlAHehhw==", + "version": "14.2.12", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-14.2.12.tgz", + "integrity": "sha512-sGQxU5u4uawwvJa6jOTmGoisJiQ5HIN/RoBw99CmoqZIVyUSg9IRJJC1KVdH8gbpWBNLkElZv21lwJTL/msWyg==", "dependencies": { "tslib": "^2.3.0" }, @@ -450,9 +450,9 @@ } }, "node_modules/@angular/forms": { - "version": "14.2.11", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-14.2.11.tgz", - "integrity": "sha512-sItoA3/I8j/pf3zhv8sR37M5dAYUJpezv8rw2fTT2Y+nZJFUpkFWqX2N4qpMlPY0MP9OX++8K8/d2j0Lfi3wJQ==", + "version": "14.2.12", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-14.2.12.tgz", + "integrity": "sha512-7abYlGIT2JnAtutQUlH3fQS6QEpbfftgvsVcZJCyvX0rXL3u2w2vUQkDHJH4YJJp3AHFVCH4/l7R4VcaPnrwvA==", "dependencies": { "tslib": "^2.3.0" }, @@ -460,25 +460,25 @@ "node": "^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/common": "14.2.11", - "@angular/core": "14.2.11", - "@angular/platform-browser": "14.2.11", + "@angular/common": "14.2.12", + "@angular/core": "14.2.12", + "@angular/platform-browser": "14.2.12", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/language-service": { - "version": "14.2.11", - "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-14.2.11.tgz", - "integrity": "sha512-YOQ7zVnRkZaIlAwA+u+x+wUGlvvKQDR+CGkIF19L/C0Zo6b8vFmfcNqWig6Wq8sRwS+5fULcPoOAESaUwq3urw==", + "version": "14.2.12", + "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-14.2.12.tgz", + "integrity": "sha512-YmW6simyEVmpDmbYVUhZ2IxSP6pmsWrV120rB9Y21/BeM39WIXA4NCNirVWlAd/KAKY9O7Sbn1nXI6rSDfhopQ==", "dev": true, "engines": { "node": "^14.15.0 || >=16.10.0" } }, "node_modules/@angular/localize": { - "version": "14.2.11", - "resolved": "https://registry.npmjs.org/@angular/localize/-/localize-14.2.11.tgz", - "integrity": "sha512-vrYv2f6BR1dKebZB+c0O4Arx7iGF1MqN4gHB+V5KHS7UPIc3YnoQn9LaFDRWWazjrXCvq1uf1Cb8qzzu19+lZQ==", + "version": "14.2.12", + "resolved": "https://registry.npmjs.org/@angular/localize/-/localize-14.2.12.tgz", + "integrity": "sha512-6TTnuvubvYL1LDIJhDfd7ygxTaj0ShTILCDXT4URBhZKQbQ3HAorDqsc6SXqZVGCHdqF0hGTaeN/7zVvgP9kzA==", "dependencies": { "@babel/core": "7.18.9", "glob": "8.0.3", @@ -493,8 +493,8 @@ "node": "^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/compiler": "14.2.11", - "@angular/compiler-cli": "14.2.11" + "@angular/compiler": "14.2.12", + "@angular/compiler-cli": "14.2.12" } }, "node_modules/@angular/localize/node_modules/@babel/core": { @@ -565,9 +565,9 @@ } }, "node_modules/@angular/platform-browser": { - "version": "14.2.11", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-14.2.11.tgz", - "integrity": "sha512-lGi9pF0Kf/GGrVKcfxxfStM2eMSluDTmbcYuVAX28iBn5XEdfsonrkfy2cnxUMnQ7nioMAZBNGOJHbQPKz4jwg==", + "version": "14.2.12", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-14.2.12.tgz", + "integrity": "sha512-vOarWym8ucl1gjYWCzdwyBha+MTvL381mvTTUu8aUx6nVhHFjv4bvpjlZnZgojecqUPyxOwmPLLHvCZPJVHZYg==", "dependencies": { "tslib": "^2.3.0" }, @@ -575,9 +575,9 @@ "node": "^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/animations": "14.2.11", - "@angular/common": "14.2.11", - "@angular/core": "14.2.11" + "@angular/animations": "14.2.12", + "@angular/common": "14.2.12", + "@angular/core": "14.2.12" }, "peerDependenciesMeta": { "@angular/animations": { @@ -586,9 +586,9 @@ } }, "node_modules/@angular/platform-browser-dynamic": { - "version": "14.2.11", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-14.2.11.tgz", - "integrity": "sha512-kjcZda+gcAiYd0I3mjLSr6xR/HkUCnmIMyqaFGoHnIDXI2c6wLDxi49pivrJFvUYJPfYAJ6GjlYTM6L9B3XSEQ==", + "version": "14.2.12", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-14.2.12.tgz", + "integrity": "sha512-oZhNJeaBmgw8+KBSYpKz2RYqEDyETC+HJXH8dwIFcP6BqqwL2NE70FdSR7EnOa5c41MEtTmMCGhrJSFR60x5/w==", "dependencies": { "tslib": "^2.3.0" }, @@ -596,16 +596,16 @@ "node": "^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/common": "14.2.11", - "@angular/compiler": "14.2.11", - "@angular/core": "14.2.11", - "@angular/platform-browser": "14.2.11" + "@angular/common": "14.2.12", + "@angular/compiler": "14.2.12", + "@angular/core": "14.2.12", + "@angular/platform-browser": "14.2.12" } }, "node_modules/@angular/router": { - "version": "14.2.11", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-14.2.11.tgz", - "integrity": "sha512-AbnyKXabar2WsG3fL24O1xdwkcRhRKI7u2vc9D8bcp2ks5GOJNxfbtG2Z6PSO18vtDszQxwELRe2cOEe+0TmPQ==", + "version": "14.2.12", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-14.2.12.tgz", + "integrity": "sha512-r5tVus5RJDNc4U2v0jMtjPiAS1xDsVsJ70lS313DgZmBDHIVZP1cWIehdxwgNlGwQQtAA36eG7toBwqUU3gb/A==", "dependencies": { "tslib": "^2.3.0" }, @@ -613,9 +613,9 @@ "node": "^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/common": "14.2.11", - "@angular/core": "14.2.11", - "@angular/platform-browser": "14.2.11", + "@angular/common": "14.2.12", + "@angular/core": "14.2.12", + "@angular/platform-browser": "14.2.12", "rxjs": "^6.5.3 || ^7.4.0" } }, @@ -2359,11 +2359,11 @@ } }, "node_modules/@capacitor-community/barcode-scanner": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@capacitor-community/barcode-scanner/-/barcode-scanner-3.0.0.tgz", - "integrity": "sha512-Jzr4phHyDS+C2ZE+eoVsuq15oFvFLVtAJmmegIjwVBcb3CxgRdkt/kdVurXgVKMQ6mJ6StYI7hALeMu2vkyC6A==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@capacitor-community/barcode-scanner/-/barcode-scanner-3.0.1.tgz", + "integrity": "sha512-3R6LXQ3kikuc71Pvffkul9pLvHK8v85VcvBw6E0rjAWgWJbCLf0ssBmycrqMa8/aMZjdw1XNn3nJTXijkfCifQ==", "peerDependencies": { - "@capacitor/core": "^4.0.0" + "@capacitor/core": "^4.5.0" } }, "node_modules/@capacitor-community/contacts": { @@ -2848,11 +2848,11 @@ "dev": true }, "node_modules/@ionic/angular": { - "version": "6.3.7", - "resolved": "https://registry.npmjs.org/@ionic/angular/-/angular-6.3.7.tgz", - "integrity": "sha512-a6EAhK5+elNNvnnSFKdNxdcNKd+epEpR1csQaiixisrWpWirxTNteqNLn9HAe+13iR8esI3mGgyOzVKr011ILw==", + "version": "6.3.8", + "resolved": "https://registry.npmjs.org/@ionic/angular/-/angular-6.3.8.tgz", + "integrity": "sha512-r+ac7V5yjYrIjBUD7vriP06g5Y9a8B55na4jrZ+psSh2l3tNHQ90DjUkAXRHGrlXzR5R5Xh8GCq/eH/NV9R6rQ==", "dependencies": { - "@ionic/core": "^6.3.6", + "@ionic/core": "^6.3.7", "ionicons": "^6.0.4", "jsonc-parser": "^3.0.0", "tslib": "^2.0.0" @@ -3323,9 +3323,9 @@ } }, "node_modules/@ionic/core": { - "version": "6.3.7", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-6.3.7.tgz", - "integrity": "sha512-HWntdPsc4lVHHwz7kY2BSQteafwXsPxc8y5wAdfeA8woRLGse+1Vq00CDUihf7tTUflM1CdmVgGtyYlDAnO2fA==", + "version": "6.3.8", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-6.3.8.tgz", + "integrity": "sha512-mpawxkbjx/lBaWMYexvEHzKP9+03gKKe/CXHGnBh7z9WHpDuR+H9jdojjiHkakoN79TcdM3G+BYMZ0tVGeeJhw==", "dependencies": { "@stencil/core": "^2.18.0", "ionicons": "^6.0.4", @@ -4467,9 +4467,9 @@ } }, "node_modules/anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -5018,9 +5018,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001431", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001431.tgz", - "integrity": "sha512-zBUoFU0ZcxpvSt9IU66dXVT/3ctO1cy4y9cscs1szkPlcWb6pasYM144GqrUygUbT+k7cmUCW61cvskjcv0enQ==", + "version": "1.0.30001434", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001434.tgz", + "integrity": "sha512-aOBHrLmTQw//WFa2rcF1If9fa3ypkC1wzqqiKHgfdrXTWcU8C4gKVZT77eQAPWN1APys3+uQ0Df07rKauXGEYA==", "funding": [ { "type": "opencollective", @@ -6284,9 +6284,9 @@ } }, "node_modules/enhanced-resolve": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz", - "integrity": "sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==", + "version": "5.12.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz", + "integrity": "sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==", "dev": true, "dependencies": { "graceful-fs": "^4.2.4", @@ -12868,17 +12868,17 @@ } }, "node_modules/socket.io": { - "version": "4.5.3", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.5.3.tgz", - "integrity": "sha512-zdpnnKU+H6mOp7nYRXH4GNv1ux6HL6+lHL8g7Ds7Lj8CkdK1jJK/dlwsKDculbyOHifcJ0Pr/yeXnZQ5GeFrcg==", + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.5.4.tgz", + "integrity": "sha512-m3GC94iK9MfIEeIBfbhJs5BqFibMtkRk8ZpKwG2QwxV0m/eEhPIV4ara6XCF1LWNAus7z58RodiZlAH71U3EhQ==", "dev": true, "dependencies": { "accepts": "~1.3.4", "base64id": "~2.0.0", "debug": "~4.3.2", - "engine.io": "~6.2.0", + "engine.io": "~6.2.1", "socket.io-adapter": "~2.4.0", - "socket.io-parser": "~4.2.0" + "socket.io-parser": "~4.2.1" }, "engines": { "node": ">=10.0.0" diff --git a/package.json b/package.json index c940dbf..7431693 100644 --- a/package.json +++ b/package.json @@ -21,13 +21,13 @@ "@angular/cdk": "^14.2.2", "@angular/common": "^14.2.3", "@angular/core": "^14.2.3", - "@angular/forms": "^14.2.11", - "@angular/localize": "^14.2.11", + "@angular/forms": "^14.2.12", + "@angular/localize": "^14.2.12", "@angular/material": "^14.2.2", "@angular/material-moment-adapter": "^14.2.7", "@angular/platform-browser": "^14.2.3", - "@angular/platform-browser-dynamic": "^14.2.11", - "@angular/router": "^14.2.11", + "@angular/platform-browser-dynamic": "^14.2.12", + "@angular/router": "^14.2.12", "@awesome-cordova-plugins/aes-256": "^6.2.0", "@awesome-cordova-plugins/chooser": "^6.2.0", "@awesome-cordova-plugins/core": "^6.2.0", @@ -35,7 +35,7 @@ "@awesome-cordova-plugins/sms": "^6.2.0", "@awesome-cordova-plugins/social-sharing": "^6.2.0", "@awesome-cordova-plugins/theme-detection": "^6.2.0", - "@capacitor-community/barcode-scanner": "^3.0.0", + "@capacitor-community/barcode-scanner": "^3.0.1", "@capacitor-community/contacts": "^2.0.0-0", "@capacitor-community/screen-brightness": "^4.0.0", "@capacitor/android": "^4.5.0", @@ -52,7 +52,7 @@ "@capacitor/splash-screen": "^4.1.2", "@capacitor/status-bar": "^4.1.0", "@capacitor/toast": "^4.1.0", - "@ionic/angular": "^6.3.7", + "@ionic/angular": "^6.3.8", "@ionic/storage": "^3.0.6", "@ionic/storage-angular": "^3.0.6", "@ng-bootstrap/ng-bootstrap": "^13.1.1", @@ -84,7 +84,7 @@ "@angular/cli": "^14.2.10", "@angular/compiler": "^14.2.3", "@angular/compiler-cli": "^14.2.3", - "@angular/language-service": "^14.2.11", + "@angular/language-service": "^14.2.12", "@capacitor/cli": "^4.5.0", "@ionic/angular-toolkit": "^6.1.0", "@ionic/cli": "6.20.1", From 04949d2bf93c2720d9444f5f32bb3e4a0bcfb04b Mon Sep 17 00:00:00 2001 From: Tom Fong Date: Thu, 24 Nov 2022 11:01:07 +0800 Subject: [PATCH 02/11] feat: allow user to hide exit app alert --- src/app/pages/landing/landing.page.ts | 56 +++++++++++++++++-------- src/app/pages/setting/setting.page.html | 2 +- src/app/pages/setting/setting.page.ts | 23 +--------- src/app/services/env.service.ts | 15 +++++++ src/global.scss | 9 ++++ 5 files changed, 65 insertions(+), 40 deletions(-) diff --git a/src/app/pages/landing/landing.page.ts b/src/app/pages/landing/landing.page.ts index 9785c56..8742333 100644 --- a/src/app/pages/landing/landing.page.ts +++ b/src/app/pages/landing/landing.page.ts @@ -1,5 +1,6 @@ import { Component } from '@angular/core'; import { Router } from '@angular/router'; +import { Preferences } from '@capacitor/preferences'; import { AlertController, IonRouterOutlet, Platform } from '@ionic/angular'; import { TranslateService } from '@ngx-translate/core'; import { EnvService } from 'src/app/services/env.service'; @@ -50,26 +51,45 @@ export class LandingPage { } async confirmExitApp(): Promise { - const alert = await this.alertController.create({ - header: this.translate.instant('EXIT_APP'), - message: this.translate.instant('MSG.EXIT_APP'), - cssClass: ['alert-bg'], - buttons: [ - { - text: this.translate.instant('EXIT'), - handler: () => { - navigator['app'].exitApp(); + if (this.env.showExitAppAlert == "on") { + const alert = await this.alertController.create({ + header: this.translate.instant('EXIT_APP'), + message: this.translate.instant('MSG.EXIT_APP'), + inputs: [ + { + type: "checkbox", + label: this.translate.instant("MSG.TUTORIAL_NOT_SHOW_AGAIN"), + checked: false, + handler: async (result) => { + if (result.checked) { + this.env.showExitAppAlert = "off"; + } else { + this.env.showExitAppAlert = "on"; + } + await Preferences.set({ key: this.env.KEY_SHOW_EXIT_APP_ALERT, value: this.env.showExitAppAlert }); + } } - }, - { - text: this.translate.instant('RATE_THE_APP'), - handler: () => { - this.openGooglePlay(); + ], + cssClass: ['alert-bg', 'alert-input-no-border'], + buttons: [ + { + text: this.translate.instant('EXIT'), + handler: () => { + navigator['app'].exitApp(); + } + }, + { + text: this.translate.instant('RATE_THE_APP'), + handler: () => { + this.openGooglePlay(); + } } - } - ] - }); - await alert.present(); + ] + }); + await alert.present(); + } else { + navigator['app'].exitApp(); + } } } diff --git a/src/app/pages/setting/setting.page.html b/src/app/pages/setting/setting.page.html index 7768845..033978e 100644 --- a/src/app/pages/setting/setting.page.html +++ b/src/app/pages/setting/setting.page.html @@ -134,7 +134,7 @@ + (click)="exitApp()">

diff --git a/src/app/pages/setting/setting.page.ts b/src/app/pages/setting/setting.page.ts index 408364c..15752d4 100644 --- a/src/app/pages/setting/setting.page.ts +++ b/src/app/pages/setting/setting.page.ts @@ -127,27 +127,8 @@ export class SettingPage { alert.present(); } - async confirmExitApp(): Promise { - const alert = await this.alertController.create({ - header: this.translate.instant('EXIT_APP'), - message: this.translate.instant('MSG.EXIT_APP'), - cssClass: ['alert-bg'], - buttons: [ - { - text: this.translate.instant('EXIT'), - handler: () => { - navigator['app'].exitApp(); - } - }, - { - text: this.translate.instant('RATE_THE_APP'), - handler: () => { - this.openGooglePlay(); - } - } - ] - }); - await alert.present(); + exitApp() { + navigator['app'].exitApp(); } openGooglePlay(): void { diff --git a/src/app/services/env.service.ts b/src/app/services/env.service.ts index 3299e32..b077dea 100644 --- a/src/app/services/env.service.ts +++ b/src/app/services/env.service.ts @@ -75,6 +75,7 @@ export class EnvService { public showSendMessageButton: OnOffType = 'on'; public showSendEmailButton: OnOffType = 'on'; public showOpenFoodFactsButton: OnOffType = 'on'; + public showExitAppAlert: OnOffType = "on"; public debugMode: OnOffType = 'off'; public autoExitAppMin: 1 | 3 | 5 | -1 = -1; @@ -86,6 +87,7 @@ export class EnvService { public readonly KEY_LANGUAGE = "language"; public readonly KEY_COLOR = "color"; public readonly KEY_DEBUG_MODE = "debug-mode-on"; + public readonly KEY_SHOW_EXIT_APP_ALERT = "showExitAppAlert"; public readonly KEY_ORIENTATION = "orientation"; public readonly KEY_SCAN_RECORD_LOGGING = "scan-record-logging"; public readonly KEY_RECORDS_LIMIT = "recordsLimit"; @@ -852,6 +854,15 @@ export class EnvService { await this.toggleColorTheme(); } ); + await Preferences.get({ key: this.KEY_SHOW_EXIT_APP_ALERT }).then( + async result => { + if (result.value != null) { + this.showExitAppAlert = result.value as OnOffType; + } else { + this.showExitAppAlert = 'on'; + } + } + ); await Preferences.get({ key: this.KEY_DEBUG_MODE }).then( async result => { if (result.value != null) { @@ -1216,6 +1227,7 @@ export class EnvService { this.showOpenFoodFactsButton = 'on'; this.scanRecords = []; this.bookmarks = []; + this.showExitAppAlert = 'on'; this.debugMode = 'off'; this.autoExitAppMin = -1; } @@ -1349,6 +1361,9 @@ export class EnvService { this.showOpenFoodFactsButton = 'on'; await Preferences.set({ key: this.KEY_SHOW_OPEN_FOOD_FACTS_BUTTON, value: this.showOpenFoodFactsButton }); + this.showExitAppAlert = 'on'; + await Preferences.set({ key: this.KEY_SHOW_EXIT_APP_ALERT, value: this.showExitAppAlert }); + this.debugMode = 'off'; await Preferences.set({ key: this.KEY_DEBUG_MODE, value: this.debugMode }); diff --git a/src/global.scss b/src/global.scss index e755143..d1e7602 100644 --- a/src/global.scss +++ b/src/global.scss @@ -109,6 +109,15 @@ ion-tab-button:not(.tab-selected)::part(native):hover { opacity: 0.5; } +.alert-input-no-border .alert-checkbox-group { + border: 0px !important; +} + +.alert-input-no-border .alert-checkbox-label { + overflow: auto !important; + white-space: pre-line !important; +} + .alert-can-copy { user-select: text !important; } From 262459f1e14f7eb6dcd4ce64b13acd8f5fe8ad7f Mon Sep 17 00:00:00 2001 From: Tom Fong Date: Thu, 24 Nov 2022 11:28:27 +0800 Subject: [PATCH 03/11] feat: show rate the app on setting menu --- src/app/pages/setting/setting.page.html | 22 ++++++++++++++++++++++ src/app/pages/setting/setting.page.ts | 12 ++++++++++++ 2 files changed, 34 insertions(+) diff --git a/src/app/pages/setting/setting.page.html b/src/app/pages/setting/setting.page.html index 033978e..48a8c9f 100644 --- a/src/app/pages/setting/setting.page.html +++ b/src/app/pages/setting/setting.page.html @@ -133,6 +133,28 @@

+ + + +

+ + {{ 'RATE_THE_APP' | translate }} + +

+
+
+ + + +

+ + {{ 'RATE_THE_APP' | translate }} + +

+
+
diff --git a/src/app/pages/setting/setting.page.ts b/src/app/pages/setting/setting.page.ts index 15752d4..5b3cb0a 100644 --- a/src/app/pages/setting/setting.page.ts +++ b/src/app/pages/setting/setting.page.ts @@ -28,10 +28,22 @@ export class SettingPage { await SplashScreen.hide() } + get isIos(): boolean { + return this.platform.is('ios'); + } + get isAndroid(): boolean { return this.platform.is('android'); } + rateAndroidApp() { + window.open(this.env.GOOGLE_PLAY_URL, '_system'); + } + + rateIosApp() { + window.open(this.env.APP_STORE_URL, '_system'); + } + setLanguage() { this.router.navigate(['setting-language']); } From 41de9c763e7bebffce24bd42a9424340ce93ce6f Mon Sep 17 00:00:00 2001 From: Smooth-E Date: Tue, 29 Nov 2022 18:26:36 +0500 Subject: [PATCH 04/11] Translate JSON into Russian --- src/assets/i18n/ru.json | 314 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 314 insertions(+) create mode 100644 src/assets/i18n/ru.json diff --git a/src/assets/i18n/ru.json b/src/assets/i18n/ru.json new file mode 100644 index 0000000..17e6a15 --- /dev/null +++ b/src/assets/i18n/ru.json @@ -0,0 +1,314 @@ +{ + "100_RECORDS": "100 записей", + "30_RECORDS": "30 записей", + "49_DIGIT": "49-значный", + "50_RECORDS": "50 записей", + "ABOUT": "О приложении", + "ABOUT_SIMPLE_QR": "О Simple QR", + "ADD": "Добавить", + "ADD_BCC": "Добавить BCC", + "ADD_CC": "Добавить CC", + "ADD_CONTACT": "Добавить контакт", + "ADD_RECIPIENT": "Добавить получателя", + "APP": "Приложение", + "APPEARANCE_AND_EFFECTS": "Внешний вид и эффекты", + "APP_INITIAL_PAGE": "Приветственная страница приложения", + "APP_VERSION": "Версия приложения", + "AT": "в", + "AT_LEAST_1_MINUTE_LATER": "Как минимум через минуту", + "AT_LEAST_3_MINUTES_LATER": "Как минимум через 3 минуты", + "AT_LEAST_5_MINUTES_LATER": "Как минимум через 5 минут", + "AUTO_KILL_BACKGROUND": "Автоматически завершать в фоне", + "AUTO_LOGGING": "Автоматическое добавление в историю", + "AUTO_MAX_BRIGHTNESS": "Автоматически настраивать максимальную яркость", + "AUTO_QR_CODE_POPUP": "Автоматически показывать QR-Код", + "BACKGROUND_COLOR": "Цвет фона", + "BACKING_UP": "Сохранение резервной копии", + "BACKUP": "Резервная копия", + "BASE64": "Base64", + "BASE64_DECODED": "Декодировано из Base64", + "BASE64_ENCODED": "Закодировано в Base64", + "BCC": "BCC", + "BLACK": "Черная", + "BOOKMARK": "Закладка", + "BOOKMARKED": "Добавлено в закладки", + "BOOKMARKED_TEXTS": "Сохраненные тексты", + "BOOKMARKS": "Закладки", + "BROWSE": "Просмотреть", + "BROWSER": "Браузер", + "BROWSE_WEBSITE": "Посетить веб-сайт", + "CALL": "Позвонить", + "CANCEL": "Отмена", + "CC": "CC", + "CITY": "Город", + "CLEAR": "Очистить", + "CLOSE": "Закрыть", + "COLOR": "Цвет", + "COLOR_THEME": "Тема", + "COMING_SOON": "Скоро...", + "CONTACT_METHOD": "Метод связи", + "CONTACT_NAME": "Имя контакта", + "CONTENT": "Содержание", + "CONTENT_TYPE": "Тип содержания", + "COPIED": "Скопировано", + "COPY": "Скопировать", + "COPY_SECRET_AND_SAVE_BACKUP": "Скопировать ключ и сохранить резервную копию", + "COPY_TEXT": "Скопировать текст", + "COUNTRY": "Страна", + "CREATE": "Создать", + "CREATED": "Создано", + "CREATE_QR_CODE": "Создать QR-Код", + "DARK": "Тёмная", + "DATE_OF_BIRTH": "Дата рождения", + "DEBUG_MODE": "Режим отладки", + "DECODING": "Декодирование", + "DECRYPTING": "Расшифровка", + "DETAILED": "Подробнее", + "DONE": "Готово", + "DUCK_DUCK_GO": "DuckDuckGo", + "ECOSIA": "Ecosia", + "EDIT": "Редактировать", + "EMAIL_ADDRESS": "Адрес электронной почты", + "EMAIL_BODY": "Содержание электронного письма", + "EMAIL_NTT_DOCOMO": "Электронное письмо (NTT Docomo)", + "EMAIL_RECIPIENT": "Получатель", + "EMAIL_SUBJECT": "Тема", + "EMAIL_TO": "Отправить по электронной почте", + "EMAIL_W3C_STANDARD": "Электронное письмо (стандарт W3C)", + "ENCRYPTING": "Шифрование", + "ERROR_CORRECTION_LEVEL": "Неверный уровень коррекции ошибок", + "EXIT": "Выйти", + "EXIT_APP": "Выйти из приложения", + "EXPORT": "Экспорт", + "EXPORTING": "Экспортирование", + "EXPORT_TO_CSV": "Экспортировать в CSV", + "FAX_NUMBER": "Номер Fax", + "FEMALE": "Женский", + "FIRST_NAME": "Имя", + "FOLLOW_SYSTEM_SETTINGS": "Как в системе", + "FREE_TEXT": "Текст", + "FULL_RESET": "Полный сброс", + "FUNCTIONS": "Функции", + "GENDER": "Пол", + "GOOGLE_SEARCH": "Google Search", + "HAPTIC_FEEDBACK_ONLY": "Только тактильный отклик", + "HIDDEN_NETWORK_?": "Скрытая сеть?", + "HOME_ADDRESS": "Домашний адрес", + "HOME_PHONE_NUMBER": "Номер домашнего телефона", + "ICON_ONLY": "Только иконка", + "IMPORT": "Импорт", + "IMPORT_FROM_CSV": "Импортировать из CSV", + "IMPORT_IMAGE": "Импортировать изображение", + "INITIAL_SEGMENT": "Первоначальный сегмент", + "JOB_TITLE": "Должность", + "LANGUAGE": "Язык", + "LAST_NAME": "Фамилия", + "LEVEL_H": "Уровень H", + "LEVEL_L": "Уровень L", + "LEVEL_M": "Уровень M", + "LEVEL_Q": "Уровень Q", + "LIGHT": "Светлая", + "LOADING_DATA": "Загрузка информации", + "LOCK_LANDSCAPE": "Альбомная", + "LOCK_PORTRAIT": "Портретная", + "LOG": "История", + "LOG_BACKUP_AND_RESTORE": "История, резервное копирование и восстановление", + "MALE": "Мужской", + "MANAGE_RECORDS": "Управление записями", + "MARGIN": "Отступ", + "MESSAGE": "Сообщение", + "MESSAGE_CONTENT": "Содержание сообщения", + "MICROSOFT_BING": "Microsoft Bing", + "MOBILE_PHONE_NUMBER": "Номер мобильного телефона", + "MORE": "Подробнее", + "NAME": "Имя", + "NO": "Нет", + "NONE": "None", + "NOT_AVAILABLE": "Нет доступа", + "NOT_PROVIDED": "Не предоставлено", + "NOT_TO_DISCLOSE": "Не указан", + "NO_LIMIT": "Нет ограничений", + "NUMBER_OF_RECORDS": "Количество записей", + "OK": "ОК", + "ONLY_DELETE_DATA": "Только удалить информацию", + "ONLY_RESET_SETTING": "Только сбросить настройки", + "OPEN": "Открыть", + "OPEN_URL": "Открыть URL", + "OPEN_WITH_...": "Открыть с помощью...", + "OPTIMIZING_DATA_...": "Оптимизация информации...", + "ORGANIZATION": "Организация", + "ORIGINAL": "Оригинал", + "OTHERS": "Другое", + "PASSWORD": "Пароль", + "PATCH_NOTES": "Заметки о патче", + "PERMISSION_REQUIRED": "Необходимо разрешение", + "PERSONAL": "Персональные данные", + "PHONE_NO": "Номер телефона", + "PHONE_NUMBER": "Номер телефона", + "PLEASE_WAIT": "Пожалуйста, подождите", + "POSTAL_CODE": "Почтовый индекс", + "PREPARING": "Подготовка", + "PREVIEW": "Предпросмотр", + "PRIVACY_POLICY": "Политика конфиденциальности", + "QR_CODE": "QR-Код", + "QR_CODE_AND_DECODED_RESULT": "QR-Код и декодированный результат", + "QR_CODE_CONTENT": "Содержание QR-Кода", + "QR_CODE_STYLE": "Стиль QR-Кода", + "RATE_THE_APP": "Оценить приложение", + "RECORDS_LIMIT": "Ограничение количества записей", + "REMOVE_ALL": "Удалить все", + "REMOVE_BCC": "Убрать BCC", + "REMOVE_CC": "Убрать CC", + "REMOVE_RECIPIENT": "Убрать получателя", + "REPORT_ISSUE": "Сообщить о проблеме", + "RESET_APP": "Сброс приложения", + "RESET_DEFAULT": "Настройки по умолчанию", + "RESTORE": "Восстановить", + "RESULT": "Результат", + "SCAN": "Сканировать", + "SCANNED": "Просканировано", + "SCANNING_FEEDBACK_ONLY": "Только отклик сканирования", + "SCAN_BY_CAMERA": "Сканировать с помощью камеры", + "SCREEN_ORIENTATION": "Ориентация экрана", + "SEARCH": "Поиск", + "SEARCH_ENGINE": "Поисковая система", + "SECRET": "Ключ", + "SEND": "Отправить", + "SEND_EMAIL": "Отправить электронное письмо", + "SEND_MESSAGE": "Отправить сообщение", + "SETTING": "Настройки", + "SETTINGS": "Настройки", + "SHARE": "Поделиться", + "SHARING": "Отправка", + "SHOW": "Показать", + "SHOW_NUMBER_OR_RECORDS": "Показывать количество записей", + "SHOW_QR_CODE": "Показать QR-Код", + "SIMPLE_QR": "Simple QR", + "STATE": "Округ", + "STREET": "Улица", + "SUCCESS": "Успешно", + "SUPPORTED_BARCODE_TYPE": "Поддерживаемый тип Бар-Кода", + "SUPPORTED_TYPE": "Поддерживаемый тип", + "SYSTEM_DEFAULT": "Как в системе", + "TASK": "Задача", + "TASK_BUTTON_LAYOUT": "Расположение кнопок действия", + "TURN_OFF": "Выключить", + "TURN_ON": "Включить", + "TURNED_OFF": "Выключено", + "TURNED_ON": "Выключено", + "TUTORIAL": "Обучение", + "UNDO": "Отменить", + "UNKNOWN": "Неизвестно", + "UPDATE_SUCCESSFULLY": "Успешно обновлено", + "URL": "URL", + "VCARD_CONTACT": "Контакт vCard", + "VERSION_VERSION": "Версия {version}", + "VIBRATION": "Вибрация", + "VIEWED": "Просмотрено", + "VIEW_BOOKMARK": "Посмотреть закладку", + "VIEW_GITHUB": "Посетить GitHub", + "VIEW_LOG": "Просмотр истории", + "VIEW_STORE_AND_SOURCE_CODE": "Посетить магазин и репозиторий с исходным кодом ", + "VIEW_INSTRUCTIONS": "Посмотреть инструкции", + "WEBSITE": "Веб-сайт", + "WIFI": "WiFi", + "WIFI_ENCRYPTION": "Шифрование WiFi", + "WIFI_SSID": "WiFi SSID", + "WORK": "Место работы", + "WORK_PHONE_NUMBER": "Номер рабочего телефона", + "YAHOO_SEARCH": "Yahoo! Search", + "YANDEX": "Yandex", + "YES": "Да", + "MSG": { + "ALREADY_BOOKMARKED": "Ошибка! Уже добавлено в закладки ранее", + "AUTO_KILL_BACKGROUND_EXPLAIN": "

Чтобы использовать меньше системных ресурсов и батареи, выставьте количество времени, спустя которое приложение будет автоматически остановлено, если оно работает в фоне.


Если вы выберете опцию Системные настройки, фоновая активность приложения будет полностью контролироваться системой, приложение не будет приостанавливать свою работу самостоятельно.


Заметьте, что в некоторых ситуациях система может останавливать приложение заблаговременно.

", + "AUTO_LOGGING_EXPLAIN": "Содержание каждого QR-Кода и Бар-Кода автоматически сохраняется после сканирования. Вы можете повторно обращаться к этим записям в разделе Истории.", + "AUTO_MAX_BRIGHTNESS_EXPLAIN": "Автоматически увеличивать яркость экрана до максимального значения во время просмотра QR-Кода.", + "AUTO_SHOW_QR_EXPLAIN": "Автоматически показывать QR-Лщд на странице результата после приведенных ниже действий.", + "BACKUP_EXPLAIN": "Вы можете создать локальную резервную копию всех записей истории и закладок. Вам будет выдан набор ключей после резервного копирования. Сохраняйте эти ключи, иначе вы не сможете восстановить созданную резервную копию. Заметьте, что Simple QR не поддерживает резервное копирование между разными платформами.", + "BACKUP_FAILED": "Не удалось создать резервную копию", + "BACKUP_FAILED_2": "Не удалось создать резервную копию. Пожалуйста, убедитесь, что приложению выдано разрешение на взаимодействие с файлами.", + "BACKUP_SUCCESSFULLY": "

Резервное копирование успешно завершено. Пожалуйста, сохраните файл резервной копии и следующий ключ

{secret}

", + "BARCODE_TYPE": "Сканирование
  • QR-Код
  • Бар-Код
  • Код Aztec
  • Data Matrix
  • PDF417
Импорт изображения
  • QR-Код
Создание
  • QR-Код
", + "BOOKMARKED": "Успешно добавлено в закладки", + "BUTTON_DISPLAY_EXPLAIN": "Показать или скрыть кнопки действий.", + "BUTTON_STYLE_EXPLAIN": "Выберите стиль кнопок панели навигации.", + "CAMERA_PERMISSION": "Чтобы приложение могло осуществлять сканирование, предоставьте доступ к Камере.", + "CONTACT_PERMISSION": "Для сохранения контакта, необходимо предоставить доступ к Контактам.", + "COPIED_SECRET": "Ключ скопирован", + "COPY_TEXT": "Какую часть контента вы бы хотели скопировать?", + "CREATE_QRCODE_MAX_LENGTH": "Максимум 1817 символов", + "CREATE_QRCODE_MAX_LENGTH_EXPLAIN": "Длина содержания сгенерированного QR-Кода не должна превышать 1817 символов.", + "DEBUG_MODE_ON": "Режим Отладки успешно активирован", + "DELETE_OVERFLOWED_RECORDS": "После того, как вы покинете эту страницу, лишние записи будут безвозвратно удалены.", + "EMAIL_MAX_LENGTH": "Максимум 254 символа", + "EMAIL_SUBJECT_MAX_LENGTH": "Максимум 78 символов", + "ERROR_CORRECTION_LEVEL_EXPLAIN": "

В структуру QR-Кодов заложена способность восстановления информации, даже если Код поврежден.

Существует 4 уровня такой защиты:

Уровень L восстанавливает 7% байт информации.

Уровень M восстанавливает 15% байт информации.

Уровень Q восстанавливает 25% байт информации.

Уровень H восстанавливает 30% байт информации.


Заметьте, что увеличение уровня защиты может увеличить вероятность восстановления информации, но также увеличивает размер QR-Кода. Поэтому, при обычных условиях рекомендуем использовать уровень M.

", + "EXIT_APP": "

Уверены, что хотите покинуть приложение?

Если вам нравится Simple QR, пожалуйста, оцените его в магазине приложений.

", + "EXPORT_TO_CSV_EXPLAIN": "Вы можете экспортировать все записи истории и закладки в CSV файл.", + "FAILED_SAVING_CONTACT": "Не удалось сохранить контакт", + "FAIL_PREPARE_SMS": "Не удалось отправить сообщение", + "IMPORT_FAILED": "Не удалось импортировать", + "IMPORT_FROM_CSV_EXPLAIN": "Вы можете импортировать записи истории и закладки из CSV файла в формате, заданном Simple QR. Если вы желаете переместить информацию между Android и iOS, воспользуйтесь этой функцией.", + "INPUT_TAG": "Пожалуйста, дайте закладке имя", + "INVALID_BK_FILE": "Это несовместимый файл резервной копии.", + "INVALID_CSV_FILE": "Это несовместимый CSV файл.", + "NOT_BASE64_DE": "Невозможно декодировать информацию из Base64", + "NOT_BASE64_EN": "Невозможно закодировать информацию в Base64", + "NOT_BASE64_EN_DE": "Невозможно закодировать или декодировать информацию Base64", + "NO_QR_CODE": "Не удалось распознать QR-Код", + "ONLY_VCARD_3_0": "Поддерживается только формат vCard 3.0", + "PLEASE_INPUT_VALID_SECRET": "Пожалуйста, введите правильный ключ", + "PORTRAIT_ONLY": "Портретная", + "PREPARE_SMS": "Подготовка сообщения", + "PREVIOUS_RECORDS": "Записи предыдущих действий: сканирования, создания или просмотра", + "QR_CODE_VALUE_NOT_EMPTY": "Содержание QR-Кода не может быть пустым", + "READ_IMAGE_PERMISSION": "Необходимо предоставить разрешение взаимодействовать с файлами, чтобы просканировать изображение.", + "RECORDS_LIMIT_EXPLAIN": "Укажите максимальное количество записей истории. Старые записи будут автоматически удалены при достижении указанного лимита.", + "REMOVE_ALL_BOOKMARKS": "Уверены, что хотите безвозвратно удалить все закладки?", + "REMOVE_ALL_RECORD": "Уверены, что хотите безвозвратно удалить все записи истории?", + "RESET_APP": "Уверены, что хотите вернуться к настройкам по умолчанию и удалить все данные приложения?Это действие необратимо.", + "RESET_DEFAULT": "Уверены, что хотите вернуться к настройкам по умолчанию?", + "RESTORE_EXPLAIN": "Вы можете восстановить закладки и записи истории из резервной копии. Полученные данные будут совмещены с текущими данными приложения. Файл резервной копии должен иметь тип TFSQBK.", + "RESTORE_EXPLAIN_IOS": "Вы можете восстановить закладки и записи истории из резервной копии. Полученные данные будут совмещены с текущими данными приложения. Файл резервной копии должен иметь тип ISQBK.", + "RESTORE_FAILED": "Не удалось восстановить", + "RESTORE_SECRET": "Пожалуйста, введите ключ для восстановления данных", + "RESTORE_SUCCESSFUL": "Восстановление успешно завершено", + "RESTORE_WRONG_SECRET": "Неверный ключ", + "SAVED_CONTACT": "Контакт сохранен", + "SAVING_CONTACT": "Идет сохранение контакта", + "SCAN_QR_FROM_IMAGE": "Simple QR использует модуль \"cozmo/jsQR\", чтобы сканировать QR-Код из изображение. Чтобы успешно осуществить сканирование", + "SCAN_QR_FROM_IMAGE_R1": "Дайте приложению разрешение на доступ к Памяти устройства или Фото на нем.", + "SCAN_QR_FROM_IMAGE_R2": "Убедитесь, что фон изображения не прозрачный. Не рекомендовано использовать изображение, полученные не при помощи камеры.", + "SCAN_QR_FROM_IMAGE_R3": "Отмените редактирование фото, если вы хотите просканировать изображение целиком (по ситуации).", + "SEARCH": "Что конкретно вы хотите найти?", + "SEARCH_ENGINE_EXPLAIN": "Выберите поисковую систему для осуществления поиска после получения результата.", + "SHARE_QR": "Скорее сканируй!\n\nОтправлено при помощи Simple QR", + "SMS_MAX_LENGTH": "Максимум 160 символов", + "SSID_MAX_LENGTH": "Максимум 32 символа", + "START_PAGE_EXPLAIN": "Выберете стартовую страницу приложения.", + "START_PAGE_HEADER_EXPLAIN": "Показывать заголовок Simple QR на стартовой странице.", + "TAG_MAX_LENGTH": "Максимум 30 символов", + "TAG_MAX_LENGTH_EXPLAIN": "Длина имени не должна превышать 30 символов..", + "TUTORIAL_NOT_SHOW_AGAIN": "Не показывать снова", + "TUTORIAL_SWIPE_LEFT": "Смахните влево, чтобы удалить соответствующую запись.", + "TUTORIAL_SWIPE_RIGHT": "Смахните вправо, чтобы добавить текст соответствующей записи в закладки / редактировать имя соответствующей закладки.", + "UNDO_DELETE": "Вы можете отменить удаление", + "VIBRATION_EXPLAIN": "Использовать вибрацию или тактильный отклик. Заметьте, что не все устройства поддерживают эту функцию." + }, + "BARCODE_TYPE": { + "1D": "Бар-Код ", + "AZTEC": "Код Aztec ", + "DATA_MATRIX": "Data Matrix ", + "EAN": "European Article Number ", + "MAXICODE": "MaxiCode ", + "PDF_417": "PDF417 ", + "QR_CODE": "QR-Код ", + "RSS": "GS1 DataBar ", + "UPC": "Universal Product Code " + }, + "UPDATE": { + "UPDATE_NOTES_ANDROID": "

В этом релизе вас ждет несколько обновлений и новых функций. Посетите GitHub проекта, чтобы узнать детали.

", + "UPDATE_NOTES_IOS": "

В этом релизе вас ждет несколько обновлений и новых функций. Посетите GitHub проекта, чтобы узнать детали.

" + } +} From 1575d7ec92501dc28643ba9bd628481204452815 Mon Sep 17 00:00:00 2001 From: Smooth-E Date: Tue, 29 Nov 2022 23:48:23 +0500 Subject: [PATCH 05/11] Improve Russian translations. Add Android values files. Add settings entry for the language. --- android/app/src/main/res/values-ru/colors.xml | 6 +++ .../app/src/main/res/values-ru/strings.xml | 7 +++ android/app/src/main/res/values-ru/styles.xml | 22 +++++++++ .../setting-language.page.html | 12 +++++ src/assets/i18n/ru.json | 48 +++++++++---------- 5 files changed, 71 insertions(+), 24 deletions(-) create mode 100644 android/app/src/main/res/values-ru/colors.xml create mode 100644 android/app/src/main/res/values-ru/strings.xml create mode 100644 android/app/src/main/res/values-ru/styles.xml diff --git a/android/app/src/main/res/values-ru/colors.xml b/android/app/src/main/res/values-ru/colors.xml new file mode 100644 index 0000000..540a54f --- /dev/null +++ b/android/app/src/main/res/values-ru/colors.xml @@ -0,0 +1,6 @@ + + + #00a5aa + #00a5aa + #00a5aa + diff --git a/android/app/src/main/res/values-ru/strings.xml b/android/app/src/main/res/values-ru/strings.xml new file mode 100644 index 0000000..b4bc7ba --- /dev/null +++ b/android/app/src/main/res/values-ru/strings.xml @@ -0,0 +1,7 @@ + + + Simple QR + Simple QR + com.tomfong.simpleqr + com.tomfong.simpleqr + diff --git a/android/app/src/main/res/values-ru/styles.xml b/android/app/src/main/res/values-ru/styles.xml new file mode 100644 index 0000000..0bcb2f7 --- /dev/null +++ b/android/app/src/main/res/values-ru/styles.xml @@ -0,0 +1,22 @@ + + + + + + + + + + diff --git a/src/app/pages/setting-language/setting-language.page.html b/src/app/pages/setting-language/setting-language.page.html index 5f150a2..2ca182a 100644 --- a/src/app/pages/setting-language/setting-language.page.html +++ b/src/app/pages/setting-language/setting-language.page.html @@ -95,6 +95,18 @@ [color]="'primary'">
+ + +

+ + Русский (ru) + +

+
+ + +
\ No newline at end of file diff --git a/src/assets/i18n/ru.json b/src/assets/i18n/ru.json index 17e6a15..a759448 100644 --- a/src/assets/i18n/ru.json +++ b/src/assets/i18n/ru.json @@ -12,25 +12,25 @@ "ADD_RECIPIENT": "Добавить получателя", "APP": "Приложение", "APPEARANCE_AND_EFFECTS": "Внешний вид и эффекты", - "APP_INITIAL_PAGE": "Приветственная страница приложения", + "APP_INITIAL_PAGE": "Стартовая страница", "APP_VERSION": "Версия приложения", "AT": "в", "AT_LEAST_1_MINUTE_LATER": "Как минимум через минуту", "AT_LEAST_3_MINUTES_LATER": "Как минимум через 3 минуты", "AT_LEAST_5_MINUTES_LATER": "Как минимум через 5 минут", - "AUTO_KILL_BACKGROUND": "Автоматически завершать в фоне", + "AUTO_KILL_BACKGROUND": "Фоновая активность", "AUTO_LOGGING": "Автоматическое добавление в историю", - "AUTO_MAX_BRIGHTNESS": "Автоматически настраивать максимальную яркость", - "AUTO_QR_CODE_POPUP": "Автоматически показывать QR-Код", + "AUTO_MAX_BRIGHTNESS": "Максимальная яркость", + "AUTO_QR_CODE_POPUP": "Показывать QR-Код", "BACKGROUND_COLOR": "Цвет фона", "BACKING_UP": "Сохранение резервной копии", - "BACKUP": "Резервная копия", + "BACKUP": "Резервное копирование", "BASE64": "Base64", "BASE64_DECODED": "Декодировано из Base64", "BASE64_ENCODED": "Закодировано в Base64", "BCC": "BCC", "BLACK": "Черная", - "BOOKMARK": "Закладка", + "BOOKMARK": "Закладки", "BOOKMARKED": "Добавлено в закладки", "BOOKMARKED_TEXTS": "Сохраненные тексты", "BOOKMARKS": "Закладки", @@ -76,7 +76,7 @@ "EMAIL_TO": "Отправить по электронной почте", "EMAIL_W3C_STANDARD": "Электронное письмо (стандарт W3C)", "ENCRYPTING": "Шифрование", - "ERROR_CORRECTION_LEVEL": "Неверный уровень коррекции ошибок", + "ERROR_CORRECTION_LEVEL": "Уровень коррекции ошибок", "EXIT": "Выйти", "EXIT_APP": "Выйти из приложения", "EXPORT": "Экспорт", @@ -98,8 +98,8 @@ "ICON_ONLY": "Только иконка", "IMPORT": "Импорт", "IMPORT_FROM_CSV": "Импортировать из CSV", - "IMPORT_IMAGE": "Импортировать изображение", - "INITIAL_SEGMENT": "Первоначальный сегмент", + "IMPORT_IMAGE": "Импорт изображения", + "INITIAL_SEGMENT": "Стартовая страница", "JOB_TITLE": "Должность", "LANGUAGE": "Язык", "LAST_NAME": "Фамилия", @@ -112,7 +112,7 @@ "LOCK_LANDSCAPE": "Альбомная", "LOCK_PORTRAIT": "Портретная", "LOG": "История", - "LOG_BACKUP_AND_RESTORE": "История, резервное копирование и восстановление", + "LOG_BACKUP_AND_RESTORE": "История и восстановление", "MALE": "Мужской", "MANAGE_RECORDS": "Управление записями", "MARGIN": "Отступ", @@ -140,7 +140,7 @@ "ORIGINAL": "Оригинал", "OTHERS": "Другое", "PASSWORD": "Пароль", - "PATCH_NOTES": "Заметки о патче", + "PATCH_NOTES": "Нововведения", "PERMISSION_REQUIRED": "Необходимо разрешение", "PERSONAL": "Персональные данные", "PHONE_NO": "Номер телефона", @@ -151,7 +151,7 @@ "PREVIEW": "Предпросмотр", "PRIVACY_POLICY": "Политика конфиденциальности", "QR_CODE": "QR-Код", - "QR_CODE_AND_DECODED_RESULT": "QR-Код и декодированный результат", + "QR_CODE_AND_DECODED_RESULT": "QR-Код и результат", "QR_CODE_CONTENT": "Содержание QR-Кода", "QR_CODE_STYLE": "Стиль QR-Кода", "RATE_THE_APP": "Оценить приложение", @@ -163,12 +163,12 @@ "REPORT_ISSUE": "Сообщить о проблеме", "RESET_APP": "Сброс приложения", "RESET_DEFAULT": "Настройки по умолчанию", - "RESTORE": "Восстановить", + "RESTORE": "Восстановление", "RESULT": "Результат", "SCAN": "Сканировать", "SCANNED": "Просканировано", "SCANNING_FEEDBACK_ONLY": "Только отклик сканирования", - "SCAN_BY_CAMERA": "Сканировать с помощью камеры", + "SCAN_BY_CAMERA": "Сканирование с помощью камеры", "SCREEN_ORIENTATION": "Ориентация экрана", "SEARCH": "Поиск", "SEARCH_ENGINE": "Поисковая система", @@ -187,15 +187,15 @@ "STATE": "Округ", "STREET": "Улица", "SUCCESS": "Успешно", - "SUPPORTED_BARCODE_TYPE": "Поддерживаемый тип Бар-Кода", - "SUPPORTED_TYPE": "Поддерживаемый тип", + "SUPPORTED_BARCODE_TYPE": "Поддерживаемые операции", + "SUPPORTED_TYPE": "Поддерживаемые операции", "SYSTEM_DEFAULT": "Как в системе", "TASK": "Задача", - "TASK_BUTTON_LAYOUT": "Расположение кнопок действия", + "TASK_BUTTON_LAYOUT": "Кнопки действия", "TURN_OFF": "Выключить", "TURN_ON": "Включить", "TURNED_OFF": "Выключено", - "TURNED_ON": "Выключено", + "TURNED_ON": "Включено", "TUTORIAL": "Обучение", "UNDO": "Отменить", "UNKNOWN": "Неизвестно", @@ -205,11 +205,11 @@ "VERSION_VERSION": "Версия {version}", "VIBRATION": "Вибрация", "VIEWED": "Просмотрено", - "VIEW_BOOKMARK": "Посмотреть закладку", + "VIEW_BOOKMARK": "Просмотр закладки", "VIEW_GITHUB": "Посетить GitHub", "VIEW_LOG": "Просмотр истории", "VIEW_STORE_AND_SOURCE_CODE": "Посетить магазин и репозиторий с исходным кодом ", - "VIEW_INSTRUCTIONS": "Посмотреть инструкции", + "VIEW_INSTRUCTIONS": "Посмотреть обучение", "WEBSITE": "Веб-сайт", "WIFI": "WiFi", "WIFI_ENCRYPTION": "Шифрование WiFi", @@ -221,10 +221,10 @@ "YES": "Да", "MSG": { "ALREADY_BOOKMARKED": "Ошибка! Уже добавлено в закладки ранее", - "AUTO_KILL_BACKGROUND_EXPLAIN": "

Чтобы использовать меньше системных ресурсов и батареи, выставьте количество времени, спустя которое приложение будет автоматически остановлено, если оно работает в фоне.


Если вы выберете опцию Системные настройки, фоновая активность приложения будет полностью контролироваться системой, приложение не будет приостанавливать свою работу самостоятельно.


Заметьте, что в некоторых ситуациях система может останавливать приложение заблаговременно.

", + "AUTO_KILL_BACKGROUND_EXPLAIN": "

Чтобы использовать меньше системных ресурсов и батареи, выставьте количество времени, спустя которое приложение будет автоматически остановлено, если оно работает в фоне.


Если вы выберете опцию Как в системе, фоновая активность приложения будет полностью контролироваться системой, приложение не будет приостанавливать свою работу самостоятельно.


Заметьте, что в некоторых ситуациях система может останавливать приложение заблаговременно.

", "AUTO_LOGGING_EXPLAIN": "Содержание каждого QR-Кода и Бар-Кода автоматически сохраняется после сканирования. Вы можете повторно обращаться к этим записям в разделе Истории.", "AUTO_MAX_BRIGHTNESS_EXPLAIN": "Автоматически увеличивать яркость экрана до максимального значения во время просмотра QR-Кода.", - "AUTO_SHOW_QR_EXPLAIN": "Автоматически показывать QR-Лщд на странице результата после приведенных ниже действий.", + "AUTO_SHOW_QR_EXPLAIN": "Автоматически показывать QR-Код на странице результата после этих действий.", "BACKUP_EXPLAIN": "Вы можете создать локальную резервную копию всех записей истории и закладок. Вам будет выдан набор ключей после резервного копирования. Сохраняйте эти ключи, иначе вы не сможете восстановить созданную резервную копию. Заметьте, что Simple QR не поддерживает резервное копирование между разными платформами.", "BACKUP_FAILED": "Не удалось создать резервную копию", "BACKUP_FAILED_2": "Не удалось создать резервную копию. Пожалуйста, убедитесь, что приложению выдано разрешение на взаимодействие с файлами.", @@ -232,7 +232,7 @@ "BARCODE_TYPE": "Сканирование
  • QR-Код
  • Бар-Код
  • Код Aztec
  • Data Matrix
  • PDF417
Импорт изображения
  • QR-Код
Создание
  • QR-Код
", "BOOKMARKED": "Успешно добавлено в закладки", "BUTTON_DISPLAY_EXPLAIN": "Показать или скрыть кнопки действий.", - "BUTTON_STYLE_EXPLAIN": "Выберите стиль кнопок панели навигации.", + "BUTTON_STYLE_EXPLAIN": "Выберите стиль кнопок действий.", "CAMERA_PERMISSION": "Чтобы приложение могло осуществлять сканирование, предоставьте доступ к Камере.", "CONTACT_PERMISSION": "Для сохранения контакта, необходимо предоставить доступ к Контактам.", "COPIED_SECRET": "Ключ скопирован", @@ -267,7 +267,7 @@ "RECORDS_LIMIT_EXPLAIN": "Укажите максимальное количество записей истории. Старые записи будут автоматически удалены при достижении указанного лимита.", "REMOVE_ALL_BOOKMARKS": "Уверены, что хотите безвозвратно удалить все закладки?", "REMOVE_ALL_RECORD": "Уверены, что хотите безвозвратно удалить все записи истории?", - "RESET_APP": "Уверены, что хотите вернуться к настройкам по умолчанию и удалить все данные приложения?Это действие необратимо.", + "RESET_APP": "Уверены, что хотите вернуться к настройкам по умолчанию и удалить все данные приложения? Это действие необратимо.", "RESET_DEFAULT": "Уверены, что хотите вернуться к настройкам по умолчанию?", "RESTORE_EXPLAIN": "Вы можете восстановить закладки и записи истории из резервной копии. Полученные данные будут совмещены с текущими данными приложения. Файл резервной копии должен иметь тип TFSQBK.", "RESTORE_EXPLAIN_IOS": "Вы можете восстановить закладки и записи истории из резервной копии. Полученные данные будут совмещены с текущими данными приложения. Файл резервной копии должен иметь тип ISQBK.", From 01d67ec2a8cc02f25bc209b03dd408b18950127f Mon Sep 17 00:00:00 2001 From: Tom Fong Date: Wed, 30 Nov 2022 18:00:49 +0800 Subject: [PATCH 06/11] feat: russian language adjustment --- ios/App/App/ru.lproj/InfoPlist.strings | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 ios/App/App/ru.lproj/InfoPlist.strings diff --git a/ios/App/App/ru.lproj/InfoPlist.strings b/ios/App/App/ru.lproj/InfoPlist.strings new file mode 100644 index 0000000..329502e --- /dev/null +++ b/ios/App/App/ru.lproj/InfoPlist.strings @@ -0,0 +1,6 @@ +"CFBundleDisplayName" = "Simple QR"; +"CFBundleName" = "Simple QR"; +"NSCameraUsageDescription" = "Simple QR uses Camera to scan QR code and barcodes"; +"NSContactsUsageDescription" = "Simple QR uses Contacts to add contact"; +"NSPhotoLibraryAddUsageDescription" = "Simple QR uses Photo Library to save QR code image"; +"NSPhotoLibraryUsageDescription" = "Simple QR uses Photo Library to import image and scan QR code"; \ No newline at end of file From 3a42fb84ef530a8b5db2c93fd688c73c956a8146 Mon Sep 17 00:00:00 2001 From: Tom Fong Date: Wed, 30 Nov 2022 18:00:52 +0800 Subject: [PATCH 07/11] feat: russian language adjustment --- README.md | 2 + ios/App/App.xcodeproj/project.pbxproj | 3 + ios/App/App/ru.lproj/InfoPlist.strings | 8 +-- src/app/pages/history/history.page.ts | 5 +- .../setting-language.page.html | 64 ++++++++----------- .../setting-record/setting-record.page.ts | 11 +++- src/app/services/env.service.ts | 5 +- src/assets/i18n/ru.json | 2 +- 8 files changed, 56 insertions(+), 44 deletions(-) diff --git a/README.md b/README.md index 7c14d20..e61934c 100644 --- a/README.md +++ b/README.md @@ -68,6 +68,7 @@ By using the app, you can * German Deutsch (de) * French Français (fr) * Italian Italiano (it) +* Russian Русский (ru) You are welcomed to help translate the app into more languages (refer to this section) @@ -115,6 +116,7 @@ Thank you the following contributors who have made the app better! |:-:|:-:|:-:| | mondstern | [mondlicht-und-sterne](https://github.com/mondlicht-und-sterne) | German language translation | | Valentino Bocchetti | [luftmensch-luftmensch](https://github.com/luftmensch-luftmensch) | Italian language translation | +| Smooth-E | [Smooth-E](https://github.com/Smooth-E) | Russian language translation | ## Framework diff --git a/ios/App/App.xcodeproj/project.pbxproj b/ios/App/App.xcodeproj/project.pbxproj index da63b9f..4855368 100644 --- a/ios/App/App.xcodeproj/project.pbxproj +++ b/ios/App/App.xcodeproj/project.pbxproj @@ -19,6 +19,7 @@ /* End PBXBuildFile section */ /* Begin PBXFileReference section */ + 1B75189429375EAB00800D38 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/InfoPlist.strings; sourceTree = ""; }; 2FAD9762203C412B000D30F8 /* config.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = config.xml; sourceTree = ""; }; 50379B222058CBB4000EE86E /* capacitor.config.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = capacitor.config.json; sourceTree = ""; }; 504EC3041FED79650016851F /* App.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = App.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -160,6 +161,7 @@ de, fr, it, + ru, ); mainGroup = 504EC2FB1FED79650016851F; productRefGroup = 504EC3051FED79650016851F /* Products */; @@ -268,6 +270,7 @@ D26FE7F9283D1E6C002A61AE /* fr */, D26FE7FA283D1E76002A61AE /* de */, D29D2E2A2847C31D00566DFF /* it */, + 1B75189429375EAB00800D38 /* ru */, ); name = InfoPlist.strings; sourceTree = ""; diff --git a/ios/App/App/ru.lproj/InfoPlist.strings b/ios/App/App/ru.lproj/InfoPlist.strings index 329502e..e18b40f 100644 --- a/ios/App/App/ru.lproj/InfoPlist.strings +++ b/ios/App/App/ru.lproj/InfoPlist.strings @@ -1,6 +1,6 @@ "CFBundleDisplayName" = "Simple QR"; "CFBundleName" = "Simple QR"; -"NSCameraUsageDescription" = "Simple QR uses Camera to scan QR code and barcodes"; -"NSContactsUsageDescription" = "Simple QR uses Contacts to add contact"; -"NSPhotoLibraryAddUsageDescription" = "Simple QR uses Photo Library to save QR code image"; -"NSPhotoLibraryUsageDescription" = "Simple QR uses Photo Library to import image and scan QR code"; \ No newline at end of file +"NSCameraUsageDescription" = "Simple QR использует камеру для сканирования QR-кода и штрих-кодов"; +"NSContactsUsageDescription" = "Simple QR использует Контакты для добавления контакта"; +"NSPhotoLibraryAddUsageDescription" = "Simple QR использует библиотеку фотографий для сохранения изображения QR-кода"; +"NSPhotoLibraryUsageDescription" = "Simple QR использует библиотеку фотографий для импорта изображений и сканирования QR-кода."; diff --git a/src/app/pages/history/history.page.ts b/src/app/pages/history/history.page.ts index 5ed56ca..4e580c8 100644 --- a/src/app/pages/history/history.page.ts +++ b/src/app/pages/history/history.page.ts @@ -3,7 +3,7 @@ import { ActivatedRoute, Router } from '@angular/router'; import { AlertController, IonItemSliding, LoadingController, ModalController, PopoverController, ToastController } from '@ionic/angular'; import { EnvService } from 'src/app/services/env.service'; import { format, Locale } from 'date-fns'; -import { de, enUS, fr, it, zhCN, zhHK } from 'date-fns/locale'; +import { de, enUS, fr, it, ru, zhCN, zhHK } from 'date-fns/locale'; import { ScanRecord } from 'src/app/models/scan-record'; import { TranslateService } from '@ngx-translate/core'; import { Bookmark } from 'src/app/models/bookmark'; @@ -138,6 +138,9 @@ export class HistoryPage { case "it": locale = it; break; + case "ru": + locale = ru; + break; case "zh-CN": locale = zhCN; break; diff --git a/src/app/pages/setting-language/setting-language.page.html b/src/app/pages/setting-language/setting-language.page.html index 2ca182a..848d3bd 100644 --- a/src/app/pages/setting-language/setting-language.page.html +++ b/src/app/pages/setting-language/setting-language.page.html @@ -19,8 +19,7 @@

- + @@ -31,8 +30,7 @@

- +
@@ -43,8 +41,7 @@

- +
@@ -55,8 +52,7 @@

- +
@@ -67,32 +63,7 @@

- - -
- - -

- - 中文 (香港) (zh-HK) - -

-
- - -
- - -

- - 简体中文 (zh-CN) - -

-
- +
@@ -103,8 +74,29 @@

- + + +
+ + +

+ + 中文 (香港) (zh-HK) + +

+
+ + +
+ + +

+ + 简体中文 (zh-CN) + +

+
+
diff --git a/src/app/pages/setting-record/setting-record.page.ts b/src/app/pages/setting-record/setting-record.page.ts index 5b7afee..b9ca1d8 100644 --- a/src/app/pages/setting-record/setting-record.page.ts +++ b/src/app/pages/setting-record/setting-record.page.ts @@ -13,7 +13,7 @@ import { Bookmark } from 'src/app/models/bookmark'; import { SocialSharing } from '@awesome-cordova-plugins/social-sharing/ngx'; import { Haptics, ImpactStyle } from '@capacitor/haptics'; import { Preferences } from '@capacitor/preferences'; -import { de, enUS, fr, it, zhCN, zhHK } from 'date-fns/locale'; +import { de, enUS, fr, it, ru, zhCN, zhHK } from 'date-fns/locale'; @Component({ selector: 'app-setting-record', @@ -316,6 +316,9 @@ export class SettingRecordPage { case "it": rawCsvData = "ID,Contenuto,Creato a,Fonte,Tipo di codice a barre,Aggiunto ai preferiti?,Etichetta\r\n"; break; + case "ru": + rawCsvData = "ID,Содержание,Создано в,Источник,Тип штрих-кода,В закладках?,Ярлык\r\n"; + break; case "zh-CN": rawCsvData = "ID,内容,建立于,来源,条码类型,已书签?,标签\r\n"; break; @@ -471,6 +474,9 @@ export class SettingRecordPage { case "it": locale = it; break; + case "ru": + locale = ru; + break; case "zh-CN": locale = zhCN; break; @@ -501,6 +507,9 @@ export class SettingRecordPage { case "it": locale = it; break; + case "ru": + locale = ru; + break; case "zh-CN": locale = zhCN; break; diff --git a/src/app/services/env.service.ts b/src/app/services/env.service.ts index b077dea..f68c24a 100644 --- a/src/app/services/env.service.ts +++ b/src/app/services/env.service.ts @@ -15,7 +15,7 @@ import { v4 as uuidv4 } from 'uuid'; import { Preferences } from '@capacitor/preferences'; import { Observable } from 'rxjs'; -export declare type LanguageType = 'de' | 'en' | 'fr' | 'it' | 'zh-CN' | 'zh-HK'; +export declare type LanguageType = 'de' | 'en' | 'fr' | 'it' | 'ru' | 'zh-CN' | 'zh-HK'; export declare type TabPageType = "/tabs/scan" | "/tabs/generate" | "/tabs/import-image" | "/tabs/history" | "/tabs/setting"; export declare type HistoryPageSegmentType = 'history' | 'bookmarks'; export declare type OnOffType = "on" | "off"; @@ -1615,6 +1615,9 @@ export class EnvService { case "it": language = "it" break; + case "ru": + language = "ru" + break; case "zh": if (browserCultureLang == 'zh-CN' || browserCultureLang == 'zh-SG') { language = 'zh-CN'; diff --git a/src/assets/i18n/ru.json b/src/assets/i18n/ru.json index a759448..4fb9821 100644 --- a/src/assets/i18n/ru.json +++ b/src/assets/i18n/ru.json @@ -311,4 +311,4 @@ "UPDATE_NOTES_ANDROID": "

В этом релизе вас ждет несколько обновлений и новых функций. Посетите GitHub проекта, чтобы узнать детали.

", "UPDATE_NOTES_IOS": "

В этом релизе вас ждет несколько обновлений и новых функций. Посетите GitHub проекта, чтобы узнать детали.

" } -} +} \ No newline at end of file From 90ebc525372fb918aabab8599302a34327833750 Mon Sep 17 00:00:00 2001 From: Tom Fong Date: Thu, 1 Dec 2022 20:57:26 +0800 Subject: [PATCH 08/11] feat: allow manually saving if auto logging is off --- src/app/pages/result/result.page.html | 103 +++++++++++++++----------- src/app/pages/result/result.page.ts | 11 +++ src/assets/i18n/de.json | 2 + src/assets/i18n/en.json | 2 + src/assets/i18n/fr.json | 2 + src/assets/i18n/it.json | 2 + src/assets/i18n/ru.json | 2 + src/assets/i18n/zh-CN.json | 2 + src/assets/i18n/zh-HK.json | 2 + 9 files changed, 86 insertions(+), 42 deletions(-) diff --git a/src/app/pages/result/result.page.html b/src/app/pages/result/result.page.html index ed5a9ba..2bb842a 100644 --- a/src/app/pages/result/result.page.html +++ b/src/app/pages/result/result.page.html @@ -106,19 +106,22 @@ [ngStyle]="env.colorTheme === 'dark'? {'background-color': '#222428'} : (env.colorTheme === 'black'? {'background-color': '#000000'} : {'background-color': '#F0F0F0'})"> - + - + - + @@ -170,52 +173,68 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
- + + {{ 'SAVE' | translate }} + + Facts diff --git a/src/app/pages/result/result.page.ts b/src/app/pages/result/result.page.ts index 621d552..b7d55c8 100644 --- a/src/app/pages/result/result.page.ts +++ b/src/app/pages/result/result.page.ts @@ -54,6 +54,8 @@ export class ResultPage { showQrFirst: boolean = false; + resultSaved: boolean = false; + @ViewChildren(MatFormField) formFields: QueryList; constructor( @@ -104,6 +106,14 @@ export class ResultPage { this.reset(); } + async saveRecord() { + if (this.qrCodeContent != null && this.qrCodeContent != "") { + await this.env.saveScanRecord(this.qrCodeContent); + } + this.resultSaved = true; + this.presentToast(this.translate.instant("SAVED"), "short", "bottom"); + } + reset() { this.contentType = "freeText"; delete this.qrCodeContent; @@ -125,6 +135,7 @@ export class ResultPage { this.base64DecodedText = ""; this.bookmarked = false; this.showQrFirst = false; + this.resultSaved = false; delete this.env.recordSource; delete this.env.detailedRecordSource; delete this.env.viewResultFrom; diff --git a/src/assets/i18n/de.json b/src/assets/i18n/de.json index 0876045..2ee1022 100644 --- a/src/assets/i18n/de.json +++ b/src/assets/i18n/de.json @@ -165,6 +165,8 @@ "RESET_DEFAULT": "Standard zurücksetzen", "RESTORE": "Wiederherstellen", "RESULT": "Ergebnis", + "SAVE": "Speichern", + "SAVED": "Gespeichert", "SCAN": "Scannen", "SCANNED": "Gescannt", "SCANNING_FEEDBACK_ONLY": "Nur Feedback scannen", diff --git a/src/assets/i18n/en.json b/src/assets/i18n/en.json index ef07b3a..6d96311 100644 --- a/src/assets/i18n/en.json +++ b/src/assets/i18n/en.json @@ -165,6 +165,8 @@ "RESET_DEFAULT": "Reset Default", "RESTORE": "Restore", "RESULT": "Result", + "SAVE": "Save", + "SAVED": "Saved", "SCAN": "Scan", "SCANNED": "Scanned", "SCANNING_FEEDBACK_ONLY": "Scanning Feedback Only", diff --git a/src/assets/i18n/fr.json b/src/assets/i18n/fr.json index 41d0856..2dc6b70 100644 --- a/src/assets/i18n/fr.json +++ b/src/assets/i18n/fr.json @@ -165,6 +165,8 @@ "RESET_DEFAULT": "Réinitialiser par défaut", "RESTORE": "Restaurer", "RESULT": "Résultat", + "SAVE": "Enregistrer", + "SAVED": "Enregistrée", "SCAN": "Scanner", "SCANNED": "Scanné", "SCANNING_FEEDBACK_ONLY": "Vibrer lors de la numérisation uniquement", diff --git a/src/assets/i18n/it.json b/src/assets/i18n/it.json index c8aa586..408b71e 100644 --- a/src/assets/i18n/it.json +++ b/src/assets/i18n/it.json @@ -165,6 +165,8 @@ "RESET_DEFAULT": "Ripristina predefinito", "RESTORE": "Ripristina", "RESULT": "Risultato", + "SAVE": "Salva", + "SAVED": "Salvato", "SCAN": "Scannerizza", "SCANNED": "Scannerizzato", "SCANNING_FEEDBACK_ONLY": "Scansione esclusivamente del feedback", diff --git a/src/assets/i18n/ru.json b/src/assets/i18n/ru.json index 4fb9821..025bee2 100644 --- a/src/assets/i18n/ru.json +++ b/src/assets/i18n/ru.json @@ -165,6 +165,8 @@ "RESET_DEFAULT": "Настройки по умолчанию", "RESTORE": "Восстановление", "RESULT": "Результат", + "SAVE": "Сохранять", + "SAVED": "Сохранено", "SCAN": "Сканировать", "SCANNED": "Просканировано", "SCANNING_FEEDBACK_ONLY": "Только отклик сканирования", diff --git a/src/assets/i18n/zh-CN.json b/src/assets/i18n/zh-CN.json index d60be36..9887a12 100644 --- a/src/assets/i18n/zh-CN.json +++ b/src/assets/i18n/zh-CN.json @@ -165,6 +165,8 @@ "RESET_DEFAULT": "还原预设值", "RESTORE": "还原", "RESULT": "结果", + "SAVE": "储存", + "SAVED": "已储存", "SCAN": "扫描", "SCANNED": "扫描", "SCANNING_FEEDBACK_ONLY": "仅扫描反馈", diff --git a/src/assets/i18n/zh-HK.json b/src/assets/i18n/zh-HK.json index f7e4956..6c0e939 100644 --- a/src/assets/i18n/zh-HK.json +++ b/src/assets/i18n/zh-HK.json @@ -165,6 +165,8 @@ "RESET_DEFAULT": "還原預設值", "RESTORE": "還原", "RESULT": "結果", + "SAVE": "儲存", + "SAVED": "已儲存", "SCAN": "掃描", "SCANNED": "掃描", "SCANNING_FEEDBACK_ONLY": "僅掃描反饋", From b9d329bd1340a5d3a7d0cd3e7a51e9c32c9bb5df Mon Sep 17 00:00:00 2001 From: Tom Fong Date: Thu, 1 Dec 2022 20:59:53 +0800 Subject: [PATCH 09/11] chore: regular update on dependencies --- README.md | 2 +- package-lock.json | 172 +++++++++++++++++++++++----------------------- package.json | 2 +- 3 files changed, 88 insertions(+), 88 deletions(-) diff --git a/README.md b/README.md index e61934c..65c58f7 100644 --- a/README.md +++ b/README.md @@ -122,7 +122,7 @@ Thank you the following contributors who have made the app better! ```sh Ionic CLI : 6.20.4 - Ionic Framework : @ionic/angular 6.3.7 + Ionic Framework : @ionic/angular 6.3.9 @angular-devkit/build-angular : 14.2.10 @angular-devkit/schematics : 14.2.10 @angular/cli : 14.2.10 diff --git a/package-lock.json b/package-lock.json index 8ac6eec..5e47f16 100644 --- a/package-lock.json +++ b/package-lock.json @@ -43,7 +43,7 @@ "@capacitor/splash-screen": "^4.1.2", "@capacitor/status-bar": "^4.1.0", "@capacitor/toast": "^4.1.0", - "@ionic/angular": "^6.3.8", + "@ionic/angular": "^6.3.9", "@ionic/storage": "^3.0.6", "@ionic/storage-angular": "^3.0.6", "@ng-bootstrap/ng-bootstrap": "^13.1.1", @@ -720,9 +720,9 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.1.tgz", - "integrity": "sha512-EWZ4mE2diW3QALKvDMiXnbZpRvlj+nayZ112nK93SnhqOtpdsbVD4W+2tEoT3YNBAG9RBR0ISY758ZkOgsn6pQ==", + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.5.tgz", + "integrity": "sha512-KZXo2t10+/jxmkhNXc7pZTqRvSOIvVv/+lJwHS+B2rErwOyjuVRh60yVpb7liQ1U5t7lLJ1bz+t8tSypUZdm0g==", "engines": { "node": ">=6.9.0" } @@ -841,9 +841,9 @@ } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.2.tgz", - "integrity": "sha512-k22GoYRAHPYr9I+Gvy2ZQlAe5mGy8BqWst2wRt8cwIufWTxrsVshhIBvYNqC80N0GSFWTsqRVexOtfzlgOEDvA==", + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.5.tgz", + "integrity": "sha512-3RCdA/EmEaikrhayahwToF0fpweU/8o2p8vhc1c/1kftHOdTKuC65kik/TLc+qfbS8JKw4qqJbne4ovICDhmww==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.18.6", @@ -862,13 +862,13 @@ } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.19.0.tgz", - "integrity": "sha512-htnV+mHX32DF81amCDrwIDr8nrp1PTm+3wfBN9/v8QJOLEioOCOG7qNyq0nHeFiWbT3Eb7gsPwEmV64UCQ1jzw==", + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.20.5.tgz", + "integrity": "sha512-m68B1lkg3XDGX5yCvGO0kPx3v9WIYLnzjKfPcQiwntEQa5ZeRkPmo2X/ISJc8qxWGfwUr+kvZAeEzAwLec2r2w==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.18.6", - "regexpu-core": "^5.1.0" + "regexpu-core": "^5.2.1" }, "engines": { "node": ">=6.9.0" @@ -1101,28 +1101,28 @@ } }, "node_modules/@babel/helper-wrap-function": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.19.0.tgz", - "integrity": "sha512-txX8aN8CZyYGTwcLhlk87KRqncAzhh5TpQamZUa0/u3an36NtDpUP6bQgBCBcLeBs09R/OwQu3OjK0k/HwfNDg==", + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.20.5.tgz", + "integrity": "sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q==", "dev": true, "dependencies": { "@babel/helper-function-name": "^7.19.0", "@babel/template": "^7.18.10", - "@babel/traverse": "^7.19.0", - "@babel/types": "^7.19.0" + "@babel/traverse": "^7.20.5", + "@babel/types": "^7.20.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.1.tgz", - "integrity": "sha512-J77mUVaDTUJFZ5BpP6mMn6OIl3rEWymk2ZxDBQJUG3P+PbmyMcF3bYWvz0ma69Af1oobDqT/iAsvzhB58xhQUg==", + "version": "7.20.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.6.tgz", + "integrity": "sha512-Pf/OjgfgFRW5bApskEz5pvidpim7tEDPlFtKcNRXWmfHGn9IEI2W2flqRQXTFb7gIPTyK++N6rVHuwKut4XK6w==", "dependencies": { "@babel/template": "^7.18.10", - "@babel/traverse": "^7.20.1", - "@babel/types": "^7.20.0" + "@babel/traverse": "^7.20.5", + "@babel/types": "^7.20.5" }, "engines": { "node": ">=6.9.0" @@ -1142,9 +1142,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.20.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.3.tgz", - "integrity": "sha512-OP/s5a94frIPXwjzEcv5S/tpQfc6XhxYUnmWpgdqMWGgYCuErA3SzozaRAMQgSZWKeTJxht9aWAkUY+0UzvOFg==", + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.5.tgz", + "integrity": "sha512-r27t/cy/m9uKLXQNWWebeCUHgnAZq0CpG1OwKRxzJMP1vpSU4bSIK2hq+/cp0bQxetkXx38n09rNu8jVkcK/zA==", "bin": { "parser": "bin/babel-parser.js" }, @@ -1400,14 +1400,14 @@ } }, "node_modules/@babel/plugin-proposal-private-property-in-object": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.18.6.tgz", - "integrity": "sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw==", + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.20.5.tgz", + "integrity": "sha512-Vq7b9dUA12ByzB4EjQTPo25sFhY+08pQDBSZRtUAkj7lb7jahaHR5igera16QZ+3my1nYR4dKsNdYj5IjPHilQ==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-create-class-features-plugin": "^7.20.5", + "@babel/helper-plugin-utils": "^7.20.2", "@babel/plugin-syntax-private-property-in-object": "^7.14.5" }, "engines": { @@ -1673,9 +1673,9 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.2.tgz", - "integrity": "sha512-y5V15+04ry69OV2wULmwhEA6jwSWXO1TwAtIwiPXcvHcoOQUqpyMVd2bDsQJMW8AurjulIyUV8kDqtjSwHy1uQ==", + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.5.tgz", + "integrity": "sha512-WvpEIW9Cbj9ApF3yJCjIEEf1EiNJLtXagOrL5LNWEZOo3jv8pmPoYTSNJQvqej8OavVlgOoOPw6/htGZro6IkA==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.20.2" @@ -1917,13 +1917,13 @@ } }, "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.19.1.tgz", - "integrity": "sha512-oWk9l9WItWBQYS4FgXD4Uyy5kq898lvkXpXQxoJEY1RnvPk4R/Dvu2ebXU9q8lP+rlMwUQTFf2Ok6d78ODa0kw==", + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.20.5.tgz", + "integrity": "sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.19.0", - "@babel/helper-plugin-utils": "^7.19.0" + "@babel/helper-create-regexp-features-plugin": "^7.20.5", + "@babel/helper-plugin-utils": "^7.20.2" }, "engines": { "node": ">=6.9.0" @@ -1964,9 +1964,9 @@ } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.20.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.3.tgz", - "integrity": "sha512-oZg/Fpx0YDrj13KsLyO8I/CX3Zdw7z0O9qOd95SqcoIzuqy/WTGWvePeHAnZCN54SfdyjHcb1S30gc8zlzlHcA==", + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.5.tgz", + "integrity": "sha512-h7plkOmcndIUWXZFLgpbrh2+fXAi47zcUX7IrOQuZdLD0I0KvjJ6cvo3BEcAOsDOcZhVKGJqv07mkSqK0y2isQ==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.20.2" @@ -1994,13 +1994,13 @@ } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz", - "integrity": "sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ==", + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.20.5.tgz", + "integrity": "sha512-kW/oO7HPBtntbsahzQ0qSE3tFvkFwnbozz3NWFhLGqH75vLEg+sCGngLlhVkePlCs3Jv0dBBHDzCHxNiFAQKCQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "regenerator-transform": "^0.15.0" + "@babel/helper-plugin-utils": "^7.20.2", + "regenerator-transform": "^0.15.1" }, "engines": { "node": ">=6.9.0" @@ -2300,18 +2300,18 @@ } }, "node_modules/@babel/traverse": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.1.tgz", - "integrity": "sha512-d3tN8fkVJwFLkHkBN479SOsw4DMZnz8cdbL/gvuDuzy3TS6Nfw80HuQqhw1pITbIruHyh7d1fMA47kWzmcUEGA==", + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.5.tgz", + "integrity": "sha512-WM5ZNN3JITQIq9tFZaw1ojLU3WgWdtkxnhM1AegMS+PvHjkM5IXjmYEGY7yukz5XS4sJyEf2VzWjI8uAavhxBQ==", "dependencies": { "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.20.1", + "@babel/generator": "^7.20.5", "@babel/helper-environment-visitor": "^7.18.9", "@babel/helper-function-name": "^7.19.0", "@babel/helper-hoist-variables": "^7.18.6", "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.20.1", - "@babel/types": "^7.20.0", + "@babel/parser": "^7.20.5", + "@babel/types": "^7.20.5", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -2320,11 +2320,11 @@ } }, "node_modules/@babel/traverse/node_modules/@babel/generator": { - "version": "7.20.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.4.tgz", - "integrity": "sha512-luCf7yk/cm7yab6CAW1aiFnmEfBJplb/JojV56MYEK7ziWfGmFlTfmL9Ehwfy4gFhbjBfWO1wj7/TuSbVNEEtA==", + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.5.tgz", + "integrity": "sha512-jl7JY2Ykn9S0yj4DQP82sYvPU+T3g0HFcWTqDLqiuA9tGRNIj9VfbtXGAYTTkyNEnQk1jkMGOdYka8aG/lulCA==", "dependencies": { - "@babel/types": "^7.20.2", + "@babel/types": "^7.20.5", "@jridgewell/gen-mapping": "^0.3.2", "jsesc": "^2.5.1" }, @@ -2346,9 +2346,9 @@ } }, "node_modules/@babel/types": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.2.tgz", - "integrity": "sha512-FnnvsNWgZCr232sqtXggapvlkk/tuwR/qhGzcmxI0GXLCjmPYQPzio2FbdlWuY6y1sHFfQKk+rRbUZ9VStQMog==", + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.5.tgz", + "integrity": "sha512-c9fst/h2/dcF7H+MJKZ2T0KjEQ8hY/BNnDk/H3XY8C4Aw/eWQXWn/lWntHF9ooUBnGmEvbfGrTgLWc+um0YDUg==", "dependencies": { "@babel/helper-string-parser": "^7.19.4", "@babel/helper-validator-identifier": "^7.19.1", @@ -2848,11 +2848,11 @@ "dev": true }, "node_modules/@ionic/angular": { - "version": "6.3.8", - "resolved": "https://registry.npmjs.org/@ionic/angular/-/angular-6.3.8.tgz", - "integrity": "sha512-r+ac7V5yjYrIjBUD7vriP06g5Y9a8B55na4jrZ+psSh2l3tNHQ90DjUkAXRHGrlXzR5R5Xh8GCq/eH/NV9R6rQ==", + "version": "6.3.9", + "resolved": "https://registry.npmjs.org/@ionic/angular/-/angular-6.3.9.tgz", + "integrity": "sha512-j/nuHCulDygDeU4WwdKY1l+kwQGKRBN9afwdbCO79lztKenlPwiqyYwds2lZuvhMmF+S5oqXrN5gt26mVUBdCA==", "dependencies": { - "@ionic/core": "^6.3.7", + "@ionic/core": "6.3.9", "ionicons": "^6.0.4", "jsonc-parser": "^3.0.0", "tslib": "^2.0.0" @@ -3323,9 +3323,9 @@ } }, "node_modules/@ionic/core": { - "version": "6.3.8", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-6.3.8.tgz", - "integrity": "sha512-mpawxkbjx/lBaWMYexvEHzKP9+03gKKe/CXHGnBh7z9WHpDuR+H9jdojjiHkakoN79TcdM3G+BYMZ0tVGeeJhw==", + "version": "6.3.9", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-6.3.9.tgz", + "integrity": "sha512-0JlCGIgLASoxZ6XXEkhCMQzdedvzqI7lsD6zBYPkUyMFOMTff7fZdQg1r9v9IQVHW+UCuyM4xc0MT4YOD4/S3A==", "dependencies": { "@stencil/core": "^2.18.0", "ionicons": "^6.0.4", @@ -5018,9 +5018,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001434", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001434.tgz", - "integrity": "sha512-aOBHrLmTQw//WFa2rcF1If9fa3ypkC1wzqqiKHgfdrXTWcU8C4gKVZT77eQAPWN1APys3+uQ0Df07rKauXGEYA==", + "version": "1.0.30001435", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001435.tgz", + "integrity": "sha512-kdCkUTjR+v4YAJelyiDTqiu82BDr4W4CP5sgTA0ZBmqn30XfS2ZghPLMowik9TPhS+psWJiUNxsqLyurDbmutA==", "funding": [ { "type": "opencollective", @@ -5831,9 +5831,9 @@ } }, "node_modules/cssdb": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-7.1.0.tgz", - "integrity": "sha512-Sd99PrFgx28ez4GHu8yoQIufc/70h9oYowDf4EjeIKi8mac9whxRjhM3IaMr6EllP6KKKWtJrMfN6C7T9tIWvQ==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-7.2.0.tgz", + "integrity": "sha512-JYlIsE7eKHSi0UNuCyo96YuIDFqvhGgHw4Ck6lsN+DP0Tp8M64UTDT2trGbkMDqnCoEjks7CkS0XcjU0rkvBdg==", "dev": true, "funding": { "type": "opencollective", @@ -7866,9 +7866,9 @@ ] }, "node_modules/ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.1.tgz", + "integrity": "sha512-d2qQLzTJ9WxQftPAuEQpSPmKqzxePjzVbpAVv62AQ64NTL+wR4JkrVqR/LqFsFEUsHDAiId52mJteHDFuDkElA==", "dev": true, "engines": { "node": ">= 4" @@ -9371,9 +9371,9 @@ } }, "node_modules/log4js": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.7.0.tgz", - "integrity": "sha512-KA0W9ffgNBLDj6fZCq/lRbgR6ABAodRIDHrZnS48vOtfKa4PzWImb0Md1lmGCdO3n3sbCm/n1/WmrNlZ8kCI3Q==", + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.7.1.tgz", + "integrity": "sha512-lzbd0Eq1HRdWM2abSD7mk6YIVY0AogGJzb/z+lqzRk+8+XJP+M6L1MS5FUSc3jjGru4dbKjEMJmqlsoYYpuivQ==", "dev": true, "dependencies": { "date-format": "^4.0.14", @@ -9651,9 +9651,9 @@ } }, "node_modules/minipass": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.4.tgz", - "integrity": "sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==", + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, "dependencies": { "yallist": "^4.0.0" @@ -11029,9 +11029,9 @@ } }, "node_modules/postcss-custom-properties": { - "version": "12.1.10", - "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-12.1.10.tgz", - "integrity": "sha512-U3BHdgrYhCrwTVcByFHs9EOBoqcKq4Lf3kXwbTi4hhq0qWhl/pDWq2THbv/ICX/Fl9KqeHBb8OVrTf2OaYF07A==", + "version": "12.1.11", + "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-12.1.11.tgz", + "integrity": "sha512-0IDJYhgU8xDv1KY6+VgUwuQkVtmYzRwu+dMjnmdMafXYv86SWqfxkc7qdDvWS38vsjaEtv8e0vGOUQrAiMBLpQ==", "dev": true, "dependencies": { "postcss-value-parser": "^4.2.0" @@ -13973,9 +13973,9 @@ } }, "node_modules/vm2": { - "version": "3.9.11", - "resolved": "https://registry.npmjs.org/vm2/-/vm2-3.9.11.tgz", - "integrity": "sha512-PFG8iJRSjvvBdisowQ7iVF580DXb1uCIiGaXgm7tynMR1uTBlv7UJlB1zdv5KJ+Tmq1f0Upnj3fayoEOPpCBKg==", + "version": "3.9.12", + "resolved": "https://registry.npmjs.org/vm2/-/vm2-3.9.12.tgz", + "integrity": "sha512-OMmRsKh1gmdosFzuqmj6O43hqIStqXA24YbwjtUTO0TkOBP8yLNHLplbr4odnAzEcMnm9lt2r3R8kTivn8urMg==", "dev": true, "dependencies": { "acorn": "^8.7.0", diff --git a/package.json b/package.json index 7431693..044198a 100644 --- a/package.json +++ b/package.json @@ -52,7 +52,7 @@ "@capacitor/splash-screen": "^4.1.2", "@capacitor/status-bar": "^4.1.0", "@capacitor/toast": "^4.1.0", - "@ionic/angular": "^6.3.8", + "@ionic/angular": "^6.3.9", "@ionic/storage": "^3.0.6", "@ionic/storage-angular": "^3.0.6", "@ng-bootstrap/ng-bootstrap": "^13.1.1", From 3f4a9220d988e36bbf51b057fef7ea9dbab2911c Mon Sep 17 00:00:00 2001 From: Tom Fong Date: Thu, 1 Dec 2022 21:02:58 +0800 Subject: [PATCH 10/11] chore: version bump --- android/app/build.gradle | 4 ++-- ios/App/App.xcodeproj/project.pbxproj | 4 ++-- package-lock.json | 4 ++-- package.json | 3 +-- src/app/services/env.service.ts | 10 +++++----- 5 files changed, 12 insertions(+), 13 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index 7b72905..ee05241 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -6,8 +6,8 @@ android { applicationId "com.tomfong.simpleqr" minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion - versionCode 3020000 - versionName "3.2.0" + versionCode 3030000 + versionName "3.3.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" aaptOptions { // Files and dirs to omit from the packaged assets dir, modified to accommodate modern web apps. diff --git a/ios/App/App.xcodeproj/project.pbxproj b/ios/App/App.xcodeproj/project.pbxproj index 4855368..3b3b675 100644 --- a/ios/App/App.xcodeproj/project.pbxproj +++ b/ios/App/App.xcodeproj/project.pbxproj @@ -399,7 +399,7 @@ INFOPLIST_FILE = App/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 13.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - MARKETING_VERSION = 3.2.0; + MARKETING_VERSION = 3.3.0; OTHER_SWIFT_FLAGS = "$(inherited) \"-D\" \"COCOAPODS\" \"-DDEBUG\""; PRODUCT_BUNDLE_IDENTIFIER = com.tomfong.simpleqr; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -422,7 +422,7 @@ INFOPLIST_FILE = App/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 13.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - MARKETING_VERSION = 3.2.0; + MARKETING_VERSION = 3.3.0; PRODUCT_BUNDLE_IDENTIFIER = com.tomfong.simpleqr; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = "Simple QR"; diff --git a/package-lock.json b/package-lock.json index 5e47f16..b15ceca 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "simple-qr", - "version": "3.2.0", + "version": "3.3.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "simple-qr", - "version": "3.2.0", + "version": "3.3.0", "dependencies": { "@angular/animations": "^14.2.3", "@angular/cdk": "^14.2.2", diff --git a/package.json b/package.json index 044198a..7b31ceb 100644 --- a/package.json +++ b/package.json @@ -1,8 +1,7 @@ { "name": "simple-qr", - "version": "3.2.0", + "version": "3.3.0", "author": "Tom Fong", - "homepage": "https://tomfong.github.io", "scripts": { "ng": "ng", "build:an": "ionic cap build android --prod --no-open", diff --git a/src/app/services/env.service.ts b/src/app/services/env.service.ts index f68c24a..a9dfa9a 100644 --- a/src/app/services/env.service.ts +++ b/src/app/services/env.service.ts @@ -31,7 +31,7 @@ export declare type ResultPageButtonsType = 'detailed' | 'icon-only'; }) export class EnvService { - public appVersionNumber: string = '3.2.0'; + public appVersionNumber: string = '3.3.0'; public startPage: TabPageType = "/tabs/scan"; public historyPageStartSegment: HistoryPageSegmentType = 'history'; @@ -123,10 +123,10 @@ export class EnvService { public readonly KEY_SHOW_OPEN_FOOD_FACTS_BUTTON = "showOpenFoodFactsButton"; public readonly KEY_AUTO_EXIT_MIN = "autoExitAppMin"; - public readonly KEY_ANDROID_NOT_SHOW_UPDATE_NOTES = "not-show-update-notes-v30200"; - public readonly KEY_IOS_NOT_SHOW_UPDATE_NOTES = "not-show-update-notes-v30200"; - public readonly KEY_ANDROID_PREV_NOT_SHOW_UPDATE_NOTES = "not-show-update-notes-v30100"; - public readonly KEY_IOS_PREV_NOT_SHOW_UPDATE_NOTES = "not-show-update-notes-v30100"; + public readonly KEY_ANDROID_NOT_SHOW_UPDATE_NOTES = "not-show-update-notes-v30300"; + public readonly KEY_IOS_NOT_SHOW_UPDATE_NOTES = "not-show-update-notes-v30300"; + public readonly KEY_ANDROID_PREV_NOT_SHOW_UPDATE_NOTES = "not-show-update-notes-v30200"; + public readonly KEY_IOS_PREV_NOT_SHOW_UPDATE_NOTES = "not-show-update-notes-v30200"; public readonly APP_FOLDER_NAME: string = 'SimpleQR'; From ae1a4847d0ab295688f992f19aaeef8e4d67e791 Mon Sep 17 00:00:00 2001 From: Tom Fong Date: Thu, 1 Dec 2022 21:06:53 +0800 Subject: [PATCH 11/11] doc: update fastlane --- fastlane/metadata/android/en-US/changelogs/3030000.txt | 3 +++ fastlane/metadata/android/en-US/full_description.txt | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) create mode 100644 fastlane/metadata/android/en-US/changelogs/3030000.txt diff --git a/fastlane/metadata/android/en-US/changelogs/3030000.txt b/fastlane/metadata/android/en-US/changelogs/3030000.txt new file mode 100644 index 0000000..4d9420b --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/3030000.txt @@ -0,0 +1,3 @@ +* Support Russian language +* Allow user to manually save a record if auto logging is off +* Minor update on UI \ No newline at end of file diff --git a/fastlane/metadata/android/en-US/full_description.txt b/fastlane/metadata/android/en-US/full_description.txt index 154fbe2..c3d83df 100644 --- a/fastlane/metadata/android/en-US/full_description.txt +++ b/fastlane/metadata/android/en-US/full_description.txt @@ -1,6 +1,6 @@ Simple QR is an open-source app to scan, create and store QR codes with a simple UI and experience. No backend service connected. No data collected. No ads. -English, French, German, Itanlian, Traditional Chinese and Simplified Chinese are supported. +English, French, German, Itanlian, Russian, Traditional Chinese and Simplified Chinese are supported. By using the app, you can: