@@ -8,18 +8,21 @@ import kotlinx.coroutines.DelicateCoroutinesApi
8
8
import kotlinx.coroutines.GlobalScope
9
9
import kotlinx.coroutines.await
10
10
import kotlinx.coroutines.promise
11
+ import kotlinx.datetime.toJSDate
11
12
import org.modelix.datastructures.model.IGenericModelTree
12
13
import org.modelix.model.TreeId
13
14
import org.modelix.model.api.INode
14
15
import org.modelix.model.api.INodeReference
15
16
import org.modelix.model.api.JSNodeConverter
16
17
import org.modelix.model.client.IdGenerator
17
18
import org.modelix.model.data.ModelData
19
+ import org.modelix.model.lazy.CLVersion
18
20
import org.modelix.model.lazy.RepositoryId
19
21
import org.modelix.model.lazy.createObjectStoreCache
20
22
import org.modelix.model.mutable.DummyIdGenerator
21
23
import org.modelix.model.mutable.INodeIdGenerator
22
24
import org.modelix.model.mutable.ModelixIdGenerator
25
+ import org.modelix.model.mutable.asMutableSingleThreaded
23
26
import org.modelix.model.mutable.asMutableThreadSafe
24
27
import org.modelix.model.mutable.load
25
28
import org.modelix.model.mutable.withAutoTransactions
@@ -111,6 +114,8 @@ interface ClientJS {
111
114
*/
112
115
fun initRepository (repositoryId : String , useRoleIds : Boolean = true): Promise <Unit >
113
116
117
+ fun loadReadonlyVersion (repositoryId : String , versionHash : String ): Promise <Pair <MutableModelTreeJs , VersionInformationJS >>
118
+
114
119
/* *
115
120
* Fetch existing branches for a given repository from the model server.
116
121
*
@@ -192,6 +197,16 @@ internal class ClientJSImpl(private val modelClient: ModelClientV2) : ClientJS {
192
197
}
193
198
}
194
199
200
+ override fun loadReadonlyVersion (repositoryId : String , versionHash : String ): Promise <Pair <MutableModelTreeJs , VersionInformationJS >> {
201
+ return GlobalScope .promise {
202
+ val version = modelClient.loadVersion(RepositoryId (repositoryId), versionHash, null )
203
+ MutableModelTreeJsImpl (version.getModelTree().asMutableSingleThreaded()) to VersionInformationJS (
204
+ (version as CLVersion ).author,
205
+ version.getTimestamp()?.toJSDate(),
206
+ version.getContentHash())
207
+ }
208
+ }
209
+
195
210
override fun dispose () {
196
211
modelClient.close()
197
212
}
0 commit comments