diff --git a/README.md b/README.md index 8d7ea24..25f7017 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,6 @@ -# TOTPFIT - Another 2FAuthenticator based on TOTP for Zepp Amazfit GTS 4 +# TOTPFIT +### Another 2FAuthenticator based on TOTP for Zepp Amazfit GTS 4 Features: -- Supports otpauth links with parameters "issuer", "algorithm", "digits", "period" +- Supports of otpauth links with parameters "issuer", "algorithm", "digits", "period" +- Addition/Edition/Deletion of TOTPs from mobile settings app \ No newline at end of file diff --git a/app.json b/app.json index 128688a..5c86e41 100644 --- a/app.json +++ b/app.json @@ -6,14 +6,15 @@ "appType": "app", "version": { "code": 1, - "name": "1.0.1" + "name": "1.1.0" }, "icon": "icon.png", "vender": "zepp", - "description": "TOTP Authenticator for Amazfit devices" + "description": "Another 2FAuthenticator based on TOTP for Zepp Amazfit GTS 4" }, "permissions": [ - "data:os.device.info" + "data:os.device.info", + "device:os.local_storage" ], "runtime": { "apiVersion": { diff --git a/package.json b/package.json index b0fceca..65356db 100644 --- a/package.json +++ b/package.json @@ -1,12 +1,9 @@ { "name": "totpfit", - "version": "1.0.0", - "description": "TOTP Authenticator for Amazfit devices", + "version": "1.1.0", + "description": "Another 2FAuthenticator based on TOTP for Zepp Amazfit GTS 4", "main": "app.js", - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" - }, - "author": "", + "author": "Lisoveliy", "license": "MIT", "devDependencies": { "@zeppos/device-types": "^3.0.0" diff --git a/page/index.js b/page/index.js index 686e917..776ff07 100644 --- a/page/index.js +++ b/page/index.js @@ -1,19 +1,30 @@ import { RenderAddButton } from "./render/totpRenderer"; import { initLoop } from "./render/index/renderer"; import { BasePage } from "@zeppos/zml/base-page"; +import { LocalStorage } from "@zos/storage"; const app = getApp(); + let waitForFetch = true; +let localStorage = new LocalStorage(); + Page( BasePage({ onInit() { this.getTOTPData() .then((x) => { app._options.globalData.TOTPS = JSON.parse(x) ?? []; + localStorage.setItem( + "TOTPs", + JSON.stringify(app._options.globalData.TOTPS) + ); this.initPage(); }) .catch((x) => { - app._options.globalData.TOTPS = []; + console.log(`Init failed: ${x}`); + app._options.globalData.TOTPS = JSON.parse( + localStorage.getItem("TOTPs", null) ?? [] + ); this.initPage(); }); }, diff --git a/page/render/index/renderer.js b/page/render/index/renderer.js index 7db9e67..7301b3b 100644 --- a/page/render/index/renderer.js +++ b/page/render/index/renderer.js @@ -20,8 +20,8 @@ function renderContainers(buffer) { RenderTOTPContainer(i, buffer[i].issuer, buffer[i].client); } } -const renderData = []; +const renderData = []; function renderTOTPs(buffer) { for (let i = 0; i < buffer.length; i++) { let otpData = TOTP.copy(buffer[i]).getOTP(); diff --git a/page/render/totpRenderer.js b/page/render/totpRenderer.js index be44e40..714d6ed 100644 --- a/page/render/totpRenderer.js +++ b/page/render/totpRenderer.js @@ -7,6 +7,7 @@ import { createWidget, widget, align, text_style } from "@zos/ui"; const { width, height } = getDeviceInfo(); const buttonWidth = width - width / 20; //Width of container const buttonHeight = height / 4; //Height of container + const containerColor = 0x303030; //Color of container const containerRadius = 20; //Corner radius of container