Get, add and delete Favorite Musics done
continuous-integration/drone/push Build is passing Details

FAVORITE_MUSICS_EKA
Emre KARTAL 2 years ago
parent 120735e0c6
commit c8b93c51cd

@ -29,6 +29,7 @@ class AuthService {
"nbCapsules": 0, "nbCapsules": 0,
"followers": [], "followers": [],
"token_notify": token, "token_notify": token,
"musics_likes": [],
"picture": "picture":
"https://firebasestorage.googleapis.com/v0/b/justmusic-435d5.appspot.com/o/justMusicDefaultImage.png?alt=media&token=020d0fcb-b7df-4d4d-b380-e99597293fcc" "https://firebasestorage.googleapis.com/v0/b/justmusic-435d5.appspot.com/o/justMusicDefaultImage.png?alt=media&token=020d0fcb-b7df-4d4d-b380-e99597293fcc"
}; };

@ -0,0 +1,46 @@
import 'package:cloud_firestore/cloud_firestore.dart';
import '../main.dart';
class MusicService {
Future<dynamic> getFavoriteMusicsByUserId(String id) async {
var response =
await FirebaseFirestore.instance.collection("users").doc(id).get();
if (response.exists) {
var musicFavorite = response.get("musics_likes");
return List.from(musicFavorite);
} else {
return [];
}
}
deleteFavoriteMusic(String id) async {
var userRef = await FirebaseFirestore.instance
.collection("users")
.doc(MyApp.userViewModel.userCurrent.id);
var response = await userRef.get();
List<dynamic> musicFavorite = List.from(response.get("musics_likes"));
if (!musicFavorite.contains(id)) {
musicFavorite.remove(id);
await userRef.update({"musics_likes": musicFavorite});
} else {
print("Delete error: The music is not in the user's favorite music list");
}
}
addFavoriteMusic(String id) async {
var userRef = await FirebaseFirestore.instance
.collection("users")
.doc(MyApp.userViewModel.userCurrent.id);
var response = await userRef.get();
List<dynamic> musicFavorite = List.from(response.get("musics_likes"));
if (!musicFavorite.contains(id)) {
musicFavorite.add(id);
await userRef.update({"musics_likes": musicFavorite});
} else {
print("Add error: The music is not in the user's favorite music list");
}
}
}

@ -1 +1,3 @@
const geoKey = "85a2724ad38b3994c2b7ebe1d239bbff"; const geoKey = "85a2724ad38b3994c2b7ebe1d239bbff";
const clientId = "d9b82921bbdf43efa15d0c34c28c6f93";
const clientSecret = "ba01687f59ea4ab7ad00c769e89e44d8";

@ -7,10 +7,14 @@ class CommentViewModel {
List<Comment> _comments = []; List<Comment> _comments = [];
final CommentService _commentService = CommentService(); final CommentService _commentService = CommentService();
List<Comment> get comments => _comments;
// Constructor // Constructor
CommentViewModel(); CommentViewModel();
// Methods // Methods
addComment(String text, String idPost) async { addComment(String text, String idPost) async {
try { try {
await _commentService.createComment(text, idPost); await _commentService.createComment(text, idPost);

@ -4,10 +4,12 @@ import 'package:justmusic/view_model/TokenSpotify.dart';
import 'package:http/http.dart' as http; import 'package:http/http.dart' as http;
import '../model/Artist.dart'; import '../model/Artist.dart';
import '../model/Music.dart'; import '../model/Music.dart';
import '../services/MusicService.dart';
class MusicViewModel { class MusicViewModel {
final String API_URL = "https://api.spotify.com/v1"; final String API_URL = "https://api.spotify.com/v1";
late TokenSpotify _token; late TokenSpotify _token;
MusicService _musicService = MusicService();
MusicViewModel() { MusicViewModel() {
_token = new TokenSpotify(); _token = new TokenSpotify();
@ -232,4 +234,32 @@ class MusicViewModel {
limit: limit, offset: offset, market: market); limit: limit, offset: offset, market: market);
} }
} }
Future<List<Music>> getFavoriteMusicsByUserId(String id) async {
try {
var idMusics = await _musicService.getFavoriteMusicsByUserId(id);
return await getMusicsWithIds(idMusics);
} catch (e) {
print(e);
rethrow;
}
}
addFavoriteMusic(String id) async {
try {
await _musicService.addFavoriteMusic(id);
} catch (e) {
print(e);
rethrow;
}
}
deleteFavoriteMusic(String id) async {
try {
await _musicService.deleteFavoriteMusic(id);
} catch (e) {
print(e);
rethrow;
}
}
} }

@ -1,9 +1,9 @@
import 'dart:convert'; import 'dart:convert';
import 'package:http/http.dart' as http; import 'package:http/http.dart' as http;
import '../values/keys.dart';
class TokenSpotify { class TokenSpotify {
final String clientId = 'd9b82921bbdf43efa15d0c34c28c6f93';
final String _clientSecret = 'ba01687f59ea4ab7ad00c769e89e44d8';
late String _accessToken; late String _accessToken;
late DateTime _tokenEnd; late DateTime _tokenEnd;
@ -19,7 +19,7 @@ class TokenSpotify {
} }
_refreshToken() async { _refreshToken() async {
final basicAuth = base64Encode(utf8.encode('$clientId:$_clientSecret')); final basicAuth = base64Encode(utf8.encode('$clientId:$clientSecret'));
final response = await http.post( final response = await http.post(
Uri.parse('https://accounts.spotify.com/api/token'), Uri.parse('https://accounts.spotify.com/api/token'),
headers: { headers: {

@ -17,7 +17,9 @@ class UserViewModel {
set userCurrent(User value) { set userCurrent(User value) {
_userCurrent = value; _userCurrent = value;
} // Constructor }
// Constructor
UserViewModel(); UserViewModel();
@ -31,20 +33,14 @@ class UserViewModel {
try { try {
var token; var token;
await authService.login(pseudo, password); await authService.login(pseudo, password);
final user = await MyApp.db await updateUserCurrent();
.collection("users")
.doc(firebase_auth.FirebaseAuth.instance.currentUser?.uid)
.get();
if (!kIsWeb) { if (!kIsWeb) {
token = await FirebaseMessaging.instance.getToken(); token = await FirebaseMessaging.instance.getToken();
if (MyApp.userViewModel.userCurrent.token != token) { if (_userCurrent.token != token) {
_userService.updateTokenNotify( _userService.updateTokenNotify(_userCurrent.id, token);
MyApp.userViewModel.userCurrent.id, token); _userCurrent.token = token;
MyApp.userViewModel.userCurrent.token = token;
} }
} }
User data = UserMapper.toModel(user);
_userCurrent = data;
} catch (e) { } catch (e) {
rethrow; rethrow;
} }
@ -75,12 +71,7 @@ class UserViewModel {
try { try {
await authService.register(pseudo.toLowerCase(), email, password); await authService.register(pseudo.toLowerCase(), email, password);
final user = await MyApp.db await updateUserCurrent();
.collection("users")
.doc(firebase_auth.FirebaseAuth.instance.currentUser?.uid)
.get();
User data = UserMapper.toModel(user);
_userCurrent = data;
} catch (e) { } catch (e) {
rethrow; rethrow;
} }

Loading…
Cancel
Save