generated from nakatanakatana/go-template
-
Notifications
You must be signed in to change notification settings - Fork 0
/
step_input.go
118 lines (99 loc) · 2.32 KB
/
step_input.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
package slackworkflowbot
import (
"github.com/slack-go/slack"
)
type (
StepInputConfig struct {
ActionID ActionID
BlockID BlockID
Config StepInputConfigDetail
}
StepInputConfigKey string
StepInputConfigDetail interface {
Type() slack.InputType
}
StepInputs map[StepInputConfigKey]StepInputConfig
)
type StepInputConfigText struct {
Name string
Placeholder string
Emoji bool
Multiline bool
Verbatim bool
SkipVariableReplacement bool
}
func (c StepInputConfigText) Type() slack.InputType {
return slack.InputTypeText
}
type StepInputConfigCheckbox struct {
Description string
Options []string
Emoji bool
Verbatim bool
SkipVariableReplacement bool
}
func (c StepInputConfigCheckbox) Type() slack.InputType {
return slack.InputTypeText
}
func CreateInputsConfig(blockAction BlockActionValues, inputs StepInputs) *slack.WorkflowStepInputs {
in := make([]*slack.WorkflowStepInputs, len(inputs))
i := 0
for _, value := range inputs {
switch cfg := value.Config.(type) {
case StepInputConfigText:
in[i] = CreateTextWorkflowStepInput(
blockAction,
value.ActionID,
value.BlockID,
cfg.SkipVariableReplacement,
)
i++
case StepInputConfigCheckbox:
in[i] = CreateTextWorkflowStepInput(
blockAction,
value.ActionID,
value.BlockID,
cfg.SkipVariableReplacement,
)
i++
default:
continue
}
}
return MergeWorkflowStepInput(in[:i]...)
}
func CreateInputsBlock(inputs StepInputs, values *slack.WorkflowStepInputs) map[StepInputConfigKey]*slack.InputBlock {
results := make(map[StepInputConfigKey]*slack.InputBlock)
inputValues := *values
for key, value := range inputs {
input := ""
if v, ok := inputValues[string(key)]; ok {
input = v.Value
}
switch cfg := value.Config.(type) {
case StepInputConfigText:
results[key] = CreateTextInputBlock(
value.ActionID,
value.BlockID,
cfg.Name,
cfg.Placeholder,
input,
cfg.Multiline,
cfg.Emoji,
cfg.Verbatim,
)
case StepInputConfigCheckbox:
results[key] = CreateCheckboxBlock(
value.ActionID,
value.BlockID,
cfg.Description,
cfg.Options,
cfg.Emoji,
cfg.Verbatim,
)
default:
continue
}
}
return results
}