Skip to content

Commit

Permalink
add button, update statistic screen
Browse files Browse the repository at this point in the history
  • Loading branch information
a4ifka committed Apr 15, 2024
1 parent 551eab0 commit 1d9f227
Show file tree
Hide file tree
Showing 11 changed files with 126 additions and 27 deletions.
7 changes: 7 additions & 0 deletions lib/feature/data/datasources/user_remote_data_source.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import 'package:supabase_flutter/supabase_flutter.dart';

abstract class UserRemoteDataSources {
Future<AuthResponse> signInUser(String email, String password);
Future<void> signOutUser();
}

class UserRemoteDataSourcesImpl extends UserRemoteDataSources {
Expand All @@ -16,4 +17,10 @@ class UserRemoteDataSourcesImpl extends UserRemoteDataSources {
password: password,
);
}

@override
Future<void> signOutUser() async {
return await supabaseClient.auth.signOut();
}

}
12 changes: 12 additions & 0 deletions lib/feature/data/repositories/user_repository_impl.dart
Original file line number Diff line number Diff line change
Expand Up @@ -22,5 +22,17 @@ class UserRepositoryImpl extends UserRepository {
return Left(ServerFailure(message: error.toString()));
}
}

@override
Future<Either<Failure, void>> signOut() async{
try {
final respone = await userRemoteDataSources.signOutUser();
return Right(respone);
} on ServerFailure catch(error) {
return Left(ServerFailure(message: error.message));
} catch(error){
return Left(ServerFailure(message: error.toString()));
}
}
}

1 change: 1 addition & 0 deletions lib/feature/domain/repositories/user_repository.dart
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,5 @@ import 'package:supabase_flutter/supabase_flutter.dart';

abstract class UserRepository {
Future<Either<Failure, AuthResponse>> signIn(String email, String password);
Future<Either<Failure, void>> signOut();
}
14 changes: 14 additions & 0 deletions lib/feature/domain/usecases/sign_out_user.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
import 'package:dartz/dartz.dart';
import 'package:iiko_delivery/core/error/failure.dart';
import 'package:iiko_delivery/feature/domain/repositories/user_repository.dart';

class SignOutUser {
final UserRepository userRepository;

SignOutUser({required this.userRepository});

Future<Either<Failure, void>> call() async {
final response = await userRepository.signOut();
return response;
}
}
28 changes: 28 additions & 0 deletions lib/feature/presentation/bloc/sign_out_cubit/sign_out_cubit.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:iiko_delivery/core/error/failure.dart';
import 'package:iiko_delivery/feature/domain/usecases/sign_out_user.dart';
import 'package:iiko_delivery/feature/presentation/bloc/sign_out_cubit/sign_out_state.dart';

class SignOutUserCubit extends Cubit<SignOutUserState> {
final SignOutUser signOutUser;

SignOutUserCubit({required this.signOutUser}) : super(SignOutUserInitial());

auth() async {
emit(SignOutUserStart());

final failureOrUser = await signOutUser();
emit(failureOrUser.fold(
(failure) => SignOutUserError(message: mapFailureFromMessage(failure)),
(signOut) => const SignOutUserLoaded()));
}

String mapFailureFromMessage(Failure failure) {
switch (failure.runtimeType) {
case ServerFailure _:
return "ServerFailure";
default:
return "Unexpected error";
}
}
}
25 changes: 25 additions & 0 deletions lib/feature/presentation/bloc/sign_out_cubit/sign_out_state.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
import 'package:equatable/equatable.dart';

abstract class SignOutUserState extends Equatable {
const SignOutUserState();

@override
List<Object?> get props => [];
}

class SignOutUserInitial extends SignOutUserState {}

class SignOutUserStart extends SignOutUserState {}

class SignOutUserLoaded extends SignOutUserState {
const SignOutUserLoaded();
}

