aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBob Zeleznik <zzzman@gmail.com>2019-02-28 09:20:06 -0500
committerBob Zeleznik <zzzman@gmail.com>2019-02-28 09:20:06 -0500
commitf3085f427ec7c324d0a21d710555e79e8a9704b5 (patch)
treec938fd15367ac5ec135347654baf8e3cd387309a
parent4a42946b5c8ec86e66a89fec2e66971a242e3dbb (diff)
parent9c9aea92d9a330f5826735c3c3e07ec35b325cc2 (diff)
Merge branch 'master' into kvp
-rw-r--r--src/fields/Document.ts19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/fields/Document.ts b/src/fields/Document.ts
index 5b91de6ed..0c156b282 100644
--- a/src/fields/Document.ts
+++ b/src/fields/Document.ts
@@ -102,6 +102,25 @@ export class Document extends Field {
return false;
}
+ GetOrCreateAsync<T extends Field>(key: Key, ctor: { new(): T }, callback: (field: T) => void): void {
+ //This currently doesn't deal with prototypes
+ if (this._proxies.has(key.Id)) {
+ Server.GetDocumentField(this, key, (field) => {
+ if (field && field instanceof ctor) {
+ callback(field);
+ } else {
+ let newField = new ctor();
+ this.Set(key, newField);
+ callback(newField);
+ }
+ });
+ } else {
+ let newField = new ctor();
+ this.Set(key, newField);
+ callback(newField);
+ }
+ }
+
GetT<T extends Field = Field>(key: Key, ctor: { new(...args: any[]): T }, ignoreProto: boolean = false): FieldValue<T> {
var getfield = this.Get(key, ignoreProto);
if (getfield != FieldWaiting) {