feat: quiz listings on the room maker

This commit is contained in:
akhdanre 2025-05-17 14:54:03 +07:00
parent 381be0db1e
commit 1cce1aba2c
3 changed files with 35 additions and 23 deletions

View File

@ -1,3 +1,4 @@
import 'package:dio/dio.dart';
import 'package:get/get.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);
if (response.statusCode == 200) {
print(response.data);
final baseResponse = BaseResponseModel<LoginResponseModel>.fromJson(
response.data,
(json) => LoginResponseModel.fromJson(json),

View File

@ -1,5 +1,6 @@
import 'package:get/get.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/socket_service.dart';
import 'package:quiz_app/feature/room_maker/controller/room_maker_controller.dart';
@ -8,11 +9,13 @@ class RoomMakerBinding extends Bindings {
@override
void dependencies() {
Get.lazyPut(() => SessionService());
Get.lazyPut(() => QuizService());
Get.put(SocketService());
Get.lazyPut(() => RoomMakerController(
Get.find<SessionService>(),
Get.find<UserController>(),
Get.find<SocketService>(),
Get.find<QuizService>(),
));
}
}

View File

@ -3,8 +3,10 @@ import 'package:get/get.dart';
import 'package:quiz_app/app/routes/app_pages.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/models/base/base_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/services/quiz_service.dart';
import 'package:quiz_app/data/services/session_service.dart';
import 'package:quiz_app/data/services/socket_service.dart';
@ -12,11 +14,13 @@ class RoomMakerController extends GetxController {
final SessionService _sessionService;
final UserController _userController;
final SocketService _socketService;
final QuizService _quizService;
RoomMakerController(
this._sessionService,
this._userController,
this._socketService,
this._quizService,
);
// final roomName = ''.obs;
@ -27,28 +31,20 @@ class RoomMakerController extends GetxController {
final TextEditingController nameTC = TextEditingController();
final TextEditingController maxPlayerTC = TextEditingController();
final availableQuizzes = <QuizListingModel>[
QuizListingModel(
quizId: '1',
authorId: 'u1',
authorName: 'Admin',
title: 'Sejarah Indonesia',
description: 'Kuis tentang kerajaan dan sejarah nusantara.',
date: '2025-05-01',
totalQuiz: 10,
duration: 600,
),
QuizListingModel(
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;
final availableQuizzes = <QuizListingModel>[].obs;
@override
void onInit() {
loadQuiz();
super.onInit();
}
loadQuiz() async {
BaseResponseModel<List<QuizListingModel>>? response = await _quizService.userQuiz(_userController.userData!.id, 1);
if (response != null) {
availableQuizzes.assignAll(response.data!);
}
}
void onCreateRoom() async {
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;
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) {