Add server and mini-program pagination for shared lists

This commit is contained in:
2026-10-11 10:10:49 +08:00
parent c0a3db5c8e
commit 7854d94e7b
37 changed files with 395 additions and 175 deletions
+11 -10
View File
@@ -1,8 +1,9 @@
const { itemsOf, startList, applyList, failList, finishList, withListPagination } = require('../../utils/list-pagination');
const { withDataCache } = require('../../utils/page-cache');
const { getLayout } = require('../../utils/layout');
// pages/albums/albums.js
const { api, getImageUrl } = require('../../utils/request');
Page(withDataCache({
Page(withDataCache(withListPagination({
onResize: function() { this.setData(getLayout()); },
data: {
loading: true, loadError: false,
@@ -47,21 +48,21 @@ Page(withDataCache({
noop: function() {},
loadAlbums: async function() {
if (this._loading) return;
this._loading = true;
this.setData({ loading: !this._hasCachedData, loadError: false });
loadAlbums: async function(page) {
const ticket = startList(this, page);
if (!ticket) return;
try {
var list = await api.albumList(null, 'GET', true);
list = (list || []).map(function(a) {
var list = await api.albumList({page:ticket.page,page_size:20});
var result = list;
list = itemsOf(list).map(function(a) {
a.cover = getImageUrl(a.cover);
a.photo_count = a.photo_count || 0;
// 地理位置:优先显示地址名称,其次显示经纬度
a.location_text = a.location || ((a.lat && a.lng) ? (a.lat + ', ' + a.lng) : '');
return a;
});
this.setData({ albums: list });
} catch(e) { console.error(e); this.setData({ loadError: true }); } finally { this._loading = false; this.setData({ loading: false }); }
applyList(this, ticket, result, list, 'albums');
} catch(e) { console.error(e); failList(this,ticket); } finally { finishList(this,ticket); }
},
openAlbum: function(e) {
@@ -174,4 +175,4 @@ Page(withDataCache({
goHome: function() { wx.switchTab({ url: '/pages/index/index' }); },
goBack: function() { wx.navigateBack(); },
goToProfile: function() { wx.switchTab({ url: '/pages/profile/profile' }); }
}, {"loadAlbums": ["albumList"]}));
}, 'loadAlbums'), {"loadAlbums": ["albumList"]}));