aboutsummaryrefslogtreecommitdiff
path: root/src/distractionless/ui/apps.cljd
blob: 0341b6bd302a9c5fbf3c677ef6f1c837eab62110 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
(ns distractionless.ui.apps
  (:require ["package:flutter/material.dart" :as m]
            ["package:installed_apps/installed_apps.dart" :as apps]
            [distractionless.ui.constants :as duconstants]
            [distractionless.ui.apps.settings :as duasettings]
            ["dart:async" :as async]))

(defn start-app [app config-file *app-in-queue]
  (async/Future.delayed (Duration.
                         .seconds (duasettings/countdown-setting-value app config-file))
                        (fn []
                          (reset! *app-in-queue nil)
                          (await (apps/InstalledApps.startApp (.-packageName app))))))

(defn load-installed-apps! [a]
  (reset! a (await (apps/InstalledApps.getInstalledApps false))))

(defn- render-app [app config-file ctx reloader *app-in-queue]
  (m/ListTile
   .title (m/Text (.-name app)
                  .style duconstants/text-style)
   .onTap (fn []
            (reset! *app-in-queue app)
            (start-app app config-file *app-in-queue)
            nil)
   .onLongPress #(duasettings/open app config-file ctx reloader)))

(defn apps-list [apps config-file ctx reloader *app-in-queue]
  (m/ListView
   .padding m/EdgeInsets.zero
   .children (for [app apps]
               (render-app app config-file ctx reloader *app-in-queue))))