Compare commits
4 Commits
73ea81af54
...
b12eacb5e1
Author | SHA1 | Date | |
---|---|---|---|
b12eacb5e1 | |||
430e45fb6f | |||
43af7e2055 | |||
5fa5455e00 |
@ -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:
|
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
|
7
app.json
7
app.json
@ -6,14 +6,15 @@
|
|||||||
"appType": "app",
|
"appType": "app",
|
||||||
"version": {
|
"version": {
|
||||||
"code": 1,
|
"code": 1,
|
||||||
"name": "1.0.1"
|
"name": "1.1.0"
|
||||||
},
|
},
|
||||||
"icon": "icon.png",
|
"icon": "icon.png",
|
||||||
"vender": "zepp",
|
"vender": "zepp",
|
||||||
"description": "TOTP Authenticator for Amazfit devices"
|
"description": "Another 2FAuthenticator based on TOTP for Zepp Amazfit GTS 4"
|
||||||
},
|
},
|
||||||
"permissions": [
|
"permissions": [
|
||||||
"data:os.device.info"
|
"data:os.device.info",
|
||||||
|
"device:os.local_storage"
|
||||||
],
|
],
|
||||||
"runtime": {
|
"runtime": {
|
||||||
"apiVersion": {
|
"apiVersion": {
|
||||||
|
@ -1,12 +1,9 @@
|
|||||||
{
|
{
|
||||||
"name": "totpfit",
|
"name": "totpfit",
|
||||||
"version": "1.0.0",
|
"version": "1.1.0",
|
||||||
"description": "TOTP Authenticator for Amazfit devices",
|
"description": "Another 2FAuthenticator based on TOTP for Zepp Amazfit GTS 4",
|
||||||
"main": "app.js",
|
"main": "app.js",
|
||||||
"scripts": {
|
"author": "Lisoveliy",
|
||||||
"test": "echo \"Error: no test specified\" && exit 1"
|
|
||||||
},
|
|
||||||
"author": "",
|
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@zeppos/device-types": "^3.0.0"
|
"@zeppos/device-types": "^3.0.0"
|
||||||
|
@ -1,19 +1,30 @@
|
|||||||
import { RenderAddButton } from "./render/totpRenderer";
|
import { RenderAddButton } from "./render/totpRenderer";
|
||||||
import { initLoop } from "./render/index/renderer";
|
import { initLoop } from "./render/index/renderer";
|
||||||
import { BasePage } from "@zeppos/zml/base-page";
|
import { BasePage } from "@zeppos/zml/base-page";
|
||||||
|
import { LocalStorage } from "@zos/storage";
|
||||||
|
|
||||||
const app = getApp();
|
const app = getApp();
|
||||||
|
|
||||||
let waitForFetch = true;
|
let waitForFetch = true;
|
||||||
|
let localStorage = new LocalStorage();
|
||||||
|
|
||||||
Page(
|
Page(
|
||||||
BasePage({
|
BasePage({
|
||||||
onInit() {
|
onInit() {
|
||||||
this.getTOTPData()
|
this.getTOTPData()
|
||||||
.then((x) => {
|
.then((x) => {
|
||||||
app._options.globalData.TOTPS = JSON.parse(x) ?? [];
|
app._options.globalData.TOTPS = JSON.parse(x) ?? [];
|
||||||
|
localStorage.setItem(
|
||||||
|
"TOTPs",
|
||||||
|
JSON.stringify(app._options.globalData.TOTPS)
|
||||||
|
);
|
||||||
this.initPage();
|
this.initPage();
|
||||||
})
|
})
|
||||||
.catch((x) => {
|
.catch((x) => {
|
||||||
app._options.globalData.TOTPS = [];
|
console.log(`Init failed: ${x}`);
|
||||||
|
app._options.globalData.TOTPS = JSON.parse(
|
||||||
|
localStorage.getItem("TOTPs", null) ?? []
|
||||||
|
);
|
||||||
this.initPage();
|
this.initPage();
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
@ -20,8 +20,8 @@ function renderContainers(buffer) {
|
|||||||
RenderTOTPContainer(i, buffer[i].issuer, buffer[i].client);
|
RenderTOTPContainer(i, buffer[i].issuer, buffer[i].client);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
const renderData = [];
|
|
||||||
|
|
||||||
|
const renderData = [];
|
||||||
function renderTOTPs(buffer) {
|
function renderTOTPs(buffer) {
|
||||||
for (let i = 0; i < buffer.length; i++) {
|
for (let i = 0; i < buffer.length; i++) {
|
||||||
let otpData = TOTP.copy(buffer[i]).getOTP();
|
let otpData = TOTP.copy(buffer[i]).getOTP();
|
||||||
|
@ -7,6 +7,7 @@ import { createWidget, widget, align, text_style } from "@zos/ui";
|
|||||||
const { width, height } = getDeviceInfo();
|
const { width, height } = getDeviceInfo();
|
||||||
const buttonWidth = width - width / 20; //Width of container
|
const buttonWidth = width - width / 20; //Width of container
|
||||||
const buttonHeight = height / 4; //Height of container
|
const buttonHeight = height / 4; //Height of container
|
||||||
|
|
||||||
const containerColor = 0x303030; //Color of container
|
const containerColor = 0x303030; //Color of container
|
||||||
const containerRadius = 20; //Corner radius of container
|
const containerRadius = 20; //Corner radius of container
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user