Skip to content

Commit

Permalink
Like tweet added
Browse files Browse the repository at this point in the history
  • Loading branch information
adelsabagh committed Mar 4, 2022
1 parent 147becd commit 35f59f2
Show file tree
Hide file tree
Showing 3 changed files with 96 additions and 5 deletions.
2 changes: 2 additions & 0 deletions lib/main.dart
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:picoffee/providers/CommentProvider.dart';
import 'package:picoffee/providers/ImageProvider.dart';
import 'package:picoffee/providers/LikeProvider.dart';
import 'package:picoffee/providers/PofileProvider.dart';
import 'package:provider/provider.dart';
import 'package:shared_preferences/shared_preferences.dart';
Expand Down Expand Up @@ -54,6 +55,7 @@ class MyApp extends StatelessWidget {
ChangeNotifierProvider(create: (_)=>MyImageProvider()),
ChangeNotifierProvider(create: (_)=>ProfileProvider()),
ChangeNotifierProvider(create: (_)=>CommentProvider()),
ChangeNotifierProvider(create: (_)=>LikeProvider()),
],
child: MaterialApp(
builder: BotToastInit(),
Expand Down
32 changes: 27 additions & 5 deletions lib/profile/my_profile_screen.dart
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:picoffee/app_config/app_config.dart';
import 'package:picoffee/comments/comments.dart';
import 'package:picoffee/providers/CommentProvider.dart';
import 'package:picoffee/providers/LikeProvider.dart';
import 'package:provider/provider.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:picoffee/app_theme/application_colors.dart';
Expand All @@ -18,13 +19,19 @@ import 'package:picoffee/providers/UserProvider.dart';


class MyProfileScreen extends StatefulWidget {

@override
_MyProfileScreenState createState() => _MyProfileScreenState();

}


class _MyProfileScreenState extends State<MyProfileScreen> {
late var myImageUrl;
late var currentUserTweets;
var liked;
late var likedbtn = false;
late var likeCount;

void initState() {
super.initState();
Expand All @@ -33,13 +40,16 @@ class _MyProfileScreenState extends State<MyProfileScreen> {
myImageUrl = Provider.of<UserProvider>(context, listen: false).imageUrl;
//print("getting tweets");
Provider.of<TweetsProvider>(context, listen: false).getCurrentUserTweets();

}

@override
Widget build(BuildContext context) {
var myUser = Provider.of<UserProvider>(context, listen: true);
this.myImageUrl = Provider.of<UserProvider>(context, listen: true).imageUrl;
this.currentUserTweets = Provider.of<TweetsProvider>(context, listen: true).currentUserTweets;
this.liked = Provider.of<LikeProvider>(context, listen: true).liked;
this.likeCount = Provider.of<LikeProvider>(context, listen: true).likeCount;

final theme = Theme.of(context);
final mediaQuery = MediaQuery.of(context);
Expand Down Expand Up @@ -262,14 +272,26 @@ class _MyProfileScreenState extends State<MyProfileScreen> {
children: [
Row(
children: [
Icon(
Icons.favorite_border,
color: ApplicationColors.grey,
size: 18.2,
GestureDetector(
onTap:() async{
await Provider.of<LikeProvider>(context, listen:false).likeTweet(currentUserTweets[index]['id']);

},
child:
Icon(
Icons.favorite,
color: ApplicationColors.primaryColor,
size: 18.2,
),
// Icon(
// Icons.favorite_border,
// color: ApplicationColors.grey,
// size: 18.2,
// ),
),
SizedBox(width: 8.5),
Text(
'${currentUserTweets[index]['comments'].length}',
'${currentUserTweets[index]['likes_count']}',
style: TextStyle(
color: ApplicationColors.grey,
letterSpacing: 1,
Expand Down
67 changes: 67 additions & 0 deletions lib/providers/LikeProvider.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
import 'package:flutter/material.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:picoffee/components/service.dart';
import 'package:http/http.dart' as http;
import 'dart:convert' as convert;

class LikeProvider extends ChangeNotifier{

var liked = false;
var likeCount;
var resp = <dynamic>[];

Future<dynamic> getlikesTweet($tweetId) async{
// resp.clear();
SharedPreferences prefs = await SharedPreferences.getInstance();
var userId = prefs.getString('id');
var url = api.ApiUrl + "v1/tweets/" + $tweetId.toString();
var token = prefs.getString('token');

var response = await http.get(
Uri.parse(url),
headers: <String, String>{
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer $token',
}
);

var jsonResponse = convert.jsonDecode(response.body);
print("the tweets of the user: $jsonResponse");
this.likeCount = jsonResponse['likes_count'];
// resp.addAll(jsonResponse);

notifyListeners();
}

Future<dynamic> likeTweet(tweetId) async {
var url = api.ApiUrl + "v1/tweets/like";
SharedPreferences prefs = await SharedPreferences.getInstance();
var token = prefs.getString('token')!;
var userId = prefs.getString('id')!;

var response = await http.post(
Uri.parse(url),
body: {
'user_id' : '$userId',
'tweet_id' : '$tweetId',
},
headers: <String, String>{
'Authorization': 'Bearer $token',
}
);

var data = response.body;
//print('response: $data');

if(data.contains('likes_count')){
this.liked = true;
}
else{
this.liked = false;
}

notifyListeners();
}

}

0 comments on commit 35f59f2

Please sign in to comment.