ChannelViewModel.ets
4.66 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
import { NavigationBodyDTO, NavigationDetailDTO, } from 'wdBean';
import { Logger } from 'wdKit';
import { CacheData, ResponseDTO } from 'wdNetwork';
import { PageRepository } from '../repository/PageRepository';
const TAG = 'ChannelViewModel';
/**
* 首页底导、顶导相关
*/
export class ChannelViewModel {
/**
* 获取底导缓存数据
*/
async getBottomNavCacheData(): Promise<NavigationBodyDTO | null> {
Logger.info(TAG, `getBottomNavCacheData start`);
return new Promise<NavigationBodyDTO | null>((success) => {
CacheData.getLocalCacheData(CacheData.bottomCacheKey).then((data) => {
// Logger.debug(TAG, 'getBottomNavCacheData 333 ' + JSON.stringify(data));
if (data) {
let navBean = JSON.parse(CacheData.getNetworkData(data)) as NavigationBodyDTO
success(navBean)
} else {
success(null)
}
}).catch((err: object) => {
Logger.error(TAG, 'getBottomNavCacheData catch err: ' + JSON.stringify(err));
success(null)
})
});
}
/**
* 保存底导数据到缓存
*/
saveBottomData(data: NavigationBodyDTO) {
CacheData.saveCacheData(CacheData.bottomCacheKey, data, data.md5)
}
/**
* 获取底导详情(顶导)缓存数据
*/
getBottomNavDetailCacheData(id: number): Promise<NavigationDetailDTO | null> {
return new Promise<NavigationDetailDTO | null>((success) => {
CacheData.getLocalCacheData(CacheData.channelCacheDataKey + id).then((data) => {
if (data) {
let navBean = JSON.parse(CacheData.getNetworkData(data)) as NavigationDetailDTO
success(navBean)
} else {
success(null)
}
}).catch((err: object) => {
Logger.error(TAG, 'getBottomNavDetailCacheData catch err: ' + JSON.stringify(err));
success(null)
})
})
}
/**
* 保存底导详情数据到缓存
*/
saveBottomDetailData(data: NavigationDetailDTO) {
CacheData.saveCacheData(CacheData.channelCacheDataKey + data?.id, data, data.md5)
}
/**
* 获取底导接口数据
*/
async getBottomNavData(): Promise<NavigationBodyDTO> {
Logger.info(TAG, `getBottomNavData start`);
return this.getNavData();
}
/**
* 获取底导详情(顶导)接口数据
*/
async getBottomNavDetailData(id: number): Promise<NavigationDetailDTO> {
Logger.info(TAG, `getBottomNavDetailData start`);
return this.getNavDetailData(id);
}
private getNavData(): Promise<NavigationBodyDTO> {
return new Promise<NavigationBodyDTO>((success, error) => {
Logger.info(TAG, `getNavData start`);
PageRepository.fetchNavigationDataApi().then((navResDTO: ResponseDTO<NavigationBodyDTO>) => {
if (!navResDTO || !navResDTO.data) {
Logger.error(TAG, 'getNavData then navResDTO is empty');
error('navResDTO is empty');
return
}
if (navResDTO.code != 0) {
Logger.error(TAG, `getNavData then code:${navResDTO.code}, message:${navResDTO.message}`);
error('navResDTO Response Code is failure');
return
}
// let navResStr = JSON.stringify(navResDTO);
Logger.info(TAG, "getNavData then,navResDTO.timestamp:" + navResDTO.timestamp);
navResDTO.data.md5 = navResDTO.meta?.md5 || ''
success(navResDTO.data);
}).catch((err: Error) => {
Logger.error(TAG, `fetchNavigationDataApi catch, error.name : ${err.name}, error.message:${err.message}`);
error(err);
})
})
}
private getNavDetailData(id: number): Promise<NavigationDetailDTO> {
return new Promise<NavigationDetailDTO>((success, error) => {
Logger.info(TAG, `getNavData start`);
PageRepository.fetchNavigationDetailDataApi(id).then((navResDTO: ResponseDTO<NavigationDetailDTO>) => {
if (!navResDTO || !navResDTO.data) {
Logger.error(TAG, 'getNavData then navResDTO is empty');
error('navResDTO is empty');
return
}
if (navResDTO.code != 0) {
Logger.error(TAG, `getNavData then code:${navResDTO.code}, message:${navResDTO.message}`);
error('navResDTO Response Code is failure');
return
}
// let navResStr = JSON.stringify(navResDTO);
Logger.info(TAG, "getNavData then,navResDTO.timestamp:" + navResDTO.timestamp);
navResDTO.data.md5 = navResDTO.meta?.md5 || ''
success(navResDTO.data);
}).catch((err: Error) => {
Logger.error(TAG, `fetchNavigationDataApi catch, error.name : ${err.name}, error.message:${err.message}`);
error(err);
})
})
}
}
let channelViewModel = new ChannelViewModel();
export default channelViewModel as ChannelViewModel;