@@ -35,17 +35,28 @@ interface SlackManagedUsersModalProps {
3535interface SlackManagedUsersMessage {
3636 type : typeof CHANNEL_NAME
3737 ok : boolean
38+ reason ?: string
3839 state ?: string
3940 credentialGroupId ?: string
4041 slackBotCredentialId ?: string
4142}
4243
44+ export function getSlackManagedUsersFailureNotification ( reason ?: string ) : {
45+ message : string
46+ variant : 'error' | 'warning'
47+ } {
48+ return reason === 'provider_error'
49+ ? { message : 'Slack authorization canceled' , variant : 'warning' }
50+ : { message : 'Slack app verification failed. Please try again.' , variant : 'error' }
51+ }
52+
4353function isSlackManagedUsersMessage ( value : unknown ) : value is SlackManagedUsersMessage {
4454 if ( ! value || typeof value !== 'object' ) return false
4555 const message = value as Record < string , unknown >
4656 return (
4757 message . type === CHANNEL_NAME &&
4858 typeof message . ok === 'boolean' &&
59+ ( message . reason === undefined || typeof message . reason === 'string' ) &&
4960 ( message . state === undefined || typeof message . state === 'string' ) &&
5061 ( message . credentialGroupId === undefined || typeof message . credentialGroupId === 'string' ) &&
5162 ( message . slackBotCredentialId === undefined || typeof message . slackBotCredentialId === 'string' )
@@ -97,8 +108,13 @@ export function SlackManagedUsersModal({
97108 popup . current ?. close ( )
98109 popup . current = null
99110 setPending ( false )
111+ if ( ! event . data . ok ) {
112+ const notification = getSlackManagedUsersFailureNotification ( event . data . reason )
113+ if ( notification . variant === 'warning' ) toast . warning ( notification . message )
114+ else toast . error ( notification . message )
115+ return
116+ }
100117 if (
101- ! event . data . ok ||
102118 event . data . credentialGroupId !== credentialGroupId ||
103119 ! verifiedCredentialId ||
104120 event . data . slackBotCredentialId !== verifiedCredentialId
0 commit comments