{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}

-- Derived from AWS service descriptions, licensed under Apache 2.0.

-- |
-- Module      : Amazonka.Chime.Types.ChannelMessage
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.Chime.Types.ChannelMessage where

import Amazonka.Chime.Types.ChannelMessagePersistenceType
import Amazonka.Chime.Types.ChannelMessageType
import Amazonka.Chime.Types.Identity
import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import qualified Amazonka.Prelude as Prelude

-- | The details of a message in a channel.
--
-- /See:/ 'newChannelMessage' smart constructor.
data ChannelMessage = ChannelMessage'
  { -- | The ARN of the channel.
    ChannelMessage -> Maybe Text
channelArn :: Prelude.Maybe Prelude.Text,
    -- | The message content.
    ChannelMessage -> Maybe (Sensitive Text)
content :: Prelude.Maybe (Data.Sensitive Prelude.Text),
    -- | The time at which the message was created.
    ChannelMessage -> Maybe POSIX
createdTimestamp :: Prelude.Maybe Data.POSIX,
    -- | The time at which a message was edited.
    ChannelMessage -> Maybe POSIX
lastEditedTimestamp :: Prelude.Maybe Data.POSIX,
    -- | The time at which a message was updated.
    ChannelMessage -> Maybe POSIX
lastUpdatedTimestamp :: Prelude.Maybe Data.POSIX,
    -- | The ID of a message.
    ChannelMessage -> Maybe Text
messageId :: Prelude.Maybe Prelude.Text,
    -- | The message metadata.
    ChannelMessage -> Maybe (Sensitive Text)
metadata :: Prelude.Maybe (Data.Sensitive Prelude.Text),
    -- | The persistence setting for a channel message.
    ChannelMessage -> Maybe ChannelMessagePersistenceType
persistence :: Prelude.Maybe ChannelMessagePersistenceType,
    -- | Hides the content of a message.
    ChannelMessage -> Maybe Bool
redacted :: Prelude.Maybe Prelude.Bool,
    -- | The message sender.
    ChannelMessage -> Maybe Identity
sender :: Prelude.Maybe Identity,
    -- | The message type.
    ChannelMessage -> Maybe ChannelMessageType
type' :: Prelude.Maybe ChannelMessageType
  }
  deriving (ChannelMessage -> ChannelMessage -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ChannelMessage -> ChannelMessage -> Bool
$c/= :: ChannelMessage -> ChannelMessage -> Bool
== :: ChannelMessage -> ChannelMessage -> Bool
$c== :: ChannelMessage -> ChannelMessage -> Bool
Prelude.Eq, Int -> ChannelMessage -> ShowS
[ChannelMessage] -> ShowS
ChannelMessage -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ChannelMessage] -> ShowS
$cshowList :: [ChannelMessage] -> ShowS
show :: ChannelMessage -> String
$cshow :: ChannelMessage -> String
showsPrec :: Int -> ChannelMessage -> ShowS
$cshowsPrec :: Int -> ChannelMessage -> ShowS
Prelude.Show, forall x. Rep ChannelMessage x -> ChannelMessage
forall x. ChannelMessage -> Rep ChannelMessage x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep ChannelMessage x -> ChannelMessage
$cfrom :: forall x. ChannelMessage -> Rep ChannelMessage x
Prelude.Generic)

-- |
-- Create a value of 'ChannelMessage' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
--
-- The following record fields are available, with the corresponding lenses provided
-- for backwards compatibility:
--
-- 'channelArn', 'channelMessage_channelArn' - The ARN of the channel.
--
-- 'content', 'channelMessage_content' - The message content.
--
-- 'createdTimestamp', 'channelMessage_createdTimestamp' - The time at which the message was created.
--
-- 'lastEditedTimestamp', 'channelMessage_lastEditedTimestamp' - The time at which a message was edited.
--
-- 'lastUpdatedTimestamp', 'channelMessage_lastUpdatedTimestamp' - The time at which a message was updated.
--
-- 'messageId', 'channelMessage_messageId' - The ID of a message.
--
-- 'metadata', 'channelMessage_metadata' - The message metadata.
--
-- 'persistence', 'channelMessage_persistence' - The persistence setting for a channel message.
--
-- 'redacted', 'channelMessage_redacted' - Hides the content of a message.
--
-- 'sender', 'channelMessage_sender' - The message sender.
--
-- 'type'', 'channelMessage_type' - The message type.
newChannelMessage ::
  ChannelMessage
