import 'dart:convert'; import 'package:Envelope/database/models/device_tokens.dart'; import 'package:http/http.dart' as http; import 'package:pointycastle/export.dart'; import 'package:sqflite/sqflite.dart'; import '/database/models/friends.dart'; import '/database/models/my_profile.dart'; import '/utils/storage/database.dart'; import '/utils/storage/session_cookie.dart'; class FriendsService { static Future updateFriends() async { RSAPrivateKey privKey = await MyProfile.getPrivateKey(); var resp = await http.get( await MyProfile.getServerUrl('api/v1/auth/friend_requests'), headers: { 'cookie': await getSessionCookie(), } ); if (resp.statusCode != 200) { throw Exception(resp.body); } final db = await getDatabaseConnection(); List friendsRequestJson = jsonDecode(resp.body); for (var i = 0; i < friendsRequestJson.length; i++) { Friend friend = Friend.fromJson( friendsRequestJson[i] as Map, privKey, ); await db.insert( 'friends', friend.toMap(), conflictAlgorithm: ConflictAlgorithm.replace, ); List tokens = (friendsRequestJson[i]['tokens']); for (var j = 0; j < tokens.length; j++) { DeviceToken token = DeviceToken.fromJson( tokens[j]['device_token'], friend.friendId, privKey, ); await db.insert( 'device_tokens', token.toMap(), conflictAlgorithm: ConflictAlgorithm.replace, ); } } } }