refactor(diary): Cubit and state for diary

This commit is contained in:
2024-07-03 17:39:18 +03:00
parent ef6ea4ef56
commit 3c4afe96d6
6 changed files with 749 additions and 20 deletions

View File

@@ -1,22 +1,20 @@
/*import 'package:eatvio_app/core/app_export.dart';
import 'package:eatvio_app/core/app_export.dart';
import 'package:eatvio_app/features/diary/presentation/bloc/diary_state.dart';
import 'package:eatvio_app/features/diary/repositories/diary_repository.dart';
class DiaryCubit extends Cubit<DiaryState> {
final DiaryRepository blogPostRepository;
final DiaryRepository diaryRepository;
DiaryCubit({required this.blogPostRepository})
: super(const DiaryState.loading());
DiaryCubit({required this.diaryRepository}) : super(const DiaryState.loading());
loadDiary(String blogPostID) async {
loadDiary(String diaryID) async {
emit(const DiaryState.loading());
try {
final blogPost = await blogPostRepository.getDiary(blogPostID);
emit(DiaryState.loaded(blogPost: blogPost));
final diary = await diaryRepository.getDiary(await diaryRepository.getDiaryID().toString());
emit(DiaryState.loaded(diary: diary));
} catch (e) {
emit(DiaryState.error(errorMessage: e.toString()));
print(e);
}
}
}
*/

View File

@@ -1,4 +1,4 @@
/*import 'package:eatvio_app/features/diary/models/diary_model.dart';
import 'package:eatvio_app/features/diary/models/diary_model.dart';
import 'package:freezed_annotation/freezed_annotation.dart';
part 'diary_state.freezed.dart';
@@ -10,11 +10,10 @@ abstract class DiaryState with _$DiaryState {
const factory DiaryState.loading() = DiaryStateLoading;
const factory DiaryState.loaded({
required DiaryModel blogPost,
required DiaryModel diary,
}) = DiaryStateLoaded;
const factory DiaryState.error({
required String errorMessage,
}) = DiaryStateError;
}
*/

View File

