11import BLOG from "@/blog.config"
22
3- export default function getAllPageIds ( collectionQuery , collectionId , collectionView , viewIds ) {
4- if ( ! collectionQuery && ! collectionView ) {
5- return [ ]
6- }
7- let pageIds = [ ]
8- try {
9- // Notion数据库中的第几个视图用于站点展示和排序:
3+ export default function getAllPageIds ( collectionQuery , collectionId , collectionView , viewIds , block = { } ) {
4+ const pageSet = new Set ( )
5+
6+ // ── 策略1:从 collectionView[viewId].value.value.page_sort 取(新格式)──
7+ if ( collectionView && viewIds ?. length > 0 ) {
108 const groupIndex = BLOG . NOTION_INDEX || 0
11- if ( viewIds && viewIds . length > 0 ) {
12- const ids = collectionQuery [ collectionId ] [ viewIds [ groupIndex ] ] ?. collection_group_results ?. blockIds || [ ]
13- if ( ids ) {
14- for ( const id of ids ) {
15- pageIds . push ( id )
16- }
17- }
9+ const targetViewId = viewIds [ groupIndex ]
10+ const pageSort = collectionView ?. [ targetViewId ] ?. value ?. value ?. page_sort
11+
12+ if ( Array . isArray ( pageSort ) && pageSort . length > 0 ) {
13+ pageSort . forEach ( id => pageSet . add ( id ) )
14+ // console.log('[getAllPageIds] 策略1命中 page_sort,数量:', pageSet.size)
1815 }
19- } catch ( error ) {
20- console . error ( 'Error fetching page IDs:' , ids , error ) ;
21- return [ ] ;
2216 }
2317
24- // 否则按照数据库原始排序
25- if ( pageIds . length === 0 && collectionQuery && Object . values ( collectionQuery ) . length > 0 ) {
26- const pageSet = new Set ( )
27- Object . values ( collectionQuery [ collectionId ] ) . forEach ( view => {
28- view ?. blockIds ?. forEach ( id => pageSet . add ( id ) ) // group视图
29- view ?. collection_group_results ?. blockIds ?. forEach ( id => pageSet . add ( id ) ) // table视图
18+ // ── 策略2:遍历所有 viewId 的 page_sort 兜底 ──
19+ if ( pageSet . size === 0 && collectionView ) {
20+ Object . values ( collectionView ) . forEach ( viewEntry => {
21+ const pageSort = viewEntry ?. value ?. value ?. page_sort
22+ if ( Array . isArray ( pageSort ) ) {
23+ pageSort . forEach ( id => pageSet . add ( id ) )
24+ }
3025 } )
31- pageIds = [ ...pageSet ]
32- // console.log('PageIds: 从collectionQuery获取', collectionQuery, pageIds.length)
26+ if ( pageSet . size > 0 ) {
27+ // console.log('[getAllPageIds] 策略2命中 page_sort(遍历),数量:', pageSet.size)
28+ }
29+ }
30+
31+ // ── 策略3:旧格式兼容,从 collectionQuery 取 ──
32+ if ( pageSet . size === 0 && collectionQuery && collectionId ) {
33+ const viewQuery = collectionQuery ?. [ collectionId ]
34+ if ( viewQuery ) {
35+ Object . values ( viewQuery ) . forEach ( viewData => {
36+ [
37+ viewData ?. collection_group_results ?. blockIds ,
38+ viewData ?. results ?. blockIds ,
39+ viewData ?. blockIds ,
40+ ] . forEach ( ids => {
41+ if ( Array . isArray ( ids ) ) ids . forEach ( id => pageSet . add ( id ) )
42+ } )
43+ } )
44+ if ( pageSet . size > 0 ) {
45+ // console.log('[getAllPageIds] 策略3命中 collectionQuery(旧格式),数量:', pageSet.size)
46+ }
47+ }
48+ }
49+
50+ if ( pageSet . size === 0 ) {
51+ // console.warn('[getAllPageIds] 所有策略均未命中,返回空数组')
52+ return [ ]
3353 }
34- return pageIds
54+
55+ // ── 统一过滤:只保留有权限的 pageId ──
56+ // const accessibleIds = [...pageSet].filter(id => {
57+ // const entry = block[id]
58+ // if (!entry) return true // block 里没有记录,保留交给后续 fetch 处理
59+ // return entry?.value?.role !== 'none'
60+ // })
61+
62+ // console.log(`[getAllPageIds] 过滤后可访问数量: ${accessibleIds.length}/${pageSet.size}`)
63+ // return accessibleIds
64+ return [ ...pageSet ]
3565}
0 commit comments