newChannelMessage :: ChannelMessage
newChannelMessage =
  ChannelMessage'
    { $sel:channelArn:ChannelMessage' :: Maybe Text
channelArn = forall a. Maybe a
Prelude.Nothing,
      $sel:content:ChannelMessage' :: Maybe (Sensitive Text)
content = forall a. Maybe a
Prelude.Nothing,
      $sel:createdTimestamp:ChannelMessage' :: Maybe POSIX
createdTimestamp = forall a. Maybe a
Prelude.Nothing,
      $sel:lastEditedTimestamp:ChannelMessage' :: Maybe POSIX
lastEditedTimestamp = forall a. Maybe a
Prelude.Nothing,
      $sel:lastUpdatedTimestamp:ChannelMessage' :: Maybe POSIX
lastUpdatedTimestamp = forall a. Maybe a
Prelude.Nothing,
      $sel:messageId:ChannelMessage' :: Maybe Text
messageId = forall a. Maybe a
Prelude.Nothing,
      $sel:metadata:ChannelMessage' :: Maybe (Sensitive Text)
metadata = forall a. Maybe a
Prelude.Nothing,
      $sel:persistence:ChannelMessage' :: Maybe ChannelMessagePersistenceType
persistence = forall a. Maybe a
Prelude.Nothing,
      $sel:redacted:ChannelMessage' :: Maybe Bool
redacted = forall a. Maybe a
Prelude.Nothing,
      $sel:sender:ChannelMessage' :: Maybe Identity
sender = forall a. Maybe a
Prelude.Nothing,
      $sel:type':ChannelMessage' :: Maybe ChannelMessageType
type' = forall a. Maybe a
Prelude.Nothing
    }

-- | The ARN of the channel.
channelMessage_channelArn :: Lens.Lens' ChannelMessage (Prelude.Maybe Prelude.Text)
channelMessage_channelArn :: Lens' ChannelMessage (Maybe Text)
channelMessage_channelArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ChannelMessage' {Maybe Text
channelArn :: Maybe Text
$sel:channelArn:ChannelMessage' :: ChannelMessage -> Maybe Text
channelArn} -> Maybe Text
channelArn) (\s :: ChannelMessage
s@ChannelMessage' {} Maybe Text
a -> ChannelMessage
s {$sel:channelArn:ChannelMessage' :: Maybe Text
channelArn = Maybe Text
a} :: ChannelMessage)

-- | The message content.
channelMessage_content :: Lens.Lens' ChannelMessage (Prelude.Maybe Prelude.Text)
channelMessage_content :: Lens' ChannelMessage (Maybe Text)
channelMessage_content = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ChannelMessage' {Maybe (Sensitive Text)
content :: Maybe (Sensitive Text)
$sel:content:ChannelMessage' :: ChannelMessage -> Maybe (Sensitive Text)
content} -> Maybe (Sensitive Text)
content) (\s :: ChannelMessage
s@ChannelMessage' {} Maybe (Sensitive Text)
a -> ChannelMessage
s {$sel:content:ChannelMessage' :: Maybe (Sensitive Text)
content = Maybe (Sensitive Text)
a} :: ChannelMessage) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall a. Iso' (Sensitive a) a
Data._Sensitive

-- | The time at which the message was created.
channelMessage_createdTimestamp :: Lens.Lens' ChannelMessage (Prelude.Maybe Prelude.UTCTime)
channelMessage_createdTimestamp :: Lens' ChannelMessage (Maybe UTCTime)
channelMessage_createdTimestamp = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ChannelMessage' {Maybe POSIX
createdTimestamp :: Maybe POSIX
$sel:createdTimestamp:ChannelMessage' :: ChannelMessage -> Maybe POSIX
createdTimestamp} -> Maybe POSIX
createdTimestamp) (\s :: ChannelMessage
s@ChannelMessage' {} Maybe POSIX
a -> ChannelMessage
s {$sel:createdTimestamp:ChannelMessage' :: Maybe POSIX
createdTimestamp = Maybe POSIX
a} :: ChannelMessage) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall (a :: Format). Iso' (Time a) UTCTime
Data._Time

