Skip to content

Commit 003accb

Browse files
authored
build: bump up dependencies
Closes 154
1 parent fd4586c commit 003accb

File tree

7 files changed

+230
-113
lines changed

7 files changed

+230
-113
lines changed

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10+
### Changed
11+
12+
- Bump up dependencies —
13+
[154](https://github.com/dartoos-dev/json_cache/issues/154).
14+
1015
### Fixed
1116

1217
- Removed code warnings and upgraded dart SDK range and each dependency to latest resolvable version available - [148](https://github.com/dartoos-dev/json_cache/issues/148).

lib/src/json_cache_local_storage.dart

Lines changed: 26 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,45 +1,47 @@
1+
import 'dart:convert';
2+
13
import 'package:json_cache/json_cache.dart';
24
import 'package:localstorage/localstorage.dart';
35

6+
/// {@template json_cache_local_storage}
7+
///
48
/// Implementation on top of the LocalStorage package.
59
///
10+
/// Before using it, don't forget to call:
11+
///
12+
/// ```dart
13+
/// WidgetsFlutterBinding.ensureInitialized();
14+
/// await initLocalStorage();
15+
/// ```
16+
///
617
/// See: [local storage](https://pub.dev/packages/localstorage)
7-
class JsonCacheLocalStorage implements JsonCache {
8-
/// Encapsulates a [LocalStorage] instance.
9-
const JsonCacheLocalStorage(this._storage);
18+
///
19+
/// {@endtemplate}
20+
final class JsonCacheLocalStorage implements JsonCache {
21+
/// {@macro json_cache_local_storage}
22+
JsonCacheLocalStorage([LocalStorage? customLocalStorage])
23+
: _storage = customLocalStorage ?? localStorage;
1024

1125
final LocalStorage _storage;
1226

1327
@override
14-
Future<void> clear() async {
15-
await _getReady;
16-
await _storage.clear();
17-
}
28+
Future<void> clear() async => _storage.clear();
1829

1930
@override
20-
Future<void> refresh(String key, Map<String, dynamic> value) async {
21-
await _getReady;
22-
await _storage.setItem(key, value);
23-
}
31+
Future<void> refresh(String key, Map<String, dynamic> value) async =>
32+
_storage.setItem(key, json.encode(value));
2433

2534
@override
26-
Future<void> remove(String key) async {
27-
await _getReady;
28-
await _storage.deleteItem(key);
29-
}
35+
Future<void> remove(String key) async => _storage.removeItem(key);
3036

3137
@override
3238
Future<Map<String, dynamic>?> value(String key) async {
33-
await _getReady;
34-
return await _storage.getItem(key) as Map<String, dynamic>?;
39+
final strJson = _storage.getItem(key);
40+
return strJson == null
41+
? null
42+
: json.decode(strJson) as Map<String, dynamic>;
3543
}
3644

3745
@override
38-
Future<bool> contains(String key) async {
39-
await _getReady;
40-
final Object? item = _storage.getItem(key);
41-
return item != null;
42-
}
43-
44-
Future<bool> get _getReady => _storage.ready;
46+
Future<bool> contains(String key) async => _storage.getItem(key) != null;
4547
}

pubspec.lock

Lines changed: 33 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -122,50 +122,50 @@ packages:
122122
dependency: "direct main"
123123
description:
124124
name: flutter_secure_storage
125-
sha256: ffdbb60130e4665d2af814a0267c481bcf522c41ae2e43caf69fa0146876d685
125+
sha256: "165164745e6afb5c0e3e3fcc72a012fb9e58496fb26ffb92cf22e16a821e85d0"
126126
url: "https://pub.dev"
127127
source: hosted
128-
version: "9.0.0"
128+
version: "9.2.2"
129129
flutter_secure_storage_linux:
130130
dependency: transitive
131131
description:
132132
name: flutter_secure_storage_linux
133-
sha256: "3d5032e314774ee0e1a7d0a9f5e2793486f0dff2dd9ef5a23f4e3fb2a0ae6a9e"
133+
sha256: "4d91bfc23047422cbcd73ac684bc169859ee766482517c22172c86596bf1464b"
134134
url: "https://pub.dev"
135135
source: hosted
136-
version: "1.2.0"
136+
version: "1.2.1"
137137
flutter_secure_storage_macos:
138138
dependency: transitive
139139
description:
140140
name: flutter_secure_storage_macos
141-
sha256: bd33935b4b628abd0b86c8ca20655c5b36275c3a3f5194769a7b3f37c905369c
141+
sha256: "1693ab11121a5f925bbea0be725abfcfbbcf36c1e29e571f84a0c0f436147a81"
142142
url: "https://pub.dev"
143143
source: hosted
144-
version: "3.0.1"
144+
version: "3.1.2"
145145
flutter_secure_storage_platform_interface:
146146
dependency: transitive
147147
description:
148148
name: flutter_secure_storage_platform_interface
149-
sha256: "0d4d3a5dd4db28c96ae414d7ba3b8422fd735a8255642774803b2532c9a61d7e"
149+
sha256: cf91ad32ce5adef6fba4d736a542baca9daf3beac4db2d04be350b87f69ac4a8
150150
url: "https://pub.dev"
151151
source: hosted
152-
version: "1.0.2"
152+
version: "1.1.2"
153153
flutter_secure_storage_web:
154154
dependency: transitive
155155
description:
156156
name: flutter_secure_storage_web
157-
sha256: "30f84f102df9dcdaa2241866a958c2ec976902ebdaa8883fbfe525f1f2f3cf20"
157+
sha256: f4ebff989b4f07b2656fb16b47852c0aab9fed9b4ec1c70103368337bc1886a9
158158
url: "https://pub.dev"
159159
source: hosted
160-
version: "1.1.2"
160+
version: "1.2.1"
161161
flutter_secure_storage_windows:
162162
dependency: transitive
163163
description:
164164
name: flutter_secure_storage_windows
165-
sha256: "5809c66f9dd3b4b93b0a6e2e8561539405322ee767ac2f64d084e2ab5429d108"
165+
sha256: b20b07cb5ed4ed74fc567b78a72936203f587eba460af1df11281c9326cd3709
166166
url: "https://pub.dev"
167167
source: hosted
168-
version: "3.0.0"
168+
version: "3.1.2"
169169
flutter_test:
170170
dependency: "direct dev"
171171
description: flutter
@@ -276,10 +276,10 @@ packages:
276276
dependency: "direct main"
277277
description:
278278
name: localstorage
279-
sha256: fdff4f717114e992acfd4045dc4a9ab9b987ca57f020965d63e3eb34089c60d8
279+
sha256: "6340acefdd3a969cceb044a69cde2dc5877c5b861b2e02d0803930ed483dbe91"
280280
url: "https://pub.dev"
281281
source: hosted
282-
version: "4.0.1+4"
282+
version: "5.0.0"
283283
logging:
284284
dependency: transitive
285285
description:
@@ -364,10 +364,10 @@ packages:
364364
dependency: transitive
365365
description:
366366
name: path_provider
367-
sha256: b27217933eeeba8ff24845c34003b003b2b22151de3c908d0e679e8fe1aa078b
367+
sha256: fec0d61223fba3154d87759e3cc27fe2c8dc498f6386c6d6fc80d1afdd1bf378
368368
url: "https://pub.dev"
369369
source: hosted
370-
version: "2.1.2"
370+
version: "2.1.4"
371371
path_provider_android:
372372
dependency: transitive
373373
description:
@@ -452,58 +452,58 @@ packages:
452452
dependency: "direct main"
453453
description:
454454
name: shared_preferences
455-
sha256: "81429e4481e1ccfb51ede496e916348668fd0921627779233bd24cc3ff6abd02"
455+
sha256: "746e5369a43170c25816cc472ee016d3a66bc13fcf430c0bc41ad7b4b2922051"
456456
url: "https://pub.dev"
457457
source: hosted
458-
version: "2.2.2"
458+
version: "2.3.2"
459459
shared_preferences_android:
460460
dependency: transitive
461461
description:
462462
name: shared_preferences_android
463-
sha256: "8568a389334b6e83415b6aae55378e158fbc2314e074983362d20c562780fb06"
463+
sha256: a7e8467e9181cef109f601e3f65765685786c1a738a83d7fbbde377589c0d974
464464
url: "https://pub.dev"
465465
source: hosted
466-
version: "2.2.1"
466+
version: "2.3.1"
467467
shared_preferences_foundation:
468468
dependency: transitive
469469
description:
470470
name: shared_preferences_foundation
471-
sha256: "7708d83064f38060c7b39db12aefe449cb8cdc031d6062280087bc4cdb988f5c"
471+
sha256: c4b35f6cb8f63c147312c054ce7c2254c8066745125264f0c88739c417fc9d9f
472472
url: "https://pub.dev"
473473
source: hosted
474-
version: "2.3.5"
474+
version: "2.5.2"
475475
shared_preferences_linux:
476476
dependency: transitive
477477
description:
478478
name: shared_preferences_linux
479-
sha256: "9f2cbcf46d4270ea8be39fa156d86379077c8a5228d9dfdb1164ae0bb93f1faa"
479+
sha256: "580abfd40f415611503cae30adf626e6656dfb2f0cee8f465ece7b6defb40f2f"
480480
url: "https://pub.dev"
481481
source: hosted
482-
version: "2.3.2"
482+
version: "2.4.1"
483483
shared_preferences_platform_interface:
484484
dependency: transitive
485485
description:
486486
name: shared_preferences_platform_interface
487-
sha256: "22e2ecac9419b4246d7c22bfbbda589e3acf5c0351137d87dd2939d984d37c3b"
487+
sha256: "57cbf196c486bc2cf1f02b85784932c6094376284b3ad5779d1b1c6c6a816b80"
488488
url: "https://pub.dev"
489489
source: hosted
490-
version: "2.3.2"
490+
version: "2.4.1"
491491
shared_preferences_web:
492492
dependency: transitive
493493
description:
494494
name: shared_preferences_web
495-
sha256: "7b15ffb9387ea3e237bb7a66b8a23d2147663d391cafc5c8f37b2e7b4bde5d21"
495+
sha256: d2ca4132d3946fec2184261726b355836a82c33d7d5b67af32692aff18a4684e
496496
url: "https://pub.dev"
497497
source: hosted
498-
version: "2.2.2"
498+
version: "2.4.2"
499499
shared_preferences_windows:
500500
dependency: transitive
501501
description:
502502
name: shared_preferences_windows
503-
sha256: "841ad54f3c8381c480d0c9b508b89a34036f512482c407e6df7a9c4aa2ef8f59"
503+
sha256: "94ef0f72b2d71bc3e700e025db3710911bd51a71cefb65cc609dd0d9a982e3c1"
504504
url: "https://pub.dev"
505505
source: hosted
506-
version: "2.3.2"
506+
version: "2.4.1"
507507
shelf:
508508
dependency: transitive
509509
description:
@@ -665,10 +665,10 @@ packages:
665665
dependency: transitive
666666
description:
667667
name: web
668-
sha256: afe077240a270dcfd2aafe77602b4113645af95d0ad31128cc02bce5ac5d5152
668+
sha256: d43c1d6b787bf0afad444700ae7f4db8827f701bc61c255ac8d328c6f4d52062
669669
url: "https://pub.dev"
670670
source: hosted
671-
version: "0.3.0"
671+
version: "1.0.0"
672672
web_socket_channel:
673673
dependency: transitive
674674
description:
@@ -711,4 +711,4 @@ packages:
711711
version: "3.1.2"
712712
sdks:
713713
dart: ">=3.5.0 <4.0.0"
714-
flutter: ">=3.18.0-18.0.pre.54"
714+
flutter: ">=3.22.0"

pubspec.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,12 @@ environment:
1111
dependencies:
1212
flutter:
1313
sdk: flutter
14-
flutter_secure_storage: ^9.0.0
14+
flutter_secure_storage: ^9.2.2
1515
hive: ^2.2.3
16-
localstorage: ^4.0.1+4
16+
localstorage: ^5.0.0
1717
mutex: ^3.1.0
1818
safe_local_storage: ^1.0.2
19-
shared_preferences: ^2.2.2
19+
shared_preferences: ^2.3.2
2020

2121
dev_dependencies:
2222
flutter_test:

test/fake_local_storage.dart

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
import 'package:localstorage/localstorage.dart';
2+
3+
typedef IndexValue = ({int index, String value});
4+
5+
/// {@template fake_local_storage}
6+
///
7+
/// Unit-testing purposes implementation of the [LocalStorage] interface.
8+
///
9+
/// {@endtemplate}
10+
final class FakeLocalStorage implements LocalStorage {
11+
/// {@macro fake_local_storage}
12+
FakeLocalStorage();
13+
14+
final Map<String, IndexValue> _data = {};
15+
final List<String> _keys = [];
16+
17+
@override
18+
void clear() {
19+
_data.clear();
20+
_keys.clear();
21+
}
22+
23+
@override
24+
String? getItem(String key) => _data[key]?.value;
25+
26+
@override
27+
String? key(int index) {
28+
if (index >= 0 && index < _keys.length) {
29+
return _keys[index];
30+
}
31+
return null;
32+
}
33+
34+
@override
35+
int get length => _data.keys.length;
36+
37+
@override
38+
void removeItem(String key) {
39+
final pair = _data[key];
40+
if (pair != null) {
41+
_removeItemAndDecreaseIndexes(key, pair);
42+
}
43+
}
44+
45+
@override
46+
void setItem(String key, String value) {
47+
final pair = _data[key];
48+
if (pair != null) {
49+
final currIndex = pair.index;
50+
_data[key] = (index: currIndex, value: value);
51+
} else {
52+
_keys.add(key);
53+
final newIndex = _keys.length - 1;
54+
_data[key] = (index: newIndex, value: value);
55+
}
56+
}
57+
58+
void _removeItemAndDecreaseIndexes(
59+
String key,
60+
({int index, String value}) pair,
61+
) {
62+
_keys.removeAt(pair.index);
63+
_data.remove(key);
64+
_data.keys.forEach(_decreaseIndexAt);
65+
}
66+
67+
void _decreaseIndexAt(String key) {
68+
final pair = _data[key]!;
69+
_data[key] = (index: pair.index - 1, value: pair.value);
70+
}
71+
}

0 commit comments

Comments
 (0)