Form submission caching & url pre-fill confusion (#37)
* Form submission caching & url pre-fill confusion * formPendingSubmissionKey as common mixins * Rename mixin formPendingSubmissionKey Co-authored-by: Julien Nahum <jhumanj@MacBook-Pro-de-Julien.local>
This commit is contained in:
parent
48af78e94c
commit
741390ebbf
|
@ -124,6 +124,7 @@ import OpenFormButton from './OpenFormButton'
|
||||||
import { themes } from '~/config/form-themes'
|
import { themes } from '~/config/form-themes'
|
||||||
import VButton from '../../common/Button'
|
import VButton from '../../common/Button'
|
||||||
import VTransition from '../../common/transitions/VTransition'
|
import VTransition from '../../common/transitions/VTransition'
|
||||||
|
import FormPendingSubmissionKey from '../../../mixins/forms/form-pending-submission-key'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
components: { VTransition, VButton, OpenFormButton, OpenForm },
|
components: { VTransition, VButton, OpenFormButton, OpenForm },
|
||||||
|
@ -133,6 +134,8 @@ export default {
|
||||||
creating: { type: Boolean, default: false } // If true, fake form submit
|
creating: { type: Boolean, default: false } // If true, fake form submit
|
||||||
},
|
},
|
||||||
|
|
||||||
|
mixins: [FormPendingSubmissionKey],
|
||||||
|
|
||||||
data () {
|
data () {
|
||||||
return {
|
return {
|
||||||
loading: false,
|
loading: false,
|
||||||
|
@ -193,7 +196,7 @@ export default {
|
||||||
})
|
})
|
||||||
|
|
||||||
try {
|
try {
|
||||||
window.localStorage.removeItem(this.form.form_pending_submission_key)
|
window.localStorage.removeItem(this.formPendingSubmissionKey)
|
||||||
} catch (e) {}
|
} catch (e) {}
|
||||||
|
|
||||||
if (response.data.redirect && response.data.redirect_url) {
|
if (response.data.redirect && response.data.redirect_url) {
|
||||||
|
|
|
@ -63,10 +63,12 @@ import OpenFormButton from './OpenFormButton'
|
||||||
import clonedeep from 'clone-deep'
|
import clonedeep from 'clone-deep'
|
||||||
import FormLogicPropertyResolver from '../../../forms/FormLogicPropertyResolver'
|
import FormLogicPropertyResolver from '../../../forms/FormLogicPropertyResolver'
|
||||||
const VueHcaptcha = () => import('@hcaptcha/vue-hcaptcha')
|
const VueHcaptcha = () => import('@hcaptcha/vue-hcaptcha')
|
||||||
|
import FormPendingSubmissionKey from '../../../mixins/forms/form-pending-submission-key'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'OpenForm',
|
name: 'OpenForm',
|
||||||
components: { OpenFormButton, VueHcaptcha },
|
components: { OpenFormButton, VueHcaptcha },
|
||||||
|
mixins: [FormPendingSubmissionKey],
|
||||||
props: {
|
props: {
|
||||||
form: {
|
form: {
|
||||||
type: Object,
|
type: Object,
|
||||||
|
@ -223,7 +225,7 @@ export default {
|
||||||
handler () {
|
handler () {
|
||||||
if(this.isPublicFormPage && this.form && this.dataFormValue){
|
if(this.isPublicFormPage && this.form && this.dataFormValue){
|
||||||
try {
|
try {
|
||||||
window.localStorage.setItem(this.form.form_pending_submission_key, JSON.stringify(this.dataFormValue))
|
window.localStorage.setItem(this.formPendingSubmissionKey, JSON.stringify(this.dataFormValue))
|
||||||
} catch (e) {}
|
} catch (e) {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -279,7 +281,7 @@ export default {
|
||||||
if (this.isPublicFormPage) {
|
if (this.isPublicFormPage) {
|
||||||
let pendingData
|
let pendingData
|
||||||
try {
|
try {
|
||||||
pendingData = window.localStorage.getItem(this.form.form_pending_submission_key)
|
pendingData = window.localStorage.getItem(this.formPendingSubmissionKey)
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
pendingData = null
|
pendingData = null
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,22 @@
|
||||||
|
const cyrb53 = (str, seed = 0) => {
|
||||||
|
let h1 = 0xdeadbeef ^ seed,
|
||||||
|
h2 = 0x41c6ce57 ^ seed;
|
||||||
|
for (let i = 0, ch; i < str.length; i++) {
|
||||||
|
ch = str.charCodeAt(i);
|
||||||
|
h1 = Math.imul(h1 ^ ch, 2654435761);
|
||||||
|
h2 = Math.imul(h2 ^ ch, 1597334677);
|
||||||
|
}
|
||||||
|
|
||||||
|
h1 = Math.imul(h1 ^ (h1 >>> 16), 2246822507) ^ Math.imul(h2 ^ (h2 >>> 13), 3266489909);
|
||||||
|
h2 = Math.imul(h2 ^ (h2 >>> 16), 2246822507) ^ Math.imul(h1 ^ (h1 >>> 13), 3266489909);
|
||||||
|
|
||||||
|
return 4294967296 * (2097151 & h2) + (h1 >>> 0);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default {
|
||||||
|
computed: {
|
||||||
|
formPendingSubmissionKey() {
|
||||||
|
return (this.form) ? this.form.form_pending_submission_key + '-' + cyrb53(window.location.href) : ''
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue