Add invite function
parent
41bee45693
commit
a2582f36f9
|
@ -1,4 +1,4 @@
|
||||||
module Internal.Api.Invite.Api exposing (InviteInput, Phantom, invite)
|
module Internal.Api.InviteUser.Api exposing (InviteInput, Phantom, inviteUser)
|
||||||
|
|
||||||
{-|
|
{-|
|
||||||
|
|
||||||
|
@ -14,7 +14,7 @@ room.
|
||||||
If the user was invited to the room, the homeserver will append a m.room.member
|
If the user was invited to the room, the homeserver will append a m.room.member
|
||||||
event to the room.
|
event to the room.
|
||||||
|
|
||||||
@docs InviteInput, Phantom, invite
|
@docs InviteInput, Phantom, inviteUser
|
||||||
|
|
||||||
-}
|
-}
|
||||||
|
|
||||||
|
@ -31,8 +31,8 @@ import Internal.Values.Vault as V
|
||||||
|
|
||||||
{-| Invite a user to a room.
|
{-| Invite a user to a room.
|
||||||
-}
|
-}
|
||||||
invite : InviteInput -> A.TaskChain (Phantom ph1) (Phantom ph1)
|
inviteUser : InviteInput -> A.TaskChain (Phantom ph1) (Phantom ph1)
|
||||||
invite =
|
inviteUser =
|
||||||
A.startWithVersion "r0.0.0" inviteV1
|
A.startWithVersion "r0.0.0" inviteV1
|
||||||
|> A.sameForVersion "r0.0.1"
|
|> A.sameForVersion "r0.0.1"
|
||||||
|> A.sameForVersion "r0.1.0"
|
|> A.sameForVersion "r0.1.0"
|
|
@ -1,6 +1,6 @@
|
||||||
module Internal.Api.Main exposing
|
module Internal.Api.Main exposing
|
||||||
( Msg
|
( Msg
|
||||||
, sendMessageEvent, sendStateEvent, setAccountData, setRoomAccountData, sync
|
, inviteUser, sendMessageEvent, sendStateEvent, setAccountData, setRoomAccountData, sync
|
||||||
)
|
)
|
||||||
|
|
||||||
{-|
|
{-|
|
||||||
|
@ -18,7 +18,7 @@ This module is used as reference for getting
|
||||||
|
|
||||||
## Actions
|
## Actions
|
||||||
|
|
||||||
@docs sendMessageEvent, sendStateEvent, setAccountData, setRoomAccountData, sync
|
@docs inviteUser, sendMessageEvent, sendStateEvent, setAccountData, setRoomAccountData, sync
|
||||||
|
|
||||||
-}
|
-}
|
||||||
|
|
||||||
|
@ -28,6 +28,7 @@ import Internal.Values.Context as Context
|
||||||
import Internal.Values.Envelope as E
|
import Internal.Values.Envelope as E
|
||||||
import Internal.Values.User as User
|
import Internal.Values.User as User
|
||||||
import Internal.Values.Vault as V
|
import Internal.Values.Vault as V
|
||||||
|
import Internal.Values.User exposing (User)
|
||||||
|
|
||||||
|
|
||||||
{-| Update message type that is being returned.
|
{-| Update message type that is being returned.
|
||||||
|
@ -35,6 +36,28 @@ import Internal.Values.Vault as V
|
||||||
type alias Msg =
|
type alias Msg =
|
||||||
Backpack
|
Backpack
|
||||||
|
|
||||||
|
{-| Invite a user to a room.
|
||||||
|
-}
|
||||||
|
inviteUser :
|
||||||
|
E.Envelope a
|
||||||
|
->
|
||||||
|
{ reason : Maybe String
|
||||||
|
, roomId : String
|
||||||
|
, toMsg : Msg -> msg
|
||||||
|
, user : User
|
||||||
|
}
|
||||||
|
-> Cmd msg
|
||||||
|
inviteUser env data =
|
||||||
|
ITask.run
|
||||||
|
data.toMsg
|
||||||
|
(ITask.inviteUser
|
||||||
|
{ reason = data.reason
|
||||||
|
, roomId = data.roomId
|
||||||
|
, user = data.user
|
||||||
|
}
|
||||||
|
)
|
||||||
|
(Context.apiFormat env.context)
|
||||||
|
|
||||||
|
|
||||||
{-| Send a message event.
|
{-| Send a message event.
|
||||||
-}
|
-}
|
||||||
|
|
|
@ -12,7 +12,6 @@ This module sends state events to Matrix rooms.
|
||||||
-}
|
-}
|
||||||
|
|
||||||
import Internal.Api.Api as A
|
import Internal.Api.Api as A
|
||||||
import Internal.Api.Invite.Api exposing (Phantom)
|
|
||||||
import Internal.Api.Request as R
|
import Internal.Api.Request as R
|
||||||
import Internal.Config.Log exposing (log)
|
import Internal.Config.Log exposing (log)
|
||||||
import Internal.Config.Text as Text
|
import Internal.Config.Text as Text
|
||||||
|
|
|
@ -12,7 +12,6 @@ This module allows the developer to set global account data.
|
||||||
-}
|
-}
|
||||||
|
|
||||||
import Internal.Api.Api as A
|
import Internal.Api.Api as A
|
||||||
import Internal.Api.Invite.Api exposing (Phantom)
|
|
||||||
import Internal.Api.Request as R
|
import Internal.Api.Request as R
|
||||||
import Internal.Config.Log exposing (log)
|
import Internal.Config.Log exposing (log)
|
||||||
import Internal.Config.Text as Text
|
import Internal.Config.Text as Text
|
||||||
|
|
|
@ -12,7 +12,6 @@ This module allows the developer to set account data to a Matrix room.
|
||||||
-}
|
-}
|
||||||
|
|
||||||
import Internal.Api.Api as A
|
import Internal.Api.Api as A
|
||||||
import Internal.Api.Invite.Api exposing (Phantom)
|
|
||||||
import Internal.Api.Request as R
|
import Internal.Api.Request as R
|
||||||
import Internal.Config.Log exposing (log)
|
import Internal.Config.Log exposing (log)
|
||||||
import Internal.Config.Text as Text
|
import Internal.Config.Text as Text
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
module Internal.Api.Task exposing
|
module Internal.Api.Task exposing
|
||||||
( Task, run, Backpack
|
( Task, run, Backpack
|
||||||
, sendMessageEvent, sendStateEvent, setAccountData, setRoomAccountData, sync
|
, inviteUser, sendMessageEvent, sendStateEvent, setAccountData, setRoomAccountData, sync
|
||||||
)
|
)
|
||||||
|
|
||||||
{-|
|
{-|
|
||||||
|
@ -23,12 +23,13 @@ up-to-date.
|
||||||
|
|
||||||
## Tasks
|
## Tasks
|
||||||
|
|
||||||
@docs sendMessageEvent, sendStateEvent, setAccountData, setRoomAccountData, sync
|
@docs inviteUser, sendMessageEvent, sendStateEvent, setAccountData, setRoomAccountData, sync
|
||||||
|
|
||||||
-}
|
-}
|
||||||
|
|
||||||
import Internal.Api.BaseUrl.Api
|
import Internal.Api.BaseUrl.Api
|
||||||
import Internal.Api.Chain as C
|
import Internal.Api.Chain as C
|
||||||
|
import Internal.Api.InviteUser.Api
|
||||||
import Internal.Api.LoginWithUsernameAndPassword.Api
|
import Internal.Api.LoginWithUsernameAndPassword.Api
|
||||||
import Internal.Api.Now.Api
|
import Internal.Api.Now.Api
|
||||||
import Internal.Api.Request as Request
|
import Internal.Api.Request as Request
|
||||||
|
@ -46,6 +47,7 @@ import Internal.Values.Envelope as E exposing (EnvelopeUpdate(..))
|
||||||
import Internal.Values.Room exposing (RoomUpdate(..))
|
import Internal.Values.Room exposing (RoomUpdate(..))
|
||||||
import Internal.Values.Vault exposing (VaultUpdate(..))
|
import Internal.Values.Vault exposing (VaultUpdate(..))
|
||||||
import Task
|
import Task
|
||||||
|
import Internal.Values.User exposing (User)
|
||||||
|
|
||||||
|
|
||||||
{-| A Backpack is the ultimate message type that gets sent back by the Elm
|
{-| A Backpack is the ultimate message type that gets sent back by the Elm
|
||||||
|
@ -207,6 +209,15 @@ finishTask uftask =
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
{-| Invite a user to a room.
|
||||||
|
-}
|
||||||
|
inviteUser : { reason : Maybe String, roomId : String, user : User } -> Task
|
||||||
|
inviteUser input =
|
||||||
|
makeVBA
|
||||||
|
|> C.andThen (Internal.Api.InviteUser.Api.inviteUser input)
|
||||||
|
|> finishTask
|
||||||
|
|
||||||
|
|
||||||
{-| Establish a Task Chain context where the base URL and supported list of
|
{-| Establish a Task Chain context where the base URL and supported list of
|
||||||
versions are known.
|
versions are known.
|
||||||
-}
|
-}
|
||||||
|
|
|
@ -44,7 +44,7 @@ room. These events are JSON objects that can be shaped in any way or form that
|
||||||
you like. To help other users with decoding your JSON objects, you pass an
|
you like. To help other users with decoding your JSON objects, you pass an
|
||||||
`eventType` string which helps them figure out the nature of your JSON object.
|
`eventType` string which helps them figure out the nature of your JSON object.
|
||||||
|
|
||||||
@docs sendMessageEvent, sendStateEvent
|
@docs inviteUser, sendMessageEvent, sendStateEvent
|
||||||
|
|
||||||
-}
|
-}
|
||||||
|
|
||||||
|
@ -68,6 +68,25 @@ getAccountData key (Room room) =
|
||||||
Envelope.extract (Internal.getAccountData key) room
|
Envelope.extract (Internal.getAccountData key) room
|
||||||
|
|
||||||
|
|
||||||
|
{-| Invite a user to a room.
|
||||||
|
-}
|
||||||
|
invite :
|
||||||
|
{ reason : Maybe String
|
||||||
|
, room : Room
|
||||||
|
, toMsg : Types.VaultUpdate -> msg
|
||||||
|
, user : Types.User
|
||||||
|
}
|
||||||
|
-> Cmd msg
|
||||||
|
invite data =
|
||||||
|
case (data.room, data.user) of
|
||||||
|
(Room room, Types.User user) ->
|
||||||
|
Api.inviteUser room
|
||||||
|
{ reason = data.reason
|
||||||
|
, roomId = roomId data.room
|
||||||
|
, toMsg = Types.VaultUpdate >> data.toMsg
|
||||||
|
, user = user.content
|
||||||
|
}
|
||||||
|
|
||||||
{-| Get a room's room id. This is an opaque string that distinguishes rooms from
|
{-| Get a room's room id. This is an opaque string that distinguishes rooms from
|
||||||
each other.
|
each other.
|
||||||
-}
|
-}
|
||||||
|
|
Loading…
Reference in New Issue