Skip to content

Commit e168cb7

Browse files
committed
feat: computedPagination(Supplier) signature
1 parent 7af694e commit e168cb7

File tree

3 files changed

+56
-2
lines changed
  • inventory-framework-api/src/main/java/me/devnatan/inventoryframework/state
  • inventory-framework-core/src/main/java/me/devnatan/inventoryframework/state
  • inventory-framework-platform/src/main/java/me/devnatan/inventoryframework

3 files changed

+56
-2
lines changed

inventory-framework-api/src/main/java/me/devnatan/inventoryframework/state/StateAccess.java

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -199,6 +199,19 @@ <T> State<Pagination> computedPaginationState(
199199
@NotNull Function<Context, List<? super T>> sourceProvider,
200200
@NotNull PaginationValueConsumer<Context, ItemBuilder, T> valueConsumer);
201201

202+
/**
203+
* Creates a new unmodifiable computed pagination state.
204+
*
205+
* @param sourceProvider Data source for pagination.
206+
* @param valueConsumer Function for creating pagination items, this function is called for
207+
* each paged element (item) on a page.
208+
* @param <T> The pagination data type.
209+
* @return A new unmodifiable pagination state.
210+
*/
211+
<T> State<Pagination> computedPaginationState(
212+
@NotNull Supplier<List<? super T>> sourceProvider,
213+
@NotNull PaginationValueConsumer<Context, ItemBuilder, T> valueConsumer);
214+
202215
/**
203216
* Creates a new unmodifiable computed pagination state with asynchronous data source.
204217
* <p>
@@ -278,6 +291,16 @@ <T> State<Pagination> lazyAsyncPaginationState(
278291
<T> PaginationStateBuilder<Context, ItemBuilder, T> buildComputedPaginationState(
279292
@NotNull Function<Context, List<? super T>> sourceProvider);
280293

294+
/**
295+
* Creates a new unmodifiable dynamic pagination state builder.
296+
*
297+
* @param sourceProvider The data source for pagination.
298+
* @param <T> The pagination data type.
299+
* @return A new pagination state builder.
300+
*/
301+
<T> PaginationStateBuilder<Context, ItemBuilder, T> buildComputedPaginationState(
302+
@NotNull Supplier<List<? super T>> sourceProvider);
303+
281304
/**
282305
* Creates a new unmodifiable computed pagination state builder with asynchronous data source.
283306
* <p>

inventory-framework-core/src/main/java/me/devnatan/inventoryframework/state/StateAccessImpl.java

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -139,14 +139,23 @@ public final <T> State<Pagination> paginationState(
139139
}
140140

141141
@Override
142-
public final <T> State<Pagination> computedPaginationState(
142+
public <T> State<Pagination> computedPaginationState(
143143
@NotNull Function<Context, List<? super T>> sourceProvider,
144144
@NotNull PaginationValueConsumer<Context, ItemBuilder, T> valueConsumer) {
145145
return this.buildComputedPaginationState(sourceProvider)
146146
.elementFactory(valueConsumer)
147147
.build();
148148
}
149149

150+
@Override
151+
public <T> State<Pagination> computedPaginationState(
152+
@NotNull Supplier<List<? super T>> sourceProvider,
153+
@NotNull PaginationValueConsumer<Context, ItemBuilder, T> valueConsumer) {
154+
return this.buildComputedPaginationState(sourceProvider)
155+
.elementFactory(valueConsumer)
156+
.build();
157+
}
158+
150159
@Override
151160
public final <T> State<Pagination> computedAsyncPaginationState(
152161
@NotNull Function<Context, CompletableFuture<List<T>>> sourceProvider,
@@ -191,12 +200,19 @@ public final <T> PaginationStateBuilder<Context, ItemBuilder, T> buildPagination
191200
}
192201

193202
@Override
194-
public final <T> PaginationStateBuilder<Context, ItemBuilder, T> buildComputedPaginationState(
203+
public <T> PaginationStateBuilder<Context, ItemBuilder, T> buildComputedPaginationState(
195204
@NotNull Function<Context, List<? super T>> sourceProvider) {
196205
return new PaginationStateBuilder<>(
197206
elementFactoryProvider, sourceProvider, this::createPaginationState, false, true);
198207
}
199208

209+
@Override
210+
public <T> PaginationStateBuilder<Context, ItemBuilder, T> buildComputedPaginationState(
211+
@NotNull Supplier<List<? super T>> sourceProvider) {
212+
return new PaginationStateBuilder<>(
213+
elementFactoryProvider, sourceProvider, this::createPaginationState, false, true);
214+
}
215+
200216
@Override
201217
public final <T> PaginationStateBuilder<Context, ItemBuilder, T> buildComputedAsyncPaginationState(
202218
@NotNull Function<Context, CompletableFuture<List<T>>> sourceProvider) {

inventory-framework-platform/src/main/java/me/devnatan/inventoryframework/PlatformView.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -692,6 +692,14 @@ public final <T> State<Pagination> computedPaginationState(
692692
return stateAccess.computedPaginationState(sourceProvider, valueConsumer);
693693
}
694694

695+
@Override
696+
public final <T> State<Pagination> computedPaginationState(
697+
@NotNull Supplier<List<? super T>> sourceProvider,
698+
@NotNull PaginationValueConsumer<TContext, TItem, T> valueConsumer) {
699+
requireNotInitialized();
700+
return stateAccess.computedPaginationState(sourceProvider, valueConsumer);
701+
}
702+
695703
@Override
696704
public final <T> State<Pagination> computedAsyncPaginationState(
697705
@NotNull Function<TContext, CompletableFuture<List<T>>> sourceProvider,
@@ -738,6 +746,13 @@ public final <T> PaginationStateBuilder<TContext, TItem, T> buildComputedPaginat
738746
return stateAccess.buildComputedPaginationState(sourceProvider);
739747
}
740748

749+
@Override
750+
public final <T> PaginationStateBuilder<TContext, TItem, T> buildComputedPaginationState(
751+
@NotNull Supplier<List<? super T>> sourceProvider) {
752+
requireNotInitialized();
753+
return stateAccess.buildComputedPaginationState(sourceProvider);
754+
}
755+
741756
@Override
742757
public final <T> PaginationStateBuilder<TContext, TItem, T> buildComputedAsyncPaginationState(
743758
@NotNull Function<TContext, CompletableFuture<List<T>>> sourceProvider) {

0 commit comments

Comments
 (0)