include mentions, bookmarks, and logout button

This commit is contained in:
Morgan McMillian 2017-06-19 22:05:39 -07:00
parent 4bbff3cf8a
commit cd65ed97cd
3 changed files with 50 additions and 11 deletions

View file

@ -26,8 +26,11 @@ export class MyApp {
// used for an example of ngFor and navigation // used for an example of ngFor and navigation
this.pages = [ this.pages = [
{ title: 'Personal Stream', component: StreamPage, params: {stream: 'personal'} }, { title: 'Timeline', component: StreamPage, params: {stream: 'personal'} },
{ title: 'Global Stream', component: StreamPage, params: {stream: 'global'} }, { title: 'Global', component: StreamPage, params: {stream: 'global'} },
{ title: 'Mentions', component: StreamPage, params: {stream: 'mentions'} },
{ title: 'Bookmarks', component: StreamPage, params: {stream: 'bookmarks'} },
{ title: 'Logout', component: {}, params: {}},
]; ];
} }
@ -61,7 +64,12 @@ export class MyApp {
openPage(page) { openPage(page) {
// Reset the content nav to have just this page // Reset the content nav to have just this page
// we wouldn't want the back button to show in this scenario // we wouldn't want the back button to show in this scenario
this.nav.setRoot(page.component, page.params); if (page.title === 'Logout') {
this.storage.remove('token');
this.nav.setRoot(LoginPage);
} else {
this.nav.setRoot(page.component, page.params);
}
} }
} }

View file

@ -79,11 +79,6 @@
<div *ngIf="post.counts.replies > 0">{{ post.counts.replies }}</div> <div *ngIf="post.counts.replies > 0">{{ post.counts.replies }}</div>
</button> </button>
</ion-col> </ion-col>
<!-- <ion-col>
<button ion-button icon-left clear small block>
<ion-icon name="more"></ion-icon>
</button>
</ion-col> -->
</ion-row> </ion-row>
</ion-card> </ion-card>
</ion-list> </ion-list>

View file

@ -21,6 +21,7 @@ export class StreamPage {
since_id: string; since_id: string;
before_id: string; before_id: string;
fetcher: any; fetcher: any;
fcaller: any;
myUsername: string; myUsername: string;
constructor(public navCtrl: NavController, public navParams: NavParams, public modalCtrl: ModalController) { constructor(public navCtrl: NavController, public navParams: NavParams, public modalCtrl: ModalController) {
@ -32,10 +33,20 @@ export class StreamPage {
this.fetchPosts(); this.fetchPosts();
break; break;
case 'personal': case 'personal':
this.title = 'Home'; this.title = 'Timeline';
this.fetcher = pnut.personal; this.fetcher = pnut.personal;
this.fetchPosts(); this.fetchPosts();
break; break;
case 'mentions':
this.title = 'Mentions';
this.fetcher = pnut.mentions;
this.fetchMyPosts();
break;
case 'bookmarks':
this.title = 'Bookmarks';
this.fetcher = pnut.bookmarks;
this.fetchMyPosts();
break;
} }
pnut.user('me').then(res => { pnut.user('me').then(res => {
this.myUsername = res.data.username; this.myUsername = res.data.username;
@ -45,7 +56,13 @@ export class StreamPage {
} }
fetchOlderPosts(infiniteScroll) { fetchOlderPosts(infiniteScroll) {
this.fetcher({include_raw: 1, before_id: this.before_id, count: 40}).then(res => { let params = {include_raw: 1, before_id: this.before_id, count: 40};
if (this.title === 'Mentions') {
this.fcaller = this.fetcher('me', params);
} else {
this.fcaller = this.fetcher(params);
}
this.fcaller.then(res => {
if (res.data.length > 0) { if (res.data.length > 0) {
this.posts.push.apply(this.posts, res.data); this.posts.push.apply(this.posts, res.data);
this.before_id = res.meta.min_id; this.before_id = res.meta.min_id;
@ -59,7 +76,13 @@ export class StreamPage {
} }
fetchNewerPosts(refresher) { fetchNewerPosts(refresher) {
this.fetcher({include_raw: 1, since_id: this.since_id, count: 40}).then(res => { let params = {include_raw: 1, since_id: this.since_id, count: 40};
if (this.title === 'Mentions') {
this.fcaller = this.fetcher('me', params);
} else {
this.fcaller = this.fetcher(params);
}
this.fcaller.then(res => {
if (res.data.length > 0) { if (res.data.length > 0) {
Array.prototype.unshift.apply(this.posts, res.data); Array.prototype.unshift.apply(this.posts, res.data);
this.since_id = res.meta.max_id; this.since_id = res.meta.max_id;
@ -93,6 +116,19 @@ export class StreamPage {
}); });
} }
fetchMyPosts() {
console.log('-- fetching mentions --');
this.fetcher('me', {include_raw: 1, count: 40}).then(res => {
this.posts = res.data;
this.since_id = res.meta.max_id;
this.before_id = res.meta.min_id;
console.log('since_id: ' + this.since_id);
console.log('before_id: ' + this.before_id);
}).catch(err => {
console.log(err);
});
}
bookmark(postid, bookmarked) { bookmark(postid, bookmarked) {
if (bookmarked) { if (bookmarked) {
pnut.deleteBookmark(postid).then(res => { pnut.deleteBookmark(postid).then(res => {