fix missing encode / decode for form fields within submissions
This commit is contained in:
parent
6d85dc660a
commit
b3cacb8481
@ -26,6 +26,8 @@ Template for next version
|
|||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|
||||||
|
- missing encode / decode for form fields within submissions (https://github.com/ohmyform/ui/commit/30ff2c96bca20c1641d9cbb96c34cce934e1afea#r68602651)
|
||||||
|
|
||||||
### Security
|
### Security
|
||||||
|
|
||||||
## [1.0.2] - 2022-03-13
|
## [1.0.2] - 2022-03-13
|
||||||
|
|||||||
@ -6,6 +6,8 @@ import { FormFieldRatingModel } from './form.field.rating.model'
|
|||||||
|
|
||||||
@ObjectType('FormField')
|
@ObjectType('FormField')
|
||||||
export class FormFieldModel {
|
export class FormFieldModel {
|
||||||
|
readonly _id: number
|
||||||
|
|
||||||
@Field(() => ID)
|
@Field(() => ID)
|
||||||
readonly id: string
|
readonly id: string
|
||||||
|
|
||||||
@ -39,8 +41,9 @@ export class FormFieldModel {
|
|||||||
@Field(() => FormFieldRatingModel, { nullable: true })
|
@Field(() => FormFieldRatingModel, { nullable: true })
|
||||||
readonly rating: FormFieldRatingModel
|
readonly rating: FormFieldRatingModel
|
||||||
|
|
||||||
constructor(document: FormFieldEntity) {
|
constructor(id: string, document: FormFieldEntity) {
|
||||||
this.id = document.id.toString()
|
this._id = document.id
|
||||||
|
this.id = id
|
||||||
this.idx = document.idx
|
this.idx = document.idx
|
||||||
this.title = document.title
|
this.title = document.title
|
||||||
this.slug = document.slug
|
this.slug = document.slug
|
||||||
|
|||||||
@ -30,7 +30,16 @@ export class FormResolver {
|
|||||||
): Promise<FormFieldModel[]> {
|
): Promise<FormFieldModel[]> {
|
||||||
const form = await cache.get<FormEntity>(cache.getCacheKey(FormEntity.name, parent._id))
|
const form = await cache.get<FormEntity>(cache.getCacheKey(FormEntity.name, parent._id))
|
||||||
|
|
||||||
return form.fields?.map(field => new FormFieldModel(field)).sort((a,b) => a.idx - b.idx) || []
|
if (!form.fields) {
|
||||||
|
return []
|
||||||
|
}
|
||||||
|
|
||||||
|
return form.fields
|
||||||
|
.sort((a,b) => a.idx - b.idx)
|
||||||
|
.map(field => new FormFieldModel(
|
||||||
|
this.idService.encode(field.id),
|
||||||
|
field,
|
||||||
|
))
|
||||||
}
|
}
|
||||||
|
|
||||||
@ResolveField(() => [FormHookModel])
|
@ResolveField(() => [FormHookModel])
|
||||||
|
|||||||
@ -4,12 +4,14 @@ import { SubmissionFieldModel } from '../../dto/submission/submission.field.mode
|
|||||||
import { FormFieldEntity } from '../../entity/form.field.entity'
|
import { FormFieldEntity } from '../../entity/form.field.entity'
|
||||||
import { SubmissionFieldEntity } from '../../entity/submission.field.entity'
|
import { SubmissionFieldEntity } from '../../entity/submission.field.entity'
|
||||||
import { FormFieldService } from '../../service/form/form.field.service'
|
import { FormFieldService } from '../../service/form/form.field.service'
|
||||||
|
import { IdService } from '../../service/id.service'
|
||||||
import { ContextCache } from '../context.cache'
|
import { ContextCache } from '../context.cache'
|
||||||
|
|
||||||
@Resolver(() => SubmissionFieldModel)
|
@Resolver(() => SubmissionFieldModel)
|
||||||
export class SubmissionFieldResolver {
|
export class SubmissionFieldResolver {
|
||||||
constructor(
|
constructor(
|
||||||
private readonly formFieldService: FormFieldService,
|
private readonly formFieldService: FormFieldService,
|
||||||
|
private readonly idService: IdService,
|
||||||
) {
|
) {
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -33,6 +35,9 @@ export class SubmissionFieldResolver {
|
|||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
|
|
||||||
return new FormFieldModel(field)
|
return new FormFieldModel(
|
||||||
|
this.idService.encode(field.id),
|
||||||
|
field,
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -7,6 +7,7 @@ import { Repository } from 'typeorm'
|
|||||||
import { SubmissionSetFieldInput } from '../../dto/submission/submission.set.field.input'
|
import { SubmissionSetFieldInput } from '../../dto/submission/submission.set.field.input'
|
||||||
import { SubmissionEntity } from '../../entity/submission.entity'
|
import { SubmissionEntity } from '../../entity/submission.entity'
|
||||||
import { SubmissionFieldContent, SubmissionFieldEntity } from '../../entity/submission.field.entity'
|
import { SubmissionFieldContent, SubmissionFieldEntity } from '../../entity/submission.field.entity'
|
||||||
|
import { IdService } from '../id.service'
|
||||||
import { SubmissionHookService } from './submission.hook.service'
|
import { SubmissionHookService } from './submission.hook.service'
|
||||||
import { SubmissionNotificationService } from './submission.notification.service'
|
import { SubmissionNotificationService } from './submission.notification.service'
|
||||||
|
|
||||||
@ -19,13 +20,16 @@ export class SubmissionSetFieldService {
|
|||||||
private readonly submissionFieldRepository: Repository<SubmissionFieldEntity>,
|
private readonly submissionFieldRepository: Repository<SubmissionFieldEntity>,
|
||||||
private readonly webHook: SubmissionHookService,
|
private readonly webHook: SubmissionHookService,
|
||||||
private readonly notifications: SubmissionNotificationService,
|
private readonly notifications: SubmissionNotificationService,
|
||||||
|
private readonly idService: IdService,
|
||||||
private readonly logger: PinoLogger,
|
private readonly logger: PinoLogger,
|
||||||
) {
|
) {
|
||||||
logger.setContext(this.constructor.name)
|
logger.setContext(this.constructor.name)
|
||||||
}
|
}
|
||||||
|
|
||||||
async saveField(submission: SubmissionEntity, input: SubmissionSetFieldInput): Promise<void> {
|
async saveField(submission: SubmissionEntity, input: SubmissionSetFieldInput): Promise<void> {
|
||||||
let field = submission.fields.find(field => field.field.id.toString() === input.field)
|
const formFieldId = this.idService.decode(input.field)
|
||||||
|
|
||||||
|
let field = submission.fields.find(field => field.field.id === formFieldId)
|
||||||
|
|
||||||
submission.timeElapsed = dayjs().diff(dayjs(submission.created), 'second')
|
submission.timeElapsed = dayjs().diff(dayjs(submission.created), 'second')
|
||||||
|
|
||||||
@ -38,7 +42,7 @@ export class SubmissionSetFieldService {
|
|||||||
field = new SubmissionFieldEntity()
|
field = new SubmissionFieldEntity()
|
||||||
|
|
||||||
field.submission = submission
|
field.submission = submission
|
||||||
field.field = submission.form.fields.find(field => field.id.toString() === input.field)
|
field.field = submission.form.fields.find(field => field.id === formFieldId)
|
||||||
field.type = field.field.type
|
field.type = field.field.type
|
||||||
field.content = this.parseData(field, input.data)
|
field.content = this.parseData(field, input.data)
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user