11import  'dart:async' ;
2- import  'dart:convert' ;
32
43import  'package:dartx/dartx.dart' ;
54import  'package:flutter_template/core/source/common/local_storage.dart' ;
@@ -8,8 +7,8 @@ import 'package:mutex/mutex.dart';
87import  'package:rxdart/rxdart.dart' ;
98
109abstract  class  HiveBaseSource <Key , Model > implements  LocalStorage <Key , Model > {
11-   final  Map < String ,  dynamic >  Function (Model ) dbParser;
12-   final  Model  Function (Map < String ,  dynamic > ) modelParser;
10+   final  String  Function (Model ) dbParser;
11+   final  Model  Function (String ) modelParser;
1312  final  Mutex  _mutex =  Mutex ();
1413  Box <String >?  _box;
1514
@@ -35,7 +34,7 @@ abstract class HiveBaseSource<Key, Model> implements LocalStorage<Key, Model> {
3534      withBox ((box) async  {
3635        await  box.put (
3736          key,
38-           jsonEncode ( dbParser (response) ),
37+           dbParser (response),
3938        );
4039        return  response;
4140      });
@@ -45,7 +44,7 @@ abstract class HiveBaseSource<Key, Model> implements LocalStorage<Key, Model> {
4544      withBox ((box) async  {
4645        await  box.putAll (
4746          entries.mapValues (
48-             (entry) =>  jsonEncode ( dbParser (entry.value) ),
47+             (entry) =>  dbParser (entry.value),
4948          ),
5049        );
5150        return  getElements ();
@@ -63,7 +62,7 @@ abstract class HiveBaseSource<Key, Model> implements LocalStorage<Key, Model> {
6362  ) => 
6463      withBox ((box) async  {
6564        final  data =  box.get (key);
66-         return  data ==  null  ?  null  :  modelParser (jsonDecode ( data) );
65+         return  data ==  null  ?  null  :  modelParser (data);
6766      });
6867
6968  @override 
@@ -73,14 +72,14 @@ abstract class HiveBaseSource<Key, Model> implements LocalStorage<Key, Model> {
7372    final  box =  await  getBox ();
7473    yield  await  getElement (key);
7574    yield *  box.watch (key:  key).map (
76-           (event) =>  modelParser (jsonDecode ( event.value) ),
75+           (event) =>  modelParser (event.value),
7776        );
7877  }
7978
8079  @override 
8180  Future <List <Model >> getElements () =>  withBox (
8281        (box) =>  Future .value (
83-           box.values.map ((e) =>  modelParser (jsonDecode (e) )).toList (),
82+           box.values.map ((e) =>  modelParser (e )).toList (),
8483        ),
8584      );
8685
0 commit comments