+
@@ -330,7 +333,12 @@ import { useRouter } from 'vue-router'
import { capture, startRecording, stopRecording } from '@/telemetry'
import { useOnboarding } from 'frappe-ui/frappe'
import { sessionStore } from '../stores/session'
-import { openSettings, getMetaInfo, updateMetaInfo } from '@/utils'
+import {
+ openSettings,
+ getMetaInfo,
+ updateMetaInfo,
+ validateFile,
+} from '@/utils'
import Link from '@/components/Controls/Link.vue'
import CourseOutline from '@/components/CourseOutline.vue'
import MultiSelect from '@/components/Controls/MultiSelect.vue'
@@ -597,13 +605,6 @@ watch(
}
)
-const validateFile = (file) => {
- let extension = file.name.split('.').pop().toLowerCase()
- if (!['jpg', 'jpeg', 'png', 'webp'].includes(extension)) {
- return __('Only image file is allowed.')
- }
-}
-
const updateTags = () => {
if (newTag.value) {
course.tags = course.tags ? `${course.tags}, ${newTag.value}` : newTag.value
diff --git a/frontend/src/pages/JobForm.vue b/frontend/src/pages/JobForm.vue
index 80d87178..6bd59e33 100644
--- a/frontend/src/pages/JobForm.vue
+++ b/frontend/src/pages/JobForm.vue
@@ -151,7 +151,7 @@ import { computed, onMounted, reactive, inject } from 'vue'
import { FileText, X } from 'lucide-vue-next'
import { sessionStore } from '@/stores/session'
import { useRouter } from 'vue-router'
-import { getFileSize } from '@/utils'
+import { getFileSize, validateFile } from '@/utils'
const user = inject('$user')
const router = useRouter()
@@ -293,13 +293,6 @@ const removeImage = () => {
job.image = null
}
-const validateFile = (file) => {
- let extension = file.name.split('.').pop().toLowerCase()
- if (!['jpg', 'jpeg', 'png'].includes(extension)) {
- return 'Only image file is allowed.'
- }
-}
-
const jobTypes = computed(() => {
return [
{ label: 'Full Time', value: 'Full Time' },
diff --git a/frontend/src/utils/index.js b/frontend/src/utils/index.js
index 836912b9..08fcdb9a 100644
--- a/frontend/src/utils/index.js
+++ b/frontend/src/utils/index.js
@@ -497,10 +497,13 @@ export function singularize(word) {
)
}
-export const validateFile = (file) => {
- let extension = file.name.split('.').pop().toLowerCase()
- if (!['jpg', 'jpeg', 'png', 'webp'].includes(extension)) {
- return __('Only image file is allowed.')
+export const validateFile = (file, showToast = true) => {
+ if (!file.type.startsWith('image/')) {
+ const errorMessage = __('Only image file is allowed.')
+ if (showToast) {
+ toast.error(errorMessage)
+ }
+ return errorMessage
}
}