Skip to content

Commit 00ea22e

Browse files
committed
accepting req
1 parent 253346f commit 00ea22e

File tree

4 files changed

+110
-9
lines changed

4 files changed

+110
-9
lines changed

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,8 @@
3636
},
3737
"devDependencies": {
3838
"@ionic/app-scripts": "1.3.7",
39-
"@ionic/cli-plugin-cordova": "1.4.0",
40-
"@ionic/cli-plugin-ionic-angular": "1.3.1",
39+
"@ionic/cli-plugin-cordova": "1.4.1",
40+
"@ionic/cli-plugin-ionic-angular": "1.3.2",
4141
"typescript": "2.3.3"
4242
},
4343
"description": "An Ionic project"

src/pages/chats/chats.html

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,5 +41,14 @@ <h4>{{item.displayName}}</h4>
4141
</button>
4242
</ion-item-options>
4343
</ion-item-sliding>
44+
<ion-list-header>
45+
Friends
46+
</ion-list-header>
47+
<ion-item *ngFor="let item of myfriends" (click)="buddychat(item)">
48+
<ion-avatar item-left>
49+
<img src={{item.photoURL}}>
50+
</ion-avatar>
51+
<h3>{{item.displayName}}</h3>
52+
</ion-item>
4453
</ion-list>
4554
</ion-content>

src/pages/chats/chats.ts

Lines changed: 30 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { Component } from '@angular/core';
2-
import { IonicPage, NavController, NavParams, Events } from 'ionic-angular';
2+
import { IonicPage, NavController, NavParams, Events, AlertController } from 'ionic-angular';
33
import { RequestsProvider } from '../../providers/requests/requests';
44

55
/**
@@ -15,30 +15,54 @@ import { RequestsProvider } from '../../providers/requests/requests';
1515
})
1616
export class ChatsPage {
1717
myrequests;
18+
myfriends;
1819
constructor(public navCtrl: NavController, public navParams: NavParams, public requestservice: RequestsProvider,
19-
public events: Events) {
20+
public events: Events, public alertCtrl: AlertController) {
2021
}
2122

2223

2324
ionViewWillEnter() {
2425
this.requestservice.getmyrequests();
26+
this.requestservice.getmyfriends();
27+
this.myfriends = [];
2528
this.events.subscribe('gotrequests', () => {
2629
this.myrequests = [];
2730
this.myrequests = this.requestservice.userdetails;
2831
})
32+
this.events.subscribe('friends', () => {
33+
this.myfriends = [];
34+
this.myfriends = this.requestservice.myfriends;
35+
})
2936
}
3037

3138
ionViewDidLeave() {
3239
this.events.unsubscribe('gotrequests');
40+
this.events.unsubscribe('friends');
3341
}
3442

35-
36-
37-
38-
3943

4044
addbuddy() {
4145
this.navCtrl.push('BuddiesPage');
4246
}
4347

48+
accept(item) {
49+
this.requestservice.acceptrequest(item).then(() => {
50+
51+
let newalert = this.alertCtrl.create({
52+
title: 'Friend added',
53+
subTitle: 'Tap on the friend to chat with him',
54+
buttons: ['Okay']
55+
});
56+
newalert.present();
57+
})
58+
}
59+
60+
ignore(item) {
61+
this.requestservice.deleterequest(item).then(() => {
62+
63+
}).catch((err) => {
64+
alert(err);
65+
})
66+
}
67+
4468
}

src/providers/requests/requests.ts

Lines changed: 69 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,10 @@ import firebase from 'firebase';
1313
@Injectable()
1414
export class RequestsProvider {
1515
firereq = firebase.database().ref('/requests');
16+
firefriends = firebase.database().ref('/friends');
17+
1618
userdetails;
19+
myfriends;
1720
constructor(public userservice: UserProvider, public events: Events) {
1821

1922
}
@@ -53,7 +56,72 @@ export class RequestsProvider {
5356
})
5457

5558
})
56-
}
59+
}
5760

61+
acceptrequest(buddy) {
62+
var promise = new Promise((resolve, reject) => {
63+
this.myfriends = [];
64+
this.firefriends.child(firebase.auth().currentUser.uid).push({
65+
uid: buddy.uid
66+
}).then(() => {
67+
this.firefriends.child(buddy.uid).push({
68+
uid: firebase.auth().currentUser.uid
69+
}).then(() => {
70+
this.deleterequest(buddy).then(() => {
71+
resolve(true);
72+
})
73+
74+
}).catch((err) => {
75+
reject(err);
76+
})
77+
}).catch((err) => {
78+
reject(err);
79+
})
80+
})
81+
return promise;
82+
}
83+
84+
deleterequest(buddy) {
85+
var promise = new Promise((resolve, reject) => {
86+
this.firereq.child(firebase.auth().currentUser.uid).orderByChild('sender').equalTo(buddy.uid).once('value', (snapshot) => {
87+
let somekey;
88+
for (var key in snapshot.val())
89+
somekey = key;
90+
this.firereq.child(firebase.auth().currentUser.uid).child(somekey).remove().then(() => {
91+
resolve(true);
92+
})
93+
})
94+
.then(() => {
95+
96+
}).catch((err) => {
97+
reject(err);
98+
})
99+
})
100+
return promise;
101+
}
102+
103+
getmyfriends() {
104+
let friendsuid = [];
105+
this.firefriends.child(firebase.auth().currentUser.uid).on('value', (snapshot) => {
106+
let allfriends = snapshot.val();
107+
this.myfriends = [];
108+
for (var i in allfriends)
109+
friendsuid.push(allfriends[i].uid);
110+
111+
this.userservice.getallusers().then((users) => {
112+
this.myfriends = [];
113+
for (var j in friendsuid)
114+
for (var key in users) {
115+
if (friendsuid[j] === users[key].uid) {
116+
this.myfriends.push(users[key]);
117+
}
118+
}
119+
this.events.publish('friends');
120+
}).catch((err) => {
121+
alert(err);
122+
})
123+
124+
})
125+
}
58126

59127
}

0 commit comments

Comments
 (0)