Procházet zdrojové kódy

对一些单例进行优化

wangcy před 3 měsíci
rodič
revize
1c41fea54d

+ 3 - 3
commons/basic/Index.ets

@@ -18,7 +18,7 @@ export { BannerAd } from "./src/main/ets/ads/BannerAd"
 
 export { ShowJHRewardAd } from "./src/main/ets/components/ShowJHRewardAd"
 
-export { JhStartAd } from "./src/main/ets/ads/StartAd"
+export { jHStartAd } from "./src/main/ets/ads/StartAd"
 
 export { AdStatus } from "./src/main/ets/constants"
 
@@ -28,11 +28,11 @@ export { YTRequest } from "./src/main/ets/utils/YTRequest"
 
 export { HuaweiAuthPlugin } from "./src/main/ets/utils/HuaWeiAuthPlugin"
 
-export { UserInfo } from "./src/main/ets/models/UserInfo"
+export { userInfo, UserInfo } from "./src/main/ets/models/UserInfo"
 
 export { YTToast } from "./src/main/ets/utils/YTToast"
 
-export { YtButton } from "./src/main/ets/components/YtButton"
+export { YTButton } from "./src/main/ets/components/YTButton"
 
 export { YTHeader } from "./src/main/ets/components/YTHeader"
 

+ 2 - 0
commons/basic/src/main/ets/ads/StartAd.ets

@@ -122,3 +122,5 @@ export class JhStartAd {
   }
 }
 
+export const jHStartAd = JhStartAd.getInstance()
+

+ 3 - 3
commons/basic/src/main/ets/components/AgreePrivacy.ets

@@ -2,7 +2,7 @@ import { IBestToast } from '../../../../Index';
 import { BasicType, ReqString } from '../models';
 import { YTRequest } from '../utils/YTRequest';
 import { YTToast } from '../utils/YTToast';
