forked from EVOgeek/Vmeda.Online
		
	MOBILE-3947 user: Fix user types on user-avatar
This commit is contained in:
		
							parent
							
								
									e40a4f13bb
								
							
						
					
					
						commit
						4ebec029ba
					
				| @ -40,7 +40,7 @@ | |||||||
|     <ion-item [attr.button]="isSiteClickable(isCurrentSite) ? true : null" (click)="siteClicked($event, site, isCurrentSite)" |     <ion-item [attr.button]="isSiteClickable(isCurrentSite) ? true : null" (click)="siteClicked($event, site, isCurrentSite)" | ||||||
|         [attr.detail]="isSiteClickable(isCurrentSite) ? 'true' : 'false'" [class.item-current]="isCurrentSite"> |         [attr.detail]="isSiteClickable(isCurrentSite) ? 'true' : 'false'" [class.item-current]="isCurrentSite"> | ||||||
| 
 | 
 | ||||||
|         <core-user-avatar [user]="site" slot="start" [linkProfile]="false" [siteId]="site.id"></core-user-avatar> |         <core-user-avatar [site]="site" slot="start" [linkProfile]="false" [siteId]="site.id"></core-user-avatar> | ||||||
| 
 | 
 | ||||||
|         <ion-label> |         <ion-label> | ||||||
|             <p class="item-heading">{{site.fullname}}</p> |             <p class="item-heading">{{site.fullname}}</p> | ||||||
|  | |||||||
| @ -14,7 +14,7 @@ | |||||||
| 
 | 
 | ||||||
| import { Component, Input, OnInit, OnChanges, OnDestroy, SimpleChange } from '@angular/core'; | import { Component, Input, OnInit, OnChanges, OnDestroy, SimpleChange } from '@angular/core'; | ||||||
| 
 | 
 | ||||||
