module History.IssueEvent (IssueEvent (..)) where import History.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) 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) = case issueEvent of IssueCreated {hash, issue} -> P.Summarized hash <<< P.styled [P.color P.Green] "created" <<< I.IssueTitle issue IssueChanged {hash, issue} -> P.Summarized hash <<< P.styled [P.color P.Green] "changed" <<< I.IssueTitle issue IssueDeleted {hash, issue} -> P.Summarized hash <<< P.styled [P.color P.Green] "deleted" <<< I.IssueTitle issue