Implement offline mode
This commit is contained in:
@@ -4,7 +4,7 @@ import 'dart:ui';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:sheetless/core/models/change.dart';
|
||||
import 'package:sheetless/core/models/sheet.dart';
|
||||
import 'package:sheetless/core/services/storage_service.dart';
|
||||
import 'package:sheetless/core/services/sync_service.dart';
|
||||
|
||||
import '../../../shared/widgets/edit_sheet_bottom_sheet.dart';
|
||||
import 'sheet_list_item.dart';
|
||||
@@ -19,11 +19,13 @@ import 'sheet_search_bar.dart';
|
||||
class SheetsList extends StatefulWidget {
|
||||
final List<Sheet> sheets;
|
||||
final ValueSetter<Sheet> onSheetSelected;
|
||||
final SyncService syncService;
|
||||
|
||||
const SheetsList({
|
||||
super.key,
|
||||
required this.sheets,
|
||||
required this.onSheetSelected,
|
||||
required this.syncService,
|
||||
});
|
||||
|
||||
@override
|
||||
@@ -33,7 +35,6 @@ class SheetsList extends StatefulWidget {
|
||||
class _SheetsListState extends State<SheetsList> {
|
||||
static const _searchDebounceMs = 500;
|
||||
|
||||
final _storageService = StorageService();
|
||||
final _searchController = TextEditingController();
|
||||
Timer? _debounceTimer;
|
||||
late List<Sheet> _filteredSheets;
|
||||
@@ -111,9 +112,9 @@ class _SheetsListState extends State<SheetsList> {
|
||||
}
|
||||
|
||||
void _handleSheetEdit(Sheet sheet, String newName, String newComposer) {
|
||||
// Queue changes for server sync
|
||||
// Queue changes for server sync (with timestamp for conflict resolution)
|
||||
if (newName != sheet.name) {
|
||||
_storageService.writeChange(
|
||||
widget.syncService.queueChange(
|
||||
Change(
|
||||
type: ChangeType.sheetNameChange,
|
||||
sheetUuid: sheet.uuid,
|
||||
@@ -122,7 +123,7 @@ class _SheetsListState extends State<SheetsList> {
|
||||
);
|
||||
}
|
||||
if (newComposer != sheet.composerName) {
|
||||
_storageService.writeChange(
|
||||
widget.syncService.queueChange(
|
||||
Change(
|
||||
type: ChangeType.composerNameChange,
|
||||
sheetUuid: sheet.uuid,
|
||||
@@ -136,6 +137,9 @@ class _SheetsListState extends State<SheetsList> {
|
||||
sheet.name = newName;
|
||||
sheet.composerName = newComposer;
|
||||
});
|
||||
|
||||
// Update cached sheets
|
||||
widget.syncService.updateCachedSheets(widget.sheets);
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user