| import { CoreSites } from '@services/sites'; | import { CoreSiteBasicInfo, CoreSites } from '@services/sites'; | ||||||
| import { CoreUtils } from '@services/utils/utils'; | import { CoreUtils } from '@services/utils/utils'; | ||||||
| import { CoreEventObserver, CoreEvents } from '@singletons/events'; | import { CoreEventObserver, CoreEvents } from '@singletons/events'; | ||||||
| import { USER_PROFILE_PICTURE_UPDATED, CoreUserBasicData } from '@features/user/services/user'; | import { USER_PROFILE_PICTURE_UPDATED, CoreUserBasicData } from '@features/user/services/user'; | ||||||
| @ -22,6 +22,7 @@ import { CoreNavigator } from '@services/navigator'; | |||||||
| import { CoreNetwork } from '@services/network'; | import { CoreNetwork } from '@services/network'; | ||||||
| import { CoreUserHelper } from '@features/user/services/user-helper'; | import { CoreUserHelper } from '@features/user/services/user-helper'; | ||||||
| import { CoreUrlUtils } from '@services/utils/url'; | import { CoreUrlUtils } from '@services/utils/url'; | ||||||
|  | import { CoreSiteInfo } from '@classes/site'; | ||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
|  * Component to display a "user avatar". |  * Component to display a "user avatar". | ||||||
| @ -35,7 +36,8 @@ import { CoreUrlUtils } from '@services/utils/url'; | |||||||
| }) | }) | ||||||
| export class CoreUserAvatarComponent implements OnInit, OnChanges, OnDestroy { | export class CoreUserAvatarComponent implements OnInit, OnChanges, OnDestroy { | ||||||
| 
 | 
 | ||||||
|     @Input() user?: CoreUserWithAvatar; |     @Input() user?: CoreUserWithAvatar; // @todo Fix the accepted type and restrict it a bit.
 | ||||||
|  |     @Input() site?: CoreSiteBasicInfo | CoreSiteInfo; // Site info contains user info.
 | ||||||
|     // The following params will override the ones in user object.
 |     // The following params will override the ones in user object.
 | ||||||
|     @Input() profileUrl?: string; |     @Input() profileUrl?: string; | ||||||
|     @Input() linkProfile = true; // Avoid linking to the profile if wanted.
 |     @Input() linkProfile = true; // Avoid linking to the profile if wanted.
 | ||||||
| @ -71,8 +73,23 @@ export class CoreUserAvatarComponent implements OnInit, OnChanges, OnDestroy { | |||||||
|     /** |     /** | ||||||
|      * @inheritdoc |      * @inheritdoc | ||||||
|      */ |      */ | ||||||
|     ngOnInit(): void { |     async ngOnInit(): Promise<void> { | ||||||
|         this.siteId = this.siteId || CoreSites.getCurrentSiteId(); |         this.siteId = this.siteId ?? (this.site && 'id' in this.site | ||||||
|  |             ? this.site.id | ||||||
|  |             : CoreSites.getCurrentSiteId()); | ||||||
|  | 
 | ||||||
|  |         if (this.site && !this.user) { | ||||||
|  |             this.user = { | ||||||
|  |                 id: ('userid' in this.site | ||||||
|  |                     ? this.site.userid | ||||||
|  |                     : this.site.userId) | ||||||
|  |                     ?? (await CoreSites.getSite(this.siteId)).getUserId(), | ||||||
|  |                 fullname: this.site.fullname ?? '', | ||||||
|  |                 firstname: this.site.firstname ?? '', | ||||||
|  |                 lastname: this.site.lastname ?? '', | ||||||
|  |                 userpictureurl: this.site.userpictureurl, | ||||||
|  |             }; | ||||||
|  |         } | ||||||
| 
 | 
 | ||||||
|         this.setFields(); |         this.setFields(); | ||||||
|     } |     } | ||||||
| @ -189,4 +206,6 @@ export type CoreUserWithAvatar = CoreUserBasicData & { | |||||||
|     isonline?: boolean; |     isonline?: boolean; | ||||||
|     courseid?: number; |     courseid?: number; | ||||||
|     lastaccess?: number; |     lastaccess?: number; | ||||||
|  |     firstname?: string; // The first name(s) of the user.
 | ||||||
|  |     lastname?: string; // The family name of the user.
 | ||||||
| }; | }; | ||||||
|  | |||||||
| @ -20,7 +20,7 @@ | |||||||
|                 </ion-label> |                 </ion-label> | ||||||
|             </ion-item> |             </ion-item> | ||||||
|             <ion-item *ngFor="let site of sites" (click)="siteClicked(site.id)" [detail]="false" button> |             <ion-item *ngFor="let site of sites" (click)="siteClicked(site.id)" [detail]="false" button> | ||||||
|                 <core-user-avatar [user]="site" slot="start" [linkProfile]="false"></core-user-avatar> |                 <core-user-avatar [site]="site" slot="start" [linkProfile]="false"></core-user-avatar> | ||||||
| 
 | 
 | ||||||
|                 <ion-label> |                 <ion-label> | ||||||
|                     <p class="item-heading">{{site.fullname}}</p> |                     <p class="item-heading">{{site.fullname}}</p> | ||||||
|  | |||||||
| @ -45,7 +45,7 @@ | |||||||
| 
 | 
 | ||||||
|                 <div class="core-login-user"> |                 <div class="core-login-user"> | ||||||
|                     <!-- Show user avatar. --> |                     <!-- Show user avatar. --> | ||||||
|                     <core-user-avatar class="large-avatar" *ngIf="showUserAvatar" [user]="siteInfo" [linkProfile]="false" |                     <core-user-avatar class="large-avatar" *ngIf="showUserAvatar" [site]="siteInfo" [linkProfile]="false" | ||||||
|                         [siteId]="siteId"></core-user-avatar> |                         [siteId]="siteId"></core-user-avatar> | ||||||
|                     <p *ngIf="siteInfo?.fullname" class="core-login-fullname"> |                     <p *ngIf="siteInfo?.fullname" class="core-login-fullname"> | ||||||
|                         <core-format-text [text]="siteInfo?.fullname" [filter]="false"></core-format-text> |                         <core-format-text [text]="siteInfo?.fullname" [filter]="false"></core-format-text> | ||||||
|  | |||||||
| @ -1,4 +1,4 @@ | |||||||
| <core-user-avatar *ngIf="(alwaysShow || isMainScreen) && siteInfo" [user]="siteInfo" class="core-bar-button-image clickable" | <core-user-avatar *ngIf="(alwaysShow || isMainScreen) && siteInfo" [site]="siteInfo" class="core-bar-button-image clickable" | ||||||
|     [linkProfile]="false" (ariaButtonClick)="openUserMenu($event)" [userTour]="userTour" |     [linkProfile]="false" (ariaButtonClick)="openUserMenu($event)" [userTour]="userTour" | ||||||
|     [attr.aria-label]="'core.user.useraccount' | translate"> |     [attr.aria-label]="'core.user.useraccount' | translate"> | ||||||
| </core-user-avatar> | </core-user-avatar> | ||||||
|  | |||||||
| @ -44,7 +44,7 @@ | |||||||
| 
 | 
 | ||||||
|             <ion-item button class="core-usermenu-handler ion-text-wrap" *ngIf="siteInfo" lines="full" (click)="openUserProfile($event)" |             <ion-item button class="core-usermenu-handler ion-text-wrap" *ngIf="siteInfo" lines="full" (click)="openUserProfile($event)" | ||||||
|                 [detail]="true" [attr.aria-label]="'core.user.profile' | translate"> |                 [detail]="true" [attr.aria-label]="'core.user.profile' | translate"> | ||||||
|                 <core-user-avatar [user]="siteInfo" [userId]="siteInfo.userid" [linkProfile]="false" slot="start"></core-user-avatar> |                 <core-user-avatar [site]="siteInfo" [userId]="siteInfo.userid" [linkProfile]="false" slot="start"></core-user-avatar> | ||||||
|                 <ion-label> |                 <ion-label> | ||||||
|                     <p class="item-heading">{{ siteInfo.fullname }}</p> |                     <p class="item-heading">{{ siteInfo.fullname }}</p> | ||||||
|                 </ion-label> |                 </ion-label> | ||||||
|  | |||||||
| @ -1253,6 +1253,7 @@ export class CoreSitesProvider { | |||||||
| 
 | 
 | ||||||
|                 const basicInfo: CoreSiteBasicInfo = { |                 const basicInfo: CoreSiteBasicInfo = { | ||||||
|                     id: site.id, |                     id: site.id, | ||||||
|  |                     userId: siteInfo?.userid, | ||||||
|                     siteUrl: site.siteUrl, |                     siteUrl: site.siteUrl, | ||||||
|                     siteUrlWithoutProtocol: site.siteUrl.replace(/^https?:\/\//, '').toLowerCase(), |                     siteUrlWithoutProtocol: site.siteUrl.replace(/^https?:\/\//, '').toLowerCase(), | ||||||
|                     fullname: siteInfo?.fullname, |                     fullname: siteInfo?.fullname, | ||||||
| @ -2148,6 +2149,7 @@ export type CoreSiteUserTokenResponse = { | |||||||
|  */ |  */ | ||||||
| export type CoreSiteBasicInfo = { | export type CoreSiteBasicInfo = { | ||||||
|     id: string; // Site ID.
 |     id: string; // Site ID.
 | ||||||
|  |     userId?: number; // User ID.
 | ||||||
|     siteUrl: string; // Site URL.
 |     siteUrl: string; // Site URL.
 | ||||||
|     siteUrlWithoutProtocol: string; // Site URL without protocol.
 |     siteUrlWithoutProtocol: string; // Site URL without protocol.
 | ||||||
|     fullname?: string; // User's full name.
 |     fullname?: string; // User's full name.
 | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user