matrix-client-0.1.6.1: src/Network/Matrix/Client/Lens.hs
{-# LANGUAGE RankNTypes #-}
module Network.Matrix.Client.Lens (
-- MessageText
_mtBody,
_mtType,
_mtFormat,
_mtFormattedBody,
-- RoomMessage
_RoomMessageText,
-- Event
_EventRoomMessage,
_EventRoomReply,
_EventRoomEdit,
_EventUnknown,
-- EventFilter
efLimit,
_efNotSenders,
_efNotTypes,
_efSenders,
_efTypes,
-- PaginatedRoomMessages
_chunk,
_end,
_start,
_state,
-- ResolvedRoomAlias
_roomAlias,
_roomID,
_servers,
-- RoomEventFilter
_refLimit,
_refNotSenders,
_refNotTypes,
_refSenders,
_refTypes,
_refLazyLoadMembers,
_refIncludeRedundantMembers,
_refNotRooms,
_refRooms,
_refContainsUrl,
-- StateContent
_StateContentMRCreate,
_StateContentMRCanonicalAlias,
_StateContentMRGuestAccess,
_StateContentMRHistoryVisibility,
_StateContentMRName,
_StateContentMRTopic,
_StateContentMROther,
-- StateEvent
_seContent,
_seEventId,
_seOriginServerTimestamp,
_sePreviousContent,
_seRoomId,
_seSender,
_seStateKey,
_seEventType,
_seUnsigned,
-- StateFilter
_sfLimit,
_sfNotSenders,
_sfTypes,
_sfLazyLoadMembers,
_sfIncludeRedundantMembers,
_sfNotRooms,
_sfRooms,
_sfContainsUrl,
-- RoomFilter
_rfNotRooms,
_rfRooms,
_rfEphemeral,
_rfIncludeLeave,
_rfState,
_rfTimeline,
_rfAccountData,
-- Filter
_filterEventFields,
_filterEventFormat,
_filterPresence,
_filterAccountData,
_filterRoom,
-- RoomEvent
_reContent,
_reType,
_reEventId,
_reSender,
-- RoomSummary
_rsJoinedMemberCount,
_rsInvitedMemberCount,
-- TimelineSync
_tsEvents,
_tsLimited,
_tsPrevBatch,
-- JoinedRoomSync
_jrsSummary,
_jrsTimeline,
-- SyncResult
_srNextBatch,
_srRooms,
-- SyncResultRoom
_srrJoin,
_srrInvite,
) where
import Network.Matrix.Client
import qualified Data.Aeson as J
import Data.Coerce
import qualified Data.Map.Strict as M
import Data.Profunctor (Choice, dimap, right')
import qualified Data.Text as T
type Lens' s a = forall f. (Functor f) => (a -> f a) -> s -> f s
type Prism' s a = forall p f. (Choice p, Applicative f) => p a (f a) -> p s (f s)
lens :: (s -> a) -> (s -> a -> s) -> Lens' s a
lens sa sbt afb s = sbt s <$> afb (sa s)
{-# INLINE lens #-}
prism :: (a -> s) -> (s -> Either s a) -> Prism' s a
prism bt seta = dimap seta (either pure (fmap bt)) . right'
prism' :: (a -> s) -> (s -> Maybe a) -> Prism' s a
prism' bs sma = prism bs (\s -> maybe (Left s) Right (sma s))
{-# INLINE prism' #-}
_mtBody :: Lens' MessageText T.Text
_mtBody = lens getter setter
where
getter = mtBody
setter mt t = mt{mtBody = t}
_mtType :: Lens' MessageText MessageTextType
_mtType = lens getter setter
where
getter = mtType
setter mt t = mt{mtType = t}
_mtFormat :: Lens' MessageText (Maybe T.Text)
_mtFormat = lens getter setter
where
getter = mtFormat
setter mt t = mt{mtFormat = t}
_mtFormattedBody :: Lens' MessageText (Maybe T.Text)
_mtFormattedBody = lens getter setter
where
getter = mtFormattedBody
setter mt t = mt{mtFormattedBody = t}
_RoomMessageText :: Lens' RoomMessage MessageText
_RoomMessageText = lens getter setter
where
getter = coerce
setter _ = RoomMessageText
_EventRoomMessage :: Prism' Event RoomMessage
_EventRoomMessage = prism' to from
where
to = EventRoomMessage
from (EventRoomMessage msg) = Just msg
from _ = Nothing
_EventRoomReply :: Prism' Event (EventID, RoomMessage)
_EventRoomReply = prism' to from
where
to (eid, rm) = EventRoomReply eid rm
from (EventRoomReply eid rm) = Just (eid, rm)
from _ = Nothing
_EventRoomEdit :: Prism' Event ((EventID, RoomMessage), RoomMessage)
_EventRoomEdit = prism' to from
where
to (oldEvent, newMsg) = EventRoomEdit oldEvent newMsg
from (EventRoomEdit oldEvent newMsg) = Just (oldEvent, newMsg)
from _ = Nothing
_EventUnknown :: Prism' Event J.Object
_EventUnknown = prism' to from
where
to = EventUnknown
from (EventUnknown obj) = Just obj
from _ = Nothing
_efLimit :: Lens' EventFilter (Maybe Int)
_efLimit = lens getter setter
where
getter = efLimit
setter ef lim = ef{efLimit = lim}
_efNotSenders :: Lens' EventFilter (Maybe [T.Text])
_efNotSenders = lens getter setter
where
getter = efNotSenders
setter ef ns = ef{efNotSenders = ns}
_efNotTypes :: Lens' EventFilter (Maybe [T.Text])
_efNotTypes = lens getter setter
where
getter = efNotTypes
setter ef nt = ef{efNotTypes = nt}
_efSenders :: Lens' EventFilter (Maybe [T.Text])
_efSenders = lens getter setter
where
getter = efSenders
setter ef s = ef{efSenders = s}
_efTypes :: Lens' EventFilter (Maybe [T.Text])
_efTypes = lens getter setter
where
getter = efTypes
setter ef t = ef{efTypes = t}
_chunk :: Lens' PaginatedRoomMessages [RoomEvent]
_chunk = lens getter setter
where
getter = chunk
setter prm c = prm{chunk = c}
_end :: Lens' PaginatedRoomMessages (Maybe T.Text)
_end = lens getter setter
where
getter = end
setter prm e = prm{end = e}
_start :: Lens' PaginatedRoomMessages T.Text
_start = lens getter setter
where
getter = start
setter prm s = prm{start = s}
_state :: Lens' PaginatedRoomMessages [StateEvent]
_state = lens getter setter
where
getter = state
setter prm s = prm{state = s}
_roomAlias :: Lens' ResolvedRoomAlias RoomAlias
_roomAlias = lens getter setter
where
getter = roomAlias
setter rra ra = rra{roomAlias = ra}
_roomID :: Lens' ResolvedRoomAlias RoomID
_roomID = lens getter setter
where
getter = roomID
setter rra rid = rra{roomID = rid}
_servers :: Lens' ResolvedRoomAlias [T.Text]
_servers = lens getter setter
where
getter = servers
setter rra s = rra{servers = s}
_refLimit :: Lens' RoomEventFilter (Maybe Int)
_refLimit = lens getter setter
where
getter = refLimit
setter ref rl = ref{refLimit = rl}
_refNotSenders :: Lens' RoomEventFilter (Maybe [T.Text])
_refNotSenders = lens getter setter
where
getter = refNotSenders
setter ref ns = ref{refNotSenders = ns}
_refNotTypes :: Lens' RoomEventFilter (Maybe [T.Text])
_refNotTypes = lens getter setter
where
getter = refNotTypes
setter ref rnt = ref{refNotTypes = rnt}
_refSenders :: Lens' RoomEventFilter (Maybe [T.Text])
_refSenders = lens getter setter
where
getter = refSenders
setter ref rs = ref{refSenders = rs}
_refTypes :: Lens' RoomEventFilter (Maybe [T.Text])
_refTypes = lens getter setter
where
getter = refTypes
setter ref rt = ref{refTypes = rt}
_refLazyLoadMembers :: Lens' RoomEventFilter (Maybe Bool)
_refLazyLoadMembers = lens getter setter
where
getter = refLazyLoadMembers
setter ref rldm = ref{refLazyLoadMembers = rldm}
_refIncludeRedundantMembers :: Lens' RoomEventFilter (Maybe Bool)
_refIncludeRedundantMembers = lens getter setter
where
getter = refIncludeRedundantMembers
setter ref rirm = ref{refIncludeRedundantMembers = rirm}
_refNotRooms :: Lens' RoomEventFilter (Maybe [T.Text])
_refNotRooms = lens getter setter
where
getter = refNotRooms
setter ref rnr = ref{refNotRooms = rnr}
_refRooms :: Lens' RoomEventFilter (Maybe [T.Text])
_refRooms = lens getter setter
where
getter = refRooms
setter ref rr = ref{refRooms = rr}
_refContainsUrl :: Lens' RoomEventFilter (Maybe Bool)
_refContainsUrl = lens getter setter
where
getter = refContainsUrl
setter ref rcu = ref{refContainsUrl = rcu}
_StateContentMRCreate :: Prism' StateContent MRCreate
_StateContentMRCreate = prism' to from
where
to = StRoomCreate
from (StRoomCreate create) = Just create
from _ = Nothing
_StateContentMRCanonicalAlias :: Prism' StateContent MRCanonicalAlias
_StateContentMRCanonicalAlias = prism' to from
where
to = StRoomCanonicalAlias
from (StRoomCanonicalAlias alias) = Just alias
from _ = Nothing
_StateContentMRGuestAccess :: Prism' StateContent MRGuestAccess
_StateContentMRGuestAccess = prism' to from
where
to = StRoomGuestAccess
from (StRoomGuestAccess guest) = Just guest
from _ = Nothing
_StateContentMRHistoryVisibility :: Prism' StateContent MRHistoryVisibility
_StateContentMRHistoryVisibility = prism' to from
where
to = StRoomHistoryVisibility
from (StRoomHistoryVisibility history) = Just history
from _ = Nothing
_StateContentMRName :: Prism' StateContent MRName
_StateContentMRName = prism' to from
where
to = StRoomName
from (StRoomName name) = Just name
from _ = Nothing
_StateContentMRTopic :: Prism' StateContent MRTopic
_StateContentMRTopic = prism' to from
where
to = StRoomTopic
from (StRoomTopic topic) = Just topic
from _ = Nothing
_StateContentMROther :: Prism' StateContent J.Value
_StateContentMROther = prism' to from
where
to = StOther
from (StOther other) = Just other
from _ = Nothing
_seContent :: Lens' StateEvent StateContent
_seContent = lens getter setter
where
getter = seContent
setter sec c = sec{seContent = c}
_seEventId :: Lens' StateEvent EventID
_seEventId = lens getter setter
where
getter = seEventId
setter sec eid = sec{seEventId = eid}
_seOriginServerTimestamp :: Lens' StateEvent Integer
_seOriginServerTimestamp = lens getter setter
where
getter = seOriginServerTimestamp
setter sec ts = sec{seOriginServerTimestamp = ts}
_sePreviousContent :: Lens' StateEvent (Maybe J.Value)
_sePreviousContent = lens getter setter
where
getter = sePreviousContent
setter sec c = sec{sePreviousContent = c}
_seRoomId :: Lens' StateEvent RoomID
_seRoomId = lens getter setter
where
getter = seRoomId
setter sec rid = sec{seRoomId = rid}
_seSender :: Lens' StateEvent UserID
_seSender = lens getter setter
where
getter = seSender
setter sec uid = sec{seSender = uid}
_seStateKey :: Lens' StateEvent StateKey
_seStateKey = lens getter setter
where
getter = seStateKey
setter sec key = sec{seStateKey = key}
_seEventType :: Lens' StateEvent EventType
_seEventType = lens getter setter
where
getter = seEventType
setter sec et = sec{seEventType = et}
_seUnsigned :: Lens' StateEvent (Maybe J.Value)
_seUnsigned = lens getter setter
where
getter = seUnsigned
setter sec val = sec{seUnsigned = val}
_sfLimit :: Lens' StateFilter (Maybe Int)
_sfLimit = lens getter setter
where
getter = sfLimit
setter sf sfl = sf{sfLimit = sfl}
_sfNotSenders :: Lens' StateFilter (Maybe [T.Text])
_sfNotSenders = lens getter setter
where
getter = sfNotSenders
setter sf sfns = sf{sfNotSenders = sfns}
_sfTypes :: Lens' StateFilter (Maybe [T.Text])
_sfTypes = lens getter setter
where
getter = sfTypes
setter sf sft = sf{sfTypes = sft}
_sfLazyLoadMembers :: Lens' StateFilter (Maybe Bool)
_sfLazyLoadMembers = lens getter setter
where
getter = sfLazyLoadMembers
setter sf sflm = sf{sfLazyLoadMembers = sflm}
_sfIncludeRedundantMembers :: Lens' StateFilter (Maybe Bool)
_sfIncludeRedundantMembers = lens getter setter
where
getter = sfIncludeRedundantMembers
setter sf sfirm = sf{sfIncludeRedundantMembers = sfirm}
_sfNotRooms :: Lens' StateFilter (Maybe [T.Text])
_sfNotRooms = lens getter setter
where
getter = sfNotRooms
setter sf sfnr = sf{sfNotRooms = sfnr}
_sfRooms :: Lens' StateFilter (Maybe [T.Text])
_sfRooms = lens getter setter
where
getter = sfRooms
setter sf sfr = sf{sfRooms = sfr}
_sfContainsUrl :: Lens' StateFilter (Maybe Bool)
_sfContainsUrl = lens getter setter
where
getter = sfContains_url
setter sf cu = sf{sfContains_url = cu}
_rfNotRooms :: Lens' RoomFilter (Maybe [T.Text])
_rfNotRooms = lens getter setter
where
getter = rfNotRooms
setter rm rfnr = rm{rfNotRooms = rfnr}
_rfRooms :: Lens' RoomFilter (Maybe [T.Text])
_rfRooms = lens getter setter
where
getter = rfRooms
setter rm rfr = rm{rfRooms = rfr}
_rfEphemeral :: Lens' RoomFilter (Maybe RoomEventFilter)
_rfEphemeral = lens getter setter
where
getter = rfEphemeral
setter rm rfe = rm{rfEphemeral = rfe}
_rfIncludeLeave :: Lens' RoomFilter (Maybe Bool)
_rfIncludeLeave = lens getter setter
where
getter = rfIncludeLeave
setter rm rfil = rm{rfIncludeLeave = rfil}
_rfState :: Lens' RoomFilter (Maybe StateFilter)
_rfState = lens getter setter
where
getter = rfState
setter rm rfs = rm{rfState = rfs}
_rfTimeline :: Lens' RoomFilter (Maybe RoomEventFilter)
_rfTimeline = lens getter setter
where
getter = rfTimeline
setter rm rft = rm{rfTimeline = rft}
_rfAccountData :: Lens' RoomFilter (Maybe RoomEventFilter)
_rfAccountData = lens getter setter
where
getter = rfAccountData
setter rm rfad = rm{rfAccountData = rfad}
_filterEventFields :: Lens' Filter (Maybe [T.Text])
_filterEventFields = lens getter setter
where
getter = filterEventFields
setter fltr fef = fltr{filterEventFields = fef}
_filterEventFormat :: Lens' Filter (Maybe EventFormat)
_filterEventFormat = lens getter setter
where
getter = filterEventFormat
setter fltr fef = fltr{filterEventFormat = fef}
_filterPresence :: Lens' Filter (Maybe EventFilter)
_filterPresence = lens getter setter
where
getter = filterPresence
setter fltr fp = fltr{filterPresence = fp}
_filterAccountData :: Lens' Filter (Maybe EventFilter)
_filterAccountData = lens getter setter
where
getter = filterAccountData
setter fltr fac = fltr{filterAccountData = fac}
_filterRoom :: Lens' Filter (Maybe RoomFilter)
_filterRoom = lens getter setter
where
getter = filterRoom
setter fltr fr = fltr{filterRoom = fr}
_reContent :: Lens' RoomEvent Event
_reContent = lens getter setter
where
getter = reContent
setter rEvent rc = rEvent{reContent = rc}
_reType :: Lens' RoomEvent T.Text
_reType = lens getter setter
where
getter = reType
setter rEvent rt = rEvent{reType = rt}
_reEventId :: Lens' RoomEvent EventID
_reEventId = lens getter setter
where
getter = reEventId
setter rEvent reid = rEvent{reEventId = reid}
_reSender :: Lens' RoomEvent Author
_reSender = lens getter setter
where
getter = reSender
setter rEvent res = rEvent{reSender = res}
_rsJoinedMemberCount :: Lens' RoomSummary (Maybe Int)
_rsJoinedMemberCount = lens getter setter
where
getter = rsJoinedMemberCount
setter rs rsjmc = rs{rsJoinedMemberCount = rsjmc}
_rsInvitedMemberCount :: Lens' RoomSummary (Maybe Int)
_rsInvitedMemberCount = lens getter setter
where
getter = rsInvitedMemberCount
setter rs rsimc = rs{rsInvitedMemberCount = rsimc}
_tsEvents :: Lens' TimelineSync (Maybe [RoomEvent])
_tsEvents = lens getter setter
where
getter = tsEvents
setter ts tse = ts{tsEvents = tse}
_tsLimited :: Lens' TimelineSync (Maybe Bool)
_tsLimited = lens getter setter
where
getter = tsLimited
setter ts tsl = ts{tsLimited = tsl}
_tsPrevBatch :: Lens' TimelineSync (Maybe T.Text)
_tsPrevBatch = lens getter setter
where
getter = tsPrevBatch
setter ts tspb = ts{tsPrevBatch = tspb}
_jrsSummary :: Lens' JoinedRoomSync (Maybe RoomSummary)
_jrsSummary = lens getter setter
where
getter = jrsSummary
setter jrs jrss = jrs{jrsSummary = jrss}
_jrsTimeline :: Lens' JoinedRoomSync TimelineSync
_jrsTimeline = lens getter setter
where
getter = jrsTimeline
setter jrs jrst = jrs{jrsTimeline = jrst}
_srNextBatch :: Lens' SyncResult T.Text
_srNextBatch = lens getter setter
where
getter = srNextBatch
setter sr srnb = sr{srNextBatch = srnb}
_srRooms :: Lens' SyncResult (Maybe SyncResultRoom)
_srRooms = lens getter setter
where
getter = srRooms
setter sr srr = sr{srRooms = srr}
_srrJoin :: Lens' SyncResultRoom (Maybe (M.Map T.Text JoinedRoomSync))
_srrJoin = lens getter setter
where
getter = srrJoin
setter srr srrj = srr{srrJoin = srrj}
_srrInvite :: Lens' SyncResultRoom (Maybe (M.Map T.Text InvitedRoomSync))
_srrInvite = lens getter setter
where
getter = srrInvite
setter srr srri = srr{srrInvite = srri}