90 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			90 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
| <ion-header>
 | |
|     <ion-toolbar>
 | |
|         <ion-buttons slot="start">
 | |
|             <ion-back-button [attr.aria-label]="'core.back' | translate"></ion-back-button>
 | |
|         </ion-buttons>
 | |
|         <ion-title>{{ 'addon.messages.contacts' | translate }}</ion-title>
 | |
|         <ion-buttons slot="end">
 | |
|             <ion-button (click)="gotoSearch()" [attr.aria-label]="'addon.messages.search' | translate">
 | |
|                 <ion-icon name="fas-search" slot="icon-only"></ion-icon>
 | |
|             </ion-button>
 | |
|             <!-- Add an empty context menu so discussion page can add items in split view, otherwise the menu
 | |
|                 disappears in some cases. -->
 | |
|             <core-context-menu></core-context-menu>
 | |
|         </ion-buttons>
 | |
|     </ion-toolbar>
 | |
| </ion-header>
 | |
| <ion-content>
 | |
|     <core-split-view>
 | |
|         <core-tabs [hideUntil]="true">
 | |
| 
 | |
|             <!-- Contacts tab. -->
 | |
|             <core-tab [title]="'addon.messages.contacts' | translate" (ionSelect)="selectTab('confirmed')">
 | |
|                 <ng-template>
 | |
|                     <ion-refresher slot="fixed" [disabled]="!confirmedLoaded" (ionRefresh)="refreshData($event.target)">
 | |
|                         <ion-refresher-content pullingText="{{ 'core.pulltorefresh' | translate }}"></ion-refresher-content>
 | |
|                     </ion-refresher>
 | |
|                     <core-loading [hideUntil]="confirmedLoaded" class="core-loading-center">
 | |
|                         <ion-list  class="ion-no-margin">
 | |
|                             <ion-item class="ion-text-wrap addon-messages-conversation-item"
 | |
|                                 *ngFor="let contact of confirmedContacts" [title]="contact.fullname" detail
 | |
|                                 (click)="selectUser(contact.id)" [class.core-selected-item]="contact.id == selectedUserId">
 | |
|                                 <core-user-avatar slot="start" [user]="contact"
 | |
|                                     [checkOnline]="contact.showonlinestatus" [linkProfile]="false">
 | |
|                                 </core-user-avatar>
 | |
|                                 <ion-label>
 | |
|                                     <h2>
 | |
|                                         <core-format-text [text]="contact.fullname" contextLevel="system" [contextInstanceId]="0">
 | |
|                                         </core-format-text>
 | |
|                                         <ion-icon *ngIf="contact.isblocked" name="fas-user-slash" slot="end">
 | |
|                                         </ion-icon>
 | |
|                                     </h2>
 | |
|                                 </ion-label>
 | |
|                             </ion-item>
 | |
|                         </ion-list>
 | |
| 
 | |
|                         <core-empty-box *ngIf="!confirmedContacts.length" icon="far-address-book"
 | |
|                             [message]="'addon.messages.nocontactsgetstarted' | translate">
 | |
|                         </core-empty-box>
 | |
| 
 | |
|                         <core-infinite-loading [enabled]="confirmedCanLoadMore" (action)="loadMore($event)"
 | |
|                             [error]="confirmedLoadMoreError" position="bottom">
 | |
|                         </core-infinite-loading>
 | |
|                     </core-loading>
 | |
|                 </ng-template>
 | |
|             </core-tab>
 | |
| 
 | |
|             <!-- Requests tab. -->
 | |
|             <core-tab [title]="'addon.messages.requests' | translate" (ionSelect)="selectTab('requests')" [badge]="requestsBadge">
 | |
|                 <ng-template>
 | |
|                     <ion-refresher slot="fixed" [disabled]="!requestsLoaded" (ionRefresh)="refreshData($event.target)">
 | |
|                         <ion-refresher-content pullingText="{{ 'core.pulltorefresh' | translate }}"></ion-refresher-content>
 | |
|                     </ion-refresher>
 | |
|                     <core-loading [hideUntil]="requestsLoaded" class="core-loading-center">
 | |
|                         <ion-list  class="ion-no-margin">
 | |
|                             <ion-item class="ion-text-wrap addon-messages-conversation-item" *ngFor="let request of requests"
 | |
|                                 [title]="request.fullname" (click)="selectUser(request.id)"
 | |
|                                 [class.core-selected-item]="request.id == selectedUserId" detail>
 | |
|                                 <core-user-avatar slot="start" [user]="request" [linkProfile]="false"></core-user-avatar>
 | |
|                                 <ion-label>
 | |
|                                     <core-format-text [text]="request.fullname" contextLevel="system" [contextInstanceId]="0">
 | |
|                                     </core-format-text>
 | |
|                                     <p *ngIf="!request.iscontact">
 | |
|                                         {{ 'addon.messages.wouldliketocontactyou' | translate }}
 | |
|                                     </p>
 | |
|                                 </ion-label>
 | |
|                             </ion-item>
 | |
|                         </ion-list>
 | |
|                         <core-empty-box *ngIf="!requests.length" icon="far-address-book"
 | |
|                             [message]="'addon.messages.nocontactrequests' | translate">
 | |
|                         </core-empty-box>
 | |
|                         <core-infinite-loading [enabled]="requestsCanLoadMore" (action)="loadMore($event)"
 | |
|                             [error]="requestsLoadMoreError" position="bottom">
 | |
|                         </core-infinite-loading>
 | |
|                     </core-loading>
 | |
|                 </ng-template>
 | |
|             </core-tab>
 | |
|         </core-tabs>
 | |
|     </core-split-view>
 | |
| </ion-content>
 |