-import { YtButton } from './YtButton';
+import { YTButton } from './YTButton';
 
 @Builder
 export function AgreePrivacy(item: BasicType<undefined>) {
@@ -18,7 +18,7 @@ export function AgreePrivacy(item: BasicType<undefined>) {
 
 
     Column() {
-      YtButton({
+      YTButton({
         btContent: '同意并登入',
         btHeight: 37,
         click: () => {
@@ -42,7 +42,7 @@ export function AgreePrivacy(item: BasicType<undefined>) {
 
         }
       })
-      YtButton({
+      YTButton({
         btContent: '不同意',
         btHeight: 37,
         bgc: Color.White,

+ 5 - 4
commons/basic/src/main/ets/components/YtButton.ets → commons/basic/src/main/ets/components/YTButton.ets

@@ -1,11 +1,8 @@
 @Component
-export struct YtButton {
+export struct YTButton {
   btHeight: number = 37
   btWidth: Length = '100%'
   btContent: string = ''
-  click = () => {
-
-  }
   btPadding?: Length | Padding
   btFontSize: number = 12
   bgc: ResourceColor = $r('app.color.main_ac_color_dark')
@@ -14,6 +11,10 @@ export struct YtButton {
   btState: boolean = true
   btBorderRadius: Length | BorderRadiuses | LocalizedBorderRadiuses = this.btHeight / 2
 
+  click = () => {
+
+  }
+
   build() {
     Button(this.btContent)
       .buttonStyle(ButtonStyleMode.NORMAL)

+ 0 - 0
commons/basic/src/main/ets/components/YtTiltleBar.ets → commons/basic/src/main/ets/components/YTTiltleBar.ets


+ 3 - 3
commons/basic/src/main/ets/components/YtDoubleConfirm.ets

@@ -1,4 +1,4 @@
-import { YtButton, YTToast } from '../../../../Index';
+import { YTButton, YTToast } from '../../../../Index';
 import { BasicType } from '../models';
 
 @Builder
@@ -14,7 +14,7 @@ export function yTDoubleConfirm(item: BasicType<undefined>) {
       .fontSize(13)
       .margin({ bottom: 18 })
     Row() {
-      YtButton(
+      YTButton(
         {
           btContent: '确定',
           btWidth: 108,
@@ -23,7 +23,7 @@ export function yTDoubleConfirm(item: BasicType<undefined>) {
           click: item.click
         }
       )
-      YtButton(
+      YTButton(
         {
           btContent: '取消',
           btWidth: 108,

+ 47 - 45
commons/basic/src/main/ets/models/UserInfo.ets

@@ -37,35 +37,35 @@ export class UserInfo {
    * @param _userInfo
    */
   setUserInfoAndLogin(_userInfo: UserInfo) {
-    UserInfo.getInstance().isLogin = true
+    userInfo.isLogin = true
     if (_userInfo.token) {
-      UserInfo.getInstance().token = _userInfo.token
+      userInfo.token = _userInfo.token
     }
-    UserInfo.getInstance().memberEmail = _userInfo.memberEmail
-    UserInfo.getInstance().memberIcon = _userInfo.memberIcon
-    UserInfo.getInstance().memberName = _userInfo.memberName
-    UserInfo.getInstance().userId = _userInfo.userId
-    UserInfo.getInstance().memberScore = _userInfo.memberScore
-    UserInfo.getInstance().aiCount = _userInfo.aiCount
-    UserInfo.getInstance().memberPhone = _userInfo.memberPhone
+    userInfo.memberEmail = _userInfo.memberEmail
+    userInfo.memberIcon = _userInfo.memberIcon
+    userInfo.memberName = _userInfo.memberName
+    userInfo.userId = _userInfo.userId
+    userInfo.memberScore = _userInfo.memberScore
+    userInfo.aiCount = _userInfo.aiCount
+    userInfo.memberPhone = _userInfo.memberPhone
     emitter.emit('refreshList')
-    AppStorage.setOrCreate(UserInfo.KEY, UserInfo.getInstance())
+    AppStorage.setOrCreate(UserInfo.KEY, userInfo)
   }
 
   /**
    * @description 登出并清空用户信息
    */
   logout() {
-    UserInfo.getInstance().isLogin = false
-    UserInfo.getInstance().token = undefined
-    UserInfo.getInstance().memberEmail = undefined
-    UserInfo.getInstance().memberIcon = undefined
-    UserInfo.getInstance().memberName = undefined
-    UserInfo.getInstance().userId = undefined
-    UserInfo.getInstance().memberScore = undefined
-    UserInfo.getInstance().aiCount = undefined
-    UserInfo.getInstance().memberPhone = undefined
-    AppStorage.setOrCreate(UserInfo.KEY, UserInfo.getInstance())
+    userInfo.isLogin = false
+    userInfo.token = undefined
+    userInfo.memberEmail = undefined
+    userInfo.memberIcon = undefined
+    userInfo.memberName = undefined
+    userInfo.userId = undefined
+    userInfo.memberScore = undefined
+    userInfo.aiCount = undefined
+    userInfo.memberPhone = undefined
+    AppStorage.setOrCreate(UserInfo.KEY, userInfo)
     AppStorage.setOrCreate(AppStorageKeyCollect.TOKEN, undefined)
   }
 
@@ -74,80 +74,82 @@ export class UserInfo {
    * @returns boolean
    */
   checkLogin() {
-    return UserInfo.getInstance().isLogin
+    return userInfo.isLogin
   }
 
   getToken() {
-    return UserInfo.getInstance().token
+    return userInfo.token
   }
 
 
   setToken(token: string) {
-    UserInfo.getInstance().token = token
+    userInfo.token = token
     AppStorage.setOrCreate<string>(AppStorageKeyCollect.TOKEN, token)
-    AppStorage.setOrCreate(UserInfo.KEY, UserInfo.getInstance())
+    AppStorage.setOrCreate(UserInfo.KEY, userInfo)
   }
 
   getHeadImg() {
-    return UserInfo.getInstance().memberIcon
+    return userInfo.memberIcon
   }
 
   setHeadImg(headImg: string) {
-    UserInfo.getInstance().memberIcon = headImg
-    AppStorage.setOrCreate(UserInfo.KEY, UserInfo.getInstance())
+    userInfo.memberIcon = headImg
+    AppStorage.setOrCreate(UserInfo.KEY, userInfo)
   }
 
   getEmail() {
-    return UserInfo.getInstance().memberEmail
+    return userInfo.memberEmail
   }
 
   setEmail(email: string) {
-    UserInfo.getInstance().memberEmail = email
-    AppStorage.setOrCreate(UserInfo.KEY, UserInfo.getInstance())
+    userInfo.memberEmail = email
+    AppStorage.setOrCreate(UserInfo.KEY, userInfo)
   }
 
   getName() {
-    return UserInfo.getInstance().memberName
+    return userInfo.memberName
   }
 
   setName(name: string) {
-    UserInfo.getInstance().memberName = name
-    AppStorage.setOrCreate(UserInfo.KEY, UserInfo.getInstance())
+    userInfo.memberName = name
+    AppStorage.setOrCreate(UserInfo.KEY, userInfo)
   }
 
   getId() {
-    return UserInfo.getInstance().userId
+    return userInfo.userId
   }
 
   setId(id: number) {
-    UserInfo.getInstance().userId = id
-    AppStorage.setOrCreate(UserInfo.KEY, UserInfo.getInstance())
+    userInfo.userId = id
+    AppStorage.setOrCreate(UserInfo.KEY, userInfo)
   }
 
   getGoldNum() {
-    return UserInfo.getInstance().memberScore
+    return userInfo.memberScore
   }
 
   setGoldNum(goldNum: number) {
-    UserInfo.getInstance().memberScore = goldNum
-    AppStorage.setOrCreate(UserInfo.KEY, UserInfo.getInstance())
+    userInfo.memberScore = goldNum
+    AppStorage.setOrCreate(UserInfo.KEY, userInfo)
   }
 
   getAiNum() {
-    return UserInfo.getInstance().aiCount
+    return userInfo.aiCount
   }
 
   setAiNum(aiNum: number) {
-    UserInfo.getInstance().aiCount = aiNum
-    AppStorage.setOrCreate(UserInfo.KEY, UserInfo.getInstance())
+    userInfo.aiCount = aiNum
+    AppStorage.setOrCreate(UserInfo.KEY, userInfo)
   }
 
   getPhoneNumber() {
-    return UserInfo.getInstance().memberPhone
+    return userInfo.memberPhone
   }
 
   setPhoneNumber(phoneNumber: string) {
-    UserInfo.getInstance().memberPhone = phoneNumber
-    AppStorage.setOrCreate(UserInfo.KEY, UserInfo.getInstance())
+    userInfo.memberPhone = phoneNumber
+    AppStorage.setOrCreate(UserInfo.KEY, userInfo)
   }
 }
+
+export const userInfo = UserInfo.getInstance()

+ 8 - 2
commons/basic/src/main/ets/utils/PermissionControl.ets

@@ -28,10 +28,14 @@ export class PermissionControl {
   }
 
   //申请权限
-  askPermission(permissions: Permissions[], callback: (res: PermissionRequestResult) => void) {
+  askPermission(permissions: Permissions[], callback: (res?: PermissionRequestResult, err?: Error) => void) {
     this.permissions = permissions
     this.atManager.requestPermissionsFromUser(this.context, permissions, (err, data) => {
-      callback(data)
+      if (!err && data) {
+        callback(data)
+      } else {
+        callback(undefined, err)
+      }
     })
   }
 
@@ -52,3 +56,5 @@ export class PermissionControl {
     return true
   }
 }
+
+export const permissionController = PermissionControl.getInstance()

+ 2 - 2
commons/basic/src/main/ets/utils/TakePicture.ets

@@ -1,8 +1,8 @@
 import { fileIo, fileUri } from '@kit.CoreFileKit';
 import { camera, cameraPicker as picker } from '@kit.CameraKit';
 
-export async function takePicture() {
-  let pathDir = getContext().filesDir;
+export async function takePicture(context: Context) {
+  let pathDir = context.filesDir;
   let fileName = `${new Date().getTime()}`
   let filePath = pathDir + `/${fileName}.png`
   fileIo.createRandomAccessFileSync(filePath, fileIo.OpenMode.CREATE);

+ 2 - 10
commons/basic/src/main/ets/utils/YTBreakPoint.ets

@@ -38,16 +38,8 @@ export class YTBreakPoint {
    * @description 断点KEY值 使用BreakPointString类型代替string,限制非法输入
    */
   static readonly KEY = 'bp'
-  private static declare instance: YTBreakPoint
 
-  static getInstance() {
-    if (!YTBreakPoint.instance) {
-      YTBreakPoint.instance = new YTBreakPoint()
-    }
-    return YTBreakPoint.instance
-  }
-
-  setBreakPoint(width: number) {
+  static setBreakPoint(width: number) {
     const vpWidth = px2vp(width)
     let bp: BreakPointString = 'xs'
     if (vpWidth < 320) {
@@ -62,7 +54,7 @@ export class YTBreakPoint {
     AppStorage.setOrCreate<BreakPointString>(YTBreakPoint.KEY, bp)
   }
 
-  getBreakPoint() {
+  static getBreakPoint() {
     return AppStorage.get<string>(YTBreakPoint.KEY)
   }
 }

+ 6 - 6
commons/basic/src/main/ets/utils/YTRequest.ets

@@ -10,7 +10,7 @@ import axios, {
 import { IBestToast, YTLog } from '../../../../Index';
 import { AppStorageKeyCollect } from '../constants';
 import { ReqString } from '../models';
-import { UserInfo } from '../models/UserInfo';
+import { userInfo, UserInfo } from '../models/UserInfo';
 import { formatDate } from './FormatDate';
 import { HuaweiAuthPlugin } from './HuaWeiAuthPlugin';
 import { YTRouter } from './YTRouter';
@@ -44,7 +44,7 @@ instance.interceptors.response.use((response: AxiosResponse) => {
   YTLog.info(response)
   // 对响应错误做点什么
   if (response.data.code == 401) {
-    UserInfo.getInstance().logout()
+    userInfo.logout()
     YTRouter.router2LoginPage()
     return Promise.reject('401');
   }
@@ -100,7 +100,7 @@ export class YTRequest {
         'uuid': uuid
       })
         .then(res => {
-          UserInfo.getInstance().setToken(res[AppStorageKeyCollect.TOKEN])
+          userInfo.setToken(res[AppStorageKeyCollect.TOKEN])
           YTRequest.refreshUserInfo(() => {
             IBestToast.show({ message: '登录成功' })
             YTRouter.routerBack()
@@ -119,7 +119,7 @@ export class YTRequest {
             { 'code': res } as ReqString)
             .then(data => {
               const token = data['token']
-              UserInfo.getInstance().setToken(token)
+              userInfo.setToken(token)
               YTRequest.refreshUserInfo((userInfo) => {
                 // YTLog.info(userInfo)
                 IBestToast.hide()
@@ -151,8 +151,8 @@ export class YTRequest {
   static refreshUserInfo(success?: (res: UserInfo) => void) {
     YTRequest.post<UserInfo, null>(`/api/${YTRequest.productName}/member/info`)
       .then(res => {
-        UserInfo.getInstance().setUserInfoAndLogin(res)
-        YTLog.info(UserInfo.getInstance())
+        userInfo.setUserInfoAndLogin(res)
+        YTLog.info(userInfo)
         success?.(res)
       })
   }

+ 2 - 2
features/user/src/main/ets/pages/LoginPage.ets

@@ -1,4 +1,4 @@
-import { BasicType, YTAvoid, YtButton, YTRequest, YTRouter, YTToast } from 'basic'
+import { BasicType, YTAvoid, YTButton, YTRequest, YTRouter, YTToast } from 'basic'
 import { CodeInputType } from '../models'
 import { LoginInput } from '../components/LoginInput'
 import { Terms } from '../components/Terms'
@@ -75,7 +75,7 @@ struct LoginPage {
       Terms({ isAgree: this.isAgree, mg: 13 })
         .margin({ bottom: 74 })
 
-      YtButton({
+      YTButton({
         btContent: '登录', click: () => {
           if (!this.isAgree) {
             AppStorage.setOrCreate<Record<string, string>>('captchaLogin',

+ 9 - 8
features/user/src/main/ets/pages/SettingPage.ets

@@ -4,9 +4,10 @@ import {
   reviseImgHeaderBuilder,
   takePicture,
   Upload,
+  userInfo,
   UserInfo,
   YTAvoid,
-  YtButton,
+  YTButton,
   YTHeader,
   YTLog,
   YTRequest,
@@ -26,7 +27,7 @@ function settingBuilder() {
 struct SettingPage {
   @StorageProp(YTAvoid.SAFE_TOP_KEY) safeTop: number = 0
   @StorageProp(YTAvoid.SAFE_BOTTOM_KEY) safeBottom: number = 0
-  @StorageProp(UserInfo.KEY) userInfo: UserInfo = UserInfo.getInstance()
+  @StorageProp(UserInfo.KEY) userInfo: UserInfo = userInfo
   @State showReviseName: boolean = false
   @State showHeaderImgRevise: boolean = false
   @State value: string = ''
@@ -50,7 +51,7 @@ struct SettingPage {
       text: '拍照',
       click: async () => {
         try {
-          const fullpath = await takePicture()
+          const fullpath = await takePicture(this.getUIContext().getHostContext()!)
           this.showHeaderImgRevise = false
           YTRouter.router2DelPhotoPage({ src: fullpath, type: 'header' })
         } catch (e) {
@@ -96,7 +97,7 @@ struct SettingPage {
             })
           }
         })
-        YtButton({
+        YTButton({
           btContent: '退出登录', click: () => {
             this.userInfo.logout()
             YTRouter.routerBack()
@@ -104,14 +105,14 @@ struct SettingPage {
           }
         })
           .margin({ top: 426, bottom: 12 })
-        YtButton({
+        YTButton({
           btContent: '注销用户',
           btFontColor: Color.Red,
           bgc: Color.White,
           click: () => {
             YTToast.getInstance().doubleConfirm({
               text: '警告⚠', message: '确定要注销吗?\n注销后数据可能丢失无法恢复!', click: () => {
-                UserInfo.getInstance().logout()
+                userInfo.logout()
                 YTToast.getInstance().hide()
                 YTRouter.routerBack()
               }
@@ -191,7 +192,7 @@ struct SettingPage {
         })
 
       Row({ space: 32 }) {
-        YtButton({
+        YTButton({
           btContent: '取消',
           btHeight: 25,
           btWidth: 78,
@@ -210,7 +211,7 @@ struct SettingPage {
 
           }
         })
-        YtButton({
+        YTButton({
           btContent: '完成',
           btHeight: 25,
           btWidth: 78,

+ 2 - 2
features/user/src/main/ets/pages/SuggestionPage.ets

@@ -1,4 +1,4 @@
-import { IBestToast, YTAvoid, YtButton, YTHeader, YTRequest } from 'basic'
+import { IBestToast, YTAvoid, YTButton, YTHeader, YTRequest } from 'basic'
 
 @Builder
 function suggestionBuilder() {
@@ -112,7 +112,7 @@ struct SuggestionPage {
       .margin({ bottom: 160 })
 
       Column() {
-        YtButton({
+        YTButton({
           btContent: '提交反馈',
           click: () => {
             if (!this.description) {

+ 2 - 2
features/user/src/main/ets/views/Mine.ets

@@ -1,4 +1,4 @@
-import { BasicType, copyText, IBestToast, UserInfo, YTAvoid, YTLog, YTRouter } from 'basic'
+import { BasicType, copyText, IBestToast, userInfo, UserInfo, YTAvoid, YTLog, YTRouter } from 'basic'
 import { common, Want } from '@kit.AbilityKit'
 import { BusinessError } from '@kit.BasicServicesKit'
 import { BUNDLE_NAME } from 'BuildProfile'
@@ -6,7 +6,7 @@ import { BUNDLE_NAME } from 'BuildProfile'
 @Component
 export struct Mine {
   @StorageProp(YTAvoid.SAFE_TOP_KEY) safeTop: number = 0
-  @StorageProp(UserInfo.KEY) userInfo: UserInfo = UserInfo.getInstance()
+  @StorageProp(UserInfo.KEY) userInfo: UserInfo = userInfo
   setArr: Array<BasicType<undefined>> = [
     {
       text: '意见反馈',

+ 22 - 18
products/entry/src/main/ets/entryability/EntryAbility.ets

@@ -1,10 +1,10 @@
 import { AbilityConstant, bundleManager, ConfigurationConstant, UIAbility, Want } from '@kit.AbilityKit';
 import { hilog } from '@kit.PerformanceAnalysisKit';
 import { window } from '@kit.ArkUI';
-import { AppStorageKeyCollect, JhStartAd, PermissionControl, YTAvoid, YTBreakPoint, YTLog, YTRequest } from 'basic';
+import { AppStorageKeyCollect, jHStartAd, PermissionControl, YTAvoid, YTBreakPoint, YTLog, YTRequest } from 'basic';
+import { preferences } from '@kit.ArkData';
 import { identifier } from '@kit.AdsKit';
 import { BusinessError } from '@kit.BasicServicesKit';
-import { preferences } from '@kit.ArkData';
 
 const DOMAIN = 0x0000;
 
@@ -48,21 +48,25 @@ export default class EntryAbility extends UIAbility {
         })
       PermissionControl.getInstance().init(this.context)
         .then(() => {
-          PermissionControl.getInstance().askPermission(["ohos.permission.APP_TRACKING_CONSENT"], (res) => {
-            if (res.authResults[0] === 0) {
-              YTLog.info('succeeded in requesting permission');
-              identifier.getOAID((err: BusinessError, data: string) => {
-                if (err.code) {
-                  YTLog.error(`get oaid failed, error: ${err.code} ${err.message}`);
-                } else {
-                  const oaid: string = data;
-                  JhStartAd.getInstance().init(this.context, oaid)
-                  AppStorage.setOrCreate('OAID', oaid)
-                  YTLog.info(`succeeded in getting oaid by callback , oaid: ${oaid}`);
-                }
-              });
+          PermissionControl.getInstance().askPermission(["ohos.permission.APP_TRACKING_CONSENT"], (res, err) => {
+            if (err) {
+              YTLog.error(err)
             } else {
-              YTLog.error('user rejected');
+              if (res?.authResults[0] === 0) {
+                YTLog.info('succeeded in requesting permission');
+                identifier.getOAID((err: BusinessError, data: string) => {
+                  if (err.code) {
+                    YTLog.error(`get oaid failed, error: ${err.code} ${err.message}`);
+                  } else {
+                    const oaid: string = data;
+                    jHStartAd.init(this.context, oaid)
+                    AppStorage.setOrCreate('OAID', oaid)
+                    YTLog.info(`succeeded in getting oaid by callback , oaid: ${oaid}`);
+                  }
+                });
+              } else {
+                YTLog.error('user rejected');
+              }
             }
           })
         })
@@ -90,9 +94,9 @@ export default class EntryAbility extends UIAbility {
         }
       })
       const windowWidth = windowClass.getWindowProperties().windowRect.width
-      YTBreakPoint.getInstance().setBreakPoint(windowWidth)
+      YTBreakPoint.setBreakPoint(windowWidth)
       windowClass.on('windowSizeChange', size => {
-        YTBreakPoint.getInstance().setBreakPoint(size.width)
+        YTBreakPoint.setBreakPoint(size.width)
       })
       //创建首选项 category
       let preference: preferences.Preferences | null = null