Skip to content

Commit

Permalink
eating mango
Browse files Browse the repository at this point in the history
  • Loading branch information
imhrsit committed Jul 3, 2024
1 parent 6aa3c96 commit 6b93ee4
Show file tree
Hide file tree
Showing 5 changed files with 85 additions and 5 deletions.
21 changes: 18 additions & 3 deletions lib/main.dart
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
import 'package:critiq/providers/user_provider.dart';
import 'package:critiq/screens/home/home_screen.dart';
import 'package:critiq/screens/welcome/welcome_screen.dart';
import 'package:critiq/services/auth_services.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';

Expand All @@ -12,15 +14,28 @@ void main() {
));
}

class MyApp extends StatelessWidget {
class MyApp extends StatefulWidget {
const MyApp({super.key});

@override
State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {

final AuthService authService = AuthService();

@override
void initState() {
authService.getUserData(context);
super.initState();
}
@override
Widget build(BuildContext context) {
return const MaterialApp(
return MaterialApp(
debugShowCheckedModeBanner: false,
title: 'CritiQ',
home: WelcomeScreen(),
home: Provider.of<UserProvider>(context).user.token.isEmpty ? const WelcomeScreen() : const Homescreen(),
);
}
}
1 change: 1 addition & 0 deletions lib/screens/auth/auth_screen.dart
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import 'package:critiq/screens/welcome/welcome_screen.dart';
import 'package:flutter/material.dart';
import 'package:critiq/global/color.dart';

Expand Down
4 changes: 3 additions & 1 deletion lib/screens/auth/signup_screen.dart
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import 'package:critiq/screens/home/home_screen.dart';
import 'package:flutter/material.dart';
import 'package:critiq/global/color.dart';

Expand Down Expand Up @@ -64,7 +65,8 @@ class _SignupState extends State<Signup> {
const Spacer(flex: 2),
GestureDetector(
onTap: () {
widget.signupUser(context);
// widget.signupUser(context);
Navigator.push(context, MaterialPageRoute(builder: (context) => const Homescreen()));
},
child: Container(
width: double.infinity,
Expand Down
21 changes: 20 additions & 1 deletion lib/screens/home/home_screen.dart
Original file line number Diff line number Diff line change
@@ -1,17 +1,36 @@
import 'package:critiq/global/color.dart';
import 'package:critiq/providers/user_provider.dart';
import 'package:critiq/services/auth_services.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';

class Homescreen extends StatelessWidget {
class Homescreen extends StatefulWidget {
const Homescreen({super.key});

void signoutUser(BuildContext context){
AuthService().signOutUser(context);
}

@override
State<Homescreen> createState() => _HomescreenState();
}

class _HomescreenState extends State<Homescreen> {
@override
Widget build(BuildContext context) {
final user = Provider.of<UserProvider>(context).user;
return Scaffold(
backgroundColor: kgrey,
appBar: AppBar(
actions: [
IconButton(
icon: Icon(Icons.exit_to_app_outlined, color: kwhite),
padding: const EdgeInsets.only(right: 20),
onPressed: () {
widget.signoutUser(context);
},
),
],
backgroundColor: kgrey,
title: const Text(
'CritiQ',
Expand Down
43 changes: 43 additions & 0 deletions lib/services/auth_services.dart
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import 'dart:convert';

import 'package:critiq/screens/auth/auth_screen.dart';
import 'package:critiq/screens/home/home_screen.dart';
import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;
Expand Down Expand Up @@ -82,4 +83,46 @@ class AuthService{
showSnackbar(context, e.toString());
}
}

void getUserData(BuildContext context) async {
try {
var userProvider = Provider.of<UserProvider>(context, listen: false);
SharedPreferences prefs = await SharedPreferences.getInstance();
String? token = prefs.getString('x-auth-token');
if(token == null){
prefs.setString('x-auth-token', '');
}
var tokenRes = await http.post(
Uri.parse('${Constants.uri}/tokenIsValid'),
headers: <String, String>{
'Content-Type': 'application/json; charset=UTF-8',
'x-auth-token': token!,
},
);
var response = jsonDecode(tokenRes.body);
if(response==true){
http.Response userRes = await http.get(
Uri.parse('${Constants.uri}/'),
headers: <String, String>{
'Content-Type': 'application/json; charset=UTF-8',
'x-auth-token': token,
},
);
userProvider.setUser(userRes.body);
}
} catch (e) {
showSnackbar(context, e.toString());
}
}

void signOutUser(BuildContext context) async {
try {
final navigator = Navigator.of(context);
SharedPreferences prefs = await SharedPreferences.getInstance();
prefs.setString('x-auth-token', '');
navigator.pushAndRemoveUntil(MaterialPageRoute(builder: (context) => const AuthScreen()), (route) => false);
} catch (e) {
showSnackbar(context, e.toString());
}
}
}

0 comments on commit 6b93ee4

Please sign in to comment.