module Emanote.View.LiveServerFiles
  ( isLiveServerFile,
    tailwindFullCssPath,
    tailwindCssFile,
  )
where

import Data.Text qualified as T
import Emanote.Model.StaticFile (StaticFile)
import Emanote.Model.Type qualified as M
import Relude

-- TODO: Check this compile-time using TH?

baseDir :: FilePath
baseDir :: FilePath
baseDir = FilePath
"_emanote-live-server"

tailwindFullCssPath :: FilePath
tailwindFullCssPath :: FilePath
tailwindFullCssPath = FilePath
baseDir FilePath -> FilePath -> FilePath
forall a. Semigroup a => a -> a -> a
<> FilePath
"/tailwind/2.2.2/tailwind.min.css"

isLiveServerFile :: FilePath -> Bool
isLiveServerFile :: FilePath -> Bool
isLiveServerFile (FilePath -> Text
forall a. ToText a => a -> Text
toText -> Text
fp) =
  FilePath -> Text
forall a. ToText a => a -> Text
toText FilePath
baseDir Text -> Text -> Bool
`T.isPrefixOf` Text
fp

tailwindCssFile :: M.Model -> StaticFile
tailwindCssFile :: Model -> StaticFile
tailwindCssFile Model
model =
  StaticFile -> Maybe StaticFile -> StaticFile
forall a. a -> Maybe a -> a
fromMaybe (Text -> StaticFile
forall a t. (HasCallStack, IsText t) => t -> a
error Text
"model not ready?") (Maybe StaticFile -> StaticFile) -> Maybe StaticFile -> StaticFile
forall a b. (a -> b) -> a -> b
$ FilePath -> Model -> Maybe StaticFile
forall (f :: Type -> Type).
FilePath -> ModelT f -> Maybe StaticFile
M.modelLookupStaticFile FilePath
tailwindFullCssPath Model
model