Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 22 additions & 0 deletions reddit/lib/app_router.dart
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,10 @@ import 'package:reddit/data/repository/message_screen_repository.dart';
import 'package:reddit/data/web_services/message_screen_web_services.dart';
import 'package:reddit/business_logic/cubit/cubit/inbox_screen_cubit.dart';
import 'package:reddit/business_logic/cubit/cubit/sent_screen_cubit.dart';
import 'package:reddit/presentation/screens/saved_posts.dart';
import 'package:reddit/data/repository/saved_posts_repo.dart';
import 'package:reddit/data/web_services/saved_posts_web_services.dart';
import 'package:reddit/business_logic/cubit/cubit/saved_posts_cubit.dart';

class AppRouter {
// platform
Expand Down Expand Up @@ -222,6 +226,10 @@ class AppRouter {
late PostFlairCubit postFlairCubit;
late CreatePostWebServices postWebServices;

late SavedPostsWebServices savedPostsWebServices;
late SavedPostsRepository savedPostsRepository;
late SavedPostsCubit savedPostsCubit;

late SortCubit subredditSortCubit;
AppRouter() {
// initialise repository and cubit objects
Expand Down Expand Up @@ -295,6 +303,10 @@ class AppRouter {
postSubredditPreviewCubit = PostSubredditPreviewCubit(postRepository);
postFlairCubit = PostFlairCubit(postRepository);
subredditSortCubit = SortCubit();
savedPostsWebServices = SavedPostsWebServices();
savedPostsRepository =
SavedPostsRepository(savedPostsWebServices: savedPostsWebServices);
savedPostsCubit = SavedPostsCubit(savedPostsRepository);
}
Route? generateRoute(RouteSettings settings) {
final arguments = settings.arguments;
Expand Down Expand Up @@ -833,6 +845,16 @@ class AppRouter {
} else {
break;
}
case savedPostsRoute:
if (true /*!isMobile*/) {
return MaterialPageRoute(
builder: (_) => BlocProvider(
create: (BuildContext context) => savedPostsCubit,
child: const SavedPosts(),
));
} else {
break;
}
case createPostScreenRoute:
return MaterialPageRoute(
builder: (_) => BlocProvider(
Expand Down
61 changes: 34 additions & 27 deletions reddit/lib/business_logic/cubit/cubit/inbox_screen_cubit.dart
Original file line number Diff line number Diff line change
@@ -1,27 +1,34 @@
import 'package:bloc/bloc.dart';
import 'package:meta/meta.dart';
import 'package:reddit/data/repository/message_screen_repository.dart';
import 'package:reddit/data/model/message_screen_model.dart';

part 'inbox_screen_state.dart';

class InboxScreenCubit extends Cubit<InboxScreenState> {
final MessageScreenRepository messageScreenRepository;
late List<AllMessageInboxModel> messagesInbox;

InboxScreenCubit(this.messageScreenRepository) : super(InboxScreenInitial());
void getAllMessageInboxModel() {
// To avoid state error when you leave the settings page
if (isClosed) return;
messageScreenRepository.getAllMessageInboxModel().then((messagesInbox) {
this.messagesInbox = messagesInbox.messages!;
print('Inbox data after Cubit');
print(this.messagesInbox.length);
for (var message in this.messagesInbox) {
print(message.printfunc());
}
emit(InboxScreenLoaded(messagesInbox.messages!));
this.messagesInbox = messagesInbox.messages!;
});
}
}
import 'package:bloc/bloc.dart';
import 'package:meta/meta.dart';
import 'package:reddit/data/repository/message_screen_repository.dart';
import 'package:reddit/data/model/message_screen_model.dart';

part 'inbox_screen_state.dart';

/// This Class Send Inbox Massages Data from Repo to UI using request to the endpoint `baseUrl/message/me/message` From Real API.
class InboxScreenCubit extends Cubit<InboxScreenState> {
final MessageScreenRepository messageScreenRepository;
late List<AllMessageInboxModel> messagesInbox;

InboxScreenCubit(this.messageScreenRepository) : super(InboxScreenInitial());

/// This function Send Inbox Massages Data from Repo to UI.
///
/// This function emits:
/// state [InboxScreenLoaded] after successfully Recieving the Data.
/// This function calls the function [MessageScreenRepository.getAllMessageInboxModel] to prepare the PATCH request.
void getAllMessageInboxModel() {
// To avoid state error when you leave the settings page
if (isClosed) return;
messageScreenRepository.getAllMessageInboxModel().then((messagesInbox) {
this.messagesInbox = messagesInbox.messages!;
print('Inbox data after Cubit');
print(this.messagesInbox.length);
for (var message in this.messagesInbox) {
print(message.printfunc());
}
emit(InboxScreenLoaded(messagesInbox.messages!));
this.messagesInbox = messagesInbox.messages!;
});
}
}
25 changes: 13 additions & 12 deletions reddit/lib/business_logic/cubit/cubit/inbox_screen_state.dart
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
part of 'inbox_screen_cubit.dart';

@immutable
abstract class InboxScreenState {}

class InboxScreenInitial extends InboxScreenState {}

class InboxScreenLoaded extends InboxScreenState {
final List<AllMessageInboxModel> messagesInbox;

InboxScreenLoaded(this.messagesInbox);
}
part of 'inbox_screen_cubit.dart';

@immutable
abstract class InboxScreenState {}

class InboxScreenInitial extends InboxScreenState {}

/// Messages Inbox [messagesInbox]is Recieved successfully
class InboxScreenLoaded extends InboxScreenState {
final List<AllMessageInboxModel> messagesInbox;

InboxScreenLoaded(this.messagesInbox);
}
34 changes: 34 additions & 0 deletions reddit/lib/business_logic/cubit/cubit/saved_posts_cubit.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
import 'package:bloc/bloc.dart';
import 'package:meta/meta.dart';
import 'package:reddit/data/repository/saved_posts_repo.dart';
import 'package:reddit/data/model/saved_posts_model.dart';

part 'saved_posts_state.dart';

/// This Class Send Saved Posts Data from Repo to UI using request to the endpoint `baseUrl/user/post/save` From Real API.
class SavedPostsCubit extends Cubit<SavedPostsState> {
late List<SavedPostsModel> savedPosts;
final SavedPostsRepository savedPostsRepository;

SavedPostsCubit(this.savedPostsRepository) : super(SavedPostsInitial());

/// This function Send Saved Posts Data from Repo to UI.
///
/// This function emits:
/// state [SavedPostsLoaded] after successfully Recieving the Data.
/// This function calls the function [SavedPostsRepository.getAllSavedPosts] to prepare the PATCH request.
void getAllSavedPosts() {
// To avoid state error when you leave the settings page
if (isClosed) return;
savedPostsRepository.getAllSavedPosts().then((savedPosts) {
this.savedPosts = savedPosts.savedPosts!;
print('saved Posts after Cubit');
print(this.savedPosts.length);
for (var savedPost in this.savedPosts) {
print(savedPost.printfunc());
}
emit(SavedPostsLoaded(savedPosts.savedPosts!));
this.savedPosts = savedPosts.savedPosts!;
});
}
}
13 changes: 13 additions & 0 deletions reddit/lib/business_logic/cubit/cubit/saved_posts_state.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
part of 'saved_posts_cubit.dart';

@immutable
abstract class SavedPostsState {}

class SavedPostsInitial extends SavedPostsState {}

/// Saved Posts [savedPosts]is Recieved successfully
class SavedPostsLoaded extends SavedPostsState {
final List<SavedPostsModel> savedPosts;

SavedPostsLoaded(this.savedPosts);
}
61 changes: 34 additions & 27 deletions reddit/lib/business_logic/cubit/cubit/sent_screen_cubit.dart
Original file line number Diff line number Diff line change
@@ -1,27 +1,34 @@
import 'package:bloc/bloc.dart';
import 'package:meta/meta.dart';
import 'package:reddit/data/repository/message_screen_repository.dart';
import 'package:reddit/data/model/message_screen_model.dart';

part 'sent_screen_state.dart';

class SentScreenCubit extends Cubit<SentScreenState> {
final MessageScreenRepository messageScreenRepository;
late List<AllSentMessageModel> sentMessages;
SentScreenCubit(this.messageScreenRepository) : super(SentScreenInitial());

void getAllSentMessages() {
// To avoid state error when you leave the settings page
if (isClosed) return;
messageScreenRepository.getAllSentMessageModel().then((sentMessages) {
this.sentMessages = sentMessages.messages!;
print('Sent data after Cubit');
print(this.sentMessages.length);
for (var message in this.sentMessages) {
print(message.printfunc());
}
emit(SentScreenLoaded(sentMessages.messages!));
this.sentMessages = sentMessages.messages!;
});
}
}
import 'package:bloc/bloc.dart';
import 'package:meta/meta.dart';
import 'package:reddit/data/repository/message_screen_repository.dart';
import 'package:reddit/data/model/message_screen_model.dart';

part 'sent_screen_state.dart';

/// This Class Send Massages Sent Data from Repo to UI using request to the endpoint `baseUrl/message/me/sent` From Real API.
class SentScreenCubit extends Cubit<SentScreenState> {
final MessageScreenRepository messageScreenRepository;
late List<AllSentMessageModel> sentMessages;

SentScreenCubit(this.messageScreenRepository) : super(SentScreenInitial());

/// This function Send Massages Sent Data from Repo to UI.
///
/// This function emits:
/// state [SentScreenLoaded] after successfully Recieving the Data.
/// This function calls the function [MessageScreenRepository.getAllSentMessageModel] to prepare the PATCH request.
void getAllSentMessages() {
// To avoid state error when you leave the settings page
if (isClosed) return;
messageScreenRepository.getAllSentMessageModel().then((sentMessages) {
this.sentMessages = sentMessages.messages!;
print('Sent data after Cubit');
print(this.sentMessages.length);
for (var message in this.sentMessages) {
print(message.printfunc());
}
emit(SentScreenLoaded(sentMessages.messages!));
this.sentMessages = sentMessages.messages!;
});
}
}
25 changes: 13 additions & 12 deletions reddit/lib/business_logic/cubit/cubit/sent_screen_state.dart
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
part of 'sent_screen_cubit.dart';

@immutable
abstract class SentScreenState {}

class SentScreenInitial extends SentScreenState {}

class SentScreenLoaded extends SentScreenState {
final List<AllSentMessageModel> sentMessages;

SentScreenLoaded(this.sentMessages);
}
part of 'sent_screen_cubit.dart';

@immutable
abstract class SentScreenState {}

class SentScreenInitial extends SentScreenState {}

/// Messages Sent [sentMessages]is Recieved successfully
class SentScreenLoaded extends SentScreenState {
final List<AllSentMessageModel> sentMessages;

SentScreenLoaded(this.sentMessages);
}
4 changes: 4 additions & 0 deletions reddit/lib/constants/strings.dart
Original file line number Diff line number Diff line change
Expand Up @@ -114,3 +114,7 @@ const sentRoute = '/sent';
// ----------Post Page Route-------------
//---------------------------------------
const postPageRoute = "/post_page";
//---------------------------------------
// ----------Saved Posts Route-----------
//---------------------------------------
const savedPostsRoute = "/saved_Posts";
Loading