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 | ||||
| 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 : InviteInput -> A.TaskChain (Phantom ph1) (Phantom ph1) | ||||
| invite = | ||||
| inviteUser : InviteInput -> A.TaskChain (Phantom ph1) (Phantom ph1) | ||||
| inviteUser = | ||||
|     A.startWithVersion "r0.0.0" inviteV1 | ||||
|         |> A.sameForVersion "r0.0.1" | ||||
|         |> A.sameForVersion "r0.1.0" | ||||
|  | @ -1,6 +1,6 @@ | |||
| module Internal.Api.Main exposing | ||||
|     ( 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 | ||||
| 
 | ||||
| @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.User as User | ||||
| import Internal.Values.Vault as V | ||||
| import Internal.Values.User exposing (User) | ||||
| 
 | ||||
| 
 | ||||
| {-| Update message type that is being returned. | ||||
|  | @ -35,6 +36,28 @@ import Internal.Values.Vault as V | |||
| type alias Msg = | ||||
|     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. | ||||
| -} | ||||
|  |  | |||
|  | @ -12,7 +12,6 @@ This module sends state events to Matrix rooms. | |||
| -} | ||||
| 
 | ||||
| import Internal.Api.Api as A | ||||
| import Internal.Api.Invite.Api exposing (Phantom) | ||||
| import Internal.Api.Request as R | ||||
| import Internal.Config.Log exposing (log) | ||||
| 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.Invite.Api exposing (Phantom) | ||||
| import Internal.Api.Request as R | ||||
| import Internal.Config.Log exposing (log) | ||||
| 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.Invite.Api exposing (Phantom) | ||||
| import Internal.Api.Request as R | ||||
| import Internal.Config.Log exposing (log) | ||||
| import Internal.Config.Text as Text | ||||
|  |  | |||
|  | @ -1,6 +1,6 @@ | |||
| module Internal.Api.Task exposing | ||||
|     ( Task, run, Backpack | ||||
|     , sendMessageEvent, sendStateEvent, setAccountData, setRoomAccountData, sync | ||||
|     , inviteUser, sendMessageEvent, sendStateEvent, setAccountData, setRoomAccountData, sync | ||||
|     ) | ||||
| 
 | ||||
| {-| | ||||
|  | @ -23,12 +23,13 @@ up-to-date. | |||
| 
 | ||||
| ## Tasks | ||||
| 
 | ||||
| @docs sendMessageEvent, sendStateEvent, setAccountData, setRoomAccountData, sync | ||||
| @docs inviteUser, sendMessageEvent, sendStateEvent, setAccountData, setRoomAccountData, sync | ||||
| 
 | ||||
| -} | ||||
| 
 | ||||
| import Internal.Api.BaseUrl.Api | ||||
| import Internal.Api.Chain as C | ||||
| import Internal.Api.InviteUser.Api | ||||
| import Internal.Api.LoginWithUsernameAndPassword.Api | ||||
| import Internal.Api.Now.Api | ||||
| 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.Vault exposing (VaultUpdate(..)) | ||||
| import Task | ||||
| import Internal.Values.User exposing (User) | ||||
| 
 | ||||
| 
 | ||||
| {-| 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 | ||||
| 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 | ||||
| `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 | ||||
| 
 | ||||
| 
 | ||||
| {-| 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 | ||||
| each other. | ||||
| -} | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue