module IssueEvent (IssueEvent (..)) where import Data.Binary (Binary) import GHC.Generics (Generic) import Git.CommitHash (CommitHash) import Issue (Issue) import Issue.Render qualified as I import Patch (Patch) import Render ((<<<)) import Render qualified as P data IssueEvent = IssueCreated { hash :: CommitHash, issue :: Issue, patch :: Patch } | IssueChanged { hash :: CommitHash, oldIssue :: Issue, issue :: Issue, patch :: Patch } | IssueDeleted { hash :: CommitHash, issue :: Issue, patch :: Patch } deriving (Show, Generic, Binary) instance P.Render IssueEvent where render = P.render . P.Detailed instance P.Render (P.Detailed IssueEvent) where render (P.Detailed issueEvent) = P.Summarized issueEvent <<< P.hardline @P.AnsiStyle <<< issueEvent.patch instance P.Render (P.Summarized IssueEvent) where render (P.Summarized issueEvent) = P.Summarized issueEvent.hash <<< ( case issueEvent of IssueCreated {} -> P.styled [P.color P.Blue] "created" IssueChanged {} -> P.styled [P.color P.Blue] "changed" IssueDeleted {} -> P.styled [P.color P.Blue] "deleted" ) <<< I.IssueTitle issueEvent.issue