From 301c8f94ec4cebdc66f8c747bad2127178b01505 Mon Sep 17 00:00:00 2001 From: Neil MacDougall Date: Sat, 29 Feb 2020 10:03:22 +0000 Subject: [PATCH 1/7] Refinements to the user profile and avatar --- .../packages/core/sass/_all-theme.scss | 2 + .../packages/core/src/core/core.module.ts | 11 +- .../user-profile.service.ts | 24 +- .../edit-profile-info.component.spec.ts | 2 +- .../edit-profile-info.component.ts | 2 +- .../profile-info/profile-info.component.html | 66 +++-- .../profile-info/profile-info.component.scss | 8 +- .../profile-info.component.spec.ts | 2 +- .../profile-info/profile-info.component.ts | 45 +-- .../user-profile/user-profile.module.ts | 2 +- .../components/confirmation-dialog.service.ts | 8 + .../page-header/page-header.component.html | 5 +- .../page-header/page-header.component.scss | 25 +- .../page-header.component.theme.scss | 26 +- .../page-header/page-header.component.ts | 30 +- .../src/shared/components/user-avatar/md5.ts | 276 ++++++++++++++++++ .../user-avatar/user-avatar.component.html | 5 + .../user-avatar/user-avatar.component.scss | 43 +++ .../user-avatar/user-avatar.component.spec.ts | 25 ++ .../user-avatar.component.theme.scss | 10 + .../user-avatar/user-avatar.component.ts | 56 ++++ .../user-profile-banner.component.html | 2 +- .../user-profile-banner.component.ts | 32 +- .../packages/core/src/shared/shared.module.ts | 2 +- .../store/src/actions/dashboard-actions.ts | 5 + .../store/src/reducers/dashboard-reducer.ts | 9 + .../store/testing/src/store-test-helper.ts | 1 + 27 files changed, 601 insertions(+), 123 deletions(-) rename src/frontend/packages/core/src/{features/user-profile => core}/user-profile.service.ts (83%) create mode 100644 src/frontend/packages/core/src/shared/components/user-avatar/md5.ts create mode 100644 src/frontend/packages/core/src/shared/components/user-avatar/user-avatar.component.html create mode 100644 src/frontend/packages/core/src/shared/components/user-avatar/user-avatar.component.scss create mode 100644 src/frontend/packages/core/src/shared/components/user-avatar/user-avatar.component.spec.ts create mode 100644 src/frontend/packages/core/src/shared/components/user-avatar/user-avatar.component.theme.scss create mode 100644 src/frontend/packages/core/src/shared/components/user-avatar/user-avatar.component.ts diff --git a/src/frontend/packages/core/sass/_all-theme.scss b/src/frontend/packages/core/sass/_all-theme.scss index 53ac5f27ea..3daaa41180 100644 --- a/src/frontend/packages/core/sass/_all-theme.scss +++ b/src/frontend/packages/core/sass/_all-theme.scss @@ -45,6 +45,7 @@ @import './components/mat-snack-bar.theme'; @import './components/ngx-charts-gauge.theme'; @import '../src/shared/components/sidepanel-preview/sidepanel-preview.component.theme'; +@import '../src/shared/components/user-avatar/user-avatar.component.theme'; @import './components/text-status.theme'; @import './components/hyperlinks.theme'; @import './mat-themes'; @@ -157,6 +158,7 @@ $side-nav-light-active: #484848; @include error-page-theme($theme, $app-theme); @include code-block-theme($theme, $app-theme); @include copy-to-clipboard-theme($theme, $app-theme); + @include app-user-avatar-theme($theme, $app-theme); } @function app-generate-nav-theme($theme, $nav-theme: null) { diff --git a/src/frontend/packages/core/src/core/core.module.ts b/src/frontend/packages/core/src/core/core.module.ts index 3f73ebdb6f..0c5547ad70 100644 --- a/src/frontend/packages/core/src/core/core.module.ts +++ b/src/frontend/packages/core/src/core/core.module.ts @@ -2,6 +2,7 @@ import { PortalModule } from '@angular/cdk/portal'; import { NgModule } from '@angular/core'; import { FormsModule, ReactiveFormsModule } from '@angular/forms'; import { RouterModule } from '@angular/router'; +import { Title } from '@angular/platform-browser'; import { MomentModule } from 'ngx-moment'; import { NoContentMessageComponent } from '../shared/components/no-content-message/no-content-message.component'; @@ -31,7 +32,8 @@ import { UserService } from './user.service'; import { UtilsService } from './utils.service'; import { WindowRef } from './window-ref/window-ref.service'; import { APP_TITLE, appTitleFactory } from './core.types'; -import { Title } from '@angular/platform-browser'; +import { UserProfileService } from './user-profile.service'; +import { UserAvatarComponent } from './../shared/components/user-avatar/user-avatar.component'; @NgModule({ imports: [ @@ -58,10 +60,11 @@ import { Title } from '@angular/platform-browser'; PortalModule, EntityFavoriteStarComponent, RecentEntitiesComponent, + UserAvatarComponent, DisableRouterLinkDirective, StatefulIconComponent, NoContentMessageComponent, - DisableRouterLinkDirective + DisableRouterLinkDirective, ], providers: [ AuthGuardService, @@ -74,6 +77,7 @@ import { Title } from '@angular/platform-browser'; EndpointsService, UserService, EntityServiceFactory, + UserProfileService, CurrentUserPermissionsService, { provide: APP_TITLE, @@ -96,7 +100,8 @@ import { Title } from '@angular/platform-browser'; EntityFavoriteStarComponent, RecentEntitiesComponent, DisableRouterLinkDirective, - NoContentMessageComponent + NoContentMessageComponent, + UserAvatarComponent, ], entryComponents: [ LogOutDialogComponent diff --git a/src/frontend/packages/core/src/features/user-profile/user-profile.service.ts b/src/frontend/packages/core/src/core/user-profile.service.ts similarity index 83% rename from src/frontend/packages/core/src/features/user-profile/user-profile.service.ts rename to src/frontend/packages/core/src/core/user-profile.service.ts index bd521ff78a..7e7bacc82d 100644 --- a/src/frontend/packages/core/src/features/user-profile/user-profile.service.ts +++ b/src/frontend/packages/core/src/core/user-profile.service.ts @@ -7,25 +7,24 @@ import { FetchUserProfileAction, UpdateUserPasswordAction, UpdateUserProfileAction, -} from '../../../../store/src/actions/user-profile.actions'; -import { AppState } from '../../../../store/src/app-state'; -import { UserProfileEffect, userProfilePasswordUpdatingKey } from '../../../../store/src/effects/user-profile.effects'; -import { userProfileSchemaKey } from '../../../../store/src/helpers/entity-factory'; +} from '../../../store/src/actions/user-profile.actions'; +import { AppState } from '../../../store/src/app-state'; +import { UserProfileEffect, userProfilePasswordUpdatingKey } from '../../../store/src/effects/user-profile.effects'; import { ActionState, getDefaultActionState, rootUpdatingKey, -} from '../../../../store/src/reducers/api-request-reducer/types'; -import { AuthState } from '../../../../store/src/reducers/auth.reducer'; -import { selectRequestInfo, selectUpdateInfo } from '../../../../store/src/selectors/api.selectors'; +} from '../../../store/src/reducers/api-request-reducer/types'; +import { AuthState } from '../../../store/src/reducers/auth.reducer'; +import { selectRequestInfo, selectUpdateInfo } from '../../../store/src/selectors/api.selectors'; import { UserProfileInfo, UserProfileInfoEmail, UserProfileInfoUpdates, -} from '../../../../store/src/types/user-profile.types'; -import { userProfileEntitySchema } from '../../base-entity-schemas'; -import { entityCatalog } from '../../../../store/src/entity-catalog/entity-catalog.service'; -import { EntityMonitor } from '../../../../store/src/monitors/entity-monitor'; +} from '../../../store/src/types/user-profile.types'; +import { userProfileEntitySchema } from '../base-entity-schemas'; +import { entityCatalog } from '../../../store/src/entity-catalog/entity-catalog.service'; +import { EntityMonitor } from '../../../store/src/monitors/entity-monitor'; @Injectable() @@ -50,7 +49,8 @@ export class UserProfileService { ); this.isFetching$ = this.entityMonitor.isFetchingEntity$; - this.isError$ = this.store.select(selectRequestInfo(userProfileSchemaKey, UserProfileEffect.guid)).pipe( + const stratosUserConfig = entityCatalog.getEntity(userProfileEntitySchema.endpointType, userProfileEntitySchema.entityType); + this.isError$ = this.store.select(selectRequestInfo(stratosUserConfig.entityKey, UserProfileEffect.guid)).pipe( filter(requestInfo => !!requestInfo && !requestInfo.fetching), map(requestInfo => requestInfo.error) ); diff --git a/src/frontend/packages/core/src/features/user-profile/edit-profile-info/edit-profile-info.component.spec.ts b/src/frontend/packages/core/src/features/user-profile/edit-profile-info/edit-profile-info.component.spec.ts index 16b2fd5145..1b22dc0366 100644 --- a/src/frontend/packages/core/src/features/user-profile/edit-profile-info/edit-profile-info.component.spec.ts +++ b/src/frontend/packages/core/src/features/user-profile/edit-profile-info/edit-profile-info.component.spec.ts @@ -8,7 +8,7 @@ import { CoreTestingModule } from '../../../../test-framework/core-test.modules' import { createBasicStoreModule } from '@stratos/store/testing'; import { CoreModule } from '../../../core/core.module'; import { SharedModule } from '../../../shared/shared.module'; -import { UserProfileService } from '../user-profile.service'; +import { UserProfileService } from '../../../core/user-profile.service'; import { EditProfileInfoComponent } from './edit-profile-info.component'; describe('EditProfileInfoComponent', () => { diff --git a/src/frontend/packages/core/src/features/user-profile/edit-profile-info/edit-profile-info.component.ts b/src/frontend/packages/core/src/features/user-profile/edit-profile-info/edit-profile-info.component.ts index 29f096b078..bfbb522036 100644 --- a/src/frontend/packages/core/src/features/user-profile/edit-profile-info/edit-profile-info.component.ts +++ b/src/frontend/packages/core/src/features/user-profile/edit-profile-info/edit-profile-info.component.ts @@ -8,7 +8,7 @@ import { UserProfileInfo, UserProfileInfoUpdates } from '../../../../../store/sr import { CurrentUserPermissions } from '../../../core/current-user-permissions.config'; import { CurrentUserPermissionsService } from '../../../core/current-user-permissions.service'; import { StepOnNextFunction } from '../../../shared/components/stepper/step/step.component'; -import { UserProfileService } from '../user-profile.service'; +import { UserProfileService } from '../../../core/user-profile.service'; @Component({ diff --git a/src/frontend/packages/core/src/features/user-profile/profile-info/profile-info.component.html b/src/frontend/packages/core/src/features/user-profile/profile-info/profile-info.component.html index 7e807d5687..3ceba4ad8e 100644 --- a/src/frontend/packages/core/src/features/user-profile/profile-info/profile-info.component.html +++ b/src/frontend/packages/core/src/features/user-profile/profile-info/profile-info.component.html @@ -1,19 +1,17 @@

User Profile

-
- - +