-- | The time at which a message was edited.
channelMessage_lastEditedTimestamp :: Lens.Lens' ChannelMessage (Prelude.Maybe Prelude.UTCTime)
channelMessage_lastEditedTimestamp :: Lens' ChannelMessage (Maybe UTCTime)
channelMessage_lastEditedTimestamp = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ChannelMessage' {Maybe POSIX
lastEditedTimestamp :: Maybe POSIX
$sel:lastEditedTimestamp:ChannelMessage' :: ChannelMessage -> Maybe POSIX
lastEditedTimestamp} -> Maybe POSIX
lastEditedTimestamp) (\s :: ChannelMessage
s@ChannelMessage' {} Maybe POSIX
a -> ChannelMessage
s {$sel:lastEditedTimestamp:ChannelMessage' :: Maybe POSIX
lastEditedTimestamp = Maybe POSIX
a} :: ChannelMessage) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall (a :: Format). Iso' (Time a) UTCTime
Data._Time

-- | The time at which a message was updated.
channelMessage_lastUpdatedTimestamp :: Lens.Lens' ChannelMessage (Prelude.Maybe Prelude.UTCTime)
channelMessage_lastUpdatedTimestamp :: Lens' ChannelMessage (Maybe UTCTime)
channelMessage_lastUpdatedTimestamp = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ChannelMessage' {Maybe POSIX
lastUpdatedTimestamp :: Maybe POSIX
$sel:lastUpdatedTimestamp:ChannelMessage' :: ChannelMessage -> Maybe POSIX
lastUpdatedTimestamp} -> Maybe POSIX
lastUpdatedTimestamp) (\s :: ChannelMessage
s@ChannelMessage' {} Maybe POSIX
a -> ChannelMessage
s {$sel:lastUpdatedTimestamp:ChannelMessage' :: Maybe POSIX
lastUpdatedTimestamp = Maybe POSIX
a} :: ChannelMessage) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall (a :: Format). Iso' (Time a) UTCTime
Data._Time

-- | The ID of a message.
channelMessage_messageId :: Lens.Lens' ChannelMessage (Prelude.Maybe Prelude.Text)
channelMessage_messageId :: Lens' ChannelMessage (Maybe Text)
channelMessage_messageId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ChannelMessage' {Maybe Text
messageId :: Maybe Text
$sel:messageId:ChannelMessage' :: ChannelMessage -> Maybe Text
messageId} -> Maybe Text
messageId) (\s :: ChannelMessage
s@ChannelMessage' {} Maybe Text
a -> ChannelMessage
s {$sel:messageId:ChannelMessage' :: Maybe Text
messageId = Maybe Text
a} :: ChannelMessage)

-- | The message metadata.
channelMessage_metadata :: Lens.Lens' ChannelMessage (Prelude.Maybe Prelude.Text)
channelMessage_metadata :: Lens' ChannelMessage (Maybe Text)
channelMessage_metadata = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ChannelMessage' {Maybe (Sensitive Text)
metadata :: Maybe (Sensitive Text)
$sel:metadata:ChannelMessage' :: ChannelMessage -> Maybe (Sensitive Text)
metadata} -> Maybe (Sensitive Text)
metadata) (\s :: ChannelMessage
s@ChannelMessage' {} Maybe (Sensitive Text)
a -> ChannelMessage
s {$sel:metadata:ChannelMessage' :: Maybe (Sensitive Text)
metadata = Maybe (Sensitive Text)
a} :: ChannelMessage) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall a. Iso' (Sensitive a) a
Data._Sensitive

