root / src / app / app.component.ts @ 2c8d373c
Historique | Voir | Annoter | Télécharger (6,01 ko)
1 |
import { Component, OnInit } from "@angular/core"; |
---|---|
2 |
import { NavigationEnd, Router } from "@angular/router"; |
3 |
import { RouterExtensions } from "nativescript-angular/router"; |
4 |
import { DrawerTransitionBase, RadSideDrawer, SlideInOnTopTransition } from "nativescript-ui-sidedrawer"; |
5 |
import { filter } from "rxjs/operators"; |
6 |
import * as app from "tns-core-modules/application"; |
7 |
import { getString, setString } from "tns-core-modules/application-settings"; |
8 |
import * as appversion from "nativescript-appversion"; |
9 |
import { getFile, getImage, getJSON, request, HttpResponse } from "tns-core-modules/http"; |
10 |
import * as dialogs from "tns-core-modules/ui/dialogs"; |
11 |
|
12 |
@Component({ |
13 |
selector: "ns-app", |
14 |
templateUrl: "app.component.html" |
15 |
}) |
16 |
export class AppComponent implements OnInit { |
17 |
private _activatedUrl: string; |
18 |
private _sideDrawerTransition: DrawerTransitionBase; |
19 |
public pseudo: string; |
20 |
public email: string; |
21 |
public appVersion: string; |
22 |
|
23 |
constructor(private router: Router, private routerExtensions: RouterExtensions) { |
24 |
// Use the component constructor to inject services. |
25 |
appversion.getVersionName().then((v: string) => { |
26 |
this.appVersion = v; |
27 |
setString("appVersion", v); |
28 |
}); |
29 |
} |
30 |
|
31 |
ngOnInit(): void { |
32 |
this.pseudo = getString("pseudo", ""); |
33 |
this.email = getString("email", ""); |
34 |
getJSON("https://clicalbum.abuledu.net/api.php").then((r: any) => { |
35 |
console.log("Verification de la version : ", r.APPversion); |
36 |
|
37 |
console.log("Version locale : ", this.appVersion); |
38 |
setString("serverJSON", JSON.stringify(r)); |
39 |
if (this.versionCompare(r.APPversion, this.appVersion) > 0) { |
40 |
console.log("On propose la mise à jour ..."); |
41 |
//On affiche la page de mise à jour |
42 |
this._activatedUrl = "/upgrade"; |
43 |
this.routerExtensions.navigate(["/upgrade"]); |
44 |
return; |
45 |
} |
46 |
|
47 |
if (this.email == "" || this.pseudo == "") { |
48 |
// alert("L'application n'est pas configurée ...") |
49 |
this._activatedUrl = "/settings"; |
50 |
this.routerExtensions.navigate(["/settings"]); |
51 |
} |
52 |
else { |
53 |
this._activatedUrl = "/home"; |
54 |
} |
55 |
|
56 |
}, (e) => { |
57 |
console.log("getJSON Error", e); |
58 |
dialogs.alert({ |
59 |
title: "Erreur de communication", |
60 |
message: "Le serveur principal de ClicAlbum est injoignable, veuillez re-essayer dans quelques minutes et si ça ne marche toujours pas envoyez nous un petit message à contact@abuledu.org merci :-)", |
61 |
okButtonText: "Ok" |
62 |
}).then(() => { |
63 |
}); |
64 |
}); |
65 |
|
66 |
this._sideDrawerTransition = new SlideInOnTopTransition(); |
67 |
|
68 |
this.router.events |
69 |
.pipe(filter((event: any) => event instanceof NavigationEnd)) |
70 |
.subscribe((event: NavigationEnd) => this._activatedUrl = event.urlAfterRedirects); |
71 |
} |
72 |
|
73 |
get sideDrawerTransition(): DrawerTransitionBase { |
74 |
return this._sideDrawerTransition; |
75 |
} |
76 |
|
77 |
isComponentSelected(url: string): boolean { |
78 |
return this._activatedUrl === url; |
79 |
} |
80 |
|
81 |
onNavItemTap(navItemRoute: string): void { |
82 |
this.routerExtensions.navigate([navItemRoute], { |
83 |
transition: { |
84 |
name: "fade" |
85 |
} |
86 |
}); |
87 |
|
88 |
const sideDrawer = <RadSideDrawer>app.getRootView(); |
89 |
sideDrawer.closeDrawer(); |
90 |
} |
91 |
|
92 |
/** |
93 |
* Compares two software version numbers (e.g. "1.7.1" or "1.2b"). |
94 |
* |
95 |
* This function was born in http://stackoverflow.com/a/6832721. |
96 |
* |
97 |
* @param {string} v1 The first version to be compared. |
98 |
* @param {string} v2 The second version to be compared. |
99 |
* @param {object} [options] Optional flags that affect comparison behavior: |
100 |
* lexicographical: (true/[false]) compares each part of the version strings lexicographically instead of naturally; |
101 |
* this allows suffixes such as "b" or "dev" but will cause "1.10" to be considered smaller than "1.2". |
102 |
* zeroExtend: ([true]/false) changes the result if one version string has less parts than the other. In |
103 |
* this case the shorter string will be padded with "zero" parts instead of being considered smaller. |
104 |
* |
105 |
* @returns {number|NaN} |
106 |
* - 0 if the versions are equal |
107 |
* - a negative integer iff v1 < v2 |
108 |
* - a positive integer iff v1 > v2 |
109 |
* - NaN if either version string is in the wrong format |
110 |
*/ |
111 |
versionCompare(v1, v2) { |
112 |
var lexicographical = false, |
113 |
zeroExtend = true, |
114 |
v1parts = (v1 || "0").split('.'), |
115 |
v2parts = (v2 || "0").split('.'); |
116 |
|
117 |
function isValidPart(x) { |
118 |
return (lexicographical ? /^\d+[A-Za-zαß]*$/ : /^\d+[A-Za-zαß]?$/).test(x); |
119 |
} |
120 |
|
121 |
if (!v1parts.every(isValidPart) || !v2parts.every(isValidPart)) { |
122 |
return NaN; |
123 |
} |
124 |
|
125 |
if (zeroExtend) { |
126 |
while (v1parts.length < v2parts.length) v1parts.push("0"); |
127 |
while (v2parts.length < v1parts.length) v2parts.push("0"); |
128 |
} |
129 |
|
130 |
if (!lexicographical) { |
131 |
v1parts = v1parts.map(function (x) { |
132 |
var match = (/[A-Za-zαß]/).exec(x); |
133 |
return Number(match ? x.replace(match[0], "." + x.charCodeAt(match.index)) : x); |
134 |
}); |
135 |
v2parts = v2parts.map(function (x) { |
136 |
var match = (/[A-Za-zαß]/).exec(x); |
137 |
return Number(match ? x.replace(match[0], "." + x.charCodeAt(match.index)) : x); |
138 |
}); |
139 |
} |
140 |
|
141 |
for (var i = 0; i < v1parts.length; ++i) { |
142 |
if (v2parts.length == i) { |
143 |
return 1; |
144 |
} |
145 |
|
146 |
if (v1parts[i] == v2parts[i]) { |
147 |
continue; |
148 |
} |
149 |
else if (v1parts[i] > v2parts[i]) { |
150 |
return 1; |
151 |
} |
152 |
else { |
153 |
return -1; |
154 |
} |
155 |
} |
156 |
|
157 |
if (v1parts.length != v2parts.length) { |
158 |
return -1; |
159 |
} |
160 |
|
161 |
return 0; |
162 |
} |
163 |
} |