class SignOutUserError extends SignOutUserState {
final String message;

const SignOutUserError({required this.message});

@override
List<Object?> get props => [message];
}
18 changes: 11 additions & 7 deletions lib/feature/presentation/pages/order_detail_screen.dart
Original file line number Diff line number Diff line change
Expand Up @@ -55,9 +55,9 @@ class _OrderDetailPageState extends State<OrderDetailPage> {
return Scaffold(
appBar: AppBar(
centerTitle: true,
title: const Text(
"Номер заказа",
style: TextStyle(
title: Text(
"Номер заказа | $orderId",
style: const TextStyle(
color: Color(0xFF191817),
fontSize: 20,
fontFamily: 'Nunito',
Expand All @@ -66,15 +66,19 @@ class _OrderDetailPageState extends State<OrderDetailPage> {
),
),
leading: IconButton(
onPressed: () {}, icon: const Icon(Icons.exit_to_app_outlined)),
onPressed: () {
Navigator.pop(context);
Navigator.pushNamed(context, "/orders");
},
icon: const Icon(Icons.exit_to_app_outlined)),
backgroundColor: const Color(0xFFFAF7F5),
),
body: Container(
color: Color(0xFFFAF7F5),
color: const Color(0xFFFAF7F5),
child: Padding(
padding: EdgeInsets.only(right: 20, left: 20, top: 16),
padding: const EdgeInsets.only(right: 20, left: 20, top: 16),
child: Container(
color: Color(0xFFFAF7F5),
color: const Color(0xFFFAF7F5),
constraints: BoxConstraints(
maxHeight: MediaQuery.of(context).size.height,
),
Expand Down
13 changes: 8 additions & 5 deletions lib/feature/presentation/pages/order_screen.dart
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:iiko_delivery/feature/presentation/bloc/daily_salary_cubit/daily_salary_cubit.dart';
import 'package:iiko_delivery/feature/presentation/bloc/orders_cost_cubit/orders_cost_cubit.dart';
import 'package:iiko_delivery/feature/presentation/bloc/sign_out_cubit/sign_out_cubit.dart';
import 'package:iiko_delivery/feature/presentation/bloc/sign_out_cubit/sign_out_state.dart';
import 'package:intl/intl.dart';
import 'package:iiko_delivery/feature/presentation/bloc/order_cubit/order_cubit.dart';
import 'package:iiko_delivery/feature/presentation/bloc/order_cubit/order_state.dart';
Expand All @@ -26,8 +28,6 @@ class _HomePageState extends State<HomePage> {
late bool isDelivered = false;
final today = DateTime.now();



@override
Widget build(BuildContext context) {
context.read<OrderCubit>().getUserOrders(isDelivered, today);
Expand All @@ -40,7 +40,7 @@ class _HomePageState extends State<HomePage> {
schema: 'public',
table: 'Orders',
callback: (payload) {
context.read<OrderCubit>().getUserOrders(isDelivered, today);
context.read<SignOutUserCubit>().signOutUser();
print('callback');
})
.subscribe();
Expand All @@ -59,7 +59,10 @@ class _HomePageState extends State<HomePage> {
),
),
leading: IconButton(
onPressed: () {}, icon: const Icon(Icons.exit_to_app_outlined)),
onPressed: () {
context.read<OrdersCostCubit>().getOrdersCost(isDelivered);
},
icon: const Icon(Icons.exit_to_app_outlined)),
backgroundColor: const Color(0xFFFAF7F5),
),
body: Container(
Expand Down Expand Up @@ -228,7 +231,7 @@ class _HomePageState extends State<HomePage> {
),
),
),
)
),
],
),
),
Expand Down
27 changes: 14 additions & 13 deletions lib/feature/presentation/widgets/bar_graph_widget.dart
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ class _BarGraphWidgetState extends State<BarGraphWidget> {
width: 50,
borderRadius: BorderRadius.circular(5),
color: showingTooltip == i
? Colors.green
? const Color(0xFF78C4A4)
: Colors.blueGrey.shade100),
]);
barDataList.add(barData);
Expand Down Expand Up @@ -253,17 +253,7 @@ class _BarGraphWidgetState extends State<BarGraphWidget> {
enabled: true,
touchTooltipData: BarTouchTooltipData(
getTooltipItem: (group, groupIndex, rod, rodIndex) {
context.read<DailyOrderCubit>().getUserOrdersByDay(
true,
DateTime(
widget.selectedDate.year,
widget.selectedDate.month,
groupIndex + 1,
widget.selectedDate.hour,
widget.selectedDate.minute,
widget.selectedDate.second,
widget.selectedDate.millisecond,
widget.selectedDate.microsecond));

return BarTooltipItem(
'${widget.salary[groupIndex].toString()}₽',
const TextStyle(
Expand All @@ -284,6 +274,17 @@ class _BarGraphWidgetState extends State<BarGraphWidget> {
showingTooltip = -1;
} else {
showingTooltip = x;
context.read<DailyOrderCubit>().getUserOrdersByDay(
true,
DateTime(
widget.selectedDate.year,
widget.selectedDate.month,
response.spot!.touchedBarGroupIndex + 1,
widget.selectedDate.hour,
widget.selectedDate.minute,
widget.selectedDate.second,
widget.selectedDate.millisecond,
widget.selectedDate.microsecond));
}
});
}
Expand Down Expand Up @@ -345,4 +346,4 @@ class _BarGraphWidgetState extends State<BarGraphWidget> {
),
);
}
}
}
2 changes: 2 additions & 0 deletions lib/locator_service.dart
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ import 'package:iiko_delivery/feature/presentation/bloc/item_cubit/item_cubit.da
import 'package:iiko_delivery/feature/presentation/bloc/location_cubit/location_cubit.dart';
import 'package:iiko_delivery/feature/presentation/bloc/month_salary_cubit/month_salary_cubit.dart';
import 'package:iiko_delivery/feature/presentation/bloc/set_delivered_cubit/set_delivered_cubit.dart';
import 'package:iiko_delivery/feature/presentation/bloc/sign_out_cubit/sign_out_cubit.dart';
import 'package:iiko_delivery/feature/presentation/bloc/statistic_cubit/statistic_cubit.dart';
import 'package:iiko_delivery/feature/presentation/bloc/order_cubit/order_cubit.dart';

