@@ -62,6 +62,7 @@ open class EditorResource(
62
62
&& ! areEqual(new, existing)) {
63
63
this .resource = new
64
64
}
65
+ setState(createState(new, state))
65
66
}
66
67
}
67
68
@@ -94,13 +95,18 @@ open class EditorResource(
94
95
*/
95
96
fun getState (): EditorResourceState {
96
97
return resourceChangeMutex.withLock {
97
- val state = getState(resource, state)
98
- this .state = state
99
- state
98
+ val existingState = this .state
99
+ if (existingState == null ) {
100
+ val newState = createState(resource, null )
101
+ setState(newState)
102
+ newState
103
+ } else {
104
+ existingState
105
+ }
100
106
}
101
107
}
102
108
103
- private fun getState (resource : HasMetadata , existingState : EditorResourceState ? ): EditorResourceState {
109
+ private fun createState (resource : HasMetadata , existingState : EditorResourceState ? ): EditorResourceState {
104
110
val isModified = isModified(resource)
105
111
return when {
106
112
! isConnected() ->
@@ -122,12 +128,14 @@ open class EditorResource(
122
128
isOutdatedVersion()
123
129
)
124
130
131
+ existingState is Error ->
132
+ existingState
133
+
125
134
isOutdatedVersion() ->
126
135
Outdated ()
127
136
128
137
existingState is Pulled
129
- || existingState is Pushed
130
- || existingState is Error ->
138
+ || existingState is Pushed ->
131
139
existingState
132
140
133
141
! existsOnCluster() ->
@@ -149,7 +157,7 @@ open class EditorResource(
149
157
* Store resource that we tried to push but failed.
150
158
* In this way this resource is not in modified state anymore
151
159
* @see isModified
152
- * @see getState (resource: HasMetadata, existingState: EditorResourceState?)
160
+ * @see createState (resource: HasMetadata, existingState: EditorResourceState?)
153
161
*/
154
162
setLastPushedPulled(resource)
155
163
when {
0 commit comments