refactor: refactored and optimized render logic

This commit is contained in:
Савелий Савенок 2024-11-19 20:30:24 +03:00
parent 50de1c0b57
commit dd68c0c9b5
4 changed files with 45 additions and 20 deletions

14
app.js
View File

@ -7,17 +7,9 @@ App({
TOTPS: localStorage.getItem('TOTPs') || []
},
onCreate(options) {
// localStorage.setItem('TOTPs', [
// new TOTP('JBSWY3DPEHPK3PXPQ', 'totp.danhersam.com', 'Iasd', 6, 30, 0, 'SHA-1'),
// new TOTP('JBSWY3DPEHPK3PXPQ', 'totp.danhersam.com', 'Isgfsd', 6, 30, 0, 'SHA-1'),
// new TOTP('JBSWY3DPEHPK3PXPQ', 'totp.danhersam.com', 'Idfklgj', 6, 30, 0, 'SHA-1'),
// new TOTP('JBSWY3DPEHPK3PXPQ', 'totp.danhersam.com', 'Ibcopiu', 6, 30, 0, 'SHA-1'),
// new TOTP('JBSWY3DPEHPK3PXPQ', 'totp.danhersam.com', 'Ioprfhujoidkfmv', 6, 30, 0, 'SHA-1'),
// new TOTP('JBSWY3DPEHPK3PXPQ', 'totp.danhersam.com', 'If', 6, 30, 0, 'SHA-1'),
// new TOTP('JBSWY3DPEHPK3PXPQ', 'totp.danhersam.com', 'I2', 6, 30, 0, 'SHA-1'),
// new TOTP('JBSWY3DPEHPK3PXPQ', 'totp.danhersam.com', 'I3', 6, 30, 0, 'SHA-1'),
// new TOTP('JBSWY3DPEHPK3PXPQ', 'totp.danhersam.com', 'I4', 6, 30, 0, 'SHA-1')
// ])
localStorage.setItem('TOTPs', [
new TOTP('JBSWY3DPEHPK3PXPQ', 'totp.danhersam.com', 'Iasd')
])
},
onDestroy(options) {

View File

@ -54,7 +54,6 @@ export class TOTP {
const createdTime = time - (((time / 1000 + this.timeOffset) %
this.fetchTime) * 1000)
return new OTP(otp, createdTime, expireTime)
}
}

View File

@ -2,6 +2,7 @@ import { getDeviceInfo } from '@zos/device'
import { TOTP } from '../lib/totp-quickjs'
import { setStatusBarVisible, createWidget, widget, align, prop, text_style, event, deleteWidget } from '@zos/ui'
import { RenderAddButton, RenderExpireBar, RenderOTPValue, RenderTOTPContainer } from './render/totpRenderer'
import { initLoop } from './render/index/renderer'
const app = getApp()
const { width, height } = getDeviceInfo()
@ -18,15 +19,10 @@ Page({
},
build() {
const buffer = app._options.globalData.TOTPS
if (buffer.length < 1) {
if (buffer.length < 1)
RenderAddButton('page/tip')
} else {
renderContainers(buffer)
renderTOTPs(buffer)
setInterval(() => {
renderWidgets.forEach(x => deleteWidget(x))
renderTOTPs(buffer)
}, 500)
else{
initLoop(buffer)
}
}
})

View File

@ -0,0 +1,38 @@
import { deleteWidget } from "@zos/ui";
import { TOTP } from "../../../lib/totp-quickjs";
import { RenderAddButton, RenderExpireBar, RenderOTPValue, RenderTOTPContainer } from '../totpRenderer'
/**
*
* @param {Array<TOTP>} buffer
*/
export function initLoop(buffer) {
renderContainers(buffer)
renderTOTPs(buffer)
}
function renderContainers(buffer) {
for (let i = 0; i < buffer.length; i++) {
RenderTOTPContainer(i, buffer[i].issuer, buffer[i].client)
}
}
const renderData = []
function renderTOTPs(buffer) {
for (let i = 0; i < buffer.length; i++) {
let otpData = TOTP.copy(buffer[i]).getOTP(Date.now())
console.log(otpData.otp)
renderData[i] = {}
renderData[i].OTP = RenderOTPValue(i, otpData.otp),
renderData[i].expireBar = RenderExpireBar(i, otpData.createdTime, buffer[i].fetchTime)
setInterval(() => {
deleteWidget(renderData[i].expireBar)
renderData[i].expireBar = RenderExpireBar(i, otpData.createdTime, buffer[i].fetchTime)
if(otpData.expireTime < Date.now()){
otpData = TOTP.copy(buffer[i]).getOTP(Date.now())
deleteWidget(renderData[i].OTP)
renderData[i].OTP = RenderOTPValue(i, otpData.otp)
}
}, 500)
}
}