FAVORITE_MUSICS_EKA #45

Merged
emre.kartal merged 3 commits from FAVORITE_MUSICS_EKA into master 2 years ago

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

@ -0,0 +1,49 @@
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");
}
}
Future<bool> addOrDeleteFavoriteMusic(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});
return false;
} else {
musicFavorite.remove(id);
await userRef.update({"musics_likes": musicFavorite});
return true;
}
}
}

@ -2,6 +2,7 @@ import 'dart:convert';
import 'package:http/http.dart' as http;
import '../main.dart';
import '../values/keys.dart';
class NotificationService {
sendPushMessage(String token, String title, String body) async {
@ -10,7 +11,7 @@ class NotificationService {
headers: <String, String>{
'Content-Type': 'application/json',
'Authorization':
'key=AAAA56TmIPg:APA91bFeKMr_i6CbUuuUdFI1XkdaNE2A7OVHzxrPIsOSlDfhR6qzZwof7JNGxthWUKj1dRHQMheWNYaLbf3AtXUp9o4DX_gB2073yR4urqUEh9CjvnxVws_9g1cWMgmFS3EpaQEA3icC'
'key=$keyApiFirebase'
},
body: jsonEncode(<String, dynamic>{
'priority': 'high',

@ -1 +1,5 @@
const geoKey = "85a2724ad38b3994c2b7ebe1d239bbff";
const clientId = "d9b82921bbdf43efa15d0c34c28c6f93";
const clientSecret = "ba01687f59ea4ab7ad00c769e89e44d8";
const keyApiFirebase =
"AAAA56TmIPg:APA91bFeKMr_i6CbUuuUdFI1XkdaNE2A7OVHzxrPIsOSlDfhR6qzZwof7JNGxthWUKj1dRHQMheWNYaLbf3AtXUp9o4DX_gB2073yR4urqUEh9CjvnxVws_9g1cWMgmFS3EpaQEA3icC";

@ -10,13 +10,14 @@ class CommentViewModel {
final CommentService _commentService = CommentService();
final NotificationService _notificationService = NotificationService();
List<Comment> get comments => _comments;
// Constructor
CommentViewModel();
// Methods
addComment(String text, String idPost, User receiver) async {
try {
print(receiver.token);
await _commentService.createComment(text, idPost);
_notificationService.sendNotifyComment(receiver.token, text);
} catch (e) {

@ -4,10 +4,12 @@ import 'package:justmusic/view_model/TokenSpotify.dart';
import 'package:http/http.dart' as http;
import '../model/Artist.dart';
import '../model/Music.dart';
import '../services/MusicService.dart';
class MusicViewModel {
final String API_URL = "https://api.spotify.com/v1";
late TokenSpotify _token;
MusicService _musicService = MusicService();
MusicViewModel() {
_token = new TokenSpotify();
@ -232,4 +234,23 @@ class MusicViewModel {
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;
}
}
Future<bool> addOrDeleteFavoriteMusic(String id) async {
try {
return await _musicService.addOrDeleteFavoriteMusic(id);
} catch (e) {
print(e);
rethrow;
}
}
}

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

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

Loading…
Cancel
Save