diff --git a/js/src/assets/diaspora-icon.svg b/js/src/assets/diaspora-icon.svg deleted file mode 100644 index 7a5b5cf3a..000000000 --- a/js/src/assets/diaspora-icon.svg +++ /dev/null @@ -1,4 +0,0 @@ -<svg version="1.1" viewBox="0 0 65.131 65.131" xmlns="http://www.w3.org/2000/svg"> - <path d="m28.214 64.754c-6.9441-0.80647-14.478-4.7044-19.429-10.053-8.1024-8.7516-10.823-21.337-7.0178-32.463 3.8465-11.248 12.917-19.153 24.746-21.569 7.2561-1.4817 14.813-0.27619 21.622 3.4495 7.517 4.1126 12.568 10.251 15.291 18.582 5.5678 17.038-4.1941 35.667-21.417 40.87-4.6929 1.4178-8.7675 1.7673-13.795 1.1834zm0.43913-17.263c2.0058-2.7986 3.7663-5.0883 3.9123-5.0883 0.14591 0 1.9109 2.2959 3.9221 5.102 2.0112 2.8061 3.827 5.0577 4.0349 5.0035 0.90081-0.23467 8.2871-5.9034 8.1633-6.265-0.07527-0.21984-1.7555-2.6427-3.7338-5.3842-1.9783-2.7414-3.552-5.0223-3.497-5.0686 0.05497-0.04629 2.8095-0.97845 6.1211-2.0715 3.3117-1.093 6.0224-2.1432 6.0239-2.3338 0.0073-0.92502-2.9094-9.4312-3.283-9.5746-0.23567-0.09043-2.9906 0.68953-6.1221 1.7332-3.1315 1.0437-5.8046 1.8977-5.9404 1.8977-0.13575 0-0.28828-2.9385-0.33895-6.53l-0.09213-6.53h-10.516l-0.09213 6.53c-0.05067 3.5915-0.20809 6.53-0.34982 6.53s-2.9544-0.90204-6.2504-2.0045l-5.9927-2.0045-1.5444 4.6339c-0.8494 2.5487-1.5444 4.866-1.5444 5.1496 0 0.36743 1.7311 1.087 6.0212 2.503 3.3117 1.093 6.0662 2.0252 6.1211 2.0715 0.05497 0.04629-1.5187 2.3272-3.497 5.0686-1.9783 2.7415-3.6605 5.1643-3.7382 5.3842-0.14163 0.40073 7.4833 6.2827 8.1896 6.3175 0.20673 0.01021 2.017-2.2712 4.0228-5.0698z" stroke-width=".33922"/> - <path d="m23.631 51.953c-2.348-1.5418-6.9154-5.1737-7.0535-5.6088-0.06717-0.21164 0.45125-0.99318 3.3654-5.0734 2.269-3.177 3.7767-5.3581 3.7767-5.4637 0-0.03748-1.6061-0.60338-3.5691-1.2576-6.1342-2.0442-8.3916-2.9087-8.5288-3.2663-0.03264-0.08506 0.09511-0.68598 0.28388-1.3354 0.643-2.212 2.7038-8.4123 2.7959-8.4123 0.05052 0 2.6821 0.85982 5.848 1.9107 3.1659 1.0509 5.897 1.9222 6.0692 1.9362 0.3089 0.02514 0.31402 0.01925 0.38295-0.44107 0.09851-0.65784 0.26289-5.0029 0.2633-6.9599 1.87e-4 -0.90267 0.02801-2.5298 0.06184-3.6158l0.0615-1.9746h10.392l0.06492 4.4556c0.06287 4.3148 0.18835 7.8236 0.29865 8.3513 0.0295 0.14113 0.11236 0.2566 0.18412 0.2566 0.07176 0 1.6955-0.50861 3.6084-1.1303 4.5213-1.4693 6.2537-2.0038 7.3969-2.2822 0.87349-0.21269 0.94061-0.21704 1.0505-0.06806 0.45169 0.61222 3.3677 9.2365 3.1792 9.4025-0.33681 0.29628-2.492 1.1048-6.9823 2.6194-5.3005 1.7879-5.1321 1.7279-5.1321 1.8283 0 0.13754 0.95042 1.522 3.5468 5.1666 1.3162 1.8475 2.6802 3.7905 3.0311 4.3176l0.63804 0.95842-0.27216 0.28519c-1.1112 1.1644-7.3886 5.8693-7.8309 5.8693-0.22379 0-1.2647-1.2321-2.9284-3.4663-0.90374-1.2137-2.264-3.0402-3.0228-4.059-0.75878-1.0188-1.529-2.0203-1.7116-2.2256l-0.33201-0.37324-0.32674 0.37324c-0.43918 0.50169-2.226 2.867-3.8064 5.0388-2.1662 2.9767-3.6326 4.8055-3.8532 4.8055-0.05161 0-0.4788-0.25278-0.94931-0.56173z" fill="#fff" stroke-width=".093311"/> -</svg> diff --git a/js/src/assets/logo.png b/js/src/assets/logo.png deleted file mode 100644 index f3d2503fc..000000000 Binary files a/js/src/assets/logo.png and /dev/null differ diff --git a/js/src/components/Event/ShareEventModal.vue b/js/src/components/Event/ShareEventModal.vue index f4055f2da..83ddf3b92 100644 --- a/js/src/components/Event/ShareEventModal.vue +++ b/js/src/components/Event/ShareEventModal.vue @@ -27,8 +27,13 @@ <small class="maximumNumberOfPlacesWarning" v-if="!eventCapacityOK"> {{ $t("All the places have already been taken") }} </small> - <b-field> - <b-input ref="eventURLInput" :value="event.url" expanded /> + <b-field :label="$t('Event URL')" label-for="event-url-text"> + <b-input + id="event-url-text" + ref="eventURLInput" + :value="event.url" + expanded + /> <p class="control"> <b-tooltip :label="$t('URL copied to clipboard')" @@ -43,20 +48,54 @@ native-type="button" @click="copyURL" @keyup.enter="copyURL" + :title="$t('Copy URL to clipboard')" /> </b-tooltip> </p> </b-field> <div> - <!-- <b-icon icon="mastodon" size="is-large" type="is-primary" />--> - - <a :href="twitterShareUrl" target="_blank" rel="nofollow noopener" + <a + :href="twitterShareUrl" + target="_blank" + rel="nofollow noopener" + title="Twitter" ><b-icon icon="twitter" size="is-large" type="is-primary" /></a> - <a :href="facebookShareUrl" target="_blank" rel="nofollow noopener" + <a + :href="mastodonShareUrl" + class="mastodon" + target="_blank" + rel="nofollow noopener" + title="Mastodon" + > + <mastodon-logo /> + </a> + <a + :href="facebookShareUrl" + target="_blank" + rel="nofollow noopener" + title="Facebook" ><b-icon icon="facebook" size="is-large" type="is-primary" /></a> - <a :href="linkedInShareUrl" target="_blank" rel="nofollow noopener" + <a + :href="whatsAppShareUrl" + target="_blank" + rel="nofollow noopener" + title="WhatsApp" + ><b-icon icon="whatsapp" size="is-large" type="is-primary" + /></a> + <a + :href="telegramShareUrl" + target="_blank" + rel="nofollow noopener" + title="Telegram" + ><b-icon icon="telegram" size="is-large" type="is-primary" + /></a> + <a + :href="linkedInShareUrl" + target="_blank" + rel="nofollow noopener" + title="LinkedIn" ><b-icon icon="linkedin" size="is-large" type="is-primary" /></a> <a @@ -64,12 +103,15 @@ class="diaspora" target="_blank" rel="nofollow noopener" + title="Diaspora" > - <span data-v-5e15e80a="" class="icon has-text-primary is-large"> - <DiasporaLogo alt="diaspora-logo" /> - </span> + <diaspora-logo /> </a> - <a :href="emailShareUrl" target="_blank" rel="nofollow noopener" + <a + :href="emailShareUrl" + target="_blank" + rel="nofollow noopener" + title="Email" ><b-icon icon="email" size="is-large" type="is-primary" /></a> </div> @@ -82,13 +124,13 @@ import { Component, Prop, Vue, Ref } from "vue-property-decorator"; import { EventStatus, EventVisibility } from "@/types/enums"; import { IEvent } from "../../types/event.model"; -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore -import DiasporaLogo from "../../assets/diaspora-icon.svg?inline"; +import DiasporaLogo from "../Share/DiasporaLogo.vue"; +import MastodonLogo from "../Share/MastodonLogo.vue"; @Component({ components: { DiasporaLogo, + MastodonLogo, }, }) export default class ShareEventModal extends Vue { @@ -123,6 +165,16 @@ export default class ShareEventModal extends Vue { )}&title=${this.event.title}`; } + get whatsAppShareUrl(): string { + return `https://wa.me/?text=${encodeURIComponent(this.basicTextToEncode)}`; + } + + get telegramShareUrl(): string { + return `https://t.me/share/url?url=${encodeURIComponent( + this.event.url + )}&text=${encodeURIComponent(this.event.title)}`; + } + get emailShareUrl(): string { return `mailto:?to=&body=${this.event.url}&subject=${this.event.title}`; } @@ -133,6 +185,16 @@ export default class ShareEventModal extends Vue { )}&url=${encodeURIComponent(this.event.url)}`; } + get mastodonShareUrl(): string { + return `https://toot.karamoff.dev/?text=${encodeURIComponent( + this.basicTextToEncode + )}`; + } + + get basicTextToEncode(): string { + return `${this.event.title}\r\n${this.event.url}`; + } + copyURL(): void { this.eventURLInput.$refs.input.select(); document.execCommand("copy"); @@ -144,8 +206,10 @@ export default class ShareEventModal extends Vue { } </script> <style lang="scss" scoped> -.diaspora span svg { - height: 2rem; - width: 2rem; +.diaspora, +.mastodon { + ::v-deep span svg { + width: 2.25rem; + } } </style> diff --git a/js/src/components/Group/ShareGroupModal.vue b/js/src/components/Group/ShareGroupModal.vue index 132f4a050..257b666e5 100644 --- a/js/src/components/Group/ShareGroupModal.vue +++ b/js/src/components/Group/ShareGroupModal.vue @@ -17,8 +17,13 @@ ) }} </b-notification> - <b-field> - <b-input ref="groupURLInput" :value="group.url" expanded /> + <b-field :label="$t('Group URL')" label-for="group-url-text"> + <b-input + id="group-url-text" + ref="groupURLInput" + :value="group.url" + expanded + /> <p class="control"> <b-tooltip :label="$t('URL copied to clipboard')" @@ -33,33 +38,70 @@ native-type="button" @click="copyURL" @keyup.enter="copyURL" + :title="$t('Copy URL to clipboard')" /> </b-tooltip> </p> </b-field> <div> - <!-- <b-icon icon="mastodon" size="is-large" type="is-primary" />--> - - <a :href="twitterShareUrl" target="_blank" rel="nofollow noopener" + <a + :href="twitterShareUrl" + target="_blank" + rel="nofollow noopener" + title="Twitter" ><b-icon icon="twitter" size="is-large" type="is-primary" /></a> - <a :href="facebookShareUrl" target="_blank" rel="nofollow noopener" + <a + :href="mastodonShareUrl" + class="mastodon" + target="_blank" + rel="nofollow noopener" + title="Mastodon" + > + <mastodon-logo /> + </a> + <a + :href="facebookShareUrl" + target="_blank" + rel="nofollow noopener" + title="Facebook" ><b-icon icon="facebook" size="is-large" type="is-primary" /></a> - <a :href="linkedInShareUrl" target="_blank" rel="nofollow noopener" + <a + :href="linkedInShareUrl" + target="_blank" + rel="nofollow noopener" + title="LinkedIn" ><b-icon icon="linkedin" size="is-large" type="is-primary" /></a> <a + :href="whatsAppShareUrl" + target="_blank" + rel="nofollow noopener" + title="WhatsApp" + ><b-icon icon="whatsapp" size="is-large" type="is-primary" + /></a> + <a + :href="telegramShareUrl" + target="_blank" + rel="nofollow noopener" + title="Telegram" + ><b-icon icon="telegram" size="is-large" type="is-primary" + /></a> + <a + title="Diaspora" :href="diasporaShareUrl" class="diaspora" target="_blank" rel="nofollow noopener" > - <span data-v-5e15e80a="" class="icon has-text-primary is-large"> - <DiasporaLogo alt="diaspora-logo" /> - </span> + <diaspora-logo /> </a> - <a :href="emailShareUrl" target="_blank" rel="nofollow noopener" + <a + :href="emailShareUrl" + target="_blank" + rel="nofollow noopener" + title="Email" ><b-icon icon="email" size="is-large" type="is-primary" /></a> </div> @@ -71,14 +113,14 @@ <script lang="ts"> import { Component, Prop, Vue, Ref } from "vue-property-decorator"; import { GroupVisibility } from "@/types/enums"; -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore -import DiasporaLogo from "../../assets/diaspora-icon.svg?inline"; +import DiasporaLogo from "../Share/DiasporaLogo.vue"; +import MastodonLogo from "../Share/MastodonLogo.vue"; import { displayName, IGroup } from "@/types/actor"; @Component({ components: { DiasporaLogo, + MastodonLogo, }, }) export default class ShareGroupModal extends Vue { @@ -108,6 +150,16 @@ export default class ShareGroupModal extends Vue { )}&title=${displayName(this.group)}`; } + get whatsAppShareUrl(): string { + return `https://wa.me/?text=${encodeURIComponent(this.basicTextToEncode)}`; + } + + get telegramShareUrl(): string { + return `https://t.me/share/url?url=${encodeURIComponent( + this.group.url + )}&text=${encodeURIComponent(displayName(this.group))}`; + } + get emailShareUrl(): string { return `mailto:?to=&body=${this.group.url}&subject=${displayName( this.group @@ -120,6 +172,16 @@ export default class ShareGroupModal extends Vue { )}&url=${encodeURIComponent(this.group.url)}`; } + get mastodonShareUrl(): string { + return `https://toot.karamoff.dev/?text=${encodeURIComponent( + this.basicTextToEncode + )}`; + } + + get basicTextToEncode(): string { + return `${displayName(this.group)}\r\n${this.group.url}`; + } + copyURL(): void { this.groupURLInput.$refs.input.select(); document.execCommand("copy"); @@ -131,8 +193,10 @@ export default class ShareGroupModal extends Vue { } </script> <style lang="scss" scoped> -.diaspora span svg { - height: 2rem; - width: 2rem; +.diaspora, +.mastodon { + ::v-deep span svg { + width: 2.25rem; + } } </style> diff --git a/js/src/components/Share/DiasporaLogo.vue b/js/src/components/Share/DiasporaLogo.vue new file mode 100644 index 000000000..a2ce06903 --- /dev/null +++ b/js/src/components/Share/DiasporaLogo.vue @@ -0,0 +1,26 @@ +<template> + <span class="icon has-text-primary is-large"> + <svg + version="1.1" + viewBox="0 0 65.131 65.131" + xmlns="http://www.w3.org/2000/svg" + > + <title>Diaspora logo</title> + <path + d="m28.214 64.754c-6.9441-0.80647-14.478-4.7044-19.429-10.053-8.1024-8.7516-10.823-21.337-7.0178-32.463 3.8465-11.248 12.917-19.153 24.746-21.569 7.2561-1.4817 14.813-0.27619 21.622 3.4495 7.517 4.1126 12.568 10.251 15.291 18.582 5.5678 17.038-4.1941 35.667-21.417 40.87-4.6929 1.4178-8.7675 1.7673-13.795 1.1834zm0.43913-17.263c2.0058-2.7986 3.7663-5.0883 3.9123-5.0883 0.14591 0 1.9109 2.2959 3.9221 5.102 2.0112 2.8061 3.827 5.0577 4.0349 5.0035 0.90081-0.23467 8.2871-5.9034 8.1633-6.265-0.07527-0.21984-1.7555-2.6427-3.7338-5.3842-1.9783-2.7414-3.552-5.0223-3.497-5.0686 0.05497-0.04629 2.8095-0.97845 6.1211-2.0715 3.3117-1.093 6.0224-2.1432 6.0239-2.3338 0.0073-0.92502-2.9094-9.4312-3.283-9.5746-0.23567-0.09043-2.9906 0.68953-6.1221 1.7332-3.1315 1.0437-5.8046 1.8977-5.9404 1.8977-0.13575 0-0.28828-2.9385-0.33895-6.53l-0.09213-6.53h-10.516l-0.09213 6.53c-0.05067 3.5915-0.20809 6.53-0.34982 6.53s-2.9544-0.90204-6.2504-2.0045l-5.9927-2.0045-1.5444 4.6339c-0.8494 2.5487-1.5444 4.866-1.5444 5.1496 0 0.36743 1.7311 1.087 6.0212 2.503 3.3117 1.093 6.0662 2.0252 6.1211 2.0715 0.05497 0.04629-1.5187 2.3272-3.497 5.0686-1.9783 2.7415-3.6605 5.1643-3.7382 5.3842-0.14163 0.40073 7.4833 6.2827 8.1896 6.3175 0.20673 0.01021 2.017-2.2712 4.0228-5.0698z" + stroke-width=".33922" + /> + <path + d="m23.631 51.953c-2.348-1.5418-6.9154-5.1737-7.0535-5.6088-0.06717-0.21164 0.45125-0.99318 3.3654-5.0734 2.269-3.177 3.7767-5.3581 3.7767-5.4637 0-0.03748-1.6061-0.60338-3.5691-1.2576-6.1342-2.0442-8.3916-2.9087-8.5288-3.2663-0.03264-0.08506 0.09511-0.68598 0.28388-1.3354 0.643-2.212 2.7038-8.4123 2.7959-8.4123 0.05052 0 2.6821 0.85982 5.848 1.9107 3.1659 1.0509 5.897 1.9222 6.0692 1.9362 0.3089 0.02514 0.31402 0.01925 0.38295-0.44107 0.09851-0.65784 0.26289-5.0029 0.2633-6.9599 1.87e-4 -0.90267 0.02801-2.5298 0.06184-3.6158l0.0615-1.9746h10.392l0.06492 4.4556c0.06287 4.3148 0.18835 7.8236 0.29865 8.3513 0.0295 0.14113 0.11236 0.2566 0.18412 0.2566 0.07176 0 1.6955-0.50861 3.6084-1.1303 4.5213-1.4693 6.2537-2.0038 7.3969-2.2822 0.87349-0.21269 0.94061-0.21704 1.0505-0.06806 0.45169 0.61222 3.3677 9.2365 3.1792 9.4025-0.33681 0.29628-2.492 1.1048-6.9823 2.6194-5.3005 1.7879-5.1321 1.7279-5.1321 1.8283 0 0.13754 0.95042 1.522 3.5468 5.1666 1.3162 1.8475 2.6802 3.7905 3.0311 4.3176l0.63804 0.95842-0.27216 0.28519c-1.1112 1.1644-7.3886 5.8693-7.8309 5.8693-0.22379 0-1.2647-1.2321-2.9284-3.4663-0.90374-1.2137-2.264-3.0402-3.0228-4.059-0.75878-1.0188-1.529-2.0203-1.7116-2.2256l-0.33201-0.37324-0.32674 0.37324c-0.43918 0.50169-2.226 2.867-3.8064 5.0388-2.1662 2.9767-3.6326 4.8055-3.8532 4.8055-0.05161 0-0.4788-0.25278-0.94931-0.56173z" + fill="#fff" + stroke-width=".093311" + /> + </svg> + </span> +</template> +<script lang="ts"> +import { Component, Vue } from "vue-property-decorator"; + +@Component +export default class DiasporaLogo extends Vue {} +</script> diff --git a/js/src/components/Share/MastodonLogo.vue b/js/src/components/Share/MastodonLogo.vue new file mode 100644 index 000000000..c35ace269 --- /dev/null +++ b/js/src/components/Share/MastodonLogo.vue @@ -0,0 +1,25 @@ +<template> + <span class="icon has-text-primary is-large"> + <svg + xmlns="http://www.w3.org/2000/svg" + width="61.076954mm" + height="65.47831mm" + viewBox="0 0 216.4144 232.00976" + > + <title>Mastodon logo</title> + <path + d="M211.80734 139.0875c-3.18125 16.36625-28.4925 34.2775-57.5625 37.74875-15.15875 1.80875-30.08375 3.47125-45.99875 2.74125-26.0275-1.1925-46.565-6.2125-46.565-6.2125 0 2.53375.15625 4.94625.46875 7.2025 3.38375 25.68625 25.47 27.225 46.39125 27.9425 21.11625.7225 39.91875-5.20625 39.91875-5.20625l.8675 19.09s-14.77 7.93125-41.08125 9.39c-14.50875.7975-32.52375-.365-53.50625-5.91875C9.23234 213.82 1.40609 165.31125.20859 116.09125c-.365-14.61375-.14-28.39375-.14-39.91875 0-50.33 32.97625-65.0825 32.97625-65.0825C49.67234 3.45375 78.20359.2425 107.86484 0h.72875c29.66125.2425 58.21125 3.45375 74.8375 11.09 0 0 32.975 14.7525 32.975 65.0825 0 0 .41375 37.13375-4.59875 62.915" + /> + <path + d="M177.50984 80.077v60.94125h-24.14375v-59.15c0-12.46875-5.24625-18.7975-15.74-18.7975-11.6025 0-17.4175 7.5075-17.4175 22.3525v32.37625H96.20734V85.42325c0-14.845-5.81625-22.3525-17.41875-22.3525-10.49375 0-15.74 6.32875-15.74 18.7975v59.15H38.90484V80.077c0-12.455 3.17125-22.3525 9.54125-29.675 6.56875-7.3225 15.17125-11.07625 25.85-11.07625 12.355 0 21.71125 4.74875 27.8975 14.2475l6.01375 10.08125 6.015-10.08125c6.185-9.49875 15.54125-14.2475 27.8975-14.2475 10.6775 0 19.28 3.75375 25.85 11.07625 6.36875 7.3225 9.54 17.22 9.54 29.675" + fill="#fff" + /> + </svg> + </span> +</template> +<script lang="ts"> +import { Component, Vue } from "vue-property-decorator"; + +@Component +export default class DiasporaLogo extends Vue {} +</script> diff --git a/js/src/i18n/en_US.json b/js/src/i18n/en_US.json index 445eece79..6b1574987 100644 --- a/js/src/i18n/en_US.json +++ b/js/src/i18n/en_US.json @@ -1060,5 +1060,8 @@ "We couldn't save your participation inside this browser. Not to worry, you have successfully confirmed your participation, we just couldn't save it's status in this browser because of a technical issue.": "We couldn't save your participation inside this browser. Not to worry, you have successfully confirmed your participation, we just couldn't save it's status in this browser because of a technical issue.", "This instance hasn't got push notifications enabled.": "This instance hasn't got push notifications enabled.", "enable the feature": "enable the feature", - "Ask your instance admin to {enable_feature}.": "Ask your instance admin to {enable_feature}." + "Ask your instance admin to {enable_feature}.": "Ask your instance admin to {enable_feature}.", + "Event URL": "Event URL", + "Copy URL to clipboard": "Copy URL to clipboard", + "Group URL": "Group URL" } diff --git a/js/src/i18n/fr_FR.json b/js/src/i18n/fr_FR.json index 584fd7839..7b635272c 100644 --- a/js/src/i18n/fr_FR.json +++ b/js/src/i18n/fr_FR.json @@ -1151,5 +1151,8 @@ "We couldn't save your participation inside this browser. Not to worry, you have successfully confirmed your participation, we just couldn't save it's status in this browser because of a technical issue.": "Nous n'avons pas pu sauvegarder votre participation dans ce navigateur. Aucune inquiétude, vous avez bien confirmé votre participation, nous n'avons juste pas pu enregistrer son statut dans ce navigateur à cause d'un souci technique.", "This instance hasn't got push notifications enabled.": "Cette instance n'a pas activé la fonctionnalité de notification push.", "enable the feature": "activer la fonctionnalité", - "Ask your instance admin to {enable_feature}.": "Demandez à l'administrateur⋅ice de votre instance d'{enable_feature}." + "Ask your instance admin to {enable_feature}.": "Demandez à l'administrateur⋅ice de votre instance d'{enable_feature}.", + "Event URL": "URL de l'événement", + "Copy URL to clipboard": "Copier l'URL dans le presse-papiers", + "Group URL": "URL du groupe" } diff --git a/test/tasks/users_test.exs b/test/tasks/users_test.exs index 6c0463a39..7400be48b 100644 --- a/test/tasks/users_test.exs +++ b/test/tasks/users_test.exs @@ -160,7 +160,7 @@ defmodule Mix.Tasks.Mobilizon.UsersTest do test "enable and disable at the same time" do Modify.run([@email, "--disable", "--enable"]) assert_received {:mix_shell, :error, [message]} - assert message =~ "Can't use both --enabled and --disable options at the same time." + assert message =~ "Can't use both --enable and --disable options at the same time." end @modified_email "modified@email.tld"