@@ -0,0 +1,620 @@
// coverage:ignore-file
// GENERATED CODE - DO NOT MODIFY BY HAND
// ignore_for_file: type=lint
// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark
part of 'diary_state.dart';
// **************************************************************************
// FreezedGenerator
// **************************************************************************
T _$identity<T>(T value) => value;
final _privateConstructorUsedError = UnsupportedError(
'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#adding-getters-and-methods-to-our-models');
/// @nodoc
mixin _$DiaryState {
@optionalTypeArgs
TResult when<TResult extends Object?>(
TResult Function() $default, {
required TResult Function() loading,
required TResult Function(DiaryModel diary) loaded,
required TResult Function(String errorMessage) error,
}) =>
throw _privateConstructorUsedError;
@optionalTypeArgs
TResult? whenOrNull<TResult extends Object?>(
TResult? Function()? $default, {
TResult? Function()? loading,
TResult? Function(DiaryModel diary)? loaded,
TResult? Function(String errorMessage)? error,
}) =>
throw _privateConstructorUsedError;
@optionalTypeArgs
TResult maybeWhen<TResult extends Object?>(
TResult Function()? $default, {
TResult Function()? loading,
TResult Function(DiaryModel diary)? loaded,
TResult Function(String errorMessage)? error,
required TResult orElse(),
}) =>
throw _privateConstructorUsedError;
@optionalTypeArgs
TResult map<TResult extends Object?>(
TResult Function(_DiaryState value) $default, {
required TResult Function(DiaryStateLoading value) loading,
required TResult Function(DiaryStateLoaded value) loaded,
required TResult Function(DiaryStateError value) error,
}) =>
throw _privateConstructorUsedError;
@optionalTypeArgs
TResult? mapOrNull<TResult extends Object?>(
TResult? Function(_DiaryState value)? $default, {
TResult? Function(DiaryStateLoading value)? loading,
TResult? Function(DiaryStateLoaded value)? loaded,
TResult? Function(DiaryStateError value)? error,
}) =>
throw _privateConstructorUsedError;
@optionalTypeArgs
TResult maybeMap<TResult extends Object?>(
TResult Function(_DiaryState value)? $default, {
TResult Function(DiaryStateLoading value)? loading,
TResult Function(DiaryStateLoaded value)? loaded,
TResult Function(DiaryStateError value)? error,
required TResult orElse(),
}) =>
throw _privateConstructorUsedError;
}
/// @nodoc
abstract class $DiaryStateCopyWith<$Res> {
factory $DiaryStateCopyWith(
DiaryState value, $Res Function(DiaryState) then) =
_$DiaryStateCopyWithImpl<$Res, DiaryState>;
}
/// @nodoc
class _$DiaryStateCopyWithImpl<$Res, $Val extends DiaryState>
implements $DiaryStateCopyWith<$Res> {
_$DiaryStateCopyWithImpl(this._value, this._then);
// ignore: unused_field
final $Val _value;
// ignore: unused_field
final $Res Function($Val) _then;
}
/// @nodoc
abstract class _$$DiaryStateImplCopyWith<$Res> {
factory _$$DiaryStateImplCopyWith(
_$DiaryStateImpl value, $Res Function(_$DiaryStateImpl) then) =
__$$DiaryStateImplCopyWithImpl<$Res>;
}
/// @nodoc
class __$$DiaryStateImplCopyWithImpl<$Res>
extends _$DiaryStateCopyWithImpl<$Res, _$DiaryStateImpl>
implements _$$DiaryStateImplCopyWith<$Res> {
__$$DiaryStateImplCopyWithImpl(
_$DiaryStateImpl _value, $Res Function(_$DiaryStateImpl) _then)
: super(_value, _then);
}
/// @nodoc
class _$DiaryStateImpl implements _DiaryState {
const _$DiaryStateImpl();
@override
String toString() {
return 'DiaryState()';
}
@override
bool operator ==(Object other) {
return identical(this, other) ||
(other.runtimeType == runtimeType && other is _$DiaryStateImpl);
}
@override
int get hashCode => runtimeType.hashCode;
@override
@optionalTypeArgs
TResult when<TResult extends Object?>(
TResult Function() $default, {
required TResult Function() loading,
required TResult Function(DiaryModel diary) loaded,
required TResult Function(String errorMessage) error,
}) {
return $default();
}
@override
@optionalTypeArgs
TResult? whenOrNull<TResult extends Object?>(
TResult? Function()? $default, {
TResult? Function()? loading,
TResult? Function(DiaryModel diary)? loaded,
TResult? Function(String errorMessage)? error,
}) {
return $default?.call();
}
@override
@optionalTypeArgs
TResult maybeWhen<TResult extends Object?>(
TResult Function()? $default, {
TResult Function()? loading,
TResult Function(DiaryModel diary)? loaded,
TResult Function(String errorMessage)? error,
required TResult orElse(),
}) {
if ($default != null) {
return $default();
}
return orElse();
}
@override
@optionalTypeArgs
TResult map<TResult extends Object?>(
TResult Function(_DiaryState value) $default, {
required TResult Function(DiaryStateLoading value) loading,
required TResult Function(DiaryStateLoaded value) loaded,
required TResult Function(DiaryStateError value) error,
}) {
return $default(this);
}
@override
@optionalTypeArgs
TResult? mapOrNull<TResult extends Object?>(
TResult? Function(_DiaryState value)? $default, {
TResult? Function(DiaryStateLoading value)? loading,
TResult? Function(DiaryStateLoaded value)? loaded,
TResult? Function(DiaryStateError value)? error,
}) {
return $default?.call(this);
}
@override
@optionalTypeArgs
TResult maybeMap<TResult extends Object?>(
TResult Function(_DiaryState value)? $default, {
TResult Function(DiaryStateLoading value)? loading,
TResult Function(DiaryStateLoaded value)? loaded,
TResult Function(DiaryStateError value)? error,
required TResult orElse(),
}) {
if ($default != null) {
return $default(this);
}
return orElse();
}
}
abstract class _DiaryState implements DiaryState {
const factory _DiaryState() = _$DiaryStateImpl;
}
/// @nodoc
abstract class _$$DiaryStateLoadingImplCopyWith<$Res> {
factory _$$DiaryStateLoadingImplCopyWith(_$DiaryStateLoadingImpl value,
$Res Function(_$DiaryStateLoadingImpl) then) =
__$$DiaryStateLoadingImplCopyWithImpl<$Res>;
}
/// @nodoc
class __$$DiaryStateLoadingImplCopyWithImpl<$Res>
extends _$DiaryStateCopyWithImpl<$Res, _$DiaryStateLoadingImpl>
implements _$$DiaryStateLoadingImplCopyWith<$Res> {
__$$DiaryStateLoadingImplCopyWithImpl(_$DiaryStateLoadingImpl _value,
$Res Function(_$DiaryStateLoadingImpl) _then)
: super(_value, _then);
}
/// @nodoc
class _$DiaryStateLoadingImpl implements DiaryStateLoading {
const _$DiaryStateLoadingImpl();
@override
String toString() {
return 'DiaryState.loading()';
}
@override
bool operator ==(Object other) {
return identical(this, other) ||
(other.runtimeType == runtimeType && other is _$DiaryStateLoadingImpl);
}
@override
int get hashCode => runtimeType.hashCode;
@override
@optionalTypeArgs
TResult when<TResult extends Object?>(
TResult Function() $default, {
required TResult Function() loading,
required TResult Function(DiaryModel diary) loaded,
required TResult Function(String errorMessage) error,
}) {
return loading();
}
@override
@optionalTypeArgs
TResult? whenOrNull<TResult extends Object?>(
TResult? Function()? $default, {
TResult? Function()? loading,
TResult? Function(DiaryModel diary)? loaded,
TResult? Function(String errorMessage)? error,
}) {
return loading?.call();
}
@override
@optionalTypeArgs
TResult maybeWhen<TResult extends Object?>(
TResult Function()? $default, {
TResult Function()? loading,
TResult Function(DiaryModel diary)? loaded,
TResult Function(String errorMessage)? error,
required TResult orElse(),
}) {
if (loading != null) {
return loading();
}
return orElse();
}
@override
@optionalTypeArgs
TResult map<TResult extends Object?>(
TResult Function(_DiaryState value) $default, {
required TResult Function(DiaryStateLoading value) loading,
required TResult Function(DiaryStateLoaded value) loaded,
required TResult Function(DiaryStateError value) error,
}) {
return loading(this);
}
@override
@optionalTypeArgs
TResult? mapOrNull<TResult extends Object?>(
TResult? Function(_DiaryState value)? $default, {
TResult? Function(DiaryStateLoading value)? loading,
TResult? Function(DiaryStateLoaded value)? loaded,
TResult? Function(DiaryStateError value)? error,
}) {
return loading?.call(this);
}
@override
@optionalTypeArgs
TResult maybeMap<TResult extends Object?>(
TResult Function(_DiaryState value)? $default, {
TResult Function(DiaryStateLoading value)? loading,
TResult Function(DiaryStateLoaded value)? loaded,
TResult Function(DiaryStateError value)? error,
required TResult orElse(),
}) {
if (loading != null) {
return loading(this);
}
return orElse();
}
}
abstract class DiaryStateLoading implements DiaryState {
const factory DiaryStateLoading() = _$DiaryStateLoadingImpl;
}
/// @nodoc
abstract class _$$DiaryStateLoadedImplCopyWith<$Res> {
factory _$$DiaryStateLoadedImplCopyWith(_$DiaryStateLoadedImpl value,
$Res Function(_$DiaryStateLoadedImpl) then) =
__$$DiaryStateLoadedImplCopyWithImpl<$Res>;
@useResult
$Res call({DiaryModel diary});
$DiaryModelCopyWith<$Res> get diary;
}
/// @nodoc
class __$$DiaryStateLoadedImplCopyWithImpl<$Res>
extends _$DiaryStateCopyWithImpl<$Res, _$DiaryStateLoadedImpl>
implements _$$DiaryStateLoadedImplCopyWith<$Res> {
__$$DiaryStateLoadedImplCopyWithImpl(_$DiaryStateLoadedImpl _value,
$Res Function(_$DiaryStateLoadedImpl) _then)
: super(_value, _then);
@pragma('vm:prefer-inline')
@override
$Res call({
Object? diary = null,
}) {
return _then(_$DiaryStateLoadedImpl(
diary: null == diary
? _value.diary
: diary // ignore: cast_nullable_to_non_nullable
as DiaryModel,
));
}
@override
@pragma('vm:prefer-inline')
$DiaryModelCopyWith<$Res> get diary {
return $DiaryModelCopyWith<$Res>(_value.diary, (value) {
return _then(_value.copyWith(diary: value));
});
}
}
/// @nodoc
class _$DiaryStateLoadedImpl implements DiaryStateLoaded {
const _$DiaryStateLoadedImpl({required this.diary});
@override
final DiaryModel diary;
@override
String toString() {
return 'DiaryState.loaded(diary: $diary)';
}
@override
bool operator ==(Object other) {
return identical(this, other) ||
(other.runtimeType == runtimeType &&
other is _$DiaryStateLoadedImpl &&
(identical(other.diary, diary) || other.diary == diary));
}
@override
int get hashCode => Object.hash(runtimeType, diary);
@JsonKey(ignore: true)
@override
@pragma('vm:prefer-inline')
_$$DiaryStateLoadedImplCopyWith<_$DiaryStateLoadedImpl> get copyWith =>
__$$DiaryStateLoadedImplCopyWithImpl<_$DiaryStateLoadedImpl>(
this, _$identity);
@override
@optionalTypeArgs
TResult when<TResult extends Object?>(
TResult Function() $default, {
required TResult Function() loading,
required TResult Function(DiaryModel diary) loaded,
required TResult Function(String errorMessage) error,
}) {
return loaded(diary);
}
@override
@optionalTypeArgs
TResult? whenOrNull<TResult extends Object?>(
TResult? Function()? $default, {
TResult? Function()? loading,
TResult? Function(DiaryModel diary)? loaded,
TResult? Function(String errorMessage)? error,
}) {
return loaded?.call(diary);
}
@override
@optionalTypeArgs
TResult maybeWhen<TResult extends Object?>(
TResult Function()? $default, {
TResult Function()? loading,
TResult Function(DiaryModel diary)? loaded,
TResult Function(String errorMessage)? error,
required TResult orElse(),
}) {
if (loaded != null) {
return loaded(diary);
}
return orElse();
}
@override
@optionalTypeArgs
TResult map<TResult extends Object?>(
TResult Function(_DiaryState value) $default, {
required TResult Function(DiaryStateLoading value) loading,
required TResult Function(DiaryStateLoaded value) loaded,
required TResult Function(DiaryStateError value) error,
}) {
return loaded(this);
}
@override
@optionalTypeArgs
TResult? mapOrNull<TResult extends Object?>(
TResult? Function(_DiaryState value)? $default, {
TResult? Function(DiaryStateLoading value)? loading,
TResult? Function(DiaryStateLoaded value)? loaded,
TResult? Function(DiaryStateError value)? error,
}) {
return loaded?.call(this);
}
@override
@optionalTypeArgs
TResult maybeMap<TResult extends Object?>(
TResult Function(_DiaryState value)? $default, {
TResult Function(DiaryStateLoading value)? loading,
TResult Function(DiaryStateLoaded value)? loaded,
TResult Function(DiaryStateError value)? error,
required TResult orElse(),
}) {
if (loaded != null) {
return loaded(this);
}
return orElse();
}
}
abstract class DiaryStateLoaded implements DiaryState {
const factory DiaryStateLoaded({required final DiaryModel diary}) =
_$DiaryStateLoadedImpl;
DiaryModel get diary;
@JsonKey(ignore: true)
_$$DiaryStateLoadedImplCopyWith<_$DiaryStateLoadedImpl> get copyWith =>
throw _privateConstructorUsedError;
}
/// @nodoc
abstract class _$$DiaryStateErrorImplCopyWith<$Res> {
factory _$$DiaryStateErrorImplCopyWith(_$DiaryStateErrorImpl value,
$Res Function(_$DiaryStateErrorImpl) then) =
__$$DiaryStateErrorImplCopyWithImpl<$Res>;
@useResult
$Res call({String errorMessage});
}
/// @nodoc
class __$$DiaryStateErrorImplCopyWithImpl<$Res>
extends _$DiaryStateCopyWithImpl<$Res, _$DiaryStateErrorImpl>
implements _$$DiaryStateErrorImplCopyWith<$Res> {
__$$DiaryStateErrorImplCopyWithImpl(
_$DiaryStateErrorImpl _value, $Res Function(_$DiaryStateErrorImpl) _then)
: super(_value, _then);
@pragma('vm:prefer-inline')
@override
$Res call({
Object? errorMessage = null,
}) {
return _then(_$DiaryStateErrorImpl(
errorMessage: null == errorMessage
? _value.errorMessage
: errorMessage // ignore: cast_nullable_to_non_nullable
as String,
));
}
}
/// @nodoc
class _$DiaryStateErrorImpl implements DiaryStateError {
const _$DiaryStateErrorImpl({required this.errorMessage});
@override
final String errorMessage;
@override
String toString() {
return 'DiaryState.error(errorMessage: $errorMessage)';
}
@override
bool operator ==(Object other) {
return identical(this, other) ||
(other.runtimeType == runtimeType &&
other is _$DiaryStateErrorImpl &&
(identical(other.errorMessage, errorMessage) ||
other.errorMessage == errorMessage));
}
@override
int get hashCode => Object.hash(runtimeType, errorMessage);
@JsonKey(ignore: true)
@override
@pragma('vm:prefer-inline')
_$$DiaryStateErrorImplCopyWith<_$DiaryStateErrorImpl> get copyWith =>
__$$DiaryStateErrorImplCopyWithImpl<_$DiaryStateErrorImpl>(
this, _$identity);
@override
@optionalTypeArgs
TResult when<TResult extends Object?>(
TResult Function() $default, {
required TResult Function() loading,
required TResult Function(DiaryModel diary) loaded,
required TResult Function(String errorMessage) error,
}) {
return error(errorMessage);
}
@override
@optionalTypeArgs
TResult? whenOrNull<TResult extends Object?>(
TResult? Function()? $default, {
TResult? Function()? loading,
TResult? Function(DiaryModel diary)? loaded,
TResult? Function(String errorMessage)? error,
}) {
return error?.call(errorMessage);
}
@override
@optionalTypeArgs
TResult maybeWhen<TResult extends Object?>(
TResult Function()? $default, {
TResult Function()? loading,
TResult Function(DiaryModel diary)? loaded,
TResult Function(String errorMessage)? error,
required TResult orElse(),
}) {
if (error != null) {
return error(errorMessage);
}
return orElse();
}
@override
@optionalTypeArgs
TResult map<TResult extends Object?>(
TResult Function(_DiaryState value) $default, {
required TResult Function(DiaryStateLoading value) loading,
required TResult Function(DiaryStateLoaded value) loaded,
required TResult Function(DiaryStateError value) error,
}) {
return error(this);
}
@override
@optionalTypeArgs
TResult? mapOrNull<TResult extends Object?>(
TResult? Function(_DiaryState value)? $default, {
TResult? Function(DiaryStateLoading value)? loading,
TResult? Function(DiaryStateLoaded value)? loaded,
TResult? Function(DiaryStateError value)? error,
}) {
return error?.call(this);
}
@override
@optionalTypeArgs
TResult maybeMap<TResult extends Object?>(
TResult Function(_DiaryState value)? $default, {
TResult Function(DiaryStateLoading value)? loading,
TResult Function(DiaryStateLoaded value)? loaded,
TResult Function(DiaryStateError value)? error,
required TResult orElse(),
}) {
if (error != null) {
return error(this);
}
return orElse();
}
}
abstract class DiaryStateError implements DiaryState {
const factory DiaryStateError({required final String errorMessage}) =
_$DiaryStateErrorImpl;
String get errorMessage;
@JsonKey(ignore: true)
_$$DiaryStateErrorImplCopyWith<_$DiaryStateErrorImpl> get copyWith =>
throw _privateConstructorUsedError;
}

