1
0
mirror of https://gitlab.com/comunic/comunicmobile synced 2024-10-23 06:53:23 +00:00

Can respond to friendship requests

This commit is contained in:
Pierre HUBERT 2019-05-01 18:01:20 +02:00
parent 5021ded039
commit a7b2bf410e
2 changed files with 51 additions and 23 deletions

View File

@ -24,15 +24,31 @@ class FriendsHelper {
// Parse and return the list of friends
FriendsList list = FriendsList();
response.getArray().forEach((f) =>
list.add(Friend(
response.getArray().forEach(
(f) => list.add(
Friend(
id: f["ID_friend"],
accepted: f["accepted"] == 1,
lastActive: f["time_last_activity"],
following: f["following"] == 1,
canPostTexts: f["canPostTexts"],),),
canPostTexts: f["canPostTexts"],
),
),
);
return list;
}
/// Respond to friendship request
Future<bool> respondRequest(int friendID, bool accept) async {
final response = await APIRequest(
uri: "friends/respondRequest",
needLogin: true,
args: {
"friendID": friendID.toString(),
"accept": accept.toString()
}).exec();
return response.code == 200;
}
}

View File

@ -2,6 +2,7 @@ import 'package:comunic/helpers/friends_helper.dart';
import 'package:comunic/helpers/users_helper.dart';
import 'package:comunic/lists/friends_list.dart';
import 'package:comunic/lists/users_list.dart';
import 'package:comunic/models/friend.dart';
import 'package:comunic/ui/tiles/accepted_friend_tile.dart';
import 'package:comunic/ui/tiles/pending_friend_tile.dart';
import 'package:comunic/ui/widgets/safe_state.dart';
@ -41,7 +42,6 @@ class _FriendsListScreenState extends SafeState<FriendsListScreen> {
void _gotError() =>
error = _friendsList == null ? _ErrorsLevel.MAJOR : _ErrorsLevel.MINOR;
@override
void didChangeDependencies() {
super.didChangeDependencies();
@ -75,8 +75,7 @@ class _FriendsListScreenState extends SafeState<FriendsListScreen> {
}
/// Build and return loading error
Widget _buildError() =>
buildErrorCard(
Widget _buildError() => buildErrorCard(
tr("Could not load your list of friends!"),
actions: [
FlatButton(
@ -96,7 +95,6 @@ class _FriendsListScreenState extends SafeState<FriendsListScreen> {
return Column(
children: <Widget>[
// Check for errors
Container(child: _error != _ErrorsLevel.NONE ? _buildError() : null),
@ -105,18 +103,32 @@ class _FriendsListScreenState extends SafeState<FriendsListScreen> {
// List of friends
Expanded(
child: ListView.builder(itemCount: _friendsList.length, itemBuilder: (c, i) =>
_friendsList[i].accepted ? AcceptedFriendTile(
child: ListView.builder(
itemCount: _friendsList.length,
itemBuilder: (c, i) => _friendsList[i].accepted
? AcceptedFriendTile(
friend: _friendsList[i],
user: _usersInfo.getUser(_friendsList[i].id),
) : PendingFriendTile(
)
: PendingFriendTile(
friend: _friendsList[i],
user: _usersInfo.getUser(_friendsList[i].id),
onRespond: (friend, accept){},
onRespond: _respondRequest,
)),
),
],
);
}
/// Respond to friendship request
Future<void> _respondRequest(Friend f, bool accept) async {
loading = true;
if (!await _friendsHelper.respondRequest(f.id, accept))
Scaffold.of(context).showSnackBar(SnackBar(
content: Text(tr("Could not respond to friendship request!"))));
// Load the list of friends again
_loadList();
}
}