forked from eatvio/eatvio_app
42 lines
1.6 KiB
Dart
42 lines
1.6 KiB
Dart
import 'package:freezed_annotation/freezed_annotation.dart';
|
||
|
||
part 'glossary_sync_state.freezed.dart';
|
||
|
||
/// Состояние синхронизации глоссария продуктов.
|
||
///
|
||
/// idle → ничего не происходит
|
||
/// checking → проверяем checksum через /meta
|
||
/// downloading → скачиваем дамп в файл
|
||
/// processing → парсим JSON + bulk-insert в БД (progress: 0.0–1.0)
|
||
/// completed → синхронизация завершена (syncedCount записей)
|
||
/// error → ошибка синхронизации
|
||
@freezed
|
||
abstract class GlossarySyncState with _$GlossarySyncState {
|
||
const factory GlossarySyncState.idle() = GlossarySyncIdle;
|
||
|
||
const factory GlossarySyncState.checking() = GlossarySyncChecking;
|
||
|
||
const factory GlossarySyncState.downloading({
|
||
/// Прогресс загрузки файла: 0.0 – 1.0 (null если Content-Length неизвестен)
|
||
double? progress,
|
||
}) = GlossarySyncDownloading;
|
||
|
||
const factory GlossarySyncState.processing({
|
||
/// Кол-во обработанных записей
|
||
required int processed,
|
||
/// Общее кол-во записей в дампе
|
||
required int total,
|
||
}) = GlossarySyncProcessing;
|
||
|
||
const factory GlossarySyncState.completed({
|
||
/// Кол-во синхронизированных записей
|
||
required int syncedCount,
|
||
}) = GlossarySyncCompleted;
|
||
|
||
const factory GlossarySyncState.error({
|
||
required String message,
|
||
}) = GlossarySyncError;
|
||
|
||
const factory GlossarySyncState.upToDate() = GlossarySyncUpToDate;
|
||
}
|