Skip to content

Commit d0a9817

Browse files
committed
fix(slack): allow disabling ack reactions
1 parent f2b112e commit d0a9817

2 files changed

Lines changed: 31 additions & 1 deletion

File tree

integrations/slack-gateway/config.go

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ func loadConfig() (config, error) {
5353
OAuthStateSecret: strings.TrimSpace(os.Getenv("SPRITZ_SLACK_OAUTH_STATE_SECRET")),
5454
SlackAPIBaseURL: strings.TrimRight(envOrDefault("SPRITZ_SLACK_API_BASE_URL", "https://slack.com/api"), "/"),
5555
SlackBotScopes: splitCSV(envOrDefault("SPRITZ_SLACK_BOT_SCOPES", "app_mentions:read,channels:history,chat:write,im:history,mpim:history,reactions:write")),
56-
AckReaction: normalizeSlackReactionName(envOrDefault("SPRITZ_SLACK_ACK_REACTION", "eyes")),
56+
AckReaction: normalizeSlackReactionName(envOrDefaultIfUnset("SPRITZ_SLACK_ACK_REACTION", "eyes")),
5757
RemoveAckAfterReply: parseBoolEnv("SPRITZ_SLACK_REMOVE_ACK_AFTER_REPLY", true),
5858
PresetID: strings.TrimSpace(envOrDefault("SPRITZ_SLACK_PRESET_ID", defaultSlackPresetID)),
5959
BackendBaseURL: strings.TrimRight(strings.TrimSpace(os.Getenv("SPRITZ_SLACK_BACKEND_BASE_URL")), "/"),
@@ -174,6 +174,14 @@ func envOrDefault(key, fallback string) string {
174174
return fallback
175175
}
176176

177+
func envOrDefaultIfUnset(key, fallback string) string {
178+
value, ok := os.LookupEnv(key)
179+
if !ok {
180+
return fallback
181+
}
182+
return strings.TrimSpace(value)
183+
}
184+
177185
func parseDurationEnv(key string, fallback time.Duration) time.Duration {
178186
raw := strings.TrimSpace(os.Getenv(key))
179187
if raw == "" {

integrations/slack-gateway/gateway_test.go

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8180,6 +8180,28 @@ func TestLoadConfigIncludesMPIMHistoryByDefault(t *testing.T) {
81808180
}
81818181
}
81828182

8183+
func TestLoadConfigAllowsDisablingAckReaction(t *testing.T) {
8184+
t.Setenv("SPRITZ_SLACK_GATEWAY_PUBLIC_URL", "https://gateway.example.test")
8185+
t.Setenv("SPRITZ_SLACK_CLIENT_ID", "client-id")
8186+
t.Setenv("SPRITZ_SLACK_CLIENT_SECRET", "client-secret")
8187+
t.Setenv("SPRITZ_SLACK_SIGNING_SECRET", "signing-secret")
8188+
t.Setenv("SPRITZ_SLACK_OAUTH_STATE_SECRET", "oauth-state-secret")
8189+
t.Setenv("SPRITZ_SLACK_BACKEND_BASE_URL", "https://backend.example.test")
8190+
t.Setenv("SPRITZ_SLACK_BACKEND_INTERNAL_TOKEN", "backend-internal-token")
8191+
t.Setenv("SPRITZ_SLACK_SPRITZ_BASE_URL", "https://spritz.example.test")
8192+
t.Setenv("SPRITZ_SLACK_SPRITZ_SERVICE_TOKEN", "spritz-service-token")
8193+
t.Setenv("SPRITZ_SLACK_PRINCIPAL_ID", "shared-slack-gateway")
8194+
t.Setenv("SPRITZ_SLACK_ACK_REACTION", "")
8195+
8196+
cfg, err := loadConfig()
8197+
if err != nil {
8198+
t.Fatalf("loadConfig failed: %v", err)
8199+
}
8200+
if cfg.AckReaction != "" {
8201+
t.Fatalf("expected empty ack reaction to disable Slack ack reactions, got %q", cfg.AckReaction)
8202+
}
8203+
}
8204+
81838205
func TestLoadConfigDefaultsBackendFastAPIBaseURLToBackendBaseURL(t *testing.T) {
81848206
t.Setenv("SPRITZ_SLACK_GATEWAY_PUBLIC_URL", "https://gateway.example.test")
81858207
t.Setenv("SPRITZ_SLACK_CLIENT_ID", "client-id")

0 commit comments

Comments
 (0)