-- | The persistence setting for a channel message.
channelMessage_persistence :: Lens.Lens' ChannelMessage (Prelude.Maybe ChannelMessagePersistenceType)
channelMessage_persistence :: Lens' ChannelMessage (Maybe ChannelMessagePersistenceType)
channelMessage_persistence = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ChannelMessage' {Maybe ChannelMessagePersistenceType
persistence :: Maybe ChannelMessagePersistenceType
$sel:persistence:ChannelMessage' :: ChannelMessage -> Maybe ChannelMessagePersistenceType
persistence} -> Maybe ChannelMessagePersistenceType
persistence) (\s :: ChannelMessage
s@ChannelMessage' {} Maybe ChannelMessagePersistenceType
a -> ChannelMessage
s {$sel:persistence:ChannelMessage' :: Maybe ChannelMessagePersistenceType
persistence = Maybe ChannelMessagePersistenceType
a} :: ChannelMessage)

-- | Hides the content of a message.
channelMessage_redacted :: Lens.Lens' ChannelMessage (Prelude.Maybe Prelude.Bool)
channelMessage_redacted :: Lens' ChannelMessage (Maybe Bool)
channelMessage_redacted = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ChannelMessage' {Maybe Bool
redacted :: Maybe Bool
$sel:redacted:ChannelMessage' :: ChannelMessage -> Maybe Bool
redacted} -> Maybe Bool
redacted) (\s :: ChannelMessage
s@ChannelMessage' {} Maybe Bool
a -> ChannelMessage
s {$sel:redacted:ChannelMessage' :: Maybe Bool
redacted = Maybe Bool
a} :: ChannelMessage)

-- | The message sender.
channelMessage_sender :: Lens.Lens' ChannelMessage (Prelude.Maybe Identity)
channelMessage_sender :: Lens' ChannelMessage (Maybe Identity)
channelMessage_sender = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ChannelMessage' {Maybe Identity
sender :: Maybe Identity
$sel:sender:ChannelMessage' :: ChannelMessage -> Maybe Identity
sender} -> Maybe Identity
sender) (\s :: ChannelMessage
s@ChannelMessage' {} Maybe Identity
a -> ChannelMessage
s {$sel:sender:ChannelMessage' :: Maybe Identity
sender = Maybe Identity
a} :: ChannelMessage)

-- | The message type.
channelMessage_type :: Lens.Lens' ChannelMessage (Prelude.Maybe ChannelMessageType)
channelMessage_type :: Lens' ChannelMessage (Maybe ChannelMessageType)
channelMessage_type = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ChannelMessage' {Maybe ChannelMessageType
type' :: Maybe ChannelMessageType
$sel:type':ChannelMessage' :: ChannelMessage -> Maybe ChannelMessageType
type'} -> Maybe ChannelMessageType
type') (\s :: ChannelMessage
s@ChannelMessage' {} Maybe ChannelMessageType
a -> ChannelMessage
s {$sel:type':ChannelMessage' :: Maybe ChannelMessageType
type' = Maybe ChannelMessageType
a} :: ChannelMessage)

instance Data.FromJSON ChannelMessage where
  parseJSON :: Value -> Parser ChannelMessage
parseJSON =
    forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
      String
"ChannelMessage"
      ( \Object
x ->
          Maybe Text
-> Maybe (Sensitive Text)
-> Maybe POSIX
-> Maybe POSIX
-> Maybe POSIX
-> Maybe Text
-> Maybe (Sensitive Text)
-> Maybe ChannelMessagePersistenceType
-> Maybe Bool
-> Maybe Identity
-> Maybe ChannelMessageType
-> ChannelMessage
ChannelMessage'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"ChannelArn")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"Content")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"CreatedTimestamp")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"LastEditedTimestamp")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"LastUpdatedTimestamp")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"MessageId")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"Metadata")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"Persistence")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"Redacted")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"Sender")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"Type")
      )

instance Prelude.Hashable ChannelMessage where
  hashWithSalt :: Int -> ChannelMessage -> Int
