aboutsummaryrefslogtreecommitdiff
path: root/src/distractionless/ui/apps.cljd
diff options
context:
space:
mode:
Diffstat (limited to 'src/distractionless/ui/apps.cljd')
-rw-r--r--src/distractionless/ui/apps.cljd26
1 files changed, 26 insertions, 0 deletions
diff --git a/src/distractionless/ui/apps.cljd b/src/distractionless/ui/apps.cljd
new file mode 100644
index 0000000..7fd620c
--- /dev/null
+++ b/src/distractionless/ui/apps.cljd
@@ -0,0 +1,26 @@
+(ns distractionless.ui.apps
+ (:require ["package:flutter/material.dart" :as m]
+ [clojure.string :as cstr]
+ ["package:installed_apps/installed_apps.dart" :as apps]
+ [distractionless.ui.constants :as duconstants]
+ [distractionless.ui.apps.settings :as duasettings]))
+
+(defn load-installed-apps! [a]
+ (reset! a (await (apps/InstalledApps.getInstalledApps))))
+
+(defn- render-app [app config-file ctx reloader]
+ (m/ListTile
+ .title (m/Text (.-name app)
+ .style duconstants/text-style)
+ .onTap #(do (await (apps/InstalledApps.startApp (.-packageName app))) nil)
+ .onLongPress #(duasettings/open app config-file ctx reloader)))
+
+(defn apps-list [apps query config-file ctx reloader]
+ (m/ListView
+ .children (for [app (if (cstr/blank? query)
+ apps
+ (filter #(cstr/includes?
+ (cstr/lower-case (.-name %))
+ (cstr/lower-case query))
+ apps))]
+ (render-app app config-file ctx reloader))))