|
|
@ -18,17 +18,14 @@ import { Injectable } from '@angular/core'; |
|
|
import { HttpClient } from '@angular/common/http'; |
|
|
import { HttpClient } from '@angular/common/http'; |
|
|
import { PageLink } from '@shared/models/page/page-link'; |
|
|
import { PageLink } from '@shared/models/page/page-link'; |
|
|
import { defaultHttpOptionsFromConfig, RequestConfig } from './http-utils'; |
|
|
import { defaultHttpOptionsFromConfig, RequestConfig } from './http-utils'; |
|
|
import { forkJoin, Observable, of, throwError } from 'rxjs'; |
|
|
import { Observable, throwError } from 'rxjs'; |
|
|
import { PageData } from '@shared/models/page/page-data'; |
|
|
import { PageData } from '@shared/models/page/page-data'; |
|
|
import { DeviceProfile, DeviceProfileInfo, DeviceTransportType } from '@shared/models/device.models'; |
|
|
import { DeviceProfile, DeviceProfileInfo, DeviceTransportType } from '@shared/models/device.models'; |
|
|
import { isDefinedAndNotNull, isEmptyStr } from '@core/utils'; |
|
|
import { isDefinedAndNotNull, isEmptyStr } from '@core/utils'; |
|
|
import { ObjectLwM2M, ServerSecurityConfig } from '@home/components/profile/device/lwm2m/lwm2m-profile-config.models'; |
|
|
import { ObjectLwM2M, ServerSecurityConfig } from '@home/components/profile/device/lwm2m/lwm2m-profile-config.models'; |
|
|
import { SortOrder } from '@shared/models/page/sort-order'; |
|
|
import { SortOrder } from '@shared/models/page/sort-order'; |
|
|
import { OtaPackageService } from '@core/http/ota-package.service'; |
|
|
import { OtaPackageService } from '@core/http/ota-package.service'; |
|
|
import { OtaUpdateType } from '@shared/models/ota-package.models'; |
|
|
|
|
|
import { mergeMap } from 'rxjs/operators'; |
|
|
import { mergeMap } from 'rxjs/operators'; |
|
|
import { DialogService } from '@core/services/dialog.service'; |
|
|
|
|
|
import { TranslateService } from '@ngx-translate/core'; |
|
|
|
|
|
|
|
|
|
|
|
@Injectable({ |
|
|
@Injectable({ |
|
|
providedIn: 'root' |
|
|
providedIn: 'root' |
|
|
@ -37,9 +34,7 @@ export class DeviceProfileService { |
|
|
|
|
|
|
|
|
constructor( |
|
|
constructor( |
|
|
private http: HttpClient, |
|
|
private http: HttpClient, |
|
|
private otaPackageService: OtaPackageService, |
|
|
private otaPackageService: OtaPackageService |
|
|
private dialogService: DialogService, |
|
|
|
|
|
private translate: TranslateService |
|
|
|
|
|
) { |
|
|
) { |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@ -80,30 +75,9 @@ export class DeviceProfileService { |
|
|
|
|
|
|
|
|
public saveDeviceProfileAndConfirmOtaChange(originDeviceProfile: DeviceProfile, deviceProfile: DeviceProfile, |
|
|
public saveDeviceProfileAndConfirmOtaChange(originDeviceProfile: DeviceProfile, deviceProfile: DeviceProfile, |
|
|
config?: RequestConfig): Observable<DeviceProfile> { |
|
|
config?: RequestConfig): Observable<DeviceProfile> { |
|
|
const tasks: Observable<number>[] = []; |
|
|
return this.otaPackageService.confirmDialogUpdatePackage(deviceProfile, originDeviceProfile).pipe( |
|
|
if (originDeviceProfile?.id?.id && originDeviceProfile.firmwareId?.id !== deviceProfile.firmwareId?.id) { |
|
|
mergeMap((update) => update ? this.saveDeviceProfile(deviceProfile, config) : throwError('Canceled saving device profiles')) |
|
|
tasks.push(this.otaPackageService.countUpdateDeviceAfterChangePackage(OtaUpdateType.FIRMWARE, deviceProfile.id.id)); |
|
|
); |
|
|
} else { |
|
|
|
|
|
tasks.push(of(0)); |
|
|
|
|
|
} |
|
|
|
|
|
if (originDeviceProfile?.id?.id && originDeviceProfile.softwareId?.id !== deviceProfile.softwareId?.id) { |
|
|
|
|
|
tasks.push(this.otaPackageService.countUpdateDeviceAfterChangePackage(OtaUpdateType.SOFTWARE, deviceProfile.id.id)); |
|
|
|
|
|
} else { |
|
|
|
|
|
tasks.push(of(0)); |
|
|
|
|
|
} |
|
|
|
|
|
return forkJoin(tasks).pipe( |
|
|
|
|
|
mergeMap(([deviceFirmwareUpdate, deviceSoftwareUpdate]) => { |
|
|
|
|
|
let text = ''; |
|
|
|
|
|
if (deviceFirmwareUpdate > 0) { |
|
|
|
|
|
text += this.translate.instant('ota-update.change-firmware', {count: deviceFirmwareUpdate}); |
|
|
|
|
|
} |
|
|
|
|
|
if (deviceSoftwareUpdate > 0) { |
|
|
|
|
|
text += text.length ? ' ' : ''; |
|
|
|
|
|
text += this.translate.instant('ota-update.change-software', {count: deviceSoftwareUpdate}); |
|
|
|
|
|
} |
|
|
|
|
|
return text !== '' ? this.dialogService.confirm('', text, null, this.translate.instant('common.proceed')) : of(true); |
|
|
|
|
|
}), |
|
|
|
|
|
mergeMap((update) => update ? this.saveDeviceProfile(deviceProfile, config) : throwError('Canceled saving device profiles'))); |
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
public saveDeviceProfile(deviceProfile: DeviceProfile, config?: RequestConfig): Observable<DeviceProfile> { |
|
|
public saveDeviceProfile(deviceProfile: DeviceProfile, config?: RequestConfig): Observable<DeviceProfile> { |
|
|
|