diff --git a/src/script/audio/AudioRepository.ts b/src/script/audio/AudioRepository.ts index 07d02e19960..884584581c7 100644 --- a/src/script/audio/AudioRepository.ts +++ b/src/script/audio/AudioRepository.ts @@ -92,14 +92,9 @@ export class AudioRepository { return; } Object.values(this.audioElements).forEach(element => { - element - .setSinkId(currentOutputDevice) - .then(() => { - this.logger.info(`Updated audio element output to: ${currentOutputDevice}`); - }) - .catch(error => { - this.logger.warn(error); - }); + element.setSinkId?.(currentOutputDevice).catch(error => { + this.logger.warn(error); + }); }); } diff --git a/src/script/client/ClientRepository.ts b/src/script/client/ClientRepository.ts index a530f1923a7..548b0fca0a4 100644 --- a/src/script/client/ClientRepository.ts +++ b/src/script/client/ClientRepository.ts @@ -85,7 +85,6 @@ export class ClientRepository { init(selfUser: User): void { this.selfUser(selfUser); - this.logger.info(`Initialized repository with user ID '${this.selfUser().id}'`); } //############################################################################## @@ -155,13 +154,12 @@ export class ClientRepository { }) .then(clientRecord => { if (typeof clientRecord === 'string') { - this.logger.info('No local client found in database'); + this.logger.warn('No local client found in database'); throw new ClientError(ClientError.TYPE.NO_VALID_CLIENT, ClientError.MESSAGE.NO_VALID_CLIENT); } const currentClient = ClientMapper.mapClient(clientRecord, true, clientRecord.domain); this.clientState.currentClient(currentClient); - this.logger.info(`Loaded local client '${currentClient.id}'`, this.clientState.currentClient()); return this.clientState.currentClient(); }); } @@ -485,7 +483,7 @@ export class ClientRepository { } // Locally unknown client new on backend - this.logger.info(`New client '${clientId}' of user '${userId}' will be stored locally`); + this.logger.debug(`New client '${clientId}' of user '${userId}' will be stored locally`); if (matchQualifiedIds(this.selfUser(), userId)) { this.onClientAdd({client: clientPayload as RegisteredClient}); } @@ -551,7 +549,7 @@ export class ClientRepository { * @param eventJson JSON data of 'user.client-add' event */ private onClientAdd(eventJson: Pick): void { - this.logger.info('Client of self user added', eventJson); + this.logger.debug('Client of self user added', eventJson); amplify.publish(WebAppEvents.CLIENT.ADD, this.selfUser().qualifiedId, eventJson.client, true); } diff --git a/src/script/main/app.ts b/src/script/main/app.ts index 517bf88fcf7..6e3a7765fd5 100644 --- a/src/script/main/app.ts +++ b/src/script/main/app.ts @@ -439,14 +439,10 @@ export class App { telemetry.timeStep(AppInitTimingsStep.APP_PRE_LOADED); userRepository['userState'].self().devices(clientEntities); - this.logger.info('App pre-loading completed'); this._handleUrlParams(); await conversationRepository.updateConversationsOnAppInit(); await conversationRepository.conversationLabelRepository.loadLabels(); - telemetry.timeStep(AppInitTimingsStep.APP_LOADED); - - telemetry.report(); amplify.publish(WebAppEvents.LIFECYCLE.LOADED); telemetry.timeStep(AppInitTimingsStep.UPDATED_CONVERSATIONS); @@ -457,12 +453,15 @@ export class App { audioRepository.init(true); conversationRepository.cleanupConversations(); callingRepository.setReady(); - this.logger.info('App fully loaded'); + telemetry.timeStep(AppInitTimingsStep.APP_LOADED); + + const loadTime = telemetry.report(); + this.logger.info(`App loaded within ${loadTime}s for user "${selfUser.id}" and client "${clientEntity().id}"`); return selfUser; } catch (error) { if (error instanceof BaseError) { - this._appInitFailure(error); + await this._appInitFailure(error); return undefined; } throw error; @@ -472,11 +471,11 @@ export class App { /** * Initialize ServiceWorker if supported. */ - private initServiceWorker(): void { + private async initServiceWorker() { if (navigator.serviceWorker) { - navigator.serviceWorker + await navigator.serviceWorker .register(`/sw.js?${Environment.version(false)}`) - .then(({scope}) => this.logger.info(`ServiceWorker registration successful with scope: ${scope}`)); + .then(({scope}) => this.logger.debug(`ServiceWorker registration successful with scope: ${scope}`)); } } @@ -673,7 +672,7 @@ export class App { const keepConversationInput = signOutReason === SIGN_OUT_REASON.SESSION_EXPIRED; const deletedKeys = CacheRepository.clearLocalStorage(keepConversationInput, keysToKeep); - this.logger.info(`Deleted "${deletedKeys.length}" keys from localStorage.`, deletedKeys); + this.logger.debug(`Deleted "${deletedKeys.length}" keys from localStorage.`, deletedKeys); } if (clearData) { diff --git a/src/script/permission/PermissionRepository.ts b/src/script/permission/PermissionRepository.ts index 1bab086e9a3..4d5e6bc6ca6 100644 --- a/src/script/permission/PermissionRepository.ts +++ b/src/script/permission/PermissionRepository.ts @@ -64,11 +64,11 @@ export class PermissionRepository { return navigator.permissions .query({name: permissionType as any}) .then(permissionStatus => { - this.logger.log(`Permission state for '${permissionType}' is '${permissionStatus.state}'`); + this.logger.debug(`Permission state for '${permissionType}' is '${permissionStatus.state}'`); setPermissionState(permissionStatus.state as PermissionStatusState); permissionStatus.onchange = () => { - this.logger.log(`Permission state for '${permissionType}' changed to '${permissionStatus.state}'`); + this.logger.debug(`Permission state for '${permissionType}' changed to '${permissionStatus.state}'`); setPermissionState(permissionStatus.state as PermissionStatusState); }; diff --git a/src/script/team/TeamMapper.ts b/src/script/team/TeamMapper.ts index 2df77e718b4..c656f76305e 100644 --- a/src/script/team/TeamMapper.ts +++ b/src/script/team/TeamMapper.ts @@ -21,8 +21,6 @@ import type {MemberData, TeamData} from '@wireapp/api-client/lib/team/'; import type {TeamUpdateData} from '@wireapp/api-client/lib/team/data/'; import type {PermissionsData} from '@wireapp/api-client/lib/team/member/PermissionsData'; -import {Logger, getLogger} from 'Util/Logger'; - import {TeamEntity} from './TeamEntity'; import {TeamMemberEntity} from './TeamMemberEntity'; @@ -30,12 +28,6 @@ import type {User} from '../entity/User'; import {roleFromTeamPermissions} from '../user/UserPermission'; export class TeamMapper { - private readonly logger: Logger; - - constructor() { - this.logger = getLogger('TeamMapper'); - } - mapTeamFromObject(data: TeamData, teamEntity?: TeamEntity): TeamEntity { return this.updateTeamFromObject(data, teamEntity); } @@ -81,10 +73,6 @@ export class TeamMapper { mapRole(userEntity: User, permissions?: PermissionsData): void { if (permissions) { const teamRole = roleFromTeamPermissions(permissions); - this.logger.info( - `Identified user '${userEntity.id}' of team '${userEntity.teamId}' as '${teamRole}'`, - permissions, - ); userEntity.teamRole(teamRole); } } diff --git a/src/script/telemetry/app_init/AppInitTelemetry.ts b/src/script/telemetry/app_init/AppInitTelemetry.ts index 20008be29b7..f694669e91a 100644 --- a/src/script/telemetry/app_init/AppInitTelemetry.ts +++ b/src/script/telemetry/app_init/AppInitTelemetry.ts @@ -17,20 +17,16 @@ * */ -import {Logger, getLogger} from 'Util/Logger'; - import {AppInitStatistics, AppStatistics} from './AppInitStatistics'; import type {AppInitStatisticsValue} from './AppInitStatisticsValue'; import {AppInitTimings} from './AppInitTimings'; import type {AppInitTimingsStep} from './AppInitTimingsStep'; export class AppInitTelemetry { - private readonly logger: Logger; private readonly timings: AppInitTimings; private readonly statistics: AppInitStatistics; constructor() { - this.logger = getLogger('AppInitTelemetry'); this.timings = new AppInitTimings(); this.statistics = new AppInitStatistics(); } @@ -51,12 +47,11 @@ export class AppInitTelemetry { this.timings.log(); } - report(): void { - const segmentations = this.getStatistics(); - segmentations.loading_time = this.timings.getAppLoad(); - this.logger.info(`App version '${segmentations.app_version}' initialized within ${segmentations.loading_time}s`); + report(): number { this.logStatistics(); this.logTimings(); + + return this.timings.getAppLoad(); } timeStep(step: AppInitTimingsStep): void { diff --git a/src/script/telemetry/app_init/AppInitTimings.ts b/src/script/telemetry/app_init/AppInitTimings.ts index 249a1b9db15..02cc317ec6f 100644 --- a/src/script/telemetry/app_init/AppInitTimings.ts +++ b/src/script/telemetry/app_init/AppInitTimings.ts @@ -51,7 +51,7 @@ export class AppInitTimings { const appLoaded = this.timings[AppInitTimingsStep.APP_LOADED]; const appLoadedInSeconds = appLoaded / TIME_IN_MILLIS.SECOND; - return (Math.floor(appLoadedInSeconds / AppInitTimings.CONFIG.BUCKET_SIZE) + 1) * AppInitTimings.CONFIG.BUCKET_SIZE; + return Math.floor(appLoadedInSeconds); } log() {