Skip to content

Commit

Permalink
feat: improve join module
Browse files Browse the repository at this point in the history
  • Loading branch information
luisburgos committed Sep 24, 2022
1 parent 0092b3e commit 862c6bf
Show file tree
Hide file tree
Showing 10 changed files with 227 additions and 101 deletions.
6 changes: 1 addition & 5 deletions example/lib/get/modules/join_module.dart
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,6 @@ class JoinRoute extends GetRoute {
@override
GetPage get asGetPage => GetPage(
name: JoinPage.routeName,
page: () => JoinPage(
onNewTriviaGameTap: () {
throw UnimplementedError('Must go to JoinPage');
},
),
page: () => const JoinPage(),
);
}
28 changes: 7 additions & 21 deletions example/lib/get/modules/trivia_module.dart
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import 'package:buzz/buzz.dart';
import 'package:example/shared/app_routes.dart';
import 'package:flutter/cupertino.dart';
import 'package:get/get.dart';

import '../../shared/modules/trivia/page.dart';
Expand All @@ -23,29 +22,16 @@ class TriviaRoute extends GetRoute {
@override
GetPage get asGetPage => GetPage(
name: AppRoutes.trivia,
page: () => TriviaPage(
onStartPlayTap: (triviaId) {
Buzz.fire(NavigateToTriviaPlay(triviaId: triviaId));
},
onSeeScoreboardTap: (triviaId) {
Buzz.fire(NavigateToTriviaScoreboard(triviaId: triviaId));
},
onCopyJoinLinkTap: (joinLink) {
//TODO: Implement
debugPrint(joinLink);
},
onGoToStatusTap: (triviaId, status) {
Buzz.fire(
NavigateToTrivia(
triviaId: triviaId,
status: status,
),
);
},
),
page: () => const TriviaPage(),
);
}

class CopyToClipBoardCommand extends Command {
CopyToClipBoardCommand(this.content);

final String content;
}

