From a0c6c7165853ca2701578746a1f07c9c01bbf14b Mon Sep 17 00:00:00 2001 From: Kifungo A <45813955+adkif@users.noreply.github.com> Date: Thu, 17 Oct 2024 17:33:46 +0200 Subject: [PATCH] refactor: getLastTimeSlotImage and localImage methods with additional checks and logic --- .../time-tracker/time-tracker.component.ts | 52 +++++++++++++------ 1 file changed, 35 insertions(+), 17 deletions(-) diff --git a/packages/desktop-ui-lib/src/lib/time-tracker/time-tracker.component.ts b/packages/desktop-ui-lib/src/lib/time-tracker/time-tracker.component.ts index e809a63b3af..489e66cf768 100644 --- a/packages/desktop-ui-lib/src/lib/time-tracker/time-tracker.component.ts +++ b/packages/desktop-ui-lib/src/lib/time-tracker/time-tracker.component.ts @@ -1702,7 +1702,9 @@ export class TimeTrackerComponent implements OnInit, AfterViewInit { } public async getLastTimeSlotImage(arg): Promise { - if (this._isOffline) return; + if (this._isOffline || this.lastTimeSlot?.id === arg?.timeSlotId) { + return; + } try { const res = await this.timeTrackerService.getTimeSlot(arg); const { screenshots = [] } = res || {}; @@ -1728,24 +1730,40 @@ export class TimeTrackerComponent implements OnInit, AfterViewInit { } } - public async localImage(img, originalBase64Image?: string): Promise { + public async localImage( + img: { thumbUrl?: string; recordedAt?: string; fullUrl?: string } | string, + originalBase64Image?: string + ): Promise { try { - const convScreenshot = - img && img.thumbUrl ? await this._imageViewerService.getBase64ImageFromUrl(img.thumbUrl) : img; - localStorage.setItem( - 'lastScreenCapture', - JSON.stringify({ - thumbUrl: convScreenshot, - textTime: moment().fromNow(), - createdAt: Date.now(), - recordedAt: Date.now(), - ...(originalBase64Image && { - fullUrl: originalBase64Image - }) - }) - ); + // Determine the fullUrl, prioritizing originalBase64Image if provided + const fullUrl = originalBase64Image || (typeof img === 'object' ? img.fullUrl : undefined); + + // Fetch the thumbnail or use the image string directly if img is a string + const thumbUrl = + typeof img === 'object' && img.thumbUrl + ? await this._imageViewerService.getBase64ImageFromUrl(img.thumbUrl) + : typeof img === 'string' + ? img + : undefined; + + // Set timestamp, preferring recordedAt if available + const timestamp = typeof img === 'object' && img.recordedAt ? new Date(img.recordedAt) : new Date(); + + if (fullUrl && thumbUrl) { + const screenCaptureData = { + fullUrl, + thumbUrl, + textTime: moment(timestamp).fromNow(), + createdAt: timestamp, + recordedAt: timestamp + }; + + localStorage.setItem('lastScreenCapture', JSON.stringify(screenCaptureData)); + } else { + this._loggerService.warn('WARN: Invalid image data: missing fullUrl or thumbUrl.'); + } } catch (error) { - console.log('ERROR', error); + this._loggerService.error('ERROR: Storing image:', error.message); } }