packages feed

mattermost-api 50200.15.0 → 90000.0.0

raw patch · 5 files changed

+39/−4 lines, 5 filesdep +crypton-connectionPVP ok

version bump matches the API change (PVP)

Dependencies added: crypton-connection

API changes (from Hackage documentation)

+ Network.Mattermost.Lenses: wepChannelTimesL :: Lens' WEData (Maybe (HashMap ChannelId ServerTime))
+ Network.Mattermost.WebSocket.Types: WMMultipleChannelsViewed :: WebsocketEventType
+ Network.Mattermost.WebSocket.Types: [wepChannelTimes] :: WEData -> Maybe (HashMap ChannelId ServerTime)
- Network.Mattermost.Types: ChannelMember :: Integer -> UserId -> Text -> Int -> ServerTime -> ChannelId -> ServerTime -> ChannelNotifyProps -> ChannelMember
+ Network.Mattermost.Types: ChannelMember :: Int -> UserId -> Text -> Int -> ServerTime -> ChannelId -> ServerTime -> ChannelNotifyProps -> ChannelMember
- Network.Mattermost.Types: [channelMemberMsgCount] :: ChannelMember -> Integer
+ Network.Mattermost.Types: [channelMemberMsgCount] :: ChannelMember -> Int
- Network.Mattermost.WebSocket.Types: WEData :: Maybe ChannelId -> Maybe TeamId -> Maybe Text -> Maybe UserId -> Maybe PostId -> Maybe User -> Maybe Text -> Maybe Post -> Maybe Text -> Maybe Reaction -> Maybe (Set UserId) -> Maybe (Seq Preference) -> Maybe ChannelMember -> WEData
+ Network.Mattermost.WebSocket.Types: WEData :: Maybe ChannelId -> Maybe TeamId -> Maybe Text -> Maybe UserId -> Maybe PostId -> Maybe User -> Maybe Text -> Maybe Post -> Maybe Text -> Maybe Reaction -> Maybe (Set UserId) -> Maybe (Seq Preference) -> Maybe ChannelMember -> Maybe (HashMap ChannelId ServerTime) -> WEData

Files

CHANGELOG.md view
@@ -1,4 +1,18 @@ +90000.0.0+=========++Package changes:+* Updated the package to use `crypton-connection` since `connection` is+  now unmaintained.++API changes:+* Updated the `ChannelMember` type's `channelMemberMsgCount` field to+  have type `Int`, not `Integer`, to match all other numeric types in+  the API.+* Added support for `multiple_channels_viewed` websocket event added in+  Mattermost 9.0.+ 50200.15.0 ========== 
examples/GetPosts.hs view
@@ -117,7 +117,7 @@     pPrint teams   forM_ teams $ \t -> do     when (teamName t == configTeam config) $ do-      users <- mmGetUsers (defaultUserQuery { userQueryInTeam = Just (getId t), userQueryPerPage = Just 1000 }) session+      users <- mmGetUsers (defaultUserQuery { userQueryInTeam = Just (getId t), userQueryPerPage = Just 200 }) session       let userMap = HM.fromList [ (getId u, u) | u <- toList users ]       when (optVerbose opts) $ do         pPrint userMap
mattermost-api.cabal view
@@ -1,5 +1,5 @@ name:                mattermost-api-version:             50200.15.0+version:             90000.0.0 synopsis:            Client API for Mattermost chat system  description:         Client API for Mattermost chat system.  Mattermost is a@@ -50,7 +50,7 @@                      , websockets >= 0.11.0.0                      , stm                      , aeson >= 2.0.1.0 && < 2.2.0.0-                     , connection+                     , crypton-connection                      , memory                      , resource-pool >= 0.2.3                      -- To prevent broken websockets versions from using
src/Network/Mattermost/Types.hs view
@@ -1483,7 +1483,7 @@     ]  data ChannelMember = ChannelMember-  { channelMemberMsgCount :: Integer+  { channelMemberMsgCount :: Int   , channelMemberUserId :: UserId   , channelMemberRoles :: Text   , channelMemberMentionCount :: Int
src/Network/Mattermost/WebSocket/Types.hs view
@@ -15,6 +15,7 @@  import           Control.Applicative import           Control.Exception ( throw )+import           Control.Monad ( forM ) import           Data.Aeson ( FromJSON(..)                             , ToJSON(..)                             , (.:)@@ -22,6 +23,8 @@                             , (.=)                             ) import qualified Data.Aeson as A+import qualified Data.Aeson.Key as A+import qualified Data.Aeson.KeyMap as A import qualified Data.Aeson.Types as A #if !MIN_VERSION_base(4,11,0) import           Data.Monoid ( (<>) )@@ -69,6 +72,7 @@   | WMReactionAdded   | WMReactionRemoved   | WMChannelViewed+  | WMMultipleChannelsViewed   | WMChannelUpdated   | WMChannelMemberUpdated   | WMEmojiAdded@@ -107,6 +111,7 @@     "authentication_challenge" -> return WMAuthenticationChallenge     "preferences_deleted" -> return WMPreferenceDeleted     "channel_viewed"     -> return WMChannelViewed+    "multiple_channels_viewed"     -> return WMMultipleChannelsViewed     "channel_updated"    -> return WMChannelUpdated     "channel_member_updated" -> return WMChannelMemberUpdated     "emoji_added"        -> return WMEmojiAdded@@ -143,6 +148,7 @@   toJSON WMWebRTC                  = "webrtc"   toJSON WMAuthenticationChallenge = "authentication_challenge"   toJSON WMChannelViewed           = "channel_viewed"+  toJSON WMMultipleChannelsViewed  = "multiple_channels_viewed"   toJSON WMChannelUpdated          = "channel_updated"   toJSON WMChannelMemberUpdated    = "channel_member_updated"   toJSON WMEmojiAdded              = "emoji_added"@@ -163,6 +169,14 @@       Right v  -> return v       Left err -> throw (JSONDecodeException err (T.unpack s)) +fromChannelTimesMap :: A.Value -> A.Parser (HM.HashMap ChannelId ServerTime)+fromChannelTimesMap = A.withObject "Channel times map" $ \o -> do+    pairs <- forM (A.toList o) $ \(k, v) -> do+        t <- timeFromServer <$> A.parseJSON v+        return (fromId $ Id $ T.pack $ A.toString k, t)++    return $ HM.fromList pairs+ --  data WebsocketEvent = WebsocketEvent@@ -212,6 +226,7 @@   , wepMentions           :: Maybe (Set UserId)   , wepPreferences        :: Maybe (Seq Preference)   , wepChannelMember      :: Maybe ChannelMember+  , wepChannelTimes       :: Maybe (HM.HashMap ChannelId ServerTime)   } deriving (Read, Show, Eq)  instance FromJSON WEData where@@ -229,6 +244,7 @@     wepMentions           <- mapM fromValueString =<< o .:? "mentions"     wepPreferences        <- mapM fromValueString =<< o .:? "preferences"     wepChannelMember      <- mapM fromValueString =<< o .:? "channelMember"+    wepChannelTimes       <- mapM fromChannelTimesMap =<< o .:? "channel_times"     return WEData { .. }  instance ToJSON WEData where@@ -244,6 +260,11 @@     , "mentions"     .= toValueString wepMentions     , "preferences"  .= toValueString wepPreferences     , "channelMember" .= toValueString wepChannelMember+    , "channelTimes" .= do+          m <- wepChannelTimes+          let pairs = HM.toList m+              mkEntry (cId, t) = (A.fromString $ T.unpack $ unId $ toId cId, timeToServer t)+          return $ A.fromList $ mkEntry <$> pairs     ]  --