Merge pull request 'FAVORITE_MUSICS_EKA' (#45) from FAVORITE_MUSICS_EKA into master
continuous-integration/drone/push Build is passing Details

Reviewed-on: #45
CACHED_IMAGE_LDE
Emre KARTAL 2 years ago
commit a7cb743f8b

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

@ -1 +1,5 @@
const geoKey = "85a2724ad38b3994c2b7ebe1d239bbff"; 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 CommentService _commentService = CommentService();
final NotificationService _notificationService = NotificationService(); final NotificationService _notificationService = NotificationService();
List<Comment> get comments => _comments;
// Constructor // Constructor
CommentViewModel(); CommentViewModel();
// Methods // Methods
addComment(String text, String idPost, User receiver) async { addComment(String text, String idPost, User receiver) async {
try { try {
print(receiver.token);
await _commentService.createComment(text, idPost); await _commentService.createComment(text, idPost);
_notificationService.sendNotifyComment(receiver.token, text); _notificationService.sendNotifyComment(receiver.token, text);
} catch (e) { } catch (e) {

@ -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,23 @@ 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;
}
}
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 '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