liyubing

Merge remote-tracking branch 'origin/main'

import { Action, NewspaperListItemBean, NewspaperPositionItemBean, Params } from 'wdBean';
import { ExtraDTO } from 'wdBean/src/main/ets/bean/component/extra/ExtraDTO';
import { ContentDTO, NewspaperListItemBean, NewspaperPositionItemBean, Params } from 'wdBean';
import { StringUtils } from 'wdKit';
import { WDRouterRule } from 'wdRouter';
import { ProcessUtils } from 'wdRouter';
import { newsSkeleton } from './skeleton/newsSkeleton';
@Component
... ... @@ -62,21 +61,15 @@ export struct ENewspaperItemComponent {
}
if (event.type === TouchType.Up) {
this.context.clearRect(0, 0, this.context.width, this.context.height)
if (this.itemBeanClicked && this.itemBeanClicked.newsId) {
let taskAction: Action = {
type: 'JUMP_INNER_NEW_PAGE',
params: {
contentID: '' + this.itemBeanClicked.newsId,
pageID: 'IMAGE_TEXT_DETAIL',
extra: {
relType: this.itemBeanClicked.relType ?? '',
relId: '' + this.itemBeanClicked.relId,
sourcePage: '5'
} as ExtraDTO
} as Params,
};
WDRouterRule.jumpWithAction(taskAction)
if (this.itemBeanClicked != null && this.itemBeanClicked.newsId != 0) {
//公共跳转
let content: ContentDTO = {
objectId:this.itemBeanClicked.newsId+'',
objectType:this.itemBeanClicked.newsType+'',
relId:this.itemBeanClicked.relId+'',
relType:this.itemBeanClicked.relType ?? '0'
} as ContentDTO
ProcessUtils.processPage(content)
this.itemBeanClicked = {} as NewspaperPositionItemBean
}
}
... ... @@ -139,7 +132,6 @@ export struct ENewspaperItemComponent {
}
}
if (vp2px(x) > minX && vp2px(x) < maxX && vp2px(y) > minY && vp2px(y) < maxY) {
this.itemBeanClicked = itemBean;
return xys;
... ...
... ... @@ -52,7 +52,7 @@ export struct Card19Component {
.fontColor(0xED2800)
Span(this.str03)
} else {
Span(this.contentDTO.newsTitle)
Span(this.contentDTO.newsTitle=='null'?"":this.contentDTO.newsTitle)
}
}
.fontSize($r('app.float.font_size_18'))
... ...
import { TrackConstants, TrackingButton } from 'wdTracking/Index'
import MinePageDatasModel from '../../../model/MinePageDatasModel'
import { onlyWifiLoadImg } from '../../../utils/lazyloadImg'
import { AppointmentOperationRequestItem } from '../../../viewmodel/AppointmentOperationRequestItem'
... ... @@ -200,6 +201,10 @@ export struct AppointmentListChildComponent {
if (value != null) {
if (value.code === 0 || value.code.toString() === "0") {
this.item.isAppointment = !this.item.isAppointment
if(!this.item.isAppointment){
TrackingButton.click("mySavedLivePageUnSubscribe",TrackConstants.PageName.My_Saved_Live,TrackConstants.PageName.My_Saved_Live)
}
}
}
})
... ...
... ... @@ -2,6 +2,7 @@ import { SpConstants } from 'wdConstant/Index'
import { SPHelper, StringUtils, ToastUtils, UserDataLocal } from 'wdKit/Index'
import { HttpUtils } from 'wdNetwork/Index'
import { WDRouterRule, WDRouterPage } from 'wdRouter/Index'
import { TrackConstants, TrackingContent } from 'wdTracking/Index'
import MinePageDatasModel from '../../../model/MinePageDatasModel'
import { FollowListDetailItem } from '../../../viewmodel/FollowListDetailItem'
import { FollowOperationRequestItem } from '../../../viewmodel/FollowOperationRequestItem'
... ... @@ -266,6 +267,12 @@ export struct FollowChildComponent{
this.data.status = this.data.status ==="0"?"1":"0"
UserDataLocal.setUserFollowOperation(this.data.creatorId+","+this.data.status)
if(this.data.status == "1"){//关注
TrackingContent.follow(true,this.data.cnUserName,this.data.cnUserId,TrackConstants.PageName.My_Follow,TrackConstants.PageName.My_Follow)
}else {//取消关注
TrackingContent.follow(false,this.data.cnUserName,this.data.cnUserId,TrackConstants.PageName.My_Follow,TrackConstants.PageName.My_Follow)
}
}
}
})
... ...
import { EmitterUtils, EmitterEventId, Logger, NetworkUtil } from 'wdKit/Index'
import { ParamType, TrackConstants, Tracking } from 'wdTracking/Index'
import MinePageDatasModel from '../../../model/MinePageDatasModel'
import { FollowListItem } from '../../../viewmodel/FollowListItem'
import { CustomTitleUI } from '../../reusable/CustomTitleUI'
... ... @@ -70,6 +71,7 @@ export struct FollowFirstTabsComponent{
}.onClick(()=>{
this.currentIndex = index
this.controller.changeIndex(this.currentIndex)
trackTabFirstClick(item.directoryName)
})
.height('100%')
.margin({right:'9lpx'})
... ... @@ -103,6 +105,7 @@ export struct FollowFirstTabsComponent{
.animationDuration(0)
.onChange((index: number) => {
this.currentIndex = index
trackTabFirstClick(this.data[index].directoryName)
})
.width('100%')
.layoutWeight(1)
... ... @@ -117,4 +120,13 @@ export struct FollowFirstTabsComponent{
this.isConnectNetwork = c
}
}
}
\ No newline at end of file
}
function trackTabFirstClick(firstLevelTabName: string){
let params: ParamType = {}
params["firstLevelTabName"] = firstLevelTabName
params["pageName"] = TrackConstants.PageName.My_Follow
params["pageId"] = TrackConstants.PageName.My_Follow
Tracking.event("my_follow_page_tab_click", params)
}
\ No newline at end of file
... ...
... ... @@ -6,6 +6,7 @@ import PageAdModel from '../viewmodel/PageAdvModel';
import { LoadStatus } from '../components/refresh/RefreshLayoutBean';
import { Logger } from 'wdKit/Index';
const TAG = 'PullDownRefresh'
/***********新的下拉、上拉手势 start **********/
export function onActionStart(pageModel: PageModel, pageAdvModel: PageAdModel, event?: GestureEvent) {
if (event === undefined) {
... ... @@ -157,11 +158,22 @@ export function touchUpPullRefresh(pageModel: PageModel, pageAdvModel: PageAdMod
let advSelf: PageAdModel = pageAdvModel;
PageHelper.refreshUI(self, advSelf)
}, Const.DELAY_TIME);
setRefreshTimeoutTimer(pageModel)
} else {
closeRefresh(pageModel, false);
}
}
export function setRefreshTimeoutTimer(pageModel: PageModel) {
let timeoutId = setTimeout(() => {
closeRefresh(pageModel, false);
Logger.error(TAG, 'closeRefresh by timeout')
}, Const.REFRESH_TIMEOUT__TIME);
// 取消超时关闭定时器
clearTimeout(pageModel.refreshTimeoutTimerId)
pageModel.refreshTimeoutTimerId = timeoutId
}
/**
* 自动刷新接口,如首页底导,双击按钮自动刷新
* @param pageModel 页面数据
... ... @@ -177,6 +189,7 @@ export function autoRefresh(pageModel: PageModel, pageAdvModel: PageAdModel) {
pullRefreshState(pageModel, RefreshState.Refreshing);
pageModel.currentPage = 1;
PageHelper.refreshUI(pageModel, pageAdvModel)
setRefreshTimeoutTimer(pageModel)
}
export function pullRefreshState(pageModel: PageModel, state: number) {
... ... @@ -225,6 +238,8 @@ export function pullRefreshState(pageModel: PageModel, state: number) {
export function closeRefresh(pageModel: PageModel, isRefreshSuccess: boolean) {
let self = pageModel;
// 取消超时关闭定时器
clearTimeout(self.refreshTimeoutTimerId)
setTimeout(() => {
let delay = Const.RefreshConstant_DELAY_PULL_DOWN_REFRESH;
if (self.isCanRefresh === true) {
... ...
import PageModel from '../viewmodel/PageModel';
import { RefreshConstants as Const } from './RefreshConstants';
import PageHelper from '../viewmodel/PageHelper';
import { Logger } from 'wdKit/Index';
const TAG = 'PullUpLoadMore'
export function touchMoveLoadMore(model: PageModel, event: TouchEvent) {
// list size +1
if (model.endIndex >= model.compList.totalCount()-3 && model.endIndex <= model.compList.totalCount()) {
if (model.endIndex >= model.compList.totalCount() - 3 && model.endIndex <= model.compList.totalCount()) {
// model.offsetY = event.touches[0].y - model.downY;
// if (Math.abs(model.offsetY) > vp2px(model.pullUpLoadHeight) / 2) {
// model.isCanLoadMore = true;
... ... @@ -32,6 +35,7 @@ export function touchUpLoadMore(model: PageModel) {
// closeLoadMore(model);
PageHelper.loadMore(self)
}, Const.DELAY_TIME);
setLoadMoreTimeoutTimer(self)
} else {
closeLoadMore(self);
}
... ... @@ -41,4 +45,14 @@ export function closeLoadMore(model: PageModel) {
model.isCanLoadMore = false;
model.isLoading = false;
model.isVisiblePullUpLoad = false;
}
export function setLoadMoreTimeoutTimer(pageModel: PageModel) {
let timeoutId = setTimeout(() => {
closeLoadMore(pageModel);
Logger.error(TAG, 'closeLoadMore by timeout')
}, Const.REFRESH_TIMEOUT__TIME);
// 取消超时关闭定时器
clearTimeout(pageModel.loadMoreTimeoutTimerId)
pageModel.loadMoreTimeoutTimerId = timeoutId
}
\ No newline at end of file
... ...
... ... @@ -14,7 +14,7 @@ export class RefreshConstants {
* The delay time.
*/
static readonly DELAY_TIME: number = 50;
static readonly REFRESH_TIMEOUT__TIME: number = 10000;
/**
* The animation duration.
*/
... ... @@ -25,12 +25,10 @@ export class RefreshConstants {
static readonly RefreshConstant_DELAY_PULL_DOWN_REFRESH: number = 50;
static readonly RefreshConstant_CLOSE_PULL_DOWN_REFRESH_TIME: number = 150;
static readonly RefreshConstant_DELAY_SHRINK_ANIMATION_TIME: number = 1500;
/**
* The page size.
*/
static readonly PAGE_SIZE: number = 20;
/**
* The refresh and load height.
*/
... ... @@ -59,6 +57,7 @@ export class RefreshConstants {
static readonly RefreshLayout_IMAGE_WIDTH: number = 18;
static readonly RefreshLayout_IMAGE_HEIGHT: number = 18;
}
/**
* The refresh state enum.
*/
... ...
... ... @@ -49,6 +49,9 @@ export class PageHelper {
}
private refreshUIEnd(pageModel: PageModel, isRefreshSuccess: boolean) {
if (pageModel.loadStrategy != 2) {
return
}
closeRefresh(pageModel, isRefreshSuccess)
}
... ... @@ -119,6 +122,7 @@ export class PageHelper {
}
}).catch((err: string | Resource) => {
promptAction.showToast({ message: err });
this.refreshUIEnd(pageModel, false)
})
} else {
Logger.debug(TAG, 'getPageInfo')
... ... @@ -127,6 +131,7 @@ export class PageHelper {
if (pageInfo == null) {
pageModel.viewType = ViewType.EMPTY;
pageModel.emptyType = WDViewDefaultType.WDViewDefaultType_NoContent1;
this.refreshUIEnd(pageModel, false)
return;
}
pageModel.pageInfo = pageInfo;
... ... @@ -146,6 +151,7 @@ export class PageHelper {
Logger.debug(TAG, 'getPageInfo go on')
this.parseGroup(pageModel, false)
}).catch(() => {
this.refreshUIEnd(pageModel, false)
if (this.isPageLoaded(pageModel)) {
return
}
... ... @@ -406,7 +412,7 @@ export class PageHelper {
/**
* 竖直方向list,将数据拆出来,组装成comp
*/
private createSpecialComp(compList: CompDTO[]): CompDTO[]{
private createSpecialComp(compList: CompDTO[]): CompDTO[] {
if (!compList) {
return compList
}
... ...
... ... @@ -28,13 +28,28 @@ export default class PageModel {
loadStrategy: number = 1;
currentPage: number = 1;
pageSize: number = Const.PAGE_SIZE;
/**
* @deprecated
*/
pullDownRefreshText: Resource = $r('app.string.pull_down_refresh_text');
/**
* @deprecated
*/
pullDownRefreshImage: Resource = $r('app.media.ic_pull_down_refresh');
pullDownRefreshHeight: number = Const.CUSTOM_LAYOUT_HEIGHT;
isVisiblePullDown: boolean = false;
load: LoadStatus = LoadStatus.IDLE;
/**
* @deprecated
*/
pullUpLoadText: Resource = $r('app.string.pull_up_load_text');
/**
* @deprecated
*/
pullUpLoadImage: Resource = $r('app.media.ic_pull_up_load');
/**
* @deprecated
*/
pullUpLoadHeight: number = Const.CUSTOM_LAYOUT_HEIGHT;
isVisiblePullUpLoad: boolean = false;
offsetY: number = 0;
... ... @@ -50,6 +65,8 @@ export default class PageModel {
isPullRefreshOperation = false;
isLoading: boolean = false;
isCanLoadMore: boolean = false;
refreshTimeoutTimerId: number = 0;
loadMoreTimeoutTimerId: number = 0;
// keyGenerator相关字符串,用于刷新list布局
timestamp: String = '1';
... ...
... ... @@ -2,15 +2,11 @@ import { Logger, EmitterEventId, EmitterUtils, DateTimeUtils,CustomToast, String
import router from '@ohos.router'
import { LoginViewModel } from './LoginViewModel'
import { LoginInputComponent } from './LoginInputComponent'
import { ErrorToastUtils, SPHelper } from 'wdKit'
import { WDRouterPage } from 'wdRouter/src/main/ets/router/WDRouterPage';
import { WDRouterRule } from 'wdRouter/src/main/ets/router/WDRouterRule';
import { Params } from '../../../../../../../commons/wdRouter/oh_modules/wdBean/src/main/ets/bean/content/Params'
import {InterestsHobbiesModel} from '../../../../../../../products/phone/src/main/ets/pages/viewModel/InterestsHobbiesModel'
import HuaweiAuth from '../../utils/HuaweiAuth'
import { loginComponentManager, LoginWithHuaweiIDButton } from '@hms.core.account.LoginComponent'
import { BusinessError } from '@ohos.base'
import { TrackingPageBrowse, TrackConstants } from 'wdTracking/Index'
import { TrackingPageBrowse, TrackConstants, TrackingButton, ParamType, Tracking } from 'wdTracking/Index'
@Extend(Row)
function otherStyle() {
... ... @@ -43,7 +39,6 @@ struct LoginPage {
@State isSubmit: boolean = false
@State checkCodePage: boolean = true //判断是否是验证码页面 默认验证码登录
@State passwordSwitch: boolean = true //密码显示
// @State isPasswordSubmit: boolean = false //账户密码状态 是否出发登录
lastTime: number = 0
@State codeStateSuccess:boolean=false
@State toastText:string = ""
... ... @@ -64,6 +59,7 @@ struct LoginPage {
onCodeSend() {
Logger.debug(TAG, "isCodeSend:" + this.isCodeSend + "")
if (this.isCodeSend) {
TrackingButton.click("loginPageGetVerificationCode",TrackConstants.PageName.Phone_Login_Page,TrackConstants.PageName.Phone_Login_Page)
this.sendVerifyCode()
}
}
... ... @@ -81,7 +77,12 @@ struct LoginPage {
this.pageHideTime = DateTimeUtils.getTimeStamp()
let duration = 0
duration = Math.floor((this.pageHideTime - this.pageShowTime)/1000)
TrackingPageBrowse.trackCommonPageExposureEnd(TrackConstants.PageName.Login_Page,TrackConstants.PageName.Login_Page,duration)
if(this.checkCodePage){
TrackingPageBrowse.trackCommonPageExposureEnd(TrackConstants.PageName.Phone_Login_Page,TrackConstants.PageName.Phone_Login_Page,duration)
}else{
TrackingPageBrowse.trackCommonPageExposureEnd(TrackConstants.PageName.Login_Page,TrackConstants.PageName.Login_Page,duration)
}
}
build() {
... ... @@ -122,11 +123,21 @@ struct LoginPage {
Text() {
Span("我已阅读并同意").fontColor("#999999").fontSize(12)
Span("《用户协议》").fontColor("#ED2800").fontSize(12).onClick(() => {
if(this.checkCodePage){
TrackingButton.click("loginPageUserAgreement",TrackConstants.PageName.Phone_Login_Page,TrackConstants.PageName.Phone_Login_Page)
}else{
TrackingButton.click("loginPageUserAgreement",TrackConstants.PageName.Login_Page,TrackConstants.PageName.Login_Page)
}
let bean = { contentID: "1", pageID: "" } as Params
WDRouterRule.jumpWithPage(WDRouterPage.loginProtocolPage, bean)
})
Span("及").fontColor("#999999").fontSize(12)
Span("《隐私政策》").fontColor("#ED2800").fontSize(12).onClick(() => {
if(this.checkCodePage){
TrackingButton.click("loginPagePrivacyAgreement",TrackConstants.PageName.Phone_Login_Page,TrackConstants.PageName.Phone_Login_Page)
}else{
TrackingButton.click("loginPagePrivacyAgreement",TrackConstants.PageName.Login_Page,TrackConstants.PageName.Login_Page)
}
let bean = { contentID: "2", pageID: "" } as Params
WDRouterRule.jumpWithPage(WDRouterPage.loginProtocolPage, bean)
})
... ... @@ -162,7 +173,7 @@ struct LoginPage {
if (!this.checkCodePage) {
Text('忘记密码').fontColor('#666666').fontSize(14).margin({ top: 16 })
.onClick(() => {
// router.pushUrl({ url: 'pages/login/ForgetPasswordPage' })
TrackingButton.click("loginPageForgotPassword",TrackConstants.PageName.Login_Page,TrackConstants.PageName.Login_Page)
if(StringUtils.isNotEmpty(this.accountContent) && StringUtils.photoMatch(this.accountContent)){
let pageType = { 'pageType': 0, 'phone': Number(this.accountContent) } as Record<string, number>;
WDRouterRule.jumpWithPage(WDRouterPage.forgetPasswordPage, pageType)
... ... @@ -289,24 +300,6 @@ struct LoginPage {
}.width('100%')
Row() {
/*Row() {
Image($r('app.media.login_wx'))
.width(20).height(20).onClick(()=>{
ErrorToastUtils.ErrorToast.showToast(ErrorToastUtils.ErrorType.NET_CORE_NO_NETWORK)
})
}.backgroundImage($r('app.media.login_other_left'), ImageRepeat.NoRepeat)
.otherStyle()
Row() {
Image($r('app.media.login_qq')).size({ width: 20, height: 20 })
}.backgroundImage($r('app.media.login_other_middle'), ImageRepeat.NoRepeat)
.otherStyle()
Row() {
Image($r('app.media.login_wb')).size({ width: 20, height: 20 })
}.backgroundImage($r('app.media.login_other_middle'), ImageRepeat.NoRepeat)
.otherStyle()*/
Row() {
Image(this.checkCodePage ? $r('app.media.login_qt') : $r('app.media.login_other_password'))
.size({ width: "35lpx", height: "35lpx" })
... ... @@ -320,10 +313,19 @@ struct LoginPage {
.lineHeight("38lpx")
}
.onClick(() => {
this.onPageHide()
if(this.checkCodePage){
trackTypeClick(0,TrackConstants.PageName.Phone_Login_Page)
}else{
trackTypeClick(6,TrackConstants.PageName.Login_Page)
}
this.updateAccount()
this.checkCodePage = !this.checkCodePage;
this.checkCodePage = !this.checkCodePage
this.passwordSwitch = true
this.isSubmit = false
this.pageShowTime = DateTimeUtils.getTimeStamp()
}).width('100%')
.alignItems(VerticalAlign.Center)
.justifyContent(FlexAlign.Center)
... ... @@ -374,6 +376,7 @@ struct LoginPage {
requestLogin() {
Logger.debug('LoginViewModel', "requestLogin")
if (this.checkCodePage) {
TrackingButton.click("loginPageLoginButton",TrackConstants.PageName.Phone_Login_Page,TrackConstants.PageName.Phone_Login_Page)
this.loginViewModel.appLogin(this.phoneContent, 2, this.codeContent).then((data) => {
Logger.debug(TAG, "requestLogin: " + data.jwtToken)
///同步兴趣tag
... ... @@ -385,6 +388,7 @@ struct LoginPage {
this.showToastTip(error)
})
} else {
TrackingButton.click("loginPageLoginButton",TrackConstants.PageName.Login_Page,TrackConstants.PageName.Login_Page)
this.loginViewModel.appLoginByPassword(this.accountContent, 0, this.passwordContent, "").then((data) => {
Logger.debug(TAG, "requestLogin: " + data.jwtToken)
this.showToastTip('登录成功')
... ... @@ -588,3 +592,12 @@ struct ProtocolComponent {
}
}
function trackTypeClick(typeValue: number,pageId: string){
let params: ParamType = {}
params["loginType"] = typeValue
params["pageName"] = pageId
params["pageId"] = pageId
Tracking.event("login_type_click", params)
}
... ...