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)"
 | 
			
		||||
        [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>
 | 
			
		||||
            <p class="item-heading">{{site.fullname}}</p>
 | 
			
		||||
 | 
			
		||||
@ -14,7 +14,7 @@
 | 
			
		||||
 | 
			
		||||
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 { CoreEventObserver, CoreEvents } from '@singletons/events';
 | 
			
		||||
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 { CoreUserHelper } from '@features/user/services/user-helper';
 | 
			
		||||
import { CoreUrlUtils } from '@services/utils/url';
 | 
			
		||||
import { CoreSiteInfo } from '@classes/site';
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Component to display a "user avatar".
 | 
			
		||||
@ -35,7 +36,8 @@ import { CoreUrlUtils } from '@services/utils/url';
 | 
			
		||||
})
 | 
			
		||||
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.
 | 
			
		||||
    @Input() profileUrl?: string;
 | 
			
		||||
    @Input() linkProfile = true; // Avoid linking to the profile if wanted.
 | 
			
		||||
@ -71,8 +73,23 @@ export class CoreUserAvatarComponent implements OnInit, OnChanges, OnDestroy {
 | 
			
		||||
    /**
 | 
			
		||||
     * @inheritdoc
 | 
			
		||||
     */
 | 
			
		||||
    ngOnInit(): void {
 | 
			
		||||
        this.siteId = this.siteId || CoreSites.getCurrentSiteId();
 | 
			
		||||
    async ngOnInit(): Promise<void> {
 | 
			
		||||
        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();
 | 
			
		||||
    }
 | 
			
		||||
@ -189,4 +206,6 @@ export type CoreUserWithAvatar = CoreUserBasicData & {
 | 
			
		||||
    isonline?: boolean;
 | 
			
		||||
    courseid?: 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-item>
 | 
			
		||||
            <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>
 | 
			
		||||
                    <p class="item-heading">{{site.fullname}}</p>
 | 
			
		||||
 | 
			
		||||
@ -45,7 +45,7 @@
 | 
			
		||||
 | 
			
		||||
                <div class="core-login-user">
 | 
			
		||||
                    <!-- 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>
 | 
			
		||||
                    <p *ngIf="siteInfo?.fullname" class="core-login-fullname">
 | 
			
		||||
                        <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"
 | 
			
		||||
    [attr.aria-label]="'core.user.useraccount' | translate">
 | 
			
		||||
</core-user-avatar>
 | 
			
		||||
 | 
			
		||||
@ -44,7 +44,7 @@
 | 
			
		||||
 | 
			
		||||
            <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">
 | 
			
		||||
                <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>
 | 
			
		||||
                    <p class="item-heading">{{ siteInfo.fullname }}</p>
 | 
			
		||||
                </ion-label>
 | 
			
		||||
 | 
			
		||||
@ -1253,6 +1253,7 @@ export class CoreSitesProvider {
 | 
			
		||||
 | 
			
		||||
                const basicInfo: CoreSiteBasicInfo = {
 | 
			
		||||
                    id: site.id,
 | 
			
		||||
                    userId: siteInfo?.userid,
 | 
			
		||||
                    siteUrl: site.siteUrl,
 | 
			
		||||
                    siteUrlWithoutProtocol: site.siteUrl.replace(/^https?:\/\//, '').toLowerCase(),
 | 
			
		||||
                    fullname: siteInfo?.fullname,
 | 
			
		||||
@ -2148,6 +2149,7 @@ export type CoreSiteUserTokenResponse = {
 | 
			
		||||
 */
 | 
			
		||||
export type CoreSiteBasicInfo = {
 | 
			
		||||
    id: string; // Site ID.
 | 
			
		||||
    userId?: number; // User ID.
 | 
			
		||||
    siteUrl: string; // Site URL.
 | 
			
		||||
    siteUrlWithoutProtocol: string; // Site URL without protocol.
 | 
			
		||||
    fullname?: string; // User's full name.
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user