import 'package:hadi_hoda_flutter/core/constants/my_api.dart'; import 'package:hadi_hoda_flutter/core/constants/my_constants.dart'; import 'package:hadi_hoda_flutter/core/network/http_request.dart'; import 'package:hadi_hoda_flutter/core/params/language_params.dart'; import 'package:hadi_hoda_flutter/core/response/base_response.dart'; import 'package:hadi_hoda_flutter/core/utils/local_storage.dart'; import 'package:hadi_hoda_flutter/features/level/data/model/level_model.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 ILanguageDatasource { Future saveLevels({required LanguageParams params}); } class LanguageDatasourceImpl implements ILanguageDatasource { final IHttpRequest httpRequest; const LanguageDatasourceImpl(this.httpRequest); @override Future saveLevels({required LanguageParams params}) async { await LocalStorage.saveData( key: MyConstants.selectLanguage, value: params.code ?? 'fa', ); final Box data = Hive.box(MyConstants.levelBox); final TotalDataEntity findData = data.values.singleWhere( (e) => e.code == params.code, orElse: () => TotalDataEntity(), ); if (findData.code != params.code) { final response = await httpRequest.get( path: MyApi.levels, header: params.toHeader, ); final List levels = BaseResponse.getDataList( response?['result'], (json) => LevelModel.fromJson(json), ); await data.add(TotalDataEntity(code: params.code, levels: levels)); } } }