zhangbo1_wd

首页,下拉刷新,md5判断拦截

... ... @@ -171,6 +171,24 @@ export class LazyDataSource<T> extends BasicDataSource<T> {
}
}
// 删除index指定索引位置的元素
public deleteItems(startIndex: number, count?: number): void {
if (startIndex < 0) {
return
}
this.dataArray.splice(startIndex, count || (this.dataArray.length - startIndex));
let to = 0
if (count == undefined) {
to = this.dataArray.length - 1
} else {
to = count + startIndex
if (to >= this.dataArray.length) {
to = this.dataArray.length - 1;
}
}
this.notifyDataMove(startIndex, to);
}
// 删除最后1个元素
public pop(): void {
this.deleteItem()
... ...
import { CompDTO } from 'wdBean/Index';
import { DateTimeUtils, Logger } from 'wdKit/Index';
import { PageHelper } from '../../viewmodel/PageHelper';
import PageModel from '../../viewmodel/PageModel';
/**
... ... @@ -61,6 +62,7 @@ export struct CardAdvBottom {
}
if (currentIndex >= 0) {
this.pageModel.compList.deleteItem(currentIndex)
PageHelper.updateFirstPageEndIndex(this.pageModel, true, currentIndex)
}
}
}
... ...
import { CompDTO } from 'wdBean/Index';
import { DateTimeUtils, Logger } from 'wdKit/Index';
import {PageHelper} from '../../viewmodel/PageHelper';
import PageModel from '../../viewmodel/PageModel';
/**
... ... @@ -73,6 +74,7 @@ export struct CardAdvTop {
}
if (currentIndex >= 0) {
this.pageModel.compList.deleteItem(currentIndex)
PageHelper.updateFirstPageEndIndex(this.pageModel, true, currentIndex)
}
}
}
... ...
... ... @@ -80,7 +80,7 @@ export class PageHelper {
return;
}
pageModel.pageInfo = pageInfo;
pageModel.cachePageInfoMd5 = pageInfo.md5
pageModel.displayPageInfoMd5 = pageInfo.md5
//解析页面挂角广告资源
pageAdvModel.analysisAdvSource(pageInfo);
this.parseGroup(pageModel, true)
... ... @@ -129,7 +129,7 @@ export class PageHelper {
return;
}
pageModel.pageInfo = pageInfo;
if (pageInfo.md5 == pageModel.cachePageInfoMd5) {
if (pageInfo.md5 == pageModel.displayPageInfoMd5) {
// 缓存一致,不解析
Logger.debug(TAG, 'getPageInfo 与缓存一致,不解析广告。。。')
} else {
... ... @@ -138,6 +138,7 @@ export class PageHelper {
// 保存缓存
CacheData.saveCacheData(CacheData.comPageInfoCacheKey + pageModel.pageId, pageInfo, pageInfo.md5)
}
pageModel.displayPageInfoMd5 = pageInfo.md5
//解析页面挂角广告资源
pageAdvModel.analysisAdvSource(pageInfo);
}
... ... @@ -185,15 +186,25 @@ export class PageHelper {
Logger.debug(TAG, 'parseGroup isCache: ' + isCache)
if (isCache) {
pageDto = await PageViewModel.getPageGroupCacheData(pageModel.bizCopy()) as PageDTO
pageModel.cacheGroupInfoMd5 = pageDto.md5
pageModel.displayGroupInfoMd5 = pageDto.md5
} else {
pageDto = await PageViewModel.getPageGroupCompData(pageModel.bizCopy()) as PageDTO
if (pageDto.md5 == pageModel.cacheGroupInfoMd5) {
if (pageDto.md5 == pageModel.displayGroupInfoMd5) {
Logger.debug(TAG, 'parseGroup cache load, return: ' + pageDto.md5)
// 下拉刷新场景,数据没变,拦截刷新UI,重置相关参数
if (pageModel.loadStrategy === 2) {
// 缓存数据一致,不再刷新
this.refreshUIEnd(pageModel, true)
// 第一页不刷新,分页数据清除
pageModel.hasMore = true
this.deleteMorePage(pageModel)
pageModel.pageTotalCompSize = pageModel.compList.size()
}
pageModel.currentPage++
return
}
Logger.debug(TAG, 'parseGroup cache load, save: ')
pageModel.displayGroupInfoMd5 = pageDto.md5
Logger.debug(TAG, 'parseGroup cache load, save: ' + pageDto.md5)
// 保存缓存
CacheData.saveCacheData(CacheData.compGroupInfoDataCacheKey + pageModel.pageId + pageModel.groupId, pageDto,
pageDto.md5)
... ... @@ -238,9 +249,11 @@ export class PageHelper {
// 批查互动数据
this.allCompBatchRequest(pageInfo.oneRequestPageGroupCompList.convertToArray(), pageModel)
//
// 记录第一页数量
this.saveFirstPageEndIndex(pageModel)
if (!isCache) {
pageModel.currentPage++
}
pageModel.viewType = ViewType.LOADED
this.refreshUIEnd(pageModel, true)
... ... @@ -754,6 +767,40 @@ export class PageHelper {
}
}
saveFirstPageEndIndex(pageModel: PageModel) {
pageModel.firstPageEndIndex = pageModel.compList.size() - 1
}
static updateFirstPageEndIndex(pageModel: PageModel, isDel: boolean, index: number) {
if (index > pageModel.firstPageEndIndex) {
return
}
// 这里默认删除、添加都是一条一条处理
let count = 1
let endIndex = pageModel.firstPageEndIndex
if (isDel) {
// 第一页里删除
let offset = Math.min(endIndex - index, count)
endIndex = endIndex - offset
} else {
// 第一页里添加
endIndex = endIndex + count
}
pageModel.firstPageEndIndex = endIndex
}
/**
* 删除分页数据,保留第一页的数据。(下拉刷新场景用到)
*/
deleteMorePage(pageModel: PageModel) {
Logger.debug(TAG, 'deleteMorePage endindex: ' + pageModel.firstPageEndIndex)
if (pageModel.firstPageEndIndex < 0) {
return
}
// 从第二页开始删
pageModel.compList.deleteItems(pageModel.firstPageEndIndex + 1)
}
}
... ...
... ... @@ -63,9 +63,11 @@ export default class PageModel {
pageType: number = 0;
extra: string = ''
// 缓存数据相关
cachePageInfoMd5: string = ''
cacheGroupInfoMd5: string = ''
// 页面加载,md5数据相关(初始缓存、下拉刷新用到)
displayPageInfoMd5: string = ''
displayGroupInfoMd5: string = ''
// 第一页,最后一个comp下标,用于区分分页加载(下拉刷新,清除分页数据)
firstPageEndIndex = -1
/**
* 简单复制业务数据
... ...