feat: add remote pull and push
This commit is contained in:
@@ -1,3 +1,5 @@
|
||||
import 'dart:async';
|
||||
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:sentry_flutter/sentry_flutter.dart';
|
||||
|
||||
@@ -5,15 +7,29 @@ import '../models/payment_method.dart';
|
||||
import '../models/bar_tab.dart';
|
||||
import '../models/product.dart';
|
||||
import '../models/tab_item.dart';
|
||||
import '../models/remote_command.dart';
|
||||
import '../services/bar_tab_service.dart';
|
||||
import '../services/product_service.dart';
|
||||
import 'inventory_view_model.dart';
|
||||
import 'remote_sync_view_model.dart';
|
||||
|
||||
class BarScreenViewModel extends ChangeNotifier {
|
||||
final BarTabService barTabService;
|
||||
final InventoryViewModel inventory;
|
||||
final RemoteSyncViewModel remoteSyncViewModel;
|
||||
|
||||
BarScreenViewModel({required this.barTabService, required this.inventory});
|
||||
BarScreenViewModel({
|
||||
required this.barTabService,
|
||||
required this.inventory,
|
||||
required this.remoteSyncViewModel,
|
||||
}) {
|
||||
_eventSubscription = remoteSyncViewModel.syncService.events.listen(_onRemoteEvent);
|
||||
}
|
||||
|
||||
StreamSubscription<RemoteSyncEvent>? _eventSubscription;
|
||||
|
||||
RemoteSyncEvent? _lastRemoteEvent;
|
||||
RemoteSyncEvent? get lastRemoteEvent => _lastRemoteEvent;
|
||||
|
||||
List<BarTab> _tabs = [];
|
||||
String? _selectedTabId;
|
||||
@@ -42,6 +58,24 @@ class BarScreenViewModel extends ChangeNotifier {
|
||||
}
|
||||
}
|
||||
|
||||
void _onRemoteEvent(RemoteSyncEvent event) {
|
||||
_lastRemoteEvent = event;
|
||||
notifyListeners();
|
||||
if (event.type == RemoteSyncEventType.tabClosedRemotely) {
|
||||
_reloadTabs();
|
||||
}
|
||||
}
|
||||
|
||||
void clearRemoteEvent() {
|
||||
_lastRemoteEvent = null;
|
||||
}
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
_eventSubscription?.cancel();
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
Future<void> ensureLoaded() async {
|
||||
if (_hasLoaded || _isLoading) return;
|
||||
|
||||
@@ -72,6 +106,11 @@ class BarScreenViewModel extends ChangeNotifier {
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> loadAndSync() async {
|
||||
await load();
|
||||
await remoteSyncViewModel.syncNow();
|
||||
}
|
||||
|
||||
void selectTab(String tabId) {
|
||||
_selectedTabId = tabId;
|
||||
notifyListeners();
|
||||
|
||||
Reference in New Issue
Block a user