diff --git a/src/app/_layout/footer/footer.component.html b/src/app/_layout/footer/footer.component.html
index c8218e8..ae7c7dc 100644
--- a/src/app/_layout/footer/footer.component.html
+++ b/src/app/_layout/footer/footer.component.html
@@ -13,7 +13,7 @@
href="https://allbestsistem.com/"
target="_blank"
style="background-color: #000000 !important;"
- >Smart Building Management Systems (V@2024-07-8.03)
+ >Smart Building Management Systems (V@2024-07-9.01)
diff --git a/src/app/content/hemat-app/service/login.service.ts b/src/app/content/hemat-app/service/login.service.ts
index 6e3d42a..1e01c0a 100644
--- a/src/app/content/hemat-app/service/login.service.ts
+++ b/src/app/content/hemat-app/service/login.service.ts
@@ -40,4 +40,15 @@ export class LoginService {
return this.http.post(`${url}`, data, { headers });
}
+ updateUserProfile(data: any): Observable {
+ const body = { refresh_token: data };
+ const endpoint = `/users`;
+ const url = `${BASE_URL}${endpoint}/refresh-token`;
+ const headers = new HttpHeaders({
+ "x-api-key": "j2yaYvPSQcsEEmHh3NEobfiXyyXmmnHT",
+ });
+
+ return this.http.post(`${url}`, body, { headers });
+ }
+
}
diff --git a/src/app/content/hemat-app/user-profile/profil-information/profil-information.component.ts b/src/app/content/hemat-app/user-profile/profil-information/profil-information.component.ts
index 3a7abfc..e1eb5de 100644
--- a/src/app/content/hemat-app/user-profile/profil-information/profil-information.component.ts
+++ b/src/app/content/hemat-app/user-profile/profil-information/profil-information.component.ts
@@ -2,7 +2,18 @@ import { Component, ViewChild } from "@angular/core";
import { FormBuilder, FormGroup, NgForm, Validators } from "@angular/forms";
import { LoginService } from "../../service/login.service";
import { ToastrService } from "ngx-toastr";
-
+import { jwtDecode } from "jwt-decode";
+interface CustomJwtPayload {
+ exp: number;
+ scope: string;
+ iat: number;
+ preferred_username: string;
+ name: string;
+ email: string;
+ family_name: string;
+ given_name: string;
+ sub: string;
+}
@Component({
selector: "app-profil-information",
templateUrl: "./profil-information.component.html",
@@ -15,9 +26,10 @@ export class ProfilInformationComponent {
activeTab: string = "profile-info2";
submitted = false;
storedData: any;
+ currentUser: any;
disableButton: boolean = false;
- url: any = 'https://www.w3schools.com/howto/img_avatar.png';
+ url: any = "https://www.w3schools.com/howto/img_avatar.png";
fileSelected: any = null;
constructor(
@@ -28,12 +40,13 @@ export class ProfilInformationComponent {
ngOnInit(): void {
this.storedData = JSON.parse(localStorage.getItem("account_info"));
+ this.currentUser = JSON.parse(localStorage.getItem("currentUser"));
this.profilInfo = this.formBuilder.group({
firstName: ["", Validators.required],
lastName: ["", Validators.required],
email: ["", [Validators.required, Validators.email]],
phone: ["", [Validators.required, Validators.pattern(/^[0-9]{10,15}$/)]],
- image: [null]
+ image: [null],
});
this.dataProfil(this.storedData.sub);
this.profilInfo.valueChanges.subscribe(() => {
@@ -42,15 +55,17 @@ export class ProfilInformationComponent {
}
dataProfil(userId) {
- this.authService.getDataProfil(userId).subscribe(data => {
+ this.authService.getDataProfil(userId).subscribe((data) => {
this.profilInfo.patchValue({
firstName: data.data.firstname,
lastName: data.data.lastname,
email: data.data.email,
phone: data.data.phone,
- image: [null]
+ image: [null],
});
- if (data.data.image_path !== "https://kapi.absys.ninja/hemat/image/null") {
+ if (
+ data.data.image_path !== "https://kapi.absys.ninja/hemat/image/null"
+ ) {
this.url = data.data.image_path;
}
});
@@ -60,13 +75,13 @@ export class ProfilInformationComponent {
if (event.target.files && event.target.files[0]) {
const file = event.target.files[0];
this.fileSelected = file;
- if (!file.type.startsWith('image')) {
+ if (!file.type.startsWith("image")) {
this.toastr.error("Warning", "Please select an image file.", {
timeOut: 5000,
closeButton: true,
});
this.profilInfo.patchValue({
- image: null
+ image: null,
});
return;
}
@@ -119,11 +134,24 @@ export class ProfilInformationComponent {
this.authService.updateProfile(formData, this.storedData.sub).subscribe(
(response) => {
console.log("Profile updated successfully:", response);
- this.toastr.success("success", "Profile updated successfully.", {
- timeOut: 5000,
- closeButton: true,
- });
- // Handle success response
+ this.authService
+ .updateUserProfile(this.currentUser.refresh_token)
+ .subscribe((resp) => {
+ const decodedToken = jwtDecode(resp.access_token);
+ localStorage.setItem("account_info", JSON.stringify(decodedToken));
+ const userProfile = {
+ access_token: resp.access_token,
+ refresh_token: resp.refresh_token,
+ displayName: decodedToken.name,
+ buildingId: 4,
+ };
+ localStorage.setItem("currentUser", JSON.stringify(userProfile));
+ window.location.reload();
+ this.toastr.success("success", "Profile updated successfully.", {
+ timeOut: 5000,
+ closeButton: true,
+ });
+ });
},
(error) => {
console.error("Profile update failed:", error);
diff --git a/src/app/login/login.component.html b/src/app/login/login.component.html
index 9ecc955..a351d69 100644
--- a/src/app/login/login.component.html
+++ b/src/app/login/login.component.html
@@ -138,7 +138,7 @@
- (v@2024.07.8.03)
+ (v@2024.07.9.01)