From dd68c0c9b51961421d95ba70b750425c224cfd54 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D0=B0=D0=B2=D0=B5=D0=BB=D0=B8=D0=B9=20=D0=A1=D0=B0?= =?UTF-8?q?=D0=B2=D0=B5=D0=BD=D0=BE=D0=BA?= <pavel_sa@holdingbp.ru> Date: Tue, 19 Nov 2024 20:30:24 +0300 Subject: [PATCH] refactor: refactored and optimized render logic --- app.js | 14 +++---------- lib/totp-quickjs/index.js | 1 - page/index.js | 12 ++++------- page/render/index/renderer.js | 38 +++++++++++++++++++++++++++++++++++ 4 files changed, 45 insertions(+), 20 deletions(-) create mode 100644 page/render/index/renderer.js diff --git a/app.js b/app.js index 7b3afc2..32b5684 100644 --- a/app.js +++ b/app.js @@ -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) { diff --git a/lib/totp-quickjs/index.js b/lib/totp-quickjs/index.js index 4fd694f..f2453b8 100644 --- a/lib/totp-quickjs/index.js +++ b/lib/totp-quickjs/index.js @@ -54,7 +54,6 @@ export class TOTP { const createdTime = time - (((time / 1000 + this.timeOffset) % this.fetchTime) * 1000) - return new OTP(otp, createdTime, expireTime) } } diff --git a/page/index.js b/page/index.js index 8fb015d..02c0fc3 100644 --- a/page/index.js +++ b/page/index.js @@ -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) } } }) diff --git a/page/render/index/renderer.js b/page/render/index/renderer.js new file mode 100644 index 0000000..61f3d5f --- /dev/null +++ b/page/render/index/renderer.js @@ -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) + } +} \ No newline at end of file