class TriviaPlayRoute extends GetRoute {
TriviaPlayRoute();

Expand Down
61 changes: 61 additions & 0 deletions example/lib/shared/modules/join/join_view.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
import 'package:buzz/buzz.dart';
import 'package:core/core.dart';
import 'package:example/shared/components/labeled_section.dart';
import 'package:example/shared/modules/trivia/components/trivia_data_view.dart';
import 'package:example/shared/modules/trivia/page.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';

class JoinView extends StatelessWidget {
const JoinView({
Key? key,
required this.joinCode,
}) : super(key: key);

final String joinCode;

@override
Widget build(BuildContext context) {
final controller = Get.put(
JoinViewController(joinCode),
tag: joinCode,
);

return Obx(() {
final joinCode = controller.joinCode();

return LabeledSection(
label: 'joinCode: $joinCode',
child: Column(
children: [
const TriviaDataView(
hostName: 'hostName',
triviaName: 'hostName',
triviaDescription: 'hostName',
triviaMainQuestion: 'hostName',
),
MainActionWidget(
action: MainAction(
label: 'Join to $joinCode',
onPressed: () {
debugPrint('$runtimeType onJoinConfirmTap');
controller.onJoinConfirmTap('someId');
},
),
),
],
),
);
});
}
}

class JoinViewController extends GetxController {
late Rx<String> joinCode;

JoinViewController(String code) : joinCode = code.obs;

void onJoinConfirmTap(String triviaId) {
Buzz.fire(NavigateToTrivia(triviaId: triviaId));
}
}
31 changes: 15 additions & 16 deletions example/lib/shared/modules/join/page.dart
Original file line number Diff line number Diff line change
@@ -1,30 +1,29 @@
import 'package:core/core.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';

import 'join_view.dart';

class JoinPage extends StatelessWidget {
static const String routeName = '/join/join_code';
static const String routeName = '/join/:join_code';
static const String pageName = 'JoinPage';

const JoinPage({
Key? key,
required this.onNewTriviaGameTap,
}) : super(key: key);

final Function() onNewTriviaGameTap;

@override
Widget build(BuildContext context) {
return BasePage(
name: '$runtimeType',
actions: [
MainAction(
label: 'New trivia game',
onPressed: () {
debugPrint('$runtimeType onNewTriviaGameTap');
onNewTriviaGameTap();
},
),
],
final joinCode = Get.parameters['join_code'];
if (joinCode == null) {
throw UnimplementedError(
'join_code must not be null',
);
}

return Scaffold(
body: JoinView(
joinCode: joinCode,
),
);
}
}
Original file line number Diff line number Diff line change
@@ -1,17 +1,23 @@
import 'package:core/core.dart';
import 'package:example/shared/components/labeled_section.dart';
import 'package:flutter/material.dart';
import 'package:universal_html/html.dart' show window;

class CopyJoinLinkView extends StatelessWidget {
const CopyJoinLinkView({
Key? key,
required this.joinLink,
required this.joinCode,
required this.onCopyJoinLinkTap,
}) : super(key: key);

final String joinLink;
final String joinCode;
final Function(String) onCopyJoinLinkTap;

String get joinLink {
var url = window.location.host;
return '$url/#/join/$joinCode';
}

@override
Widget build(BuildContext context) {
return LabeledSection(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,16 +8,16 @@ class TriviaInitialStatusView extends StatelessWidget {
const TriviaInitialStatusView({
Key? key,
required this.triviaId,
required this.joinCode,
required this.onCopyJoinLinkTap,
}) : super(key: key);

final String triviaId;
final String joinCode;
final Function(String) onCopyJoinLinkTap;

@override
Widget build(BuildContext context) {
const joinLink = 'TODO: improve joinLink';

return LabeledSection(
label: 'Initial',
child: Column(
Expand All @@ -31,10 +31,8 @@ class TriviaInitialStatusView extends StatelessWidget {
),
const SizedBox(height: 12),
CopyJoinLinkView(
joinLink: joinLink,
onCopyJoinLinkTap: (joinLink) {
//TODO: Implement.
},
joinCode: joinCode,
onCopyJoinLinkTap: onCopyJoinLinkTap,
),
],
),
Expand Down
68 changes: 17 additions & 51 deletions example/lib/shared/modules/trivia/page.dart
Original file line number Diff line number Diff line change
@@ -1,13 +1,8 @@
import 'package:buzz/buzz.dart';
import 'package:core/core.dart';
import 'package:example/shared/components/labeled_section.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:scrollable_positioned_list/scrollable_positioned_list.dart';

import 'finished/trivia_finished_status_view.dart';
import 'initial/trivia_initial_view.dart';
import 'started/trivia_started_view.dart';
import 'trivia_view.dart';

class NavigateToTrivia extends NavigateToCommand {
NavigateToTrivia({
Expand Down Expand Up @@ -36,80 +31,49 @@ class TriviaPage extends StatelessWidget {

const TriviaPage({
Key? key,
required this.onStartPlayTap,
required this.onSeeScoreboardTap,
required this.onCopyJoinLinkTap,
required this.onGoToStatusTap,
}) : super(key: key);

final Function(String) onStartPlayTap;
final Function(String) onSeeScoreboardTap;
final Function(String) onCopyJoinLinkTap;
final Function(String, String) onGoToStatusTap;

@override
Widget build(BuildContext context) {
final triviaId = Get.parameters['trivia_id'] ?? '';
String? status = Get.parameters['status'];

late Widget triviaView;
if (status == null) {
triviaView = _TriviaCompleteView(
triviaId: triviaId,
onStartPlayTap: onStartPlayTap,
onSeeScoreboardTap: onSeeScoreboardTap,
onCopyJoinLinkTap: onCopyJoinLinkTap,
onGoToStatusTap: onGoToStatusTap,
//String? status = Get.parameters['status'];
/*TriviaStatus triviaStatus = TriviaStatus.initial;
if (status != null) {
triviaStatus = TriviaStatus.values.firstWhere(
(e) => e.toString() == 'TriviaStatus.$status',
);
} else {
if (status == 'initial') {
triviaView = TriviaInitialStatusView(
triviaId: triviaId,
onCopyJoinLinkTap: onCopyJoinLinkTap,
);
}

if (status == 'started') {
triviaView = TriviaStartedStatusView(
triviaId: triviaId,
onStartPlayTap: onStartPlayTap,
onSeeScoreboardTap: onSeeScoreboardTap,
);
}

if (status == 'finished') {
triviaView = TriviaFinishedStatusView(
triviaId: triviaId,
onSeeScoreboardTap: onSeeScoreboardTap,
);
}
}
}*/

return Scaffold(
appBar: AppBar(
title: Text('$runtimeType'),
),
body: Column(
children: [
Expanded(child: triviaView),
Expanded(
child: TriviaView(
triviaId: triviaId,
),
),
],
),
);
}
}

/*
class _TriviaCompleteView extends StatelessWidget {
const _TriviaCompleteView({
Key? key,
required this.triviaId,
required this.onCopyJoinLinkTap,
required this.onSeeScoreboardTap,
required this.onStartPlayTap,
required this.onGoToStatusTap,
required this.joinCode,
}) : super(key: key);
final String triviaId;
final Function(String) onCopyJoinLinkTap;
final String joinCode;
final Function(String) onStartPlayTap;
final Function(String) onSeeScoreboardTap;
final Function(String, String) onGoToStatusTap;
Expand All @@ -122,6 +86,7 @@ class _TriviaCompleteView extends StatelessWidget {
if (index == 0) {
return TriviaInitialStatusView(
triviaId: triviaId,
joinCode: joinCode,
onCopyJoinLinkTap: onCopyJoinLinkTap,
);
}
Expand Down Expand Up @@ -180,3 +145,4 @@ class _TriviaCompleteView extends StatelessWidget {
);
}
}
*/
Loading

0 comments on commit 862c6bf

Please sign in to comment.