Expand Down Expand Up @@ -53,6 +54,7 @@ Future<void> init() async {
sl.registerFactory<DailyOrderCubit>(() => DailyOrderCubit(sl()));
sl.registerFactory<SetDeliveredCubit>(
() => SetDeliveredCubit(setOrderIsDeliveredUseCase: sl()));
sl.registerFactory<SignOutUserCubit>(() => sl());
// UseCases
sl.registerLazySingleton<GetUserOrders>(
() => GetUserOrders(orderRepository: sl()));
Expand Down
6 changes: 4 additions & 2 deletions lib/main.dart
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import 'package:iiko_delivery/feature/presentation/bloc/item_cubit/item_cubit.da
import 'package:iiko_delivery/feature/presentation/bloc/location_cubit/location_cubit.dart';
import 'package:iiko_delivery/feature/presentation/bloc/month_salary_cubit/month_salary_cubit.dart';
import 'package:iiko_delivery/feature/presentation/bloc/set_delivered_cubit/set_delivered_cubit.dart';
import 'package:iiko_delivery/feature/presentation/bloc/sign_out_cubit/sign_out_cubit.dart';
import 'package:iiko_delivery/feature/presentation/bloc/statistic_cubit/statistic_cubit.dart';
import 'package:iiko_delivery/feature/presentation/bloc/order_cubit/order_cubit.dart';
import 'package:iiko_delivery/feature/presentation/bloc/orders_cost_cubit/orders_cost_cubit.dart';
Expand Down Expand Up @@ -46,8 +47,6 @@ class MyApp extends StatelessWidget {

@override
Widget build(BuildContext context) {


return MultiBlocProvider(
providers: [
BlocProvider<OrderCubit>(
Expand Down Expand Up @@ -80,6 +79,9 @@ class MyApp extends StatelessWidget {
BlocProvider<SetDeliveredCubit>(
create: (context) => sl<SetDeliveredCubit>(),
),
BlocProvider<SignOutUserCubit>(
create: (context) => sl<SignOutUserCubit>(),
),
],
child: MaterialApp(
debugShowCheckedModeBanner: false,
Expand Down

0 comments on commit 1d9f227

Please sign in to comment.