Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Enhancing UX for adding content #2213

Merged
merged 3 commits into from
Dec 5, 2023
Merged
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
3 changes: 3 additions & 0 deletions lib/constants/routing_constants.dart
Original file line number Diff line number Diff line change
Expand Up @@ -99,4 +99,7 @@ class Routes {

/// static variable to access pinnedpostscreen.
static const String pinnedPostScreen = '/pinnedpostscreen';

/// static variable to access addPostScreen.
static const String addPostScreen = '/addpostscreen';
}
9 changes: 8 additions & 1 deletion lib/router.dart
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import 'package:talawa/models/task/task_model.dart';
import 'package:talawa/splash_screen.dart';
import 'package:talawa/view_model/after_auth_view_models/chat_view_models/direct_chat_view_model.dart';
import 'package:talawa/view_model/after_auth_view_models/event_view_models/create_event_view_model.dart';
import 'package:talawa/views/after_auth_screens/add_post_page.dart';
import 'package:talawa/views/after_auth_screens/app_settings/app_settings_page.dart';
import 'package:talawa/views/after_auth_screens/chat/chat_message_screen.dart';
import 'package:talawa/views/after_auth_screens/chat/select_contact.dart';
Expand Down Expand Up @@ -302,11 +303,17 @@ Route<dynamic> generateRoute(RouteSettings settings) {
task: task,
),
);
// Returns the DemoPageView Widget by default
case Routes.selectContact:
return MaterialPageRoute(
builder: (context) => const SelectContact(key: Key('selectContact')),
);
case Routes.addPostScreen:
return MaterialPageRoute(
builder: (context) => const AddPost(
key: Key('addPostScreen'),
),
);
// Returns the DemoPageView Widget by default
default:
return MaterialPageRoute(
builder: (context) => const DemoPageView(
Expand Down
15 changes: 0 additions & 15 deletions lib/view_model/main_screen_view_model.dart
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ import 'package:talawa/plugins/fetch_plugin_list.dart';
import 'package:talawa/services/size_config.dart';
import 'package:talawa/utils/app_localization.dart';
import 'package:talawa/view_model/base_view_model.dart';
import 'package:talawa/views/after_auth_screens/add_post_page.dart';
// import 'package:talawa/views/after_auth_screens/chat/chat_list_screen.dart';
import 'package:talawa/views/after_auth_screens/events/explore_events.dart';
import 'package:talawa/views/after_auth_screens/feed/organization_feed.dart';
Expand Down Expand Up @@ -232,13 +231,6 @@ class MainScreenViewModel extends BaseModel {
),
label: AppLocalizations.of(context)!.strictTranslate('Events'),
),
BottomNavigationBarItem(
icon: Icon(
Icons.add_box,
key: keyBNPost,
),
label: AppLocalizations.of(context)!.strictTranslate('Add'),
),

/// Makes chat inaccessible for the user
//TODO: add chat functionality
Expand Down Expand Up @@ -267,13 +259,6 @@ class MainScreenViewModel extends BaseModel {
key: const Key('ExploreEvents'),
homeModel: this,
),
AddPost(
key: const Key('AddPost'),
drawerKey: MainScreenViewModel.scaffoldKey,
),
// const ChatPage(
// key: Key('Chats'),
// ),
ProfilePage(
key: keySPEditProfile,
homeModel: this,
Expand Down
10 changes: 8 additions & 2 deletions lib/views/after_auth_screens/add_post_page.dart
Original file line number Diff line number Diff line change
Expand Up @@ -39,15 +39,21 @@ class AddPost extends StatelessWidget {
//TODO: showing the null pointer exception
key: const Key('add_post_icon_button1'),
color: Theme.of(context).iconTheme.color,
icon: const Icon(Icons.menu),
onPressed: () => drawerKey!.currentState!.openDrawer(),
icon: const Icon(
Icons.arrow_back,
size: 36,
),
onPressed: () {
navigationService.pop();
},
),
// button to upload the post.
actions: [
TextButton(
key: const Key('add_post_text_btn1'),
onPressed: () {
model.uploadPost();
navigationService.pop();
// convertImageToBase64(sampleBase64Image);
},
child: Text(
Expand Down
16 changes: 15 additions & 1 deletion lib/views/after_auth_screens/feed/organization_feed.dart
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
import 'package:flutter/material.dart';
import 'package:talawa/locator.dart';
import 'package:talawa/services/size_config.dart';
import 'package:talawa/view_model/after_auth_view_models/feed_view_models/organization_feed_view_model.dart';
import 'package:talawa/view_model/main_screen_view_model.dart';
import 'package:talawa/views/base_view.dart';
Expand All @@ -24,8 +26,20 @@ class OrganizationFeed extends StatelessWidget {
return BaseView<OrganizationFeedViewModel>(
onModelReady: (model) => model.initialise(isTest: forTest),
builder: (context, model, child) {
print(model.posts);
return Scaffold(
floatingActionButton: FloatingActionButton(
shape: const CircleBorder(side: BorderSide.none),
key: const Key('floating_action_btn'),
backgroundColor: Colors.green,
onPressed: () {
navigationService.pushScreen('/addpostscreen');
},
child: Icon(
Icons.add,
size: SizeConfig.screenHeight! * 0.045,
color: Colors.white,
),
),
appBar: AppBar(
// AppBar returns a widget for the header of the page.
backgroundColor: Colors.green,
Expand Down
12 changes: 12 additions & 0 deletions test/router_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import 'package:talawa/models/user/user_info.dart';
import 'package:talawa/router.dart';
import 'package:talawa/splash_screen.dart';
import 'package:talawa/view_model/after_auth_view_models/chat_view_models/direct_chat_view_model.dart';
import 'package:talawa/views/after_auth_screens/add_post_page.dart';
import 'package:talawa/views/after_auth_screens/app_settings/app_settings_page.dart';
import 'package:talawa/views/after_auth_screens/chat/chat_message_screen.dart';
import 'package:talawa/views/after_auth_screens/chat/select_contact.dart';
Expand Down Expand Up @@ -338,6 +339,17 @@ void main() {
}
});

testWidgets('Test for addPostpage route', (WidgetTester tester) async {
final route =
generateRoute(const RouteSettings(name: Routes.addPostScreen));
expect(route, isA<MaterialPageRoute>());
if (route is MaterialPageRoute) {
final builder = route.builder;
final widget = builder(MockBuildContext());
expect(widget, isA<AddPost>());
}
});

testWidgets('Test for default DemoPage route', (WidgetTester tester) async {
final route = generateRoute(const RouteSettings(name: 'default'));
expect(route, isA<MaterialPageRoute>());
Expand Down
10 changes: 10 additions & 0 deletions test/widget_tests/after_auth_screens/add_post_page_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,16 @@ void main() {
});

group('createAddPostScreen Test', () {
testWidgets('check if back button in app bar works', (tester) async {
await tester.pumpWidget(createAddPostScreen());
await tester.pump();
final backButtonFinder = find.byKey(const Key('add_post_icon_button1'));
expect(backButtonFinder, findsOneWidget);
await tester.tap(backButtonFinder);
await tester.pump();
verify(navigationService.pop()).called(1);
});

testWidgets('check if createAddPostScreen shows up', (tester) async {
await tester.pumpWidget(createAddPostScreen());
await tester.pump();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -168,4 +168,15 @@ void main() {
await tester.pumpWidget(createOrganizationFeedScreen2(homeModel: model));
await tester.pumpAndSettle(const Duration(seconds: 1));
});
testWidgets('check if floating action button is visible and functional',
(tester) async {
final model = locator<MainScreenViewModel>();
await tester.pumpWidget(createOrganizationFeedScreen(homeModel: model));
await tester.pump();
final fabFinder = find.byKey(const Key('floating_action_btn'));
expect(fabFinder, findsOneWidget);
await tester.tap(fabFinder);
await tester.pump();
verify(navigationService.pushScreen('/addpostscreen')).called(1);
});
}
Loading