You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							32 lines
						
					
					
						
							1.2 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							32 lines
						
					
					
						
							1.2 KiB
						
					
					
				
								import 'package:hadi_hoda_flutter/core/constants/my_constants.dart';
							 | 
						|
								import 'package:hadi_hoda_flutter/core/error_handler/my_exception.dart';
							 | 
						|
								import 'package:hadi_hoda_flutter/core/params/level_params.dart';
							 | 
						|
								import 'package:hadi_hoda_flutter/core/utils/local_storage.dart';
							 | 
						|
								import 'package:hadi_hoda_flutter/features/level/domain/entity/level_entity.dart';
							 | 
						|
								import 'package:hadi_hoda_flutter/features/level/domain/entity/total_data_entity.dart';
							 | 
						|
								import 'package:hive/hive.dart';
							 | 
						|
								
							 | 
						|
								abstract class ILevelDatasource {
							 | 
						|
								  Future<List<LevelEntity>> getLevels({required LevelParams params});
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								/// Local
							 | 
						|
								class LocalLevelDatasourceImpl implements ILevelDatasource {
							 | 
						|
								  const LocalLevelDatasourceImpl();
							 | 
						|
								
							 | 
						|
								  @override
							 | 
						|
								  Future<List<LevelEntity>> getLevels({required LevelParams params}) async {
							 | 
						|
								    try {
							 | 
						|
								      final String selectedLanguage = LocalStorage.readData(
							 | 
						|
								          key: MyConstants.selectLanguage) ?? 'fa';
							 | 
						|
								      final Box<TotalDataEntity> levelBox = Hive.box(MyConstants.levelBox);
							 | 
						|
								      final TotalDataEntity findData = levelBox.values.singleWhere(
							 | 
						|
								        (e) => e.code == selectedLanguage,
							 | 
						|
								        orElse: () => TotalDataEntity(),
							 | 
						|
								      );
							 | 
						|
								      return findData.levels ?? [];
							 | 
						|
								    } catch (_) {
							 | 
						|
								      throw MyException(errorMessage: 'Operation Failed');
							 | 
						|
								    }
							 | 
						|
								  }
							 | 
						|
								}
							 |