packages feed

wikimusic-ssr-0.6.0.1: src/WikiMusic/SSR/Free/View.hs

module WikiMusic.SSR.Free.View
  ( artistListPage,
    View (..),
    errorPage,
    loginPage,
    genreListPage,
    artistDetailPage,
    genreDetailPage,
    songListPage,
    songDetailPage,
    artistCreatePage,
    genreCreatePage,
    songCreatePage,
    artistEditPage,
    genreEditPage,
    songEditPage,
  )
where

import Free.AlaCarte
import Relude
import Text.Blaze.Html
import WikiMusic.Interaction.Model.Artist
import WikiMusic.Interaction.Model.Genre
import WikiMusic.Interaction.Model.Song
import WikiMusic.SSR.Model.Api
import WikiMusic.SSR.Model.Env

type View :: Type -> Type
data View a
  = ArtistListPage Env UiMode Language Palette SortOrder GetArtistsQueryResponse (Html -> a)
  | ArtistDetailPage Env UiMode Language Palette GetArtistsQueryResponse (Html -> a)
  | ArtistCreatePage Env UiMode Language Palette (Html -> a)
  | ArtistEditPage Env UiMode Language Palette Artist (Html -> a)
  | GenreListPage Env UiMode Language Palette SortOrder GetGenresQueryResponse (Html -> a)
  | GenreDetailPage Env UiMode Language Palette GetGenresQueryResponse (Html -> a)
  | GenreCreatePage Env UiMode Language Palette (Html -> a)
  | GenreEditPage Env UiMode Language Palette Genre (Html -> a)
  | SongListPage Env UiMode Language Palette SortOrder GetSongsQueryResponse (Html -> a)
  | SongDetailPage Env UiMode Language Palette SongAsciiSize GetSongsQueryResponse (Html -> a)
  | SongCreatePage Env UiMode Language Palette (Html -> a)
  | SongEditPage Env UiMode Language Palette Song (Html -> a)
  | ErrorPage Env UiMode Language Palette Text (Html -> a)
  | LoginPage Env UiMode Language Palette (Html -> a)
  deriving (Functor)

artistListPage :: (View :<: f) => Env -> UiMode -> Language -> Palette -> SortOrder -> GetArtistsQueryResponse -> Free f Html
artistListPage env mode language palette sortOrder artists = injectFree (ArtistListPage env mode language palette sortOrder artists Pure)

artistDetailPage :: (View :<: f) => Env -> UiMode -> Language -> Palette -> GetArtistsQueryResponse -> Free f Html
artistDetailPage env mode language palette artists = injectFree (ArtistDetailPage env mode language palette artists Pure)

artistCreatePage :: (View :<: f) => Env -> UiMode -> Language -> Palette -> Free f Html
artistCreatePage env mode language palette = injectFree (ArtistCreatePage env mode language palette Pure)

artistEditPage :: (View :<: f) => Env -> UiMode -> Language -> Palette -> Artist -> Free f Html
artistEditPage env mode language palette artist = injectFree (ArtistEditPage env mode language palette artist Pure)

genreListPage :: (View :<: f) => Env -> UiMode -> Language -> Palette -> SortOrder -> GetGenresQueryResponse -> Free f Html
genreListPage env mode language palette sortOrder genres = injectFree (GenreListPage env mode language palette sortOrder genres Pure)

genreDetailPage :: (View :<: f) => Env -> UiMode -> Language -> Palette -> GetGenresQueryResponse -> Free f Html
genreDetailPage env mode language palette genres = injectFree (GenreDetailPage env mode language palette genres Pure)

genreCreatePage :: (View :<: f) => Env -> UiMode -> Language -> Palette -> Free f Html
genreCreatePage env mode language palette = injectFree (GenreCreatePage env mode language palette Pure)

genreEditPage :: (View :<: f) => Env -> UiMode -> Language -> Palette -> Genre -> Free f Html
genreEditPage env mode language palette genre = injectFree (GenreEditPage env mode language palette genre Pure)

songListPage :: (View :<: f) => Env -> UiMode -> Language -> Palette -> SortOrder -> GetSongsQueryResponse -> Free f Html
songListPage env mode language palette sortOrder songs = injectFree (SongListPage env mode language palette sortOrder songs Pure)

songDetailPage :: (View :<: f) => Env -> UiMode -> Language -> Palette -> SongAsciiSize -> GetSongsQueryResponse -> Free f Html
songDetailPage env mode language palette songAsciiSize songs = injectFree (SongDetailPage env mode language palette songAsciiSize songs Pure)

songCreatePage :: (View :<: f) => Env -> UiMode -> Language -> Palette -> Free f Html
songCreatePage env mode language palette = injectFree (SongCreatePage env mode language palette Pure)

songEditPage :: (View :<: f) => Env -> UiMode -> Language -> Palette -> Song -> Free f Html
songEditPage env mode language palette song = injectFree (SongEditPage env mode language palette song Pure)

errorPage :: (View :<: f) => Env -> UiMode -> Language -> Palette -> Text -> Free f Html
errorPage env mode message l palette = injectFree (ErrorPage env mode message l palette Pure)

loginPage :: (View :<: f) => Env -> UiMode -> Language -> Palette -> Free f Html
loginPage env mode language palette = injectFree (LoginPage env mode language palette Pure)