mirror of
https://github.com/crater-invoice/crater.git
synced 2025-10-27 19:51:09 -04:00
refactor mail sender
This commit is contained in:
@ -43,10 +43,10 @@ class MailSenderController extends Controller
|
|||||||
|
|
||||||
$mailConfiguration = MailSender::where('company_id', $request->header('company'))
|
$mailConfiguration = MailSender::where('company_id', $request->header('company'))
|
||||||
->where('is_default', true)
|
->where('is_default', true)
|
||||||
->count();
|
->first();
|
||||||
|
|
||||||
if ($mailConfiguration > 0 && $request['is_default'] == true) {
|
if ($mailConfiguration && $request['is_default'] == true) {
|
||||||
return respondJson('default_record_exists', 'Default mail sender already exist');
|
$mailConfiguration->update(['is_default' => false]);
|
||||||
}
|
}
|
||||||
|
|
||||||
$mailSender = MailSender::createFromRequest($request);
|
$mailSender = MailSender::createFromRequest($request);
|
||||||
@ -81,10 +81,10 @@ class MailSenderController extends Controller
|
|||||||
$mailConfiguration = MailSender::where('company_id', $request->header('company'))
|
$mailConfiguration = MailSender::where('company_id', $request->header('company'))
|
||||||
->where('is_default', true)
|
->where('is_default', true)
|
||||||
->where('id', '<>', $mailSender->id)
|
->where('id', '<>', $mailSender->id)
|
||||||
->count();
|
->first();
|
||||||
|
|
||||||
if ($mailConfiguration > 0 && $request['is_default'] == true) {
|
if ($mailConfiguration && $request['is_default'] == true) {
|
||||||
return respondJson('default_record_exists', 'Default mail sender already exist');
|
$mailConfiguration->update(['is_default' => false]);
|
||||||
}
|
}
|
||||||
|
|
||||||
$mailSender->updateFromRequest($request);
|
$mailSender->updateFromRequest($request);
|
||||||
|
|||||||
@ -72,7 +72,7 @@ class MailSenderRequest extends FormRequest
|
|||||||
{
|
{
|
||||||
$data = $this->validated();
|
$data = $this->validated();
|
||||||
|
|
||||||
if ($data['settings']['encryption'] == 'none') {
|
if ($data['settings'] && $data['settings']['encryption'] == 'none') {
|
||||||
$data['settings']['encryption'] = '';
|
$data['settings']['encryption'] = '';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -17,7 +17,7 @@
|
|||||||
</BaseDropdownItem>
|
</BaseDropdownItem>
|
||||||
|
|
||||||
<!-- delete mail-sender -->
|
<!-- delete mail-sender -->
|
||||||
<BaseDropdownItem @click="removeMailSender(row.id)">
|
<BaseDropdownItem v-if="!row.is_default" @click="removeMailSender(row.id)">
|
||||||
<BaseIcon
|
<BaseIcon
|
||||||
name="TrashIcon"
|
name="TrashIcon"
|
||||||
class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"
|
class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"
|
||||||
|
|||||||
@ -453,7 +453,7 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
import { computed, onMounted, ref } from 'vue'
|
import { computed, ref } from 'vue'
|
||||||
import { useRoute } from 'vue-router'
|
import { useRoute } from 'vue-router'
|
||||||
import { useI18n } from 'vue-i18n'
|
import { useI18n } from 'vue-i18n'
|
||||||
|
|
||||||
@ -549,7 +549,6 @@ const rules = computed(() => {
|
|||||||
website: {
|
website: {
|
||||||
url: helpers.withMessage(t('validation.invalid_url'), url),
|
url: helpers.withMessage(t('validation.invalid_url'), url),
|
||||||
},
|
},
|
||||||
|
|
||||||
billing: {
|
billing: {
|
||||||
address_street_1: {
|
address_street_1: {
|
||||||
maxLength: helpers.withMessage(
|
maxLength: helpers.withMessage(
|
||||||
|
|||||||
@ -112,6 +112,7 @@
|
|||||||
|
|
||||||
<!-- Is Default? -->
|
<!-- Is Default? -->
|
||||||
<BaseSwitchSection
|
<BaseSwitchSection
|
||||||
|
v-if="!mailSenderStore.isDisable"
|
||||||
v-model="mailSenderStore.currentMailSender.is_default"
|
v-model="mailSenderStore.currentMailSender.is_default"
|
||||||
:title="$t(`${pre_t}.is_default`)"
|
:title="$t(`${pre_t}.is_default`)"
|
||||||
:description="$t(`${pre_t}.is_default_description`)"
|
:description="$t(`${pre_t}.is_default_description`)"
|
||||||
@ -167,6 +168,7 @@ const modalStore = useModalStore()
|
|||||||
const mailSenderStore = useMailSenderStore()
|
const mailSenderStore = useMailSenderStore()
|
||||||
const { t } = useI18n()
|
const { t } = useI18n()
|
||||||
let isSaving = ref(false)
|
let isSaving = ref(false)
|
||||||
|
|
||||||
const loadMailDriver = computed(() => {
|
const loadMailDriver = computed(() => {
|
||||||
switch (mailSenderStore.currentMailSender.driver) {
|
switch (mailSenderStore.currentMailSender.driver) {
|
||||||
case 'smtp':
|
case 'smtp':
|
||||||
|
|||||||
@ -73,7 +73,7 @@
|
|||||||
</BaseInputGrid>
|
</BaseInputGrid>
|
||||||
</div>
|
</div>
|
||||||
<!-- v-else -->
|
<!-- v-else -->
|
||||||
<div v-else>
|
<div v-else-if="!isMailSenderExist && !isFetchingInitialData">
|
||||||
<FeedbackAlert
|
<FeedbackAlert
|
||||||
:title="$t('settings.mail_sender.no_mail_sender_found')"
|
:title="$t('settings.mail_sender.no_mail_sender_found')"
|
||||||
:description="
|
:description="
|
||||||
@ -271,7 +271,7 @@ async function setInitialData() {
|
|||||||
companyStore.selectedCompanySettings.estimate_mail_body
|
companyStore.selectedCompanySettings.estimate_mail_body
|
||||||
|
|
||||||
isFetchingInitialData.value = true
|
isFetchingInitialData.value = true
|
||||||
let mailSenderData = await mailSenderStore.fetchMailSenderList()
|
let mailSenderData = await mailSenderStore.fetchMailSenders({ limit: 'all' })
|
||||||
if (mailSenderData.data) {
|
if (mailSenderData.data) {
|
||||||
mailSenders.value = mailSenderData.data.data
|
mailSenders.value = mailSenderData.data.data
|
||||||
let defaultMailSender = mailSenderData.data.data.find(
|
let defaultMailSender = mailSenderData.data.data.find(
|
||||||
|
|||||||
@ -76,7 +76,7 @@
|
|||||||
</BaseInputGrid>
|
</BaseInputGrid>
|
||||||
</div>
|
</div>
|
||||||
<!-- v-else -->
|
<!-- v-else -->
|
||||||
<div v-else>
|
<div v-else-if="!isMailSenderExist && !isFetchingInitialData">
|
||||||
<FeedbackAlert
|
<FeedbackAlert
|
||||||
:title="$t('settings.mail_sender.no_mail_sender_found')"
|
:title="$t('settings.mail_sender.no_mail_sender_found')"
|
||||||
:description="
|
:description="
|
||||||
@ -287,7 +287,7 @@ async function setInitialData() {
|
|||||||
invoiceMailForm.body = companyStore.selectedCompanySettings.invoice_mail_body
|
invoiceMailForm.body = companyStore.selectedCompanySettings.invoice_mail_body
|
||||||
|
|
||||||
isFetchingInitialData.value = true
|
isFetchingInitialData.value = true
|
||||||
let mailSenderData = await mailSenderStore.fetchMailSenderList()
|
let mailSenderData = await mailSenderStore.fetchMailSenders({ limit: 'all' })
|
||||||
if (mailSenderData.data) {
|
if (mailSenderData.data) {
|
||||||
mailSenders.value = mailSenderData.data.data
|
mailSenders.value = mailSenderData.data.data
|
||||||
let defaultMailSender = mailSenderData.data.data.find(
|
let defaultMailSender = mailSenderData.data.data.find(
|
||||||
|
|||||||
@ -76,7 +76,7 @@
|
|||||||
</BaseInputGrid>
|
</BaseInputGrid>
|
||||||
</div>
|
</div>
|
||||||
<!-- v-else -->
|
<!-- v-else -->
|
||||||
<div v-else>
|
<div v-else-if="!isMailSenderExist && !isFetchingInitialData">
|
||||||
<FeedbackAlert
|
<FeedbackAlert
|
||||||
:title="$t('settings.mail_sender.no_mail_sender_found')"
|
:title="$t('settings.mail_sender.no_mail_sender_found')"
|
||||||
:description="
|
:description="
|
||||||
@ -284,7 +284,7 @@ async function setInitialData() {
|
|||||||
paymentMailForm.body = companyStore.selectedCompanySettings.payment_mail_body
|
paymentMailForm.body = companyStore.selectedCompanySettings.payment_mail_body
|
||||||
|
|
||||||
isFetchingInitialData.value = true
|
isFetchingInitialData.value = true
|
||||||
let mailSenderData = await mailSenderStore.fetchMailSenderList()
|
let mailSenderData = await mailSenderStore.fetchMailSenders({ limit: 'all' })
|
||||||
if (mailSenderData.data) {
|
if (mailSenderData.data) {
|
||||||
mailSenders.value = mailSenderData.data.data
|
mailSenders.value = mailSenderData.data.data
|
||||||
let defaultMailSender = mailSenderData.data.data.find(
|
let defaultMailSender = mailSenderData.data.data.find(
|
||||||
|
|||||||
@ -20,6 +20,7 @@ export const useMailSenderStore = (useWindow = false) => {
|
|||||||
mailgunConfig: { ...mailSenderStub.mailgunConfig },
|
mailgunConfig: { ...mailSenderStub.mailgunConfig },
|
||||||
sesConfig: { ...mailSenderStub.sesConfig },
|
sesConfig: { ...mailSenderStub.sesConfig },
|
||||||
mail_encryptions: ['none', 'tls', 'ssl', 'starttls'],
|
mail_encryptions: ['none', 'tls', 'ssl', 'starttls'],
|
||||||
|
isDisable: false
|
||||||
}),
|
}),
|
||||||
|
|
||||||
getters: {
|
getters: {
|
||||||
@ -32,6 +33,7 @@ export const useMailSenderStore = (useWindow = false) => {
|
|||||||
this.smtpConfig = { ...mailSenderStub.smtpConfig }
|
this.smtpConfig = { ...mailSenderStub.smtpConfig }
|
||||||
this.mailgunConfig = { ...mailSenderStub.mailgunConfig }
|
this.mailgunConfig = { ...mailSenderStub.mailgunConfig }
|
||||||
this.sesConfig = { ...mailSenderStub.sesConfig }
|
this.sesConfig = { ...mailSenderStub.sesConfig }
|
||||||
|
this.isDisable = false
|
||||||
},
|
},
|
||||||
|
|
||||||
fetchMailDrivers() {
|
fetchMailDrivers() {
|
||||||
@ -51,19 +53,6 @@ export const useMailSenderStore = (useWindow = false) => {
|
|||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
fetchMailSenderList(params) {
|
|
||||||
return new Promise((resolve, reject) => {
|
|
||||||
axios
|
|
||||||
.get(`/api/v1/mail-senders`, { params })
|
|
||||||
.then((response) => {
|
|
||||||
resolve(response)
|
|
||||||
})
|
|
||||||
.catch((err) => {
|
|
||||||
handleError(err)
|
|
||||||
reject(err)
|
|
||||||
})
|
|
||||||
})
|
|
||||||
},
|
|
||||||
|
|
||||||
fetchMailSenders(params) {
|
fetchMailSenders(params) {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
@ -86,6 +75,7 @@ export const useMailSenderStore = (useWindow = false) => {
|
|||||||
.get(`/api/v1/mail-senders/${id}`)
|
.get(`/api/v1/mail-senders/${id}`)
|
||||||
.then((response) => {
|
.then((response) => {
|
||||||
this.currentMailSender = response.data.data
|
this.currentMailSender = response.data.data
|
||||||
|
this.isDisable = response.data.data.is_default
|
||||||
if (response.data.data.settings) {
|
if (response.data.data.settings) {
|
||||||
var settings = response.data.data.settings
|
var settings = response.data.data.settings
|
||||||
const encryptionNone = settings.encryption == '' || settings.encryption == undefined
|
const encryptionNone = settings.encryption == '' || settings.encryption == undefined
|
||||||
|
|||||||
@ -257,30 +257,6 @@
|
|||||||
></BaseInput>
|
></BaseInput>
|
||||||
</BaseInputGroup>
|
</BaseInputGroup>
|
||||||
<!-- && setPasswordMethod !== 'manual' -->
|
<!-- && setPasswordMethod !== 'manual' -->
|
||||||
<BaseInputGroup
|
|
||||||
v-show="customerStore.currentCustomer.enable_portal"
|
|
||||||
:label="$t('customers.select_sender')"
|
|
||||||
class="pt-5"
|
|
||||||
:error="
|
|
||||||
v$.currentCustomer.mail_sender_id.$error &&
|
|
||||||
v$.currentCustomer.mail_sender_id.$errors[0].$message
|
|
||||||
"
|
|
||||||
:content-loading="isFetchingInitialData"
|
|
||||||
required
|
|
||||||
>
|
|
||||||
<BaseMultiselect
|
|
||||||
v-model="customerStore.currentCustomer.mail_sender_id"
|
|
||||||
label="name"
|
|
||||||
value-prop="id"
|
|
||||||
:options="mailSenderStore.mailSenders"
|
|
||||||
:can-deselect="false"
|
|
||||||
:can-clear="false"
|
|
||||||
searchable
|
|
||||||
track-by="name"
|
|
||||||
:invalid="v$.currentCustomer.mail_sender_id.$error"
|
|
||||||
@input="v$.currentCustomer.mail_sender_id.$touch()"
|
|
||||||
/>
|
|
||||||
</BaseInputGroup>
|
|
||||||
</BaseInputGrid>
|
</BaseInputGrid>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -626,13 +602,11 @@ import CustomerCustomFields from '@/scripts/admin/components/custom-fields/Creat
|
|||||||
import { useGlobalStore } from '@/scripts/admin/stores/global'
|
import { useGlobalStore } from '@/scripts/admin/stores/global'
|
||||||
import CopyInputField from '@/scripts/admin/components/CopyInputField.vue'
|
import CopyInputField from '@/scripts/admin/components/CopyInputField.vue'
|
||||||
import { useCompanyStore } from '@/scripts/admin/stores/company'
|
import { useCompanyStore } from '@/scripts/admin/stores/company'
|
||||||
import { useMailSenderStore } from '@/scripts/admin/stores/mail-sender'
|
|
||||||
|
|
||||||
const customerStore = useCustomerStore()
|
const customerStore = useCustomerStore()
|
||||||
const customFieldStore = useCustomFieldStore()
|
const customFieldStore = useCustomFieldStore()
|
||||||
const globalStore = useGlobalStore()
|
const globalStore = useGlobalStore()
|
||||||
const companyStore = useCompanyStore()
|
const companyStore = useCompanyStore()
|
||||||
const mailSenderStore = useMailSenderStore()
|
|
||||||
|
|
||||||
const customFieldValidationScope = 'customFields'
|
const customFieldValidationScope = 'customFields'
|
||||||
|
|
||||||
@ -644,7 +618,6 @@ const route = useRoute()
|
|||||||
let isFetchingInitialData = ref(false)
|
let isFetchingInitialData = ref(false)
|
||||||
let isShowPassword = ref(false)
|
let isShowPassword = ref(false)
|
||||||
let isShowConfirmPassword = ref(false)
|
let isShowConfirmPassword = ref(false)
|
||||||
const mailSenders = ref(null)
|
|
||||||
|
|
||||||
let active = ref(false)
|
let active = ref(false)
|
||||||
const isSaving = ref(false)
|
const isSaving = ref(false)
|
||||||
@ -678,10 +651,7 @@ const rules = computed(() => {
|
|||||||
},
|
},
|
||||||
|
|
||||||
email: {
|
email: {
|
||||||
required: helpers.withMessage(
|
required: helpers.withMessage(t('validation.required'), required),
|
||||||
t('validation.required'),
|
|
||||||
requiredIf(customerStore.currentCustomer.enable_portal == true)
|
|
||||||
),
|
|
||||||
email: helpers.withMessage(t('validation.email_incorrect'), email),
|
email: helpers.withMessage(t('validation.email_incorrect'), email),
|
||||||
},
|
},
|
||||||
password: {
|
password: {
|
||||||
@ -707,12 +677,6 @@ const rules = computed(() => {
|
|||||||
website: {
|
website: {
|
||||||
url: helpers.withMessage(t('validation.invalid_url'), url),
|
url: helpers.withMessage(t('validation.invalid_url'), url),
|
||||||
},
|
},
|
||||||
mail_sender_id: {
|
|
||||||
required: helpers.withMessage(
|
|
||||||
t('validation.required'),
|
|
||||||
requiredIf(customerStore.currentCustomer.enable_portal == true)
|
|
||||||
),
|
|
||||||
},
|
|
||||||
billing: {
|
billing: {
|
||||||
address_street_1: {
|
address_street_1: {
|
||||||
maxLength: helpers.withMessage(
|
maxLength: helpers.withMessage(
|
||||||
@ -756,20 +720,6 @@ const v$ = useVuelidate(rules, customerStore, {
|
|||||||
$scope: customFieldValidationScope,
|
$scope: customFieldValidationScope,
|
||||||
})
|
})
|
||||||
|
|
||||||
onMounted(async () => {
|
|
||||||
await mailSenderStore.fetchMailSenders()
|
|
||||||
let mailSenderData = await mailSenderStore.fetchMailSenderList()
|
|
||||||
if (mailSenderData.data) {
|
|
||||||
mailSenders.value = mailSenderData.data.data
|
|
||||||
let defaultMailSender = mailSenderData.data.data.find(
|
|
||||||
(mailSender) => mailSender.is_default == true
|
|
||||||
)
|
|
||||||
customerStore.currentCustomer.mail_sender_id = defaultMailSender
|
|
||||||
? defaultMailSender.id
|
|
||||||
: null
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
customerStore.resetCurrentCustomer()
|
customerStore.resetCurrentCustomer()
|
||||||
|
|
||||||
customerStore.fetchCustomerInitialSettings(isEdit.value)
|
customerStore.fetchCustomerInitialSettings(isEdit.value)
|
||||||
|
|||||||
@ -98,13 +98,6 @@
|
|||||||
:mail-sender-store="mailSenderStore"
|
:mail-sender-store="mailSenderStore"
|
||||||
/>
|
/>
|
||||||
</BaseInputGrid>
|
</BaseInputGrid>
|
||||||
|
|
||||||
<!-- Is Default? -->
|
|
||||||
<BaseSwitchSection
|
|
||||||
v-model="mailSenderStore.currentMailSender.is_default"
|
|
||||||
:title="$t(`${pre_t}.is_default`)"
|
|
||||||
:description="$t(`${pre_t}.is_default_description`)"
|
|
||||||
/>
|
|
||||||
<BaseDivider class="my-4" />
|
<BaseDivider class="my-4" />
|
||||||
|
|
||||||
<BaseButton
|
<BaseButton
|
||||||
@ -227,26 +220,12 @@ async function submitMailSenderData() {
|
|||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
const action = mailSenderStore.isEdit
|
let data = {
|
||||||
? mailSenderStore.updateMailSender
|
...mailSenderStore.currentMailSender,
|
||||||
: mailSenderStore.addMailSender
|
is_default: true,
|
||||||
isSaving.value = true
|
|
||||||
|
|
||||||
var mailDriverConfig = null
|
|
||||||
switch (mailSenderStore.currentMailSender.driver) {
|
|
||||||
case 'smtp':
|
|
||||||
mailDriverConfig = mailSenderStore.smtpConfig
|
|
||||||
break
|
|
||||||
case 'mailgun':
|
|
||||||
mailDriverConfig = mailSenderStore.mailgunConfig
|
|
||||||
break
|
|
||||||
case 'ses':
|
|
||||||
mailDriverConfig = mailSenderStore.sesConfig
|
|
||||||
break
|
|
||||||
}
|
}
|
||||||
mailSenderStore.currentMailSender.settings = mailDriverConfig
|
await mailSenderStore.addMailSender(data)
|
||||||
|
isSaving.value = true
|
||||||
let res = await action(mailSenderStore.currentMailSender)
|
|
||||||
emit('next')
|
emit('next')
|
||||||
isSaving.value = false
|
isSaving.value = false
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
|
|||||||
@ -128,29 +128,6 @@
|
|||||||
</BaseInput>
|
</BaseInput>
|
||||||
</BaseInputGroup>
|
</BaseInputGroup>
|
||||||
|
|
||||||
<BaseInputGroup
|
|
||||||
:label="$t('users.select_sender')"
|
|
||||||
:error="
|
|
||||||
v$.userData.mail_sender_id.$error &&
|
|
||||||
v$.userData.mail_sender_id.$errors[0].$message
|
|
||||||
"
|
|
||||||
:content-loading="isFetchingInitialData"
|
|
||||||
required
|
|
||||||
>
|
|
||||||
<BaseMultiselect
|
|
||||||
v-model="userStore.userData.mail_sender_id"
|
|
||||||
label="name"
|
|
||||||
value-prop="id"
|
|
||||||
:options="mailSenderStore.mailSenders"
|
|
||||||
:can-deselect="false"
|
|
||||||
:can-clear="false"
|
|
||||||
searchable
|
|
||||||
track-by="name"
|
|
||||||
:invalid="v$.userData.mail_sender_id.$error"
|
|
||||||
@input="v$.userData.mail_sender_id.$touch()"
|
|
||||||
/>
|
|
||||||
</BaseInputGroup>
|
|
||||||
|
|
||||||
<BaseInputGroup
|
<BaseInputGroup
|
||||||
:content-loading="isFetchingInitialData"
|
:content-loading="isFetchingInitialData"
|
||||||
:label="$t('users.phone')"
|
:label="$t('users.phone')"
|
||||||
@ -199,7 +176,6 @@ import useVuelidate from '@vuelidate/core'
|
|||||||
import { ValidateEach } from '@vuelidate/components'
|
import { ValidateEach } from '@vuelidate/components'
|
||||||
import { useI18n } from 'vue-i18n'
|
import { useI18n } from 'vue-i18n'
|
||||||
import { useUsersStore } from '@/scripts/admin/stores/users'
|
import { useUsersStore } from '@/scripts/admin/stores/users'
|
||||||
import { useMailSenderStore } from '@/scripts/admin/stores/mail-sender'
|
|
||||||
|
|
||||||
const userStore = useUsersStore()
|
const userStore = useUsersStore()
|
||||||
|
|
||||||
@ -207,13 +183,11 @@ const { t } = useI18n()
|
|||||||
const route = useRoute()
|
const route = useRoute()
|
||||||
const router = useRouter()
|
const router = useRouter()
|
||||||
const companyStore = useCompanyStore()
|
const companyStore = useCompanyStore()
|
||||||
const mailSenderStore = useMailSenderStore()
|
|
||||||
|
|
||||||
let isSaving = ref(false)
|
let isSaving = ref(false)
|
||||||
let isFetchingInitialData = ref(false)
|
let isFetchingInitialData = ref(false)
|
||||||
let selectedCompanies = ref([])
|
let selectedCompanies = ref([])
|
||||||
let companies = ref([])
|
let companies = ref([])
|
||||||
const mailSenders = ref(null)
|
|
||||||
|
|
||||||
const isEdit = computed(() => route.name === 'users.edit')
|
const isEdit = computed(() => route.name === 'users.edit')
|
||||||
|
|
||||||
@ -248,9 +222,6 @@ const rules = computed(() => {
|
|||||||
companies: {
|
companies: {
|
||||||
required: helpers.withMessage(t('validation.required'), required),
|
required: helpers.withMessage(t('validation.required'), required),
|
||||||
},
|
},
|
||||||
mail_sender_id: {
|
|
||||||
required: helpers.withMessage(t('validation.required'), required),
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@ -265,20 +236,6 @@ const v$ = useVuelidate(rules, userStore, {
|
|||||||
$scope: true,
|
$scope: true,
|
||||||
})
|
})
|
||||||
|
|
||||||
onMounted(async () => {
|
|
||||||
await mailSenderStore.fetchMailSenders()
|
|
||||||
let mailSenderData = await mailSenderStore.fetchMailSenderList()
|
|
||||||
if (mailSenderData.data) {
|
|
||||||
mailSenders.value = mailSenderData.data.data
|
|
||||||
let defaultMailSender = mailSenderData.data.data.find(
|
|
||||||
(mailSender) => mailSender.is_default == true
|
|
||||||
)
|
|
||||||
userStore.userData.mail_sender_id = defaultMailSender
|
|
||||||
? defaultMailSender.id
|
|
||||||
: null
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
loadInitialData()
|
loadInitialData()
|
||||||
|
|
||||||
userStore.resetUserData()
|
userStore.resetUserData()
|
||||||
|
|||||||
@ -54,7 +54,6 @@
|
|||||||
bg-white
|
bg-white
|
||||||
rounded-lg
|
rounded-lg
|
||||||
text-left
|
text-left
|
||||||
overflow-hidden
|
|
||||||
relative
|
relative
|
||||||
shadow-xl
|
shadow-xl
|
||||||
transition-all
|
transition-all
|
||||||
|
|||||||
Reference in New Issue
Block a user