Compare commits

..

4 Commits

6 changed files with 25 additions and 13 deletions

View File

@ -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

View File

@ -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": {

View File

@ -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"

View File

@ -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();
});
},

View File

@ -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();

View File

@ -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