refactor(legacy): extract shared device state into legacy_device_state package
- New package legacy_device_state hosts shared device/position state consumed by both control_panel and location screens. ControlPanel* classes renamed to LegacyDevice* in 8 moved files. - Move PositionEntity + AddressEntity + NetworkEntity + LatestPositionsResponseModel + BatteryUtils + DateFormatUtils from control_panel to legacy_shared (shared domain entities). - Remove anti-pattern re-export of sf_infrastructure/dio_error_mapper from legacy_shared barrel. Update consumers to import sf_infrastructure directly. - Clean 14 unused legacy_shared imports across view models in account, device_management, legacy_auth and settings modules. Eliminates cross-module dependency location -> control_panel. 0 errors, 0 warnings in flutter analyze across 11 packages/modules.
This commit is contained in:
@@ -1,6 +1,5 @@
|
||||
import 'package:account/src/core/data/models/change_password_request_model.dart';
|
||||
import 'package:dio/dio.dart';
|
||||
import 'package:legacy_shared/legacy_shared.dart';
|
||||
import 'package:sf_infrastructure/sf_infrastructure.dart';
|
||||
|
||||
import '../../../features/change_password/domain/models/entities/change_password_request_entity.dart';
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
import 'package:account/src/core/data/models/update_device_request_model.dart';
|
||||
import 'package:account/src/features/linked_devices/domain/entities/update_device_request_entity.dart';
|
||||
import 'package:dio/dio.dart';
|
||||
import 'package:legacy_shared/legacy_shared.dart';
|
||||
import 'package:sf_infrastructure/sf_infrastructure.dart';
|
||||
|
||||
import 'devices_remote_datasource.dart';
|
||||
|
||||
@@ -3,7 +3,6 @@ import 'package:account/src/core/data/models/get_app_users_response_model.dart';
|
||||
import 'package:account/src/core/data/models/update_user_request_model.dart';
|
||||
import 'package:account/src/features/personal_data/domain/entities/update_user_request_entity.dart';
|
||||
import 'package:dio/dio.dart';
|
||||
import 'package:legacy_shared/legacy_shared.dart';
|
||||
import 'package:sf_infrastructure/sf_infrastructure.dart';
|
||||
import 'package:sf_shared/sf_shared.dart';
|
||||
|
||||
|
||||
@@ -3,7 +3,6 @@ import 'dart:async';
|
||||
import 'package:account/src/features/account_settings/presentation/state/account_settings_view_state.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:legacy_auth/legacy_auth.dart';
|
||||
import 'package:legacy_shared/legacy_shared.dart';
|
||||
import 'package:sf_shared/sf_shared.dart';
|
||||
import 'package:sf_infrastructure/sf_infrastructure.dart';
|
||||
import 'package:sf_tracking/sf_tracking.dart';
|
||||
|
||||
@@ -5,7 +5,6 @@ import 'package:account/src/core/providers/users_repository_provider.dart';
|
||||
import 'package:account/src/features/delete_account/presentation/state/delete_account_view_state.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:legacy_shared/legacy_shared.dart';
|
||||
import 'package:sf_shared/sf_shared.dart';
|
||||
import 'package:sf_tracking/sf_tracking.dart';
|
||||
|
||||
|
||||
@@ -4,7 +4,6 @@ import 'package:account/src/features/linked_devices/domain/entities/update_devic
|
||||
import 'package:account/src/features/linked_devices/presentation/state/linked_devices_view_state.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:legacy_shared/legacy_shared.dart';
|
||||
import 'package:sf_shared/sf_shared.dart';
|
||||
import 'package:sf_tracking/sf_tracking.dart';
|
||||
|
||||
|
||||
@@ -1,10 +1,3 @@
|
||||
export 'src/core/data/models/latest_positions_response_model.dart';
|
||||
export 'src/core/domain/entities/address_entity.dart';
|
||||
export 'src/core/domain/entities/network_entity.dart';
|
||||
export 'src/core/domain/entities/position_entity.dart';
|
||||
export 'src/core/utils/battery_utils.dart';
|
||||
export 'src/core/utils/date_format_utils.dart';
|
||||
export 'src/features/alerts/alerts_builder.dart' show DeviceAlertsBuilder;
|
||||
export 'src/features/control_panel/control_panel_builder.dart';
|
||||
export 'src/features/control_panel/presentation/state/control_panel_view_model.dart';
|
||||
export 'src/shared/widgets/device_map.dart';
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
import '../../domain/entities/alert_entity.dart';
|
||||
import '../models/alerts_response_model.dart';
|
||||
|
||||
abstract class AlertsRemoteDatasource {
|
||||
Future<(List<AlertEntity>, int totalPages)> getAlerts({
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
import 'package:dio/dio.dart';
|
||||
import 'package:legacy_shared/legacy_shared.dart';
|
||||
import 'package:sf_infrastructure/sf_infrastructure.dart';
|
||||
import 'package:utils/utils.dart';
|
||||
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
import 'package:control_panel/src/core/domain/entities/position_entity.dart';
|
||||
|
||||
abstract class ControlPanelRemoteDatasource {
|
||||
Future<List<PositionEntity>> getLatestPositions({required String deviceId});
|
||||
}
|
||||
@@ -1,16 +0,0 @@
|
||||
import 'package:control_panel/src/core/data/datasource/control_panel_remote_datasource.dart';
|
||||
import 'package:control_panel/src/core/domain/repositories/control_panel_repository.dart';
|
||||
import 'package:control_panel/src/core/domain/entities/position_entity.dart';
|
||||
|
||||
class ControlPanelRepositoryImpl implements ControlPanelRepository {
|
||||
const ControlPanelRepositoryImpl(this._remote);
|
||||
|
||||
final ControlPanelRemoteDatasource _remote;
|
||||
|
||||
@override
|
||||
Future<List<PositionEntity>> getLatestPositions({
|
||||
required String deviceId,
|
||||
}) async {
|
||||
return _remote.getLatestPositions(deviceId: deviceId);
|
||||
}
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
import 'package:control_panel/src/core/domain/entities/position_entity.dart';
|
||||
|
||||
abstract class ControlPanelRepository {
|
||||
Future<List<PositionEntity>> getLatestPositions({required String deviceId});
|
||||
}
|
||||
@@ -1,10 +0,0 @@
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:control_panel/src/core/data/datasource/control_panel_remote_datasource.dart';
|
||||
import 'package:control_panel/src/core/data/datasource/control_panel_remote_datasource_impl.dart';
|
||||
import 'package:sf_infrastructure/sf_infrastructure.dart';
|
||||
|
||||
final controlPanelRemoteDatasourceProvider =
|
||||
Provider<ControlPanelRemoteDatasource>((ref) {
|
||||
final saveFamilyRepository = getIt<SaveFamilyRepository>();
|
||||
return ControlPanelRemoteDatasourceImpl(saveFamilyRepository);
|
||||
});
|
||||
@@ -1,9 +0,0 @@
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:control_panel/src/core/data/repositories/control_panel_repository_impl.dart';
|
||||
import 'package:control_panel/src/core/domain/repositories/control_panel_repository.dart';
|
||||
import 'package:control_panel/src/core/providers/control_panel_remote_datasource_provider.dart';
|
||||
|
||||
final controlPanelRepositoryProvider = Provider<ControlPanelRepository>((ref) {
|
||||
final remote = ref.read(controlPanelRemoteDatasourceProvider);
|
||||
return ControlPanelRepositoryImpl(remote);
|
||||
});
|
||||
@@ -1,11 +1,11 @@
|
||||
import 'package:flutter_svg/svg.dart';
|
||||
import 'package:control_panel/src/features/control_panel/presentation/state/control_panel_view_model.dart';
|
||||
import 'package:control_panel/src/features/control_panel/presentation/state/control_panel_view_state.dart';
|
||||
import 'package:legacy_device_state/legacy_device_state.dart';
|
||||
import 'package:control_panel/src/shared/widgets/device_map.dart';
|
||||
import 'package:design_system/design_system.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:legacy_shared/legacy_shared.dart';
|
||||
import 'package:sf_infrastructure/sf_infrastructure.dart';
|
||||
import 'package:navigation/navigation.dart';
|
||||
import 'package:sf_localizations/sf_localizations.dart';
|
||||
import 'package:sf_shared/sf_shared.dart';
|
||||
@@ -19,10 +19,10 @@ class ControlPanelScreen extends ConsumerWidget {
|
||||
@override
|
||||
Widget build(BuildContext context, WidgetRef ref) {
|
||||
final theme = ref.watch(themePortProvider);
|
||||
final asyncState = ref.watch(controlPanelViewModelProvider);
|
||||
final asyncState = ref.watch(legacyDeviceViewModelProvider);
|
||||
|
||||
ref.listen(
|
||||
controlPanelViewModelProvider.select(
|
||||
legacyDeviceViewModelProvider.select(
|
||||
(async) => async.value?.positionsError ?? false,
|
||||
),
|
||||
(_, hasError) {
|
||||
@@ -44,8 +44,8 @@ class ControlPanelScreen extends ConsumerWidget {
|
||||
error: (error, _) => RefreshableErrorState(
|
||||
message: formatErrorMessage(error),
|
||||
onRefresh: () async {
|
||||
ref.invalidate(controlPanelViewModelProvider);
|
||||
await ref.read(controlPanelViewModelProvider.future);
|
||||
ref.invalidate(legacyDeviceViewModelProvider);
|
||||
await ref.read(legacyDeviceViewModelProvider.future);
|
||||
},
|
||||
),
|
||||
data: (state) => SafeArea(
|
||||
@@ -64,7 +64,7 @@ class ControlPanelScreen extends ConsumerWidget {
|
||||
color: theme.getColorFor(ThemeCode.legacyPrimary),
|
||||
onRefresh: () async {
|
||||
ref.invalidate(legacyDevicesProvider);
|
||||
await ref.read(controlPanelViewModelProvider.future);
|
||||
await ref.read(legacyDeviceViewModelProvider.future);
|
||||
},
|
||||
child: SingleChildScrollView(
|
||||
physics: const AlwaysScrollableScrollPhysics(),
|
||||
@@ -97,14 +97,14 @@ class ControlPanelScreen extends ConsumerWidget {
|
||||
}
|
||||
|
||||
class _Header extends ConsumerWidget {
|
||||
final ControlPanelViewState state;
|
||||
final LegacyDeviceViewState state;
|
||||
final NavigationContract navigationContract;
|
||||
|
||||
const _Header({required this.state, required this.navigationContract});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context, WidgetRef ref) {
|
||||
final vm = ref.read(controlPanelViewModelProvider.notifier);
|
||||
final vm = ref.read(legacyDeviceViewModelProvider.notifier);
|
||||
|
||||
return Stack(
|
||||
alignment: Alignment.center,
|
||||
@@ -254,7 +254,7 @@ class _SectionButton extends ConsumerWidget {
|
||||
}
|
||||
|
||||
class _MapSection extends ConsumerWidget {
|
||||
final ControlPanelViewState state;
|
||||
final LegacyDeviceViewState state;
|
||||
final NavigationContract navigationContract;
|
||||
|
||||
const _MapSection({
|
||||
@@ -265,7 +265,7 @@ class _MapSection extends ConsumerWidget {
|
||||
@override
|
||||
Widget build(BuildContext context, WidgetRef ref) {
|
||||
final theme = ref.read(themePortProvider);
|
||||
final vm = ref.read(controlPanelViewModelProvider.notifier);
|
||||
final vm = ref.read(legacyDeviceViewModelProvider.notifier);
|
||||
|
||||
return GestureDetector(
|
||||
onTap: () => navigationContract.goTo(AppRoutes.legacyLocation),
|
||||
|
||||
@@ -1,6 +1,3 @@
|
||||
import 'package:control_panel/src/core/domain/entities/position_entity.dart';
|
||||
import 'package:control_panel/src/core/utils/battery_utils.dart';
|
||||
import 'package:control_panel/src/core/utils/date_format_utils.dart';
|
||||
import 'package:design_system/design_system.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_map/flutter_map.dart';
|
||||
|
||||
@@ -50,6 +50,8 @@ dependencies:
|
||||
path: ../../../../packages/utils
|
||||
legacy_shared:
|
||||
path: ../../packages/legacy_shared
|
||||
legacy_device_state:
|
||||
path: ../../packages/legacy_device_state
|
||||
sf_shared:
|
||||
path: ../../../../packages/sf_shared
|
||||
#dependencies go here
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
import 'package:dio/dio.dart';
|
||||
import 'package:legacy_shared/legacy_shared.dart';
|
||||
import 'package:sf_infrastructure/sf_infrastructure.dart';
|
||||
|
||||
import '../models/get_app_usage_times_response_model.dart';
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
import 'package:dio/dio.dart';
|
||||
import 'package:get_it/get_it.dart';
|
||||
import 'package:legacy_shared/legacy_shared.dart';
|
||||
import 'package:sf_infrastructure/configure_dependencies.dart';
|
||||
import 'package:sf_infrastructure/sf_infrastructure.dart';
|
||||
|
||||
import '../models/get_background_image_response_model.dart';
|
||||
import 'background_image_remote_datasource.dart';
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
import 'package:dio/dio.dart';
|
||||
import 'package:legacy_shared/legacy_shared.dart';
|
||||
import 'package:sf_infrastructure/sf_infrastructure.dart';
|
||||
|
||||
import '../models/create_contact_request_model.dart';
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
import 'package:dio/dio.dart';
|
||||
import 'package:legacy_shared/legacy_shared.dart';
|
||||
import 'package:sf_infrastructure/sf_infrastructure.dart';
|
||||
|
||||
import '../models/get_heartbeats_response_model.dart';
|
||||
|
||||
@@ -2,7 +2,6 @@ import 'package:device_management/src/core/data/datasources/pictures_remote_data
|
||||
import 'package:device_management/src/core/data/models/get_pictures_response_model.dart';
|
||||
import 'package:device_management/src/features/remote_connection/domain/entities/picture_entity.dart';
|
||||
import 'package:dio/dio.dart';
|
||||
import 'package:legacy_shared/legacy_shared.dart';
|
||||
import 'package:sf_infrastructure/sf_infrastructure.dart';
|
||||
|
||||
class PicturesRemoteDatasourceImpl implements PicturesRemoteDatasource {
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
import 'package:dio/dio.dart';
|
||||
import 'package:legacy_shared/legacy_shared.dart';
|
||||
import 'package:sf_infrastructure/sf_infrastructure.dart';
|
||||
|
||||
import '../models/create_scheduled_activity_request_model.dart';
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
import 'package:dio/dio.dart';
|
||||
import 'package:legacy_shared/legacy_shared.dart';
|
||||
import 'package:sf_infrastructure/sf_infrastructure.dart';
|
||||
|
||||
import '../models/get_steps_response_model.dart';
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
import 'dart:async';
|
||||
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:legacy_shared/legacy_shared.dart';
|
||||
import 'package:sf_shared/sf_shared.dart';
|
||||
import 'package:sf_tracking/sf_tracking.dart';
|
||||
|
||||
|
||||
@@ -2,7 +2,6 @@ import 'dart:async';
|
||||
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:image_picker/image_picker.dart';
|
||||
import 'package:legacy_shared/legacy_shared.dart';
|
||||
import 'package:sf_shared/sf_shared.dart';
|
||||
import 'package:sf_tracking/sf_tracking.dart';
|
||||
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
import 'package:dio/dio.dart';
|
||||
import 'package:legacy_shared/legacy_shared.dart';
|
||||
import 'package:sf_infrastructure/sf_infrastructure.dart';
|
||||
|
||||
import 'call_history_entity.dart';
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
import 'dart:async';
|
||||
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:legacy_shared/legacy_shared.dart';
|
||||
import 'package:sf_shared/sf_shared.dart';
|
||||
import 'package:sf_tracking/sf_tracking.dart';
|
||||
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
import 'dart:async';
|
||||
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:legacy_shared/legacy_shared.dart';
|
||||
import 'package:sf_shared/sf_shared.dart';
|
||||
import 'package:sf_tracking/sf_tracking.dart';
|
||||
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
import 'dart:async';
|
||||
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:legacy_shared/legacy_shared.dart';
|
||||
import 'package:sf_shared/sf_shared.dart';
|
||||
import 'package:sf_tracking/sf_tracking.dart';
|
||||
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
import 'dart:async';
|
||||
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:legacy_shared/legacy_shared.dart';
|
||||
import 'package:sf_shared/sf_shared.dart';
|
||||
import 'package:sf_localizations/sf_localizations.dart';
|
||||
import 'package:sf_tracking/sf_tracking.dart';
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
import 'package:legacy_auth/src/core/data/models/two_fa_secret_response_model.dart';
|
||||
import 'package:legacy_shared/legacy_shared.dart';
|
||||
import 'package:sf_infrastructure/sf_infrastructure.dart';
|
||||
|
||||
import 'auth_remote_datasource.dart';
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
import 'package:sf_infrastructure/sf_infrastructure.dart';
|
||||
import 'package:legacy_auth/src/core/data/datasource/login_remote_datasource.dart';
|
||||
import 'package:legacy_auth/src/core/data/models/login_response_model.dart';
|
||||
import 'package:legacy_shared/legacy_shared.dart';
|
||||
|
||||
class LegacyLoginRemoteDatasourceImpl implements LegacyLoginRemoteDatasource {
|
||||
const LegacyLoginRemoteDatasourceImpl(this._repository);
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
import 'package:legacy_auth/src/core/data/models/sign_up_request_model.dart';
|
||||
import 'package:legacy_auth/src/core/data/models/sign_up_response_model.dart';
|
||||
import 'package:legacy_shared/legacy_shared.dart';
|
||||
import 'package:sf_infrastructure/sf_infrastructure.dart';
|
||||
|
||||
import 'sign_up_remote_datasource.dart';
|
||||
|
||||
@@ -9,7 +9,6 @@ import 'package:legacy_auth/src/features/device_setup/presentation/state/device_
|
||||
import 'package:legacy_auth/src/features/device_setup/presentation/enums/add_kid_step.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:legacy_shared/legacy_shared.dart';
|
||||
import 'package:sf_shared/sf_shared.dart';
|
||||
import 'package:sf_localizations/sf_localizations.dart';
|
||||
import 'package:sf_tracking/sf_tracking.dart';
|
||||
|
||||
@@ -7,7 +7,7 @@ import 'package:legacy_auth/src/features/login/presentation/mixins/login_form_va
|
||||
import 'package:legacy_auth/src/features/login/presentation/state/login_view_state.dart';
|
||||
import 'package:flutter/widgets.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:legacy_shared/legacy_shared.dart';
|
||||
import 'package:sf_infrastructure/sf_infrastructure.dart';
|
||||
import 'package:sf_shared/sf_shared.dart';
|
||||
import 'package:sf_tracking/sf_tracking.dart';
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ import 'package:legacy_auth/src/features/sign_up/domain/entities/legacy_signup_e
|
||||
import 'package:legacy_auth/src/features/sign_up/domain/entities/sign_up_request_entity.dart';
|
||||
import 'package:legacy_auth/src/features/sign_up/presentation/mixins/sign_up_form_validation.dart';
|
||||
import 'package:legacy_auth/src/features/sign_up/presentation/state/sign_up_view_state.dart';
|
||||
import 'package:legacy_shared/legacy_shared.dart';
|
||||
import 'package:sf_infrastructure/sf_infrastructure.dart';
|
||||
import 'package:sf_localizations/sf_localizations.dart';
|
||||
import 'package:sf_shared/sf_shared.dart';
|
||||
import 'package:sf_tracking/sf_tracking.dart';
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import 'package:control_panel/control_panel.dart';
|
||||
import 'package:legacy_shared/legacy_shared.dart';
|
||||
import 'package:location/src/core/data/models/create_frequent_place_request_model.dart';
|
||||
import 'package:location/src/core/data/models/create_geofence_request_model.dart';
|
||||
import 'package:location/src/core/data/models/update_frequent_place_request_model.dart';
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
import 'package:control_panel/control_panel.dart';
|
||||
import 'package:legacy_shared/legacy_shared.dart';
|
||||
import 'package:utils/utils.dart';
|
||||
import 'package:dio/dio.dart';
|
||||
import 'package:legacy_shared/legacy_shared.dart';
|
||||
import 'package:location/src/core/data/datasource/location_remote_datasource.dart';
|
||||
import 'package:location/src/core/data/models/create_frequent_place_request_model.dart';
|
||||
import 'package:location/src/core/data/models/create_frequent_place_response_model.dart';
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import 'package:control_panel/control_panel.dart';
|
||||
import 'package:legacy_shared/legacy_shared.dart';
|
||||
import 'package:freezed_annotation/freezed_annotation.dart';
|
||||
|
||||
part 'position_history_response_model.freezed.dart';
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import 'package:control_panel/control_panel.dart';
|
||||
import 'package:legacy_shared/legacy_shared.dart';
|
||||
import 'package:location/src/core/data/datasource/location_remote_datasource.dart';
|
||||
import 'package:location/src/core/data/models/create_frequent_place_request_model.dart';
|
||||
import 'package:location/src/core/data/models/create_geofence_request_model.dart';
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import 'package:control_panel/control_panel.dart';
|
||||
import 'package:legacy_shared/legacy_shared.dart';
|
||||
import 'package:location/src/core/data/models/create_frequent_place_request_model.dart';
|
||||
import 'package:location/src/core/data/models/create_geofence_request_model.dart';
|
||||
import 'package:location/src/core/data/models/update_frequent_place_request_model.dart';
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import 'package:control_panel/control_panel.dart';
|
||||
import 'package:legacy_device_state/legacy_device_state.dart';
|
||||
import 'package:design_system/design_system.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
@@ -14,7 +14,7 @@ class LocationScreen extends ConsumerWidget {
|
||||
@override
|
||||
Widget build(BuildContext context, WidgetRef ref) {
|
||||
final theme = ref.watch(themePortProvider);
|
||||
final asyncControlPanelState = ref.watch(controlPanelViewModelProvider);
|
||||
final asyncDeviceState = ref.watch(legacyDeviceViewModelProvider);
|
||||
final asyncLocationState = ref.watch(locationViewModelProvider);
|
||||
|
||||
ref.listen(
|
||||
@@ -85,7 +85,7 @@ class LocationScreen extends ConsumerWidget {
|
||||
},
|
||||
);
|
||||
|
||||
ref.listen(controlPanelViewModelProvider, (previous, next) {
|
||||
ref.listen(legacyDeviceViewModelProvider, (previous, next) {
|
||||
if (next.hasError && previous != null && !previous.hasError) {
|
||||
showTopSnackbar(
|
||||
context,
|
||||
@@ -105,10 +105,10 @@ class LocationScreen extends ConsumerWidget {
|
||||
}
|
||||
});
|
||||
|
||||
final controlPanelState = asyncControlPanelState.value;
|
||||
final deviceState = asyncDeviceState.value;
|
||||
final locationState = asyncLocationState.value;
|
||||
final isLoading = asyncControlPanelState.isLoading &&
|
||||
controlPanelState == null;
|
||||
final isLoading = asyncDeviceState.isLoading &&
|
||||
deviceState == null;
|
||||
|
||||
return LegacyPageLayout(
|
||||
theme: theme,
|
||||
@@ -116,19 +116,19 @@ class LocationScreen extends ConsumerWidget {
|
||||
showBack: false,
|
||||
body: isLoading
|
||||
? const Center(child: CircularProgressIndicator())
|
||||
: controlPanelState == null
|
||||
: deviceState == null
|
||||
? RefreshableErrorState(
|
||||
onRefresh: () async {
|
||||
ref.invalidate(controlPanelViewModelProvider);
|
||||
ref.invalidate(legacyDeviceViewModelProvider);
|
||||
ref.invalidate(locationViewModelProvider);
|
||||
await ref.read(controlPanelViewModelProvider.future);
|
||||
await ref.read(legacyDeviceViewModelProvider.future);
|
||||
},
|
||||
)
|
||||
: LocationMap(
|
||||
selectedPosition: controlPanelState.selectedPosition,
|
||||
selectedDevice: controlPanelState.selectedDevice,
|
||||
devices: controlPanelState.devices,
|
||||
positions: controlPanelState.positions,
|
||||
selectedPosition: deviceState.selectedPosition,
|
||||
selectedDevice: deviceState.selectedDevice,
|
||||
devices: deviceState.devices,
|
||||
positions: deviceState.positions,
|
||||
geofences: locationState?.geofences ?? const [],
|
||||
frequentPlaces: locationState?.frequentPlaces ?? const [],
|
||||
positionHistory: locationState?.positionHistory ?? const [],
|
||||
@@ -136,12 +136,12 @@ class LocationScreen extends ConsumerWidget {
|
||||
isLoadingHistory: locationState?.isLoadingHistory ?? false,
|
||||
onDeviceChanged: (device) {
|
||||
ref
|
||||
.read(controlPanelViewModelProvider.notifier)
|
||||
.read(legacyDeviceViewModelProvider.notifier)
|
||||
.setSelectedDevice(device);
|
||||
},
|
||||
onRefreshPosition: () {
|
||||
ref
|
||||
.read(controlPanelViewModelProvider.notifier)
|
||||
.read(legacyDeviceViewModelProvider.notifier)
|
||||
.refreshPositions();
|
||||
},
|
||||
),
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import 'dart:async';
|
||||
|
||||
import 'package:control_panel/control_panel.dart';
|
||||
import 'package:legacy_shared/legacy_shared.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:latlong2/latlong.dart';
|
||||
import 'package:location/src/core/domain/entities/geofence_entity.dart';
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import 'package:control_panel/control_panel.dart';
|
||||
import 'package:legacy_shared/legacy_shared.dart';
|
||||
import 'package:freezed_annotation/freezed_annotation.dart';
|
||||
import 'package:latlong2/latlong.dart';
|
||||
import 'package:location/src/core/domain/entities/geofence_entity.dart';
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import 'package:control_panel/control_panel.dart';
|
||||
import 'package:legacy_shared/legacy_shared.dart';
|
||||
import 'package:freezed_annotation/freezed_annotation.dart';
|
||||
import 'package:location/src/core/domain/entities/geofence_entity.dart';
|
||||
import 'package:location/src/core/domain/entities/frequent_place_entity.dart';
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import 'package:control_panel/control_panel.dart';
|
||||
import 'package:legacy_shared/legacy_shared.dart';
|
||||
import 'package:design_system/design_system.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import 'dart:async';
|
||||
|
||||
import 'package:control_panel/control_panel.dart';
|
||||
import 'package:legacy_shared/legacy_shared.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:location/src/core/domain/entities/geofence_entity.dart';
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
import 'dart:async';
|
||||
|
||||
import 'package:control_panel/control_panel.dart';
|
||||
import 'package:share_plus/share_plus.dart';
|
||||
import 'package:design_system/design_system.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import 'package:control_panel/control_panel.dart';
|
||||
import 'package:legacy_shared/legacy_shared.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:sf_localizations/sf_localizations.dart';
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import 'dart:math' as math;
|
||||
|
||||
import 'package:control_panel/control_panel.dart';
|
||||
import 'package:legacy_shared/legacy_shared.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_map/flutter_map.dart';
|
||||
import 'package:intl/intl.dart';
|
||||
|
||||
@@ -11,8 +11,8 @@ environment:
|
||||
dependencies:
|
||||
flutter:
|
||||
sdk: flutter
|
||||
control_panel:
|
||||
path: ../control_panel
|
||||
legacy_device_state:
|
||||
path: ../../packages/legacy_device_state
|
||||
design_system:
|
||||
path: ../../../../packages/design_system
|
||||
sf_localizations:
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
import 'package:dio/dio.dart';
|
||||
import 'package:legacy_shared/legacy_shared.dart';
|
||||
import 'package:settings/src/core/data/datasources/alarm_remote_datasource.dart';
|
||||
import 'package:settings/src/core/data/models/get_alarms_response_model.dart';
|
||||
import 'package:settings/src/features/alarm/domain/entities/alarm_entity.dart';
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
import 'package:dio/dio.dart';
|
||||
import 'package:legacy_shared/legacy_shared.dart';
|
||||
import 'package:sf_infrastructure/sf_infrastructure.dart';
|
||||
|
||||
import 'package:settings/src/core/data/models/get_contact_lists_response_model.dart';
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
import 'package:dio/dio.dart';
|
||||
import 'package:legacy_shared/legacy_shared.dart';
|
||||
import 'package:sf_infrastructure/sf_infrastructure.dart';
|
||||
|
||||
import '../../../features/wifi_settings/domain/entities/wifi_network_entity.dart';
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
import 'dart:async';
|
||||
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:legacy_shared/legacy_shared.dart';
|
||||
import 'package:sf_shared/sf_shared.dart';
|
||||
import 'package:settings/src/core/domain/repositories/alarm_repository.dart';
|
||||
import 'package:settings/src/core/providers/alarm_repository_provider.dart';
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import 'dart:async';
|
||||
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:legacy_shared/legacy_shared.dart';
|
||||
import 'package:sf_infrastructure/sf_infrastructure.dart';
|
||||
import 'package:sf_shared/sf_shared.dart';
|
||||
import 'package:settings/src/core/domain/entities/contact_list_contact_entity.dart';
|
||||
import 'package:settings/src/core/domain/repositories/block_phone_repository.dart';
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
import 'dart:async';
|
||||
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:legacy_shared/legacy_shared.dart';
|
||||
import 'package:sf_shared/sf_shared.dart';
|
||||
import 'package:settings/src/core/domain/repositories/language_repository.dart';
|
||||
import 'package:settings/src/core/providers/language_repository_provider.dart';
|
||||
|
||||
@@ -2,7 +2,6 @@ import 'package:design_system/design_system.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:legacy_shared/legacy_shared.dart';
|
||||
import 'package:sf_shared/sf_shared.dart';
|
||||
import 'package:navigation/navigation.dart';
|
||||
import 'package:sf_localizations/sf_localizations.dart';
|
||||
import 'package:utils/utils.dart';
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import 'dart:async';
|
||||
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:legacy_shared/legacy_shared.dart';
|
||||
import 'package:sf_infrastructure/sf_infrastructure.dart';
|
||||
import 'package:sf_shared/sf_shared.dart';
|
||||
import 'package:settings/src/core/domain/entities/contact_list_contact_entity.dart';
|
||||
import 'package:settings/src/core/domain/repositories/sos_contacts_repository.dart';
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
import 'dart:async';
|
||||
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:legacy_shared/legacy_shared.dart';
|
||||
import 'package:sf_shared/sf_shared.dart';
|
||||
import 'package:sf_tracking/sf_tracking.dart';
|
||||
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
export 'src/legacy_device_repository.dart';
|
||||
export 'src/legacy_device_repository_impl.dart';
|
||||
export 'src/legacy_device_remote_datasource.dart';
|
||||
export 'src/legacy_device_remote_datasource_impl.dart';
|
||||
export 'src/legacy_device_repository_provider.dart';
|
||||
export 'src/legacy_device_remote_datasource_provider.dart';
|
||||
export 'src/legacy_device_view_model.dart';
|
||||
export 'src/legacy_device_view_state.dart';
|
||||
@@ -0,0 +1,5 @@
|
||||
import 'package:legacy_shared/legacy_shared.dart';
|
||||
|
||||
abstract class LegacyDeviceRemoteDatasource {
|
||||
Future<List<PositionEntity>> getLatestPositions({required String deviceId});
|
||||
}
|
||||
@@ -1,12 +1,10 @@
|
||||
import 'package:control_panel/src/core/data/datasource/control_panel_remote_datasource.dart';
|
||||
import 'legacy_device_remote_datasource.dart';
|
||||
import 'package:dio/dio.dart';
|
||||
import 'package:control_panel/src/core/data/models/latest_positions_response_model.dart';
|
||||
import 'package:control_panel/src/core/domain/entities/position_entity.dart';
|
||||
import 'package:legacy_shared/legacy_shared.dart';
|
||||
import 'package:sf_infrastructure/sf_infrastructure.dart';
|
||||
|
||||
class ControlPanelRemoteDatasourceImpl implements ControlPanelRemoteDatasource {
|
||||
ControlPanelRemoteDatasourceImpl(this._repository);
|
||||
class LegacyDeviceRemoteDatasourceImpl implements LegacyDeviceRemoteDatasource {
|
||||
LegacyDeviceRemoteDatasourceImpl(this._repository);
|
||||
|
||||
final SaveFamilyRepository _repository;
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'legacy_device_remote_datasource.dart';
|
||||
import 'legacy_device_remote_datasource_impl.dart';
|
||||
import 'package:sf_infrastructure/sf_infrastructure.dart';
|
||||
|
||||
final legacyDeviceRemoteDatasourceProvider =
|
||||
Provider<LegacyDeviceRemoteDatasource>((ref) {
|
||||
final saveFamilyRepository = getIt<SaveFamilyRepository>();
|
||||
return LegacyDeviceRemoteDatasourceImpl(saveFamilyRepository);
|
||||
});
|
||||
@@ -0,0 +1,5 @@
|
||||
import 'package:legacy_shared/legacy_shared.dart';
|
||||
|
||||
abstract class LegacyDeviceRepository {
|
||||
Future<List<PositionEntity>> getLatestPositions({required String deviceId});
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
import 'legacy_device_remote_datasource.dart';
|
||||
import 'legacy_device_repository.dart';
|
||||
import 'package:legacy_shared/legacy_shared.dart';
|
||||
|
||||
class LegacyDeviceRepositoryImpl implements LegacyDeviceRepository {
|
||||
const LegacyDeviceRepositoryImpl(this._remote);
|
||||
|
||||
final LegacyDeviceRemoteDatasource _remote;
|
||||
|
||||
@override
|
||||
Future<List<PositionEntity>> getLatestPositions({
|
||||
required String deviceId,
|
||||
}) async {
|
||||
return _remote.getLatestPositions(deviceId: deviceId);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'legacy_device_repository_impl.dart';
|
||||
import 'legacy_device_repository.dart';
|
||||
import 'legacy_device_remote_datasource_provider.dart';
|
||||
|
||||
final legacyDeviceRepositoryProvider = Provider<LegacyDeviceRepository>((ref) {
|
||||
final remote = ref.read(legacyDeviceRemoteDatasourceProvider);
|
||||
return LegacyDeviceRepositoryImpl(remote);
|
||||
});
|
||||
@@ -1,29 +1,28 @@
|
||||
import 'dart:async';
|
||||
|
||||
import 'package:control_panel/src/core/domain/entities/position_entity.dart';
|
||||
import 'package:control_panel/src/core/domain/repositories/control_panel_repository.dart';
|
||||
import 'package:control_panel/src/core/providers/control_panel_repository_provider.dart';
|
||||
import 'package:control_panel/src/features/control_panel/presentation/state/control_panel_view_state.dart';
|
||||
import 'legacy_device_repository.dart';
|
||||
import 'legacy_device_repository_provider.dart';
|
||||
import 'legacy_device_view_state.dart';
|
||||
import 'package:legacy_shared/legacy_shared.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:sf_shared/sf_shared.dart';
|
||||
import 'package:sf_tracking/sf_tracking.dart';
|
||||
|
||||
final controlPanelViewModelProvider = AsyncNotifierProvider.autoDispose<
|
||||
ControlPanelViewModel,
|
||||
ControlPanelViewState>(ControlPanelViewModel.new);
|
||||
final legacyDeviceViewModelProvider = AsyncNotifierProvider.autoDispose<
|
||||
LegacyDeviceViewModel,
|
||||
LegacyDeviceViewState>(LegacyDeviceViewModel.new);
|
||||
|
||||
class ControlPanelViewModel extends AsyncNotifier<ControlPanelViewState> {
|
||||
late ControlPanelRepository _controlPanelRepository;
|
||||
class LegacyDeviceViewModel extends AsyncNotifier<LegacyDeviceViewState> {
|
||||
late LegacyDeviceRepository _legacyDeviceRepository;
|
||||
late SfTrackingRepository _tracking;
|
||||
|
||||
@override
|
||||
Future<ControlPanelViewState> build() async {
|
||||
_controlPanelRepository = ref.read(controlPanelRepositoryProvider);
|
||||
Future<LegacyDeviceViewState> build() async {
|
||||
_legacyDeviceRepository = ref.read(legacyDeviceRepositoryProvider);
|
||||
_tracking = ref.read(sfTrackingProvider);
|
||||
|
||||
final devices = await ref.watch(legacyDevicesProvider.future);
|
||||
if (devices.isEmpty) return const ControlPanelViewState();
|
||||
if (devices.isEmpty) return const LegacyDeviceViewState();
|
||||
|
||||
final selected = await ref.watch(selectedDeviceProvider.future);
|
||||
|
||||
@@ -34,7 +33,7 @@ class ControlPanelViewModel extends AsyncNotifier<ControlPanelViewState> {
|
||||
.firstOrNull
|
||||
: null;
|
||||
|
||||
return ControlPanelViewState(
|
||||
return LegacyDeviceViewState(
|
||||
devices: devices,
|
||||
selectedDevice: selected,
|
||||
positions: latestPositions,
|
||||
@@ -77,7 +76,7 @@ class ControlPanelViewModel extends AsyncNotifier<ControlPanelViewState> {
|
||||
var hadError = false;
|
||||
final positionLists = await Future.wait<List<PositionEntity>>(
|
||||
devices.map(
|
||||
(device) => _controlPanelRepository
|
||||
(device) => _legacyDeviceRepository
|
||||
.getLatestPositions(deviceId: device.identificator)
|
||||
.catchError((_) {
|
||||
hadError = true;
|
||||
@@ -1,16 +1,16 @@
|
||||
import 'package:control_panel/src/core/domain/entities/position_entity.dart';
|
||||
import 'package:legacy_shared/legacy_shared.dart';
|
||||
import 'package:freezed_annotation/freezed_annotation.dart';
|
||||
import 'package:sf_shared/sf_shared.dart';
|
||||
|
||||
part 'control_panel_view_state.freezed.dart';
|
||||
part 'legacy_device_view_state.freezed.dart';
|
||||
|
||||
@freezed
|
||||
abstract class ControlPanelViewState with _$ControlPanelViewState {
|
||||
const factory ControlPanelViewState({
|
||||
abstract class LegacyDeviceViewState with _$LegacyDeviceViewState {
|
||||
const factory LegacyDeviceViewState({
|
||||
@Default([]) List<DeviceEntity> devices,
|
||||
DeviceEntity? selectedDevice,
|
||||
@Default([]) List<PositionEntity> positions,
|
||||
PositionEntity? selectedPosition,
|
||||
@Default(false) bool positionsError,
|
||||
}) = _ControlPanelViewState;
|
||||
}) = _LegacyDeviceViewState;
|
||||
}
|
||||
@@ -3,7 +3,7 @@
|
||||
// ignore_for_file: type=lint
|
||||
// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark
|
||||
|
||||
part of 'control_panel_view_state.dart';
|
||||
part of 'legacy_device_view_state.dart';
|
||||
|
||||
// **************************************************************************
|
||||
// FreezedGenerator
|
||||
@@ -12,20 +12,20 @@ part of 'control_panel_view_state.dart';
|
||||
// dart format off
|
||||
T _$identity<T>(T value) => value;
|
||||
/// @nodoc
|
||||
mixin _$ControlPanelViewState {
|
||||
mixin _$LegacyDeviceViewState {
|
||||
|
||||
List<DeviceEntity> get devices; DeviceEntity? get selectedDevice; List<PositionEntity> get positions; PositionEntity? get selectedPosition; bool get positionsError;
|
||||
/// Create a copy of ControlPanelViewState
|
||||
/// Create a copy of LegacyDeviceViewState
|
||||
/// with the given fields replaced by the non-null parameter values.
|
||||
@JsonKey(includeFromJson: false, includeToJson: false)
|
||||
@pragma('vm:prefer-inline')
|
||||
$ControlPanelViewStateCopyWith<ControlPanelViewState> get copyWith => _$ControlPanelViewStateCopyWithImpl<ControlPanelViewState>(this as ControlPanelViewState, _$identity);
|
||||
$LegacyDeviceViewStateCopyWith<LegacyDeviceViewState> get copyWith => _$LegacyDeviceViewStateCopyWithImpl<LegacyDeviceViewState>(this as LegacyDeviceViewState, _$identity);
|
||||
|
||||
|
||||
|
||||
@override
|
||||
bool operator ==(Object other) {
|
||||
return identical(this, other) || (other.runtimeType == runtimeType&&other is ControlPanelViewState&&const DeepCollectionEquality().equals(other.devices, devices)&&(identical(other.selectedDevice, selectedDevice) || other.selectedDevice == selectedDevice)&&const DeepCollectionEquality().equals(other.positions, positions)&&(identical(other.selectedPosition, selectedPosition) || other.selectedPosition == selectedPosition)&&(identical(other.positionsError, positionsError) || other.positionsError == positionsError));
|
||||
return identical(this, other) || (other.runtimeType == runtimeType&&other is LegacyDeviceViewState&&const DeepCollectionEquality().equals(other.devices, devices)&&(identical(other.selectedDevice, selectedDevice) || other.selectedDevice == selectedDevice)&&const DeepCollectionEquality().equals(other.positions, positions)&&(identical(other.selectedPosition, selectedPosition) || other.selectedPosition == selectedPosition)&&(identical(other.positionsError, positionsError) || other.positionsError == positionsError));
|
||||
}
|
||||
|
||||
|
||||
@@ -34,15 +34,15 @@ int get hashCode => Object.hash(runtimeType,const DeepCollectionEquality().hash(
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return 'ControlPanelViewState(devices: $devices, selectedDevice: $selectedDevice, positions: $positions, selectedPosition: $selectedPosition, positionsError: $positionsError)';
|
||||
return 'LegacyDeviceViewState(devices: $devices, selectedDevice: $selectedDevice, positions: $positions, selectedPosition: $selectedPosition, positionsError: $positionsError)';
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
/// @nodoc
|
||||
abstract mixin class $ControlPanelViewStateCopyWith<$Res> {
|
||||
factory $ControlPanelViewStateCopyWith(ControlPanelViewState value, $Res Function(ControlPanelViewState) _then) = _$ControlPanelViewStateCopyWithImpl;
|
||||
abstract mixin class $LegacyDeviceViewStateCopyWith<$Res> {
|
||||
factory $LegacyDeviceViewStateCopyWith(LegacyDeviceViewState value, $Res Function(LegacyDeviceViewState) _then) = _$LegacyDeviceViewStateCopyWithImpl;
|
||||
@useResult
|
||||
$Res call({
|
||||
List<DeviceEntity> devices, DeviceEntity? selectedDevice, List<PositionEntity> positions, PositionEntity? selectedPosition, bool positionsError
|
||||
@@ -53,14 +53,14 @@ $DeviceEntityCopyWith<$Res>? get selectedDevice;$PositionEntityCopyWith<$Res>? g
|
||||
|
||||
}
|
||||
/// @nodoc
|
||||
class _$ControlPanelViewStateCopyWithImpl<$Res>
|
||||
implements $ControlPanelViewStateCopyWith<$Res> {
|
||||
_$ControlPanelViewStateCopyWithImpl(this._self, this._then);
|
||||
class _$LegacyDeviceViewStateCopyWithImpl<$Res>
|
||||
implements $LegacyDeviceViewStateCopyWith<$Res> {
|
||||
_$LegacyDeviceViewStateCopyWithImpl(this._self, this._then);
|
||||
|
||||
final ControlPanelViewState _self;
|
||||
final $Res Function(ControlPanelViewState) _then;
|
||||
final LegacyDeviceViewState _self;
|
||||
final $Res Function(LegacyDeviceViewState) _then;
|
||||
|
||||
/// Create a copy of ControlPanelViewState
|
||||
/// Create a copy of LegacyDeviceViewState
|
||||
/// with the given fields replaced by the non-null parameter values.
|
||||
@pragma('vm:prefer-inline') @override $Res call({Object? devices = null,Object? selectedDevice = freezed,Object? positions = null,Object? selectedPosition = freezed,Object? positionsError = null,}) {
|
||||
return _then(_self.copyWith(
|
||||
@@ -72,7 +72,7 @@ as PositionEntity?,positionsError: null == positionsError ? _self.positionsError
|
||||
as bool,
|
||||
));
|
||||
}
|
||||
/// Create a copy of ControlPanelViewState
|
||||
/// Create a copy of LegacyDeviceViewState
|
||||
/// with the given fields replaced by the non-null parameter values.
|
||||
@override
|
||||
@pragma('vm:prefer-inline')
|
||||
@@ -84,7 +84,7 @@ $DeviceEntityCopyWith<$Res>? get selectedDevice {
|
||||
return $DeviceEntityCopyWith<$Res>(_self.selectedDevice!, (value) {
|
||||
return _then(_self.copyWith(selectedDevice: value));
|
||||
});
|
||||
}/// Create a copy of ControlPanelViewState
|
||||
}/// Create a copy of LegacyDeviceViewState
|
||||
/// with the given fields replaced by the non-null parameter values.
|
||||
@override
|
||||
@pragma('vm:prefer-inline')
|
||||
@@ -100,8 +100,8 @@ $PositionEntityCopyWith<$Res>? get selectedPosition {
|
||||
}
|
||||
|
||||
|
||||
/// Adds pattern-matching-related methods to [ControlPanelViewState].
|
||||
extension ControlPanelViewStatePatterns on ControlPanelViewState {
|
||||
/// Adds pattern-matching-related methods to [LegacyDeviceViewState].
|
||||
extension LegacyDeviceViewStatePatterns on LegacyDeviceViewState {
|
||||
/// A variant of `map` that fallback to returning `orElse`.
|
||||
///
|
||||
/// It is equivalent to doing:
|
||||
@@ -114,10 +114,10 @@ extension ControlPanelViewStatePatterns on ControlPanelViewState {
|
||||
/// }
|
||||
/// ```
|
||||
|
||||
@optionalTypeArgs TResult maybeMap<TResult extends Object?>(TResult Function( _ControlPanelViewState value)? $default,{required TResult orElse(),}){
|
||||
@optionalTypeArgs TResult maybeMap<TResult extends Object?>(TResult Function( _LegacyDeviceViewState value)? $default,{required TResult orElse(),}){
|
||||
final _that = this;
|
||||
switch (_that) {
|
||||
case _ControlPanelViewState() when $default != null:
|
||||
case _LegacyDeviceViewState() when $default != null:
|
||||
return $default(_that);case _:
|
||||
return orElse();
|
||||
|
||||
@@ -136,10 +136,10 @@ return $default(_that);case _:
|
||||
/// }
|
||||
/// ```
|
||||
|
||||
@optionalTypeArgs TResult map<TResult extends Object?>(TResult Function( _ControlPanelViewState value) $default,){
|
||||
@optionalTypeArgs TResult map<TResult extends Object?>(TResult Function( _LegacyDeviceViewState value) $default,){
|
||||
final _that = this;
|
||||
switch (_that) {
|
||||
case _ControlPanelViewState():
|
||||
case _LegacyDeviceViewState():
|
||||
return $default(_that);case _:
|
||||
throw StateError('Unexpected subclass');
|
||||
|
||||
@@ -157,10 +157,10 @@ return $default(_that);case _:
|
||||
/// }
|
||||
/// ```
|
||||
|
||||
@optionalTypeArgs TResult? mapOrNull<TResult extends Object?>(TResult? Function( _ControlPanelViewState value)? $default,){
|
||||
@optionalTypeArgs TResult? mapOrNull<TResult extends Object?>(TResult? Function( _LegacyDeviceViewState value)? $default,){
|
||||
final _that = this;
|
||||
switch (_that) {
|
||||
case _ControlPanelViewState() when $default != null:
|
||||
case _LegacyDeviceViewState() when $default != null:
|
||||
return $default(_that);case _:
|
||||
return null;
|
||||
|
||||
@@ -180,7 +180,7 @@ return $default(_that);case _:
|
||||
|
||||
@optionalTypeArgs TResult maybeWhen<TResult extends Object?>(TResult Function( List<DeviceEntity> devices, DeviceEntity? selectedDevice, List<PositionEntity> positions, PositionEntity? selectedPosition, bool positionsError)? $default,{required TResult orElse(),}) {final _that = this;
|
||||
switch (_that) {
|
||||
case _ControlPanelViewState() when $default != null:
|
||||
case _LegacyDeviceViewState() when $default != null:
|
||||
return $default(_that.devices,_that.selectedDevice,_that.positions,_that.selectedPosition,_that.positionsError);case _:
|
||||
return orElse();
|
||||
|
||||
@@ -201,7 +201,7 @@ return $default(_that.devices,_that.selectedDevice,_that.positions,_that.selecte
|
||||
|
||||
@optionalTypeArgs TResult when<TResult extends Object?>(TResult Function( List<DeviceEntity> devices, DeviceEntity? selectedDevice, List<PositionEntity> positions, PositionEntity? selectedPosition, bool positionsError) $default,) {final _that = this;
|
||||
switch (_that) {
|
||||
case _ControlPanelViewState():
|
||||
case _LegacyDeviceViewState():
|
||||
return $default(_that.devices,_that.selectedDevice,_that.positions,_that.selectedPosition,_that.positionsError);case _:
|
||||
throw StateError('Unexpected subclass');
|
||||
|
||||
@@ -221,7 +221,7 @@ return $default(_that.devices,_that.selectedDevice,_that.positions,_that.selecte
|
||||
|
||||
@optionalTypeArgs TResult? whenOrNull<TResult extends Object?>(TResult? Function( List<DeviceEntity> devices, DeviceEntity? selectedDevice, List<PositionEntity> positions, PositionEntity? selectedPosition, bool positionsError)? $default,) {final _that = this;
|
||||
switch (_that) {
|
||||
case _ControlPanelViewState() when $default != null:
|
||||
case _LegacyDeviceViewState() when $default != null:
|
||||
return $default(_that.devices,_that.selectedDevice,_that.positions,_that.selectedPosition,_that.positionsError);case _:
|
||||
return null;
|
||||
|
||||
@@ -233,8 +233,8 @@ return $default(_that.devices,_that.selectedDevice,_that.positions,_that.selecte
|
||||
/// @nodoc
|
||||
|
||||
|
||||
class _ControlPanelViewState implements ControlPanelViewState {
|
||||
const _ControlPanelViewState({final List<DeviceEntity> devices = const [], this.selectedDevice, final List<PositionEntity> positions = const [], this.selectedPosition, this.positionsError = false}): _devices = devices,_positions = positions;
|
||||
class _LegacyDeviceViewState implements LegacyDeviceViewState {
|
||||
const _LegacyDeviceViewState({final List<DeviceEntity> devices = const [], this.selectedDevice, final List<PositionEntity> positions = const [], this.selectedPosition, this.positionsError = false}): _devices = devices,_positions = positions;
|
||||
|
||||
|
||||
final List<DeviceEntity> _devices;
|
||||
@@ -255,17 +255,17 @@ class _ControlPanelViewState implements ControlPanelViewState {
|
||||
@override final PositionEntity? selectedPosition;
|
||||
@override@JsonKey() final bool positionsError;
|
||||
|
||||
/// Create a copy of ControlPanelViewState
|
||||
/// Create a copy of LegacyDeviceViewState
|
||||
/// with the given fields replaced by the non-null parameter values.
|
||||
@override @JsonKey(includeFromJson: false, includeToJson: false)
|
||||
@pragma('vm:prefer-inline')
|
||||
_$ControlPanelViewStateCopyWith<_ControlPanelViewState> get copyWith => __$ControlPanelViewStateCopyWithImpl<_ControlPanelViewState>(this, _$identity);
|
||||
_$LegacyDeviceViewStateCopyWith<_LegacyDeviceViewState> get copyWith => __$LegacyDeviceViewStateCopyWithImpl<_LegacyDeviceViewState>(this, _$identity);
|
||||
|
||||
|
||||
|
||||
@override
|
||||
bool operator ==(Object other) {
|
||||
return identical(this, other) || (other.runtimeType == runtimeType&&other is _ControlPanelViewState&&const DeepCollectionEquality().equals(other._devices, _devices)&&(identical(other.selectedDevice, selectedDevice) || other.selectedDevice == selectedDevice)&&const DeepCollectionEquality().equals(other._positions, _positions)&&(identical(other.selectedPosition, selectedPosition) || other.selectedPosition == selectedPosition)&&(identical(other.positionsError, positionsError) || other.positionsError == positionsError));
|
||||
return identical(this, other) || (other.runtimeType == runtimeType&&other is _LegacyDeviceViewState&&const DeepCollectionEquality().equals(other._devices, _devices)&&(identical(other.selectedDevice, selectedDevice) || other.selectedDevice == selectedDevice)&&const DeepCollectionEquality().equals(other._positions, _positions)&&(identical(other.selectedPosition, selectedPosition) || other.selectedPosition == selectedPosition)&&(identical(other.positionsError, positionsError) || other.positionsError == positionsError));
|
||||
}
|
||||
|
||||
|
||||
@@ -274,15 +274,15 @@ int get hashCode => Object.hash(runtimeType,const DeepCollectionEquality().hash(
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return 'ControlPanelViewState(devices: $devices, selectedDevice: $selectedDevice, positions: $positions, selectedPosition: $selectedPosition, positionsError: $positionsError)';
|
||||
return 'LegacyDeviceViewState(devices: $devices, selectedDevice: $selectedDevice, positions: $positions, selectedPosition: $selectedPosition, positionsError: $positionsError)';
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
/// @nodoc
|
||||
abstract mixin class _$ControlPanelViewStateCopyWith<$Res> implements $ControlPanelViewStateCopyWith<$Res> {
|
||||
factory _$ControlPanelViewStateCopyWith(_ControlPanelViewState value, $Res Function(_ControlPanelViewState) _then) = __$ControlPanelViewStateCopyWithImpl;
|
||||
abstract mixin class _$LegacyDeviceViewStateCopyWith<$Res> implements $LegacyDeviceViewStateCopyWith<$Res> {
|
||||
factory _$LegacyDeviceViewStateCopyWith(_LegacyDeviceViewState value, $Res Function(_LegacyDeviceViewState) _then) = __$LegacyDeviceViewStateCopyWithImpl;
|
||||
@override @useResult
|
||||
$Res call({
|
||||
List<DeviceEntity> devices, DeviceEntity? selectedDevice, List<PositionEntity> positions, PositionEntity? selectedPosition, bool positionsError
|
||||
@@ -293,17 +293,17 @@ $Res call({
|
||||
|
||||
}
|
||||
/// @nodoc
|
||||
class __$ControlPanelViewStateCopyWithImpl<$Res>
|
||||
implements _$ControlPanelViewStateCopyWith<$Res> {
|
||||
__$ControlPanelViewStateCopyWithImpl(this._self, this._then);
|
||||
class __$LegacyDeviceViewStateCopyWithImpl<$Res>
|
||||
implements _$LegacyDeviceViewStateCopyWith<$Res> {
|
||||
__$LegacyDeviceViewStateCopyWithImpl(this._self, this._then);
|
||||
|
||||
final _ControlPanelViewState _self;
|
||||
final $Res Function(_ControlPanelViewState) _then;
|
||||
final _LegacyDeviceViewState _self;
|
||||
final $Res Function(_LegacyDeviceViewState) _then;
|
||||
|
||||
/// Create a copy of ControlPanelViewState
|
||||
/// Create a copy of LegacyDeviceViewState
|
||||
/// with the given fields replaced by the non-null parameter values.
|
||||
@override @pragma('vm:prefer-inline') $Res call({Object? devices = null,Object? selectedDevice = freezed,Object? positions = null,Object? selectedPosition = freezed,Object? positionsError = null,}) {
|
||||
return _then(_ControlPanelViewState(
|
||||
return _then(_LegacyDeviceViewState(
|
||||
devices: null == devices ? _self._devices : devices // ignore: cast_nullable_to_non_nullable
|
||||
as List<DeviceEntity>,selectedDevice: freezed == selectedDevice ? _self.selectedDevice : selectedDevice // ignore: cast_nullable_to_non_nullable
|
||||
as DeviceEntity?,positions: null == positions ? _self._positions : positions // ignore: cast_nullable_to_non_nullable
|
||||
@@ -313,7 +313,7 @@ as bool,
|
||||
));
|
||||
}
|
||||
|
||||
/// Create a copy of ControlPanelViewState
|
||||
/// Create a copy of LegacyDeviceViewState
|
||||
/// with the given fields replaced by the non-null parameter values.
|
||||
@override
|
||||
@pragma('vm:prefer-inline')
|
||||
@@ -325,7 +325,7 @@ $DeviceEntityCopyWith<$Res>? get selectedDevice {
|
||||
return $DeviceEntityCopyWith<$Res>(_self.selectedDevice!, (value) {
|
||||
return _then(_self.copyWith(selectedDevice: value));
|
||||
});
|
||||
}/// Create a copy of ControlPanelViewState
|
||||
}/// Create a copy of LegacyDeviceViewState
|
||||
/// with the given fields replaced by the non-null parameter values.
|
||||
@override
|
||||
@pragma('vm:prefer-inline')
|
||||
36
modules/legacy/packages/legacy_device_state/pubspec.yaml
Normal file
36
modules/legacy/packages/legacy_device_state/pubspec.yaml
Normal file
@@ -0,0 +1,36 @@
|
||||
name: legacy_device_state
|
||||
description: "Shared device state (selected device + latest positions) consumed by legacy modules (control_panel, location)."
|
||||
publish_to: 'none'
|
||||
resolution: workspace
|
||||
version: 1.0.0+1
|
||||
|
||||
environment:
|
||||
sdk: ^3.9.2
|
||||
flutter: ">=1.17.0"
|
||||
|
||||
dependencies:
|
||||
flutter:
|
||||
sdk: flutter
|
||||
legacy_shared:
|
||||
path: ../legacy_shared
|
||||
sf_infrastructure:
|
||||
path: ../../../../packages/sf_infrastructure
|
||||
sf_shared:
|
||||
path: ../../../../packages/sf_shared
|
||||
sf_tracking:
|
||||
path: ../../../../packages/sf_tracking
|
||||
flutter_riverpod: ^3.0.3
|
||||
freezed_annotation: ^3.1.0
|
||||
json_annotation: ^4.9.0
|
||||
dio: ^5.9.2
|
||||
|
||||
dev_dependencies:
|
||||
flutter_test:
|
||||
sdk: flutter
|
||||
flutter_lints: ^5.0.0
|
||||
build_runner: ^2.7.1
|
||||
freezed: ^3.2.3
|
||||
json_serializable: ^6.11.2
|
||||
|
||||
flutter:
|
||||
uses-material-design: true
|
||||
@@ -7,8 +7,13 @@ export 'src/widgets/week_day_chips.dart';
|
||||
export 'src/components/menu_button.dart';
|
||||
export 'src/data/models/device_response_model.dart';
|
||||
export 'src/data/models/send_command_request_model.dart';
|
||||
export 'package:sf_infrastructure/src/network/dio_error_mapper.dart';
|
||||
export 'src/data/models/entities/position_entity.dart';
|
||||
export 'src/data/models/entities/address_entity.dart';
|
||||
export 'src/data/models/entities/network_entity.dart';
|
||||
export 'src/data/models/latest_positions_response_model.dart';
|
||||
export 'src/utils/device_csv_builder.dart';
|
||||
export 'src/utils/battery_utils.dart';
|
||||
export 'src/utils/date_format_utils.dart';
|
||||
export 'src/domain/repositories/command_repository.dart';
|
||||
export 'src/providers/commands_repository_provider.dart';
|
||||
export 'src/data/datasources/device_settings_update_datasource.dart';
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import 'package:freezed_annotation/freezed_annotation.dart';
|
||||
import 'package:control_panel/src/core/domain/entities/address_entity.dart';
|
||||
import 'package:control_panel/src/core/domain/entities/network_entity.dart';
|
||||
import 'address_entity.dart';
|
||||
import 'network_entity.dart';
|
||||
|
||||
part 'position_entity.freezed.dart';
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
// ignore_for_file: non_constant_identifier_names
|
||||
|
||||
import 'package:freezed_annotation/freezed_annotation.dart';
|
||||
import 'package:control_panel/src/core/domain/entities/address_entity.dart';
|
||||
import 'package:control_panel/src/core/domain/entities/network_entity.dart';
|
||||
import 'package:control_panel/src/core/domain/entities/position_entity.dart';
|
||||
import 'entities/address_entity.dart';
|
||||
import 'entities/network_entity.dart';
|
||||
import 'entities/position_entity.dart';
|
||||
|
||||
part 'latest_positions_response_model.freezed.dart';
|
||||
part 'latest_positions_response_model.g.dart';
|
||||
@@ -24,6 +24,7 @@ workspace:
|
||||
- modules/legacy/modules/location
|
||||
- modules/legacy/modules/settings
|
||||
- modules/legacy/packages/legacy_shared
|
||||
- modules/legacy/packages/legacy_device_state
|
||||
- packages/design_system
|
||||
- packages/flutter_treezor_entrust_sdk_bridge
|
||||
- packages/flutter_treezor_entrust_sdk_bridge/example
|
||||
|
||||
Reference in New Issue
Block a user