hashWithSalt Int
_salt ChannelMessage' {Maybe Bool
Maybe Text
Maybe (Sensitive Text)
Maybe POSIX
Maybe ChannelMessagePersistenceType
Maybe ChannelMessageType
Maybe Identity
type' :: Maybe ChannelMessageType
sender :: Maybe Identity
redacted :: Maybe Bool
persistence :: Maybe ChannelMessagePersistenceType
metadata :: Maybe (Sensitive Text)
messageId :: Maybe Text
lastUpdatedTimestamp :: Maybe POSIX
lastEditedTimestamp :: Maybe POSIX
createdTimestamp :: Maybe POSIX
content :: Maybe (Sensitive Text)
channelArn :: Maybe Text
$sel:type':ChannelMessage' :: ChannelMessage -> Maybe ChannelMessageType
$sel:sender:ChannelMessage' :: ChannelMessage -> Maybe Identity
$sel:redacted:ChannelMessage' :: ChannelMessage -> Maybe Bool
$sel:persistence:ChannelMessage' :: ChannelMessage -> Maybe ChannelMessagePersistenceType
$sel:metadata:ChannelMessage' :: ChannelMessage -> Maybe (Sensitive Text)
$sel:messageId:ChannelMessage' :: ChannelMessage -> Maybe Text
$sel:lastUpdatedTimestamp:ChannelMessage' :: ChannelMessage -> Maybe POSIX
$sel:lastEditedTimestamp:ChannelMessage' :: ChannelMessage -> Maybe POSIX
$sel:createdTimestamp:ChannelMessage' :: ChannelMessage -> Maybe POSIX
$sel:content:ChannelMessage' :: ChannelMessage -> Maybe (Sensitive Text)
$sel:channelArn:ChannelMessage' :: ChannelMessage -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
channelArn
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (Sensitive Text)
content
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe POSIX
createdTimestamp
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe POSIX
lastEditedTimestamp
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe POSIX
lastUpdatedTimestamp
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
messageId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (Sensitive Text)
metadata
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ChannelMessagePersistenceType
persistence
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
redacted
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Identity
sender
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ChannelMessageType
type'

instance Prelude.NFData ChannelMessage where
  rnf :: ChannelMessage -> ()
rnf ChannelMessage' {Maybe Bool
Maybe Text
Maybe (Sensitive Text)
Maybe POSIX
Maybe ChannelMessagePersistenceType
Maybe ChannelMessageType
Maybe Identity
type' :: Maybe ChannelMessageType
sender :: Maybe Identity
redacted :: Maybe Bool
persistence :: Maybe ChannelMessagePersistenceType
metadata :: Maybe (Sensitive Text)
messageId :: Maybe Text
lastUpdatedTimestamp :: Maybe POSIX
lastEditedTimestamp :: Maybe POSIX
createdTimestamp :: Maybe POSIX
content :: Maybe (Sensitive Text)
channelArn :: Maybe Text
$sel:type':ChannelMessage' :: ChannelMessage -> Maybe ChannelMessageType
$sel:sender:ChannelMessage' :: ChannelMessage -> Maybe Identity
$sel:redacted:ChannelMessage' :: ChannelMessage -> Maybe Bool
$sel:persistence:ChannelMessage' :: ChannelMessage -> Maybe ChannelMessagePersistenceType
$sel:metadata:ChannelMessage' :: ChannelMessage -> Maybe (Sensitive Text)
$sel:messageId:ChannelMessage' :: ChannelMessage -> Maybe Text
$sel:lastUpdatedTimestamp:ChannelMessage' :: ChannelMessage -> Maybe POSIX
$sel:lastEditedTimestamp:ChannelMessage' :: ChannelMessage -> Maybe POSIX
$sel:createdTimestamp:ChannelMessage' :: ChannelMessage -> Maybe POSIX
$sel:content:ChannelMessage' :: ChannelMessage -> Maybe (Sensitive Text)
$sel:channelArn:ChannelMessage' :: ChannelMessage -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
channelArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (Sensitive Text)
content
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
createdTimestamp
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
lastEditedTimestamp
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
lastUpdatedTimestamp
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
messageId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (Sensitive Text)
metadata
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ChannelMessagePersistenceType
persistence
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
redacted
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Identity
sender
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ChannelMessageType
type'