refactor: refactored and optimized render logic
This commit is contained in:
@@ -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)
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
38
page/render/index/renderer.js
Normal file
38
page/render/index/renderer.js
Normal 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)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user