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