finish post component split from stream and thread pages
This commit is contained in:
parent
7bb6faf97a
commit
bc995eb707
9 changed files with 129 additions and 252 deletions
|
@ -1,5 +1,5 @@
|
||||||
<?xml version='1.0' encoding='utf-8'?>
|
<?xml version='1.0' encoding='utf-8'?>
|
||||||
<manifest android:hardwareAccelerated="true" android:versionCode="603" android:versionName="0.6.3" package="com.monkeystew.goober_m" xmlns:android="http://schemas.android.com/apk/res/android">
|
<manifest android:hardwareAccelerated="true" android:versionCode="604" android:versionName="0.6.4" package="com.monkeystew.goober_m" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
<supports-screens android:anyDensity="true" android:largeScreens="true" android:normalScreens="true" android:resizeable="true" android:smallScreens="true" android:xlargeScreens="true" />
|
<supports-screens android:anyDensity="true" android:largeScreens="true" android:normalScreens="true" android:resizeable="true" android:smallScreens="true" android:xlargeScreens="true" />
|
||||||
<uses-permission android:name="android.permission.INTERNET" />
|
<uses-permission android:name="android.permission.INTERNET" />
|
||||||
<application android:hardwareAccelerated="true" android:icon="@mipmap/icon" android:label="@string/app_name" android:supportsRtl="true">
|
<application android:hardwareAccelerated="true" android:icon="@mipmap/icon" android:label="@string/app_name" android:supportsRtl="true">
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<?xml version='1.0' encoding='utf-8'?>
|
<?xml version='1.0' encoding='utf-8'?>
|
||||||
<widget id="com.monkeystew.goober_m" version="0.6.3" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
|
<widget id="com.monkeystew.goober_m" version="0.6.4" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
|
||||||
<feature name="FileChooser">
|
<feature name="FileChooser">
|
||||||
<param name="android-package" value="com.megster.cordova.FileChooser" />
|
<param name="android-package" value="com.megster.cordova.FileChooser" />
|
||||||
</feature>
|
</feature>
|
||||||
|
|
|
@ -11,6 +11,7 @@ import { ThreadPage } from '../pages/thread/thread';
|
||||||
import { SettingsPage } from '../pages/settings/settings';
|
import { SettingsPage } from '../pages/settings/settings';
|
||||||
import { AboutPage } from '../pages/about/about';
|
import { AboutPage } from '../pages/about/about';
|
||||||
import { ProfilePage } from '../pages/profile/profile';
|
import { ProfilePage } from '../pages/profile/profile';
|
||||||
|
import { PostComponent } from '../components/post/post';
|
||||||
|
|
||||||
import { SplashScreen } from '@ionic-native/splash-screen';
|
import { SplashScreen } from '@ionic-native/splash-screen';
|
||||||
import { IonicStorageModule } from '@ionic/storage';
|
import { IonicStorageModule } from '@ionic/storage';
|
||||||
|
@ -33,7 +34,8 @@ import { ParserPipe } from '../pipes/parser/parser';
|
||||||
TimeagoPipe,
|
TimeagoPipe,
|
||||||
NewPostModal,
|
NewPostModal,
|
||||||
PostMenu,
|
PostMenu,
|
||||||
ParserPipe
|
ParserPipe,
|
||||||
|
PostComponent
|
||||||
],
|
],
|
||||||
imports: [
|
imports: [
|
||||||
BrowserModule,
|
BrowserModule,
|
||||||
|
|
|
@ -53,12 +53,12 @@
|
||||||
|
|
||||||
<ion-row>
|
<ion-row>
|
||||||
<ion-col>
|
<ion-col>
|
||||||
<button ion-button icon-left clear small block (click)="showReplyPost(post)">
|
<button ion-button icon-left clear small block (click)="showReplyPost(post,'reply')">
|
||||||
<ion-icon name="ios-undo"></ion-icon>
|
<ion-icon name="ios-undo"></ion-icon>
|
||||||
</button>
|
</button>
|
||||||
</ion-col>
|
</ion-col>
|
||||||
<ion-col>
|
<ion-col>
|
||||||
<button ion-button icon-left clear small block (click)="showQuotedPost(post)">
|
<button ion-button icon-left clear small block (click)="showReplyPost(post,'quote')">
|
||||||
<ion-icon name="quote"></ion-icon>
|
<ion-icon name="quote"></ion-icon>
|
||||||
</button>
|
</button>
|
||||||
</ion-col>
|
</ion-col>
|
||||||
|
|
|
@ -1,4 +1,12 @@
|
||||||
import { Component } from '@angular/core';
|
import { Component, Input } from '@angular/core';
|
||||||
|
import { NavController, NavParams, ModalController, ToastController, PopoverController } from 'ionic-angular';
|
||||||
|
import { ProfilePage } from '../../pages/profile/profile';
|
||||||
|
import { ThreadPage } from '../../pages/thread/thread';
|
||||||
|
import { LoginPage } from '../../pages/login/login';
|
||||||
|
import { NewPostModal } from '../../pages/stream/new-post';
|
||||||
|
import { PostMenu } from '../../pages/stream/post-menu';
|
||||||
|
|
||||||
|
import * as pnut from 'pnut-butter';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Generated class for the PostComponent component.
|
* Generated class for the PostComponent component.
|
||||||
|
@ -12,11 +20,101 @@ import { Component } from '@angular/core';
|
||||||
})
|
})
|
||||||
export class PostComponent {
|
export class PostComponent {
|
||||||
|
|
||||||
text: string;
|
@Input() public post: Object;
|
||||||
|
@Input() public hideImg: boolean;
|
||||||
|
@Input() public ccOnReply: boolean;
|
||||||
|
@Input() public myUsername: string;
|
||||||
|
|
||||||
constructor() {
|
constructor(public navCtrl: NavController, public navParams: NavParams,
|
||||||
console.log('Hello PostComponent Component');
|
public modalCtrl: ModalController, public toastCtrl: ToastController,
|
||||||
this.text = 'Hello World';
|
public popoverCtrl: PopoverController) {}
|
||||||
|
|
||||||
|
fetchThread(threadid) {
|
||||||
|
pnut.thread(threadid, {include_deleted: 0, include_raw: 1, count: 140}).then(res => {
|
||||||
|
if (res.meta.code === 401) {
|
||||||
|
// this.storage.clear();
|
||||||
|
this.navCtrl.setRoot(LoginPage);
|
||||||
|
} else {
|
||||||
|
this.navCtrl.push(ThreadPage, {posts: res.data, me: this.myUsername});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
showImage(url) {
|
||||||
|
window.open(url, '_system');
|
||||||
|
}
|
||||||
|
|
||||||
|
showProfile(user) {
|
||||||
|
this.navCtrl.push(ProfilePage, {user: user});
|
||||||
|
}
|
||||||
|
|
||||||
|
showReplyPost(postData, repType) {
|
||||||
|
let newPostModal = this.modalCtrl.create(NewPostModal, {
|
||||||
|
type: repType,
|
||||||
|
post: postData,
|
||||||
|
me: this.myUsername,
|
||||||
|
cc: this.ccOnReply});
|
||||||
|
newPostModal.present();
|
||||||
|
}
|
||||||
|
|
||||||
|
repost(postid, reposted) {
|
||||||
|
if (reposted) {
|
||||||
|
pnut.deleteRepost(postid).then(res => {
|
||||||
|
this.updatePost(res.data.id);
|
||||||
|
this.presentToast("Repost updated.");
|
||||||
|
}).catch(err => {
|
||||||
|
console.log(err);
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
pnut.repost(postid).then(res => {
|
||||||
|
this.updatePost(res.data.id);
|
||||||
|
this.presentToast("Repost updated.");
|
||||||
|
}).catch(err => {
|
||||||
|
console.log(err);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bookmark(postid, bookmarked) {
|
||||||
|
if (bookmarked) {
|
||||||
|
pnut.deleteBookmark(postid).then(res => {
|
||||||
|
this.updatePost(res.data.id);
|
||||||
|
this.presentToast("Bookmark updated.");
|
||||||
|
}).catch(err => {
|
||||||
|
console.log(err);
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
pnut.bookmark(postid).then(res => {
|
||||||
|
this.updatePost(res.data.id);
|
||||||
|
this.presentToast("Bookmark updated.");
|
||||||
|
}).catch(err => {
|
||||||
|
console.log(err);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
updatePost(postid) {
|
||||||
|
pnut.post(postid, {include_raw: 1}).then(res => {
|
||||||
|
this.post = res.data;
|
||||||
|
}).catch(err => {
|
||||||
|
console.log(err);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
presentToast(text) {
|
||||||
|
let toast = this.toastCtrl.create({
|
||||||
|
position: 'top',
|
||||||
|
message: text,
|
||||||
|
duration: 2000
|
||||||
|
});
|
||||||
|
toast.present();
|
||||||
|
}
|
||||||
|
|
||||||
|
presentPostMenu(myEvent, postData) {
|
||||||
|
let popover = this.popoverCtrl.create(PostMenu, {
|
||||||
|
post: postData,
|
||||||
|
me: this.myUsername});
|
||||||
|
popover.present({ev: myEvent});
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,7 +24,8 @@
|
||||||
|
|
||||||
<ion-list>
|
<ion-list>
|
||||||
<ion-card *ngFor="let post of posts" color="{{ post.you_are_mentioned ? 'mention' : '' }}">
|
<ion-card *ngFor="let post of posts" color="{{ post.you_are_mentioned ? 'mention' : '' }}">
|
||||||
<ion-item color="{{ post.you_are_mentioned ? 'mention' : '' }}">
|
<post [post]="post" [hideImg]="hideImg" [ccOnReply]="ccOnReply" [myUsername]="myUsername"></post>
|
||||||
|
<!-- <ion-item color="{{ post.you_are_mentioned ? 'mention' : '' }}">
|
||||||
<ion-avatar item-start (click)="showProfile(post.user)">
|
<ion-avatar item-start (click)="showProfile(post.user)">
|
||||||
<img src="{{ post.user.content.avatar_image.link }}">
|
<img src="{{ post.user.content.avatar_image.link }}">
|
||||||
</ion-avatar>
|
</ion-avatar>
|
||||||
|
@ -106,7 +107,7 @@
|
||||||
<ion-icon name="more"></ion-icon>
|
<ion-icon name="more"></ion-icon>
|
||||||
</button>
|
</button>
|
||||||
</ion-col>
|
</ion-col>
|
||||||
</ion-row>
|
</ion-row> -->
|
||||||
</ion-card>
|
</ion-card>
|
||||||
</ion-list>
|
</ion-list>
|
||||||
|
|
||||||
|
|
|
@ -1,11 +1,8 @@
|
||||||
import { Component, ViewChild, ChangeDetectorRef } from '@angular/core';
|
import { Component, ViewChild, ChangeDetectorRef } from '@angular/core';
|
||||||
import { NavController, NavParams, ModalController, Content, ToastController, PopoverController } from 'ionic-angular';
|
import { NavController, NavParams, ModalController, Content } from 'ionic-angular';
|
||||||
import { ThreadPage } from '../thread/thread';
|
|
||||||
import { Storage } from '@ionic/storage';
|
import { Storage } from '@ionic/storage';
|
||||||
import { Events } from 'ionic-angular';
|
import { Events } from 'ionic-angular';
|
||||||
import { LoginPage } from '../login/login';
|
import { LoginPage } from '../login/login';
|
||||||
import { ProfilePage } from '../profile/profile';
|
|
||||||
import { PostMenu } from '../stream/post-menu';
|
|
||||||
import { NewPostModal } from '../stream/new-post';
|
import { NewPostModal } from '../stream/new-post';
|
||||||
|
|
||||||
import * as pnut from 'pnut-butter';
|
import * as pnut from 'pnut-butter';
|
||||||
|
@ -36,10 +33,9 @@ export class StreamPage {
|
||||||
ccOnReply: boolean = false;
|
ccOnReply: boolean = false;
|
||||||
hideImg: boolean = false;
|
hideImg: boolean = false;
|
||||||
|
|
||||||
constructor(public navCtrl: NavController, public navParams: NavParams, public modalCtrl: ModalController,
|
constructor(public navCtrl: NavController, public navParams: NavParams,
|
||||||
private changeDetectorRef: ChangeDetectorRef, public toastCtrl: ToastController, private storage: Storage,
|
public modalCtrl: ModalController, private storage: Storage,
|
||||||
public popoverCtrl: PopoverController, public events: Events) {
|
private changeDetectorRef: ChangeDetectorRef, public events: Events) {
|
||||||
// console.log(JSON.stringify(navParams));
|
|
||||||
|
|
||||||
this.storage.get('cc').then((val) => {
|
this.storage.get('cc').then((val) => {
|
||||||
this.ccOnReply = val;
|
this.ccOnReply = val;
|
||||||
|
@ -212,17 +208,6 @@ export class StreamPage {
|
||||||
return pdata;
|
return pdata;
|
||||||
}
|
}
|
||||||
|
|
||||||
fetchThread(threadid) {
|
|
||||||
pnut.thread(threadid, {include_deleted: 0, include_raw: 1, count: 140}).then(res => {
|
|
||||||
if (res.meta.code === 401) {
|
|
||||||
this.storage.clear();
|
|
||||||
this.navCtrl.setRoot(LoginPage);
|
|
||||||
} else {
|
|
||||||
this.navCtrl.push(ThreadPage, {posts: res.data, me: this.myUsername});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
fetchMyPosts() {
|
fetchMyPosts() {
|
||||||
console.log('-- fetching mentions --');
|
console.log('-- fetching mentions --');
|
||||||
this.fetcher('me', {include_raw: 1, count: 40}).then(res => {
|
this.fetcher('me', {include_raw: 1, count: 40}).then(res => {
|
||||||
|
@ -239,97 +224,11 @@ export class StreamPage {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
bookmark(postid, bookmarked) {
|
|
||||||
if (bookmarked) {
|
|
||||||
pnut.deleteBookmark(postid).then(res => {
|
|
||||||
console.log(res);
|
|
||||||
this.updatePost(res.data.id);
|
|
||||||
this.presentToast("Bookmark updated.");
|
|
||||||
}).catch(err => {
|
|
||||||
console.log(err);
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
pnut.bookmark(postid).then(res => {
|
|
||||||
console.log(res);
|
|
||||||
this.updatePost(res.data.id);
|
|
||||||
this.presentToast("Bookmark updated.");
|
|
||||||
}).catch(err => {
|
|
||||||
console.log(err);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
repost(postid, reposted) {
|
|
||||||
if (reposted) {
|
|
||||||
pnut.deleteRepost(postid).then(res => {
|
|
||||||
console.log(res);
|
|
||||||
this.updatePost(res.data.id);
|
|
||||||
this.presentToast("Repost updated.");
|
|
||||||
}).catch(err => {
|
|
||||||
console.log(err);
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
pnut.repost(postid).then(res => {
|
|
||||||
console.log(res);
|
|
||||||
this.updatePost(res.data.id);
|
|
||||||
this.presentToast("Repost updated.");
|
|
||||||
}).catch(err => {
|
|
||||||
console.log(err);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
updatePost(postid) {
|
|
||||||
pnut.post(postid, {include_raw: 1}).then(res => {
|
|
||||||
for (var i = 0; i < this.posts.length; i++) {
|
|
||||||
if (this.posts[i]['id'] === postid) {
|
|
||||||
this.posts[i] = res.data;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}).catch(err => {
|
|
||||||
console.log(err);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
showNewPost() {
|
showNewPost() {
|
||||||
let newPostModal = this.modalCtrl.create(NewPostModal, {me: this.myUsername});
|
let newPostModal = this.modalCtrl.create(NewPostModal, {me: this.myUsername});
|
||||||
newPostModal.present();
|
newPostModal.present();
|
||||||
}
|
}
|
||||||
|
|
||||||
showReplyPost(postData) {
|
|
||||||
let newPostModal = this.modalCtrl.create(NewPostModal, {type: 'reply', post: postData, me: this.myUsername, cc: this.ccOnReply});
|
|
||||||
newPostModal.present();
|
|
||||||
}
|
|
||||||
|
|
||||||
showQuotedPost(postData) {
|
|
||||||
console.log(postData);
|
|
||||||
let newPostModal = this.modalCtrl.create(NewPostModal, {type: 'quote', post: postData, me: this.myUsername, cc: this.ccOnReply});
|
|
||||||
newPostModal.present();
|
|
||||||
}
|
|
||||||
|
|
||||||
showImage(url) {
|
|
||||||
window.open(url, '_system');
|
|
||||||
}
|
|
||||||
|
|
||||||
showProfile(user) {
|
|
||||||
this.navCtrl.push(ProfilePage, {user: user});
|
|
||||||
}
|
|
||||||
|
|
||||||
presentToast(text) {
|
|
||||||
let toast = this.toastCtrl.create({
|
|
||||||
position: 'top',
|
|
||||||
message: text,
|
|
||||||
duration: 2000
|
|
||||||
});
|
|
||||||
toast.present();
|
|
||||||
}
|
|
||||||
|
|
||||||
presentPostMenu(myEvent, postData) {
|
|
||||||
let popover = this.popoverCtrl.create(PostMenu, {post: postData, me: this.myUsername});
|
|
||||||
popover.present({ev: myEvent});
|
|
||||||
}
|
|
||||||
|
|
||||||
scrollToTop() {
|
scrollToTop() {
|
||||||
this.content.scrollToTop();
|
this.content.scrollToTop();
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,66 +15,11 @@
|
||||||
|
|
||||||
</ion-header>
|
</ion-header>
|
||||||
|
|
||||||
|
|
||||||
<ion-content>
|
<ion-content>
|
||||||
|
|
||||||
<ion-list>
|
<ion-list>
|
||||||
<ion-card *ngFor="let post of posts">
|
<ion-card *ngFor="let post of posts">
|
||||||
<ion-item>
|
<post [post]="post" [hideImg]="hideImg" [ccOnReply]="ccOnReply" [myUsername]="myUsername"></post>
|
||||||
<ion-avatar item-start>
|
|
||||||
<img src="{{ post.user.content.avatar_image.link }}">
|
|
||||||
</ion-avatar>
|
|
||||||
<h2>{{ post.user.name }}</h2>
|
|
||||||
<p>@{{ post.user.username }}</p>
|
|
||||||
<ion-note item-end right>
|
|
||||||
<div text-right>
|
|
||||||
{{ post.created_at | timeago }}<br/>
|
|
||||||
{{ post.source.name }}
|
|
||||||
</div>
|
|
||||||
</ion-note>
|
|
||||||
</ion-item>
|
|
||||||
<ion-card-content>
|
|
||||||
<div *ngIf="post.is_deleted; else renderBlock"></div>
|
|
||||||
<ng-template #renderBlock >
|
|
||||||
<div [innerHTML]="post.content.html | parser"></div>
|
|
||||||
</ng-template>
|
|
||||||
</ion-card-content>
|
|
||||||
<div *ngIf="post.raw">
|
|
||||||
<div *ngFor="let r of post.raw">
|
|
||||||
<div *ngIf="r.type == 'io.pnut.core.oembed'">
|
|
||||||
<img src="{{ r.value.url }}">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<ion-row>
|
|
||||||
<ion-col>
|
|
||||||
<button ion-button icon-left clear small block (click)="showReplyPost(post)">
|
|
||||||
<ion-icon name="ios-undo"></ion-icon>
|
|
||||||
</button>
|
|
||||||
</ion-col>
|
|
||||||
<ion-col>
|
|
||||||
<button ion-button icon-left clear small block (click)="showQuotedPost(post)">
|
|
||||||
<ion-icon name="quote"></ion-icon>
|
|
||||||
</button>
|
|
||||||
</ion-col>
|
|
||||||
<ion-col>
|
|
||||||
<button ion-button icon-left clear small block (click)="bookmark(post.id, post.you_bookmarked)">
|
|
||||||
<ion-icon name="star"></ion-icon>
|
|
||||||
<div *ngIf="post.counts.bookmarks > 0">{{ post.counts.bookmarks }}</div>
|
|
||||||
</button>
|
|
||||||
</ion-col>
|
|
||||||
<ion-col>
|
|
||||||
<button ion-button icon-left clear small block (click)="repost(post.id, post.you_reposted)">
|
|
||||||
<ion-icon name="repeat"></ion-icon>
|
|
||||||
<div *ngIf="post.counts.reposts > 0">{{ post.counts.reposts }}</div>
|
|
||||||
</button>
|
|
||||||
</ion-col>
|
|
||||||
<ion-col>
|
|
||||||
<button ion-button icon-left clear small block (click)="presentPostMenu($event, post)">
|
|
||||||
<ion-icon name="more"></ion-icon>
|
|
||||||
</button>
|
|
||||||
</ion-col>
|
|
||||||
</ion-row>
|
|
||||||
</ion-card>
|
</ion-card>
|
||||||
</ion-list>
|
</ion-list>
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
import { Component } from '@angular/core';
|
import { Component } from '@angular/core';
|
||||||
import { NavController, NavParams, ModalController, ToastController, PopoverController } from 'ionic-angular';
|
import { NavController, NavParams } from 'ionic-angular';
|
||||||
import { NewPostModal } from '../stream/new-post';
|
import { Storage } from '@ionic/storage';
|
||||||
import { PostMenu } from '../stream/post-menu';
|
|
||||||
|
|
||||||
import * as pnut from 'pnut-butter';
|
import * as pnut from 'pnut-butter';
|
||||||
|
|
||||||
|
@ -20,89 +19,22 @@ export class ThreadPage {
|
||||||
title: string;
|
title: string;
|
||||||
posts: Array<Object> = [];
|
posts: Array<Object> = [];
|
||||||
myUsername: string;
|
myUsername: string;
|
||||||
|
hideImg: boolean = false;
|
||||||
|
ccOnReply: boolean = false;
|
||||||
|
|
||||||
constructor(public navCtrl: NavController, public navParams: NavParams, public modalCtrl: ModalController,
|
constructor(public navCtrl: NavController, public navParams: NavParams,
|
||||||
public popoverCtrl: PopoverController, public toastCtrl: ToastController) {
|
private storage: Storage) {
|
||||||
this.posts = this.navParams.data.posts;
|
this.posts = this.navParams.data.posts;
|
||||||
this.myUsername = this.navParams.data.me;
|
this.myUsername = this.navParams.data.me;
|
||||||
}
|
|
||||||
|
|
||||||
showReplyPost(postData) {
|
this.storage.get('hideimg').then((val) => {
|
||||||
let newPostModal = this.modalCtrl.create(NewPostModal, {type: 'reply', post: postData});
|
this.hideImg = val;
|
||||||
newPostModal.present();
|
|
||||||
}
|
|
||||||
|
|
||||||
showQuotedPost(postData) {
|
|
||||||
console.log(postData);
|
|
||||||
let newPostModal = this.modalCtrl.create(NewPostModal, {type: 'quote', post: postData});
|
|
||||||
newPostModal.present();
|
|
||||||
}
|
|
||||||
|
|
||||||
bookmark(postid, bookmarked) {
|
|
||||||
if (bookmarked) {
|
|
||||||
pnut.deleteBookmark(postid).then(res => {
|
|
||||||
console.log(res);
|
|
||||||
this.updatePost(res.data.id);
|
|
||||||
this.presentToast("Bookmark updated.");
|
|
||||||
}).catch(err => {
|
|
||||||
console.log(err);
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
pnut.bookmark(postid).then(res => {
|
|
||||||
console.log(res);
|
|
||||||
this.updatePost(res.data.id);
|
|
||||||
this.presentToast("Bookmark updated.");
|
|
||||||
}).catch(err => {
|
|
||||||
console.log(err);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
repost(postid, reposted) {
|
|
||||||
if (reposted) {
|
|
||||||
pnut.deleteRepost(postid).then(res => {
|
|
||||||
console.log(res);
|
|
||||||
this.updatePost(res.data.id);
|
|
||||||
this.presentToast("Repost updated.");
|
|
||||||
}).catch(err => {
|
|
||||||
console.log(err);
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
pnut.repost(postid).then(res => {
|
|
||||||
console.log(res);
|
|
||||||
this.updatePost(res.data.id);
|
|
||||||
this.presentToast("Repost updated.");
|
|
||||||
}).catch(err => {
|
|
||||||
console.log(err);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
updatePost(postid) {
|
|
||||||
pnut.post(postid, {include_raw: 1}).then(res => {
|
|
||||||
for (var i = 0; i < this.posts.length; i++) {
|
|
||||||
if (this.posts[i]['id'] === postid) {
|
|
||||||
this.posts[i] = res.data;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}).catch(err => {
|
|
||||||
console.log(err);
|
|
||||||
});
|
});
|
||||||
}
|
|
||||||
|
|
||||||
presentPostMenu(myEvent, postData) {
|
this.storage.get('cc').then((val) => {
|
||||||
let popover = this.popoverCtrl.create(PostMenu, {post: postData, me: this.myUsername});
|
this.ccOnReply = val;
|
||||||
popover.present({ev: myEvent});
|
|
||||||
}
|
|
||||||
|
|
||||||
presentToast(text) {
|
|
||||||
let toast = this.toastCtrl.create({
|
|
||||||
position: 'top',
|
|
||||||
message: text,
|
|
||||||
duration: 2000
|
|
||||||
});
|
});
|
||||||
toast.present();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Reference in a new issue