mirror of
https://github.com/SyncrowIOT/web.git
synced 2025-08-26 01:39:40 +00:00
Refactor booking system: replace individual parameters with LoadBookableSpacesParam for improved clarity and maintainability
This commit is contained in:
@ -1,6 +1,8 @@
|
||||
import 'dart:async';
|
||||
import 'package:meta/meta.dart';
|
||||
import 'package:syncrow_web/pages/access_management/booking_system/domain/models/paginated_bookable_spaces.dart';
|
||||
import 'package:syncrow_web/pages/access_management/booking_system/domain/services/booking_system_service.dart';
|
||||
import 'package:syncrow_web/pages/space_management_v2/modules/communities/domain/params/load_communities_param.dart';
|
||||
|
||||
class DebouncedBookingSystemService implements BookingSystemService {
|
||||
final BookingSystemService _inner;
|
||||
@ -9,11 +11,6 @@ class DebouncedBookingSystemService implements BookingSystemService {
|
||||
Timer? _debounceTimer;
|
||||
Completer<PaginatedBookableSpaces>? _lastCompleter;
|
||||
|
||||
int? _lastPage;
|
||||
int? _lastSize;
|
||||
bool? _lastIncludeSpaces;
|
||||
String? _lastSearch;
|
||||
|
||||
DebouncedBookingSystemService(
|
||||
this._inner, {
|
||||
this.debounceDuration = const Duration(milliseconds: 500),
|
||||
@ -21,27 +18,20 @@ class DebouncedBookingSystemService implements BookingSystemService {
|
||||
|
||||
@override
|
||||
Future<PaginatedBookableSpaces> getBookableSpaces({
|
||||
required int page,
|
||||
required int size,
|
||||
required String search,
|
||||
required LoadCommunitiesParam param,
|
||||
}) {
|
||||
_debounceTimer?.cancel();
|
||||
_lastCompleter?.completeError(StateError("Cancelled by new search"));
|
||||
if (_lastCompleter != null && !_lastCompleter!.isCompleted) {
|
||||
_lastCompleter!
|
||||
.completeError(StateError("Cancelled by new search"));
|
||||
}
|
||||
|
||||
final completer = Completer<PaginatedBookableSpaces>();
|
||||
_lastCompleter = completer;
|
||||
|
||||
_lastPage = page;
|
||||
_lastSize = size;
|
||||
_lastSearch = search;
|
||||
|
||||
_debounceTimer = Timer(debounceDuration, () async {
|
||||
try {
|
||||
final result = await _inner.getBookableSpaces(
|
||||
page: _lastPage!,
|
||||
size: _lastSize!,
|
||||
search: _lastSearch!,
|
||||
);
|
||||
final result = await _inner.getBookableSpaces(param: param);
|
||||
if (!completer.isCompleted) {
|
||||
completer.complete(result);
|
||||
}
|
||||
|
@ -1,10 +1,8 @@
|
||||
import 'package:syncrow_web/pages/access_management/booking_system/domain/models/paginated_bookable_spaces.dart';
|
||||
import 'package:syncrow_web/pages/space_management_v2/modules/communities/domain/params/load_communities_param.dart';
|
||||
|
||||
abstract class BookingSystemService {
|
||||
Future<PaginatedBookableSpaces> getBookableSpaces({
|
||||
required int page,
|
||||
required int size,
|
||||
required String search,
|
||||
|
||||
required LoadCommunitiesParam param,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user