View File

@@ -1,17 +1,24 @@
/*import 'package:eatvio_app/features/diary/models/diary_model.dart';
import 'package:eatvio_app/features/diary/models/diary_model.dart';
import 'package:eatvio_app/features/diary/services/diary_service.dart';
class DiaryRepository {
final DiaryService blogPostService;
final DiaryService diaryService;
DiaryRepository({required this.blogPostService});
DiaryRepository({required this.diaryService});
Future<DiaryModel> getDiary(String blogPostID) async {
Future<int> getDiaryID() async {
try {
return await blogPostService.getDiary(blogPostID);
return await diaryService.getDiaryID();
} catch (e) {
rethrow;
}
}
Future<DiaryModel> getDiary(String diaryID) async {
try {
return await diaryService.getDiary(diaryID);
} catch (e) {
rethrow;
}
}
}
*/

View File

@@ -1,4 +1,4 @@
/*import 'package:dio/dio.dart';
import 'package:dio/dio.dart';
import 'package:eatvio_app/features/diary/models/diary_model.dart';
import 'package:retrofit/retrofit.dart';
@@ -8,7 +8,9 @@ part 'diary_service.g.dart';
abstract class DiaryService {
factory DiaryService(Dio dio, {String baseUrl}) = _DiaryService;
@GET('/feed/show/{id}')
@GET('/diary/index')
Future<int> getDiaryID();
@GET('/feed/{id}/show/')
Future<DiaryModel> getDiary(@Path() String id);
}
*/

