IGListKit/Source/IGListDiffKit/IGListBatchUpdateData.h
Tim Oliver 98bd6c6a74 Fix the SPM build errors caused by removal of unprefixed headers (#1644)
Summary:
It looks like D86316341 caused the GitHub unit tests to stop passing since SPM relies on IGListKit and IGListDiffKit being in the same directory so there are no module imports.

This diff adds the same `__has_include` conditional checking so our internal and external module configurations will both work.

Pull Request resolved: https://github.com/instagram/IGListKit/pull/1644

Test Plan:
The external tests are working again. As long as the internal tests also pass, we should be good!

 {F1983488354}

Reviewed By: m3rlin45

Differential Revision: D86943807

Pulled By: TimOliver

fbshipit-source-id: c741acbb1f8425e92834daec720d4be3b3c264da
2025-11-17 00:08:32 -08:00

100 lines
2.7 KiB
Objective-C

/*
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
#import <Foundation/Foundation.h>
#if !__has_include(<IGListDiffKit/IGListDiffKit.h>)
#import "IGListMacros.h"
#import "IGListMoveIndex.h"
#import "IGListMoveIndexPath.h"
#else
#import <IGListDiffKit/IGListMacros.h>
#import <IGListDiffKit/IGListMoveIndex.h>
#import <IGListDiffKit/IGListMoveIndexPath.h>
#endif
NS_ASSUME_NONNULL_BEGIN
/**
An instance of `IGListBatchUpdateData` takes section indexes and item index paths
and performs cleanup on init in order to perform a crash-free
update via `-[UICollectionView performBatchUpdates:completion:]`.
*/
IGLK_SUBCLASSING_RESTRICTED
NS_SWIFT_NAME(ListBatchUpdateData)
@interface IGListBatchUpdateData : NSObject
/**
Section insert indexes.
*/
@property (nonatomic, strong, readonly) NSIndexSet *insertSections;
/**
Section delete indexes.
*/
@property (nonatomic, strong, readonly) NSIndexSet *deleteSections;
/**
Section moves.
*/
@property (nonatomic, strong, readonly) NSSet<IGListMoveIndex *> *moveSections;
/**
Item insert index paths.
*/
@property (nonatomic, strong, readonly) NSArray<NSIndexPath *> *insertIndexPaths;
/**
Item delete index paths.
*/
@property (nonatomic, strong, readonly) NSArray<NSIndexPath *> *deleteIndexPaths;
/**
Item update index paths.
*/
@property (nonatomic, strong, readonly) NSArray<NSIndexPath *> *updateIndexPaths;
/**
Item moves.
*/
@property (nonatomic, strong, readonly) NSArray<IGListMoveIndexPath *> *moveIndexPaths;
/**
Creates a new batch update object with section and item operations.
@param insertSections Section indexes to insert.
@param deleteSections Section indexes to delete.
@param moveSections Section moves.
@param insertIndexPaths Item index paths to insert.
@param deleteIndexPaths Item index paths to delete.
@param updateIndexPaths Item index paths to update.
@param moveIndexPaths Item index paths to move.
@return A new batch update object.
*/
- (instancetype)initWithInsertSections:(NSIndexSet *)insertSections
deleteSections:(NSIndexSet *)deleteSections
moveSections:(NSSet<IGListMoveIndex *> *)moveSections
insertIndexPaths:(NSArray<NSIndexPath *> *)insertIndexPaths
deleteIndexPaths:(NSArray<NSIndexPath *> *)deleteIndexPaths
updateIndexPaths:(NSArray<NSIndexPath *> *)updateIndexPaths
moveIndexPaths:(NSArray<IGListMoveIndexPath *> *)moveIndexPaths NS_DESIGNATED_INITIALIZER;
/**
:nodoc:
*/
- (instancetype)init NS_UNAVAILABLE;
/**
:nodoc:
*/
+ (instancetype)new NS_UNAVAILABLE;
@end
NS_ASSUME_NONNULL_END