feat: quiz listings on the room maker
This commit is contained in:
parent
381be0db1e
commit
1cce1aba2c
|
@ -1,3 +1,4 @@
|
||||||
|
|
||||||
import 'package:dio/dio.dart';
|
import 'package:dio/dio.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:quiz_app/core/endpoint/api_endpoint.dart';
|
import 'package:quiz_app/core/endpoint/api_endpoint.dart';
|
||||||
|
@ -33,6 +34,7 @@ class AuthService extends GetxService {
|
||||||
final response = await _dio.post(APIEndpoint.login, data: data);
|
final response = await _dio.post(APIEndpoint.login, data: data);
|
||||||
|
|
||||||
if (response.statusCode == 200) {
|
if (response.statusCode == 200) {
|
||||||
|
print(response.data);
|
||||||
final baseResponse = BaseResponseModel<LoginResponseModel>.fromJson(
|
final baseResponse = BaseResponseModel<LoginResponseModel>.fromJson(
|
||||||
response.data,
|
response.data,
|
||||||
(json) => LoginResponseModel.fromJson(json),
|
(json) => LoginResponseModel.fromJson(json),
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:quiz_app/data/controllers/user_controller.dart';
|
import 'package:quiz_app/data/controllers/user_controller.dart';
|
||||||
|
import 'package:quiz_app/data/services/quiz_service.dart';
|
||||||
import 'package:quiz_app/data/services/session_service.dart';
|
import 'package:quiz_app/data/services/session_service.dart';
|
||||||
import 'package:quiz_app/data/services/socket_service.dart';
|
import 'package:quiz_app/data/services/socket_service.dart';
|
||||||
import 'package:quiz_app/feature/room_maker/controller/room_maker_controller.dart';
|
import 'package:quiz_app/feature/room_maker/controller/room_maker_controller.dart';
|
||||||
|
@ -8,11 +9,13 @@ class RoomMakerBinding extends Bindings {
|
||||||
@override
|
@override
|
||||||
void dependencies() {
|
void dependencies() {
|
||||||
Get.lazyPut(() => SessionService());
|
Get.lazyPut(() => SessionService());
|
||||||
|
Get.lazyPut(() => QuizService());
|
||||||
Get.put(SocketService());
|
Get.put(SocketService());
|
||||||
Get.lazyPut(() => RoomMakerController(
|
Get.lazyPut(() => RoomMakerController(
|
||||||
Get.find<SessionService>(),
|
Get.find<SessionService>(),
|
||||||
Get.find<UserController>(),
|
Get.find<UserController>(),
|
||||||
Get.find<SocketService>(),
|
Get.find<SocketService>(),
|
||||||
|
Get.find<QuizService>(),
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,8 +3,10 @@ import 'package:get/get.dart';
|
||||||
import 'package:quiz_app/app/routes/app_pages.dart';
|
import 'package:quiz_app/app/routes/app_pages.dart';
|
||||||
import 'package:quiz_app/data/controllers/user_controller.dart';
|
import 'package:quiz_app/data/controllers/user_controller.dart';
|
||||||
import 'package:quiz_app/data/dto/waiting_room_dto.dart';
|
import 'package:quiz_app/data/dto/waiting_room_dto.dart';
|
||||||
|
import 'package:quiz_app/data/models/base/base_model.dart';
|
||||||
import 'package:quiz_app/data/models/quiz/quiz_listing_model.dart';
|
import 'package:quiz_app/data/models/quiz/quiz_listing_model.dart';
|
||||||
import 'package:quiz_app/data/models/session/session_request_model.dart';
|
import 'package:quiz_app/data/models/session/session_request_model.dart';
|
||||||
|
import 'package:quiz_app/data/services/quiz_service.dart';
|
||||||
import 'package:quiz_app/data/services/session_service.dart';
|
import 'package:quiz_app/data/services/session_service.dart';
|
||||||
import 'package:quiz_app/data/services/socket_service.dart';
|
import 'package:quiz_app/data/services/socket_service.dart';
|
||||||
|
|
||||||
|
@ -12,11 +14,13 @@ class RoomMakerController extends GetxController {
|
||||||
final SessionService _sessionService;
|
final SessionService _sessionService;
|
||||||
final UserController _userController;
|
final UserController _userController;
|
||||||
final SocketService _socketService;
|
final SocketService _socketService;
|
||||||
|
final QuizService _quizService;
|
||||||
|
|
||||||
RoomMakerController(
|
RoomMakerController(
|
||||||
this._sessionService,
|
this._sessionService,
|
||||||
this._userController,
|
this._userController,
|
||||||
this._socketService,
|
this._socketService,
|
||||||
|
this._quizService,
|
||||||
);
|
);
|
||||||
|
|
||||||
// final roomName = ''.obs;
|
// final roomName = ''.obs;
|
||||||
|
@ -27,28 +31,20 @@ class RoomMakerController extends GetxController {
|
||||||
final TextEditingController nameTC = TextEditingController();
|
final TextEditingController nameTC = TextEditingController();
|
||||||
final TextEditingController maxPlayerTC = TextEditingController();
|
final TextEditingController maxPlayerTC = TextEditingController();
|
||||||
|
|
||||||
final availableQuizzes = <QuizListingModel>[
|
final availableQuizzes = <QuizListingModel>[].obs;
|
||||||
QuizListingModel(
|
|
||||||
quizId: '1',
|
@override
|
||||||
authorId: 'u1',
|
void onInit() {
|
||||||
authorName: 'Admin',
|
loadQuiz();
|
||||||
title: 'Sejarah Indonesia',
|
super.onInit();
|
||||||
description: 'Kuis tentang kerajaan dan sejarah nusantara.',
|
}
|
||||||
date: '2025-05-01',
|
|
||||||
totalQuiz: 10,
|
loadQuiz() async {
|
||||||
duration: 600,
|
BaseResponseModel<List<QuizListingModel>>? response = await _quizService.userQuiz(_userController.userData!.id, 1);
|
||||||
),
|
if (response != null) {
|
||||||
QuizListingModel(
|
availableQuizzes.assignAll(response.data!);
|
||||||
quizId: '2',
|
}
|
||||||
authorId: 'u2',
|
}
|
||||||
authorName: 'Guru IPA',
|
|
||||||
title: 'Ilmu Pengetahuan Alam',
|
|
||||||
description: 'Kuis IPA untuk kelas 8.',
|
|
||||||
date: '2025-04-28',
|
|
||||||
totalQuiz: 15,
|
|
||||||
duration: 900,
|
|
||||||
),
|
|
||||||
].obs;
|
|
||||||
|
|
||||||
void onCreateRoom() async {
|
void onCreateRoom() async {
|
||||||
if (nameTC.text.trim().isEmpty || selectedQuiz.value == null) {
|
if (nameTC.text.trim().isEmpty || selectedQuiz.value == null) {
|
||||||
|
@ -74,8 +70,19 @@ class RoomMakerController extends GetxController {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void onQuizSourceChange(bool base) {
|
void onQuizSourceChange(bool base) async {
|
||||||
isOnwQuiz.value = base;
|
isOnwQuiz.value = base;
|
||||||
|
if (base) {
|
||||||
|
BaseResponseModel<List<QuizListingModel>>? response = await _quizService.userQuiz(_userController.userData!.id, 1);
|
||||||
|
if (response != null) {
|
||||||
|
availableQuizzes.assignAll(response.data!);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
BaseResponseModel<List<QuizListingModel>>? response = await _quizService.recomendationQuiz(page: 1, amount: 4);
|
||||||
|
if (response != null) {
|
||||||
|
availableQuizzes.assignAll(response.data!);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void onQuizChoosen(String quizId) {
|
void onQuizChoosen(String quizId) {
|
||||||
|
|
Loading…
Reference in New Issue