src/components/users-page/users-page.tsx
tag | users-page |
Properties |
|
Methods |
componentDidLoad |
componentDidLoad()
|
Defined in src/components/users-page/users-page.tsx:18
|
Returns :
void
|
getUsers |
getUsers()
|
Defined in src/components/users-page/users-page.tsx:71
|
Returns :
any
|
paginate | ||||
paginate(last)
|
||||
Defined in src/components/users-page/users-page.tsx:64
|
||||
Parameters :
Returns :
any
|
render |
render()
|
Defined in src/components/users-page/users-page.tsx:77
|
Returns :
{}
|
setUpUsers |
setUpUsers()
|
Defined in src/components/users-page/users-page.tsx:24
|
Returns :
void
|
el |
el:
|
Type : Element
|
Decorators :
@Element()
|
Defined in src/components/users-page/users-page.tsx:13
|
iScroll |
iScroll:
|
Type : HTMLIonInfiniteScrollElement
|
Defined in src/components/users-page/users-page.tsx:15
|
Private isPrerender |
isPrerender:
|
Type : boolean
|
Decorators :
@Prop({context: 'isPrerender'})
|
Defined in src/components/users-page/users-page.tsx:11
|
last |
last:
|
Type : number
|
Defined in src/components/users-page/users-page.tsx:16
|
users |
users:
|
Type : any[]
|
Decorators :
@State()
|
Defined in src/components/users-page/users-page.tsx:10
|
import { Component, Element, State, Prop } from '@stencil/core';
declare var firebase: any;
@Component({
tag: 'users-page'
})
export class UsersPage {
@State() users: any[];
@Prop({ context: 'isPrerender' }) private isPrerender: boolean;
@Element() el: Element;
iScroll: HTMLIonInfiniteScrollElement;
last: number;
componentDidLoad() {
if (!this.isPrerender) {
this.setUpUsers();
}
}
setUpUsers() {
const tempUsers = [];
const currentUser = firebase.auth().currentUser;
this.getUsers().then((querySnapshot) => {
querySnapshot.forEach((doc) => {
if (doc.data().email !== currentUser.email) {
tempUsers.push(doc.data());
}
})
this.users = tempUsers;
this.last = querySnapshot.docs[querySnapshot.docs.length - 1];
// now lets init infiniteScrolling
this.iScroll = this.el.querySelector('#infinite-scroll');
this.iScroll.addEventListener('ionInfinite', async () => {
const emptyUsers = [];
const snapshot = await this.paginate(this.last);
this.last = snapshot.docs[snapshot.docs.length - 1];
snapshot.forEach((doc) => {
if (doc.data().email !== currentUser.email) {
emptyUsers.push(doc.data());
}
});
this.users = this.users.concat(emptyUsers);
console.log(this.users);
this.iScroll.complete();
})
});
}
paginate(last) {
return firebase.firestore().collection('users')
.startAfter(last)
.limit(12)
.get();
}
getUsers() {
return firebase.firestore().collection('users')
.limit(12)
.get();
}
render() {
return [
<profile-header>
<ion-back-button defaultHref='/home' />
</profile-header>,
<ion-content>
<users-list users={this.users}></users-list>
<ion-infinite-scroll id="infinite-scroll">
<ion-infinite-scroll-content
loadingSpinner="bubbles"
loadingText="Loading more data...">
</ion-infinite-scroll-content>
</ion-infinite-scroll>
</ion-content>
];
}
}