diff options
| author | Akshay Nair <phenax5@gmail.com> | 2020-06-03 22:21:34 +0530 |
|---|---|---|
| committer | Akshay Nair <phenax5@gmail.com> | 2020-06-03 22:21:34 +0530 |
| commit | 620f9ea0516d951e1d21793a5bb22e05a5c56949 (patch) | |
| tree | b9178704ffa1c60ce350b7ea0096220e1ad407d7 /lib/data | |
| parent | 008f625c89e0bb930dbb4b92c502e3a273b27807 (diff) | |
| download | daft-launcher-620f9ea0516d951e1d21793a5bb22e05a5c56949.tar.gz daft-launcher-620f9ea0516d951e1d21793a5bb22e05a5c56949.zip | |
Adds a simple add to favorites action storing to shard prefs
Diffstat (limited to 'lib/data')
| -rw-r--r-- | lib/data/favorites.dart | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/lib/data/favorites.dart b/lib/data/favorites.dart new file mode 100644 index 0000000..aad98ee --- /dev/null +++ b/lib/data/favorites.dart @@ -0,0 +1,43 @@ +import 'package:shared_preferences/shared_preferences.dart'; +import 'package:device_apps/device_apps.dart'; +import 'dart:async'; + +const String FAVORITES = 'favorites'; +const String SEPERATOR = ','; + +StreamController<List<Application>> favorites_$ = StreamController<List<Application>>.broadcast(); + +Future<List<Application>> getFavorites() async { + final prefs = await SharedPreferences.getInstance(); + + String rawFavoritesList = prefs.getString(FAVORITES); + List<String> packageNames = rawFavoritesList?.split(SEPERATOR) ?? <String>[]; + + return Future.wait(packageNames.map((String pkg) => DeviceApps.getApp(pkg))); +} + +void initFavorites() async { + List<Application> fs = await getFavorites(); + favorites_$.add(fs); +} + +Stream<List<Application>> getFavorites$() { + return favorites_$.stream; +} + +void setFavorites(List<Application> favs) async { + final prefs = await SharedPreferences.getInstance(); + + String rawFavoritesList = favs.map((Application app) => app.packageName).join(SEPERATOR); + + prefs.setString(FAVORITES, rawFavoritesList); + + favorites_$.add(await getFavorites()); +} + +void addToFavorites(Application app) async { + List<Application> fs = await getFavorites(); + fs.add(app); + await setFavorites(fs); +} + |