View File

@@ -0,0 +1,103 @@
// GENERATED CODE - DO NOT MODIFY BY HAND
part of 'diary_service.dart';
// **************************************************************************
// RetrofitGenerator
// **************************************************************************
// ignore_for_file: unnecessary_brace_in_string_interps,no_leading_underscores_for_local_identifiers,unused_element
class _DiaryService implements DiaryService {
_DiaryService(
this._dio, {
this.baseUrl,
});
final Dio _dio;
String? baseUrl;
@override
Future<int> getDiaryID() async {
final _extra = <String, dynamic>{};
final queryParameters = <String, dynamic>{};
final _headers = <String, dynamic>{};
const Map<String, dynamic>? _data = null;
final _result = await _dio.fetch<int>(_setStreamType<int>(Options(
method: 'GET',
headers: _headers,
extra: _extra,
)
.compose(
_dio.options,
'/diary/index',
queryParameters: queryParameters,
data: _data,
)
.copyWith(
baseUrl: _combineBaseUrls(
_dio.options.baseUrl,
baseUrl,
))));
final _value = _result.data!;
return _value;
}
@override
Future<DiaryModel> getDiary(String id) async {
final _extra = <String, dynamic>{};
final queryParameters = <String, dynamic>{};
final _headers = <String, dynamic>{};
const Map<String, dynamic>? _data = null;
final _result = await _dio
.fetch<Map<String, dynamic>>(_setStreamType<DiaryModel>(Options(
method: 'GET',
headers: _headers,
extra: _extra,
)
.compose(
_dio.options,
'/feed/${id}/show/',
queryParameters: queryParameters,
data: _data,
)
.copyWith(
baseUrl: _combineBaseUrls(
_dio.options.baseUrl,
baseUrl,
))));
final _value = DiaryModel.fromJson(_result.data!);
return _value;
}
RequestOptions _setStreamType<T>(RequestOptions requestOptions) {
if (T != dynamic &&
!(requestOptions.responseType == ResponseType.bytes ||
requestOptions.responseType == ResponseType.stream)) {
if (T == String) {
requestOptions.responseType = ResponseType.plain;
} else {
requestOptions.responseType = ResponseType.json;
}
}
return requestOptions;
}
String _combineBaseUrls(
String dioBaseUrl,
String? baseUrl,
) {
if (baseUrl == null || baseUrl.trim().isEmpty) {
return dioBaseUrl;
}
final url = Uri.parse(baseUrl);
if (url.isAbsolute) {
return url.toString();
}
return Uri.parse(dioBaseUrl).resolveUri(url).toString();
}
}