1
0
mirror of https://gitlab.com/comunic/comunicmobile synced 2024-10-23 15:03:22 +00:00
comunicmobile/lib/helpers/friends_helper.dart

80 lines
2.0 KiB
Dart

import 'package:comunic/lists/friends_list.dart';
import 'package:comunic/models/api_request.dart';
import 'package:comunic/models/friend.dart';
/// Friends helper
///
/// @author Pierre HUBERT
class FriendsHelper {
/// Get the list of friends of the user
///
/// Returns the list of friends in case of success, or null if an error
/// occurred
Future<FriendsList> downloadList() async {
final response = await APIRequest(
uri: "friends/getList",
needLogin: true,
args: {
"complete": "true",
},
).exec();
if (response.code != 200) return null;
// Parse and return the list of friends
FriendsList list = FriendsList();
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"],
),
),
);
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;
}
/// Update following status for a friend
Future<bool> setFollowing(int friendID, bool follow) async {
final response = await APIRequest(
uri: "friends/setFollowing",
needLogin: true,
args: {
"friendID" : friendID.toString(),
"follow": follow.toString()
}
).exec();
return response.code == 200;
}
/// Remove a friend from the list
Future<bool> removeFriend(int friendID) async {
final response = await APIRequest(
uri: "friends/remove",
needLogin: true,
args: {"friendID" : friendID.toString()}
).exec();
return response.code == 200;
}
}