Use upstream slack-go/slack again (#1018)
This commit is contained in:
221
vendor/github.com/slack-go/slack/views.go
generated
vendored
Normal file
221
vendor/github.com/slack-go/slack/views.go
generated
vendored
Normal file
@@ -0,0 +1,221 @@
|
||||
package slack
|
||||
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
)
|
||||
|
||||
const (
|
||||
VTModal ViewType = "modal"
|
||||
VTHomeTab ViewType = "home"
|
||||
)
|
||||
|
||||
type ViewType string
|
||||
|
||||
type View struct {
|
||||
SlackResponse
|
||||
ID string `json:"id"`
|
||||
TeamID string `json:"team_id"`
|
||||
Type ViewType `json:"type"`
|
||||
Title *TextBlockObject `json:"title"`
|
||||
Close *TextBlockObject `json:"close"`
|
||||
Submit *TextBlockObject `json:"submit"`
|
||||
Blocks Blocks `json:"blocks"`
|
||||
PrivateMetadata string `json:"private_metadata"`
|
||||
CallbackID string `json:"callback_id"`
|
||||
State interface{} `json:"state"`
|
||||
Hash string `json:"hash"`
|
||||
ClearOnClose bool `json:"clear_on_close"`
|
||||
NotifyOnClose bool `json:"notify_on_close"`
|
||||
RootViewID string `json:"root_view_id"`
|
||||
PreviousViewID string `json:"previous_view_id"`
|
||||
AppID string `json:"app_id"`
|
||||
ExternalID string `json:"external_id"`
|
||||
BotID string `json:"bot_id"`
|
||||
}
|
||||
|
||||
type ModalViewRequest struct {
|
||||
Type ViewType `json:"type"`
|
||||
Title *TextBlockObject `json:"title"`
|
||||
Blocks Blocks `json:"blocks"`
|
||||
Close *TextBlockObject `json:"close"`
|
||||
Submit *TextBlockObject `json:"submit"`
|
||||
PrivateMetadata string `json:"private_metadata"`
|
||||
CallbackID string `json:"callback_id"`
|
||||
ClearOnClose bool `json:"clear_on_close"`
|
||||
NotifyOnClose bool `json:"notify_on_close"`
|
||||
ExternalID string `json:"external_id"`
|
||||
}
|
||||
|
||||
func (v *ModalViewRequest) ViewType() ViewType {
|
||||
return v.Type
|
||||
}
|
||||
|
||||
type HomeTabViewRequest struct {
|
||||
Type ViewType `json:"type"`
|
||||
Blocks Blocks `json:"blocks"`
|
||||
PrivateMetadata string `json:"private_metadata"`
|
||||
CallbackID string `json:"callback_id"`
|
||||
ExternalID string `json:"external_id"`
|
||||
}
|
||||
|
||||
func (v *HomeTabViewRequest) ViewType() ViewType {
|
||||
return v.Type
|
||||
}
|
||||
|
||||
type openViewRequest struct {
|
||||
TriggerID string `json:"trigger_id"`
|
||||
View ModalViewRequest `json:"view"`
|
||||
}
|
||||
|
||||
type publishViewRequest struct {
|
||||
UserID string `json:"user_id"`
|
||||
View HomeTabViewRequest `json:"view"`
|
||||
Hash string `json:"hash"`
|
||||
}
|
||||
|
||||
type pushViewRequest struct {
|
||||
TriggerID string `json:"trigger_id"`
|
||||
View ModalViewRequest `json:"view"`
|
||||
}
|
||||
|
||||
type updateViewRequest struct {
|
||||
View ModalViewRequest `json:"view"`
|
||||
ExternalID string `json:"external_id"`
|
||||
Hash string `json:"hash"`
|
||||
ViewID string `json:"view_id"`
|
||||
}
|
||||
|
||||
type ViewResponse struct {
|
||||
SlackResponse
|
||||
View `json:"view"`
|
||||
}
|
||||
|
||||
// OpenView opens a view for a user.
|
||||
func (api *Client) OpenView(triggerID string, view ModalViewRequest) (*ViewResponse, error) {
|
||||
return api.OpenViewContext(context.Background(), triggerID, view)
|
||||
}
|
||||
|
||||
// OpenViewContext opens a view for a user with a custom context.
|
||||
func (api *Client) OpenViewContext(
|
||||
ctx context.Context,
|
||||
triggerID string,
|
||||
view ModalViewRequest,
|
||||
) (*ViewResponse, error) {
|
||||
if triggerID == "" {
|
||||
return nil, ErrParametersMissing
|
||||
}
|
||||
req := openViewRequest{
|
||||
TriggerID: triggerID,
|
||||
View: view,
|
||||
}
|
||||
encoded, err := json.Marshal(req)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
endpoint := api.endpoint + "views.open"
|
||||
resp := &ViewResponse{}
|
||||
err = postJSON(ctx, api.httpclient, endpoint, api.token, encoded, resp, api)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return resp, resp.Err()
|
||||
}
|
||||
|
||||
// PublishView publishes a static view for a user.
|
||||
func (api *Client) PublishView(userID string, view HomeTabViewRequest, hash string) (*ViewResponse, error) {
|
||||
return api.PublishViewContext(context.Background(), userID, view, hash)
|
||||
}
|
||||
|
||||
// PublishViewContext publishes a static view for a user with a custom context.
|
||||
func (api *Client) PublishViewContext(
|
||||
ctx context.Context,
|
||||
userID string,
|
||||
view HomeTabViewRequest,
|
||||
hash string,
|
||||
) (*ViewResponse, error) {
|
||||
if userID == "" {
|
||||
return nil, ErrParametersMissing
|
||||
}
|
||||
req := publishViewRequest{
|
||||
UserID: userID,
|
||||
View: view,
|
||||
Hash: hash,
|
||||
}
|
||||
encoded, err := json.Marshal(req)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
endpoint := api.endpoint + "views.publish"
|
||||
resp := &ViewResponse{}
|
||||
err = postJSON(ctx, api.httpclient, endpoint, api.token, encoded, resp, api)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return resp, resp.Err()
|
||||
}
|
||||
|
||||
// PushView pushes a view onto the stack of a root view.
|
||||
func (api *Client) PushView(triggerID string, view ModalViewRequest) (*ViewResponse, error) {
|
||||
return api.PushViewContext(context.Background(), triggerID, view)
|
||||
}
|
||||
|
||||
// PublishViewContext pushes a view onto the stack of a root view with a custom context.
|
||||
func (api *Client) PushViewContext(
|
||||
ctx context.Context,
|
||||
triggerID string,
|
||||
view ModalViewRequest,
|
||||
) (*ViewResponse, error) {
|
||||
if triggerID == "" {
|
||||
return nil, ErrParametersMissing
|
||||
}
|
||||
req := pushViewRequest{
|
||||
TriggerID: triggerID,
|
||||
View: view,
|
||||
}
|
||||
encoded, err := json.Marshal(req)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
endpoint := api.endpoint + "views.push"
|
||||
resp := &ViewResponse{}
|
||||
err = postJSON(ctx, api.httpclient, endpoint, api.token, encoded, resp, api)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return resp, resp.Err()
|
||||
}
|
||||
|
||||
// UpdateView updates an existing view.
|
||||
func (api *Client) UpdateView(view ModalViewRequest, externalID, hash, viewID string) (*ViewResponse, error) {
|
||||
return api.UpdateViewContext(context.Background(), view, externalID, hash, viewID)
|
||||
}
|
||||
|
||||
// UpdateViewContext updates an existing view with a custom context.
|
||||
func (api *Client) UpdateViewContext(
|
||||
ctx context.Context,
|
||||
view ModalViewRequest,
|
||||
externalID, hash,
|
||||
viewID string,
|
||||
) (*ViewResponse, error) {
|
||||
if externalID == "" && viewID == "" {
|
||||
return nil, ErrParametersMissing
|
||||
}
|
||||
req := updateViewRequest{
|
||||
View: view,
|
||||
ExternalID: externalID,
|
||||
Hash: hash,
|
||||
ViewID: viewID,
|
||||
}
|
||||
encoded, err := json.Marshal(req)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
endpoint := api.endpoint + "views.update"
|
||||
resp := &ViewResponse{}
|
||||
err = postJSON(ctx, api.httpclient, endpoint, api.token, encoded, resp, api)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return resp, resp.Err()
|
||||
}
|
||||
Reference in New Issue
Block a user