mirror of
				https://gitlab.com/comunic/comunicmobile
				synced 2025-11-04 04:04:18 +00:00 
			
		
		
		
	Load memberships
This commit is contained in:
		@@ -96,7 +96,7 @@ class ConversationsHelper {
 | 
			
		||||
 | 
			
		||||
    try {
 | 
			
		||||
      ConversationsList list = ConversationsList();
 | 
			
		||||
      response.getArray().forEach((f) => list.add(_apiToConversation(f)));
 | 
			
		||||
      response.getArray().forEach((f) => list.add(apiToConversation(f)));
 | 
			
		||||
 | 
			
		||||
      // Update the database
 | 
			
		||||
      await _conversationsDatabaseHelper.clearTable();
 | 
			
		||||
@@ -126,7 +126,7 @@ class ConversationsHelper {
 | 
			
		||||
 | 
			
		||||
      if (response.code != 200) return null;
 | 
			
		||||
 | 
			
		||||
      final conversation = _apiToConversation(response.getObject());
 | 
			
		||||
      final conversation = apiToConversation(response.getObject());
 | 
			
		||||
      _conversationsDatabaseHelper.insertOrUpdate(conversation);
 | 
			
		||||
      return conversation;
 | 
			
		||||
    } on Exception catch (e) {
 | 
			
		||||
@@ -222,7 +222,7 @@ class ConversationsHelper {
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /// Turn an API entry into a [Conversation] object
 | 
			
		||||
  Conversation _apiToConversation(Map<String, dynamic> map) {
 | 
			
		||||
  static Conversation apiToConversation(Map<String, dynamic> map) {
 | 
			
		||||
    return Conversation(
 | 
			
		||||
        id: map["ID"],
 | 
			
		||||
        ownerID: map["ID_owner"],
 | 
			
		||||
 
 | 
			
		||||
@@ -28,18 +28,12 @@ class FriendsHelper {
 | 
			
		||||
    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"],
 | 
			
		||||
                ),
 | 
			
		||||
              ),
 | 
			
		||||
        );
 | 
			
		||||
    FriendsList list = FriendsList()
 | 
			
		||||
      ..addAll(response
 | 
			
		||||
          .getArray()
 | 
			
		||||
          .cast<Map<String, dynamic>>()
 | 
			
		||||
          .map(apiToFriend)
 | 
			
		||||
          .toList());
 | 
			
		||||
 | 
			
		||||
    // Save the list of friends
 | 
			
		||||
    _friendsDatabaseHelper.clearTable();
 | 
			
		||||
@@ -48,6 +42,17 @@ class FriendsHelper {
 | 
			
		||||
    return list;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /// Turn an API entry into a [Friend] object
 | 
			
		||||
  static Friend apiToFriend(Map<String, dynamic> row) {
 | 
			
		||||
    return Friend(
 | 
			
		||||
      id: row["ID_friend"],
 | 
			
		||||
      accepted: row["accepted"] == 1,
 | 
			
		||||
      lastActive: row["time_last_activity"],
 | 
			
		||||
      following: row["following"] == 1,
 | 
			
		||||
      canPostTexts: row["canPostTexts"],
 | 
			
		||||
    );
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /// Get the list, either from an online or an offline source
 | 
			
		||||
  Future<FriendsList> getList({@required bool online}) async {
 | 
			
		||||
    if (online)
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										47
									
								
								lib/helpers/webapp_helper.dart
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										47
									
								
								lib/helpers/webapp_helper.dart
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,47 @@
 | 
			
		||||
import 'package:comunic/helpers/conversations_helper.dart';
 | 
			
		||||
import 'package:comunic/helpers/friends_helper.dart';
 | 
			
		||||
import 'package:comunic/lists/memberships_list.dart';
 | 
			
		||||
import 'package:comunic/models/api_request.dart';
 | 
			
		||||
import 'package:comunic/models/membership.dart';
 | 
			
		||||
 | 
			
		||||
/// Web application helper
 | 
			
		||||
///
 | 
			
		||||
/// @author Pierre Hubert
 | 
			
		||||
 | 
			
		||||
class WebAppHelper {
 | 
			
		||||
  /// Fetch from the server the list of memberships of the user
 | 
			
		||||
  ///
 | 
			
		||||
  /// Throws in case of failure
 | 
			
		||||
  static Future<MembershipList> getMemberships() async {
 | 
			
		||||
    final response =
 | 
			
		||||
        (await APIRequest.withLogin("webApp/getMemberships").execWithThrow())
 | 
			
		||||
            .getArray();
 | 
			
		||||
 | 
			
		||||
    return MembershipList()
 | 
			
		||||
      ..addAll(response
 | 
			
		||||
          .cast<Map<String, dynamic>>()
 | 
			
		||||
          .map(_apiToMembership)
 | 
			
		||||
          .where((f) => f != null)
 | 
			
		||||
            ..toList());
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /// Turn an API entry into a membership entry
 | 
			
		||||
  static Membership _apiToMembership(Map<String, dynamic> entry) {
 | 
			
		||||
    switch (entry["type"]) {
 | 
			
		||||
      case "conversation":
 | 
			
		||||
        return Membership.conversation(
 | 
			
		||||
            ConversationsHelper.apiToConversation(entry["conv"]));
 | 
			
		||||
 | 
			
		||||
      case "friend":
 | 
			
		||||
        return Membership.friend(FriendsHelper.apiToFriend(entry["friend"]));
 | 
			
		||||
 | 
			
		||||
      case "group":
 | 
			
		||||
        return Membership.group(
 | 
			
		||||
            groupID: entry["id"], groupLastActive: entry["last_activity"]);
 | 
			
		||||
 | 
			
		||||
      default:
 | 
			
		||||
        print("Unknown membership type: ${entry["type"]}");
 | 
			
		||||
        return null;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user