@@ -11,6 +11,7 @@ import {
1111 ObsidianIconFolder_PluginInstance
1212} from '../utils/ObsidianIconFolderPluginSignature'
1313import {
14+ CustomSort ,
1415 CustomSortGroup ,
1516 CustomSortGroupType ,
1617 CustomSortOrder ,
@@ -287,18 +288,18 @@ export const StandardPlainObsidianComparator = (order: string): PlainSorterFn =>
287288 }
288289}
289290
290- export const getSorterFnFor = ( sorting : CustomSortOrder , currentUIselectedSorting ?: string , sortLevelId ?: SortingLevelId ) : SorterFn => {
291- if ( sorting === CustomSortOrder . standardObsidian ) {
292- sorting = StandardObsidianToCustomSort [ currentUIselectedSorting ?? 'alphabetical' ] ?? CustomSortOrder . alphabetical
293- return StandardObsidianComparator ( sorting )
291+ export const getSorterFnFor = ( order : CustomSortOrder , currentUIselectedSorting ?: string , sortLevelId ?: SortingLevelId ) : SorterFn => {
292+ if ( order === CustomSortOrder . standardObsidian ) {
293+ order = StandardObsidianToCustomSort [ currentUIselectedSorting ?? 'alphabetical' ] ?? CustomSortOrder . alphabetical
294+ return StandardObsidianComparator ( order )
294295 } else {
295296 // Some sorters have to know at which sorting level they are used
296297 switch ( sortLevelId ) {
297- case SortingLevelId . forSecondary : return SortersForSecondary [ sorting ] ?? Sorters [ sorting ]
298- case SortingLevelId . forDerivedPrimary : return SortersForDerivedPrimary [ sorting ] ?? Sorters [ sorting ]
299- case SortingLevelId . forDerivedSecondary : return SortersForDerivedSecondary [ sorting ] ?? Sorters [ sorting ]
298+ case SortingLevelId . forSecondary : return SortersForSecondary [ order ] ?? Sorters [ order ]
299+ case SortingLevelId . forDerivedPrimary : return SortersForDerivedPrimary [ order ] ?? Sorters [ order ]
300+ case SortingLevelId . forDerivedSecondary : return SortersForDerivedSecondary [ order ] ?? Sorters [ order ]
300301 case SortingLevelId . forPrimary :
301- default : return Sorters [ sorting ]
302+ default : return Sorters [ order ]
302303 }
303304 }
304305}
@@ -308,13 +309,13 @@ export const getComparator = (sortSpec: CustomSortSpec, currentUIselectedSorting
308309 if ( itA . groupIdx != undefined && itB . groupIdx != undefined ) {
309310 if ( itA . groupIdx === itB . groupIdx ) {
310311 const group : CustomSortGroup | undefined = sortSpec . groups [ itA . groupIdx ]
311- const primary : number = group ?. order ? getSorterFnFor ( group . order , currentUIselectedSorting , SortingLevelId . forPrimary ) ( itA , itB ) : EQUAL_OR_UNCOMPARABLE
312+ const primary : number = group ?. sorting ? getSorterFnFor ( group . sorting . order , currentUIselectedSorting , SortingLevelId . forPrimary ) ( itA , itB ) : EQUAL_OR_UNCOMPARABLE
312313 if ( primary !== EQUAL_OR_UNCOMPARABLE ) return primary
313- const secondary : number = group ?. secondaryOrder ? getSorterFnFor ( group . secondaryOrder , currentUIselectedSorting , SortingLevelId . forSecondary ) ( itA , itB ) : EQUAL_OR_UNCOMPARABLE
314+ const secondary : number = group ?. secondarySorting ? getSorterFnFor ( group . secondarySorting . order , currentUIselectedSorting , SortingLevelId . forSecondary ) ( itA , itB ) : EQUAL_OR_UNCOMPARABLE
314315 if ( secondary !== EQUAL_OR_UNCOMPARABLE ) return secondary
315- const folderLevel : number = sortSpec . defaultOrder ? getSorterFnFor ( sortSpec . defaultOrder , currentUIselectedSorting , SortingLevelId . forDerivedPrimary ) ( itA , itB ) : EQUAL_OR_UNCOMPARABLE
316+ const folderLevel : number = sortSpec . defaultSorting ? getSorterFnFor ( sortSpec . defaultSorting . order , currentUIselectedSorting , SortingLevelId . forDerivedPrimary ) ( itA , itB ) : EQUAL_OR_UNCOMPARABLE
316317 if ( folderLevel !== EQUAL_OR_UNCOMPARABLE ) return folderLevel
317- const folderLevelSecondary : number = sortSpec . defaultSecondaryOrder ? getSorterFnFor ( sortSpec . defaultSecondaryOrder , currentUIselectedSorting , SortingLevelId . forDerivedSecondary ) ( itA , itB ) : EQUAL_OR_UNCOMPARABLE
318+ const folderLevelSecondary : number = sortSpec . defaultSecondarySorting ? getSorterFnFor ( sortSpec . defaultSecondarySorting . order , currentUIselectedSorting , SortingLevelId . forDerivedSecondary ) ( itA , itB ) : EQUAL_OR_UNCOMPARABLE
318319 if ( folderLevelSecondary !== EQUAL_OR_UNCOMPARABLE ) return folderLevelSecondary
319320 const defaultForUnspecified : number = getSorterFnFor ( CustomSortOrder . default , undefined , SortingLevelId . forDefaultWhenUnspecified ) ( itA , itB )
320321 return defaultForUnspecified
@@ -552,10 +553,10 @@ export const determineSortingGroup = function (entry: TFile | TFolder, spec: Cus
552553
553554 if ( determined && determinedGroupIdx !== undefined ) { // <-- defensive code, maybe too defensive
554555 const group : CustomSortGroup = spec . groups [ determinedGroupIdx ] ;
555- const isPrimaryOrderByMetadata : boolean = isByMetadata ( group ?. order )
556- const isSecondaryOrderByMetadata : boolean = isByMetadata ( group ?. secondaryOrder )
557- const isDerivedPrimaryByMetadata : boolean = isByMetadata ( spec . defaultOrder )
558- const isDerivedSecondaryByMetadata : boolean = isByMetadata ( spec . defaultSecondaryOrder )
556+ const isPrimaryOrderByMetadata : boolean = isByMetadata ( group ?. sorting ?. order )
557+ const isSecondaryOrderByMetadata : boolean = isByMetadata ( group ?. secondarySorting ?. order )
558+ const isDerivedPrimaryByMetadata : boolean = isByMetadata ( spec . defaultSorting ?. order )
559+ const isDerivedSecondaryByMetadata : boolean = isByMetadata ( spec . defaultSecondarySorting ?. order )
559560 if ( isPrimaryOrderByMetadata || isSecondaryOrderByMetadata || isDerivedPrimaryByMetadata || isDerivedSecondaryByMetadata ) {
560561 if ( ctx ?. _mCache ) {
561562 // For folders - scan metadata of 'folder note'
@@ -571,26 +572,26 @@ export const determineSortingGroup = function (entry: TFile | TFolder, spec: Cus
571572 }
572573 if ( isPrimaryOrderByMetadata ) metadataValueToSortBy =
573574 mdataValueFromFMCaches (
574- group ?. byMetadataField || group ? .withMetadataFieldName || DEFAULT_METADATA_FIELD_FOR_SORTING ,
575- group ?. metadataFieldValueExtractor ,
575+ group . sorting ! . byMetadata || group . withMetadataFieldName || DEFAULT_METADATA_FIELD_FOR_SORTING ,
576+ group . sorting ! . metadataValueExtractor ,
576577 frontMatterCache ,
577578 prioFrontMatterCache )
578579 if ( isSecondaryOrderByMetadata ) metadataValueSecondaryToSortBy =
579580 mdataValueFromFMCaches (
580- group ?. byMetadataFieldSecondary || group ? .withMetadataFieldName || DEFAULT_METADATA_FIELD_FOR_SORTING ,
581- group ?. metadataFieldSecondaryValueExtractor ,
581+ group . secondarySorting ! . byMetadata || group . withMetadataFieldName || DEFAULT_METADATA_FIELD_FOR_SORTING ,
582+ group . secondarySorting ! . metadataValueExtractor ,
582583 frontMatterCache ,
583584 prioFrontMatterCache )
584585 if ( isDerivedPrimaryByMetadata ) metadataValueDerivedPrimaryToSortBy =
585586 mdataValueFromFMCaches (
586- spec . byMetadataField || DEFAULT_METADATA_FIELD_FOR_SORTING ,
587- spec . metadataFieldValueExtractor ,
587+ spec . defaultSorting ! . byMetadata || DEFAULT_METADATA_FIELD_FOR_SORTING ,
588+ spec . defaultSorting ! . metadataValueExtractor ,
588589 frontMatterCache ,
589590 prioFrontMatterCache )
590591 if ( isDerivedSecondaryByMetadata ) metadataValueDerivedSecondaryToSortBy =
591592 mdataValueFromFMCaches (
592- spec . byMetadataFieldSecondary || DEFAULT_METADATA_FIELD_FOR_SORTING ,
593- spec . metadataFieldSecondaryValueExtractor ,
593+ spec . defaultSecondarySorting ! . byMetadata || DEFAULT_METADATA_FIELD_FOR_SORTING ,
594+ spec . defaultSecondarySorting ! . metadataValueExtractor ,
594595 frontMatterCache ,
595596 prioFrontMatterCache )
596597 }
@@ -692,12 +693,12 @@ export const determineDatesForFolder = (folder: TFolder, recursive?: boolean): [
692693}
693694
694695export const determineFolderDatesIfNeeded = ( folderItems : Array < FolderItemForSorting > , sortingSpec : CustomSortSpec ) => {
695- const foldersDatesNeeded = sortOrderNeedsFolderDates ( sortingSpec . defaultOrder , sortingSpec . defaultSecondaryOrder )
696- const foldersDeepDatesNeeded = sortOrderNeedsFolderDeepDates ( sortingSpec . defaultOrder , sortingSpec . defaultSecondaryOrder )
696+ const foldersDatesNeeded = sortOrderNeedsFolderDates ( sortingSpec . defaultSorting ?. order , sortingSpec . defaultSecondarySorting ?. order )
697+ const foldersDeepDatesNeeded = sortOrderNeedsFolderDeepDates ( sortingSpec . defaultSorting ?. order , sortingSpec . defaultSecondarySorting ?. order )
697698
698699 const groupOrders = sortingSpec . groups ?. map ( ( group ) => ( {
699- foldersDatesNeeded : sortOrderNeedsFolderDates ( group . order , group . secondaryOrder ) ,
700- foldersDeepDatesNeeded : sortOrderNeedsFolderDeepDates ( group . order , group . secondaryOrder )
700+ foldersDatesNeeded : sortOrderNeedsFolderDates ( group . sorting ?. order , group . secondarySorting ?. order ) ,
701+ foldersDeepDatesNeeded : sortOrderNeedsFolderDeepDates ( group . sorting ?. order , group . secondarySorting ?. order )
701702 } ) )
702703
703704 folderItems . forEach ( ( item ) => {
@@ -717,15 +718,15 @@ export const determineFolderDatesIfNeeded = (folderItems: Array<FolderItemForSor
717718export const determineBookmarksOrderIfNeeded = ( folderItems : Array < FolderItemForSorting > , sortingSpec : CustomSortSpec , plugin : BookmarksPluginInterface ) => {
718719 if ( ! plugin ) return
719720
720- const folderDefaultSortRequiresBookmarksOrder : boolean = ! ! ( sortingSpec . defaultOrder && sortOrderNeedsBookmarksOrder ( sortingSpec . defaultOrder , sortingSpec . defaultSecondaryOrder ) )
721+ const folderDefaultSortRequiresBookmarksOrder : boolean = ! ! ( sortingSpec . defaultSorting && sortOrderNeedsBookmarksOrder ( sortingSpec . defaultSorting . order , sortingSpec . defaultSecondarySorting ?. order ) )
721722
722723 folderItems . forEach ( ( item ) => {
723724 let groupSortRequiresBookmarksOrder : boolean = false
724725 if ( ! folderDefaultSortRequiresBookmarksOrder ) {
725726 const groupIdx : number | undefined = item . groupIdx
726727 if ( groupIdx !== undefined ) {
727- const groupOrder : CustomSortOrder | undefined = sortingSpec . groups [ groupIdx ] . order
728- const groupSecondaryOrder : CustomSortOrder | undefined = sortingSpec . groups [ groupIdx ] . secondaryOrder
728+ const groupOrder : CustomSortOrder | undefined = sortingSpec . groups [ groupIdx ] . sorting ?. order
729+ const groupSecondaryOrder : CustomSortOrder | undefined = sortingSpec . groups [ groupIdx ] . secondarySorting ?. order
729730 groupSortRequiresBookmarksOrder = sortOrderNeedsBookmarksOrder ( groupOrder , groupSecondaryOrder )
730731 }
731732 }
0 commit comments