-
Notifications
You must be signed in to change notification settings - Fork 10
/
utils.android.ts
67 lines (58 loc) · 2.39 KB
/
utils.android.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
/*! *****************************************************************************
Copyright (c) 2016 Tangra Inc.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
***************************************************************************** */
import * as types from "utils/types";
export function futureToPromise(future: any /* ListenableFuture */): Promise<any> {
return new Promise((resolve, reject) => {
com.google.common.util.concurrent.Futures.addCallback(future, new com.google.common.util.concurrent.FutureCallback({
onSuccess: (result) => {
resolve(result);
}
, onFailure: (t /* Throwable */) => {
reject(new Error(t.getMessage()));
}
}));
});
}
export function getNativeValueForComparison(value: string|number|boolean|Date): any {
if (types.isNumber(value)) {
// To my understanding Azure does not use the types strictly
// So always use the "bigger" type
if (value.toString().indexOf(".") >= 0) {
return new java.lang.Double(<number>value);
}
else {
return new java.lang.Long(<number>value);
}
}
else if (value instanceof Date) {
return new java.util.Date(value.getTime());
}
else {
return value;
}
}
export function getNativeObject(jsObject: any): any { /* JsonObject */
let parser = new com.google.gson.JsonParser();
return parser.parse(JSON.stringify(jsObject)).getAsJsonObject();
}
export function getJsObject(jsonObject: any): any {
let gson = new com.google.gson.Gson();
return JSON.parse(gson.toJson(jsonObject), dateReviver);
}
function dateReviver(key: string, value: any) {
let isoDateMatcher = /\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z)/;
if (typeof value === "string" && (<string>value).match(isoDateMatcher)) {
return new Date(value);
}
return value;
}