chore: Add a redirect link to the conversation in success toast message (#3711)

When creating a conversation from the contacts tab now we can go directly to the conversation by clicking the link in the success message

Co-authored-by: Pranav Raj S <pranav@chatwoot.com>
This commit is contained in:
Ximena Sandoval 2022-01-13 12:15:40 -07:00 committed by GitHub
parent 359caf754c
commit cab5a3e53b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
9 changed files with 40 additions and 11 deletions

View file

@ -15,7 +15,7 @@
@include shadow;
background-color: $woot-snackbar-bg;
border-radius: $space-smaller;
display: inline-block;
display: inline-flex;
margin-bottom: $space-small;
max-width: 40rem;
min-height: 3rem;

View file

@ -4,6 +4,11 @@
<div class="ui-snackbar-text">
{{ message }}
</div>
<div v-if="action" class="ui-snackbar-action">
<router-link v-if="action.type == 'link'" :to="action.to">
{{ action.message }}
</router-link>
</div>
</div>
</div>
</template>
@ -12,6 +17,10 @@
export default {
props: {
message: { type: String, default: '' },
action: {
type: Object,
default: () => {},
},
showButton: Boolean,
duration: {
type: [String, Number],

View file

@ -4,6 +4,7 @@
v-for="snackMessage in snackMessages"
:key="snackMessage.key"
:message="snackMessage.message"
:action="snackMessage.action"
/>
</transition-group>
</template>
@ -35,8 +36,12 @@ export default {
bus.$off('newToastMessage', this.onNewToastMessage);
},
methods: {
onNewToastMessage(message) {
this.snackMessages.push({ key: new Date().getTime(), message });
onNewToastMessage(message, action) {
this.snackMessages.push({
key: new Date().getTime(),
message,
action,
});
window.setTimeout(() => {
this.snackMessages.splice(0, 1);
}, this.duration);

View file

@ -84,7 +84,8 @@ describe('MoveActions', () => {
expect(window.bus.$emit).toBeCalledWith(
'newToastMessage',
'This conversation is muted for 6 hours'
'This conversation is muted for 6 hours',
undefined
);
});
});
@ -109,7 +110,8 @@ describe('MoveActions', () => {
expect(window.bus.$emit).toBeCalledWith(
'newToastMessage',
'This conversation is unmuted'
'This conversation is unmuted',
undefined
);
});
});

View file

@ -169,6 +169,7 @@
"SUBMIT": "Send message",
"CANCEL": "Cancel",
"SUCCESS_MESSAGE": "Message sent!",
"GO_TO_CONVERSATION": "View",
"ERROR_MESSAGE": "Couldn't send! try again"
}
},

View file

@ -174,7 +174,6 @@ export default {
onSuccess() {
this.$emit('success');
},
async handleSubmit() {
this.$v.$touch();
if (this.$v.$invalid) {
@ -182,9 +181,17 @@ export default {
}
try {
const payload = this.getNewConversation;
await this.onSubmit(payload);
const data = await this.onSubmit(payload);
const action = {
type: 'link',
to: `/app/accounts/${data.account_id}/conversations/${data.id}`,
message: this.$t('NEW_CONVERSATION.FORM.GO_TO_CONVERSATION'),
};
this.onSuccess();
this.showAlert(this.$t('NEW_CONVERSATION.FORM.SUCCESS_MESSAGE'));
this.showAlert(
this.$t('NEW_CONVERSATION.FORM.SUCCESS_MESSAGE'),
action
);
} catch (error) {
if (error instanceof ExceptionWithMessage) {
this.showAlert(error.data);

View file

@ -49,7 +49,11 @@ export default {
this.$emit('cancel');
},
async onSubmit(contactItem) {
await this.$store.dispatch('contactConversations/create', contactItem);
const data = await this.$store.dispatch(
'contactConversations/create',
contactItem
);
return data;
},
},
};

View file

@ -39,6 +39,7 @@ export const actions = {
id: contactId,
data,
});
return data;
} catch (error) {
throw new Error(error);
} finally {

View file

@ -1,7 +1,7 @@
export default {
methods: {
showAlert(message) {
bus.$emit('newToastMessage', message);
showAlert(message, action) {
bus.$emit('newToastMessage', message, action);
},
},
};