Skip to content

Commit 7958c27

Browse files
committed
Add a new refresh mode that ignores reload = false
1 parent cb66042 commit 7958c27

File tree

3 files changed

+22
-6
lines changed

3 files changed

+22
-6
lines changed

build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ val javaVersion: Int = 21
1717

1818
allprojects {
1919
group = "com.noxcrew.interfaces"
20-
version = "2.0.0"
20+
version = "2.0.1-SNAPSHOT"
2121

2222
tasks.withType<JavaCompile> {
2323
sourceCompatibility = javaVersion.toString()

interfaces/src/main/kotlin/com/noxcrew/interfaces/transform/RefreshMode.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,7 @@ public enum class RefreshMode {
1010

1111
/** The transform is refreshed any time the menu is opened. */
1212
ALWAYS,
13+
14+
/** The transform is refreshed only when opened with reload = true. */
15+
RELOAD,
1316
}

interfaces/src/main/kotlin/com/noxcrew/interfaces/view/AbstractInterfaceView.kt

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,9 @@ public abstract class AbstractInterfaceView<I : InterfacesInventory, T : Interfa
9797
/** Whether all properties should be fully reloaded. */
9898
protected var fullyReload: Boolean = false
9999

100+
/** Whether all refresh type transforms should be reloaded. */
101+
protected var reloadRefresh: Boolean = false
102+
100103
/** Whether a click is being processed. */
101104
public var isProcessingClick: Boolean = false
102105

@@ -322,6 +325,11 @@ public abstract class AbstractInterfaceView<I : InterfacesInventory, T : Interfa
322325
fullyReload = true
323326
}
324327

328+
// Trigger a refresh for RELOAD type transforms as long as reload is specified
329+
if (reload) {
330+
reloadRefresh = true
331+
}
332+
325333
// If we want to redraw the title we use a new inventory always
326334
if (backing.builder.redrawTitleOnReopen) {
327335
refreshTitle = true
@@ -406,18 +414,23 @@ public abstract class AbstractInterfaceView<I : InterfacesInventory, T : Interfa
406414
} else {
407415
// Run any queued transforms while the menu was not shown if applicable, including any
408416
// transforms that always redraw
409-
val queued = queuedTransforms.toSet() + builder.transforms.filter { it.refresh == RefreshMode.ALWAYS }
410-
.onEach {
411-
// Reset any transforms that are not stale so they properly re-render!
412-
it.reset()
413-
}
417+
val queued =
418+
queuedTransforms.toSet() +
419+
builder.transforms.filter { it.refresh == RefreshMode.ALWAYS || (it.refresh == RefreshMode.RELOAD && reloadRefresh) }
420+
.onEach {
421+
// Reset any transforms that are not stale so they properly re-render!
422+
it.reset()
423+
}
414424
if (queued.isNotEmpty()) {
415425
queuedTransforms = ConcurrentHashMap.newKeySet()
416426
applyTransforms(queued, initial = false, renderIfEmpty = true)
417427
} else {
418428
triggerRerender()
419429
}
420430
}
431+
432+
// Mark that we did a reload!
433+
reloadRefresh = false
421434
}
422435

423436
/** Triggers a re-render of the inventory based on all currently completed panes. */

0 commit comments

Comments
 (0)