mirror of
https://github.com/xpipe-io/xpipe.git
synced 2026-10-08 08:01:39 +00:00
Properly update state on children refresh
This commit is contained in:
1 parent
0a8881a9cf
commit
bdcc6a1295
7 files changed
+37
-10
No files matched your search
@@ -10,7 +10,7 @@ import java.util.function.Supplier;
|
||||
public class DataStateProviderImpl extends DataStateProvider {
|
||||
|
||||
@Override
|
||||
public void setState(DataStore store, Object value) {
|
||||
public void setState(DataStore store, DataStoreState value) {
|
||||
if (DataStorage.get() == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -5,10 +5,7 @@ import io.xpipe.app.issue.ErrorEvent;
|
||||
import io.xpipe.app.prefs.AppPrefs;
|
||||
import io.xpipe.app.util.FixedHierarchyStore;
|
||||
import io.xpipe.app.util.ThreadHelper;
|
||||
import io.xpipe.core.store.DataStore;
|
||||
import io.xpipe.core.store.DataStoreId;
|
||||
import io.xpipe.core.store.FixedChildStore;
|
||||
import io.xpipe.core.store.LocalStore;
|
||||
import io.xpipe.core.store.*;
|
||||
import io.xpipe.core.util.UuidHelper;
|
||||
import javafx.util.Pair;
|
||||
import lombok.Getter;
|
||||
@@ -255,7 +252,7 @@ public abstract class DataStorage {
|
||||
nc.getStore().getFixedId() == ((FixedChildStore) entry.getStore()).getFixedId())
|
||||
.findFirst()
|
||||
.orElse(null);
|
||||
return new Pair<>(entry, found);
|
||||
return new Pair<DataStoreEntry, DataStoreEntryRef<? extends FixedChildStore>>(entry, found);
|
||||
})
|
||||
.filter(en -> en.getValue() != null)
|
||||
.toList();
|
||||
@@ -268,6 +265,13 @@ public abstract class DataStorage {
|
||||
addStoreEntriesIfNotPresent(toAdd.stream().map(DataStoreEntryRef::get).toArray(DataStoreEntry[]::new));
|
||||
toUpdate.forEach(pair -> {
|
||||
pair.getKey().setStoreInternal(pair.getValue().getStore(), false);
|
||||
|
||||
// Update state by merging
|
||||
if (pair.getKey().getStorePersistentState() != null && pair.getValue().get().getStorePersistentState() != null) {
|
||||
var mergedState = pair.getKey().getStorePersistentState().deepCopy();
|
||||
mergedState.merge(pair.getValue().get().getStorePersistentState());
|
||||
pair.getKey().setStorePersistentState(mergedState);
|
||||
}
|
||||
});
|
||||
saveAsync();
|
||||
return !newChildren.isEmpty();
|
||||
|
||||
@@ -59,7 +59,7 @@ public class DataStoreEntry extends StorageElement {
|
||||
UUID categoryUuid;
|
||||
|
||||
@NonFinal
|
||||
Object storePersistentState;
|
||||
DataStoreState storePersistentState;
|
||||
|
||||
@NonFinal
|
||||
JsonNode storePersistentStateNode;
|
||||
@@ -284,7 +284,7 @@ public class DataStoreEntry extends StorageElement {
|
||||
}
|
||||
}
|
||||
|
||||
public void setStorePersistentState(Object value) {
|
||||
public void setStorePersistentState(DataStoreState value) {
|
||||
var changed = !Objects.equals(storePersistentState, value);
|
||||
this.storePersistentState = value;
|
||||
this.storePersistentStateNode = JacksonMapper.getDefault().valueToTree(value);
|
||||
|
||||
Reference in new issue
Block a user